- 相關推薦
基于FPGA的DDS信號發生器的設計
引言
直接數字頻率合成(Direct Digital Frequency Synthesis)是一種以奈奎斯特采樣定理及數字信號處理為基礎,從相位概念出發的全數字頻率合成方法。實現DDS 功能可用專用的DDS芯片,也可利用高性能的現場可編程門陣列(Field Programmable Gate Array)。與前者相比,后者具有設計簡單,開發靈活,應用成本低等優點。本文以FPGA 為基礎,設計DDS 信號發生器。設計目標:輸出頻率范圍1Hz~1MHz,頻率可調,輸出頻率精度大于0.1%,輸出頻率峰峰值為5V。
1 DDS 基本原理
由奈奎斯特采樣定理可知,當采樣頻率大于被采樣信號最高頻率的2 倍時,通過采樣得到的數字信號可完整的還原被采樣信號;谀慰固夭蓸佣ɡ恚到y首先對需要產生的信號進行采樣,量化后存入數據存儲器。在參考時鐘作用下,相位累加器按照預先設定的頻率控制器進行地址累加,此地址即為信號在數據表中對應地址。根據地址從數據表中依次讀取數據,產生數字化的信號,此信號通過D/A 轉換和低通濾波等處理即可變成所需模擬信號[3]!
下面以正弦波信號的產生為例說明DDS 的工作原理。假設某一頻率的正弦信號可表示為
v(t) = Asin(wt +θ )
式中,A 為正弦波幅值,w 為正弦信號角頻率,θ 為初始相位。由于A 和θ 不變,則令A=1,θ =0,得到歸一化表達式
v(t) = Asin(wt)
對于連續的正弦波信號,其相位與時間呈線性關系[2]。由這一關系可知,在一定頻率的時鐘信號作用下,通過一個線性的相位累加器對相應的波形存儲器掃描,即可周期性地讀取波形存儲器中的數據,從而合成相應的正弦波信號。如果提高時鐘信號頻率,則數據的掃描頻率加快,數據讀取速度加快,讀取一個正弦波數據的時間就會縮短,輸出信號的頻率增大,反之亦然[5]。
2 DDS 的實現方案
DDS 系統主要由FPGA 核心電路、D/A 轉換電路、低通濾波電路、鍵盤電路和顯示電路組成。系統具體實現框所示。
系統分別以Altera Cyclone II 系列FPGA EP2C8 和VerilogHDL語言為硬件及軟件平臺,在此基礎上構建DDS 核以及相關模塊。FPGA 核心電路產生的階梯數字信號通過D/A 轉換電路轉換為對應的模擬信號。綜合考慮,采用TLC5620 為D/A 轉換芯片。該芯片為8 位串行輸入D/A 轉換器,選擇其參考電壓為5V,輸出電壓控制位選擇為1 倍輸出。由于轉換后的數字信號是階梯形的模擬信號,在D/A 轉化后利用低通濾波對信號進行平滑處理。低通濾波電路以OP07 為核心,設計為壓控壓源的二階低通濾波。為方便用戶操作,在系統中引入鍵盤電路和數碼管顯示電路,用戶可自由調節輸出頻率,并通過數碼管觀察實時輸出頻率。
3 設計優化
3.1 相位累加器的優化
相位累加器是決定DDS 性能的關鍵部分。在系統的參考時鐘一定時,相位累加器的位數決定了輸出頻率的分辨率[7]。但是,相位累加器的位數越大,整個系統的速度就越慢。為此,在相位累加器中引入流水線技術。即把一個時鐘周期內要完成的邏輯操作分成幾步小的操作,并在各個操作中插入時鐘周期,以此提高數據的吞吐速率。相位累加器優化結構圖如所示。
圖中32 位的相位累加器采用4 級流水線結構。每條流水線完成8 位數據的運算,流水線之間進行級聯。流水線最后的數據通過一級寄存器輸出。輸出寄存器同時提取相位累加器的高8 位作為波形存儲器的查找地址,與波形存儲器相連。實驗表明,運用流水線技術可以成倍提高相位累加器的運算速度,但是這也大大消耗了FPGA 的邏輯資源。
3.2 波形存儲器的優化
波形存儲器中存儲著完整的波形采樣數據。如果正弦波采樣深度為N 位,那么M 位相位累加器就決定了波形存儲器所需存儲空間為N*2M 位。當M=32,N=8 時,則需要4096M的存儲空間,可見,必須對波形存儲器進行優化,提高其利用率。在相位累加器的優化中,已經利用最后一級寄存器對輸出地址進行了截位處理,但這還遠遠不夠。因此,還必須利用正弦波的對稱性對波形存儲器進行進一步優化[4]。其優化結構圖如所示。
圖中,相位累加器的輸出地址的最高位連接到相位轉換器,相位轉換器根據輸出地址最高位值判斷波形處于前半個周期(0~π)還是后半個周期(π~2π)。而地址轉換器通過輸出地址的次高位值判斷波形是上升(0~π/2)還是下降(π/2~π)。從優化方式可知,經過優化后的波形存儲器所需空間僅為以前的1/4。
3.3 按鍵模塊的優化
在頻率調整的過程中,鍵盤是必不可少的。但是,鍵盤的動作極有可能產生毛刺,由于DDS 系統的頻率較高,毛刺可能帶來系統的誤操作。因此,在按鍵操作時需要加入按鍵去抖模塊,以提高按鍵輸入的靈敏度。按鍵去抖模塊部分程序如下:
parameter TIME=10;// 設置去抖時間為10ms
clk)
if(key_in ! = 4’hf)if(scan = = TIME) // 有鍵按下10ms 后讀健
begin key_en <= 1’b1; scan <= 1’b0; end
else
begin key_en <= 1’b0; scan <= scan + 1’b1; end
else
begin
if(scan != 0) scan <= scan – 1’b1;
else begin scan <= scan;
key_en <= 1’b0;
endend
4 系統測試
在系統構建完成后,用示波器觀察輸出波形。經測量,信號發生器輸出頻率峰峰值穩定在5V 左右,輸出頻率范圍滿足設計要求,F測量7 組數據,每組數據測量5 次,測試數據如下所示。
測試結果表明,系統基本滿足預先設計要求,但在低頻時系統精度不甚理想。分析其原因,有可能是在相位累加器地址截位處理時截取位數過多所致。在系統完善過程中可通過減少截位位數,也可提高信號的采樣深度進一步提高系統的精度。
5 結束語
本文介紹了直接數字頻率合成器的基本工作原理,并在此基礎上利用FPGA 平臺實現了直接數字頻率合成器的設計。系統中除了D/A 轉換器和低通濾波器外,其他電路都集成在FPGA 中。該方案簡化了系統的設計難度,用戶可根據自身信號需要更改FPGA 中的程序,更加靈活的設計直接數字頻率合成器。
中國碩士論文網提供大量免費碩士畢業論文,如有業務需求請咨詢網站客服人員!
參考文獻
[1] 夏宇聞. Verilog 數字設計教程[M]. 北京:北京航空航天大學出版社,2003.
[2] 白居憲.直接數字頻率合成[M]. 西安:西安交通大學出版社,2007.
[3] 羅杰漢,程光偉. 基于FPGA 的DDS 設計[J]. 電子設計工程,2012,18(1):66~70.
[4] 李康順,呂小巧. 基于改進DDS 技術的FPGA 數字調制器研究與實現[J]. 壓電與聲光,2012,31(6) :852-855.
[5] 羅杰. Verilog HDL 與數字ASIC 設計基礎[M]. 武漢:華中科技大學出版社,2005.
[6] 吳繼華,王誠. 設計與驗證Verilog HDL[M]. 北京:人民郵電出版社,2006.
[7] 吳曙榮,楊銀堂. 用FPGA 實現DDS 設計[J]. 航空計算技術,2006,36(1):40~45.
【基于FPGA的DDS信號發生器的設計】相關文章:
基于FPGA的多功能波形信號發生器11-22
基于DDS技術的聲納信號模擬器03-21
基于DDS技術的正弦衰減信號源03-07
基于VHDL的DDS的設計與分析03-07
基于EDA技術的FPGA設計03-18