黃玉健,黃永慶
(1.2.梧州學(xué)院 圖像處理與智能信息系統(tǒng)廣西高校重點實驗室,廣西 梧州 543002)
基于FPGA的DDS多功能信號發(fā)生器的設(shè)計
黃玉健1,黃永慶2
(1.2.梧州學(xué)院 圖像處理與智能信息系統(tǒng)廣西高校重點實驗室,廣西 梧州 543002)
多功能信號發(fā)生器作為一種基本電子設(shè)備在教學(xué)、電子信息工程和科研等領(lǐng)域,都有著廣泛的使用。該文以直接數(shù)字頻率合成技術(shù)(DDS)為核心,描述了基于FPGA的DDS多功能信號發(fā)生器的原理結(jié)構(gòu)和設(shè)計方法,重點闡述了FPGA的DDS內(nèi)核設(shè)計方法。設(shè)計結(jié)果表明,與普通的信號發(fā)生器相比,基于FPGA的DDS為核心技術(shù)的信號發(fā)生器能夠靈活產(chǎn)生更加精準(zhǔn)、更加穩(wěn)定和更寬頻率范圍的正弦波、方波、三角波和鋸齒波等信號。
多功能信號發(fā)生器; DDS; FPGA
信號發(fā)生器作為一種基本頻率源發(fā)生器無論是在教學(xué)、電子信息工程和科研等領(lǐng)域,都有著廣泛的使用。隨著通信技術(shù)、衛(wèi)星定位系統(tǒng)、精密機械控制以及航空航天測控等領(lǐng)域?qū)y控技術(shù)要求的不斷提高,對信號發(fā)生器的穩(wěn)定度、精確度和頻率帶寬等要求越來越高,而傳統(tǒng)振蕩器由于產(chǎn)生的頻率信號精度不高、太單一或者只能在比較小范圍內(nèi)調(diào)節(jié)頻率而不能滿足要求[1]。 利用頻率合成技術(shù)就是解決該問題的最好方法之一。直接數(shù)字頻率合成技術(shù)DDS(Direct Digital Synthesizer)是一種新型的頻率合成技術(shù),它是把一系列數(shù)字信號通過D/A 轉(zhuǎn)換器轉(zhuǎn)換為模擬信號的合成技術(shù)[1]。DDS能夠在頻率帶寬比較寬的范圍內(nèi)實現(xiàn)比較高的頻率分辨率,可以實現(xiàn)快速頻率切換,并且在頻率改變時能夠保持相位的連續(xù),比較容易實現(xiàn)頻率、相位和幅度的數(shù)控調(diào)制[2]。
利用專門DDS芯片設(shè)計產(chǎn)生信號源也是設(shè)計信號發(fā)生器的一種方法,該方法優(yōu)點是輸出正弦信號頻率范圍大、波形好;缺點是DDS芯片的ROM里一般都只存儲正弦波,產(chǎn)生其他波形需要加上一些外圍電路的方式獲得,產(chǎn)生波形速度受到很大的限制,頻率帶寬受影響嚴(yán)重,導(dǎo)致使用不夠靈活[3]。為了增加靈活性,使產(chǎn)生的各種波形都能在頻率帶寬比較寬的范圍內(nèi)實現(xiàn)比較高的頻率分辨率,實現(xiàn)快速精確的頻率、相位和幅度的數(shù)字化控制,可以采用FPGA實現(xiàn)DDS技術(shù),把DDS中的ROM改用SRAM,SRAM作為一個波形抽樣數(shù)據(jù)的公共存儲器,事先存儲多種波形數(shù)據(jù),只要改變存儲波形的數(shù)據(jù)以及輸入的頻率字,就可以靈活地產(chǎn)生多種波形不同頻率的信號。
本文的組織結(jié)構(gòu)如下:第2節(jié)對FPGA的DDS信號發(fā)生器原理進行理論分析;第3節(jié)應(yīng)用FPGA內(nèi)部豐富的邏輯電路,按照DDS電路的結(jié)構(gòu)特點,構(gòu)造出相應(yīng)的電路,并進行仿真和輸出波形分析。第4節(jié)對本文進行總結(jié)。
1.1 DDS理論原理
對于正弦波信號來說,可以用公式(1)進行描述:
F=Asinθ=Asin(2πft)
(1)
公式(1)中,F(xiàn)是正弦信號波形;A是正弦波信號的幅度,f是正弦波信號的頻率。需要注意的是,公式(1)中的時間t是連續(xù)的。為了實現(xiàn)數(shù)字化設(shè)計,必須對公式(1)進行離散化處理,方法是用基準(zhǔn)時鐘clko進行抽樣。
根據(jù)公式(1),正弦波信號的相位θ為:
θ=2πft
(2)
因此,在一個基準(zhǔn)時鐘clko周期內(nèi)Tclko,相位θ的變化量Δθ為:
(3)
現(xiàn)在對Δθ進行數(shù)字量化,對公式(3),把2π分成2N等份,這樣Δθ可以用量化值BΔθ來表達為:
(4)
公式(4)中BΔθ為整數(shù)。聯(lián)立公式(3),得:
(5)
這樣,正弦波信號發(fā)生器的輸出可以描述為:
(6)
公式(6)中θk-1指clko前一個周期的相位值。根據(jù)公式(4),可以得到:
(7)
從推導(dǎo)可以知道,正弦波信號的當(dāng)前相位值可以通過對相位的量化值進行累加運算的方法得到,信號的輸出頻率f由相位增量量化值BΔθ決定,從公式(5)可知,兩者是簡單的線性關(guān)系。
DDS信號發(fā)生器就是根據(jù)上述理論原理設(shè)計的,下面根據(jù)上述理論原理進行具體的設(shè)計分析。
1.2 DDS多功能信號發(fā)生器設(shè)計原理
圖1 DDS結(jié)構(gòu)原理圖
圖1是根據(jù)上述DDS理論原理而設(shè)計出的數(shù)控頻率合成器的結(jié)構(gòu)原理圖。它的幾個主要構(gòu)成部分為:相位累加器、相位調(diào)制器、正弦ROM查找表以及DA轉(zhuǎn)換器。這樣輸出得到的是正弦波,當(dāng)需要輸出方波、三角波和鋸齒波時,只需把正弦ROM查找表中的數(shù)據(jù)換成相應(yīng)波形ROM查找表就可以了。后面的設(shè)計分析均是以生成正弦波為例。圖1 的數(shù)字部分相位累加器、相位調(diào)制器、正弦ROM查找表具有數(shù)控頻率合成功能,所以又稱為NCO(Numerically Controlled Oscillators)。
相位累加器的功能是完成相位累加功能,是DDS的核心。它的輸入是相位增量BΔθ,由式(5)可知,輸出頻率f與BΔθ相位增量之間是線性關(guān)系,當(dāng)基準(zhǔn)時鐘fclko剛好等于2N時,相位增量BΔθ就等于輸出頻率f。相位累加器的輸入就是頻率字經(jīng)過同步寄存器后的輸出,同步寄存器的功能是當(dāng)頻率字改變時相位累加器的正常工作不至于被干擾。 相位調(diào)制器的作用是對相位累加器的輸出信號進行相位調(diào)制,其中相位字輸入到相位調(diào)制器之前也要先經(jīng)過同步寄存器保持。一般而言,相位字輸入的數(shù)據(jù)寬度M通常遠小于頻率字輸入數(shù)據(jù)寬度N。
正弦波ROM查找表的功能是完成一個周期離散正弦數(shù)據(jù)查表的轉(zhuǎn)換,相位調(diào)制器的輸出就是ROM的地址值,根據(jù)地址值找到相應(yīng)的離散正弦數(shù)據(jù),輸出一個周期的離散正弦波數(shù)據(jù)后經(jīng)D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬信號,就得到最終的正弦波信號。
下面計算DDS結(jié)構(gòu)中常用參數(shù):
① 由DDS原理推導(dǎo)公式(5)可以得出輸出頻率為
(8)
公式(8)中,fclko是基準(zhǔn)時鐘的頻率,N是相位累加器的數(shù)據(jù)位寬度,BΔθ是頻率控制字,也稱頻率輸入字,在硬件設(shè)定已經(jīng)確定,也就是fclko和N都設(shè)計定型了的情況下,輸出頻率值就由當(dāng)時輸入的BΔθ來確定。需要注意的是,頻率控制字的數(shù)據(jù)位寬度也是N,即BΔθ的最大值就是二進制N個1,此時輸出頻率值達到最大值,與基準(zhǔn)頻率相等,即fmax=fclko。
② DDS系統(tǒng)的頻率分辨率Δf,即俗稱輸出頻率最小步進值,就是頻率控制字BΔθ步進一個最小間隔,亦即BΔθ=1對應(yīng)的頻率輸出值。由公式(8)得到:
(9)
由公式(8)和公式(9)可知,只要基準(zhǔn)頻率fclko足夠高頻足夠穩(wěn)定,同時N足夠大,利用DDS技術(shù),可以實現(xiàn)輸出任意頻率和任意精度的正弦信號波形[4],而同在FPAG中利用鎖相環(huán)技術(shù),fclko實現(xiàn)高頻高穩(wěn)定基準(zhǔn)時鐘功能是很容易的。在具體設(shè)計中,只要更改ROM查找表中的正弦波形數(shù)據(jù)為其他波形數(shù)據(jù),就可以實現(xiàn)其他的波形信號輸出。這就是DDS多功能信號發(fā)生器的設(shè)計原理。
2.1基于FPGA的DDS應(yīng)用設(shè)計[2]
圖2是根據(jù)圖1 DDS結(jié)構(gòu)原理圖而設(shè)計的DDS正弦波信號發(fā)生器頂層電路原理圖,圖中相位累加器的數(shù)據(jù)位寬度N=32。下面對主要模塊和接口分別進行介紹。
① 32位加法器模塊jiafaqi32,由宏模塊LPM_ADD_SUB設(shè)計而成。為保證此加法器模塊具有比較高的運算速度和輸入數(shù)據(jù)穩(wěn)定性,特意設(shè)置了2階流水線結(jié)構(gòu)。
② 32位寄存器模塊jicunqi32,由宏模塊LPM_FF設(shè)計而成。它和加法器模塊jiafaqi32一起構(gòu)成數(shù)據(jù)位寬度N為32的相位累加器。因為該設(shè)計中正弦波查找表ROM的地址線是10位,因此把高10位A[31..22]設(shè)置為正弦波查找表ROM的地址。
③ 正弦波產(chǎn)生模塊zhengxianbo_rom,由宏模塊ROM:1-PORT設(shè)計得到??紤]輸出波形質(zhì)量和硬件配置,設(shè)置地址線為10位,亦即,一個周期的離散正弦波數(shù)據(jù)為210=1024個;數(shù)據(jù)線位寬也設(shè)置為10位,亦即,每個波形數(shù)據(jù)有10位。需要注意,該模塊的輸出波形是離散的正弦波型,需要接一個10位高速D/A轉(zhuǎn)換器才可以得到連續(xù)的模擬正弦波信號。
④ 頻率控制字輸入接口B[23..16]。設(shè)計的頻率控制字是32位的,這里暫時把B[31..24]輸入預(yù)先設(shè)置成0,B[15..0]輸入預(yù)先設(shè)置成1,目的是為了更好地仿真和實驗,這樣需要輸入的B[23..16]8位數(shù)據(jù)就容易從實驗箱或?qū)嶒灠迳陷斎氲玫健?/p>
由公式(8)可以得到輸出正弦波信號DAC[9..0]的頻率f與頻率控制字B[31..0]的關(guān)系為:
(10)
公式(10)中fclko是輸入基準(zhǔn)時鐘CLK的頻率,在本設(shè)計里fclko=50MHz。根據(jù)公式(9)可得輸出頻率分辨率Δf最小為0.012Hz,頻率字每變化56H,輸出頻率變化1Hz。若不考慮DAC的速度限制,本設(shè)計理論上輸出信號頻率最高為50MHz。如果需要更高的頻率,可以通過接入鎖相環(huán)并配合高速DAC的方式得到。
2.2 電路仿真及輸出信號波形分析
圖3是圖2 DDS正弦波信號發(fā)生器頂層電路原理圖的輸入輸出仿真圖。這個圖只是截取了局部的輸入輸出仿真數(shù)據(jù),通過該圖能看出DDS信號發(fā)生器頻率控制字輸入B[23..16]與輸出信號DAC[9..0]的關(guān)系:隨著B[23..16]的加大,輸出信號DAC[9..0]的數(shù)據(jù)輸出速度跟著提高。圖3中當(dāng)B[23..16]分別等于1DH、66H、F8H時,DAC[9..0]的數(shù)據(jù)輸出速度明顯不同,輸入F8H時的輸出信號頻率明顯高于輸入1DH時的輸出信號頻率。
下頁的圖4和圖5分別是DDS信號發(fā)生器在B[23..16]=66H和B[23..16]=F8H時輸出信號為正弦波時的SignalTap II實時數(shù)據(jù)采樣波形圖。
圖2 DDS正弦波信號發(fā)生器電路頂層原理圖
圖3 DDS正弦波信號發(fā)生器電路頂層原理仿真波形圖
圖4 DDS信號發(fā)生器在B[23..16]=66H時正弦波SignalTap II實時數(shù)據(jù)采樣波形圖
圖5 DDS信號發(fā)生器在B[23..16]=F8H時正弦波SignalTap II實時數(shù)據(jù)采樣波形圖
從圖4和圖5可以看出,生成的正弦波光滑整潔,幾乎沒有毛刺,B[23..16]=66H時輸出的正弦波頻率明顯低于B[23..16]=F8H時輸出的正弦波的頻率。
圖6 DDS信號發(fā)生器在B[23..16]=F8H時方波SignalTap II實時數(shù)據(jù)采樣波形圖
圖7 DDS信號發(fā)生器在B[23..16]=F8H時鋸齒波SignalTap II實時數(shù)據(jù)采樣波形圖
圖8 DDS信號發(fā)生器在B[23..16]=F8H時鋸齒波SignalTap II實時數(shù)據(jù)采樣波形圖
圖6、圖7和圖8分別是B[23..16]=F8H時輸出方波、鋸齒波和三角波的SignalTap II實時數(shù)據(jù)采樣波形,可以看出輸出的波形質(zhì)量較好。
圖9 DDS信號發(fā)生器輸出方波時帶測頻功能電路頂層原理圖
圖10 B[23..16]=F8H時測量方波頻率SignalTap II實時數(shù)據(jù)采樣圖
圖11 采用DAC900輸出方波信號頻率為10MHz時SignalTap II實時數(shù)據(jù)采樣圖
為了檢測所設(shè)計的DDS信號發(fā)生器輸出信號的頻率精度,在圖2的基礎(chǔ)上加上測量頻率的模塊。如圖9所示,就是DDS信號發(fā)生器輸出方波時帶測頻功能電路頂層原理圖。其中fangbo_rom模塊的地址線和數(shù)據(jù)線位寬跟產(chǎn)生正弦波時是一樣的,也都是10位,不同的地方僅僅是離散波形數(shù)據(jù),這里是一個周期的方波離散數(shù)據(jù)。pinlvji_32B是頻率測量模塊,測量頻率的信號取自方波信號輸出的最高位q[9],因為方波數(shù)據(jù)中各位數(shù)據(jù)是一樣的,也可以取輸出的其他位。SEG7[6..0]是輸出頻率數(shù)據(jù)經(jīng)七段譯碼后的數(shù)據(jù),接到七段數(shù)碼顯示器。由于8個七段數(shù)碼顯示器采用動態(tài)掃描的形式顯示,LEDCOM[7..0]接到8個七段數(shù)碼顯示器的位選口。
圖10是B[23..16]=F8H時測量方波頻率SignalTap II實時數(shù)據(jù)采樣圖,其中data_out是頻率測量模塊pinlvji_32B內(nèi)部頻率測量后七段譯碼前的數(shù)據(jù),是輸出方波數(shù)據(jù)DAC[9..0]的實時頻率數(shù)據(jù)。根據(jù)輸出信號頻率公式(10)可知,B[23..16]=F8h時,輸出頻率為:
而從圖10可知B[23..16]=F8H時輸出方波的測量頻率也是189972Hz。下頁表1是DDS信號發(fā)生器輸出方波信號時15個理論值和實際輸出測量值對比,可見輸出信號的頻率精度非常高,輸出頻率步進值也能穩(wěn)定達到1Hz。由于輸出其他波形信號時僅僅是產(chǎn)生波形模塊里的離散波形數(shù)據(jù)不一樣,其他都是一樣的,所以其輸出頻率精度也是一樣的。需要說明的是,雖然本設(shè)計的DDS信號發(fā)生器信號輸出頻率精度非常高,但在輸出高頻信號時,需要DAC芯片的速度也比較高,否則輸出信號頻率達到一定值時,信號質(zhì)量會受影響。例如采用DAC0832,由于DAC0832的輸出速度額定值最高只有1MHz,當(dāng)輸出信號頻率達到2MHz時,信號形狀開始明顯變壞。圖11為采用高速DAC芯片DAC900時輸出信號頻率達到10MHz時的波形以及測量值,可見頻率精度和波形質(zhì)量都還非常好。
表1 DDS信號發(fā)生器輸出方波信號時15個理論值和測量值對比表
輸入頻率字B[31..0]輸出理論值(Hz)實際測量值(Hz)56H11ACH2210C7H5050218EH100100FFFFH76376314F8BH1000100083126FH100001000066FFFFH7858378583F8FFFFH18997218997228F5C29H5000005000004189375H80000080000051EB852H10000001000000A3D70A4H20000002000000199999AH5000000500000033333333H1000000010000000
本文基于FPGA的DDS理論原理,用EDA方法通過FPGA方式設(shè)計了一個DDS信號發(fā)生器。仿真結(jié)果以及實際輸出信號結(jié)果證明,該設(shè)計方法產(chǎn)生的信號發(fā)生器能夠輸出頻率精度高、波形質(zhì)量好、頻率帶寬大的正弦波、方波、鋸齒波以及三角波。若配合鎖相環(huán)技術(shù)和高速DAC芯片,則可以得到更寬泛頻率的信號輸出。
[1] 崔永俊,王晉偉,賈磊,等.基于FPGA的DDS信號發(fā)生器的設(shè)計與實現(xiàn)[J].電子器件,2016,39(2):339-343.
[2] 潘松,黃繼業(yè),潘明.EDA技術(shù)實用教程—Verilog HDL版[M]. 5版.北京:科學(xué)出版社,2013:190-193.
[3] 黃燕.基于FPGA的DDS信號發(fā)生器的研究[D].南京:南京林業(yè)大學(xué),2012.
[4] 廖磊,何魏,周曉林.單片機與FPGA實訓(xùn)教程[M].北京:科學(xué)出版社,2016:310-317.
(責(zé)任編輯:覃華巧)
2017-03-30
梧州市科學(xué)研究與技術(shù)開發(fā)項目(200933(58))
TN741
A
1673-8535(2017)03-0010-07
黃玉健(1975-),男,廣西滕縣人,梧州學(xué)院圖像處理與智能信息系統(tǒng)廣西高校重點實驗室講師,研究方向:智能控制。
黃永慶(1968-),男,廣西貴港人,梧州學(xué)院圖像處理與智能信息系統(tǒng)廣西高校重點實驗室副主任,高級工程師,研究方向:智能控制。