基于計算機聲卡的虛擬實驗儀器開發(fā)研究
摘 要:虛擬儀器(Virtual Intrument)技術(shù)是測控領(lǐng)域測量的一個重要方向,是計算機技術(shù)與儀器技術(shù)深層次結(jié)合產(chǎn)生的全新概念的儀器,是對傳統(tǒng)儀器概念的重大突破。為了滿足高校、科研機構(gòu)等對一些實驗設(shè)備的需求,在低成本條件下開發(fā)一些虛擬儀器成為一種趨勢。組建虛擬示波器為例介紹如何開發(fā)虛擬實驗儀器。
本文引用地址:http://m.butianyuan.cn/article/202125.htm1 從數(shù)據(jù)采集的角度看聲卡
從數(shù)據(jù)采集的角度來看,聲卡是一種音頻范圍內(nèi)的數(shù)據(jù)采集卡,是計算機與外部的模擬量環(huán)境聯(lián)系的重要途徑。
1.1 聲卡的工作原理
聲卡的工作原理其實很簡單,其工作流程圖如圖1所示。我們知道,麥克風(fēng)和喇叭所用的都是模擬信號,而電腦所能處理的都是數(shù)字信號,聲卡的作用就是實現(xiàn)兩者的轉(zhuǎn)換。從結(jié)構(gòu)上分,聲卡可分為模數(shù)轉(zhuǎn)換電路和數(shù)模轉(zhuǎn)換電路兩部分,模數(shù)轉(zhuǎn)換電路負(fù)責(zé)將麥克風(fēng)等聲音輸入設(shè)備采到的模擬聲音信號轉(zhuǎn)換為電腦能處理的數(shù)字信號;而數(shù)模轉(zhuǎn)換電路負(fù)責(zé)將電腦使用的數(shù)字聲音信號轉(zhuǎn)換為喇叭等設(shè)備能使用的模擬信號。
2 聲卡的主要技術(shù)參數(shù)
(1)采樣的位數(shù)。
采樣位數(shù)可以理解為聲卡處理聲音的解析度。這個數(shù)值越大,解析度就越高,錄制和回放的聲音也就越真實。聲卡的位是指聲卡在采集和播放聲音文件時所使用的數(shù)字聲音信號的二進制位數(shù),它客觀地反映了數(shù)字聲音信號對輸入聲音信號描述的準(zhǔn)確度。例如,8位代表28=256;16位則代表216=64000。比較一下一段相同的音樂信息,16位聲卡能把它分為64000個精度單位進行處理,而8位聲卡只能處理256個精度單位,最終采樣效果自然是無法相提并論的。
(2)采樣頻率。
目前,聲卡的最高采樣頻率是44.1kHz。少數(shù)達到48kHz。對于民用聲卡,一般將采樣頻率設(shè)為4檔,分別是44.1kHz、22.05kHz、11.025kHz和8kHz。22.05kHz只能達到FM廣播的聲音品質(zhì);44.1kHz是理論上的CD音質(zhì)界限,48kHz則更好一些。對20kHz范圍內(nèi)的音頻信號,最高的采樣頻率才48kHz,雖然理論上沒問題,但似乎余量不大。使用聲卡比較大的局限在于它不允許用戶在最高采樣頻率之下隨意設(shè)定采樣頻率,而只能分為4檔設(shè)定。這樣雖然可使制造成本降低,但卻不便于使用。用戶基本上不可能控制整周期采樣,只能通過信號處理的方法來彌補非整周期采樣帶來的問題。
(3) 緩沖區(qū)。
與一般數(shù)據(jù)采集卡不同,聲卡面臨的D/A和A/D任務(wù)通常是連續(xù)狀態(tài)的。為了在一個簡潔的結(jié)構(gòu)下較好地完成某個任務(wù),聲卡緩沖區(qū)的設(shè)計有其獨到之處。為了節(jié)省CPU資源,計算機的CPU并不是每次聲卡A/D或D/A結(jié)束后都要響應(yīng)一次中斷,而是采用了緩沖區(qū)的工作方式。在這種工作方式下,聲卡的A/D、D/A都對某一緩沖區(qū)進行操作。以輸入聲音的A/D變換為例,每次轉(zhuǎn)換完畢后,聲卡控制芯片都將數(shù)據(jù)存放在緩沖區(qū),待緩沖區(qū)滿時,發(fā)出中斷給CPU,CPU響應(yīng)中斷后一次性將緩沖區(qū)內(nèi)的數(shù)據(jù)全部讀走。計算機總線的數(shù)據(jù)傳輸速率非常高,讀取緩沖區(qū)數(shù)據(jù)所用時間極短,不會影響A/D變換的連續(xù)性。緩沖區(qū)的工作方式大大降低了CPU響應(yīng)中斷的頻度,節(jié)省了系統(tǒng)資源。聲卡輸出聲音時的A/D變換也是類似的。
一般聲卡使用的緩沖區(qū)長度的默認(rèn)值是8KB(8192字節(jié))。這是由于對X86系列處理器來說,在保護模式(Windows等系統(tǒng)使用的CPU工作方式下)下,內(nèi)存以8KB為單位被分成很多頁,對內(nèi)存的任何訪問都是按頁進行的,CPU保證了讀寫8KB長度的內(nèi)存緩沖區(qū)時,速度足夠快,并且一般不會被其他外來事件打斷。設(shè)置8192字節(jié)或其整數(shù)倍(例如32768字節(jié))大小的緩沖區(qū),可以較好地保證聲卡與CPU的協(xié)調(diào)工作。
(4) 無基準(zhǔn)電壓。
聲卡不提供基準(zhǔn)電壓,因此無論是A/D還是D/A在使用時,都需要用戶自己參照基準(zhǔn)電壓進行標(biāo)定。
(5)聲卡頻率范圍與頻率響應(yīng)。
某聲卡的頻率響應(yīng)如圖2所示,可以看出在200Hz~5kHz之間的曲線還是比較平坦的,其余部分信號有較多衰減。在合適的頻率范圍內(nèi),可以用聲卡代替昂貴的數(shù)據(jù)采集卡進行工作。
2 利用G語言LabVIEW組建虛擬實驗儀器
虛擬儀器是在美國國家儀器公司(National Instruments Corp.簡稱NI)于1986年提出的“軟件就是儀器”這一口號的基礎(chǔ)上發(fā)展起來的,其概念是用戶在通用計算機平臺上,在必要的數(shù)據(jù)采集硬件的支持下,根據(jù)測試任務(wù)的需要,通過軟件設(shè)計來實現(xiàn)和擴展傳統(tǒng)儀器的功能。傳統(tǒng)臺式儀器是由廠家設(shè)計并定義好功能的一個封閉結(jié)構(gòu),有固定的輸入/輸出接口和儀器操作面板。每種儀器只能實現(xiàn)一類特定的測試功能,并以確定的方式提供給用戶。虛擬儀器的出現(xiàn),打破了傳統(tǒng)儀器由廠家定義、用戶無法改變的模式,使得用戶可以根據(jù)自己的要求,設(shè)計自己的儀器系統(tǒng),并可通過修改軟件來改變或增減儀器的功能,真正體現(xiàn)了“軟件就是儀器”這一新概念。
(1)G語言LabVIEW關(guān)于聲卡的模塊介紹。
LabVIEW中提供了一系列使用Windows底層函數(shù)編寫的聲卡有關(guān)的函數(shù)。這些函數(shù)集中在Sound VI下。由于使用Windows底層函數(shù)直接與聲卡驅(qū)動程序打交道,因而封裝層次低,速度快,而且可以訪問,采集緩沖區(qū)中任意位置的數(shù)據(jù),具有很大的靈活性,能夠滿足實時不間斷采集的需要。
LabVIEW函數(shù)庫中Sound Input子模版(Functions Palette→GraphicsSound→Sound→Sound Input)提供了聲卡函數(shù),可以通過聲卡采集外部模擬信號。
(2)基于聲卡的虛擬示波器的組建。
應(yīng)用LabVIEW構(gòu)建基于聲卡的虛擬示波器,其整體思想就是在一個While循環(huán)中,添加各輸入節(jié)點,使其對采集到的聲音波形進行顯示,而在內(nèi)部又添加了若干的屬性節(jié)點來對各種附加功能進行實現(xiàn)。流程圖如圖3所示。
虛擬示波器的軟件的設(shè)計是把整個軟件分別分成幾個模塊,然后組建成一個整體。分別為數(shù)據(jù)采集,存儲,顯示,處理等。
數(shù)據(jù)采集模塊是虛擬示波器軟件的硬件驅(qū)動部分,在這里主要是利用LabVIEW里面的聲卡函數(shù)完成聲卡的硬件參數(shù)設(shè)置、啟動聲卡采集數(shù)據(jù)、等待采樣數(shù)據(jù)緩沖區(qū)滿的消息、通知聲卡停止采集等任務(wù)。
波形顯示模塊使用了波形操作函數(shù),主要用到Build Waveform函數(shù)。Build Waveform函數(shù)。建立或修改已有的波形。默認(rèn)情況下函數(shù)只有waveform和t0輸入端子,向下拖拽函數(shù)下邊沿還可以增加dt、Y和attribuates輸入端子。使用操作工具單擊端子可以彈出元素選擇快捷菜單。如果waveform端子沒有接入,則Build Waveform根據(jù)輸入?yún)?shù)建立新的波形數(shù)據(jù),并在輸出端子中返回。在本設(shè)計中,只用到t0,dt,Y三個輸入端子。其中t0為波形的起始時間,dt為波形數(shù)據(jù)點中間的時間間隔或持續(xù)時間,Y為包含了波形的數(shù)據(jù)值。此處,設(shè)置起始時間為0,但因為數(shù)據(jù)格式不匹配,增加了一個數(shù)據(jù)格式轉(zhuǎn)換函數(shù)to time stamp,從而把一個數(shù)值轉(zhuǎn)換成時間值。dt值取自SI Config的格式中的采樣倒數(shù),倒數(shù)取得的方法利用了reciprocal函數(shù)。Y值來自SI Read的stereo 16-bit輸出端子。
評論