一天上手Aurora 8B/10B IP核(1)----如何理解Aurora 8B/10B协议?

        本文主要参考Xilinx《SP002--Aurora 8B/10B Protocol Specification》。

        系列汇总:一天上手Aurora 8B/10B IP核----汇总篇(直达链接)


1、概述

        Aurora 8B/10B协议是一个用于在点对点串行链路间移动数据的可扩展轻量级链路层协议(由Xilinx开发提供)。该协议即允许独立运行,而可以在其物理层的基础上运行诸如Ethernet和TCP/IP等协议,或其他自定协议,这无疑为应用提供了非常大的灵活性和可扩展性。

        Aurora 8B/10B协议定义了以下内容:

  • 物理层接口:电气特性、时钟编码、符号编码(symbol coding)
  • 初始化与错误处理:定义了通讯双方通讯前的初始化操作,同样定义了通讯双方在出现错误时的操作
  • 数据分段(data striping):定义了通讯数据如何映射到多个通道
  • 链路层(link layer):链路层定义了用户数据的封装方式
  • 流控(flow control):流控机制解决通信双方速率不一致所带来的缓存不足的问题

        Aurora 8B/10B协议没有定义的内容:

  • 错误指示和恢复:Aurora 8B/10B协议没有定义检测用户pdu错误的机制,也没有定义在8B/10B编码之外从错误中恢复的机制
  • 数据交换:Aurora 8B/10B协议没有定义寻址方案,因此不能支持链路层复用或交换

        下图是典型的基于Aurora 8B/10B协议的全双工串行通信流程图。参与通讯的两个设备被称为通道伙伴(channel partners,自己翻译的,可能不恰当),用户通过用户接口与Aurora接口通信,其传输的内容可以是用户数据(user PDUs),也可能是用户流控进行。Aurora接口之间可能存在一条路径(lane)或者多条路径进行串行数据的传输。

2、数据的发送与接收

        相对于其他高速串行协议,Aurora 8B/10B协议算是一个简洁的协议,该协议更多是定义了链路层与物理层的内容,使得封装较为底层。

        用户数据的发送可分为如下4个阶段:

  1. Padding(填充):数据的发送以2个symbols为基础,所以个数均为偶数,若发送数据为奇数,则需要填充一个字节,一般为0x9C
  2. Link Layer Encapsulation(链路层封装):添加帧头(SCP,2个字节)、帧尾(ECP,2个字节)
  3. 8B/10B Encoding(8B/10B编码):尽量实现0、1个数的平衡(DC平衡),并使得数据具备足够多的跳变沿以恢复时钟
  4. Serialization and Clock Encoding:串行化和时钟编码

        用户数据的接收实际上就是发送的逆过程,同样可分为如下4个阶段:

  1. Deserialization(解串):将接收到的串行数据转换成并行数据
  2. 8B/10B decoding of channel PDU payload(8B/10B解码):将已经编码成8B/10B格式的数据转换为普通格式(即字节形式)
  3. Link layer stripping(链路层剥离):将封装好帧头、帧尾的帧数据剥离开,只剩下用户数据(或加上填充的0x9C)
  4. Pad stripping(填充剥离):如果填充了0x9C则剥离,使得仅剩下用户数据

3、流控(Flow Control)

        尽管在通信双方(TX方和TX方)都具备FIFO来进行数据缓存,但由于通信双方速率的差异,还是存在可能性使得FIFO满而导致的数据丢失,为了防止这种情况,Aurora 8B/10B协议引入了流控机制。

        为什么需要流量控制?双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发送方的发送速率太快,会导致接收方处理不过来,这时候接收方只能把处理不过来的数据存在缓存区里(失序的数据包也会被存放在缓存区里)。如果缓存区满了发送方还在疯狂着发送数据,接收方只能把收到的数据包丢掉,大量的丢包会极大着浪费网络资源,因此,我们需要控制发送方的发送速率,让接收方与发送方处于一种动态平衡才好。对发送方发送速率的控制,我们称之为流量控制。

        目前支持的流控机制有以下两种:Native Flow Control(本地流控);User Flow Control(用户流控)。

        从下图我们可以看出来流控是如何操作的。

        本地流控操作:

        RX状态机监控用于RX FIFO的数据量,一旦其具备溢出风险时,即生成流控数据,用以代替用户数据。TX方接收到这些流控数据后,会根据数据内容暂停一段时间的发送,以便RX方有充足的时间处理数据。

        本地流控数据的格式如下:首字节为SNF符号(start of native flow control);第二个字节的前4bit表示需要暂停的间隔(以传输单个symbol为单位),后4个bit保留。

        用户流控操作:

        用户流控操作实际上与用户传递数据类似,区别在于其传递的为流控信息,此种流控方式的主动权掌控在发送方手中。本质上是用户需要进行流控时,不暂停发送,而直接发送流控信息(流控信息实际上就是无效信息)。

        用户流控数据的格式如下:首字节为SUF符号(start of user flow control);第二个字节的前3bit表示后面的流控信息的字节长度,后5个bit保留;后面跟符合前面定义长度的流控字节。

4、初始化与数据处理

        在使用Aurora通道进行数据收发之前,需要进行准备--初始化。 初始化的进行分为3个阶段:

  1. Lane Initialization:激活每条lane,并将接收到的数据进行对齐
  2. Channel Bonding:这个过程将各个通道绑定到一个数据通道中。 如果实现的功能只使用单个链路,则不需要通道绑定,并将忽略通道绑定
  3. Channel Verification:这个过程执行将接收到的数据映射到用户界面所需的对齐,并验证通道传输有效数据的能力 

        在复位或通道故障时,单个通道初始化过程将每个通道收发器与它的通道伙伴同步。信道故障定义为以下任一情况:

  • 通道数据错误过多
  • 过度的协议违反

        通道绑定将会将每条lane接收的数据对齐。通道绑定需要所有的lane都完成初始化后才开始,如下:

        通道验证过程用于在用户界面上对齐数据,并验证通道完整性。它本质上包括在每个方向上的所有通道上发送信道验证序列。使用这个已知的数据模式,接收通道伙伴可以在用户界面上正确地对齐数据,并验证通道的完整性。流程如下:

        协议定义了两种数据收发的错误,分别是硬错误(物理层面的错误)和软错误(解析或帧格式方面的错误)

        硬错误:

  • 接或收的缓存区存在溢出信号
  • 有太多的软错误
  • 对应设备正在复位
  • 物理连接中断

        软错误:

  • Disparity errors
  • Symbol errors

5、PCS与PMA 层

    Aurora 8B/10B协议是一个建立在GT收发器的高速串行物理通信协议,所以其基本架构实际上是GT收发器的架构,可分为两个部分:  

  • PMA:(Physical Media Attachment,物理媒介适配层):主要负责串并转化等物理层内容。
  • PCS:(Physical Coding Sublayer,物理编码子层):主要负责编解码、帧数据封装,空闲序列生成等。

        8B/10B,也叫做8比特/10比特或8b10b。8b/10b方式最初由IBM公司于1983年发明并应用于ESCON(200M互连系统),由Al Widmer和Peter Franaszek在IBM的刊物“研究与开发”上描述。

        8b/10b编码的特性之一是保证DC 平衡,采用8b/10b编码方式,可使得发送的“0”、“1”数保持基本一致,连续的“1”或“0”不超过5位,即每5个连续的“1”或“0”后必须插入一位“0”或“1”,从而保证信号DC平衡,它就是说,在链路超时时不致发生DC失调。通过8b/10b编码,可以保证传输的数据串在接收端能够被正确复原,除此之外,利用一些特殊的代码( 在PCI-Express总线中为K码) ,可以帮助接收端进行还原的工作,并且可以在早期发现数据位的传输错误,抑制错误继续发生。

        8b/10b编码是将一组连续的8位数据分解成两组数据,一组3位,一组5位,经过编码后分别成为一组4位的代码和一组6位的代码,从而组成一组10位的数据发送出去。相反,解码是将1组10位的输入数据经过变换得到8位数据位。数据值可以统一的表示为DX.Y或KX.Y,其中D表示为数据代码,K表示为特殊的命令代码,X表示输入的原始数据的低5位EDCBA,Y 表示输入的原始数据的高3位HGF。

        8b/10b编码是目前许多高速串行总线采用的编码机制,如 USB3.0、1394b、Serial ATA、PCI Express、Infini-band、Fibre Channel(光纤通道)、RapidIO等总线或网络等。

        

猜你喜欢

转载自blog.csdn.net/wuzhikaidetb/article/details/123723408