Перейти к содержанию
    

PMA Direct mode

Собрал в квартусе для Стратикс 5 проект с использованием компонента Stratix V Transceiver Native Phy, в его настройках указал, что работать он будет в режиме PMA Direct mode. Компонент двухканальный. У платы два Sfp+ разъема, в них вставлен оптический кабель. Соответственно в проекте в tx одного канала засылаю данные, из rx другого канала принимаю данные.

Проект скомпилил, залил. На вход компонента в 40-битную шину подаю постоянный код, например, 0x0707070707.

На приемной стороне ожидаю получить тоже самое. Но получаю сплошной мусор.

Если подать 0x5555555555, то получаю постоянно 0xAAAAAAAAAA.

Плата у нас с чудесами, поэтому не понятно, то ли я не прав, то ли это плата так себя ведет.

 

По самому коду проследил путь данных, для передаваемых данных - они заходят на компонент сериализации stratixv_hssi_pma_tx_ser,

для принимаемых данных - они выходят из десериализатора stratixv_hssi_pma_rx_deser.

Ладно бы там скрамблер стоял или 64/66 кодер, но их как и задумано нет.

 

Вообщем, верно ли я понимаю, что в режиме PMA direct что подал, то и получил?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

Ладно бы там скрамблер стоял или 64/66 кодер, но их как и задумано нет.

 

Вообщем, верно ли я понимаю, что в режиме PMA direct что подал, то и получил?

 

Ага, с точностью синхронизации, которая отсутствует. Если вам всё равно, прилетело 55 или AA, можете не париться.

 

Если не всё равно, то лучше учитывать следующее:

In PMA Direct mode, the

Native PHY provides direct access to the PMA from the FPGA fabric; consequently, the latency for

transmitted and received data is very low. However, you must implement any PCS function that your

design requires in the FPGA fabric.

 

Вы уж разберитесь, к чему там о PCS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Продолжаю возиться с альтеровским PMA.

С его выхода выходит шина 80 бит. PMA настроена на ширину 32 бит.

Из тех 80 бит использую только младшие 32.

 

Набираю из этих 32 битных слов большой сдвиговый регистр на 4620 бит (это все для симуляции, синтезировать такое не буду).

Потом этот большой региср разбиваю на блоки по 66 бит.

Это я так gearbox реализовал (по быстрому для симуляции).

И начинаю искать в них sync header.

Сначала ищу на позиции (1 downto 0). Потом на позиции (2 downto 1). И так все позиции.

Но последовательность валидных sync header длиной в 64 как этого требует протокол я не нахожу.

Даже 40 подряд идущих блоков с валидными sync header нет.

 

Может не так чего делаю? Или у альтеры другой подход?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из тех 80 бит использую только младшие 32.

нашел ошибку, PMA компонент выдает шину 80 бит, но ширина PMA настроена на 32 бит, я использовал младшие 32 бита, а оказалось нужно было использовать 1-8,11-18,21-28,31-38 биты.

Разумеется у альтеры об этом нигде не сказано. Исправил, sync header поймал.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...