RapidIO 包格式详解
请求包
串行和并行
物理层
S :S位指示这是一个包还是一个控制符号(S=0表示是一个包,S=1表示是控制符号)。
AckID : ackID是返回给包发送者的包标识符。
串行物理层为该字段定义了5位。这足以在两个器件间唯一的识别最多32个未完成的事务
并行物理层只有3位,两个器件间唯一的识别最多8个未完成的事务。
PRIO : 字段指示用于流量控制的包优先级,2'b11优先级最2’b00优先级最低。
Crf : 关键请求流(Critical Request Flow),与prio字段共同决定包的优先级。
crc : 使用16位循环校验码检查包中的错误。
传输层
添加到逻辑数据包中的三个字段(tt、目的地ID 和 源ID)允许使用三种不同大小的设备ID字段:Dev8字段最多允许将256个设备连接到织物上。Dev16字段允许最多拥有65,536个设备的系统。Dev32字段允许最多拥有4,294,967,296个设备的系统.
tt : tt字段表示向数据包中添加了哪种类型的附加传输字段 见 table 2-1
\
逻辑层
Ftype : 格式类型(Format Type),与Ttype共同唯一的确定包的格式。
Ttype : 事务类型(Transaction Type),与Ftype共同唯一的确定包的格式。
Wrsize/Rdsize :此字段根据包的类型来决定是写事务数据的大小还是读事务数据的大小,这个字段配合wdptr(word pointer)字段一起使用。
Src TID :包的事务ID(Transaction ID)号。
Extended Address :扩展地址,这是一个可选字段,指定50-bit物理地址的高16-bit或者66-bit物理 地址的高32-bit 。
Address : 29-bit的物理地址,由于RapidIO传输以一个双字(double-word)为基本单元,大多数嵌入式系统是32位的,所以一个字(word)占用4个字节,一个双字(double-word)占用8个字节,所以29-bit的物理地址指向的一个存储单元实际上是占用8个字节的,这样用29-bit的物理地址实际上可以访问4G(2^32)的内存空间。
Wdptr :Word指针,与数据大小(rdsize和wrsize)字段一起使用。
具体使用见 table 4-3 和table 4-4.
Xamsbs :扩展地址最高位(Extended address most significant bits),把物理地址进一步扩展2位,由于29-bit的地址已经可以访问4G内存空间,在最高位扩展2位以后就可以访问16G的内存空间
Data Payload :要传输的数据(8~~256 BYTE).
响应包
响应包格式和请求包基本一致
其它包的格式在事务类型中介绍
HELLO包格式
为了简化RapidIO包的构建过程,RapidIO核的事务传输接口(ireq,treq,iresp,tresp)可以配置为HELLO(Header Encoded Logical Layer Optimized)格式。这种格式把包的包头(Header)域进行标准化,而且把包头和数据在接口上分开传输,这将简化控制逻辑并且允许数据与发送边界对齐,有助于数据的管理。
HELLO格式的包如下图所示
TID [63:56 ] :包的事务ID(Transaction ID),RapidIO手册规定在给定的时机,RapidIO包只能有 唯一的TID与Src ID对。
FTYPE[55:52]:包的事务类(Transaction Class),HELLO格式支持的FTYPEs为2,5,6,A,B和D。
TTYPE[51:48] :包的事务类型(Transaction Type),当FTYPE的值为2,5或D时,不同的TTYPE值对应于包的不同功能
Priority[46:45] :包的优先级。请求包的优先级值为0~2,响应包的优先级值为请求包的优先级加1
CRF[44] :包的关键请求流标志(Critical Request Flow)
Size[43:36]: 有效数据负载的字节数减1,如果这个字段的值为0xFF,那么表示有效数据为256(0xFF + 1)个字节
Error[35]:当这个字段为1时表示包处于错误状态
Address[33:0]:事务的字节地址
Info[31:16] :信息域。仅在门铃事务(DOORBELL)中包含此字段
Msglen-1[63:60]:消息事务(MESSAGE)中包的个数。仅在消息事务(MESSAGE)中包含此字段
Mailbox[9:4]:包的目标邮箱,仅在消息事务(MESSAGE)中包含此字段,除了单段(signal-segment)消息以外,此字段的高四位是保留位
Letter[1:0]:包的信件,仅在消息事务(MESSAGE)中包含此字段,指示了邮箱中的一个插槽
S,E,R,xh,O,P[63:56]:
S:起始位,当此字段为1时表示这个包是新PDU(Protocol Data Unit)的第一个分段。
E:结束位,当此字段为1时表示这个包是新PDU(Protocol Data Unit)的最后一个分段。当S和 E 均为1时表示PDU仅包含一个包。
R:保留位。
Xh:扩展头(Extended Header)。目前版本不支持
O:奇数(Odd),当此字段为1时表示数据负载有奇数个半字。
P:填充位(Pad)。当此字段为1时,一个填充字节用于去填充数据到半字(half-word)边界
Cos[43:36] : 服务类(Class of service)
StreamID[31:16] :点到点的数据流标识符
Length[15:0]: 协议数据单元(Procotol Data Unit,PDU)长度