《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于聲卡和Matlab的虛擬信號發(fā)生器
基于聲卡和Matlab的虛擬信號發(fā)生器
C114
摘要: 聲卡作為多媒體計算機(jī)系統(tǒng)中最基本最常用的硬件之一,,其技術(shù)已經(jīng)發(fā)展成熟,他同時具有A/D和D/A轉(zhuǎn)換功
Abstract:
Key words :
聲卡作為多媒體計算機(jī)系統(tǒng)中最基本最常用的硬件之一,其技術(shù)已經(jīng)發(fā)展成熟,,他同時具有A/D和D/A轉(zhuǎn)換功能,,經(jīng)濟(jì)方便,,目前已經(jīng)被廣泛應(yīng)用于數(shù)據(jù)采集和虛擬儀器系統(tǒng)的設(shè)計,。Matlab是一個數(shù)據(jù)分析和處理功能十分強大的工程實用軟件,他的數(shù)據(jù)采集工具箱(data acquisition toolbox)為實現(xiàn)數(shù)據(jù)的輸入和輸出提供了十分方便的函數(shù)和命令,,利用這些函數(shù)和命令可以很容易地實現(xiàn)對外部物理世界的信號輸出和輸入,。根據(jù)聲卡輸出信號的原理,采用Matlab軟件編程,,可以方便地利用聲卡輸出所需要的三角波,、正弦波、方波等多種信號,,有效地實現(xiàn)信號發(fā)生器的基本功能,。

1基于Matlab和聲卡的虛擬信號發(fā)生器的設(shè)計與實現(xiàn)

1.1系統(tǒng)實現(xiàn)原理

通常PC機(jī)配置的聲卡提供了麥克風(fēng)輸入和揚聲器輸出2個接口,他集成了信號輸入/輸出需要 的模/數(shù)轉(zhuǎn)換器(ADC)和數(shù)/模轉(zhuǎn)換器(DAC),,因此,,利用Matlab軟件產(chǎn)生的各種虛擬信號通過聲卡的DAC單元就可以直接輸出。普通計算機(jī)與Matlab軟件相結(jié)合實現(xiàn)虛擬信號發(fā)生器的系統(tǒng)結(jié)構(gòu)如圖1所示,。   

基于聲卡和Matlab的虛擬信號發(fā)生器[圖]

圖1中,,只需要用音頻線將軟件系統(tǒng)產(chǎn)生的信號由線性輸出(line out)接口引出,就可以通過聲卡直接作為信號源輸出,,顯然,,在這種虛擬信號發(fā)生器系統(tǒng)中,只需要一臺帶有普通多媒體聲卡并安裝了Matlab軟件的PC機(jī)就可以滿足要求實現(xiàn)虛擬信號的輸出,,系統(tǒng)結(jié)構(gòu)簡單方便,。

1.2基于Matlab的信號發(fā)生器的實現(xiàn)方法

Matlab的數(shù)據(jù)采集工具箱(DAT)提供了一系列的函數(shù)和命令來實現(xiàn)實時模擬信號的輸出,通過調(diào)用這些函數(shù)和命令可以直接控制聲卡輸出虛擬信號,,在Matlab中用聲卡產(chǎn)生虛擬信號的過程如圖2所示。    

Matlab的數(shù)據(jù)采集工具箱提供的控制聲卡輸出模擬信號的主要函數(shù)和命令如下:    

(1) 初始化操作

Matlab將聲卡等設(shè)備都作為對象處理,,其后的一切操作都不與硬件直接相關(guān),,而是通過對該 對象的操作來作用對象,,所以,首先要為聲卡建立一個設(shè)備對象,。Matlab建立設(shè)備對象的函數(shù)如下:

基于聲卡和Matlab的虛擬信號發(fā)生器[圖]

analogouput()為模擬輸出設(shè)備對象建立函數(shù),,通過該函數(shù)將聲卡映射為Matlab環(huán)境中的一個模擬輸出設(shè)備對象句柄。winsound為聲卡設(shè)備驅(qū)動程序,。

(2) 添加數(shù)據(jù)輸出通道操作

Matlab中用于添加數(shù)據(jù)輸出通道操作的函數(shù)為addchannel,,其函數(shù)格式如下: 

基于聲卡和Matlab的虛擬信號發(fā)生器[圖]

其中:ao為聲卡對象的句柄(下同),ch為聲卡通道號,,最大為2通道,。

(3) 輸出數(shù)據(jù)操作

Matlab中用于輸出數(shù)據(jù)操作的函數(shù)為putdata,其函數(shù)格式如下:

putudata(ao,data)

其中:data為所需要輸出的數(shù)據(jù),。

(4) 啟動并觸發(fā)聲卡設(shè)備操作

當(dāng)完成輸出數(shù)據(jù)操作后,,并沒有真正輸出數(shù)據(jù),必須啟動聲卡,,才能對外輸出信號,,啟動并觸發(fā)聲卡設(shè)備操作的命令如下:

start(ao)

(5) 停止并刪除聲卡設(shè)備操作

信號輸出完成后,聲卡設(shè)備仍然保留在計算機(jī)系統(tǒng)中,,若不將聲卡設(shè)備停止并刪除,,計算機(jī)系統(tǒng)中仍會保留該設(shè)備,在下次啟動虛擬信號發(fā)生器系統(tǒng)時將會發(fā)出聲卡設(shè)備仍然在使用的錯誤信息,。從系統(tǒng)中停止和刪除聲卡設(shè)備操作的命令分別如下:

2應(yīng)用實例

利用Matlab的數(shù)據(jù)采集工具箱和圖形用戶接口[3]可以方便地通過設(shè)計的界面控制輸出信號的幅度,、頻率、寬度等參數(shù),,并可以用示波器直接觀測,,圖3為虛擬信號發(fā)生器系統(tǒng)的主界面,可以用來產(chǎn)生正弦波信號,、方波信號,、矩形波信號、三角波信號和隨機(jī)信號等常用信號,。   

這里以三角波虛擬信號發(fā)生器為例來說明利用Matlab和聲卡輸出三角波信號的具體軟件實現(xiàn) 方法,。三角波信號發(fā)生器的參數(shù)設(shè)置界面如圖4所示,他除了可以用于參數(shù)設(shè)置外,,還可以顯示輸出信號的模擬波形,。   

3結(jié)語

Matlab的數(shù)據(jù)采集工具箱和圖形用戶接口提供了十分簡便的實現(xiàn)聲卡輸出功能的命令和函數(shù) ,利用Matlab和聲卡設(shè)計虛擬信號發(fā)生器十分方便,,而在硬件上只需要一塊聲卡,,無需添加 任何其他設(shè)備,價格十分便宜。雖然聲卡的設(shè)計是以產(chǎn)生聲音為目的,,有效的音頻范 圍和輸出電壓的幅度在一定程度上限制了他的使用,,但這已完全能滿足產(chǎn)生基本信號源的 要求。在本設(shè)計的基礎(chǔ)上,,通過進(jìn)一步的Matlab編程或硬件上的改進(jìn)和擴(kuò)展,,可以實現(xiàn)一些 常規(guī)儀器設(shè)備不能產(chǎn)生的信號,這在實際應(yīng)用中具有廣泛的推廣應(yīng)用前景,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。