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

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> FPGA для работы с 10G Ethernet
DuHast
сообщение Feb 15 2017, 03:51
Сообщение #46


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Цитата(gin @ Feb 14 2017, 18:25) *
Если кому интересно... В общем в середине января приехала, купленная плата. Запустил на ней тестовый проект: прием 10G трафика и сразу же его выдача обратно без какой либо промежуточной обработки. Делал это для проверки правильности настройки тактового генератора. Настроил правильно, проект заработал - принимает и выдает обратно данные без ошибок и потерь.

Теперь делаю боевой проект, в общем то принципиальных трудностей нет, но есть некоторые вопросы:
1. Как правильно задать констрейт на xgmii_rx_clk? В принципе, так как этот клок формируется автоматически модулем 10GBASE-R, то констрейт должен генериться автоматически. Но хотелось бы описать его самому.
2. Пока не очень принципиально, но все же. Каким методом лучше рассчитывать CRC-32. Так как шина данных параллельная (64 бита), то табличный способ тут явно не пойдет. Но и не уверен,что получится напрямую на проходе сделать. В общем, может есть какие то описания, как считать CRC для Ethernet?

Заранее спасибо!

Установить Quartus 11. Сконфигурировать в MegaWizard IP блок CRC. Использовать сгенерированный блок в своём проекте, в своей версии Quartus'а
Go to the top of the page
 
+Quote Post
gin
сообщение Feb 15 2017, 14:26
Сообщение #47


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

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



Цитата(DuHast @ Feb 15 2017, 06:51) *
Установить Quartus 11. Сконфигурировать в MegaWizard IP блок CRC. Использовать сгенерированный блок в своём проекте, в своей версии Quartus'а


Спасибо! Надо будет глянуть

Кстати, по поводу констрейтов. Есть один очень неприятный момент. В принципе, когда подключается ядро 10GBASE-R, то как уже говорил, Quartus автоматически задает констрейт на xgmii clk. И честно разводит проект с учетом требований на этот клок. Но когда я подключаю к проекту SignalTap, то констрейт этот игнорируется, и разводка проекта происходит без учета ограничений по xgmii clk. В итоге требования не выполняются и работоспособность нарушается. Пол дня ломал сегодня голову, почему вдруг рабочий проект перестает работать... У меня 14 Quartus, может в поздних версиях это исправили.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Feb 15 2017, 15:04
Сообщение #48


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(gin @ Feb 15 2017, 17:26) *
Кстати, по поводу констрейтов. Есть один очень неприятный момент. В принципе, когда подключается ядро 10GBASE-R, то как уже говорил, Quartus автоматически задает констрейт на xgmii clk. И честно разводит проект с учетом требований на этот клок. Но когда я подключаю к проекту SignalTap, то констрейт этот игнорируется, и разводка проекта происходит без учета ограничений по xgmii clk. В итоге требования не выполняются и работоспособность нарушается. Пол дня ломал сегодня голову, почему вдруг рабочий проект перестает работать... У меня 14 Quartus, может в поздних версиях это исправили.

А есть уверенность, что иерархия проекта не меняется (имеется ввиду, что пути, указанные в ограничениях не меняются и названия портов/сигналов) и что ограничения именно игнорируются, а не просто не выполняются?
Go to the top of the page
 
+Quote Post
gin
сообщение Feb 15 2017, 15:32
Сообщение #49


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

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



Цитата(bogaev_roman @ Feb 15 2017, 18:04) *
А есть уверенность, что иерархия проекта не меняется (имеется ввиду, что пути, указанные в ограничениях не меняются и названия портов/сигналов) и что ограничения именно игнорируются, а не просто не выполняются?


Проект точно не меняется, так как все модули сохраняется, а логика работает (но со сбоями). Эти сбои как раз очень похожи на те, что будут происходит при не выполнении констрейтов.
Плюс к этому, когда не подключен SignalTap, то в отчете Quartus дает информацию по всем клокам, которые есть в проекте. А когда подключен, то только по одному. Поэтому я и грешу на SignalTap
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Feb 15 2017, 15:42
Сообщение #50


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(gin @ Feb 15 2017, 18:32) *
Проект точно не меняется, так как все модули сохраняется, а логика работает (но со сбоями). Эти сбои как раз очень похожи на те, что будут происходит при не выполнении констрейтов.
Плюс к этому, когда не подключен SignalTap, то в отчете Quartus дает информацию по всем клокам, которые есть в проекте. А когда подключен, то только по одному. Поэтому я и грешу на SignalTap

Очень интересная картинка, он повыкидывал вообще все клоки из анализа. Читайте отчет фиттера, на каком основании, может действительно глюк конкретной версии. Можно еще посмотреть в rtl viewer, может он эти сигналы переименовал на каком-то основании, хотя clk_ref и clk_sys не должен был трогать, если они порты.
Go to the top of the page
 
+Quote Post
novartis
сообщение Feb 15 2017, 15:54
Сообщение #51


Местный
***

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



Цитата
Quartus автоматически задает констрейт на xgmii clk

А что это значит?

Вы sdc файл создали с описанием клока clk_ref?
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Feb 15 2017, 16:12
Сообщение #52


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(novartis @ Feb 15 2017, 18:54) *
А что это значит?

Там автоматически создается sdc файл и также автоматически прикрепляется. Другое дело, что все остальные ограничения нужно описывать отдельно в другом файле и прикреплять его вручную.
ЗЫ. Извиняюсь, был неправ, для tse по крайней мере - в автоматическом режиме sdc не создается, создавал его вручную на основе примера для devboard, прикрепляется также вручную.
Go to the top of the page
 
+Quote Post
gin
сообщение Feb 16 2017, 07:25
Сообщение #53


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

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



Цитата(bogaev_roman @ Feb 15 2017, 18:42) *
Очень интересная картинка, он повыкидывал вообще все клоки из анализа. Читайте отчет фиттера, на каком основании, может действительно глюк конкретной версии. Можно еще посмотреть в rtl viewer, может он эти сигналы переименовал на каком-то основании, хотя clk_ref и clk_sys не должен был трогать, если они порты.


Я склоняюсь, что это глюк Квартуса (хотя, очень не люблю я на него грешить, так как обычно все эти "глюки" - это чаще всего наши ошибки sm.gif ). Но в любом случае, нужно писать SDC файл с констрейтами, там то он не должен ничего выкидывать.

Но честно скажу, я не мастер писать констрейты, для сгенерированных внутри клоков))
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Feb 16 2017, 07:33
Сообщение #54


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(gin @ Feb 16 2017, 10:25) *
Но честно скажу, я не мастер писать констрейты, для сгенерированных внутри клоков))

А это достаточно проделать один раз, потом все очевидно становится.Что именно непонятно?
Go to the top of the page
 
+Quote Post
novartis
сообщение Feb 16 2017, 08:00
Сообщение #55


Местный
***

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



Надо добавить в проект sdc файл:
derive_clock_uncertainty
create_clock -period "XXX MHz" -name {clk_ref} {clk_ref}
create_clock -period "YYY MHz" -name {clk_sys} {clk_sys}
derive_pll_clocks

XXX и YYY замените на ваши значения.

Строка derive_pll_clocks укажет квартусу рассчитать все выходные клоки pll, и тех pll, которые вы сами создавали, и тех pll, которые внутри IP-ядра.

Я обычно этим и ограничиваюсь.
Go to the top of the page
 
+Quote Post
gin
сообщение Feb 16 2017, 08:08
Сообщение #56


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

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



Цитата(bogaev_roman @ Feb 16 2017, 10:33) *
А это достаточно проделать один раз, потом все очевидно становится.Что именно непонятно?


Собственно не понятно, как описать xgmii_rx_clk, который формируется модулем 10GBASE-R. Какое у него реальное имя? Потому что в отчете он указан как rx_10g_inst|rx_10g_inst|xv_xcvr_10gbaser_nr_inst|ch[0].sv_xcvr_10gbaser_native_i
nst|g_fpll.altera_pll_156M~PLL_OUTPUT_COUNTER|divclk

Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Feb 16 2017, 09:05
Сообщение #57


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(gin @ Feb 16 2017, 11:08) *
Собственно не понятно, как описать xgmii_rx_clk, который формируется модулем 10GBASE-R. Какое у него реальное имя? Потому что в отчете он указан как rx_10g_inst|rx_10g_inst|xv_xcvr_10gbaser_nr_inst|ch[0].sv_xcvr_10gbaser_native_i
nst|g_fpll.altera_pll_156M~PLL_OUTPUT_COUNTER|divclk

а он является выходом pll_156... и, если Вы описали входную частоту для этой pll, то директива derive_pll_clocks сделает то, что описал novartis
Go to the top of the page
 
+Quote Post
gin
сообщение Feb 16 2017, 09:11
Сообщение #58


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

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



Цитата(bogaev_roman @ Feb 16 2017, 12:05) *
а он является выходом pll_156... и, если Вы описали входную частоту для этой pll, то директива derive_pll_clocks сделает то, что описал novartis
Помимо описаний самих частот вообще говоря потребуется еще описание временных соотношений между входными/выходными портами (все цифры указаны в документации), типа
Код
#88e1111-DS Register 20.7 = 1 Tsetup=1.2ns/Thold=1.2ns RX_CLK+90deg (page 219)
set_input_delay -clock { rx_eth_virt } -rise -max -add_delay 1.0 [get_ports {RGMII_IN[0] RGMII_IN[1] RGMII_IN[2] RGMII_IN[3] RX_CONTROL}]
set_input_delay -clock { rx_eth_virt } -fall -max -add_delay 1.0 [get_ports {RGMII_IN[0] RGMII_IN[1] RGMII_IN[2] RGMII_IN[3] RX_CONTROL}]

set_input_delay -clock { rx_eth_virt } -rise -min -add_delay -1.0 [get_ports {RGMII_IN[0] RGMII_IN[1] RGMII_IN[2] RGMII_IN[3] RX_CONTROL}]
set_input_delay -clock { rx_eth_virt } -fall -min -add_delay -1.0 [get_ports {RGMII_IN[0] RGMII_IN[1] RGMII_IN[2] RGMII_IN[3] RX_CONTROL}]

#88e1111-DS Register 20.1 = 1 Tsetup=-0.9ns/Thold=2.7ns GTX_CLK+0deg (page 218)
set_output_delay -clock { clk125_txclk } -rise -max -0.9 [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}] -add_delay
set_output_delay -clock { clk125_txclk } -fall -max -0.9 -add_delay  [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}]
set_output_delay -clock { clk125_txclk } -rise -min 2.7 [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}] -add_delay
set_output_delay -clock { clk125_txclk } -fall -min 2.7 -add_delay  [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}]


Спасибо, попробую написать нормальный SDC файл, подключить SignalTap и посмотреть как он будет выполнять констрейты
Go to the top of the page
 
+Quote Post
gin
сообщение Feb 16 2017, 11:10
Сообщение #59


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

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



Как и советовали подключил SDC файл к проекту

Код
derive_clock_uncertainty
create_clock -period "50 MHz" -name {clk_sys} {clk_sys}
create_clock -period "322.265625 MHz" -name {clk_ref} {clk_ref}
derive_pll_clocks


Теперь клоки считает нормально, осталось еще задать false path, чтоб timequest не ругался. И посмотреть как в железе работать будет

Код
80.95 MHz    80.95 MHz    pll_sys_inst|pll_sys_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk        
94.67 MHz    94.67 MHz    altera_reserved_tck        
177.43 MHz    177.43 MHz    rx_10g_inst|rx_10g_inst|xv_xcvr_10gbaser_nr_inst|ch[0].sv_xcvr_10gbaser_native_i
nst|g_fpll.altera_pll_156M~PLL_OUTPUT_COUNTER|divclk        
493.1 MHz    493.1 MHz    clk_ref        
507.36 MHz    507.36 MHz    pll_322_inst|pll_322_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk        
33333.33 MHz    700.28 MHz    clk_sys    limit due to minimum period restriction (tmin)


Сообщение отредактировал gin - Feb 16 2017, 11:12
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 22:31
Рейтинг@Mail.ru


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