包本剛 鄧長(zhǎng)吉 梁曉琳
基于VHDL的直接數(shù)字頻率合成器的模塊化設(shè)計(jì)及實(shí)現(xiàn)
包本剛1鄧長(zhǎng)吉2梁曉琳1
(1.湖南科技學(xué)院 智能制造學(xué)院,湖南 永州 425199;2.祁陽縣肖家鎮(zhèn)中學(xué),湖南 祁陽 426131)
直接數(shù)字頻率合成器(Direct Digital Frequency Synthesizer,DDFS)是一種全數(shù)字頻率合成器件。本文介紹DDFS的工作原理及技術(shù)方案的VHDL實(shí)現(xiàn),給出了基于Altera公司的FLEX 10K系列FPGA芯片完成DDFS系統(tǒng)的具體設(shè)計(jì)方案及實(shí)現(xiàn)方法。各個(gè)模塊電路均采用硬件描述語言(VHDL)進(jìn)行描述,給出了模塊設(shè)計(jì)方案和仿真圖。仿真結(jié)果表明:該設(shè)計(jì)波形仿真良好,具有很好的應(yīng)用價(jià)值,且可移植性強(qiáng),可應(yīng)用于各種數(shù)字系統(tǒng)。
DDFS;FPGA;VHDL;數(shù)字調(diào)制;可移植性
頻率合成器在電子對(duì)抗、數(shù)字通信系具有廣泛的應(yīng)用[1]。高性能的DDFS芯片不斷推出,如Qualcomm推出的Q2368,美國(guó)AD公司推出的AD9853等產(chǎn)品[2]。但是專用DDFS芯片控制方式固定,并不適合所有用戶的需求,而利用FPGA可編程芯片來設(shè)計(jì)則可以根據(jù)用戶需要方便地實(shí)現(xiàn)各種比較復(fù)雜的調(diào)相、調(diào)幅和調(diào)頻功能,具有良好的實(shí)用價(jià)值和可移植性[3]。采用VHDL語言強(qiáng)大的自頂向下的設(shè)計(jì)功能,可以非常方便地進(jìn)行DDFS的模塊化設(shè)計(jì),并且具有很好的修改性和可移植性。本文提出一種基于FPGA和VHDL的DDFS設(shè)計(jì)方案,F(xiàn)PGA部分主要包括頻率字模塊、相位字模塊、相位累加器模塊、相位調(diào)制器模塊、ROM表模塊、D/A控制器模塊,只需控制ROM查找表經(jīng)DAC連續(xù)輸出,然后經(jīng)低通濾波器便可得到所需的信號(hào)。
一個(gè)單頻信號(hào)可表示為
其中:fo為信號(hào)的輸出頻率,0為初始相位。對(duì)式(1)進(jìn)行離散化處理,根據(jù)采樣定理,fo為
其中:c為時(shí)鐘頻率;為δ的倍數(shù),為π的分段倍率,和都是正整數(shù),K的最大值小于M的1/2。
把式(2)和0=0代入式(1)中,式(1)初始相位為0的模擬信號(hào)為
綜上所述,當(dāng)采樣頻率一定時(shí),可以通過控制兩次采樣之間的相位增量來控制所得離散序列的頻率,而這個(gè)相位增量不大于π,然后保持,濾波之后可唯一地恢復(fù)出此頻率的模擬信號(hào)[3-5]。DDFS技術(shù)是一種把一系列數(shù)字形式的信號(hào)通過DAC轉(zhuǎn)換成模擬信號(hào)的合成技術(shù),一般是利用高速存儲(chǔ)器做一個(gè)查找表,然后通過高速DAC輸出以數(shù)字形式存入的波形[6]?;镜腄DFS電路包括基準(zhǔn)時(shí)鐘、D/A轉(zhuǎn)換器等。DDFS電路的基本原理框圖如圖1所示。
其中:為累加器的位數(shù);為存儲(chǔ)數(shù)字信號(hào)的位數(shù);()為離散的波形輸出函數(shù);()為實(shí)際的波形輸出函數(shù);頻率預(yù)置與調(diào)節(jié)電路中的不變量被稱為相量增量,或者稱為頻率控制字。
當(dāng)時(shí)鐘脈沖每觸發(fā)一次,相位累加器將頻率控制字與相位寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果送至相位寄存器的輸入端保存[3]。與此同時(shí),相位寄存器會(huì)將在上一個(gè)時(shí)鐘周期作用后所產(chǎn)生的新的相位數(shù)據(jù)反饋到加法器的輸入端,在下一時(shí)鐘到來時(shí),加法器會(huì)不斷地與頻率控制字相加;并將這個(gè)值作為取樣地址值送入波形存貯器中的波形查找表,波形查找表根據(jù)這個(gè)地址值輸出相應(yīng)的波形數(shù)據(jù)。波形數(shù)據(jù)會(huì)經(jīng)DAC轉(zhuǎn)換和低通濾波器將數(shù)字信號(hào)轉(zhuǎn)換成所需要的模擬波形信號(hào)。相位累加器在基準(zhǔn)時(shí)鐘的作用下,進(jìn)行線性相位累加,當(dāng)相位累加器累加滿量程時(shí)就會(huì)產(chǎn)生一次溢出,這樣就完成了一個(gè)周期的波形輸出,也就是DDFS合成信號(hào)的一個(gè)頻率周期[7]。
本文完成一個(gè)頻率和相位均可調(diào)節(jié)的具有余弦或正弦波形輸出的DDFS,相位和頻率值的預(yù)置與調(diào)節(jié)可以由鍵盤控制。DDFS設(shè)計(jì)總體框圖如圖2所示,累加器的字長(zhǎng)為16 bit,波形存儲(chǔ)器的地址長(zhǎng)度為8 bit,波形存儲(chǔ)器輸出的幅值位數(shù)為8 bit,DAC選用常用的DAC0832,低通濾波器(LPF)采用壓控電壓源二階低通濾波器,并且頻率和相位值各由6 bit數(shù)碼管顯示。基準(zhǔn)時(shí)鐘取1MHz(主要是根據(jù)DAC的采樣頻率確定),c為1MHz,頻率分辨率為1kHz,相位分辨率為0.36°[3,8-9,10]。
本文采用Altera 公司的QuartusⅡ10.0軟件進(jìn)行設(shè)計(jì),采用VHDL編寫。在DDFS設(shè)計(jì)中最基本的模塊是波形存儲(chǔ)器和相位累加器。為了實(shí)現(xiàn)相位調(diào)制的功能,在波形存儲(chǔ)器前面加了一個(gè)相位調(diào)制器。整個(gè)基于FPGA的DDFS系統(tǒng)的程序是根據(jù)圖2給出的DDFS設(shè)計(jì)總體框圖進(jìn)行設(shè)計(jì)。
圖2 DDFS設(shè)計(jì)總體框圖
輸出頻率o=c/2。當(dāng)=1時(shí),電路輸出最低頻率為c/2N,而DDFS的最大輸出頻率由奈奎斯特定理決定,即fc/2,也就是說的最大值為2N?1。因此,只要足夠大,DDFS可以得到足夠細(xì)的頻率間隔[10]。因此想要改變DDFS的輸出頻率,只要改變頻率控制字即可。在本文中,相位的調(diào)節(jié)與頻率的預(yù)置都是通過外部設(shè)備進(jìn)行輸入,并且采用了延時(shí)模塊進(jìn)行延時(shí)檢測(cè);因?yàn)橥獠吭O(shè)備輸入的頻率值與相位值是不能直接被檢測(cè)到的,所以本文設(shè)計(jì)了按鍵輸入模塊來把輸入的頻率值與相位值轉(zhuǎn)化成累加器需要的值和相位增量。把要顯示的相位值和頻率值以BCD碼的形式進(jìn)行存儲(chǔ),提供給數(shù)碼管顯示電路,便于進(jìn)行譯碼和動(dòng)態(tài)掃描。
本模塊為頻率字輸入模塊,DDFS頻率字模塊的VHDL電路元件圖和信號(hào)仿真圖分別如圖3(a)和(b)所示。輸入“頻率字”(圖3(a)中的“FREQWORD[31..0]”)與輸出“同步頻率字”(圖3(a)中的“SYNCFREQ[31..0]”)的字長(zhǎng)=32。圖3(a)中的“FWWRN”控制頻率字寫入,并把頻率字加載到寄存器中,提供給相位累加器。
圖3 頻率字模塊的VHDL電路元件圖和信號(hào)仿真圖
本模塊為相位字模塊。輸入相位字與輸出同步相位字的字長(zhǎng)N=8。DDFS相位字模塊的VHDL電路元件圖和信號(hào)仿真圖分別如圖4(a)和(b)所示。圖4(a)中的“PWWRN”來控制相位字寫入,并把相位字加載到寄存器中,提供給相位調(diào)制器。
圖4 相位字模塊的VHDL電路元件圖和信號(hào)仿真圖
相位累加器為整個(gè)DDFS系統(tǒng)的核心。相位累加器模塊的VHDL電路元件圖和信號(hào)仿真圖分別如圖5(a)和(b)所示。輸入為同步頻率字,其字長(zhǎng)=32,實(shí)現(xiàn)相位的累加功能。輸出為8 bit量化相位值。
圖5 相位累加器模塊的VHDL電路元件圖和信號(hào)仿真圖
本模塊為相位調(diào)制器模塊。相位調(diào)制器模塊的VHDL電路元件圖和信號(hào)仿真圖分別如圖6(a)和(b)所示。輸入為“同步相位字”(圖6(a)中的“SYNCPHSWD[7..0]”)和8 bit量化“相位值”(圖6(a)中的“PHASE[7..0]”)。輸出為8 bit已調(diào)相位,實(shí)現(xiàn)對(duì)相位的數(shù)字調(diào)制功能。
圖6 相位調(diào)制器模塊的VHDL電路元件圖和信號(hào)仿真圖
ROM表模塊的VHDL電路元件圖和信號(hào)仿真圖分別如圖7(a)和(b)所示。假設(shè)ROM表中存放地址為0~63,數(shù)據(jù)為0~127。因此ROM的輸入地址寬度為6 bit,相位調(diào)制器輸出的數(shù)據(jù)通過邏輯運(yùn)算便可以得到ROM表的地址;ROM表輸出數(shù)據(jù)寬度為7 bit[11]。其表數(shù)據(jù)存放在ncosin.mif文件中。
圖7 ROM表模塊的VHDL電路元件圖和信號(hào)仿真圖
波形存儲(chǔ)器模塊,即正弦ROM查找表。這個(gè)模塊需要把存儲(chǔ)在相位累加器中的抽樣值轉(zhuǎn)換成正弦波幅度的數(shù)字量函數(shù)[12],可理解為相位到幅度的轉(zhuǎn)換。波形存儲(chǔ)器模塊的VHDL電路元件圖和信號(hào)仿真圖分別如圖8(a)和(b)所示。它的輸入是“相位調(diào)制器”(圖8(a)中“MODPHASE[7..0]”)中輸出的高8 bit值,并將其作為正弦ROM查找表的地址碼;查找表通過輸入的地址相位信息得到相應(yīng)的正弦波幅值信號(hào);并通過“輸出端口”(圖8(a)中“NCOOUT[7..0]”)送往DAC,轉(zhuǎn)化為模擬信號(hào)。
圖8 波形存儲(chǔ)器模塊的VHDL電路元件圖和信號(hào)仿真圖
本模塊為DDFS的主模塊,也是整個(gè)設(shè)計(jì)的頂層模塊。DDFS信號(hào)源的底層模塊采用VHDL語言進(jìn)行設(shè)計(jì)描述,其頂層設(shè)計(jì)不但可以采用硬件電路圖的形式進(jìn)行描述,也可以采用VHDL描述。DDFS主模塊的VHDL電路元件圖如圖9所示,DDFS主模塊的時(shí)序仿真圖和輸出波形仿真圖分別如圖10(a)和(b)所示。圖9中“NCOOUT[7..0]”為8 bit正弦波輸出。圖9中的“SYSCLK”為系統(tǒng)時(shí)鐘信號(hào)輸入,圖9中的“RESETN”為系統(tǒng)復(fù)位信號(hào),圖9中的“FREQWORD[31..0]”為頻率控制字輸入,圖9中的“FWWRN”為控制頻率控制字寫入脈沖輸入,圖9中的“PHASEWORD[7..0]”為相位控制字輸入,圖9中的“PWWRN”為控制相位控制字寫入脈沖輸入。圖9中的“MCOS”“MSIN”是經(jīng)相位調(diào)制器后的分別輸出余弦信號(hào)和正弦信號(hào)的位置符號(hào),圖9中的“COS”“SIN”端口表示經(jīng)相位累加器后分別輸出余弦和正弦信號(hào)的位置符號(hào)。
圖9 DDFS主模塊的VHDL電路元件圖
圖10 DDFS主模塊的時(shí)序仿真圖和輸出波形仿真圖
本文采用規(guī)模大、功能強(qiáng)、處理速度快的FPGA芯片,利用VHDL自頂向下的設(shè)計(jì)方法設(shè)計(jì)了基于DDFS原理的數(shù)字頻率合成器,實(shí)現(xiàn)了對(duì)波形頻率、幅度、相位的連續(xù)可調(diào)。經(jīng)測(cè)試,各項(xiàng)指標(biāo)達(dá)到設(shè)計(jì)要求,實(shí)現(xiàn)了頻率轉(zhuǎn)換時(shí)間短、頻譜純度高、頻率轉(zhuǎn)換時(shí)相位連續(xù)。本文的成果可以應(yīng)用于通信、電子及微波等領(lǐng)域。
[1]李永杰.高速直接數(shù)字頻率合成器數(shù)字單元的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2019.
[2]馬文杰.基于DDS技術(shù)的程控信號(hào)發(fā)生器的研究[D].南京:南京林業(yè)大學(xué),2009.
[3]蘇健民,付金霞,劉嘉新.基于FPGA的直接數(shù)字頻率合成器設(shè)計(jì)[J].自動(dòng)化技術(shù)與應(yīng)用,2006,25(8):29-31,40.
[4]祁艷杰,劉章發(fā).基于Parallel_CORDIC的高精度高速度直接數(shù)字頻率合成器的FPGA實(shí)現(xiàn)[J].電子學(xué)報(bào),2014,42(7): 1392-1397.
[5]鄭浩,饒遠(yuǎn).直接數(shù)字頻率合成器的FPGA設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與網(wǎng)絡(luò),2012,38(22):66-68.
[6]李朋飛,王勇,黃秋蘭.基于DDS的任意波信號(hào)發(fā)生器設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(17):72-74.
[7]常紅霞,陳初俠,周平.基于FPGA的直接數(shù)字頻率合成器的設(shè)計(jì)[J].皖西學(xué)院學(xué)報(bào),2011,27(2):82-84.
[8]李智華,周峰,張帥.基于Multisim的直接數(shù)字頻率合成器的設(shè)計(jì)與仿真[J].電力學(xué)報(bào),2012,27(1):23-26.
[9]宋學(xué)良,郭裕順.基于分段多項(xiàng)式的直接數(shù)字頻率合成器設(shè)計(jì)[J].機(jī)電工程,2011,28(9):1113-1116.
[10]朱鈺鏵.基于FPGA的直接數(shù)字頻率合成器的設(shè)計(jì)實(shí)現(xiàn)[J].安慶師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2004,10(3):29-31,41.
[11]井新宇.基于CPU和FPGA/CPLD結(jié)構(gòu)設(shè)計(jì)電子系統(tǒng)[J].電子工程師,2004,30(8):21-24,39.
[12]王磊.基于軟件無線電的DS/FH混合擴(kuò)頻通信系統(tǒng)的研究[D].西安:西北工業(yè)大學(xué),2003.
TN74
A
1673-2219(2021)03-0015-05
2021-04-09
湖南省普通高校教學(xué)改革項(xiàng)目(湘教通〔2018〕436號(hào)No.688);2020年度湖南省自然科學(xué)基金項(xiàng)目資助(項(xiàng)目編號(hào)2020JJ4322)。
包本剛(1976-),男,湖南永州人,碩士,副教授,研究方向?yàn)榧呻娮与娐吩O(shè)計(jì)與測(cè)試。
(責(zé)任編校:宮彥軍)