Потребовалось передать 2 сигнала 12МГц через оптические приемопередатчики (125Мбит). Сложности в том, что эти приемопередатчики понимают только NRZI кодированный поток данных и вдобавок передаваемые сигналы несколько асинхронны (из-за разбегания кварцевых генераторов) + задержка передачи должна быть минимальна. Ранее передача была организована через UART - сигналы пакуются в 4-битную посылку (старт-бит, сами сигналы, стоп-бит) и всё успешно передается на частоте 48МГц, правда алгоритм приема работает на 192МГц - скорость ПЛИС впритык.
С SERDES никогда раньше не работал, так что может и в чем ошибся: попробовал сделать тестовый проект SERDES 2 сигналов, но кодирование и последующий прием этого же сигнала показал, что десериализация может "перепутать" между собой передаваемые 12МГц сигналы.
Можно ли нормально настроить стандартный циклоновский SERDES?
У меня пока что вызревает только один вариант решения проблемы - передача синхропосылки 5-7 бит (для коррекции асинхронности) и 2 бита данных. В итоге получается передача на частоте 96МГц, но чувствую возникнут большие сложности с её приёмом... В справке на квартус наткнулся на "dynamic phase alignment (DPA)" - используется в SERDES. А можно ли использовать DPA отдельно от стандартного блока?
PS: Возможно ли использование SERDES модуля без LVDS (младшая микра в циклоновском семействе)? PS2: У меня еще 7 квартус стоит, в последнем что-нибудь полезное по данной теме появилось?
|