中易网

一个关于fpga输出pwm的问题

答案:2  悬赏:0  
解决时间 2021-04-08 00:13
本人刚开始学fpga,看到这个输出pwm的程序。但是有些地方有些不太理解 望高手帮忙
module pwm(clk,key,led);
input clk;
input [1:0]key;
output led;
reg [32:0] count;
reg [9:0] pwm_count;
reg flag;
reg pwm_flag;
always @(posedge clk)
begin
count=count+1'b1;
if (count[13:4] < pwm_count)
pwm_flag=1;
else
pwm_flag=0;
if (count[15] == 1'b1)
begin
if (flag == 1'b1)
begin
flag= 1'b0;
if (key[0] == 1'b0)
pwm_count=(pwm_count+10'b0000000001);
else if (key[1] == 1'b0)
pwm_count=(pwm_count-10'b0000000001);
else pwm_count=pwm_count;
end
end
else
flag= 1'b1;
end
assign led=pwm_flag;
endmodule

这句话
if (count[13:4] < pwm_count) //就是这里不太明白 是用pwm_count 和count[13:4]进行比较,但count是一个一直变化的数 对吗?为什么要和一个变化的数字比较呢?另外pwm_count没赋初值,那它初始是一个什么状态呢???问得比较凌乱
最佳答案
用pwm_count 和count[13:4]进行比较;就是要count变呀,不然你的PWM怎么输出呢;因为count在变所以才会出现周期性的大于pwm_count然后小于pwm_count,这样PWM不就出来了了么,PWM的周期就是count[13:0];和count[13:4]比较,省去了低第四位,是怕脉冲为零或者是脉冲过窄,这样IO根本输不出来信号;没有赋初值的很有可能出问题,但基本上都是0;你要加入一个复位信号来初始化那些寄存器,这样做更规范些;以后写程序必须加复位信号;现在你就知道为什么单片机要复位了吧,就是怕里面的寄存器和变量不听话,复位的时候全部从新赋值;单片机说白了就是一个专用IC,FPGA它也可以变成专用IC,所以在FPGA的场合升级很方便,不用把芯片换了,直接升级固件,它就有了新的功能,这一点比专用IC灵活。希望能帮到你。
全部回答
tast ffn(fout,n,clk); output fout; input n; input clk; reg [29:0] j; always @(posedge clk) begin if (j==n) j<=0; else j<=j+1; if(j>=0) fout<=0; else fout<=1; end endtask 这是一个占空比为n/n+1的任务,你可以根据实际情况来定义n的数值,然后根据楼上兄弟的思想,利用一个多路选择器,
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我家电脑没有word文档 右键点新建也没有 只有
谷歌日语输入法安装不上怎么办
已知一个等腰梯形,但在不知道角度的情况下,
李帅的个性签名怎么写呀,任务呀,帮忙给设计
在(ax+3y)(x-y)的积中,不含xy项,则a的
农村信用社佛楼分社怎么去啊,有知道地址的么
ps图怎么弄的啊,谢谢
我想考湘潭大学新闻传播学?这个专业怎么样
卡西欧5800计算器的Norm和Fix怎么输入啊?
为什么两个人在一起,不可以做交心的情侣?
家人之间使你感动的事或人(两件事)200
好多人说沙湖大鱼头好吃,但价格很吓人,有吃
魅族手机为什么老闪退
上海 6136数控车床 什么价格 广数980 系统
宏伟鞋店地址有知道的么?有点事想过去
推荐资讯
达州到宜宾怎么坐车?
我有个同学初中在读托福预科,有没有可能是想
86×208+92简便
竹荪鹅生态养生汤锅火锅地址在什么地方,想过
地下城与勇士怎么普通攻击按那个键?
蟑螂被踩了没死跑了后会怎样
仙剑奇侠传1里面,赵灵儿死的时候放的是什么
可逆实矩阵和其转置乘积为什么就是正定的
上海徐汇对口建襄小学的居委有哪些
参赛座右铭是什么意思
有大神知道这是什么虫子吗?最近在厨房和卧室
韩国进口海运到中国要多久
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?