II. Thiết kế phần cứng
2. Khối xử lý và điều khiển
2.2 Cấu trúc bộ nhớ:
Bộ nhớ chương trình là bộ nhớ Flash, dung lượng là 8k, được tổ chức 4kx16 bit. Bộ nhớ chương trình được truy nhập theo từng chu kỳ đồng hồ, và một lệnh được nạp vào thanh ghi lệnh. Thanh ghi lệnh nối với tệp 32 thanh ghi bằng cách lựa chọn xem thanh ghi nào sẽ được ALU sử dụng để thực thi lệnh. Lối ra của thanh ghi lệnh được giải mã bằng bộ giải mã lệnh để quyết định chọn tín hiệu nào sẽ được kích hoạt để hoàn thành lệnh hiện tại.
Bộ nhớ chương trình bên cạnh các lệnh lưu trữ, cũng chứa các vector ngắt bắt đầu từ địa chỉ $0000h. Chưong trình hiện tại sẽ bắt đầu ở vị trí phía bên kia vùng dùng cho các vetor ngắt. AVR có 13 vector ngắt như sau:
Địa chỉ Vector Giải thích
$0000 Reset ;Reset handler
$0001 EXT_INT0 ;IRQ0 handler
$0002 XT_INT1 ;IRQ1 handler
$0003 ETIM_CAPT ;Timer1 capture handler $0004 TIM1_COMA ;Timer1 compareA handler $0005 TIM1_COMB ;Timer1 compareB handler $0006 TIM1_OVF ;Timer1 over flow handler $0007 TIM0_OVF ;Timer0 oveflow handler $0008 SPI_STC ;SPI transfer complate handler $0009 UART_RxC ;UART Rx complate ;handler $000A UART_DRE ;UART UDR empty handler $000B UART_TxC ;UART Tx complate handler $000C ANA_COMP ;Analog compare handler
Bộ nhớ dữ liệu có tất cả 5 phần khác nhau:
Một tệp thanh ghi (register file) với 32 thanh ghi 8 bit từ R0÷R31.
64 thanh ghi vào ra (I/O), mỗi thanh 8 bit.
Bộ nhớ SRAM bên trong, có dung lượng 512 byte. Bộ nhớ SRAM được sử dụng cho ngăn xếp cũng như để lưu trữ các biến. Trong thời gian ngắt và đoạn gọi chưng trình con, giá trị hiện tại của con trỏ chưng trình được lưu trữ trong ngăn xếp. Kích thước của ngăn xếp phụ thuộc vào SRAM trên chip. Vị trí của ngăn xếp được chỉ bởi con trỏ ngăn xếp. Con trỏ ngăn xếp là thanh ghi có độ dài 2 byte. Con trỏ ngăn xếp cần được khởi tạo sau khi reset, và trước khi ngăn xếp được sử dụng.
Bộ nhớ SRAM bên ngoài, sử dụng các cổng để truy nhập bộ nhớ và dữ liệu bên ngoài.
EEPROM được truy nhập theo bn đồ bộ nhớ riêng. AVR 908535 có 512 EEPROM, địa chỉ bắt đầu từ $000. Việc đọc EEPROM diễn ra nhanh hơn việc ghi vào. có thể ghi được 100,000 lần.