Арифметико-логическое устройство

Арифметико-логическое устройство

Арифметико-логическое устройство (АЛУ) выполняет все вычислительные операции в микропроцессорной системе. Непосредственно к АЛУ подключены 32 РОНа (регистровый файл), как показано на рис.8.

Рис.8 Арифметико-логическое устройство

В большинстве операций любой из этих регистров может использоваться в качестве источника входных данных либо приемника результата. При этом все арифметические и логические команды над РОНми имеют вид подобный  add Rd,Rs. За названием мнемоники, которая описывает действие (addition – сложение), следуют два параметра (операнда). В данном случае это регистры  Rd (destination – приемник) и Rs (source – источник),  содержимое которых необходимо сложить между собою. Сумма будет размещена по адресу регистра Rd.

Таким образом, сложить любые два регистра можно двумя разными способами: add R16,R17 (сложить R16 с R17 и поместить сумму в R16) или add R17,R16 (сложить R17 с R16 и поместить сумму в R17). Причем выборка содержимого регистров, сложение и сохранение результата займет всего 1 период тактовой частоты.

Что касается, арифметических и логических действий над регистром и константой, то в целом они подобны действиями между РОНми. Однако в этих целях могут использоваться только старшая половина регистрового файла. Например, в команде вычитания константы из регистра subi Rd,K в качестве Rd могут выступать только регистры R16…R31.

В состав АЛУ микроконтроллеров семейства ATmega входит также 2-тактный аппаратный умножитель 8×8 бит, который способен работать как с беззнаковыми так и со знаковыми числами представленными в дополнительном коде. Во всех разновидностях операции умножения, 16-разрядное произведение помещается в регистры R1 (старший байт) и R0 (младший байт).

Регистры R26…R31 у AVR имеют двойное предназначение. Они могут быть использованы как три 16-разрядных указателя, которые имеют символьные имена X (XH:XL = R27:R26), Y (YH: YL = R27:R26), Z (ZH: ZL = R27:R26) и применяются для задания адресов ячеек SRAM в различных командах пересылки данных (ld Rd,X/Y/Z, st X/Y/Z,Rd и т.д.). Указатель Z, кроме этого, необходим инструкциям lpm/spm при чтении/записи FLASH-память программ. Регистры X и Y отсутствуют в некоторых устаревших моделях ATtiny.

АЛУ любого микропроцессора неразрывно связано с регистром флагов программы (регистр состояния программы), который у AVR имеет название SREG (Status Register) и расположен в пространстве РВВ. Описание битов SREG приведено в табл.4. Все флаги SREG доступны как для чтения, так и для записи.

Табл.4. Флаги регистра состояния программы SREG:

Номер битав регистре Название флага Описание
0 C Флаг переноса. Устанавливается в 1 если в результате операции произошел выход за границы байта.
1 Z Флаг нуля. Устанавливается в 1 если результат операции равен нулю.
2 N Флаг отрицательного результата. В этот флаг копируется содержимое 7-мого MSB результата операции.
3 V Флаг переполнения в дополнительном коде. Устанавливается в 1 при переполнении разрядной сетки знакового результата.
4 S Флаг знака. Содержимое флага определяется как N XOR V.
5 H Флаг половинного переноса. Устанавливается в 1 если в результате операции сложения/вычитания произошел перенос/заем из 3-тего бита в 4-тый.
6 T Флаг хранения копируемого бита. Флаг используется в качестве источника и приемника командами копирования битов bld и bst соответственно.
7 I Флаг глобального разрешения прерываний. При установке в 1 этого флага происходит разрешение всех немаскируемых прерываний.

Флаг Z является показателем нулевого результата во всех вычислительных операциях. Флаги С и H используются преимущественно для связи байтов в процессе сложения/вычитания (флаг С также в сдвиговых операциях). Биты N,S и V необходимы для знаковых вычислений. Флаг T – источник и приемник в командах копирования битов bld/bst, но может быть использован и как дополнительная ячейка для хранения любой пользовательской информации (флаг пользователя). Последний флаг I, в отличие от всех остальных, не связан с результатами вычислительных операций либо операций пересылок и предназначен для глобального разрешения/запрета прерываний.


Категория: Микроконтроллеры
Метки:

Написать коментарий

*
= 5 + 5

Добавить изображение

Последние статьи