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

Настройка трансиверов в Kintex7

Добрый день. Возникли у меня затруднения, буду рад любым подсказкам.

Имеется некое устройство с кристаллом 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."

И соответственно перенастроить трансиверы не получается.

 

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

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


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

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

 

Добрый день. Возникли у меня затруднения, буду рад любым подсказкам.

Имеется некое устройство с кристаллом 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.

 

 

 

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


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

RobFPGA спасибо. Попробую, я пытаюсь подменять сгенерированные трансиверы своими, но у них несколько разные интерфейсы и набор модулей. А вот по поводу TBI я не задумывался...

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


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

RobFPGA спасибо. Попробую, я пытаюсь подменять сгенерированные трансиверы своими, но у них несколько разные интерфейсы и набор модулей. А вот по поводу TBI я не задумывался...

 

Не нужно вам никакое TBI. Просто создаете одно ядро с QPLL, а затем остальные 3 чуть-чуть подправляете руками, чтобы тактирование было общим для всех. В приложении пример реализации 6 интерфейсов, думаю разберетесь.

sgmii_IP_example_design.v

sgmii_IP_block.v

sgmii_IP_block_no_common.v

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


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

AndreiUS, спасибо.

Со своей проблемой я разобрался примерно по вашему сценарию. Предварительно выяснил, что попытка использовать TBI, как и LVDS - не самый удачный ход.

В итоге создал два ядра для SGMII bridge и в одном из них закомментировал относящуюся к GTXE_COMMON, Ну и сигналы тактирования соответственно пробросил с оставшегося варианта ядра. Сложность в основном заключалась в том, что ISE 14,7 не дает запускать внутреннее ip core настройки трансиверов, которое создается вместе с ядром SGMII-bridge. И в том случае, если потребуется для квада трансиверов задействовать не QUAD PLL, а использовать PLL поканальные, придется эти ядра модернизировать врукопашную куда значительней.

Но в моем случае задача решена, AndreiUS, RobFPGA спасибо за участие

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


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

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

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

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

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

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

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

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

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

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