beles 0 26 января, 2009 Опубликовано 26 января, 2009 · Жалоба Необходимо сделать проет, который бы читал/записывал данные из внутренних регистров PHY, при этом использовался бы интерфейс MDC/MDIO. При подачи этих сигналов в режиме чтения физика ни как не реагирует. Сигналы формировал согласно стандарту. Тактовый сигнал менял от 25кГц до 3МГц, но реакции ни какой. Смотрел осциллографом, сигналы до физики доходят такие какие я подовал, после перехода в Z состояние и начало приема, на сигнале MDIO постоянно весит "1", т.к. на плате этот сигнал подтянут к питанию. Адрес физики использовал 0 (стандартный) и 7 (таким она хардово сконфигурирована), адрес регистра ставил любой (менял), реакции тоже ни какой. Подскажите в чем может быть проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Костян 0 26 января, 2009 Опубликовано 26 января, 2009 · Жалоба Делал. Работало. Вот Вам пример. Конфигурирование PHY на 100М линк ---------------------------------------------------------------------------------- entity mii_mem is Port ( clk : in STD_LOGIC; en : in STD_LOGIC; addr : in STD_LOGIC_VECTOR (6 downto 0); do : out STD_LOGIC ); end mii_mem; architecture Behavioral of mii_mem is type rom_type is array (0 to 127) of std_logic; signal rom : rom_type := ( --preambl '1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1', --ST '0','1', --OP CODE '0','1', --PHY ADDR '0','0','0','0','0', --REG ADDR '0','0','0','0','0', --TAR '1','0', --DATA '0','0','1','0','0','0','0','0', --DATA '0','0','0','0','0','0','0','0', --post --'1','1','1','1', --preambl '1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1', --ST '0','1', --OP CODE '0','1', --PHY ADDR '0','0','0','0','0', --REG ADDR '0','0','0','0','0', --TAR '1','0', --DATA '1','0','1','0','0','0','0','0', --DATA '0','0','0','0','0','0','0','0' --post --'1','1','1','1' ); attribute rom_style: string; attribute rom_style of rom: signal is "distributed"; begin process(clk) begin if clk'event and clk = '1' then if en = '1' then do <= rom(conv_integer(addr)); end if; end if; end process; end Behavioral; сигнал addr инкрементирутся по каждому clk Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beles 0 26 января, 2009 Опубликовано 26 января, 2009 · Жалоба Попробывал сделать как вы предложили, но конфигурировал на 10Мбит, не получилось. И зачем вы два раза подавали команду? первый на конфигурирование 100Мбит, а втрой на Reset + 100Мбит, разве после ресета все настройки физики не сбросятся? И производили ли вы чтение регистров? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cioma 0 27 января, 2009 Опубликовано 27 января, 2009 · Жалоба Какой PHY используете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beles 0 27 января, 2009 Опубликовано 27 января, 2009 · Жалоба Использую отладочную плату от Xilinx ML507, физика Marvell 88E1111, плисина Virtex5 FX70T. Так же пробывал на плате "Spartan-3E Starter Kit" с физикой SMSC LAN83C185, результат такой же, то есть реакции на команды не наблюдается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Костян 0 27 января, 2009 Опубликовано 27 января, 2009 · Жалоба Попробывал сделать как вы предложили, но конфигурировал на 10Мбит, не получилось. Если не ошибаюсь, при включении phy по умолчанию на 10Мбит настроена , если конечно Вы не подаете особую конфигурацию посредством пинов CONFIG (на плате вашей должны быть джамперы) физика Marvell 88E1111, У меня на такой же PHY работает. :laughing: И зачем вы два раза подавали команду? первый на конфигурирование 100Мбит, а втрой на Reset + 100Мбит, Честно - не помню, давно писал. Так как даташита на PHY толкового нет, то переписывал по xapp1042 (полистайте его, там так же используется Marvell 88E1111) И производили ли вы чтение регистров? нет. только запись Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beles 0 27 января, 2009 Опубликовано 27 января, 2009 · Жалоба > при включении phy по умолчанию на 10Мбит настроена при включении у физики по умолчанию вытавлен режи опрделения скорости текущего соединения, как раз с помощью конфигурационных ног, по этому и выставлял скорость 10Мбит, т.к. подключал к 100 или 1000 Мбитной сети. Все, разобрался, но не совсем. Физика реагирует на запосы подаваемые только с её адресом "00111", а на запрос с адресом "00000" не отвечает. Хотя в документации "Virtex-5 FPGA Embedded Tri-Mode Ethernet MAC User Guide.pdf" (UG194) указано следующее: The PHYAD field for an MDIO frame is a 5-bit binary value capable of addressing 32 unique addresses. However, every MDIO slave must respond to physical address 0. Почему в данном случае физика не реагирует на нулевой адре пока не понятно, буду разбираться... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cioma 0 27 января, 2009 Опубликовано 27 января, 2009 · Жалоба Может стандарт IEEE 802.3 поможет - там должно быть описание MDI. Если мне не изменяет память, то встречал один PHY, для которого нулевой адрес означал отключение от MDI, но это был точно не Marvell Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 28 января, 2009 Опубликовано 28 января, 2009 · Жалоба Подскажите в чем может быть проблема? Добавлю, может оно и напрямую не относится к делу, но! Посмотрите, сколько времени должен стоять сигнал сброс. У Микрела от этого сильно зависит, прочтется ли аппаратная зашивка... удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beles 0 2 февраля, 2009 Опубликовано 2 февраля, 2009 · Жалоба После нескольких опытов с разными PHY от MARVELL, SMSC, AMD выяснилось что ни одна из них не реагирует на запросы с нулевым адресом (PHY_addr), при этом команды формировались как с FPGA (Spartan3E, Virtex5) так и с помощью процессора. При этом если задать адрес физики. заданный с помощью конфигурационных ножек (отличный от нуля), то все работает правильно. Может быть PHY не должна отвечать на нулевой адрес, если её назначен другой адрес? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MKS 0 23 октября, 2009 Опубликовано 23 октября, 2009 · Жалоба Здравствуйте. Пытаюсь начать работать с PHY smsc 8700, по ходу возник вопрос по SMI интерфейсу програмирования. Вот прямая ссылка на описание. Там на стр. 33 приведены временные диаграмы чтения записи регистров микросхемы. На них присутствует загадочный цикл Turn Around, что это за цикл и какова его длительность нигде информации нет. Может кто то прояснить эту ситуацию ? На всякий случай прикладываю снимок экрана с диаграмой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 23 октября, 2009 Опубликовано 23 октября, 2009 · Жалоба На них присутствует загадочный цикл Turn Around, что это за цикл и какова его длительность нигде информации нет. Может кто то прояснить эту ситуацию ? На всякий случай прикладываю снимок экрана с диаграмой. Стандартно термин Turn Around означает, что буфер выхода с третьим состоянием, должен переключиться из состояния "выход" в третье состояние или буфер входа-выхода в состояние чтения. Это делается ддля того, чтобы на шине данных не было столкновения двух буферов - одного в передатчике, другого в приемнике. А время этого цикла должно быть задано явно в даташите. На самом деле, там должно быть сказано, что Ваш передатчик устанавливается в 3-е состояние, и сказано, когда последует первый достоверный принимаемый бит. Далее понятно. Это делается для всех синхронных шин, например для PCI... Удачи... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MKS 0 23 октября, 2009 Опубликовано 23 октября, 2009 · Жалоба Спасибо за разяснения, iosifk. Но тогда мне непонятно какой смысл термин turn around имеет при записи. Там ведь не происходит переключения буферов, или я что то неправильно понимаю ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 23 октября, 2009 Опубликовано 23 октября, 2009 · Жалоба Спасибо за разяснения, iosifk. Но тогда мне непонятно какой смысл термин turn around имеет при записи. Там ведь не происходит переключения буферов, или я что то неправильно понимаю ? Надо посмотреть описание шины. Я сейчас не помню тонкости. Но, тогда, в исходном состоянии передатчик должен быть отключен от шины и быть в 3-м состоянии? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Костян 0 23 октября, 2009 Опубликовано 23 октября, 2009 · Жалоба Спасибо за разяснения, iosifk. Но тогда мне непонятно какой смысл термин turn around имеет при записи. Там ведь не происходит переключения буферов, или я что то неправильно понимаю ? Теоретически никакого... иногда turn around требуется после write data, чтобы приемник подтвердил принятие данных. На практике для данного случае возможно 1. Сделано по образцу и подобию с циклом read 2. приемнику требуется некоторое время , чтобы после выставления адреса он был готов принять данные. з.ы если уж очень любопытно, тогда ковырять стандарт http://standards.ieee.org/getieee802/802.3.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться