包本剛 鄧長吉 梁曉琳
基于VHDL的直接數字頻率合成器的模塊化設計及實現
包本剛1鄧長吉2梁曉琳1
(1.湖南科技學院 智能制造學院,湖南 永州 425199;2.祁陽縣肖家鎮中學,湖南 祁陽 426131)
直接數字頻率合成器(Direct Digital Frequency Synthesizer,DDFS)是一種全數字頻率合成器件。本文介紹DDFS的工作原理及技術方案的VHDL實現,給出了基于Altera公司的FLEX 10K系列FPGA芯片完成DDFS系統的具體設計方案及實現方法。各個模塊電路均采用硬件描述語言(VHDL)進行描述,給出了模塊設計方案和仿真圖。仿真結果表明:該設計波形仿真良好,具有很好的應用價值,且可移植性強,可應用于各種數字系統。
DDFS;FPGA;VHDL;數字調制;可移植性
頻率合成器在電子對抗、數字通信系具有廣泛的應用[1]。高性能的DDFS芯片不斷推出,如Qualcomm推出的Q2368,美國AD公司推出的AD9853等產品[2]。但是專用DDFS芯片控制方式固定,并不適合所有用戶的需求,而利用FPGA可編程芯片來設計則可以根據用戶需要方便地實現各種比較復雜的調相、調幅和調頻功能,具有良好的實用價值和可移植性[3]。采用VHDL語言強大的自頂向下的設計功能,可以非常方便地進行DDFS的模塊化設計,并且具有很好的修改性和可移植性。本文提出一種基于FPGA和VHDL的DDFS設計方案,FPGA部分主要包括頻率字模塊、相位字模塊、相位累加器模塊、相位調制器模塊、ROM表模塊、D/A控制器模塊,只需控制ROM查找表經DAC連續輸出,然后經低通濾波器便可得到所需的信號。
一個單頻信號可表示為

其中:fo為信號的輸出頻率,0為初始相位。對式(1)進行離散化處理,根據采樣定理,fo為

其中:c為時鐘頻率;為δ的倍數,為π的分段倍率,和都是正整數,K的最大值小于M的1/2。
把式(2)和0=0代入式(1)中,式(1)初始相位為0的模擬信號為

綜上所述,當采樣頻率一定時,可以通過控制兩次采樣之間的相位增量來控制所得離散序列的頻率,而這個相位增量不大于π,然后保持,濾波之后可唯一地恢復出此頻率的模擬信號[3-5]。DDFS技術是一種把一系列數字形式的信號通過DAC轉換成模擬信號的合成技術,一般是利用高速存儲器做一個查找表,然后通過高速DAC輸出以數字形式存入的波形[6]。基本的DDFS電路包括基準時鐘、D/A轉換器等。DDFS電路的基本原理框圖如圖1所示。
其中:為累加器的位數;為存儲數字信號的位數;()為離散的波形輸出函數;()為實際的波形輸出函數;頻率預置與調節電路中的不變量被稱為相量增量,或者稱為頻率控制字。
當時鐘脈沖每觸發一次,相位累加器將頻率控制字與相位寄存器輸出的累加相位數據相加,把相加后的結果送至相位寄存器的輸入端保存[3]。與此同時,相位寄存器會將在上一個時鐘周期作用后所產生的新的相位數據反饋到加法器的輸入端,在下一時鐘到來時,加法器會不斷地與頻率控制字相加;并將這個值作為取樣地址值送入波形存貯器中的波形查找表,波形查找表根據這個地址值輸出相應的波形數據。波形數據會經DAC轉換和低通濾波器將數字信號轉換成所需要的模擬波形信號。相位累加器在基準時鐘的作用下,進行線性相位累加,當相位累加器累加滿量程時就會產生一次溢出,這樣就完成了一個周期的波形輸出,也就是DDFS合成信號的一個頻率周期[7]。
本文完成一個頻率和相位均可調節的具有余弦或正弦波形輸出的DDFS,相位和頻率值的預置與調節可以由鍵盤控制。DDFS設計總體框圖如圖2所示,累加器的字長為16 bit,波形存儲器的地址長度為8 bit,波形存儲器輸出的幅值位數為8 bit,DAC選用常用的DAC0832,低通濾波器(LPF)采用壓控電壓源二階低通濾波器,并且頻率和相位值各由6 bit數碼管顯示。基準時鐘取1MHz(主要是根據DAC的采樣頻率確定),c為1MHz,頻率分辨率為1kHz,相位分辨率為0.36°[3,8-9,10]。
本文采用Altera 公司的QuartusⅡ10.0軟件進行設計,采用VHDL編寫。在DDFS設計中最基本的模塊是波形存儲器和相位累加器。為了實現相位調制的功能,在波形存儲器前面加了一個相位調制器。整個基于FPGA的DDFS系統的程序是根據圖2給出的DDFS設計總體框圖進行設計。

圖2 DDFS設計總體框圖
輸出頻率o=c/2。當=1時,電路輸出最低頻率為c/2N,而DDFS的最大輸出頻率由奈奎斯特定理決定,即fc/2,也就是說的最大值為2N?1。因此,只要足夠大,DDFS可以得到足夠細的頻率間隔[10]。因此想要改變DDFS的輸出頻率,只要改變頻率控制字即可。在本文中,相位的調節與頻率的預置都是通過外部設備進行輸入,并且采用了延時模塊進行延時檢測;因為外部設備輸入的頻率值與相位值是不能直接被檢測到的,所以本文設計了按鍵輸入模塊來把輸入的頻率值與相位值轉化成累加器需要的值和相位增量。把要顯示的相位值和頻率值以BCD碼的形式進行存儲,提供給數碼管顯示電路,便于進行譯碼和動態掃描。
本模塊為頻率字輸入模塊,DDFS頻率字模塊的VHDL電路元件圖和信號仿真圖分別如圖3(a)和(b)所示。輸入“頻率字”(圖3(a)中的“FREQWORD[31..0]”)與輸出“同步頻率字”(圖3(a)中的“SYNCFREQ[31..0]”)的字長=32。圖3(a)中的“FWWRN”控制頻率字寫入,并把頻率字加載到寄存器中,提供給相位累加器。

圖3 頻率字模塊的VHDL電路元件圖和信號仿真圖
本模塊為相位字模塊。輸入相位字與輸出同步相位字的字長N=8。DDFS相位字模塊的VHDL電路元件圖和信號仿真圖分別如圖4(a)和(b)所示。圖4(a)中的“PWWRN”來控制相位字寫入,并把相位字加載到寄存器中,提供給相位調制器。

圖4 相位字模塊的VHDL電路元件圖和信號仿真圖
相位累加器為整個DDFS系統的核心。相位累加器模塊的VHDL電路元件圖和信號仿真圖分別如圖5(a)和(b)所示。輸入為同步頻率字,其字長=32,實現相位的累加功能。輸出為8 bit量化相位值。

圖5 相位累加器模塊的VHDL電路元件圖和信號仿真圖
本模塊為相位調制器模塊。相位調制器模塊的VHDL電路元件圖和信號仿真圖分別如圖6(a)和(b)所示。輸入為“同步相位字”(圖6(a)中的“SYNCPHSWD[7..0]”)和8 bit量化“相位值”(圖6(a)中的“PHASE[7..0]”)。輸出為8 bit已調相位,實現對相位的數字調制功能。

圖6 相位調制器模塊的VHDL電路元件圖和信號仿真圖
ROM表模塊的VHDL電路元件圖和信號仿真圖分別如圖7(a)和(b)所示。假設ROM表中存放地址為0~63,數據為0~127。因此ROM的輸入地址寬度為6 bit,相位調制器輸出的數據通過邏輯運算便可以得到ROM表的地址;ROM表輸出數據寬度為7 bit[11]。其表數據存放在ncosin.mif文件中。

圖7 ROM表模塊的VHDL電路元件圖和信號仿真圖
波形存儲器模塊,即正弦ROM查找表。這個模塊需要把存儲在相位累加器中的抽樣值轉換成正弦波幅度的數字量函數[12],可理解為相位到幅度的轉換。波形存儲器模塊的VHDL電路元件圖和信號仿真圖分別如圖8(a)和(b)所示。它的輸入是“相位調制器”(圖8(a)中“MODPHASE[7..0]”)中輸出的高8 bit值,并將其作為正弦ROM查找表的地址碼;查找表通過輸入的地址相位信息得到相應的正弦波幅值信號;并通過“輸出端口”(圖8(a)中“NCOOUT[7..0]”)送往DAC,轉化為模擬信號。

圖8 波形存儲器模塊的VHDL電路元件圖和信號仿真圖
本模塊為DDFS的主模塊,也是整個設計的頂層模塊。DDFS信號源的底層模塊采用VHDL語言進行設計描述,其頂層設計不但可以采用硬件電路圖的形式進行描述,也可以采用VHDL描述。DDFS主模塊的VHDL電路元件圖如圖9所示,DDFS主模塊的時序仿真圖和輸出波形仿真圖分別如圖10(a)和(b)所示。圖9中“NCOOUT[7..0]”為8 bit正弦波輸出。圖9中的“SYSCLK”為系統時鐘信號輸入,圖9中的“RESETN”為系統復位信號,圖9中的“FREQWORD[31..0]”為頻率控制字輸入,圖9中的“FWWRN”為控制頻率控制字寫入脈沖輸入,圖9中的“PHASEWORD[7..0]”為相位控制字輸入,圖9中的“PWWRN”為控制相位控制字寫入脈沖輸入。圖9中的“MCOS”“MSIN”是經相位調制器后的分別輸出余弦信號和正弦信號的位置符號,圖9中的“COS”“SIN”端口表示經相位累加器后分別輸出余弦和正弦信號的位置符號。

圖9 DDFS主模塊的VHDL電路元件圖

圖10 DDFS主模塊的時序仿真圖和輸出波形仿真圖
本文采用規模大、功能強、處理速度快的FPGA芯片,利用VHDL自頂向下的設計方法設計了基于DDFS原理的數字頻率合成器,實現了對波形頻率、幅度、相位的連續可調。經測試,各項指標達到設計要求,實現了頻率轉換時間短、頻譜純度高、頻率轉換時相位連續。本文的成果可以應用于通信、電子及微波等領域。
[1]李永杰.高速直接數字頻率合成器數字單元的設計與實現[D].成都:電子科技大學,2019.
[2]馬文杰.基于DDS技術的程控信號發生器的研究[D].南京:南京林業大學,2009.
[3]蘇健民,付金霞,劉嘉新.基于FPGA的直接數字頻率合成器設計[J].自動化技術與應用,2006,25(8):29-31,40.
[4]祁艷杰,劉章發.基于Parallel_CORDIC的高精度高速度直接數字頻率合成器的FPGA實現[J].電子學報,2014,42(7): 1392-1397.
[5]鄭浩,饒遠.直接數字頻率合成器的FPGA設計與實現[J].計算機與網絡,2012,38(22):66-68.
[6]李朋飛,王勇,黃秋蘭.基于DDS的任意波信號發生器設計[J].現代電子技術,2012,35(17):72-74.
[7]常紅霞,陳初俠,周平.基于FPGA的直接數字頻率合成器的設計[J].皖西學院學報,2011,27(2):82-84.
[8]李智華,周峰,張帥.基于Multisim的直接數字頻率合成器的設計與仿真[J].電力學報,2012,27(1):23-26.
[9]宋學良,郭裕順.基于分段多項式的直接數字頻率合成器設計[J].機電工程,2011,28(9):1113-1116.
[10]朱鈺鏵.基于FPGA的直接數字頻率合成器的設計實現[J].安慶師范學院學報(自然科學版),2004,10(3):29-31,41.
[11]井新宇.基于CPU和FPGA/CPLD結構設計電子系統[J].電子工程師,2004,30(8):21-24,39.
[12]王磊.基于軟件無線電的DS/FH混合擴頻通信系統的研究[D].西安:西北工業大學,2003.
TN74
A
1673-2219(2021)03-0015-05
2021-04-09
湖南省普通高校教學改革項目(湘教通〔2018〕436號No.688);2020年度湖南省自然科學基金項目資助(項目編號2020JJ4322)。
包本剛(1976-),男,湖南永州人,碩士,副教授,研究方向為集成電子電路設計與測試。
(責任編校:宮彥軍)