1、一实验原理学习 PWM 原理,用 Verilog 硬件描述语言设计 PWM 逻辑电路,实现 PWM 信号占空比可调,通过按键调整 PWM 信号的占空比,将此 PWM 信号输出驱动 LED,观察不同占空比时 LED 的亮度如何变化。在实验箱上实现按键调整 LED 亮度,数码管显示 PWM 信号的占空比。二设计方案module cnt100(clr,clk,ctrl,q);/100 计数器input clr,clk,ctrl;output7:0 q; reg7:0 q;wire new_clk=clk/ctrl 为 1 时计数,为 0 时暂停always(posedge new_clk or ne
2、gedge clr)/毫秒if(!clr)begin q= 26H17D7840) begin c=0;cko=!cko;end/50M 的一半就是 26H17D7840else c=c+f;endendmodulemodule mux2(a1,a2,sel,out);input3:0 a1,a2;input sel;output3:0 out;assign out=sel?a2:a1;endmodulemodule pwm(clr,clk,data,led);/100 进制计数器input clr,clk;input7:0 data; output led;reg7:0 q;assign l
3、ed=(qdata)?1b1:0;always(posedge clk or negedge clr)/毫秒if(!clr)begin q=8h00;endelse if(q=8h99)q=0;else if(q=8h?9)q=q+4h7;else q=q+1b1;endmodulemodule scan(clk,q);input clk;output q;reg q;always (posedge clk)beginq=q+1b1;endendmodulemodule pwm_top(clr,clk,ctrl,a,b,c,d,e,f,g,sel,led);/定时计数器input clr,cl
4、k,ctrl;output a,b,c,d,e,f,g,sel,led;wire se,clkp,wctrl;wire3:0 din;wire7:0 q100;div_clk clk1(.cki(clk),.f(2d3),.cko(se),clk2(.cki(clk),.f(12d1000),.cko(clkp);debounce deb(.clk(clkp),.key_in(ctrl),.key_out(wctrl);/按键去抖动pwm pwm(.clr(clr),.clk(clkp),.data(q100),.led(led);/cnt100 cnt100(.clr(clr),.clk(se),.ctrl(wctrl),.q(q100);/100 计数器scan scan(.clk(clkp),.q(sel);mux2 mux2(.a1(q1003:0),.a2(q1007:4),.sel(sel),.out(din);deled deled(.in(din),.a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g);endmodule