摘要:該文設(shè)計(jì)完成了一種基于以太網(wǎng)的音頻處理系統(tǒng)。選用高度集成以太網(wǎng)控制器RTL8019AS 和89C58單片機(jī)芯片,設(shè)計(jì)了終端硬件系統(tǒng)。音頻終端軟件采用了模塊化的設(shè)計(jì)方式。按照不同功能將整個(gè)系統(tǒng)主要?jiǎng)澐譃楦鱾€(gè)子模塊,最終實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)流的傳送與音頻數(shù)據(jù)流的處理。
關(guān)鍵詞:以太網(wǎng);音頻處理;RTL8019AS;89C58
中圖分類號(hào):TP37 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)14-3785-02
The Design of Digital Audio Terminal Based on Ethernet
ZHAO Xue-mei
(College of Electronic and Information Engineering, Taiyuan University of Science and Technology, Taiyuan 030024, China)
Abstract: The paper designed and accomplished a audio process system based on ethernet.The hardware system of this termonal uses high integration ethernet controller RTL8019AS and 89C58. The designof software system is based on modularize method.The system is measure off some sub-module according to there different fuctions,the net data stream is tranferred and audio data stream is processed.
Key words: ethernet; audio processing; RTL8019AS; 89C58
1 引言
嵌入式設(shè)備的網(wǎng)絡(luò)化已是大勢(shì)所趨,且隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,Internet已成為信息流通最重要的渠道。對(duì)于小型嵌入式設(shè)備來說,借助Internet傳送各種測(cè)量和控制信息,可以使合法的用戶通過Internet上任何一臺(tái)PC機(jī)對(duì)控制網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程控制和監(jiān)測(cè)。一般網(wǎng)絡(luò)終端必須實(shí)現(xiàn)通信、信息共享,遠(yuǎn)程設(shè)備管理、過程控制和管理執(zhí)行等功能。嵌入式設(shè)備網(wǎng)絡(luò)化有多種方案:
第1種是將基于單片機(jī)的嵌入式設(shè)備通過專用的現(xiàn)場(chǎng)協(xié)議(如RS232,RS485,CAN總線協(xié)議等)連接起來,然后與一臺(tái)專門用來做網(wǎng)關(guān)的PC機(jī)連接,再通過PC機(jī)與Internet連接。這種方案需要為一個(gè)嵌入式網(wǎng)絡(luò)專配一臺(tái)PC,使用不太方便,且價(jià)格高。
第2種是用單片機(jī)通過搭接的外圍電路直接驅(qū)動(dòng)網(wǎng)絡(luò)芯片,在單片機(jī)內(nèi)嵌入TCP/IP協(xié)議,直接形成Internet網(wǎng)絡(luò)終端.嵌入TCP/IP協(xié)議以及驅(qū)動(dòng)網(wǎng)絡(luò)芯片需要設(shè)計(jì)較多硬件電路和安排軟件資源,但這種方案成本低、功耗小,實(shí)用性強(qiáng)[1]。
第3種是利用高檔的ARM嵌入式芯片實(shí)現(xiàn)功能,通過簡(jiǎn)單的電路就可組成真正意義上的嵌入式系統(tǒng)。這種方案的缺點(diǎn)就是成本高、開發(fā)周期長(zhǎng)。
本論文采用單片機(jī)和以太網(wǎng)控制芯片,設(shè)計(jì)了一套以太網(wǎng)音頻終端的軟硬件系統(tǒng)。
2 系統(tǒng)硬件結(jié)構(gòu)設(shè)計(jì)
綜合考慮,本系統(tǒng)終端的設(shè)計(jì)采用了單片機(jī)+軟件實(shí)現(xiàn)TCP/IP協(xié)議棧的方式來實(shí)現(xiàn)系統(tǒng)功能。上位機(jī)軟件已經(jīng)實(shí)現(xiàn)了TCP/IP協(xié)議棧的移植[2],本設(shè)計(jì)著重于終端系統(tǒng)的設(shè)計(jì),網(wǎng)絡(luò)音頻終端總體結(jié)構(gòu)如圖1所示。
系統(tǒng)的網(wǎng)絡(luò)接口模塊主要完成兩項(xiàng)功能:1)與接入的以太網(wǎng)進(jìn)行數(shù)據(jù)交換,2)與微處理器進(jìn)行數(shù)據(jù)交換。其核心部分是以太網(wǎng)控制器RTL8019AS。臺(tái)灣Realtek公司生產(chǎn)的RTL8019AS以太網(wǎng)控制器,由于其優(yōu)良的性能、低廉的價(jià)格,使其在市場(chǎng)上10Mbps網(wǎng)卡中占有相當(dāng)?shù)谋壤齕3]。因此,我們選擇RTL8019AS作為本系統(tǒng)的以太網(wǎng)控制器。作為系統(tǒng)核心的微處理器主要實(shí)現(xiàn)TCP/IP協(xié)議棧的功能,負(fù)責(zé)處理網(wǎng)絡(luò)接入模塊接收到的數(shù)據(jù)包,并作出正確的響應(yīng)。D/A模塊主要負(fù)責(zé)將經(jīng)微處理器處理過的數(shù)字音頻信號(hào)還原為模擬音頻信號(hào)并送出[4]。本系統(tǒng)中,以太網(wǎng)除了傳輸數(shù)據(jù)之外還負(fù)責(zé)給系統(tǒng)供電,供電系統(tǒng)是按照IEEE802.3af標(biāo)準(zhǔn)來設(shè)計(jì)的。IEEE802.3af標(biāo)準(zhǔn)定義了一種允許通過以太網(wǎng)在傳輸數(shù)據(jù)的同時(shí)輸送48V直流電源的方法,它將以太網(wǎng)供電(Power over Ethernet PoE)技術(shù)引入到現(xiàn)有的網(wǎng)絡(luò)基礎(chǔ)設(shè)施中,且與原有的網(wǎng)絡(luò)設(shè)施相兼容;最大能夠提供12.95W的功率,傳輸距離為100m。網(wǎng)絡(luò)供電電路圖如圖2所示。
3 模塊化的系統(tǒng)軟件設(shè)計(jì)
網(wǎng)絡(luò)音頻處理終端軟件結(jié)構(gòu)設(shè)計(jì)如圖3所示:
本系統(tǒng)首先在單片機(jī)上軟件實(shí)現(xiàn)了TCP/IP協(xié)議棧,在TCP/IP協(xié)議基礎(chǔ)上增加音頻數(shù)據(jù)處理程序,使音頻終端可以通過網(wǎng)絡(luò)接收數(shù)字音頻信號(hào),并對(duì)接收的音頻數(shù)據(jù)進(jìn)行處理使之還原為模擬音頻信號(hào)[5]。因此,網(wǎng)絡(luò)音頻終端軟件的設(shè)計(jì)也是基于音頻數(shù)據(jù)流的接收、處理過程,其基本工作流程如圖3所示。
3.1 初始化模塊
使配置寄存器處于寫使能狀態(tài)。
2)初始化CONFIG2::CONFIG2=0x00,指定為網(wǎng)絡(luò)連接自動(dòng)檢測(cè)狀態(tài)。
3)初始化物理地址位寄存器PAR0-PAR5:系統(tǒng)的MAC地址預(yù)先存儲(chǔ)在ROM中,其地址依次為 LC_ETH_ADDR0~LC_ETH_ADDR5。
4)初始化多址寄存器MAR0-MAR7;MAR0=0x00~MAR7=0x00。
5)初始化接收緩存的起始頁面寄存器PSTART、結(jié)束頁面寄存器PSTOP:PSTART=0x40, PSTOP=0x73,系統(tǒng)接收緩沖地址為0x40-0x72,發(fā)送緩沖地址為0x73-0x80。
6)初始化當(dāng)前接收頁面指針CURR和讀取頁面指針BNRY:CURR=BNRY=0x40。
7)初始化接收配置寄存器RCR:RCR=0x4C,使之允許接收自己的地址的數(shù)據(jù)報(bào)、廣播地址數(shù)據(jù)報(bào)以及多點(diǎn)播送地址報(bào),長(zhǎng)度小于64字節(jié)的數(shù)據(jù)報(bào)。
8)初始化發(fā)送配置寄存器TCR;TCR=0x E0,啟用CRC自動(dòng)生成和自動(dòng)校驗(yàn),工作在普通模式。
9)初始化數(shù)據(jù)配置寄存器DCR(0xB8)寄存器,設(shè)置為使用FIFO緩存、普通模式、8位數(shù)據(jù)傳輸模式。
10)完成初始化后進(jìn)入PAGE0,并啟動(dòng)網(wǎng)絡(luò)芯片。
單片機(jī)初始化模塊主要完成片外RAM讀指針DPTR的初始化、變量的初始化工作。89C58有一對(duì)16位的數(shù)據(jù)指針寄存器DPTR,寄存器MUXR1最低位的狀態(tài)控制二者之間的轉(zhuǎn)換。在本系統(tǒng)中選取MUXR1=0x01時(shí)的DPTR作為片外RAM MCM62256的讀指針,因?yàn)橄到y(tǒng)片外RAM地址空間為0x8000~0xFFFF,所以將RAM讀指針DPTR(MUXR1=0x01)起始地址初始化為0x8000。
本模塊在硬件初始化以后執(zhí)行,完成對(duì)各協(xié)議所需的全局變量進(jìn)行初始化,目的是為了保證下邊的程序繼續(xù)正確地執(zhí)行。本模塊又包括三個(gè)子程序,分別為ARP協(xié)議初始化子程序,TCP/IP協(xié)議初始化子程序,UDP協(xié)議初始化子程序,各子程序順序執(zhí)行,無覆蓋要求。
3.2 數(shù)據(jù)幀檢測(cè)模塊
系統(tǒng)初始化完成后立即執(zhí)行數(shù)據(jù)幀檢測(cè)模塊,本模塊采用查詢方式檢查系統(tǒng)當(dāng)前是否收到數(shù)據(jù)幀。程序通過比較CURR(當(dāng)前的接收結(jié)束頁地址)和BNRY (指向用戶已經(jīng)讀走的頁地址)兩個(gè)寄存器的值來判斷是否收到一幀數(shù)據(jù)。當(dāng)BNRY與CURR不等時(shí),表明接收緩沖區(qū)接收到了新的幀,主程序讀取數(shù)據(jù)后,用當(dāng)前幀的第二個(gè)字節(jié)(下一幀的頁地址)來更新寄存器BNRY,主程序循環(huán)跟蹤C(jī)URR和BNRY以達(dá)到接收數(shù)據(jù)的目的。在初始化的過程中,將CURR與BNRY均設(shè)置為接收緩存的起始頁地址0x40,CURR作為網(wǎng)卡寫內(nèi)存的指針,網(wǎng)卡寫完接收緩沖區(qū)一頁,CURR指針會(huì)自動(dòng)加一。
3.3 數(shù)據(jù)幀處理模塊
如果檢測(cè)到當(dāng)前有數(shù)據(jù)幀到來,系統(tǒng)立即轉(zhuǎn)入本模塊執(zhí)行,通過處理當(dāng)前數(shù)據(jù)幀附加字節(jié)判斷數(shù)據(jù)幀是否正確,來決定系統(tǒng)系下一步的動(dòng)作,本模塊只針對(duì)數(shù)據(jù)幀以太網(wǎng)封裝進(jìn)行處理。
RTL8019AS接收到的數(shù)據(jù)幀除了符合正常的以太網(wǎng)幀封裝格式外,幀頭有額外四個(gè)字節(jié)的數(shù)據(jù),四個(gè)字節(jié)數(shù)據(jù)具體含義如圖4所示。
圖4中第一個(gè)字節(jié)表示接收的狀態(tài),也就是接收狀態(tài)寄存器RSR的值,根據(jù)RSR寄存器標(biāo)志位的定義,可以通過檢驗(yàn)RSR的值是否為0x01,也就是標(biāo)志位PRX=1來檢驗(yàn)當(dāng)前接收到的數(shù)據(jù)是否良好。第2個(gè)字節(jié)Next Packet Pointer是一個(gè)指針,指向下一個(gè)數(shù)據(jù)幀將存儲(chǔ)在頁開始的地址。第3和第4是接收的長(zhǎng)度,表示該數(shù)據(jù)幀的長(zhǎng)度,要注意的是長(zhǎng)度的高位和低位是顛倒的,低位在前高位在后。
4 實(shí)驗(yàn)結(jié)果總結(jié)
本設(shè)計(jì)的基于以太網(wǎng)的音頻終端達(dá)到了預(yù)期目的,設(shè)計(jì)過程包括硬件系統(tǒng)設(shè)計(jì)和軟件系統(tǒng)設(shè)計(jì)。在89C58中實(shí)現(xiàn)了系統(tǒng)軟件的各功能模塊。整個(gè)系統(tǒng)軟件設(shè)計(jì)使用匯編語言編寫代碼,采用模塊化的設(shè)計(jì)方法,使其具有很好的可移植性和可修改性。系統(tǒng)完成了接收網(wǎng)絡(luò)音頻流、處理并還原為模擬音頻。在本系統(tǒng)中只負(fù)責(zé)音頻數(shù)據(jù)流的接收和處理,其數(shù)據(jù)傳輸功能仍可以擴(kuò)展。
參考文獻(xiàn):
[1] 黃勇峰.因特網(wǎng)語音通信技術(shù)及其應(yīng)用[M].北京:人民郵電出版社,2002(1):51-60.
[2] 胡衛(wèi)光.IP組播技術(shù)分析與應(yīng)用實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2004,(19):2-64.
[3] 何銳波,趙英俊.一種以太網(wǎng)與8位單片機(jī)的連接方法[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002(7):28-30.
[4] 王利霞,楊克儉.關(guān)于數(shù)字音頻的探討[J].福建電腦,2004(8):32-33.
[5] 黃訓(xùn)誠(chéng).基于RTL801AS的單片機(jī)TCP/IP網(wǎng)絡(luò)通信[J].微電子學(xué)與計(jì)算機(jī),2005,22(3):228-235.