FPGA入门基础之呼吸灯设计

本文转载自:FPGA技术实战

引言:呼吸灯在日常生活中经常见到,如电子时钟,小夜灯等等,本文我们介绍下通过PWM波来控制LED灯,实现呼吸灯功能。

1.呼吸灯概念

呼吸灯其实是在处理器的控制下,由暗渐亮、然后再由亮渐暗,其实现效果类似人的呼吸方式的LED灯。其要实现呼吸周期重复,明暗渐变功能。

2.实现原理

由于FPGA管脚输出逻辑电平只有“0”和“1”,因此并不能通过FPGA来改变LED两侧电压差来实现呼吸灯。但是,我们可以通过改变单位时间内亮灯时间的占空比来实现呼吸效果,即在固定频率下,通过调整占空比来控制LED的亮灭,又称作PWM(Pulse Width Modulation)调制。PWM是对模拟电路控制的一种非常有效的技术,广泛应用于测量、功率控制、通信等领域。

图1:占空比调整示意图.JPG

3.硬件介绍

LED灯电路如下图所示,图中电阻起限流作用,保证LED不会超过其工作最大电流,当FPGA IO口输出低电平时,LED灯点亮,反之,LED灯熄灭。

图2:LED灯电路图.JPG

4.FPGA软件设计

本设计呼吸灯的亮灭周期是2S,PWM每间隔2ms更新一次,共计更新100次即2S后切换PWM的占空比调整方向。因此PWM占空比的调整是和2ms定时计数器和2S定时计数器相关。系统框图如下:

图3:呼吸灯PWM产生框图.JPG

上图中包含了3个定时计数器:

(1)20us定时器,作为本系统的基本定时器,产生时间基准;
(2)20ms定时器,通过20us定时器,计数100次完成20ms定时计数;
(3)2s定时器,通过20ms定时器,计数100次完成2S定时计数。

20us定时器代码:

20ms比较定时器代码:

5.软件在线仿真与实测

  • 硬件平台:EP2C8Q208C8N

  • Quartusii软件:11.0

工程编译完成后,下载bit文件到电路板,PWM波测试结果如下图所示。

图4:SignalTapII在线抓取波形.JPG

图4:SignalTapII在线抓取波形
图4.JPG

最新文章

最新文章