完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` 本帖最后由 西疆木 于 2016-8-29 10:37 编辑 基于FPGA的呼吸灯简单实验程序(Verilog) 雾盈 2016-7-26 1.呼吸灯 呼吸灯其实是微电脑控制下,由暗渐亮,然后再由亮渐暗,模仿人呼吸方式的LED灯 LED的亮度与流过的电流成正比。在一定的频率之下,如果占空比是0,则LED不亮;如果占空比是100%,则LED最亮;如果占空比刚好是50%,则LED亮度适中。如果我们让占空比从0~100%变化,再从100%~0不断变化,就可以实现LED一呼一吸的效果。 其波形占空比示意图如下所示: ![]() 呼吸灯占空比示意图 (1)首先确定PWM的频率为1Khz (2)由频率算出周期 T = 1/f = 1ms (3)根据每次呼1s,吸1s,算出计数值1s/1ms=1000 (4)然后将1ms分成1000份,每一份是1us (5)写三个 1us、1ms、1s的3个计数器count1、 count2、 Count3,最后count2和count3进行比较 4.程序框图 ![]() 5.状态机设计 可以将呼吸灯运行过程归为两个状态:S0:由灭渐亮;S1:由亮渐灭。 这里就会有两个问题需要我们解决, 1、状态的翻转 2、在一个状态里如何使pwm波的占空比实现逐增或逐减。 先说第一个问题,两个状态的翻转 由下面的时序图可以看出来,两个状态的翻转只是由时间决定的,S0状态和S1状态分别持续1s, 可以将它看成周期为2s的时钟信号,每当flag_1s信号到来一次,状态就翻转一次。 ![]() ![]() 然后再来说第二个问题, 在一个状态下如何实现PWM波占空比逐增逐减的过程。 以S0状态下,LED由灭渐亮,PWM波占空比由百分之百逐渐减小至零为例: 我们发现让count2与count3比较,其结果clk_out会出现这种占空比逐渐减小的结果。 此段代码如下:
当count1 计数10拍后,count2 波形从9 跳为0 ,但是仔细一看就会发现,count2波形的9 跳为 0 时,count1 只计数了一拍,中间少了9拍。 |
||
相关推荐
|
||
762 浏览 0 评论
422 浏览 0 评论
求FPGA 驱动控制ltc2271 或者 ltc2180 或者 ltc2190或者 ltc2202 的代码
1805 浏览 0 评论
489 浏览 0 评论
求助:遇见诡异问题,FPGA模块A输出端口连接模块B输入后,模块A不能正常工作的
1923 浏览 1 评论
4655 浏览 104 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-31 23:10 , Processed in 0.630114 second(s), Total 51, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191