NCO IP核在FPGA设计中是经常用到的模块,对它的modelsim仿真也比较复杂,为此我曾花费很长时间研究。
现将仿真过程记录下来:
首先用quartus II软件建立一个工程,新建nco.bdf文件,然后点击tools->megawizard->nco,命名为nco1,进入配置界面,
在prameterize中配置如下图:
在bdf文件中添加模块,nco1如下图;
选择模块,点右键选择generate pins of symbol ports,自动生成输入输出接口,然后在seting对话框中EDA Tool Settings中simulation选项中tool name 选择Modelsim
下面依次选 verilog HDL output directory中选择 simulation/modelsim,最后全编译整个工程。
写testbench代码如下:
`timescale 1ns/1ns
module nco_tb();
reg clk,reset_n,clken;
reg[31:0]phi_inc_i;
wire [15:0]fsin_o,fcos_o;
wire out_valid;
initial
begin
clk=0;
phi_inc_i=32'd42949673;
reset_n=0;
clken=1;
# 10 reset_n=1;
end
always #5 clk=~clk;
nco i1(.clk(clk),
.clken(clken),
.fcos_o(fcos_o),
.fsin_o(fsin_o),
.out_valid(out_valid),
.phi_inc_i(phi_inc_i),
.reset_n(reset_n));
endmodule
打开modeslim SE ,将路径改到simulation/modelsim下,编译.vo文件和nco_tb文件,注意IP核仿真要添加一些库文件,包括altera_primitives.v,器件库文件cycloneiii_atoms.v
一起编译,然后在work库中选择nco_tb进行simulate
添加信号到波形文件,transcript对话框中输入run 10us; 测量输出信号波形周期为1000000ps,即为10MHz.