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