基于FPGA的直接數字頻率合成器的設計實(shí)現
具體工作過(guò)程如下:
每來(lái)一個(gè)時(shí)鐘脈沖,N位加法器將頻率控制數據X與累加寄存器輸出的累加相位數據相加,把相加后的結果 送至累加寄存器的輸入端。累加寄存器一方面將在上一時(shí)鐘周期作用后所產(chǎn)生的新的相位數據反饋到加法器的輸入端,以使加法器在下一時(shí)鐘的作用下繼續與頻率控制數據X相加;另一方面將這個(gè)值作為取樣地址值送入幅度/相位轉換電路(即圖1中的波形存儲器),幅度/相位轉換電路根據這個(gè)地址值輸出相應的波形數據。最后經(jīng)數/模轉換和低通濾波器將波形數據轉換成所需要的模擬波形。
相位累加器在基準時(shí)鐘的作用下,進(jìn)行線(xiàn)性相位累加,當相位累加器累加滿(mǎn)量時(shí)就會(huì )產(chǎn)生一次溢出,這樣就完成了一個(gè)周期,這個(gè)周期也就是DDS合成信號的一個(gè)頻率周期。
DDS輸出信號的頻率由式(1)給定:
=(X/Y)× (1)
例如,我們假定基準時(shí)鐘為70 MHz,累加器為16位,則:
Y=216= 65,536
=70MHz
再假定X=4096,則:
=4096/65,536×70
=4.375MHz
可見(jiàn),理論上通過(guò)設定DDS相位累加器位數頻率控制字X和基準時(shí)鐘的值,就可以產(chǎn)生任一頻率的輸出。而DDS的頻率分辨率定義為:
/ Y (2)
由于基準時(shí)鐘一般固定,因此相位累加器的位數就決定了頻率分辨率。比如上面的例子中,相位累加器為16位,那么頻率分辨率就可以認為是16位。位數越多,分辨率越高。
利用 FPGA(ACEX EP1K50)
設計DDS
在用FPGA設計DDS電路的時(shí)候,相位累加器是決定DDS性能的一個(gè)關(guān)鍵部分。小的累加器可以利用ACEX器件的進(jìn)位鏈得到快速、高效的電路結構。然而由于進(jìn)位鏈必須位于臨近的LAB(邏輯陣列塊)和LE(邏輯單元)內,因此長(cháng)的進(jìn)位鏈勢必會(huì )減少其它邏輯使用的布線(xiàn)資源,同時(shí)過(guò)長(cháng)的進(jìn)位鏈也會(huì )制約整個(gè)系統速度的提高。
另一種提高速度的辦法就是采用流水線(xiàn)技術(shù),即把在一個(gè)時(shí)鐘內要完成的邏輯操作分成幾步較小的操作,并插入幾個(gè)時(shí)鐘周期來(lái)提高系統的數據吞吐率。但是流水線(xiàn)技術(shù)比較適合開(kāi)環(huán)結構(open-loop)的電路,要用在累加器這樣的閉環(huán)反饋(close-loop feedback)的電路中必須謹慎考慮,以保證設計的準確無(wú)誤。
綜合考慮后,這一部分決定采用進(jìn)位鏈和流水線(xiàn)技術(shù)相結合的辦法,這樣既能保證較高的資源利用率,又能大幅提高系統的性能和速度。
評論