潘澤鍇,蘭國莉
?。◤V西職業(yè)技術(shù)學(xué)院 計算機與電子信息工程系,廣西 南寧 530226)
摘要:采用DDS技術(shù)設(shè)計工業(yè)控制現(xiàn)場測試信號源,基于VHDL語言進行系統(tǒng)建模,對DDS進行重新參數(shù)設(shè)計,實現(xiàn)IP核重構(gòu),能夠根據(jù)需要修改參數(shù)以實現(xiàn)器件的通用性;利用QuartusⅡ平臺完成具體DDS芯片設(shè)計,闡述了基于VHDL編程的DDS設(shè)計的方法步驟。經(jīng)測試,該設(shè)計各項設(shè)計指標符合要求,具有很好的實用價值。
關(guān)鍵詞:現(xiàn)場可編程門陣列;信號發(fā)生器;DDS;VHDL
中圖分類號:TN914文獻標識碼:ADOI: 10.19358/j.issn.16747720.2016.23.023
引用格式:潘澤鍇,蘭國莉. DDS工業(yè)數(shù)字移相信號發(fā)生器應(yīng)用設(shè)計[J].微型機與應(yīng)用,2016,35(23):80-82.
0引言
直接數(shù)字頻率合成信號發(fā)生器(Direct Digital Synthesize,DDS)具有易產(chǎn)生、分辨率高、絕對誤差小等優(yōu)點,在已有電子系統(tǒng)及設(shè)備的頻率設(shè)計中,以及在工業(yè)控制現(xiàn)場信號測試中得到越來越廣泛的應(yīng)用[1]。在進行工業(yè)現(xiàn)場通信信號的傳輸測試實驗中,在原有信號發(fā)生器攜帶不方便、輸出不穩(wěn)定的情況下,以DDS技術(shù)為基礎(chǔ)設(shè)計新型信號發(fā)生器,利用VHD語言實現(xiàn)對DDS功能的重新設(shè)計,可以簡單地完成在不同方式下的移植,輸出參數(shù)可以根據(jù)現(xiàn)場環(huán)境進行適當?shù)男薷模?]。在實現(xiàn)過程中使用Alter公司開發(fā)的QuartusⅡ軟件,該軟件不僅提供了VHDL開發(fā)編譯環(huán)境,還集成了DDS設(shè)計開發(fā)所需要的FPGA器件,這樣就可以大大降低開發(fā)難度和縮短開發(fā)周期[3]。
1DDS原理及系統(tǒng)分析
DDS是一種全數(shù)字、高分辨精度、反應(yīng)速度在毫微秒量級的頻率合成技術(shù),屬于開環(huán)無反饋環(huán)節(jié)的控制系統(tǒng)結(jié)構(gòu)。根據(jù)它的相位特性可知其相位是連續(xù)變化的,而且相位誤差極小,可以輸出很好的頻譜波形,一些在傳統(tǒng)的頻率合成困難的情況下使用DDS技術(shù)可以很好地完成[4]。
分析直接數(shù)字頻率合成原理,利用QuartusII軟件,基于FPGA配合相應(yīng)外圍器件實現(xiàn)多波形信號發(fā)生器,電路結(jié)構(gòu)簡單、易于擴展,具有極大的靈活性和方便性。由圖1可知,DDS波形發(fā)生器由相位累加器、波形存儲器、D/A轉(zhuǎn)換器和低通濾波器4個模塊組成[5]。
由圖1的DDS組成模塊圖可知DDS信號發(fā)生器的工作原理:在每次接收到一個時鐘脈沖fc時,頻率控制字K和相位累加器兩者之間相位數(shù)據(jù)相互累加,累加結(jié)果送累加寄存器保存,相位累加器由N位加法器與N位累加寄存器級聯(lián)組成,將獲得的累加器脈沖再反饋回去與原來累加的新接收到的下一個時鐘脈沖相加,以使加法器在下一個時鐘脈沖的作用下繼續(xù)與頻率控制字相加,不斷對相位進行累加獲得輸出脈沖。這就相當于,相位累加器在每一個脈沖到來的時候都實現(xiàn)脈沖累加,最后的脈沖輸出就是脈沖不斷累加的結(jié)果。累加輸出的頻率就是合成以后DDS信號輸出的頻率,相位累加器輸出的數(shù)據(jù)作為波形存儲器ROM的相位取樣地址,通過查表的方式可以獲得波形信號取樣,完成相位到幅值的轉(zhuǎn)換[6]。
累加器通過相位累加的方式實現(xiàn)脈沖輸出之后放于波形存儲器,波形存儲器的輸出送到D/A轉(zhuǎn)換器,D/A轉(zhuǎn)換器的主要作用就是把輸出波形的數(shù)字信號變成模擬信號,完成所需要的信號形式,但是輸出的信號可能含有毛刺,可以通過低通濾波器的方式去除毛刺和其他諧波,最后輸出一個合成頻率為f0的信號波形[7]。輸出頻率f0與時鐘頻率fc之間的關(guān)系滿足下式:
由公式(1)可知,輸出的頻率f0是時鐘脈沖fc與頻率控制字K合成的結(jié)果,同時還與位數(shù)N有關(guān),通過改變K值可以改變頻率的輸出。DDS信號發(fā)生器輸出的最小頻率可以由方程△f= f0/2N確定。頻率分辨率在fc固定時,取決于相位累加器的位數(shù)N。只要N足夠大,理論上就可以獲得足夠高的頻率分辨精度。另外,由采樣定理,合成信號的頻率不能超過時鐘頻率的一半,即f0≤fc/2,因此頻率控制字的最大值Kmax應(yīng)滿足Kmax≤2N-1。
在FPGA內(nèi)部比較容易產(chǎn)生信號生成模塊,而單純的DDS芯片不但價格高,而且功耗大,在這方面使用FPGA技術(shù)就有很大的優(yōu)勢。鑒于此,本設(shè)計采用FPGA技術(shù)產(chǎn)生DDS信號發(fā)生器來實現(xiàn)任意波形發(fā)生器的設(shè)計。
2DDS設(shè)計與實現(xiàn)
2.1DDS波形發(fā)生器總體設(shè)計
根據(jù)DDS的基本原理及系統(tǒng)分析,可以比較具體地設(shè)計出整個波形發(fā)生器的總體方案,如圖2所示。
根據(jù)設(shè)計的波形發(fā)生器的原理圖,在設(shè)計中需要對重現(xiàn)信號波形進行周期性取樣作為參考波形,DDS控制器根據(jù)參考波形設(shè)定頻率參數(shù),和需要選擇的輸出波形參數(shù)存儲在波形RAM單元中;根據(jù)待設(shè)波形進行幅度設(shè)定,把頻率設(shè)定參數(shù)和經(jīng)過幅度變換后的波形進行線性疊加后經(jīng)D/A轉(zhuǎn)換輸出信號波形[4]。
本設(shè)計中調(diào)用LPM即參數(shù)可設(shè)置模塊庫來生成存儲器模塊。在設(shè)計波形信號發(fā)生器的過程中,如果要使用FPGA特定的器件,那么在設(shè)計VHDL程序中亦要使用與該期間配套的宏模塊功能,而這些在軟件使用中可以以圖形或是硬件語言描述的形式來實現(xiàn),可大大提高設(shè)計的效率和可靠性[5]。
2.2系統(tǒng)FPGA設(shè)計實現(xiàn)
利用FPGA實現(xiàn)雙DDS 的相位累加器,通過數(shù)字方法實現(xiàn)頻率調(diào)制,通過查表的方式,DDS利用RAM操作總線與FPGA內(nèi)部CPU通信,實現(xiàn)各種波形[6]。實現(xiàn)的基本原理如圖3所示。
在實際測試中以正弦波為例,系統(tǒng)采用QuartusII軟件進行設(shè)計,使用GW48 EDA/SOPC實驗開發(fā)平臺進行調(diào)試,系統(tǒng)分為波形數(shù)據(jù)ROM模塊、32位加法器模塊、32位寄存器模塊、10位加法器模塊、10位寄存器模塊等幾部分[7]。
2.3用戶控制
系統(tǒng)使用實驗開發(fā)平臺的鍵盤和LED接口實現(xiàn)人機交互,通過鍵盤設(shè)定待輸出的波形、波形的頻率以及波形的幅度等參數(shù)。
待輸出波形部分使用了3個按鍵,每個按鍵對應(yīng)一種波形,對應(yīng)的發(fā)光二極管顯示有效狀態(tài),并且可以多個按鍵同時起作用,此時即波形的線形疊加,該功能的實現(xiàn)是通過使能對應(yīng)的波形數(shù)據(jù)ROM的輸出和幅值控制的輸出實現(xiàn)的[8]。
頻率調(diào)節(jié)使用了一個雙向計數(shù)器給DDS控制器賦值來控制輸出信號的頻率(周期輸出點數(shù)),其中雙向計數(shù)器有一個輸入端控制計數(shù)方向,即加還是減,另一個進行計數(shù)。該部分設(shè)計受實驗臺的限制(按減少)不能直接輸入數(shù)字,因此設(shè)定比較慢,而頻率設(shè)定的具體數(shù)值在實驗臺上可使用兩位數(shù)碼管來顯示。
設(shè)計的相位累加器對于每來一個時鐘脈沖加法器就會與累加寄存器的累加相位相加,在一個時鐘作用之后,加法器的輸入端又會加入新的相位數(shù)據(jù),與上一個時鐘周期的相位進行累加。當相位累加器加滿之后會溢出,實驗中以相鄰兩次累加器溢出時間間隔為一個周期合成DDS信號,而在每次信號合成的取數(shù)環(huán)節(jié)之前,會在累加器輸出的信號加上相位移,以此來對相位進行調(diào)節(jié)[9] 。
因為幅值分別對應(yīng)3種不同類型的波形,因此需要對其分別設(shè)定,該部分共使用了3個按鍵,其中一個按鍵用來設(shè)定待調(diào)節(jié)幅值的波形,直接使用一加計數(shù)器,通過實驗平臺上的輸出發(fā)光二極管來顯示所選定的波形。幅值大小的調(diào)整同頻率調(diào)整,使用了雙向計數(shù)器,調(diào)整的輸出由乘除器進行變換后輸出[10]。設(shè)定波形幅度的數(shù)值顯示在實驗臺的LED數(shù)碼管上,每個波形幅值顯示使用兩位LED數(shù)碼管,供使用6個。
3功能測試與結(jié)果輸出
使用QuartusII任意生成一個1 024單元10 bit寬的mif文件,將其中的信息拷入到sin_rom.mif中,最后將生成的sin_rom.mif加入到LPM_ROM中去[7]。QuartusII提供了強大、直觀、便捷和操作靈活的原理圖輸出設(shè)計功能,本實驗輸出的原理圖如圖4。
利用FPGA設(shè)計DDS信號發(fā)生器后使用QuartusII進行時序仿真,設(shè)置好相應(yīng)的仿真參數(shù),得出的仿真波形如圖5所示。
使用QuartusII自帶的Signal tap邏輯分析儀進行硬仿真測試,為了能對此信號進行硬件測試,將芯片固定的端口與輸入輸出信號綁定,通過軟件編譯好之后下載到硬件進行測試。
在測試完成之后,重新對配置芯片進行編程,最終完成信號發(fā)生器信號的輸出。圖6、圖7是在相同條件下不同頻率的正弦波對應(yīng)的邏輯分析儀采樣結(jié)果。
通過測試表明,設(shè)計的DDS數(shù)字移相信號發(fā)生器具有連續(xù)輸出正弦波波形的功能,使用鍵盤輸入具有產(chǎn)生周期性先行組合波形的能力,輸出波形的頻率范圍在100 Hz~200 kHz,且頻率步進間隔≤100 Hz,具有顯示輸出波形的類型、重復(fù)頻率(周期)和幅度的功能。
4結(jié)論
采用FPGA器件,利用VHDL語言對DDS信號發(fā)生器進行重新設(shè)計與實現(xiàn),可以在不同的方式下進行移植和參數(shù)修改,信號發(fā)生器輸出信號穩(wěn)定,便于攜帶。通過測試表明各項設(shè)計指標符合要求,具有很好的實用價值。
參考文獻
[1] 丁革媛, 李振江,宋揚,等. 工業(yè)控制系統(tǒng)中的安全隱患分析[J].微型機與應(yīng)用,2015,34(1):7-9.
?。?] 白麗娜,周渭,趙桀,等. 一種和DDS結(jié)合的高分辨率頻率計設(shè)計[J].西安電子科技大學(xué)學(xué)報,2012,39(4):126-130.
?。?] 鄧耀華,吳黎明,張力鍇,等.基于FPGA的雙DDS任意波形發(fā)生器設(shè)計與雜散噪聲抑制方法[J].儀器儀表學(xué)報,2009,30(11):2255-2261.
[4] 潘松,黃繼業(yè).EDA 技術(shù)與VHDL(第2版)[M].北京:清華大學(xué)出版社,2007.
?。?] 張萍.基于DDS 的寬帶信號發(fā)生器的設(shè)計[J].江南大學(xué)學(xué)報,2015,14(6):782-786.
?。?] 閻石.數(shù)字電子技術(shù)基礎(chǔ)(第四版)[M].北京:高等教育出版社,2003.
[7] 王豐華,李建清,吳劍鋒.多源表面溫度信號發(fā)生裝置的硬件設(shè)計[J].儀表技術(shù)與傳感器,2014(1):83-85.
[8] 李雪梅,張宏財,王學(xué)偉.基于DDS技術(shù)的信號源設(shè)計[J].電測與儀表,2010,47(1):55-57.
?。?] 楊萍,兀旦暉,楊良煜.DDS技術(shù)在正弦信號發(fā)生器中的應(yīng)用[J].計算機測量與控制,2008,16(11):1738-1740.
[10] 李敏,金勵豪.矩形波信號發(fā)生電路的設(shè)計與分析[J].電子技術(shù),2013(10):34-36.