上次介绍了软件联合安装和部分基本配置,两个软件可以独立使用,但是不能联合使用,下面我将详细介绍quartus 16.1和modelsim 16.1联合仿真配置以及仿真测试的过程。
1、首先当然是打开quartus软件,创建FPGA工程,编写代码,编译等,具体过程不详述。为了简单起见,编写一个非常简单的时序逻辑电路:模12计数器,语言为Verilog。之前自己一直用的是VHDL,应该是自己学的不全面,感觉没有Verilog好使。代码如下图:实体名为Modelsim_test_1。
2、仿真设置。注意此步骤必须先完成,不然后面没办法操作。quartus菜单栏操作:“Assignments”中打开“settings”,打开“EDA Tool Setting”中的“simulation”如下图界面。
“Tool name”选择“Modelsim-Altera”;
“Format for output netlist”我选择“Verilog HDL”,因为我用的是Verilog语言;
“Time scale”仿真时间单位为1ps可以不用管;
“Output directory”是仿真文件输出相对路径,可以不用管。然后进行下一步。
5、添加文件。很重要的步骤。按照步骤2再次打开“settings”。在“NativeLink settings”中选择“compile test bench”如下图,点击后面圈住的“Test Benches”。
6、继续添加文件。经过步骤4后点击“new”,如下图。此处得回到步骤3打开的testbench模板文件。
长的名字“Modelsim_test_1_vlg_tst”就是“Test bench name”要填的,避免手误,可以直接拷贝,当然它也是在modelsim中作为modelsim仿真工程的顶层实体名,和在quartus中的顶层实体名“Modelsim_test_1”具有相同的作用。可以观察到,“Modelsim_test_1”在“Modelsim_test_1_vlg_tst”被实例化为“i1”。
“Use test bench to perform…”前需要打钩。
“Design instance name in test bench”后面就是填写在testbench中被实例化的模块名“i1”。
划线4位置处找到testbench路径即可。
最后点击“Add”“OK”“Apply”等,完成配置。
7、修改代码。之前打开的testbench文件只是一个仿真平台模板而已,而所需要的初始化等没有编写。编写如下图所示。
Initial中:初始clk为低电平,复位信号rst_n为低电平,延时20ps后rst_n置1,计数器开始工作,再延时100ps。(时间单位在配置时已经设置,也在此段程序第一行体现)
Always中:表示时钟周期为20ps,占空比0.5。
注意:图中画线语句务必注释,具体原因不知道。不注释将只能仿真一个周期。
8、鸡冻人心的时刻,终于可以打开modelsim了。按照如下图操作:“Tool”=>“RTL Simulation”,稍等片刻modelsim便可自动启动。
10、终于联合仿真成功了,太令人激动了。这个只是非常简单的模块,那么接下来将继续探索更加复杂的工程的联合仿真了。
1、首先当然是打开quartus软件,创建FPGA工程,编写代码,编译等,具体过程不详述。为了简单起见,编写一个非常简单的时序逻辑电路:模12计数器,语言为Verilog。之前自己一直用的是VHDL,应该是自己学的不全面,感觉没有Verilog好使。代码如下图:实体名为Modelsim_test_1。
2、仿真设置。注意此步骤必须先完成,不然后面没办法操作。quartus菜单栏操作:“Assignments”中打开“settings”,打开“EDA Tool Setting”中的“simulation”如下图界面。
“Tool name”选择“Modelsim-Altera”;
“Format for output netlist”我选择“Verilog HDL”,因为我用的是Verilog语言;
“Time scale”仿真时间单位为1ps可以不用管;
“Output directory”是仿真文件输出相对路径,可以不用管。然后进行下一步。
5、添加文件。很重要的步骤。按照步骤2再次打开“settings”。在“NativeLink settings”中选择“compile test bench”如下图,点击后面圈住的“Test Benches”。
6、继续添加文件。经过步骤4后点击“new”,如下图。此处得回到步骤3打开的testbench模板文件。
长的名字“Modelsim_test_1_vlg_tst”就是“Test bench name”要填的,避免手误,可以直接拷贝,当然它也是在modelsim中作为modelsim仿真工程的顶层实体名,和在quartus中的顶层实体名“Modelsim_test_1”具有相同的作用。可以观察到,“Modelsim_test_1”在“Modelsim_test_1_vlg_tst”被实例化为“i1”。
“Use test bench to perform…”前需要打钩。
“Design instance name in test bench”后面就是填写在testbench中被实例化的模块名“i1”。
划线4位置处找到testbench路径即可。
最后点击“Add”“OK”“Apply”等,完成配置。
7、修改代码。之前打开的testbench文件只是一个仿真平台模板而已,而所需要的初始化等没有编写。编写如下图所示。
Initial中:初始clk为低电平,复位信号rst_n为低电平,延时20ps后rst_n置1,计数器开始工作,再延时100ps。(时间单位在配置时已经设置,也在此段程序第一行体现)
Always中:表示时钟周期为20ps,占空比0.5。
注意:图中画线语句务必注释,具体原因不知道。不注释将只能仿真一个周期。
8、鸡冻人心的时刻,终于可以打开modelsim了。按照如下图操作:“Tool”=>“RTL Simulation”,稍等片刻modelsim便可自动启动。
10、终于联合仿真成功了,太令人激动了。这个只是非常简单的模块,那么接下来将继续探索更加复杂的工程的联合仿真了。