Перейти к содержанию
    

Применение Tri Mode Ethernet MAC в Xilinx

Подскажите, пожалуйста, у кого есть удачный опыт применения данного IP. 

Использую его в режиме 1 Gb с внешней шиной RGMII. Снаружи на плате стоит внешний PHY-чип, который позволяет запускать встроенный генератор пакетов в сторону МАС, а также реализовывать loopback. С приемом пакетов от генератора, вроде бы, все нормально. А вот когда я посылаю пакет по RGMII и принимаю его обратно, начинаются проблемы, на каком-то этапе сигнал явно не так тактируется. Т.е. я, к примеру, посылаю пакет 0х01 0х02 0х30 0х40 0х05 0х06, а получаю 0х01 0х02 0х00 0х00 0х05 0х06. Поскольку в RGMII сигнал тактируется обоими фронтами клока по 4 бита, тут явно ситуация, когда один фронт не попадает в данные.

Само ядро в плане тактовых сигналов не особо сложное - если в настройках указать "include shared logic in Core", то на вход достаточно подать 125 МГц и 200 МГЦ для блоков idelayctrl. Правда, потом нашел в описании фразу: "HR I/O do not include ODELAY components and another method is required to introduce the required 2 ns offset between the clock and data". У меня как раз используются HR-пины, т.е., насколько я понял, надо самому на MMCM делать 2 частоты 125 МГц, смещенные на 90 градусов друг относительно друга, и подавать их на ядро. Реализовал такую схему, но эффекта никакого - выходные данные RGMII тактируются некорректно.

Заранее спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 У меня альтера. Корки не стал пользовать, сам написал RGMII с PHY чипом. Было несколько нюансов:
1) Протащить через altera ddio и данные и управляющий сигнал (TX_EN) на чип вместе.
2) Сдвинуть обязательно тактовый клок для PHY на 90 градусов. Чтобы точно рассинхрона не было.
3) ну на всякий случай, чтобы точно слаков не было, иначе подобная каша лезла

Еще кстати сам PHY чип же может сдвигать на 90 градусов. Надо его даташит глянуть. Там настроечные дефолтные регистры

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 часов назад, new123 сказал:

2) Сдвинуть обязательно тактовый клок для PHY на 90 градусов. Чтобы точно рассинхрона не было.

скорей всего именно это и нужно сделать. Хотя, можно клок не сдвигать, а записать в один из регистров PHY, чтобы тот сам клок двигал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, gin said:

скорей всего именно это и нужно сделать. Хотя, можно клок не сдвигать, а записать в один из регистров PHY, чтобы тот сам клок двигал.

Я пробовал и так, и так. Даже если не сдвигать вручную, в ядре есть настройка "include shared logic in Core", и в этом случае ядро само делает сдвинутый на 90 градусов клок. Я посмотрел схематику implemented design - там все корректно. Внутри ядра имплементируется MMCM, несдвинутый клок используется для всей логики ядра, а также выдается наружу в качестве tx_clk, чтобы тактировать этим клоком всю пользовательскую логику, относящуюся к TX. А сдвинутый на 90 клок из этого внутреннего ММСМ выдается на тактовую линию rgmii_txc, чтобы внешний PHY мог ее использовать для тактирования линий данных rgmii_txd[3:0] и rgmii_tx_ctl. И в регистры PHY я прописываю, чтобы он брал этот клок для тактирования и не добавлял от себя дополнительной задержки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 hours ago, new123 said:

 У меня альтера. Корки не стал пользовать, сам написал RGMII с PHY чипом. Было несколько нюансов:
1) Протащить через altera ddio и данные и управляющий сигнал (TX_EN) на чип вместе.

 

А пример констрейна для этого можете прислать? Остальное, что вы написали, я, вроде бы, учел. Слэков нет, но что-то плывёт :) Сейчас еще посмотрел в example_design ядра - там пины для всей шины rgmii обозначены с IOSTANDARD HSTL_I_18. Может быть, этот High Speed имеет значение...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, gin said:

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

для моего Marvell не было описания, пришлось самому двигать

1 hour ago, Winger11 said:

А пример констрейна для этого можете прислать?

на тот момент, когда я это делал, я плохо понимал что это. И ничего не описывал.

Слизал только со статьи этот момент. Что это желательная обязаловка (протащить и дату и tx_en через одну шину ddio). И при нагрузке стало ровнее.
Месяца 4 назад я посвятил себя констрейнам в моем мега проекте =))), описал только все частоты и логи через гигабитный езернет вообще стали работать при любой нагрузке без всяких проблем.

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/27/2019 at 8:19 PM, Winger11 said:

Подскажите, пожалуйста, у кого есть удачный опыт применения данного IP. 

У меня есть опыт! Я применял! Ксилинксовский MAC гигабит, гнали жирный поток данных с устройства на сервер, обратно получали тонкую струйку управления. MAC сидел на шине axi под microblaze, он жрал данные от DMA, тоже с корегена. Потом, году в 2016-2017, перешли на ком-блок, который сами же и допиливаем под свои нужды, comblock.com. Если надо подробности - в понедельник на работе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...