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