Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 390

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 384 385 386 387 388 389 < 390 > 391 392 393 394 395 396 .. 528 >> Следующая

модуль М значением от +2 до +32,767 (см. табл. 6.5).
Содержимое регистра адреса ограничивается адресным интервалом размера М,
определяющего верхнюю и нижнюю границы адресов. Величина m = М - 1
сохраняется в регистре модификации (рис. 6.10). Нижняя граница (базовый
адрес) должна содержать нули в К младших значащих битах, где 2К> М и,
следовательно, должна быть умножена на 2К. Верхняя граница = нижняя
граница плюс модуль минус 1.
Начиная с М < 2К, при однажды выбранном М создается последовательная
серия блоков памяти (каждый длиной 2К), в которой размещается циклический
буфер. Если М < 2К, то расстояние между двумя последовательными
циклическими буферами должно быть (2К) - М. Например, для создания
циклического буфера с 21 уровнями (М = 21) нижняя адресная граница должна
иметь пять младших битов, равных 0 (2К > 21, поэтому К > 5). В регистр Мп
загружается значение 20. Нижняя граница может выбираться из величин 0,
32, 64, 96,128,160 и т. д. Верхняя граница буфера равна нижней границе
плюс 21. Таким образом, остается 11 неиспользованных ячеек памяти между
верхним адресом и следующим нижним адресом.
Для указателя адреса не требуется установка на начало нижней границы или
на конец верхней границы адреса - он может быть инициализирован по любому
адресу, входящему в диапазон, определяемый модулем. Также не нужно
запоминать верхнюю или нижнюю границу адресов - сохраняется только
область модуля в Мп (границы определяются содержимым Rn). Использование
косвенного режима адресации (Rn)+ при инкременте адресного регистра после
верхней границы буфера вызывает возврат обратно через базовый адрес
(нижняя граница). Аналогично, использование косвенного режима адресации
(Rn)- при декременте адресного регистра после нижней границы буфера
вызывает возврат через базовый адрес + М - 1.
Указатель
адреса
Цнкличсс кий буфер
Верхняя граница
А
М = модуль Нижняя граница
Рис. 6.10. Циклический буфер
681
ПРОЦЕССОРЫ ЦИФРОВОЙ ОБРАБОТКИ СИГНАЛОВ
?
Рис. 6.11. Линейная адресация с модульной модификацией
(Rn) ± Nn модуль М где Nn = 2К
В случае использования смещения Nn при вычислении адреса 16-битное
абсолютное значение |Nn| должно быть равно или меньше М. Если Nn > М,
результат зависим отданных и непредсказуем, за исключением специального
случая: Nn = Р х 2К, где Р - положительное целое число. Для этого случая,
когда используется режим адресации (Rn) + Nn, указатель Rn будет
перемещаться линейно, к тому же самому относительному адресу в новом
буфере, который находится на Р блоков памяти впереди (рис. 6.11).
Аналогично для (Rn) - Nn указатель будет перемещаться на Р блоков памяти
назад. Эта техника используется при последовательной обработке нескольких
таблиц или N-раз-мерных массивов. Диапазон значений Nn: от -32768 до
+32767. Устройство модульной арифметики автоматически перемещает
указатель адреса на требуемую позицию. Этот тип модификации адреса
используется для создания циклических буферов FIFO, линий задержки и
простых буферов длиной до 32786 слов. Специальный случай (Rn) + Nn по
модулю М с Nn = Р х 2К используется для обработки одинаковых алгоритмов в
памяти, т. е. для параллельных вычислений КИХ-фильтров. Пример модульной
адресации показан на рис. 6.12. Начиная с позиции 64, создается
циклический буфер с 21 уровнями. Нижняя граница = L х (2К), где 2К> 21,
таким образом, К = 5 и нижняя граница адресов должна быть умножена на 32.
Нижняя граница выбирается из значений 0, 32, 64, 96,128, 160 и т. д. В
данном примере L = 2 и нижняя граница адресов равна 64.
Верхняя граница буфера равна 84 (нижняя граница + 20 (М - 1)). Регистр
смещения выбирается равным 15 (Nn < М). Указатель адреса не нужно
устанавливать на начало нижней границы адресов. В данном примере
указатель устанавливается на позицию 75. Если R2 постинкрементируется со
смещением при выполнении инструкции MOVE, указатель, который установился
бы на позицию 90 для линейной адресации, вернется на позицию 69. Если
указатель инкрементируется после верхней границы буфера [базовый адрес
плюс (М - 1)], он возвращается на базовый адрес. Если указатель адреса
декрементируется после нижней границы буфера, он возвращается на базовый
адрес плюс (М - 1). Если Rn находится вне корректного диапазона буфера и
выполняется операция, требующая модификации Rn, содержимое Rn
модифицируется в соответствии с правилами модульной арифметики. Например,
инструкция MOVE B0,X:(R0) + N0 (где RO = 6, МО =
= 5, N0 = 0) не требует явной модификации регистра. Однако, если R0 выше
верхней границы, вычисляется новое содержимое R0 =
= R0 + N0 - МО -1 и R0 устанавливается в "0".
Модификатор реверсивного переноса.
Реверсивный перенос выбирается, если регистр модификации установлен в
"0". Модификация адреса осуществляется аппаратно -переносом в обратном
направлении: из старших битов в младшие биты. Реверсивный перенос
эквивалентен реверсии битов содержимого Rn и величины смещения Nn,
сложению и реверсии битов результата. Если используется режим адресации
Предыдущая << 1 .. 384 385 386 387 388 389 < 390 > 391 392 393 394 395 396 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed