Embedded Recipes (1)
http://recipes.egloos.com/5000239
1. Hardware 꼴라쥬 (Collage) - 회로도 읽기
a. Hardware 꼴라쥬
b. 신호와 주파수 영역 - Spectrum Analysis
Fourier space에서의 설명
c. Analog 신호와 Digital 신호, 그리고 Ground
- Digital 신호는 High, low 2가지 상태만을 가질 수 있으며 그 level은 정하기 나름. 임계값(threshold)를 기준으로 High, low 결정
- High impedance 상태, 혹은 floating : 내부에 무한대의 저항이 달린 것과 같아서 pin이 없는 것과 같은 상태, 무슨 값이 걸려있을 지 모름.
d. 초간단 회로이론 R(저항), L(인덕터), C(캐패시터)
저항
- 저항의 단위는 옴, 저항의 크기를 변화시켜 원하는 크기의 전류를 흐르게 만들 수 있다.
- 전류가 저항을 지나고 나면 그만큼의 전압이 원래 전압에서 빠지게 된다. 위치 에너지와 비슷하게 전위차가 존재함.
- 저항을 직렬로 연결하면 전체 저항은 커지고 전류가 흐르기 힘들어짐.
- 저항을 병렬로 연결하면 전류가 흐를 수 있는 길이 더 늘어나므로 전체 저항은 작아짐.
캐패시터
- 주파수 값에 따라 저항 값이 달라짐.
- 높은 주파수의 전압일 수록 저항이 작아짐, 따라서 교류는 통과하고 직류를 통과하지 못함. $ \delta V / \delta t = 1 / C $
- C가 클 수록 전류가 많이 흐른다. DC block, bypass cap.
- 캐패시터의 단위는 F, 패럿.
인덕터
- 전류가 변화하지 못하도록 한다.
- 높은 주파수일 수록 저항이 커져 급격한 신호의 흐름을 막는다.
- $ V = L \delta I / \delta t $
- 인덕터의 단위는 H, 헨리
e. 초간단 회로이론 응용 - 필터 (Filter)
- 필더 : 저주파 혹은 고주파 만을 통과시킴
- 캐패시터는 DC가 통과하지 못함.
- AC는 저항에서 전압강하가 일어남, 캐패시터에서는 short와 다름 없음.
- AC에서의 L은 open임.
f. Transistor 1%
- Transistor는 Trans-Resistor, 전류의 양을 조절할 수 있다.
- NPN형과 PNP형 두가지가 있음.
- B는 base, E는 emitter, C는 Collector
- B와 E사이의 전압을 얼마나 세게 주느냐에 따라 C와 E사이의 전류량을 결정
- B의 압력에 따라 전류가 못 흐르는 차단 영역, 변화가 생기는 활성 영역, 전압이 너무 높아 CE 사이 전류가 더 흐르지 못하는 포화영역이 존재
- 차단 영역, 포화영역을 이용하여 ON/oFF 기능으로 사용할 수 있음.
- 활성영역은 말 그대로 증폭기로 사용할 수 있음.
g. Pull up, Pull down 그리고 Open Collector
- Logic 0 Active인 pin을 Low Active, Logic 1 Active 인 pin을 High Active라고 부른다.
- Low Active시스템은 평소에 high 상태로 만들어두고 active되었을 때만 low로 바꾸는 것이 이상적
- High는 마찬가지로 반대의 경우.
- 이러한 회로는 default 상태를 확실히 하기 위해 필요함.
- transistor를 이용하여 switch 역할을 하도록 하여 default 상태에서 active 상태로의 변화를 줄 수 잇음.
h. RLC와 Transistor 感
Ripple제거, Control 포트 active를 위한 간단한 구조 소개.
i. 논리회로로의 확장
- 트랜지스터를 이용하여 AND, OR, inverter를 만들 수 있음.
- 만들어진 AND, OR, NAND 등을 이용하여 간단한 2바이트 Adder를 만들 수 있다.
j. IC 기본
- 핀 번호는, 자리 표시가 있는 곳을 왼쪽으로 놓고 반시계방향으로 번호가 올라간다.
- 보통 IC는 U301과 같은 형태로 U로 시작하는데 이는 UNIT이라는 의미. Capacitor는 C301, Resistor는 R301, Inductor는 L301 등.
- NC, No connection : 아무것도 연결하지 말라.
- CLK, Clock : edge trigger, edge가 생길 때 동작하는 것을 의미.
- GND, Ground
- VCC : 전원
- DATA in, Data out
k. Register 넌 누구냐
- 레지스터 : Flip Flop의 집합, 이는 1bit의 정보를 저장할 수 있다.
- Latch는 1비트를 저장할 수 있는 소자, flip flop은 latch의 일종.
- Flip flop을 나타내는 기호, DI, DO, W
- W에 신호를 줄 때만 Data in이 저장되어 Data out으로 유지하고 있음.
- DO, data out이 1인 동안 무언가를 수행하고자 한다면, Level trigger를 이용하여야 한다 (edge trigger와 다름에 주의)
- 때론 W를 CLK으로 표시하기도 한다.
- CLK을 나타낼 때 사용하는 작은 삼각형은 Edge trigger를 나타낸다.
- Rising edge trigger, falling edge trigger.
레지스터의 종류
- General purpose register
- Address resister : 접근할 외부 메모리의 주소를 저장
- Data resister : 외부 메모리에서 읽어온 값을 저장
- Instruction pipeline resister : 외부 메모리에서 읽어온 OP code를 저장
- Special purpose register
- Program counter : 현재 실행되고 있는 주소를 기리킴
- Stack pointer : 현재 사용하고 있는 STACK영역의 마지막 데이터가 push된 곳의 주소를 가리킴
- Linked register : JUMP 했을 경우 다시 돌아갈 주소를 가리킴
- Status register : MCU의 형재 상태를 나타냄
- I/O Register
l. Clock 이란?
- 주기적인 전기적 펄스로 Clock에 따라 모든 동작이 동기화 됨.
- 동기화의 필요성 : 논리회로와 Latch만으로 모든 것을 구성하기에는 너무 복잡하다. 한번에 모든 것을 계산하기 보다는 여러 단계로 나눈 뒤, 직전 상태를 저장하고 이를 다시 사용한다면 보다 단순하게 구성이 가능하다.
- 또한, 입력과 출력 시점의 명확하게 하는 효과.
- 물리적인 한계로 Clock속도를 빠르게 하는 데 한계가 있음.
m. Bus Transfer Mechanism
- 버스는 장치들이 정보공유를 위하여 공유하는 선들의 집합.
- 하지만 한 Clock에서는 허가받은 장치들의 신호만 보임.
- 현재 시점에서 어느 장치가 버스를 사용할지는 Arbiter의 역할.
- 주소버스, 데이터버스, 제어 및 상태버스가 존재.
n. Timing 및 Spec 읽기
- 게이트의 입력 신호가 들어온 후 출력 신호가 나오기까지 시간 지연이 있음.
- 신호가 스위칭된다고 할 때, 10% 에서 90%로 올리기까지의 필요한 시간을 Tim Low to High (tTLH, tr)
- 90%에서 10%으로 내리기까지 필요한 시간을 Tim High to Low (tTHL, tf)
- High impedance, Hi-Z : Bus에 아무 신호가 없는 상태
- Timing diagram은 Timing table과 함께 제공.
o. Memory의 선정과 XIP
- RAM, ROM의 구분
- Excute in place (XIP) : 메모리상에서 직접 code를 실행하는 기술, random Access가 가능해야 한다.
- RAM
- Static RAM(SRAM) : 전기적인 control 없이 random access 가능. 비쌈.
- Dynamic RAM(DRAM) : 시간이 지나면 충전되었던 전하가 유실되므로 일정 시간마다 다시 전하를 충전해줘야 함. 집적도가 높다
- Pseudo SRAM(PSRAM) : 재충전 회로를 DRAM에 붙여 나오므로 사용자가 충전을 신경쓰지 않아도 됨.
- Synchronous DRAM(SDRAM) : 시스템 버스와 동기를 맞춤, CPU와 동기를 맞추므로 거의 최대 성능을 기대할 수 있음
- Double data rate(DDR) SDRAM : 시스템 버스와 동기를 맞추나 버스의 rising, falling edge 모두에서 동작을 하므로 data가 두배로 빨리 전송될 수 있음.
- Asynchronous RAM : input을 받은 후 일정 시간 동안 기다려 output을 내놓으므로 이 시간동안 wait state가 발생하여 비효율적임.
- ROM은 주로 Flash memory가 사용됨.
- NOR : Cell이 병렬로 연결되어있어 Address / Data line을 모두 가지고 있고, 바이트 단위로 Random access가 가능하다. 즉, XIP 가능. 쓰기는 느리지만 읽기가 빠르다.
- NAND : Cell이 직렬로 연결되어 있어, 읽을 때 1개 페이지 단위로만 읽을 수 있음. Small page의 경우 512바이트 정도, large page를 지원한다면 2KB씩 읽을 수 있음. 따라서 XIP 불가능. 읽기는 빠르지만 쓰기가 빠름.
- Multi chip packet (MCP) : Flash memory와 RAM을 한칩에 한꺼번에 장착, 현재는 NAND + (DDR) SDRAM의 조합이 보통.
p. RAM Memory의 물리적 동작
- 메모리는 보통 Address pin과 Data pin, RD, WR pin으로 구성되어있음.
q. 확장 to the CPU - How CPU Works
- CPU에 나와있는 pin들에 약속된 신호를 주면 CPU가 대항하는 일을 수행
- CPU는 주로 CU와 Decoder로 나뉘어지는데 decoder가 명령어를 읽어 해석하면 이에 대해 CU가 각종 제어 신호를 발생시킴
- CPU에 여러 외부기능이 결합된 AVR MCU (Micro controller unit)의 구성요소
- Program Counter (PC)
- General register 32개
- Instruction register (IR)
- ALU
- 내부 RAM
q. 일반적인 CPU의 동작 예 (Core)와 Pipe Line
다시 한 번 CPu의 내부를 자세히 살펴본다면,
- Program Counter (PC) : CPU가 현재 실행하고 있는 instruction의 주소를 가리킴
- Instruction register (IR) : PC가 가리키는 주소에서 읽어온 instruction
- Address register : 현재 사용하는 Data에 접근하기 위한 주소
- Data register : Address register가 가리키는 주소의 실제 값
- ACC : CPU 연산에 사용되는 값들을 임시로 저장하는데 주로 사용되는 특수 레지스터. 사용자가 접근할 수 없음.
- CPU는 항상 fetch, decode, execution의 순서로 실행
- 한가지 일을 할대 나머지는 쉬고 있으므로, 다른 일을 수행하기 위해 pipeline을 구성하였다. (decode를 할 동안 fetch를 동시에 수행)
- CPU에 따라 pipeline의 순서가 다를 수 있음.
- Pipeline이 적용되더라도 PC는 항상 현재 fetch하고 깄을 곳을 가리킴