Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Tri-Mode Ethernet MAC
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Alexey_pashinov
Здравствуйте! Начну по порядку. Имеется ядро Tri-Mode Ethernet MAC v4.5 предcтавленная Xilinx. Рассматриваем интерфейс передачи данных (в моем случае GMII) между MAC и физическим уровнем. Этот интерфейс имеет блоки GMII transmitter и GMII Receiver. Каждый имеет свои клоки тактирования. GMII transmitter выбирает мультиплексором какой частотой хочет тактироваться (125Мгц или 25Мгц) и выдает данные со скорость соответствующей выбранному клоку (т.е. он решает с какой скорость будет передавать данные). А GMII Receiver принимает данные с той скорость которая соответствует клоку идущему с PHY на плис. ВОПРОС, как Phy понимает какой клок выдавать???

User guide -> http://www.xilinx.com/support/documentatio...h_mac_ug138.pdf
На стр. 157 представлен transmitter на стр. 160 receiver.


Мое предположение что два устройства устанавливают связь где один из устройств Master другой Slave (сделал вывод из того что встретил в регистрах управления PHY вот такой регистр - Auto-Negotiation Configuration for copper modes. ANEG[3:0] determines whether Auto-Negotiation should be turned on, Master/Slave preference, and the speed and duplex at which to run. ANEG [3:2] also determines duplex advertised in 1000BASE-X mode). И если устанавливаю необходимую скорость в Master, Slave выставляет такую же и следовательно передача и прием будут проходить на одинаковых скоростях то есть сигналы тактирования приемника и передатчика будут одинаковы. Может бред, не знаю) это мое предположение, помогите пояснить что да как тут)
sorok-odin
Цитата(Alexey_pashinov @ Mar 6 2014, 18:47) *
ВОПРОС, как Phy понимает какой клок выдавать???

Ваш Phy в результате автосогласования (Auto-Negotiation) с Phy на другом конце кабеля выбирает максимальную скорость (и дуплекс) из тех, что поддерживаются обоими микросхемами. Это не имеет отношения к режимам мастер и слейв, они присутствуют только в гигабите. ЕМНИП слейв восстанавливает клок из принимаемых данных от мастера и использует его для приема и передачи.

Цитата(Alexey_pashinov @ Mar 6 2014, 18:47) *
И если устанавливаю необходимую скорость в Master, Slave выставляет такую же и следовательно передача и прием будут проходить на одинаковых скоростях то есть сигналы тактирования приемника и передатчика будут одинаковы. Может бред, не знаю) это мое предположение, помогите пояснить что да как тут)

Устанавливаете скорость жестко (неважно где) => автосогласование выключается => Phy на другом конце не может знать какой режим дуплекса вы используете (скорость как-то может) => возможны разные режимы дуплеса у приемника и передатчика => потери пакетов.

По MDIO общаетесь с PHY (ЕМНИП 0 регистр биты 6 и 13), узнаете на какую скорость он согласовался, устанавливаете эту скорость для темака, как на прием, так и на передачу.
Alexey_pashinov
Что касается второго вопроса:
Т.е. согласуются два PHY на максимальную скорость и режим дуплекса если не задавать самому скорость? Получается можно не узнавать по MDIO на какую скорость согласовались и не выставлять ее, пусть работает в режиме автосогласования? Или лучше делать как вы написали (узнавать и выставлять самому)?


Или я едру обязательно должен указывать скорость приема/передачи и получается согласование нужно чтобы как раз определить эту скорость и указать ее??
Alexey_pashinov
В общем поясните что значит устанавливать скорость жестко и где это устанавливается?)
ZASADA
через регистры PHY можно задать или автоопределение (Auto-Negotiation) или конкретный фиксированный режим работы.
sorok-odin
Цитата(Alexey_pashinov @ Mar 7 2014, 10:34) *
Что касается второго вопроса:
Т.е. согласуются два PHY на максимальную скорость и режим дуплекса если не задавать самому скорость?

Да.

Цитата(Alexey_pashinov @ Mar 7 2014, 10:34) *
Получается можно не узнавать по MDIO на какую скорость согласовались и не выставлять ее, пусть работает в режиме автосогласования? Или лучше делать как вы написали (узнавать и выставлять самому)?

Узнавать у Phy, выставлять у mac. Иначе когда-нибудь подключите устройство в 100 мбит/с свич, а мак так и останется на гигабит - работать не будет.

Цитата(Alexey_pashinov @ Mar 7 2014, 10:34) *
Или я едру обязательно должен указывать скорость приема/передачи и получается согласование нужно чтобы как раз определить эту скорость и указать ее??

Да.
Alexey_pashinov
Спасибо, с этим разобрался
Возникает еще вопрос: я настраиваю phy на автосоглосование, он определяет нужную скорость и сообщает ее (по mdio) mac'у, в mac'е с выхода speedis идет необходимый сигнал на мультиплексор который выбирает клок соответствующий той скорости на которой согласовались phy (поправьте если рассуждения неверны). При подключении запросы от mac о скорости на которую согласовались phy выполняются автоматически? От меня что нибудь требуется для управления этим процессом? И, кстати, клиентская сторона интерфейса mdio нужна только для конфигурирования phy и мне ее можно не использовать (конфигурировать phy буду через ножки config0 ... config6)?

Кстати это моя выпускная работа бакалавра (Ethernet (только udp) на плис) и почти нет никого кто в этом проконсультировал бы, так что строго не судите, лучше поподробней пишите)
sorok-odin
Цитата(Alexey_pashinov @ Mar 7 2014, 18:56) *
Кстати это моя выпускная работа бакалавра (Ethernet (только udp) на плис) и почти нет никого кто в этом проконсультировал бы, так что строго не судите, лучше поподробней пишите)

Тогда вам в соседней теме правильно советовали делать в EDK. Для вашего китлайта мастер сам создаст готовый проект, подключит как надо процессор, к нему езернет, даже даст примеры программ для работы с ними. Документации и пошаговых руководств в сети полно.
Alexey_pashinov
У меня задача сделать (как бы собственную) реализацию Ethernet (PHY 88E1111 + Tri-Mode Ethernet MAC + сетевой и транспортный уровень буду брать с opencores + верхние три уровня вроде не сложные и нужно будет самому написать ), а кит просто для тестирования , так что нужно со всем этим разбираться и поподробнее, так что если не затруднит можете пояснить по тому что спрашивал выше?
Alex11
Почитайте описание на Ваше ядро. Я не работал с Xilinx, поэтому не скажу, что там сделано. Вообще, разборки с автонастройкой PHY - это не задача MAC'а. Если вдруг это сделано в ядре - Ваше счастье, но, скорее всего, Вам придется спросить по MDIO у PHY состояние линка, скорость и режим дуплекса. Когда поймаете линк, устанавливаете параметры в MAC и разрешаете работать всему остальному.
sorok-odin
Цитата(Alexey_pashinov @ Mar 7 2014, 18:56) *
Спасибо, с этим разобрался
Возникает еще вопрос: я настраиваю phy на автосоглосование, он определяет нужную скорость и сообщает ее (по mdio) mac'у, в mac'е с выхода speedis идет необходимый сигнал на мультиплексор который выбирает клок соответствующий той скорости на которой согласовались phy (поправьте если рассуждения неверны). При подключении запросы от mac о скорости на которую согласовались phy выполняются автоматически? От меня что нибудь требуется для управления этим процессом? И, кстати, клиентская сторона интерфейса mdio нужна только для конфигурирования phy и мне ее можно не использовать (конфигурировать phy буду через ножки config0 ... config6)?

Как у вас с мультиплексором не знаю, я работал с маком только в EDK. Там запросы от mac о скорости на которую согласовались phy выполняются НЕ автоматически аппаратно, а программно. Вряд ли ваше ядро из корегена делает все это само, возможно вам в любом случае понадобится процессор для управления. Тем более что ваши верхние 3 уровня все равно делать программно.
Для выпускной работы MDIO возможно и не нужен, настраивайте мак жестко на гигабит.

Цитата(Alexey_pashinov @ Mar 8 2014, 00:48) *
У меня задача сделать (как бы собственную) реализацию Ethernet (PHY 88E1111 + Tri-Mode Ethernet MAC + сетевой и транспортный уровень буду брать с opencores + верхние три уровня вроде не сложные и нужно будет самому написать ), а кит просто для тестирования , так что нужно со всем этим разбираться и поподробнее, так что если не затруднит можете пояснить по тому что спрашивал выше?

Для быстрого старта откройте EDK - получите сразу работающий проект - вот с ним и разбирайтесь.
Аппаратно делают езернет UDP, когда нужна большая скорость, выше - только программно, ибо замучаетесь, никто так не делает.
Alexey_pashinov
Хорошо, спасибо большое за советы
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.