首页 文章

如何使用verilog闪烁led

提问于
浏览
0

我一直试图用vivado在Verilog中眨眼 . 我有一个100MHz的FPGA . 我的代码发布在下面:

module Blinky(
input clk,
input reset,
output reg led
);


reg [26:0] count; 
wire state;
assign state = count[26];

always@ (posedge clk or posedge reset)
 begin
  if (reset)
   count <= 0;  
  else
   count <= count + 1;  //otherwise increment the register
  end

always@ (posedge state)
    if (led == 1'b1)
        led = 1'b0;
    else
        led = 1'b1;

endmodule

在这段代码中,我试图使用时钟分频器来减慢时钟 . 然后我使用慢速时钟信号来打开和关闭LED . 我知道约束是正确的,因为我可以对led进行硬编码 . 但是,当我尝试这个或其变化时,没有任何反应 . 有人可以帮忙吗?

1 回答

  • 0

    你的事情太复杂了 . 计数器的最高位可用于直接驱动LED;你不需要将它用作单独触发器的时钟 . (一般来说,您应该在FPGA设计中使用尽可能少的独立时钟信号; FPGA路由结构仅支持少量全局时钟 . )

    output reg led 更改为 output led ,删除 state 以及引用它的所有内容(包括第二个 always 块的全部内容),并添加:

    assign led = count[26];
    

相关问题