如何使用verilog闪烁led

时间:2016-06-14 20:56:47

标签: verilog vivado

我一直试图用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 :(得分:0)

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

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

always