现在,我正在制定协议(Aurora-Xilinx)将两块板连接在一起。我想检查发送数据和接收数据的位错误。为了检查位错误,板1上的发送数据在板2上循环,然后返回板1.然后我编写了自己的固件,通过比较发送数据和接收数据来检查位错误。
但是,接收数据总是会因发送数据延迟一些时钟周期或多个周期而延迟。我的想法是将发送数据转移到第一个相应的接收数据开始出现的时钟位置。如果你看这篇文章中附图,红框是发送数据的帧,黄框是对应的接收数据。但我想写一般固件来解决这个延迟。这意味着在任何延迟时,当出现第一个相应的接收数据时,发送数据总是移位到右时钟位置。我认为当我解决这个问题时,我可以将发送和接收数据进行比较,以获得误码值。
如果您有任何公开的示例verilog代码或我的问题的建议,请告诉我。特别是,如果您有其他想法或详细文档来检查位错误,请告诉我。
答案 0 :(得分:0)
自动检测延迟的长度是需要模式搜索的电路:保持传输数据的副本并与通过N个位置移位的接收数据进行比较。 即使这样也不适用于所有可能的模式,因为你很容易产生误报。
通常使用已知模式或错误检测(如添加CRC)来完成环回测试。