SRIO物理层控制符号的stype0格式
下表列出了stype0控制符号的编码和功能以及parameter0字段和parameter1字段所代表的含义
Stype0 | 功能 | 内容 | |
Parameter0 | Parameter1 | ||
3’b000 | 可接收的包 | Packet_ackID | Buf_status |
3’b001 | 包重传 | Packet_ackID | Buf_status |
3’b010 | 不可接收的包 | 任意值 | Cause |
3’b011 | 保留 | —— | —— |
3’b100 | 状态 | ackID_status | Buf_status |
3’b101 | 虚拟通道状态 | VCID | Buf_status |
3’b110 | 链路响应 | ackID_status | Port_status |
3’b111 | 用户定义 | 用户定义 | 用户定义 |
上表中各个字段的含义如下表所示
参数 | 定义 |
Packet_ackID | 被应答控制符号的ackID |
ackID_status | 端口预期接收的下一个包的ackID的值。这个值比上一次收到的包的ackID值大1, |
Buf_status | 端口在指定的虚拟通道可接收的最大包的个数 对于短控制符号: 值为0~29:该编码值定义了端口在指定的虚拟通道可以接收的新的最大包的个数。例如,值0表示端口在指定的虚拟通道没有包缓冲,因此不能接收新包 值为30:端口在指定的虚拟通道件可以接收的新的最大包的个数为30个 值为31: 端口在指定的虚拟通道件可以接收的新的最大包的个数未定义,包的个数取决于流控制的重传协议 对于长控制符号: 值为0~61:该编码值定义了端口在指定的虚拟通道件可以接收的新的最大包的个数。例如,值0表示端口在指定的虚拟通道没有包缓冲,因此不能接收新包 值为62:端口在指定的虚拟通道件可以接收的新的最大包的个数为30个 值为63: 端口在指定的虚拟通道件可以接收的新的最大包的个数未定义,包的个数取决于流控制的重传协议 |
Cause | 这个参数指的是包不被接收的原因。 5’b00001:接收包中的ackID值错误 5’b00010:接收控制符号的循环冗余校验码错误 5’b00011:非维护的接收包被阻止 5’b00100:接收包的循环冗余校验码错误 5’b00101:接收了无效的字符或者有效但不合法的字符 5’b00110:缺乏资源 5’b00111:解交织同步信号丢失 5’b11111:普通错误 |
Port_status | 端口状态: 5’b00010:端口遇到了不可恢复的错误 5’b00100:重传停止(Retry-stopped) 5’b00101:错误停止(Error-stopped) 5’b10000:正常(OK) 其他值均为保留值。 |
接收包(Paket-Accepted)控制符号:
接收包的控制符号表明接收器件已经把包发送到其最终目的地并且可以释放由发送器件分配的资源。该控制符号应仅在已接收到整个包并且没有发现可检测的错误之后产生。
重传包(Paket-Retry)控制符号:
重传包控制符号表明接收器件由于某些临时的资源冲突,如缓冲区不足而不能接收包,发送者应该重新发送包。
未接收包(Packet-not-accepted)控制符号:
未接收包控制符号用来向包发送者表明接收端口没有接收到包的原因。控制符号包含一个指示无法接收包的原因的cause字段和一个packet_ackID字段。如果接收器件不能确定原因或原因不属于定义的原因选项,就使用一般错误编码。
状态(Status)控制符号:
状态控制符号默认为stype0编码,在控制符号不传达另一个stype0功能时使用。状态控制符号包含ackID_status和buf_status。buf_status字段向接收端口指示发送端口在产生控制符号时拥有的可用来接收包的可容纳最大长度包的缓冲区数量。ackID_status字段允许接收端口判定该端口和发送端口是否关于发送端口期望接收到的下一个ackID值同步。
链路响应(Link-Request)控制符号:
器件用链路响应控制符号响应链路请求(link-request)控制符号。在状态字段中报告的状态是在接收到相关链路请求/输入状态(link-request/input-status)控制符号时端口的状态。port_status字段的功能在上表已经描述。
快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~
有建议、有需求、有疑问、联系我