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