제 2 장

정보공학과 통신시스템

2-1  정보공학의 구조

	정보이론

오늘날 정보공학(information engineering)이라는 용어는 소위 정보의 처리에 관련되는 모든 기술분야를 통칭하는 넓은 의미로 사용되고 있다. 여기에는 컴퓨터과학, 통신공학, 정보이론 및 코딩이론, 잡음이론, 결정 및 추정이론 등 매우 광범위하고 복잡한 내용들이 포함된다. 따라서 이 작은 분량의 책을 통하여 정보공학의 전 분야를 포괄적으로 취급하는 것은 불가능하다.

제 2 장 정보이론과 코딩이론의 개요

.  1993년 IEEE에서 발행된 The New IEEE Standard Dictionary of Electrical and Electronics terms, 5th ed. 에는 □정보공학□을 다음과 같이 설명하고 있다.

□A branch of technology concerned with the way in which data are processed and transmitted through digital equipment.□

이 책에서 논의하고자 하는 범위는 좁은 의미의 정보공학이다. 다시 말해서 디지탈 정보의 정량적 분석을 근간으로 하는 정보이론의 개념과, 이와 밀접한 인과관계를 유지하며 상호 보완적으로 발전하고 있는 코딩이론의 개념을 다루고, 이들이 응용되는 통신시스템과의 상관관계 및 정보의 전송(transmission)과 저장(storage)에 관련되는 제반 문제를 단계적으로 취급하고자 하는 것이다. 그림 2-1은 이러한 정보공학의 학문적 위치를 관련분야와 함께 도시한 것이다.

그림 2-1  정보공학과 그 관련분야

최근, 컴퓨터의 눈부신 발달과 초고속, 장거리 통신의 필요성 증대에 따라 효율적이고 신뢰성 있는 디지탈 통신시스템의 수요가 급격히 증가하고 있다. 이러한 시스템에 있어서 가장 심각하게 취급되는 문제는 채널(channel 혹은 전송로) 상에서 발생되는 잡음(noise)에 의한 오류(error)이다. 오류를 어떻게 제어할 것인가의 문제는 디지탈 통신시스템의 역사가 시작된 이래 가장 핵심적이고 기본적인 과제로 인식되어 왔다.

한편, 오늘날 인류가 사용하는 대다수의 컴퓨터와 통신시스템은 이진수(binary number)로 코딩된 정보를 사용한다. 다시 말해서 이들이 처리하고 있는 모든 정보는 이진코드(binary code) □0□ 혹은 □1□ 만을 가지고 표시된다는 것이다. 따라서 처리하고자 하는 다양한 정보는 우선 이진수로 표시되어야 하며, 일단 이진수로 표시된 정보는 그 처리과정에서 발생하는 오류를 제어하기 위한 새로운 형태로 변경되어야 한다.

여기서, 원천적으로 주어진 정보를 시스템이 처리할 수 있는 코드로 변환시키는 과정을 소스코딩(source coding)이라 하며, 처리의 과정에서 발생하는 오류를 제어함으로써 시스템의 신뢰성을 향상시키고자 하는 변환과정을 채널코딩(channel coding)이라 한다. 이들은 통신시스템 혹은 자료처리시스템에 있어서 상호 유기적인 관계로 연결되며, 그 제반 방법론은 코딩이론(coding theory)에서, 그 한계와 기준은 정보이론(information theory)에서 각각 다루어 진다.

디지탈 정보를 사용하는 전송, 저장 혹은 코딩 등에 관한 이론을 주의깊게 살펴보면 어느 것이나 하나의 유한집합으로 표시되는 정보원(information source), 즉 {s1, s2, s3, …, sq}를 가정함으로써 시작되고 있다. 이 때 정보원의 각 원소(혹은 심볼)들은 특정한 의미를 부여하지 않는 상태에서 단지 그들이 유일하게 인식될 수 있다는 사실 만을 가정함으로써, 실제의 정보교환에 사용되는 어떠한 형태의 심볼도 대치할 수 있도록 규정된다.

다음으로 우리는 각 심볼들에 대하여 발생확률(probability of occurrence) p1, p2, p3, …, pq를 부여한다. 이들은 이론적 유도에 의하여 결정되는 것이 아니라, 실험에 의하여 결정된다고 볼 수 있다. 예를 들어서 어떤 시스템이 발생시키고 있는 각 심볼의 발생확률을 추정하기 위해서는 무수히 많은 횟수의 심볼을 발생시켜 그 빈도를 조사하는 방법을 사용할 수 있을 것이다.

일단 각 심볼의 확률구조(probability structure)가 결정되면, 이에 따라 주어진 정보원을 어떻게 이진코드로 변환할 것인가의 문제가 제기되며, 이를 해결하기 위하여 소스코딩의 과정을 거친다. 이 때, 소스코딩에 의하여 형성되는 정보의 양은 다음과 같이 정의되는 엔트로피(entropy)로 한정된다.

[eqn: H`(S) ~==~ sum_i=1^q ``p_i `` log` 1 over p_i]	(2-1)

엔트로피라 함은 정보원의 확률분포에 따르는 평균 정보량을 나타내며, 이에 관한 상세한 내용은 이 책의 제6장에서 취급하게 될 것이다.

소스코딩에 의하여 이진코드로 변환된 정보는 전송이나 저장 등의 처리과정에서 발생되는 잡음에 의하여 필연적으로 왜곡될 것임을 예측할 수 있다. 디지탈시스템인 경우 신호의 왜곡은 결국 오류(error)로 귀결되며, 시스템의 신뢰성을 제고하기 위해서는 이러한 오류를 제어할 수 있는 능력을 필요로 한다.

수신측으로 하여금 오류를 검출(detection)하거나 정정(correction)할 수 있도록 하기 위해서는, 전송이나 저장 등 오류를 발생시킬 가능성이 있는 처리과정 이전에 또 한번의 변환과정을 거쳐야 하는데, 이를 채널코딩이라 하는 것이다. 일반적으로 채널 상에서 발생되는 오류는 시스템의 특성과 그 전기적 환경에 따라 달라지는데, 채널코딩에 의하여 오류 없이 정보를 전송할 수 있는 한계는 정보이론에 의하여 채널용량(channel capacity)으로 주어진다.

[eqn: C ~=~ B `~log `left(1 ``+`` S over N right) ~~~(bps)]	(2-2)

여기서 채널용량 [eqn: C]는 주어진 조건 하에서 가능한 최대의 전송속도(bits/sec)를 나타내며, [eqn: B]는 대역폭(Hz), [eqn: S]와 [eqn: N]은 각각 신호와 잡음의 전력(watts)을 표시한다. 이에 대한 구체적인 내용은 이 책의 제9장에서 다루기로 한다.

이와 같이 정보이론과 코딩이론은 밀접한 관계를 갖고 있을 뿐 아니라 상호 보완적으로 작용하여 정보공학의 양대 핵을 이루고 있다.

논리적으로 말해서, 정보이론은 코딩이론의 기본 개념으로부터 유도된다. 그러나 이들의 관계를 단지 □무엇으로부터 무엇이 유도되는가□ 하는 기본적 논리로만 설명할 수는 없다. 왜냐하면 코딩이론으로부터 유도된 정보이론의 결과가 역으로 코딩이론에 의하여 성취할 수 있는 시스템 성능의 한계를 결정하고 있기 때문이다. 그림 2-2는 이러한 두 이론의 아이러닉한 관계를 도식적으로 설명하고 있다.

그림 2-2  코딩이론과 정보이론의 관계

앞에서 설명한 바와 같이, 정보의 코딩은 일반적으로 소스코딩(source coding)과 채널코딩(channel coding)의 두 단계로 구분되어 실행된다. 이들 각각의 역할은 다음과 같이 설명할 수 있다.

1. 소스코딩(source coding)

소스로부터 생성되는 정보원을 이진코드로 변환하는 과정을 말하며, 소스의 효율성을 증가시키기 위하여 평균 코드길이(average code-length)의 최소화를 지향한다.

각 심볼의 발생확률이 [eqn: p_1 ,`p_2 ,`p_3 ,` cdots, `p_q]로 주어지고, 각각 [eqn: l_1 ,`l_2 ,`l_3 , cdots,` l_q] (bits) 길이로 코딩되었다면, 평균 코드길이는 식(1-94)에 의하여

[eqn: L_\av ~Ａ~ SUM FROM iＡ1 to q ``p_i ``l_i]	(2-3)

로 나타낼 수 있다. 식(2-1)에 주어진 엔트로피 함수는 이것의 하한을 제공한다.

2. 채널코딩(channel coding)

정보의 전송이나 저장에 있어서, 채널 상에서 발생되는 잡음에 의한 오류를 수신측이 검출(detecting) 혹은 정정(correcting)할 수 있도록 원래의 코드를 변환하는 과정을 말한다.

일반적으로 채널코딩에 의하여 생성된 코드는 원래의 코드에 비하여 길어지며,이 길어진 부분을 Redundancy라 한다. 채널코딩은 Redundancy를 이용하여 수신측으로 하여금 오류를 제어하게 함으로써 전송의 신뢰성과 고속성을 지향한다.

식(2-2)의 채널용량은 오류가 없는 상태에서 유지할 수 있는 전송속도의 상한을 제공하는 것이다(제9장).

2-2  신호시스템 모델

이 책 전체를 통하여 사용하게 될 신호시스템 모델(signaling system model)을 그림 2-3에 제시하였다. 이 모델은 디지탈 정보의 전송과 수신을 근간으로 하는 정보통신시스템(data communication system)이나 디지탈 정보의 저장과 추출을 근간으로 하는 정보저장시스템(data storage system) 등 일반적인 신호시스템의 모델로 광범위하게 사용되는 관습적인 구조도이다.

그림 2-3  신호시스템 모델

모델의 첫번째 요소는 정보소스(information source)이다. 이는 일반적으로 원천적 정보를 발생시키는 사람이나 컴퓨터 등이 될 수 있으며, 이로부터 나오는 신호는 자연발생적인 연속적 파형(continuous waveform)이나 문자, 기호 등을 표시하는 이산적 파형(discrete waveform)이 모두 가능하다.

채널(channel)은 정보를 포함하는 신호가 전송되는 전송로(transmission path)를 가리키며, 보통의 전화선로를 비롯하여 광섬유 전송로, 위성통신로, 고주파 무선로 등 통신에 있어서의 매체들과 자기테이프, 자기디스크 등 저장매체가 여기에 속한다.

실제적으로 잡음은 신호시스템의 모든 요소에서 발생될 가능성이 있으나, 그림 2-3의 모델을 사용함에 있어 잡음은 오로지 채널에서만 발생한다고 가정한다. 또한 잡음은 정보신호의 처리를 방해하는 자연적이거나 인공적인 모든 요소들을 통칭한다. 예컨대 전화선로 상에서 발생되는 열잡음이나 임펄스잡음 혹은 다른 선로에 의한 누화(crosstalk), 자기테이프 상에 생겨난 흠(defects) 등은 모두 정보신호를 방해하는 잡음이라 할 수 있다.

□ENCODER□와 □DECODER□로 표시되어 있는 블럭은 실제로 각각 두 부분으로 나누어진다. 먼저 ENCODER 블럭은 우선 소스를 코딩한다. 이 때 소스의 확률구조에 따라 코딩되며, 일반적으로 소스가 복잡한 확률구조를 가질수록 평균 코드길이를 더욱 축소시켜 코딩할 수 있다.

이렇게 코딩된 소스는 다시 채널의 특성에 따라 재차 코딩된다. 일반적으로 채널코딩을 거치면 소위 Redundancy가 포함되므로, 코드의 길이는 원래의 그것보다 길어지는 것이 보통이다.

따라서 □ENCODER□ 블럭은 SOURCE-ENCODER와 CHANNEL-ENCODER의 두 부분으로 구성된다고 할 수 있다.

마찬가지로 □DECODER□ 블럭도 CHANNEL-DECODER와 SOURCE-DECODER의 두 부분으로 구성되며, 이 때 두 부분의 배열은 □ENCODER□ 블럭에서의 배열과 반대이다.

이와같이 □ENCODER□ 블럭과 □DECODER□ 블럭을 각각 두 부분으로 나누어 생각하는 것은 실제적인 신호시스템의 관점에서 대단히 편리하다. 보통 신호시스템은 여러가지 서로 다른 종류의 소스로 정보원을 구성한다. 이 때 각각의 소스들은 독립적인 표준 인터페이스(standard interface)를 사용할 수 있으며, 이에 따라 역시 독립적으로 사용하는 채널의 특성에 따라 채널코딩을 수행할 수 있도록 구성되어야 하는 것이다. 이렇게 함으로써 전체 신호시스템에 큰 융통성을 주게 된다.

변조기(modulator)는 채널인코더로부터 출력되는 이진코드를 서로 다른 두가지 파형으로 변환시켜 채널에 공급하는 역할을 한다. 예를 들어서 이진 □1□은 일정한 폭을 가진 양의 펄스로, 이진 □0□은 음의 펄스로 변경하여 전송될 수 있을 것이다.

한편 복조기(demodulator)는 채널을 통과한 신호 파형을 입력으로 받아 원래의 이진코드로 변환하는 역할을 담당하여 변조의 역과정을 수행한다. 다시 말해서 채널로부터 들어오는 파형에 따라 □1□ 혹은 □0□을 결정해 내는 검파기(detector)라 할 수 있다.

최근 디지탈 통신시스템에 사용되는 변복조 방식은 매우 활발하게 개발되어 시스템이 처한 환경과 요구되는 성능에 따라 다양하게 적용되고 있다. 그러나 이에 관한 이론은 매우 복잡하고 방대한 양일 뿐 아니라, 이 책에서 취급하고자 하는 정보공학의 범위를 벗어나므로 상세히 다루지는 않기로 한다.

.  디지탈 변복조 방식에 관한 상세한 내용은 다음의 참고문헌에서 찾아볼 수 있다.

강창언, 디지탈통신 입문, 1996년, 복두출판사.

B. Sklar, Digital Communications-Fundamentals and Applications, 1988, Prentice-Hall.

이 책의 목적은 정보공학의 양대 핵을 이루고 있는 코딩이론과 정보이론의 개념을 설명하고, 이들이 정보통신시스템 혹은 정보저장시스템에 응용되는 방식을 단계적으로 논의하고자 하는 것이다. 그러므로 그림 2-3의 신호시스템 모델에 있어서 □정보소스□ 및 □정보싱크□, □ENCODER□ 및 □DECODER□, 그리고 □채널□ 등이 앞으로 주로 취급하게 될 대상이다.

특히 이 책에서 중점을 두고자 하는 것은 코딩이론의 기본적 개념으로부터 어떠한 과정을 거쳐 정보이론이 유도되며, 정보이론의 결과가 코딩이론의 제반 방법론에 어떠한 영향을 주고 있는가 하는 양대 이론의 접목에 관한 것이다. 따라서 여기서는 코딩이론의 수많은 방법론들을 상세히 논의하지는 않겠고, 그 기본적인 방식과 그에 따르는 중심 개념을 설명하고, 이를 기반으로 정보이론의 핵심적 정리들을 유도함으로써 두 이론의 관련성과 상호 보완성을 철저히 파악하는 방향으로 진행하고자 한다. 이와 같은 전개는 독자들로 하여금 두 이론의 기본적 개념과 상호 연관성을 철저히 이해할 수 있도록 함으로써, 오늘날 매우 활발하게 연구되고 있는 □소스코딩□ 및 □채널코딩□에 관한 보다 높은 수준의 연구를 수행하는 데 필요한 기반지식을 될 것으로 확신하는 바이다.

2-3  정보소스와 디지탈 신호

이 절에서는 정보소스(information source)의 개념과 디지탈 신호(digital signal)와의 관계를 중심으로 정보공학에 관한 논의를 시작하기로 한다.

코딩이론이나 정보이론의 강력함은 우리가 정보소스에 대하여 확정적으로 정의하지 않는다는 사실에 기인한다. 다시 말해서 정보소스를 단순히 q개의 심볼을 갖는 유한집합 {s1, s2, s3, …, sq} 로 가정함으로써 실제로 사용되는 어떠한 디지탈 정보라도 대치할 수 있도록 하는 것이다.

제6장에 이르게 되면, 우리는 정보소스의 척도로써 엔트로피 함수 [eqn: H`(cdot)]를 사용하게 되는데, 이는 정보소스가 가지고 있는 □정보의 양(the amount of information)□을 표시하는 기본적 정의이다. 정보이론이 하나의 정량적 이론(quantitative theory)이라 불리우는 이유가 바로 여기에 있다. 정보이론에 있어서 정보의 내용(contents)이나 질(quality)은 전혀 중요치 않으며, 오직 그 양(quantity)이 모든 것을 결정하게 된다. 물리적으로 채널을 통과하는 디지탈 정보나 기억장치에 저장되는 자료 등이 그 내용이나 질에 따라 전송 혹은 저장되는 것이 아니라, 전송속도 혹은 저장용량 등이 처리의 척도가 될 것이라는 사실을 직관적으로도 쉽게 이해할 수 있을 것이다.

이러한 의미로 볼 때, 정보이론에서 말하는 정보는 보통 사회과학적 의미로서의 정보와는 매우 다른 공학적 개념이라 할 수 있다. 사회과학적 의미로서의 정보는 우리가 일상생활에서 흔히 말하는 정보이며, 여기에서는 정보의 내용과 질 혹은 그 진위 여부가 중요한 평가 척도가 된다. 그러나 공학적 의미의 정보는 그 내용이나 질 등은 전혀 관계없이 오직 그 양으로 평가되는 정보를 말한다.

따라서 우리는 정보에 관한 이 두가지 개념(사회과학적 의미의 정보와 이 책에서 말하는 공학적 의미의 정보)의 차이점을 철저히 인식하여 정보이론의 적용 범위를 공학적 상황에 국한시켜야 한다. 실질적으로 정보소스에 대한 엔트로피 함수의 정의는 여러가지 공학적 상황, 이를테면 디지탈 정보의 전송이나 저장 등에 있어서는 정확하게 적용되며 그 정보량의 측정도 합리적으로 이루어진다. 그러나 이것이 일반적 의미의 정보를 포함하는 모든 상황에 올바로 적용될 수 있는 것은 아니며, 어떤 분야에 있어서는 정보량의 측정 자체가 불합리할 경우도 있는 것이다.

.   정보이론이 제창되었던 초기에는 소위 □정보□라는 말만 들어가면 이를 적용하려는 시도들이 실제로 있었다고 한다. 예컨대 신문방송학, 광고학 등 사회과학적 의미의 정보를 다루는 분야에서 과도한 열정으로 오적용 혹은 과적용의 산물을 발표하였던 것들이 그것이다.

요컨대, 정보이론은 정보의 의미(the meaning of information)를 다루는 것이 아니라 정보의 양(the amount of information)을 다루는 정량적 이론이며, 특히 디지탈 정보를 취급하는 정보통신시스템 혹은 정보저장시스템 등에 잘 적용된다.

정보소스는 여러가지 형태로 나타날 수 있다. 예를 들어서 서적이나 인쇄물, 회사의 회계보고서 등은 모두 전형적인 문자 형태의 정보소스이다. 이들은 보통 유한 개의 원소를 갖는 알파벳으로 표현될 수 있으며 이진코드로 용이하게 변환된다. 또한 무용이나 음악, 그 밖의 인간 활동에 대해서도 적당한 여러 가지 심볼을 이용하여 표현할 수 있으므로 역시 정보소스라 할 수 있다. 수학의 방정식 같은 것들도 기호에 의하여 표현된 정보소스라 볼 수 있다. 그렇다면 우리가 이후에 주로 취급하게 될 여러가지 종류의 이진코드들은 결국 정보소스의 심볼들을 표현하는 하나의 특수한 방법에 지나지 않는다고 말할 수 있다

일반적인 신호시스템에서 정보는 전기적 신호(signal)로 표현된다. 제1장의 첫머리에서 우리는 전기적 신호를 확정신호와 랜덤신호로 분류한 바 있다. 이는 전기적 신호를 □실함수(real function)에 의하여 확정적으로 표현할 수 있는가□ 하는 관점에서 분류한 것이다. 이제, 전기적 신호를 그 연속성에 따라 분류해 보기로 하자.

신호를 시간함수(time-domain function)로 표현하였을 때, 그 그래프는 시간축(time axis)과 크기축(amplitude axis)에 따라 변화하게 된다. 이 때, 모든 신호는 두 축에서의 연속성에 따라 다음과 같이 세가지 형태로 분류할 수 있다.

1. 연속신호(continuous signal)

시간축과 크기축에 대하여 모두 연속인 신호

2. 이산신호(discrete signal)

시간축에 대하여 불연속이고, 크기축에 대하여 연속인 신호

3. 디지탈 신호(digital signal)

시간축과 크기축에 대하여 모두 불연속인 신호

그림 2-4   A/D 변환 (표본화, 양자화, 코딩)

연속신호는 보통 아날로그 신호(analog signal)라 부르기도 하며, 자연적으로 발생되는 모든 신호들이 거의 여기에 속한다. 그러나 오늘날 대다수의 신호시스템들은 이러한 연속신호를 그대로 사용하는 것이 아니라, 그림 2-4에 나타낸 과정을 통하여 디지탈 신호로 변환하여 처리하고 있다.

그림 2-4(a)에 나타낸 바와 같이, 연속신호는 시간축(t-axis)과 크기축(A-axis)에 대하여 모두 연속이다. 우리들은 경험을 통하여 자연 발생적인 모든 신호들이 대체로 이러한 형태를 띄고 있다는 사실을 알고 있다. 실험실에서 마이크로폰을 통하여 사람의 음성을 오실로스코프에 나타내 보면 시간축과 크기축에 대하여 연속인 파형을 볼 수 있을 것이다.

이제, 시간축을 일정한 간격으로 나누고, 그 순시점 0,t1,t2,t3,…,tn 에서의 함수값만을 취하면 그림 2-4(b)와 같은 형태를 얻는다. 이 신호는 시간축에 대하여 명백히 불연속이며 크기축에 대해서는 아직 연속이다. 이러한 신호를 이산신호라 하며, 연속신호로부터 이산신호를 얻어내는 이 과정을 표본화(sampling)라 한다. 여기서 크기축에 대하여 연속이라는 말은 크기축의 모든 점이 신호점이 될 수 있다는 것이며, 그림 2-4(b)에서 단지 몇 개의 점 만이 신호점이 되었다고 하여 이를 불연속이라 할 수는 없는 것이다.

이와 같은 이산신호에 대하여, 크기축을 일정한 간격으로 나누고 각 신호점을 가장 근접한 수준(level : 0, 1, 2, 3, 4, 5, 6, 7)으로 근사화하면 그림 2-4(c)와 같은 형태를 얻게 된다. 이 신호는 시간축에 대하여 불연속이며, 크기축에 대해서도 불연속이다. 왜냐하면 이제는 크기축의 일정한 수준에만 신호점을 가질 수 있고 각 수준의 사이에는 신호점을 가질 수 없기 때문이다. 또한 각 신호점이 존재하는 수준에는 그림 2-4(c)의 좌측에 나타낸 것과 같이 하나하나의 정수(integer)를 부여할 수 있게 되었다. 다시 말해서 이 신호는 임의의 순시점에 대한 신호의 크기를 정수로 표시할 수 있다는 것이다. 이와 같은 신호를 디지탈 신호라 한다. 또한 이산신호로부터 디지탈 신호로 변환하는 과정을 양자화(quantization)라 한다.

일반적으로 디지탈 정보를 사용하는 신호시스템들은 그림 2-4(c)와 같이 여러 개의 수준들로 이루어 지는 디지탈 신호(M-ary digital signal)를 직접 사용하는 것이 아니라, 이를 그림 2-4(d)에 도시된 것과 같은 이진 디지탈 신호(binary digital signal)로 변환하여 사용한다. 이러한 변환과정을 이진코딩(binary coding)이라 하며, 일단 이진코딩 과정을 거치게 되면 신호는 오직 □0□ 혹은 □1□의 두 수준 만을 갖게 된다.

이진코딩은 신호시스템의 특성과 신호처리 환경에 따라 여러가지 방법을 사용하게 되는데, 이는 우리가 제4장 및 제5장에서 공부하게 될 소스코딩의 일부라고 볼 수 있다. 그림 2-4(d)에서 하나의 순시점에 해당되는 신호를 각각 3-bit 이진수로 표현하였다. 이것은 각 순시점의 신호가 { 0, 1, 2, 3, 4, 5, 6, 7 } 중 하나로 표시되기 때문이다. 다시 말해서 각 심볼은 알파벳에 존재하는 8 개의 원소 중 하나에 대응하게 됨으로, 이를 동일한 길이의 이진코드로 표현하기 위해서는 [eqn: log_2 ``8 `=`3] (bits) 코드를 사용한다는 것이다.

일반화하여, [eqn: M] 개의 원소로 구성되는 신호원 알파벳에 대하여 각 원소의 발생확률을 고려하지 않고 모두 동일한 길이의 이진코드로 표시한다면, 각 코드의 bit 수는

[eqn: log_2` `M ~<=~ n ~＠~ log_2 ``M ``+``1 `, ~~n ``:`` \integer]	(2-4)

에 의하여 주어진다.

.    각 원소의 발생확률을 고려하지 않고 모든 심볼을 동일한 길이로 코딩하면 하나의 □고정길이 코드□를 얻게 된다. 그러나 만일 발생확률을 고려하여 각 심볼을 서로 다른 길이로 코딩한다면 하나의 □가변길이 코드□가 얻어지는데, 이 때에는 식(1-4)가 적용될 수 없고 이른바 평균코드길이의 개념을 적용하여야 한다. 이들에 대한 상세한 내용은 제4장에서 취급하게 될 것이다.

[예제 1] (ASCII 코드)

컴퓨터의 내부나 정보통신시스템의 전송과 관련하여 흔히 사용되고 있는 ASCII 코드는  영문자(a, b, c, …, z,  A, B, C, …, Z), 숫자(0, 1, 2, …, 9), 기호(?, !, $, %, *, \ … 등), 제어문자(SOH, EOT, NUL, SYN, ACK, … 등)  120∼128 개의 원소로 이루어진 신호원 알파벳을 가지고 있다(다음 절의 표 2-1을 미리 보라). 이를 다음과 같은 고정길이 코드로 표현할 때, 각각 몇 개의 요소로 코딩되는가?

(1) 이진코드(binary code)   (2) 팔진코드(octal code) (3) 십육진코드(hexa code)

[풀이]

(1) 식(2-4)를 적용하면

[eqn: log_2 `128 ~<=~ n ~＠~ log_2 `128 ``+`` 1]

와 같이 나타나고, 이를 만족하는 정수 [eqn: n]을 구하면, 7-bit 코드가 된다.

(2) 팔진코드에 대해서는 식(2-4)를 변형하여

[eqn: log_8 `128 ~<=~ n ~＠~ log_8 `128 ``+`` 1]

로 표현할 수 있으므로, 정수[eqn: n]은 3이 된다. 따라서 3-element 코드가 된다.

(3) 마찬가지 방법으로 십육진코드에 대해서는 2-element 코드가 된다.

연속신호를 표본화, 양자화 및 이진코딩을 거쳐 이진 디지탈 신호로 변환하는 전 과정을 A-D 변환(analog-to-digital conversion)이라 한다. 앞에서도 언급한 바와 같이, 일반적인 신호시스템이 연속신호로 이루어진 정보를 처리하기 위해서는 우선 디지탈 신호로 변환하게 된다. 그러나 전송이나 저장의 목적은 지리적으로 멀리 떨어져 있는 수신측에 혹은 시간적인 미래에 대하여 원래의 정보를 전달하는 것이므로, 채널을 통과하여 정보싱크에 도달된 디지탈 신호는 수신측에 의하여 다시 원래의 연속신호로 복원되어야 한다.

디지탈 신호를 연속신호로 변환하는 과정은 A-D 변환의 역과정으로서 D-A 변환(digital-to-analog conversion)이라 부르며, 이들 두 변환의 관계를 지배하고 있는 것이 바로 저 유명한 C. E. Shannon의 표본화 정리(sampling theorem)이다. 이는 송신측의 표본화 과정에서 □연속신호를 얼마나 빨리 표본화할 것인가□의 문제와 수신측의 D-A 과정에서 □얼마나 정확히 원래의 신호를 복원할 수 있는가□의 문제를 관련 짓는 정리이다. 여기서는 이에 관한 수학적 표현이나 증명은 생략하기로 하고, 단지 다음과 같이 말로 표현하여 이를 우리의 이론 전개에 응용하기로 한다.

.   표본화 정리는 수학적으로 완벽하게 증명되어 있는 정리이다. 이에 관한 상세한 설명이나 증명을 원하는 독자는 다음 문헌을 참고하라.

E.O.Brigham, The Fourier Transform and its Applications, Chapter 5, 1988, Prentice-Hall

<표본화 정리 (sampling theorem)

표본화하고자 하는 연속신호의 최대주파수를 [eqn: B](Hz)라 할 때, 표본화 속도(sampling rate)를 [eqn: 2`B] (samples/sec) 이상으로 하면, 그 결과로 형성되는 디지탈 신호로부터 원래의 연속신호를 왜곡 없이 완벽하게 복원할 수 있다.

표본화 정리에 따르면, 자연 발생적인 연속신호를 전송함에 있어서 충분한 속도로 표본화하여 디지탈 신호로 변환시켜 이를 전송하고, 수신측에서는 D-A 변환을 통하여 원래의 신호를 복원하여도 신호의 왜곡이나 정보의 손실을 방지할 수 있다.

그림 2-4의 신호시스템 모델은 위에서 설명한 두가지 변환과정(A-D 및 D-A)을 생략하고 모델의 모든 블럭에서 디지탈 정보만을 취급하도록 설정된 것이다. 만일 연속신호로 이루어진 정보를 취급한다면, 모델의 전후에 각각 A-D 및 D-A 변환기만을 추가하면 될 것이다.

실질적으로 정보공학에서 다루고 있는 신호는 아날로그 신호와 디지탈 신호를 모두 포함한다. 그러나 오늘날 발달된 반도체 기술은 고성능 A-D, D-A 변환기를 다양하게 제공하고 있다. 따라서 이론을 전개함에 있어 디지탈 신호를 대상으로 취급한다 하더라도 아무런 무리가 없다 할 것이다. 우리가 이 책을 통하여 디지탈 정보 만을 중점적으로 논의하고자 하는 이유도 바로 여기에 있는 것이다.

그렇다면 연속신호를 그대로 처리하지 않고 디지탈 신호로 변환하여 처리하려는 이유는 무엇인가? 그것은 오늘날 아날로그 시스템들이 점차 사라지고 대부분 디지탈 시스템으로 대치되어 가는 원인과도 같은 맥락에서 설명할 수 있다.

첫째로, 디지탈 신호는 아날로그 신호에 비하여 재생(regeneration)이 용이하다.

모든 전자회로와 전송로(채널)는 근본적으로 그것을 통과하는 신호를 왜곡(distortion)시키며, 외부의 전기적 잡음이나 간섭에 의하여 영향을 받게 된다. 일반적으로 이러한 현상은 신호의 질을 저하시키며, 전송거리가 멀수록 전송속도가 빠를수록 심각하게 나타난다. 그림 2-5는 디지탈 펄스가 전송되면서 거리에 따라 그 질이 저하되는 모습과 재생기(regenerative repeater)에 의하여 원래의 펄스로 복원되는 모습을 보여주고 있다.

그림 2-5   디지탈 펄스의 왜곡과 재생

디지탈 펄스는 오로지 두 가지 상태(□0□ 혹은 □1□) 만을 가짐으로, 재생기는 왜곡된 펄스로부터 상태만을 구별하여 원래의 펄스로 재생하는 간단한 전자회로이다. 따라서 우리는 이러한 재생기를 적당한 거리마다 설치함으로써 디지탈 신호를 손상 없이 전송할 수 있다. 여기서 □적당한 거리라 함□은 펄스의 상태를 충분히 구별할 수 있는 전송거리를 말하며, 이것이 결국 재생기 설치간격(repeater intervals)이 된다. 주지하는 바와 같이, 아날로그 신호에 대해서는 이와 같은 재생 과정을 적용할 수 없다.

둘째로, 디지탈 회로는 근본적으로 아날로그 회로에 비하여 잡음이나 간섭 등 외부의 영향을 현저하게 덜 받는다.

이진 디지탈 회로는 오직 두가지 상태(0 / 1 혹은 ON / OFF) 만을 가짐으로 잡음이나 간섭이 실질적인 방해로 작용하기 위해서는 표본점에서 상태를 뒤바꿀 만큼 충분히 커야 한다. 또한 이러한 방해신호들이 전송 과정에서 누적된다 하더라도 위에서 설명한 재생과정에 의하여 반복적으로 제거되기 때문에 디지탈 회로에는 큰 영향을 미칠 수 없게 된다. 그러나 아날로그 회로에 있어서는 사정이 매우 다르다. 아날로그 신호는 그 특성 상 몇가지 상태에 국한된 신호 수준을 갖는 것이 아니고 무한히 다양한 형태로 변화하게 된다. 따라서 외부의 방해신호는 정보신호를 심각하게 왜곡시킬 수 있다. 더구나 이러한 방해신호는 전송 과정에서 누적된 형태로 나타나게 되며, 이를 제거하여 원래의 신호로 복원하는 것은 불가능하게 된다. 정보신호를 크게 하기 위하여 증폭(amplification)을 하면 정보신호는 물론이지만 방해신호도 함께 커짐을 명심하여야 한다.

세째로, 디지탈 신호에 대해서는 오류검출(error detection) 혹은 오류정정(error correction) 방법을 적용하여 매우 높은 신뢰성을 유지할 수 있다.

우리는 이 책의 제3장을 통하여 오류검출 및 오류정정 코드를 공부하게 될 것이다. 이것들은 채널 상에서 발생한 오류를 수신측에서 발견하여 재전송을 요구하거나 혹은 직접 수정할 수 있도록 코드를 조작하는 과정으로서 신호시스템의 성능과 신뢰성을 크게 향상시킨다. 이러한 과정은 오직 디지탈 신호를 위한 것이며 아날로그 신호에는 적용할 수 없다.

네째로, 디지탈 회로는 아날로그 회로에 비하여 조작이 용이하며 신뢰도가 높고 융통성도 뛰어나며 하드웨어의 가격도 매우 저렴하다.

최근, 수 없이 쏟아져 나오는 마이크로 프로세서(microprocessor)를 비롯한 디지탈 집적회로(IC : Integrated circuit)들은 가격이 매우 저렴하면서도 뛰어난 신뢰성과 융통성으로 디지탈 신호를 처리하여 준다. 또한 급속한 발전을 거듭하고 있는 디지탈 컴퓨터는 여러가지 형태의 디지탈 신호(데이타, 전화신호, 영상신호, 음성신호 등등)를 다양하게 변환하거나 조작할 수 있는 기능을 가진다. 정보통신시스템에 흔히 이용되고 있는 암호화(encryption)나 보안(privacy)을 위한 처리는 바로 이러한 디지탈 컴퓨터에 의한 성과라고 할 수 있다.

그밖에, 디지탈신호는 시간분할 다중화(TDM : timi-division multiplexing) 방식으로 여러 채널의 신호를 하나의 전송로에 다원접속할 수 있는데, 이는 아날로그 신호에 적용되는 주파수분할 다중화(FDM : frequency-division multiplexing)에 비하여 훨씬 간단한 하드웨어로 실현된다. 또한 교환(switching)에 있어서도, 디지탈 신호는 일정한 규격으로 설계된 패켓(packet)을 매체로 사용할 수 있으므로 회선교환에 의존하는 아날로그 신호에 비하여 전송로 활용도가 높고 신호조작이 매우 편리하다.

.   최근 국내외의 연구기관에서 교환(switching)에 대한 연구가 매우 활발히 진행되고 있다. 교환방식은 크게 회선교환(circuit switching), 메시지교환(message switching), 패켓교환(packet switching) 등으로 분류되는데, 이 중 아날로그 신호가 취할 수 있는 방식은 회선교환이다. 일반적으로 회선교환은 다른 두 방식에 비하여 처리의 융통성이 적고 선로 및 장치의 활용도가 낮다는 단점이 있다. 이들에 관한 좀 더 상세한 설명을 원하는 독자는 다음 문헌을 참고하라.

A. S. Tanenbaum, Computer Networks, pp. 114-119, 1981, Prentice-Hall.

공학에 등장하는 모든 시스템들은 소위 공학적 상보성(trade-off)을 갖는다. 다시 말해서 한 쪽 측면이 유리하면 다른 쪽 측면은 불리하며, 모든 면에서 유리한 선택이란 거의 없다는 것이다. 지금까지 우리는 디지탈 시스템이 아날로그 시스템에 비하여 유리한 측면만을 나열하였으나 불리한 측면이 전혀 없는 것은 아니다.

디지탈 시스템의 가장 큰 단점은 아날로그 시스템에 비하여 대역폭(bandwidth)이 넓다는 것이다. 이는 하나의 전송체계가 차지하는 주파수영역이 넓다는 것을 의미하며, 일정한 주파수영역을 갖는 채널의 이용도를 저하시킨다. 또 하나의 단점은 소위 동기문제(synchronization problem)이다. 채널을 통하여 수신된 디지탈 신호를 정확히 수신하기 위해서는 언제나 비트동기(bit sync.) 및 프레임동기(frame sync.) 등을 정확히 유지하기 위한 동기회로를 필요로 한다. 반면에 아날로그 시스템은 동기문제가 발생하지 않으므로 동기회로도 필요 없다.

.   비트동기(bit sync.)는 하나의 이진펄스를 정확히 검파하기 위한 표본점을 찾는 과정을 말하며, 이는 보통 신호시스템의 클럭(clock)에 의하여 이루어 진다. 한편, 프레임동기(frame sync.)는 하나의 프레임이 시작되는 표본점을 찾는 과정을 말하며, 이는 시스템에 따라 약속된 방법으로 처리된다. 경우에 따라 프레임동기는 매우 복잡하고 미묘한 추적을 요하는 경우도 있다. ASCII 코드의 제어문자 중 □SYN□ 은 이러한 프레임동기를 위한 비트패턴(bit-pattern)의 하나이다. 동기문제에 관하여 좀 더 상세한 내용을 원하는 독자는 다음 문헌을 참고하라.

T. Housley, Data Communications and Teleprocessing Systems, 2nd. ed., pp.17-55, 1987, Prentice-Hall.

디지탈 시스템의 이와같은 단점들은 그 장점들에 비하여 큰 비중을 차지하지 않으며, 실제로 이러한 문제점을 해결하기 위한 연구들이 꾸준히 이루어져 왔다.

.  최근 활발히 발표되고 있는 □대역폭 효율적인 신호처리 방식(bandwidth-efficient signaling methods)□들은 바로 이러한 맥락의 연구결과라 할 수 있다.

정보공학에 있어서 연속신호를 전혀 취급하지 않는 것은 아니지만, 우리는 지금부터 디지탈 신호에 대하여 집중적으로 논의하기로 한다. 위에서 언급한 바와 같이, 오늘날 정보통신 분야나 컴퓨터 분야에서 연속신호의 중요성은 점차 사라져 가고 있으므로 디지탈 신호를 집중적으로 다루는 것은 매우 합리적인 선택이라 할 것이며, 또한 그렇게 함으로써 이론의 단순성도 기할 수 있다.

아뭏든 현대의 거의 모든 컴퓨터들은 디지탈 방식이며, 과거에 정보처리용으로 일부 사용되던 아날로그 방식의 장비들이 완벽하게 디지탈 방식으로 대체되어 가고 있는 실정이다. 조사에 따르면, 1980년대 중반 이후 아날로그 방식이나 하이브리드 방식(아날로그와 디지탈이 혼용된 형태)의 범용 컴퓨터는 거의 사라진 것으로 알려져 있다. 또한 기존에 아날로그 방식으로 사용되던 전화나 오디오시스템 등을 포함한 거의 모든 통신장비들이 빠른 속도로 디지탈화 되어가고 있다.

2-4  소스알파벳과 코드알파벳

앞 절의 그림 2-4에서 나타낸 바와 같이, 디지탈 정보는 여러 개의 수준을 갖는 신호(M-ary signal)로 표현될 수도 있고, 단지 두 개의 수준 만을 갖는 신호(binary signal)로 표현될 수도 있다. 그러나 오늘날 대다수의 디지탈 장비들은 이진 디지탈 신호를 주로 사용한다. 그 이유는 동일한 전력 조건에서 Binary 디지탈 신호를 처리하는 소자가 M-ary 디지탈 신호를 처리하는 소자에 비하여 높은 신뢰성을 유지할 수 있기 때문이다. 그림 2-6에는 같은 크기의 잡음신호에 의하여 Binary 디지탈 신호와 4-ary 디지탈 신호가 왜곡되는 정도를 비교하여 나타내었다. 주지하는 바와 같이 Binary 디지탈 신호는 이 정도의 잡음에 의하여 표본점에서의 상태가 변화하지 않는 반면 4-ary 디지탈 신호는 상태가 변화할 가능성이 높다. 잡음신호에 의한 상태 변화는 바로 오류(error)를 나타내므로 시스템의 신뢰성에 직접적인 영향을 주게 된다.

그림 2-6   디지탈 신호의 신뢰성 비교

이러한 이유 때문에 컴퓨터를 비롯한 많은 정보처리 장치들이 이진 디지탈 소자로 구성되며, 정보통신시스템의 많은 부분이 이진 디지탈 신호를 사용하고 있는 것이다. 우리의 일상생활에서 흔히 사용되고 있는 휴대용 전자계산기도 표면적으로 십진(decimal) 정보를 처리하는 것처럼 보이지만 그 내부에서는 이를 이진 정보로 변환하여 처리하고 있다.

이진 디지탈 신호를 표시하는 두가지 기호로써 보통 □0□과 □1□을 사용하지만, 이를 □○□와 □×□ 등으로 대치할 수도 있다. 이 때 □0□, □1□을 숫자로 생각하기 보다는 이진 디지탈 신호의 두가지 상태를 대표하는 기호로 간주하는 것이 유용할 때가 많다. 이는 스위치의 □OFF / ON 상태□, 펄스신호의 □0 volts / 5 volts 상태□, 트랜지스터의 □개방 / 단락 상태□ 등 두가지 상반되는 전기적 상태를 주로 표시하기 때문이다.

그림 2-3의 신호시스템 모델에서 정보소스로부터 나오는 정보원은 반드시 코딩과정을 거쳐 이진코드로 처리된다. 여기서 정보원이 연속신호라면 표본화와 양자화를 거쳐 M-ary 디지탈 신호로 우선 변환될 것이므로 코딩의 대상은 이들 M 개의 신호 수준이다. 만일 정보원이 문자정보와 같이 유한개의 요소로 이루어진 알파벳으로 표시된다면 그 각각의 원소가 코딩의 대상이 될 것이다. 어떠한 경우이든 이진코딩의 대상이 되는 것은 결국 유한개의 원소를 갖는 집합으로 표시될 수 있으며, 우리는 이 집합을 소스알파벳(source alphabet)이라 한다. 한편, 이진코딩에 사용되는 재료는 {0, 1}이며 이를 코드알파벳(code alphabet)이라 부르기로 한다. 이러한 개념을 일반화하여 다음과 같이 정의해 두자.

<정의 : 소스알파벳과 코드알파벳>

어떤 디지탈 코딩의 대상이 되는 모든 목적물(objects)을 원소로 하는 집합을 그 코딩의 소스알파벳이라 하며 다음과 같이 표시한다.

[eqn: S ~=~ \{`s_1 ,` s_2 , ` s_3 , `cdots, ` s_q \}~~q ~\elements]	(2-5)

이 때 코딩에 사용되는 재료는 또 하나의 집합을 형성하는데 이를 코드알파벳이라 하며 다음과 같이 표시한다.

[eqn: C ~=~ \{` c_1 ,`c_2 ,` c_3 ,` cdots, `c_r `\}~~ r~ \elements]	(2-6)

예를 들어서 그림 2-4(c)에 나타낸 신호를 이진수로 코딩한다면, 신호의 수준은 8 개(□0□∼□7□) 이므로 식(2-5)에서 [eqn: q`=`8]이 되며, 이진코딩이라 함은 {0, 1}을 재료로 사용하는 것이므로 식(2-6)에서 [eqn: r`=`2]가 된다. 그림 2-4(d)와 같이 각 신호점의 M-ary 디지탈 신호가 모두 3 (bits)로 코딩된 것은 식(2-4)에 기인한다.

코드알파벳의 원소 수를 특별히 Radix 라 한다. 신호시스템에서 주로 사용되는 이진코드를 Radix-2 코드라 부르는 이유는 여기에 있다. 우리가 이 책을 통하여 주로 이진 디지탈 시스템을 다룬다고 하여 세 개 혹은 그 이상의 상태를 가지는 요소들이 전혀 없는 것은 아니며, 어떤 통신시스템은 수십 혹은 수백 개의 상태를 가지는 신호로 처리되는 경우도 있다. 이와 같은 신호를 다룰 때 Radix 라는 용어는 매우 편리하게 사용될 수 있을 것이다.

제4장에서 우리는 소스알파벳의 각 원소(심볼)가 발생하는 확률을 추정하고, 이를 이용하여 가변길이코드(variable-length code)를 형성시키는 과정에 대하여 논의할 것이다. 그러나 여기에서는 단순히 서로 다른 심볼의 갯수만을 고려하는 고정길이코드(fixed- length code or block code)에 국한하여 논의하고자 한다. 소스코딩의 입장에서 보면 고정길이코드의 조건은 소스알파벳의 각 심볼들이 모두 동일한 발생확률을 갖는다고 가정한 것과 같다. 고정길이코드에 있어서, 소스알파벳의 원소 수와 코드알파벳의 원소 수에 따른 코드 길이의 결정은 식(2-4)와 [예제 1]을 다시 한 번 상기해 봄으로써 이해할 수 있을 것이다.

우리가 정보원에 대하여 이진코딩을 행하는 이유는 □0□과 □1□의 나열에 대하여 어떤 의미를 부여하고자 하는 것이다. 실제로 그리 복잡하지 않은 코드체계에 대해서는 이진수의 나열에 대하여 코드표 등을 찾아 그 의미를 알아낼 수도 있는 일이다. 그러나 컴퓨터나 통신시스템과 같은 신호시스템의 입장에서 보면 이들은 단지 □0□과 □1□을 표시하는 전기신호의 나열로만 간주되고 그 의미에 대해서는 그야말로 □Don't care□이다. 그러므로 신호시스템으로부터 얻은 코드에 실제적인 의미를 부여하는 것은 사용자나 입출력 장치의 책임인 것이다. 이러한 특성을 이해하기 위하여 다음을 음미해 보라.

.   예를 들어서 흔히 사용되는 ASCII 코드 몇 개를 생각하여 보자. □1000001□은 영문자 □A□, □0111111□은 문장부호 □?□, □0000001□은 제어문자 □SOH□ 등을 의미한다. (표 2-1을 미리 보라.)

□신호시스템은 단지 그 하드웨어의 구성이나 짜여진 프로그램에 따라 □0□과 □1□을 조합시켜 줄 뿐이다. 신호시스템의 소자들은 우리가 각 심볼들에 부여한 의미에 대해서는 무관심하고 그저 정해진 규칙에 따라 신호처리를 계속할 뿐이다.□

정보공학은 바로 이러한 신호시스템에 특성을 규명하고자 하는 것이며, 이것이 바로 정보공학에서 메시지의 의미를 무시하는 까닭이다. 또한 그렇게 함으로써 신호시스템에 대하여 메시지가 미치는 정량적인 영향을 정확히 산출할 수 있는 것이다. 바꾸어 말하면 정보공학은 우리가 메시지의 의미에 주의하지 않고도 그 정보의 처리에 대하여 이해할 수 있도록 하여 주는 지능적인 도구라 할 수 있다.

앞으로 우리는 효율적인 코드체계를 설계하는 방법 및 그 응용, 정보의 양을 산출하는 방법 및 그 응용, 양대 이론의 결과가 부여하는 의미 등 코딩과 정보에 관한 제반 개념을 학습하게 될 것이다.

이러한 깊은 내용의 전개를 위한 기반으로 삼기 위하여, 이 장을 마무리하면서 흔히 사용되는 몇 가지 코드체계를 소개하기로 한다.

(1) ASCII(american standard code for information interchange) 코드

영문자(A, B, C, …, Z, a, b, c, …, z), 숫자(0, 1, 2, …, 9), 그래픽문자(?, !, +, %, #, @, =, …), 제어문자(ESC, DEL, SO, SI, SOH, BS, …) 등 약 128개의 심볼을 하나의 코드체계 내에 작성한 7-bit 코드로서 오늘날 각종 데이타 전송에 가장 널리 사용된다.

표 2-1은 표준적인 ASCII 코드표를 나타내고 있다. 코드체계 내의 모든 심볼들은 그 발생확률에 관계없이 일정한 길이(7 bits)로 표시되고 있다. 코드표는 b7, b6, b5 에 의하여 이루어 지는 8 개의 열(columns)과 b4, b3, b2, b1 에 의하여 이루어 지는 16 개의 행(rows)으로 구성된다.

.   b7을 MSB(most significant bit), b1을 LSB(least significant bit)로 취급한 것이다.

처음 두 개의 열(column-0, column-1)은 제어문자(control characters)를 표시하며, 나머지 열들(column-2 ∼ column-7)은 정보문자(information characters)를 포함하고 있다. 단, 제7열의 마지막 문자 □DEL□은 예외적으로 제어문자이다.

정보문자들은 글자 그대로 전송하고자 하는 메시지를 코딩한 것이다. 예를 들어서 영문자 □D□는 ASCII 코드로 □1000100□에 해당한다. 그러나 제어문자들은 실질적인 메시지를 표시하는 것이 아니라 데이타 전송, 데이타 형식, 데이타 논리, 터미날 장치 등을 제어할 수 있도록 특별히 고안된 것이다. 이들을 역할에 따라 분류하여 설명하면 다음과 같다.

표 2-1   ASCII 코드표(CCITT Alphabet No. 5)

				b7	0	0	0	0	1	1	1	1
				b6	0	0	1	1	0	0	1	1
				b5	0	1	0	1	0	1	0	1
b4	b3	b2	b1		0	1	2	3	4	5	6	7
0	0	0	0	0	NUL	(TC7)DLE	SP	0	@	P	`	p
0	0	0	1	1	(TC1)SOH	DC1	!	1	A	Q	a	q
0	0	1	0	2	(TC2)STX	DC2	"	2	B	R	b	r
0	0	1	1	3	(TC3)ETX	DC3	#	3	C	S	c	s
0	1	0	0	4	(TC4)EOT	DC4	$	4	D	T	d	t
0	1	0	1	5	(TC5)ENQ	(TC8)NAK	%	5	E	U	e	u
0	1	1	0	6	(TC6)ACK	(TC9)SYN	&	6	F	V	f	v
0	1	1	1	7	BEL	(TC10)ETB	'	7	G	W	g	w
1	0	0	0	8	FE0(BS)	CAN	(	8	H	X	h	x
1	0	0	1	9	FE1(HT)	EM	)	9	I	Y	i	y
1	0	1	0	10	FE2(LF)	SUB	*	:	J	Z	j	z
1	0	1	1	11	FE3(VT)	ESC	+	;	K	[	k	|
1	1	0	0	12	FE4(FF)	IS4(FS)	,	<	L	\	l	:
1	1	0	1	13	FE5(CR)	IS3(GS)	-	=	M	]	m
1	1	1	0	14	SO	IS2(RS)	.	>	N	^	n	~
1	1	1	1	15	SI	IS1(US)	/	?	O	_	o	DEL

<1> Transmission Controls (TC1 ∼ TC10) : 전송제어

.   전송제어 코드는 □SOH□, □STX□, □ACK□, □NAK□, □SYN□ 등 표 2-1에 나타낸 바와 같은 여러가지 기능을 포함한다. 이들의 실질적 기능은 데이타통신에서의 전송모드와 함께 설명되어야 한다. 이에 관한 상세한 설명을 원하는 독자는 각주 7)에 소개한 Housley의 책을 보라.

데이타통신에 있어서 메시지의 송수신에 관여하는 코드로서, 수신측의 메시지 처리를 용이하게 해 주는 데이타 형식(format)이나 통신망의 데이타 흐름을 제어하는 역할을 담당한다. 특별히 문자중심의 프로토콜(character-oriented protocol)에서 많이 사용한다.

<2> Format Effectors (FE0 ∼ FE5) : 형식제어

프린터나 터미날 등 출력장치의 형식을 제어하는 코드로서, □Back Space□, □Tab□, □Line Feed□, □Form Feed□, □Carriage Return□ 등이 여기에 속한다.

<3> Device Controls (DC1 ∼ DC4) : 장치제어

보조적인 주변장치의 제어를 위한 코드로서, 제작회사에 따라 독립적으로 단말기의 물리적 기능을 규정하여 사용한다. 예를 들어서 스크린의 인쇄, 카세트 드라이브의 연결/차단, 키보드의 잠김/풀림, 종이의 걸림/해제 등 단말기 제작회사의 자의에 의하여 규정하여 사용하도록 남겨 놓은 코드이다.

<4> Information Separators (IS1 ∼ IS4) : 정보분할

컴퓨터로 하여금 문자화일(text file)을 용이하게 취급할 수 있도록 단위를 구분하여 주는 코드이다. 그 규정은 제작자에 따라 달라질 수 있으나 대개는 □field□, □record□, □group□, □file□ 단위로 구분하는 계층구조(hierarchical structure)를 사용한다.

위에서 언급한 바와 같이, 기본적으로 ASCII 코드는 7-bit 코드이다. 그러나 컴퓨터나 정보통신시스템에서 자료를 표시하는 기본단위는 일반적으로 byte(Ａ8 bits)이므로 다음과 같이 ASCII 코드에 1 bit를 추가하여 심볼당 8 bits를 사용한다.

b8	b7	b6	b5	b4	b3	b2	b1

↑  □□□□   ASCII 코드   □□□□

추가bit

이 때, 추가된 여덟 번째 bit의 용도는 시스템에 따라 여러가지가 있을 수 있다. 가장 흔히 사용되는 방식은 소위 패리티비트(parity bit)로서 전체 8 bits에서 □1□의 갯수가 짝수(혹은 홀수)로 되도록 설정하는 것이다. 그 이유는 전송 중 발생되는 오류(error)를 검출할 수 있도록 하기 위함이다. 만일 전송 중에 1-bit의 오류가 발생하였다면, 수신측에서 볼 때 원래의 약속과는 반대로 전체 □1□의 갯수가 홀수(혹은 짝수)로 나타나게 될 것이다. 이는 수신측으로 하여금 발생된 오류를 감지할 수 있도록 하여 재전송 요구를 비롯한 후속조치를 가능케 한다.

블록코드에 있어서 오류의 제어를 위하여 □1□의 갯수를 검사하는 방법은 제3장에서 다루게 되는 오류검출코드(erroe-detecting code)나 오류정정코드(error-correcting code)에서 매우 중요한 역할을 한다. 이러한 방식은 단지 한 블록 내에 □1□의 갯수가 짝수인가 혹은 홀수인가 하는 사실만을 검사하게 되므로 특별히 패리티검사(parity check)라 부른다.

어떤 경우에는 추가된 여덟번째 bit를 무조건 □1□ 혹은 □0□으로 정함으로써 시간요소(timing element)로 사용할 때도 있다. 전자의 경우를 □Mark parity□, 후자의 경우를 □Space parity□라 하며, 이들은 디지탈 전송 시 블록동기(block sync.)를 유지하는 데 응용된다.  또한 드물게 이 여덟번째 bit를 임의로(□0□ 혹은 □1□) 두고 전혀 검사하지 않는 시스템도 있는데 이를 □Null parity□라 부른다.

(2) Baudot 코드

1874년경 전신기술을 개발한 프랑스의 공학자 Baudot의 이름을 따서 명명된 코드체계이다. 국가에 따라서는 이 분야에 공헌이 큰 뉴질랜드의 공학자 Murray의 이름을 따서 □Murray 코드□라 부르는 경우도 있다. 또한 이 코드체계는 주로 국제 텔렉스 망에 사용되기 때문에 □Telex 코드□라 불리우기도 한다.

Baudot 코드는 표 2-2에 나타낸 것처럼 5-bit 코드이며, 두 개의 코드확장 문자(code extension character)를 보유하여 영문자(letters characters)와 그림문자(figures characters)를 번갈아 사용할 수 있도록 설계되어 있다. 코드표에 □↑□로 표시되어 있는 것은 FS(figure shift)를 나타내며, 이 문자 이후의 문자들은 그림문자에 대응한다는 뜻이다. 또한 □↓□로 표시된 것은 LF(letter shift)를 나타내며, 이 문자 이후의 문자들은 영문자에 대응한다는 의미이다. 예를 들어서

24 MOKDONG JUNGKU TAEJON 301 D 729

표 2-2   Baudot 코드표 (CCITT Alphabet No. 2)

Binary code	Letters Characters	Figures Characters
00000	Blank	Blank
00001	E	3
00010	□	□ Line feed
00011	A	□
00100	SP	SP Space
00101	S	'
00110	I	8
00111	U	7
01000	<	< Carriage return
01001	D	□ Who are you ?
01010	R	4
01011	J	□ Bell
01100	N	,
01101	F	%
01110	C	:
01111	K	(
10000	T	5
10001	Z	+
10010	L	)
10011	W	2
10100	H	￡
10101	Y	6
10110	P	0
10111	Q	1
11000	O	9
11001	B	?
11010	G	$
11011	□	□ Figure shift (FS)
11100	M	.
11101	X	/
11110	V	=
11111	□	□ Letter shift (LS)

와 같은 메시지를 전송하기 위해서는

↑24 ↓MOKDONG JUNGKU TAEJON ↑301 ↓D ↑729

에 해당되는 코드를 보내야 한다.

식(2-4)에 따르면 5 bits 코드에 의하여 표시할 수 있는 신호원 심볼의 갯수는 최대 32 개이다. 그러나 Baudot 코드에서는 이들 코드확장 문자를 사용하여 영문자, 숫자, 기호 등 약 60 개의 문자를 표시할 수 있도록 하였다.

.   Baudot 코드표를 자세히 살펴보면, 코드확장 문자 □↑□, □↓□을 비롯하여 □Blank□, □Line feed□, □Space□, □Carriage return□ 등은 양쪽에서 공동으로 사용하고 있음을 볼 수 있다.

주지하는 바와 같이 Baudot 코드는 5 bits 전체를 정보로 사용하기 때문에 ASCII 코드에서와 같은 오류제어는 불가능하며, 동일한 코드에 대해서도 그 앞에 어떤 확장문자가 있느냐에 따라 서로 다른 문자로 수신될 수 있음을 명심해야 한다. 따라서 이는 컴퓨터를 근간으로 하는 정보통신시스템에서는 사용할 수 없고 단지 텔렉스와 같은 자연어 전송에 흔히 사용되고 있다.

(3) Morse 코드

우리들에게 친숙한 또 하나의 코드체계로는 과거에 연속파전송(CW)으로 널리 사용되던 □Morse 코드□를 들 수 있다. 표 2-3에 그 코드표의 일부를 나열하였다. 코드표에서 Dash(１)는 Dot(·)에 비해서 세 배 정도의 길이를 가진다.

Morse 코드는 마치 이진코드(binary code) 처럼 보이지만 실제로는 삼진코드(ternary code 혹은 radix-3 code)이다. 왜냐하면 사용되는 심볼이 □Dash□, □Dot□, □Space□의 세 가지이기 때문이다. 한 글자 내에서의 □Dash□ 나 □Dot□ 사이의 시간은 1 단위(one unit)의 □Space□에 해당되며, 글자와 글자 사이의 시간은 3 단위의 □Space□, 그리고 단어(word)와 단어 사이의 시간은 6 단위의 □Space□에 해당된다.

Morse 코드는 오늘날 극히 일부의 구형 시스템에서만 사용되는 코드로 전락해 버리고 말았으나, 앞에서 설명한 두 가지 코드체계와는 다른 정보공학적 의미를 가지고 있다. 표 2-3에서 보는 바와 같이 Morse 코드는 명백하게 가변길이코드(variable-length code)이다.  다시 말해서 □E□와 같이 빈번하게 나타나는 문자는 짧은 코드로, □Z□처럼 드

표 2-3   Morse 코드표 (일부)

영문자	Morse 코드
A	□ □
B	□ □ □ □
C	□ □ □ □
D	□ □ □
E	□
F	□ □ □ □
G	□ □ □
H	□ □ □ □
I	□ □
J	□ □ □ □
K	□ □ □
L	□ □ □ □
M	□ □
N	□ □
O	□ □ □
P	□ □ □ □
Q	□ □ □ □
R	□ □ □
S	□ □ □
T	□
U	□ □ □
V	□ □ □ □
W	□ □ □
X	□ □ □ □
Y	□ □ □ □
Z	□ □ □ □

물게 나타나는 문자는 긴 코드로 표현함으로써 평균코드길이(average code length)를 감소시킨다는 것이다. 아직까지는 이러한 사실에 대하여 직관적으로 이해할 수 밖에 없으나, 우리는 제4장에서 가변길이코드와 평균코드길이에 관한 개념을 구체적으로 논의할 예정이다.

(4) 그 밖의 코드

앞에서 설명했던 코드체계 외에도 수많은 종류의 코드체계들이 컴퓨터나 정보통신시스템에 사용되어 왔고, 그들 중 일부는 영원히 사라지기도 하였다. Morse 코드의 수신 방법을 개선한 Van Duuren 코드나, 이를 조작하여 만든 여러가지 가중치 코드들도 있었고, 아직까지 일부 사용되기도 하는 BCD 코드나 EBCDIC 코드 같은 것들도 이 범주에 포함된다고 할 수 있다.

BCD(binary coded decimal) 코드는 몇몇 컴퓨터의 내부코드(internal code)로 사용되던 체계로서, 64 개의 심볼을 코딩할 수 있는 6-bit 코드이다. 이것이 컴퓨터의 내부를 벗어나 통신을 목적으로 사용될 때에는 1 bit의 패리티비트를 덧붙여 7-bit 코드로 사용되기도 하였다.

EBCDIC(extended BCD interchange code) 코드는 위의 BCD 코드를 확장하여 8-bit 코드체계로 형성시킴으로써 256 개의 심볼을 코딩할 수 있도록 설계된 것이다. 이는 과거 많은 종류의 컴퓨터에서 내부코드로 혹은 그들 사이의 통신용 코드로 사용되다가 위에서 설명한 ASCII 코드가 표준으로 자리잡자 점차 사라지기 시작하였다. 한 때는 이 코드체계가 ASCII 코드와 공존하면서 이들 상호간의 코드변환(code conversion)이 문제가 되기도 하였다.

연 습 문 제

2.1	다음 여러가지 코드들에 대하여 경우의 수를 구하라.

(a) 우리나라 외무부에서 발행하는 일반여권의 고유번호는 모두 9 자리로 구성되는데 처음 두 자리에는 영문자가, 나머지 일곱 자리에는 십진수가 부여된다. 가능한 고유번호는 몇 가지 인가 ?

(b) 영문자 3 개, 이진수 5 개의 차례로 이루어진 상품번호의 서로 다른 종류는 몇 가지 인가?

(c) 어떤 컴퓨터의 명령어(instruction)는 각각 1 byte로 구성된다고 한다. 서로다른 명령어의 종류는 몇 가지 인가 ?

(d) 주택은행에서 발행하는 복권 번호의 가능한 종류는 모두 몇 가지 인가 ?

2.2	그림 2-3에 주어진 신호시스템 모델에서 □ENCODER□를 SOURCE-ENCODER와 CHANNEL-ENCODER로,  □DECODER□를 CHANNEL-DECODER와 SOURCE -DECODER로 각각 분리하여 다시 그려라. 또한 각 블록으로부터 나오는 신호의 형태에 대하여 간단히 설명하라.

2.3	표 2-1의 ASCII 코드를 이용하여 다음과 같은 메시지를 코딩하라.

(a) Information theory & Coding methods.

(b) (The number □777□ means fortune.)

2.4	위 문제 2.3에서 코딩된 메시지에 대하여 짝수 패리티(even parity)를 부여하라.

2.5	팔진(octal) ASCII 코드로 다음과 같이 표시되는 메시지를 말하라.

(a) 103117115120125124105122

(b) 101123103111111040143157144145

2.6	위 문제 2.5에 주어진 코드에 홀수 패리티(odd parity)를 적용하여 다시 써라.

2.7	4-진수를 이용하여  ASCII 코드의 영문 대문자 부분에 대한 코드표를 작성하라.

2.8	8-bit ASCII 코드의 추가된 여덟번째 bit를 다음과 같이 정의할 때, 영문 소문자 부분에 대하여 십육진(radix-16) ASCII 코드표를 작성하라

(a) 짝수 패리티(even parity)	(b) 홀수 패리티(odd parity)

(c) Mark parity	(d) Space parity

2.9	표 2-2에 주어진 Baudot 코드를 사용하여 다음 메시지를 코딩하라.

(a) PRENTICE-HALL, ENGLEWOOD CLIFFS, NEW JERSEY 07632, U.S.A.

(b) ENTRY NUMBER $4703$ WILL BE CHANGED.

2.10	Baudot 코드로 다음과 같이 표현되는 메시지는 무엇인가 ?

(a) 11111011100111000110100001000000100011001100011011111001001101000

(b) ↓10000000011001000001111010010001110110000100100001↑011011001101000

2.11	위 문제 2.9 및 2.10에 주어진 메시지를  팔진(octal) ASCII 코드로 표현하라. 또한 ASCII 코드와 Baudot를 비교하여 각각의 장점과 단점을 말하라.

2.12	표 2-3에 주어진 Morse 코드를 이용하여 다음의 메시지를 코딩하라.

(a) INFORMATION THEORY	(b) CODING METHOD