使用Quartus 18.0 的NCO ip核产生一个正弦信号
NCO ip核的参数设置
.v文件的内容
module nco_test(clk,reset_n,clken,phi_inc_i,fsin_o,out_valid);
input clk;
input reset_n;
input clken;
input [15:0] phi_inc_i;
output [9:0] fsin_o;
output out_valid;
nco_ip u1(
.clk(clk), // clk.clk
.reset_n (reset_n), // rst.reset_n
.clken (clken), // in.clken
.phi_inc_i (phi_inc_i), // .phi_inc_i
.fsin_o (fsin_o), // out.fsin_o
.out_valid (out_valid) // .out_valid
);
endmodule
测试文件的内容
`timescale 1ns/1ns
module nco_test_tb();
reg clk;
reg reset_n;
reg clken;
reg [15:0] phi_inc_i;
wire [9:0] fsin_o;
wire out_valid;
nco_test nco_test_1(
.clk(clk),
.reset_n(reset_n),
.clken(clken),
.phi_inc_i(phi_inc_i),
.fsin_o(fsin_o),
.out_valid(out_valid)
);
initial begin
begin
clk = 0;
phi_inc_i = 16'd1311;
reset_n = 0;
clken = 1;
#10 reset_n = 1;
end
end
always #10 clk = ~clk;
endmodule
仿真
仿真的方法有两种一种是在modelsim中建一个工程,因为这个涉及到了altera的IP核,所以还像以前那样建工程仿真就会比较麻烦,今天找到了一种简便的方法,就是quartus对工程综合以后会在工程目录下产生一个simulation的文件夹,在这个文件夹下有一个 工程名.vo文件,在modelsim下建立一个工程 工程中只需要放两个文件,一个是之前的测试文件,还有一个就是综合之后生成的 .vo文件,然后正常编译,仿真,就可以得到仿真结果。
还有一种仿真的方法是直接使用quartus软件调用modelsim进行仿真,但是在最开始使用这种方法的时候出现了一种问题,如下所示:
显示的是一系列asj文件没有定义,这里的解决办法是将下图所示的sip
文件导入到工程中去,如下图所示:
这样在使用quartus 调用 modelsim IP核就会成功,下图为直接使用quartus调用modelsim仿真的结果:
想要生成.sip文件需要做的是在下面这个界面的时候全选