|
|
  |
Tri-Mode Ethernet MAC |
|
|
|
Mar 6 2014, 14:47
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
Здравствуйте! Начну по порядку. Имеется ядро 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 выставляет такую же и следовательно передача и прием будут проходить на одинаковых скоростях то есть сигналы тактирования приемника и передатчика будут одинаковы. Может бред, не знаю) это мое предположение, помогите пояснить что да как тут)
|
|
|
|
|
Mar 6 2014, 17:41
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 23-12-12
Пользователь №: 74 946

|
Цитата(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), узнаете на какую скорость он согласовался, устанавливаете эту скорость для темака, как на прием, так и на передачу.
|
|
|
|
|
Mar 7 2014, 06:34
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
Что касается второго вопроса: Т.е. согласуются два PHY на максимальную скорость и режим дуплекса если не задавать самому скорость? Получается можно не узнавать по MDIO на какую скорость согласовались и не выставлять ее, пусть работает в режиме автосогласования? Или лучше делать как вы написали (узнавать и выставлять самому)?
Или я едру обязательно должен указывать скорость приема/передачи и получается согласование нужно чтобы как раз определить эту скорость и указать ее??
|
|
|
|
|
Mar 7 2014, 12:17
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
В общем поясните что значит устанавливать скорость жестко и где это устанавливается?)
|
|
|
|
|
Mar 7 2014, 12:56
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 23-12-12
Пользователь №: 74 946

|
Цитата(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)  Или я едру обязательно должен указывать скорость приема/передачи и получается согласование нужно чтобы как раз определить эту скорость и указать ее?? Да.
Сообщение отредактировал sorok-odin - Mar 7 2014, 12:58
|
|
|
|
|
Mar 7 2014, 14:56
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
Спасибо, с этим разобрался Возникает еще вопрос: я настраиваю phy на автосоглосование, он определяет нужную скорость и сообщает ее (по mdio) mac'у, в mac'е с выхода speedis идет необходимый сигнал на мультиплексор который выбирает клок соответствующий той скорости на которой согласовались phy (поправьте если рассуждения неверны). При подключении запросы от mac о скорости на которую согласовались phy выполняются автоматически? От меня что нибудь требуется для управления этим процессом? И, кстати, клиентская сторона интерфейса mdio нужна только для конфигурирования phy и мне ее можно не использовать (конфигурировать phy буду через ножки config0 ... config6)?
Кстати это моя выпускная работа бакалавра (Ethernet (только udp) на плис) и почти нет никого кто в этом проконсультировал бы, так что строго не судите, лучше поподробней пишите)
|
|
|
|
|
Mar 7 2014, 19:34
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 23-12-12
Пользователь №: 74 946

|
Цитата(Alexey_pashinov @ Mar 7 2014, 18:56)  Кстати это моя выпускная работа бакалавра (Ethernet (только udp) на плис) и почти нет никого кто в этом проконсультировал бы, так что строго не судите, лучше поподробней пишите) Тогда вам в соседней теме правильно советовали делать в EDK. Для вашего китлайта мастер сам создаст готовый проект, подключит как надо процессор, к нему езернет, даже даст примеры программ для работы с ними. Документации и пошаговых руководств в сети полно.
|
|
|
|
|
Mar 7 2014, 20:48
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

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

Группа: Участник
Сообщений: 44
Регистрация: 23-12-12
Пользователь №: 74 946

|
Цитата(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, когда нужна большая скорость, выше - только программно, ибо замучаетесь, никто так не делает.
|
|
|
|
|
Mar 8 2014, 09:15
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
Хорошо, спасибо большое за советы
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|