菊花鏈AVB:構(gòu)建一個(gè)低開銷的AVB系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
以太網(wǎng)音視頻橋接技術(shù)(Audio Video Bridging over Ethernet,簡(jiǎn)稱AVB),是電氣電子工程師學(xué)會(huì)(IEEE)的一整套借由以太網(wǎng)傳輸音頻和其他實(shí)時(shí)內(nèi)容的標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)早已為20多家芯片制造商、音頻與娛樂信息企業(yè)以及網(wǎng)絡(luò)供應(yīng)商所采用。
AVB通常被誤傳為僅為諸如現(xiàn)場(chǎng)音樂會(huì)這樣的大型應(yīng)用而服務(wù)。在本文中,證實(shí)了AVB可極好地適用于小型應(yīng)用中,例如消費(fèi)音頻、音頻電話會(huì)議或者車載娛樂等。為此,倡議使用“菊花鏈AVB”:它以減小AVB系統(tǒng)的容量為代價(jià),避免了對(duì)交換機(jī)的需求。
在本文中,首先會(huì)給出一個(gè)AVB的概述。之后,將討論AVB菊花鏈怎樣工作,并且舉出了一個(gè)菊花鏈網(wǎng)絡(luò)的例子。
藏在殼中的AVB
從高水平的角度來看,AVB是通過為AVB數(shù)據(jù)流“預(yù)留”一部分可用的以太網(wǎng)帶寬來工作的。AVB數(shù)據(jù)包在已分配的時(shí)隙中周期性地被傳輸;同時(shí)因?yàn)轭A(yù)留了帶寬,所以就不會(huì)有沖突。系統(tǒng)中的所有節(jié)點(diǎn)共享一個(gè)虛擬時(shí)鐘,AVB數(shù)據(jù)包都有一個(gè)“閾時(shí)”,它規(guī)定了何時(shí)媒體數(shù)據(jù)包應(yīng)該結(jié)束。AVB數(shù)據(jù)包可以容納所有類型的時(shí)間敏感型數(shù)據(jù);本文只關(guān)注音頻數(shù)據(jù)。
例如:一個(gè)系統(tǒng)可能包含一個(gè)正在傳送數(shù)據(jù)的主節(jié)點(diǎn)(“主叫方”),以及由左右揚(yáng)聲器組成的兩個(gè)節(jié)點(diǎn)(“被叫方”);由于所有三個(gè)節(jié)點(diǎn)都共享同一個(gè)通用時(shí)鐘,所以左右揚(yáng)聲器將會(huì)同步地產(chǎn)生聲音。
預(yù)留帶寬:流預(yù)留協(xié)議(SRP、IEEE 802.1Qat)
AVB背后的神奇之處在于它將網(wǎng)絡(luò)流量分為兩組:實(shí)時(shí)流量與剩余流量。所有的實(shí)時(shí)流量都以一個(gè)8 kHz的節(jié)奏被傳輸,剩余流量被安排在它周圍。也就是說,每隔125 us全部實(shí)時(shí)數(shù)據(jù)流都傳送其數(shù)據(jù)并暫停其他數(shù)據(jù)流;當(dāng)再?zèng)]有實(shí)時(shí)數(shù)據(jù)時(shí),其他數(shù)據(jù)包被傳輸。
過程如圖1為所示。
圖1:兩種數(shù)據(jù)流傳輸場(chǎng)景。頂部:AVB預(yù)留了20%的流量;IP與其他遺留流量被安排在AVB時(shí)隙的周圍。底部:AVB預(yù)留了80%流量;剩余流量被延遲,或者在它們不能被安排在AVB時(shí)隙的周圍時(shí)則被丟棄
為了確保為所有實(shí)時(shí)數(shù)據(jù)流提供足夠的空間,采用了一種協(xié)議來“分配帶寬”。圖2所示為一個(gè)包含2臺(tái)交換機(jī)和4個(gè)節(jié)點(diǎn)的系統(tǒng):節(jié)點(diǎn)A與節(jié)點(diǎn)D在它們之間預(yù)留一條數(shù)據(jù)流(45 Mbit/s),節(jié)點(diǎn)B與節(jié)點(diǎn)C預(yù)留另一條數(shù)據(jù)流(20Mbit/s)。在這些節(jié)點(diǎn)之間的所有交換機(jī)將確保提供足夠的帶寬:在交換機(jī)X與Y之間將會(huì)預(yù)留65 Mbit/s的帶寬,是因?yàn)閺腁到D和從B到C的數(shù)據(jù)流都要經(jīng)過這條鏈路。如果這恰好是一條100 Mbit/s的鏈路,那么只有35 Mbit/s帶寬可供其它數(shù)據(jù)流使用,例如網(wǎng)頁數(shù)流或者配置信息等。倘若D需要一個(gè)來自于A的大網(wǎng)頁,那么數(shù)據(jù)包在X處可能會(huì)被遺棄。
圖2:連接4個(gè)節(jié)點(diǎn)的2臺(tái)交換機(jī)的圖示
采用已分配的帶寬使得AVB能夠在一個(gè)2 ms的時(shí)間窗口中從端點(diǎn)到端點(diǎn)傳送數(shù)據(jù):為了滿足這個(gè)限制,AVB允許最多7跳(個(gè)中繼段),其中每跳至多累加125 us的延遲。這就意味著一個(gè)節(jié)點(diǎn)可以傳送一段未來播放2 ms的音頻需求,且所有的樣本都將及時(shí)到達(dá)并在適當(dāng)?shù)臅r(shí)候播放完。
分配帶寬的協(xié)議被稱作數(shù)據(jù)流預(yù)留協(xié)議(SRP、IEEE 802.1Qat),這為AVB標(biāo)準(zhǔn)形成了基礎(chǔ)性的構(gòu)建單元。通過以8 kHz的節(jié)奏發(fā)送實(shí)時(shí)數(shù)據(jù)流,系統(tǒng)中的所有節(jié)點(diǎn)(交換機(jī)與終端設(shè)備)必須實(shí)現(xiàn)SRP并形成數(shù)據(jù)流。若其中一個(gè)節(jié)點(diǎn)是一臺(tái)遺留交換機(jī),那么它不會(huì)優(yōu)先處理實(shí)時(shí)數(shù)據(jù)流,則有可能延遲實(shí)時(shí)數(shù)據(jù)流而造成輸出抖動(dòng)。
通用時(shí)鐘:精準(zhǔn)時(shí)間同步協(xié)議(PTP、 IEEE 802.1AS)
AVB中的所有音頻數(shù)據(jù)流都與通用時(shí)鐘同步;這使得音頻內(nèi)容制造商與消費(fèi)者能夠同步地播放和記錄聲音。這個(gè)時(shí)鐘由“精確時(shí)間同步協(xié)議”或者稱為PTP實(shí)現(xiàn)。
PTP假定所有節(jié)點(diǎn)都有一個(gè)理論上相當(dāng)好的時(shí)鐘(例如一款晶振時(shí)鐘),最好是有一個(gè)已知的精度(如25 ppm,相當(dāng)于每天2秒)。通過以太網(wǎng)電纜連接的PTP節(jié)點(diǎn)向彼此發(fā)送周期性的信息、報(bào)告時(shí)間并且計(jì)算其各自時(shí)鐘的偏差。擁有最精確時(shí)鐘的節(jié)點(diǎn)被選為“主時(shí)鐘”(Master)節(jié)點(diǎn),所有其他節(jié)點(diǎn)都根據(jù)主時(shí)鐘來估算其相對(duì)偏差,這樣使得所有的節(jié)點(diǎn)都能夠計(jì)算出一個(gè)與主時(shí)鐘密切保持同步的本地時(shí)鐘。
通過網(wǎng)絡(luò)同步時(shí)鐘是要付出代價(jià)的。假設(shè)一個(gè)節(jié)點(diǎn)有一個(gè)不穩(wěn)定的時(shí)鐘(如因?yàn)樗菧囟让舾行?,它的頻率在迅速地變化。這個(gè)節(jié)點(diǎn)將注意到其頻率與主時(shí)鐘之間的相對(duì)變化,它抑或可輕微調(diào)整本地時(shí)鐘來與匹配新的頻率,但這將暫時(shí)地引起主時(shí)鐘與本地時(shí)鐘之間的一種相位差?;蛘呖梢愿斓卣{(diào)整頻率,但這在時(shí)鐘信號(hào)中產(chǎn)生一種更高頻率的抖動(dòng)。對(duì)于音頻來說,大家通??梢栽试S小的、暫時(shí)性的相位漂移,將抖動(dòng)保持在很低的頻率。
IEEE 標(biāo)準(zhǔn)802.1AS中規(guī)定的PTP協(xié)議是AVB的第二個(gè)組成單元。它也經(jīng)常被用于聯(lián)上網(wǎng)的計(jì)算機(jī)(筆記本電腦、服務(wù)器),來提供同步時(shí)鐘。
流、信道、主叫者與接聽者
AVB建立在“數(shù)據(jù)流”的基礎(chǔ)上。如果這些數(shù)據(jù)是音頻,則一條流包含了多個(gè)聲道(如立體聲),而每個(gè)AVB數(shù)據(jù)包包含了125 us所有聲道的取樣值,它們也是流的一部分。“主叫者”產(chǎn)生流,節(jié)點(diǎn)產(chǎn)生音頻。一只麥克風(fēng)或一臺(tái)播放MP3文件的筆記本電腦都是主叫者。“接聽者”可以訂閱一條流:一臺(tái)揚(yáng)聲器就是一個(gè)典型的接聽者,他將從一條流中通常性地選擇某一個(gè)聲道并播放。
一個(gè)典型的系統(tǒng)可能包括如下幾種:
● 帶有6個(gè)接聽者(如5.1聲道環(huán)繞立體聲)的同一個(gè)主叫者(如一個(gè)DVD播放器)
● 帶有一組揚(yáng)聲器的多個(gè)主叫者(如一組麥克風(fēng)),供會(huì)議使用
● 幾十個(gè)麥克風(fēng)、幾十個(gè)揚(yáng)聲器,以及一個(gè)巨大的調(diào)音臺(tái)(音樂會(huì)現(xiàn)場(chǎng)使用)
一個(gè)AVB系統(tǒng)應(yīng)該是多大或多小沒有統(tǒng)一規(guī)則來規(guī)定。然而,還是存在著實(shí)用性上的限制:AVB流都擁有相當(dāng)大的開銷,它限制了一條以太網(wǎng)線纜所能輸送的流的數(shù)量。一條100 Mbit的以太網(wǎng)線纜可以輸送9條立體聲AVB流(總共18個(gè)通道),或者1條帶有45個(gè)通道的單AVB流。
一種發(fā)現(xiàn)通信協(xié)議(IEEE 1722.1)被用來羅列、發(fā)現(xiàn)和控制所附帶的設(shè)備及其功能,這種協(xié)議是從實(shí)際數(shù)據(jù)傳輸中分拆出來的,完全由一臺(tái)主機(jī)用來配置系統(tǒng)。
菊花鏈
對(duì)比其他的數(shù)字音頻分發(fā)機(jī)制(如USB音頻),由于需要能感知AVB的交換機(jī),AVB可能看起來成本較高。因?yàn)檫@個(gè)原因,提出菊花鏈AVB的案例:一臺(tái)帶有兩個(gè)以太網(wǎng)端口(稱其為A與B)和一臺(tái)內(nèi)置“交換機(jī)”的AVB終端設(shè)備,引號(hào)引住交換機(jī)是因?yàn)檫@并不是一臺(tái)全功能的交換機(jī)。
圖3:如圖所示為支持AVB的筆記本電腦,它通過一個(gè)以太網(wǎng)端口接入到一個(gè)由兩臺(tái)揚(yáng)聲器和一支麥克風(fēng)組成的菊花鏈
圖3給出的即為一種布局案例。一臺(tái)筆記本電腦與節(jié)點(diǎn)1相連,節(jié)點(diǎn)1與節(jié)點(diǎn)2相連,節(jié)點(diǎn)2與節(jié)點(diǎn)3相連,網(wǎng)絡(luò)到此結(jié)束。每一個(gè)節(jié)點(diǎn)由2個(gè)端口(對(duì)稱的)組成,連接端口的邏輯如下:
● 如果只有一個(gè)端口被插入,節(jié)點(diǎn)就相當(dāng)于一臺(tái)普通的AVB終端設(shè)備
● 如果兩個(gè)端口都被接入,此節(jié)點(diǎn)主要擔(dān)當(dāng)兩個(gè)端口之間的橋:所有數(shù)據(jù)流都正常通過。此節(jié)點(diǎn)自己將會(huì)接入任一經(jīng)過此設(shè)備的AVB數(shù)據(jù)流,并且偶爾會(huì)消除或者產(chǎn)生一個(gè)數(shù)據(jù)包:例如當(dāng)響應(yīng)SRP、PTP或配置協(xié)議中任意一個(gè)時(shí)。
這就意味著依據(jù)交換容量節(jié)點(diǎn)需要的資源很少。到達(dá)端口A的數(shù)據(jù)將會(huì)流向B,除非它已被本地的節(jié)點(diǎn)預(yù)定,到達(dá)B的流也將流向A,除非它已被本地的節(jié)點(diǎn)預(yù)定。偶爾會(huì)在本地生成數(shù)據(jù)包,節(jié)點(diǎn)必須了解這些數(shù)據(jù)包應(yīng)該去向A還是B。橋接A與B的軟件必須是能感知AVB的,并且必須參與進(jìn)來,例如時(shí)鐘同步。
值得注意的是,現(xiàn)在既不需要路由表也不需要緩沖存儲(chǔ),完成這樣簡(jiǎn)單的任務(wù)也不需要操作系統(tǒng)。這就意味著在成本方面,一臺(tái)菊花鏈AVB終端設(shè)備與普通的AVB終端設(shè)備外加一個(gè)以太網(wǎng)PHY和插口的成本是差不多的。
這種方法有一些局限性:
● 和一臺(tái)交換機(jī)不同,一個(gè)菊花鏈網(wǎng)絡(luò)需要為流過整條菊花鏈的末向數(shù)據(jù)流預(yù)留流量;在1臺(tái)帶有7個(gè)節(jié)點(diǎn)的交換機(jī)里,所有7個(gè)節(jié)點(diǎn)理論上都可以接收100 Mbits的流量。在一個(gè)菊花鏈系統(tǒng)中,這可能需要第一個(gè)節(jié)點(diǎn)傳輸700 Mbits/s。然而,在一個(gè)AVB系統(tǒng)中,大多數(shù)數(shù)據(jù)流都是多路傳送音頻數(shù)據(jù)流,很小部分的流量為特殊的節(jié)點(diǎn)預(yù)留。因此,鏈上的節(jié)點(diǎn)都接聽到相同的流,一條菊花鏈上幾乎沒有額外的數(shù)據(jù)流。
● 一秒限制:它指的是為了保證一個(gè)2ms的端對(duì)端延遲,AVB標(biāo)準(zhǔn)不支持在一個(gè)網(wǎng)絡(luò)中有多于7臺(tái)交換機(jī),這就把一條單菊花鏈限制到7個(gè)節(jié)點(diǎn)范圍內(nèi)。有兩種方法可以解決這個(gè)問題:首先,可以在一個(gè)封閉系統(tǒng)內(nèi)放棄那2ms的延遲。其次,可以在菊花鏈中使用一臺(tái)交換機(jī)。倘若一條4個(gè)節(jié)點(diǎn)的菊花鏈與交換機(jī)的每個(gè)端口都相連,那么一臺(tái)交換機(jī)就可以使用4倍的節(jié)點(diǎn)數(shù),減少了所需基礎(chǔ)設(shè)施的成本。
因?yàn)檫@些限制,菊花鏈AVB非常適合于用于小規(guī)模系統(tǒng)。
菊花鏈實(shí)施案例
已經(jīng)在帶有16個(gè)邏輯核的XMOS芯片的基礎(chǔ)上開發(fā)出了一種菊花鏈AVB節(jié)點(diǎn)。系統(tǒng)的硬件和軟件結(jié)構(gòu)如圖4所示。的系統(tǒng)所用硬件包括:
● 一片帶有16個(gè)邏輯核的xCORE多核微控制器
● 兩個(gè)帶有磁體和插口的以太網(wǎng)PHY
● 一個(gè)可以生成字時(shí)鐘的低抖動(dòng)鎖相環(huán)(PLL)
● 一個(gè)帶有輸入輸出級(jí)的編碼解碼器(CODEC)
圖4:菊花鏈AVB解決方案樣例的軟件和硬件架構(gòu)
微控制器運(yùn)行7個(gè)任務(wù)來控制2個(gè)以太網(wǎng)端口:輸入數(shù)據(jù)包、輸出數(shù)據(jù)包和兩個(gè)端口間的路由數(shù)據(jù)包。另外6個(gè)任務(wù)實(shí)現(xiàn)AVB棧,分別是主叫者/接聽者、PTP與媒體時(shí)鐘恢復(fù)、I2S控制、SRP/MRP和1722.1恢復(fù)與控制任務(wù)。所有的13個(gè)任務(wù)適合于128kByte的片上存儲(chǔ),從而不再需要排除外部RAM。用一片外部閃存芯片來存儲(chǔ)固定數(shù)據(jù)和開機(jī)映像。其軟件與高通道數(shù)AVB產(chǎn)品的軟件非常相似,唯一不同的部分是MII接口和緩存。
通過采用一片XMOS sliceKIT卡加兩片以太網(wǎng)子卡與一片音頻子卡來構(gòu)建了一個(gè)系統(tǒng)。圖5為一張介紹4個(gè)菊花鏈節(jié)點(diǎn)堆疊的照片。菊花鏈節(jié)點(diǎn)堆疊與一臺(tái)筆記本電腦相連,它將兩個(gè)節(jié)點(diǎn)作為“左”和“右”聲道。(音頻子卡自帶雙立體聲輸入和雙立體聲輸出;這次演示只運(yùn)用了一個(gè)單音頻輸出。)
筆記本電腦可以發(fā)現(xiàn)兩個(gè)節(jié)點(diǎn),因而我們可以將我們的音頻輸出重新指向到兩臺(tái)揚(yáng)聲器。每個(gè)時(shí)鐘的示波器波形圖表明兩個(gè)聲道在播放時(shí)沒有明顯的相位差。相同的硬件/軟件架構(gòu)可被廣泛應(yīng)用,如構(gòu)建一個(gè)會(huì)議電話系統(tǒng),或者驅(qū)動(dòng)一個(gè)功放(P/A)系統(tǒng)。
圖5:菊花鏈原型
結(jié)論
我們已經(jīng)證明我們能夠構(gòu)建一個(gè)低開銷的AVB系統(tǒng),而不需要全功能的AVB交換機(jī)。這減少了AVB的成本,并使菊花鏈系統(tǒng)得以被構(gòu)建。