Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture 2 AVR의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁.

Similar presentations


Presentation on theme: "Lecture 2 AVR의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁."— Presentation transcript:

1 Lecture 2 AVR의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁

2 AVR 개요 ATMEL사에서 제작한 RISC 구조의 저전력 CMOS 8비트 마이크로컨트롤러
1997년에 최초 개발, Alf-Egil Bogen과 Vegard Wollan의 진보된 RISC 기술을 기반으로 설계되어 AVR이라 명명함. 대부분의 명령은 단일 클럭으로 실행하여 동작속도를 혁신적으로 개선한 마이크로컨트롤러로서 저전력 임베디드 시스템에 적합함. AVR RISC 구조는 CISC에 비해 10배 이상의 빠른 속도로 프로그램이 실행될 수 있는 코드 체계 보유. ATMEL의 플래시 메모리 기술을 접목하여 ROM Writer가 필요없는ISP(In System Programming) 방식을 최초 적용. ATtiny 및 Atmega 계열에 추가로 LCD 구동, 네트워크, 자동차, 모터 제어 등의 특수 응용 분야 전용 계열의 제품군 구비.

3 명령어의 실행 (1) AVR은 하바드 구조와 고속-액세스 레지스터 파일의 구조를 이용한 파이프라이닝 기법을 사용하고 명령을 평균적으로 1클럭에 1개씩 처리하는 구조임

4 명령어의 실행 (2) 단일 클럭 사이클 동안에 두 개의 레지스터에서 데이터를 인출해 오고, 이에 대한 산술연산을 실행함
그 결과를 목적 레지스터에서 다시 저장하는 모든 과정을 단일 명령어 사이클에서 수행이 가능함.

5 AVR 마이크로 콘트롤러의 계열 및 종류 AVR 계열 소자의 종류 주요기능 Tiny ATtiny11/12L/13/15L
1∼8K 바이트의 프로그램 메모리 8∼20 핀 패키지 주변 소자의 기능이 제한적으로 내장됨 Mega ATmega8/48/88L ATmega8515/8535 ATmega16/162/164/168 ATmega32/324/325/3250L ATmega64/640/644/6450 ATmega128/1280/1281 ATmega2560/2561 4∼256K 바이트의 프로그램 메모리 28∼100 핀 패키지 확장 명령어 세트를 가지고 있음 (곱셈과 확장 메모리를 다루기 위한 명령어 내장) 주변 소자의 기능이 확장됨. Application Specific ATtiny25/45 AT90PWM1/2 Atmega406 AT90CAN128P/329P AT90USB1286/647 ATmega64RZAPV/RZAV ATmega3290P/329P Automotive Lighting Smart Battery CAN  USB  Z-Link  LCD

6 AVR 마이크로 콘트롤러의 계열별 특징 Tiny 계열 Mega 계열 특수 용도의 AVR 가격이 낮고 소형 시스템에 적합한 소자
장난감, 게임용 장치, 배터리 충전기 등 간단히 조립될 수 있는 센서 응용회로에 적용되는 모델 대량으로 생산되는 간단한 응용분야에 사용 핀 수는 8핀에서 28핀 정도로서 기능이나 성능이 낮음 1K∼2KB의 플래시 메모리 Mega 계열 프로그램 크기가 대형이고 입출력의 수가 많은 시스템에 적합한 소자로 무선 전화기 및 프린터용 제어기, FAX 및 CD-ROM 제어기에 응용 될 수 있는 모델 규모가 크고 성능이 높은 응용 분야에 활용 가격이 고가이고 기능이나 성능도 높다. 8K∼256K 바이트의 플래시 메모리 특수 용도의 AVR 응용 분야에 따라 자동차용, 통신용, LCD 제어용 등 다양한 응용에 적합하도록 최적화하여 출시

7 AVR 구조상 특징 연산과 데이터 저장을 동시에 할 수 있는 하버드 구조.
명령어는 16비트 버스 폭의 하드웨어로 처리되지만, 데이터는 8비트 길이 기반으로 처리. 내부에는 32개의 범용 작업 레지스터를 가지며 모든 레지스터는 산술-논리 연산장치(ALU)와 직접적으로 연결되는 구조를 가지고 있기 때문에 한 클럭 사이클 내에 단일 명령 사이에 두 개의 독립된 레지스터를 한꺼번에 처리할 수 있음. C-언어로 제어하기에 편리한 주소지정 모드(addressing mode)를 제공하여 높은 코드 집적도 제공.

8 ATmega128 의 내부 구조

9 AVR의 메모리 관련 특징 단일 칩에 자체 프로그램이 가능한 1KB~256KB까지의 플래시 메모리를 가지고 있음. 프로그램은 직렬 프로그래밍 인터페이스 방식의 ISP 기능을 이용하여 1,000번까지 재 프로그램이 가능함. 모델에 따라 64Byte에서 4KB까지의 EEPROM을 내장하고 있어 데이터 백업이 가능함. 100,000정도 반복 사용 가능 모델에 따라 데이터 메모리로서 32Byte에서 8KB까지의 비교적 큰 SRAM을 내장하고 있음. 이상의 3가지 메모리를 내장하고 있어 효율성이 극대화되어 있는 마이크로컨트롤러로 각광을 받음.

10 AVR I/O 관련 특징 다기능, 양방향의 일반 목적의 I/O 포트를 가지고 있음. 이는 구조 변경이 가능하고, 내부에는 풀업 저항이 내장. 다양한 기능의 내부 오실레이터가 내장. 재 프로그램이 가능한 플래시 메모리는  ISP, JTAG 또는 or 고전압 방법을 이용하여 시스템 내에서 프로그램 가능. 대부분의 소자에서 JTAG 또는 debugWIRE를 통해 칩 내에서 직접적인 디버깅이 가능.  8-비트와 16-비트의 타이머가 내장되어 있으며, 이를 이용하여 PWM 츨력 기능으로 활용 가능. 아날로그 비교기가 내장됨. 16개까지의 채널 입력을 갖는 10-비트의 A/D 변환기 내장.

11 AVR 기타 특징 다양한 직렬 인터페이스 기능을 내장함. 저전압 검출(Brown-out Detection) 기능을 제공함.
I²C 호환성을 갖는 TWI 기능, RS-232, RS-485 등의 지원을 위한 UART/USART SPI(Serial Peripheral Interface) 버스 2선 또는 3선식의 동기 데이터 전송을 위한 USI(Universal Serial Interface) 저전압 검출(Brown-out Detection) 기능을 제공함. Watchdog Timer (WDT)를 내장하고 있음. 전원 절약을 위한 여러 가지의 슬립 모드를 제공함. 조명 및 모터 제어를 위한 전용의 제어기 CAN 컨트롤러/USB 컨트롤러/이더넷 컨트롤러의 지원 LCD 컨트롤러의 지원

12 ATmega128의 주요 특징 (1) 마이크로컨트롤러의 속도 내장 메모리 부가 I/O 장치
16MHz의 클럭을 사용할 때, 16MIPS의 연산속도를 갖는다. 내장 메모리 128K 바이트의 ISP 방식 프로그램용 플래시 메모리 4K 바이트의 EEPROM 4K 바이트의 데이터 저장용 SRAM 부가 I/O 장치 독립적인 프리스케일러와 비교 모드를 갖는 2개의 8비트 타이머/카운터 독립적인 프리스케일러, 비교 모드와 캡쳐 모드를 갖는 2개의 확장 16비트 타이머/카운터 독립적인 오실레이터를 갖고 있는 실시간 카운터 6개의 PWM 채널 8채널 10비트 ADC 2개의 프로그램 가능한 직렬 USARTs

13 ATmega128의 주요 특징 (2) 기타 마스터/슬레이브 모드를 갖는 SPI 직렬 인터페이스
내장된 오실레이터로 구현된 프로그램 가능한 워치독 타이머 아날로그 비교기 내장 53개의 프로그램가능한 입출력 I/O 기타 전원 투입 리셋과 프로그램 가능한 저전압 검출(BOD : Brown-out Detection) 기능 조정 가능한 RC 오실레이터의 내장 리셋벡터와 8개의 외부 인터럽트 소스, 26개의 내부 인터럽트 소스 슬립모드로서 6개의 전원 절약 모드를 가지고 있음 (아이들, ADC 노이즈 감쇄기, 전원 절감, 전원 차단, 대기, 확장 대기) 내장 메모리의 프로그래밍과 온칩 디버깅이 가능한 JTAG(IEEE std ) 인터페이스 제공 64핀의 TQFP(Thin Quad Flat Package) 또는 MLP(Micro Lead Frame) 패키지로 구성되어 있음 ATmega128는 2.7V~5.5V의 전원 전압에서 동작하며, 시스템 클럭의 입력 범위는 0~16MHz임. (ATmega128L : 2.7V ~ 5.5V , 0~8MHz)

14 ATmega128 패키징 TQFP 64 핀 패키지

15 ATmega128 의 핀별 기능들 (1) 포트 A(PA7∼PA0) 포트 B(PB7~PB0) 포트 C(PC7~PC0)
외부 데이터 메모리와 데이터 전송시 하위 주소와 데이터 버스로 사용 8비트의 양방향 I/O 포트로 사용 가능 외부에 메모리를 인터페이스하지 않을 때에는 내부 풀업 저항(20㏀∼50㏀)을 갖음. 포트 B(PB7~PB0) 포트는 중복된 기능을 가지고 있는 포트 (표2.6참조) 내부적으로 풀업 저항(20㏀∼50㏀) 포트 C(PC7~PC0) 외부 데이터 메모리와 데이터 전송시 상위 주소와 데이터 버스로 사용 외부에 메모리를 인터페이스하지 않을 때에는 내부 풀업 저항(20㏀∼50㏀)을 갖음

16 ATmega128 의 핀별 기능들 (2) 포트 D(PD7∼PD0) 포트 E(PE7~PE0) 포트 F(PF7∼PF0)
포트는 중복된 기능을 가지고 있는 포트 (표2.8참조) 내부적으로 풀업 저항(20㏀∼50㏀) 8비트의 양방향 I/O 포트로 사용 가능 포트 E(PE7~PE0) 포트는 중복된 기능을 가지고 있는 포트 (표2.9참조) 포트 F(PF7∼PF0) 포트는 중복된 기능을 가지고 있는 포트 (표2.참조) A/D 컨버터의 입력포트로 사용

17 ATmega128 의 핀별 기능들 (3) 포트 G(PG4~PG0) : 마스터 리셋 입력(액티브 LOW 신호)
포트는 중복된 기능을 가지고 있는 포트 (표2.참조) 내부적으로 풀업 저항(20㏀∼50㏀) 5비트의 양방향 I/O 포트로 사용 가능 : 마스터 리셋 입력(액티브 LOW 신호) AVCC : A/D 컨버터 및 포트 F의 전원 AREF : A/D 컨버터의 기준전압 PEN : SPI를 활성화 시키는 프로그래밍 인에이블 핀 XTAL1, XTAL2 VCC, GND

18 AVR CPU 코어의 구조

19 플래시 프로그램 메모리 프로그램 메모리는 8비트로 구성
기본적으로 한 개의 번지가 16비트 단위로 구성되어 16비트 마이크로프로세서인 것처럼 동작 모든 AVR의 명령어는 16비트 또는 32비트 길이로 구성 플래시로 되어 있는 내부 프로그램 메모리는 부트 프로그램 섹션(boot program section)과 응용 프로그램 섹션(application program section)의 두 가지 영역 내부 프로그램 메모리는 특정의 메모리 잠금 비트(memory lock bit)를 사용하여 쓰기와 쓰기/읽기의 금지를 할 수 있음.

20 산술논리연산장치 (ALU) AVR의 ALU는 32개의 일반 목적의 동작 레지스터(general purpose working register)와 직접적으로 연계되어 동작 ALU는 레지스터 간 또는 레지스터와 상수 간의 산술 또는 논리 연산을 단일 클럭 사이클에 수행 연산된 결과에 대한 ALU의 상태를 상태 레지스터로 갱신 AVR에서는 강력한 하드웨어 곱셈기를 가지고 있어서 부호있는 정수/부호없는 정수의 곱셈 연산과 소수점 형식의 곱셈 연산을 빠르게 수행

21 상태 레지스터 (1) 가장 최근에 실행된 산술 연산의 명령어 처리 결과에 대한 상태를 나타내 주는 레지스터
조건부 처리 명령에 의해 프로그램의 흐름을 변경하는데 사용될 수 있음 상태 레지스터는 인터럽트를 처리하는 과정에서 자동으로 저장되거나 복구되지 않으므로, 반드시 소프트웨어에서 이러한 동작을 처리하여 주어야 함.

22 상태레지스터 (2) Bit 7 (I) : 전체 인터럽트 허가 (Global Interrupt Enable)
Bit 6 (T) : 비트 복사 저장 (Bit Copy Storage) Bit 5 (H) : 보조 캐리 플래그 (Half Carry Flag) Bit 4 (S) : 부호 비트 (Sign Bit)  Bit 3 (V) : 2의 보수 오버플로우 비트 (two's complement overflow bit) Bit 2 (N) : 음의 플래그(Negative Flag) Bit 1 (Z) : 영 플래그(Zero Flag) Bit 0 (C) : 캐리 플래그 (Carry Flag)

23 범용 레지스터 파일 AVR의 고성능 RISC 명령을 수행하는데 최적화 되어 있는 레지스터
1 바이트 크기로 32개의 범용 레지스터로 구성 연산의 대상이 누산기가 아닌 이들 32개의 범용 레지스터들을 사용하여 연산을 할 수 있어서 연산의 속도가 빠름 레지스터간의 연산은 보통 1 사이클 명령으로 이루어짐

24 Stack Pointer 스택 (Stack) : 서브루틴이나 인터럽트 발생시에 복귀되는 주소를 임시로 기억하기 위해서 사용되거나 일반 프로그램에서 지역 변수 또는 임시 데이터를 저장하는 용도로 사용되는 LIFO(Last In First Out) 구조의 메모리 스택 포인터(stack pointer) : 항상 데이터의 상단(top of stack)을 가리키는 16비트 레지스터로서 SP라고 표시되는데, 이는 데이터 저장이 가능한 스택의 번지를 의미 스택의 동작 : Push and Pop ATmega128의 스택은 SRAM 영역내에 존재, SP 레지스터의 초기값은 적어도 0x60 번지 이상의 값으로 설정

25 리셋 및 인터럽트 리셋을 포함하여 여러 종류의 인터럽트 소스를 포함하고 있으며, 이에 해당하는 리셋 및 인터럽트 벡터를 가지고 있음. 인터럽트들은 여러 가지의 인터럽트 마스크 레지스터를 통하여 각각 개별적으로 인터럽트의 허용 여부를 설정할 수 있으며, 상태 레지스터(SREG)의  전체 인터럽트 허가 비트 I를 이용하여 전체적인 허용 여부를 설정할 수 있음. 인터럽트 동작의 유형 인터럽트가 발생하면 관련 플래그 레지스터의 해당 플래그를 비트를 1로 세트하도록 트리거시키는 경우 인터럽트가 요청되더라도 이를 기억해 둘 인터럽트 플래그를 가지고 있지 않으며 인터럽트 발생 조건이 만족되어 있는 경우에만 인터럽트를 트리거하는 경우 인터럽트의 종류에 상관없이 인터럽트의 응답시간은 4개의 클럭 사이클 내에 이루어짐. 4개의 클럭 사이클 동안에 현재 수행중인 프로그램의 프로그램 카운터(Program Counter, PC)로 저장되고, 인터럽트 벡터의 주소가 프로그램 카운터에 적재되어 실제 인터럽트 처리 프로그램이 실행될 수 있도록 준비함.


Download ppt "Lecture 2 AVR의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁."

Similar presentations


Ads by Google