一、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-hant/n/333842.html