비동기식 데이터 전송과 동기식 데이터 전송의 차이: 비동기식은 상대방이 데이터를 언제 보낼지 모름. 동기식은 클럭 신호를 이용해서 데이터를 보내기 전에 상대방에게 미리 알려줄 수 있다.


2개의 선을 사용하는 시리얼 통신(직렬 통신) 방식을 I2C라고 부른다. 시리얼 통신의 반대되는 개념으로는 병렬 통신(버스)이 있다.

그림과 같이 시리얼 통신은 I2C 통신, SPI 통신, UART 통신으로 나눌 수 있다.

위의 그림은 2선으로 구성되는 비동기 통신이다. TX는 송신하는 선, RX는 수신하는 선, GND는 Ground이다. 비동기 통신은 상대방이 데이터를 언제 전송할 지 알 수 없으므로 만약 0(Low) 상태에 있다가 0110 1101 이란 데이터를 수신하게 된다고 하면, 0110 1101? 의 데이터를 받은 것인지 110 1101? 의 데이터를 받은 것인지 알 수가 없으므로 이에 대한 해결책이 필요하다.

그래서 UART serial 통신을 지원한다고 datasheet에 나와 있다면 데이터의 앞 뒤로 head와 tail부분을 부수적으로 덧붙여주는 기능이 들어가 있는 것이다(Head와 Tail 펄스를 만들어내는 기능). head만 붙일 수도 있는데 그렇다면 1byte씩만 받겠다던지 하는 약속이 정해져 있는 것이다.


 만약 UART serial 통신을 지원하지 않는다고 datasheet에 나와 있다면 저런 기능을 SW적으로 구현을 해줘야한다. 부수적으로 덧붙이는 것을 오버헤드라고 부른다. Serial 통신이 느려지는 이유.


위의 그림은 5선으로 구성된 동기화 통신 방식이다. 예로 USB가 5선식 동기화 통신 방식으로 구성돼 있다. CLK는 클럭선인데 CLK에서 신호를 보내면서 데이터의 송수신이 시작된다. USB는 고속시리얼 통신으로 클럭선을 사용하여 속도가 매우 빠르다.

Posted by 知彼知己百戰不殆
,

Flash, EEPROM = 저장장치


EEPROM(Electrically Erasable PROM)은 On-Board상태에서 사용자가 내용을 Byte단위로 Read하거나 Write 할 수 있으므로 사실상 SRAM처럼 사용 할 수 있는 불휘발성 메모리이다.(NVRAM, Non-Volatile RAM이라고 부르기도 한다.) 그러나, 이것의 Read 동작은 Access동작이 다소 느릴지라도 SRAM과 유사하므로 별 문제가 없는데 비하여, Write 동작을 수행하는 경우에는 1byte를 write 할 때마다 수 ms 이상의 시간지연이 필요하므로 SRAM과 동일하게 사용할 수는 없다. 따라서 EEPROM은 실시간으로 사용되는 변수를 저장하는 메모리나 스택 메모리로는 사용될 수 없으며, 한번 내용을 저장하면 비교적 오랫동안 이를 기억하고 있으면서 주로 이를 읽어 사용하기만 하거나 전원을 꺼도 지워져서는 않되는 중요한 데이터를 백업하여 두어야하는 설정값 저장용 메모리로 적합하다. 이 메모리 소자는 28Cxxx의 형태로 이름을 짓는 경우가 많다. 

Flash Memory는 On-board 상태에서 사용자가 내용을 Byte단위로 자유로이 Read 할 수는 있지만, Write는 Page 또는 Sector라고 불리는 Block 단위로만 수행 할 수 있는 변형된 EEPROM이다. 블록의 크기는 Memory 소자나 Maker에 따라 다르지만 대체로 64Byte, 128Byte, 246Byte 등에서 부터 128KB까지도 사용한다. 이렇게 Flash Memory는 EEPROM과 매우 유사하지만 Byte단위로 Write하는것이 불가능하므로 Page mode write 기능만 가지는 EEPROM이라고 생각하면 되며, 따라서 역시 SRAM처럼 실시간 Data memory로 사용하는 것은 불가능하다. 그러나, Flash memory는 EEPROM보다 Memory Cell 구조가 간단하여 휠씬 대용량의 메모리 소자를 만드는데 적합하며, 1개의 Block 전체를 Write하는데 수 ms 정도가 걸리므로 대용량 Data를 Write할 때는 EEPROM보다 훨씬 빠르다는 장점을 가진다. 

그런데, Flash memory는 내부 구조에 따라서 NOR형 Flash와 NAND형 Flash memory로 나누 수 있다. NOR형 Flash는 다른 Memory 소자와 같이 외북 구자가 Address bus, Data bus, 그리고 몇가지의 제어신호 및 전원으로 되어 있어서 프로그램 저장용으로 널리 사용된다. NOR형 Flash memory는 대부분 29Cxxx 형태의 이름을 가지고 있다. 그러나, NAND형 Flash memory는 Address bus와 Data bus가 따로 있는 것이 아니고 8개(또는 16개)의 Data 신호와 몇 개의 제어신호 및 전원핀을 가지고 있다. 8개의 Data 신호선은 Address 및 제어명령을 Write하거나 Data값을 읽고 쓰는 용도로 사용된다. 이렇게 하면 Memory를 읽고 쓴느 동작은 좀 번거로워지지만 Memory 용량이 증가하더라도 핀 수가 늘어나지 않으므로 하드웨어 규격을 통일 할 수있어서 Flash memory를 마치 Hard disk처럼 사용하는 것이 가능하다. 특히, 요즈음에는 휴대용 기기를 염두해 두고 1.8[V]나 3.3[V]의 저전압에서 동작하는 수십 MB~ 수 GB짜리 대용량의 NAND형 Flash memory가 많이 개발되어 휴대용 통신기기, 디지털 카메라, MP3 Player, 이동형 USB Memory등과 같은 용도에 널리 사용되고 있다. 

참조: AVR ATmega128 마스터, 44Page (Oho사, 윤덕용 저) 


PWM = Pulse Width Modulation (펄스 폭 변조)

사용용도: ex) 크리스마스 트리 전구의 서서히 밝아졌다가 서서히 어두워지는 기능 등


OCM = Output Compare Modulator (출력 비교 변조기)

ex) 자동차 RPM 측정 등


channel = 핀개수, 다리 개수, 회로 개수 = 즉, 기능을 똑같이 하는 것들을 채널이라고 부름


Posted by 知彼知己百戰不殆
,

ADC = Analog Digital Converter (아날로그를 디지털 변환기)

아날로그를 디지털로 변환할 때는 샘플링을 해야 한다. 샘플링이란 아날로그처럼 연속적인 신호를 규칙적인 부분으로 나눠서 그 부분의 데이터 값을 가져오는 방법이다.

파란선으로 된 부분이 아날로그 신호를 디지털화 하기 위해서 샘플링 한 것인데, 이 샘플링을 1초에 몇 번 하느냐에 따라서 샘플링 주파수가 나오게 된다. 만약 5Hz의 샘플링 주파수를 가지고 있다면 1초에 5번의 샘플링을 진행하는 것이다. 그리고 이 샘플링이 가로축에 대해서만 하는 것이 아니라 세로축에 대해서도 샘플링을 할 수가 있는데, 

빨간선으로 보이는 부분이 세로축(진폭)에 대해서 샘플링을 수행 한 것이다. 이것도 아까 위에서 말한 것처럼 샘플링 주파수를 계산할 수 있다.


예를 들어 CD의 샘플링 주파수는 16bit 44.1kHz이다. 즉 44100Hz*65536bit(2^16=2byte)=88200Byte가 나온다. 88200Byte는 음원의 1초 용량이다. 만약 음원이 스테레오면 *2, 3분짜리 음원이면 *180, 메가바이트 단위로 바꾸려면 1024를 두 번 나누어 주면 된다.


DAC = Digital Analog Converter (디지털 신호를 아날로그 신호로)

양자화의 특성 때문에 아무리 디테일하게 샘플링을 해도 디지털이랑 아날로그는 똑같을 수 없다. 아날로그에서 디지털로 변환할 때 손실 압축이 진행된다.

ADC가 녹음기(샘플링 시켜서 디지털화)라고 본다면, DAC는 재생기라고 볼 수 있다.


JTAG = 선 규약(국제표준) JTAG 지원 장비를 사서 꽂으면 내부를 볼 수 있고, control이 가능하다.

Embeded System 개발 시에 사용하는 디버깅 장비이다. Embeded System을 개발하기 위해 통합한 회로로 사용되는 IEEE 1149.1의 일반적인 이름이지만 보통 디버거를 가리킨다. 일반적으로 JTAG란 말 보다는 Boundary-Scan이란 말을 더 많이 사용한다. CPU의 상태와는 상관 없이 디바이스의 모든 외부 핀을 구동시키거나 값을 읽어 들일 수 있는 기능을 제공한다.

JTAG의 작동방식?

칩 내부에 Boundary Cell을 만들어 이것이 외부의 핀과 1:1로 연결되어 프로세서가 할 수 있는 동작을 중간의 Cell을 통해 인위적으로 수행할 수 있도록 하는 것이다. 이런 방식으로 JTAG는 다양한 하드웨어의 테스트나 연결 상태등을 체크할 수 있다. 또한 JTAG 라인을 통해 칩 내부를 조사(capture 기능) 및 제어(INTEST 기능)을 할 수 있다. 이 밖에도 EXTEST 기능을 이용하여 Embeded System의 다른 칩을 제어 할 수도 있다. 예를 들면 Embeded Systemm의 ROM(Nor Flash일 경우), NAND Flash 등의 내용을 기록하거나 읽어 낼 수 있다. 리눅스의 부트로더등을 다운로드하여 아무런 코드도 없는 Embeded System을 부팅하게 만들 수 있다.

Posted by 知彼知己百戰不殆
,