Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с MDIO. Не отвечает host controller 10Gemac on Virtex5
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
mamrchelli
Нужно запустить шину MDIO для настройки PHY. Для этого использую IP-core Ten Gigabit Ethernet MAC v10.1. Создал FSM (код прилагается).
После записи в host controller данных, при чтении из того же регистра - получили нулевое значение (записывали не ноль).
Последовательность установки сигналов выполнена согласно ДШ ug148 на IP-core. Помогите разобраться, в чём проблема.
Shtirlits
Что видно в симуляторе?
mamrchelli
Смотря что Вас интересует. По результатам операций должен запуститься MDIO controller. Все управляющие последовательности выдаются правильно, но на MDC выходе вместо частоты - ноль, а MDIO в z состоянии.
Shtirlits
Я не могу разобраться в вашем автомате, и верилог плохо знаю и, честно говоря, подозреваю, что написать можно понятнее.
Посоветовать могу написать кристально ясный несинтезируемый модуль, который бы шаг за шагом сгенерировал бы нужные сигналы для ядра.
Если с ним ядро будет вести себя как нужно, то этот модуль можно использовать в качестве reference-model для отладки синтезируемого автомата.
mamrchelli
Спасибо. Но те сигналы которые сформированы , вполне соответствуют моему представлению о "нужных" сигналах для данного ядра. Отличается лишь поведение ядра (отсутствие частоты на выходе MDC контроллера MDIO) smile.gif
Диаграмму сигналов привожу.

Диаграмму привел для переделанного кода, который записывает данные в регистр с адресом 0х340, а затем считывает из этого регистра.
Правда записанных данных я не увидел.

Новый код выкладываю.
wolfman
Я не очень разбираюсь в верилоге, но как у вас формируется сингнал start?
Если я правильно понимаю, то у вас start всегда 0 и вы всегда находитесь в состоянии IDLE.

Ага, в новом коде start меняет значение по reset-у, а на диаграмме у вас reset "0", и опять же вы сидите в состоянии IDLE, ожидая start, который никогда не придет.
mamrchelli
сингнал start изначально находится в единице (инициализируется значением) :

initial
begin
state = IDLE;
start = 1'b1; // <------
......
end

по входу в состоянии IDLE первый раз, в данном коде, просто осуществляется переход в следующее состояние WR_CFG_MGMT,
по второму фронту в состоянии WR_CFG_MGMT устанавливаются нужные сигналы,
по третьему фронту в состоянии WR_CFG_MGMT снимаются управляющие сигналы, переход в состояние RD_CFG_MGMT,
по четвёртому , в состоянии RD_CFG_MGMT выставляются управляющие сигналы на чтение из регистра
по пятому в состоянии RD_CFG_MGMT снимаются управляющие сигналы, переход в состояние TRY_DATA,
по шестому - host контроллер должен был выставить данные на host_rd_data , установка wr_en для уарта, переход в состояние IDLE
по седьмому - в другой ветке IDLE снимаем сигнал wr_en уарта, а также все остальные сигналы.

Заранее согласен, что можно было добавить больше состояний. Тем не менее переходы выполняются корректно, и к самой машине состояний вроде как претензий, кроме наглядности кода, нет.

wolfman
Цитата(mamrchelli @ Sep 2 2010, 06:20) *
сингнал start изначально находится в единице (инициализируется значением) :

initial
begin
state = IDLE;
start = 1'b1; // <------
......
end

по входу в состоянии IDLE первый раз, в данном коде, просто осуществляется переход в следующее состояние WR_CFG_MGMT,
по второму фронту в состоянии WR_CFG_MGMT устанавливаются нужные сигналы,
по третьему фронту в состоянии WR_CFG_MGMT снимаются управляющие сигналы, переход в состояние RD_CFG_MGMT,
по четвёртому , в состоянии RD_CFG_MGMT выставляются управляющие сигналы на чтение из регистра
по пятому в состоянии RD_CFG_MGMT снимаются управляющие сигналы, переход в состояние TRY_DATA,
по шестому - host контроллер должен был выставить данные на host_rd_data , установка wr_en для уарта, переход в состояние IDLE
по седьмому - в другой ветке IDLE снимаем сигнал wr_en уарта, а также все остальные сигналы.

Заранее согласен, что можно было добавить больше состояний. Тем не менее переходы выполняются корректно, и к самой машине состояний вроде как претензий, кроме наглядности кода, нет.


это я понял.
iosifk
Цитата(mamrchelli @ Sep 1 2010, 19:15) *
Нужно запустить шину MDIO для настройки PHY. Для этого использую IP-core Ten Gigabit Ethernet MAC v10.1. Создал FSM (код прилагается).
После записи в host controller данных, при чтении из того же регистра - получили нулевое значение (записывали не ноль).
Последовательность установки сигналов выполнена согласно ДШ ug148 на IP-core. Помогите разобраться, в чём проблема.

Я когда то очень давно этим занимался, но только для 10/100. И делал все как то гораздо проще...
У меня на сайте есть статья, наверное от 2002 года. Там описание моего проекта. И в том числе, контроллера MDIO...
Удачи!
mamrchelli
Цитата(iosifk @ Sep 2 2010, 08:42) *
Я когда то очень давно этим занимался, но только для 10/100. И делал все как то гораздо проще...
У меня на сайте есть статья, наверное от 2002 года. Там описание моего проекта. И в том числе, контроллера MDIO...
Удачи!


Возможно "проще" объясняется тем, что для 10/100/1000 использовался MDIO интерфейс, согласно IEEE 802.3 clause 22. Тогда как для 10G оборудования уже применяется MDIO интерфейс согласно IEEE 802.3 clause 45.
Но дело даже не в MDIO. Не отвечает, как выяснилось на данный момент host controller 10-Gigabit Ethernet MAC IP core. Нужен этот контроллер для того, что бы как раз включить MDIO.

Знает ли кто, возможно есть некие особенности при работе с host controller ЕМАС' ов Xilinx? Так как судя по документации на ядро всё должно работать "с полуоборота".

p.s «если монету подбросить,то она упадет и точно встанет на ребро, если, конечно, не зависнет в воздухе» - понравилось smile.gif
mamrchelli
Всё, проблема с host controller решена. Нашли в в стартовом проекте к ядру файлик тест бенча. Посмотрели на форму сигналов необходимую для работы host controller - сигналы "слегка" smile.gif отличались от тех, что были в официальной документации. Сделали формирование сигналов как в тест - бенче - заработало.
Всем спасибо.
Shtirlits
Не могли бы вы по горячим следам написать, какие именно сигналы отличаются?
На тот случай, если эту ветку будут искать ваши последователи уткнувшиеся в эту же проблему.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.