728x90

SoC

- System On Chip

- 하나의 집적회로에 집적된 컴퓨터나 전자 시스템 부품

 

SoC 구성

- 1개 이상 마이크로 컨트롤러 또는 마이크로 프로세서 코어 포함

- 디지털, 아날로그, RF 기능 등이 단일 칩에 구현

- 각 모듈을 IP(Intellectual Property)로 별개 블록을 조립하여 하나의 Chip으로 구성

- System on Board : 보드상에 구현

- 구성 블록 : GPIO, ADC, RTC, Serial port, ARM Core, Timer, RAM, USB, JTAG

 

어플리케이션 프로세서

- 각종 어플리케이션에 사용되는 칩으로 스마트폰, 태블릿 PC에 이용

- CPU, GPU 장착으로 그래픽 연산 가능

 

CISC

- Complex Instruction Set Computer

- 복잡한 명령체계를 가진 CPU

- CPU Core 개발자들이 필요에 따라 명령어를 계속 추가

- 명령어 길이와 개수가 길어져 해석하고 실행하는데 오랜 시간이 걸림

 

RISC

- Reduced Instruction Set Computer

- 실제 쓰이는 명령어는 얼마되지 않아 적은 수의 명령어만으로 구성한 집합

- 복잡한 명령어보다 간단한 명령어의 조합이 유리

- 간단한 하드웨어 구조로 저전력 구현에 유리

 

CISC 방식 CPU

- 인텔 x86

 

RISC 방식 CPU

- AVR, ARM, MIPS 등 대부분 임베디드 CPU

 

AVR 패밀리

- AVR은 Atmel 사의 CPU 시리즈

AVR 시리즈

MegaAVR과 TinyAVR

- ATmega8 : 작은 크기 프로그램에 적합

- ATmega128 : 범용적으로 가장 많이 사용

- AT90CAN128 : CAN 통신 분야에 사용

- AT90PWM38 : PWM 신호 사용시 활용

 

ATMega128

1) Core 특징

- RISC 타입의 하버드 구조

- 133개 명령어

- 1클럭 사이클에 1개 명령어 실행

- 16MHz 최대 동작주파수 => 16 MIPS(Million Instruction Per Second)

- 32개의 범용 레지스터와 주변 장치 제어 레지스터

 

2) AVR 코어

- ALU : 산술/논리연산 담당

- 32개의 8비트 범용 레지스터가 연결

- ALU와 범용 레지스터 -> 1클럭 1사이클로 1개 명령어 실행

- 32개 범용 레지스터 중 6개는 간접 주소 어드레스 용으로 사용

 -> 8비트 레지스터 2개 합쳐 16비트 레지스터로 간주

 -> 이 레지스터 조합을 어드레스로 간주. -> 각각 X/Y/Z 포인터 레지스터라 함

- 프로그램 카운터 PC

 현재 수행할 메모리 위치를 갖고있는 레지스터. PC 확인하면 현재 어떤 레지스터가 실행되고 있는지 확인가능

 

ATmega128 Core 구조

 

플래시 프로그램 메모리

- 비휘발성 -> 전원이 없어도 저장 값이 변경되지 않음

- 소스 코드 컴파일 하여 나온 바이너리를 ISP나 JTAG으로 프로그램을 다운로드

  * ISP는 SPI 인터페이스를 이용

- 크기는 128KB으로 약 10,000회 읽고 쓰기 가능

 

ISP

- In System Programming

- Atmel에서 설계한 방식

- 간단한 ISP 다운로더를 이용한 인터페이스

- SPI 인터페이스는 대표적인 직렬 인터페이스로 칩간 통신에서 자주 사용됨.

 

3) 메모리 구조

1. 프로그램 메모리(명령어) - 플래쉬 메모리(128KB)

2. 데이터 메모리(SRAM) - 변수, 상수값

  -> 내부 SRAM, 외부 SRAM, EEPROM

 

(2) ATmega128 주변장치 종류

1) 주변 장치 종류

주변 장치

- 2개의 8비트 타이머/카운터

- 2개 16비트 타이머/카운터

- 실시간 타이머 카운터

- 6개 PWM 채널

- 출력 비교 모듈레이터 및 아날로그 비교기

- 10비트 AD 변환기

- TWI(Two-Wire Serial Interface) 직렬 인터페이스

- 2개 USART

- SPI 직렬 인터페이스

- 와치독 타이머(CPU가 동작하는지 검사하는)

 

2) GPIO

- General Purpose Input Output Port

- 범용 목적 입력,출력 핀(포트)

- 입력 : 외부 장치가 high or low 신호를 출력하면 그 핀에 해당하는 레지스터를 읽어 그 신호 레벨을 CPU가인지가능

- 출력 : 외부 장치가 해당 핀으로 연결 시 High나 Low 출력해서 보내기 가능

- 내부 레지스터 값을 조정하여 부가 기능 사용 가능

 

3) 기타 주변장치

1. 타이머/카운터

- 타이머 : 스탑워치. 시간 설정시 CPU 입력되는 기본 클럭 신호로 일정하게 알림. 최대 16MHz 클럭 신호 입력가능

- 카운터 : 숫자 세는 용도

- 프리스케일러 : 여러 클럭을 세팅하여 긴 시간을 잴 수 있음

- 2개 8비트 타이머/카운터 : 짧은 시간 체크

- 2개 16비트 타이머/카운터 : 긴 시간 체크

- 실시간 타이머/카운터 : 초단위 시간 체크

 

2. AD컨버터

- 아날로그 신호를 디지털로 바꿔주는 변환기

- 10비트 AD 컨버터는 아날로그 신호를 10비트 짜리 디지털 값(0~1023)로 변환 가능

AD 컨버터

 

3. 인터럽트 컨트롤러

- 인터럽트 : 중간에 끼어들기. 특정 조건에 의해 중간에 다른 일 수행하는것

 ex) CPU가 1초마다 LED on,off 하다가 버튼이 눌렸을때 인터럽트를 통해 버튼이 눌린것을 인지할수있음.

- 인트럽트 컨트롤러 : 인터럽트를 수행하게하는 하드웨어 모듈

- 폴링 : 인터럽트 반대 개념으로 계속 감시하는 방법. 비효율적임

- ATmega128은 35개의 인터럽트 기능 가짐

 

4. TWI 직렬 인터페이스

- TWI Two-wire Serial Interface

- 2개 선으로 칩과 칩 통신에 많이 사용됨

- I2C(inter-integrated Circuit)과 동일 개념

- Protocol이 간편하며 여러 칩 연결시 2개의 선으로 인터페이스 가능

- 주로 제어용으로 사용되며 저속이기 때문에 전용 HW없이 일반 GPIO로 구현가능

- 기본 100kbs, 400kbps Fast mode, 1Mbps Fast Mode Plus

 

ex) TWI 예시

- 마스터 : 마이크로 프로세서, 슬레이브 : ADC, DAC, 마이크로 프로세서

- SDA : 데이터 라인, SCL : 클럭라인

 

5. UART

- Uniersal Asynchronous Serial Receiver And Transmitter

- 범용 비동기 직렬 통신 컨트롤러

- 컴퓨터의 COM1, COM2, COM3, COM4와 연관된 통신 컨트롤러(포트)

- 많은 CPU와 PC 등에 기본 장착.

- UART 포트는 총 9개 신호선가짐

COM(UART) 포트

 

- TxD, RxD, GND 만 연결하면 통신 가능

- 외부 장치와 통신시 전압을 -12v ~ 12V까지 올려야함 -> MAX232 사용

<-> 같은 보드 내 장치와 통신시는 필요없음

ATmega128과 외부 UART 장치 간 비동기 모드 시리얼 통신

 

300x250

+ Recent posts