` 마이크로프로세서설계및실습 2 주차강의자료
2/31 Contents 학습목표 다양한 AVR 패밀리와소자특징을알아보고, 제어환경에따라 AVR 소자를선택하여개발할수있는융통성을이해할수있다. ATmega128 내부구조에서특수레지스터, 범용레지스터의역할을이해할수있다. ATmega128 내부에포함된명령어인출과실행절차를알아보고, 명령어유형을통해동작을이해할수있다. 내용 AVR 개요 ATmega128 특징 ATmega128 내부구조 ATmega128 명령어실행 Atmel Studio 6.2의개요및설치
3/31 마이크로프로세서와마이크로컨트롤러 (1) 마이크로프로세서 마이크로 (micro) 와프로세서 (processor) 가결합된용어 매우작은 (micro) 이라는의미와 처리기 (processor) 크기가매우작고, 뛰어난계산능력을가진장치 IC 집적기술, 컴퓨터구조기술, 시스템프로그래밍기술을함께묶어단일칩으로집적화한반도체소자 재료, 수학적개념, 전자집약기술, 사회적요구를수렴한다양한마이크로프로세서가사용되고있으며, 앞으로도꾸준한연구를통해더욱향상된마이크로프로세서가등장 프로그램을신속하게실행하기위한목적으로, 내부구조를최적화
4/31 마이크로프로세서와마이크로컨트롤러 (2) 마이크로컨트롤러 마이크로 (micro) 와컨트롤러 (controller) 가결합된용어 매우작은 (micro) 이라는의미와 제어기 (controller) 라는의미 마이크로프로세서의연산처리기능에제어기능추가 프로그램을실행하면서장치를효과적으로제어하기위한목적으로, 내부구조를최적화 값싼장난감에서부터산업용장치에이르기까지넓은범주를대상 포함기능사례 외부디지털전압에대한입출력기능 메모리기능 ( 플래시메모리, SRAM, EEPROM 등 ) 타이머기능, PWM(Pulse Width Modulation) 펄스생성기능 입력신호캡처기능, A/D(Analog Digital) 변환기능 통신기능등
5/31 마이크로프로세서와마이크로컨트롤러 (3) 마이크로컨트롤러 (MCU) 의일반적인구성
6/31 AVR 과 ATmega128 AVR Atmel 사의 8 비트마이크로컨트롤러 크게 Tiny, AT90, Mega 시리즈로나뉜다 ATmega128 고성능 입출력포트수가많다 메모리가크다 값이저렴하다 많은장점으로널리이용되고있다 <ATmega128 의핀배치 >
7/31 AVR 개요 AVR 패밀리
8/31 AVR 개요 8 비트 megaavr 패밀리소자 8 비트 tinyavr 패밀리소자
9/31 ATmega128 특징 진보된 RISC 구조 133개의강력한명령어, 1클록사이클에실행 32개의범용레지스터와주변장치제어레지스터 16[MHz] 에서 16[MIPS] 까지성능이나올수있음 2클록사이클이소요되는곱셈기를칩에내장 비휘발성프로그램과데이터메모리 128[Kbyte] 의 ISP(In System Programming) 로재프로그램가능한플래시메모리내장 : 10,000회읽기 / 쓰기가능 4[Kbyte] EEPROM : 100,000회읽기 / 쓰기가능 4[Kbyte] SRAM 내장 64[Kbyte] 까지외부에추가하여사용할수있는메모리공간 SPI 인터페이스를이용한 ISP(In System Programming)
10/31 ATmega128 특징 주변장치 2개의 8비트타이머 / 카운터 : 별도의프리스케일러와비교모드동작 2개의 16비트타이머 / 카운터 : 별도의프리스케일러, 비교모드, 캡처모드동작 실시간타이머카운터 6개의 PWM 채널 출력비교모듈레이터 아날로그비교기 10비트 A/D 변환기 TWI(Two-wire Serial Interface) 직렬인터페이스 2개의 USART SPI 직렬인터페이스 와치독타이머
ATmega128 내부구조 메모리 플래시프로그램메모리 데이터메모리 (SRAM) EEPROM 프로그램카운터 (PC) 명령어레지스터 (IR) 명령어디코더 범용레지스터 기타주변장치 [ ATmega128 의내부구조 ] 11/31
12/31 ATmega128 내부구조 플래시프로그램메모리 프로그램저장 비휘발성 (Non-volatile) 메모리 전원이없어도, 저장된데이터는변경되지않음 64[Kword](128[Kbyte]) 크기, 10,000 회쓰고읽기 다운로더장치로다운로드 부트프로그램부 : 부팅에필요한기본정보 응용프로그램부 : 워드단위 (16 비트크기 ) 의명령어로구성된프로그램 [ 플래시프로그램메모리맵 ] 프로그램카운터 (PC) 플래시프로그램메모리공간을가리킴 명령어를차례로인출하면서응용프로그램실행
ATmega128 내부구조 명령어레지스터 (IR) 프로그램카운터가지칭한곳에서명령어레지스터로명령어인출 명령어에는명령코드, 오퍼랜드, 연산결과저장위치필드를가짐 명령어디코더 명령어레지스터의명령코드를디코딩하여제어신호생성 ALU 는명령코드에해당되는연산동작을수행하게함 제어신호는연산대상이되는오퍼랜드가 ALU 에전달되게함 제어신호는연산결과를저장할수있게함 스택포인터 스택은임시데이터, 로컬변수, 호출된함수의복귀주소등을저장 스택포인터 (Stack Pointer) 는스택의 TOP 을저장하는특수레지스터 스택에데이터가저장되면, 스택공간은커짐» 스택포인터의주소는높은값에서낮은값으로감소» PUSH 명령어 : 데이터가스택에저장. 이때스택포인터는 1 씩감소» POP 명령어 : 데이터를스택의 TOP 에서꺼냄. 이때스택포인터는 1 씩증가 13/31
14/31 ATmega128 내부구조 범용레지스터 데이터레지스터 레지스터 R0~R25 데이터를저장하는레지스터 메모리주소 0x00~0x19 에해당 주소레지스터 레지스터 R26~R31 레지스터간접주소방식을위한레지스터 메모리주소 0x1A~0x1F 에해당 [ 범용레지스터파일 ]
15/31 ATmega128 내부구조 데이터레지스터사용사례 변수 x 를데이터레지스터 r24 로활용한사례
16/31 ATmega128 내부구조 주소레지스터 X, Y, Z 데이터메모리에대한주소를가짐 두개의레지스터를묶어, 주소레지스터 X, Y, Z 는 16 비트레지스터 주소레지스터 Z 활용사례메모리 0x100 위치에데이터 0xAB 를저장동작 Z- 레지스터에메모리주소 0x100 을넣음 (r31 0x01, r30 0x00) r24 에 0xAB 를넣음 st Z+, r24 동작으로메모리주소 Z 위치에 r24 값을기록, 동작후 Z 값은 1 증가
ATmega128 내부구조 데이터메모리 (SRAM) 변수는프로그램이수행되면서변경될수있음 변수는데이터메모리 (SRAM) 에저장 모드 일반모드 : ATmega103과호환되지않는모드» 내부 SRAM을 4,096[byte] 사용가능» I/O 명령어로 64개 I/O 레지스터접근» 확장된 160개의 I/O 레지스터를갖고 ld, store 명령으로접근 ATmega103 과호환모드 : 초기에많이사용» 내부 SRAM 을 4,000[byte] 만사용가능 [ ATmega128 데이터메모리 (SRAM) 구성 ] 17/31
18/31 ATmega128 내부구조 I/O 공간 in, out 의 I/O 명령어가가리키는주소는 I/O 공간 ld, st 명령어가사용하는주소는데이터메모리공간 64 개 I/O 레지스터 in, out 명령으로참조할때는 I/O 공간 : 0x00 0x3F ld, st 명령으로참조할때는데이터메모리공간 : 0x20~0x5F 확장된 I/O 공간은 in, out 명령이아닌 ld, st 명령으로만참조 EEPROM(Electrically Erasable and Programmable ROM) 4Kbyte 의 EEPROM 을내장 비휘발성메모리로서, 전원이공급되지않아도데이터는계속값을유지 플래시프로그램메모리는프로그램이다운로드되는비휘발성메모리 EEPROM 은프로그램이수행되는동안에데이터를기록하여활용 데이터기록을위해 SRAM 보다더많은클록이필요
19/31 ATmega128 내부구조 상태레지스터 (SREG, Status Register) 가장최근에실행된산술연산의결과정보를저장 이결과에따라다음에실행되는프로그램의흐름을제어명령어에영향 인터럽트가발생했을때 상태레지스터를하드웨어가자동으로저장, 복귀되지않음 소프트웨어적으로저장, 복귀동작을수행해야함
ATmega128 내부구조 20/31
21/31 ATmega128 명령어실행 명령어인출 프로그램카운터 (PC) 가가리키는명령어가명령어레지스터 (IR) 로인출 프로그램카운터의값은명령어레지스터크기만큼증가 명령어실행 ❶ 명령어분석 ❷ ALU 에오퍼랜드인가 ❸ ALU 연산실행및결과기록
22/31 ATmega128 명령어실행 명령어인출과실행 한클록에수행되는명령어실행동작
ATmega128 명령어실행 명령어유형 산술연산및논리연산명령어 통상명령어들은 1 클록소요결과를저장하기위해한개의 8비트레지스터가사용 ADIW 명령어경우는 2 클록소요 2개의레지스터 (16비트워드단위 ) 에결과를기록해야함 [ 산술및논리연산명령어와동작 ] 23/31
24/31 ATmega128 명령어실행 데이터이동명령어 레지스터와레지스터 : 보통 1 클록소요 레지스터에즉시값 : 보통 1 크록소요 레지스터와메모리 : 보통 2 클록소요 레지스터와 I/O 공간 : 보통 1 클록소요
25/31 ATmega128 명령어실행 프로그램흐름제어명령어 분기되지않을경우프로그램흐름 PC 가가리키는플래시프로그램메모리에서명령어인출 PC 는 1 씩하드웨어적으로증가하면서연속적으로명령어를수행 분기되는명령 분기명령으로 PC 에서가리키는주소를변경 연속적인명령어의수행흐름을제어
26/31 ATmega128 명령어실행 분기명령어길이 변위주소방식 : 1 워드 즉시어드레싱모드 : 2 ( 명령어길이 + 즉시주소길이 ) [ 프로그램흐름제어명령어와동작 ]
27/31 ATmega128 명령어실행 서브루틴호출과복귀 RCALL, CALL 명령어에의한서브루틴호출동작 PC, 명령어레지스터 (IR), 스택 (STACK), 스택포인터 (SP) 와연계된동작 서브루틴이호출되기전에되돌아올명령어주소를스택에저장 PC 의값은서브루틴의시작주소 k 로바뀜 RET 또는 IRET 명령어에의한서브루틴에서복귀동작 스택에저장한주소로 PC 를복귀 서브루틴호출이후의명령어실행
28/31 ATmega128 명령어실행 CALL 명령어실행과정
29/31 ATmega128 명령어실행 RET 명령어실행과정
Atmel Studio 6.2 ATMEL 사에서제공하는무료통합개발환경 소스코드를컴파일및작성된프로그램을 ATmega128 로다운로드할수있다 <Atmel Studio 6> 30/31
31/31 질문?