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

 
 
 
Reply to this topicStart new topic
> Настройка трансиверов в Kintex7
Maggot
сообщение Nov 22 2016, 08:38
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 3-06-16
Пользователь №: 92 028



Добрый день. Возникли у меня затруднения, буду рад любым подсказкам.
Имеется некое устройство с кристаллом Xilinx Kintex7. В ПЛИС используется стандартное ядро ip core Ethernet 1000BASE-X PCS/PMA or SGMII в режиме моста GMII <-> SGMII. В состав этого ip core включена еще одна ip core для настройки трансиверов GTX. Проблема заключается в том, что когда в проекте используется одно такое ядро - все работает, проект собирается и т.д. Но мне нужно использовать 4 копии такого ядра для работы через четыре пары трансиверов, расположенных в одном кваде. И при генерации проекта с раскопированными возникает ошибка. Выглядит все так, будто каждый канал пытается синтезировать общую QUAD PLL для генерации рабочей частоты, что естественно не выходит, т.к. все каналы расположены в одном кваде.
И понятно, что для перенастройки генерации рабочей частоты с общего quad pll на раздельный channel pll нужно использовать то самое внутреннее сгенерированное ip core. И вот тут самое сложное. Для разработки используется ISE 14.7. При попытке запустить регенерацию ядра ISE выдает ошибку :
"ERROR: could not find existing IP in project SGMII_gtwizard.cgc. Core Generator regen command failed."
И соответственно перенастроить трансиверы не получается.

Буду благодарен за любую подсказку, куда копать -то :-)
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Nov 22 2016, 09:29
Сообщение #2


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

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(Maggot @ Nov 22 2016, 10:38) *
Добрый день. Возникли у меня затруднения, буду рад любым подсказкам.
Имеется некое устройство с кристаллом Xilinx Kintex7. В ПЛИС используется стандартное ядро ip core Ethernet 1000BASE-X PCS/PMA or SGMII в режиме моста GMII <-> SGMII. В состав этого ip core включена еще одна ip core для настройки трансиверов GTX. Проблема заключается в том, что когда в проекте используется одно такое ядро - все работает, проект собирается и т.д. Но мне нужно использовать 4 копии такого ядра для работы через четыре пары трансиверов, расположенных в одном кваде. И при генерации проекта с раскопированными возникает ошибка. Выглядит все так, будто каждый канал пытается синтезировать общую QUAD PLL для генерации рабочей частоты, что естественно не выходит, т.к. все каналы расположены в одном кваде.
И понятно, что для перенастройки генерации рабочей частоты с общего quad pll на раздельный channel pll нужно использовать то самое внутреннее сгенерированное ip core. И вот тут самое сложное. Для разработки используется ISE 14.7. При попытке запустить регенерацию ядра ISE выдает ошибку :
"ERROR: could not find existing IP in project SGMII_gtwizard.cgc. Core Generator regen command failed."
И соответственно перенастроить трансиверы не получается.

Буду благодарен за любую подсказку, куда копать -то :-)


Думаю что Вам надо сгенерировать 1000BASE-X PCS/PMA корку без трансиверов - то есть с интерфейсом Ten bit intrface TBI
Ну а трансиверы сгенерировать отдельно в GTX wizarde и ручками подключить (по образцу корки с трансиверами). Полюс этого варианта в независимости параметров для трансиверов - в частности частоты референс клока.

Ну или разобрать сгенеренные coregen файлы для 1000BASE-X PCS/PMA корки с трансиверами и опят же руками выделить часть с трансиверами и поправить. В принципе получится тоже что и в первом случае.

Успехов! Rob.


Go to the top of the page
 
+Quote Post
Maggot
сообщение Nov 22 2016, 09:37
Сообщение #3





Группа: Участник
Сообщений: 7
Регистрация: 3-06-16
Пользователь №: 92 028



RobFPGA спасибо. Попробую, я пытаюсь подменять сгенерированные трансиверы своими, но у них несколько разные интерфейсы и набор модулей. А вот по поводу TBI я не задумывался...
Go to the top of the page
 
+Quote Post
AndreiUS
сообщение Nov 22 2016, 15:25
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 23-12-08
Из: Тверь
Пользователь №: 42 694



Цитата(Maggot @ Nov 22 2016, 12:37) *
RobFPGA спасибо. Попробую, я пытаюсь подменять сгенерированные трансиверы своими, но у них несколько разные интерфейсы и набор модулей. А вот по поводу TBI я не задумывался...


Не нужно вам никакое TBI. Просто создаете одно ядро с QPLL, а затем остальные 3 чуть-чуть подправляете руками, чтобы тактирование было общим для всех. В приложении пример реализации 6 интерфейсов, думаю разберетесь.
Прикрепленные файлы
Прикрепленный файл  sgmii_IP_example_design.v ( 41.87 килобайт ) Кол-во скачиваний: 17
Прикрепленный файл  sgmii_IP_block.v ( 16.32 килобайт ) Кол-во скачиваний: 15
Прикрепленный файл  sgmii_IP_block_no_common.v ( 16.25 килобайт ) Кол-во скачиваний: 16
 
Go to the top of the page
 
+Quote Post
Maggot
сообщение Nov 23 2016, 05:50
Сообщение #5





Группа: Участник
Сообщений: 7
Регистрация: 3-06-16
Пользователь №: 92 028



AndreiUS, спасибо.
Со своей проблемой я разобрался примерно по вашему сценарию. Предварительно выяснил, что попытка использовать TBI, как и LVDS - не самый удачный ход.
В итоге создал два ядра для SGMII bridge и в одном из них закомментировал относящуюся к GTXE_COMMON, Ну и сигналы тактирования соответственно пробросил с оставшегося варианта ядра. Сложность в основном заключалась в том, что ISE 14,7 не дает запускать внутреннее ip core настройки трансиверов, которое создается вместе с ядром SGMII-bridge. И в том случае, если потребуется для квада трансиверов задействовать не QUAD PLL, а использовать PLL поканальные, придется эти ядра модернизировать врукопашную куда значительней.
Но в моем случае задача решена, AndreiUS, RobFPGA спасибо за участие
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:07
Рейтинг@Mail.ru


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