Aurora为可裁剪轻量级链路协议,具有低开销、可拓展的吞吐量和高灵活的数据接口,使用资源少特点,数据通路数和数据率可定制,在点对点串行传输可以代替并行传输,减少布线难度,也可应用于ASIC占用更少的资源,提供更高的性能。
Aurora的帧接口(本地连接)
一、数据传输模块
对于单个字长的数据TX_EOF_N和TX_SOF_N可同时有效
1、TX发送模块
in:TX_SRC_RDY_N
out:TX_DST_RDY_N
两者在同周期被拉低时,数据才能被采样,并且TX_SRC_RDY_N拉低时候采样才有效
进行握手,本地的数据才能发送到aurora路中
Example1:简单的正常发送
sof_n拉蒂开始传输第一个数据,eof_n拉低传输最后一个数据,同周期rem表明最后一周期的传输字节数
Example2:传输中暂停发送
通过控制TX_SRC_RDY_N信号拉高,来实现暂停,期间发送空闲码给aurora链路层
Example3:传输3n-1个字节,前两个数据为n字节,最后一个为n-1,使用rem实现最后一拍传n-1
2、RX接收模块
少了dst_rdy_n信号
Example1:传输中暂停接收,RX_SOF_N和RX_SRC_RDY_N拉低,说明第一个数据已经准备好接收
通过控制RX_SRC_RDY_N信号拉高,来实现暂停
二、帧传输的UFC(流量控制)
Aurora 8b/10b 协议包括用户流量控制(ufc) ,允许通道合作伙伴使用单独的带内通道发送控制信息。用户无需等待正在进行的帧的结束,就可以向核心的通道合作伙伴发送短的 ufc 消息,UFC消息与常规帧数据共享通道,但具有更高的优先级
1、发送UFC信息:发送模块到aurora
发送UFC相关信号
UFC_TX_REQ_N out:拉低UFC_TX_REQ_N 请求向通道合作伙伴发送一条 ufc 消息。持续直到 UFC_TX_ACK_N 被拉低。不要拉高这个信号,除非整个 ufc 消息已经准备好被发送; ufc 消息一旦启动就不能被中断。
UFC_TX_ACK_N in:当 Aurora 8b/10b 核准备读取 ufc 消息的内容时拉低UFC_TX_ACK_N 在拉低信号之后的周期中,tx _ d 端口上的数据将被视为 ufc 数据。Tx _ d 数据继续用于填充 ufc 消息,直到足够多的周期过去才能发送完整的消 息。UFC 循环中未使用的字节被丢弃。
UFC_TX_MS[0:2] out:指定将要发送的 ufc 消息的大小。大小编码是一个介于0和7之间的值
UFC消息可以携带2到16个数据字节的偶数。用户应用程序通过在 UFC_TX_MS 端口上驱动一个大小代码来指定消息的长度。
UFC_TX_REQ_N 被拉低UFC_TX_MS才有效
UFC和数据切换模型
Aurora发出的TX_DST_RDY_N回应信号,用来控制TX_D数据线上的为数据还是UFC信息
拉低时:数据放到TX_D
拉高时:UFC信息放到TX_D
注意:通过计算ufc信息长度/数据位宽=传输ufc信息需要的周期数。直到所有数据被获取,才能启动 ufc 消息。与常规数据不同,ufc 消息在 UFC_TX_ACK_N 被断言后不能被中断。
Example A:传输单周期UFC信号,UFC_TX_MS=1,即4byte数据,被放在2byte接口上,那么需要2cycle
①传输单周期UFC信号,UFC_TX_REQ_N 和UFC_TX_ACK_N 握手后的下一周期数据放到TX_D数据通道
②UFC_TX_MS规定UFC的字节数只有当UFC_TX_REQ_N 被拉低时,UFC_TX_MS有效
③UFC_TX_ACK_N 被断言两个周期。Aurora 8b/10b 核使用数据流中的这个间隙来传输 ufc 报头和消息数据。X为报头,UFC为信息数据(被拉低后的第一个周期为UFC信息)
Example B:传输多周期UFC信号,用2byte接口传16byte的ufc信息
2、接收UFC信息
当 Aurora 8b/10b 核心接收到一个 ufc 消息时,它通过一个专用的 ufc_localllink 接口将消息中的数据传递给用户应用程序。数据在 UFC_RX_DATA端口上显示; UFC_RX_SOF_N表示消息数据的开始,UFC_RX_EOF_N表示消息数据的结束。UFC_RX_REM用于显示在消息的最后一个周期中UFC_RX_DATA上的有效字节数(例如,当 UFC_RX_EOF_N被断言时)。 UFC_RX LocalLink 接口上的信号只有在UFC_RX_SRC_RDY_N拉低时才有效。
ExampleA
在4byte数据接口,接收单周期UFC信息,靠UFC_RX_SOF_N、UFC_RX_EOF_N、UFC_RX_SRC_RDY_N,三个信号控制接收数据
ExampleB
在4byte接口上传输8byte的UFC信息,需要2cycle