《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 一種DDS任意波形發(fā)生器的ROM優(yōu)化方法
一種DDS任意波形發(fā)生器的ROM優(yōu)化方法
來源:電子技術(shù)應(yīng)用2013年第2期
李 超,謝雪松,張小玲
北京工業(yè)大學(xué) 半導(dǎo)體可靠性研究室,北京100124
摘要: 提出了一種改進(jìn)的基于直接頻率合成技術(shù)(DDS)的任意波形發(fā)生器在現(xiàn)場可編程門陣列(FPGA)上的實(shí)現(xiàn)方法。首先將三角波、正弦波、方波和升/降鋸齒波的波形數(shù)據(jù)寫入片外存儲器,當(dāng)調(diào)用時(shí)再將相應(yīng)的數(shù)據(jù)移入FPGA的片上RAM,取代分區(qū)塊的將所有類型波形數(shù)據(jù)同時(shí)存儲在片上RAM中的傳統(tǒng)方法;再利用正弦波和三角波的波形在4個(gè)象限的對稱性以及鋸齒波的線性特性,通過硬件反相器對波形數(shù)據(jù)和尋址地址值進(jìn)行處理,實(shí)現(xiàn)了以1/4的數(shù)據(jù)量還原出精度不變的模擬信號,從而將整體的存儲量減小為原始設(shè)計(jì)方案的5%。經(jīng)驗(yàn)證,這種改進(jìn)方法正確可行,能夠大大降低開發(fā)成本。
中圖分類號: TN741
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)02-0012-03
A ROM optimization method of DDS-based arbitrary waveform generator
Li Chao,Xie Xuesong,Zhang Xiaoling
Semiconductor Reliability Research Departmention, Beijing University of Technology,Beijing 100124,China
Abstract: This paper presents an improved method of arbitrary waveform generator based on direct digital frequency synthesis(DDS) technology achieved on field programmable gate array(FPGA). First, it writes the waveform data of triangle wave, sine wave, square wave, and ascending or descending sawtooth wave data to the off-chip memory, and moves the corresponding data into FPGA on-chip RAM when it is invoked, which replaces the traditional method that stores all types of waveform data in on-chip RAM sub-blocks. Then,it takes use of the symmetry of sine and triangle waveform in the four quadrants, and the linearity of the sawtooth waveform, process the waveform data and the address value by hardware inverter. It can restore the same-precision analog signal with a quarter of the amount of data. The overall storage capacity is reduced to 5% of the original design. After validation, this improved method is feasible, and it can greatly reduce the development costs.
Key words : DDS;FPGA;ROM optimization

    隨著數(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。