Communication Signal Design Lab.

한국어

송홍엽 교수의 잡글

오류정정부호에 대한 이야기

2004.04.13 05:53

송홍엽 조회 수:5224 추천:212

오류정정부호이론은 디지털 통신 시스템의 중요한 한 부분인 채널코드에 대하여 연구하는 분야입니다. 채널코드의 목적은 적당량의 추가정보를 송신데이터에 덧붙여서 채널에서 발생하는 오류를 정정하고자 함에 있습니다. 크게 분류하면 block code와 trellis code로 나눌 수 있습니다.

블록 부호(block code)는 일정한 길이의 송신데이터 비트 (예를 들어 k 비트)에 r 비트의 추가비트를 삽입합니다. k+r=n이라 두면 k비트의 정보를 보내기 위하여 n비트의 부호어를 보내게 됩니다. 베이스밴드 송수신인 경우와 달리 변조가 필요한 경우 이를 반송파에 실어 보내는 과정을 디지털 변조과정이라 합니다. 수신기는 디지털 복조과정을 거쳐서 수신 부호어를 결정하고 이를 복호하여 송신부호어를 추출합니다. 제대로만 이루어지면 여기에서 k비트의 정보를 온전히 추출할 수 있습니다. 문제는 오류정정능력인데, 이를 크게 하고 싶으면 r이 증가해야 한다는 점입니다. 즉, 원하는 오류정정능력을 유지하면서 가능한 조금만 추가비트를 첨가할 수 있다면 가장 좋은 결과를 가져올 것입니다.

트렐리스 부호(trellis code)의 대표적인 예는 흔히 convolution code, 혹은 길쌈부호라고 합니다. 여기에서는 보내고자 하는 송신 데이터 sequence를 블록으로 나누어 처리하지 않고 shift register에 순서대로 입력시켜 몇 가지 혼합된 logic을 거쳐 출력 부호 sequence를 만들어냅니다. 이때, 입력 비트당 출력 비트의 수를 부호율이라 하는데, 대개, 1/2, 1/3, 혹은 1/4 등으로 표시합니다. 이 경우 입력 1비트당 출력 비트의 수가 2, 3, 혹은 4비트인 셈입니다. 오류정정능력을 높이기 위해서는 부호율이 작아져야 하는데, 이점도 중요한 설계 issue입니다. 수신기는 디지털 복조 후에 송신 데이터 sequence를 결정하고 이를 복호하여 원하는 송신 데이터를 추출합니다. 현재 가장 널리 알려져 있는 복호방식은 Viterbi Algorithm입니다. 이는 ML관점에서 최적이라고 증명되었고, 블록부호보다 처리가 간단하여 많은 디지털 모뎀 (디지털 위성통신, 디지털 이동통신)에서 이를 사용하고 있는 실정입니다.

블록 부호의 복호 방식은 부호화방식에 따라 달라지는데, 대표적으로 Hamming 부호, BCH 부호, Reed-Muller 부호, Reed-Solomon 부호 등이 있으며, 이들의 복호방식에 관한 꾸준한 발전이 이루어져 이제는 많이 실제로 사용되고 있습니다. BCH부호의 특별한 경우에 해당하는 Reed-Solomon부호는 deep space satellite communication modem에 길쌈부호와 연결하여 강력한 오류정정능력을 갖춘 직렬연쇄부호로 구성되어 태양계 탐사 위성체에서 각종 사진자료를 전송하는데 이용되고 있으며, 또한 compact disc에 응용되어 고전음악과 rock음악을 망라하여 충실도 높은 저장/재생에 이용되고 있습니다. 향후, 음악뿐만 아니라 영화 등의 영상정보와 기타 문자 데이터를 기록할 DVD등에도 이용하기 위하여 연구/개발 중에 있으며, 수신 신뢰도를 향상시키기 위하여 디지털 라디오방송과 TV방송에도 적용되어 연구/개발되고 있습니다. 문제는 이들의 부호화/복호화 과정을 이해하기 위해서는 꽤 복잡해 보이는 대수학적인 개념을 먼저 이해해야 합니다. 그 이유는, 한 블록의 부호어를 가지고 덧셈과 뺄셈 그리고 곱셈과 나눗셈 등을 수행가능해야 하기 때문이며, 대수학적 기초 개념은 이러한 연산이 정의되는 유한집합에 대한 개념을 이해하는 것으로부터 출발합니다.
번호 제목 글쓴이 날짜 조회 수
공지 논문에 영어작문 주의사항 몇 가지 송홍엽 2008.05.22 9199
공지 젊은 학부생 여러분에게... 송홍엽 2008.11.20 6141
공지 우리학과 대학원생 모두에게 (특히, 박사과정들에게) 하고싶은 말입니다. 송홍엽 2014.01.20 8210
49 Re.. Turbo code Decoder file 송홍엽 2004.04.13 4270
48 퍼즐에 상금을 부여합니다...^^ 송홍엽 2004.04.15 4275
47 Re..Turbo code Encoder file 송홍엽 2004.04.13 4366
46 오늘같은 날 송홍엽 2004.10.11 4452
45 combinatorial search problem file 송홍엽 2004.07.21 4526
44 marginally Gaussian but not jointly Gaussian 송홍엽 2004.05.13 4568
43 덴치 문제..푼 결과 [1] 박기현 2005.10.11 4596
42 정보화와 정보이론 송홍엽 2004.08.06 4647
41 2000년에 어딘가에 올린 글입니다.."열정" 송홍엽 2004.04.15 4662
40 랜덤변수의 variance가 0이면? 송홍엽 2004.05.13 4662
39 [퍼온글]과학자들은 왜 속이는가 송홍엽 2006.02.07 4662
38 uncorrelated but not independent 송홍엽 2004.05.13 4744
37 채널코딩에 관한 첫번째 이야기 송홍엽 2003.10.13 4821
36 수학자와 공학자 송홍엽 2006.05.09 4910
35 지금 내 전공분야는 공부한던 시절엔 나에게 가장 힘든 분야였답니다... 송홍엽 2003.06.03 4945
34 채널코딩 세째 이야기 송홍엽 2003.11.13 5036
» 오류정정부호에 대한 이야기 송홍엽 2004.04.13 5224
32 [퍼온글] 달력의 유래 송홍엽 2004.04.01 5227
31 [펀글] 프로그램 설계시 좋은 코딩 습관 송홍엽 2009.12.27 5320
30 [퍼온글] 명왕성 이야기 송홍엽 2006.04.26 5405