【重拾FPGA】PWM的实现方法 | 您所在的位置:网站首页 › pwm调制电路的基本原理是 › 【重拾FPGA】PWM的实现方法 |
首先看两张PWM在FPGA上实现方式的原理图:引自http://www.stepfpga.com/doc/altera_9breath 呼吸灯设计要求呼吸的周期为2s,也就是说LED灯从最亮的状态开始,第一秒时间内逐渐变暗,第二秒的时间内再逐渐变亮,依次进行。 本设计中需要两个计数器cnt1和cnt2,cnt1随系统时钟同步计数(系统时钟上升沿时cnt1自加1)范围为0~T,cnt2随cnt1的周期同步计数(cnt1等于T时,cnt2自加1)范围也是0~T,这样每次cnt1在0~T的计数时,cnt2为一个固定值,相邻cnt1计数周期对应的cnt2的值逐渐增大,我们将cnt1计数0~T的时间作为脉冲周期,cnt2的值作为脉冲宽度,则占空比 = cnt2/T,占空比从0%到100%的时间 = cnt2*cnt1 = T^2 = 1s = 12M个系统时钟,T = 2400,我们定义CNT_NUM = 2400作为两个计数器的计数最大值。 我对此原理的理解为: 1.定义两个计数器,cnt1和cnt2,具体大小由具体情况计算确定,以及一个PWM增减方向指示器pwm_flag这里我就简单的取个值,做个实验。 output reg [2:0] cnt1; //定义脉冲周期计数器cnt1,最大值为4,共5次 output reg [2:0] cnt2; //脉冲宽度计数器cnt2 reg pwm_flag; //定义pwm增减方向,0加1减2.cnt1每来一个时钟上升沿则计数加一,直至计数到设定值后清零 always@(posedge clk or negedge rst_n) //脉冲周期计数器模块 begin if(!rst_n) cnt1 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |