首先一定要明确一点!!很重要!!led灯的亮暗控制原理是什么?
led灯的亮暗是靠平均电压来控制的。
举个例子,假设把一个时钟平均分成10块,如果只有1块的时间led是导通的,剩下的9块led是截止的。假设PWM信号的幅值是5V,那么在导通的1块时间里LED电压的确是5V的,但是在剩下9块时间里,它的电压却是0V。也就是说从一个周期整体看来,LED的平均电压只有5*0.1+0*0.9=0.5V。
又由于PWM信号频率很高的,我们无法通过肉眼来观察到每一个周期LED灯亮灭的变化过程,所以人眼看到的亮暗即为通过平均电压这样一种方式显示。
大家都知道PWM波是脉冲宽度调制,用来控制一个周期中高低电平的时间(就是我们经常说的占空比),但是具体用Verilog语言来实现可能还比较陌生,下面先给一个PWM的例子。
module pwm_generate(
in_clk,
rst,
pwm_count,
//控制pwm的占空比,范围0-FFFFF
out_pwm);
input in_clk;
input rst;
input [19:0] pwm_count;
output reg out_pwm;
reg [20:0] pwm_cnt;
always @ (posedge in_clk or negedge rst)
led灯的亮暗是靠平均电压来控制的。
举个例子,假设把一个时钟平均分成10块,如果只有1块的时间led是导通的,剩下的9块led是截止的。假设PWM信号的幅值是5V,那么在导通的1块时间里LED电压的确是5V的,但是在剩下9块时间里,它的电压却是0V。也就是说从一个周期整体看来,LED的平均电压只有5*0.1+0*0.9=0.5V。
又由于PWM信号频率很高的,我们无法通过肉眼来观察到每一个周期LED灯亮灭的变化过程,所以人眼看到的亮暗即为通过平均电压这样一种方式显示。
大家都知道PWM波是脉冲宽度调制,用来控制一个周期中高低电平的时间(就是我们经常说的占空比),但是具体用Verilog语言来实现可能还比较陌生,下面先给一个PWM的例子。
module pwm_generate(
input in_clk;
input rst;
input [19:0] pwm_count;
output reg out_pwm;
reg [20:0] pwm_cnt;
always @ (posedge in_clk or negedge rst)
