数控振荡器(NCO)

数控振荡器(NCO)数控振荡器是用于数字信号处理中生成所需频率信号的关键部分

大家好,欢迎来到IT知识分享网。

在数字信号处理领域,数控振荡常被用于DDC(数字下变频)和DUC(数字下变频)中产生所需频率信号。关于DDC和DUC的部分后面再整理(也可参考该网址:数字下变频(DDC)和数字上变频(DUC)_ddc duc-CSDN博客),下面主要从以下几个方面整理笔记:

1 模块结构

NCO在DDC或者DUC中的位置如下图所示,用于产生所需频率信号,然后再通过滤波器选择最终所需的频率信号,如果滤波器为低通滤波器,则对应的DDC,如果滤波器为高通滤波器,则对应的DUC:

数控振荡器(NCO)

关于NCO的结构主要包括相位累加器和正弦波存储ROM,其框图如下紫色框所示,黄色框为相位累加器,红色为存储正弦波形数据。

数控振荡器(NCO)

2 实现原理

先说结论:生成的特定频率信号为上图中的y信号,该y信号的频率为f1,f1和系统频率f0、频率控制字M以及DFF的位宽N bit之间的关系如下:

f_{1}=\frac{Mf_{0}}{2^{N}}

ROM里存储的是正弦波一个周期的数值,其存放地址对应的数值是和相位值相符的正弦波值,比如0地址存放的是相位为0的正弦波值。而ROM存放的数据个数由DFF的数据位宽N决定,即DFF的输出数据即是ROM的地址(这里考虑的是存储的整个正弦波周期的数据,一个地址存储一个正弦波数据,未考虑数据的对称性等因素)。

频率控制字M是一个可配置的参数,它的位宽为N bit,具体配置参数可根据系统时钟和所需输出信号频率决定。M决定了相位累加器的步进值,即一个周期对应2\pi相位,被分成了2^{N}份,如果M=1,则相位累加器的步进值为\frac{2\pi }{2^{N}},即对应一个ROM的地址空间。如果M=2,则相位累加器的步进值为2\frac{2\pi }{2^{N}},即ROM的地址空间每次增加2.

输出信号y的频率f1的理解:系统时钟为T0,若M=1,则需要2^{N}个系统时钟周期y才能完成一个周期;如果M=2,则需要\frac{2^{N}}{2}个系统时钟周期y才能完成一个周期,即T_{1}=\frac{2^{N}}{M}T_{0},即f_{1}=\frac{Mf_{0}}{2^{N}}

3 其他关注点

NCO的工作原理捋清楚后,剩下的就是具体的硬件设计。设计时需要从芯片的PPA(performance、power、area)三个方面考虑。在NCO的设计中主要考虑的点需要从功耗(power)和面积(area)出发,下面列出三个点:

(1)ROM的设计

由于正弦波在四个现象具有对称性,所以在存储正弦波数值时可以不用把全周期的数值都存下,从功耗和面积考虑,只需存下半个周期或者甚至四分之一个周期的数值。

(2)频率字M的设计

频率控制字M是由寄存器配置好的,因此从功耗考虑,可以采用clock_gate将不需要配置时把时钟关掉。

4 参考资料

mt-085_cn.pdf (analog.com)

数控振荡器原理及实现-原理 – Vinson88 – 博客园 (cnblogs.com)

通信原理及系统系列37——FPGA实现NCO原理分析-CSDN博客

笔记就暂时整理到此,如有新内容会及时更新,如有错误欢迎指出。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/148504.html

(0)
上一篇 2025-03-30 17:26
下一篇 2025-03-30 17:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信