?

一種DDS任意波形發生器的ROM優化方法

2013-12-07 06:17謝雪松張小玲
電子技術應用 2013年2期
關鍵詞:累加器正弦波方波

李 超,謝雪松,張小玲

(北京工業大學 半導體可靠性研究室,北京 100124)

隨著數字通信技術的發展,基于直接頻率合成技術(DDS)的信號發生器,以其頻率轉換速度快、頻率分辨率高、相位連續、波形穩定度高以及便于程控等諸多優勢,得到了越來越廣泛的應用[1]。與此同時,DDS技術的一個缺陷也逐漸顯現出來,即要想獲得高精度的波形,就要以占用大量的存儲資源為代價[2]。對于常見的基于現場可編程門陣列(FPGA)的DDS信號發生器的設計方案,為了不影響系統的運行速度,波形數據一般都存放在FPGA的片上RAM資源中。而FPGA的片上RAM資源有限,且其存儲空間的大小與FPGA芯片的價格成正比,這無形中增加了系統的開發成本。針對這一問題,本文提出一種改進的、基于FPGA的DDS任意波形發生器的設計方案。該方案在不改變波形精度的前提下,將波形數據量降低為傳統設計方案的25%,并且能夠輸出正弦波、三角波、占空比可變的方波和升/降鋸齒波5種波形。

1 DDS基本原理

DDS技術的核心是利用累加器將頻率控制字、相位控制字和波形控制字轉化成讀取波形數據的地址值,再將讀出的波形數據與幅度控制字相乘得到不同的波形,其結構框圖如圖1所示[3]。

輸出波形的頻率由頻率控制字與輸入時鐘共同決定,其關系表示如下:

其中,fo為輸出頻率;K為頻率控制字;N為一個正整數,其數值一般為頻率控制字K的位寬;fc為輸入時鐘的頻率。由累加器輸出的結果與相位控制字相加,相當于將輸出波形進行一次相移,從而確定波形的相位。因為DDS任意波形發生器能夠產生多種類型的波形,所以需要將不同類型的波形數據分區塊地寫入波形存儲器(ROM)中,將之前產生的地址值與波形控制字相加,即為用于將地址指向特定的波形類型的數據所在的區塊。讀出的離散波形數據經過D/A轉換器就轉換成了連續的模擬信號,再經過低通濾波器(LPF)就可以得到所需要的平滑波形輸出。

2 DDS優化設計

2.1 整體設計方案

本設計的DDS任意波形發生器能夠直接產生0~1 kHz的正弦波、三角波、升/降鋸齒波和占空比可變的方波等5種波形,經過后接的功率放大電路其幅值可達65 V。系統采用型號為AD9746的高精度差分D/A轉換芯片,其數據位寬為14 bit,這就意味著每個波形數據都為14 bit位寬,則對模擬信號采樣生成波形數據時,就需要采集214個數據點。如果按照傳統的DDS設計方案,所占用的片上RAM資源為:波形類型數×數據位寬×數據量=5×14×214=1 146 880 bit。 由此可以看出,資源的占用量已經遠遠超出了大多數常用FPGA芯片的片上資源總量。為了減小資源的占用,本設計首先對不同類型的波形數據的存儲方式進行優化。

如圖1所示,傳統的DDS任意波形發生器是將所有類型的波形數據按區塊存儲在ROM中,按照需求讀出某一區塊的數據用于產生相應波形。這種設計方案的ROM利用率很低,以存儲5種波形數據為例,在生成某種波形時,ROM空間的80%存儲的都是無關數據。因此,為了節省空間,將不同類型的波形數據以數組的形式寫在軟件中,當需要產生某種波形時,通過波形控制字的控制,將指定的波形數據移入FPGA的片上存儲器。由于軟件運行的存儲區域為片外的SDRAM,而SDRAM的存儲空間較大,因此,用SDRAM的空間占用取代FPGA片上存儲資源的占用可以在很大程度上降低成本。

另外,從式(1)中可以看出,當頻率控制字 K取1時,可以得到系統的頻率分辨率[4]:

由此可見,N的取值越大,輸出頻率的步長就越小,頻率分辨率也就越高。本設計采用了32 bit字長的頻率控制字,參考時鐘為100 MHz,所以頻率分辨率可達0.023 2 Hz。但是,累加器輸出的結果將要作為對ROM尋址的地址,而ROM的尋址空間顯然無法達到232bit。為了使地址值能夠與ROM中的數據一一對應,又不影響頻率分辨率,這里截取累加結果的高14位作為尋址的地址值,但并不表示ROM的尋址空間為 214bit,而是對不同的波形類型將對這14位的地址值做不同的處理,從而進一步對ROM進行優化。

2.2 正弦波、三角波的ROM優化設計

因為系統中采用的D/A的精度為14 bit,所以在對參考的模擬波形采樣時,需要采集214個離散的數據點。但是不難發現,正弦波和三角波在4個象限的波形具有很好的對稱性,因此,為了進一步對ROM進行優化,只存儲波形在第一象限的數據點,利用基于VHDL硬件描述語言編寫的硬件反相器對尋址地址值和波形數據進行處理,就可以在不改變數據精度的情況下得到完整的波形[5-6]。由于三角波和正弦波的原理完全相同,所以這里僅以正弦波的ROM優化設計為例進行說明,其硬件框圖如圖2所示。

從圖2中可以看出,雖然累加器輸出的結果為14 bit位寬,但是真正對ROM尋址的只有12 bit。實際上,只是累加器輸出的最高2位用于對生成波形的4個象限進行選擇,其對應關系如圖3所示。

在正弦波的生成電路中,ROM只存儲第一象限,即圖3中是高2位為00時所對應的波形數據。由圖3可分析得出,第二象限的波形數據相當于對第一象限數據進行反方向讀取,即對地址值先取反再尋址;第三象限的波形數據為第一象限數據的相反數,即對波形數據先取反再讀??;第四象限的波形數據為第三象限數據的反方向讀取,即同時對地址值和波形數據取反再尋址讀出數據。綜上所述,反相器1在累加器輸出結果的次高位為0時不采取任何操作,在次高位為1時將地址值取反;反相器2在最高位為0時不采取任何操作,在最高位為1時對ROM中的波形數據取反。這樣利用2個反相器就可以僅存儲212個數據點,還原出14 bit精度的完整正弦波形和三角波形。

2.3 升、降鋸齒波ROM優化設計

與正弦波和三角波不同,升/降鋸齒波為單調線性波形,所以在針對參考波形進行14 bit精度采樣時,將生成的214個數據點每隔3個存儲1個,把所存儲的數據點個數減小到212個,這對于單調的線性波形幾乎沒有影響。因此,在尋址時只需要截取累加器輸出的高12 bit作為地址值。另外,為了進一步簡化設計,考慮到降鋸齒波實際上是對升鋸齒波的波形數據進行反向讀取得到的,因此,可以僅存儲升鋸齒波的波形數據,利用波形控制字和反相器就可以得到降鋸齒波形。其電路框圖如圖4所示。

2.4 方波生成電路設計

與之前介紹的所有波形的性質不同,方波只是高低電平之間的轉換,轉換的時間即為占空比。因此,在方波生成的電路中,只需把單一的高電平數據存入ROM中,利用定時器控制一個反相器,在特定時間將ROM中讀出的數據取反,就可以生成占空比可變的方波。其電路框圖如圖5所示。

定時器中,以輸入的占空比控制字為初值,每個時鐘周期對頻率控制字進行一次累加。當累加結果≤232-1時,控制位為0,反相器不工作,D/A直接收到 ROM中讀出的數據,即輸出方波高電平;當累加結果>232-1時,控制位置1,反相器將ROM中讀出的波形數據取反,即輸出方波的低電平。累加結果為33 bit位寬,當發生溢出時,自動回到初值狀態,從占空比控制字開始繼續對頻率控制字進行累加。因此,通過輸入不同的占空比控制字就可以得到占空比可變的方波。

3 測試結果

按照上述優化方法設計出基于DDS的任意波形發生器,FPGA的片上存儲器僅需要存儲4 096個14 bit位寬的波形數據,就能夠實現可輸出5種波形的任意波形發生器。在Quartus II 8.0軟件中的綜合結果如圖6所示。

從圖6中可以讀出,片上存儲資源的占用量僅為108 928 bit,這是因為中間過程中用到的寄存器和嵌入的NIOS II軟核占用了一部分的存儲空間。利用RIGOL公司生產的型號為DS1102CA的示波器可觀察到最終的不同頻率、不同幅值的輸出波形,如圖7~圖12所示。

若按照傳統的設計方案,5種波形、14 bit精度的DDS任意波形發生器將占用FPGA片上大于1 Mb的存儲空間,而符合這個要求的FPGA芯片市場價格一般都接近千元。本系統采用Altera公司生產的Cyclone II系列的FPGA芯片EP2C20F484C8為核心處理器件,能夠大大減小FPGA的片上資源占用,其市場價格僅為100元左右,很大程度上減小了成本。

[1]張嚴,洪遠泉.基于FPGA的任意波形發生器設計與研究[J].現代電子技術,2011,34(10):157-159.

[2]杜偉韜,盧起斌,徐偉掌,等.面積優化的調相 DDS軟核編譯器設計與實現[J].微電子學,2008,38(3):381-384.

[3]江志浩,孫明珠,蔡德榮.高精度 DDS的 FPGA資源優化設計[J].微計算機信息,2009,25(1-2):191-193.

[4]傅沈文,曾廣璽.基于DDS技術的高性能脈沖信號源設計[J].微計算機信息,2011,40(4):108-109.

[5]藍天,張金林.直接數字頻率合成器DDS的優化設計[J].電子技術應用,2007,33(5):42-44.

[6]李建磊,馬震,莊波,等.直接數字頻率合成器(DDS)精度提高方法研究[J].濱州學院學報,2006,22(3):43-46.

猜你喜歡
累加器正弦波方波
便攜式多功能頻率計的設計與實現
密碼累加器研究進展及應用
單相正弦波變頻電源設計與實現
測繪技術在土地資源管理中的應用
采用BC5016S的純正弦波逆變器設計及制作
Fpga的信號發生器設計原理
碳納米管方波電沉積鉑催化劑的制備及其催化性能研究
基于STM32的風力擺控制系統的設計
基于霍夫變換的工位點識別算法設計與實現
用于時間延遲積分型圖像傳感器的流水采樣列級運放共享累加器*
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合