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

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

Выборка коэффициентов из памяти осуществляется одновременно с выборкой данных. При рассмотренной схеме адресации самые старые отсчеты извлекаются из памяти первыми. Поэтому последний из коэффициентов должен выбираться из памяти первым. Коэффициенты могут заноситься в памяти в обратном порядке: h(N-1) — в первую ячейку, a h(0) — в последнюю, и генератор адреса в этом случае должен генерировать последовательно возрастающие адреса. И наоборот, коэффициенты могут быть записаны в памяти в нормальном порядке, но доступ к ним при этом должен осуществляться, начиная с конца буфера, а генератор адреса должен генерировать последовательно убывающие адреса.

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

Организация циклов с автоматической проверкой условий

Необходимость поддержки циклов с автоматической проверкой условий завершения вызвана циклическим характером алгоритмов ЦОС. Функция умножения с накоплением и выборка данных повторяются N раз при каждом вычислении типового алгоритма. В традиционных микропроцессорах организация цикла предполагает наличие в заголовке цикла команд для проверки условия окончания цикла. Архитектура DSP-процессоров компании Analog Devices обеспечивает аппаратную поддержку программных циклов без необходимости программной проверки условия продолжения или завершения в теле цикла. Для типичной DSP-архитектуры различие в производительности при аппаратной поддержке цикла с автоматической проверкой условия завершения и при программной проверке условия завершения цикла может превышать 20 % времени выполнения цикла.

Выводы

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

Ядро 16-разрядных DSP с фиксированной точкой СЕМЕЙСТВА ADSP-21XX

В традиционных микропроцессорах используется архитектура Фон Неймана (названную так в честь американского математика Джона Фон Неймана), показанная на рис. 7.4, А.

Эта архитектура состоит из единого блока памяти, в котором хранятся и команды, и данные, и общей шины для передачи данных и команд в ЦПУ и от него. При такой архитектуре перемножение двух чисел требует по меньшей мере трех циклов: двух циклов для передачи двух чисел в ЦПУ, и одного — для передачи команды. Данная архитектура приемлема в том случае, когда все действия могут выполняться последовательно. По сути говоря, в большинстве компьютеров общего назначения используется сегодня такая архитектура.

Однако для быстрой обработки сигналов больше подходит гарвардская архитектура, показанная на рис. 7.4, В. Данная архитектура получила свое название в связи с работами, проведенными в Гарвардском университете под руководством Ховарда Айкена. Данные и код программы хранятся в различных блоках памяти и доступ к ним осуществляется через разные шины, как показано на схеме. Т. к. шины работают независимо, выборка команд программы и данных может осуществляться одновременно, повышая таким образом скорость по сравнению со случаем использования одной шины в архитектуре Фон Неймана. При выполнении умножения с последующим суммированием в КИХ-фильтре за один цикл происходит выборка команды из памяти программ и коэффициента из памяти данных. Второй цикл требуется для выбора слова данных из памяти данных.

На рис. 7.4, С представлена модифицированная гарвардская архитектура, используемая компанией Analog Devices Inc., где и команды, и данные могут храниться в памяти программ. Например, в случае с цифровым фильтром коэффициенты могут храниться в памяти программы, а значения данных — в памяти данных. Поэтому коэффициент и значение данных могут выбираться в одном машинном цикле. Помимо выборки коэффициента из памяти программ и значения отсчета из памяти данных, естественно, должна быть выбрана команда из памяти программы. Цифровые сигнальные процессоры компании Analog Devices решают эту задачу двумя способами. В первом случае к памяти программ обращаются дважды за время цикла. Этот метод использует процессоры семейства ADSP-218x. Во втором случае используется кэш-память программ. В алгоритмах, требующих одновременной выборки двух операндов, программист один массив помещает в память программ, а другой — в память данных. Когда процессор в первый раз выполняет команду, требующую двойного обращения к памяти программ, используется один дополнительный машинный цикл, т. к. необходимо выбрать и команду, и коэффициент с помощью шины данных памяти программ. Однако когда возникает такая проблема, процессор помещает команду в кэш, и в следующий раз, когда требуется эта команда, секвенсер программ извлекает ее из кэш-памяти, в то время как коэффициент поступает по шине данных памяти программ. Кэш программ используется как в семействе процессоров ADSP-219x компании Analog Devices, так и в процессорах семейства SHARC.

Пример реализации цифрового фильтра

После того, как мы представили основные принципы архитектуры процессоров семейства ADSP-21xx, проиллюстрируем простоту ее программирования на примере обычного КИХ-фильтра. Псевдокод программы проектируемого КИХ-фильтра показан на рис. 7.5.

ПСЕВДОКОД ДЛЯ ПРОГРАММЫ КИХ-ФИЛЬТРА С ИСПОЛЬЗОВАНИЕМ DSP С ЦИКЛИЧЕСКИМ БУФЕРОМ

1. Получить значение от АЦП (обычно по прерыванию)

2. Поместить значение в циклический буфер отсчетов входного сигнала





3. Обновить указатель циклического буфера входного сигнала

4. Обнулить аккумулятор

5. Выполнить фильтрацию (один проход цикла для каждого коэффициента)

6. Получить коэффициент из циклического буфера коэффициентов

7. Обновить указатель циклического буфера коэффициентов

8. Получить значение отсчета из циклического буфера отсчетов входного сигнала

9. Обновить указатель циклического буфера отсчетов входного сигнала

10. Умножить коэффициент на значение отсчета

11. Результат сложить с результатом предыдущих вычислений, хранящимся в аккумуляторе

12. Полученный в результате фильтрации отсчет отправить в ЦАП

Пример кода для ADSPxx:

CNTR = N-1;

DO convolution UNTIL CE; convolution:

MR = MR+MX0*MY0(SS), MX0=DM(10,M1), MY0=PM(14,M5)

Рис. 7.5

Цифровые сигнальные процессоры компании Analog Devices выполняют все операции, связанные с реализацией звена фильтра, за один цикл, что существенно повышает эффективность реализации фильтра. Для выполнения цикла не требуется дополнительных команд по проверке условия завершения цикла. Это называется циклом с автоматической проверкой условия завершения цикла (zero-overhead looping). Программа реализации КИХ-фильтра, написанная на языке ассемблера для семейства процессоров ADSP-21xx с фиксированной точкой показана на рис. 7.6.