我正在尝试理解这个示例代码发现的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。然后在每个时钟周期将脉宽调制设置为等于自身的3位加上PWN_input。
这里到底发生了什么?为什么只使用了5位脉宽调制中的4位? PWM_input的值是多少?
当实际控制发光二极管时,它将发光二极管设置为PWM4。这与PWM4:0相同吗?或者它是一个独立的值?
发布于 2016-09-14 15:08:36
PWM[4]
本质上是4位加法器/累加器的进位位,该位用于打开/关闭发光二极管。PWM_input的值决定了指示灯打开和关闭的速度。如果这个例子写成这样可能会更清楚
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
https://stackoverflow.com/questions/39490369
复制相似问题