Аппаратные ресурсы FPGA для высокопроизводительных встраиваемых систем
Примечание редактора: По мере появления продвинутых алгоритмов для дизайнов умных продуктов, разработчики часто находят себя борющимися за реализацию встраиваемых систем, способных удовлетворить связанные вычислительные требования. FPGA могут обеспечить требуемую производительность, но проектирование с FPGA долго считалось доменом экспертов по 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-устройств в real-time встраиваемых системах и продолжается описанием функциональных элементов, содержащихся в стандартных FPGA. Она представляет диапазон языков FPGA-дизайна — включая Hardware Description Languages (HDL), блок-диаграммные методы и популярные языки программирования, такие как C и C++ — и даёт обзор процесса FPGA-разработки. Глава завершается полным примером цикла FPGA-разработки, от заявления системных требований к полностью функциональной системе, реализованной на низкокостной FPGA-плате разработки.
После завершения этой главы вы поймёте, как FPGA могут применяться в real-time встраиваемых системных архитектурах, ключевые компоненты FPGA IC, языки программирования для проектирования FPGA-алгоритмов и пошаговую последовательность разработки FPGA-базированного приложения. Вы также пройдёте через полный пример FPGA-разработки на низкокостной плате с бесплатными FPGA-инструментами.
Мы охватим следующие темы:
- Использование FPGA в real-time встраиваемых системных дизайнах
- FPGA implementation languages
- FPGA development process
- Developing your first FPGA project
Технические требования
Файлы для этой главы доступны по адресу https://github.com/PacktPublishing/Architecting-High-Performance-Embedded-Systems.
Использование FPGA в real-time встраиваемых системных дизайнах
Как описано в разделе Elements of FPGAs Главы 1, типичное FPGA-устройство содержит большое количество lookup tables, flip-flops, block RAM элементов, DSP slices и других компонентов. В то время как полезно понимать детальные возможности каждого компонента, наиболее критическим соображением является то, что конкретный FPGA part number содержит конечное число каждого ресурса, и дизайн не может превышать эти лимиты при таргетинге на эту конкретную модель.
Продуктивнее рассматривать процесс разработки с точки зрения заявления требований встраиваемой системы. Вы можете начать с таргетинга модели, которая комфортно удовлетворяет эти требования. По мере прогресса дизайна вы можете столкнуться с лимитом ресурса или обнаружить, что требуемая фича отсутствует. В этот момент выбор более способной цели и продолжение разработки — просто. И наоборот, если вы обнаружите, что выбранный FPGA содержит избыточные ресурсы, переход на меньшую часть может снизить стоимость, количество пинов, размер корпуса и потребление энергии.
Переключение таргетированного FPGA в том же семействе обычно бесшовно, с полностью переиспользуемыми артефактами дизайна. Переключение семейств или вендоров может требовать дополнительных усилий. Ключевой вывод: конкретная модель не обязательно выбирать в начале; сначала сфокусируйтесь на валидации FPGA как жизнеспособного решения, затем выберите подходящего вендора и семейство устройств.
Примеры проектов в этой книге используют семейство инструментов Xilinx Vivado. Хотя лицензия Vivado требуется для некоторых семейств Xilinx, устройства Artix-7, используемые здесь, поддерживаются бесплатно. Artix-7 сочетает высокую производительность, низкое потребление и сниженную системную стоимость. Похожие семейства и тулсьюты доступны от других вендоров.
FPGA-разработка — сложный процесс, требующий диапазона аналитических и дизайнерских данных. Для конкретности обсуждения мы будем использовать Vivado на протяжении всей книги. Овладев этими техниками, вы сможете применять их к инструментам других вендоров.
Следующие разделы обсуждают ключевые дифференцирующие фичи семейств и моделей FPGA, включая ёмкость block RAM, типы I/O сигналов, специализированные on-chip ресурсы и наличие встроенных процессорных ядер.
Block RAM и Distributed RAM
Block RAM реализует выделенные области памяти внутри FPGA. Область памяти задаётся её битной шириной (обычно 8 или 16 бит) и глубиной (числом ячеек хранения). Общий block RAM обычно выражается в килобитах (Kb) и варьируется по семействам и моделям.
Многие FPGA также предоставляют distributed RAM, построенную из lookup-table логики для формирования малых 16-битных сегментов. Их можно комбинировать в более крупные блоки при необходимости. Distributed RAM идеальна для временного хранения промежуточных результатов, тогда как block RAM используется для кэшей или I/O буферов.
Block RAM может быть single-port или dual-port. Dual-port RAM, с двумя портами чтения/записи, особенно полезен для моста между подсистемами, работающими на разных тактовых частотах, обеспечивая передачу данных без интерференции.
Block RAM может работать в режиме FIFO, предоставляя сигналы full, empty, almost full и almost empty. Тщательный контроль операций записи и чтения предотвращает потерю или повреждение данных.
FPGA I/O Pins и связанные фичи
FPGA I/O пины поддерживают множество high-speed стандартов. Во время дизайна разработчики назначают функции конкретным пинам и конфигурируют стандарт интерфейса каждого пина. Сигналы либо single-ended, либо differential.
Single-ended сигналы референсны к земле и исторически использовали TTL/CMOS диапазоны. Современные FPGA поддерживают более низкие диапазоны напряжений — LVTTL (0–3,3 В) и LVCMOS варианты (1,2, 1,5, 1,8, 2,5, 3,3 В) — снижая потребление и улучшая скорость. High-speed single-ended стандарты включают HSTL и SSTL.
Дифференциальная сигнализация, использующая пару пинов, предпочтительна для high-data-rate линков, так как common-mode шум в основном компенсируется. Дифференциальные стандарты включают HSTL, SSTL и LVDS. LVDS, введённый в 1994, доставляет постоянный ток 3,5 мА и переключает направление для представления бит данных. Согласование импеданса линии передачи (100 Ом для LVDS) с импедансом терминирования критично для избегания отражений.
Специализированные аппаратные ресурсы
FPGA часто включают выделенное железо для функций, выигрывающих от фиксированной, эффективной реализации:
- Интерфейсы внешней динамической RAM (DRAM), обычно поддерживающие DDR3
- Аналого-цифровые преобразователи
- Phase-locked loops для генерации множественных тактовых частот
- Digital signal processing MAC hardware
Выделенное железо, такое как MAC units, доставляет производительность далеко за пределами того, что достижимо с синтезированной логикой.
Процессорные ядра
Некоторые семейства FPGA интегрируют hard processor cores — например, Xilinx Zynq-7000 комбинирует ARM Cortex-A9 с FPGA fabric. Когда дизайн не требует hard core, мягкий процессор может быть инстанцирован из FPGA-ресурсов. Soft processors высококонфигурируемы, но обычно не достигают производительности hard cores.
Следующий раздел представит основные языки программирования и методы ввода данных, используемые для разработки FPGA-алгоритмов.
Reprinted with permission from Packt Publishing. Copyright © 2021 Packt Publishing
Джим Ледин — CEO Ledin Engineering, Inc. Джим — эксперт в встраиваемом ПО и аппаратном дизайне, разработке и тестировании. Также компетентен в оценке кибербезопасности встраиваемых систем и тестировании на проникновение. Имеет B.S. в аэрокосмической инженерии от Iowa State University и M.S. в электротехнике и компьютерной инженерии от Georgia Institute of Technology. Джим — зарегистрированный профессиональный электроинженер в Калифорнии, CISSP, CEH и CPT.
Связанный контент:
- Open-source tools help simplify FPGA programming
- Implementing floating-point algorithms in FPGAs or ASICs
- Leveraging FPGAs for deep learning
- Software tools migrate GPU code to FPGAs for AI applications
- FPGAs displace ASICs in Subaru Eyesight vision-based ADAS
- How flash-based FPGAs simplify functional safety requirements
- Reaping the benefits of instant-on FPGAs
- FPGA configuration using high-speed NOR flash
- How FPGA technology is evolving to meet new mid-range system requirements
Для получения большего контента по Embedded подпишитесь на еженедельную рассылку Embedded.
Встроенный
- Избегайте дорогих сюрпризов в проектировании коннектед железа: проверенные стратегии
- Проектирование встроенных систем: этапы, принципы и реальные применения
- Eclipse IoT: унифицированный open-source пакет для быстрой IoT разработки
- Построение конечных автоматов с Test-Driven Development во встроенном C
- Использование встроенного ИИ для превращения Big Data в действенные Smart Insights
- Cypress усилила IoT-разработку полной поддержкой device-to-cloud в ModusToolbox
- Lattice MachXO3D FPGA укрепляет аппаратную безопасность с Root-of-Trust функциями
- MAXREFDES220# — Бесманжетный мониторинг артериального давления с оптическими датчиками
- Java 9: улучшенный try-with-resources для чистого кода
- Максимизация производства с передовым ПО для аддитивного производства