Суть проекта: несколько каналов 8b/10b только на приём, тактирующиеся от одной частоты (LM97600). Имеется Cyclone V GT, трансиверы сконфигурированы следующим образом: PSC protocol mode - basic PSC->PMA - 20 бит Phase compensation - low-latency (rx_std_coreclkin всех трансиверов питается от rx_std_clkout одного, так как все их частоты 0ppm друг к другу, однако нужна компенсация фазы) 8b/10b - включен PCS->FPGA - 32 бита Rate match FIFO - выключено Word alignment - manual, 20 bit, работает нормально Всякие bit/byte reversal выключены
Byte ordering получает синхронизационную последовательность K27.7,D5.6,K28.5,D5.6,K28.5,D5.6,K28.5,D5.6. rx_is_lockedtodata стоит, Word alignment отрабатывает, ошибок 8b/10b нет. Перепробовал уже все настройки byte ordering: и авто и ручную, и одно слово (1FB) и два (315FB) - ни в какую. Прилетает K27.7 то в нулевом слове, то во втором.
P.S. Я осознаю, что впоследствии мне ещё будет необходимо побороть разброс в задержке тракта, вызванный Phase Compensation FIFO, и что указанная короткая синхропоследовательность мне в этом не поможет. Но я знаю, как я это сделаю, пока вопрос только про byte ordering. Также я знаю, как сделать byte ordering на логике, но хочу тем не менее разобраться с настройкой трансивера.
|