前记:师夷长技以自强
1.基本概念
NCO: numerically controlled oscillators 数控振荡器,可以合成一个时间和只域上离散的正弦波,常作为通信系统的正弦载波发生器。
在Quartus II中,nco是以ip核的形式提供的,只需要简单配置几个参数即可。
2.使用简介
对于Quartus II 13.0版本,打开ip核的向导的方式是Tools->MegaWizard Plug-In Manager,然后搜索nco即可在DSP目录下找到,弹出的界面如下

其中只需三步即可完成nco的配置和生成,其中Step3只是一个生成命令,Step2是选择是否生成仿真模型和网标文件,Step1是配置参数的,下面主要说明Step1中的一些参数。

在产生波形的方案中有四种选择,Small ROM是只存储部分的正弦波形到rom中,Large Rom是存储完整的正弦表到rom中,CORDIC是一种直角坐标系下旋转的方法,Multiplier-Based是基于乘法器的方法。前面两个都是基于查找表的,后面两个都涉及数学运算。不同的波形产生方案所产生的波形的质量是不同的,它们的谐波分量可以在频率响应图谱中找到。
相位累加器精度和角度精度可以类比于DDS的框图,但是nco的框图毕竟不同,欲深究可以查看手册。还有nco默认采用100MHz的输入时钟,而系统的clk为50MHz,这里是采用片上PLL解决的,具体使用细节在下一篇文章中会介绍。

这个界面基本上是一些输入输出的控制,为了使频率和相位是可控的,需要勾选图中的两个复选框,并设置频率控制字和相位控制字的宽度。nco是可以多通道输出的,一般情况下使用单通道的正弦和余弦同时输出即可。

这个界面是fpga片上资源的使用情况,与第一个界面中选择的波形产生方案有关。
注:笔者在点击Step3时,在“Generating Megacore function top-level”这里卡了很久,经上网查询后得知需要在进程管理中杀掉quartus_map.exe进程,然后生成才能继续,也算是一个小插曲吧。
3.仿真
需要注意的是nco生成的目录应该工程文件所在的目录,否则仿真的时候会报找不到某些模块的错误。仿真的操作也很简单,只需添加nco_tb.v仿真文件即可。
在DDS中有一条公式
然而在nco中确是

这里,已经把nco_tb.b中的phi 修改为 32'b0。
本文详细介绍了在Quartus II中使用NCO(Numerically Controlled Oscillator)IP核的过程,包括配置参数、波形产生方案的选择、仿真步骤及注意事项。NCO在通信系统中用于正弦载波发生,Quartus II提供了多种波形产生方法,如基于ROM、CORDIC和乘法器等。
1万+

被折叠的 条评论
为什么被折叠?



