介绍了13.1版本的quartus中的NCOip核的破解、使用和仿真功能

文章目录

前言一、quartus ip核二、 nco ip核的配置

1 ip核的配置2.代码编写3.联合仿真总结

前言

本文主要还介绍了13.1版本的quartus中的NCOip核的破解、使用仿真功能。适合正点原子开拓者等相同芯片系列产品的参考。

提示:以下是本篇文章正文内容,下面案例可供参考

一、quartus ip核

  使用nco ip核之前先要确认nco的ip核是否可用,可以通过quartus 的tool-license setup界面确认,可以正常使用的quartus如下:

使用nco、fft等ip核卡住的情况也是由于ip核没有购买导致,需要先得到许可,才可使用。

二、NCO ip核的使用

1. 首先调用NCO ip核

 创建一个新的ip核,名称命名为ip_nco

参数设置界面:(代码生成的是4.5khz,读者可自行修改输出频率,并在代码中修改,phi_inc_i)

执行栏,频率调制和相位调制取消勾选,输出数量选择1,最后一栏不需要修改,

 step2:两个都要勾选,语言注意是:verilog HDL,然后点击生成即可。

完成后可以看到file栏,存在ip_nco.qip文件,ip核栏也显示ip核,我们可以双击这个ip核来完成参数的修改并重新生成。

2.  nco的例化

代码如下:

module nco(

input sys_clk ,//系统时钟

input sys_rst_n ,//系统复位 低电平有效

output wire [9:0] sin1 ,//4.5khz正弦波

output sin1_vld //数据输出有效标志

);

wire [9:0] sin1_do;

assign sin1 = sin1_do;

ip_nco u_ip_nco

(

.clk ( sys_clk ),

.reset_n ( sys_rst_n ),

.clken ( 1'b1 ), //使能信号

.phi_inc_i ( 32'd386547 ), //相位累加器K值

.fsin_o ( sin1_do ),

.out_valid ( sin1_vld )

);

endmodule

仿真代码:

`timescale 1ns/1ns

module tb_nco();

reg sys_clk ;

reg sys_rst_n ;

wire [11:0] sin1 ;

wire sin1_vld ;

initial

begin

sys_clk = 1'b1;

sys_rst_n <= 1'b0;

#20

sys_rst_n <= 1'b1;

end

always #10 sys_clk = ~sys_clk;

nco nco_inst(

.sys_clk (sys_clk),

.sys_rst_n (sys_rst_n),

.sin1 (sin1) ,

.sin1_vld (sin1_vld)

);

endmodule

 注意:将代码文件添加到工程后要先编译,找到ip核目录下的.vo文件,并添加到工程中才能仿真成功。

 3、 联合仿真

RTL VIewer如下:

 modelsim:波形如下:

总结

机械自学转FPGA,后续还会讲一下nco配合fir滤波器的使用,希望大家点个赞,共同学习!

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: