Perdaculus 0 18 июня, 2020 Опубликовано 18 июня, 2020 · Жалоба Всем привет. В очередной раз борюсь с настройкой PHY трансиверов фирмы Intel. На этот раз не могу разобраться с тактированием Backplane Ethernet 10GBASE-KR в конфигурации 10G с LinkTraining и включенным FEC. Мегафункция предлагает мне всего 4 порта с частотами:pll_ref_clk_10g - входной порт. Тут вроде все понятно, референсный клок для CMU/ATX PLLrx_recovered_clk - выходной порт. Восстановленный с помощью CDR клок из входного потока (согласно мануалу равен 257.8125 МГц вероятно потому что PMA уровень оперирует 40 битами, а не 66). И два входных порта: xgmii_tx_clk и xgmii_rx_clk. Собственно вопрос как раз про них, чем я должен запитать эти два порта? rx_recovered_clk не подходит поскольку xgmii_tx_dc принимает 64 бита данных, и соответственно частота должна быть 156,25 МГц. Пытался с помощью обычной PLL сгенерировать 156,25 МГц и запитать эти порты, результат – куча слаков между частотой PLL и внутренней частотой PHY clk33pcs. Мануалы предлагают схемы по которым сложно что-то понять: Скрытый текст Описание порта xgmii_tx_clk и xgmii_rx_clk одинаковое и противоречивое: Скрытый текст Архива с примером проекта на wiki Intel не нашел (страница есть - файлов нет). Может у кого-нибудь есть примеры с этой PHY или хотя бы какие-то мысли. Буду благодарен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 18 июня, 2020 Опубликовано 18 июня, 2020 · Жалоба pll_ref_clk_10g подаете нужный ref_clk (скорее всего 322.xxxxx или 644.xxxx). Получаете на выходе xgmii_rx_clk, скорее всего 156.xx. По рекомендации букваря, rx_clk соединяете на tx_clk. rx_recovered_clk - это восстановленый клок с RX канала. Обычно это 257.xx Забыл уточнить, что потом всю логику лучше сажать на rx_clk. Чтобы избежать слаков. 19 minutes ago, Perdachillo said: Пытался с помощью обычной PLL сгенерировать 156,25 МГц и запитать эти порты так можно сделать, если в настройках поставить галку, что сами подадите свою 156. rx_coreclkin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Perdaculus 0 18 июня, 2020 Опубликовано 18 июня, 2020 · Жалоба 37 минут назад, new123 сказал: Получаете на выходе xgmii_rx_clk, Дело в том, что я его не могу получить. Порт xgmii_rx_clk, также как и xgmii_tx_clk входной. Я должен по логике Intel что-то подать не него. Мегафункция выдает мне только один клок - rx_recovered_clk 40 минут назад, new123 сказал: поставить галку, что сами подадите свою 156. rx_coreclkin Такой галочки у Backplane Ethernet 10GBASE-KR нет, как и порта rx_coreclkin. По каким то причинам логика тактирования тут совсем ни как у обычной 10GBASE-R, Native или например Custom Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 18 июня, 2020 Опубликовано 18 июня, 2020 · Жалоба Ага, точно. Хотя в доке по ней выше, совсем другая схема. Тогда может вы 156 не так подали? Что слаки. Там написано Quote To ensure proper functioning of the PCS, the maximum PPM difference between the pll_ref_clk_10g and the xgmii_tx_clk clock inputs is 0 PPM. То есть надо сделать как на схеме. Создать pll в Integer Mode, затактировать ее от ref_clk и от нее получить 156.25 и ее подать дальше Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Perdaculus 0 18 июня, 2020 Опубликовано 18 июня, 2020 · Жалоба 5 минут назад, new123 сказал: Создать pll в Integer Mode, затактировать ее от ref_clk и от нее получить 156.25 и ее подать дальше Точно так и сделал. Все в слаках. Думаю мб еще на основе rx_recovered_clk сгенерировать 156.25 МГц и подать на эти порты. Но есть сомнения по поводу использования восстановленной частоты. Вот вы написали: 1 час назад, new123 сказал: всю логику лучше сажать на rx_clk. Чтобы избежать слаков. Не подскажете, в моменты простоя, когда данные на rx не приходят или при начальной синхронизации PHY - rx_recovered_clk ведь может пропасть? Просто если этой частотой затактировать tx часть, передатчик отвалится, если cdr не сможет клок восстановить или я что-то не понимаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 18 июня, 2020 Опубликовано 18 июня, 2020 · Жалоба 34 minutes ago, Perdachillo said: Не подскажете, в моменты простоя, когда данные на rx не приходят или при начальной синхронизации PHY - rx_recovered_clk ведь может пропасть? Просто если этой частотой затактировать tx часть, передатчик отвалится, если cdr не сможет клок восстановить или я что-то не понимаю? не =) 10G так не работает. Там всегда что то прилетатет, в PCS это все декодируется (происходит дескремблер) и на выходе имеем либо нули, либо какую то дату. То есть в PMA всегда залетают данные, от которых он и генерит 257. Есть еще уточняющий момент. Там сказано, если вы активировали 1588, то 156 подавать нельзя, только 257. Но вы это наверное прочитали уже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Perdaculus 0 18 июня, 2020 Опубликовано 18 июня, 2020 (изменено) · Жалоба 1 час назад, new123 сказал: Там сказано, если вы активировали 1588, то 156 подавать нельзя, только 257. Я видел это предложение, но как я понял оно не относится к портам xgmii_tx_clk и xgmii_rx_clk, поскольку: Скрытый текст то есть 156.25 и независит от того включен 1588 или нет. Ну я его на самом деле его и не использую. 1 час назад, new123 сказал: То есть в PMA всегда залетают данные, от которых он и генерит 257. А вот если соединены две такие одинаковые PHY и у них tx часть затактирована от восстановленной, то получается замкнутый круг. Т.е. чтобы послать данные нужно восстановить частоту, а чтобы восстановить частоту нужно чтобы кто-то послал данные) Или там механизм какой то есть для этого? Изменено 18 июня, 2020 пользователем Perdachillo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 18 июня, 2020 Опубликовано 18 июня, 2020 (изменено) · Жалоба 6 minutes ago, Perdachillo said: Или там механизм какой то есть для этого? Вот как CDR восстанавливает клок, я так глубоко не изучал =). Насколько я знаю, в PMA мало кто лазит, да и в PCS то не все лезут. Я теперь не возьмусь за KR судить, но в -R, что tx_clk, что rx_clk, он в основном тактирует FIFO (оно называется компенсационным) между PCS и user_logic, причем со стороны user logic. А сам PCS на 257 пашет. Поэтому если одинаковый tx_clk у обоих phy, то не факт что они синхронно работать будут Они же друг об друга завеститьсь должны, как они там линк подхватят, скорее всего не одновременно Изменено 18 июня, 2020 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Perdaculus 0 18 июня, 2020 Опубликовано 18 июня, 2020 (изменено) · Жалоба Только что, new123 сказал: Вот как CDR восстанавливает клок, я так глубоко не изучал =). Насколько я знаю, в PMA мало кто лазит, да и в PCS то не все лезут. Я теперь не возьмусь за KR судить, но в -R, что tx_clk, что rx_clk, он в основном тактирует FIFO (оно называется компенсационным) между PCS и user_logic, причем со стороны user logic. А сам PCS на 257 пашет. Спасибо. Странный подход у altera, делают клевый блок с помехоустойчивым кодированием, с автоматическим обменом коэффициентами эквалайзера между PHY. А толковую схему и описание добавить не могут. Информацию приходится по крупинкам собирать. На example вообще забили Изменено 18 июня, 2020 пользователем Perdachillo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 19 июня, 2020 Опубликовано 19 июня, 2020 · Жалоба 19 hours ago, Perdachillo said: Пытался с помощью обычной PLL сгенерировать 156,25 МГц и запитать эти порты, результат – куча слаков между частотой PLL и внутренней частотой PHY clk33pcs Частота clk33pcs тоже 156,25 МГц (в TimeQuest можно это глянуть)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Perdaculus 0 19 июня, 2020 Опубликовано 19 июня, 2020 · Жалоба Только что, novartis сказал: Частота clk33pcs тоже 156,25 МГц (в TimeQuest можно это глянуть)? Да ...|rx_pmas[0].rx_pma.rx_pma_deser|clk33pcs Generated 6.369 156.25 MHz ...|general[0].gpll~PLL_OUTPUT_COUNTER|divclk Generated 6.397 156.25 MHz Вот один из нескольких слаков: Скрытый текст Вот его datapath: Скрытый текст В целом, иcпользуется всего 13% логики, сам проект без слаков стабильно работал с простой 10GBASE-R PHY. Здесь либо потому что PCS переехало в soft появились слаки и нужно что то с констрейнами придумывать, либо я что то не так все таки подключаю... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 19 июня, 2020 Опубликовано 19 июня, 2020 · Жалоба 7 minutes ago, Perdachillo said: ...|rx_pmas[0].rx_pma.rx_pma_deser|clk33pcs Generated 6.369 156.25 MHz ...|general[0].gpll~PLL_OUTPUT_COUNTER|divclk Generated 6.397 156.25 MHz 6.369 и 6.397 - это периоды? Но они разные. Частоты с такими периодами равны 157.01 и 156.32 Для частоты 156.25 MHz период получается ровно 6.4 нс. Не знаю как там квартус расчет произведет конечно. И на картинке видно, что второй клок чуть уползает от первого. 6 minutes ago, novartis said: 6.369 и 6.397 - это периоды? Но они разные. Частоты с такими периодами равны 157.01 и 156.32 Для частоты 156.25 MHz период получается ровно 6.4 нс. Не знаю как там квартус расчет произведет конечно. И на картинке видно, что второй клок чуть уползает от первого. cmp_10gbase_r_phy_inst|xv_xcvr_10gbaser_nr_inst|ch[0].sv_xcvr_10gbaser_native_inst|g_fpll.altera_pll_156M~PLL_OUTPUT_COUNTER|divclk ; Generated ; 6.397 ; 156.25 MHz ; cmp_10gbase_r_phy_inst|xv_xcvr_10gbaser_nr_inst|ch[0].sv_xcvr_10gbaser_native_inst|native_inst|inst_sv_pma|rx_pma.sv_rx_pma_inst|rx_pmas[0].rx_pma.rx_pma_deser|clk33pcs ; Generated ; 6.369 ; 156.25 MHz ; Посмотрел в каком то своем старом проекте для 10gbase_r, там квартус тоже разные периоды получает. Не понятно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Perdaculus 0 19 июня, 2020 Опубликовано 19 июня, 2020 · Жалоба Только что, novartis сказал: там квартус тоже разные периоды получает Странно на самом деле. Я не обратил на это внимание. Вероятно это связано с тем, что частоты разные источники имеют. Вопрос насколько это критично Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 19 июня, 2020 Опубликовано 19 июня, 2020 · Жалоба у меня такие же периоды. И в -R, и в custom NATIVE корке. Со слаками такими проблем нет. Кстати не знал, что у -KR PCS софтовый. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Perdaculus 0 19 июня, 2020 Опубликовано 19 июня, 2020 (изменено) · Жалоба Только что, new123 сказал: Кстати не знал, что у -KR PCS софтовый. Если FEC включаешь, то становится софтовым, как я понял, поскольку FEC между PMA и PCS должен быть. Поэтому относительно большой объем ресурсов требует эта PHY в такой конфигурации Изменено 19 июня, 2020 пользователем Perdachillo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться