摘 要: 利用LabView圖形化虛擬儀器開發(fā)平臺,設(shè)計一個基于FPGA的DDS(直接數(shù)字頻率合成)信號發(fā)生器。通過FPGA的下位機和LabView上位機的配合使之能夠輸出多種固定波形和任意波形,在不用改變硬件平臺的情況下,能夠隨時對系統(tǒng)進行重構(gòu)或拓展開發(fā)。
關(guān)鍵詞: LabView;FPGA;DDS
0 引言
信號發(fā)生器是一種常用的信號源,廣泛應(yīng)用于電子電路、自動控制和科學(xué)實驗等領(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以及外擴電路的控制。基于FPGA下位機的硬件部分,主要包含了DDS模塊以及外圍電路部分。在整個系統(tǒng)工作的過程當(dā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)整功能。在主程序面板上,用戶可以通過鼠標(biāo)和鍵盤控制面板上的開關(guān)和按鈕,從而實現(xiàn)對信號發(fā)生器的控制。
前面板左邊部分為波形顯示模塊,通過右邊部分對采樣信息和頻率進行調(diào)節(jié),對波形類型的選擇,并可對波形幅值、垂直偏置進行調(diào)整,最終將波形顯示出來。當(dāng)用戶需要選擇任意波形時,只需將布爾開關(guān)選擇到任意波形,再通過鼠標(biāo)點擊在波形繪制面板上進行手工繪制即可。當(dāng)按下鼠標(biāo)左鍵時,布爾燈亮,拖動鼠標(biāo),顯示界面會按照使用者繪制的鼠標(biāo)圖形進行采樣取值,X軸和Y軸分別顯示波形幅值和采樣的時間。繪制完成后點擊停止按鈕,跳出循環(huán),結(jié)束運行程序。其中CLEAR按鈕的作用是清除信號,此控件只有想要改變信號發(fā)生器的初始相位時方能用到,在VI程序運行過程中,如果用戶想要改變發(fā)生器的初始相位,點擊該按鈕,所畫的波形圖則被清除。
波形信號發(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è)計是一個布爾型輸入條件結(jié)構(gòu),相當(dāng)于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)。該手繪任意波形的過程中定義了幾個用戶事件:鼠標(biāo)移動、鼠標(biāo)釋放、鼠標(biāo)按下、值改變。下面分別介紹各事件分支的設(shè)計功能:
[0]事件分支:鼠標(biāo)移動,坐標(biāo)至XY映射,采集鼠標(biāo)拖動時產(chǎ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按鈕時,無輸入,波形輸出不顯示,實現(xiàn)清除功能。
3 實驗結(jié)果及結(jié)論
按照表1所設(shè)置的參數(shù)設(shè)置固定波形信號發(fā)生器,以正弦波舉例,得到的波形如圖6所示。
通過鼠標(biāo)手工繪制的任意波形如圖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].西安:西安電子科技大學(xué)出版社,2004.
[2] 樊睿.基于LabView的虛擬波形發(fā)生器的設(shè)計[D].西安:西安理工大學(xué),2010.
[3] 白居憲.直接數(shù)字頻率合成[M].西安:西安交通大學(xué)出版社,2007.
[4] 張萍,高海霞,柴常春,等.用于DDS系統(tǒng)相位累加器的加法器設(shè)計[J].現(xiàn)代電子技術(shù),2007,30(13):49-50.
[5] 胡力堅.基于DDS任意波發(fā)生器設(shè)計[D].西安:西安電子科技大學(xué),2009.
[6] 劉暢,張立成,蔣宏.基于LabView和SOPC的任意波形發(fā)生器設(shè)計[J].電子測量技術(shù),2011,34(1):66-68,81.
[7] 宮琴,陳曦,劉京雷,等.新型耳穴檢測系統(tǒng)的研制[J].儀器儀表學(xué)報,2009,30(10):2213-2218.
[8] 秦豐,狄瑞坤,歐陽珍.基于圖形化編程語言LabView的虛擬儀器開發(fā)[J].機床與液壓,2004(8):107-109.
[9] 李震,柯旭貴,汪云祥.虛擬儀器的發(fā)展歷史,研究現(xiàn)狀與展望[J].安徽工程科技學(xué)院學(xué)報,2003,18(4):1-4.