Verilog 中的 Always 語句
Verilog基本語法型態全域變數基本元件多樣的寫法指定assignalwaysinitial運算式分枝迴圈模組函數Task陣列輸出入觀察真值表測試程式訊息顯示注意事項模擬程序硬體工程程式範例XorXor3全加器加法器加減器快速加法器乘法器ALU閂鎖器脈衝偵測計數器多工器暫存器群記憶體延遲問題浮點數狀態機程式計數器CPU0-MiniCPU0pipeline工具QuartusIIIcarusVeritek訊息相關網站參考文獻最新修改簡體版English |
1. 當模擬開始後就會被執行 範例:邊緣觸發正反器
問題
舉例而言:以下程式的執行順序並不一定,所以模擬的結果值也不一定,因此這是一個糟糕的程式。
正確的做法
|
page revision: 7, last edited: 13 Apr 2012 08:07
正確作法:
ret TmpD1, TmpD2, TmpD3, TmpD4;
reg d1, d2, d3, d4;
always @ * begin
TmpD1 = [What ever you want];
TmpD2 = d1;
TmpD3 = d2;
TmpD4 = d3;
end
always @(posedge clk) begin
d1 = TmpD1;
d2 = TmpD2;
d3 = TmpD3;
d4 = TmpD4;
end
將sequential & combinational分開, 就不用管啥bolocking/non-blocking的問題了
Post preview:
Close preview