1. 程式人生 > >PWM----調節LED亮度

PWM----調節LED亮度

pos logs class span input pan reg 兩個 left

-

-

--調節兩個LED燈亮度

 1 module led_pwm (
 2     clk, 
 3     rst, 
 4 //cnt1_pwm, 
 5     out1,
 6     out2,
 7     out3,
 8     out4
 9 );
10 
11     input clk, rst;
12     //input [19:0] count_pwm;
13     output reg out1, out2;
14     output out3, out4;
15     
16     reg [19:0] cnt;
17     reg [19:0] cnt1_pwm = 21
d2, cnt2_pwm = 21d52_4288; 18 reg [25:0] cnt_s; 19 20 always @ (posedge clk, negedge rst) 21 if (!rst) 22 begin 23 cnt_s <= 0; 24 cnt1_pwm <= 21d1; 25 cnt2_pwm <= 21d52_4288; 26 end 27 else
if (cnt_s == 26d1000_0000) //計0.2秒 28 begin 29 cnt_s <= 0; 30 cnt1_pwm <= {cnt1_pwm[18:0], cnt1_pwm[19]}; //調節脈寬 31 cnt2_pwm <= {cnt2_pwm[0], cnt2_pwm[19:1]}; 32 33 //cnt1_pwm <= (cnt1_pwm >> 2)|(cnt1_pwm << 19);
//right 34 //cnt2_pwm <= (cnt2_pwm << 2)|(cnt2_pwm >> 19);//left 35 end 36 else 37 cnt_s <= cnt_s + 1; 38 39 // 40 always @ (posedge clk, negedge rst) 41 if (!rst) 42 cnt <= 21h0; 43 else if (cnt == 21d55_0000) //一個周期 44 cnt <= 21b0; 45 else 46 cnt <= cnt + 1b1; 47 48 49 // pwm生成 50 always @ (posedge clk, negedge rst) 51 if (!rst) 52 out1 <= 1b0; 53 else if (cnt <= cnt1_pwm) 54 out1 <= 1b0; 55 else 56 out1 <= 1b1; 57 58 always @ (posedge clk, negedge rst) 59 if (!rst) 60 out2 <= 1b0; 61 else if (cnt <= cnt2_pwm) 62 out2 <= 1b0; 63 else 64 out2 <= 1b1; 65 66 assign out3 = 1b0; 67 assign out4 = 1b0; 68 69 endmodule

PWM----調節LED亮度