1
我目前有一個fpga上的按鈕去抖動器的代碼(下面),但是我收到一個錯誤,指出「在一個始終/初始化過程塊中的多個事件控制語句在此不受支持案件。」每當我嘗試綜合設計。導致問題的線是@(posedge clk)
,但我想知道如何替換這個邏輯。我基本上需要的是always @ (quarter & posedge clk)
作爲第一個始終阻擋的靈敏度列表,但這也不起作用。我是相當新的語言,所以我還在工作了代碼的幾個語法kinks.Snippet低於:Verilog事件控制語句
always @(quarter)
begin
@(posedge clk)
begin
if (quarter != new) begin new <= quarter; count <= 0; end
else if (count == DELAY) cleanq <= new;
else count <= count+1;
end
end
我對你在你的評論區放入什麼感到困惑。你的意思是你基本上初始化你的「變量」?如果是的話,我很難看到這代表了同樣的邏輯。代碼塊應在posedge上和「四分之一」按下時執行。 – Antoninus 2015-02-06 00:04:30
這個答案是錯誤的。 「always @(something1)@(something2)do something」被解釋爲等待something1事件,然後等待接下來的something2事件。沒有辦法爲兩個事件在同一時間發生而編寫或合成代碼。大多數綜合工具只允許一個always塊中的一個事件。 – 2015-02-06 00:14:13
@ dave_59我可能錯了。安東尼努斯你是什麼意思的「季度新聞」,它的價值已經改變了?我的意思並不是初始化這些值,我的意思是明確他們的價值。所以如果一個值不變,你會把值<=值; – Qwertyzw 2015-02-06 00:31:45