指示灯闪烁,带 CPLD



所以我是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的值。

最新更新