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

МП

.pdf
Скачиваний:
12
Добавлен:
23.06.2024
Размер:
1.33 Mб
Скачать

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

При сохранении содержимого 16 - разрядных регистров процессора в

24 - разрядном ОЗУ программ и при чтении из ОЗУ программ в 16 -

разрядные регистры задействуется СМО - схема межшинного обмена,

обеспечивающая размещение 16 - разрядных данных в старших разрядах ячеек ОЗУ программ, а младшие разряды при этом доступны через 8 -

разрядный регистр РХ, входящий в состав СМО.

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

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

3. Вычислительные устройства и система их команд

3.1Арифметико – логическое устройство АЛУ

Структурная организация АЛУ иллюстрируется схемой рис. 2.

Узел ALU поддерживает выполнение арифметических и логических операций по трехадресной системе над 16 - разрядными операндами xop и yop с занесением результата операций в регистры AR или AF. В качестве операнда xop может быть использовано содержимое регистров АХ0, АХ1

или любого другого регистра, имеющего выход на шину результата R; эти регистры указаны в таблице xop на рис. 2. В качестве операнда yop может

11

быть использовано содержимое регистров AY0, AY1 или AF, указанных в таблице yop на рис. 2.

Рис. 2 начало

12

Рис. 2 окончание

На кристалле процессора размещены два комплекта регистров AX0, AY0, AX1, AY1, AR и AF (показано на схеме дополнительным контуром).

Один из комплектов называется основным; доступ к нему устанавливается автоматически по рестарту процессора. Второй, - теневой или

13

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

ena sec_reg;

Обратный переход к основному комплекту регистров - командой

dis sec_reg;

В результате выполняемых в АЛУ операций формируются признаки:

AZ - нулевого результата операции;

AN - отрицательного результата операции;

AV - переполнения разрядной сетки АЛУ;

AC - переноса;

AS - отрицательного значения операнда xop при выполнении операции вычисления его абсолютного значения;

AQ - признак, используемый операцией деления.

Значения признаков сохраняются до следующего выполнения процессором команды АЛУ, обновляющей признаки.

Командой

ena av_latch;

может быть установлен режим защелки признака AV; в этом режиме сброс признака AV выполняемыми командами запрещается. Сброс режима защелки осуществляется командой

dis av_latch ;

Почти все команды АЛУ имеют формат условных. Коды условий,

допустимых к применению в операциях АЛУ, приведены на рис. 3. Условная команда исполняется процессором, если выполняется указанное в ней

14

условие. Если условие не выполняется, команда пропускается. Если условие в команде не указывается, она выполняется как безусловная.

Рис. 3

Система команд АЛУ наглядна и не требует подробных пояснений.

Так, например, если по условиям решения задачи необходимо выполнить операцию "исключающее ИЛИ" над операндами, записанными в регистрах

AR и AY1 и записать результат в регистр AR, следует использовать команду:

ar = ar xor ay1;

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

15

операндов - выполнение операций - запись результата. Таким образом,

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

Если же, например, необходимо сложить два 32 -разрядных числа,

одно из которых записано в регистрах АХ1 (старшие разряды) и АХ0 (младшие), а второе - в регистрах AY1 (старшие разряды) и AY0 (младшие),

то следует выполнить команды:

af = ax0 + ay0; {сложение младших разрядов}

ar = ax1 + ay1 + c; {сложение старших разрядов}

{с переносом из младших }

Регистры AY1 и AY0 допускают обмен содержимым (сохранение и загрузку) с любым регистром, а также с ячейками ОЗУ данных и ОЗУ программ; регистры AX1, AX0 и AR - только с регистрами и ячейками ОЗУ данных (показано на схеме рис. 2 стрелками: DM - ОЗУ данных и PM - ОЗУ программ при регистрах).

Сохранить содержимое регистра AR в ОЗУ данных можно, например,

командой:

dm(номер_или_символическое_имя_ячейки) = ar;

а принять в регистр AY1 информацию с внешних цепей через параллельный порт ввода / вывода IO (0) - командой

ay1 = IO(0);

(подробно эти вопросы будут рассмотрены далее).

Содержимое регистра AF не может быть непосредственно сохранено ни в других регистрах, ни в ОЗУ программ, ни в ОЗУ данных; аналогично регистр AF не может быть непосредственно загружен из памяти или других регистров.

Загрузка регистра AF может быть осуществлена с помощью какой -

либо арифметической или логической операции, например

16

af = pass ax1;

или

af = ay0 - 0;

Аналогичным образом содержимое регистра может быть при необходимости сохранено через регистр AR.

ar = pass af;

при этом команда pass, как и любая другая арифметическая операция,

обновляет значения признаков.

АЛУ поддерживает битовые операции над операндами типа хор: setbit - установка указанного в команде бита в 1;

clrbit - сброс бита в 0; tglbit - инверсия бита.

Команда tstbit выполняет функцию логического "И" над операндом хор и двоичной комбинацией, содержащей нули во всех разрядах, кроме указанного в команде, значение которого принимается равным 1.

Обычно такая команда используется для анализа значения какого -

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

Битовые операции, также, как и операции с константами, не могут быть использованы в команде NONE = <ALU>, которая предназначена для формирования комплекта признаков (например, при сравнении операндов)

без изменения содержимого какого бы то ни было регистра.

Команды DIVS и DIVQ служат для реализации знакового и беззнакового деления 32 разрядного операнда на 16 разрядный в дробном или целочисленном представлении. Эти же команды могут быть использованы и для деления операндов большей длины, например, 64

разрядного операнда на 32 разрядный.

17

Операция деления на переменную в классической интерпретации двоичной арифметики предполагает вычисление значения частного при заданных значениях делимого и делителя. Применительно к штатным функциям системы команд процессора ADSP-2181 16-разрядное частное вычисляется как результат 16-командной операции деления (читатель может ознакомиться с ними, например, в [ 4 ]) 32-разрядного делимого на 16-

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

На рисунке 4 представлена компактная программа, реализующая вычисление обратного значения.

//подпрограмма вычисления обратного значения

//16-разрядного операнда в беззнаковом формате

//исходноее значение Х -> AR

//результат 1/Х -> AY0

//задействованы регистры АХ1, AF, ASTAT

//признак невозможности деления - AV

.section/pm program; delen: ax1=0;

af=pass ax1; ay0=0xffff; astat=0;

//предотвращение деления на 0

 

ar=pass ar;

 

if eq jump rav0;

 

divq ar; divq ar; divq ar; divq ar;

 

divq ar; divq ar; divq ar; divq ar;

 

divq ar; divq ar; divq ar; divq ar;

 

divq ar; divq ar; divq ar; divq ar;

 

rts;

rav0:

astat = 4;

 

rts;

 

Рис. 4

 

18

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

Программа написана на языке ассемблера процессора ADSP-2181,

ориентированном на использование пакета отладки VisualDSP++,

демонстрационная версия которого доступна на сайте фирмы Analog Devices.

Правила написания программ на этом языке будут рассмотрены далее в разделе 4.

Важной в плане задач цифровой обработки сигналов особенностью работы АЛУ процессора ADSP-2181 является встроенная возможность ограничения результата по переполнению разрядной сетки при записи результата в регистр AR. Активизация этой функции в программе осуществляется командой

ena ar_sat;

ее активность сохраняется до тех пор, пока не будет выполнена команда

dis ar_sat;

или не произойдет выход из прерывающей подпрограммы, если функция была активизирована при ее выполнении.

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

превышающий значение 32767 (десятичное), автоматически заменяется на число 32767 (самое большое положительное число, представимое в рамках разрядной сетки), а отрицательный, превышающий по модулю 32768 (десятичное), - на минус 32768.

С точки зрения техники цифровой обработки сигналов, например, при цифровой фильтрации, описанная функция эквивалентна действию ограничителя больших амплитуд; она позволяет заменить искажения

19

перегрузки на нелинейные искажения типа ограничения и в этом смысле весьма полезна.

3.2 Умножитель Функциональная и структурная организации умножителя показаны на

рис. 5; в целом они подобны организации АЛУ.

Умножитель поддерживает функцию вычисления 32 - разрядного произведения 16 разрядных операндов xop и yop, и, при необходимости,

алгебраическое суммирование вычисленного произведения с содержимым

40 - разрядного накопителя, составленного из регистров MR2 (старшие разряды), MR1 (средние) и MR0 (младшие).

В качестве источников операндов xop могут быть указаны регистры

MX0, MX1, а также любой регистр, имеющий выход на шину результата R,

их список приведен в таблице xop на рис. 5. В качестве источников операнда yop могут быть указаны регистры MY0, MY1 и MF, перечисленные в таблице yop. Аналогично АЛУ, поддерживаются операции пересылок содержимого между регистрами MY0 и MY1 и любыми другими регистрами, ячейками ОЗУ данных (DM) и ОЗУ программ (РМ), а также между регистрами MX0 и MX1, MR2, MR1 и MR0 и любыми другими регистрами или ячейками ОЗУ данных (DM). Регистр MF, аналогично регистру АF, недоступен для операции пересылки.

При вычислении произведения его разряды выравнивается относительно регистров MR1 (старшие разряды), и MR0 (младшие). Правила выравнивания разрядов при вычислении произведения различаются для целых и дробных чисел.

20

Соседние файлы в предмете Микропроцессорная техника в инфокоммуникациях