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