我试图让这个示例代码在这里找到的意义
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设置为自身加上PWN_input的3位。
这里到底发生了什么?为什么只使用5位PWM中的4位,PWM_input的值是什么?
实际控制LED时,将LED设置为PWM[4]。这与PWM[4:0]相同吗?或者它是一个独立的值?
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