我正在尝试理解找到here
的代码示例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。
这到底发生了什么?为什么只使用5位PWM中的4位,PWM_input的值是多少?
实际控制LED时,将LED设置为PWM [4]。这与PWM [4:0]相同吗?或者它是一个独立的价值?
答案 0 :(得分:1)
PWM[4]
本质上是4位加法器/累加器的进位,该位用于打开/关闭LED。 PWM_input的值决定LED打开和关闭的速度。如果示例写成
module LED_PWM( input clk,
input [3:0] PWM_input, // 16 intensity levels
output reg LED);
reg [3:0] PWM; // internal accumulator
always @(posedge clk) {LED,PWM} <= PWM + PWM_input;
endmodule