1. 블록 부호/부호화 이란?
ㅇ 블록 부호/코드 (부호화/코딩)
- 고정된 코드길이를 갖는 부호 = 고정 길이 부호
. 데이터를 일정 블록 단위로 묶어서, 블록 마다 부호화와 복호화를 수행
※ [비교]
- 블록 부호 : 고정 길이 블록 단위로 부호화 수행
- 길쌈 부호 : 가변 길이로 여러 블록에 걸치면서 부호화 수행
- 선로 부호 : 2진 비트 열(列)과 전기적 펄스 신호를 직접 대응시키는 블록부호 일종
2. 블록 부호화의 특징
ㅇ 수행 단위 => (묶음 단위로 수행)
- 부호화 : 입력되는 메세지 비트들을 일정한 블록 단위의 길이로 잘라서,
. 메세지 비트들에 대해 계산된 패리티 비트를 추가시켜 한묶음 단위(Block)로 부호화
- 복호화 : 수신 블록 단위로 데이터 및 패리티를 비교하여 살펴서 에러 검출 및 에러 정정
ㅇ 무 상관성 => (앞뒤 블록 간에 상관성 없음 즉, 상호독립 됨)
- 블록 부호화는 콘볼루션 부호화와 달리, 블록들 간에 기억되는 메모리(기억성) 없음
. 즉, 연속되어 발생되는 블록들 앞과 뒤 블록 간에는 아무런 관계가 없음
※ [참고] 블록부호 요소별 명칭 ☞ 블록 부호 용어, 부호 용어 참조
- 리던던시, 패리티 비트, 부호율, 블록 부호어 길이, 차원 등
3. 블록 부호 중 특히, 선형 블록 부호를 사용함
※ 블록 부호 그 자체로는 유익한 구조가 없으나, 선형 블록 부호에는 좋은 구조가 존재함
ㅇ 부호어 간 거리 조건 => (서로 멀면 좋음) ☞ 차이점/부동성, 비교(같음/닮음/다름) 참조
- 부호어들 간의 해밍 최소거리가 멀수록 좋으나, ☞ 해밍거리,최소 거리,차이점/부동성 참조
- 성능을 고려하여, 적당히 멀게 하면서, ☞ 오류검출능력/오류정정능력 참조
- 유효 부호어를 2k개(차원)로 제한 ☞ 유효부호어 참조
ㅇ 선형 블록 부호의 생성 및 에러검출 => (편리한 수학적 도구가 존재함)
- [생성] 생성행렬 (선형블록부호 생성에 유리), 생성다항식 (순회부호 생성에 유리)
- [오류검출] => 생성행렬에 대응시킨 패리티검사행렬
4. 선형 블록 부호의 장단점
ㅇ 구현 용이 : 조합 논리회로 만으로 가능
- 기억소자 없이 오직 입력에 의해서 만 출력이 결정되는 조합논리회로 만으로 구현 가능
. 例) 순회 부호 => 비교적 단순한 LFSR(선형귀환이동레지스터)에 의해 구현 가능
ㅇ 표현 용이 : 행렬 또는 다항식에 의해 표현 가능
- 보다 간결한 해석 도구를 제공하며,
- 부호기 및 복호기의 하드웨어 구현을 용이하게 함
ㅇ 고속화에 유리
- 콘볼루션 부호화 보다는 Burst Error에 강하며,
- 주로, 고속 전송 방식에 많이 활용
ㅇ 복잡도 및 에러정정능력 간에 상충됨 ☞ 오류정정능력 참조
- 에러정정 능력이 커짐에 따라, 복잡도가 급격하게 증가하는 경향이 있음
5. 선형 블록 부호의 구분
ㅇ 에러검출/에러정정을 위한 선형 블록 부호
- Linear Coding (선형 부호 방식) : 블록 부호의 부분 집합임
. 블록 구조에 선형성이 가해지면 선형 블록 부호가 됨
.. 例) 반복 부호, 직각 부호, Hamming Code (1950년), Golay Code 등
- Cyclic Coding (순환 부호 방식) : 선형 블록 부호의 부분 집합임
. 선형성에 순환성이 추가로 가해진 구조
.. 아주 단순하고도 효율적이고 쉽게 구현 가능
.. 例) BCH 부호 (1959년), RS 부호 (1961년), PN 코드(에러제어가 아닌 랜덤성을 강조) 등
ㅇ 에러제어 보다는 직교성,식별성,랜덤성 등을 강조한 선형 블록 부호
- 직교 코드
. 주로, 상호 간섭을 피하고 (부호어 간에 상호상관 = 0), 각 사용자를 구분하기 위함
. 때론, 해당 부호를 모르는 사용자가 볼 때, 마치 잡음 처럼 랜덤성을 보이는데 주로 사용
- 例) Hadamard Code, PN 코드 등