modelsim环境下仿真altera NCO IP核

NCO IP核在FPGA设计中是常常用到的模块,对它的modelsim仿真也比较复杂,为此我曾花费很长时间研究。atom

现将仿真过程记录下来:spa

首先用quartus II软件创建一个工程,新建nco.bdf文件,而后点击tools->megawizard->nco,命名为nco1,进入配置界面,设计

在prameterize中配置以下图:接口


在bdf文件中添加模块,nco1以下图;ip


选择模块,点右键选择generate pins of symbol ports,自动生成输入输出接口,而后在seting对话框中EDA Tool Settings中simulation选项中tool name 选择Modelsimit

下面依次选 verilog HDL  output directory中选择 simulation/modelsim,最后全编译整个工程。io

写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));
endmoduletest

打开modeslim SE ,将路径改到simulation/modelsim下,编译.vo文件和nco_tb文件,注意IP核仿真要添加一些库文件,包括altera_primitives.v,器件库文件cycloneiii_atoms.vmodule

一块儿编译,而后在work库中选择nco_tb进行simulate

添加信号到波形文件,transcript对话框中输入run 10us; 测量输出信号波形周期为1000000ps,即为10MHz.