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