劉 臺,胡 斌,龔 鵬,劉興姿
(武漢中原電子集團有限公司,湖北 武漢 430205)
在現代大型通信系統項目中,小型通信系統可作為大型通信系統的子系統存在。現有的通信方式中,USB 傳輸方式已經發展成為一種成熟的通信方式,而近距離無線傳輸多采用藍牙技術。藍牙5.0是藍牙技術聯盟在2016 年提出的藍牙技術標準。相比于之前版本的藍牙標準,藍牙5.0 具有更高的傳輸速率、更大的傳輸數據量和更遠的傳輸距離,理論通信范圍可達300 m[1],同時在低功耗方面性能突出[2]。
本文實現了有線與無線兩種方式的通信系統方案。方案使用的開發板型號為NRF52840,開發環境為keil5,兼容USB 有線模式和藍牙無線模式,實現了多個多功能通信設備對一個通話終端的實時話音通信。本文對系統結構、藍牙拓撲結構、數據流程以及程序實現流程進行展示,分析模擬音頻單元器件選型,對藍牙5.0 通信方式的傳輸速度進行分析并配置測試,并對比話音質量測試標準進行丟包測試、波形測試和實際話音測試,最終展示實驗結果。根據通話終端與多功能通信設備一對多實時話音通信方案,實現了藍牙5.0 無線話音傳輸和USB 有線話音傳輸。經實測話音質量,結果滿足音頻性能指標要求。
有無線局域網通信系統結構如圖1 所示。多功能通信設備可通過有線USB 或無線藍牙方式和通話終端實現話音通話合按鍵指令的傳輸。同時,一個通話終端可以和多個多功能通信設備同時通話,實現一對多通話功能。
多功能通信設備原理如圖2 所示。耳機采集話音模擬信號,傳輸進入多功能通信設備。多功能通信設備將模擬信號降噪、放大以及AD 轉換變換成數字信號。當工作模式為USB 模式時,數字信號通過USB 發給通話終端或計算機;當工作模式為藍牙模式時,多功能通信設備的藍牙模塊作為從設備,將數字信號經從設備的藍牙模塊發送給藍牙主機,然后藍牙主機再將數據經USB 轉發給通話終端或計算機。

圖1 有無線局域網通信系統結構

圖2 多功能通信設備原理圖系統設計與實現
低功耗藍牙系統拓撲結構如圖3 所示,是星形拓撲[3]。系統分為主機和從機兩種設備,其中系統如何運行取決于主機。中心主機可以和多個外設從機進行連接和通信。在有無線局域網通信系統中,多功能通信設備充當藍牙系統中的從機角色,而與通話終端通過USB 連接的藍牙模塊充當藍牙系統中的主機角色。

圖3 低功耗藍牙拓撲結構
USB 模式數據流向示意圖如圖4 所示。多功能通信設備將音頻信號直接通過USB 轉發到通話終端或計算機。
藍牙模式數據流向示意圖如圖5 所示。多功能通信設備將音頻信號通過藍牙發送給主機。主機接收藍牙數據后,USB 將數據轉發給通話終端或計算機。相比于USB模式,藍牙模式增加了主機轉發功能。
模擬音頻單元框圖如圖6 所示。當輸入MIC 有效值7 mV、1 kHz 正弦波時,發送端的DNR-3F 降噪模塊輸出的MICBUFF 信號有效值為660 mV±5%,需要通過下一級的運放進行增益調節,以滿足數字話音幅值要求和ADC 的輸入范圍要求310 mV±5%。
音頻信號增益調節電路如圖7所示,調節R23/R25的倍數,使運放輸出給ADC 輸入端電壓有效值在310 mV±5%以內,調試時將R25設定為10.5 kΩ,將R23設定為4.99 kΩ,電阻選擇貼片薄膜電阻,精度1%即可。

圖4 USB 模式數據流向

圖5 藍牙模式數據流向

圖6 模擬音頻單元

圖7 語音信號發送增益調節電路
R23與C68組成低通濾波器,截止頻率f=1/2πRC,要求放大器設計相位漂移5°以內,則截止頻率必須滿足:

因為人的聲音頻率范圍是300~3 400 Hz,為了放大一點余量,計算時取值300~4 000 Hz 的范圍。同時,要求低通濾波器在4 kHz 時的響應誤差在-0.01 dB(十進制0.999)以內,則截止頻率必須滿足:

綜上所述,截止頻率滿足f≥89.376 kHz 時,低通濾波器滿足增益誤差-0.01 dB 以內和相位漂移5°以內,因此反饋電容C取值為:

這里取值C=360 pF,重新計算可得截止頻率f=88.6 kHz。
當C71交流耦合電容前后端直流偏置電壓不一樣時,R26做為限流電阻限制通過交流耦合電容的電流,一般取值幾十到幾百歐姆,這里R26=49.9 Ω。
C71和R28組成高通濾波器,R28與連接到運放輸出端的ADC 輸入阻抗并聯,在這里建議并聯后的電阻為10 kΩ,此處所使用ADC 輸入阻抗為20 kΩ,因此R28=20 kΩ。
此處高通濾波器截止頻率300 Hz 處響應誤差取值-0.01 dB(十進制0.999),則截止頻率滿足:

交流耦合電容取值滿足:

這里C71取值為1 μF 時,高通濾波器截止頻率約為16 Hz。
電壓偏置電路設計如圖8 所示。

圖8 運放電壓偏置電路
設置R41=R42=100 kΩ,因此偏置電壓為2.5 V。C89和R41、R42組成低通濾波器,用于濾除電阻產生的熱阻噪聲和由電源VDDA5V 產生的電源噪聲,C89取值2.2 μF,C83預留,低通濾波器截止頻率為:

剛好只允許直流電源電壓通過,作為偏置電壓。
計算壓擺率SR:

式中,A為運放輸出最大幅值。
一般保守的選擇是取計算值的8~10 倍以上,這里取值為:

為了獲得THD+N 為-100 dB 大小的要求,此運放電路輸出端總噪聲必須滿足:


計算可得1 kHz 時,運算放大器輸入噪聲密度需要滿足:

OPA1611 滿足以上要求。
音頻編解碼芯片將從MCU 橋接芯片處收到的數字音頻信號通過DAC 轉換成模擬信號輸出,通過運放OPA1611 差分放大和濾波后傳送給耳機受話器。為使該模擬信號能夠滿足驅動耳機受話器,需將該信號調至有效值7.35 V±10%。
增益調節電路如圖9 所示。由于DAC 部分收到的其他音頻設備的音頻有效電平值是310 mV(7 mV輸入情況下),理論上需要放大的倍數為7.35 V/310 mV ≈23.7。電路中電阻值越高,會貢獻越高的熱噪聲給電路而降低音頻指標;電路中電阻值越低,會使DAC輸出越多的電流增加失真。因此,權衡考慮,選取電阻值R30=R47=2 k Ω。根據放大比例,計算可得R46=R48=47.5 kΩ,即放大倍數為47.5/2=23.75。

圖9 語音信號接收增益調節電路
圖9 中的U7A 部分,反饋電阻和電容實現低通濾波器功能。該低通濾波器的截止頻率為f=1/2πRC,要求差分放大器相位漂移5°以內,則截止頻率必須滿足:

因為人的聲音頻率范圍是300~3 400 Hz,為了放大一點余量,計算時取值300~4 000 Hz的范圍。
同時,要求差分放大器增益誤差-0.01 dB(4 kHz情況下),則截止頻率必須滿足:
綜上選擇f≥89.376 kHz,因此反饋電容C取值為:
這里取值C=36 pF,重新計算可得截止頻率f=93.12 kHz。
對于運放輸出電流能力的分析計算,差分放大器接耳機受話器負載,最大功耗110 mW,耳機1 kHz 阻抗大小為600 Ω,則對于運放每個通道的要求如下:

計算壓擺率SR:

式中,A為運放輸出最大幅值。根據尼奎斯特采樣原理,f=24 kHz(為DAC采樣頻率48 kHz的一半)。
一般保守選擇取計算值的8~10 倍以上,這里取值為:

為了獲得THD+N為-100 dB 大小的要求,此運放電路的總噪聲必須滿足:

式中,玻爾茲曼常數K=1.381×10-23,開氏溫度T=298 K。
電阻R30或R47的熱噪聲為:

主機程序流程圖如圖10 所示。從機程序流程圖如圖11 所示,流程中省略了按鍵處理。藍牙和USB 通過接收模塊接收數據。發送模塊發送數據時,為了調和各模塊的處理速度,使用環形緩存進行中和調整,保持收發速率的匹配。數據處理在主函數中進行。
藍牙連接或廣播都是周期性的。在一個周期中,藍牙連接或廣播只持續很短一段時間,幾百微妙至幾毫秒,與數據包長度有關[4]。CPU 或系統只會在這段時間內工作,其余時間系統都處于空閑狀態。若廣播間隔為200 ms,CPU 或者系統不是持續工作200 ms,實際只工作幾百微妙,大部分時間(199 ms以上的時間)系統都是處于空閑狀態。這是廣播或連接狀態系統平均電流很低的原因。圖12 為廣播間隔為200 ms 時系統的實時電流波形。
藍牙想要達到最大吞吐率,必須保證藍牙帶寬盡可能被利用。此問題可轉化為藍牙包盡可能占滿時間軸。如圖13 所示,在固定的時間內,發包占用的時間比例越高,越接近最大吞吐率。

圖10 主機程序流程

圖11 從機程序流程

圖12 廣播間隔200 ms 系統實時電流波形

圖13 藍牙發包情形一
相反,若連接間隔很長且每個間隔只發一包,那么即便包長為251 Bytes,吞吐率也不高,如圖14 所示。
藍牙的傳輸效率可以粗略表示為:

圖14 藍牙發包情形二

式中,th表示藍牙數據傳輸吞吐率,data表示一個連接間隔傳輸的數據,interval表示連接間隔,datalen表示一個數據包的長度,num表示在一個連接間隔內發送藍牙數據的包數。例如。連接間隔為60 ms,一個連接間隔只傳244 Bytes 的數據包,此時的吞吐率為244 Bytes/60 ms=4.1 kB/s。因此,欲提高吞吐率,可以從數據包長度、每個連接間隔發送的包數和連接間隔3 個方面入手。
已知NRF52840 藍牙傳輸支持的數據包最大長度為247 Bytes,I2S 采樣頻率為8 kHz,采樣位數16 bits。只取左聲道,根據條件確定了一包數據長度為160 Bytes,采樣一包數據20 ms,實際應用中需外加6 Bytes 包頭,因此一包數據長度為166 Bytes,即每20 ms 藍牙需輸出一個166 Bytes 數據包。
藍牙連接間隔取值范圍為7.5 ms~4 s,連接間隔太長會降低藍牙傳輸的吞吐率,連接間隔短一些會提高藍牙傳輸吞吐率,但連接間隔過短也不會繼續提高藍牙吞吐率且會增加耗電。經實驗,最佳連接間隔為30 ms。
現已確定一個包的數據長度為166 Bytes,連接間隔為30 ms,需確定每個連接間隔發送的包數num。每個連接間隔發送的包數取決于一個重要參數NRF_SDH_BLE_GAP_EVEVT_LENGTH,此參數的單位是1.25 ms。它的大小代表在一個連接間隔內用于發包的時間。為了盡可能多發包,應將整個連接間隔都用來發包。因此將此參數設為24,即30 ms,即整個連接間隔都用來發包。
一個251 Bytes 的藍牙數據包和它的ACK 包在空中總共持續的時間大概為2.5 ms,可以估算在30 ms連接間隔內理論上可以發的包數為30 ms/2.5 ms=12包。雖然NRF_SDH_BLE_GAP_EVEVT_LENGTH 設為30 ms,希望整個連接間隔都用來發包,但實際每個連接間隔還要預留一些時間給協議棧調度,射頻初始化和應用程序執行。假設以上時間花費為3 ms,那么30 ms 連接間隔理論上可以發送的最大包數為(30-3) ms/2.5 ms=10 包,最終確定每個連接間隔發送的最大包數為10,因此可以得出藍牙最高的傳輸速度可以達到247 Bytes10/30 ms=81 kB/s。
以上分析為1M 模式,藍牙5.0 提出了一個2M高速率模式[5],即同樣的連接間隔,2M 模式可以發出的數據包基本上是1M 模式的兩倍,相當于傳輸速率翻倍。
首先,根據圖1 的連接方式連接設備,一個通話終端連接4 個多功能通信設備,每個多功能通信設備連接一個用戶耳機。多功能通信設備在發送音頻包時,將發出的數據包數累加,使用Jlink 打印出來。發出的數據包經USB 模式或藍牙模式傳輸到計算機,計算機使用Microsoft Visual Studio 2010 實現了一個從com 口讀取數據并原路寫回com 口的程序,并經USB 或藍牙傳回到各個多功能通信設備,即回環測試。多功能通信設備將返回的數據包累加并打印,測試的數據量為30 萬包。多功能通信設備連接數為4,經過發送的包數和回環后收到的包數對比可以看出,發送與接收數據包延遲30 包。圖15 為發送包數與回環包數打印,packet_no 為發送話音包數,packet_recv 為回環后接收包數。
其次,測試音頻質量。耳機MIC 輸入7 mV、1 kHz正弦波,經USB 或藍牙傳回到各個多功能通信設備。回環后,耳機PHONE 輸出有效值7.35 V、1 kHz 正弦波。圖16 為回環后I2S 輸出波形,滿足測試標準。

圖15 丟包測試

圖16 波形測試
最后,進行話音測試。使用耳機講話,回環后傳回到耳機,可聽到話音,稍有延遲和雜音。
本文設計一種有無線結合的局域網通信系統。一個通話終端可連接多個多功能通信設備實現多人遠端通話,且實現有線與無線兩種傳輸模式。經實驗比對數據包數、波形測試和話音測試,結果可以得出此方案可行。但是,本次實驗通話延時稍大,與程序中使用的環形緩存較大有關。為保證不丟包,將環形緩存設置得較大。此外,本次實驗話音質量存在瑕疵,與開發板資源有限有關,且藍牙通信距離受限,需改進天線。