PWM调整LED亮度设计
一.实验任务
学****PWM原理,用Verilog硬件描述语言设计PWM逻辑电路,实现PWM信号占空比可调,通过按键调整PWM信号的占空比,将此PWM信号输出驱动LED,观察不同占空比时LED的亮度如何变化。
在实验箱上实现按键调整LED亮度,数码管显示PWM信号的占空比。
二.实验思路
首先给定一定计数周期T的标准时钟脉冲,然后定义另外一个计数器da来控制高低电平的占空比,使标准时钟变为一个高低电平占空比不一致的非标准脉冲,包含一个高电平、一个低电平,随着da的增大高电平的占空比随时间逐渐增大,低电平的占空比随时间逐渐减小,显示到二极管上即是二极管逐渐变亮。
电路原理框图参考:计数器c决定信号的周期T,da决定高低电平的占空比。
实验步骤
分频模块给定标准时钟脉冲,产生相应的周期信号da:
module div_clkone(clr,clk,p,led,da);
input clr,clk;
input [7:0]p;
output led;
output [7:0]da;
reg [7:0]da;
reg led;
always@(negedge clr or posedge clk) begin
if(!clr) led=0;
else begin if(da==8'h99) da<=0;
else if(da==8'h?9)da=da+4'h7;
else da<=da+1;
if(da<p) led<=1'b1;
else led<=1'b0;
end
end
endmodule
由按键控制信号q,从而控制高低电平的占空比,即产生高电平的占空比随按键逐渐增大(或减小),低电平随时间逐渐减小的时钟脉冲(或增大):
module buff(clr,clk,up,down,p);
input up,down,clr,clk;
output [7:0]p;
reg [7:0]p;
always@(negedge clr or posedge clk) begin
if(!clr) p=8'h50;
else begin if(up) begin if(p==8'h99) p=8'h01;
else if(p==8'h?9)p=p+4'h7;
else p=p+1;end
else if(down) begin if(p==1) p=8'h99;
else if(p==8'h?0)p=p-4'h7;
else p=p-1;end
end
end
endmodule
波形如图所示:
比较c和da,da>c时二极管亮否则二极管灭:
if(!clr)led=0;
else if(c<da)
PWM调整LED亮度设计报告 来自淘豆网www.taodocs.com转载请标明出处.