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

 
 
 
Reply to this topicStart new topic
> ? по Triple-Speed Ethernet
Jackov
сообщение Sep 29 2013, 11:42
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 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. Всякие ниосы запрещены. Только пользовательская логика, только хардкор. sm.gif Хотя к сути, я думаю, это отношения не имеет.
Прошу помочь знающих людей, а то я чёта в стену упёрся. Поиск юзал - не помог.
Даташит прикреплён.
Заранее благодарен.

Прикрепленные файлы
Прикрепленный файл  ug_ethernet.pdf ( 1.64 мегабайт ) Кол-во скачиваний: 19
 
Go to the top of the page
 
+Quote Post
krux
сообщение Sep 29 2013, 15:34
Сообщение #2


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

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



1) разрядность шины CSR зависит от канальности
address[(log2(MAX_CHANNELS)+7):0]

2) даже если все PHY висят физически на одном MDIO, к ним можно получить доступ через "окно" первого порта.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Jackov
сообщение Sep 30 2013, 19:27
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 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, а Окна там отсутствуют. Неужто буржуи забыли написать?

Go to the top of the page
 
+Quote Post
krux
сообщение Sep 30 2013, 20:13
Сообщение #4


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

Группа: Свой
Сообщений: 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]


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Jackov
сообщение Sep 30 2013, 20:25
Сообщение #5


Местный
***

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



Цитата(krux @ Sep 30 2013, 23:13) *
Второй MDIO в корке TSE изначально сделан только с одной целью - для того чтобы сделать поддержку трансиверов GX/GT. При их использовании, настройка параметров трансиверов производится через это второе окно. Если вы не работаете через GT-трансиверы, то оно вам в 99% случаев не понадобится.

Ага, вон оно как, спасибо! ))
Осталось только с первым вопросом разобраться...
Go to the top of the page
 
+Quote Post
Jackov
сообщение Oct 2 2013, 16:12
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 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 года, там с этим делом уже всё нормально.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 23:53
Рейтинг@Mail.ru


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