Архитектура микроконтроллеров AVR

Основой микроконтроллера является арифметико-логическое устройство (ALU) и файл регистров общего назначения.

Файл регистров быстрого доступа, содержит 32 8-разрядных рабочих регистра общего назначения связанных непосредственно с ALU. За один тактовый цикл из файла регистров выбираются два операнда, выполняется операция и результат вновь возвращается в файл регистров.

Шесть из 32 регистров могут быть использованы как три 16-разрядных регистра указателя косвенной адресации адресного пространства данных, обеспечивающие эффективное вычисление адресов. Один из этих указателей адреса используется, также, как указатель адреса для функции непрерывного просмотра таблиц. Эти 16-разрядные дополнительные регистры обозначаются X-регистр, Y-регистр и Z-регистр.

ALU поддерживает арифметические и логические операции между регистрами или между константой и регистром. Выполняются в ALU и операции с отдельными регистрами. На Рис. 4 показана AVR расширенная RISC архитектура микроконтроллеров ATmega603/103.

AVR

Рис. 4. архитектура микроконтроллеров AVR.

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

Пространство памяти I/O содержит 64 адреса периферийных функций CPU таких как: регистры управления, таймеры/счетчики, аналого-цифровые преобразователи и другие I/O функции. К памяти I/O можно обращаться непосредственно или как к ячейкам пространства памяти соответствующим адресам регистра файлов $20 - $5F.

В микроконтроллерах AVR использованы принципы Гарвардской архитектуры - отдельные память и шины для программ и данных. При работе с памятью программ используется одноуровневый конвейер - в то время, как одна команда выполняется, следующая команда выбирается из памяти программ, Такой прием позволяет выполнять команду в каждом тактовом цикле. Памятью программ является внутрисистемно программируемая Flash память. За малым исключением AVR команды имеют формат одного 16-разрядного слова, в связи с чем каждый адрес памяти программ содержит одну 16-разрядную команду.

В процессе обработки прерываний и вызовов подпрограмм адрес возврата счетчика команд (PC) сохраняется в стеке. Стек размещается в SRAM данных и, следовательно размер стека ограничен только общим размером SRAM и уровнем ее использования. Все пользовательские программы в подпрограммах возврата (прежде, чем подпрограммы или прерывания будут выполняться) должны инициализировать указатель стека (SP). 16-разрядный указатель стека, с возможностью чтения/записи располагается в пространстве I/O.

AVR архитектура поддерживает пять различных режимов адресации 4000 байт SRAM данных.

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

Все пространства памяти AVR архитектуры линейны и регулярны.

Файл регистров общего назначения

На Рис. 5 представлена структура 32 регистров общего назначения.

Регистры

Рис. 5. Регистры общего назначения CPU микроконтроллеров AVR

Все регистровые команды обращаются непосредственно к регистрам в течение одного тактового цикла. Исключением являются пять логических и арифметических операций с константами (SBCI, SUBI, CPI и ANDI) и операция ORI между константой и содержимым регистра, и команда непосредственной загрузки константы LDI. Эти команды используют вторую половину регистров регистрового файла - R16..R31.

Самые общие команды SBC, SUB, CP, AND и OR и все прочие операции между двумя регистрами или с одним регистром используют для записи результата регистровый файл.

Как показано на Рис. 5, каждому регистру соответствует адрес памяти данных, отображающий их в первых 32 ячейках пользовательского пространства данных. Хотя они не используются как физические ячейки SRAM, такая организация памяти обеспечивает гибкое обращение к регистрам, поскольку X, Y и Z регистры могут быть использованы для индексации любого регистра в файле.

SRAM данных имеет объем 4 Кбайт и занимает адресное пространство от $0060 до $0FFF.

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

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

Регистр статуса - SREG

Регистр статуса - SREG - размещен в пространстве I/O по адресу $3F ($5F) и его биты определяются как:

Биты

7

6

5

4

3

2

1

0

$3F ($5F)

I

T

H

S

V

N

Z

C

REG

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Начальное состояние

0

0

0

0

0

0

0

0

*  Bit 7 - I: Global Interrupt Enable - Разрешение глобального прерывания.
Бит разрешения глобального прерывания для разрешения прерывания должен быть установлен в состояние 1. Управление разрешением конкретного прерывания выполняется регистрами маски прерывания GIMSK и TIMSK. Если бит глобального прерывания очищен (в состоянии 0), то ни одно из разрешений конкретных прерываний, установленных в регистрах GIMSK и TIMSK, не действует. Бит I аппаратно очищается после прерывания и устанавливается для последующего разрешения глобального прерывания командой RETI.

*  Bit 6 - T: Bit Copy Storage - Бит сохранения копии.
Команды копирования бита BLD (Bit LoaD) и BST (Bit STore) используют бит T как бит источник и бит назначения при операциях с битами. Командой BST бит регистра регистрового файла копируется в бит T, командой BLD бит T копируется в регистр регистрового файла.

*  Bit 5 - H: Half Carry Flag - Флаг полупереноса
Флаг полупереноса указывает на полуперенос в ряде арифметических операций. Более подробная информация приведена в описании системы команд.

*  Bit 4 - S: Sign Bit, S = N V - Бит знака
Бит S всегда находится в состоянии, определяемом логическим исключающим ИЛИ (exclusive OR) между флагом отрицательного значения N и дополнением до двух флага переполнения V. Более подробная информация приведена в описании системы команд.

*  Bit 3 - V: Two’s Complement Overflow Flag - Дополнение до двух флага переполнения
Дополнение до двух флага V поддерживает арифметику дополнения до двух. Более подробная информация приведена в описании системы команд.

*  Bit 2 - N: Negative Flag - Флаг отрицательного значения
Флаг отрицательного значения N указывает на отрицательный результат ряда арифметических и логических операций. Более подробная информация приведена в описании системы команд.

*  Bit 1 - Z: Zero Flag - Флаг нулевого значения
Флаг нулевого значения Z указывает на нулевой результат ряда арифметических и логических операций. Более подробная информация приведена в описании системы команд.

*  Bit 0 - C: Carry Flag - Флаг переноса
Флаг переноса C указывает на перенос в арифметических и логических операциях. Более подробная информация приведена в описании системы команд.

Указатель стека - Stack Pointer - SP

Микроконтроллеры AVR оснащены 16-разрядным указателем стека, размещенным в двух регистрах пространства I/O по адресам $3E ($5E) и $3D ($5D). Поскольку микроконтроллеры ATmega603/103 поддерживают объем SRAM до 64 Кбайт, то используются все 16 разрядов указателя стека.

Указатель стека указывает на область в SRAM данных, в которой размещаются стеки подпрограмм и прерываний. Объем стека в SRAM данных должен задаваться программой перед каждым вызовом подпрограммы и обработкой разрешенного прерывания. Указатель стека декрементируется на единицу, при каждом занесении командой PUSH данных в стек, и на две единицы при занесении данных в стек подпрограммой CALL и прерыванием.

Указатель стека инкрементируется на единицу, при извлечении данных из стека командой POP, и на две единицы при извлечении данных из стека при возврате из подпрограммы (RET) или возврате из прерывания (IRET).

Биты

15

14

13

12

11

10

9

8

$3E ($5E)
$3D ($5D)

SP15

SP14

SP13

SP12

SP11

SP10

SP9

SP8

SP7

SP6

SP5

SP4

SP3

SP2

SP1

SP0

SPH
SPL

7

6

5

4

3

2

1

0

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Начальное состояние

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0


ПРИЛОЖЕНИЕ: ТАБЛИЦА 1

N

2N

2-N

1

2

0,5

2

4

0,25

3

8

0,125

4

16

0,0625

5

32

0,03125

6

64

0,015625

7

128

0,0078125

8

256

0,00390625

9

512

0,001953125

10

1024

0,0009765625

11

2048

0,00048828125

12

4096

0,000244140625

13

8192

0,0001220703125

14

16384

0,00006103515625

15

62768

0,000030517578125

16

65536

0,0000152587890625

17

131072

0,00000762939453125

18

262144

0,000003814697265625

19

524288

0,0000019073486328125

20

1048576

0,00000095367431640625

21

4194304

0,000000476837158203125

22

8388608

0,0000002384185791015625

23

16777216

0,00000011920928955078125

24

33554432

0,000000059604644775390625

25

67108864

0,0000000298023223876953125

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14