SRIO物理层控制符号的stype1格式
下表列出了stype1控制符号的编码和功能以及cmd字段所代表的含义
Stype1 | Stype1功能 | cmd | Cmd功能 | 包定界符 |
3’b000 | 包开始 | 3’b000 | 包开始 | 是 |
3’b001~3’b111 | 保留 | 否 | ||
3’b001 | 包取消 | 3’b000 | 包取消 | 是 |
3’b001~3’b111 | 保留 | 否 | ||
3’b010 | 包结束 | 3’b000 | 包结束 | 是 |
3’b001~3’b111 | 保留 | 否 | ||
3’b011 | 从重传处重启 | 3’b000 | 从重传处重启 | * |
3’b001~3’b111 | 保留 | 否 | ||
3’b100 | 链路请求 | 3’b000~3’b010 | 保留 | * |
3’b011 | 复位设备 | |||
3’b100 | 输入状态 | |||
3’b101~3’b111 | 保留 | |||
3’b101 | 多播事件 | 3’b000 | 多播事件 | 否 |
3’b001~3’b111 | 保留 | 否 | ||
3’b110 | 保留 | 3’b000~3’b111 | 保留 | 否 |
3’b111 | NOP(忽略)** | 3’b000 | NOP(忽略)** | 否 |
3’b001~3’b111 | 保留 | 否 |
*表示如果包在转发过程中,从重传处重启并且链路请求控制符号可能只是包定界符。
**表示虽然NOP(忽略)没有作为控制符号定义,但是它是在控制符号不传达另一个stype1功能时的默认值。
包开始(Start-Of-Packet)控制符号:
包开始控制符号用来界定包的起始位置
包取消(Stomp)控制符号:
包取消控制符号用来取消一个正在发送的包
包结束(End-Of-Packet)控制符号:
包结束控制符号用来界定一个包的结束位置
从重传处重启(Restart-from-Retry)控制符号:
从重传处重启控制符号会取消一个当前包。该控制符号可能在空闲链路上传送。用该控制符号标记重传包的开始可使接收者知道在其请求重传一个包后什么时候开始接收包。
链路请求(Link-Request)控制符号:
器件使用链路请求控制符号发起一个命令到相连器件或请求相连器件的输入端口状态。链路请求控制符号取消当前包并可在包之间发送。在错误情况下,链路请求/输入状态控制符号的作用与链路请求/从错误处重启控制符号的作用相同。
链路请求控制符号的第二个字段是一个3位的命令(cmd)字段。该字段包含发送到链路的命令。定义了两个命令:器件复位(reset-device)和输入状态(input-status),cmd字段详细的描述如下表所示
Cmd的值 | 命令名称 | 描述 |
3’b000~3’010 | 保留 | |
3’b011 | 复位设备(reset-device) | 复位接收设备 |
3’b100 | 输入状态(input-status) | 返回输入端口状态;在错误情况下和链路请求(从错误处重启)控制符号的功能相同 |
3’b101~3’b111 | 保留 |
复位设备命令引起接收器件执行复位或上电过程;所有状态机和寄存器都复位到上电初始状态。复位设备命令不会产生链路响应控制符号。由于各系统设计的可靠性并不确定, 在链路响应控制符号的复位功能上设置保护是必要的。设备接收到链路响应控制符号中的复位设备命令时并不执行复位功能,除非它收到四个连续的复位器件命令。这些连续的命令之间不应有除状态控制符号外的任何其他插入的包或控制符号。这样做能防止假复位命令在无意中复位器件。
输入状态命令请求正在接收的器件返回在其输入端口期望接收到的来自发送者的下一个ackID值,同时返回该输入端口当前的工作状态。该命令使接收端刷新其输出端口在输入状态命令之前接收到的由包产生的所有控制符号。刷新输出端口是与具体实现相关的,可能导致丢弃接收缓冲区的内容或在链路上发送控制符号,然后接收者产生链路响应控制符号作为响应。
多播事件(Multicast-Event)控制符号:
多播事件控制符号与其他的控制符号不同,不同之处在于它携带的信息与链路传输的控制符号无关。多播事件控制符号允许把用户定义事件的发生广播到整个系统。控制符号的错误检测是通过循环冗余校验码(Cyclic Redundancy Check,CRC)来完成的。
对于短控制符号来说,RapidIO协议使用一个5位的CRC对错误进行检测。它能为8B/10B解码模块解出来的24位短控制符号检测最多5位的突发错误(Burst Error),5位的突发错误是最长的突发错误,8B/10B解码模块组的顶层如果出现单比特的传输错误就有可能导致5位的突发错误。
对于长控制符号来说,RapidIO协议使用一个13位的CRC对错误进行检测。它能为8B/10B解码模块解出来的48位长控制符号检测任意位数的突发错误(Burst Error),11位的突发错误最多可以破坏两个8B/10B码组。
CRC-5循环冗余校验码
使用ITU多项式X5+X4+X2+1为控制符号产生5位循环冗余校验码。循环冗余校验码的校验位占用了控制符号的最后5位。应该注意的是,5位循环冗余校验码必须由发送者产生并由接收者检验。在计算5位循环冗余校验码前应该将循环冗余校验码字段设置为全1 (5’b11111 )。为了使各种类型的循环冗余校验码实现更加灵活,在控制符号字段中加人了一个虚拟的第20位。对所有的计算来说,第20位是应用的最后1位,并且总是置为逻辑0。
CRC-13循环冗余校验码
使用ITU多项式X13+X10+X8+X5+X2+1为控制符号产生13位循环冗余校验码。循环冗余校验码的校验位占用了控制符号的最后13位。应该注意的是,13位循环冗余校验码必须由发送者产生并由接收者检验。在计算13位循环冗余校验码前应该将循环冗余校验码字段设置为全0 (13’b0000000000000 )。
快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~
有建议、有需求、有疑问、联系我