NSergeevich 0 21 апреля, 2015 Опубликовано 21 апреля, 2015 · Жалоба Я пробую получить ответ с PHY AR8035, а ловлю этот ответ на Xilinx ChipScope. Но ответ не доходит. Возможно ли это из-за того, что эти данные не могут пройти через Output порт и чтобы они прошли нужно сделать In/Out порт? Или это не имеет значения? Отправляю подробную схему (для наглядности) реализации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tvcam 0 21 апреля, 2015 Опубликовано 21 апреля, 2015 · Жалоба Конечно должны. Вы должны перевести выход вашего блока конфигурирования в третье состояние. ... inout wire E_MDIO, output wire E_MDC, ... wire PhyInpMDIO,PhyOutMDIO_Z, PhyOutMDIO, PhyOutClkMDC; assign E_MDC = PhyOutClkMDC; // выход тактовой assign E_MDIO = (PhyOutMDIO_Z ? PhyOutMDIO : 1'bZ ); // когда PhyOutMDIO_Z =0 выход встаёт в Z assign PhyInpMDIO = E_MDIO; // из phi в cpu PhyOutMDIO_Z это сигнал перевода в Z Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 22 апреля, 2015 Опубликовано 22 апреля, 2015 · Жалоба Конечно должны. Вы должны перевести выход вашего блока конфигурирования в третье состояние. ... inout wire E_MDIO, output wire E_MDC, ... wire PhyInpMDIO,PhyOutMDIO_Z, PhyOutMDIO, PhyOutClkMDC; assign E_MDC = PhyOutClkMDC; // выход тактовой assign E_MDIO = (PhyOutMDIO_Z ? PhyOutMDIO : 1'bZ ); // когда PhyOutMDIO_Z =0 выход встаёт в Z assign PhyInpMDIO = E_MDIO; // из phi в cpu PhyOutMDIO_Z это сигнал перевода в Z Мой блок конфигурирования переходит в z состояние. С него все идет на двунаправленный(in/out) PHY MDIO. Через output топ модуля. Его я сделал in/out тоже. Когда phy должен отвечать (по той же линии так как он двунапр.) я этого не вижу на чипскопе. И еще странно. Когда я сделал выход топ модуля in/out я на чип скопе перестал ловить также то что идет с блока конфигурирования mdio. Вот этот вот набор который посылаю 1...1(32 единицы pre)01(st)10(op)00100(phyadd)00010(regad)z Но появляются время от времени какие-то редкие единицы меандра. Откуда это не понятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 22 апреля, 2015 Опубликовано 22 апреля, 2015 · Жалоба На ChipScope было вот так с выходом output: Вверху MDC Снизу MDIO (то, что я отправляю) 1 и z на чипскопе рисуется одним высоким уровнем. Стоило мне просто переименовать output в inout как стал ловить следующее: Откуда это? И то что отправляю пропало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_su 1 22 апреля, 2015 Опубликовано 22 апреля, 2015 · Жалоба Продублирую и здесь Добрый день. Для сигнала MDIO надо использовать компонент IOBUF_inst : IOBUF generic map ( DRIVE => 12, -- максимальный ток выхода в мА IOSTANDARD => "DEFAULT", -- надо заменить на нужный вам стандарт SLEW => "SLOW" -- можно оставить или поменять на FAST ) port map ( O => MDIO_O, -- Это сигнал, который вы принимаете от PHY IO => MDIO, -- это ваш сигнал к PHY на пине FPGA I => MDIO_I, -- Это сигнал, который вы отправляете на PHY T => T -- 3-state enable input, high=input, low=output ); У вас так? При этом чипскопом надо смотреть MDIO_O и MDIO_I. В схеме есть PULLUP резистор на пине MDIO? Можно в UCF файле в описании сигнала MDIO добавить атрибут PULLUP Например такое описание Net MDIO LOC = E9(нужный вам пин) | PULLUP; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба Все заработало! Phy начал отвечать! Всем спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться