赞
踩
我把工程打包发出来了。
链接: sim_ip.
prj
为quartus工程sim
为modelsim仿真脚本以及tb文件。
先在prj里新建pll工程,然后调用pll
对应的IP核(这里过程略过,我将自己的IP核命名为pll
,存放在ip
文件夹中),完成之后进入PLL
的IP文件夹会生成一个pll_sim文件夹,在这里面在会有一个.vo文件,这个要拿出来与顶层一起编译。
需要用到的有rtl顶层例化和IP文件夹里的.vo文件
ip文件夹:
pll_sim文件夹:
我们在编译的时候需要编译这个文件夹中的pll.vo
。
我们使用的是modelsim,这个软件是mentor公司的,quartus在生成IP的时候会把各个仿真软件的脚本同时生成出来,也就是在mentor文件夹中的tcl脚本文件,我的工程生成的是msim_setup.tcl
module my_pll( input clk_50, input rst_n, output clk_100, output locked ); pll pll1( .locked (locked), .outclk_0 (clk_100) , .refclk (clk_50), .rst (rst_n) ); endmodule
主要文件如下:
如图主要有4个文件,sim.bat
是Windows脚本,用于启动modelsim的,sim.do
就是我们的modelsim脚本,tb_pll.v
就是测试文件,msim_setup.tcl
为前面所说的quartus生成的用于modelsim的脚本文件。
modelsim -do sim.do
`timescale 1ns/1ps module tb_pll(); reg clk_50; reg rst_n; wire clk_100; wire locked; my_pll pll0( .clk_50 (clk_50), .rst_n (rst_n), . clk_100 ( clk_100), .locked (locked) ); always begin #3 clk_50 = 1; #3 clk_50 = 0; end initial begin rst_n = 1; #10 rst_n = 0; #10 #1000 $stop; end endmodule
transcript on if {[file exists dyq_work]} { vdel -lib dyq_work -all } #编译quartus器件库 do msim_setup.tcl dev_com #在sim下新建自己的库dyq_work vlib dyq_work vmap work dyq_work #编译源代码,对于IP核部分,要编译前面说的vo文件,而不是v文件 vlog ../prj/ip/pll_sim/pll.vo vlog ../prj/rtl/*.v vlog ../sim/*.v #这里设置仿真精度,-L是映射库 vsim -t 1ps -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L cyclonev_ver -L cyclonev_hssi_ver -L cyclonev_pcie_hip_ver -L dyq_work -L work -voptargs="+acc" tb_pll #添加波形 add wave * view structure view signals run -all
以上完成之后双击bat文件就可以直接打开modelsim进行仿真了。如果启动不了,那就是环境变量没有配置好。
编译完后的sim文件夹:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。