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