|
|
  |
? по Triple-Speed Ethernet |
|
|
|
Sep 29 2013, 11:42
|
Местный
  
Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485

|
Здравствуйте, товарищи. Мы на работе осваиваем новую технологию - Ethernet, мне поручили разобраться с мегафункцией Triple-Speed Ethernet. При изучении документации возникли кое-какие вопросы. 1. Шина Avalon-MM предназначена для конфигурирования мегафункции путём установки регистров. Шина адреса 7-ми разрядная, это позволяет адресоваться к 256 регистрам, на стр. 4-27 об этом так и написано. Тем не менее, последний доступный регистр имеет адрес 0x31C, а это уже 10 разрядов. Нестыковочка, однако. 2. Мегафункция у меня в режиме мультипорт. Как я понимаю, на каждый порт мегафункции должна быть подключена своя микросхема PHY. Просматривая карту регистров, мы видим два регистра по адресам 0x03C и 0x040 (стр. 4-31), в них необходимо записать адреса микросхем PHY. Но их всего два! А если у меня мегафункция настроена на 8 портов, что тогда? Такая же история и с адресными пространствами этих PHY, размещённых по адресам 0x200–0x27C и 0x280–0x2FC (стр. 4-34). Сижу под квартусом 9.1. Всякие ниосы запрещены. Только пользовательская логика, только хардкор.  Хотя к сути, я думаю, это отношения не имеет. Прошу помочь знающих людей, а то я чёта в стену упёрся. Поиск юзал - не помог. Даташит прикреплён. Заранее благодарен.
|
|
|
|
|
Sep 30 2013, 19:27
|
Местный
  
Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485

|
Цитата(krux @ Sep 29 2013, 18:34)  1) разрядность шины CSR зависит от канальности address[(log2(MAX_CHANNELS)+7):0] Это понятно. У меня мегафункция в режиме мультипорт, а количество портов - 1, вот и получается, согласно формуле, 8-ми разрядная шина адреса (к стати да, сверху очепятка, не 7 а 8 конечно же). Цитата(krux @ Sep 29 2013, 18:34)  2) даже если все PHY висят физически на одном MDIO, к ним можно получить доступ через "окно" первого порта. Правильно ли я понимаю, регистр MDIO_ADDR0 (0x03C) и окно PHY Device 0 Internal Registers (0x200 – 0x27C) образуют как бы пару, а MDIO_ADDR1 (0x040) и окно PHY Device 1 Internal Registers (0x280 – 0x2FC) образуют как бы вторую пару? Т.е., чтобы обратиться к какой-нибудь PHY, мне что надо сделать? Мне надо в регистр MDIO_ADDR0 записать адрес этой PHY, после чего окно "PHY Device 0 Internal Registers" отобразится на нужную PHY. Таким образом, в регистре MDIO_ADDR0 значения нужно менять динамически, каждый раз перезаписывая перед обращением к другой PHY. Я правильно мыслю? Если правильно, то встаёт вопрос: зачем нужна вторая пара. Для второго MDIO? Но MDIO-интерфейс всегда один, не зависимо от количества портов. И да, на стр. 4-28, только сегодня обнаружил такую строчку "The following registers are shared among all instances of a multi-port MAC:". Я её понимаю так: в мегафункции все регистры делятся на общие и на предназначенные для каждого порта (для второго порта (т.е. для первого, если считать от нуля) они начинаются со смещения 0х400), согласно последнему абзацу на стр. 4-27, и под строчкой перечислены как раз общие регистры. Но в перечислении указаны только регистры MDIO_ADDR0 и MDIO_ADDR1, а Окна там отсутствуют. Неужто буржуи забыли написать?
|
|
|
|
|
Sep 30 2013, 20:13
|
Профессионал
    
Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596

|
Цитата(Jackov @ Sep 30 2013, 23:27)  Правильно ли я понимаю, регистр MDIO_ADDR0 (0x03C) и окно PHY Device 0 Internal Registers (0x200 – 0x27C) образуют как бы пару, а MDIO_ADDR1 (0x040) и окно PHY Device 1 Internal Registers (0x280 – 0x2FC) образуют как бы вторую пару? Т.е., чтобы обратиться к какой-нибудь PHY, мне что надо сделать? Мне надо в регистр MDIO_ADDR0 записать адрес этой PHY, после чего окно "PHY Device 0 Internal Registers" отобразится на нужную PHY. Таким образом, в регистре MDIO_ADDR0 значения нужно менять динамически, каждый раз перезаписывая перед обращением к другой PHY. Я правильно мыслю? да Цитата(Jackov @ Sep 30 2013, 23:27)  Если правильно, то встаёт вопрос: зачем нужна вторая пара. Для второго MDIO? Но MDIO-интерфейс всегда один, не зависимо от количества портов. Второй MDIO в корке TSE изначально сделан только с одной целью - для того чтобы сделать поддержку трансиверов GX/GT. При их использовании, настройка параметров трансиверов производится через это второе окно. Если вы не работаете через GT-трансиверы, то оно вам в 99% случаев не понадобится. quick & dirty way to initialize TSE w/ 88e1111 PHY [attachment=79776:tse_config.v]
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
|
Sep 30 2013, 20:25
|
Местный
  
Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485

|
Цитата(krux @ Sep 30 2013, 23:13)  Второй MDIO в корке TSE изначально сделан только с одной целью - для того чтобы сделать поддержку трансиверов GX/GT. При их использовании, настройка параметров трансиверов производится через это второе окно. Если вы не работаете через GT-трансиверы, то оно вам в 99% случаев не понадобится. Ага, вон оно как, спасибо! )) Осталось только с первым вопросом разобраться...
|
|
|
|
|
Oct 2 2013, 16:12
|
Местный
  
Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485

|
Цитата(Jackov @ Sep 30 2013, 23:25)  Осталось только с первым вопросом разобраться... Всё, я понял. Кажись косяк в документации. Если присмотреться, регистры нумеруются с шагом по 4. Такое впечатление, что предполагается 8-ми разрядная шина данных, при 32-х разрядных регистрах. Тогда, чтобы установить весь регистр, к примеру command_config, нужно произвести запись по адресам 0x008, 0x009, 0x00А, 0x00В. Может быть оно так и было в предыдущих версиях мегафункции, но потом перешли на 32-х разрядную шину данных, а документацию откорректировать забыли. Получается, для того чтобы обратиться к регистру, его адрес нужно делить на 4, у command_config это будет 0x002. Посмотрел в даташит от 2013 года, там с этим делом уже всё нормально.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|