新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 聲卡和Matlab的虛擬信號發生器的工作原理

        聲卡和Matlab的虛擬信號發生器的工作原理

        作者: 時間:2016-12-27 來源:網絡 收藏
        聲卡從話筒中獲取聲音模擬信號,通過模數轉換器(ADC),將聲波振幅信號采樣轉換成一串數字信號,存儲到計算機中。重放時,這些數字信號送到數模轉換器(DAC),以同樣的采樣速度還原為模擬波形,放大后送到揚聲器發聲,這一技術稱為脈沖編碼調制技術(PCM)。作為多媒體計算機系統中最基本最常用的硬件之一,其技術已經發展成熟,他同時具有A/D和D/A轉換功能,經濟方便,目前已經被廣泛應用于數據采集和虛擬儀器系統的設計[1,2]。Matlab是一個數據分析和處理功能十分強大的工程實用軟件,他的數據采集工具箱(dataacquisitiontoolbox)為實現數據的輸入和輸出提供了十分方便的函數和命令,利用這些函數和命令可以很容易地實現對外部物理世界的信號輸出和輸入。根據聲卡輸出信號的原理,采用Matlab軟件編程,可以方便地利用聲卡輸出所需要的三角波、正弦波、方波等多種信號,有效地實現信號發生器的基本功能。

        本文引用地址:http://www.104case.com/article/201612/334349.htm

        1基于Matlab和聲卡的虛擬信號發生器的設計與實現

        1.1系統實現原理

        通常PC機配置的聲卡提供了麥克風輸入和揚聲器輸出2個接口,他集成了信號輸入/輸出需要的模/數轉換器(ADC)和數/模轉換器(DAC),因此,利用Matlab軟件產生的各種虛擬信號通過聲卡的DAC單元就可以直接輸出。

        只需要用音頻線將軟件系統產生的信號由線性輸出(lineout)接口引出,就可以通過聲卡直接作為信號源輸出,顯然,在這種虛擬信號發生器系統中,只需要一臺帶有普通多媒體聲卡并安裝了Matlab軟件的PC機就可以滿足要求實現虛擬信號的輸出,系統結構簡單方便。

        1.2基于Matlab的信號發生器的實現方法

        Matlab的數據采集工具箱(DAT)提供了一系列的函數和命令來實現實時模擬信號的輸出,通過調用這些函數和命令可以直接控制聲卡輸出虛擬信號,在Matlab中用聲卡產生虛擬信號的過程.

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

        (1)初始化操作

        Matlab將聲卡等設備都作為對象處理,其后的一切操作都不與硬件直接相關,而是通過對該對象的操作來作用對象,所以,首先要為聲卡建立一個設備對象。

        ao=analogouput(winsound)

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

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

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

        chan=addchanel(ao,ch)

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

        (3)輸出數據操作

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

        putudata(ao,data)

        其中:data為所需要輸出的數據。

        (4)啟動并觸發聲卡設備操作

        當完成輸出數據操作后,并沒有真正輸出數據,必須啟動聲卡,才能對外輸出信號,啟動并觸發聲卡設備操作的命令如下:

        start(ao)

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

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

        信號輸出完成后,聲卡設備仍然保留在計算機系統中,若不將聲卡設備停止并刪除,計算機系統中仍會保留該設備,在下次啟動虛擬信號發生器系統時將會發出聲卡設備仍然在使用的錯誤信息。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 南溪县| 沙雅县| 正蓝旗| 永福县| 榆树市| 通许县| 葫芦岛市| 遂溪县| 皋兰县| 武定县| 同德县| 江口县| 茂名市| 长乐市| 金秀| 日土县| 镇平县| 广德县| 文水县| 潞西市| 乌兰察布市| 嵊州市| 八宿县| 蚌埠市| 晋宁县| 大厂| 十堰市| 湟中县| 澳门| 高雄市| 高台县| 天长市| 安多县| 古浪县| 阜城县| 阿瓦提县| 喀喇沁旗| 衡水市| 景洪市| 田林县| 宁明县|