一、Quartus中模擬的基本概念
模擬是設計電路的重要步驟之一。在Quartus II軟體中,模擬是通過ModelSim模擬器實現的。Quartus II軟體提供兩種類型的模擬:
1)Gate-Level(門級)模擬:在此模擬中,輸入和輸出的信號以邏輯門的狀態出現,因為模擬是在這些邏輯門之間進行的。
2)RTL(Register-Transfer-Level)模擬:在此模擬中,輸入和輸出的信號以邏輯值的形式出現,由寄存器之間的傳輸決定。
二、Quartus中基於ModelSim的模擬流程
以下是基於ModelSim的模擬流程:
1)打開Quartus II軟體,在工程管理器中選擇需要模擬的設計。
2)在文件菜單中選擇「模擬」>「創建模擬設置」,選擇使用ModelSim模擬器。
3)選擇模擬級別。對於不需要模擬全部設計的情況,可以選擇模擬觸發器級別或頂層電路級別。
4)選擇模擬波形編譯器。此編譯器將會把模擬輸出到一個或多個文件中。要實現此過程,首先要創建一個模擬文件列表,明確每個模擬參考的硬體描述語言源文件。接下來,可以編譯波形文件和模擬目標代碼。
5)運行模擬。Quartus II軟體將會自動啟動ModelSim模擬器來運行測試。
6)查看模擬結果。ModelSim模擬器將會顯示波形數據,而Quartus II軟體負責圖形化顯示波形數據。對於Quartus II軟體提供的獨立模擬窗口,可以調整模擬操作和完全獨立的波形窗口。
三、Quartus中的模擬說明
注意以下幾點:
1)在進行模擬之前,必須進行邏輯分析來確保設計中沒有錯誤。
2)若進行門級模擬,必須已將邏輯元件和宏處理器映射到FPGA晶元上,且不能繼續進行電路、時序和布局模擬。
3)若進行RTL模擬,元件必須配合時鐘周期進行測試,以避免時序問題。
四、基於VHDL進行模擬的示例代碼
entity JKFFD is Port ( J : in STD_LOGIC; K : in STD_LOGIC; Clk : in STD_LOGIC; Q : out STD_LOGIC; NQ : out STD_LOGIC); end JKFFD; architecture Behavioral of JKFFD is begin JK: process (Clk) begin if rising_edge(clk) then if (J = '1' and K = '0') then Q <= '1'; NQ <= '0'; elsif (J = '0' and K = '1') then Q <= '0'; NQ <= '1'; elsif (J = '1' and K = '1') then Q <= not Q; NQ <= not(NQ); else Q <= Q; NQ <= NQ; end if; end if; end process JK; end Behavioral;
五、基於Verilog進行模擬的示例代碼
module and_gate (input a, input b, output o); assign o = a & b; endmodule module test_bench; reg a, b; wire o; parameter PERIOD = 10; and_gate and1(.a(a), .b(b), .o(o)); initial begin a=0; b=0; #PERIOD a=0; b=1; #PERIOD a=1; b=0; #PERIOD a=1; b=1; #PERIOD $finish; end always #1 $display("a = %b, b = %b, c = %b", a, b, o); endmodule
六、使用ModelSim進行模擬的示例代碼
## 編譯Testbench和Design vlog testbench.v vlog design.v ## 綜合 vopt design design_test ## 模擬 vsim -novopt design_test ## GUI展示結果 add wave -r /* run 50ns
七、小結
Quartus II軟體提供了多種在模擬方面的選項,包括門級模擬和RTL模擬。Quartus II軟體與ModelSim模擬器共同工作,以對設計進行模擬。通過本篇文章,讀者現在應該已經了解了如何使用Quartus II軟體通過ModelSim模擬器進行硬體設計的模擬。
原創文章,作者:XALYP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/333842.html