Verilog vs Vhdl差異

目前全球以 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 搭配 beginend,能快速撰寫與模擬 Testbench。

設rst為負緣觸發,假設單位時間為ns

    initial begin
        rst = 0;     //電路重置
        #10 rst = 1; //電路啟動
        #90 $finish; //在100ns結束模擬
    end

vhdl要寫比較多

還有vhdl沒有$finish,使用asser false終止模擬

    process
    begin
        -- 在模擬開始時,rst 設為 '0' (重置)
        rst <= '0';  -- 電路重置
        wait for 10 ns;  -- 等待 10 ns
        rst <= '1';  -- 電路啟動
        wait for 90 ns;  -- 在100ns結束模擬
        -- 假如需要結束模擬,通常在 VHDL 中使用以下語句:
        assert false report "Simulation Ended" severity failure;

        wait;  -- 終止過程
    end process;

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *