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 시리즈
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 확인하면 현재 어떤 레지스터가 실행되고 있는지 확인가능
플래시 프로그램 메모리
- 비휘발성 -> 전원이 없어도 저장 값이 변경되지 않음
- 소스 코드 컴파일 하여 나온 바이너리를 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)로 변환 가능
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개 신호선가짐
- TxD, RxD, GND 만 연결하면 통신 가능
- 외부 장치와 통신시 전압을 -12v ~ 12V까지 올려야함 -> MAX232 사용
<-> 같은 보드 내 장치와 통신시는 필요없음
'컴퓨터과학 > 임베디드' 카테고리의 다른 글
임베디드 SW 엔지니어링 - 1 임베디드 시스템 개요 (0) | 2020.05.24 |
---|---|
펌웨어구현 환경구축 12 - 메모리 맵의 구성 및 운용 (0) | 2020.05.07 |
펌웨어구현 환경구축 9 - 데이터시트 분석 (0) | 2020.05.06 |
펌웨어구현 환경구축 8 - 회로도 분석 (0) | 2020.05.06 |
펌웨어구현 환경구축 7 - 펌웨어 다운로드 및 인터페이스 (0) | 2020.05.06 |