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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Управление PHY через MDC/MDIO, подсажите кто делал
beles
сообщение Jan 26 2009, 09:58
Сообщение #1





Группа: Новичок
Сообщений: 14
Регистрация: 10-10-06
Пользователь №: 21 187



Необходимо сделать проет, который бы читал/записывал данные из внутренних регистров PHY, при этом использовался бы интерфейс MDC/MDIO.
При подачи этих сигналов в режиме чтения физика ни как не реагирует. Сигналы формировал согласно стандарту. Тактовый сигнал менял от 25кГц до 3МГц, но реакции ни какой. Смотрел осциллографом, сигналы до физики доходят такие какие я подовал, после перехода в Z состояние и начало приема, на сигнале MDIO постоянно весит "1", т.к. на плате этот сигнал подтянут к питанию. Адрес физики использовал 0 (стандартный) и 7 (таким она хардово сконфигурирована), адрес регистра ставил любой (менял), реакции тоже ни какой.
Подскажите в чем может быть проблема?
Go to the top of the page
 
+Quote Post
Костян
сообщение Jan 26 2009, 13:26
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Делал. Работало.

Вот Вам пример. Конфигурирование 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
Go to the top of the page
 
+Quote Post
beles
сообщение Jan 26 2009, 14:49
Сообщение #3





Группа: Новичок
Сообщений: 14
Регистрация: 10-10-06
Пользователь №: 21 187



Попробывал сделать как вы предложили, но конфигурировал на 10Мбит, не получилось. И зачем вы два раза подавали команду? первый на конфигурирование 100Мбит, а втрой на Reset + 100Мбит, разве после ресета все настройки физики не сбросятся? И производили ли вы чтение регистров?
Go to the top of the page
 
+Quote Post
cioma
сообщение Jan 27 2009, 09:18
Сообщение #4


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

Группа: Свой
Сообщений: 1 226
Регистрация: 19-06-04
Из: Беларусь
Пользователь №: 65



Какой PHY используете?
Go to the top of the page
 
+Quote Post
beles
сообщение Jan 27 2009, 09:32
Сообщение #5





Группа: Новичок
Сообщений: 14
Регистрация: 10-10-06
Пользователь №: 21 187



Использую отладочную плату от Xilinx ML507, физика Marvell 88E1111, плисина Virtex5 FX70T.
Так же пробывал на плате "Spartan-3E Starter Kit" с физикой SMSC LAN83C185, результат такой же, то есть реакции на команды не наблюдается.
Go to the top of the page
 
+Quote Post
Костян
сообщение Jan 27 2009, 14:05
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Цитата(beles @ Jan 26 2009, 12:49) *
Попробывал сделать как вы предложили, но конфигурировал на 10Мбит, не получилось.

Если не ошибаюсь, при включении phy по умолчанию на 10Мбит настроена , если конечно Вы не подаете особую конфигурацию посредством пинов CONFIG (на плате вашей должны быть джамперы)

Цитата
физика Marvell 88E1111,

У меня на такой же PHY работает. laughing.gif

Цитата
И зачем вы два раза подавали команду? первый на конфигурирование 100Мбит, а втрой на Reset + 100Мбит,

Честно - не помню, давно писал. Так как даташита на PHY толкового нет, то переписывал по xapp1042 (полистайте его, там так же используется Marvell 88E1111)

Цитата
И производили ли вы чтение регистров?

нет. только запись
Go to the top of the page
 
+Quote Post
beles
сообщение Jan 27 2009, 15:19
Сообщение #7





Группа: Новичок
Сообщений: 14
Регистрация: 10-10-06
Пользователь №: 21 187



> при включении 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.
Почему в данном случае физика не реагирует на нулевой адре пока не понятно, буду разбираться...
Go to the top of the page
 
+Quote Post
cioma
сообщение Jan 27 2009, 21:37
Сообщение #8


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

Группа: Свой
Сообщений: 1 226
Регистрация: 19-06-04
Из: Беларусь
Пользователь №: 65



Может стандарт IEEE 802.3 поможет - там должно быть описание MDI. Если мне не изменяет память, то встречал один PHY, для которого нулевой адрес означал отключение от MDI, но это был точно не Marvell
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 28 2009, 06:20
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(beles @ Jan 26 2009, 12:58) *
Подскажите в чем может быть проблема?

Добавлю, может оно и напрямую не относится к делу, но!
Посмотрите, сколько времени должен стоять сигнал сброс. У Микрела от этого сильно зависит, прочтется ли аппаратная зашивка...
удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
beles
сообщение Feb 2 2009, 06:52
Сообщение #10





Группа: Новичок
Сообщений: 14
Регистрация: 10-10-06
Пользователь №: 21 187



После нескольких опытов с разными PHY от MARVELL, SMSC, AMD выяснилось что ни одна из них не реагирует на запросы с нулевым адресом (PHY_addr), при этом команды формировались как с FPGA (Spartan3E, Virtex5) так и с помощью процессора. При этом если задать адрес физики. заданный с помощью конфигурационных ножек (отличный от нуля), то все работает правильно.
Может быть PHY не должна отвечать на нулевой адрес, если её назначен другой адрес?
Go to the top of the page
 
+Quote Post
MKS
сообщение Oct 23 2009, 09:47
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 469
Регистрация: 13-03-05
Пользователь №: 3 315



Здравствуйте.
Пытаюсь начать работать с PHY smsc 8700, по ходу возник вопрос по SMI интерфейсу програмирования.
Вот прямая ссылка на описание. Там на стр. 33 приведены временные диаграмы чтения записи регистров микросхемы. На них присутствует загадочный цикл Turn Around, что это за цикл и какова его длительность нигде информации нет. Может кто то прояснить эту ситуацию ? На всякий случай прикладываю снимок экрана с диаграмой.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
iosifk
сообщение Oct 23 2009, 10:00
Сообщение #12


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(MKS @ Oct 23 2009, 13:47) *
На них присутствует загадочный цикл Turn Around, что это за цикл и какова его длительность нигде информации нет. Может кто то прояснить эту ситуацию ? На всякий случай прикладываю снимок экрана с диаграмой.


Стандартно термин Turn Around означает, что буфер выхода с третьим состоянием, должен переключиться из состояния "выход" в третье состояние или буфер входа-выхода в состояние чтения. Это делается ддля того, чтобы на шине данных не было столкновения двух буферов - одного в передатчике, другого в приемнике. А время этого цикла должно быть задано явно в даташите. На самом деле, там должно быть сказано, что Ваш передатчик устанавливается в 3-е состояние, и сказано, когда последует первый достоверный принимаемый бит.
Далее понятно. Это делается для всех синхронных шин, например для PCI...
Удачи...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
MKS
сообщение Oct 23 2009, 10:34
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 469
Регистрация: 13-03-05
Пользователь №: 3 315



Спасибо за разяснения, iosifk. Но тогда мне непонятно какой смысл термин turn around имеет при записи. Там ведь не происходит переключения буферов, или я что то неправильно понимаю ?
Go to the top of the page
 
+Quote Post
iosifk
сообщение Oct 23 2009, 10:57
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(MKS @ Oct 23 2009, 14:34) *
Спасибо за разяснения, iosifk. Но тогда мне непонятно какой смысл термин turn around имеет при записи. Там ведь не происходит переключения буферов, или я что то неправильно понимаю ?


Надо посмотреть описание шины. Я сейчас не помню тонкости. Но, тогда, в исходном состоянии передатчик должен быть отключен от шины и быть в 3-м состоянии?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Костян
сообщение Oct 23 2009, 11:11
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Цитата(MKS @ Oct 23 2009, 09:34) *
Спасибо за разяснения, iosifk. Но тогда мне непонятно какой смысл термин turn around имеет при записи. Там ведь не происходит переключения буферов, или я что то неправильно понимаю ?


Теоретически никакого... иногда turn around требуется после write data, чтобы приемник подтвердил принятие данных.


На практике для данного случае возможно

1. Сделано по образцу и подобию с циклом read

2. приемнику требуется некоторое время , чтобы после выставления адреса он был готов принять данные.

з.ы если уж очень любопытно, тогда ковырять стандарт
http://standards.ieee.org/getieee802/802.3.html
Go to the top of the page
 
+Quote Post

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

 


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


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