Добавить в цитаты Настройки чтения

Страница 256 из 436

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

НАИБОЛЕЕ ВАЖНАЯ МАТЕМАТИЧЕСКАЯ ОПЕРАЦИЯ В DSP: СУММА ПРОИЗВЕДЕНИЙ

y(n) = h(0)∙x(n) + h(1)∙х(n-1) +… + h(N-1)∙x(n-N)

Пример: цифровая фильтрация

♦ Многократное умножение значений входных отсчетов на коэффициенты фильтра (или на поворотные множители при БПФ)

♦ Накопление результатов умножения в регистре-аккумуляторе

♦ Повторение этих действий N раз

Требования, предъявляемые к DSP:

♦ Быстрое выполнения умножения с накоплением

♦ Высокая точность представления результата (в аккумуляторе)

♦ Одновременная выборка двух операндов

♦ Наличие циклических буферов

♦ Реализация циклов с автоматической проверкой условий

При использовании ядра ADSP-21xx за один цикл возможно осуществить:

♦ Выборку значения отсчета из памяти данных

♦ Выборку значения коэффициента из памяти программ





♦ Выполнить умножение с накоплением

Рис. 7.3

Быстрое выполнение арифметических операций

Быстрое выполнение арифметических действий — наиболее простое для понимания требование. Так как возможность реализации цифровой обработки сигналов в реальном масштабе времени зависит от производительности процессора, быстрота выполнения операций умножения с накоплением является главным требованием; большая скорость выполнения данной операции означает возможность обработки большей полосы частот. Но необходимо помнить, что эффективность DSP определяется не только временем выполнения операции умножения с накоплением. Этот часто забываемый факт приводит к неадекватному подходу в оценке производительности процессора, когда скорость работы процессора оценивается количеством операций, выполняемых процессором за единицу времени (в MIPS — миллионах операций в секунду). Так как большинство DSP и других процессоров, имеющих сходную архитектуру, могут выполнять за один машинный цикл команду MAC (умножение с накоплением), для большинства процессоров при оценке производительности в MIPS подразумевается производительность процессора при выполнении команды умножения с накоплением (MAC). Эта величина не учитывает другие свойства процессора, которые на практике могут повлиять на его общую производительность. Если остальные четыре критерия производительности окажутся неудовлетворительными, то высокая производительность процессора при выполнении MAC мало что даст.

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

Повышенная точность

Кроме очевидной необходимости быстрого выполнению операции умножения со сложением (MAC), от DSP требуется высокая точность представления результата в регистре-аккумуляторе. Например, когда перемножаются два 16-битных слова, результат представляется 32-битным словом. Ядро процессоров компании Analog Devices семейства ADSP-21xx с фиксированной точкой имеет встроенный 40-битный аккумулятор, который обеспечивает большой запас суммирования без переполнения. Хотя использование DSP с плавающей точкой автоматически устраняет большинство проблем, связанных с точностью и переполнением, процессоры с фиксированной точкой остаются очень популярными для многих приложений, и поэтому при их использовании нужно обращать достаточное внимание на возможное переполнение, потерю результатов (выход результата операции за пределы разрядной сетки) и масштабирование операндов.

Одновременная выборка двух операндов

Независимо от типа используемого микропроцессора, ограничения в его работе в основном связаны с пропускной способностью шины. В случае микропроцессоров общего назначения или микроконтроллеров, программа в основном состоит из команд, подразумевающих однократное обращение к памяти, обычно адресуемых при помощи сдвига относительно базового адреса. Это заставляет разработчиков микропроцессоров так проектировать систему команд, чтобы фиксированные данные встраивались в код, поскольку такой тип получения операндов является быстрым и эффективным с точки зрения использования памяти. С другой стороны, в DSP преобладают команды, требующие двух независимых обращений к памяти. Данное требование вытекает из самой сути операции свертки (перемножение с суммированием) Eh(i)-x(i). Целью быстрой одновременной выборки двух операндов является необходимость непрерывной загрузки накапливающего умножителя (MAC). При описании MAC мы видели, что быстродействие DSP в основном определяется скоростью MAC. Если мы считаем, что MAC выполняется за приемлемое время, то очевидно, что для каждой операции требуется с той же скоростью подавать на MAC два операнда. Увеличение времени выборки операндов из памяти соответствующим образом отразится на скорости работы MAC. В идеале обращение происходит одновременно с выполнением операции в MAC в одном и том же машинном цикле.

Одновременная выборка двух операндов в DSP осуществляется по двум независимым шинам: шине данных памяти программ и шине данных памяти данных. Кроме того, имеются отдельные шина адреса памяти программ и шина адреса памяти данных. Таким образом, MAC может получать входные данные по каждой шине данных одновременно. Такая архитектура обычно называется гарвардской.

Циклические буферы

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

При последовательных вычислениях произведений коэффициентов КИХ фильтра на отсчеты сигнала доступ к N коэффициентам фильтра осуществляется последовательно от h(0) до h(N-l). Набор отсчетов входного сигнала циркулирует в памяти следующим образом: новый отсчет входного сигнала сохраняется в памяти вместо старого отсчета всякий раз, когда вычисляется выходное значение фильтра. Для такого циркулирующего буфера может использоваться фиксированная область в ОЗУ. Самое раннее значение в памяти заменяется новым после каждого вычисления операции свертки. При этом информация об N последних отсчетах сохраняется в ОЗУ.

В виде буфера в ОЗУ DSP-процессора может быть реализована задержка, если новые значения записываются в память на место старых. Для упрощения адресации памяти старые значения считываются из памяти, начиная со значения, расположенного сразу после того, которое было только что записано. Например, в КИХ-фильтре с четырьмя коэффициентами новый отсчет х(4) записывается в ячейку памяти с адресом 0. Далее чтение данных осуществляется из ячеек с адресами 1,2,3 и 0 в указанном порядке. Этот способ применяется при любом числе звеньев фильтра. При такой адресации ячеек памяти генератор адреса должен выдавать лишь последовательные значения адресов, вне зависимости от того, какая операция с памятью — чтение или запись — осуществляется в настоящий момент. Буфер такого типа называется циклическим, потому что когда при записи достигается последняя ячейка, указатель памяти устанавливается на начало буфера.