数控振荡器(NCO)是Altera提供的可以方便的生成离散正弦(余弦)波形的IP核,在多个场景中有着重要的应用。但由于内部结构复杂,接口过多,数据手册难以读懂,给初学者带来了一定的困扰。今天,我来详细说明一下NCO这个看似复杂,其实很简单的IP核。
打开IP核配置界面1:
左边一栏是NCO的实现方式选择,共有四种,依据不同的设计要求选择合适的实现结构。一般选择large rom,虽然占用大量逻辑资源,但可以得到非常高速的正弦波。利用cordic算法可以得到高精度的正弦波形。
中间一栏是相位累加器精度、相位精度、幅度精度,右上角是相位抖动
下面一栏是设计的工作时钟频率,输出频率,并且由这两个值计算出的相位增量和实际输出频率。注意:在这里设置的输出频率,只是一个期望值,并没有任何实际意义,NCO输出的正弦波由以下公式决定:
可选的相位调制输入和频率调制输入在第二页(一般不用选择),在这里还可以设置流水级,加快运算速度。 并且可以选择双相输出,还是只输出正弦波。更复杂的多个NCO通道调用这里就不在叙述了。
经过以上分析,我们已经可以知道,其实影响NCO产生的正弦波频率的决定性因素是工作时钟和相位累加器的值,在实际应用中,我们可以通过改变相位累加器的值来改变输出的正弦波频率。
最后贴上接口一览图,具体利用NCO和高速DA产生正交载波信号的示例我会抽时间再写。