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