Скачиваний:
106
Добавлен:
16.04.2013
Размер:
79 Кб
Скачать
☆

Специальные виды адресации

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

Циклическая адресация

Адресацию операнда называют циклической (wraparound) если исполнительный адрес вычисляется по правилам модульной арифметики.

Циклическая адресация осуществляется на основе циклического буфера. Этот буфер представляет собой набор ячеек в памяти данных, обращение к которой производится циклически, т.е. за последней ячейкой буфера как бы находится первая ячейка буфера, а перед первой ячейкой – как бы находится последняя ячейка. Таким образом, не зависимо от значения смещения, исполнительный адрес всегда будет находиться внутри этой области.

Границы буфера

Память данных

Адреса ячеек буфера

П редельная

Относительные

Абсолютные

2K - 1

Base+2K - 1

В ерхняя

L

Base + L

L - 1

Base + L -1

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

M

1

Base + 1

Н ижняя

0

Base

Рис. $.1. Схема циклического буфера

На рис. $.1 показан такой буфер. Он характеризуется физическим адресом первой ячейки Base, количеством ячеек L и количеством меняющихся разрядов K, которое равно log2L округленному к большему целому. Иными словами 2K-1 < L  2K. Базовый адрес Base хранится в специальном регистре, причем его младшие K разрядов – нули.

Если для обращения к операнду требуется эффективный адрес ЕА, то исполняемый адрес Addr вычисляется по формуле:

Addr = Base + (EA-Base) mod L, если EABase,

Addr = Base + L + (EA-Base) mod L, если EA<Base.

Таким образом, всегда будет соблюдаться соотношение:

Base Addr < Base + L

Пример циклической адресации.

Пусть размер циклического буфера М=90, тогда К=7, поскольку

64=27-1 < 90 < 28=128

Пусть начальный адрес Base=128, тогда верхняя граница равна 128+90-1=217. Пусть относительный исполняемый адрес L=37 (т.е. абсолютный адрес равен 128+37=165), а инкремент при выполнении команды циклической адресации N=15, тогда после четырёх выполнений команды циклической адресации исполняемый адрес будет меняться так:

1)

Addr = 128 + ((165-128+15) mod 90) = 128+(52 mod 90) = 180

2)

Addr = 128 + ((180-128+15) mod 90) = 128+(67 mod 90) = 195

3)

Addr = 128 + ((195-128+15) mod 90) = 128+(82 mod 90) = 210

4)

Addr = 128 + ((210-128+15) mod 90) = 128+(97 mod 90) = 135

Обратите внимание, что здесь (M mod N)=0, т.е. инкремент кратен размеру буфера, т.о. при повторном заполнении циклического буфера данные укладываются на те же самые места. Это позволяет программам выборки данных из буфера, не обращать внимания на номер цикла заполнения буфера.

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

Бит-реверсивная адресация

Адресацию операнда называют бит-реверсивной (bit-reversed), если исполнительный адрес вычисляется по правилам бит-реверсивной арифметики. Эта арифметика используется только при обработке целых положительных чисел. В результате выполнения операции бит-реверсии биты двоичного числа оказываются переставленными в обратном порядке. Например, 0111(2)=7(10) после операции бит-реверсии станет равным 1110(2)=14(10).

Бит-реверсивная арифметика применяется в алгоритмах быстрого преобразования Фурье (БПФ) по основанию 2, когда количество исходных отсчётов L=2k. В частности, при реализации алгоритмов БПФ с прореживанием по времени, последовательность исходных отсчётов должна быть расставлена в бит-реверсивном порядке. Пример, для 8-точечного БПФ (L=8) приведен в табл. $.1.

Таблица $.1.

Бит-реверсия исходных отсчётов в 8-точечном БПФ.

Номер отсчёта

Очередь в выборке

Десятичная

Двоичная

0 (000)

0

000

1 (001)

4

100

2 (010)

2

010

3 (011)

6

110

4 (100)

1

001

5 (101)

5

101

6 (110)

3

011

7 (111)

7

111

Таким образом, при бит-реверсивной адресации с инкрементом, в процессоре выполняются следующие действия:

  • Бит-реверсия k младших битов в регистре адреса.

  • Инкремент содержимого регистра адреса.

  • Повторная бит-реверсия k младших битов в регистре адреса.

7