Modelsim仿真NCOip核

        使用Quartus对NCOip核心进行设计,用modelsim对设计的模型进行仿真验证,Quartus版本是13.1。

        打开NCOip核,对其进行设置,设置界面如下。

        左边一栏是NCO的实现方式,中间一栏是输出的精度参数,分别是相位增量精度、相位精度和幅度精度,右边一栏是相位抖动,下面一栏是输入的时钟频率和输出信号的频率,由此可得到相位增量值以及实际输出信号的频率值,实际输出信号由下式决定:

        设置完ip核之后,点击Generate生成。注意,若生成界面卡住不动,需要打开任务管理器关掉quartus_map.exe,之后便可成功生成ip核。

module NCO_test
(
	input	clk,
	input	n_rst,
	
	output   [17:0] signal
);

NCOip NCOip_inst(
	.phi_inc_i('d257698038),
	.clk(clk),
	.reset_n(n_rst),
	.clken(1'b1),
	.fsin_o(signal),
	.fcos_o(),
	.out_valid());


endmodule  

        对编写的模块进行仿真验证,系统时钟采用50MHz,测试代码如下:

`timescale 1ns/1ns
module tb_NCO_test
();
reg clk;
reg n_rst;
wire [17:0]signal;

initial 
	begin
		clk<=1'b1;
		n_rst<=1'b0;
		#40 
		n_rst<=1'b1;
		#15
		n_rst<=1'b0;
		#25
		n_rst<=1'b1;
	end
	
always #10  clk=~clk;
NCO_test NCO_test_inst
(
	.clk(clk),
	.n_rst(n_rst),
	
	.signal(signal)
);

endmodule 

         编译完成之后,启动modelsim对编写的模块进行仿真,发现modelsim会报错:

 

         此时,先检查是否导入了相关的库文件。若没有,则点击Add导入。

 

         导入完之后编译,发现还是报错,此时对生成的ip核的.vo文件进行编译,我这里是NCO_test.vo:

        最后再对测试文件进行仿真:

 

        此时modelsim不再报错了。将待测信号导入,便可得到正弦信号,信号频率为2.94MHz左右,与设计值3MHz接近。

 

 

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值