|
|
  |
FPGA для работы с 10G Ethernet |
|
|
|
Dec 16 2016, 07:52
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682

|
Цитата(AVR @ Dec 16 2016, 10:44)  Прошу прощения, не понял о каком блоке идет речь? Исходя из моего скромного понимания, частота в линии может быть произвольной и даже меняться со временем (от температуры например), поэтому к ней надо подстраиваться (реклокинг). Основная системная частота должна оставаться относительно стабильной. Меня вот эта книжка по этой тематике порадовала: http://www.xilinx.com/publications/archive...ks/serialio.pdfУ Альтеровского IP 10GBASE-R PHY есть два клока: 1. xgmii_rx_clk - судя по всему это клок, по фронту которого выдаются данные. Как я понимаю, он восстанавливается из входного 10G сигнала. 2. pll_ref_clk - еще один клоковый вход. Вот не очень понимаю для чего он
|
|
|
|
|
Dec 16 2016, 08:28
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682

|
Цитата(AVR @ Dec 16 2016, 11:24)  Судя по доке, второй вроде как основной (ведь есть не только прием но и передача - а там от чего референситься?). Первый - вообще другой частоты и там написано что его можно использовать чтобы минимизировать размеры FIFO, а то при некотором расхождении частот видимо может много набежать в фифошку. Ну это мои предположения, наверное мне не стоило комментировать в теме...  Сейчас разбираюсь с документацией по этому вопросу, как я понял, он необходим для работы сериализаторов, и там только 2 варианта. Из User Guide: For Arria V and Stratix V devices, the TX PLL reference clock can be either 644.53125 MHz or 322.265625 MHz
|
|
|
|
|
Dec 16 2016, 09:06
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682

|
Цитата(novartis @ Dec 16 2016, 11:48)  1. Если этот аппартаный блок восстанавливает частоту, то зачем нужно его тактировать внешним клоком с той же номинальной частотой? RX часть восстанавливает клок из входных данных. TX часть работает на своей (по значению такой же) частоте, ей нужно подать референс клок.
2. Управляющие сигналы (8 бит). Показывают ли они, что принятые байты - это данные либо управляющие символы Ethernet, такие как - Idle, Start, Terminate, Error. Или они означают что то иное? Это они и означают, в IEEE 802.3 clause 49 расписана табличка 49-1 - Control codes Спасибо! То есть я правильно понимаю, что если я использую только принимающую часть (ставлю параметр rx_only), то референс клок вообще не нужен? Что в таком случае нужно подавать на порт pll_ref_clk?
Сообщение отредактировал gin - Dec 16 2016, 09:08
|
|
|
|
|
Dec 16 2016, 09:32
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682

|
Цитата(novartis @ Dec 16 2016, 12:16)  Это конечно логично, но вот при настройке в визарде этой корки при выборе rx_only сигнал pll_ref_clk не исчезает. К тому же в xcvr_user_guide.pdf есть такая картинка:
То есть реф клок все таки в приемной части у них задейстован ( в их реализации pcs) Вот пытаюсь собрать в Quartus элементарную схему. Прием 10G -> Передача 10G без всякой обработки. Для приемника и передатчика использую корку 10GBASE-R PHY. Приемник имеет параметр rx_only, передатчик tx_only соответственно. Есть pll, который задает реф клок 322,265625 для передатчика. Но Quartus отказывается это собирать. Причем ругается именно на приемник. Код Error (14996): The Fitter failed to find a legal placement for all periphery components Error (14986): After placing as many components as possible, the following errors remain: Error (175001): Could not place HSSI PMA CDR REFCLK Select Mux, which is within 10GBASE-R PHY rx_10GBASE_R_PHY Info (14596): Information about the failing component: Info (175028): The HSSI PMA CDR REFCLK Select Mux name: rx_10GBASE_R_PHY:rx_10GBASE_R_PHY_inst|altera_xcvr_10gbaser:rx_10gbase_r_phy_ins t|sv_xcvr_10gbaser_nr:xv_xcvr_10gbaser_nr_inst|sv_xcvr_10gbaser_native:ch[0].sv_x cvr_10gbaser_native_inst|sv_xcvr_native:native_inst|sv_pma:inst_sv_pma|sv_rx_pma: rx_pma.sv_rx_pma_inst|rx_pmas[0].rx_pma.cdr_refclk_mux0 Info (14597): No legal location could be found for this component out of 54 considered location(s). Reasons why each location could not be used are summarized below: Error (175006): Could not find path between source fractional PLL and the Receiver channel Info (175026): Source: fractional PLL rx_10GBASE_R_PHY:rx_10GBASE_R_PHY_inst|altera_xcvr_10gbaser:rx_10gbase_r_phy_ins t|sv_xcvr_10gbaser_nr:xv_xcvr_10gbaser_nr_inst|sv_xcvr_10gbaser_native:ch[0].sv_x cvr_10gbaser_native_inst|g_fpll.altera_pll_156M~FRACTIONAL_PLL Info (175021): The fractional PLL was placed in location FRACTIONALPLL_X0_Y55_N0 Error (175022): The Receiver channel could not be placed in any location to satisfy its connectivity requirements Info (175029): 18 locations affected Info (175029): Receiver channel containing PIN_AV2 Info (175029): Receiver channel containing PIN_AT2 Info (175029): Receiver channel containing PIN_AP2 Info (175029): Receiver channel containing PIN_AM2 Info (175029): Receiver channel containing PIN_AK2 Info (175029): Receiver channel containing PIN_AH2 Info (175029): Receiver channel containing PIN_AF2 Info (175029): Receiver channel containing PIN_AD2 Info (175029): Receiver channel containing PIN_AB2 Info (175029): Receiver channel containing PIN_Y2 Info (175029): Receiver channel containing PIN_V2 Info (175029): Receiver channel containing PIN_T2 Info (175029): and 6 more locations not displayed Error (175003): The I/O pad location is occupied (18 locations affected) Info (175029): PIN_D39 Info (175029): PIN_F39 Info (175029): PIN_H39 Info (175029): PIN_K39 Info (175029): PIN_M39 Info (175029): PIN_P39 Info (175029): PIN_T39 Info (175029): PIN_V39 Info (175029): PIN_Y39 Info (175029): PIN_AB39 Info (175029): PIN_AD39 Info (175029): PIN_AF39 Info (175029): and 6 more locations not displayed Error (175007): Could not find uncongested path between source PLL output counter and the HSSI PMA CDR REFCLK Select Mux Info (175026): Source: PLL output counter rx_10GBASE_R_PHY:rx_10GBASE_R_PHY_inst|altera_xcvr_10gbaser:rx_10gbase_r_phy_ins t|sv_xcvr_10gbaser_nr:xv_xcvr_10gbaser_nr_inst|sv_xcvr_10gbaser_native:ch[0].sv_x cvr_10gbaser_native_inst|g_fpll.altera_pll_156M~PLL_OUTPUT_COUNTER Info (175021): The PLL output counter was placed in location PLLOUTPUTCOUNTER_X0_Y52_N1 Error (175022): The HSSI PMA CDR REFCLK Select Mux could not be placed in any location to satisfy its connectivity requirements Info (175029): 18 locations affected Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y14_N39 Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y18_N39 Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y22_N39 Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y26_N39 Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y30_N39 Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y34_N39 Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y38_N39 Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y42_N39 Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y46_N39 Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y50_N39 Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y54_N39 Info (175029): HSSIPMACDRREFCLKSELECTMUX_X0_Y58_N39 Info (175029): and 6 more locations not displayed И как я понимаю, основная проблема как раз этот самый реф клок для приемника
Сообщение отредактировал gin - Dec 16 2016, 09:30
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 16 2016, 09:42
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682

|
Цитата(novartis @ Dec 16 2016, 12:37)  к pll_ref_clk особое отношение. нельзя просто так взять и на него подать сигнал из логики ПЛИС. Нужно подать тот же pll_ref_clk, что и на tx идет. Но возможно такое не прокатит, будет что нибудь писать типа не могу разместить несколько HSSI в одном триплете.
а зачем вам такая реализация? Сгенерите один 10GBASE-R, выход rx подайте на вход tx. подавал клок с того же pll на tx и на rx. Тоже выдает ошибку. Тем более в будущем проекте у меня должно быть несколько модулей rx и только один tx. И эти rx будут независимы друг от друга и от tx. Пока не понимаю как это реализовать. Да и вообще может быть такой вариант, что tx нет, например данные будут на PCI уходить. Как в таком случае быть?
Сообщение отредактировал gin - Dec 16 2016, 09:44
|
|
|
|
|
Dec 16 2016, 09:53
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682

|
Цитата(novartis @ Dec 16 2016, 12:47)  У корки можно указать, сколько каналов будет. Например укажите 5 каналов. Заведете один pll_ref_clk, будет у вас 5 rx, 5 tx. Не нужны tx - тогда ставьте опцию rx_only, но реф клок все равно подавать надо.
Если надо 5 rx, 1 tx, то создаете 5 rx, 5 tx (4 не используете). Но ведь у всех этих rx разные источники. И восстановленные клоки xgmii_rx_clk должны быть разные. А он создает только один клок для любого количества каналов. В общем что то я недопонимаю
|
|
|
|
|
Dec 16 2016, 09:59
|

Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845

|
xgmii_rx_clk у них у всех одинаковые, получены из pll_ref_clock. В pcs каждого канала данные приходят на своей собственной восстановленной частоте rx_pma_clk (конкретно на этом рисунке 257.8125МГц). Внутри pcs производится переход с частоты rx_pma_clk на частоту xgmii_rx_clk, наверно с помощью фифо.
|
|
|
|
|
Dec 16 2016, 11:23
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682

|
Цитата(novartis @ Dec 16 2016, 12:59) 
xgmii_rx_clk у них у всех одинаковые, получены из pll_ref_clock. В pcs каждого канала данные приходят на своей собственной восстановленной частоте rx_pma_clk (конкретно на этом рисунке 257.8125МГц). Внутри pcs производится переход с частоты rx_pma_clk на частоту xgmii_rx_clk, наверно с помощью фифо. Спасибо за помощь! Сейчас попробую создать полную версию (rx и tx) может там заработает Удалил PLL, завел реф клок извне и собралось все без ошибок. Видимо какая то проблема в неправильных настройках PLL
Эскизы прикрепленных изображений
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|