如何在Verilog中使LED闪烁?

如何在Verilog中使LED闪烁?,verilog,Verilog,我有一块FPGA板,我试图让led闪烁,30%的时间间隔为60秒 我把时钟设为24兆赫 以下是我在教程网站上使用的代码 reg [33:0] counter; reg state; assign ledg[0] = state; always @ (posedge clock) begin counter <= counter + 1; state <= counter[24]; // end reg[33:0]计数器; 注册州; 分配ledg[0]=状态; 始

我有一块FPGA板,我试图让led闪烁,30%的时间间隔为60秒

我把时钟设为24兆赫

以下是我在教程网站上使用的代码

reg [33:0] counter;
reg state;

assign ledg[0] = state;

always @ (posedge clock) begin
    counter <= counter + 1;
    state <= counter[24]; //
end
reg[33:0]计数器;
注册州;
分配ledg[0]=状态;
始终@(posedge时钟)开始
柜台
我不明白为什么计数器用下标[33:0]声明

下标[33:0]表示计数器有34位。这意味着它可以从0到2^(34)-1,或从0到17179869183进行十进制计数

我不明白为什么计数器[24]运行时状态被设置为取消阻塞 使用此代码时,我的计时边距为off,即当我计时 每60秒的闪烁量为0.73,关闭0.03 根据要求

状态分配给计数器的第24位。这意味着每当计数器的第24位等于1时,状态将为“1”,LED将点亮。每当计数器的第24位为0时,状态将为0,LED将熄灭

请注意,计数器的第24位每2^24个周期或16777216个周期切换一次。请记住,您的时钟为24 MHz,这意味着时钟每秒切换24000000次。因此,如果您的LED状态每16777216个周期切换一次,这意味着它每秒或每0.699秒切换(16777216/24000000)次-因此它应该非常接近您正在寻找的0.7。

/300MHz到1Hz

模块顶部( 输入时钟, 输入复位, 输出发光二极管 );

reg[27:0]计数器;
注册领导;
雷格克库特;
始终@(posedge clk)开始
如果(计数器==0)开始
柜台A)眨眼时你怎么数到.73?我想如果你能从频率和占空比的角度来解释这个问题,你会得到更好的服务。B) 术语
unblock
未定义且不正确,状态等于计数器的第24位(滞后一个时钟脉冲)。
reg [27:0] counter;
reg led;
reg clkout;

always @(posedge clk) begin
    if (counter == 0) begin
        counter <= 149999999;
        clkout <= ~clkout;
    end else begin
        counter <= counter - 1;
    end
end

always @(posedge clkout) begin
        if (reset == 0) begin
            led <= 0;
        end else begin
            led <= ~led;
        end
    end