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