2016-04-25 76 views
-1

在下面的Verilog分配寄存器rotationDoneR被分配給該信號,然後另一個寄存器rotationDoneRR被分配給相同的寄存器。這是否意味着兩個寄存器都保持相同的值,並且條件從來都不是真的?Verilog:將寄存器分配給寄存器

input wire RotationDone; // from the module definition 

reg rotationDoneR; 
reg rotationDoneRR; 

rotationDoneR <= RotationDone; 
rotationDoneRR <= rotationDoneR; 

if (rotationDoneR && (! rotationDoneRR)) begin 
    InterruptToCPU <= 1; 
end 

感謝您的任何澄清!

回答

5

承擔有基於代碼中的時鐘事件的邊緣的一些程序塊

當你有非阻塞分配<=),RHS評價發生在活動事件地區的地方,而LHSNBA區域被更新。

考慮下面的例子中,非阻塞賦值評估RHS在有源區和存儲所述值內部,暫時對於相同的時戳(該較舊的值的a被存儲在內部這裏)。然後在NBA區域中,更新LHS(b得到的舊值爲aa得到值inp)。

// synthesize to simple wire 
a = inp; 
b = a; 

// synthesize to shift register 
a <= inp; 
b <= a; 

同樣,這裏rotationDoneRR翻牌-ED版本的rotationDoneR。由於在某個時鐘邊緣,rotationDoneR加載了RotationDone,與此同時,rotationDoneRR加載了rotationDoneR。該當前輸入值是TRUE(電流輸入RotationDone = 1'b1否定輸入的先前值(先前的輸入RotationDone = 1'b0)得以滿足:

所以,每當if條件計算真。

請參考非阻塞作業linkmany other PDFs通過網絡,包括CummingsSNUG2000SJ_NBA_rev1_2 Paper欲知更多信息。