데이터통신

[데이터통신 #3_2] Digital to Analog _Pied Piper

우당탕탕코딩일기 2023. 4. 5. 18:52

들어가기 전에

 

- Data Rate (Bit Rate) : 초당 비트수, bps

 

- Signal Rate (Baud Rate) : 초당 단위 신호 수

 

 

Modulation(Digital to Analog) 기술

변조 : 이진부호 -> 전기적 신호

변조 방식은 기존의 반송파 및 반송 주파수를 입력 신호에 맞게 진폭이나 주파수 및 위상 등 기존 반송파의 특성을 수정(변조)함으로써 원하는 아날로그 신호를 얻을 수 있다.

 

  • ASK(Amplitude Shift Keying) : 신호 크기로 0/1로 표시한다
  • FSK(Frequency Shift Keying): 주파수 변화로 0/1 표시한다.
  • PSK(Phase Shift Keying): 위상 차이로 0/1 표시한다
  • QAM(Quadrature Amplitude Modulation) : 위상+크기로 0/1 표시한다.

FSK를 제외하고, 대역폭(정보를 전송할 수 있는 능력, bandwidth)은 항상 Signal Rate와 비례한다.

 

ASK

 

기존의 반송파를 이진수 0 또는 1로 나타내기 위해 반송파의 진폭을 변화시켜 아날로그 신호를 얻는 방식이다.

- 노이즈에 영향을 많이 받는다.

 

FSK

기존의 반송파를 이진수 0 또는 1로 나타내기 위해 반송파의 주파수를 변화시켜 아날로그 신호를 얻는 방식이다.

 

-노이즈에 영향을 받지 않는다.

 

- 반송 주파수는 대역폭의 중간값이다.

 

 

PSK

1기존의 반송파를 이진수 0 또는 1로 나타내기 위해 반송파의 위상을 변화시켜 아날로그 신호를 얻는 방식이다.

서로 다른 신호간 위상이 180도 차이가 나는것

-노이즈에 영향을 받지 않는다.

 

 

QAM

PSK, ASK 합친 거

2개의 정보를, 동일 주파수이지만 위상이 90˚ 차이나는,
          서로다른 2개의 반송파에 진폭변조하고, 이를 합친 것

신호 레벨 = 진폭 * 위상 : 표현 가능한 정보의 수

 

위 그림인 16 QAM의 경우 12가지의 위상과 3가지의 신호크기를 조합하여 총 16개의 신호가 바둑판처럼 사용되게 된다. (I/Q 플롯에서 반지름은 신호의 크기를 말하며, I축을 기준으로 신호가 돌아간 각도는 위상을 의미한다. 1-10장 참조)

 

 

LTE 모뎀

: 스냅드래곤 X16 모뎀은 4x4 MIMO, QAM 등 퀄컴만의 기술력으로 기가비트급 LTE 속도를 지원하는 최초의 상용 모뎀

- 삼성전자는 데이터 전송 속도를 극대화 하기 위해 기지국과 단말기에 각각 4개의 안테나를 동시에 사용할 수 있는 4x4 MIMO 기술(다중 입출력), 주파수 변복조 방식을 기존의 6비트 단위(64QAM, 직교 진폭 변조)에서 8비트로 처리하는 '256QAM' 기술을 적용

 

아날로그데이터를 아날로그 신호로 바꾸기

 

라디오 주파수를 달리 해서 보내기

 

변조(Modulation)

● 대표기술

○ AM ○ FM ○ PM

 

 

 

Pied Piper Project( 문자열을 송수신 )

문자열을 디지털로 전송할 때, 소리로 전송할 수 있다. 이런 방식과 유사한 게 버튼식 전화기(DTMF) 이다. 우리가 전화를 위해 버튼을 누른다면 해당 주파수가 발생하고 전화국의 교환기에 전달되고, 교환기에 있는 디코더가 이것을 해석하여 주파수를 숫자로 인식하는 원리이다. 이 때, 전화기 버튼마다 어떤 숫자에 매핑되어있는지에 대한 '약속'이 필요하다. 이러한 약속을 프로토콜이라고 한다. 문자열을 소리로 전송하는 프로젝트인 Pied Piper Project   에서도 비슷하게 이용되는데 한 번 살펴보자.\

 

 

작동 순서

안드로이드 앱에서 HelloWorld 문자 보낼 때, 소리로 HelloWorld를 전송한다. 수신 프로그램은 리눅스 파이썬 프로그램에서 소리를 듣고 PCM을 이용하여 디코딩 후, helloWorld 출력하게 된다. PCM 은 음성의 표본화를 통해 이진식 디지털 데이터로 기록하여 아날로그->디지털로 변환할 수 있는 시스템이다. 

 

 

 

사용되는 기술

- 송신자-수신자 약속(프로토콜) 

sampling interval(샘플링 간격) : 삐~ 소리 얼마나 지속되는지/ 톤 한 개가 지속하는 시간

chunk size : 삐~ 소리가 몇 비트로 표혀노디는지/ 톤 한 개가 포함하는 비트 수

handshake start frequency : 청크 시퀀스가 시작하는 것을 알리는 주파수

handshake end frequency : 청크 시퀀스가 끝나는 것을 알리는 주파수

transmission start and step frequency : freq = start + (i*step) : 시작 주파수 start = 1024Hz 로 설정하고 4비트 숫자(i)마다 256Hz step 씩 다르게 한다. 즉, 어떤 알파벳에 대응되는 숫자 i에 대하여 소리를 만들 수 있는 주파수 freq 이 만들어지게 된다.

비트 오류 복구 : Reed Solomon 

 

 

송신자가 송신하는 과정

1.보낼 텍스트(페이로드)에 대하여 Reed Solomon 인코딩을 계산한다.

2. handshake start frequency 전송하기(청크 시퀀스의 시작을 알린다)

3. 보낼 텍스트 chunk 비트크기로 나누고, 해당 주파수로 변환하기

4. handshake end frequency 전송하기(청크 시퀀스의 끝을 알린다.)

 

수신자가 수신하는 과정

0. 리눅스 사운드 구동을 위한 alsa  드라이버를 이용하여 PCM 코덱 호출

1. FFT(고속 푸리에 변환) 으로 주요 주파수(dominant frequency) 찾기

2. handshake start 일 경우 해당 주파수 데이터를 수집하기

3. handshake end 일 경우 수집 종료 후 디코딩하기.

- 주요 주파수 이외 데이터 필터링 -  bit chunk 단위로 변환 후 바이트 생성 -  Reed Solomon 코드로 검증

 

 

 

* 푸리에 변환

-시간에 대한 함수 -> 주파수 성분으로 분해하는 변환

-서로 다른 주파수가 섞인 신호에서 개별적인 신호 추출하는 수학 도구 

 

 

 

 

 

728x90