Software & Компьютерная инженерия
Углубленный взгляд на Dsp процессорные Sdks и среды разработки
Table of Contents
Процессоры цифровой обработки сигналов (DSP) являются специализированными микропроцессорами, созданными для выполнения сложных математических операций с высокой скоростью и низкой задержкой. В отличие от процессоров общего назначения, DSP включают аппаратные множители, баррели и несколько шин памяти для эффективного решения задач в реальном времени, таких как кодирование звука, телекоммуникационная модуляция, обработка радаров и синтез датчиков. Разработка программного обеспечения для этих чипов требует больше, чем стандартный компилятор; это требует специализированного набора разработки программного обеспечения (SDK) и выделенной интегрированной среды разработки (IDE), которая понимает базовую аппаратную архитектуру и может оптимизировать код для мощности и производительности. Эта статья обеспечивает углубленное изучение процессоров DSP SDK и сред разработки, охватывающих их основные компоненты, ведущих поставщиков, критерии выбора и новые тенденции.
Что такое DSP процессор SDK?
DSP Processor SDK представляет собой всеобъемлющую коллекцию инструментов, библиотек, компонентов среды выполнения и документации, собранных, чтобы помочь инженерам создавать, отлаживать и развертывать приложения для конкретного семейства DSP. SDK абстрагирует низкоуровневые аппаратные детали, такие как этапы конвейера, иерархии памяти и периферийные регистры, чтобы разработчики могли сосредоточиться на реализации алгоритма. Типичные DSP SDK включают в себя компиляторы C / C++ производственного уровня, которые в значительной степени оптимизированы для целевого набора инструкций, наборы инструментов для сборки языка для ручной настройки критических циклов и библиотеки для конкретных доменов (например, FFT, FIR фильтры, матричные операции), которые используют параллельные исполнительные блоки процессора.
Помимо компилятора и библиотек, SDK часто предоставляет ядро операционной системы реального времени (RTOS), драйверы устройств для периферийных устройств на чипе (I2S, SPI, UART, DMA) и инструменты конфигурации для распределения памяти и обработки прерываний. Некоторые SDK также интегрируют модели моделирования аппаратных средств в цикле, чтобы разработчики могли тестировать алгоритмы на виртуальной цели до того, как оборудование будет доступно. Цель состоит в том, чтобы сократить время от концепции до производства, обеспечивая стабильную, протестированную основу, которая обрабатывает повторяющиеся задачи настройки регистра и движения данных.
Основные компоненты DSP SDK
Понимание строительных блоков типичного SDK помогает инженерам оценить, какой набор инструментов лучше всего соответствует их требованиям проекта. Хотя конкретные реализации различаются, большинство DSP SDK содержат следующие элементы:
Оптимизация компиляторов и сборщиков
Компилятор является сердцем любого SDK. Компиляторы DSP используют такие методы, как программная конвейеризация, разворот петли и обнаружение параллелизма на уровне инструкций для создания эффективного машинного кода. Многие также поддерживают внутренние функции, которые позволяют разработчикам вызывать специфические аппаратные функции (например, операции с несколькими накоплениями, операции с несколькими данными с одной инструкцией) непосредственно из кода C, не прибегая к сборке. Сборщики и линкеры обрабатывают разрешение символа и размещение памяти, часто с мелкозернистым контролем над размещением разделов в оперативной памяти на чипе, кэше или внешней памяти.
Доменные библиотеки
Предоптимизированные функциональные библиотеки являются отличительной чертой DSP SDK. Эти библиотеки обеспечивают обычно используемые примитивы обработки сигналов, такие как фильтры с конечным импульсным откликом (FFT / DFT) и бесконечным импульсным откликом (IIR), свертка, корреляция и матричная математика, которые были вручную настроены для целевой архитектуры. Использование этих вызовов библиотеки, а не пользовательских реализаций, может привести к улучшению производительности порядков величины, потому что библиотечные процедуры используют уникальные пути передачи данных DSP и пропускную способность памяти.
Отладчики и инструменты анализа в реальном времени
Отладка систем реального времени, как известно, сложна. DSP SDK решают эту проблему с помощью аппаратных отладчиков, которые поддерживают точки останова, точки наблюдения и одноступенчатые даже тогда, когда процессор работает на полной скорости. Многие среды включают функцию отслеживания данных в реальном времени, которая захватывает память или регистрирует значения без остановки выполнения. Некоторые SDK также предлагают инструменты оптимизации с профилем, которые идентифицируют горячие пути, промахи кэша и ларьки трубопровода, позволяя инженерам итеративно совершенствовать свой код.
Симуляционные и эмуляционные среды
Ранняя разработка алгоритмов редко требует фактического кремния. SDK обычно включают в себя симуляторы набора инструкций и точные по циклу эмуляторы, которые моделируют поведение ядра DSP. Симуляторы позволяют разработчикам запускать код, проверять регистры и проверять правильность без аппаратного обеспечения. Эмуляторы - часто в комплекте с JTAG или аналогичными отладчиками - обеспечивают мост к фактическому чипу для отладки на целевом уровне. Лучшие SDK позволяют плавный переключатель между моделированием и выполнением аппаратного обеспечения.
Промежуточное ПО и интеграция с RTOS
Сложные DSP-приложения часто нуждаются в планировании задач, межпроцессной связи и управлении памятью. Многие SDK включают в себя облегченную операционную систему реального времени (например, TI SYS/BIOS, Analog Devices uC/OS for SHARC), которая управляет этими услугами с минимальными накладными расходами. SDK также поставляет аппаратные уровни абстракции (HAL), которые изолируют код приложения от периферийных изменений, делая программное обеспечение более портативным в вариантах процессора в одном семействе.
Ведущие среды развития DSP
В то время как десятки поставщиков DSP предоставляют SDK, несколько сред доминируют на рынке из-за их зрелости, качества инструмента и поддержки экосистем. Ниже мы рассмотрим наиболее широко используемые варианты.
Texas Instruments Code Composer Studio (CCS) (США)
Code Composer Studio является флагманской IDE для семейств C6000, C5000 и C2000 DSP TI, а также их многоядерной архитектуры KeyStone. CCS построен на платформе Eclipse и интегрирует оптимизированный компилятор C / C++ TI, усовершенствованный отладчик с аппаратным отслеживанием (включая встроенный буфер TI Trace Buffer) и ряд плагинов для анализа. Ключевые функции включают в себя:
- Оптимизированные библиотеки DSP: DSPLIB и IMGLIB обеспечивают высоко оптимизированные функции обработки сигналов и изображений.
- Системный анализатор: Графический инструмент для просмотра загрузки процессора, планирования задач и использования памяти в реальном времени.
- VectorMathLib: Использует ядра VLIW с плавающей точкой C66x для векторных операций.
- Программная эмуляция: Поддержка отладочных зондов XDS позволяет осуществлять неинтрузивный мониторинг и прослеживание.
CCS также включает в себя инструмент статического анализа кода , который проверяет соответствие MISRA-C и другим стандартам безопасности, что делает его сильным выбором для критически важных приложений в автомобильном и промышленном контроле. Texas Instruments предоставляет последнюю версию CCS здесь .
Аналоговые устройства CrossCore Embedded Studio (CCES)
CrossCore Embedded Studio - это унифицированная среда разработки Analog Devices (ADI) для их процессоров SHARC, Blackfin и SigmaDSP. CCES также основан на Eclipse и поддерживает как голый металл, так и разработку на основе RTOS с использованием VDK ADI (ядро VisualDSP++) или сторонних ядер.
- Расширенные возможности отладки: CCES предлагает многоядерную отладку, отслеживание инструкций и обмен данными в реальном времени (RTDX) через эмулятор USB.
- SHARC+ Library: Коллекция оптимизированных для сборки рутинных программ для архитектуры плавающей точки SHARC, которая широко используется в профессиональных аудио и промышленных инверторах.
- Поддержка автобусов I$^2$S и AXI: Упрощает интеграцию с внешними аудиокодеками и FPGA.
- Настраиваемые скрипты линкеров: Позволяет точное размещение кода и данных во внутреннюю SRAM, кэш L2 или внешнюю SDRAM.
Сеть инструментов ADI включает в себя режим моделирования аппаратного обеспечения в цикле , который использует фактические платы процессора для быстрого прототипирования. Узнайте больше о CrossCore Embedded Studio на аналоговых устройствах .
Дизайнерский люкс Xilinx Vivado (для DSP на основе FPGA)
Когда алгоритмы DSP реализованы в программируемой логике (FPGA), Xilinx Vivado Design Suite (теперь часть AMD) обеспечивает уникальное сочетание аппаратного и программного обеспечения. В то время как не традиционный процессор SDK, Vivado включает в себя инструменты синтеза высокого уровня (HLS), которые компилируют алгоритмы C / C++ в RTL, наряду с унифицированной программной платформой Vitis для встроенного программирования процессора (например, MicroBlaze или ARM Cortex, встроенные в ткань FPGA).
- Системный генератор для DSP: Инструмент проектирования на основе модели, который интегрируется с MATLAB/Simulink и автоматически генерирует оптимизированные ядра DSP IP.
- HLS Compiler: Преобразует функции C++ DSP в аппаратные конвейеры с компромиссами по площади и пропускной способности.
- IP Integrator: Позволяет дизайнерам подключать предварительно построенные блоки DSP (FFT, FIR, CORDIC) с мягкими процессорами и контроллерами памяти.
- Программная отладка: Логический анализатор и последовательный анализатор ввода/вывода Vivado позволяют инженерам отслеживать внутренние сигналы FPGA в режиме реального времени.
Для проектов, которым требуется параллельное ускорение FPGA в сочетании с гибкостью процессора DSP, Xilinx предлагает гибридный подход. Посетите страницу Vivado Design Suite для получения более подробной информации .
Другие известные среды
Помимо трех тяжеловесов, заслуживают упоминания еще несколько DSP SDK:
- NXP MCUXpresso (для семейств DSC, таких как 56F800): Комбинирует Eclipse с инструментом NXP Processor Expert и интеграцией FreeRTOS. Он включает в себя библиотеку цифрового контроллера сигналов (DSC), оптимизированную для управления двигателем и преобразования мощности.
- CEVA Toolbox: Разработан для ядер DSP CEVA (используется в Wi-Fi, Bluetooth и сотовой базовой полосе). В набор инструментов входит компилятор с высокой степенью параллелизации и платформа на основе SystemC для архитектурных исследований.
- STMicroelectronics STM32Cube (с библиотекой DSP): При нацеливании на ядра Cortex-M экосистема ST включает в себя библиотеку CMSIS-DSP, которая может превратить микроконтроллер в способный сигнальный процессор для чувствительных к затратам аудио и сенсорных приложений.
Основные характеристики и возможности в глубине
Современные DSP SDK выходят за рамки базового компилятора и отладки. К наиболее ценным возможностям для профессиональных разработчиков относятся:
Автоматическая векторизация и внутримашинная
Компиляторы DSP часто поддерживают автовекторизацию для использования исполнительных блоков SIMD или VLIM. Например, компилятор TI может автоматически векторизировать петли, которые выполняют операции с использованием элементов на массивах. Когда требуется ручное управление, разработчики могут использовать внутренние функции, такие как или , чтобы напрямую получить доступ к нативным операциям DSP, оставаясь в C. Этот баланс между производительностью и производительностью имеет решающее значение для соблюдения сроков в реальном времени.
Мощность и термический анализ
Для устройств с батарейным питанием (например, слуховые аппараты, датчики IoT) незаменимы инструменты оценки мощности и оптимизации SDK. Такие среды, как CCS, включают плагин оценки мощности, который моделирует активность переключения и прогнозирует текущее потребление. Разработчики могут затем настраивать время ожидания, режимы сна и шаблоны доступа к памяти, чтобы минимизировать энергию, не жертвуя пропускной способностью.
Код размера vs. Скорость компромиссов
DSP-приложения часто имеют ограниченный бюджет памяти. SDK обеспечивают флаги компилятора и скрипты линкера для оптимизации как для размера кода, так и для скорости выполнения. Например, флаг в компиляторе TI агрессивно разворачивает циклы и встраивания функций для максимальной скорости, в то время как производит меньший код за счет некоторой производительности. Расширенные среды также поддерживают оптимизацию времени ссылки (LTO) для уменьшения общего следа кода.
Интеграция и планирование визуализации RTOS
Операционные системы реального времени, такие как TI SYS/BIOS и ADI VDK, обеспечивают детерминированное планирование с приоритетами задач, семафорами и флагами событий. Современные IDE предлагают просмотрщик объектов в реальном времени (ROV), который графически показывает состояния задач, использование стека и межзадачную связь. Эта видимость помогает инженерам избежать тупиков и инверсий приоритетов в сложном многопоточном программном обеспечении DSP.
Выбор правильного SDK для вашего проекта
Выбор среды разработки DSP не является просто вопросом личных предпочтений. Инженеры должны оценить следующие критерии, чтобы убедиться, что набор инструментов соответствует целям продукта:
- Совместимость с аппаратным обеспечением: SDK должен поддерживать точную модель DSP и любые сопутствующие чипы (FPGA, MCU) на плате.Проверьте, поддерживается ли зонд отладки (JTAG, SWD).
- Охват библиотек: Включает ли SDK оптимизированные процедуры для алгоритмов, которые вы планируете реализовать (аудиокодеки, формирование луча, управление двигателем FOC и т. д.)?
- Экосистема и сообщество: Большая база пользователей означает лучшее устранение неполадок, больше сторонних библиотек и больше примеров проектов. форумы TI E2E и ADI EngineerZone являются отличными ресурсами.
- Сроки и поддержка цепочки инструментов: Оценка соответствия стандартов компилятора (C11, C++14, MISRA-C), частота обновлений и долгосрочное обязательство поставщика.
- Стоимость и лицензирование: Некоторые SDK бесплатны с ограниченным функционалом, в то время как другие требуют лицензии на место. Рассмотрим лицензии с блокировкой узлов и плавучие лицензии и включено ли обучение или поддержка.
- Интеграция с другими инструментами: Если в вашем рабочем процессе используется MATLAB, Simulink или LabVIEW, проверьте, обеспечивает ли SDK автоматическое генерирование кода (например, встроенный кодер для TI).
Проблемы в развитии DSP и как SDK решают их
Программирование DSP представляет собой уникальные препятствия, которые помогают смягчить:
Ограничения в реальном времени
Отсутствие крайнего срока в системе реального времени может вызвать звуковые сбои (аудио), сброшенные пакеты (телеком) или нестабильные петли управления (электроника питания). SDK обеспечивают детерминированное планирование, точную обработку прерываний и точное профилирование цикла, чтобы помочь инженерам проверить, что все задачи выполняются в пределах их выделенных временных окон.
Управление иерархией памяти
DSP часто имеют несколько уровней памяти с различными скоростями доступа (L1 кэш, L2 SRAM, внешняя SDRAM). Компилятор и линкер должны размещать данные, чтобы минимизировать промахи кэша. SDK включают инструменты конфигурации кэша и функции копирования памяти (] могут быть специализированы для перетасовки байтов DSP) для эффективного перемещения данных между уровнями. Некоторые среды предлагают анализ потока данных , чтобы предложить оптимальные размещения.
Конкурентность и многоядерная синхронизация
Многоядерные DSP (например, TMS320C6678 от TI с 8 ядрами) требуют тщательной синхронизации и совместного управления ресурсами. SDK поставляют аппаратные семафоры, прерывания почтового ящика и драйверы IPC (межпроцессорная связь). Отладка состояния гонки между ядрами является сложной задачей; отладчики с трассовым управлением в CCS и CCES могут записывать события из всех ядер одновременно.
Floating-Point vs. Fixed-Point Trade-offs (недоступная ссылка)
В то время как плавающая точка упрощает разработку алгоритма, арифметика с фиксированной точкой часто дает лучшую энергоэффективность и скорость в чувствительных к затратам конструкциях. SDK включают библиотеки с фиксированной точкой и инструменты преобразования для моделирования эффекта квантования и переполнения. Симуляторы также могут моделировать истинное поведение битов, обеспечивая правильную работу алгоритмов при переносе с плавающей точки на фиксированную точку.
Будущие тенденции в области развития ОСП
Ландшафт развития ДСП стремительно развивается. Несколько тенденций формируют следующее поколение SDK:
ИИ и машинное обучение на DSP
Ядра DSP все чаще используются для вывода на периферийных устройствах благодаря их эффективным операциям многократного накопления. Поставщики добавляют библиотеки нейронных сетей (например, SDK Deep Learning TI для C66x, ARM CMSIS-NN для Cortex-M), которые отображают свертки и уровни активации на SIMD-блоках DSP. Будущие SDK могут включать инструменты автоматической обрезки и квантования для сжатия моделей для памяти на чипе.
Гетерогенные вычисления и аппаратное/программное обеспечение Co-Design
Многие современные SoC объединяют DSP с ядрами ARM, FPGA и GPU. Среды разработки сливаются, чтобы обеспечить единый рабочий процесс для гетерогенных систем. Xilinx Vitis, например, поддерживает программирование как ткани FPGA, так и встроенных процессоров из одной IDE. Ожидайте более тесной интеграции между DSP SDK и инструментами HLS.
Облачная разработка и интеграция CI/CD
Внедрение практики непрерывной интеграции/непрерывного развертывания (CI/CD) вступает во встроенную разработку. Облачные версии IDE (такие как TI Cloud Tools) позволяют командам настраивать автоматизированные сборки, запускать тесты моделирования и даже флеш-устройства через удаленные лаборатории. Эта тенденция снижает потребность в рабочих станциях разработчиков с конкретными конфигурациями оборудования.
Модельный дизайн и автоматическое генерирование кода
Вместо алгоритмов DSP с ручным кодированием инженеры все чаще используют MATLAB, Simulink или Scilab для моделирования системы, а затем генерации развертываемого кода. Ведущие SDK теперь интегрируются с генераторами кода (Embedded Coder для TI, Simulink Coder для Xilinx), которые производят C или VHDL производственного качества. Этот подход ускоряет исследование алгоритма и уменьшает ошибки перевода.
Заключение
Процессоры DSP SDK и сопутствующие им среды разработки необходимы для создания эффективных, надежных систем обработки сигналов. Они инкапсулируют годы аппаратной оптимизации в доступные инструменты, позволяя разработчикам сосредоточиться на дифференциации, а не на низкоуровневых деталях. От комплексной студии Code Composer от TI до CrossCore Embedded Studio и Xilinx Vivado от ADI для FPGA-ориентированных DSP, каждая среда предлагает уникальное сочетание библиотек, отладчиков и конфигурационных утилит. Тщательно оценивая совместимость оборудования, охват библиотек, поддержку экосистем и будущие тенденции, такие как интеграция ИИ, инженеры могут выбрать SDK, который наилучшим образом ускоряет разработку своего продукта, обеспечивая при этом производительность и энергоэффективность в реальном времени. По мере того, как границы между DSP, FPGA и встроенным процессором продолжают размываться, роль единой, богатой функциями среды разработки будет только расти в важности.