完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 一只耳朵怪 于 2018-6-19 15:13 编辑
最近发现论坛上好多SRIO的帖子,刚好应客户需求我总结了一些SRIO的东西,在这里也分享出来,作为抛砖引玉吧。 首先坦白来说我不是太懂SRIO,至少SRIO协议我没完全看过,O(∩_∩)O~,为了给客户写这些东西,我也查阅了很多资料和书籍,如果有不对的地方,欢迎大家讨论和指正。(论坛上的SRIO大虾很多,比如Zhan,Allen等,嘿嘿……) SRIO其实不是个通用的名字,真正能google到的叫Lp-serial,这个全称是什么暂且买个关子,它是一种协议,就是规定了两个都遵照这种协议的设备可以通信。要注意的是这里规定的是两个设备,不是三个也不是四个,这个理解是比较重要的。比如你一个switch连接了3个DSP和2个FPGA,这5个都可以通过SRIO协议通信的。但是本质上,这3个DSP和2个FPGA都是和Switch通信,再进一步来说这个协议是端到端的协议。之所以要说明这个问题,就是很多客户反映的DSP到FPAG发包木有成功,如果中间有switch,那么你需要检查DSP到switch的链路,switch到FPGA的链路。而不是笼统的去看DSP到FPGA,这就是协议的本质。 再说协议,协议规定了SRIO在物理层传递是按照固定的报文的。如果你是做原始的SRIO的IP,那么你需要手动的拼接这些报文;如果你用ti芯片,恭喜你,TI使用LSU帮你拼接,你只需要配置LSU寄存器就可以了。所以有人问LSU怎么填,那么如果你懂了协议里面的包格式,同时了解LSU如何对应到协议中去,那么你就不会有任何疑问了。(这当然是说的简单啊……) 继而就说到SRIO的错误检测了,通常遇到SRIO错误,我们这里抛去硬件信号质量错误(这种错误需要看眼图)。我们一般首先会看offset为0x158的SPn_ERR_STAT寄存器。比特位域如下表所示,这个寄存器可以分为3个部分来看,一是port状态,二是输出和输出的stop error,三是重传的stop error。我们下面分三部分重点说明各个状态是什么意义。
Port uninitialized and Port Ok 端口未初始化和端口OK是一组状态,端口状态只能是未初始化或者OK。通常在刚开始的时候端口状态时未初始化的,需要用户进行初始化配置才能变成端口OK状态。端口的初始化配置主要是端口的接收时钟窗对齐以及端口宽度的确认过程;大部分情况端口宽度通常是固定配置的,只有接收时钟窗需要调整。 接收时钟窗调整的过程是,两个连接的设备都互相向对方不停的发送training control symbol和link-request control symbol。成功收到并检测出control symbol的端口会回复一个idle control symbol,收到idle control symbol的端口会清除port uninitialized状态转为port ok状态。 Input and Output Error Stop 输入和输出停止错误是成双成对存在的 错误发生场景: 设备A给设备B发送报文 设备B发现接收到的idle控制符号或者报文错误,那么设备B进入input error stop状态(该bit置1,同时input error encounter也置位)。 设备B发送PNA(packet-not-accpet)控制符号给设备A 设备A收到PNA后停止发送任何消息,备份当前发送失败的消息并进入output error stop状态(该bit置1,同时output error encounter也置位)。 错误恢复场景: 前提:设备A处于output error stop,设备B处于input error stop 设备A发送link-request给设备B 设备B回应link-response给设备A,并清除input error stop状态 设备A收到link-response,清除output error stop状态。 设备A继续发送上次未成功报文或者发送优先级更高的报文 Input and Output Retry Stop 输入和输出重传错误是成双成对存在的 错误发生场景: 设备A给设备B发送报文 设备B发现一些临时问题导致不能接收报文(比如没有空闲buffer可以接收),那么设备B丢弃该报文,进入input retry stop状态(该bit置1,同时input retry encounter也置位)。 设备B发送PR(packet-retry)控制符号给设备A 设备A收到PR后停止发送任何消息,备份当前发送失败的消息并进入output retry stop状态(该bit置1,同时output retry encounter也置位)。 错误恢复场景: 前提:设备A处于output retry stop,设备B处于input retry stop 设备A发送restart-from-retry给设备B 设备B收到restart-from-retry后,清除input error stop状态并开始接收报文 设备A清除output retry stop状态,继续发送上次未成功报文或者发送优先级更高的报文 需要指出的是,这个寄存器是SRIO错误状态判断的最基本的寄存器,还有更高级的东东,可惜我也是一知半解,下次学习了再分享吧! |
||
相关推荐
5个回答
|
||
支持~mark
|
|
|
|
|
|
|
|
你好,请问一下在跑SRIO例程中的No loopback测试两块6670EVM板,两块板子中间用BOC板连接,总是不能通过,我查看了SPn_ERR_STAT寄存器,它显示以下信息
C66xx_0: GEL Output: ********************************** SRIO PORT0 STATUS ****************************************************** C66xx_0: GEL Output: *******************Port0 Error and Status CSR******************* C66xx_0: GEL Output: PORT_UNINITIALIZED => Input and output ports are **NOT INITIALIZED** C66xx_0: GEL Output: PORT_OK => Port **NOT-OK** condition C66xx_0: GEL Output: PORT_ERROR => The input or output port ##HAS NOT ENCOUNTERED## an unrecoverable HW error C66xx_0: GEL Output: PORT_UNAVL => The port is ##AVAILABLE## for use C66xx_0: GEL Output: PORT_WRITE_PND => The port ##HAS NOT ENCOUNTERED## a condition which required it to initiate a Maintenance Port-write operation C66xx_0: GEL Output: INPUT_ERROR_STP => The input port ##IS NOT## in the 'input error-stopped' state C66xx_0: GEL Output: INPUT_ERROR_ENC => The input port ##HAS NOT ENCOUNTERED## a transmission error C66xx_0: GEL Output: INPUT_RETRY_STP => The input port ##IS NOT## in the 'input retry-stopped' state C66xx_0: GEL Output: OUTPUT_ERROR_STP => The output port ##IS NOT## in the 'output error-stopped' state C66xx_0: GEL Output: OUTPUT_ERROR_ENC => The output port ##HAS NOT ENCOUNTERED## a transmission error C66xx_0: GEL Output: OUTPUT_RETRY_STP => The output port ##HAS NOT RECEIVED## a packet-retry control symbol and/or is not in the 'output retry-stopped' state. C66xx_0: GEL Output: OUTPUT_RETRIED => The output port ##HAS NOT RECEIVED## a packet-retry control symbol and cannot make forward progress. C66xx_0: GEL Output: OUTPUT_RETRY_ENC => The output port ##HAS NOT ENCOUNTERED## a retry condition C66xx_0: GEL Output: OUTPUT_DEGRD_ENC => The output port ##HAS NOT ENCOUNTERED## a degraded condition C66xx_0: GEL Output: OUTPUT_FLD_ENC => The output port ##HAS NOT ENCOUNTERED## a failed condition C66xx_0: GEL Output: OUTPUT_PKT_DROP => The output port ##HAS NOT DISCARDED## a packet C66xx_0: GEL Output: TXFC => Receiver-based flow control C66xx_0: GEL Output: IDLE_SEQ => Idle sequence 1 is active. C66xx_0: GEL Output: IDLE2_EN => Idle sequence 2 **DISABLED** for baud rates < 5.5 GBaud C66xx_0: GEL Output: IDLE2 => Idle sequence 2 **NOT SUPPORTED** for baud rates < 5.5 GBaud 请问一下这是什么原因 |
|
|
|
mark下,谢谢!
|
|
|
|
不错,谢谢。
|
|
|
|
只有小组成员才能发言,加入小组>>
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
1898 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3648 浏览 4 评论
5032 浏览 0 评论
请问如何用DM368对RGB格式的图片数据进行编码生成JPEG格式图片?
1736 浏览 1 评论
9382 浏览 8 评论
CC3100BOOST使用CC3200lunchXL进行烧录
669浏览 2评论
714浏览 1评论
TMS320F28034: 利用C2prog通过SCI给TMS320F28034烧录程序,出现错误提示:Bootloading... failed (invalid echo)!
676浏览 1评论
求DLPC350 Programmer’s Guide User's Guide 中文版说明书
1197浏览 1评论
1773浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-25 03:46 , Processed in 0.702316 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号