11주차 주차
ATmega128
ATmega128의 의 구조와 구조와 메모리 메모리
1. ATmega128
1. ATmega128의 의 특징 특징
고성능, 저전력의 8비트 마이크로컨트롤러
진보된 RISC 구조
•
대부분 단일 클럭에서 실행되는 강력한 133개의 명령어 구조•
16MHz에서 거의 16MIPS로 동작•
32개의 8 bit 범용 작업 레지스터와 추가된 주변장치 제어 레지스터•
2 사이클 내에서 수행되는 강력한 곱셈기 내장 메모리
•
프로그램을 읽고 쓸 수 있는프로 램을 읽고 쓸 수 있는 128KB의 플래시 프로그램메모리128KB의 플래시 프로그램메모리 내장내장•
4Kbytes의 EEPROM 내장•
4Kbytes의 내부 SRAM 내장•
플래시 프로그램메모리는 10,000번, EEPROM은 100,000번 읽기/쓰기 가능•
64Kbytes까지 확장가능한 외부 메모리 기능 제공•
ISP를 위한 SPI 제공 주변 장치 (Peripherals)
•
2개의 8 bit 타이머/카운터와 2개의 16 bit 타이머/카운터 지원•
외부 오실레이터에 의한 실시간 카운터•
6개의 PWM 채널•
8채널, 10비트 ADC (Analog to Digital Converter) 내장•
다양한 방식의 통신지원: USART, SPI, TWI래밍 가능한 와치독 hd 타이머 지원
•
프로그래밍 가능한 와치독(Watchdog) 타이머 지원•
아날로그 비교기 지원 특수 기능
•
파워-온 리셋(Power-On Reset)과 브라운 아웃(Brown-Out) 검출 기능•
RC 오실레이터에 의한 내부 발진 지원•
외부/내부 인터럽트 소스 지원•
6개의 슬립(Sleep) 모드 지원 JTAG(IEEE 표준 1149.1 호환) 인터페이스 지원
•
JTAG 표준에 따르는 바운더리 스캔(Boundary-Scan)과 호환•
온- 칩 디버그(On-Chip Debug) 지원•
JTAG 인터페이스를 통한 플래시, EEPROM, 퓨즈, 락 비트 설정 입출력 및 패키지 타입
•
53개의 입출력 가능한 핀53개의 입출력 가능한 핀•
64핀의 TQFP (Thin Quad Flat Package) 와 QFN/MLF 타입 지원•
작동 전압 (Operating Voltage: V작동 압 ( p g g CCCC) )• ATmega128 4.5 ~ 5.5V (5.0V)
• ATmega128L 2.7 ~ 5.5V (3.3V)
•
동작 속도• ATmega128 0 ~ 16MHz
• ATmega128L 0 ~ 8MHz
• ATmega128L 0 ~ 8MHz
2. ATmega128
2. ATmega128의 의 구조 구조
외부구조
블록도
핀 기능
기본회로 내부구조
레지스터
명령어 수행 타이밍ATmega128
ATmega128의 의 블럭도 블럭도
입출력장치
메모리 주변장치
그림
그림 22--5 ATmega128 5 ATmega128의 의 전체 전체 핀 핀
Pin #1 Identifier
외부 핀 분류 및 기능
외부 핀은 크게 CPU Core의 기본회로와 GPIO 또는 부가기능을 지원하기
외부 핀은 크게 CPU Core의 기본회로와 GPIO 또는 부가기능을 지원하기 위한 기능으로 구분
CPU Core의 기본회로 전원, 리셋, 클럭 관련 회로를 구성하기 위해 11
CPU Core의 기본회로 전원, 리셋, 클럭 관련 회로를 구성하기 위해 11 개의 핀으로 모든 AVR 마이크로컨트롤러에 반드시 존재
이를 제외한 나머지 53개의 핀들은 GPIO (범용 입출력) 기능 또는 부가기이를 제외한 나머지 53개의 핀들은 G O (범용 입출력) 기능 또는 부가기 능(Alternate function)으로 동작 예제) 핀 48의 이름 PA3(AD3)
PA3: GPIO 기능 일반 범용 입출력포트 기능으로 포트 A의 비트 3번 핀
PA3: GPIO 기능 일반 범용 입출력포트 기능으로 포트 A의 비트 3번 핀
AD3: 부가기능 Address/Data 3외 메 리 사용시 어 레 동작
외부 메모리 사용시 어드레스 3으로 동작
표
표 22--3 ATmega128 3 ATmega128의 의 핀 핀 요약 요약
번호 분류 핀 이름 설 명 개수
1 전원관련핀전원관련핀 VCC, GND, AVR 구동전원 핀구동전원 핀 4
2 리셋관련핀 /RESET 리셋 입력 핀 1
3 클럭관련핀 XTAL1, XTAL2 외부 클럭 입력 핀 2
4 ADC관련핀 AVCC, AREF, AGND ADC 전원핀, 기준전압 핀, 접지 핀 3 PORTA7~PORTA0 PORTA 범용 입/출력 핀 8 PORTB7~PORTB0 PORTB 범용 입/출력 핀 8 PORTC7~PORTC0 PORTC 범용 입/출력 핀 8 5 외부 입/출력 핀 PORTD7 PORTD0 PORTD 범용 입/출력 핀 8 5 외부 입/출력 핀 PORTD7~PORTD0 PORTD 범용 입/출력 핀 8 PORTE7~PORTE0 PORTE 범용 입/출력 핀 8 PORTF7~PORTF0 PORTF 범용 입/출력 핀 8 PORTF7~PORTF0 PORTF 범용 입/출력 핀 8 PORTG4~PORTG0 PORTG 범용 입/출력 핀 5 6 프로그래밍 제어 /PEN래밍 제어 / 프로그래밍 이네이블 핀래밍 이네이블 핀 1
계 64
그림
그림 22--6 ATmega128 6 ATmega128의 의 외부 외부 구조 구조
전원
ADC
ADC 클럭
리셋
PEN
리셋
포트별
포트별 부가기능 부가기능 ((표 표 22--5: 5: 기능별 기능별, , 표 표 22--4: 4: 번호별 번호별))
기본기능 부가기능
PORT A • External memory interface address and data 7 ~ 0 PORT B • SPI interface
• Timer/Counter 0, Timer/Counter 1, Timer/Counter 2 PORT C External memory interface address 15 8
PORT C External memory interface address 15 ~ 8
PORT D • External Interrupt 0~3
• Timer/Counter 1, Timer/Counter 2
• TWI Interface, UART1
• Internal memory Programming, UART0
• Analog Comparator PORT E Analog Comparator
• External Interrupt 4~7
• Timer/Counter 3
C i 0
PORT F • ADC input 7 ~ 0
• JTAG interface PORT G • RTC Oscillator PORT G
• External memory Control bus (WR, RD, ALE)
ATmega128 기본 회로 구성
전원 회 반 시 필
•
전원 회로 : 반드시 필요•
리셋 회로 : 사용시 필요•
외부 클럭 회로 : 사용시 필요 (내부 클럭을 쓰는 경우도 있음)•
ADC 전원회로 : 사용시 필요•
ADC 전원회로 : 사용시 필요•
기타 사용자가 필요한 경우 회로가 추가됨ex) 모터 드라이버 회로, LED 드라이버 회로 등
그림
그림 22--7 ATmega128 7 ATmega128의 의 내부 내부 구조 구조
그림
그림 22--8 ATmega128 8 ATmega128의 의 CPU CPU 코어 코어 블록 블록 다이어그램 다이어그램
1 5
C언어
2 3
A = 2 ;
프로그램C언어A = 2 ; 2
X = A – 3 ;
4
5
CPU Core
CPU Core 구성 구성
CPU Core를 구성하는 주요 레지스터
ALU (Arithmetic Logical Unit): 산술논리장치
SREG (Status Register): 상태레지스터
PC (Program Counter): 프로그램 카운터
SP (Stack Pointer): 스택 포인터
General Purpose Register: 범용 레지스터
프로세서 레지스터 (Register) CPU Core 내에서 자료를 보관하는 아주 빠른 기억 장소
CPU Core 내에서 자료를 보관하는 아주 빠른 기억 장소
일반적으로 현재 계산을 수행중인 값을 저장하는 데 사용
대부분의 프로세서는 메인 메모리(DRAM)에서 레지스터로 데이터를 옮겨와 데 이터를 처리한 후 그 내용을 다시 레지스터에서 메인 메모리로 저장하는 로드- 스토어 설계를 사용
레지스터는레지 터 메모리 계층의 최상위에 위치하며, 가장 빠른 속도로 접근 가능한메 리 계 의 최 위에 위치하며 가 빠 속 가 메모리
ALU (Arithmetic Logical Unit): 산술논리장치
32개의 범용 레지스터와 직접 연결되어 있고, 단일 클럭에 레지스터 연 산을 행산을 수행
ALU의 연산: 산술, 논리, 비트
산술(Arithmetic) 연산 4칙연산 + x /
산술(Arithmetic) 연산 4칙연산 +, - , x, /
논리(Logical) 연산: AND, OR, NOT
비트(Bitwise) 연산: >> << AND OR NOT
비트(Bitwise) 연산: >>, <<, AND, OR, NOT 프로그램 카운터 (PC: Program Counter) g
프로그램의 실행 위치(주소)를 나타내며, 16비트로 표현
16비트로 표현 가능한 최대 주소 216 64KB
16비트로 표현 가능한 최대 주소 216 = 64KB
명령어는 2바이트 단위로 표현되므로
프로그램 메모리의 최대 영역은 64KB * 2Byte = 128KB
상태 레지스터 (Status Register SREG)
ALU가 가장 최근에 실행한 산술 연산 명령의 결과와 상태를 표시하는 레지스터가 가장 최 에 행 명 의 과와 상태를 시하 레지 터
어셈블리어(Assembler)로 프로그래밍할 때 주로 사용
그림 2-9
From Register
C언어 프로그램
2 3
A = 2 ;
C언어 프로그램
ALU I T H S V N Z C
SUB
SREG
X = A – 3 ;
ALU
To Data Bus
I T H S V N Z C SUB
-1
범용 레지스터
프로그램 수행 중 중간 결과나 데이터를 일시적으로 저장할 때 사용되는 메모리
R0부터 R31까지 32개의 8 bit 범용 레지스터
R26부터 R31은 2개씩 결합하여 16 비트 레지스터로 사용 X, Y, Z 레지스터
이는 데이터 메모리의 위치를 지정하는 어드레스 포인터로 사용
이는 데이터 메모리의 위치를 지정하는 어드레스 포인터로 사용
X i t (16비트)
X-register (16비트)
Y-register
Z-register
그림 2-10
스택 포인터 (Stack Pointer SP)
서브루틴 호출이나 인터럽트가 발생하였을 때 다시 돌아올 복귀 주소를 저장하는 메 리 S 내부의 일정 영역을 활용
메모리로 SRAM 내부의 일정 영역을 활용
스택은 LIFO(Last In, First Out) 구조
메모리의 상위 번지에서 차례대로 하위번지로 저장
메모리의 상위 번지에서 차례대로 하위번지로 저장
스택 포인터는 항상 스택 공간의 상단(TOP) 주소를 가리키는 16 bit 레지스터
명령어: PUSH, POP
그림 2-11
그림
그림 22--12 12 명령어 명령어 패치와 패치와 명령어 명령어 실행 실행
2-stage Pipelining (파이프라인)
RISC 구조의 명령어로 단일 클럭에서 실행구 의 명령어 단일 클럭에서 실행
nth
Instruction Fetch +(n-1)th
Instruction Execute Performance of 1MIPS/MHz /
t 램 메 리 부터 명령어를 미리 읽어옴 f h
1st stage 프로그램 메모리로부터 명령어를 미리 읽어옴 (Pre-fetch) 결과적으로 명령어 해석, 범용 레지스터에 Operand 저장 1 t 에서 해석된 명령어에 따라 O d를 읽어옴
1st stage ALU에서 해석된 명령어에 따라 Operand를 읽어옴
2nd stage ALU에서 해석된 명령어에 따라 연산 실행
3 d 연산 결과를 레지 터와 메 리에 저장
3rd stage 연산 결과를 레지스터와 메모리에 저장Bit Bit name
I Global Interrupt Enable
T Bi C S
T Bit Copy Storage H Half Carry Flag
TOP
S Sign Flag
V Overflow Flag V Overflow Flag N Negative Flag
Stack
Z Zero Flag
C Carry Flag
Stack
3. ATmega128
3. ATmega128의 의 메모리 메모리 구조 구조
내부 플래시 메모리: 사용자가 작성한 프로그램의 실행 파일을 저장
내부 SRAM: 사용자가 작성한 프로그램의 실행 과정에서 생성되는 정보 저장
외부 SRAM: 내부 SRAM이 부족하여 확장할 경우에만 추가하여 사용 가능
내부 EEPROM: 영구적으로 저장할 필요성이 있는 데이터를 저장 표 2 6번호 기능별
(Functional) 물리적
(Physical) 내/외부 휘발성
(Volatile) 용량 (Capacity)
표 2-6
(Functional) (Physical) (Volatile) (Capacity) 1 Program Memory Flash Internal No 128KB
2 SRAM I l Y 4KB
2
Data Memory
SRAM Internal Yes 4KB
3 SRAM External Yes 60KB
4 EEPROM Internal No 4KB
그림
그림 22--14 ATmega128 14 ATmega128의 의 전체 전체 메모리 메모리 하버드 하버드 구조 구조
그림
그림 22--15 15 하버드 하버드 구조와 구조와 폰 폰 노이만 노이만 구조 구조 ((버스구조 버스구조, , 장점 장점& &단점 단점))
폰 노이만 구조 하버드 구조
Address bus Data bus 최대 용량
프로그램 메모리 16 bit 16 bit 128KB = 216 * 16bit
ATmega128
데이터 메모리 16 bit 8 bit 64KB = 216 * 8bit
그림
그림 22--17 17 플래시 플래시 프로그램 프로그램 메모리 메모리
플래시 프로그램 메모리
명령어는 8비트가 아닌 16/32 비트
명령어는 8비트가 아닌 16/32 비트 구조(ATmega128은 16비트)
따라서 프로그램 메모리의 각 번지도 16 비트 구조로 되어 있음
명령어가 16 비트인 경우는 하나의 번지, 32 비트의 경우 2개를 차지
플래시는 Application 영역과 Boot 영 역으로 구분
128KB = 64K * 2Bytes
= 64Kwords
-- $F000
0xFFFF 216
64K
= 64Kwords 2 64K -- $FFFF
그림
그림 22--18 SRAM 18 SRAM 데이터 데이터 메모리 메모리 영역 영역
번호 분류 용량 Byte
번호 분류 용량 Byte
1 32개의 범용 레지스터 32 2 64개의 기본 I/O 레지스터 64 2 64개의 기본 I/O 레지스터 64 3 160개의 확장 I/O 레지스터 160 4 4KB의 내부 SRAM 4096
5 외부 SRAM 0~60KB
표 2-7
Normal
Mode Compatible
Mode
입출력 메모리 (I/O 레지스터)
AT 128에 내장된 주변장치(타이머/카운터 통신모듈 ADC 등)와 외부 입
ATmega128에 내장된 주변장치(타이머/카운터, 통신모듈, ADC 등)와 외부 입 출력장치를 제어하기 위한 레지스터 표2-8 기능별 I/O 레지스터
ATmega128은 64개의 기본 I/O 레지스터와 160개의 확장 I/O 레지스터 지원
포트로 데이터를 출력하기 위해서는
포트로 데이터를 출력하기 위해서는해당 포트의 메모리 (I/O 레지스터)에 데이터를 적는 과정
표 2-9 주소별 ATmega128 기본 I/O 레지스터
표 2-10 주소별 ATmega128 확장 I/O 레지스터
표 2 10 주소별 ATmega128 확장 I/O 레지스터
표 2-11 기능별 ATmega128 기본 I/O 레지스터
표 2-12 기능별 ATmega128 확장 I/O 레지스터Address 이름 기능
$1100
Internal
4KB의 내부 SRAM SRAM 4KB의 내부 SRAM
…
$0100
$00FF Reserved
$00FF Reserved
64개의 I/O 레지스터
… …
$0023 PORTE
PORTE = 0b10101010 ;+ 160개의 확장 I/O 레지스터
$0022 DDRE
$0021 PINE
$$0020 PINF
$001F R31
$001E R30
32개의 범용 레지스터
$001E R30
… …
$0001 R1
$
$0000 R0
표
표 22--8 8 기능별로 기능별로 분류된 분류된 ATmega128 ATmega128의 의 I/O I/O 레지스터 레지스터 (p.56) (p.56)
대분류 중분류 소분류 기타
대분류 중분류 소분류 기타
CPU SREG, SPL, SPH, RAMPZ, MCUCR, XMCRB, XMCRA, OSCCAL, XDIV, MCUCSR, WDTCR,
ACSR SPMCSR OCDR 14
ACSR, SPMCSR, OCDR 입출력포트
PINA, DDRA, PORTA, PINB, DDRB, PORTB, PINC, DDRC, PORTC, PIND, DDRD, PORTD, PINE, DDRE,
PORTE PINF DDRF PORTF PING DDRG PORTG 21 PORTE, PINF, DDRF, PORTF, PING, DDRG, PORTG
인터럽트 EICRA, EICRB, EIFR, EIMSK 4
주변
ASSR, OCR0, TCNT0, TCCR0, TIFR, TIMSK, SFIOR, ICR1L, ICR1H, OCR1BL, OCR1BH, OCR1AL, OCR1AH, 주변장치
(I/O 모듈)
/카운터타이머
ICR1L, ICR1H, OCR1BL, OCR1BH, OCR1AL, OCR1AH, TCNT1L, TCNT1H, TCCR1C, TCCR1B, TCCR1A, OCR1CL,
OCR1CH, OCR2, TCNT2, TCCR2, ICR3L, ICR3H,
OCR3CL, OCR3CH, OCR3BL, OCR3BH, OCR3AL, 38 모듈) OCR3AH, TCNT3L, TCNT3H, TCCR3B, TCCR3A,
TCCR3C, ETIFR, ETIMSK
ADC ADCL, ADCH, ADCSRA, ADMUX 4
SPI 통신 SPCR, SPSR, SPDR 3
USART 통신 UBRR0L, UBRR0H, UCSR0C, UCSR0B, UCSR0A, UDR0,
UBRR1H, UBRR1L, UCSR1C, UCSR1B, UCSR1A, UDR1 12
EEPROM EECR, EEDR, EEARL, EEARH 4
외부 메모리 확장
• 0x1100에서 0xFFFF까지 최대 60KB의 메모리 영역을 추가 확장 가능
• 널리 사용되지는 않음
• 널리 사용되지는 않음