mamrchelli 0 1 сентября, 2010 Опубликовано 1 сентября, 2010 · Жалоба Нужно запустить шину MDIO для настройки PHY. Для этого использую IP-core Ten Gigabit Ethernet MAC v10.1. Создал FSM (код прилагается). После записи в host controller данных, при чтении из того же регистра - получили нулевое значение (записывали не ноль). Последовательность установки сигналов выполнена согласно ДШ ug148 на IP-core. Помогите разобраться, в чём проблема. mdio_read_fsm.v Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shtirlits 0 1 сентября, 2010 Опубликовано 1 сентября, 2010 · Жалоба Что видно в симуляторе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mamrchelli 0 1 сентября, 2010 Опубликовано 1 сентября, 2010 · Жалоба Смотря что Вас интересует. По результатам операций должен запуститься MDIO controller. Все управляющие последовательности выдаются правильно, но на MDC выходе вместо частоты - ноль, а MDIO в z состоянии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shtirlits 0 1 сентября, 2010 Опубликовано 1 сентября, 2010 · Жалоба Я не могу разобраться в вашем автомате, и верилог плохо знаю и, честно говоря, подозреваю, что написать можно понятнее. Посоветовать могу написать кристально ясный несинтезируемый модуль, который бы шаг за шагом сгенерировал бы нужные сигналы для ядра. Если с ним ядро будет вести себя как нужно, то этот модуль можно использовать в качестве reference-model для отладки синтезируемого автомата. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mamrchelli 0 1 сентября, 2010 Опубликовано 1 сентября, 2010 (изменено) · Жалоба Спасибо. Но те сигналы которые сформированы , вполне соответствуют моему представлению о "нужных" сигналах для данного ядра. Отличается лишь поведение ядра (отсутствие частоты на выходе MDC контроллера MDIO) :) Диаграмму сигналов привожу. Диаграмму привел для переделанного кода, который записывает данные в регистр с адресом 0х340, а затем считывает из этого регистра. Правда записанных данных я не увидел. Новый код выкладываю. hc_fsm.v Изменено 1 сентября, 2010 пользователем mamrchelli Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 1 сентября, 2010 Опубликовано 1 сентября, 2010 · Жалоба Я не очень разбираюсь в верилоге, но как у вас формируется сингнал start? Если я правильно понимаю, то у вас start всегда 0 и вы всегда находитесь в состоянии IDLE. Ага, в новом коде start меняет значение по reset-у, а на диаграмме у вас reset "0", и опять же вы сидите в состоянии IDLE, ожидая start, который никогда не придет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mamrchelli 0 1 сентября, 2010 Опубликовано 1 сентября, 2010 · Жалоба сингнал 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 0 1 сентября, 2010 Опубликовано 1 сентября, 2010 · Жалоба сингнал 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 3 2 сентября, 2010 Опубликовано 2 сентября, 2010 · Жалоба Нужно запустить шину MDIO для настройки PHY. Для этого использую IP-core Ten Gigabit Ethernet MAC v10.1. Создал FSM (код прилагается). После записи в host controller данных, при чтении из того же регистра - получили нулевое значение (записывали не ноль). Последовательность установки сигналов выполнена согласно ДШ ug148 на IP-core. Помогите разобраться, в чём проблема. Я когда то очень давно этим занимался, но только для 10/100. И делал все как то гораздо проще... У меня на сайте есть статья, наверное от 2002 года. Там описание моего проекта. И в том числе, контроллера MDIO... Удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mamrchelli 0 2 сентября, 2010 Опубликовано 2 сентября, 2010 · Жалоба Я когда то очень давно этим занимался, но только для 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 «если монету подбросить,то она упадет и точно встанет на ребро, если, конечно, не зависнет в воздухе» - понравилось :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mamrchelli 0 3 сентября, 2010 Опубликовано 3 сентября, 2010 · Жалоба Всё, проблема с host controller решена. Нашли в в стартовом проекте к ядру файлик тест бенча. Посмотрели на форму сигналов необходимую для работы host controller - сигналы "слегка" :) отличались от тех, что были в официальной документации. Сделали формирование сигналов как в тест - бенче - заработало. Всем спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shtirlits 0 3 сентября, 2010 Опубликовано 3 сентября, 2010 · Жалоба Не могли бы вы по горячим следам написать, какие именно сигналы отличаются? На тот случай, если эту ветку будут искать ваши последователи уткнувшиеся в эту же проблему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться