本文转载自:FPGA技术实战
引言:呼吸灯在日常生活中经常见到,如电子时钟,小夜灯等等,本文我们介绍下通过PWM波来控制LED灯,实现呼吸灯功能。
呼吸灯其实是在处理器的控制下,由暗渐亮、然后再由亮渐暗,其实现效果类似人的呼吸方式的LED灯。其要实现呼吸周期重复,明暗渐变功能。
由于FPGA管脚输出逻辑电平只有“0”和“1”,因此并不能通过FPGA来改变LED两侧电压差来实现呼吸灯。但是,我们可以通过改变单位时间内亮灯时间的占空比来实现呼吸效果,即在固定频率下,通过调整占空比来控制LED的亮灭,又称作PWM(Pulse Width Modulation)调制。PWM是对模拟电路控制的一种非常有效的技术,广泛应用于测量、功率控制、通信等领域。

4.FPGA软件设计

上图中包含了3个定时计数器:
20us定时器代码:
20ms比较定时器代码:
5.软件在线仿真与实测
硬件平台:EP2C8Q208C8N
Quartusii软件:11.0
工程编译完成后,下载bit文件到电路板,PWM波测试结果如下图所示。