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

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

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

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

Адресацию операнда называют циклической (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

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

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