一、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仿真器进行硬件设计的仿真。