임베디드/[ Embedded ] 28

[ Embedded ] 12. DAC

DAC Digitl-to-Analog Converter 디지털 이진 코드를 받아 아날로그 신호를 발생시키는 장치 ​ => n 비트 디지털 입력 신호에 대해 디코더에서 2n개의 아날로그 전압 기준신호를 발생 :black_nib: DAC 성능 표현 정정 석능 : DNL, INL, 단조증가성 동적 성능 : 글리치 에너지(Glitch Energy), SFDR(Supurious Free Dynamic Range), SNR(Signal to Noise Ratio), 유효 비트 수(Effiective Number of Bit)

[ Embedded ] 11. ADC

ADC와 DAC ADC : Analog to Digital Converter DAC : Digital to Analog Converter Sample Rate와 Bit Depth를 활용해서 DAC는 우리의 디지털데이터를 다시 아날로그 오디오로 변환합니다. 이것은 각 샘플 포인트를 보간법을 이용해서 전환시킵니다.(끝과 끝을 통해서 예측) 보통 176.4kHZ나 192kHZ와 같은 높은 Sapmle Rate 들이 샘플링 단계에서의 에러와 불일치함을 만들수 있습니다. 하지만 다운샘플링과정에서 보간하거나 재계산을 통해 이런 에러 들을 보정한다. 때문에 이런 에러들보다 중요한 핵심은 캡쳐하는 순간의 해상도이다. # Note 실제로 높은 Sample Rate에서 녹음되고 처리된 후 다운커버팅된 음원이 처음부터 낮은..

[ Embedded ] 10. Bit Depth에 관하여

Bit Depth Bit Depth를 이해하기 가장 쉬운 방법은 "Bit Depth는 오디오의 음량 총량을 담는 컨테이너다"라고 생각하는 것이다. Bit Depth는 역시 헤비록, EDM이 만들어지는 홈스튜디오라면 크게 중요하지 않을 수 있다. 하지만 만약 적절한 음량에서 듣고 녹음하는 경우라면, 전체 프로덕션 과정에서 Bit Depth의 차이는 크게 느껴질 수 있을 것이다. 적절한 Gain 스테이징과 모니터링 레벨에서는 이 차이는 더욱 크게 느껴진다. Bit Depth는 Recording 하려는 음원이나 Audio File의 Line Level(0dB)부터, Noise Floor까지에 이르는 Dynamic Range의 거리를 조절해준다. Line Level은 Recording 또는 Mixing 시에 웬..

[ Embedded ] 09. MUTEX를 이용한 쓰레드 동기화

MUTEX를 이용한 쓰레드 동기화 1. 공유자원에 대한 접근 제어 다수의 객체가 공유 자원에 접근하려고 하면, (공유 자원의 종류에 따라서) 접근 시점을 동기화 시켜줄 필요가 생긴다. 여기에서 동기화란 시간과 공간을 맞추어 준다는 의미로, 즉 공유 자원 영역(공간)에 접근하는 객체들의 진입 시간을 제어할 수 있어야 함을 의미한다. Multi Thread(멀티 쓰레드) 프로그램 역시 공유 자원에 여러 개의 쓰레드가 접근할 수 있으므로 공유 자원 영역에 대한 동기화가 필요하다. 카운팅 프로그램을 예로 들어보자. 카운트 변수는 전역변수(:12)로 A,B 두개의 쓰레드가 공유하면서, 1씩 증가하는 카운팅 정보를 유지하기 위해 사용된다. 공유자원 영역 즉 "count 값을 읽어 오고, 연산을 해서 저장하는" 영역..

[ Embedded ] 08. DMA모드란?

DMA 모드 Direct Memory Access I/O로 인한 성능 감소 방지를 위해 CPU 개입 없이 I/O 장치와 기억장치 간 직접 데이터 전송 방식 처리기를 거치지 않고 DMA컨트롤러에 의해 주변기기로부터 데이터가 메모리로 직접 전송되는 것을 뜻한다. 이 때 각 주변기기는 DMA 컨트롤러 칩의 지시에 따라 데이터를 주고받게 되며 DMA가 지원되지 않는 보드나 주변기기에서 이 부분을 체크하게 되면 컴퓨터가 작동을 멈추는 수가 있으므로 확인하고 사용하는 것이 좋다. DMA I/O Direct I/O(DMA 미사용) DMA 기반 Data 처리 중 CPU는 다른 프로세스 처리 Data I/O 처리 시 완료까지 작업 중지, CPU 대기 필요 DMA 구성도/구성요소 DMA 전송을 위한 중앙처리장치 버스 신호..

[ Embedded ] 07. FDMA(주파수분할 다중접속)

FDMA frequency division multiple access : 주파수분할 다중접속 통신망을 통해 전달되는 데이터중 가장 많은 양을 차지하는 것이 음성일 것이다. 사람의 음성을 전달하는 데 필요한 최소한의 주파수 대역폭은 300 ~ 3400 Hz로 알려져 있는데 이러한 음성 신호를 전기적인 신호로 변환하여, 통신망을 통해서 다른 곳으로 전달하기 위해서는 음성 신호를 전송하기에 적합한 전기적인 신호로 바꾸어 주고, 수신하는 쪽에서 이를 다시 음성 신호로 역변환을 하게 된다. 통신망에서 사용하는 전송 시스템의 특성을 살펴보면 전송가능한 주파수 대역이 음성 대역폭 보다는 월등이 크고, 훨씬 높은 주파수까지도 전송할 수 있다. 이런 전송로는 단 한 사람의 통신을 위해서만 사용하는 것은 경제적으로나 시..

[ Embedded ] 06. SSD 요약정리

SSD 기본 1. 메모리 셀타입 SSD(Soild state drive)는 플래시 메모리를 기반으로 하는 저장 장치이다. 각 비트들은 셀에 저장되는데, SSD의 셀은 1비트(SLC), 2비트(MLC), 3비트(TLC) 셀 타입이 있다. 2. 수명 제한 각 셀은 최대 가능한 P/E(Program/Erase) cycle을 가지며, 최대 가능한 P/E cycle을 초과하면 결함 셀(Defective cell)로 간주된다. 이는 NAND 플래시 메모리는 언젠가는 Wear-off되고 수명이 제한적이라는 것을 의미한다. 3. 벤치마킹의 어려움 테스트도 결국 사람이 수행하는 것이기 때문에, 모든 벤치마크는 오류나 실수를 담고 있다. 그래서 제조사나 제 삼자에 의한 벤치마킹 결과를 참조할 때는 주의해야 한다. SSD를..

[ Embedded ] 05. Sampling Rate와 나이퀴스트이론

Sampling Rate 소리는 공기 중의 떨림이다. 그 공기 중의 미세한 움직임을 우리의 귀는 우리의 뇌가 이해할 수 있는 형태로 바꿔주는 것이다. 즉, 하나의 형태의 요소가 다른 형태로 바뀌는 것이다. 마찬가지로 우리가 소리를 디지털화 시키기 위해선, 연속적인 아날로그 소리를 컴퓨터가 이해할 수 있는 디지털 언어로 바꿔주어야 한다. 이 과정에서 바로 Sampling 이 등장하게 된다. `샘플링 레이트(Sampling rate)` : 1초에 몇개의 샘플을 추출할 것인지 `Bit Depth` : 한 개의 샘플이 얼마만큼의 크기를 가지는지 => 잘개 쪼갤 수록 부드러운 곡선이 된다. => Sampling rate가 높을 수록 아날로그와 유사한 디지털 값(고음질)을 얻을 수 있다. 나이퀴스트 이론과 기본적인..

[ Embedded ] 04. 화질과 해상도, 채널에 관하여

화질 화질에 중요한 영향을 미치는 2가지 요소 프레임레이트(Frame rate) 카메라에서 촬영된 영상은 한 장 한 장의 이미지로 구성되어 있으며 각각의 이미지를 프레임이라고 합니다. 프레임을 나타내는 단위는 fps(frame per second)이고, 1초 동안 재생되는 이미지 수를 의미합니다. 예를 들어 24프레임이라고 하면 초당 24장의 이미지가 있다는 의미. 프레임이 높을수록 자연스러운 영상을 얻을 수 있지만, 데이터 크기가 커지는 단점이 있다! 비트레이트(Bit rate) 앞에서 다룬 프레임 레이트는 초당 이미지의 갯수라면 비트레이트는 bps(Bits Per Second)로 1초의 영상을 구성하는 데이터 크기라고 생각하면 된다. 아무래도 데이터 크기가 작은것 보다는 데이터 크기가 커진다면 화면을..

[ Embedded ] 03. 오디오코덱의 이해와 역사

AUDIO CODEC의 이해와 역사 오디오 코덱 : 오디오의 디지털 데이터 스트림을 부호화하거나 복호화하는 컴퓨터 프로그램이나 장치. 소프트웨어에서 오디오코덱은 주어진 오디오 파일이나 스트리밍 미디어 오디오 코딩 포맷에 따라 디지털 오디오 데이터를 압축하고 압축 해제를 하는 알고리즘을 구현하는 컴퓨터 프로그램이다. 알고리즘의 목적은 고품질의 오디오 신호를 품질을 유지하면서 최소한의 수의 비트로 표현하는 것이다. 이로써 저장된 오디오 파일의 전송에 요구되는 스토리지 공간과 대역을 효율적으로 줄일 수 있다. 대부분의 코덱들은 하나 이상의 멀티미디어 플레이어와 라이브러리형태로 구현된다. 하드웨어에서 오디오 코덱은 아날로그 신호를 디지털 신호로 인코딩하고 디지털 신호를 아날로그로 디코딩하는 단일장치를 말한다. ..

[ Embedded ] 02. WDT(워치독 타이머)란?

워치독 타이머(WDT) Watchdog Timer 1. 고신뢰성 시스템을 위한, 워치독 타이머 가. WDT의 개념 비정상, 무한루프 등에 빠진 경우 시스템 통제가 불가능한 상황에서 자동으로 시스템을 리셋하는 하드웨어 기능 타임아웃이 되기 전 S/W명령으로 그 값을 clear시켜주지 않으면 MCU를 reset시켜 시스템을 정상적으로 동작하고 있는지 감시하고 지속적인 오동작을 방지 신뢰성 향상 기술 나. WDT의 필요성 제어 실패 방지 메커니즘 필요 불필요한 반복 또는 제어 실패를 방지하는 메커니즘 필요 예상치 못한 실패 안전모드 필요 시스템 일부가 예상 못한 제어 실패 시 안전모드로 전환 필요 2. WDT 개념도 및 구성요소 가. WDT 구성도 나. WDT 구성요소 Clock : HW 디바이스를 동작시키는..

[ Embedded ] 01. 메모리와 프로세스에 관하여

메모리 RAM 컴퓨터를 종료하면 데이터가 날아가는 휘발성 메모리 하드 디스크나 CD와는 달리 속도가 매우 빠르다.(데이터에 랜덤하게 접근할 수 있음) 컴퓨터는 대부분의 데이터들은 메모리에 보관해 놓고 작업을 한다. 틈틈이 하드디스크에 저장! ROM 컴퓨터를 종료해도 데이터가 날아가지 않는 비휘발성 메모리 ex) CD-ROM, DVD-ROM, 하드디스크 => (데이터에 순차적으로 접근한다) 컴퓨터의 한 개의 메모리 소자는 0 혹은 1의 값을 보관할 수 있다. 이 이진수 한 자리를 가리켜 비트(Bit)라고 한다. 따라서, 1개의 비트는 0 또는 1의 값을 보관할 수 있다. 8bit = 1byte 8bit(1byte)로 나타낼 수 있는 최대의 수는 0 ~ 0xFF. 0부터 255로 총 256개의 수를 나타내게..

[ Embedded ] 00. 임베디드의 이해(LINUX 기반)

** 무엇을 배워야 임베디드 리눅스 개발을 잘할 수 있을까? ** 좁게 보면 임베디드 리눅스 개발자가 알아야할 지식은 다음과 같다. 리눅스 디바이스 드라이버 리눅스 커널 CPU 아키텍쳐 SoC 조금 넓게 보면 다응 내용도 알면 좋다. 유저 공간 HAL(Hardware Abstraction Layer) 코드 구현 빌드 스크립트 구현 테스트용 디바이스 드라이버 구현 git과 형상관리 임베디드 리눅스 개발을 시작하면 바로 디바이스 드라이버를 맡는 경우가 많다. 물론 프로세스나 개발 회사 규모에 따라 드라이버 개발 범위가 다르다. 제품을 이루는 디바이스 드라이버의 특정 분야를 맡을 수도 있고 어떤 경우 한 명의 임베디드 개발자가 임베디드 리눅스를 채임지는 경우도 있다. 디바이스 드라이버..