微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 用至简设计法进行PWM流水灯设计

用至简设计法进行PWM流水灯设计

时间:07-06 来源:互联网 点击:

脉冲宽度调制(pulse width modelation)简称PWM,利用微处理器的数字输出来对微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

在本章的应用中可以认为PWM就是一种方波。如图2-7所示。

图2-7 PWM波形图

一个周期为10ms,高电平为6ms,低电平时间为4ms的PWM,其占空比(高电平时间占整个周期的比例)为60%。

明德扬的FPGA开发板共有8个LED灯。产生8个管脚的PWM图,如图2-8所示。每个管脚对应的占空比分别为:80%、70%、60%、50%、40%、30%、20%和10%。系统工作时钟100MHz。

图2-8 各个LED等对应的PWM波形

FPGA通过8个管脚来分别控制8个LED灯,管脚值为0,对应的LED灯亮,管脚值为1,对应的LED灯灭(低亮高灭)。如果管脚不停地变化,则LED灯会闪烁;如果这种高低变化非常快,由于人的视觉暂留现象,LED就会出现不同的亮度。

基于这个原则,我们也可以通过产生PWM波形,来控制LED灯的亮度。

1. 明确功能

首先确定模块信号列表,如表2.2。

表2.2信号列表


信号名


I/O


位宽



说明



clk



I



1



系统工作时钟100MHz。



rst_n



I



1



系统复位信号,低电平有效。



led



O



8



LED输出信号


产生8个脉冲,每个脉冲周期为10s对应的占空比分别为:80%、70%、60%、50%、40%、30%、20%和10%。

2. 功能波形

led所有信号的变化都是相似的,这里以led[0]为例。见图2-9。

图2-9 led[0]信号变化图

3. 计数结构

因为每个脉冲的高低电平持续时间都是以1s为单位的,所以引入两个计数器,计数器cnt_1s计数1s,计数器cnt_10s计数每个脉冲高低电平分别持续的时间。具体计数情况如图2-10所示:


图2-10 计数结构图

4. 加一结束条件

cnt_1s的加1条件:计数器一直在计数,即:assign add_cnt_1s=1;

cnt_1s的结束条件:加一条件下计数到100_000_000-1;

cnt_10s的加1条件:cnt_1s的结束时刻;

cnt_10s的结束条件:加一条件下计数到10-1;

5. 定义特殊点

图2-11有几个特殊点,需要我们记住。

图2-11 特殊定义点图

cnt1s的结束条件:cnt_1s==100_000_000-1,定为end_cnt_1s。

cnt10s的结束条件:cnt_10s==10-1,定为end_cnt_10s。

led所有位的新号变化都是相似的,所以我们以led[0]为例定义特殊点,

led[0]变高的条件:cnt_10s==1-1,定为led0_off。

led[0]变低的条件:cnt_10s==10-1,定为led_on。


6. 完整性检查



(1)计数器cnt_1s
cnt_1s的初值:0;
cnt_1s的加1条件:assign add_cnt_1s=1;
cnt_1s的结束条件:
assign end_cnt_1s=add_cnt1s&&cnt_1s ==100_000_000- 1
(6)led[3]
led[3]由0变1:led3_off
led[3]由1变0:led_on
(2)计数器cnt_10s
cnt_10s初值:0;
cnt_10s的加1条件: assign add_cnt_10s=end_cnt1s;
cnt_10s的结束条件:
assign end_cnt_10s=add_cnt10s && cnt_10s==10 - 1
(7)led[4]
led[4]由0变1:led4_off
led[4]由1变0:led_on
(3)led[0]
led[0]由0变1:led0_off
led[0]由1变0:led_on
(8)led[5]
led[5]由0变1:led5_off
led[5]由1变0:led_on
(4)led[1]
led[1]由0变1:led1_off
led[1]由1变0:led_on
(9)led[6]
led[6]由0变1:led6_off
led[6]由1变0:led_on
(5)led[2]
led[2]由0变1:led2_off
led[2]由1变0:led_on
(10)led[7]
led[7]由0变1:led7_off
led[7]由1变0:led_on

7. 计数器代码

8. 完整代码

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top