한 걸음씩 기록하며

[아날로그 처리 방법] 본문

CS & SW & IT 용어

[아날로그 처리 방법]

Haksae 2022. 2. 11. 03:20

0. Analog & Digital

  • Analog
    • 아날로그는 “외부적인 원인에 의해 연속적으로 변하는 것들을 연속된 물리량"으로 나타내는 것을 뜻한다.
    • 우리가 자연에서 얻는 신호는 대개 아날로그이다. (빛의 밝기, 소리의 높낮이나 크기, 바람의 세기 등)
  • Digital
    • 아날로그의 반대로서, 연속적이지 않고, 특정한 최소 단위를 갖는 이산적인 수치를 이용하여 나타내는 방식을 뜻한다.

 

  • Sampling (표본화)
    • 아날로그 자료 샘플을 일정한 주기로 채집하여 디지털로 변환하는 과정을 샘플링이라고 한다.

1. 디지털을 아날로그로 변환

DAC (Digital to Analog Converter)

  • 디지털 신호를 아날로그 신호로 변환해주는 장치
  • 즉 2진수의 디지털 신호를 연속적인 아날로그의 값으료 변환하는 장치이다.
  • DAC를 이용해 아날로그 파형을 만들어 낼 수 있고, 메모리를 장치에 넣어서 복잡한 파형도 만들어낼 수 있다.
  • 대표적인 DAC 예로는 오디오가 있다. 음악의 디지털 데이터를 아날로그 오디오 신호로 변환하는데 DAC가 사용된다.

  *자세한? 내용은 아래서..

 

FIFO(First In First Out, 선입선출)

  • 복잡한 파형을 만들기 위해 장치에 데이터를 써넣기 위한 메모리가 들어있다. 
  • CPU가 수행하는 다른 작업과 무관하게 데이터를 일정한 비율로 읽어서 처리하기 위해 위에서 언급한 메모리를 FIFO 설정으로 만들어서 구현한다.
  • FIFO 설정이 되어있는 메모리에는 두 가지 트리거가 들어간다. (물탱크와 동작이 비슷하다(
    • 높은 워터마크(high-water-mark): FIFO가 거의 꽉 찼을 때 인터럽트를 발생
    • 낮은 워터마크(low-water-mark): FIFO가 거의 빈 상태가 될 경우 인터럽트 발생
  • 이러한 방식으로 일정한 비율로 연속적으로 출력이 일어나도록 메모리를 채울 수 있다.

2. 아날로그를 디지털로 변환

ADC(Analog to Digital Convertor)

  • 아래의 block diagram을 통해서 ADC가 어떻게 아날로그 신호를 디지털 신호로 변환해주는지 알 수 있다.

 

 


1) Sampling(샘플링, 표본화)

  • 샘플링은 아날로그 신호에 일정 시간 간격으로 표본을 취하는 과정으로, 주기를 이산적으로 만드는 것이다.
  • 샘플링은 전기신호를 붙였다가 떼는 과정을 통해서 파형을 만든다. (각각 전압을 측정한다)
  • 일정 간격으로 점을 찍는다고 이해하면 편하다.
  • HOLD (책에서는 샘플 앤드 필드)
    • 샘플링은 전기신호를 붙였다가 떼면 신호가 없음으로 바뀐다.
    • 샘플링 될 때 순간에 같이 전기 신호를 받아서, 신호가 없어져도 어느정도 유지시켜주는 것을 HOLD라고 한다.
    • 보통 커패시터, 콘덴서가 이 역할을 한다.
    • 1) 홀드는 일정시간 전압을 유지하면서 계단 모양을 만들어주고 다음 신호가 올 때까지 나름의 이어주는 역할을 한다.
    • 2) 또한 홀드는 신호를 측정하는 장치가 신호를 측정할 수 있는 시간적 여유를 가져다준다.
      • 가령 디지털 방송(HDTV)은 48kHz이다. 1초에 48,000번이 나누어져있다는  뜻이다. 엄청 빠르다.. 
      • 전압 측정 어려워서, 홀드 단계를 설치해서 어느정도 신호가 유지될 수 있도록 한다. 신호를 측정하는 장치가 시간적 여유를 갖는다.

  •  

2) Quantization(양자화)

  • 표본화된 각 점을 진폭에 따라 어느 정도의 정밀도로 표현할 것인지 정하는 과정, 값을 이산적으로 만드는 것을 양화자라고 한다.
  • 여러 개의 가로 선을 그었을 때 해당 점이 속해 있는 범위에 따라 값을 정하는거라고 생각하시면 됩니다.

3) Coding(부호화)

  • 양자화된 신호를 디지털 정보인 2진수로 표현하는 과정이다.

  • 비교기(Comparator)
    • 비교기는 아날로그 회로로서, 샘플 데이터를 어떤 디지털 값으로 저장할지 정하기 위해 문턱값과 신호를 비교하는 장치이다.
    • 부호화 하기 전에 비교기를 거친다.


3. ADC 유형

1) 병렬 비교형 ADC (플래시형 ADC)

  • 비교기를 여러개 연결하여 디지털 값으로 변환하는 장치
  • 장점 : 무지하게 빠르다
  • 단점 : 비트 사용이 효율적이지 못하고, 비싸다

2)  램프 변환기 (계수 비교형 ADC)

  • 내부에서 D/A 컨버터로 발생시킨 전압이 아날로그 입력보다 커질 때까지 비교하는 방식
  • D/A 컨버터의 출력을 만들기위한 계수기를 사용, 이 계수기는 변환을 시작할 때 리셋되고 각 클럭 사이클마다 1씩 증가하는 구조를 갖는다.
  • 비교기는 D/A 컨버터의 출력이 아날로그 입력 전압을 초과하는 순간 계수기의 동작을 정지시키며, 이 마지막의 계수값이 디지털로 변환된 출력값이 된다.
  • 단점 : 값이 맞을 때까지 반복해야하기 때문에 변환에 오랜 시간이 걸린다.

3) 연속 추정 변환기 (축자 비교형 ADC)

  • 램프 변환기의 반복된 작업을 우회하는 방법으로 변환하는 방식
  • 비교기 결과 값을 바탕으로 샘플 데이터 값을 추정하여, 계속해서 샘플 데이터 값을 추정하며 좁혀나가는 방식이다.
  • 램프 변환기보다는 시간적인 부분이 많이 향상된다.

4. 디지털 오디오

*책 내용은 애매?해서... 그냥 따로 전개하며 정리해보겠습니다.

1) 샘플 레이트와 비트 레이트

  • 위의 파형은 2차원의 진동 주파수 데이터로서, 가로축은 시간, 세로축은 진폭을 의미한다.
  • 오디오를 인코더할 때 다음과 같은 설정을 보았을 것이다.
    • 샘플 레이트 : 가로 축의 해상도
    • 비트 레이트 : 세로 축의 해상도
  • 당연히 샘플 레이트와 비트 레이트가 높은 것이 원래의 아날로그 소리와 더 가까운 소리를 구현한다. (소위 더 높은 해상도, 더 좋은 음질)
  • 보통 CD의 음질이 44.1kHz, TV나 라디오 방송이 48kHz의 샘플 레이트를 가진다. 이는 1초에 44,100번, 48,000번 샘플을 측정한다는 뜻이다.

2) 나이퀴스트 이론 (Nyquist Theorem)

  • 인간의 가청 주파수 영역은 20hz~20kHz이다.
  • 엥? 인간이 1초에 20,000번 진동하는 소리까지 밖에 못 듣는데, 그럼 왜 CD의 샘플 레이트를 44.1kHz인가?
  • 소리의 진동 사이틀을 보면 답이 나온다.

  • 기본적으로 오디오 주파수는 위와 같이 하나의 사이클 단위로 나누어진다.
  • 이 때 위로 올라가는 + 부분이 공기가 압축되는 부분이고, 아래로 내려가는 - 부분이 다시 공기가 팽창하는 부분이다.
  • 소리란 곧 진동이고, 우리가 느끼는 것은 그 진동으로 인한 공기의 떨림이므로, 압축 -> 팽창 -> 압축 까지 모두 들어야 소리를 느낄 수 있다. (압축이나 팽창 중에 하나만 느낀다면 이게 진동이라고 느낄 수 없다.)
  • 그래서 오디오 신호의 한 사이클을 제대로 측정하려면 + 방향의 맨 위 꼭지점 하나와 - 방향의 맨 밑 꼭지점 하나를 모두 측정해야 하기 때문에 최소 2번은 측정해야한다.
  • 그래서 인간이 들을 수 있는 가장 높은 소리인 초당 20,000번의 떨림인 20kHz을 제대로 측정라혀면 컴퓨터는 최소한 1초에 20,000*2 = 40,000번 측정 해야한다.
Q. 그럼 40kHz여야지 왜 CD가 44.1kHz인가?
우리는 못 듣지만, 우리의 가청 주파수를 넘어가는 고음역대의 소리가 존재한다. (가령 박쥐, 돌고래 등)
만약 소리가 40kHz의 샘플 레이트인데, 만약 1초에 30,000번 사이클을 도는 더 높은 주파수의 소리가 들어와 버린다면?
-> 점을 이상한 곳에 찍는다.
-> 이를 위해서 필요한 것이 바로 필터(Filter)이다.

 

3) 소리 배합

실제 파형

  • 서로 다른 기본 파형의 소리 여러개를 동시에 재생한다고 생각해보자.
  • 각 파형들의 진폭이 합해지고 상쇄되면서 새로운 파형이 만들어질 것이다.
  • 이 때 같은 부호의 진폭이 만나면 합해지고 다른 부호의 진폭이 만나면 서로 차감된다.
  • 즉 여러개의 기본 파형을 동시에 재생하면, 각 파형들이 불륨(진폭) 비율대로 합쳐진다.
  • 즉 세상의 복잡한 파형의 소리는, 기본 파형 여러 개를 합쳐진 것이다.

4) 빠른 푸리에 변환 (Fast Fourier Transform)

  • 위의 소리 배합을 반대로, 기본 파형을 여러 개로 분리하는 것이 푸리에 변환의 기본 발상이다.
  • 푸리에 변환의 아이디어는 다음과 같다.
    • 모든 소리는 기본 파형(Sine파 등) 여러 개의 합이다.
    • 따라서 모든 소리는 여러 개의 기본 파형으로 분리할 수 있다.
    • => 즉 푸리에 변환은 소리의 파형을 여러 개의 기본 파형으로 변환하는 알고리즘이다.

  • 분리된 기본 파형들은 "특정 주파수"에서의 "진폭 값의 변화"를 나타내므로, 이를 계산하면 복잡한 파형을 구성하는 각 주파수별 진폭의 값을 구할 수 있다.

  • 그렇다면 우리는 디지털 신호를 2차원적으로 사용하는 것이 아니라 3차원 적으로 사용할 수 있다.
  • 가령 들어오는 소리를 디지털 신호로 바꾸고, 특정 주파수의 값을 조절할 수 있는 것 같은 일이다. (필터)
  • 우리는 그래픽 이퀄라이즈와 같은 장치로 특정 주차수의 값을 상쇄시키거나 통과시키고 키우는 등, 맘대로 조정할 수 있다.

 

5) 위상(phase)

  • 주기적인 신호의 한 사이클 또는 한 주기 내에서 시작 시점을 기준으로 위치나 시간 차이를 나타내는 값
  • 책에서는 원래 신호보다 약간 뒤쳐지거나 앞서는 것으로 설명했다.
  • 위상차는 듣는 사람이 스테레오(2way)로 듣기 때문에 발생한다. (왼쪽과 오른쪽 귀에 도달하는 신호 사이의 시간차)
  • 위상차를 이용하여 스테레오 사운드는 이미지를 만들어내는데, 이를 통해 실제 공간에서 어떤 소리들이 어디에 위치하는지를 파악할 수 있게 해준다.

6) 압축

  • 오디오에는 많은 데이터가 들어가 있기 때문에 이를 압축해서 사용하곤한다.
  • 무손실 압축 : 원래 데이터를 그대로 유지하고, 데이터 크기를 절반으로 줄인다. (FLAC 등이 있다.)
  • 손실 압축 : 코덱으로 변환하여, 일부 세부 사항이 사라진다. (MP3, ACC, Ogg 등이 있다.)

 

 

 

참고 및 출처

한 권으로 읽는 컴퓨터 구조 프로그래밍 - 조너선 스타인하트

https://altitudetvm.com/ko/elektronika/786-pengertian-adc-analog-to-digital-converter-fungsi-cara-kerja-dan-jenis-jenisnya.html

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=narabaljeon&logNo=220873516574

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=bkpark777&logNo=80206841261 

https://curryyou.tistory.com/439

https://ogu45.com/zbxe/school/74027

https://evan-moon.github.io/2019/07/10/javascript-audio-waveform/

https://www.cuonet.com/bbs/board.php?bo_table=qna2&wr_id=1053319

 

 

 

 

Comments