maggot 0 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба Добрый день. Возникли у меня затруднения, буду рад любым подсказкам. Имеется некое устройство с кристаллом 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." И соответственно перенастроить трансиверы не получается. Буду благодарен за любую подсказку, куда копать -то :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба Приветствую! Добрый день. Возникли у меня затруднения, буду рад любым подсказкам. Имеется некое устройство с кристаллом 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maggot 0 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба RobFPGA спасибо. Попробую, я пытаюсь подменять сгенерированные трансиверы своими, но у них несколько разные интерфейсы и набор модулей. А вот по поводу TBI я не задумывался... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
10ff 0 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба RobFPGA спасибо. Попробую, я пытаюсь подменять сгенерированные трансиверы своими, но у них несколько разные интерфейсы и набор модулей. А вот по поводу TBI я не задумывался... Не нужно вам никакое TBI. Просто создаете одно ядро с QPLL, а затем остальные 3 чуть-чуть подправляете руками, чтобы тактирование было общим для всех. В приложении пример реализации 6 интерфейсов, думаю разберетесь. sgmii_IP_example_design.v sgmii_IP_block.v sgmii_IP_block_no_common.v Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maggot 0 23 ноября, 2016 Опубликовано 23 ноября, 2016 · Жалоба AndreiUS, спасибо. Со своей проблемой я разобрался примерно по вашему сценарию. Предварительно выяснил, что попытка использовать TBI, как и LVDS - не самый удачный ход. В итоге создал два ядра для SGMII bridge и в одном из них закомментировал относящуюся к GTXE_COMMON, Ну и сигналы тактирования соответственно пробросил с оставшегося варианта ядра. Сложность в основном заключалась в том, что ISE 14,7 не дает запускать внутреннее ip core настройки трансиверов, которое создается вместе с ядром SGMII-bridge. И в том случае, если потребуется для квада трансиверов задействовать не QUAD PLL, а использовать PLL поканальные, придется эти ядра модернизировать врукопашную куда значительней. Но в моем случае задача решена, AndreiUS, RobFPGA спасибо за участие Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться