聲卡和Matlab的虛擬信號發(fā)生器的工作原理
1基于Matlab和聲卡的虛擬信號發(fā)生器的設計與實(shí)現
1.1系統實(shí)現原理
通常PC機配置的聲卡提供了麥克風(fēng)輸入和揚聲器輸出2個(gè)接口,他集成了信號輸入/輸出需要的模/數轉換器(ADC)和數/模轉換器(DAC),因此,利用Matlab軟件產(chǎn)生的各種虛擬信號通過(guò)聲卡的DAC單元就可以直接輸出。
只需要用音頻線(xiàn)將軟件系統產(chǎn)生的信號由線(xiàn)性輸出(lineout)接口引出,就可以通過(guò)聲卡直接作為信號源輸出,顯然,在這種虛擬信號發(fā)生器系統中,只需要一臺帶有普通多媒體聲卡并安裝了Matlab軟件的PC機就可以滿(mǎn)足要求實(shí)現虛擬信號的輸出,系統結構簡(jiǎn)單方便。
1.2基于Matlab的信號發(fā)生器的實(shí)現方法
Matlab的數據采集工具箱(DAT)提供了一系列的函數和命令來(lái)實(shí)現實(shí)時(shí)模擬信號的輸出,通過(guò)調用這些函數和命令可以直接控制聲卡輸出虛擬信號,在Matlab中用聲卡產(chǎn)生虛擬信號的過(guò)程.
Matlab的數據采集工具箱提供的控制聲卡輸出模擬信號的主要函數和命令如下:
(1)初始化操作
Matlab將聲卡等設備都作為對象處理,其后的一切操作都不與硬件直接相關(guān),而是通過(guò)對該對象的操作來(lái)作用對象,所以,首先要為聲卡建立一個(gè)設備對象。
ao=analogouput(winsound)
analogouput()為模擬輸出設備對象建立函數,通過(guò)該函數將聲卡映射為Matlab環(huán)境中的一個(gè)模擬輸出設備對象句柄。winsound為聲卡設備驅動(dòng)程序。
(2)添加數據輸出通道操作
Matlab中用于添加數據輸出通道操作的函數為addchannel,其函數格式如下:
chan=addchanel(ao,ch)
其中:ao為聲卡對象的句柄(下同),ch為聲卡通道號,最大為2通道。
(3)輸出數據操作
Matlab中用于輸出數據操作的函數為putdata,其函數格式如下:
putudata(ao,data)
其中:data為所需要輸出的數據。
(4)啟動(dòng)并觸發(fā)聲卡設備操作
當完成輸出數據操作后,并沒(méi)有真正輸出數據,必須啟動(dòng)聲卡,才能對外輸出信號,啟動(dòng)并觸發(fā)聲卡設備操作的命令如下:
start(ao)
(5)停止并刪除聲卡設備操作
Matlab的數據采集工具箱和圖形用戶(hù)接口提供了十分簡(jiǎn)便的實(shí)現聲卡輸出功能的命令和函數,利用Matlab和聲卡設計虛擬信號發(fā)生器十分方便,而在硬件上只需要一塊聲卡,無(wú)需添加任何其他設備,價(jià)格十分便宜。雖然聲卡的設計是以產(chǎn)生聲音為目的,有效的音頻范圍和輸出電壓的幅度在一定程度上限制了他的使用,但這已完全能滿(mǎn)足產(chǎn)生基本信號源的要求。在本設計的基礎上,通過(guò)進(jìn)一步的Matlab編程或硬件上的改進(jìn)和擴展,可以實(shí)現一些常規儀器設備不能產(chǎn)生的信號,這在實(shí)際應用中具有廣泛的推廣應用前景。
信號輸出完成后,聲卡設備仍然保留在計算機系統中,若不將聲卡設備停止并刪除,計算機系統中仍會(huì )保留該設備,在下次啟動(dòng)虛擬信號發(fā)生器系統時(shí)將會(huì )發(fā)出聲卡設備仍然在使用的錯誤信息。
評論