Собрать удалось, теперь разбираюсь с синхронизацией потока.
Появился новый вопрос.
Собираю конфигурацию следующего вида:
- 1-канальный Native PHY на ~2.5ГБит/с с включенным входом rx_bitslip для ручного управления байтовой синхронизацией;
- Altera PLL;
- PHY Reset controller;
Далее, есть простейший тестбенч, который дожидается пока пройдет сброс, потом дергает rx_bitslip пока не поймает паттерн и всё (txd соединен с rxd, т.е. сделан external loopback). На вход (tx_parallel_data) трансивера всегда подается константа. Симуляция - функциональная.
На выходе я ожидаю увидеть как побитово двигается шина rx_parallel_data и в какой-то момент этот процесс останавливается (когда поймается паттерн). Однако странности на выходе (rx_parallel_data) наблюдаю я. Такое ощущение, что битовая синхра постоянно "подсрывается" понемногу - видны плывущие как будто бы глитчи длиной в такт rx_parallel_clk, которые портят принятые данные. Как такое может быть?
Если интересно, могу выложить проект с моделькой.
Картинки.
Настройки трансивера:
Настройки PLL:
Времянка поближе - видно глитчи (см. шину txdata - это вход трансивера - константа, развернутая rxdata - его выход):
Времянка подальше - видно как плывет rxdata: