Winger11 0 27 марта, 2019 Опубликовано 27 марта, 2019 · Жалоба Подскажите, пожалуйста, у кого есть удачный опыт применения данного 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 тактируются некорректно. Заранее спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 27 марта, 2019 Опубликовано 27 марта, 2019 (изменено) · Жалоба У меня альтера. Корки не стал пользовать, сам написал RGMII с PHY чипом. Было несколько нюансов: 1) Протащить через altera ddio и данные и управляющий сигнал (TX_EN) на чип вместе. 2) Сдвинуть обязательно тактовый клок для PHY на 90 градусов. Чтобы точно рассинхрона не было. 3) ну на всякий случай, чтобы точно слаков не было, иначе подобная каша лезла Еще кстати сам PHY чип же может сдвигать на 90 градусов. Надо его даташит глянуть. Там настроечные дефолтные регистры Изменено 27 марта, 2019 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gin 0 28 марта, 2019 Опубликовано 28 марта, 2019 · Жалоба 16 часов назад, new123 сказал: 2) Сдвинуть обязательно тактовый клок для PHY на 90 градусов. Чтобы точно рассинхрона не было. скорей всего именно это и нужно сделать. Хотя, можно клок не сдвигать, а записать в один из регистров PHY, чтобы тот сам клок двигал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Winger11 0 28 марта, 2019 Опубликовано 28 марта, 2019 · Жалоба 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 я прописываю, чтобы он брал этот клок для тактирования и не добавлял от себя дополнительной задержки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Winger11 0 28 марта, 2019 Опубликовано 28 марта, 2019 · Жалоба 19 hours ago, new123 said: У меня альтера. Корки не стал пользовать, сам написал RGMII с PHY чипом. Было несколько нюансов: 1) Протащить через altera ddio и данные и управляющий сигнал (TX_EN) на чип вместе. А пример констрейна для этого можете прислать? Остальное, что вы написали, я, вроде бы, учел. Слэков нет, но что-то плывёт :) Сейчас еще посмотрел в example_design ядра - там пины для всей шины rgmii обозначены с IOSTANDARD HSTL_I_18. Может быть, этот High Speed имеет значение... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 28 марта, 2019 Опубликовано 28 марта, 2019 (изменено) · Жалоба 4 hours ago, gin said: а записать в один из регистров PHY, чтобы тот сам клок двигал. для моего Marvell не было описания, пришлось самому двигать 1 hour ago, Winger11 said: А пример констрейна для этого можете прислать? на тот момент, когда я это делал, я плохо понимал что это. И ничего не описывал. Слизал только со статьи этот момент. Что это желательная обязаловка (протащить и дату и tx_en через одну шину ddio). И при нагрузке стало ровнее. Месяца 4 назад я посвятил себя констрейнам в моем мега проекте =))), описал только все частоты и логи через гигабитный езернет вообще стали работать при любой нагрузке без всяких проблем. Изменено 28 марта, 2019 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
druzhin 7 13 апреля, 2019 Опубликовано 13 апреля, 2019 · Жалоба On 3/27/2019 at 8:19 PM, Winger11 said: Подскажите, пожалуйста, у кого есть удачный опыт применения данного IP. У меня есть опыт! Я применял! Ксилинксовский MAC гигабит, гнали жирный поток данных с устройства на сервер, обратно получали тонкую струйку управления. MAC сидел на шине axi под microblaze, он жрал данные от DMA, тоже с корегена. Потом, году в 2016-2017, перешли на ком-блок, который сами же и допиливаем под свои нужды, comblock.com. Если надо подробности - в понедельник на работе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться