아날로그 -> 디지털 소리 변환
1. 소리와 주파수
전화기 : DTMF (아날로그 소리 신호 -> 디지털 숫자 정보 전달)
사람 목소리 전송 주파수 : 가청주파수 : 20~20,000Hz
(아날로그 소리 -> 디지털 신호) == PCM 과정
- 1초에 8,000개의 샘플(스냅샷) 사람 최대 4000hz * 2(나이퀴스트)
- 1개 샘플은 8bit 로 표현
- 8,000 * 8 -> 64k, 즉 64kbps (1초에 64k 의 bit 가 전송 됨)
변조는?
==샘플링 -> 양자화 -> 인코딩 ==
샘플링 : 사람의 목소리는 가청주파수대역의 일부분(300-3400hz)
연속 신호-> 디지털 변환해주는 하드웨어 = ADC
(ex)
샘플링 : 44.1kHz 샘플링 (1초에 44100개/ 즉 1개에 0.023ms 소요)
양자화 : 특정 전압 레벨로 구분,
10bit ADC 에서 5V / 2^10 = 4.88mV
나이퀴스트 공식
==fs = 2 max(아날로그 주파수) ==
사람이면 2 4000개의 샘플
ADC 는 아날로그 신호를 디지털로 바꾸는 하드웨어라 10bit 면 2^10 단계로 쪼갬 . 그리고 측정범위 V 를 나눔
0-5V 를 1024로 나눠서 칸 간격을 구함. 즉 4.88mV 보다 작은 차이는 구분 못함.
따라서 양자화 bit 가 크면 잘개잘개 측정할 수 있다
사람 목소리는 1초에 몇 비트가 전송되어야하나요?
즉, 사람 목소리를 전송할 때 드는 비트 수
1초에
2 4000 (<- 샘플링 개수) 8bit = 64k 비트 전송해야함
즉 64bps
• 전화: 300 – 3400 Hz
• AM 라디오: 100 – 5000 Hz
• FM 라디오: 100 – 10,000 Hz, 50 – 15,000 Hz
• CD: 20 – 20,000 Hz
Common sampling frequencies are 48 kHz as used with DVD format
videos, or 44.1 kHz as used in Compact discs
44.1 kHz 16 bits 2(스테레오, 스피커 개수) = 1411 kbps
Python pyaudio 이용 wav 녹음하기
RATE : 샘플링주파수
CHUNK : 한번에 읽는 단위
디지털 -> 아날로그 소리 변환
1. 변조 기술(이진부호를 전기적 신호로..)
- ASK : 신호 크기로 0/1 (신호가 클때)
- FSK : 주파수 변화로 0/1 (신호가 빼곡할 때)
- PSK : 위상 차이로 0/1 (정상위상)
- QAM : 위상 + 크기로 0/1 (크기와 각도를 섞음.)
- 16-QAM = 4bit
(sin 함수에 들어가는 3가지 변수 ㄷㄷ)
(송신자)디지털 -> 모듈(변조) -> 아날로그 -> 디모듈(복조) -> 디지털 (수신자)
16QAM : 디지털 쾀
2. 모뎀소리(FSK) 설명
디지털 데이터 통신 단계
- 초기 신호
- 핸드쉐이크 프로토콜 협상
- 동기화 및 압축
- 데이터 전송 (위상 변조 PM, 주파수 변조 FM, 진폭 변조 AM)
- 연결 종료
모뎀 장치는 통신장치면 모두 다 있다.
LTE : 4세대 이동통신표준
스마트폰 <-> 기지국 통신 핵심 부품
무선주파수 : 700MHz ~ 2.6 GHz
주파수 대역 전환 + 전력제어 + MIMO (다중 인풋 다중 아웃풋, 다중 안테나 사용, 동시에 여러 데이터 송수신)
채널 코딩 및 복호화, 오류 수정 및 복원
퀄컴 스냅드래곤 X16 모뎀 : 4 * 4 MIMO, QAM 등 퀄컴 기가비트급 LTE 속도
삼성전자 기지국과 단말기는 256QAM - 8bit ㅋㅋ
3. Github Pied Piper
목표 : 문자열 -> 소리 -> 문자열 수신
작동순서
- 안드로이드 앱에서 HelloWorld 문자 보내기
- 소리로 HelloWorld 전송
- 리눅스 파이썬 프로그램에서 소리를 듣고 HelloWorld 출력
4. 아날로그 매체(소리)로 디지털 정보 보내기
아날로그 매체 : 소리(가청주파수)
디지털 정보 : 아스키 코드
목적 : 아스키 코드를 송수신
통신의 기초 원리 : 아날로그 + 디지털 변환 + 주파수 (푸리에 변환)
프로토콜 이해 : 시작, 종료 신호, 알파벳 주파수 매핑
실제 환경 고려 : 오류 탐지 및 제어
문자 -> 소리 -> 문자 해독
ASCII 코드는 7bit 문자열로 128개 (출력가능 95개)
7bit 를 전송 -> 95개 서로 다른 아날로그 소리로 표현
주파수와 시간 길이를 약속 (어떤 주파수를 얼만큼 낼 지를 미리 약속해놔야 해독이 가능하다)
디지털을 아날로그로 보낼 때 실제 구현은 n bit 청크로 묶어서 보낸다.
데이터 수집 시작점과 수집 종료점을 정확하게 구분하여 통신을 제어하기 위해 주파수를 다르게 설정한다.
5. 송신자-수신자(프로토콜) D->A->D
- sampling interval : 삐소리 tone 이 얼마나 지속되는가 (100ms)
- chunk size : 삐소리가 몇 bit 인가 (4bit)
- handshake start frequency : 시작 8192Hz
- handshake start frequency : 청크 끝 알림 8704Hz (8192+512)
- 컴퓨터의 bit 를 주파수로 변환하는(FSK) 주파수 매핑 공식
- freq = start+(i * step)
- 내가 전송할 데이터를 몇 Hz 의 소리로 낼 것 인가
- 4bit 면 i = 16, start step 은 주어짐
- 비트 오류 복구 = Reed Solomon (4byte)
송신자 동작 4단계
- 보낼 텍스트에 대해서 Reed Solomon 인코딩 계산
- handshake start frequency 전송하기
- 보낼 텍스트 chunk 비트 크기로 나누고 해당 주파수로 변환하기
- handshake end frequency 전송하기
수신자 동작 4단계
- FFT (Fast Fourier Transform) 으로 주요 주파수 찾기
- handshake start 감지 시 주파수 데이터 수집
- handshake end 주파수 감지시 종료 후 디코딩 시작
- Reed Solomon코드로 검증
- w=np.fft.fft
6. Reed Solomon
오류 정정기술
n개 심볼 전송 시 k개 심볼은 원래 데이터 n-k는 오류 정정코드
(n-k)/2 = t 개 이하 symbol 오류 -> 어떤 오류라도 수정 가능
7. 퓨리에 변환
시간에 대한 함수 -> 주파수 성분으로 분해하는 변환
주파수가 섞인 신호에서 개별적인 신호를 추출하는 수학 도구
'학교' 카테고리의 다른 글
| 데이터통신 5주차 공부내용 (1) | 2026.04.23 |
|---|---|
| 데이터통신 4주차 공부내용 (1) | 2026.04.23 |
| 데이터통신 2주차 공부내용 (1) | 2026.04.23 |
| 데이터통신 1주차 공부내용 (1) | 2026.04.23 |
| C언어 - Pointer, Array 정리 (0) | 2026.04.08 |