引 言
以太網總線是發處國際上應用最廣泛的通信總線之一 [1],在音頻通信領域得到了廣泛應用。理技相比其他通信領域,基于據收音頻通信自身的太網通信特點決定了其需解決以下三方面的問題:
(1) 因音頻實時性較強,需要周期性地進行數據收發,發處 為提高各終端設備的理技靈活性和系統的可靠性,需要采用分布式無中心通信機制,基于據收使各終端設備不依賴某個中心節點設備的太網通信同步控制,可自主完成數據收發;
(2) 為保證音頻的發處連續性,需要采用一種防抖動機制, 解決以太網交換機在數據交換時引起的數據抖動問題;
(3) 當出現異常情況導致接收緩沖區溢出時,對需丟棄數據的位置和長度需有合理的設計,使損失降到最小。
1 無中心通信機制
無中心通信機制設備連接示意如圖 1 所示。
無中心通信機制是相對有中心通信機制而言的,有中心通信機制指在一個通信系統中須有一個終端設備作為整個通信系統的中心控制設備,對其他各終端設備的通信(即數據收、發)時隙進行控制,使整個通信系統處于同步通信方式。該方式在半雙工總線型通信總線(如 RS 485)下 [2],可解決多個終端同時進行數據發送引起的碰撞沖突問題。但在以太網全雙工星型通信總線下會失去其原有意義,并且還會因為整個系統通信依賴一個特定的中心設備而降低可靠性和靈活性。
為解決有中心通信機制在以太網總線通信下的弊端,文中設計了一種無中心分布式通信機制 [3],該通信機制是在以太網全雙工通信的基礎上建立的一種無中心異步收發機制。發 送時,不依賴其他中心設備,以自身運行時鐘為基準,定時周 期性發送數據包 ;接收時,建立首尾連接的環形接收緩沖區, 如圖 2 所示。接收到數據包后,會按照存入指針位置存入緩沖 區,同時存入指針將移位至下一個位置 [4]。
需要對接收到的數據包進行處理時,按照取出指針的位 置取出緩沖區中的數據包,同時取出指針移位至下一個位置。
存入指針與取出指針處于同一位置時,表示緩沖區為空, 沒有接收到數據包,存入指針與取出指針之間的間隔數表示緩 沖區中已接收到的數據包數量。
基于上述方案實現的無中心異步收發機制可保證在通信系統內任意一個終端設備發生故障時其他設備的正常通信,提高了系統的可靠性。同時,無需特定的中心設備,可任意連接兩個或多個終端設備,實現相互之間的通信,提高了系統的靈活性。
2 防抖動設計
以太網交換機自身的特性決定了其在傳輸數據,尤其在多路以太網接口同時頻繁傳輸數據時,很難保證數據轉發的平穩性,易出現數據包轉發周期不均勻的現象,即抖動現象 [5]。為防止抖動引起的音頻斷續問題,文中設計一定長度的cache, 如圖 3所示。
圖中cache 長度設為 m,當存入指針和取出指針之間的數據大于等于 m 時,開始處理接收到的數據包,并按照取出指針的位置取出緩沖區中的數據包,同時取出指針移位至下一個位置。由此可保證接收緩沖區有 m 個數據包的緩沖,而當抖動小于 m 個周期時,接收緩沖區仍有數據可供處理,不會導致音頻出現斷續。
m 值的選定由具體產品的抖動時間和產品對音頻傳輸延 時的要求綜合決定。m 值過大,會引起音頻傳輸延時增大。m 值過小(小于抖動時間),則無法達到防抖動的目的,導致音 頻出現傳輸斷續。因此需要在音頻傳輸連續和延時兩個指標 之間進行平衡,一般原則是在保證 m 值周期時間大于抖動時 間的前提下,越小越好。
3 異常溢出處理
在異常情況下,當存入指針加 1 后與取出指針位置相同時, 表示接收緩沖區已滿,為避免繼續接收數據導致接收緩沖區 溢出 [6],同時防止最新接收的數據先被處理,較早接收的數 據后被處理,導致音頻前后顛倒。在接收緩沖區已滿時,取出 指針跳至加 m 后的位置,將最早接收的 m 個數據丟棄,使損 失降到最小,并保證數據按照正常的順序處理。接收緩沖區 溢出示意圖如 4 所示,溢出處理后示意如圖 5 所示。
該處理方案僅用于異常溢出時的特殊處理,將不良后果 的危害降到最小,避免出現音頻前后顛倒而無法保證音頻的 連續性。為保證后續正常通信,必須丟掉若干音頻數據。
要避免異常狀況發生,還需從整個緩沖區大小和各終端 設備的時鐘精確度兩個方面考慮。根據具體產品的硬件特性, 在設計初期盡量減小各終端設備之間的時鐘偏差,擴大接收 緩沖區容量。
4 結 語
該以太網數據收發設計方案原理簡單,易于理解和實現, 解決了無中心通信、傳輸抖動、異常溢出處理等三個問題。并 對避免異常溢出的發生提出了設計建議。在以太網總線的通 信系統中,尤其是需要周期性地進行數據收發的音頻通信系 統中,應用該方案可保證音頻傳輸的連續性并有效提高各終端 設備的靈活性和系統的可靠性。