這將使一個的Verilog模塊,時鐘和復位開關敏感被打開:撥打的Verilog模塊,開關靈敏關閉
always @(posedge clk, posedge rst)
這將如何改變爲是一個開關,它敏感關掉?
這將使一個的Verilog模塊,時鐘和復位開關敏感被打開:撥打的Verilog模塊,開關靈敏關閉
always @(posedge clk, posedge rst)
這將如何改變爲是一個開關,它敏感關掉?
如果您希望您的塊爲被關閉的開關敏感的,你要在切換輸入的名稱前面negedge,例如,「switch_line」:
always @(posedge clock, posedge reset, negedge swtich_line)
如果你只是想有一個觸發器檢查時鐘週期的每個上升沿開關的狀態,
always @(posedge clock, posedge reset)
if (!switch_line)
// ...
else
// ...
你們是不是要一個觸發器建模,鎖存器,或者是一些新類型的硬件?通常,只有觸發器和鎖存器對時鐘信號感興趣。具有異步復位的觸發器被建模爲
always @(posedge clock, posedge reset)
對於同步復位,從敏感列表中刪除復位信號。
根據用戶的評論,另一種選擇是插入復位信號的走燈信號。當你鉤住這個模塊,你可以做到以下幾點:
mymodule UUT(
.clock(clock),
.reset(~go),
//...
);
如果你否定去,你會得到相同的行爲復位,只是反轉(例如,從1-> 0要去的信號) 。
除非您以非常低的時鐘頻率運行,否則按鈕狀態的變化會比時鐘週期慢得多。因此,將按鈕輸入視爲異步信號並不是一個好主意。相反,您可能想要對輸入進行採樣,也可能會刪除毛刺。
由寄存器對輸入進行最小採樣,然後讓您的控件FSM查看該寄存器,並在檢測到預期更改時移至相應狀態。這意味着它需要設計1-2個週期才能對按鈕更改做出「反應」。但是,再次,除非時鐘頻率非常低,否則該時間段將足夠短,以至於沒有人會注意到幾個週期的延遲。
如果您將信號連接到復位,您(1)通過按下按鈕(壞)釋放所有狀態信息,並突然有兩個復位信號。像這樣的設計熱棒可能工作,但是是不好的設計方法,並會使你的設計對噪音敏感等。
而不是一個重置按鈕將使用go按鈕。如果go按鈕被釋放,則系統將進入空閒狀態。因此釋放go按鈕就像按下重置按鈕一樣。 – 2011-04-16 20:08:05
您可以將此信號連接到此模塊上的復位信號。否則,您可以在上面的觸發器的verilog中用「go」替換重置。 – 2011-04-16 20:11:57
我提供了一個上面的例子。 – 2011-04-16 20:14:55