1. 首页
  2. EDA技术

Modelsim SE仿真Altera IP核( PLL)

ModelsimSE 10.5仿真教程”介绍了如何使用Modelsim SE进行仿真,其中待仿真的fifo模块是自己编写的verilog模块,但是在实际工作中,设计中会经常用到FPGA厂商提供的现成模块—IP核,这些模块看到不到源代码,只知道IP核的端口信息,当要仿真的时候,同样要向ModelsimSE提供这些IP核的信息,而FPGA厂商也会给我们提供相应的IP核的编译库文件,如果设计中包含这些IP核,就必须在仿真之前,将这些库文件编译到MoldelsimSE 的库中去。其实IP核只是要添加的其中一种库(MegaFunction),除此之外,还需要添加lpm库(设计中如果调用了lpm原件,需要添加此库),原语库(primitive),器件库(例如,cyclone),同一种库,还会分Verilog版和VHDL版。这里只介绍Verilog版相关库文件的添加,VHDL版的,方法类似,只需更换相应的VHDL编译文件即可。

一、建立IP仿真库

先将IP核等相关库文件编译到ModelsimSE中后,以后凡是设计中调用到IP核时,就不用再重复添加了。

下面开始准备添加相关库文件。

第一步,首先在新建一个文件夹,用来存放编译后的库文件,这里命名为altera_lib,这里存放到了“C:\modeltech64_10.5\”路径下,然后在altera_lib下新建四个文件夹lpm、altera_mf、altera_primitive、cyclone,后面会建立四个对应且相同名称的库。

第二步,建立库,以添加IP核库文件(altera_mf)为例进行介绍。首先打开Modelsim,选择菜单 File—>New—>Library。这里介绍一下“库”的概念,库实际就用来存放编译结果的一个文件夹,他最终都和硬盘上的物理空间的文件夹是一一对应的,例如,之前提到过工作库(work库),存放的是设计文件的编译结果。

第三步,弹出新建库的窗口,选择第三项“a new library and a logical mapping to it”,即创建一个新库,并映射到硬盘的相应路径下。Library Name填写相应的库名称“altera_mf”,Library Physical Name中填写第一步中新建库对应文件夹的存放路径。这里altera_mf对应文件夹路径为“C:\modeltech64_10.5\altera_lib\altera_mf”。然后点击确定。

第四步,在ModelsimSE的library窗口下,可以看到新建的altera_mf库,不过此时库文件为空的。

第五步,编译相应文件到库中,这里需要将相关IP核文件编译到altera_mf库中去。菜单栏选择compile—>compile…(如果ModelsimSE新建或打开了工程,此项为灰色),弹出如下窗口,首先选择待编译的库library,这里选择刚新建的库“altera_mf”,然后找到在quartus安装目录下,找到Altera提供的关于altera IP核的编译文件altera_mf.v,路径为“altera\13.1\quartus\eda\sim_lib”。最后点击compile,完成编译后,关闭。此时可以看到library窗口下,altera_mf库不再是一个空的库。

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

第七步,找到Modelsim安装路径下的modelsim.ini文件,去除文件的只读属性,然后打开, 将上一步中的四个库的名称及路径以下图的方式,添加到57行后。关闭文件,再设置为只读属性。注意路径是反斜杠(不是反斜杠也可以)。

至此,已经将altera相关的库文件添加到了ModelsimSE中了。

二、建立PLL IP核

PLL IP核的调用就不详细展开了,主要提一点,下图指明了仿真PLL IP核所需要的库,这个库已经在上面生成了。另外,如果进行后仿真的话,需要将Generate netlist打勾。

三、建立激励文件

这里直接调用了pll.v文件。

`timescale 1 ns/ 100 ps
module pll_tb();
// constants                                           

reg clk_25m;
wire clk_150m;

// assign statements (if any)                          
pll i1 (
// port map - connection between master ports and signals/registers   
	.inclk0(clk_25m),
	.c0(clk_150m));
//

initial begin
#0 clk_25m = 1'b0;
end

// 25MHz
always #20 clk_25m = ~clk_25m;

endmodule

四、仿真波形

仿真波形的大致步骤跟前一篇文章一样,建立库——>编译——>仿真。仿真这里需要说一下,因为采用了IP库,所以需要添加对应的库文件。具体步骤如下:

菜单simulate——>start simulation打开仿真设置:

添加PLL所对应的altera_mf库文件,也就是在第一节中添加的库文件。

一定要添加所用IP对应的库文件,否则,在仿真的时候会Instantiation of ‘xxx’ failed. The design unit was not found.的错误

仿真波形如下图所示,可以看出能够得出正确的波形。

扫码关注尚为网微信公众号

尚为网微信公众号
每天发布半导体汽车电子最新资讯和前沿技术,关注一波,没准就用上了。

原创文章,作者:sunev,如若转载,请注明出处:https://www.sunev.cn/eda/678.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注