-
[마이크로프로세서] ATmega128 명령어 실행학점은행제/마이크로프로세서 2021. 1. 15. 11:32
명령어 인출
- 프로그램 카운터(PC)가 가리키는 명령어가 명령어 레지스터(IR)로 인출함
- 프로그램 카운터의 값은 명령어 레지스터 크기만큼 증가함
- * 프로그램 카운터(PC)란 명령어를 차례대로 인출해서 응용 프로그램을 실행하는 일종의 CPU다
- * 산술 연산 전문 처리 프로세서 : ALU
명령어 실행
- 명령어 분석
- ALU에 오퍼랜드 인가
- ALU 연산 실행 및 결과 기록
명령어 인출과 실행
한 클록에 수행되는 명령어 실행 동작
산술연산 및 논리연산 명령어
- 통상 명령어들은 1클록이 소요됌
- 결과를 저장하기 위해 한 개의 8비트 레지스터가 사용됌
- ADIW 명령어는 2클록이 소요됌
- 2개의 레지스터(16비트 워드 단위)에 결과를 기록해야 함
데이터 이동 명령어
- 어셈블리 기계어에 가장 가깝게 되어있다.
- 레지스터와 레지스터 : 1보통 1 클록 소요
- 레지스터에 즉시 값전달 : 보통 1클록 소요
- 레지스터와 메모리 : 보통 2클록 소요
- 레지스터와 I/O공간 : 보통 1클록 소요
프로그램 흐름제어 명령어
분기되지 않을 경우 프로그램 흐름
- PC가 가리키는 플래시 프로그램 메모리에서 명령어 인출
- PC는 1씩 하드웨어적으로 증가하면서 연속적으로 명령어를 수행
분기되는 명령
- 분기 명령으로 PC에서 가리키는 주소를 변경
- 연속적인 명령어의 수행 흐름을 제어
분기 명령어 길이
- 변위 주소방식 : 1워드
- 즉시 어드레싱 모드 (주소값을 가져오는 것) : 2 (명령어 길이 + 즉시 주소 길이)
서브루틴 호출과 복귀
1) RCALL, CALL 명령어에 의한 서브루틴 호출 동작
- PC, 명령어 레지스터(IR), 스택(STACK), 스택 포인터(SP)와 연계된 동작
- 서브루틴이 호출되기 전에 되돌아올 명령어 주소를 스택에 저장
- PC의 값은 서브루틴의 시작 주소 k로 바뀜
2) RET 또는 IRET 명령어에 의한 서브루틴에서 복귀 동작
- 스택에 저장한 주소로 PC를 복귀
- 서브루틴 호출 이후의 명령어 실행
메모리
1) 플래시 프로그램 메모리
- 비휘발성 메모리이기 때문에 전원이 없어도 데이터를 계속 유지함
- 128kbyte 크기의 플래시 프로그램 메모리가 내장되어 있음
- 쓰기, 지우기를 반복할 수 있기 때문에 프로그램을 직접 변경하면서 ISP (In System Programming) 방법으로 개발함
2) 데이터 메모리 (SRAM)
- 컴퓨터의 주기억장치로 사용됌
- 처리속도가 굉장히 빠르고 가격이 높다
- 프로그램에서 선언한 변수와 스택을 위해 읽고, 쓰기를 빠르게 수행할 수 있는 주 메모리
- 휘발성 메모리이므로 전원이 없으면 데이터 소멸됌
- SRAM 4kbyte를 내장함
- 전세계 메모리 시장의 약 60%가 삼성전자가 공급하고 있고, 인텔이 2위, SK하이닉스가 3위
3) EEPROM
- 프로그램 실행중 생성된 데이터를 전원 없이도 유지시키기 위해서 EEPROM 사용
- 4kbyte
- 주기억장치가 부족할때 내장메모리를 추가로 장착할 수 있다.
4) 외부 메모리
- 내장된 4[Kbyte] SRAM이 부족할 경우, 외부 메모리를 추가로 장착할 수 있음
- ATmega103 비호환모드일 때는 주소 0x1100부터 사용 가능
타이머/카운터
1) 8비트 타이머/카운터타이머/카운터0과 타이머/카운터2
자동 카운팅 동작
비교일치 출력 동작
TCNTn 레지스터는 카운터에 인가되는 매 클록마다 1씩 증가 TCNTn 레지스터와 OCRn(n은 0 또는 2) 레지스터 값을 비교 4가지 파형 발생 모드 : 정상 모드, CTC 모드, 고속 PWM 모드, 위상 정정 PWM 모드 일치되면 OCn(n은 0 또는 2) 출력 핀의 펄스값을 바꿀 수 있음 모터, 조명 등 다양한 기기에 공급되는 전력을 조절 제어할 수 있음 : 작은 장비들에 설치해서 사용할 수 있다
2) 16비트 타이머/카운터타이머/카운터1, 타이머/카운터3
- 8비트 타이머/카운터와 유사함. 다양한 펄스를 생성
- 각 타이머/카운터에 A, B, C 세 개의 출력 비교 OCRnx(n은 1 또는 3, x는 A~C) 레지스터
- TCNTn(n은 1 또는 3) 카운터와 16비트 비교에 의해 조절되는 듀티비 출력 펄스를 OCnx(n은 1 또는 3, x는 A~C) 핀에 만들 수 있음.
- * 주 파형 발생모드 : 정상모드, CTC 모드, 고속 PWM 모드, 위상 정정 PWM 모드, 위상 및 주파수 정정 PWM 모드
직렬 통신 장치
1) USART
- 범용 동기/비동기 수신 및 송신기
- 송수신을 동시에 진행할 수 있는 양방향 통신
- 프레임을 수신할 때는 반드시 시작 비트(Start bit)부터 시작
- 특정 레지스터로 통신 속도를 바꿀 수 있음.
- 프레임 비트 수를 5, 6, 7, 8, 9 중 하나로 정할 수 있음.(보통 8비트 사용)
- 프레임과 프레임 사이의 전송이 중지된 정지 비트는 1 또는 2
- 패리티 검사, 데이터 오버런(Data OverRun) 검사, 프레임 에러 검사
- 2개의 독립된 USART 장치
- 송신 완료, 수신 완료, 송신 데이터 비어 있음. 인터럽트
2) SPI 통신
- 직렬 주변 장치 인터페이스(SPI, Serial Peripheral Interface)
- 동기식 데이터 전송 방식
- 마스터와 슬레이브를 정하여 통신
- MOSI, MISO, SCK, /SS 신호 사용
- 마스터 주관 아래 양방향 통신의 전이중(Full Duplex) 통신
- 8비트 시프트 레지스터를 이용하여 LSB를 먼저, MSB를 나중에 전송3) TWI 시리얼 통신
-시리얼 통신 포트
-마스터와 슬레이브(서버와 클라이언트)로 단 2가닥 선만을 이용하여 데이터를 전송-클록에 해당되는 SCL(Serial CLock)
-신호와 데이터가 이동하는 SDA(Serial DAta)-장치 사이에 연결되는 선이 간단
-최대 128개 장치 사이에 데이터 전송
-TWI 통신에 사용되는 장치는 고유의 주소를 가짐.
-최대 400[KHz]의 속도로 데이터를 전송4) 1990년에 IEEE Std. 1149.1로 표준화된 Boundary-Scan 규격
- PCB 또는 PCB 내의 IC 내부를 테스트
- IC 내부를 관찰하거나 디버깅할 때도 광범위하게 사용
- 4개 신호 사용 : TDI, TDO, TCK, TMS
5) JTAG 인터페이스로 디버깅 수행 가능
- 프로그램 카운터, 스택 포인터, 상태 레지스터 등 특수 레지스터
- 범용 레지스터
- 내부 주변 장치 레지스터 정보- 롬과 램이 들어있음
- SRAM 데이터
- EEPROM과 플래시 프로그램 메모리 데이터ISP(In System Programming)
1) EPROM
- 예전에 ROM을 사면 이미 프로그램이 되어 있어서 재사용이 안되어서 아깝다고 생각이 되었음 그래서 썼다 지울수 있는 롬을 개발하게 됌
- 예전 개발자들은 주로 자외선으로 데이터를 소거할 때 사용함
- 자외선으로 데이터 소거함
- 많은 시행 착오가 있었음2) ISP
- 마이크로컨트롤러를 장착한 PCB에 직접 장착하여 시스템을 개발함
- 프로그램 개발과 하드웨어 디버깅 과정을 한꺼번에 처리할 수 있음
- 내장된 플래시 메모리에 실행 코드를 직접 다운로드 할 수 있음
- 개발에서 생산까지 소요되는 시간을 단축 할 수 있음'학점은행제 > 마이크로프로세서' 카테고리의 다른 글
[마이크로프로세서] 엘리베이터 층 도착 원리 (1) 2021.03.06 [마이크로프로세서] 통합 개발 환경 구축 (0) 2021.01.20 [마이크로프로세서] 통합 개발 환경 (0) 2021.01.17 [마이크로프로세서] 마이크로 컨트롤러 / 디지털 시스템 (0) 2021.01.15