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