基于FPGA的PWM控制占空比

基于FPGA的PWM控制占空比,第1张

设计思路:

分别描述占空比为40%、50%、60%、70%和80%的电路模块,然后将5路输出送至一个8选1多路选择器的其中5个输入雹核端(例如3位选李猜择控制信号为000~101选中的那5路输入)。

再设计一个编源扰掘码器,将5个按键编码成为000~101后送至8选1多路选择器的3位选择控制端就行了。

建议你先将BZQ,TSQ设成常数,再试试。

看了你的代码,觉得除了设计之外,有几个问题

1.verilog不是C语言。实现乘除法时,直接写运算符虽然可以综合,但逻辑很深,时序会很差。例如:if(cnt<(BZQ/TSQ)&&cnt>=(BZQ/TSQ)*duty/100),这样的逻辑深度是可怕的,估计只能跑到几MHz。你所遇到的问题不排除是时如顷派序问题(timing issue)。

2.第一个always块很不规范,而且不是同步电路。更好的实现方法是:

always @(posedge BCLK)

begin

if(~START)

begin

start<=1

end

end

3.系统没有复位信号。所有的数字系统应当有系统复位。always块应当用这渣贺样的模板:

always @(posedge mclk or posedge mrst)

begin

if(mrst)

begin

reg1 <= 0

end

else

begin

if (...)

begin

reg1<=input1

end

else

begin

reg1 <= input2

end

end

end

4.信号或寄存器名称不能靠大小写区分。虽然verilog大小写是敏感的,但没有公司会允许大小写混用,一般都规定统一大写或小写,更何况是一样的名称,仅靠大小写乎枣区分。如START,可以改成,start_in。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12400101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存