Ассемблер Atmel AVR
Уровни абстракции
Принстонская архитектура
Гарвардская архитектура
Архитектуры CISC и RISC
Архитектура AVR
Транзистор – всему голова
NAND – основной базис
NOT AND OR XOR базис NAND
Half adder - полусумматор
Full adder - сумматор
Полный 8 битный сумматор
8 битные операции
Защелка выключатель
Дешифратор
Статус результата
Арифметико-логическое устройство
Архитектура AVR
Регистры процессора AVR
Память AVR
NOP – Ничего не делать
LDI – Загрузить значение в регистр
MOV – Копировать регистр
ADD – Сложить без переноса
AVR Studio 4
INC – Инкрементировать
DEC – Декрементировать
SUB – Вычесть без переноса
SUBI – Вычесть значение из регистра
339.56K
Категория: ПрограммированиеПрограммирование

Ассемблер Atmel AVR. Занятие №1: Архитектура AVR, схемотехника ЭВМ

1. Ассемблер Atmel AVR

Занятие №1: Архитектура AVR,
схемотехника ЭВМ.

2. Уровни абстракции

Applicatins
Kernel
Assembler
Firmware
Hardware

3. Принстонская архитектура

Устройства
ввода/вывода
Процессор
Общая
Общая шина
шина данных
данных ии команд
команд
Память
Данные
Команды

4. Гарвардская архитектура

Шина
Шина команд
команд
Память
команд
Процессор
Память
данных
Шина
Шина данных
данных
Устройства
ввода/вывода

5. Архитектуры CISC и RISC

CISC
RISC
Машинные
инструкции
Машинные
инструкции
Преобразование
микрокода
Обработка
инструкций
Микроинструкции
Обработка
микроинструкций

6. Архитектура AVR

Архитекту
ра AVR

7. Транзистор – всему голова

Баз
а
Эмитте
р
Коллекто
р
Транзистор – это кнопка, которая нажимается не
пальцем, а подачей напряжения на Базу, после чего ток
начинает протекать между Коллектором и Эмиттером.

8. NAND – основной базис

VCC
S
A
B
GND
A
B
S
0
0
1
0
1
1
1
0
1
1
1
0

9. NOT AND OR XOR базис NAND

A
B
&
A
B
S
&
&
A
&
&
S
&
B
NOT
OR
&
A
B
S
AND
NAND
A
&
&
&
&
XOR
S
S

10. Half adder - полусумматор

&
A
&
B
&
S
&
C
&
A
0
0
1
1
B
0
1
0
1
S
0
1
1
0
C
0
0
0
1
Полусумматор – суммирует два
входящих бита, получая бит
результата и бит переполнения.

11. Full adder - сумматор

C in
A
Half
adder
B
S
Half
S
adder
A
B
С in
S
C out
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
0
1
1
1
1
0
1
1
0
1
0
0
1
0
0
0
1
0
1
1
1
C out
OR
Сумматор – суммирует два бита
и бит перехода, получая бит
результата и бит переполнения.
A
C in
B
Full
adder
S
C out

12. Полный 8 битный сумматор

0
A1 B1
A2 B2
A8 B8
Full
adder
Full
adder
Full
adder
S1
S2

S8
Итого: для создания полного 8 битного сумматора,
основанного на базисе логических элементов NAND
потребуется 2*((2*5+3)*8) = 208 транзисторов.
C

13. 8 битные операции

B
A
8
8
8-bit
adder
8
B
A
A
8
8-bit
NOT
8
A
8
8
8-bit
AND
8
8

8-bit
LSR
8
S
S
S С
S С
Проводники операндов (8 проводов каждый) можно
подсоединить одновременно к блокам всех операций.
Итого: на 16 входящих проводников, получиться по 8
или 9 проводников с каждой операции, которые
объединить нельзя (монтажный OR).

14. Защелка выключатель

EN
IN
8
Enable
8
OUT
Добавив на выход каждого блока операции по
выключателю, мы можем объединить все выходы получив
16 проводников входов и 8 + 1 выходов, плюс по одному
управляющему проводнику на каждую операцию.

15. Дешифратор

A1 A2 A3
A3 A2 A1 S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8
&
&
&
S1
0 0 1 0 0 0 0 0 0 1 0
S2
S3

&
0 0 0 0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
S8
1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0

16. Статус результата

B
A
8
8
8-bit
adder
S
S
8
8
Negatve

Zeri
8
S
С
N
Z
Из результата операции можно сразу же получить
полезную информацию например (C) переполнение
разряда при сложении или особый блок Zero который
выполняет XOR между всеми 8 проводниками
результата и если он равен 0 то Z = 1.

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

Операнд
Операнд
Статус
Сигналы
управления
АЛУ
Результат
Статус

18. Архитектура AVR

Архитекту
ра AVR

19. Регистры процессора AVR

R0
R0
R1
R1
0x00
0x00
0x01
0x01
Адрес 5 бит


R15
R15
R16
R16
R17
R17
0x0F
0x0F
0x10
0x10
0x11
0x11
Адрес 4 бита


R24
R24
R25
R25
R26
R26
R27
R27
R28
R28
R29
R29
R30
R30
R31
R31
X
Y
Z
0x18
0x18
0x19
0x19
0x1A
0x1A
0x1B
0x1B
0x1C
0x1C
0x1D
0x1D
0x1E
0x1E
0x1F
0x1F
Адрес 2 бита

20. Память AVR

Flash
Flash 16-bits
16-bits
SRAM
SRAM 8-bits
8-bits
EEPROM
EEPROM 8-bits
8-bits
0x0000
0x0000
0x0000
0x0000 РОН
РОН 0x001F
0x001F
0x0000
0x0000
0x0020
0x0020 I/O
I/O 0x005F
0x005F
0x0060
0x0060
Внутренняя
Внутренняя SRAM
SRAM
Память
Память программ
программ
RAMEND
RAMEND
Память
Память EEPROM
EEPROM
RAMEND+1
RAMEND+1
Внешняя
Внешняя SRAM
SRAM
FLASHEND
FLASHEND –– 0xFFFF
0xFFFF
0xFFFF
0xFFFF
EEPROMEND
EEPROMEND –– 0xFFFF
0xFFFF

21. NOP – Ничего не делать

Синтаксис: NOP
0000
Размер: 2 байта
0000
0000
0000
Операнды: –
Счетчик: PC += 1
I
T
H



S

V

Такты: 1
N
Z


C

Определение: Операция выполняется вхолостую, ничего
не происходит.

22. LDI – Загрузить значение в регистр

Синтаксис: LDI Rd, K
1110
Размер: 2 байта
KKKK
dddd
KKKK
Операнды: 16 ≤ d ≤ 31, 0 ≤ K ≤ 255
Счетчик: PC += 1
I
T
H



S

V

Такты: 1
N
Z


C

Определение: Загрузить непосредственное значение из
кода операции в регистр Rd.

23. MOV – Копировать регистр

Синтаксис: MOV Rd, Rr
0010
Размер: 2 байта
11rd
dddd
rrrr
Операнды: 0 ≤ d ≤ 31, 0 ≤ r ≤ 31
Счетчик: PC += 1
I
T
H



S

V

Такты: 1
N
Z


C

Определение: Копирует содержимое одного регистра в
другой регистр. Исходный регистр Rr остается
неизменным, в регистр назначения Rd загружается
копия содержимого регистра Rr.

24. ADD – Сложить без переноса

Синтаксис: ADD Rd, Rr
0000
Размер: 2 байта
11rd
dddd
rrrr
Операнды: 0 ≤ d ≤ 31, 0 ≤ r ≤ 31
Счетчик: PC += 1
I
T
H


+
S
+
V
+
Такты: 1
N
Z
+
+
C
+
Определение: Сложение двух регистров без добавления
содержимого флага переноса (С), размещение
результата в регистре назначения Rd.

25. AVR Studio 4

http://www.atmel.cim/ru/ru/tiils/STUDIOARCHIVE.aspx

26. INC – Инкрементировать

Синтаксис: INC Rd
1001
Размер: 2 байта
010d
dddd
0011
Операнды: 0 ≤ d ≤ 31
Счетчик: PC += 1
I
T
H



S
+
V
+
Такты: 1
N
Z
+
+
C

Определение: Добавление единицы к содержимому
регистра Rd и размещение результата в регистре
назначения Rd.

27. DEC – Декрементировать

Синтаксис: DEC Rd
1001
Размер: 2 байта
010d
dddd
1010
Операнды: 0 ≤ d ≤ 31
Счетчик: PC += 1
I
T
H



S
+
V
+
Такты: 1
N
Z
+
+
Определение: Вычитание единицы из содержимого
регистра Rd и размещение результата в регистре
назначения Rd.
C

28. SUB – Вычесть без переноса

Синтаксис: SUB Rd, Rr
0001
Размер: 2 байта
10rd
dddd
rrrr
Операнды: 0 ≤ d ≤ 31, 0 ≤ r ≤ 31
Счетчик: PC += 1
I
T
H


+
S
+
V
+
Такты: 1
N
Z
+
+
C
+
Определение: Вычитание содержимого регистраисточника Rr из содержимого регистра Rd, размещение
результата в регистре назначения Rd.

29. SUBI – Вычесть значение из регистра

Синтаксис: SUBI Rd, K
0101
Размер: 2 байта
KKKK
dddd
KKKK
Операнды: 0 ≤ d ≤ 31, 0 ≤ K ≤ 255
Счетчик: PC += 1
I
T
H


+
S
+
V
+
Такты: 1
N
Z
+
+
C
+
Определение: Вычитание константы из содержимого
регистра, размещение результата в регистре назначения
Rd.
English     Русский Правила