Выбрать главу

В дополнение к требованиям по быстрому выполнению арифметических действий, 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 в указанном порядке. Этот способ применяется при любом числе звеньев фильтра. При такой адресации ячеек памяти генератор адреса должен выдавать лишь последовательные значения адресов, вне зависимости от того, какая операция с памятью — чтение или запись — осуществляется в настоящий момент. Буфер такого типа называется циклическим, потому что когда при записи достигается последняя ячейка, указатель памяти устанавливается на начало буфера.