如何在ModelsimSE中使用do文件仿真QuartusII IP核

本文结构

  •   建立仿真库
  •   例化IP核
  •   显示例化模块
  •   使用do文件进行仿真

  在实际设计工作中我们会经常用到FPGA厂商已经封装好的模块,称之为IP核,而当我们进行仿真的时候,要向Modelsim提供我们使用的IP核的信息,即将仿真库添加到Modelsim的库文件当中去。在库文件添加完成之后,我们要从QuartusII中例化出模块的Verilog实现,然后生成tb文件,使用do文件进行编译后仿真。最后将这种操做进行工程化,减少仿真时鼠标的点击。

  使用的工具:QuartusII 13+Modelsim SE-64 10.4

1、建立仿真库

第一步: 新建文件夹,用来放置编译之后的库文件,创建一个文件夹分别放置lpm、altera_mf、altera_primitive、cyclone(器件)库。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第1张图片

第二步: 建立库,以altera_mf库为例进行介绍。首先打开Modelsim,file -> New -> Library,弹出窗口。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第2张图片

第三步: Create部分选择第三项,Library Name填写库名称“altera_mf”,Library Physical Name中填写我们第一步中新建库对应文件夹的存放路径(注意使用“/”,图中标出),如下图。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第3张图片

第四步: 现在可以看到新建的altera_mf库,不过现在是一个空的库。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第4张图片

第五步: 选择菜单栏的 compile -> compile… ,弹出如下窗口。首先选择待编译的库文件,然后在QuartusII的安装目录下找到Altera IP核的编译文件altera_mf,安装路径为D:\quratusII13\quartus\eda\sim_lib,最后点击compile然后关闭,此时altera_mf中已经不是空的。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第5张图片

第六步: 重复2-5步骤,依次将依次建立lpm、altera_primitive、cyclone三个库。对应编译文件220model.v(lpm)altera_primitives.v(altera_primitive)、cycloneiv_atoms.v(cyclone库,这里我们只添加了cyclone4的库文件)。添加完成后可以在library中看到四个库,如下图。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第6张图片

第七步: 将以上库名称添加进Modelsim SE的初始化库文件中。找到Modelsim安装路径下的modelsim.ini文件,去除文件的只读属性,然后将以上创建库的路径的名称添加进去,关闭文件,再设置为只读属性。将复制的路径地址斜杠“\”改成反斜杠“/”,如下图。

2、例化IP核

第一步: 首先创建工程,然后选择菜单栏 Tools -> MegaWizard Plug-In Manager,其中MegeWizard是Quartus的IP核建立导向工具。出现下图,选择Next。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第7张图片

第二步: 按下图中熬到PLL的IP核,选择生成Verilog核文件。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第8张图片

第三步: 点击IP核存放路径后面的省略号…,然后选择存放路径,我这里创建了一个ip_core文件夹进行存放,将核文件命名为pll.v,然后点击打开,然后点击Next。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第9张图片

第四步: 此时会弹出PLL IP核的配置窗口。首先设置器件的速度等级,我们所用器件速度等级为8。速度等级数值越小,对应的FPGA速度越快。然后设置PLL的输入频率,这里我们设置为50MHz,其他默认。点击Next。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第10张图片

第五步: 弹出如下对话框,保持默认选项,即创建一个异步输入信号,注意这个复位信号是高电平有效的,创建一个PLL锁定locked信号。继续Next

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第11张图片

第六步: 一直点击Next,中间过程配置保持默认,直到选项卡为Output Clocks—>clk c0时,表示对pll输出时钟进行配置,clk c0的“use this clock”选项是默认选上的。选择“Enter output clock frequency”,在“Requested Settings”下设置好期望输出的时钟频率,这里clk c0设置为100MHz。然后点击Next。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第12张图片

第七步: 弹出同样窗口,这里我们需要,手动选择“use this clock”,同样方法创建clk c1 为40MHz时钟,clk c2为10MHz时钟。c3、c4不启用
第八步: 继续Next,中间过程保持默认,一直到Summary选项下时,可以选择实际输出的文件,这里pll.v是必须的,这个文件是将来我们仿真时,IP的编译文件。其次,我们选择pll_inst文件,这个文件为pll的例化文件,我们可以直接从该文件中将pll的例化结果拷贝到相应的应用逻辑中。最后点击Finish。得到生成模块文件(pll.v和pll_inst.v)。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第13张图片

原文链接:如何用ModelsimSE仿真IP核-以PLL为例

3、显示例化模块

  Quartus中的PLL模块:
  1、首先,回到Quartus主界面,将pll.v导入进工程当中,并且工程当中只保留如图。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第14张图片

  2、然后,将pll.v文件设置为顶层文件(右击pll.v文件,选择 Set as Top-Level Entity)。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第15张图片
  3、进行编译。
  4、为当前.v文件创建符号文件。
如何在ModelsimSE中使用do文件仿真QuartusII IP核_第16张图片
  5、创建原理图文件。选择file -> New ->Block Diagram/Schematic File,选择ok。
如何在ModelsimSE中使用do文件仿真QuartusII IP核_第17张图片
  6、双击点图纸区域得到如下窗口,选择Project下的pll,然后点击ok。
如何在ModelsimSE中使用do文件仿真QuartusII IP核_第18张图片
  7、得到pll模块图如下。Ctrl + s 保存。
如何在ModelsimSE中使用do文件仿真QuartusII IP核_第19张图片
  8、选择菜单栏的Tools -> Netlistviewers ->RTL viewer,可以得到下图。
如何在ModelsimSE中使用do文件仿真QuartusII IP核_第20张图片

4、使用do文件进行仿真

第一步: 首先新建一个工程文件夹Project, 在工程目录下创建work、src和modelsim文件夹,其中src放置源文件和仿真文件,modelsim放置do文件和bat文件(打开Modelsim,然后运行do文件),work放置仿真文件(pll.v<生成模块文件>、pll_module.v<见第二步>和pll_module_tb.v<见第二步>)。(注意,此节有生成模块文件pll.v和模块文件pll_module.v之分,其中pll_module.v是对pll.v进行简单的包装,不要问为什么,问就是不知道!!)
   工程文件夹图示,

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第21张图片

第二步: 根据pll_inst.v文件编写pll_module.v文件和pll_module_tb.v文件(代码见下),并将文件放入work文件夹中。

   pll_module.v代码如下,

module pll_module(areset_sig, inclk0_sig, c0_sig, c1_sig, c2_sig, locked_sig);
input areset_sig;
input inclk0_sig;
output c0_sig;
output c1_sig;
output c2_sig;
output locked_sig;

#这部分是pll_inst.v中的内容
pll pll_inst(         
	.areset(areset_sig),
	.inclk0(inclk0_sig),
	.c0(c0_sig),
	.c1(c1_sig),
	.c2(c2_sig),
	.locked(locked_sig)
);

endmodule

   pll_module_tb.v代码如下,

`timescale 1ps / 1ps
module pll_module_tb;
reg rst_n;
reg clk;
wire clk_100MHz;
wire clk_40MHz;
wire clk_10MHz;
wire w_pll_lock;
pll_module pll_u1(
	.areset_sig(!rst_n),
	.inclk0_sig(clk),
	.c0_sig(clk_100MHz),
	.c1_sig(clk_40MHz),
	.c2_sig(clk_10MHz),
	.locked_sig(w_pll_lock)
);

initial begin
	clk = 0;
	rst_n = 1;
end

always #10000 clk = ~clk;

endmodule

   work文件夹图示,

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第22张图片

第三步: 打开pll.v文件,可看到需要仿真库文件altera_mf。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第23张图片
在Quartus安装路径D:\quratusII13\quartus\eda\sim_lib处找到altera_mf.v和220model.v库文件加入src文件夹中去,还要加上220model.v。

   src文件夹图示,

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第24张图片

第四步: 编辑sim.do文件(即前文提到的do文件)。编辑modelsim_run.bat(不可命名为modelsim.do,你试了你知道)文件(上文提到的bat文件)。将两个文件添加入到modelsim文件夹中。

modelsim_run.bat文件:这是一个批处理文件,里面就一行“modelsim -do sim.do”,这是一条DOS命令,意思就是调用Modelsim工具,并在Modelsim工具中执行sim.do这个文件。

sim.do:do文件是由tcl脚本语言编写的,这个参考例程中的do文件是最基本的tcl脚本语言。

   sim.do文件代码如下,

#Create work_lib
vlib work 
#Map the work lib to current lib
vmap work work
 
#Compile the source files
vlog C:/Users/ly/Desktop/Project/src/altera_mf.v
vlog C:/Users/ly/Desktop/Project/src/220model.v
vlog C:/Users/ly/Desktop/Project/work/pll.v
vlog C:/Users/ly/Desktop/Project/work/pll_module.v
vlog C:/Users/ly/Desktop/Project/work/pll_module_tb.v
 
#Start simulation
vsim  -novopt work.pll_module_tb
 
#add wave
add wave -hex /*
 
run 500000000

详细介绍点击此处
   modelsim_run.bat文件内容如下,

modelsim -do sim.do

   modelsim文件夹图示,

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第25张图片

第五步: 设置系统环境变量,在path中添加D:\modelsim10\win64。最好在个人环境变量中也添加。

如何在ModelsimSE中使用do文件仿真QuartusII IP核_第26张图片

第六步: 体验一下do文件仿真所用的时间,双击“modelsim_run.bat”,即可运行仿真。仿真图如下。

  特此声明:此博客目的是总结各位大佬的文章,内容相对全面。如果对您有帮助,那在好不过了。若有错误,请批评指正。

参考文档:https://blog.csdn.net/lg2lh/article/details/51213440
     https://blog.csdn.net/ruby97/article/details/7345173
     https://www.cnblogs.com/tony1224/archive/2012/02/28/2371530.html
     https://blog.csdn.net/lg2lh/article/details/51176467

   

你可能感兴趣的:(如何在ModelsimSE中使用do文件仿真QuartusII IP核)