所以我是Verilog
CPLD的新手。我写了一些打开 LED 的代码,现在我想让它闪烁。
module LEDON(LED);
output LED;
reg LED;
always
begin
LED=1'b1;
end
endmodule
那么如何添加一个延迟来让我看到 LED 亮起和熄灭呢?我读过我必须使用触发器降低时钟速度,但我不太确定这意味着什么。
您不必降低时钟频率。您要做的是制作一个计数器,在这么多时钟周期后切换 LED。
如果你有一个 1MHz 的时钟,并且你想每秒切换一次 LED,那么做这样的事情
reg [31:0] count;
reg led_state;
wire count_max = 32'd1_000_000;
assign count_nxt = (count >= count_max) ? 32'd0 : count + 32'd1;
assign led_state_nxt = (count == count_max) ? ~led_state : led_state;
always @(posedge clk)
begin
count <= count_nxt;
led_state <= led_state_nxt;
end
基本上这只是一个自由运行的计数器,每次达到某个值时,它都会切换 led_state 并自行重置。
您必须根据所需的闪烁率和时钟频率调整 count_max 的值。