??? 摘? 要: 采用藍牙技術(shù)與分組語音技術(shù)相結(jié)合的方法,設(shè)計藍牙接入網(wǎng)關(guān)并利用LwIP協(xié)議棧在Blackfin處理器上開發(fā)嵌入式系統(tǒng),通過以太網(wǎng)建立起藍牙語音網(wǎng)絡(luò)。系統(tǒng)地介紹了藍牙語音網(wǎng)的系統(tǒng)架構(gòu)以及接入點的軟硬件設(shè)計方法。實際測試結(jié)果表明本系統(tǒng)可以同時支持7路藍牙語音傳輸并實現(xiàn)藍牙耳機在不同接入點之間的切換,測試效果滿足實時通話要求。?
??? 關(guān)鍵詞: Blackfin處理器; 語音接入點; I2S; 藍牙; LwIP
?
??? 藍牙技術(shù)作為解決“最后10米”的無線傳輸技術(shù),已逐漸成為低成本、短距離的無線個人網(wǎng)絡(luò)傳輸(Wireless Personal Area Network)的首選技術(shù),其主要目標是提供一個全雙工的無線傳輸環(huán)境,實現(xiàn)語音和數(shù)據(jù)的無線傳輸。藍牙技術(shù)和分組語音技術(shù)的結(jié)合是目前網(wǎng)絡(luò)應(yīng)用的熱點之一,藍牙的終端設(shè)備通過安全的無線鏈路,與藍牙語音網(wǎng)關(guān)建立連接,利用分組語音技術(shù)將語音信號轉(zhuǎn)化為一定長度和速率的數(shù)字化語音包,通過以太網(wǎng)以存儲轉(zhuǎn)發(fā)的方式交換到目的藍牙語音網(wǎng)關(guān),然后與對方終端建立無線鏈路,完成數(shù)字語音的遠距離傳輸。?
??? Blackfin處理器集成了一個由ADI公司和Intel公司聯(lián)合開發(fā)的基于MSA(Micro Signal Architecture)的16/32位嵌入式處理器,內(nèi)核主頻最高可以達到600 MHz[1]。最近比較流行的ADSP-BF536/537處理器平臺是適合新一代嵌入式連接網(wǎng)絡(luò)應(yīng)用的高集成度系統(tǒng)芯片(SoC)解決方案,為VoIP的配置提供了必需的集成度、高性能和低功耗的硬件支持,它具有多個集成的串行端口(可以無縫連接到音頻模數(shù)轉(zhuǎn)換器和數(shù)模轉(zhuǎn)換器)和10/100 BaseT的以太網(wǎng)媒體訪問控制器(MAC)。?
??? 傳統(tǒng)的藍牙以太網(wǎng)網(wǎng)關(guān)通常是將串行接口UART輸出的數(shù)據(jù)轉(zhuǎn)換成以太網(wǎng)幀,以實現(xiàn)以太網(wǎng)適配功能[2-3],這樣僅能傳輸普通數(shù)據(jù),無法滿足實時語音的傳輸。本文著重研究如何利用Blackfin處理器實現(xiàn)語音數(shù)據(jù)到以太網(wǎng)的協(xié)議轉(zhuǎn)換,實現(xiàn)多個藍牙終端以太網(wǎng)交換分組語音數(shù)據(jù)的雙向通信。?
1 系統(tǒng)架構(gòu)及總體方案?
??? 藍牙語音網(wǎng)系統(tǒng)由服務(wù)器、語音接入點和藍牙耳機終端組成,如圖1所示。服務(wù)器通過RJ45接口與語音接入點建立有線連接,藍牙耳機終端與其對應(yīng)的語音接入點建立起安全的無線連接,通過以太網(wǎng)上的服務(wù)器將語言信號交換到目的語音接入點,然后與對方耳機終端建立無線連接,完成語音的較遠距離傳輸。語音接入點由藍牙模組和Blackfin處理器兩部分組成。?
?
?
??? 一個完整的通信信道(包括語音和網(wǎng)絡(luò)協(xié)議棧)只占用不到75 MHz的處理器帶寬。Blackfin處理器具有高達600 MHz的性能,有足夠的處理帶寬擴展VoIP功能。Blackfin處理器在一個統(tǒng)一的內(nèi)核體系結(jié)構(gòu)中提供了一種會聚的解決方案——適合于語音處理的數(shù)字信號處理器(DSP)和適合于網(wǎng)絡(luò)及用戶接口需求的RISC精簡指令微控制器(MCU)功能。這種在單顆會聚處理器中提供完整VoIP功能的獨特功能有利于單一的軟件開發(fā)環(huán)境、加快系統(tǒng)的調(diào)試和配置,并降低系統(tǒng)總成本[1]。?
2 硬件方案?
??? 語音接入點包括Blackfin處理器和藍牙模組接入網(wǎng)關(guān)兩部分,如圖2所示。利用Blackfin處理器的SPORTs(同步串行端口)通過數(shù)據(jù)總線與藍牙接入網(wǎng)關(guān)進行串行數(shù)字音頻總線協(xié)議I2S(Inter-IC Sound bus)格式的語音信號傳輸,以中斷的方式接收通過UART(通用異步接收器/傳輸器)端口發(fā)送的控制信號,控制信號主要包括用于代表藍牙無線鏈路質(zhì)量的RSSI、LinkQuality等參數(shù)值,通過服務(wù)器端的切換算法以實現(xiàn)耳機終端在不同接入點之間的切換功能。?
?
?
2.1? 基于LwIP的Blackfin處理器應(yīng)用方案?
??? 在基于Blackfin處理器的網(wǎng)絡(luò)應(yīng)用方案的選擇上,采用基于輕型互聯(lián)網(wǎng)協(xié)議庫LwIP(Light-weight IP)和VDK(用于驅(qū)動TCP/IP的實時操作系統(tǒng))的ADSP-BF537處理器,ADSP-BF537處理器上配備一塊符合IEEE 802.3標準的以太網(wǎng)MAC控制器,使用標準的MII/RMII接口方便地連接到廣泛的網(wǎng)絡(luò)物理層設(shè)備[4]。ADSP-BF537 EZ-Kit Lite板包括1塊SMSC LAN85C183以太網(wǎng)物理層收發(fā)器,連接到ADSP-BF537處理器的MII接口,從而可以方便地提供1個網(wǎng)絡(luò)接口[5]。?
??? 所有網(wǎng)絡(luò)相關(guān)的初始化都通過函數(shù)lwIP_sysboot_threadtype_RunFunction()實現(xiàn)[6]。在設(shè)置網(wǎng)絡(luò)接口及其相關(guān)的TCP/IP協(xié)議棧時要注意,與以往Blackfin處理器不同,ADSP-BF537處理器需要通過處理器內(nèi)核設(shè)置外部總線接口單元EBIU(External Bus Interface Unit)控制器來確定DMA(Direct Memory Access)優(yōu)先級[6]。EBIU服務(wù)程序其實就是Blackfin處理器的SDRAM控制器的控制器。它包含1個運算邏輯,可以在SCLK頻率發(fā)生改變后,自動計算出新的SDRAM設(shè)置值。EBIU服務(wù)程序?qū)⑴c電源管理服務(wù)程序配合作用,因此,對用戶而言,只需要更改CCLK和SCLK設(shè)置,EBIU服務(wù)程序就會自動調(diào)節(jié)SDRAM設(shè)置。?
??? ADSP-BF537處理器可支持8個I2S立體聲設(shè)備。ADSP-BF537處理器的SPORT I2S控制器需要解決采樣和存儲問題,必須具備從音頻流中提取數(shù)據(jù)幀、將數(shù)據(jù)幀重新組成音頻流、數(shù)據(jù)緩沖、通過數(shù)字音頻總線(DAB)與藍牙接入網(wǎng)關(guān)接口等功能。如圖3所示,按照I2S時序標準[7],I2S接收器從串行比特流中提取有效語音數(shù)據(jù)組成32 bit的并行數(shù)據(jù),然后,存儲在異步FIFO(First In First Out)中,這里設(shè)置收/發(fā)FIFO深度為1 024,寬度為32 bit。I2S總線采用全雙工模式,設(shè)置幀同步(FS)、連續(xù)時鐘(SCLK)和發(fā)送/接收數(shù)據(jù)(SPORTx_TX/ SPORTx_RX)。?
?
?
2.2? 藍牙模組接入網(wǎng)關(guān)設(shè)計?
??? 眾所周知,1個藍牙終端可以與其他藍牙終端建立7個ACL鏈路和1個SCO鏈路,只有建立起SCO鏈路才能用于傳輸實時語音,所以藍牙接入網(wǎng)關(guān)的容量取決于內(nèi)部藍牙模組的數(shù)目。?
??? 藍牙模組采用集成藍牙基帶和射頻部分的單芯片模組BluetoothCore3-Multimedia External(以下簡稱BC03)。BC03基于Bluecore03芯片,內(nèi)嵌16位RISC微處理器,并提供I2S/PCM、SPI、UART/USB、PIO接口,可作為簡單的嵌入式控制器及藍牙鏈路控制器。BC03模組提供對I2S的支持,設(shè)置了幀同步(WS)、時鐘(CLK)和輸入/輸出數(shù)據(jù)線以支持雙工通信。控制信號通過UART端口進行傳輸,首先要通過函數(shù)StreamUartSink()進行定義,用函數(shù)StreamUartConfigure()設(shè)置波特率、停止位及奇偶校驗位。在語音信號傳輸過程中采集到地RSSI和Link Quality的值以字符格式周期性的通過UART_TX發(fā)送到ADSP-BF537處理器,經(jīng)過服務(wù)器端的切換算法判決后,反饋的控制信號再通過UART_RX被接入網(wǎng)關(guān)所接收,據(jù)此完成與藍牙耳機終端之間的切換功能。?
3 軟件設(shè)計?
??? Blackfin處理器的軟件設(shè)計主要實現(xiàn)藍牙數(shù)字語音數(shù)據(jù)、控制信號和以太網(wǎng)幀的轉(zhuǎn)換以及串口通信程序。軟件運行平臺是Visual DSP++ 4.0,編程使用C/C++語言,程序基于嵌入式Lightweight IP協(xié)議棧和驅(qū)動TCP/IP的實時操作系統(tǒng)VDK。ADSP-BF537處理器首先與服務(wù)器建立起控制信號的連接,實現(xiàn)握手的過程,等到藍牙耳機終端與藍牙接入網(wǎng)關(guān)連接就緒后,通過服務(wù)器的控制,以IP包的形式實現(xiàn)以太網(wǎng)上的語音數(shù)據(jù)交換,并最終實現(xiàn)與不同藍牙耳機終端之間的通話,如圖4所示。?
?
?
??? 由于藍牙模組數(shù)目較多,數(shù)據(jù)吞吐量較大,因此為每一個藍牙模組分別設(shè)置接收/發(fā)送緩沖區(qū)來暫存數(shù)據(jù)。每個緩沖區(qū)大小4 KB,依次為接收緩沖區(qū)RXBUF0~RXBUFx和發(fā)送緩沖區(qū)TXBUF0~TXBUFx[3]。數(shù)據(jù)輸入輸出任務(wù)調(diào)用DMA控制器,與底層的硬件驅(qū)動交互。為了提高系統(tǒng)性能,采用DMA控制器將通過I2S總線接收到的數(shù)據(jù)暫存在接收緩沖區(qū)中;同理,將以太網(wǎng)數(shù)據(jù)從發(fā)送緩沖區(qū)發(fā)出也是由DMA控制器完成,這樣大大減輕了CPU的負擔(dān),從而有利于以太網(wǎng)傳輸。管理任務(wù)和以太網(wǎng)通信任務(wù)各自擁有一個消息隊列,前者分析處理數(shù)據(jù)幀中的控制信號,后者建立SOCKET連接并收發(fā)數(shù)據(jù)??梢酝ㄟ^DHCP協(xié)議自動獲取語音接入點的IP地址,也可以根據(jù)需要分配事先定義的IP地址。?
??? 藍牙模組接入網(wǎng)關(guān)主要實現(xiàn)基于RFCOMM的藍牙無線數(shù)據(jù)的傳輸,并實現(xiàn)RFCOMM數(shù)據(jù)與UART 原始串口的流連接。軟件的實現(xiàn)主要基于CSR 公司提供的藍牙系統(tǒng)嵌入式開發(fā)包BlueLab 3.4.2和CSR Bluecore協(xié)議棧以及CCL BlueStack 協(xié)議棧。?
4 實際測試分析及結(jié)論?
??? 藍牙語音網(wǎng)的實際測試在ADI公司Blackfin系列處理器的ADSP-BF537 EZ-Kit Lite硬件平臺上實現(xiàn),并將該硬件平臺接入本地局域網(wǎng)絡(luò)。表1列出了實際語音通話過程中的網(wǎng)絡(luò)測試結(jié)果,影響時延和傳輸速率的主要因素是網(wǎng)絡(luò)負載情況。?
?
?
??? 在語音通話的實際測試中,在接入端使用語音分析軟件將語音的波形做一些分析,以方便比較,如圖5所示,上邊是在發(fā)送端采集的語音波形,下邊是在接收端獲取的語音波形。波形吻合度達到99%,實際通話效果清晰連貫。實際測試的結(jié)果證明了基于Blackfin處理器的藍牙以太網(wǎng)網(wǎng)絡(luò)接口成功地實現(xiàn)了訪問以太網(wǎng)和藍牙耳機終端的功能,并能夠?qū)崟r傳輸語音數(shù)據(jù)。
?
?
??? 本設(shè)計針對語音傳輸,采用I2S總線和DMA控制器完成語音數(shù)據(jù)輸入/輸出通過UART接口和中斷方式完成控制信號的傳輸,系統(tǒng)具有很強的實時性,有效地減小了通信延時;Blackfin處理器高達600 MHz的性能在同時支持7路語音傳輸?shù)耐瑫r也保證了通話質(zhì)量,通過調(diào)配系統(tǒng)資源改善了采用其他處理器可能帶來的接口速率問題,測試效果完全滿足實時語音通信的要求。?
??? Blackfin處理器豐富的接口資源以及LwIP協(xié)議棧較小的體積都使得系統(tǒng)的集成度提高,并且為系統(tǒng)功能擴展和系統(tǒng)優(yōu)化提供了條件。Blackfin處理器可以滿足在語音接入點實現(xiàn)語音信號的編碼算法,提高語音數(shù)據(jù)傳輸效率;隨著服務(wù)器端切換算法的繼續(xù)完善,語音接入點在及時準確地傳輸控制信號的同時保證語音鏈路質(zhì)量,從而實現(xiàn)藍牙耳機終端在不同語音接入點之間的無縫切換功能,從根本上解決了藍牙技術(shù)受限于距離的問題。?
參考文獻?
[1] 陳峰.Blackfin系列DSP原理與系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2004.?
[2] 殷偉鳳,劉高平.基于SOPC藍牙-以太網(wǎng)接口適配器的設(shè)計[J].計算機應(yīng)用,2004(9):27-29.?
[3] 孫睿,付志紅.基于嵌入式Linux的藍牙以太網(wǎng)關(guān)設(shè)計[J].計算機應(yīng)用,2006(10):27-29.?
[4] Getting started with blackfin processor. Revision 3.0,Analog Devices Inc, August 2007.?
[5] ADSP-BF537 EZ-KIT Lite Evaluation System Manual.Rev 2.0, Analog Devices, Inc, June 2006.?
[6] LwIP User Guide (
[7]?I2S bus specification. Philips Semiconductors 1996.