Вход |  Регистрация
 
 
Время электроники Вторник, 17 сентября
 
 


Это интересно!

Новости


Обзоры, аналитика


Интервью, презентации

Ранее

Процессоры Intel Core: новое наступление x86-архитектуры на рынке встраиваемых систем

В статье рассматриваются особенности нового семейства процессоров Intel Core, представленных на международной выставке CES 2010 в январе 2010 г. Обсуждаются ключевые преимущества новых процессоров, позволяющие реализовывать на их базе отказоустойчивые встраиваемые системы различного назначения. Приведены сведения о программных средствах разработки и оптимизации программного кода для процессоров данного семейства.

О новизне процессоров Intel Core i3/i5/i7. Часть 2*

Современный уровень и перспективы развития встраиваемых цифровых систем

В этой вводной статье рассматривается состояние современных встраиваемых систем, приводится их классификация и описываются наиболее общие проблемы их реализации.

Реклама

По вопросам размещения рекламы обращайтесь в отдел рекламы

Реклама наших партнеров

 

15 июня

Увеличение пропускной способности промышленных приложений с помощью сопроцессора на FPGA

В статье освещены вопросы проектирования промышленных приложений с использованием FPGA. Рассмотрены особенности промышленных приложений и способы увеличения пропускной способности системы. Обсуждаются проблемы разделения ресурсов, а также показаны преимущества использования FPGA в качестве аппаратного ускорителя системы. Статья представляет собой перевод [1].



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

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

Программный пакет автоматизированного проектирования

Пакет программных средств разработки, упоминаемый в этой статье, состоит из трех основных компонентов: Quartus II, SOPC Builder и DSP Builder. В совокупности эти инструменты образуют платформу автоматизированной разработки системы, которая обеспечивает высокий уровень интеграции проекта и гибкость, которая позволяет инженерам сосредоточить усилия на системном уровне, а не на уровне HDL-программирования и логических блоков.

Это инструменты логического уровня, которые поддерживают разработку программного обеспечения встраиваемых процессоров, каналов данных DSP, синтез, размещение элементов и разводку, верификацию и программирование устройства. Они работают как функции низкого уровня, которые выполняют конфигурирование FPGA из набора проектных файлов, полученных инструментами разработки. Инструменты можно использовать раздельно или совместно; они также позволяют выполнять HDL-проектирование (Verilog или VHDL). Системные разработчики не обязаны быть VHDL- или Verilog-программистами. Инструменты автоматизированной генерации системы позволяют определить компоненты, создать межсоединения, смоделировать и выполнить верификацию аппаратной части системы без обращения к исходному коду HDL. С помощью метода «указал и выбрал» (point-and-click) разработчик имеет возможность сгенерировать всю систему, смоделировать и верифицировать ее, а также загрузить в FPGA код с персонального компьютера.

Промышленные приложения

Во многих промышленных приложениях, таких как ультразвуковая дефектоскопия, скорость передачи данных от датчиков может достигать 50 MSPS. В других промышленных приложениях скорость передачи данных с датчика может быть значительно меньше (скажем, 100 kSPS), но количество датчиков велико. В любом случае, если цепь обработки данных является сложной, DSP-процессоры часто не обеспечивают пропускную способность, необходимую для работы системы в режиме реального времени. В этом случае обработку приходится выполнять в режиме offline.

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

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

Как увеличить скорость обработки с помощью FPGA в качестве параллельного сопроцессора

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

В большинстве приложений цифровой обработки сигнала, помимо оптимизации с использованием специальных команд ассемблера или при модернизации DSP-процессоров, инженеры имеют несколько возможностей для увеличения производительности. В случае использования FPGA аппаратная часть и программное обеспечение могут быть оптимизированы одновременно. Более того, разработчик может изменить разделение ресурсов системы, возлагая большую часть задач по обработке данных на аппаратную часть, чтобы удовлетворить требованиям по пропускной способности. В результате разработчик получает в свое распоряжение трехмерное пространство оптимизации (см. рис. 1). При неизменной производительности многих DSP-процессоров при тактовой частоте 1 ГГц разработчикам, как правило, остается только одна возможность улучшения пропускной способности системы — оптимизация кода. Широкие возможности программируемых решений помогают создать системы, которые прежде невозможно было спроектировать либо из-за недостатка времени или высокой стоимости элементов, либо из-за того, что обычные DSP-процессоры не могли справиться с вычислительной нагрузкой. Теперь специалист имеет еще одну степень свободы в процессе проектирования — аппаратное ускорение с помощью сопроцессора.

Рис. 1. Трехмерное пространство оптимизации, доступное с помощью программных инструментов разработки

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

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

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

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

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

В DSP-процессорах с Гарвардской архитектурой операция умножения с накоплением (multiply-accumulate — MAC) может быть эффективно выполнена за один командный цикл. Некоторые DSP-процессоры имеют до восьми блоков MAC, которые могут работать одновременно. Однако для выполнения, например, операции свертки могут понадобиться несколько сотен и тысяч циклов.

Использование тактовых циклов в обычных DSP-процессорах может быть продемонстрировано на примере выполнения операции свертки, в сравнении с реализацией той же операции на FPGA семейства Stratix с помощью инструмента разработки DSP Builder. Представим в развернутом виде одну итерацию цикла операции свертки (представлена цветной стрелкой на рис. 2) и поместим ее в программу последовательного DSP-процессора. Если отобразить эти операции в зависимости от числа системных тактов (времени вычисления), то они будут представлены в виде последовательности линий со стрелками (см. рис. 2).

Рис. 2. Сравнение выполнения алгоритма свертки на DSP-процессоре и FPGA

В некоторых DSP-процессорах программист имеет возможность создать оптимизированный код на ассемблере для конвейерного выполнения операций. Это уменьшает количество используемых тактовых циклов (см. рис. 2б). Выигрыш в скорости в 5—10 раз можно получить как путем ручной оптимизации, так и путем оптимизации в компиляторе Cи. Но, хотя компилятор Cи может обеспечить некоторую степень параллелизации задачи, наибольший выигрыш в скорости дает оптимизированный ассемблерный код. При необходимости какой-либо модификации алгоритма код должен быть переписан. Явным недостатком такого варианта является то, что затраты времени и стоимость обслуживания такого программного кода могут быть существенными.

Используя инструмент разработки DSP Builder и реализуя этот алгоритм на FPGA, фильтр свертки может быть спроектирован таким образом, чтобы эта операция выполнялась за 1—2 тактовых цикла, как показано на рисунке 2в (в обоих рассмотренных случаях начальные тактовые циклы, которые требуются для загрузки данных перед выполнением операций, не учитываются).

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

– создать оптимизированный код (обычно на ассемблере);

– выбрать более быстродействующий и более дорогой DSP-процессор;

– добавить в систему больше DSP-процессоров.

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

Преимущества разработки проекта на базе FPGA таковы.

1. Выигрыш в быстродействии по сравнению с оптимизированным ассемблерным кодом на DSP-процессоре часто превышает 100 раз. Крупные FPGA содержат тысячи умножителей, блоков памяти, портов ввода/вывода и связанной с ними программируемой логики.

2. Инструменты разработки имеют графический интерфейс, использующий метод перетаскивания (drag-and-drop). Поэтому время разработки существенно меньше, чем написание кода для DSP-процессора.

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

4. Использование современных программных пакетов разработки для FPGA позволяет легко и быстро модифицировать проект и архитектуру системы. Для тех специалистов, которые использует традиционный подход проектирования FPGA на базе HDL-программирования, широко доступны такие IP-ядра как FFT, NCO, FEC, FIR- и CIC-фильтры. Они обычно совместимы со всеми приборами данного семейства FPGA.

Что выбрать — сопроцессор на FPGA или DSP-процессор?

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

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

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

Рисунок 3 показывает упрощенный пример сегментации. Эта блок-схема выполняет фильтрацию с конечной импульсной характеристикой (finite impulse response — FIR) высокочастотного сигнала, полученного в режиме реального времени (т.е. реализуется низкочастотный или полосовой фильтр для сигнала датчика с помехами) и отображение полученного параметра (мощности сигнала).

Рис. 3. Сегментация процесса FIR-фильтрации в режиме реального времени

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

Во втором блоке система осуществляет управление входными данными, например, преобразуя входные данные для сегментов фильтра. Кроме того, во время формирования данных необходимо передать в АЦП несколько аппаратных сигналов, таких как «Разрешение» и «Подтверждение» (показаны белыми стрелками). В блоке выходных данных также с помощью аппаратного управления формируются выходные данные, и обеспечивается их конечное расположение, например, происходит прямой доступ к памяти (DMA) и запись во внешнюю память SRAM. В последнем блоке вычисляется мощность отфильтрованного сигнала, которая затем отображается.

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

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

– Какова нагрузка на главный процессор? Может ли передача задания в FPGA освободить другие ресурсы главного процессора?

– Сколько логических элементов FPGA задействовано в операции фильтрования? Сколько логических элементов FPGA будет использоваться при вычислении мощности?

– В главном процессоре используются операции с плавающей запятой или целочисленная арифметика? Если целочисленная арифметика, то понадобится масштабирование, чтобы исключить возможное переполнение из-за операции возведения в квадрат.

При сегментации проекта разработчики обычно приходят к выводу, что некоторые части алгоритма следует обязательно передать на исполнение в FPGA, тогда как передача других зависит от количества системных ресурсов. Для более сложного кода наилучшим способом определиться с разделением ресурсов является разработка модели кода на языке более высокого уровня (Cи/Cи++ или MATLAB). Для определения времени исполнения задания и поиска той части алгоритма, которая задействует основные ресурсы центрального процессора, могут быть использованы функции профилирования компилятора.

Заключение

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

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

Литература

1. Michael Parker. Increasing bandwidth in industrial applications with FPGA co-processors // www.pldesignline.com



Вы можете скачать эту статью в формате pdf здесь.
Оцените материал:

Автор: Майкл Паркер (Michael Parker), менеджер по маркетингу, Altera Corp.



Комментарии

0 / 0
0 / 0

Прокомментировать





 

Горячие темы

 
 




Rambler's Top100
Руководителям  |  Разработчикам  |  Производителям  |  Снабженцам
© 2007 - 2019 Издательский дом Электроника
Использование любых бесплатных материалов разрешено, при условии наличия ссылки на сайт «Время электроники».
Создание сайтаFractalla Design | Сделано на CMS DJEM ®
Контакты