Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 88E1111 MAC Loopback, GMII
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Fast Ethernet/Gigabit Ethernet/FibreChannel
dxp
Всем привет!

Есть плата с PHY Marvell 88E1111 и FPGA Cyclone IVE, в последней реализуется уровень МАС, связь между ПЛИС и трансивером осуществляется посредством GMII. Для проверки целостности аппаратных интерфейсов используется включение петель. Auto-Negotiation проходит, вроде, успешно, Loopback в сторону линии (хоста) работает.

Столкнулся с проблемой при включении loopback со стороны MAC уровня. Этот режим включается битом 0.14, читаю регистр 0, там значение 0x1140, что означает:

Auto-Negotiation: Enable
Copper Duplex Mode: Full-duplex
Speed Selection: 10 = 1000 Mbps

Вроде, всё чинно, скорость правильная (и флаг в статусном регистре тоже соответствует ей), остаётся только включить loopback. Если включить 14-й бит, то значение регистра должно быть: 0x5140. Прописываю это значение, сразу заметно изменение - трансивер, как и положено, теряет линк и энергопотребление заметно снижается. Теперь передаю тестовый паттерн, ожидая его возврата. И вот тут-то возникает затык: от трансивера ничего не приходит. Далее долгий и безрезультатный поиск нюансов (вдруг что-то забыл включить или какой-то важный момент упущен), но нет, вроде, просто всё - включаешь один бит и всё должно работать, если скорость установлена правильно (а она, вроде, правильно - при включенном режиме Auto-Negotiation биты 20.6:4 в 110).

Уже перепробовав всё что можно, почти случайно прописал в регистр 0 значение 0x6140, и, о чудо, loopback заработал. Эксперименты показали, что работает именно 6 в старшей тетраде, остальные биты на работоспособность данного режима не влияют. И вот всё это повергает в недоумение.

По факту получается, что эта 6 означает:

Loopback: Enable
Speed Selection (LSB): 1
Auto-Negotiation: Disable

Пробовал варианты 0x4 и 0x7 в старшую тетраду, оба не работают. В общем, не ясны два момента:

1. Как и почему влияют "левые" биты на работоспособность loopback?
2. Прописывание значений в указанные биты, согласно документации, не приводит к активации связанной с ними функциональности - для того, чтобы они повлияли нужно либо произвести Software Reset, либо войти и выйти в Power Down, ничего этого не делается, так почему же это влияет?

В общем, кто в курсе вопроса, просветите, пожалуйста?

sorok-odin
0x6140 - биты 6,13 = 11 - зарезервированное значение, может быть что угодно, например режим 10 или 100. Может у вас тест на 1000 не проходит т.к. не все линии целы. Какая частота клоков?
Попробуйте тест на скорости 100 и 10.
Сам МАК настроен на 1000?
vitan
Цитата(dxp @ Mar 17 2015, 20:43) *
биты 20.6:4 в 110).

Забвано, но в release note есть раздел про то, как надо включать loopback, и там написано
- configure mac to 1000
- 20.6:4 = '011' sm.gif
- reg0 = 0x8140 (force to 1000)
- reg0 = 0x4140 (enable loopback)
- loopback
- reg0 = 0x8140 (diable loopback)

Попробуйте, авось, получится...
dxp
QUOTE (sorok-odin @ Mar 18 2015, 00:18) *
0x6140 - биты 6,13 = 11 - зарезервированное значение, может быть что угодно, например режим 10 или 100. Может у вас тест на 1000 не проходит т.к. не все линии целы. Какая частота клоков?
Попробуйте тест на скорости 100 и 10.
Сам МАК настроен на 1000?

Клоки 125 Мгц, на другой скорости оно вообще работать, как понимаю, не будет.

QUOTE (vitan @ Mar 18 2015, 00:18) *
Забвано, но в release note есть раздел про то, как надо включать loopback, и там написано

А где такой документ можно посмотреть? У меня datasheet достаточно свежий, November 20, 2012.
sorok-odin
Цитата(dxp @ Mar 17 2015, 22:37) *
Клоки 125 Мгц, на другой скорости оно вообще работать, как понимаю, не будет.


Почему же, если задать биты 6,13 = 01, то при включени кольца будет соответственно режим 100 Мбит при RX_CLK и TX_CLK 25 МГц.
Наверное стоило сразу пояснить какие клоки я имею ввиду, не путать с 125CLK
dxp
QUOTE (sorok-odin @ Mar 18 2015, 00:41) *
Почему же, если задать биты 6,13 = 01, то при включени кольца будет соответственно режим 100 Мбит при RX_CLK и TX_CLK 25 МГц.
Наверное стоило сразу пояснить какие клоки я имею ввиду, не путать с 125CLK

TX_CLK у меня не используется, только GTX_CLK и RX_CLK, на обоих конролировал осциллографом, 125 МГц. И в сигналтапе я смотрю, так и проверяю, работает или нет. Оно либо вообще не работает - RX_DV мёртвый, либо работает правильно, а ведь исходящий клок у меня железно 125 МГц - его ПЛИС генерит, и он никак не может зависеть от режимов работы трансивера, и если этот исходящий поток приходит обратно без потерь (когда петля работает при этих странных настройках), то и RX_CLK тоже должен быть 125 МГц.
krux
сделайте хотя-бы "fast output register" на выводах, и про вывод тактового сигнала через ALTDDIO подумайте

и вообще про source-synchronous interface почитайте
dxp
QUOTE (krux @ Mar 18 2015, 01:17) *
сделайте хотя-бы "fast output register" на выводах, и про вывод тактового сигнала через ALTDDIO подумайте

и вообще про source-synchronous interface почитайте

Докладываю. Все сигналы наружу, кроме GTX_CLK, размещены в выходных триггерах I/O элементов, GTX_CLK выведен через упомянутую вами ATLDDIO_OUTPUT со сдвигом в полпериода (4 нс). Входной клок RX_CLK заведён на dedicated CLK pin ПЛИС, с него на отдельную PLL, включенную в souce-synchronous compensation mode, с которой берётся клок для тактирования приёмной части. Все входные сигналы (кроме входного клока, разумеется) защёлкиваются во входных триггерах I/O элеменов по вышеупомянутому клоку. Все сигналы обконстрейнены в TimeQuest'е,

Всё это тщательно контролировалось разными способами, начиная от анализа предупреждений синтезатора и просмотром размещения через ChipPlanner, и заканчивая наблюдением выходных сигналов, в частности, TX_EN относительно GTX_CLK, хорошим осциллографом на плате, там всё хорошо.

Что-то вы уж совсем меня за безграмотного лоха держите. Либо невнимательно читали стартовый пост - там описана проблема совсем иного рода, нежели та, которая могла бы возникнуть из-за неграмотного проектирования приёмо-передающей логики внутри ПЛИС.
vitan
Цитата(dxp @ Mar 17 2015, 21:39) *
А где такой документ можно посмотреть?

В экстранете.

Еще есть упоминание, что нельзя включать MAC loopback при включенном режиме Auto-media select. У Вас, кстати, медиа какая? И еще надо выключить sleep mode (energy detect) при работе с MAC loopback.
При выходе из loopback надо этой же записью делать софт-ресет. Auto-MDI-X тоже надо выключить.

Вы все это делаете?
dxp
QUOTE (vitan @ Mar 18 2015, 14:44) *
В экстранете.

Не попалось. sad.gif

QUOTE (vitan @ Mar 18 2015, 14:44) *
Еще есть упоминание, что нельзя включать MAC loopback при включенном режиме Auto-media select. У Вас, кстати, медиа какая? И еще надо выключить sleep mode (energy detect) при работе с MAC loopback.

Это в том же документе упомянуто? Медиа у меня медная.

QUOTE (vitan @ Mar 18 2015, 14:44) *
При выходе из loopback надо этой же записью делать софт-ресет. Auto-MDI-X тоже надо выключить.

Вы все это делаете?

Да, вроде всё получилось, делал по рекомендации из этого поста, они почти те же, что и ваши.

Auto-Media Detect и МDI/MDI-X Crossover у меня выключено аппаратной конфигурацией. Программно сделал:

1. Включил DIS_SLEEP (16.9:8 = 00).
2. Выключил Auto-Negotiation (0.12 = 0).
3. Software Reset (0.15 = 1).
4. Включил Loopback (0.14 = 1).

В итоге заработало. Т.е. у меня исходно не были сделаны две вещи: не была выключена Energy Detect и не была выключена Auto-Negotiation. Но ведь в даташите ни слова об этом не сказано! Я не понимаю, по замыслу производителя потребитель должен откуда об этом узнать?



vitan
Цитата(dxp @ Mar 18 2015, 18:53) *
Не попалось. sad.gif

Смотрите внимательнее. Док. № MV-S300723.

Цитата(dxp @ Mar 18 2015, 18:53) *
Это в том же документе упомянуто? Медиа у меня медная.

Да, вроде всё получилось, делал по рекомендации из этого поста, они почти те же, что и ваши.

Это они же и есть. sm.gif

Цитата(dxp @ Mar 18 2015, 18:53) *
Я не понимаю, по замыслу производителя потребитель должен откуда об этом узнать?

Из документа MV-S400049-00, в котором сказано, что окромя даташита надо читать еще release notes для конкретной ревизии чипа.
dxp
QUOTE (vitan @ Mar 18 2015, 22:03) *
Смотрите внимательнее. Док. № MV-S300723.

Да, по названию документа удалось найти, правда, только online версию. Узнал ещё кое-что интересное, в частности, что для ревизии В2 задающий резистор RSET должен иметь номинал не 5.0 кОм, а 4.87 кОм.

QUOTE (vitan @ Mar 18 2015, 22:03) *
Из документа MV-S400049-00, в котором сказано, что окромя даташита надо читать еще release notes для конкретной ревизии чипа.

А вот этот документ найти не удалось. На фтп про 88Е1111 прилично информации, включая даташит уже за 2012 год (в котором, тем не менее, нет информации, которая есть в MV-S300723 от 2005 года), но этих важных доков, к сожалению, нет.

Благодарность вам за чёткие ответы по делу. a14.gif
vitan
Цитата(dxp @ Mar 18 2015, 21:25) *
А вот этот документ найти не удалось.

Экстранет - это для официальных юзеров. Там много чего еще есть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.