摘 要: 利用LabView圖形化虛擬儀器開發(fā)平臺,,設(shè)計一個基于FPGA的DDS(直接數(shù)字頻率合成)信號發(fā)生器,。通過FPGA的下位機和LabView上位機的配合使之能夠輸出多種固定波形和任意波形,,在不用改變硬件平臺的情況下,,能夠隨時對系統(tǒng)進行重構(gòu)或拓展開發(fā),。
關(guān)鍵詞: LabView,;FPGA,;DDS
0 引言
信號發(fā)生器是一種常用的信號源,,廣泛應(yīng)用于電子電路,、自動控制和科學實驗等領(lǐng)域[1],并在電路實驗和設(shè)備檢測中具有十分廣泛的用途,。目前,,實驗室的信號發(fā)生器多采用購買的精密儀器,不但價格昂貴,,而且不能發(fā)揮全部功能,,造成資源浪費。本課題基于虛擬儀器開發(fā)平臺LabView設(shè)計了任意波信號發(fā)生器,,利用這種圖形化的編程語言,,用戶只需通過上位機即可實現(xiàn)任意波形載入以及信號發(fā)生器的控制,,擺脫了傳統(tǒng)儀器獨立使用、手動操作的模式[2],。
1 DDS的基本概念
DDS是根據(jù)正弦函數(shù)的產(chǎn)生,,從相位出發(fā),由不同的相位給出不同的電壓幅度,,即相位——正弦幅度變換,,最后濾波、平滑輸出所需要的頻率[3],。典型的DDS原理方框圖如圖1所示,。它包括如下基本的部件:相位累加器、波形存儲器,、D/A變換器,、低通濾波器[4]。
相位累加器類似于一個簡單的計數(shù)器,,由加法器與累加寄存器級聯(lián)構(gòu)成,,它將相位寄存器輸出端反饋到加法器輸入端,實現(xiàn)累加功能[4],。每來一個時鐘脈沖,,頻率控制字與相位累加器累加,得到波形相位值,,這些數(shù)據(jù)作為波形存儲器的取樣地址,,在ROM中進行波形相位—幅度的轉(zhuǎn)換,并輸出數(shù)字化的波形,。然后ROM輸出給D/A變換器,,將數(shù)字量化的波形幅度值轉(zhuǎn)換成一定頻率的模擬信號。最后,,D/A輸出的臺階信號再經(jīng)過濾波器平滑以得到精確連續(xù)的信號波形,。
下面建立DDS輸出頻率與其他一些參數(shù)之間的基本關(guān)系[5]:
fc——參考時鐘頻率,Tc=1/fc,;
fo——輸出頻率,,To=1/fo;
K——頻率控制字,。
設(shè)累加器的長度是N位,,通常不可能使用全部的N位作為存儲相位信息來控制ROM產(chǎn)生一整周正弦波的輸出,比如說使用M位(N位中的最高的M位,,M<N,,即相位截斷)。完成一整周的正弦波輸出需要經(jīng)過2π/(K×(2π/2N))個參考時鐘周期,,即2N/K個周期,。因此可以得到輸出頻率的周期為:,。
最高的基波合成頻率受奈奎斯特采樣定律的限制(至少每周兩次抽樣才能重構(gòu)波形),所以有:,,K=2N-1,。
2 系統(tǒng)設(shè)計方案
本設(shè)計利用DDS原理,采用Verilog語言并在QuartusⅡ9.1環(huán)境下實現(xiàn)了對FPGA部分的設(shè)計和編程,,并且在計算機上使用LabView設(shè)計一個用于控制下位機的面板,。
2.1 總體設(shè)計框圖
總體框圖如圖2所示,LabView的上位機界面主要用于實現(xiàn)波形的選擇,、調(diào)整以及任意波形的繪制,,并且實現(xiàn)對于下位機硬件部分FPGA以及外擴電路的控制?;贔PGA下位機的硬件部分,主要包含了DDS模塊以及外圍電路部分,。在整個系統(tǒng)工作的過程當中,,外部晶振提供了USBFIFO2.0模塊、NIOS II內(nèi)核模塊,、相位累加器模塊,、存儲器模塊以及DA模塊的時鐘信號。
2.2 基于LabView上位機信號發(fā)生器設(shè)計
LabView是一種圖形化的編程語言和開發(fā)環(huán)境,,它結(jié)合了圖形化編程方式的高性能與靈活性,,開發(fā)周期短,運行速度快[6],。用戶可以隨心所欲地根據(jù)自己的需求,,設(shè)計儀器系統(tǒng),滿足多種多樣的應(yīng)用需求,。因此,,用LabView對任意波信號發(fā)生器的設(shè)計是一種最理想的方法,可以在一定硬件基礎(chǔ)上獲得更多的功能,,使得整個系統(tǒng)更加緊湊[7],。
圖3為一個波形信號發(fā)生器的前面板設(shè)計,該前面板可以同時實現(xiàn)固定波形以及任意波形的調(diào)整功能,。在主程序面板上,,用戶可以通過鼠標和鍵盤控制面板上的開關(guān)和按鈕,從而實現(xiàn)對信號發(fā)生器的控制,。
前面板左邊部分為波形顯示模塊,,通過右邊部分對采樣信息和頻率進行調(diào)節(jié),對波形類型的選擇,,并可對波形幅值,、垂直偏置進行調(diào)整,,最終將波形顯示出來。當用戶需要選擇任意波形時,,只需將布爾開關(guān)選擇到任意波形,,再通過鼠標點擊在波形繪制面板上進行手工繪制即可。當按下鼠標左鍵時,,布爾燈亮,,拖動鼠標,顯示界面會按照使用者繪制的鼠標圖形進行采樣取值,,X軸和Y軸分別顯示波形幅值和采樣的時間,。繪制完成后點擊停止按鈕,跳出循環(huán),,結(jié)束運行程序,。其中CLEAR按鈕的作用是清除信號,此控件只有想要改變信號發(fā)生器的初始相位時方能用到,,在VI程序運行過程中,,如果用戶想要改變發(fā)生器的初始相位,點擊該按鈕,,所畫的波形圖則被清除,。
波形信號發(fā)生器程序框圖如圖4、圖5所示,,在while循環(huán)中嵌套一個case結(jié)構(gòu),,當在前面板中布爾開關(guān)選擇固定波形時,case結(jié)構(gòu)為真,,如圖4,;當開關(guān)選擇任意波形時,case結(jié)構(gòu)為假,,如圖5,。
圖4中,后面板的固定波形程序設(shè)計是一個布爾型輸入條件結(jié)構(gòu),,相當于IF ELSE結(jié)構(gòu),,存在0、1,、2,、3四個分支,分別代表三角波,、鋸齒波,、正弦波、方波四種波形,。體現(xiàn)在前面板是利用一個下拉列表來選擇多種不同的波形,。
根據(jù)課題設(shè)計所要實現(xiàn)的功能,,任意波信號發(fā)生器采用手繪的方法,波形繪制功能的程序框圖如圖5所示,。
手繪任意波形功能的程序采用了事件結(jié)構(gòu)(Event Structure)技術(shù),,所謂事件結(jié)構(gòu)就是在某種情況、某個時間發(fā)生某事件的時候給出一個提示,。事件的檢測和處理一般是連續(xù)進行的,,因此,事件結(jié)構(gòu)也應(yīng)該是連續(xù)被調(diào)用的,,常見的事件結(jié)構(gòu)是while循環(huán)+事件結(jié)構(gòu),。該手繪任意波形的過程中定義了幾個用戶事件:鼠標移動、鼠標釋放,、鼠標按下,、值改變。下面分別介紹各事件分支的設(shè)計功能:
[0]事件分支:鼠標移動,,坐標至XY映射,,采集鼠標拖動時產(chǎn)生的軌跡點,輸入給條件結(jié)構(gòu)中一個數(shù)組簇里,,該條件結(jié)構(gòu)嵌套在事件結(jié)構(gòu)中,,最后在波形圖上輸出采集到的波形,。
[1],、[2]事件分支:鼠標釋放,鼠標按下,,在局部變量布爾上增添一個布爾開關(guān),,當鼠標按下時,布爾輸入是T真常量,,布爾燈亮,,程序開始采集。當鼠標釋放,,布爾輸入為F假常量,,布爾燈滅,程序采集結(jié)束,。
[3]事件分支:“clear”值改變,,在事件結(jié)構(gòu)中只加入一個cancel控件,在前面板中命名為clear,,當按下clear按鈕時,,無輸入,波形輸出不顯示,,實現(xiàn)清除功能,。
3 實驗結(jié)果及結(jié)論
按照表1所設(shè)置的參數(shù)設(shè)置固定波形信號發(fā)生器,,以正弦波舉例,得到的波形如圖6所示,。
通過鼠標手工繪制的任意波形如圖7所示,。
本設(shè)計在LabView2012版本的平臺下實現(xiàn)一個任意波信號發(fā)生器,具有設(shè)計簡單,、靈活性強的優(yōu)點,,徹底打破了傳統(tǒng)儀器由廠家定義、用戶無法改變的模式[8],。隨著網(wǎng)絡(luò)和虛擬技術(shù)的不斷發(fā)展,,虛擬儀器不僅是21世紀儀器發(fā)展的方向,而且必將逐步取代傳統(tǒng)的硬件化電子儀器,,使成千上萬種傳統(tǒng)儀器都融入計算機體系中[9],。
參考文獻
[1] 張永瑞,劉振起,,楊林耀,,等.電子測量基礎(chǔ)[M].西安:西安電子科技大學出版社,2004.
[2] 樊睿.基于LabView的虛擬波形發(fā)生器的設(shè)計[D].西安:西安理工大學,,2010.
[3] 白居憲.直接數(shù)字頻率合成[M].西安:西安交通大學出版社,,2007.
[4] 張萍,高海霞,,柴常春,,等.用于DDS系統(tǒng)相位累加器的加法器設(shè)計[J].現(xiàn)代電子技術(shù),2007,,30(13):49-50.
[5] 胡力堅.基于DDS任意波發(fā)生器設(shè)計[D].西安:西安電子科技大學,,2009.
[6] 劉暢,張立成,,蔣宏.基于LabView和SOPC的任意波形發(fā)生器設(shè)計[J].電子測量技術(shù),,2011,34(1):66-68,,81.
[7] 宮琴,,陳曦,劉京雷,,等.新型耳穴檢測系統(tǒng)的研制[J].儀器儀表學報,,2009,30(10):2213-2218.
[8] 秦豐,,狄瑞坤,,歐陽珍.基于圖形化編程語言LabView的虛擬儀器開發(fā)[J].機床與液壓,2004(8):107-109.
[9] 李震,柯旭貴,,汪云祥.虛擬儀器的發(fā)展歷史,,研究現(xiàn)狀與展望[J].安徽工程科技學院學報,2003,,18(4):1-4.