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

Тактирование Backplane Ethertet 10GBASE-KR PHY

Всем привет.
В очередной раз борюсь с настройкой PHY трансиверов фирмы Intel.
На этот раз не могу разобраться с тактированием Backplane Ethernet 10GBASE-KR в конфигурации 10G с LinkTraining и включенным FEC. 
Мегафункция предлагает мне всего 4 порта с частотами:
pll_ref_clk_10g - входной порт. Тут вроде все понятно, референсный клок для CMU/ATX PLL
rx_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.

Мануалы предлагают схемы  по которым сложно что-то понять:

Скрытый текст

ScreenShot184.thumb.png.6fb67014a8d66e57c44e2e911ce5c3b0.png


Описание порта xgmii_tx_clk и xgmii_rx_clk одинаковое и противоречивое:

Скрытый текст

ScreenShot185.thumb.png.3b37183e9037780fcfa3b226c62dea72.png


Архива с примером проекта на wiki Intel не нашел (страница есть - файлов нет).

Может у кого-нибудь есть примеры с этой PHY или хотя бы какие-то мысли. Буду благодарен.

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


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

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 

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


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

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

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


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

Ага, точно. Хотя в доке по ней выше, совсем другая схема.
Тогда может вы 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 и ее подать дальше

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


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

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 не сможет клок восстановить или я что-то не понимаю?

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


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

34 minutes ago, Perdachillo said:

Не подскажете, в моменты простоя, когда данные на rx не приходят или при начальной синхронизации PHY  - rx_recovered_clk ведь может пропасть? Просто если этой частотой затактировать tx часть, передатчик отвалится, если cdr не сможет клок восстановить или я что-то не понимаю?

не =) 10G так не работает. Там всегда что то прилетатет, в PCS это все декодируется (происходит дескремблер) и на выходе имеем либо нули, либо какую то дату. То есть в PMA всегда залетают данные, от которых он и генерит 257.

Есть еще уточняющий момент. Там сказано, если вы активировали 1588, то 156 подавать нельзя, только 257. Но вы это наверное прочитали уже.

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


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

1 час назад, new123 сказал:

Там сказано, если вы активировали 1588, то 156 подавать нельзя, только 257.

Я видел это предложение, но как я понял оно не относится к портам xgmii_tx_clk и xgmii_rx_clk, поскольку:

Скрытый текст

ScreenShot185.thumb.png.3b37183e9037780fcfa3b226c62dea72.png

то есть 156.25 и независит от того включен 1588 или нет.
Ну я его на самом деле его и не использую.

1 час назад, new123 сказал:

То есть в PMA всегда залетают данные, от которых он и генерит 257.

А вот если соединены две такие одинаковые PHY и у них tx часть затактирована от восстановленной, то получается замкнутый круг. Т.е. чтобы послать данные нужно восстановить частоту, а чтобы восстановить частоту нужно чтобы кто-то послал данные)
Или там механизм какой то есть для этого? 

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

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


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

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, то не факт что они синхронно работать будут

Они же друг об друга завеститьсь должны, как они там линк подхватят, скорее всего не одновременно

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

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


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

Только что, new123 сказал:

Вот как CDR восстанавливает клок, я так глубоко не изучал =). Насколько я знаю, в PMA мало кто лазит, да и в PCS то не все лезут.
Я теперь не возьмусь за KR судить, но в -R, что tx_clk, что rx_clk, он в основном тактирует FIFO (оно называется компенсационным) между PCS и user_logic, причем со стороны user logic. А сам PCS на 257 пашет.

Спасибо.
Странный подход у altera, делают клевый блок с помехоустойчивым кодированием, с автоматическим обменом коэффициентами эквалайзера между PHY.
А толковую схему и описание добавить не могут. Информацию приходится по крупинкам собирать. На example вообще забили

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

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


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

19 hours ago, Perdachillo said:

Пытался с помощью обычной PLL сгенерировать 156,25 МГц и запитать эти порты, результат – куча слаков между частотой PLL и внутренней частотой PHY clk33pcs

Частота clk33pcs тоже 156,25 МГц (в TimeQuest можно это глянуть)?

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


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

Только что, 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

Вот один из нескольких слаков:

Скрытый текст

ScreenShot187.thumb.png.ed082888d9bc6d387863df8df38d4caf.png

Вот его datapath:

Скрытый текст

ScreenShot188.thumb.png.e85819f2b1e83841c13ef7404c1e09e7.png

В целом, иcпользуется всего 13% логики, сам проект без слаков стабильно работал с простой 10GBASE-R PHY. Здесь либо потому что PCS переехало в soft появились слаки и нужно что то с констрейнами придумывать, либо я что то не так все таки подключаю...

 

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


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

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, там квартус тоже разные периоды получает. Не понятно:dash2:

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


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

Только что, novartis сказал:

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

Странно на самом деле. Я не обратил на это внимание.
Вероятно это связано с тем, что частоты разные источники имеют. Вопрос насколько это критично

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


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

у меня такие же периоды. И в -R, и в custom NATIVE корке. Со слаками такими проблем нет. Кстати не знал, что у -KR PCS софтовый.

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


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

Только что, new123 сказал:

Кстати не знал, что у -KR PCS софтовый.

Если FEC включаешь, то становится софтовым, как я понял, поскольку FEC между PMA и PCS должен быть.
Поэтому относительно большой объем ресурсов требует эта PHY в такой конфигурации
 

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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