You are on page 1of 32

Chƣơng 2

KIẾN TRÚC PHẦN CỨNG


ATmega324P

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
KIẾN TRÚC VI ĐIỀU KHIỂN AVR

FLASH SRAM EPROM TIMERs


ROM

Program bus Address bus


CPU Data bus
Control bus

Interrupt Others
Ports Peripherals
Unit

IO PINS

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
CÁC NHÓM THUỘC HỌ AVR
- Classic AVR (AT90Sxxxx): AT90S2313, AT90S4433
- Mega AVR (ATmegaxxxx): ATmega8, ATmega16, ATmega32,..
- Tiny AVR (ATtinyxxxx): ATtiny13, ATtiny25
- Nhóm mục đích đặc biệt (special purpose):thêm các ứng dụng như bộ điều
khiển USB, LCD: AT90PWM216, AT90USB128
- Xmega: một số đặc tính thêm vào như DMA, DAC, mật mã..

ROM RAM EEPROM Số chân Bộ Số chân


IC ADC
chƣơng trình dữ liệu dữ liệu I/0 định thời Loại vỏ

ATmega8 8K 1K 0.5K 23 8 3 TQFP32, PDIP28


ATmega16 16K 1K 0.5K 32 8 3 TQFP44, PDIP40
ATmega32 32K 2K 1K 32 8 3 TQFP44, PDIP40
ATmega64 64K 4K 2K 54 8 4 TQFP64, MLF64
Atmega1280 128K 8K 4K 86 16 6 TQFP100, CBGA

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
SƠ ĐỒ CHÂN & ĐÓNG GÓI VI MẠCH
Chƣơng 2
SƠ ĐỒ CHÂN & ĐÓNG GÓI ATMEGA 324P

Dạng vỏ PDIP
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chƣơng 2
SƠ ĐỒ CHÂN & ĐÓNG GÓI ATMEGA 324P

Dạng vỏ TQFP/VQFN/QFL/MLF

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
CẤU TRÚC CPU

R0
ALU R1
CPU R2

SREG: I T H S V N Z C ….
R15
PC R16

IR R30
R31
Instruction Decoder
REGs

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
MẠCH DAO ĐỘNG

F=(0.416)MHz ; F=(0.40.9)MHz :cộng hƣởng gốm

Fmax=20MHz

DAO ĐỘNG NỘI RC


F=1MHz hoặc 8MHz

Tần số hoạt động đƣợc lựa chọn bằng việc lập trình cho các bit cầu chì.
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chƣơng 2
PHÂN BỐ CÁC XUNG NHỊP

AVR Clock
Control Unit

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
KHỐI RESET

INTERNAL RESET
EXTERNAL
RESET

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
KHỐI RESET NGOÀI

KHỐI
RESET NGOÀI

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
TỔ CHỨC BỘ NHỚ AVR

FLASH SRAM EPROM


ROM
(CODE)
CPU
Address bus
Program bus Data bus
Control bus

KIẾN TRÚC HAVARD


Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chƣơng 2
TỔ CHỨC BỘ NHỚ ATMEGA 324P

SRAM
EEPROM(1KB)
1K x 8

SRAM-DATA(2KB)
2K x 8

FLASH-CODE(16KW)
16K x 16

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
BỘ NHỚ EPROM

- ATmega324P có 1KB bộ nhớ dữ liệu


EEPROM có địa chỉ từ 0x0000 -
0x03FF.
- EEPROM chịu được ít nhất 100,000
EEPROM chu kỳ ghi/xóa.
(1KB) - Bộ nhớ EEPROM được sử dụng để
lưu trữ dữ liệu ít khi bị thay đổi và
không bị mất khi tắt nguồn.
- Để truy xuất vùng nhớ này cần sử
dụng các thanh ghi điều khiển
EEPROM: EECR, EEAR và EEDR
sẽ trình bày kỹ trong phần tập lệnh.

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
CÁC THANH GHI ĐA DỤNG GPRs

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
CÁC THANH GHI ĐA DỤNG - GPRs

SRAM ADDR LDI Rd,K


32 GPRs 0x00-0x1F {Rd  K}
64 I/O REGs 0x20-0x5F (d:1631,K:0255(FFH))
IO:0x00-0x3F
160 Ext I/O REGs 0x60-0xFF
MOV Rd,Rr
0x100 {Rd  Rr}
Internal SRAM (d,r:031)
DATA
MOVW Rd+1:Rd, Rr+1:Rr
0x8FF MOVW Rd, Rr
Lƣu ý: các ký hiệu định dạng cho K
{Rd+1:Rd  Rr+1:R}
0255 (Decimal) d,r(0,2,…28,30)
00b11111111(Binary)
00xFF hoặc $FF(Hex)
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chƣơng 2
CÁC THANH GHI XUẤT NHẬP CƠ BẢN – I/O Rs

SRAM ADDR
32 GPRs 0x00-0x1F
64 I/O REGs 0x20-0x5F IN Rd,P {Rd  P }
IO:0x00-0x3F (d:031, P:0 63)
160 Ext I/O REGs 0x60-0xFF
0x100 OUT P,Rr {P  Rr }
Internal SRAM
(r:031, P:0 63)
DATA 00-3F

0x8FF
Lƣu ý: Các thanh ghi SFRs thuộc vùng IO cơ bản, khi dùng
bằng tên trong toán hạng sẽ được trình biên dịch ánh xạ theo địa
chỉ của IO.
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chƣơng 2
CÁC CỔNG XUẤT NHẬP– IO PORTs

FLASH Generals SRAM EPROM TIMERs


ROM Purpose
Registers

Address bus
CPU Data bus
Control bus

Interrupt Others
Ports Peripherals
Unit

IO PINS

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
CÁC CỔNG XUẤT NHẬP– IO PORTs

IO PORTs: A B C D
FLASH Generals SRAM EPROM TIMERs
ROM Purpose
Registers

Address bus
CPU Data bus
Control bus

Interrupt Others
Ports Peripherals
Unit

IO PINS

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
CẤU TRÚC IO PORTs & CÁC T.GHI ĐIỀU KHIỂN

VD: viết đoạn lệnh để cài đặt PortA có


DDRxn: nhập, chọn
chức năng t.ghi hướng
có điện trở kéo lên,
PortC thực hiện chức năng xuất.
{1: xuất, 0: nhập}
Giải:
PORTxn: t.ghi xuất
LDI
PINxn:R16,0
t.ghi nhập
OUT DDRA,R16
LDI 1: có điện trở kéo lên
R16,0xFF
OUT PORTA,R16
0: không có điện trở
OUT DDRC,R16
x=( A, B, C, D) – n: 07
kéo lên.

Lƣu ý: nếu bit PUD của t.ghi MCUCR bằng 1 thì tín hiệu ở
các chân port luôn ở trạng thái tổng trở cao.
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chƣơng 2
CÁC THANH GHI I/O MỞ RỘNG & VÙNG DATA

SRAM ADDR
32 GPRs 0x00-0x1F
64 I/O REGs 0x20-0x5F LDS Rd,k {Rd  (k) }
160 Ext I/O REGs 0x60-0xFF
0x100
STS k,Rr {(k)  Rr }
Internal SRAM (d,r:031,
DATA
k:0 8FF)

0x8FF

Lƣu ý: Các thanh ghi IORs không có địa chỉ IO sử dụng các
thao tác lệnh như là 1 ô nhớ trong vùng DATA của SRAM.
Bài giảng môn Vi xử lý
GV: Lê Thị Kim Anh
Chƣơng 2
VÙNG STACK
Vùng lưu trữ thông tin tạm thời(dữ liệu hoặc địa chỉ), được quản lý bởi con trỏ
SP- Stack Pointer(16bit=SPH:SPL). Hoạt động theo nguyên tắc LIFO(Last In
First Out).
Sử dụng các lệnh PUSH, POP trên tập thanh ghi GPRs.

SRAM ADDR Cần khởi động SP khi sử dụng


32 GPRs 0x00-0x1F vùng STACK
64 I/O REGs 0x20-0x5F LDI R16,HIGH(RAMEND)
160 Ext I/O REGs 0x60-0xFF ;lấy byte cao của RAMEND
0x100
OUT SPH,R16
;lưu vào SPH
Internal SRAM LDI R16,LOW(RAMEND)
DATA ;lấy byte thấp
OUT SPL,R16
0x8FF(RAMEND) ;lưu vào SPL

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
HOẠT ĐỘNG VÙNG STACK
Giả sử ban đầu: SP = 0x08FF, R20 = 0x2A, R21 = 0x95, R22 = 0x4C.

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
VÙNG FLASH ROM(CODE) - WORD

FLASH ROM
(CODE-16KW)

Lƣu ý: Việc phân


vùng được thiết lập
bởi các bit trong
byte cao cầu chì.

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
TỔ CHỨC VÙNG FLASH ROM(CODE) - WORD

- Dữ liệu trong AVR sắp xếp theo nguyên tắc Little Endian.
- Mỗi địa chỉ trong FLASH gồm 2 byte.
VD: Một dữ liệu gồm 4 byte là 0xABCD1234 được cất trong FLASH bắt
đầu từ địa chỉ $2000 sẽ được sắp xếp như sau:

Addr HIGH LOW


0x0000

…………. …………. ………….

0x2000 12 34
0x2001 AB CD

…………. …………. ………….

0x7FFF(FLASHEND)

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
Cách tạo dữ liệu trong VÙNG FLASH ROM
FLASH ROM
Addr HIGH LOW
OPCODE
0000 EF 0F
EF0F
0001 2F 40
2F40
0002 0C FF
0CFF
0003 00 41
0041
… … …
….
Biên dịch
… … …
ABCD
2000 AB CD

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
Nguyên tắc truy cập VÙNG FLASH ROM

Sử dụng PP gián
tiếp qua thanh
ghi Z và lệnh
LPM

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
Nguyên tắc truy cập VÙNG FLASH ROM
- Các lệnh trong vùng Flash:

LPM {R0  (Z) }

LPM Rd,Z {Rd  (Z) }

LPM Rd,Z+ {Rd  (Z), Z Z+1}

d:031, Z:03FFF
Zmax:FFFF

VD: Địa chỉ cần truy xuất 0x2000 0 010 0000 0000 0000
Xác định nội dung nạp cho Z?
Truy xuất byte thấp  Z=0x4000 0100 0000 0000 000 0
Truy xuất byte cao  Z=0x4001 0100 0000 0000 000 1

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
Nguyên tắc truy cập VÙNG FLASH ROM
Chương trình thực hiện

Tạo data

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
THỰC THI CHƢƠNG TRÌNH
AVR thực thi chương trình theo kiến trúc pipeline

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
THỰC THI CHƢƠNG TRÌNH
Ví dụ: Chƣơng trình đơn giản thực hiện phép cộng 2 toán hạng
trong 2 thanh ghi R16 và R17. Kết quả cất vào ô nhớ có địa chỉ
0x100 ($100) trong SRAM.

FLASH
0000 e005
0001 e019
0002 ef01
0003 0100
0004 9300
…..
….

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh
Chƣơng 2
THỰC THI CHƢƠNG TRÌNH

FLASH SRAM
R0
0000 e005 ……
R1 0100
0001
0002
e019
ef01
ALU R2 0101
0003 0100 … …..
0004 9300 ….
….. CPU R15
….
SREG: I T H S V N Z C
R16 Address bus
R17 Data bus
PC 0000
Control bus
….
Program bus IR R31

Instruction Decoder REGs

Bài giảng môn Vi xử lý


GV: Lê Thị Kim Anh

You might also like