0
我试图使这个示例代码感亮度发现here的Verilog:采用PWM控制的LED
module LED_PWM(clk, PWM_input, LED);
input clk;
input [3:0] PWM_input; // 16 intensity levels
output LED;
reg [4:0] PWM;
always @(posedge clk) PWM <= PWM[3:0]+PWM_input;
assign LED = PWM[4];
endmodule
要开始了,它创建的4位寄存器PWM_input和5位寄存器PWM。然后它在每个时钟周期继续将PWM设置为自己的3位加上PWN_input。
究竟发生了什么?为什么PWM的5位中只有4位正在使用,PWM_input的值是多少?
当实际控制LED时,它将LED设置为PWM [4]。这是否与PWM [4:0]相同?还是它是一个独立的价值?
好的,如果我想要显示特定的强度等级(1-16),我该如何去做呢?我一直在尝试将PWM_input设置为[3:2],但我无法达到特定亮度级别。更具体地说,将PWM + PWM_input改为PWM + PWM_input [3:3]的亮度等级为16? 15点左右,会不会是[3:2]? – Broadway
亮度级别为1-15或4'b001至4'b1111。对于这个特定的设计,没有可预测的方式来将LED设置为常开或常闭。我不知道你的意思是[3:2]。这是一个有点范围。你的意思是4'b1100或12,即将位[3]和[2]设置为1。 –