微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 使用xilinx v5 gtp 实现的sata phy与sata pm通信的问题

使用xilinx v5 gtp 实现的sata phy与sata pm通信的问题

时间:10-02 整理:3721RD 点击:
现在在做一个关于sata的项目,使用v5的芯片,利用gtp实现sata phy,与sata pm进行通信。出现了一个很难解决的问题(自认为),问题是这样的:sata phy和sata pm之间的数据传输很不稳定,有时能成功,有时又不可以。在系统稳定的情况下是可以识别到连接在pm上的硬盘的,但是在系统不稳定的情况下,连pm的初始化都过不了!
      具体是这样的sata phy通过gtp想sata pm发送一些数据请求,例如pm初始化流程,从chipscope可以看到sata phy已经向gtp发送了P_X_RDY(数据准备好,等待pm应答),但是大部分情况下都是一直收不到的pm的P_R_RDY数据信号(pm准备好数据接收,sata phy开始发送数据)。
      sata pm是直接买的芯片,手里也没有示波器之类的工具。现在是完全不知道该怎么调试,从那个方向去调试,请大侠们指教啊!
      对于我遇到的问题,有什么不明白的地方,可以直接发帖问我。

请用过GTP或者GTX的老大们指教啊!

求大侠啊!

你收不到R_RDY,很可能是因为PM没有收到设备的R_RDY,因为PM是等到设备准备好以后才给host发R_RDY的



    搞了这么长时间,试着修改了参数、时钟、复位等,还是不行。目前也不确定是gtp没有把X_RDY发出去,还是PM没有收到。我打算用两块板子上的外接GTP测试一下两端的数据稳定性。不知道你有没有什么好的分析方法?



    是这样吗?pm好像是不需要等待设备的R_RDY的,我看过PM和SATA的协议,应该是SATA识别到PM后才去识别PM上有没有连接设备。



    我描述得不够全面,我现在得问题是 出现在 PM 初始化阶段,并不是后续得数据传输。



    如果是参照XAPP870的参数配置,只要你把XRDY给到了GTP的TX_DATA口,并且tx_char_is_k正确,发送应该就没有问题了。你发了XRDY而PM没有反应,很可能是你的SATA initialization过程出了问题,要确定经历了COMRESET,COMINIT,COMWAKE,ALIGN这几个过程。如果没有建立链路层的链接,你发什么PM都是不会有响应的。



    是的,也有可能是链路状态发生了变化,链路断掉了,我再好好查一下



    你好,我使用v5vlx100t的gtx做了个sata device的phy层,测试了一下gtp发送的数据到底有没有到达sata pm。在chipscope中能够观察到下面三种情况的数据:
1、gtx接收到的某些数据应该是有一位的偏差,比如gtp在oob过程中发送的d10.2(0x4A4A4A4A),gtx上接收到的是0xB5B5B5B5,我查了它们的8b10b编码,分别是010101 0101和101010 1010,也就是说这两个数据之间最有可能的情况是在数据传输的过程中发生了一位bit的偏差。
一般经过几次oob内的硬复位后,就会出现正确的数据。(这个是oob过程中的)
2、gtx接收到错误数据,报的错是8b10b极性错误(这个是sata数据过程中的,比如xrdy信号,这个应该也是bit偏移导致的,后面我会查一些这些数据的问题)
3、正确的数据
这三种情况会出现在同一个工程的不同时间。



    这两个gtp 和 gtx的接口跑过aurora,所以感觉应该不是板子设计的问题

it is seemed not easy



    出现这种1 bit偏移的情况, 说明你的GTP没有align到word boundry,你得查一下rx_is_aligned这个信号,如果不是高电平,就说明还没有对齐,就需要rx_reset或者别的处理。如果对齐了,数据一般没有问题。

有做过整体仿真吗?高速口很多东西都可以仿出来



    只做过功能仿真,是没有问题的。但是时序仿真没做过,sata host gtp 和 sata pm gtx不在同一个器件上,好像是不能做时序仿真的吧?要是可以的话,麻烦告诉我一下怎么把这两个工程连起来时序仿真,谢谢!



    是的,你说的没错,在出现这个问题的时候,rxbyteisaligned确实是无效的!后来查了一下sata标准文档,发现sata设备的oob操作不需要检测D10.2原语,也就是说不管D10.2的传输正不正确,它都不会对sata oob操作产生任何影响。
    等sata device oob没有问题,测试完和sata pm gtx的通信后在给你消息。
    用别人的代码真是悲剧,D10.2这个问题也花了好长时间了,以后一定要看完标准再用别人的代码。菜鸟伤不起!



    只做过功能仿真,是没有问题的。但是时序仿真没做过,sata host gtp 和 sata pm gtx不在同一个器件上,好像是不能做时序仿真的吧?要是可以的话,麻烦告诉我一下怎么把这两个工程连起来时序仿真,谢谢!



    D10.2确实不需要检测,它是用来给模拟部分恢复和校正本地时钟用的,只需要等待ALIGN的到来就可以了。

学习了,谢谢!

学习了,谢谢!

时序仿真也做了,没有问题,下板子就时好时坏,到现在也没搞明白原因

劳烦问一下,怎么做的时序仿真啊

小编现在调通了吗?我现在也在用GTP实现 sata host phy,但是和设备通信时初始化都过不了,链接建立不起来,主机侧接收的数据都伴有diserr错误,也不清楚这个具体是什么原因,还有在rxstatus的值为4 5 6 都是啥意思,我看文档里也没有

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top