2016-06-14 320 views
0

我一直在尝试使用vivado闪烁指示Verilog。我有一个100MHz的FPGA。我的代码张贴如下:如何使用verilog闪烁指示灯

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


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

[email protected] (posedge clk or posedge reset) 
begin 
    if (reset) 
    count <= 0; 
    else 
    count <= count + 1; //otherwise increment the register 
    end 

[email protected] (posedge state) 
    if (led == 1'b1) 
     led = 1'b0; 
    else 
     led = 1'b1; 

endmodule 

在此代码我试图使用时钟分频器来减慢时钟。然后,我使用减慢的时钟信号来打开和关闭LED。我知道这些限制是正确的,因为我可以对LED进行硬编码。但是,当我尝试这个或它的变化没有任何反应。谁能帮忙?

+0

完全缺乏功能通常指向一些简单的东西。确保您的时钟实际上正在运行(连接到正确的引脚用于外部时钟源),并确保您的复位已正确连接。同步您的重置引脚。 – Guy

回答

0

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

变化output reg ledoutput led,除去state和一切引用它(包括整个第二个always块),并添加:

assign led = count[26]; 
+0

感谢您的帮助。它似乎应该起作用,但它仍然无能为力。 – mpyro