Сдвиг передаваемых данных в положение принимаемых данных в режиме обратной связи

Теперь я делаю протокол (Aurora-Xilinx) для соединения двух плат вместе. и я хотел бы проверить битовые ошибки для передачи данных и получения данных. Чтобы проверить битовые ошибки, передаваемые данные на плате 1 зацикливаются на плате 2, а затем возвращаются на плату 1. Затем я написал собственную прошивку для проверки битовых ошибок путем сравнения передаваемых и принимаемых данных.

Однако прием данных всегда запаздывает с передачей данных на несколько тактов или много тактов. Моя идея состоит в том, чтобы сместить данные передачи в положение часов, в котором начинают появляться первые соответствующие данные приема. Если вы посмотрите на рисунок, прикрепленный к этому сообщению, красный прямоугольник — это кадр передаваемых данных, а желтый — соответствующие данные приема. Но хотелось бы написать общую прошивку для устранения этой задержки. Это означает, что при любой задержке передаваемые данные всегда сдвигаются вправо, когда появляются первые соответствующие принимаемые данные. Я думаю, что когда я решу эту проблему, я смогу сравнить передаваемые и полученные данные вместе, чтобы получить значения битовой ошибки.

Если у вас есть открытый образец кода Verilog или предложения по моим проблемам, дайте мне знать. Особенно, если у вас есть другие идеи или подробные документы для проверки битовых ошибок, пожалуйста, дайте мне знать.

введите здесь описание изображения


person Tai Chau    schedule 15.03.2018    source источник


Ответы (1)


Автоматическое определение длины задержки — это схема, которая требует поиска шаблонов: сохранение копии переданных данных и сравнение с полученными данными со сдвигом на N позиций. Даже это не работает со всеми возможными шаблонами, поскольку вы можете легко получить ложные срабатывания.

Обычно тестирование в обратной петле выполняется с использованием известных шаблонов или обнаружения ошибок, таких как добавление CRC.

person Oldfart    schedule 15.03.2018