我在网上看到好多人些的PMW 都是altera 官方的一个例子抄来抄去的,因此我自己写了一个例子,供大家参考,直接在LED上看到现象的!!
module pwm(clk,leda);
input clk;//clk=50M=50 000 000
output leda; //led
reg [15:0] pwm,count; //PMW脉宽计数,周期计数
reg leda;
always @(posedge clk)
begin
count=count+1;
if(count[15]==1) //打到周期预设定的数值,就清零
begin
count=0;
end
if(count<pwm) //如果本周期中,周期小于PWM脉宽计数,那么LED就=1
leda=1;
else leda=0; //PWM的低脉冲时候,就为0
end
always @(posedge count[14]) //一个周期前面一点,产生PWM加/减 信号
begin
pwm=pwm+1'b1; //PWM 在一个周期完成之前加1,用于下一个周期的信号宽度
if(pwm[13]==1) //脉宽达到预设定的数值
pwm=0;
end
endmodule
不知道为什么传上来以后,那些缩进都变小了,可能是格式兼容的问题吧!!
我觉得这个PWM 信号些的很简洁,很明了,哈哈!!希望抛砖引玉,