數控振蕩器(NCO)是Altera提供的可以方便的生成離散正弦(余弦)波形的IP核,在多個場景中有著重要的應用。但由于內部結構復雜,接口過多,數據手冊難以讀懂,給初學者帶來了一定的困擾。今天,我來詳細說明一下NCO這個看似復雜,其實很簡單的IP核。
NCO核配置界面
打開IP核配置界面1:
左邊一欄是NCO的實現方式選擇,共有四種,依據不同的設計要求選擇合適的實現結構。一般選擇large rom,雖然占用大量邏輯資源,但可以得到非常高速的正弦波。利用cordic算法可以得到高精度的正弦波形。
中間一欄是相位累加器精度、相位精度、幅度精度,右上角是相位抖動
下面一欄是設計的工作時鐘頻率,輸出頻率,并且由這兩個值計算出的相位增量和實際輸出頻率。注意:在這里設置的輸出頻率,只是一個期望值,并沒有任何實際意義,NCO輸出的正弦波由以下公式決定:
Paste_Image.png
可選的相位調制輸入和頻率調制輸入在第二頁(一般不用選擇),在這里還可以設置流水級,加快運算速度。 并且可以選擇雙相輸出,還是只輸出正弦波。更復雜的多個NCO通道調用這里就不在敘述了。
Paste_Image.png
經過以上分析,我們已經可以知道,其實影響NCO產生的正弦波頻率的決定性因素是工作時鐘和相位累加器的值,在實際應用中,我們可以通過改變相位累加器的值來改變輸出的正弦波頻率。
最后貼上接口一覽圖,具體利用NCO和高速DA產生正交載波信號的示例我會抽時間再寫。
NCO IP核的接口信號說明