Martin Kellermann
У вас падают продажи электроники из-за отсутствия необходимых компонентов? К сожалению или к счастью вы не одиноки.
Недавно у меня было несколько бесед с производителями РЭА, которые использовали микросхемы конкурентов, такие как, например, Xilinx Spartan-6. Они столкнулись с ситуацией практически полного прекращения поставок микросхем. У всех без исключения известных им поставщиков больше нет микросхем данного семейства, а редизайн проекта на доступные ПЛИС либо приводит к использованию ПЛИС неоправданно большой емкости и соответственно стоимости, либо требует дополнительных усилий для загрузки процессора, интегрированного в микросхему, либо заставляет перейти на новую еще неизученную среду проектирования. Но даже выполнив перенос проекта на доступные ПЛИС того же производителя вы получаете всего несколько лет спокойной жизни по истечении которых очередные выбранные микросхемы также могут исчезнуть с рынка.
В такой ситуации многие производители электроники задаются вопросом как защитить будущее своих проектов и выбрать ПЛИС, которые:
- Не требует больших усилий для переноса проекта;
- будут доступны на рынке всегда.
И это тот самый случай, когда кризис может превратится в источник новых возможностей и Microchip поможет вам реализовать эти смелые мечты. Именно так поступили производители, с которыми я разговаривал. По их планам, перенос проекта на ПЛИС Микрочип займет примерно пол года. После чего немедленно начнется запуск серийного производства.
В этой статье я покажу вам дерево решений для выбора подходящей для вашего проекта ПЛИС Microchip, опишу процесс переноса проекта с точки зрения средств разработки проектов, а также остановлюсь на некоторых важных отличиях сходствах между Spartan-6 и альтернативными ПЛИС Microchip.
Решение о переходе на другую ПЛИС
Для принятия решение о переносе проекта на какую-либо другую ПЛИС, с моей точки зрения, необходимо ответить на вопросы «если да», «что тогда» и «как». Для микросхем семейства Spartan-6 некоторые варианты переноса проектов описаны, например, в блоге Адама Тейлора. У Адама есть хорошее дерево решений. Тем не менее, предложения Адама описывают миграцию проектов в пределах ПЛИС одного производителя, что не всегда является решением проблемы. Кроме того, вы получите либо FPGA с 100 000, либо 200 000 логических ячеек (Artix®-7 100T, Artix®-7 200T), поддерживаемые ISE. Или Zynq®-SoC, где вы должны описывать процесс загрузки как неотъемлемую часть запуска ПЛИС. И на этом этапе потребуется серьезная переделка проекта, переход с подхода на основе MHS-файла, к подходу, основанному на блок-диаграмме.
Альтернативное дерево решений, которое приводит вас в мир, в котором микросхемы никогда не снимаются с производства, выглядит следующим образом.
Я начну с момента принятия решения, когда вы рассматриваете возможность перехода к Microchip. В зависимости от ситуации и вашего опыта для реализации функционала устройства может подойти микроконтроллер, которого не было во время разработки исходного проекта. Я, будучи специалистом по ПЛИС, не буду углубляться в эту тему.
Следующим шагом является определение основной архитектуры. Если ваш новый дизайн требует больше логических ресурсов, чем исходный, вы можете учесть это во время миграции и выбрать микросхемы пятого поколения PolarFire/PolarFire SoC. Однако, если редизайн требуется провести срочно, так как ваша производственная линия не работает, то необходимо следовать правой ветви алгоритма и выбрать ПЛИС четвертого поколения SmartFusion2/Igloo2 с относительно небольшим запасом логики.
В проектах на ПЛИС часто используется программные процессоры, такие как MicroBlaze. Если ваш проект содержит один или, несколько таких процессоров, у вас есть выбор: использовать программный RISC-V или программный ARM Cortex-M1 для PolarFire® FPGA или использовать четыре аппаратных ядра RISC-V в PolarFire SoC. В последнем случае вы получите значительный прирост производительности, и это хороший выбор, если вы нуждаетесь в этом приросте.
Для быстрого перехода серийного изделия на чипы примерно равной логической емкости следует придерживаться правой основной ветви дерева. Кроме того, здесь у нас есть точка принятия решения о MicroBlaze в качестве программного процессора. Если в вашем проекте нет программного процессора, то стоит выбрать ПЛИС Igloo2 с трансиверами или без них, как того требует ваш проект. Если процессор необходим, вы можете воспользоваться аппаратным ARM® Cortex-M3, который есть в ПЛИС СнК SmartFusion2. В качестве дополнительного бонуса при переходе на SmartFusion2 вы получите целый ряд аппаратно выполненных периферийных блоков, которые традиционно приходится реализовывать используя логические ресурсы ПЛИС. Таким образом, вы можете выбрать кристалл с меньшей логической емкостью и тем самым улучшить свою систему по энергопотреблению и всему, что с этим связано.
О каких периферийных устройствах идет речь?
- Контроллер памяти DDR;
- SPI/I2C/UART/таймер (по два);
- CAN;
- Сторожевой таймер;
- Ethernet;
- контроллер прямого доступа к памяти;
Кроме того, микросхемы SmartFusion®2 и Igloo®2 оснащены встроенной энергонезависимой памятью (eNVM) объемом до 512 КБ, в зависимости от размера устройства.
Используя это дерево решений можно быстро выбрать, какое семейство ПЛИС стоит использовать в каждом конкретном случае. Следующим шагом является оценка усилий по переносу на это семейство. Поскольку большинство моих недавних переговоров были сосредоточены на срочных проектах, я покажу основные этапы переноса проекта на ПЛИС СнК и ПЛИС SmartFusion2 SoC или Igloo2.
Перенос проекта из Xilinx ISE в Microchip Libero SoC
Обязательным следствием перехода со Spartan-6 на любые другие ПЛИС, включая Spartan-7, является смена средства разработки проекта. Проекты для ПЛИС Spartan-6 разрабатываются в среде ISE, для Spartan-7 —Vivado®, а для ПЛИС Microchip — это Libero® SoC.
Для Spartan-6 обычно использовалась бесплатная версия ISE WebPack®, для Libero SoC эквивалентной бесплатной версией является лицензия Gold. Дистрибутив Libero SoC можно скачать по этой ссылке. Бесплатную лицензию Gold можно запросить здесь.
Хорошая новость заключается в том, что Libero SoC не слишком отличается от ISE, вы легко сориентируетесь:
На рисунке выше выше показан один и тот же проект, загруженный в Xilinx ISE и Libero SoC. Оба инструмента разработки имеют возможности управления проектами, ввода проектных данных, синтеза и моделирования. На скриншотах показаны окна иерархии проекта, которые позволяют осуществлять необходимую навигацию. Маршрут проектирования также отображается в графических интерфейсах разработчика в обеих средах разработки. И там и там возможно проектирование на языках VHDL/Verilog®, использование IP-ядер сторонних разработчиков и ввод проектных ограничений с помощью графического интерфейса.
Поскольку пользователи Spartan-6 могут быть не совсем знакомы с Libero SoC как с инструментом, мы с моим коллегой Мигелем Идиаго (Miguel Idiago) написали Python-скрипт, который помогает преобразовать проект созданный в ISE в аналогичный проект Libero SoC. Этот скрипт берет ISE *.xise-файл и создает TCL-скрипт для настройки проекта с вашими исходниками в Libero SoC. Скрипт для конвертации доступен по ссылке. Скрипт помогает с начальными шагами по переносу проекта и первичной настройке, но не выполняет полное преобразование. Сознательным ограничением сценария преобразования является то, что в результирующий проект передаются только HDL-источники. IP-компоненты имеют другой формат и должны обрабатываться на индивидуальной основе. То же самое относится и к вводу проектных ограничений.
Когда вы запустите скрипт, вы также обнаружите, что отсутствуют не только IP-компоненты, но и базовые компоненты, такие как экземпляры библиотеки Unisim®, такие как менеджеры тактирования (DCM), буферы глобальных сигналов тактирования (BUFG) или тому подобные.
Для подключения сигналов тактирования необходимая доработка довольно проста. Часто можно просто заменить компонентную реализацию BUFG компонентом CLKINT. Чтобы правильно выбрать необходимые макросы используйте Руководство пользователя библиотеки макросов для SmartFusion2/IGLOO2 и для PolarFire.
Чтобы использовать Digital Clock Manager или PLL в проекте на Spartan-6, вы обычно создавали некоторый IP-блок с использованием графического интерфейса для настройки соответствующих функций в ISE:
Для Libero SoC подход аналогичен, можно выбрать IP-блок для схемы тактирования из окна каталога:
В обоих случаях пользователь вводит проектные требования через графический интерфейс. На основании введенных данных базовые компоненты настраиваются и показывают наиболее близкие возможные значения. Когда все действия по конфигурации выполнены, создаются IP-компоненты и HDL-экземпляры для имплементации в общем проекте.
Ввод проектных ограничений
Libero SoC использует ограничения на основе SDC и допускает как текстовый, так и графический способ их создания. На рисунке ниже показан графический интерфейс редактора ограничений, который используется для создания команд SDC для ввода ограничений сигнала тактирования.