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