基于以太网通信的数据收发处理技术
扫描二维码
随时随地手机看文章
引 言
以太网总线是国际上应用最广泛的通信总线之一 [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 结 语
该以太网数据收发设计方案原理简单,易于理解和实现, 解决了无中心通信、传输抖动、异常溢出处理等三个问题。并 对避免异常溢出的发生提出了设计建议。在以太网总线的通 信系统中,尤其是需要周期性地进行数据收发的音频通信系 统中,应用该方案可保证音频传输的连续性并有效提高各终端 设备的灵活性和系统的可靠性。