Вход |  Регистрация
 
 
Время электроники Среда, 15 августа
 
 


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

Ранее

Адаптивный метод РЧ DSP для повышения спектральной эффективности беспроводных сетей

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

Руководство по выбору микроконтроллера

В существующем многообразии микроконтроллеров (МК) легко потеряться. В статье описана комплексная методика выбора подходящей модели. Приведены практические примеры и таблицы с основными характеристиками МК.

Интеллектуальное управление в СнК на базе DSP и процессора общего назначения

Как распределить задачи по обработке ввода/вывода между процессором общего назначения и цифровым сигнальным процессором при создании встраиваемого приложения на базе системы на кристалле (СнК)? В статье на примере СнК на базе ARM- и DSP-ядер рассмотрены способы оптимизации управления вводом/выводом, а также особенности применения ОС Linux для распределения задач обработки сигнала в режиме реального времени. Статья представляет собой перевод [1].

Реклама

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

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

 

26 июля

Проектирование и оптимизация ПО для обработки сигнала в Cortex-M4

В статье обсуждаются особенности функций цифровой обработки сигнала в процессоре Cortex-M4 компании ARM, которые позволяют реализовывать сложные DSP-алгоритмы во многих приложениях. Рассмотрены способы оптимизации DSP-кода для процессора Cortex-M4, что обеспечивает значительное увеличение производительности системы. Статья представляет собой перевод [1].



 

Цифровой сигнальный контроллер

Цифровой сигнальный контроллер (DSC) эффективно сочетает возможности цифрового управления и обработки сигнала (см. рис. 1) и отвечает требованиям рынка, тенденцией которого становится все большее сближение функций микроконтроллерных устройств.

 

 

Рис. 1. Цифровой сигнальный контроллер — эффективный гибрид МК и DSP

Одной из основных проблем большинства систем, в которых требуется цифровая обработка сигнала, является управление потоком данных в системе. В статье основное внимание уделено характеристикам центрального процессора, архитектура которого существенно влияет на способ реализации программного обеспечения (ПО) при оптимизации скорости обработки сигнала.

Cortex-M4 — центральный процессор для 32-разрядных DSC

Cortex-M4 от ARM специально разработан для применения в DSC. Этот новый процессор расширяет семейство Cortex-M до области обработки сигнала благодаря возможности программно совместимой миграции для пользователей процессоров Cortex-M0 и Cortex-M3. Особенности микроконтроллерных функций процессора Cortex-M4 приведены в таблице 1. Процессор Cortex-M4 построен на базе микроконтроллерных функций семейства Cortex-M и обеспечивает функции обработки сигнала, которые до сих пор были доступны только в DSP. Особенности функций обработки сигнала процессора Cortex-M4 представлены в таблице 2.

 

Таблица 1. Особенности микроконтроллерных функций процессора Cortex-M4

RISC-ядро процессора

Технология Thumb-2

• Высокопроизводительный 32-разрядный процессор

• Детерминированное функционирование

• 3-каскадный конвейер с малым временем ожидания

• Оптимальное сочетание 16/32-разрядных команд

• Высокая плотность кода

• Высокая производительность

Режимы низкого энергопотребления

Контроллер вложенных векторизованных прерываний (NVIC)

• Поддержка встроенного дежурного режима

• Несколько областей питания

• Программное управление архитектурой

• Быстрый отклик на прерывание с низким джиттером

• Не требуется программирование на ассемблере

• Подпрограммы обслуживания прерываний на C

Поддержка инструментов разработки и ОСРВ

Технология отладки и трассировки CoreSight

• Широкая поддержка инструментов разработки сторонних производителей

• Стандарт программного интерфейса МК Cortex (CMSIS)

• Возможность многократного использования разработанного ПО

• JTAG-интерфейс или 2-проводное последовательное соединение для отладки (SWD)

• Поддержка нескольких процессоров

• Поддержка трассировки в режиме реального времени


Таблица 2. Особенности функций обработки сигнала процессора Cortex-M4

Гарвардская архитектура

Однотактные 16- и 32-разрядные команды умножения с накоплением (MAC)

• 32-разрядная шина выборки команд AMBA AHB-Lite

• 32-разрядная шина доступа к данным и отладки AMBA AHB-Lite

• Широкий набор MAC-команд

• Выбор 32- или 64-битного аккумулятора

• Однотактное исполнение команд

Однотактные арифметические SIMD-команды

Сдвоенные однотактные 16-разрядные команды умножения с накоплением (MAC)

• 4 параллельные 8-битовые операции сложения или вычитания

• 2 параллельные 16-битовые операции сложения или вычитания

• Однотактное исполнение команд

• 2 параллельные 16-разрядные операции умножения с накоплением (MAC)

• Выбор 32- или 64-битного аккумулятора

• Однотактное исполнение команд

Блок вычислений с плавающей точкой

Другие функции

• Соответствие стандарту IEEE 754

• Блок вычислений с плавающей точкой одинарной точности

• Смешанные команды умножения с накоплением (MAC) для более высокой точности

• Поддержка математических операций с отсечкой

• Многорегистровое устройство циклического сдвига

 

Функции обработки сигнала процессора Cortex-M4

Гарвардская архитектура

Процессор Cortex-M4 построен по гарвардской архитектуре, которая характеризуется наличием отдельных шин команд и данных. Благодаря возможности одновременного чтения команд и данных из памяти Cortex-M4 способен выполнять многие операции параллельно, что ускоряет исполнение приложения. 32-разрядная шина AMBA AHB-Lite ICode выбирает команды из кодовой области памяти, а 32-разрядная шина AMBA AHB-Lite DCode осуществляет доступ к данным из кодовой области памяти. Периферийные шины обеспечивают доступ к компонентам вне системы процессора Cortex-M4.

8- и 16-битовые типы данных

Cortex-M4 имеет 32-разрядные регистры данных. Многие приложения по обработке сигнала манипулируют с 8- и 16-разрядными выборками данных. 32-разрядные регистры позволяют увеличить производительность за счет того, что они могут хранить две 16-разрядные или четыре 8-разрядные выборки данных и работать с такими форматами данных.
Процессор Cortex-M4 обеспечивает широкий набор SIMD-функций (Single Instruction, Multiple Data — одна инструкция, множество данных), что гарантирует выполнение таких алгоритмов за минимальное число тактов процессора. С помощью SIMD-функций численные операции могут быть одновременно применены к двум 16-битным или четырем 8-битным значениям.

SIMD-арифметика

Процессор Cortex-M4 имеет возможность выполнять арифметические операции над упакованными 8- и 16-битовыми данными. Различные варианты этих команд показаны в таблице 3. Имеются и другие мощные команды, которые позволяют менять полуслова во втором регистре операнда и выполнять различные операции с полусловами. Имеются также команды сложения разницы без знака, которые могут работать с пиксельными данными изображений и весьма полезны в таких приложениях как расчет траектории движения.

 

Таблица 3. Арифметические SIMD-операции процессора Cortex-M4

Тип команды

S (со знаком)

Q (со знаком,
с отсечкой)

SH (со знаком,
с полусловами)

U (без знака)

UQ (без знака,
с отсечкой)

UH (без знака,
с полусловами)

ADD8

SADD8

QADD8

SHADD8

UADD8

UQADD8

UHADD8

SUB8

SSUB8

QSUB8

SHSUB8

USUB8

UQSUB8

UHSUB8

ADD16

SADD16

QADD16

SHADD16

UADD16

UQADD16

UHADD16

SUB16

SSUB16

QSUB16

SHSUB16

USUB16

UQSUB16

UHSUB16

 

Однотактные 16- и 32-разрядные команды умножения с накоплением (MAC)

Одной из наиболее важных особенностей процессора для цифровой обработки сигнала являются эффективные однотактные команды умножения с накоплением (MAC), которые позволяют ускорить большинство DSP-алгоритмов. Процессор Cortex-M4 имеет разнообразные однотактные MAC-команды как для 16-, так и 32-битных данных, как показано в таблице 4.

Таблица 4. Однотактные 16- и 32-разрядные команды умножения с накоплением (MAC) процессора Cortex-M4

Операция

Описание

16 × 16 = 32

умножение 16-битного числа на 16-битное число со знаком, дающее 32-битный результат

16 × 16 + 32 = 32

умножение 16-битного числа на 16-битное число со знаком с 32-битным накоплением

16 × 16 + 64 = 64

умножение 16-битного числа на 16-битное число со знаком с 64-битным накоплением

16 × 32 = 32

умножение 16-битного числа на 32-битное число со знаком, возвращающее 32 старших разряда

(16 × 32) + 32 = 32

умножение 16-битного числа на 32-битное число со знаком с 32-битным накоплением

32 × 32 = 32

умножение 32-битного числа на 32-битное число

32 ± (32 × 32) = 32

умножение 32-битного числа на 32-битное число с накоплением/вычитанием

32 × 32 = 64

«длинное» умножение со знаком/без знака

(32 × 32) + 64 = 64

«длинное» умножение со знаком/без знака с накоплением

(32 × 32) + 32 + 32 = 64

умножение 32-битного числа на 32-битное число без знака с двойным 32-битным накоплением, дающее 64-битный результат

32 ± (32 × 32) = 32 (старшие разряды)

умножение 32-битного числа на 32-битное число с накоплением/вычитанием 32 старших разрядов

(32 × 32) = 32 (старшие разряды)

умножение 32-битного числа на 32-битное число, возвращающее 32 старших разряда

 

Сдвоенные однотактные 16-разрядные команды умножения с накоплением (MAC)

Процессор Cortex-M4 способен выполнять параллельно две 16-разрядные команды умножения с накоплением (MAC) за один такт. Это позволяет удвоить прямую вычислительную мощность ядра для 16-битных данных, что обеспечивает явные преимущества перед 16-разрядными устройствами. Сдвоенные однотактные 16-разрядные команды умножения с накоплением (MAC) процессора Cortex-M4 показаны в таблице 5.

 

Таблица 5. Сдвоенные однотактные 16-разрядные команды умножения с накоплением (MAC) процессора Cortex-M4

Операция

Описание

(16 × 16) ± (16 × 16) = 32

Сумма/разность сдвоенного умножения двух 16-битных чисел со знаком

(16 × 16) ± (16 × 16) + 32 = 32

Сдвоенное умножение 16-битных чисел со знаком с одним 32-битным накоплением

(16 × 16) ± (16 × 16) + 64 = 64

Сдвоенное умножение 16-битных чисел со знаком с одним 64-битным накоплением


На рисунке 2 показано использование упакованных данных для сдвоенных 16-битных операций умножения с одним 64-битным накоплением.

 

 

Рис. 2. Упакованные данные и сдвоенные 16-битные операции умножения с накоплением процессора Cortex-M4

 

Блок вычислений с плавающей точкой одинарной точности

Блок вычислений с плавающей точкой процессора Cortex-M4 обеспечивает большой динамический диапазон, поскольку он может представлять числа в более широких пределах. Его также очень просто программировать, т.к. разработчикам не нужно беспокоиться о тех ограничениях, которые накладывает обработка чисел с фиксированной точкой. До настоящего времени доступность аппаратных блоков вычислений с плавающей точкой в микроконтроллерах (МК) была ограничена из-за высокой стоимости кремниевого кристалла. Блок вычислений с плавающей точкой недорогого процессора Cortex-M4 открывает возможность построения широкого спектра DSC с возможностью выполнения операций с плавающей точкой.
Блок вычислений с плавающей точкой процессора Cortex-M4 обеспечивает функциональность в соответствии со стандартом IEEE 754 и поддерживает команды обработки данных и типы данных одинарной точности. Некоторые из поддерживаемых операций с плавающей точкой приведены в таблице 6.

 

Таблица 6. Выборочные операции и время их выполнения в блоке вычислений с плавающей точкой процессора Cortex-M4

Операция с плавающей точкой

Число тактов

Сложение/вычитание

1

Деление

14

Умножение

1

Умножение с накоплением (MAC)

3

Смешанное умножение с накоплением (Fused MAC)

3

Квадратный корень

14

 

Математические операции с отсечкой

Значения выборки данных в алгоритмах обработки сигнала с фиксированной точкой должны оставаться в пределах четко заданного диапазона чисел. Если числа получаются слишком маленькими, то эффект шума квантования ухудшает производительность. Если числа слишком велики, то возникает вероятность переполнения. Алгоритмы с фиксированной точкой требуют тщательного масштабирования и почти всегда разрабатываются с учетом возможного переполнения при определенных условиях. Стандартная целочисленная арифметика обрабатывает переполнения наихудшим из возможных способов: выполняется циклическое обращение к значению выборки по переполнению, что приводит к нарушению непрерывности сигнала. Для уменьшения этого эффекта в процессоре Cortex-M4 предусмотрены математические операции с отсечкой. Когда значение выборки переполняется, то оно обрезается до максимального положительного или отрицательного значений. Отсечка происходит в том же цикле, что и арифметическая операция, и не влечет за собой непроизводительных издержек (см. рис. 3).

 

 

Рис. 3. Обработка сигнала с отсечкой

 

Многорегистровое устройство циклического сдвига

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

Удобство в использовании — программирование полностью на C

Реализация аппаратных средств в МК, которыми нельзя просто и удобно пользоваться, является бесполезным делом. Простота программирования имеет решающее значение для быстрого освоения высокопроизводительных аппаратных средств. На протяжении многих лет предпринимались попытки сделать микроконтроллерную технологию доступной для массового рынка с помощью весьма удобных в использовании программных инструментов разработки для создания сложных приложений. Процессор Cortex-M4 и его программная экосистема поддержки также направлены на совершенствование принципа простоты использования при создании функций обработки сигнала, которые традиционно считались труднореализуемыми.

Программные инструменты разработки

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

Стандарт программного интерфейса МК Cortex (CMSIS)

Обычно стандарты используют для того, чтобы улучшить качество продукта и обеспечить их широкое применение в различных проектах. В электронной отрасли имеется множество таких стандартов, но на рынке МК есть много фирменных архитектур процессоров, в которых нельзя применять эффективные стандартные программные средства. Эта ситуация быстро меняется в первую очередь из-за быстрого внедрения процессоров ARM Cortex-M. Впервые отрасль встраиваемых МК получила возможность стандартизации на базе единой популярной аппаратной платформы.
Компания ARM создала стандарт программного интерфейса МК Cortex (Cortex Microcontroller Software Interface Standard — CMSIS), позволяющий производителям полупроводников и поставщикам микропрограмм создавать ПО, которое можно легко интегрировать в устройства. Стандарт CMSIS был разработан при тесном сотрудничестве с несколькими ключевыми вендорами полупроводников и ПО. CMSIS — это независимый от производителя абстрактный уровень представления аппаратных средств, который обеспечивает единый подход к сопряжению периферии, ОСРВ и микропрограммных компонентов (см. рис. 4). Этот стандарт является масштабируемым, что гарантирует его пригодность для всех МК на базе процессоров семейства Cortex-M — от младших членов этого семейства с 8-Кбайт памятью до приборов со сложной коммуникационной периферией, такой как Ethernet или USB-OTG. CMSIS был разработан как открытый программный стандарт, которым могут пользоваться все.

 

 

Рис. 4. CMSIS — абстрактный уровень представления аппаратных средств, который обеспечивает надежный доступ к центральному процессору и периферии

CMSIS был расширен специально для поддержки процессора Cortex-M4 с помощью включения обширной библиотеки DSP-подпрограмм, доступных вместе со стандартом. Эта библиотека включает фильтры, преобразователи, векторную математику, матричную математику и другие компоненты, полностью разработанные на C и оптимизированные для структуры системы команд процессора Cortex-M4.

Примеры программирования и стратегии оптимизации кода для Cortex-M4

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

 

- фильтры с бесконечной импульсной характеристикой (БИХ-фильтры), используемые в коррекции частотной характеристики звука, управлении электроприводами и т.д.;

 

- фильтры с конечной импульсной характеристикой (КИХ-фильтры), используемые в системах передачи данных, подавления эха (адаптивные версии), выравнивания данных и т.д.

 


Наиболее важным является то, что эти алгоритмы во многом зависят от операций умножения с накоплением (MAC). Высокопроизводительные MAC-операции — ключевые средства для оптимизации данных алгоритмов.
КИХ-фильтр является одной из классических функций обработки сигнала, которая часто применяется в коммуникационных, аудио- и видеоприложениях. Фильтр длины N требует N коэффициентов h[0], h[1], …, h[N-1] , N переменных состояния x[n], x[n-1], …, x[n-(N-1)], а также N умножений с накоплением (см. рис. 5).

 

 

Рис. 5. КИХ-фильтр

 

Расчет коэффициентов

Коэффициенты h[0], h[1], …, h[N-1] могут быть либо предварительно рассчитаны с помощью таких инструментов как MATLAB и сохранены в памяти, либо вычислены процессором в время обработки. Хорошим примером для последнего случая может служить регулировка тембра аудиосистемы, когда поворот ручки регулировки вызывает установку нового набора коэффициентов фильтра. Коэффициенты могут быть предварительно рассчитаны для заданных установок тембра и сохранены в памяти или вычислены устройством для достижения лучшего разрешения.

Стратегии оптимизации ПО

Обычно в коде расчета КИХ-фильтра используется блочная обработка, в котором внутренний цикл состоит из двойных вызовов памяти, умножения с накоплением и обновлений указателя с циклической адресацией, что позволяет задействовать все возможности процессора. Имеется несколько стратегий оптимизации такого кода для процессора Cortex-M4, и в данном разделе будут рассмотрены эти стратегии и их преимущества. Начнем с кода внутреннего цикла для расчета КИХ-фильтра, который занимает 12 тактов на процессоре Cortex-M4 (см. табл. 7).

 

Таблица 7. Неоптимизированный код внутреннего цикла для расчета КИХ-фильтра

Первоначальный код

Всего 12 тактов

for(k=0;k<filtLen;k++) {

sum += coeffs[k] * state[stateIndex];

stateIndex--;

if (stateIndex < 0) {

stateIndex = filtLen-1;

}

}

Вызов coeffs[k]

Вызов state[stateIndex]

MAC

stateIndex--

циклическая свертка

непроизводительные издержки цикла

2 такта

1 такт

1 такт

1 такт

4 такта

3 такта

 

Оптимизация 1 — альтернатива циклической адресации

Вместо циклической адресации мы можем создать циклический буфер длиной N + размер блока (blockSize) — 1 и обеспечить сдвиг один раз для каждого блока. Например, N = 6, blockSize = 4. Тогда размер буфера состояния будет равным 9 (см. рис. 6).

 

 

Рис. 6. Циклическая буферизация

 

В таблице 8 показан оптимизированный код внутреннего цикла, который был уменьшен до 8 тактов.

 

Таблица 8. Использование циклического буфера для оптимизации кода внутреннего цикла для расчета КИХ-фильтра

Оптимизированный код

Всего 8 тактов

for(k=0;k<filtLen;k++) {

sum += coeffs[k] * state[stateIndex];

stateIndex++;

}

Вызов coeffs[k]

Вызов state[stateIndex]

MAC

stateIndex++

непроизводительные издержки цикла

2 такта

1 такт

1 такт

1 такт

3 такта

 

Оптимизация 2 — развертывание цикла

Чтобы уменьшить непроизводительные издержки в часто запускаемых циклах, существует метод развертывания цикла, который используется компилятором, но может также применяться вручную для улучшения производительности. Это эффективный независимый от языка метод оптимизации. В каждом цикле имеются непроизводительные издержки для проверки счетчика цикла и увеличения его в каждой итерации (3 такта в процессоре Cortex-M4). Развертывание цикла обрабатывает n индексов цикла за одну итерацию, что уменьшает издержки в n раз (см. табл. 9). Как видно из таблицы, внутренний цикл теперь занимает 5,75 такта на каждый коэффициент фильтра.

Таблица 9. Код развертывания внутреннего цикла для расчета КИХ-фильтра

Развертывание цикла в 4 раза

Всего 5,75 такта на каждый коэффициент фильтра

for(k=0;k<filtLen;k++) {

sum += coeffs[k] * state[stateIndex];

stateIndex++;

sum += coeffs[k] * state[stateIndex];

stateIndex++;

sum += coeffs[k] * state[stateIndex];

stateIndex++;

sum += coeffs[k] * state[stateIndex];

stateIndex++;

}

Вызов coeffs[k]

Вызов state[stateIndex]

MAC

stateIndex++

непроизводительные издержки цикла

2 x 4 = 8 тактов

1 x 4 = 4 такта

1 x 4 = 4 такта

1 x 4 = 4 такта

3 x 1 = 3 такта

 

Оптимизация 3 — применение SIMD-команд и встроенные функции

Во многих приложениях по обработке изображений и видео, а также в коммуникационных системах использу­ются 8- или 16-битовые типы данных. Использование SIMD-операций с 16-битовыми данными обеспечивает двукратное увеличение скорости по сравнению с 32-битовыми данными и четырехкратное ускорение по сравнению с 8-битовыми данными. Доступ к SIMD-командам осуществляется через встроенные функции компилятора. Например, сдвоенная 16-битовая MAC-команда может быть выполнена с помощью следующего кода C: SUM = __SMLALD(C, S, SUM). Как видно из таблицы 10, внутренний цикл удалось в результате уменьшить до 2,375 тактов на каждый коэффициент фильтра.

 

Таблица 10. Применение SIMD-команд для оптимизации кода внутреннего цикла для расчета КИХ-фильтра

Использование SIMD-команд

Всего 2,375 такта на каждый коэффициент фильтра

filtLen = filtLen << 2;

for(k = 0; k < filtLen; k++){

c = *coeffs++;

s = *state++;

sum = __SMLALD(c, s, sum);

c = *coeffs++;

s = *state++;

sum = __SMLALD(c, s, sum);

c = *coeffs++;

s = *state++;

sum = __SMLALD(c, s, sum);

c = *coeffs++;

s = *state++;

sum = __SMLALD(c, s, sum);

}

2 такта

1 такт

1 такт

2 такта

1 такт

1 такт

2 такта

1 такт

1 такт

2 такта

1 такт

1 такт

3 такта

Всего 19 тактов, или 2,375 такта на коэффициент


Оптимизация 4 — кэширование промежуточных переменных

Обработка КИХ-фильтра требует весьма частого обращения к памяти. 12 из 19 тактов в последней версии кода связаны с обращением к памяти. Например, 2 последовательные загрузки требуют три такта работы процессора Cortex-M4, а MAC-команда требует только 1 такт. Когда обрабатывается блок данных, пропускная способность памяти может быть улучшена за счет одновременного расчета нескольких выходов и кэширования нескольких коэффициентов и переменных состояния. На рисунке 7 показана схема кэширования промежуточных переменных.

 

 

Рис. 7. Кэширование промежуточных переменных

 

После применения данного метода мы можем уменьшить число тактов всего лишь до 1,6 на каждый коэффициент фильтра.
Напомним, что мы начали со стандартного кода для процессора Cortex-M4, который требовал для выполнения 12 тактов, а затем выполнили ряд последовательных шагов для его оптимизации:
использование альтернативы цикличной адресации дало в результате 8 тактов;
после развертывания цикла мы получили менее 6 тактов;
после применения SIMD-команд — менее 2,5 тактов;
после кэширования промежуточных значений — примерно 1,6 такта.
Итак, базовый код на C, написанный для процессора Cortex-M4, способен, благодаря простой оптимизации, обеспечить весьма высокую производительность DSP-алгоритмов. Производительность обработки КИХ-фильтра на процессоре Cortex-M4 теперь сравнима с высокопроизводительными DSP, которые выполняют эту операцию за 1 такт на каждый коэффициент фильтра. Чтобы достичь такого показателя, эти DSP требуют оптимизации ассемблерного кода, для чего нужен длительный цикл освоения, а также пропадает возможность переноса кода на другие устройства. Вся оптимизация на процессоре Cortex-M4 может быть выполнена полностью в среде языка C, которая обеспечивает удобство создания и поддержки кода.
Хорошим примером управления цифровыми сигналами является воспроизведение звука (декодирование), в котором используется сочетание как управляющих, так и DSP-функций процессора. На рисунке 8 показано, что процессор Cortex-M4 позволяет пользователям получить DSP-характеристики, близкие к оптимальным при энергопотреблении на уровне микроконтроллерного процессора. Декодирование типового MP3-потока может быть выполнено на процессоре Cortex-M4 в полосе частот менее 10 МГц при динамическом потреблении мощности процессора менее 0,5 мВт.

Заключение

Функции МК и DSP быстро сближаются, поскольку пользователям нужны эффективные и простые в использовании технологии обработки сигнала. Процессор Cortex-M4 от ARM предоставляет отличный способ реализации устройств управления цифровыми сигналами, предназначенных для таких приложений как управление электроприводами, промышленная автоматика, встраиваемые аудиосистемы, цифровое управление питанием и автомобильные приложения.
Процессор Cortex-M4 расширяет семейство процессоров Cortex-M на рынки цифровой обработки сигнала путем введения специальных DSP-функций, подобных высокопроизводительным однотактным командам умножения с накоплением, SIMD-арифметики, математических операций с отсечкой и блоков вычислений с плавающей точкой одинарной точности.
Разработка приложений на процессоре Cortex-M4 проста и может быть выполнена полностью на C. Используя несложные методы, можно разработать оптимизированные программы с минимальными затратами и усилиями на освоение. Процессор Cortex-M4 — отличный вариант для построения систем на базе МК последнего поколения и цифровых сигнальных контроллеров, поскольку такие системы предназначены для приложений, требующих более широких возможностей обработки сигнала.

Литература

1. Andrew Frame. Developing optimized signal processing software on the Cortex-M4 processor//ARM, July 2011



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

Автор: Эндрю Фрейм (Andrew Frame), менеджер продукта, ARM



Комментарии

0 / 0
0 / 0

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





 

 
 




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