Jump to content
    

Применение 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 тактируются некорректно.

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

Share this post


Link to post
Share on other sites

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

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

Edited by new123

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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 я прописываю, чтобы он брал этот клок для тактирования и не добавлял от себя дополнительной задержки.

Share this post


Link to post
Share on other sites

19 hours ago, new123 said:

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

 

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

Share this post


Link to post
Share on other sites

4 hours ago, gin said:

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

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

1 hour ago, Winger11 said:

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

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

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

Edited by new123

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...