реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Вопрос по Ethernet, вопросы по интерфейсу и реализации
Грендайзер
сообщение Dec 17 2014, 18:15
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Здравствуйте, всем доброго времени суток. Есть необходимость реализовать передачу данных между устройствами с использованием Ethernet (в идеале 1Gbit). Сейчас вот разбираюсь с эти делом при помощи отладочной платы Cyclone III FPGA Development Kit. В качестве преобразователя уровней там используется микросхема 88Е111 фирмы Marvel. Прада есть несколько проеблем. В этом интерфейсе я, к сожалению, ничего не понимаю. Начал читать стандарт IEEE 803.2 и ещё какие то книжки, но всёравно голова пухнет! Какието уровни, какие то связи между этими уровнями... короче говоря мрак cranky.gif Так что вот решил немного поспрашать:
1) В даташите на 88Е111 фигурирует какойто PHY адрес. Как я понял это сокращение от "physics". Не могу понять - MAC адрес и PHY адрес это одно и то же или нет?
2) В даташите описаны некие регистры (32 шт.). Так и не понял зачем они нужны (вроде для настройки каких то параметров), так вот непонятно, как их программировать. Как я понял с помощью интерфейса MDIO. Правильно? И ещё, можно ли по этому интерфейсу считывать данные пришедшие на микросхему и наоборот, передавать их в микросхему для дальнейшей отправки по витой паре?
3) Возможно ли отправить какие-либо данные "вникуда"? Т.е. Как например с микросхемой MAX3232. Т.е. обязательно ли мне подключить плату, скажем к компьютеру, что бы посмотреть данные на выходе с помощью осциллографа?
Для начала хотелось бы реализовать что то похожее на 10-ти битный ethernet (это было бы идеально!).
Заранее спасибо.
Go to the top of the page
 
+Quote Post
Jackov
сообщение Dec 17 2014, 19:07
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



Здравствуйте.
Сейчас на работе как раз работаю с эзернетом, уже успел немного разобраться, потому могу кое-что рассказать. По порядку:

Цитата(Грендайзер @ Dec 17 2014, 21:15) *
В качестве преобразователя уровней там используется микросхема 88Е111 фирмы Marvel.
Микросхема 88Е111 - это не просто преобразователь уровней, микросхема по мимо прочего осуществляет дополнительную кодировку информации.

Цитата(Грендайзер @ Dec 17 2014, 21:15) *
1) В даташите на 88Е111 фигурирует какойто PHY адрес. Как я понял это сокращение от "physics". Не могу понять - MAC адрес и PHY адрес это одно и то же или нет?
Это просто номер микросхемы висящей на MDIO-интерфейсе, т.к. на MDIO-интерфейс можно повесить несколько таких микросхем, то им нужен уникальный номер, чтобы можно было обращаться только к нужной.

Цитата(Грендайзер @ Dec 17 2014, 21:15) *
2) В даташите описаны некие регистры (32 шт.). Так и не понял зачем они нужны (вроде для настройки каких то параметров), так вот непонятно, как их программировать. Как я понял с помощью интерфейса MDIO. Правильно? И ещё, можно ли по этому интерфейсу считывать данные пришедшие на микросхему и наоборот, передавать их в микросхему для дальнейшей отправки по витой паре?
Эти регистры нужны для тонкой настройки Марвела, если эзернет без изысков то и настраивать их не надо. MDIO-интерфейс нужен только для конфигурирования этих самых регистров. Для передачи/приёма данных в/из эзернет(а) служит интерфейс MII и его разновидности.

Цитата(Грендайзер @ Dec 17 2014, 21:15) *
3) Возможно ли отправить какие-либо данные "вникуда"?
Возможно, но при этом марвел переключится в 10МБ/с-режим, т.к. по умолчанию стоит авто подбор скорости. Установить скорость жёстко можно, сконфигурировав вышеупомянутые регистры.
Go to the top of the page
 
+Quote Post
krux
сообщение Dec 17 2014, 19:49
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Интерфейс MDIO имеет шинную топологию (можно провести аналогию с I2C) и на нём может висеть до 32 устройств. Для того чтобы их различать устанавливают PHY-адрес для каждой микросхемы PHY. Даже если она на шине одна.

регистры микросхемы PHY нужны для
1) настройки режимов её работы
2) получения информации о текущем состоянии соединения

тут всё дело в чем: при установлении соединения производятся следующие операции (например для GMII/RGMII):
1) reset PHY
2) настройка режима работы PHY (если не задано аппаратно, на плате)
3) задание скорости 10/100/1000 либо авто-определения скорости для PHY
4) определение состояния линка чтением регистров PHY
4а) наличие линка "с той стороной"
4б) для меди - скорость на которой поднялся линк, 10/100/1000, дуплекс/полудуплекс
5) в зависимости от того на какой скорости микросхемы PHY договорились друг с другом работать, необходимо настроить MAC
5a) устанавливается частота 2,5 / 25 / 125 МГц для 10/100/1000 соответственно (напрямую мультиплексорами либо через MAC, если он это поддерживает)
5б) выполняется soft-reset MAC
5в) настраиваются регистры MAC для работы в режиме (в том числе дуплекс/полудуплекс, величина IPG и прочее)
6) перейти к п.4
вобщем, как видите, без охапки регистров тут никуда.

все интерфейсы между MAC и PHY имеют возможность послать данные "в никуда", неважно какой - XGMII, SGMII, RGMII, GMII, MII, RMI, TBI - для "посмотреть осциллом" подойдёт любой. Достаточно жестко задать частоту передачи (скорость).


Цитата
хотелось бы ... 10-ти битный ethernet

TBI - а почему именно он?


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Dec 18 2014, 06:31
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



И так:
1) PHY - это имя микросхемы для общения с ней (и с MAC адресом ничего общего не имеет, т.к. MAC адрес это имя микросхемы на шите "Ethernet"), если она сидит на общей шине интерфейса MDIO (и на плате о которой я написал в первом сообщении PHY адрес задан аппаратно, т.е. конфигурационные ноги CONFIG[0...6] подтянуты к определённым точкам схемы).
2) Регистры нужны для настройки микросхемы. Их программирование происходит по интерфейсу MDIO.
3) И самый на данный момент меня волнующий вопрос об отправки данных "вникуда". Это возможно при помощи ног TXD0...TXD3.
Последний вопрос сейчас мне особенно интересен, т.к. посмотреть осциллографом на выводе RJ45, ни к чему не подключая плату как раз не вышло. С ПЛИС я подавал на ноги TXD0...TXD3 некоторые данные ("от фанаря"). При этом ногу TX_EN я подтягивал и держал в '1' а также переодически менял на ней состояние надеясь что данные защёлкнутся на одном из фронтов. В даташте указано, что для передачи со скоростями 10 и 100 бит TX_CLK не используется (дословно "может быть остановлен"). На него я ничего не подавал. В чём тогда причина?
Цитата
TBI - а почему именно он?

Ну мне бы хоть как то этого зверя завести, а там может и c 1Gbit-ом отстанут. Ну или хотя бы разберусь куда в книжку смотреть...

Сообщение отредактировал Грендайзер - Dec 18 2014, 06:35
Go to the top of the page
 
+Quote Post
XVR
сообщение Dec 18 2014, 11:55
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Грендайзер @ Dec 18 2014, 09:31) *
Последний вопрос сейчас мне особенно интересен, т.к. посмотреть осциллографом на выводе RJ45, ни к чему не подключая плату как раз не вышло. С ПЛИС я подавал на ноги TXD0...TXD3 некоторые данные ("от фанаря").

Данные должны быть вполне конкретные, а не 'от фонаря'. В стандарте есть раздел, посвященный интерфейсу к PHY - читайте про данные там

Цитата
В даташте указано, что для передачи со скоростями 10 и 100 бит TX_CLK не используется (дословно "может быть остановлен"). На него я ничего не подавал. В чём тогда причина?
В этом и причина - клок должен быть, по нему данные и отправляются. То, что он 'может быть остановлен' совсем не означает, что передача данных при этом будет продолжаться rolleyes.gif
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Dec 18 2014, 13:31
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Ну ещё одна тактовая частота поступает на микросхему с отдельного генератора... так что... Но всёрано, большое спавсибо за ответы. Буду дальше пыхтеть.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Dec 22 2014, 14:29
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Здравствуйте ещё раз. Был немного занят, но сейчас опять стал разбираться с Ethernet. На указанной плате, к ПЛИС подходят следующие ноги микросхемы Marvel:
TXD[3..0]
GTX_CLK
TX_EN
MDC
RXD[3..0]
RX_CLK
RX_DV
MDIO
RESETn
LED_LINK1000
Над микросхемой написано RGMII Mode. Как я понял данные для передачи защёлкиваются по фронту TX_CLK, но как быть если его нет? Можно ли использовать RX_CLK? Я прочитал, что в RGMII (Reduced Gigabit Media Independent Interface) используется уменьшенное кол-во ног, но TX_CLK всёравно должен быть. Частота GTX_CLK используется лишь для гигабитного Ethernet и составляет 125МГц. В чём подвох?

Сообщение отредактировал Грендайзер - Dec 22 2014, 14:30
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 22 2014, 14:36
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



В RGMII GTX_CLK не используется. TXD[3:0] и TXCTL работают по клоку TX_CLK (он генерируется в MAC, идет в PHY), а RXD[3:0] и RXCTL - по клоку RX_CLK, который генерируется в PHY и идет в MAC. Если TX_CLK нет, то надо разобраться, почему его нет, и сделать так, чтобы он появился.

GTX_CLK используется только в режиме GMII, без буквы R который. Однако, в части PHY, именно сигнал GTX_CLK становится в режиме RGMII TX_CLK, так что, назначение пинов надо уточнить в даташите на PHY.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Dec 22 2014, 14:49
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Вот фрагмент схемы. В зелёном квадрате, сигналы идущие к плис. Обе микросхемы в FBGA корпусах, так что физически что там не посмотришь 05.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 22 2014, 14:52
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Грендайзер @ Dec 22 2014, 17:49) *
так что физически что там не посмотришь

Физически тип микросхемы можно прочитать, он на ее корпусе написан sm.gif
А дальше - посмотреть в ее даташит. С вероятностью 99% у этой микросхемы именно GTX_CLK в режиме RGMII становится TXC (а если она еще и окажется 88E1111 - то с вероятностью 100%).
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Dec 22 2014, 15:07
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Ну да, она именно 88E1111! В даташите написано следующее
Цитата
GMII transmit clock. GTX_CLK provides a 125 MHz clock reference for TX_EN, TX_ER, and TXD[7:0]. This clock can be stopped when the device is in 10/100BASE-modes, and also during Auto-Negotiation.

Т.е. тактовая частота для GMII. GTX_CLK обеспечивает частотой синнхр. сигналы TX_EN, TX_ER, и TXD[7:0]. Этот сигнал может быть остановлен когда м/с работает в режимах 10/100BASE, и в режиме... "автоопределения".
Дык вот. smile3046.gif
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 22 2014, 15:18
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Грендайзер @ Dec 22 2014, 18:07) *
Ну да, она именно 88E1111! В даташите написано следующее

А еще и вот что там написано:

Table 4: RGMII Interface
....
GTX_CLK/TXC
....
RGMII Transmit Clock provides a 125 MHz, 25 MHz, or 2.5 MHz reference clock with ± 50 ppm tolerance depending on speed. In RGMII mode, GTX_CLK is used as TXC

То, что Вы процитировали, касается режима GMII (без R)

и, вдогонку - к развернутому ответу krux - для RGMII не надо читать регистры PHY, чтобы определить скорость - между фреймами по RGMII постоянно передается информация о текущей скорости, дуплексе и up/down (когда RX_CTL=[0,0] на обоих фронтах - то на RXD ниббл с этими битами)
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Dec 22 2014, 16:01
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Вот чёрт! Прошу прощения за невнимательность и лень. Вы совершенно правы (как и XVR). Про Ethernet столько всего написано и наделано, что сразу во всё въехать очень сложно. Большое спасибо за помощь! cheers.gif

Сообщение отредактировал Грендайзер - Dec 22 2014, 16:01
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016