FPGA: введение, архитектура и инструменты для программирования


С ростом популярности микроконтроллеров инженеры используют микроконтроллеры чаще, чем FPGA. Микроконтроллеры стали доминировать над FPGA из-за их низкой стоимости, хорошей поддержки, легкой доступности, большого сообщества, универсальности программирования и т. д. Но помимо этого микропроцессоры имеют некоторые ограничения, такие как набор инструкций, последовательное выполнение программ (последовательная обработка), отсутствие гибкости и возможности повторного использования и т. д. Однако FPGA может преодолеть эти ограничения, поскольку FPGA обладают возможностью параллельного выполнения программ, а также являются гибкими и многоразовыми, что означает, что их можно перепрограммировать снова и снова для различных задач.

Программирование Intel Stratix 10 FPGA

Что такое FPGA и чем она отличается от микроконтроллера

FPGA (Field-Programmable Gate Array - программируемая пользователем вентильная матрица) представляет собой кремниевую микросхему с интегральной схемой, которая имеет массив логических вентилей, и эту матрицу можно запрограммировать в полевых условиях, т. е. пользователь может перезаписать существующие конфигурации новыми определенными конфигурациями и может создать свою собственную цифровую схему не прибегая к услугам производителей микросхем. В русскоязычной литературе FPGA часто называют ПЛИСами (ПЛИС - программируемая логически интегральная схема), однако это не совсем верно. Дело в том, что FPGA является частным случаем ПЛИСа, а ПЛИС представляет собой более широкое понятие чем FPGA.

FPGA можно рассматривать как чистый лист. FPGA сами по себе ничего не делают, тогда как проектировщики должны создать файл конфигурации, который часто называют битовым файлом для FPGA. FPGA будет вести себя как цифровая схема после загрузки битового файла.

Символическое обозначение FPGA

В то время как в случае микроконтроллеров это не так, поскольку микроконтроллеры не могут быть запрограммированы или реструктурированы в полевых условиях. Пользователю не разрешается перезаписывать существующие конфигурации и создавать какие-либо цифровые схемы на месте. Микроконтроллеры представляют собой мини-компьютеры, изготовленные по индивидуальному заказу, которые выпускаются в форме интегральных схем, тогда как FPGA содержат только логические блоки, которые можно снова электрически перемонтировать. Также с точки зрения микроконтроллеров он потребляет меньше энергии, чем FPGA. Известно, что FPGA являются дорогостоящими и требуют больше затрат, чем микроконтроллер, когда дело доходит до создания любого устройства. Настройка FPGA требует значительно больше времени, в то время как микроконтроллеры доступны и готовы для конкретных приложений.

Архитектура FPGA

FPGA имеет регулярную структуру логических ячеек или модулей и взаимосвязей, которая находится под полным контролем разработчиков и проектировщиков. FPGA состоит в основном из трех основных блоков, таких как конфигурируемый логический блок (CLB), блоки ввода-вывода или площадки и матрица переключателей / соединительные провода. Кратко рассмотрим функции этих блоков:

  • CLB (Configurable Logic Block - конфигурируемый логический блок): это основные ячейки FPGA. Он состоит из одного 8-битного функционального генератора, двух 16-битных функциональных генераторов, двух регистров (триггеров или защелок) и перепрограммируемых элементов управления маршрутизацией (мультиплексоров). CLB применяются для реализации других разработанных функций и макросов. Каждый CLB имеет входы с каждой стороны, что делает их гибкими для отображения и разделения логики.
  • Площадки или блоки ввода-вывода (I/O Pads or Blocks): площадки ввода-вывода используются для внешних периферийных устройств для доступа к функциям FPGA, а с помощью панелей ввода-вывода они также могут взаимодействовать с FPGA для различных приложений, использующих разные периферийные устройства.
  • Коммутационная матрица/Соединительные провода (Switch Matrix/ Interconnection Wires): Коммутационная матрица используется в FPGA для соединения длинных и коротких соединительных проводов в гибкой комбинации. Она также содержит транзисторы для включения/выключения соединений между различными линиями.

Архитектура FPGA

Когда необходимы FPGA

Как упоминалось выше, микроконтроллеры имеют некоторые ограничения и не могут использоваться для параллельного выполнения задач, поскольку микроконтроллер и микропроцессоры работают при последовательном выполнении программ, что делает его немного медленным в некоторых приложениях. В этом сценарии FPGA имеют преимущество и могут эффективно использоваться. Также микроконтроллер может выполнять ограниченные задачи, поскольку они поставляются с инструкциями и их схемой. Программист должен соблюдать ограничения при разработке кода для микроконтроллера. Таким образом, и в этом сценарии FPGA имеют преимущество перед микроконтроллерами.

Однако в случае микроконтроллеров процессор переключается с одного кода на другой для достижения определенного уровня параллелизма. Вам будет проще писать коды на микроконтроллерах, чем на FPGA. Возможности параллельной обработки FPGA позволяют эффективно контролировать прерывания с помощью конечных автоматов (FSM).

Принцип работы конечных автоматов

В случае микроконтроллеров необходимо учитывать время, необходимое функции обработки прерывания для его обработки. Для FPGA же такой проблемы нет. Вы можете легко перемонтировать FPGA, просто перепрограммировав ее. Конфигурация FPGA загружается в конфигурируемые логические ячейки при включении питания.

Вам не нужно вносить какие-либо изменения в оборудование для перепрограммирования FPGA. FPGA подходят для высокоскоростной обработки параллельных данных и обладают высокой степенью настраиваемости. Однако они отличаются большей сложностью настройки и большим энергопотреблением по сравнению с микроконтроллерами. Таким образом, зная преимущества и недостатки FPGA, можно определить целесообразные области для их применения.

Программирование FPGA

Программирование FPGA осуществляется с помощью HDL (Hardware Description Languages - языков описания оборудования). Доступно несколько HDL, но в настоящее время наиболее широко используются VHDL и Verilog. Несмотря на то, что между HDL-кодом и языком программирования высокого уровня есть некоторое сходство, они фундаментально различны. Программные коды представляют собой последовательность операций и выполняют обработку последовательно, тогда как код HDL представляет собой схему, которая использует текст для введения компонентов и создания взаимосвязей с параллельной обработкой.

Чтобы лучше это понять, обратите внимание на разницу между шагами, связанными с потоком проектирования аппаратного и программного обеспечения в FPGA и микроконтроллерах соответственно.

Процесс проектирования аппаратного обеспечения и процесс проектирования программного обеспечения:

Процесс проектирования аппаратного обеспечения и процесс проектирования программного обеспечения

Процесс проектирования аппаратного обеспечения используется для программирования FPGA, тогда как поток проектирования программного обеспечения используется для программирования типовых микроконтроллеров и микропроцессоров. Важные этапы программирования FPGA заключаются в следующем.

  • Синтез: Первым шагом является синтез, который берет код HDL и преобразует в список соединений, который представляет собой текстовое описание принципиальной схемы.
  • Моделирование: После синтеза следующим шагом является моделирование, которое используется для проверки правильности функционирования конструкции, указанной в списке соединений.
  • Преобразование списка соединений в двоичный формат: После проверки проекта следующим этапом является преобразование списка соединений в двоичный формат. Компоненты и соединения сопоставляются с CLB, а конструкция размещается и маршрутизируется в соответствии с целевой FPGA (т. е. размещение и маршрутизация).
  • Выполнение второго моделирования: чтобы увидеть качество проекта, выполняется второе моделирование.
  • Создание битового файла: наконец, создается битовый файл для загрузки проекта в FPGA (битовый файл — это файл конфигурации, который используется для программирования всех ресурсов в FPGA).
  • Проверка и отладка. Наконец, с помощью различных инструментов проект проверяется и отлаживается во время его работы на FPGA.

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

Языки программирования FPGA и инструменты для работы с ними

Как упоминалось выше, существует несколько языков программирования и инструментов для программирования и отладки FPGA, но наиболее широко используются VHDL и Verilog. И VHDL, и Verilog хорошо зарекомендовали себя и широко поддерживают HDL. Что касается программ FPGA, нужно забыть о поведении программного кодирования и начать думать о логических элементах и ​​схемах для реализации функций, которые нужно запускать на FPGA.

VHDL/Verilog: оба языка предоставляют структуры для описания параллельного характера разработки FPGA/ASIC. Поскольку эти языки первоначально использовались для описания поведения схем до создания инструментов синтеза, они также поддерживают тестовые стенды для проверки реализуемой конструкции.

LabVIEW FPGA: LabVIEW — это графический язык, который предоставляет совершенно другой способ программирования FPGA. LabVIEW FPGA — это компиляция FPGA, использующая облачную опцию, которая значительно ускоряет время компиляции.

MATLAB: MATLAB — это язык, который может сыграть жизненно важную роль и должен быть изучен. MATLAB обычно используется для создания фильтров для обработки сигналов, разработки алгоритмов обработки изображений и практически любого другого алгоритма. Но помимо этого можно перейти от модели MATLAB к FPGA с помощью HDL-кодера. Прослеживаемость позволяет разрабатывать приложения с высокой степенью целостности с использованием этого подхода. HDL-кодер позволяет выполнять аппаратное (FPGA) циклическое тестирование и совместное моделирование, чтобы увидеть разницу между исходным алгоритмом и реализованным аппаратным алгоритмом, что помогает исследовать пространство проектирования.

Помимо этого, существуют и другие подобные инструменты, такие как MyHDL, JHDL, BSV, System Verilog, SPINAL HDL, CHISEL, C/C++/System C и т. д.

Заключение

FPGA, без сомнения, по-своему очень хороши. Начиная с параллельной обработки и заканчивая загрузкой битового файла, FPGA имеют несколько преимуществ по сравнению с типовыми микроконтроллерами, таких как скорость, возможность программирования на месте, но также имеют некоторые недостатки, такие как меньшая известность, меньшая поддержка сообщества, меньшая популярность для HPC. Первоначальный опыт работы с FPGA может оказаться немного сложноватым для новичков, но после нескольких тренировок вы наверняка ощутите удовольствие от работы с ними. Кроме того, современные FPGA представляют собой высокопроизводительные устройства, и эти FPGA могут иметь потенциальные преимущества в некоторых приложениях, требующих универсальности.

(Проголосуй первым!)
Загрузка...
78 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *