文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)02-0012-03
隨著數(shù)字通信技術(shù)的發(fā)展,,基于直接頻率合成技術(shù)(DDS)的信號(hào)發(fā)生器,以其頻率轉(zhuǎn)換速度快,、頻率分辨率高,、相位連續(xù)、波形穩(wěn)定度高以及便于程控等諸多優(yōu)勢(shì),,得到了越來(lái)越廣泛的應(yīng)用[1],。與此同時(shí),DDS技術(shù)的一個(gè)缺陷也逐漸顯現(xiàn)出來(lái),,即要想獲得高精度的波形,,就要以占用大量的存儲(chǔ)資源為代價(jià)[2]。對(duì)于常見(jiàn)的基于現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)的DDS信號(hào)發(fā)生器的設(shè)計(jì)方案,,為了不影響系統(tǒng)的運(yùn)行速度,,波形數(shù)據(jù)一般都存放在FPGA的片上RAM資源中。而FPGA的片上RAM資源有限,,且其存儲(chǔ)空間的大小與FPGA芯片的價(jià)格成正比,,這無(wú)形中增加了系統(tǒng)的開(kāi)發(fā)成本。針對(duì)這一問(wèn)題,,本文提出一種改進(jìn)的,、基于FPGA的DDS任意波形發(fā)生器的設(shè)計(jì)方案。該方案在不改變波形精度的前提下,,將波形數(shù)據(jù)量降低為傳統(tǒng)設(shè)計(jì)方案的25%,,并且能夠輸出正弦波、三角波,、占空比可變的方波和升/降鋸齒波5種波形,。
1 DDS基本原理
DDS技術(shù)的核心是利用累加器將頻率控制字、相位控制字和波形控制字轉(zhuǎn)化成讀取波形數(shù)據(jù)的地址值,,再將讀出的波形數(shù)據(jù)與幅度控制字相乘得到不同的波形,,其結(jié)構(gòu)框圖如圖1所示[3]。
其中,,fo為輸出頻率,;K為頻率控制字,;N為一個(gè)正整數(shù),,其數(shù)值一般為頻率控制字K的位寬;fc為輸入時(shí)鐘的頻率,。由累加器輸出的結(jié)果與相位控制字相加,,相當(dāng)于將輸出波形進(jìn)行一次相移,,從而確定波形的相位。因?yàn)镈DS任意波形發(fā)生器能夠產(chǎn)生多種類(lèi)型的波形,,所以需要將不同類(lèi)型的波形數(shù)據(jù)分區(qū)塊地寫(xiě)入波形存儲(chǔ)器(ROM)中,,將之前產(chǎn)生的地址值與波形控制字相加,即為用于將地址指向特定的波形類(lèi)型的數(shù)據(jù)所在的區(qū)塊,。讀出的離散波形數(shù)據(jù)經(jīng)過(guò)D/A轉(zhuǎn)換器就轉(zhuǎn)換成了連續(xù)的模擬信號(hào),,再經(jīng)過(guò)低通濾波器(LPF)就可以得到所需要的平滑波形輸出。
2 DDS優(yōu)化設(shè)計(jì)
2.1 整體設(shè)計(jì)方案
本設(shè)計(jì)的DDS任意波形發(fā)生器能夠直接產(chǎn)生0~1 kHz的正弦波,、三角波,、升/降鋸齒波和占空比可變的方波等5種波形,經(jīng)過(guò)后接的功率放大電路其幅值可達(dá)65 V,。系統(tǒng)采用型號(hào)為AD9746的高精度差分D/A轉(zhuǎn)換芯片,,其數(shù)據(jù)位寬為14 bit,這就意味著每個(gè)波形數(shù)據(jù)都為14 bit位寬,,則對(duì)模擬信號(hào)采樣生成波形數(shù)據(jù)時(shí),,就需要采集214個(gè)數(shù)據(jù)點(diǎn)。如果按照傳統(tǒng)的DDS設(shè)計(jì)方案,,所占用的片上RAM資源為:波形類(lèi)型數(shù)×數(shù)據(jù)位寬×數(shù)據(jù)量=5×14×214=1 146 880 bit,。由此可以看出,資源的占用量已經(jīng)遠(yuǎn)遠(yuǎn)超出了大多數(shù)常用FPGA芯片的片上資源總量,。為了減小資源的占用,,本設(shè)計(jì)首先對(duì)不同類(lèi)型的波形數(shù)據(jù)的存儲(chǔ)方式進(jìn)行優(yōu)化。
如圖1所示,,傳統(tǒng)的DDS任意波形發(fā)生器是將所有類(lèi)型的波形數(shù)據(jù)按區(qū)塊存儲(chǔ)在ROM中,,按照需求讀出某一區(qū)塊的數(shù)據(jù)用于產(chǎn)生相應(yīng)波形。這種設(shè)計(jì)方案的ROM利用率很低,,以存儲(chǔ)5種波形數(shù)據(jù)為例,,在生成某種波形時(shí),ROM空間的80%存儲(chǔ)的都是無(wú)關(guān)數(shù)據(jù),。因此,,為了節(jié)省空間,將不同類(lèi)型的波形數(shù)據(jù)以數(shù)組的形式寫(xiě)在軟件中,,當(dāng)需要產(chǎn)生某種波形時(shí),,通過(guò)波形控制字的控制,將指定的波形數(shù)據(jù)移入FPGA的片上存儲(chǔ)器,。由于軟件運(yùn)行的存儲(chǔ)區(qū)域?yàn)槠獾腟DRAM,,而SDRAM的存儲(chǔ)空間較大,因此,,用SDRAM的空間占用取代FPGA片上存儲(chǔ)資源的占用可以在很大程度上降低成本,。
另外,,從式(1)中可以看出,當(dāng)頻率控制字K取1時(shí),,可以得到系統(tǒng)的頻率分辨率[4]:
由此可見(jiàn),,N的取值越大,輸出頻率的步長(zhǎng)就越小,,頻率分辨率也就越高,。本設(shè)計(jì)采用了32 bit字長(zhǎng)的頻率控制字,參考時(shí)鐘為100 MHz,,所以頻率分辨率可達(dá)0.023 2 Hz,。但是,累加器輸出的結(jié)果將要作為對(duì)ROM尋址的地址,,而ROM的尋址空間顯然無(wú)法達(dá)到232 bit,。為了使地址值能夠與ROM中的數(shù)據(jù)一一對(duì)應(yīng),又不影響頻率分辨率,,這里截取累加結(jié)果的高14位作為尋址的地址值,,但并不表示ROM的尋址空間為214 bit,而是對(duì)不同的波形類(lèi)型將對(duì)這14位的地址值做不同的處理,,從而進(jìn)一步對(duì)ROM進(jìn)行優(yōu)化,。
2.2 正弦波、三角波的ROM優(yōu)化設(shè)計(jì)
因?yàn)橄到y(tǒng)中采用的D/A的精度為14 bit,,所以在對(duì)參考的模擬波形采樣時(shí),,需要采集214個(gè)離散的數(shù)據(jù)點(diǎn)。但是不難發(fā)現(xiàn),,正弦波和三角波在4個(gè)象限的波形具有很好的對(duì)稱(chēng)性,,因此,為了進(jìn)一步對(duì)ROM進(jìn)行優(yōu)化,,只存儲(chǔ)波形在第一象限的數(shù)據(jù)點(diǎn),,利用基于VHDL硬件描述語(yǔ)言編寫(xiě)的硬件反相器對(duì)尋址地址值和波形數(shù)據(jù)進(jìn)行處理,就可以在不改變數(shù)據(jù)精度的情況下得到完整的波形[5-6],。由于三角波和正弦波的原理完全相同,,所以這里僅以正弦波的ROM優(yōu)化設(shè)計(jì)為例進(jìn)行說(shuō)明,其硬件框圖如圖2所示,。
在正弦波的生成電路中,,ROM只存儲(chǔ)第一象限,即圖3中是高2位為00時(shí)所對(duì)應(yīng)的波形數(shù)據(jù),。由圖3可分析得出,,第二象限的波形數(shù)據(jù)相當(dāng)于對(duì)第一象限數(shù)據(jù)進(jìn)行反方向讀取,即對(duì)地址值先取反再尋址;第三象限的波形數(shù)據(jù)為第一象限數(shù)據(jù)的相反數(shù),,即對(duì)波形數(shù)據(jù)先取反再讀取,;第四象限的波形數(shù)據(jù)為第三象限數(shù)據(jù)的反方向讀取,,即同時(shí)對(duì)地址值和波形數(shù)據(jù)取反再尋址讀出數(shù)據(jù)。綜上所述,,反相器1在累加器輸出結(jié)果的次高位為0時(shí)不采取任何操作,,在次高位為1時(shí)將地址值取反;反相器2在最高位為0時(shí)不采取任何操作,,在最高位為1時(shí)對(duì)ROM中的波形數(shù)據(jù)取反,。這樣利用2個(gè)反相器就可以?xún)H存儲(chǔ)212個(gè)數(shù)據(jù)點(diǎn),還原出14 bit精度的完整正弦波形和三角波形,。
2.3 升,、降鋸齒波ROM優(yōu)化設(shè)計(jì)
與正弦波和三角波不同,升/降鋸齒波為單調(diào)線性波形,,所以在針對(duì)參考波形進(jìn)行14 bit精度采樣時(shí),,將生成的214個(gè)數(shù)據(jù)點(diǎn)每隔3個(gè)存儲(chǔ)1個(gè),把所存儲(chǔ)的數(shù)據(jù)點(diǎn)個(gè)數(shù)減小到212個(gè),,這對(duì)于單調(diào)的線性波形幾乎沒(méi)有影響,。因此,在尋址時(shí)只需要截取累加器輸出的高12 bit作為地址值,。另外,,為了進(jìn)一步簡(jiǎn)化設(shè)計(jì),考慮到降鋸齒波實(shí)際上是對(duì)升鋸齒波的波形數(shù)據(jù)進(jìn)行反向讀取得到的,,因此,,可以?xún)H存儲(chǔ)升鋸齒波的波形數(shù)據(jù),利用波形控制字和反相器就可以得到降鋸齒波形,。其電路框圖如圖4所示,。
定時(shí)器中,以輸入的占空比控制字為初值,,每個(gè)時(shí)鐘周期對(duì)頻率控制字進(jìn)行一次累加,。當(dāng)累加結(jié)果≤232-1時(shí),控制位為0,,反相器不工作,,D/A直接收到ROM中讀出的數(shù)據(jù),即輸出方波高電平,;當(dāng)累加結(jié)果>232-1時(shí),,控制位置1,反相器將ROM中讀出的波形數(shù)據(jù)取反,,即輸出方波的低電平,。累加結(jié)果為33 bit位寬,,當(dāng)發(fā)生溢出時(shí),自動(dòng)回到初值狀態(tài),,從占空比控制字開(kāi)始繼續(xù)對(duì)頻率控制字進(jìn)行累加,。因此,通過(guò)輸入不同的占空比控制字就可以得到占空比可變的方波,。
3 測(cè)試結(jié)果
按照上述優(yōu)化方法設(shè)計(jì)出基于DDS的任意波形發(fā)生器,,F(xiàn)PGA的片上存儲(chǔ)器僅需要存儲(chǔ)4 096個(gè)14 bit位寬的波形數(shù)據(jù),就能夠?qū)崿F(xiàn)可輸出5種波形的任意波形發(fā)生器,。在Quartus II 8.0軟件中的綜合結(jié)果如圖6所示,。
從圖6中可以讀出,片上存儲(chǔ)資源的占用量?jī)H為108 928 bit,,這是因?yàn)橹虚g過(guò)程中用到的寄存器和嵌入的NIOS II軟核占用了一部分的存儲(chǔ)空間,。利用RIGOL公司生產(chǎn)的型號(hào)為DS1102CA的示波器可觀察到最終的不同頻率、不同幅值的輸出波形,,如圖7~圖12所示,。
若按照傳統(tǒng)的設(shè)計(jì)方案,5種波形,、14 bit精度的DDS任意波形發(fā)生器將占用FPGA片上大于1 Mb的存儲(chǔ)空間,,而符合這個(gè)要求的FPGA芯片市場(chǎng)價(jià)格一般都接近千元。本系統(tǒng)采用Altera公司生產(chǎn)的Cyclone II系列的FPGA芯片EP2C20F484C8為核心處理器件,,能夠大大減小FPGA的片上資源占用,,其市場(chǎng)價(jià)格僅為100元左右,很大程度上減小了成本,。
參考文獻(xiàn)
[1] 張嚴(yán),,洪遠(yuǎn)泉.基于FPGA的任意波形發(fā)生器設(shè)計(jì)與研究[J].現(xiàn)代電子技術(shù),2011,,34(10):157-159.
[2] 杜偉韜,,盧起斌,徐偉掌,,等.面積優(yōu)化的調(diào)相DDS軟核編譯器設(shè)計(jì)與實(shí)現(xiàn)[J].微電子2008,,38(3):381-384.
[3] 江志浩,孫明珠,,蔡德榮.高精度DDS的FPGA資源優(yōu)化設(shè)計(jì)[J].微計(jì)算機(jī)信息,,2009,25(1-2):191-193.
[4] 傅沈文,,曾廣璽.基于DDS技術(shù)的高性能脈沖信號(hào)源設(shè)計(jì)[J].微計(jì)算機(jī)信息,,2011,40(4):108-109.
[5] 藍(lán)天,張金林.直接數(shù)字頻率合成器DDS的優(yōu)化設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用,,2007,,33(5):42-44.
[6] 李建磊,馬震,,莊波,,等.直接數(shù)字頻率合成器(DDS)精度提高方法研究[J].濱州學(xué)院學(xué)報(bào),2006,,22(3):43-46.