2016-06-14 322 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