Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Встроенный

Языки реализации FPGA: от VHDL и Verilog к высокоуровневому C/C++

Языки реализации FPGA: от VHDL и Verilog к высокоуровневому C/C++Примечание редактора: Продвинутые алгоритмы в умных продуктах требуют встраиваемых систем, способных справляться с тяжёлыми вычислительными нагрузками. FPGA обеспечивают нужную производительность, но многие разработчики считают FPGA-дизайн доменом специалистов. Современное железо в связке с мощными средами разработки демократизировало FPGA-программирование. Этот отрывок из Главы 4 книги «Architecting High-Performance Embedded Systems» даёт исчерпывающий обзор FPGA-устройств, языков их реализации и процесса разработки, завершаясь практическим руководством по началу построения собственных FPGA-дизайнов.
1: Аппаратные ресурсы
2: Языки реализации (эста статья)
3: Процесс разработки
4: Построение проекта
5: Реализация

Адаптировано из «Architecting High-Performance Embedded Systems», автор Jim Ledin.


Языки реализации FPGA

Проектирование для FPGA в конечном счёте сводится к выбору одного или нескольких высокоуровневых, HDL-подобных языков для описания поведения устройства.

Традиционные выборы — VHDL и Verilog. Современные тулчейны обычно поддерживают оба, плюс конфигурацию блок-диаграмм, и многие теперь принимают C/C++ как источник для автоматической генерации HDL.

VHDL

VHSIC Hardware Description Language (VHDL) — VHSIC означает Very High-Speed Integrated Circuit — разрабатывался под эгидой Министерства обороны США в 1983 году. Его синтаксис напоминает Ada, что делает его многословным и строго типизированным. Язык предлагает фиксированный набор базовых типов: boolean, bit, bit_vector, character, string, integer, real, time и array, все остальные типы строятся на этих примитивах.

IEEE 1164 определяет стандартную библиотеку для VHDL, включая повсеместный тип std_logic, представляющий однобитный сигнал. Следующая таблица показывает логические значения для std_logic:

Языки реализации FPGA: от VHDL и Verilog к высокоуровневому C/C++

Strong 0/1 обозначают управляемые бинарные состояния, слабые сигналы указывают на конфликт на шине. Z представляет высокоомное состояние (CMOS-выход отключён), U — дефолтное неинициализированное состояние, X — отсутствие драйвера, а - — неиспользуемые входы.

Типичные VHDL-дизайны начинаются с импорта библиотеки IEEE 1164:

library IEEE;
use IEEE.std_logic_1164.all;

В этой главе мы используем VHDL как пример, но и VHDL, и Verilog могут полностью выразить любой синтезируемый для FPGA дизайн.

Verilog

Введённый в 1984 и стандартизированный как IEEE 1364 (2005), Verilog моделировался на C для сглаживания кривой обучения. В 2009 он объединился с SystemVerilog, образуя IEEE 1800-2009, добавив обширные возможности верификации поверх базовых HDL-конструкций.

Тип wire Verilog представляет состояния сигналов 0, 1, don't-care (x) или high-impedance (z), каждый с сильной или слабой силой. И VHDL, и Verilog имеют синтезируемые подмножества для аппаратного дизайна, в то время как дополнительные конструкции поддерживают симуляцию.

Например, несинтезируемый цикл for ведёт себя как программный цикл, итерируя последовательно. Синтезируемый цикл for разворачивается в параллельные аппаратные копии, зеркаля количество итераций.

Блок-диаграммы

Помимо текстовых HDL, современные FPGA-свиты предоставляют графические редакторы блок-диаграмм, позволяющие дизайнерам собирать сложные системы — такие как микропроцессоры и продвинутые I/O — без написания низкоуровневого кода. Рисунок 4.2 иллюстрирует блок-диаграмму Xilinx Vivado с мягким процессором MicroBlaze.

click for full size image
Языки реализации FPGA: от VHDL и Verilog к высокоуровневому C/C++
Рисунок 4.2 – Блок-диаграмма, содержащая мягкий микропроцессор MicroBlaze

MicroBlaze — мягкое ядро процессора Xilinx, доступное для семейств Artix-7 и других. Пока блок-диаграммы упрощают системную компоновку, инструмент в конечном счёте генерирует VHDL или Verilog за кулисами. Инспекция сгенерированного кода — например, design_1_microblaze_0_0_stub.vhdl — раскрывает HDL-интерфейс сущности:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity design_1_microblaze_0_0 is
  Port (
    Clk: in STD_LOGIC;
    Reset: in STD_LOGIC;
    Interrupt: in STD_LOGIC;
    Interrupt_Address: in STD_LOGIC_VECTOR (0 to 31);
    Interrupt_Ack: out STD_LOGIC_VECTOR (0 to 1);
    Instr_Addr: out STD_LOGIC_VECTOR (0 to 31);
    Instr: in STD_LOGIC_VECTOR (0 to 31);

Заметьте, что этот файл определяет только интерфейс процессора; ядровая логика поставляется как лицензированный IP, часто в скомпилированной форме для защиты интеллектуальной собственности.

C/C++

Несколько вендоров теперь предоставляют инструменты high-level synthesis (HLS), переводящие C или C++ в HDL, позволяя разработчикам портировать существующие алгоритмы в FPGA-железо. Пока базовое FPGA работает параллельно, сгенерированный дизайн часто отображает последовательные C/C++ утверждения в конечные автоматы. Там, где исходный код предлагает возможности для параллелизма, FPGA может дать значительный ускорение над обычным процессором.

Современные тулчейны позволяют VHDL, Verilog, блок-диаграммам и HLS-производному HDL сосуществовать в одном проекте. Команды могут смешивать языки на основе навыков, но тщательное планирование необходимо для избежания накладных расходов на сопровождение и обеспечения будущей поддерживаемости.

В следующем разделе мы пройдёмся по стандартному процессу FPGA-разработки, от концепции к реализации.

Reprinted with permission from Packt Publishing. Copyright © 2021 Packt Publishing


Языки реализации FPGA: от VHDL и Verilog к высокоуровневому C/C++Джим Ледин — CEO Ledin Engineering, Inc. Джим — эксперт в встраиваемом ПО и аппаратном дизайне, разработке и тестировании. Также компетентен в оценке кибербезопасности встраиваемых систем и тестировании на проникновение. Имеет B.S. в аэрокосмической инженерии от Iowa State University и M.S. в электротехнике и компьютерной инженерии от Georgia Institute of Technology. Джим — зарегистрированный профессиональный электроинженер в Калифорнии, CISSP, CEH и CPT.

Связанный контент:

Для получения большего контента по Embedded подпишитесь на еженедельную рассылку Embedded.


Встроенный

  1. Программирование встраиваемых систем: языки, архитектура и применения
  2. Проектирование встроенных систем: этапы, принципы и реальные применения
  3. Использование встроенного ИИ для превращения Big Data в действенные Smart Insights
  4. Мастерство USB-C: вызовы дизайна и практические решения для high-speed данных и питания
  5. Тренды встроенного дизайна, переформирующие будущее технологий
  6. Высокопроизводительный FPGA-ускоритель для встроенного зрения с MIPI-камерами
  7. Clientron PST650: все-в-одном POS-терминал с встроенным термопринтером для гостеприимства и ритейла
  8. MAXREFDES220# — Бесманжетный мониторинг артериального давления с оптическими датчиками
  9. Microchip запускает defense-grade PolarFire SoC FPGA с Early Access Program
  10. Максимизация производства с передовым ПО для аддитивного производства