Импульс C - Impulse C

CoDeveloper
РазработаноИмпульсные ускоренные технологии
РазработчикИмпульсные ускоренные технологии
Впервые появился2003
Стабильный выпуск
3.60.a.8 / 2009-09-30
Операционные системыFPGA и связанные встроенные процессоры
ЛицензияКомпилятор FPGA продается и распространяется Impulse Accelerated Technologies
Интернет сайтwww.ImpulseC.com[мертвая ссылка ]
Под влиянием
Язык программирования C, Streams-C

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

Обзор

В Синтез высокого уровня инструмент CoDeveloper включает Impulse C компилятор и связанная библиотека функций, предназначенная для разработки приложений на базе FPGA. Impulse C совместим со стандартными ANSI C, позволяя использовать стандартные инструменты C для разработки и отладки приложений, ориентированных на FPGA. Компилятор Impulse C принимает подмножество C и генерирует оборудование FPGA в виде Язык описания оборудования (HDL) файлы. Impulse C позволяет разработчикам встроенных систем и программистам настраивать устройства FPGA для ускорения приложений на языке C.

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

Инструменты Impulse C включают инструменты совместного моделирования аппаратного и программного обеспечения, а также C-to-RTL технология планирования / оптимизации, используемая для сопоставления элементов приложения с оборудованием через FPGA логический синтез инструменты.

Модель программирования

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

В потоковом приложении Impulse C аппаратные и программные процессы обмениваются данными в основном через буферизованные потоки данных, которые реализованы непосредственно в оборудовании. Это буферизация данных, которая реализована с использованием двойных часов. ФИФО сгенерированный компилятором, позволяет писать параллельные приложения на относительно высоком уровне абстракции, без циклической синхронизации, которая в противном случае потребовалась бы.

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

На программной стороне приложения, например, во встроенном процессоре FPGA, функции библиотеки Impulse C используются для открытия и закрытия потоков данных, чтения или записи данных в потоках и, при желании, отправки сообщений о состоянии или опроса результатов. Для обмена данными между процессором и ПЛИС потоковые чтения и записи могут быть определены как операции, использующие специфические для ПЛИС, внутренние или внешние интерфейсы шины.

На аппаратной стороне приложения функции библиотеки Impulse C и другие операторы C скомпилированы для создания эквивалентных параллельных аппаратных реализаций в форме синтезируемых файлов HDL. Эти файлы обрабатываются инструментами FPGA для создания аппаратных растровых изображений FPGA.

В основе модели потокового программирования Impulse C лежат процессы и потоки. Процессы независимо синхронизируются, одновременно выполняя сегменты приложения. Аппаратные процессы написаны с использованием подмножества стандарта C и выполняют работу приложения, принимая данные, выполняя вычисления и генерируя выходные данные. В типичном приложении данные передаются от процесса к процессу посредством буферизованных потоков или, в некоторых случаях, посредством сообщений и / или общей памяти. Характеристики каждого потока, включая ширину и глубину сгенерированных FIFO, могут быть указаны в приложении C.

Приложения

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

Целевые платформы

Impulse C поддерживает ПЛИС от Xilinx и Altera, включая их доступные программные и аппаратные процессоры. Альтера Ниос II и Xilinx с MicroBlaze и PowerPC.

внешняя ссылка