Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

07

.pdf
Скачиваний:
30
Добавлен:
09.04.2015
Размер:
1.43 Mб
Скачать

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

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

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

Выводы

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

16-разрядный DSP серии ADSP-21xx с фиксированной точкой

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

АРХИТЕКТУРА МИКРОПРОЦЕССОРА

а:

память:

Шина адреса

 

ЦПУ

 

данных

 

 

Архитектура

и команд

Шина данных

 

 

Фон Нейманна

 

 

 

 

 

 

 

 

 

 

 

 

 

б:

память

Шина адресов

 

ЦПУ

Гарвардская

программ:

ПП

 

 

 

архитектура

только

Шина данных

 

 

команды

ПП

 

 

 

 

Шина адресов ПД

Шина данных ПД

память данных: только данные

в:

память

Шина адреса

ЦПУ

Шина адреса

Модиф. ADI

програм:

ПП

 

 

ПД

команды

Шина данных

буфер

 

Шина данных

Гарвардская

и данные

 

архитектура

ПП

команд

 

ПД

 

 

 

 

память данных: только данные

Рис.7.4

такую архитектуру. Однако, для ускорения процесса обработки сигналов, более удобна гарвардская архитектура, показанная на рис. 7.4,б. Данная архитектура получила свое название в честь работы, проведенной в Гарвардском университете под руководством Ховарда Айкена. Данные и код программы хранятся в различных блоках памяти и доступ к ним осуществляется через разные шины, как показано на рис. Т.к. шины работают независимо, выборка

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

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

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

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

непосредственно исполняемые команды (7 строк), остальная часть текста – дополнительные комментарии, введенные для ясности. Первая команда, помеченная fir, инициализирует вычисления, очищая регистр MR и загружая первый элемент данных и значение коэффициента из памяти данных и памяти программ соответственно в регистры MX0 и MY0. Затем N-1 раз в N-1 циклах производится умножение с накоплением и автоматической проверкой условия завершения цикла для вычисления суммы первых N-1 каскадов фильтра. Последняя команда умножения с накоплением производится с округлением с точностью до 24 старших разрядов регистра MR. Далее регистру MR1 может быть присвоено либо максимально возможное, либо минимально возможное значение в пределах разрядной сетки в зависимости от значения флага переполнения, содержащегося в регистре MV. Таким образом, результат накапливается с точностью, соответствующей 40 разрядам регистра MR, при этом насыщение возникает, если только конечный результат вызывает переполнение младших 32 разрядов регистра MR.

Блок-схема реализации КИХ-фильтра при использовании DSP с циклическим буфером

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

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

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

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

5.Осуществить расчет фильтра (один проход цикла для каждого коэффициента)

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

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

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

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

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

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

12. Отправить отфильтрованное значение в ЦАП

ADSPxx Example code:

CNTR = N-1;

DO convolution UNTIL CE; convolution:

MR = MR+MX0*MY0(SS), MX0=DM(I0,M1), MY0=PM(I4,M5)

Рис. 7.5

Программа расчета КИХ-фильтра, реализованная на языке ассемблера процессоров семейства ADSP-21XX

.MODULE

fir_sub;

{

FIR Filter Subroutine

 

Calling Parameters

 

I0

--> Oldest input data value in delay line

 

I4

--> Beginning of filter coefficient table

 

L0

= Filter length (N)

 

L4

= Filter length (N)

 

M1,M5 = 1

 

CNTR = Filter length - 1 (N-1)

 

Return Values

 

MR1 = Sum of products (rounded and saturated)

 

I0

--> Oldest input data value in delay line

 

I4

--> Beginning of filter coefficient table

 

Altered Registers

 

MX0,MY0,MR

 

Computation Time

 

(N - 1) + 6 cycles = N + 5 cycles

 

All coefficients are assumed to be in 1.15 format. }

.ENTRY

fir;

 

fir:

MR=0, MX0=DM(I0,M1), MY0=PM(I4,M5)

 

CNTR = N-1;

 

convolution:

DO convolution UNTIL CE;

MR=MR+MX0*MY0(SS), MX0=DM(I0,M1), MY0=PM(I4,M5);

 

MR=MR+MX0*MY0(RND);

 

IF MV SAT MR;

RTS;

.ENDMOD;

Рис. 7.6

Архитектура DSP семейства ADSP-21xx (рис.7.7) оптимизирована для цифровой обработки сигнала и других высокоскоростных приложений. Данное семейство DSP включает ядро семейства ADSP-2100 (три вычислительных блока, адресные генераторы, устройство управления выполнением команд), два синхронных последовательных порта, программируемый таймер, развитую систему обработки прерываний, встроенную статическую память программ и данных. Существуют также версии с встроенным ПЗУ.

Архитектура ядра процессора ADSP-21XX

 

 

 

Регистр

 

Генератор

Генератор

 

команд

 

КЭШ

Упр-е

 

адреса

адреса

 

№1

№2

 

командами

 

 

 

 

 

Шина PMA

 

 

 

 

Шина DMA

 

 

 

 

Шина PMD

 

Блок

 

 

 

 

обмена

 

 

Шина DMD

 

между шинами

 

Iвх. рег.

вх.

рег.

вх.

рег.

АЛУ

МАС

рег. сдвига

вых. рег.

вых.

рег.

вых.

рег.

 

 

Шина результата

Рис.7.7

Гибкая архитектура процессоров семейства ADSP-21xx и соответствующий набор команд позволяют достичь высочайшей степени параллелизма при выполнении операций. За один цикл DSP семейства ADSP-21xx может сгенерировать адрес следующей команды программы, выбрать следующую команду, выполнить 1 или 2 перемещения данных, обновить 1 или 2 указателя адреса, выполнить вычислительную операцию, передать или принять данные от двух последовательных портов и обновить регистр таймера.

Архитектура DSP семейства ADSP-21xx

Шины

Адрес памяти программы (PMA)

Адрес памяти данных (DMA)

Данные памяти программы (PMD)

Данные памяти данных (DMD)

Результат (R)

Вычислительные блоки

Арифметическо-логическое устройство (АЛУ)

Умножитель с накоплением (МАС)

Устройство сдвига

Адресные генераторы Устройство управления выполнением команд

Периферийные устройства на кристалле

Статическое ОЗУ программ или ПЗУ

Статическое ОЗУ доступа данных

Последовательные синхронные порты

Таймер

Хост-интерфейс порт

Порт DMA

Рис. 7.8

Шины

Процессоры семейства ADSP-21xx имеют пять внутренних шин для повышения эффективности передачи данных. Шины адреса памяти программы

(PMA) и адреса памяти данных (DMA) используются одновременно для адресации в пределах адресных пространств памяти программ и памяти данных. Шины данных памяти программ (PMD) и шина данных памяти данных (DMD) используются для передачи данных из соответствующих областей памяти. При выводе шин на корпус за пределы кристалла они объединяются в одну внешнюю шину адреса и в одну внешнюю шину данных; области памяти выбираются соответствующими сигналами управления. Шина результата (R) используется для пересылки промежуточных результатов напрямую между различными вычислительными блоками.

14-разрядная шина PMA позволяет получить прямой доступ к 16К слов памяти программ. Шина DMD является 16-разрядной. Она обеспечивает доступ к содержимому любого регистра процессора для передачи его в любой другой регистр или любую ячейку памяти данных за один цикл. Адрес памяти данных может поступать от двух источников: абсолютное значение, содержится в коде команды (прямая адресация) или на выходе адресного генератора (косвенная адресация). Для выборки данных из памяти программ используется только косвенная адресация.

Шина данных памяти программы (PMD) может также использоваться для передачи данных между вычислительными блоками напрямую или через блок обмена между шинами PMD-DMD. Блок обмена между шинами PMD-DMD позволяет передавать данные от одной шины к другой. Он содержит технические средства, которые позволяют, когда это необходимо, преодолевать 8-разрядное различие между двумя шинами.

В памяти программ могут храниться как команды, так и данные, позволяя DSP семейства ADSP-21xx одновременно осуществлять выборку двух операндов в одном цикле, один из памяти программы, а другой из памяти данных. Команды поступают либо прямо из памяти программ путем осуществления двойного доступа в одном машинном цикле (процессоры серии ADSP-218xx), либо из кэш-памяти программ (в процессоре серии ADSP-219x и Sharc).

Вычислительные блоки (АЛУ, МАС, регистр сдвига)

Процессор содержит три независимых вычислительных блока: арифметикологическое устройство (АЛУ), умножитель с накоплением (МАС) и устройство сдвига. Вычислительные блоки способны обрабатывать 16-разрядные данные и могут поддерживать вычисления с повышенной точностью. АЛУ обладает флагом переноса CI, который позволяет поддерживать 32-разрядные арифметические действия.

АЛУ обеспечивает стандартный набор арифметических и логических функций: сложение, вычитание, смену арифметического знака, инкремент, декремент, получение абсолютного значения, логическое И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ и инверсию. Также поддерживаются примитивы деления.

Свойства арифметико-логического устройства (АЛУ)

Сложение, вычитание, смена арифметического знака, инкремент, декремент, получение абсолютного значения, логическое И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ и инверсия

Операторы работы с битами и константами

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

Примитивы деления

Функция насыщения для защиты от переполнения

Вспомогательный набор регистров для переключения контекста за один машинный цикл

Примеры команд:

IF EQ AR = AX0 + AY:

AF = MR1 XOR AY1:

AR = TGLBIT 7 OF AX1:

Рис.7.9

МАС способен выполнять за один машинный цикл операции умножения, умножения/сложения и умножения/вычитания. Он также содержит 40разрядный аккумулятор, который обеспечивает дополнительные 8 разрядов для накопления результата без потери информации; данное решение допускает возникновение 256-ти переполнений, прежде чем произойдет потеря данных. Специальные команды обеспечивают поддержку блочной плавающей точки, при которой одна экспонента приписывается некоторому набору данных. Для ускорения обработки прерываний в МАС также может использоваться набор вспомогательных регистров. Если после окончания процедуры обработки сигнала установлен флаг МV, это означает, что регистр результата содержит слово, длина которого больше 32 разрядов. В этом случае значение,

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]