.
안녕하세요 에이치비킴 입니다.
이번 포스팅에서는 채널 부호화(이하 채널 코딩)에 대해서 알아보도록 하겠습니다.
우선 채널 코딩에는 다음과 같은 기법들이 활용되고 있습니다.
1. 선형 블록 부호 (Linear Block code)
1) 순환 부호 (Cyclic code)
2) 순환 덧붙임 검사 (CRC: Cyclic Redundancy Check) - CRC algorithm
2. 길쌈 부호 (Convolutional code)
3. 터보 부호(Turbo code)
1., 2., 3. 은 이전 포스팅에서 다루었습니다. 여기를 눌러주세요.
4. 인터리버 (Interleaver)
5. ARQ 기법 (Automatic Repeat Request)
1) SAW ARQ (Stop-and-Wait ARQ)
2) GBN ARQ (Go-Back-N ARQ)
3) SR ARQ (Selective-Repeat)
우선 무선통신의 목표는 통신 정확성의 개선입니다. 채널 코딩이란, 송신국 측에서 원 메시지에 미리 정해진 부가 정보를 추가하는 것으로써 이 정보에는 논리적 연관성이 있어야 합니다. 그리고 부가 정보의 도입은, 보다 많은 주파수 대역을 사용하게 되는 것을 의미하죠. 결국, 우리는 채널 코딩을 통해 신호의 대역폭과 전송 전력을 활용하고 최종적으로 비트 오류 발생을 줄이는 것이 목표입니다.
4. 인터리버 (Interleaver)
인터리빙의 목적은 연집 오류로부터 데이터를 보호하는 것입니다. 여기서 연집 오류란, 하나의 단일 오류가 아닌 2개 이상의 오류가 연속적으로 발생하여 오류 비트가 붙어있는 상태를 말합니다. 오류 정정 부호(선형 블록 부호, 길쌈 부호, 터보 부호)들의 성능은 연집 오류 정정 <<< 단일 오류 정정 이기 때문에, 연집 오류를 여러 개의 단일 오류로 변경하고자 하는 것이죠. 이를 쉽게 풀면 '연속적인 오류를 전체 부호어에 랜덤하게 분산시켜 채널 코딩에 의한 오류 정정 성능을 높이기 위한 것' 이라고 할 수 있습니다.
인터리버의 종류에는 블록 인터리버, 순환 인터리버, 반랜덤 인터리버 등이 있으며 본 포스팅에서는 블록 인터리버에 대해서 알아보도록 하겠습니다. 블록 인터리버는 그림 1. 에 도식화되어 있습니다.
블록 인터리버에서 인터리빙 과정을 그림 1. 에 표현하였습니다. 0 은 오류가 없음을, 1 은 오류가 발생하였음을 나타냅니다. 우선 입력 데이터를 행부터 채워서 표를 만들고, 인터리빙 과정을 거쳐 하단의 출력 데이터가 표현됩니다. 인터리빙 과정에 대해서 알아보면, 표를 만들기 위해 입력 데이터를 좌에서 우로 행 방향으로 쓰고, 위에서 아래로 열 방향으로 읽는 것입니다. 이를 통해 앞서 말한 출력 데이터가 표현되는 것입니다.
인터리빙이 이루어진 후, 디인터리빙 과정을 거쳐 원 데이터로 복구되는데, 그림 1. 의 인터리빙 과정을 반대로 진행하는 것이 디인터리빙 과정입니다. 위에서 아래로 열 방향으로 쓰고, 좌에서 우로 행 방향으로 읽는 것이죠. 그림 1. 에는 오류값이 많기 때문에 인터리빙의 효과가 눈에 띄지 않습니다만, 연집 오류가 있는 상황에서 인터리빙은 무척이나 효과적인 방법입니다.
5. ARQ 기법 (Automatic Repeat Request)
ARQ 기법이라 함은, 데이터 통신에서 사용되는 오류 복구 방법의 하나입니다. 해석되어 '재전송 기반 에러제어' 라고 불리우기도 합니다. 수신기로부터 송신기에게 ACK, NAK 신호를 전송함으로써 활용할 수 있으며, 각각의 ACK와 NAK 신호는 '신호가 올바르게 전달되었음' 과 '신호가 전달되지 않았음' 으로 표현할 수 있습니다.
대표적인 ARQ 기법에는 3가지가 있습니다. SAW ARQ (Stop-and-Wait ARQ), GBN ARQ (Go-Back-N ARQ), SR ARQ (Selective-Repeat ARQ) 가 있으며 각 기법들에 대해서 살펴보도록 하겠습니다.
1) SAW ARQ (Stop-and-Wait ARQ)
SAW ARQ 방식은, 송신 측이 한개의 블록을 전송한 후, 수신 측에서 오류 발생을 점검한 다음 ACK 또는 NAK 신호를 보내올 때까지 기다리는 방식입니다. 이 방식은 ARQ 방식 중에서 가장 간단하며, 오류 검출 능력이 우수한 부호와 함께 사용하여야 합니다. BSC 프로토콜에서 채택하고 있으며 이 방식에서 버퍼 메모리 용량은 전송되는 데이터 블록 가운데 가장 큰 블록을 저장할 수 있는 크기가 되어야 합니다. SAW ARQ 를 그림 3. 에 도식화하였습니다.
2) GBN ARQ (Go-Back-N ARQ)
GBN ARQ 는 연속적 ARQ (Continuous ARQ) 라고 불리우기도 합니다. 이는 SAW ARQ 에서 생기는 오버헤드를 줄이기 위해, 연속적으로 데이터 블록을 전송하는 방식으로써 전파 지연이 긴 시스템에 적용하면 효과적입니다. 송신측이 NAK 를 받으면 착오가 발생한 블록으로 되돌아가서 그 블록부터 이후의 모든 블록들을 재전송하는 방식입니다. HDLC 프로토콜에서 채택하고 있으며, 그림 4. 에 GBN ARQ 를 도식화하였습니다.
3) SR ARQ (Selective-Repeat ARQ)
SR ARQ 는 송신 측이 NAK 를 받으면 오류 블록을 탐지하여 해당 블록만을 재전송하는 방식입니다. 복잡한 논리 회로와 큰 용량의 버퍼가 필요하며, 수신단에서 데이터를 처리하기 전에 원래 순서대로 조립해야 하는 과정을 거칩니다. 큰 용량의 버퍼가 필요한 이유는, 1) 송신단에 NAK 신호가 도달하기 이전에 2) 송신단은 계속해서 신호를 전송하기 때문에 3) 오류 블록 이후에 수신단에 도달하는 신호들을 수신단에 있는 버퍼에 저장해두어야 하기 때문 입니다. 현재 SDLC 프로토콜에서 채택하고 있으며, 그림 5. 에 SR ARQ 를 도식화하였습니다.
이번 포스팅에서는 오류 복구를 위한 방법인 인터리빙과 ARQ 기법에 알아보았습니다. 다음 통신 포스팅에서도 재밌고 맛있게, 함께 알아보도록 하겠습니다.
감사합니다.
Reference
[1] 박지현 and 윤종락. (2019). 수중 주파수 선택적 채널에서 블록 인터리빙 기법을 적용한 길쌈부호화 기법의 성능. 한국음향학회지, 38(2), 207-213.
[2] https://slidetodoc.com/chapter-4-channel-coding-and-error-control-copyright/
'무선 & 이동통신 이야기' 카테고리의 다른 글
채널 부호화 (Channel Coding) 및 오류 제어 [1] (0) | 2021.07.12 |
---|---|
우분투에 NS-3 (Network Simulator) 설치하기 (2) | 2021.06.24 |