【摘 要】提出了一種較為真實的仿真方法,用兩臺帶聲卡的PC機分別模擬通信系統中的發射機和接收機,以模仿連續信號在信道中的傳輸。效果很好。
??? 關鍵詞:聲霸卡 串口通信 wav文件
1 引 言
在通信系統的研發過程中,一般都要先進行計算機仿真,以便驗證設計方案的正確性和可行性 。然而,在計算機仿真過程中,常常因為數學模型過于理想化而不能反映實際系統研制中可能碰到的問題,使仿真并不真實,不能起到應有的作用,例如:在無線通信系統中,發射機和接收機的時鐘頻率各自隨機飄移,理想的波形并不理想,正弦波相位隨機抖動等等,這些因素在仿真中很難用數學表達式表達。本文提出了一種較為真實的仿真方法,用兩臺帶聲霸卡的PC機分別模擬發射機和接收機。“發射機”通過D/A輸出模擬信號連接到“接收機”A/D輸入端,以模仿連續信號在信道中的傳輸。在多個項目中的仿真實驗應用表明,這種做法能夠比較真實地進行仿真實驗,可以使實際通信系統中可能碰到的一些問題得以暴露,取得了很好的效益。本文通過一個數字通信系統的仿真來介紹上述方法。
2 系統硬件結構
本文介紹的數字通信仿真系統是一個基于連續信道傳輸的數字通信系統,它由“發射機”、“接收機”和連續信道仿真器三部分組成。“發射機”由PC軟件實現的編碼、數字調制、上變頻、D/A變換器構成;“接收機”由A/D變換器、PC軟件實現的數字下變頻、解調、譯碼、數據輸出等部分構成;連續信道用一個帶“信道”噪聲接口的簡單的加法器模仿。編程工具主要用MATLAB、C++Builder 5.0。此外,兩臺PC機還通過RS232串行口相連,構成信令信道,用于同步地啟動實驗。
2.1 A/D和D/A
該系統的A/D、D/A由創新公司的SoundBlaster AWE64聲卡來完成,這是一種話音采集和處理卡 ,可通過編程來控制。它的A/D、D/A支持8位和16位立體聲錄音和回放以及5kHz至44.1kHz用戶可選的采樣率。AWE64帶有語音處理DSP,可完成A律、μ律語音壓縮以及3D效果合成等功能,是一種專業性很強的高效處理芯片。數字信號是連續信號的離散采樣得到的,同一個數字信號所表示信號的最高頻率只與采樣間隔有關,而在進行各種數字信號算法時不需直接使用采樣間隔這個值,因此 ,通過聲霸卡的A/D、D/A的連續信號可以代表從0到幾萬兆赫茲中任一頻帶的信號。這就是說,這種仿真系統可以逼真地模仿各種頻段的通信系統 。
軟件編程控制聲卡執行A/D、D/A操作有兩種選擇:一是聲卡配套的專用開發環境,所開發的系統只能運行在配套支持的聲卡上;二是Windows應用開發軟件,如VisualC++、C++Builder等,所開發的系統能夠適應不同的聲卡。本系統采用C++Builder 5.0,將要發送和接收的數據按Wave格式寫成文件,利用Medi aPlayer控件完成A/D、D/A轉換。
Wave格式是Microsoft公司開發的一種聲音文件格式,它符合RIFF(Resource Interchange File For mat)文件規范,用于保存Windows平臺的音頻信息資源,被Windows平臺及其應用程序所廣泛支持。Wave格式支持MSADPCM、A律、μ律和其他壓縮算法,支持多種音頻位數、采樣頻率和聲道 ,是PC機上最為流行的聲音文件格式。一般來說,改變wave格式是修改采樣頻率標志位、數據長度和語音長度標志位。WAVE文件的每個樣本值包含在一個整數i中,i的長度為容納指定樣本長度所需的最小字節數。首先存儲低有效字節,表示樣本幅度的位放在i的高有效位上,剩下的位置為0。
2.2 同步握手控制電路
同步握手信號是通過RS232串行通信接口來傳遞的。串行口每次由CPU得到8位數據,然后通過一條線路,逐位將該數據發送出去。PC上一般有兩個這樣的串口:COM1和COM2,程序每次能對其中一個接口進行存取,本文就是將兩個COM1連接,實現了握手信號的互傳。
2.3 聲卡連接
一般地,PC機所配的聲卡提供四個接口:線性輸入、線性輸出、麥克風輸入、揚聲器輸出。通常是用音頻線將作為發送端電腦的揚聲器輸出和作為接收端電腦的麥克風輸入連接起來。
3 系統軟件流程
軟件是系統的核心部分,完成調制、解調以及對A/D、D/A和握手信號的控制。其工作流程描述如下。
3.1 系統總體流程
整個系統的工作由兩臺計算機非實時地完成。需通過串口進行握手以保證系統處于協調的工作狀態,其詳細流程如圖1所示。
?????????????????????????
3.2 發送端軟件流程
發端將MATLAB產生的調制信號進行量化,并轉換成wav格式,D/A轉換頻率為19.2kHz。流程如圖2所示。
?????????????????????????????????????
3.3 接收端軟件流程
接收端采樣頻率為22.05kHz,將信號接收后存成wav文件(在接收數據前加wav頭文件),利用MATLAB命令wavread讀取,得到數據文件,收端處理流程如圖3所示。
???????????????????????????????????
3.4 串口編程
RS-232串口組成簡單、編程控制方便,因而應用極為廣泛。在軟件編程控制方面,操作系統提供了對應的編程接口,使得開發者能靈活地控制串口工作。WINDOWS系統采用消息驅動和設備統一管理,并利用消息對列進行程序控制,因此比DOS更具優勢。同時,Windows的SDK提供了完備的API(應用程序接口)函數和以中斷方式驅動的通信驅動程序,使編程變得更為容易。Windows通信一般都以WOSA(即Windows開放式服務體系)模型為基礎,此模型中位于上層的應用程序通過調用各種通信API與位于下層的設備驅動程序進行數據交換。Windows對串行口的讀寫也不例外,通過調用Win32的串口通信API函數,即可編寫串行通信程序。在Win32環境下,對串口的讀寫就象是對1個文件進行讀寫,只不過此時的文件句柄指向1個串口。另外,可充分利用Win32的多任務的特點,編寫出實時性較好的通信程序。Windows平臺下串行通信有4種主要方式,即:同步方式、異步方式、查詢方式、事件驅動方式。其中事件驅動方式是一種高效的串口讀方式,這種方式的實時性較高,特別是對擴展了多個串口的情況,并不要求象查詢方式那樣定時地對所有串口輪流查詢,而是象中斷方式那樣,只有當設定的事件發生時,應用程序得到Windows操作系統發出的消息后,才進行相應處理,避免了數據丟失。在本實驗中,串口通信采用事件驅動方式,當接收到字符$時啟動串口接收程序,處理發端發送的信息并作出相應操作,這就要求發送握手信號時,基本格式為$+握手信號,實驗結果表明,這種串口握手通信較好地解決了系統協同工作問題,同時,實驗也取得了良好的效果。
4 結束語
本文提出了一種通信系統仿真方法,這種方法用帶聲霸卡的兩臺PC機分別模仿發射機和接收機 ,聲霸卡D/A到A/D的連接代表連續信道傳輸。這種仿真方法可以逼真地模仿各種不同頻段的通信系統 ,其中所有的發送、接收信號處理都用高級語言編程實現。它比基于一臺計算機的任何仿真系統更能暴露出實際通信系統中可能碰到的特殊問題,使仿真實驗的真實性和實際工作效率大大提高,是一種值得推廣的好方法。
1 John G.Proakis著,齊懷亮譯.Digital Communications.北京:電子工業出版社,1998
2 苗凱.利用Windows定時器實現串口通信控制.計算機世界報,1999年5月
3 茍帥,張俊平等.C++Builder 5.0 Programmer′s Guide 編程員指南.希望電子出版社 ,2000
4 Peter W.Gofton著,王仲文等譯.精通串行通信.北京:電子工業出版社,1995
5 王軍.基于Win95的VB5串口通信程序.計算機世界報,1999年4月
??? 關鍵詞:聲霸卡 串口通信 wav文件
1 引 言
在通信系統的研發過程中,一般都要先進行計算機仿真,以便驗證設計方案的正確性和可行性 。然而,在計算機仿真過程中,常常因為數學模型過于理想化而不能反映實際系統研制中可能碰到的問題,使仿真并不真實,不能起到應有的作用,例如:在無線通信系統中,發射機和接收機的時鐘頻率各自隨機飄移,理想的波形并不理想,正弦波相位隨機抖動等等,這些因素在仿真中很難用數學表達式表達。本文提出了一種較為真實的仿真方法,用兩臺帶聲霸卡的PC機分別模擬發射機和接收機。“發射機”通過D/A輸出模擬信號連接到“接收機”A/D輸入端,以模仿連續信號在信道中的傳輸。在多個項目中的仿真實驗應用表明,這種做法能夠比較真實地進行仿真實驗,可以使實際通信系統中可能碰到的一些問題得以暴露,取得了很好的效益。本文通過一個數字通信系統的仿真來介紹上述方法。
2 系統硬件結構
本文介紹的數字通信仿真系統是一個基于連續信道傳輸的數字通信系統,它由“發射機”、“接收機”和連續信道仿真器三部分組成。“發射機”由PC軟件實現的編碼、數字調制、上變頻、D/A變換器構成;“接收機”由A/D變換器、PC軟件實現的數字下變頻、解調、譯碼、數據輸出等部分構成;連續信道用一個帶“信道”噪聲接口的簡單的加法器模仿。編程工具主要用MATLAB、C++Builder 5.0。此外,兩臺PC機還通過RS232串行口相連,構成信令信道,用于同步地啟動實驗。
2.1 A/D和D/A
該系統的A/D、D/A由創新公司的SoundBlaster AWE64聲卡來完成,這是一種話音采集和處理卡 ,可通過編程來控制。它的A/D、D/A支持8位和16位立體聲錄音和回放以及5kHz至44.1kHz用戶可選的采樣率。AWE64帶有語音處理DSP,可完成A律、μ律語音壓縮以及3D效果合成等功能,是一種專業性很強的高效處理芯片。數字信號是連續信號的離散采樣得到的,同一個數字信號所表示信號的最高頻率只與采樣間隔有關,而在進行各種數字信號算法時不需直接使用采樣間隔這個值,因此 ,通過聲霸卡的A/D、D/A的連續信號可以代表從0到幾萬兆赫茲中任一頻帶的信號。這就是說,這種仿真系統可以逼真地模仿各種頻段的通信系統 。
軟件編程控制聲卡執行A/D、D/A操作有兩種選擇:一是聲卡配套的專用開發環境,所開發的系統只能運行在配套支持的聲卡上;二是Windows應用開發軟件,如VisualC++、C++Builder等,所開發的系統能夠適應不同的聲卡。本系統采用C++Builder 5.0,將要發送和接收的數據按Wave格式寫成文件,利用Medi aPlayer控件完成A/D、D/A轉換。
Wave格式是Microsoft公司開發的一種聲音文件格式,它符合RIFF(Resource Interchange File For mat)文件規范,用于保存Windows平臺的音頻信息資源,被Windows平臺及其應用程序所廣泛支持。Wave格式支持MSADPCM、A律、μ律和其他壓縮算法,支持多種音頻位數、采樣頻率和聲道 ,是PC機上最為流行的聲音文件格式。一般來說,改變wave格式是修改采樣頻率標志位、數據長度和語音長度標志位。WAVE文件的每個樣本值包含在一個整數i中,i的長度為容納指定樣本長度所需的最小字節數。首先存儲低有效字節,表示樣本幅度的位放在i的高有效位上,剩下的位置為0。
2.2 同步握手控制電路
同步握手信號是通過RS232串行通信接口來傳遞的。串行口每次由CPU得到8位數據,然后通過一條線路,逐位將該數據發送出去。PC上一般有兩個這樣的串口:COM1和COM2,程序每次能對其中一個接口進行存取,本文就是將兩個COM1連接,實現了握手信號的互傳。
2.3 聲卡連接
一般地,PC機所配的聲卡提供四個接口:線性輸入、線性輸出、麥克風輸入、揚聲器輸出。通常是用音頻線將作為發送端電腦的揚聲器輸出和作為接收端電腦的麥克風輸入連接起來。
3 系統軟件流程
軟件是系統的核心部分,完成調制、解調以及對A/D、D/A和握手信號的控制。其工作流程描述如下。
3.1 系統總體流程
整個系統的工作由兩臺計算機非實時地完成。需通過串口進行握手以保證系統處于協調的工作狀態,其詳細流程如圖1所示。
?????????????????????????
3.2 發送端軟件流程
發端將MATLAB產生的調制信號進行量化,并轉換成wav格式,D/A轉換頻率為19.2kHz。流程如圖2所示。
?????????????????????????????????????
3.3 接收端軟件流程
接收端采樣頻率為22.05kHz,將信號接收后存成wav文件(在接收數據前加wav頭文件),利用MATLAB命令wavread讀取,得到數據文件,收端處理流程如圖3所示。
???????????????????????????????????
3.4 串口編程
RS-232串口組成簡單、編程控制方便,因而應用極為廣泛。在軟件編程控制方面,操作系統提供了對應的編程接口,使得開發者能靈活地控制串口工作。WINDOWS系統采用消息驅動和設備統一管理,并利用消息對列進行程序控制,因此比DOS更具優勢。同時,Windows的SDK提供了完備的API(應用程序接口)函數和以中斷方式驅動的通信驅動程序,使編程變得更為容易。Windows通信一般都以WOSA(即Windows開放式服務體系)模型為基礎,此模型中位于上層的應用程序通過調用各種通信API與位于下層的設備驅動程序進行數據交換。Windows對串行口的讀寫也不例外,通過調用Win32的串口通信API函數,即可編寫串行通信程序。在Win32環境下,對串口的讀寫就象是對1個文件進行讀寫,只不過此時的文件句柄指向1個串口。另外,可充分利用Win32的多任務的特點,編寫出實時性較好的通信程序。Windows平臺下串行通信有4種主要方式,即:同步方式、異步方式、查詢方式、事件驅動方式。其中事件驅動方式是一種高效的串口讀方式,這種方式的實時性較高,特別是對擴展了多個串口的情況,并不要求象查詢方式那樣定時地對所有串口輪流查詢,而是象中斷方式那樣,只有當設定的事件發生時,應用程序得到Windows操作系統發出的消息后,才進行相應處理,避免了數據丟失。在本實驗中,串口通信采用事件驅動方式,當接收到字符$時啟動串口接收程序,處理發端發送的信息并作出相應操作,這就要求發送握手信號時,基本格式為$+握手信號,實驗結果表明,這種串口握手通信較好地解決了系統協同工作問題,同時,實驗也取得了良好的效果。
4 結束語
本文提出了一種通信系統仿真方法,這種方法用帶聲霸卡的兩臺PC機分別模仿發射機和接收機 ,聲霸卡D/A到A/D的連接代表連續信道傳輸。這種仿真方法可以逼真地模仿各種不同頻段的通信系統 ,其中所有的發送、接收信號處理都用高級語言編程實現。它比基于一臺計算機的任何仿真系統更能暴露出實際通信系統中可能碰到的特殊問題,使仿真實驗的真實性和實際工作效率大大提高,是一種值得推廣的好方法。
參考文獻
2 苗凱.利用Windows定時器實現串口通信控制.計算機世界報,1999年5月
3 茍帥,張俊平等.C++Builder 5.0 Programmer′s Guide 編程員指南.希望電子出版社 ,2000
4 Peter W.Gofton著,王仲文等譯.精通串行通信.北京:電子工業出版社,1995
5 王軍.基于Win95的VB5串口通信程序.計算機世界報,1999年4月
評論
查看更多