張林行,尚小虎,趙美聰,劉 陽
?
一種基于FPGA的DDS信號源實現
張林行,尚小虎,趙美聰,劉陽
摘要:鑒于信號源在測試和實驗領域的廣泛應用,設計了一種基于現場可編程門陣列(FPGA)的直接數字合成(DDS)信號源。設計中單片機作為控制芯片,完成輸入和顯示操作并把波形操作指令傳輸給運算器FPGA。在運算器FPGA中,通過查找表產生數字波形編碼,經過D/A和濾波電路實現波形的模擬輸出。經測試,該信號源輸出幅值精度達到1mV,頻率輸出范圍1MHz-1MHz,頻率控制精度0.01%,控制靈活,滿足設計要求。
關鍵詞:直接數字合成;現場可編程門陣列;鎖相環
信號發生器在測試和實驗領域有著廣泛的應用,特別在通信、電子測量儀表、雷達等電子系統的研發和設計過程中有著不可替代的作用,因此,設計制作一臺高性能的信號發生器具有很高的實際價值。直接數字頻率合成(Direct Digital Synthesis,DDS)技術最開始由美國學者J. Tierney,C. M. Rader和B. Gold在1971年提出[1],它是以數字信號為基礎,從相位的角度出發直接合成所需波形的一種新的全數字頻率合成技術。與傳統的頻率合成技術相比,DDS具有頻率分辨率高、頻率切換速度快和相位連續變化等優點。
現場可編程門陣列(Field Programmable Gate Arrays,FPGA)是目前被廣泛采用的一種可編程信號處理器件[2]。FPGA具有設計靈活性大、開發周期短、集成度高、可重復編程、內部資源豐富等優點。利用DDS原理在FPGA平臺上開發高性能的信號發生器與基于DDS芯片的信號發生器相比,成本更低,操作更加靈活,還能根據要求在線更新配置,系統開發趨于軟件化、自定義化[3-4]。
本文使用Altera公司的Cyclone IV系列FPGA芯片實現信號發生器的設計,方便的實現常用波形的輸出,且頻率,幅度,相位和占空比調節準確方便。
DDS是從相位概念出發直接合成所需要波形的一種新的頻率合成技術。一般包括系統時鐘、相位累加器、ROM查找表、D/A轉換器和低通濾波器(Low Pass Filter,LPF)。根據ROM表存儲的不同波形數據可以產生任意的波形,其原理如圖1所示:

圖1 DDS原理圖
輸入的頻率控制字K稱為相位步進量,作為相位累加器的增量,系統時鐘則對相位累加器、ROM查表和D/A轉換器提供時序控制。相位累加器由N位全加器和N位累加寄存器級聯而成,在系統時鐘的控制下對頻率控制字的二進制碼進行累加運算,將累加器的值作為ROM查找表的地址數據,相位累加器每一個周期的累加便完成一個波形采樣值的查表和輸出,這個周期就是DDS產生波形的頻率周期。由此可知DDS的信號輸出頻率為公式(1):

頻率分辨率為公式(2):

由公式(1)可以看出,輸出頻率與頻率控制字和系統時鐘成正比,為增大頻率的輸出范圍,本設計通過改變頻率控制字K和系統時鐘來改變輸出頻率[5]。
本設計整體原理如圖2所示:

圖2 信號發生器整體原理圖
2.1控制電路設計
本設計采用STC12LE5A60S2單片機作為主控芯片。如圖2所示,為交互方便,采用4*4按鍵和TFT彩屏來設置和顯示當前信號波形、頻率、幅度、占空比等信息。單片機通過串行傳輸數據控制FPGA,傳達波形、頻率、幅度、占空比等控制指令。
2.2運算電路設計
FPGA使用Cyclone IV E系列的EP4CE10E22C8芯片,在芯片內部編程完成PLL模塊、相位累加器模塊、ROM模塊和幅度控制模塊等的構建。
2.2.1PLL模塊
由公式(1)可知,想要提高輸出頻率的上限值,必須要提高系統的運行時鐘。本系統的外部晶振頻為是50M,為提高系統內部運行時鐘,本設計中調用quartus II軟件內的宏功能模塊ALTPLL來實現時鐘的倍頻,考慮到后級D/A芯片的反應時間,PLL的設計為2倍頻,輸出時鐘為100M。根據奈奎斯特準則,允許輸出的最高頻率為,但考慮到低通濾波器的特性和設計難度以及對輸出信號雜散的抑制,實際輸出的最高頻率僅能達到0.4[6]。最終生成的PLL電路如圖3所示:

圖3 PLL電路
仿真結果如圖4所示:

圖4 PLL仿真圖
2.2.2ROM模塊
首先,是按照一定的采樣點數(用M表示)將一個周期波形的數據存于ROM表中,表中的數據代表著一個周期波形的幅度信息,每個地址對應一個相位點的幅度值。采樣值可以通過MATLAB軟件實現,正弦波采樣程序如下所示。
index=linspace(0,2*pi,1024);
a=fix(8191*(sin(index)+1)+0.5);
plot(index,a);
本設計選取采樣的點數,由公式(1)可知。
利用quartus II軟件中的宏功能模塊ROM 來實現ROM的設計,將MATLAB生成的波形數據保存為.mif格式,加載到ROM中,最終生成的ROM電路如圖5所示:

圖5 ROM電路
2.2.3相位累加器
相位累加器是信號發生器設計中最主要的部分。由公式2可知,在系統時鐘為100M時,輸出頻率最小為100K,考慮到D/A需要輸入一定量的采樣點數才能還原出數字化的波形,因此頻率控制字K不能取的很大,本設計輸出頻率最高為1M,即K最大取10。這樣的話,頻率輸出范圍是100K到1M,顯然范圍太小。在設計相位累加器時,本系統取N和K為30位,其中N的高10位作為地址數據進行尋址,頻率控制字高10位作為整數部分,低20位作為小數部分[7],這樣頻率分辨率就達到0.0931Hz,結合控制精度需要達到0.01%,規定系統時鐘為100M時的頻率輸出范圍是1K到1M。
當然,增加N和K的位數還可以繼續擴大頻率的輸出范圍,但同樣也會占用系統大量的資源,為了獲得較大的頻率輸出范圍,本設計通過不同頻段的輸出頻率來調整系統時鐘。即在輸出頻率為1K到1M時,系統時鐘選擇100M;在輸出頻率為1Hz到1K時,系統時鐘選擇100K;輸出頻率為1mHz到1Hz時,系統時鐘選擇100Hz。系統時鐘的選擇通過一個選擇器分頻實現。這樣,總的頻率輸出范圍就是1mHz到1M,控制精度達到0.01%。由公式(1)可知公式(3):

以上討論的是正弦波、三角波、方波的頻率改變。對于占空比可調的鋸齒波,由于增加了一個輸入量占空比(用字母D表示),需要單獨考慮。本設計采用兩個頻率控制字K1,K2來實現占空比的可調,尋址ROM使用三角波定制的ROM,三角波ROM的前個點是上升點,尋址周期為公式(4):


可得整個ROM的尋址周期為公式(6):

根據鋸齒波占空比定義知為公式(7):

由公式4、5、6、7得公式(8)、(9):

此時,相位累加器N的高十位充當一個2選擇器的觸發開關,當N的高十位小于時,頻率控制字K取K1;當N的高十位大于時,頻率控制字K取K2。
2.2.4幅度控制模塊
ROM存儲的數據是輸出幅度為最大幅度的波形數據,通過給ROM尋址輸出的數據乘以一個系數來實現幅度的調節。記ROM尋址輸出的波形幅度數據為q1,經幅度模塊的輸出的幅度數據為q2,波形的最大幅度為A,輸出幅度為V,則有公式(10):

q2就是幅度調節后輸送給D/A的幅度數據。
2.3模數轉換設計
D/A芯片使用DAC904。DAC904是一款14位分辨率165MSPS采樣率的高速并行DAC,可以將FPGA輸出的波形數字信號轉換為電流信號[8]。DAC904輸出的差分電流信號經過后一級OPA830電路轉化成初級波形輸出信號,再經RC低通濾波器輸出最終信號。其電路如圖6所示:

圖6 D/A轉換電路圖
3.1軟件設計
系統軟件設計流程如圖7所示:

圖7 系統軟件流程圖
軟件設計的主要思路是,通過單片機檢測鍵盤輸入,經初步數據處理,把輸入信息顯示到TFT彩屏上并串行發送指令到FPGA;FPGA根據輸入的頻率范圍調整參考時鐘,根據輸入的波形選擇相應的ROM存儲器和相位累加器,再通過幅度控制實現調幅。
3.2系統仿真
在Quartus II13.0和KEIL環境下,實現了軟件部分的設計。對程序進行編譯后,進行時序仿真以驗證設計的正確性,正弦波和三角波的時序功能仿真圖,輸出端數據與ROM存儲器數據完全一致,如圖8所示:

圖8 波形時序圖
圖9是使用Quartus II自帶的嵌入式邏輯分析儀SignalTap II觀察到的波形數據。邏輯分析儀SignalTap II可以捕捉目標器件FPGA內部任何節點處信息,信號發生器正弦波和鋸齒波輸出節點的信息,如圖9所示:

圖9 使用邏輯分析儀SignalTap II仿真波形圖
經過仿真和驗證,將編譯文件下載到核心板中,FAGA的幅度數據輸入到D/A電路模塊,在示波器上觀察輸出波形,波形輸出結果與設計輸出一致,符合設計要求。正弦波和鋸齒波的波形圖,如圖10所示:

圖10 示波器觀察波形圖
基于FPGA的DDS波形發生器實現了正弦波、三角波、方波和鋸齒波四種波形的頻率可調、幅值可調和鋸齒波占空比可調的信號輸出。結果表明,本設計簡單合理,波形轉換速度快,輸出波形質量好,而且本設計還能根據要求在線調試,通過改變ROM存儲器的數據可以實現任意波形的輸出,軟件化程度高,具有良好的性價比。在本設計的基礎上,相位累加器之后級聯一個加法器,就可以實現相位的可調,被加數就是需要調整相位的矢量地址。
參考文獻
[1] Tierney, J.; Rader, C.; Gold, B. A digital frequency synthesizer [J].Audio and Electroacoustics, IEEE Transactions on.1971, 19(1):48-57.
[2] 楊海鋼,孫嘉斌,王慰. FPGA 器件設計技術發展綜述[J].電子與信息學報,2010(3 ): 714-727.
[3] 李雪梅,張宏財,王學偉.基于DDS技術的信號源設計[J].電測與儀表,2012(01):55-56,66.
[4] 郝建衛.基于FPGA的脈沖寬度調制信號發生器[J]. 計算機工程,2013(2):260-264,269.
[5] 漢澤西,張海飛,王文渤,李國棟等.基于DDS 技術正弦波信號發生器的設計[J].電子測試,2009(08):65-69,77.
[6] 施羽暇,呂威,李一晨.基于DDS 技術的正弦信號發生器設計[J] .信息技術, 2007(1):17-20 .
[7] 向 偉,沈詩律,查 智,耿文豹等. 無相位截斷誤差DDS的設計與FPGA 實現[J].微型電腦應用,2013(10):1-4.
[8] 陳章余. 基于FPGA的DDS正弦信號發生器設計[J].電子技術與軟件工程,2014(12):136.
收稿日期:(2015.03.26)
作者簡介:張林行(1977-),男,吉林大學,儀器科學與電氣工程學,院副教授,博士,研究方向:地震勘探方法與儀器研究,長春,130021尚小虎(1992-),男,吉林大學,儀器科學與電氣工程學,大學本科,研究方向:地震勘探方法與儀器研究,長春,130021趙美聰(1993-),女,吉林大學,儀器科學與電氣工程學,大學本科,研究方向:地震勘探方法與儀器研究,長春,130021 劉陽(1992-),女,吉林大學,儀器科學與電氣工程學,大學本科,研究方向:地震勘探方法與儀器研究,長春,130021
基金項目:吉林大學2013年度創新訓練國家級項目(2013A65238)
文章編號:1007-757X(2015)12-0016-03
中圖分類號:TN791
文獻標志碼:A