目前全球以 Verilog 為主流硬體描述語言,而 VHDL 則主要在歐洲較為普及。兩者之間最大的差異在於 blocking assignment 的概念及應用。
Verilog 的特性
1.Blocking 與 Non-blocking Assignment
Blocking Assignment (=
)
- 程式按照從上到下的順序執行,類似於一般程式語言中的順序執行。
- 適合描述組合邏輯或順序執行的運算。
- 範例:
a = b; // 先執行
c = a; // 再執行
- 最後a=b=c
Non-blocking Assignment (<=
)
- 程式中的多個運算可同時執行,與執行順序無關,適合描述時序邏輯。
- 範例:
a <= b; // b 的值在執行時立即保存
c <= a; // c 的值不受執行順序影響
- 最後c為原本的a,a為b
2.方便的 Testbench 撰寫
Verilog 支援 initial
搭配 begin
和 end
,能快速撰寫與模擬 Testbench。
設rst為負緣觸發,假設單位時間為ns
initial begin
rst = 0; //電路重置
#10 rst = 1; //電路啟動
#90 $finish; //在100ns結束模擬
end
待續……