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