|
|
  |
Вопрос по Ethernet, вопросы по интерфейсу и реализации |
|
|
|
Dec 17 2014, 18:15
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Здравствуйте, всем доброго времени суток. Есть необходимость реализовать передачу данных между устройствами с использованием Ethernet (в идеале 1Gbit). Сейчас вот разбираюсь с эти делом при помощи отладочной платы Cyclone III FPGA Development Kit. В качестве преобразователя уровней там используется микросхема 88Е111 фирмы Marvel. Прада есть несколько проеблем. В этом интерфейсе я, к сожалению, ничего не понимаю. Начал читать стандарт IEEE 803.2 и ещё какие то книжки, но всёравно голова пухнет! Какието уровни, какие то связи между этими уровнями... короче говоря мрак  Так что вот решил немного поспрашать: 1) В даташите на 88Е111 фигурирует какойто PHY адрес. Как я понял это сокращение от "physics". Не могу понять - MAC адрес и PHY адрес это одно и то же или нет? 2) В даташите описаны некие регистры (32 шт.). Так и не понял зачем они нужны (вроде для настройки каких то параметров), так вот непонятно, как их программировать. Как я понял с помощью интерфейса MDIO. Правильно? И ещё, можно ли по этому интерфейсу считывать данные пришедшие на микросхему и наоборот, передавать их в микросхему для дальнейшей отправки по витой паре? 3) Возможно ли отправить какие-либо данные "вникуда"? Т.е. Как например с микросхемой MAX3232. Т.е. обязательно ли мне подключить плату, скажем к компьютеру, что бы посмотреть данные на выходе с помощью осциллографа? Для начала хотелось бы реализовать что то похожее на 10-ти битный ethernet (это было бы идеально!). Заранее спасибо.
|
|
|
|
|
Dec 17 2014, 19:07
|
Местный
  
Группа: Участник
Сообщений: 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МБ/с-режим, т.к. по умолчанию стоит авто подбор скорости. Установить скорость жёстко можно, сконфигурировав вышеупомянутые регистры.
|
|
|
|
|
Dec 17 2014, 19:49
|
Профессионал
    
Группа: Свой
Сообщений: 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 - а почему именно он?
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
|
Dec 18 2014, 06:31
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 18 2014, 11:55
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Грендайзер @ Dec 18 2014, 09:31)  Последний вопрос сейчас мне особенно интересен, т.к. посмотреть осциллографом на выводе RJ45, ни к чему не подключая плату как раз не вышло. С ПЛИС я подавал на ноги TXD0...TXD3 некоторые данные ("от фанаря"). Данные должны быть вполне конкретные, а не 'от фонаря'. В стандарте есть раздел, посвященный интерфейсу к PHY - читайте про данные там Цитата В даташте указано, что для передачи со скоростями 10 и 100 бит TX_CLK не используется (дословно "может быть остановлен"). На него я ничего не подавал. В чём тогда причина? В этом и причина - клок должен быть, по нему данные и отправляются. То, что он 'может быть остановлен' совсем не означает, что передача данных при этом будет продолжаться
|
|
|
|
|
Dec 22 2014, 14:36
|
Гуру
     
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Dec 22 2014, 15:07
|
Местный
  
Группа: Участник
Сообщений: 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, и в режиме... "автоопределения". Дык вот.
|
|
|
|
|
Dec 22 2014, 15:18
|
Гуру
     
Группа: Свой
Сообщений: 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 ниббл с этими битами)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|