赛灵思
直播中

许伟星

7年用户 191经验值
私信 关注
[问答]

GTX RX如何对齐?

您好,我正在使用GTX收发器。
txdata / rxdata宽度为20位。
接收的数据与传输的数据不匹配。
以下是我看到的一个例子。
传送 - 3e883h
收到 - e883b
我使用ILA观察了数据并将数据导出到excel。
经过观察,我注意到以下情况
旧的传输数据 - ba02d
新传输的数据 - 3e883
收到的数据 - e883b
看来接收到的数据是从old_txdata接收最重要的4位数据,然后是新txdata的最低有效12位。
我已经检查了多个值,同样如此。
有人可能知道为什么会发生这种情况。
提前致谢
亚当格罗普

回帖(7)

潘晶燕

2020-8-7 09:16:46
亚当,
GTX是一个管道。
对齐是协议的一部分。
如何定义字节,字,块,帧的开始和停止完全取决于您以及您选择的选项以及您提供的逻辑。
如果你看一个完整的解决方案例子,比如LWIP Ethernet,你会看到如何完成上述所有工作。
在没有定义启动或停止的原始数据中,没有对齐,因为接收不知道从哪里开始和停止。
对于Rx,它只是一个比特流。
对齐任务通常称为媒体访问控制器(MAC)。
它弄清楚究竟发生了什么。
由于链接可以随时启动,中断,然后重新启动,MAC负责处理所有这些。
Austin Lesea主要工程师Xilinx San Jose
举报

陈玉筠

2020-8-7 09:26:52
亚当,
这是我在之前的讨论中谈论的一部分......
当数据在串行链路上发送时,它被串行化 - 它在单线上转换为比特流。
当接收器收到它时,需要反序列化。
然而,接收器只看到一串位,并且不知道这些是最初的20位字,或者更具体地说,一个20位字结束并且下一个字开始的位置。
因此,它只是随意选择一个起始点并将这些位组合成并行字。
这被称为“框架” - 当您通过串行链路发送数据时,框架将丢失。
因此,更高级别协议的责任是“恢复框架”。
在8b10中,这是通过使用逗号字符(K28.1)完成的。
逗号字符是一种字符,其位模式在数据流中是唯一的,并且可以由接收器检测以“调整”接收器的帧以匹配发送器。
在64b66b中,这有点复杂,并且通过前导码(每个64位添加额外的2位)来完成。
对齐通过变速箱处理,但需要GTX外部的状态机来管理RXGEARBOXSLIP输入以找到合适的框架。
您所看到的行为几乎可以肯定是因为 - 如果您没有放置任何东西来恢复成帧,您的RX数据将被错误地构建,并且您的RX数据将是数据流的一个位移版本(这是
正是你所描述的)。
因此,再一次,您不能仅通过GTX放置数据,就好像它相当于驱动TX的逻辑和接收RX的逻辑之间的20位直接有线连接。
您需要实现管理链接的协议。
再一次,我强烈建议你去看看Aurora,它会照顾你的大部分内容。
Avrum
举报

陈霞

2020-8-7 09:43:46
谢谢您的回复。
我将看一下使用以太网以更好地了解我做错了什么。
好奇的是,我正在使用SDI和XAPP592实现SMPTE SDI接口和Kintex-7 GTX收发器。
这里有一节介绍配置GTX,并指出SDI不使用逗号检测或rxslide。
当我查看GT包装器时,他们使用的收发器未配置为逗号检测。
这是因为有逻辑正在寻找SAV和EAV来对齐数据吗?
举报

陈霞

2020-8-7 10:03:32
@avrumw
感谢您的答复。
我只是想更好地理解收发器。
我希望能够使用GTX核心进行设计,并了解如何完成协议将为我做的事情或自定义协议。我是一个学习者,所以我必须尝试最好地了解正在发生的事情。
我确实在高速串行I / O上找到了一些参考资料,非常有帮助。
如果插入逻辑来查找sdi数据的SAV和EAV,则这是sdi协议构建数据的方式。
我确实读过64b / 66b,我仍然不太明白“差距”的原因。
我对它的理解是,由于比特率不是完全恒定的,因此必须有一个暂停或间隙来弥补这一点。
我再次感谢您提供的信息。
亚当格罗普
举报

更多回帖

发帖
×
20
完善资料,
赚取积分