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