Двоичная cтрока. Арифметика ALU. Арифметические и логические операции. Арифметика Сдвигателя

Страницы работы

Содержание работы

Представление чисел  и  арифметика  в ADSP-2101     (раздел 4.3.4 в DSP-LAB)

ADSP-2101 - компьютер   16-разрядный  с фиксированной  точкой.  Отсюда всё следует.

Формы представления чисел:

Двоичная cтрока

Это - самая простая двоичная запись; шестнадцать бит обрабатываются как набор независимых бит.

Примеры операций, использующих этот формат - логические операции: НЕ, И, ИЛИ и исключающее ИЛИ (неравнозначность).  Эти операции в ALU обрабатывают операнды как двоичные строки, не обращая внимания на  знаковый разряд или  размещение точки.  Главное - логические операции выполняются в каждом разряде независимо (т. е. без переносов).

Числа без знака

Имеют величины от 0x0000 = 0               = 00000000000000002

до 0xFFFF = 65535      = 11111111111111112.

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

Числа со знаком в дополнительном коде

Большинство операций ADSP- 2101 предполагает или поддерживает арифметику в дополнительном  коде. Главное  свойство  дополнительного  кода:  -А =   Диапазон представляемых чисел от  0x7FFF = 32767     = 01111111111111112

до  0x8000 = -32768    = 10000000000000002.

Разделительная точка находится справа и такой формат обозначается  16.0 (“шестнадцать точка нуль”).

Дробное представление: 1.15

ADSP-2101 оптимизирован для арифметических значений в дробном двоичном формате, обозначаемом 1.15 ("один точка пятнадцать").  Это - формат для чисел со знаком с фиксированной точкой.  Старший бит - знаковый разряд, и пятнадцать бит дроби представляют значения от 0x7FFF = примерно +1               = 0.1111111111111112

до 0x8000 = -1                                  = 1.0000000000000002

Здесь младший разряд имеет вес 1/215 = 3.1*10-5

Арифметика ALU

Все операции в ALU трактуют операнды и результаты как простые двоичные строки с 16 битами, за исключением деления (DIVS).  Возникающие признаки позволяют рассматривать результаты как знаковые: признак переполнения (AV) и признак отрицательного результата (AN - соответствует  1 в старшем разряде)

Логика признака переполнения (AV) основана на свойствах дополнительного кода. Он установлен (т.е. = 1), если старший бит изменяется вопреки  знаку операндов и характеру операции.  Например, сложение двух положительных чисел должно давать положительный результат; нарушение в знаковом разряде соответствует переполнению и устанавливает AV = 1.  Прибавление отрицательной величины может приводить или к отрицательному или положительному результату, но не может вызывать переполнение.

Логика признака переноса (AC) основана на беззнаковом представлении чисел.  Он установлен в 1, если возник перенос из старшего бита.

Операции ALU

Эта группа содержит арифметические и логические операции. Выполните следующие команды.

AX0 = 3;

AY0 = 5;

AR = AX0 + AY0;

Первая команда помещает десятичное число 3 в регистр AX0,  вторая помещает десятичное число 5 в регистр AY0.  Наблюдайте окно регистров, когда эти команды выполнены.  Заданный по умолчанию режим для содержимого регистров шестнадцатеричный.  Используйте короткое меню, чтобы переключаться между шестнадцатеричным и десятичным форматами.  Третья команда складывает AX0 и AY0 и помещает результат в регистр AR.  Регистр AR теперь примет значение 8 и все признаки  будут очищены (ASTAT=0).

Теперь выполните команду вычитания.

AF = AX0 - AY0;

Регистр AF изменяется на 0xFFFE (шестнадцатеричное) или -2 (десятичное число).  Признак AN установится в 1, т.к. результат  отрицательный. 

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

AX1 = 0x7FFF;

AYI = 0x7FFF;

AR = AX1 + AY1;

AX1 и AY1 установлены в 32767. Регистр AR после сложения изменяется на 0xFFFE, т.е. 65534, но интерпретируется как -2 в дополнительном коде.  Это сигнализирует  о переполнении и переключает признак AN.  Следовательно, AV и AN установятся в 1.

AX0 = 0x9000;

AY0 = 0xA000;

AR = AX0 + AY0;

В AX0 установлено -28672, в  AY0 установлено -24576.  После 0x9000 + 0xA000 = 0x13000, AR изменяется на 0x3000 или 12288. Признаки переполнения и  переноса AV и AC установятся в 1, но AN изменится на 0 (понятно почему).

AX0 = 0;

AY0 = 0;

AR = AX0 +AY0+ C;

Последняя инструкция складывает AX0 и AY0 наряду с битом переноса C.  После того, что было установлено последней командой, AR равен 1 и все признаки очищены.

Пробуйте выполнять другие ALU команды и получать различные признаки ALU.

Арифметика  MAC

Умножитель выдаёт результаты, которые являются двоичными строками.  Операнды интерпретируются согласно информации, содержащейся в самой команде  (знаковый на знаковый, беззнаковый на беззнаковый, разные знаки или округление).  32-битовый результат умножителя  полагается знаковым, в котором знак расширен до полной 40-битной ширины набора регистров MR, состоящего из MR2, MR1 и MR0.

ADSP-2101 поддерживает два режима:

·  дробный режим для дробных операндов формата 1.15 (1 бит знаковый, 15 бит дроби).  При умножении 1.15 операндов получают результат формата 2.30 (30 бит дроби).  Чтобы поправить дело, в дробном режиме выполняют сдвиг влево между умножителем (P) и регистром результата умножения (MR).  Этот сдвиг (1 бит влево) изменяет формат результата на 1.31, который можно округлить до 1.15, не используя младшие разряды.

Похожие материалы

Информация о работе