菊花链AVB:构建一个低开销的AVB系统
扫描二维码
随时随地手机看文章
以太网音视频桥接技术(Audio Video Bridging over Ethernet,简称AVB),是电气电子工程师学会(IEEE)的一整套借由以太网传输音频和其他实时内容的标准。这些标准早已为20多家芯片制造商、音频与娱乐信息企业以及网络供应商所采用。
AVB通常被误传为仅为诸如现场音乐会这样的大型应用而服务。在本文中,证实了AVB可极好地适用于小型应用中,例如消费音频、音频电话会议或者车载娱乐等。为此,倡议使用“菊花链AVB”:它以减小AVB系统的容量为代价,避免了对交换机的需求。
在本文中,首先会给出一个AVB的概述。之后,将讨论AVB菊花链怎样工作,并且举出了一个菊花链网络的例子。
藏在壳中的AVB
从高水平的角度来看,AVB是通过为AVB数据流“预留”一部分可用的以太网带宽来工作的。AVB数据包在已分配的时隙中周期性地被传输;同时因为预留了带宽,所以就不会有冲突。系统中的所有节点共享一个虚拟时钟,AVB数据包都有一个“阈时”,它规定了何时媒体数据包应该结束。AVB数据包可以容纳所有类型的时间敏感型数据;本文只关注音频数据。
例如:一个系统可能包含一个正在传送数据的主节点(“主叫方”),以及由左右扬声器组成的两个节点(“被叫方”);由于所有三个节点都共享同一个通用时钟,所以左右扬声器将会同步地产生声音。
预留带宽:流预留协议(SRP、IEEE 802.1Qat)
AVB背后的神奇之处在于它将网络流量分为两组:实时流量与剩余流量。所有的实时流量都以一个8 kHz的节奏被传输,剩余流量被安排在它周围。也就是说,每隔125 us全部实时数据流都传送其数据并暂停其他数据流;当再没有实时数据时,其他数据包被传输。
过程如图1为所示。
图1:两种数据流传输场景。顶部:AVB预留了20%的流量;IP与其他遗留流量被安排在AVB时隙的周围。底部:AVB预留了80%流量;剩余流量被延迟,或者在它们不能被安排在AVB时隙的周围时则被丢弃
为了确保为所有实时数据流提供足够的空间,采用了一种协议来“分配带宽”。图2所示为一个包含2台交换机和4个节点的系统:节点A与节点D在它们之间预留一条数据流(45 Mbit/s),节点B与节点C预留另一条数据流(20Mbit/s)。在这些节点之间的所有交换机将确保提供足够的带宽:在交换机X与Y之间将会预留65 Mbit/s的带宽,是因为从A到D和从B到C的数据流都要经过这条链路。如果这恰好是一条100 Mbit/s的链路,那么只有35 Mbit/s带宽可供其它数据流使用,例如网页数流或者配置信息等。倘若D需要一个来自于A的大网页,那么数据包在X处可能会被遗弃。
图2:连接4个节点的2台交换机的图示
采用已分配的带宽使得AVB能够在一个2 ms的时间窗口中从端点到端点传送数据:为了满足这个限制,AVB允许最多7跳(个中继段),其中每跳至多累加125 us的延迟。这就意味着一个节点可以传送一段未来播放2 ms的音频需求,且所有的样本都将及时到达并在适当的时候播放完。
分配带宽的协议被称作数据流预留协议(SRP、IEEE 802.1Qat),这为AVB标准形成了基础性的构建单元。通过以8 kHz的节奏发送实时数据流,系统中的所有节点(交换机与终端设备)必须实现SRP并形成数据流。若其中一个节点是一台遗留交换机,那么它不会优先处理实时数据流,则有可能延迟实时数据流而造成输出抖动。
通用时钟:精准时间同步协议(PTP、 IEEE 802.1AS)
AVB中的所有音频数据流都与通用时钟同步;这使得音频内容制造商与消费者能够同步地播放和记录声音。这个时钟由“精确时间同步协议”或者称为PTP实现。
PTP假定所有节点都有一个理论上相当好的时钟(例如一款晶振时钟),最好是有一个已知的精度(如25 ppm,相当于每天2秒)。通过以太网电缆连接的PTP节点向彼此发送周期性的信息、报告时间并且计算其各自时钟的偏差。拥有最精确时钟的节点被选为“主时钟”(Master)节点,所有其他节点都根据主时钟来估算其相对偏差,这样使得所有的节点都能够计算出一个与主时钟密切保持同步的本地时钟。
通过网络同步时钟是要付出代价的。假设一个节点有一个不稳定的时钟(如因为它是温度敏感型),它的频率在迅速地变化。这个节点将注意到其频率与主时钟之间的相对变化,它抑或可轻微调整本地时钟来与匹配新的频率,但这将暂时地引起主时钟与本地时钟之间的一种相位差。或者可以更快地调整频率,但这在时钟信号中产生一种更高频率的抖动。对于音频来说,大家通常可以允许小的、暂时性的相位漂移,将抖动保持在很低的频率。
IEEE 标准802.1AS中规定的PTP协议是AVB的第二个组成单元。它也经常被用于联上网的计算机(笔记本电脑、服务器),来提供同步时钟。
流、信道、主叫者与接听者
AVB建立在“数据流”的基础上。如果这些数据是音频,则一条流包含了多个声道(如立体声),而每个AVB数据包包含了125 us所有声道的取样值,它们也是流的一部分。“主叫者”产生流,节点产生音频。一只麦克风或一台播放MP3文件的笔记本电脑都是主叫者。“接听者”可以订阅一条流:一台扬声器就是一个典型的接听者,他将从一条流中通常性地选择某一个声道并播放。
一个典型的系统可能包括如下几种:
● 带有6个接听者(如5.1声道环绕立体声)的同一个主叫者(如一个DVD播放器)
● 带有一组扬声器的多个主叫者(如一组麦克风),供会议使用
● 几十个麦克风、几十个扬声器,以及一个巨大的调音台(音乐会现场使用)
一个AVB系统应该是多大或多小没有统一规则来规定。然而,还是存在着实用性上的限制:AVB流都拥有相当大的开销,它限制了一条以太网线缆所能输送的流的数量。一条100 Mbit的以太网线缆可以输送9条立体声AVB流(总共18个通道),或者1条带有45个通道的单AVB流。
一种发现通信协议(IEEE 1722.1)被用来罗列、发现和控制所附带的设备及其功能,这种协议是从实际数据传输中分拆出来的,完全由一台主机用来配置系统。
菊花链
对比其他的数字音频分发机制(如USB音频),由于需要能感知AVB的交换机,AVB可能看起来成本较高。因为这个原因,提出菊花链AVB的案例:一台带有两个以太网端口(称其为A与B)和一台内置“交换机”的AVB终端设备,引号引住交换机是因为这并不是一台全功能的交换机。
图3:如图所示为支持AVB的笔记本电脑,它通过一个以太网端口接入到一个由两台扬声器和一支麦克风组成的菊花链
图3给出的即为一种布局案例。一台笔记本电脑与节点1相连,节点1与节点2相连,节点2与节点3相连,网络到此结束。每一个节点由2个端口(对称的)组成,连接端口的逻辑如下:
● 如果只有一个端口被插入,节点就相当于一台普通的AVB终端设备
● 如果两个端口都被接入,此节点主要担当两个端口之间的桥:所有数据流都正常通过。此节点自己将会接入任一经过此设备的AVB数据流,并且偶尔会消除或者产生一个数据包:例如当响应SRP、PTP或配置协议中任意一个时。
这就意味着依据交换容量节点需要的资源很少。到达端口A的数据将会流向B,除非它已被本地的节点预定,到达B的流也将流向A,除非它已被本地的节点预定。偶尔会在本地生成数据包,节点必须了解这些数据包应该去向A还是B。桥接A与B的软件必须是能感知AVB的,并且必须参与进来,例如时钟同步。
值得注意的是,现在既不需要路由表也不需要缓冲存储,完成这样简单的任务也不需要操作系统。这就意味着在成本方面,一台菊花链AVB终端设备与普通的AVB终端设备外加一个以太网PHY和插口的成本是差不多的。
这种方法有一些局限性:
● 和一台交换机不同,一个菊花链网络需要为流过整条菊花链的末向数据流预留流量;在1台带有7个节点的交换机里,所有7个节点理论上都可以接收100 Mbits的流量。在一个菊花链系统中,这可能需要第一个节点传输700 Mbits/s。然而,在一个AVB系统中,大多数数据流都是多路传送音频数据流,很小部分的流量为特殊的节点预留。因此,链上的节点都接听到相同的流,一条菊花链上几乎没有额外的数据流。
● 一秒限制:它指的是为了保证一个2ms的端对端延迟,AVB标准不支持在一个网络中有多于7台交换机,这就把一条单菊花链限制到7个节点范围内。有两种方法可以解决这个问题:首先,可以在一个封闭系统内放弃那2ms的延迟。其次,可以在菊花链中使用一台交换机。倘若一条4个节点的菊花链与交换机的每个端口都相连,那么一台交换机就可以使用4倍的节点数,减少了所需基础设施的成本。
因为这些限制,菊花链AVB非常适合于用于小规模系统。
菊花链实施案例
已经在带有16个逻辑核的XMOS芯片的基础上开发出了一种菊花链AVB节点。系统的硬件和软件结构如图4所示。的系统所用硬件包括:
● 一片带有16个逻辑核的xCORE多核微控制器
● 两个带有磁体和插口的以太网PHY
● 一个可以生成字时钟的低抖动锁相环(PLL)
● 一个带有输入输出级的编码解码器(CODEC)
图4:菊花链AVB解决方案样例的软件和硬件架构
微控制器运行7个任务来控制2个以太网端口:输入数据包、输出数据包和两个端口间的路由数据包。另外6个任务实现AVB栈,分别是主叫者/接听者、PTP与媒体时钟恢复、I2S控制、SRP/MRP和1722.1恢复与控制任务。所有的13个任务适合于128kByte的片上存储,从而不再需要排除外部RAM。用一片外部闪存芯片来存储固定数据和开机映像。其软件与高通道数AVB产品的软件非常相似,唯一不同的部分是MII接口和缓存。
通过采用一片XMOS sliceKIT卡加两片以太网子卡与一片音频子卡来构建了一个系统。图5为一张介绍4个菊花链节点堆叠的照片。菊花链节点堆叠与一台笔记本电脑相连,它将两个节点作为“左”和“右”声道。(音频子卡自带双立体声输入和双立体声输出;这次演示只运用了一个单音频输出。)
笔记本电脑可以发现两个节点,因而我们可以将我们的音频输出重新指向到两台扬声器。每个时钟的示波器波形图表明两个声道在播放时没有明显的相位差。相同的硬件/软件架构可被广泛应用,如构建一个会议电话系统,或者驱动一个功放(P/A)系统。
图5:菊花链原型
结论
我们已经证明我们能够构建一个低开销的AVB系统,而不需要全功能的AVB交换机。这减少了AVB的成本,并使菊花链系统得以被构建。