gpt4 book ai didi

verilog - 尝试在 Verilog 中使 LED 闪烁

转载 作者:行者123 更新时间:2023-12-02 01:18:40 25 4
gpt4 key购买 nike

我有一个带有 50Mhz 时钟的 CPLD。

这是我的代码:

module FirstProject(clk, LED);
output LED;
input clk;

reg [32:0] count1;
reg LEDstatus;


assign LED = LEDstatus;

always @ (posedge clk) begin
if (count1 < 10000000) begin
LEDstatus <= 0;
end
else begin
LEDstatus <= 1;
end
count1 <= count1 +1;
end

endmodule

我不知道为什么这不起作用。部署在CPLD上,但灯常亮

此代码适用于我的 cpld,具有完全相同的引脚分配和时序约束

http://www.fpga4fun.com/Opto2.html

最佳答案

时钟频率为50MHz,开关循环为2**33-1(8589934591)个周期。

1/Hz = seconds
slowdown factor * 1/Hz = seconds to complete loop

这意味着 LED 正在尝试闪烁:

(8589934591 / 50000000) = 171s, slower than 1Hz

任何超过 25Hz 的东西都不会被感知,但这不是这里的问题。

当计数在 0 到 10000000 之间时,灯应关闭:

10000000 / 50000000 = 0.2 Seconds

关闭时间为0.2秒,开启时间约为170秒。这个比率可能很难观察到。切换到 50/50 开/关比和更快的观察速度会更容易。

我建议将 count1 设置为 24 位宽,并将输出基于 count1 的 MSB;

reg [23:0] count1; 

always @(posedge clk) begin
LEDstatus <= count1[23];
count1 <= count1 + 1;
end

关于verilog - 尝试在 Verilog 中使 LED 闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11896211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com