仿真测试:呼吸灯PWM

电子说

1.2w人已加入

描述

呼吸灯的效果是灯逐渐由暗变亮再逐渐由亮变暗,FPGA的引脚电压只有“0”和“1”两个等级。

因此通过改变引脚单位时间内高电平的输出时间来实现呼吸灯,也就是让FPGA引脚输出一系列PWM波信号并不断改变PWM波的占空比。

PWM(Pluse Width Modulation)脉冲宽度调制,是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。

占空比(Duty Cycle or Duty Ratio),可以解释为,在一脉冲序列中(方波),正脉冲序列的持续时间与脉冲总周期的比值。也可理解为,电路释放能量的有效时间与总释放时间的比值。

我们将led从亮到灭(从灭到亮)的过程设为1S.将周期设为1MS.就是有1000个周期,然后每相邻两个周期改变的差值为1us;如下图所示

FPGA

波形图绘制如下:

FPGA

按照这个撰写代码,因为50M时钟,一个周期是20ns,故50个单位为1us.

在框1中为1us模块;

在框2中为1ms模块,这里有个细节需要注意一下,第24行只有微妙的计数完成同时ms到达溢出值时,才进行置零。若当前ms为999,但us处于计数0-48时,ms仍不改变。

在框3中为1s模块,与框2同理;

在框4中为控制从亮到灭,从灭到亮的一个标志信号;

在框5中,当en为0,且当前ms小于S对应的时间段就是低电平时刻;同理当en为1,且当前ms大于S对应的时间段就是低电平时刻.

FPGA

测试代码编写如下:

FPGA

测试图如下:

FPGA

FPGA

FPGA

注这里为消除前缀。CRTL+G为分组。CRTL+w为添加信号。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分