본문 바로가기

Mobile Communication

[Mobile communication] #3 Sorce coding / Channel coding

우리는 왜 Digital을 사용할 까. 물론 많은 이유가 있겠지만 그 중에 하나로 Signal regenerating을 들 수 있다. Analog의 경우 신호 재생이 불가능하다. 통신환경에서 fading이 발생하여 신호가 왜곡 되어도 Analog의 경우 복구할 수 없다는 이야기이다. 이는 Digital을 사용하는 이유 중 하나이다. privacy또한 Analog signal에 비해 보장이 된다. 송신기와 수신기 간의 동기 문제로 인하여 개인 사생활을 침해 받을 경우가 거의 존재하지 않는다.

그렇다면 Analog signal을 Digital signal로 어떻게 변경할 수 있을까? 이때 Coding을 이용한다.  

Coding이란 아날로그 형태의 정보를 디지털 형태로 변환할 수 있도록 하는 방식이며 Source coding과 Channel coding이 있다.

디지털통신을 하는데 있어서 한정된 대역폭에 많은 데이터를 싣기 위하여 변조를 하는데 무선통신 시스템에서의 환경을 보면

위의 그림처럼 변조 전에 source coding과 channel coding을 하며
지금부터 각 coding의 목적과 종류에 대해서 알아보자.



Source Coding

soruce coding은 source encoding and source decoding 과정을 통틀어 말하는 것으로써, 송수신기간의 효율적인 인터페이스를 구현을 목표로 하는데, 제한된 대역에서 전송효율을 높이면서(신호를 압축 부호화), error detect가 용이하도록 analog 형태를 digital로 변환하여 data를 부호화 하는 것을 말한다.
Source Coding에는 다시 Speech coding과 Image coding으로 나뉠 수 있다.


Speech coding 

waveform coding

파형의 통계적 특성을 이용하여, 신호의 진폭을 부호화하는 것
음질은 양호하며 전송속도가 높다.  
ex) PCM, DPCM, ADM, ADPCM

vocoder

파형을 해석하여 특정 parameter를 이용하여 전송한다.


 

 


Image coding

image coding의 경우 우리가 잘 아는 jpg, mpeg등의 기술이 있다.

 


Channel Coding

Channel coding역시 channel encoding and channel decoding과정을 통틀어 말하는 것으로써, data를 전송하면 수신단에서 data를 복조하는 데 있어서 noise나 fading으로 인해 발생하는 error를 보정한다. 이 때, 송신단에서는 channel encoding 과정을 통해 일정한 규칙으로 data에 overhead를 같이 송신하는데, 이렇게 전송 중 error발생시 수신측에서 복구할 수 있도록 추가로 overhead를 삽입하는 기술을 말한다.
이 방식은 BER이 낮기 때문에 영상통화나, data전송 등 BER이 낮아야 하는 경우에 사용된다.   

특히 wireless communication system내에서는 Block codes, Convolutional codes로 나뉜다.



Block Codes

* data에 error 검출 or 정정을 위한 redudancy bit(overhead)를 삽입하여 부호화하는 coding scheme.

* data bit을 block 단위로 처리하며, notation으로는 (n, K)를 사용한다.
(n, k) : k bit의 information bit를 overhead를 삽입하여 최종적으로 n bit로 구성하는 것을 의미한다.
n bit : code word
k bit : block 


* overhead와 data bit을 보고, error 유무를 판단 => 발생한 error 정정

* error가 많이 발생할 경우 더 많은 overhead를 추가하여 error 정정 가능하다.

example)

data bits = (i_1, i_2, i_3, i_4), redundancy bits = (r_1, r_2, r_3)

r_1 = i_1 + i_2 + i_3
r_2 = i_2 + i_3 + i_4
r_3 = i_1 + i_2 + i_4   (이때 사용되는 연산은 modula 2 연산)

if block is (i_1, i_2, i_3, i_4) are given by (1, 0, 1, 0)일 경우
code word is (1, 0, 1, 0, 0, 1, 1)

* linear block code가 (2^m-1, 2^m-1-m)으로 주어지고, 이때 m이 any positive integer일 때, Hamming code 라고 부른다. 그리고 redundancy bits을 parity bits라고 부른다.

* Hamming code

Hamming distance : hamming code에서 code word간의 서로 다른 bit의 수
이때 가장 작은 distance를 minimum distance(d_min)이라고 한다.

minimum distance와 number of correctable bits t 즉, 보정가능 bit이 t일 경우  
d_min >= 2t-1
 의 관계가 성립한다. 

또 minimum distance와 number of detectable bits q 즉, 검출 가능한 error bit의 수는
d_min >= q+1

if) d_min=3일 경우, (7, 4)Hamming code is t=1, q=2이다.


* 일반적으로 error가 잘 발생하지 않는 곳에 block code가 쓰인다.




Convolution Codes

usually error가 자주 발생하는 무선통신 환경에서 쓰이는 기법으로 현재의 bit를 결정하는데 있어 과거의 bit들을 이용하는 code scheme이다. 이때 shift register를 이용한다.

covolution code에는 2개의 중요한 parameter가 있는데 구속장이라고도 하는
constraint length K와 code rate r이다.

가장 자주 쓰이는 예로는 Viterbi decoder가 존재한다.

이제 convolution encoder의 예를 들어보자.
다음은 IS-95에서 사용되는 covolution encoder이다. 이때 r=1/2, K=9


BER 성능을 향상시키기 위해 사용하는 channel coding을 coding gain이라고 한다.
* Coding gain
  soft decision : channel coding 하기전에 복조를 하는데 coded bit을 floating할
                   때 amplitude value를 decode에 함께 보낸다.
  hard decision : 복조과정에서 amplitude value를 함께 보내지 않고, 결과값 즉 0, 1
                   값만 보낸다.






Cyclic Redundancy Check(CRC)

CRC=one long binary number(information bit) / prime binary(소수)

통신을 할때는 통신환경내의 noise나 fading, 혹은 기타 요인으로 인해 error가 생길수 있다. 이러한 error를 검출해야할 필요가 있고, error가 난 data에 한해서는 재송신을 한다던지 하는 조치를 취할 수 있어야 통신간의 신뢰성을 갖게 된다. 이때 error detecting 방법으로 parity check나 sum check등 다양한 방법등이 있는데, CRC 또한 error detecting하는 방법중 하나이다.

CRC는 보통 CRC Checksum 이라고도 불리는데 네트워크등 data를 전송할때 data가 올바르게 전송되었는지 확인하는 검사라고 생각하면 이해하기 쉽다.

CRC는 TX(송신단)에서 Source encode 과정을 거쳐 information bit에 CRC를 삽입하여 보내지게 된다. 이 때, rate=1/2일 경우 coded data는 information data보다 2배의 길이를 갖는다.

CRC를 data에 삽입하여 보내지게 될 경우
수신단에서  demodulation, decoding과정을 통해 나오는 data bit을 prime binary로 나누어 남은 bit(계산된 CRC)와 수신된 CRC와 비교를 한다.

이때, error가 없을 경우 CRC는 서로 같게 되며, error가 발생했을 경우 재전송을 요청한다던지 하는 방법을 취하게 된다.

.....이때 CRC에서 발생하는 error는 어쩔수 없다... 복불복;;;;;