DSP 기초 1 - Sampling

eggmo·2024년 3월 3일

DSP

목록 보기
1/10

안녕하세요 Eggmo입니다.

이번 블로그 포스팅 주제는 DSP의 가장 기초가 되는 Sampling 이론입니다.

목적

  1. Sampling 이론을 이해할 수 있다.
  2. Sample-Rate, Sample-Period 단어를 명확히 이해할 수 있다.
  3. MATLAB을 통해 디지털 신호를 묘사할 수 있다.
  4. Verilog에서 Sampling을 바라보는 관점을 이해할 수 있다.

배경 지식

우리가 보고 듣는 모든 신호는 연속 시간 신호이다. 말 그대로 시간 축에서 연속하다는 뜻이다. [그림 1]은 연속시간 신호의 예시이다.

                                                     [그림 1]


위 그림은 1초 주기의 Sin 파형이다. x축은 시간, y축은 값이다.

그림 1에서의 신호는 모든 시간에 대해 값이 존재한다.
이를 연속 시간 신호(Continuous Time Signal) 이라고 한다. 디지털 세계에서는 위와 같은 연속 시간 신호를 처리할 수 없다. 그 이유는 값이 무한개 이기 때문이다. 상식적으로 생각해보자. 아이폰에 사진을 무한개 저장할 수 없듯이, 디지털 세계에서 무한개의 값은 처리할 수 없다.

따라서 연속 시간을 특정 간격으로 쪼개서 값을 유한개로 만들어 줘야 한다. [그림 2]를 보자.

                                                     [그림 2]

[그림 2]는 1초 주기의 연속 시간 Sin 신호를 0.05초 간격으로 값을 선택하고 나머지 값은 버렸다. 선택된 값은 빨간색 동그라미로 표시하였다. 빨간색 동그라미 사이의 값들은 실제로 버려졌다. 따라서 특정 값만 선택된 신호는 [그림 3]과 같이 표현된다. 이를 이산 시간 신호(Discrete Time Signal) 이라고 한다.

                                                     [그림 3]


그림1~3을 통해 아래와 같이 단어를 정의할 수 있다.

  1. 연속 시간 신호에서 특정 간격으로 값을 선택해 이산 시간 신호로 바꾸는 과정을 Sampling 이라고 정의 한다.

  2. 이산 시간 신호의 x축 간격을 Sample Period로 정의 한다. 즉 선택된 샘플간의 시간 간격을 의미한다. [그림 3]에서 Sample Period 는 0.05초이다.

  3. Sample Period의 역수를 Sample Rate로 정의 한다. 1초간 몇개의 샘플이 선택됐는지를 의미한다. [그림 3]에서 Sample Rate는 20Hz이다.


MATLAB 모델링

아래 코드는 1초 주기의 Sin 파형을 SamplePeriod = 0.05로 설정하여 이산 시간 신호로 표현하는 MATLAB 코드이다.

close all;
clear all;

SamplePeriod = 0.05;
SampleRate = 1/SamplePeriod;
t = linspace(0, 1, SampleRate);

sig = sin(2*pi*1*t);
stem(t, sig);

이를 통해 모뎀 신호를 묘사할 때 Sampling 이론을 통해 값을 묘사할 수 있게 되었다.

Verilog 모델링

실제로 Sampling을 Verilog로 묘사하는 방법은 클럭이다.

[그림 2]의 신호를 Verilog로 묘사하는 방법은 SampleRate의 클럭을 설정하면 된다.

module sample_test;
	parameter CLK_PERIOD = 0.05
	reg clk = 0;
	always #(CLK_PERIOD/2) clk = ~clk;
endmodule;

클럭의 Postive Edge 마다 값이 표시 되기 때문에 SamplePeriod 간격마다 시스템 클럭에서 상승엣지를 만들어주면 이산 시간 신호를 모델링 할 수 있다.

다만 Sample Period와 시스템 동작 클럭이 항상 일치 하지 않을 수 있다. 위 코드는 설명의 편의를 위해 Sample Period와 시스템 동작 클럭이 일치하다고 가정한 상태이다. 실제로는 두 클럭이 다를 수 있다.

이를 통해 Sampling이론을 및 MATLAB, Verilog를 통해 이해할 수 있다.

profile
안녕하세요eggmo입니다.

0개의 댓글