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

Помогите поднять линк с QSFP

Всем привет!

Что имеется:
- Борда TR10a-HL Board (Altera Arria 10) c 4 QSFP+
- Кабель для внешнего loopback.

Сейчас стоит задача отладить внешний loopback.
Собран тестовый дизайн Генератор данных ---> Transceiver PHY(DataRate = 1555.2 Mb/s, PLL для Tx PMA настроена на 777,6 MHz, Reference Clock для Rx PMA - 155.52 MHz. Full duplex. Настроен на внутренний loopback) ---> "Проверятель" принятых данных. В такой схеме все работает.
Как только перехожу на внешний loopback ничего не работает. С выхода приемника вообще нет ничего. Мусор какой-то. Мое предположение - проблема в работе с QSFP+. Раньше мне не приходилось с ним работать. Прошу помощи и подсказок людей, более опытных в этой области куда залезть/что почитать. Допускаю, что необходимо выполнить какую-то настройку регистров QSFP. Там их целая куча. Но вот что куда прописать слабо представляю.

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


Ссылка на сообщение
Поделиться на другие сайты
Кабель оптический?
Если да, то там есть сигналы управления, посмотрите на них внимательно.

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


Ссылка на сообщение
Поделиться на другие сайты
Попробуйте для начала просто сбросить QSFP - дать импульс низкого уровня на ResetL, а также удерживать LPMode=0 (установить низкий уровень на этом пине еще до начала сброса).

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(gutzzz @ Dec 25 2017, 17:15) <{POST_SNAPBACK}>
Кабель оптический?
Если да, то там есть сигналы управления, посмотрите на них внимательно.


Да, кабель оптический. Там есть набор сигналов для интерфейса с QSFP модулем. Набор сигналов для индикации состояния модуля, сброса и интерфейс I2с. Прочитать/записать память модуля могу. Но вот основная проблема, что именно нужно приписывать и нужно ли вообще это делать? Должен ли QSFP работать "из коробки" без дополнительных телодвижений?

Цитата(Flood @ Dec 25 2017, 17:32) <{POST_SNAPBACK}>
Попробуйте для начала просто сбросить QSFP - дать импульс низкого уровня на ResetL, а также удерживать LPMode=0 (установить низкий уровень на этом пине еще до начала сброса).


Это всё делаю.LPMode=0 по умолчанию. Этот сигнал не трогаю вообще. После включения питания выжидаю некоторое время(чтобы перекрыть всё время на переходные процессы в модуле и т.д.). Затем дергаю ResetL (удерживаю в 0 не менее 2мкс). После смотрю сигналы IntN и ModPrs. Если эти сигналы в 0 значит модуль OK.

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


Ссылка на сообщение
Поделиться на другие сайты
MODSEL?
Модуль у Вас может быть со встроенным ПЛЛ, потому посмотрите в описании, на какую частоту он настроен по-умолчанию(если есть). Сомневаюсь, что DataRate = 1555.2 Mb/s это что-то стандартное..

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(TRILLER @ Dec 25 2017, 18:13) <{POST_SNAPBACK}>
MODSEL?
Модуль у Вас может быть со встроенным ПЛЛ, потому посмотрите в описании, на какую частоту он настроен по-умолчанию(если есть). Сомневаюсь, что DataRate = 1555.2 Mb/s это что-то стандартное..


MODSEL использую если необходимо связаться с QSFP по интерфейсу. В спецификации на QSFP модуль SFF-8436 Rev 4.2 есть вот эта табличка

по адресу 131 записано 0x2, а по всем остальным адресам 0x0. Что это может означать? Могу ли я этим модулем принимать/передавать трафик на меньшем DataRate или не могу?Или он предназначен только для сетей 40G?

з.ы.я пытаюсь принять/передать STM-1 поток 155,52 Mb/s. Собственно по этой причине и был выбран DataRate = 1555.2 Mb/s (т.к трансиверы в ПЛИС работают минимум на 1Гб/с) и прием/передача ведется с 10x oversampling.
Изменено пользователем polyvyannyy

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


Ссылка на сообщение
Поделиться на другие сайты
Большинство модулей не требуют настройки. Однако некоторым она необходима(особенно крутым, работающим на большие расстояния). Почитайте внимательно ст 70-71 приведенной Вами доки, поопрашивайте регистры. И посмотрите доку непосредственно на модуль, а не спецификацию. Возможно, чего-нибудь найдёте.

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


Ссылка на сообщение
Поделиться на другие сайты
А какая модель кабеля? Что в документации написано? Какая у него пропускная?

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


Ссылка на сообщение
Поделиться на другие сайты
Все заработало. Оказывается все очень просто sm.gif Quartus при синтезе выкидывал сигнал LPMODE и нога оказывалась в третьем состоянии. А на плате идет подтяжка сигнала к питанию. Соответственно, на QSFP LPMODE = 1 и модуль находился режиме низкого энергопотребления.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(polyvyannyy @ Dec 28 2017, 11:53) <{POST_SNAPBACK}>
Все заработало. Оказывается все очень просто sm.gif Quartus при синтезе выкидывал сигнал LPMODE и нога оказывалась в третьем состоянии. А на плате идет подтяжка сигнала к питанию. Соответственно, на QSFP LPMODE = 1 и модуль находился режиме низкого энергопотребления.

А как обнаружили это ?
Я заметил, что Quartus любит заниматься оптимизацией, но при этом молчит как партизан о том, что он что-то оптимизировал crying.gif

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Flip-fl0p @ Dec 28 2017, 12:00) <{POST_SNAPBACK}>
А как обнаружили это ?
Я заметил, что Quartus любит заниматься оптимизацией, но при этом молчит как партизан о том, что он что-то оптимизировал crying.gif


С трудом представляю квартус, который бы выкинул выходной пин если бы на него было назначено какое-либо значение.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(alexadmin @ Dec 28 2017, 12:54) <{POST_SNAPBACK}>
С трудом представляю квартус, который бы выкинул выходной пин если бы на него было назначено какое-либо значение.

Выкидывание выходных пинов я тоже не встречал.
Но на практике сталкивался с тем, что Quartus удалял частоты, синтезируемые на PLL. И ни одного предупреждения на консоль не выводил....
Приведу пример:
Я на PLL создал 3 одинаковые частоты (с0, с1, с2), фазой каждой из которых я управляю отдельно. Но Quartus 2 частоты (с1 и с2) обрезал, промолчав как партизан. И потом на отладке я убил кучу времени...
Проблема вылечилась следующим образом: для каждой из частот я задал изначально разные сдвиги фаз, и Quartus после этого их не выкидывал.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Flip-fl0p @ Dec 28 2017, 12:00) <{POST_SNAPBACK}>
А как обнаружили это ?
Я заметил, что Quartus любит заниматься оптимизацией, но при этом молчит как партизан о том, что он что-то оптимизировал crying.gif


Посмотрел RTL после синтеза. Проверил все управляющие сигналы QSFP и выяснил, что именно LPMODE был объявлен как входной)) (криворучка я)

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация