摘? 要: 對(duì)直接數(shù)字頻率合成器(DDS)中的相位幅度轉(zhuǎn)換模塊提出了一種基于分段非線性函數(shù)近似的的設(shè)計(jì)方法。這種方法取代了傳統(tǒng)的ROM查找表的方法,可以避免因采用大容量的ROM而帶來(lái)的成本高、功耗大、可靠性下降等缺點(diǎn)。此方法對(duì)正弦函數(shù)的第一象限進(jìn)行分段,在每一段內(nèi)用非線性函數(shù)近似,然后再根據(jù)正弦函數(shù)的對(duì)稱性質(zhì),重構(gòu)完整的正弦函數(shù)。此法可以獲得較好的壓縮效果,并且結(jié)構(gòu)簡(jiǎn)單,易于實(shí)現(xiàn)。
關(guān)鍵詞: 直接數(shù)字頻率合成(DDS);分段非線性函數(shù)近似;ROM容量
?
直接數(shù)字頻率合成(DDS)是第三代頻率合成技術(shù),具有頻率分辨率高、頻率切換時(shí)間短、相位變化連續(xù)、易于集成等優(yōu)點(diǎn),被廣泛地應(yīng)用在通信、雷達(dá)、儀器儀表等領(lǐng)域。目前,在采用ROM查表方式的DDS中,為了提高頻譜純度和分辨率需要增加ROM容量(ROM容量為2W×D,W是對(duì)ROM尋址的相位位數(shù),D是ROM的輸出位數(shù))。但大容量的ROM會(huì)使成本提高、功耗增大、速度降低且可靠性下降,因此在一定頻譜純度和分辨率的前提下研究sin存儲(chǔ)表的壓縮算法,對(duì)于降低DDS的存儲(chǔ)容量非常有意義。本文介紹了DDS的工作原理、1/4周期壓縮,提出了用分段非線性函數(shù)近似的方法代替大容量的ROM,并給出了此法在QuartusII開(kāi)發(fā)環(huán)境下的原理圖及時(shí)序仿真圖。
1 DDS的工作原理
DDS的基本結(jié)構(gòu)如圖1所示,它由相位累加器、相位幅度轉(zhuǎn)換器(常用的相位幅度轉(zhuǎn)換方法是ROM查表法)、D/A和低通濾波器構(gòu)成。在時(shí)鐘周期的控制下,相位累加器對(duì)頻率控制字K進(jìn)行累加得到N位的相位累加值。N位累加值作為ROM查表的尋址地址,但在實(shí)際應(yīng)用中,相位累加器輸出的N位累加值,并不是全部都用來(lái)對(duì)ROM尋址,而是截取高W位對(duì)其尋址,這樣可以降低對(duì)ROM容量的要求。查表輸出它所對(duì)應(yīng)的數(shù)字化幅度值,再經(jīng)過(guò)D/A變換完成離散信號(hào)到連續(xù)信號(hào)的轉(zhuǎn)變,最后經(jīng)低通濾波器濾波即可得到信號(hào)輸出。輸出信號(hào)頻率為fo=kfc/2N。
?
2 正弦函數(shù)1/4周期壓縮
由于正弦函數(shù)sin(x)在0~2π上關(guān)于x=π奇對(duì)稱,即0~π和π~2π區(qū)間相比,其對(duì)應(yīng)位置的幅度值的絕對(duì)值相等,符號(hào)相反。故將π~2π區(qū)間的相位編碼減去π,求出其幅度值后再加一負(fù)號(hào),就相當(dāng)于直接對(duì)π~2π區(qū)間的相位求正弦值。同時(shí),在0~π區(qū)間,sin(x)函數(shù)關(guān)于x=π/2偶對(duì)稱,故可用0~π/2區(qū)間的幅度值來(lái)表示0~π整個(gè)區(qū)間的波形。繼而0~2π之間的幅度值完全可以由0~π/2區(qū)間的幅度值來(lái)實(shí)現(xiàn),這樣大大降低了查表的存儲(chǔ)容量。圖2表示了這種方法的實(shí)現(xiàn)框圖。
?
兩個(gè)最高有效相位位作解碼象限位,其余的W-2位用來(lái)尋址第一象限的正弦查表。最高有效位(MSB)確定結(jié)果符號(hào),第二最高有效位確定幅度是增加還是減少。對(duì)于第一和第三象限相位,累加器的輸出在第二個(gè)MSB(此時(shí)其值為0)的控制下“保持原狀”,對(duì)于第二和第四象限相位,累加器的輸出在第二個(gè)MSB(此時(shí)其值為1)的控制下進(jìn)行二進(jìn)制求補(bǔ),從圖形上可以看出此時(shí)鋸齒波斜率在第二和第四象限是反轉(zhuǎn)的。這樣就形成了一個(gè)周期的正弦波[1]。
在采用1/4周期壓縮的基礎(chǔ)上,常用的相位幅度轉(zhuǎn)換方法有ROM查表法、sunderland結(jié)構(gòu)、sinθ-θ法、CORDIC、線性插值、泰勒近似等[3-9]。
3 分段非線性函數(shù)近似算法
3.1 算法提出
當(dāng)x∈[0,1],對(duì)sin(xπ/2)進(jìn)行連續(xù)等距離的M分段,在每一段內(nèi)用一個(gè)二次函數(shù)近似sin(xπ/2)。a、b、c分別為二次項(xiàng)、一次項(xiàng)、常數(shù)項(xiàng)系數(shù),i表示所在分段。分段數(shù)越大,近似誤差就越小,但所需的ROM容量也越大,本文是在M=8的基礎(chǔ)上展開(kāi)設(shè)計(jì)的。
目前常用的非線性近似函數(shù)為泰勒二階近似,在Matlab中對(duì)八分段的泰勒二階近似和擬合比較,擬合方式的誤差絕對(duì)值范圍在1.2×10-4內(nèi),泰勒二階級(jí)數(shù)方式的誤差絕對(duì)值范圍在1.8×10-4內(nèi),雖然兩者相差不大,但是當(dāng)對(duì)正弦函數(shù)擴(kuò)大一個(gè)較大的倍數(shù)如228后,它們之間的差距就很大了,因此本文采用的是擬合方式近似正弦函數(shù)。
將x在[0,1]均勻八分段,利用Matlab中提供的擬合函數(shù)對(duì)sin(xπ/2)進(jìn)行擬合,得到各段的系數(shù)如表1所示。
本文取W-2=14,也即對(duì)x擴(kuò)大了214倍,那么對(duì)于x2就擴(kuò)大228倍,為了對(duì)表達(dá)式中的三項(xiàng)擴(kuò)大相同的倍數(shù),將一次項(xiàng)系數(shù)b擴(kuò)大214、常數(shù)項(xiàng)系數(shù)c擴(kuò)大228,則此時(shí)各段系數(shù)如表2所示(其中L=214)。
??? 由于最大幅度誤差和無(wú)雜散動(dòng)態(tài)范圍成反向關(guān)系,為使每段的最大幅度誤差下降,調(diào)整常數(shù)項(xiàng)系數(shù)后各段系數(shù)情況如表3所示。
??? 這時(shí)每段的最大誤差的絕對(duì)值e如表4所示。
??? 目前常用的D/A轉(zhuǎn)換器有8位、10位、12位、16位,此時(shí)的誤差情況決定了最高可以采用12位D/A轉(zhuǎn)換器。仔細(xì)分析后發(fā)現(xiàn)前三段的最大誤差的絕對(duì)值較大,制約了可輸出的位數(shù)?;谶@樣的情況,考慮將前三段再分別均分成兩段,每段采用適當(dāng)?shù)姆蔷€性函數(shù)去近似正弦函數(shù)。各段系數(shù)如表5所示。
??? 這時(shí),每段最大誤差絕對(duì)值的情況如表6所示,可以滿足16位D/A轉(zhuǎn)換器(其中1位是符號(hào)位,其余15位是數(shù)值位)的條件。
3.2 具體實(shí)現(xiàn)
? 相位幅度轉(zhuǎn)換模塊sin_r_2是根據(jù)函數(shù)表達(dá)式計(jì)算得來(lái)的,因此由乘法器、加法器和存儲(chǔ)各項(xiàng)系數(shù)的模塊等共同構(gòu)成[2],如圖3所示。
??? 其中sin_c_2是根據(jù)輸入的14位相位值的高位獲得相位所在段落的二次項(xiàng)、一次項(xiàng)、常數(shù)項(xiàng)的系數(shù)(其中二次項(xiàng)系數(shù)存儲(chǔ)的是分子,由于分母是214可以通過(guò)右移14位實(shí)現(xiàn),故在此存儲(chǔ)的是分子),二次項(xiàng)系數(shù)占15位,一次項(xiàng)系數(shù)占16位,常數(shù)項(xiàng)系數(shù)占26位。lpm_mult0是一個(gè)具有四級(jí)流水線的14×15乘法器,完成二次項(xiàng)系數(shù)中的分子與輸入的相位的乘法。采用四級(jí)流水線是為了獲取高的運(yùn)算速度,但是運(yùn)算結(jié)果是經(jīng)過(guò)4個(gè)時(shí)鐘周期的延遲才產(chǎn)生的。lpm_mult0運(yùn)算結(jié)果是29位的結(jié)果,通過(guò)rs14la1模塊完成右移14位,同時(shí)左補(bǔ)1位,結(jié)果為16位。delay_c1_4將一次項(xiàng)系數(shù)延遲4個(gè)時(shí)鐘周期。lpm_add_sub0是一個(gè)具有二級(jí)流水線的16位減法器,它完成了-ax+b中的減法運(yùn)算。delay_in_6將輸入的14位相位延時(shí)6個(gè)時(shí)鐘周期。lpm_mult1是個(gè)具有四級(jí)流水線的14×16乘法器,完成(-ax+b)x中的第二個(gè)乘法運(yùn)算。delay_c0_10將常數(shù)項(xiàng)系數(shù)c0延時(shí)10個(gè)時(shí)鐘周期,la4對(duì)常數(shù)項(xiàng)c0左補(bǔ)4位0。lpm_add_sub1是一個(gè)具有四級(jí)流水線的30位減法器,完成(-ax+b)x-c中第二個(gè)減法運(yùn)算。rs13lw2將前一級(jí)模塊的30位結(jié)果右移13位同時(shí)去掉左端的前兩位。這是因?yàn)楸疚脑O(shè)計(jì)的相位幅度轉(zhuǎn)換器,可以滿足后接16位D/A轉(zhuǎn)換器的要求(其中第一位是符號(hào)位,后面15位是數(shù)值位)。30位的計(jì)算結(jié)果前兩位始終為0,可以將此去掉,再去掉計(jì)算結(jié)果中的后13位,剩下的15位送往D/A轉(zhuǎn)換器。這樣就完成了相位幅度轉(zhuǎn)換。
時(shí)序圖如圖4所示,信號(hào)in對(duì)應(yīng)sin_c_2中輸入的14位相位,ru1對(duì)應(yīng)sin_r_2輸出的14位相位值out[13:0],m1是lpm_mult0輸出的結(jié)果,dc1是delay_c1_4的輸出結(jié)果,s1是lpm_add_sub0的輸出結(jié)果,ru2是delay_in_6輸出結(jié)果,m2是lpm_mult1的輸出結(jié)果,dc0是delay_c0_10的輸出結(jié)果,out是rs13lw2的輸出結(jié)果。從時(shí)序圖中可以看出,經(jīng)過(guò)14個(gè)時(shí)鐘周期的延遲,最后輸出正確的結(jié)果。
?
3.3 比較
本文設(shè)計(jì)的相位幅度轉(zhuǎn)換器主要特點(diǎn)是ROM容量的壓縮。首先在Matlab中仿真得知,在八分段中采用擬合方式近似比采用泰勒二階近似誤差范圍小,所以采用的是擬合方式的函數(shù)近似。其次,通過(guò)分析可知八分段的方法中最高可以滿足14位D/A變換的要求,需存儲(chǔ)8×(15+16+26)=456 bit的信息,若采用常規(guī)的ROM查表法在相同條件下(W-2=14,D=11)所需ROM容量為214×11=180 224 bit。再次,為了進(jìn)一步改善輸出頻率的頻譜特性本文將誤差較大的前三段每段再次均分為兩段,這時(shí)就可以滿足16位D/A變換的要求,需存儲(chǔ)11×(15+16+26)=627 bit的信息,若采用常規(guī)的ROM查表法在相同條件下(W-2=16,D=15)所需ROM容量為214×15=245 760 bit??梢?jiàn)這種方法只需進(jìn)一步劃分不符合要求段落的分段就可以獲得更好的頻譜特性,因此具有很強(qiáng)的靈活性。
本文通過(guò)仿真比較,提出了一種針對(duì)八分段、十一分段的分段非線性函數(shù)近似的方法去實(shí)現(xiàn)DDS中的相位幅度轉(zhuǎn)換器。與過(guò)去常規(guī)的ROM查表法相比較,它可以獲得較好的壓縮效果。在QuartusII開(kāi)發(fā)環(huán)境下搭建了利用此方法所實(shí)現(xiàn)的相位幅度轉(zhuǎn)換器的結(jié)構(gòu)圖,并得到了它的時(shí)序仿真圖。通過(guò)驗(yàn)證,本法可以很好地實(shí)現(xiàn)相位幅度轉(zhuǎn)換的功能。在具體的實(shí)現(xiàn)中采用(-ax+b)x-c形式,比用-ax2+bx-c形式節(jié)省了一個(gè)乘法器,充分利用數(shù)字電路中的右移特性實(shí)現(xiàn)除法運(yùn)算,總共用了兩個(gè)乘法器和兩個(gè)減法器,結(jié)構(gòu)簡(jiǎn)單、靈活,易于實(shí)現(xiàn)。
參考文獻(xiàn)
[1] 白居憲.直接數(shù)字頻率合成[M].西安:西安交通大學(xué)出版社,2007.
[2] 劉波.精通Verilog HDL語(yǔ)言編程[M].北京:電子工業(yè)出版社,2007.
[3] 徐海燕,田增山.直接數(shù)字頻率合成中的相位雜散抑制方法研究[J].電信交換,2007(4):15-18.
[4] 何方勇,陳建安.基于線性插值的DDFS中的相位-幅度映射研究[J].現(xiàn)代雷達(dá),2006,28(1).
[5] 王春林,吳建輝,葉雙應(yīng),等.一種基于非均勻分段線性插值的直接數(shù)字頻率合成器[J].電子器件,2006,29(2).
[6] 木霄易,劉麗蓓,邵丙銑.一種高性能低功耗直接數(shù)字頻率合成器的設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2007,24(1).
[7] LANGLOIS J P M, Al-KHALILI D.Piecewise continuous Linear interpolation of the sine function for Direct Digital Frequency Synthesis[J]. Radio Frequency Inteqrated Circuits(RFIC) Symposium, 2003 IEEE 8-10 June 2003.
[8] LANGLOIS J P M, Al-KHALILI D. A new approach to the Design of Low Power Direct Frequency Synthesizers[C]. IEEE International Frequency Control Symposium and PDA Exhibition 2002.
[9] VANKKA J. Methods of mapping from phase to sine amplitude in direct digital synthesis[J]. IEEE International Frequency Control Symposium, 1996.