реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> FPGA для работы с 10G Ethernet
gin
сообщение Dec 16 2016, 07:52
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 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 - еще один клоковый вход. Вот не очень понимаю для чего он
Go to the top of the page
 
+Quote Post
AVR
сообщение Dec 16 2016, 08:24
Сообщение #17


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(gin @ Dec 16 2016, 10:52) *
У Альтеровского IP 10GBASE-R PHY есть два клока:
1. xgmii_rx_clk - судя по всему это клок, по фронту которого выдаются данные. Как я понимаю, он восстанавливается из входного 10G сигнала.
2. pll_ref_clk - еще один клоковый вход. Вот не очень понимаю для чего он

Судя по доке, второй вроде как основной (ведь есть не только прием но и передача - а там от чего референситься?).
Первый - вообще другой частоты и там написано что его можно использовать чтобы минимизировать размеры FIFO, а то при некотором расхождении частот видимо может много набежать в фифошку. Ну это мои предположения, наверное мне не стоило комментировать в теме... sm.gif


--------------------
Go to the top of the page
 
+Quote Post
gin
сообщение Dec 16 2016, 08:28
Сообщение #18


Частый гость
**

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



Цитата(AVR @ Dec 16 2016, 11:24) *
Судя по доке, второй вроде как основной (ведь есть не только прием но и передача - а там от чего референситься?).
Первый - вообще другой частоты и там написано что его можно использовать чтобы минимизировать размеры FIFO, а то при некотором расхождении частот видимо может много набежать в фифошку. Ну это мои предположения, наверное мне не стоило комментировать в теме... sm.gif



Сейчас разбираюсь с документацией по этому вопросу, как я понял, он необходим для работы сериализаторов, и там только 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
Go to the top of the page
 
+Quote Post
novartis
сообщение Dec 16 2016, 08:48
Сообщение #19


Местный
***

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



1. Если этот аппартаный блок восстанавливает частоту, то зачем нужно его тактировать внешним клоком с той же номинальной частотой?
RX часть восстанавливает клок из входных данных.
TX часть работает на своей (по значению такой же) частоте, ей нужно подать референс клок.

2. Управляющие сигналы (8 бит). Показывают ли они, что принятые байты - это данные либо управляющие символы Ethernet, такие как - Idle, Start, Terminate, Error. Или они означают что то иное?
Это они и означают, в IEEE 802.3 clause 49 расписана табличка 49-1 - Control codes
Go to the top of the page
 
+Quote Post
gin
сообщение Dec 16 2016, 09:06
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
novartis
сообщение Dec 16 2016, 09:16
Сообщение #21


Местный
***

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



Это конечно логично, но вот при настройке в визарде этой корки при выборе rx_only сигнал pll_ref_clk не исчезает. К тому же в xcvr_user_guide.pdf есть такая картинка:

Прикрепленное изображение


То есть реф клок все таки в приемной части у них задейстован ( в их реализации pcs)
Go to the top of the page
 
+Quote Post
gin
сообщение Dec 16 2016, 09:32
Сообщение #22


Частый гость
**

Группа: Участник
Сообщений: 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
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
novartis
сообщение Dec 16 2016, 09:37
Сообщение #23


Местный
***

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



к pll_ref_clk особое отношение. нельзя просто так взять и на него подать сигнал из логики ПЛИС.
Нужно подать тот же pll_ref_clk, что и на tx идет. Но возможно такое не прокатит, будет что нибудь писать типа не могу разместить несколько HSSI в одном триплете.

а зачем вам такая реализация?
Сгенерите один 10GBASE-R, выход rx подайте на вход tx.



Go to the top of the page
 
+Quote Post
gin
сообщение Dec 16 2016, 09:42
Сообщение #24


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
novartis
сообщение Dec 16 2016, 09:47
Сообщение #25


Местный
***

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



У корки можно указать, сколько каналов будет. Например укажите 5 каналов. Заведете один pll_ref_clk, будет у вас 5 rx, 5 tx.
Не нужны tx - тогда ставьте опцию rx_only, но реф клок все равно подавать надо.

Если надо 5 rx, 1 tx, то создаете 5 rx, 5 tx (4 не используете).
Go to the top of the page
 
+Quote Post
gin
сообщение Dec 16 2016, 09:53
Сообщение #26


Частый гость
**

Группа: Участник
Сообщений: 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 должны быть разные. А он создает только один клок для любого количества каналов. В общем что то я недопонимаю
Go to the top of the page
 
+Quote Post
novartis
сообщение Dec 16 2016, 09:59
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 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, наверно с помощью фифо.
Go to the top of the page
 
+Quote Post
gin
сообщение Dec 16 2016, 11:23
Сообщение #28


Частый гость
**

Группа: Участник
Сообщений: 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
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
gin
сообщение Dec 16 2016, 14:34
Сообщение #29


Частый гость
**

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



Скачал с AlteraWiki архив с проектом, где используется ядро 10GBASE-R PHY. И там действительно для формирования сигнала не используется PLL. Сигнал заводится снаружи. Как то странно зачем гнать извне высокочастотный клок (322 или 644 МГц)? Неужели нельзя умножить внутри, или PLL вносит слишком большие искажения?
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Dec 16 2016, 14:47
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



После пролистывания темы: предлагаю автору начать с 1G на обычном SFP. Многое станет понятно, потом и на 10G можно переходить.

Запускать это все оптимально на отладочной плате, на них на всех почти слоты под SFP устанавливают.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 18:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01538 секунд с 7
ELECTRONIX ©2004-2016