이 책의 구성
이 책은 총 10장의 본문과 부록으로 구성되어 있으며 각 장을 요약하면 다음과 같다.
1장 디지털 시스템에 대한 소개 및 아날로그 신호와 시스템 그리고 디지털 신호와 시스템의 차이점을 설명하고 디지털 시스템이 아날로그 시스템에 견주어 어떤 점이 좋은지를 설명하였다. 또한, 디지털 정보의 표현 방법과 디지털 논리 연산의 개념을 개략적으로 소개하고 집적회로의 다양한 분류 방식에 대해 간단히 정리하여 소개하였다.
2장 수의 체계에 대하여 필요한 모든 내용을 다루고자 하였다. 우선은 10진수에 익숙한 독자들에게 컴퓨터 혹은 디지털 시스템 내부에서 어떻게 2진수의 연산을 통해 덧셈, 뺄셈, 곱셈, 나눗셈 등의 산술 연산을 수행하는지 다양한 예를 들면서 설명하였다. 그리고 음수를 표현하기 위한 보수 체계도 단순하게 보수를 이용한 음수의 표현 및 산술 연산 과정을 기능적인 방법론으로 소개하기보다는 보수란 무엇인지, 그리고 보수를 이용하면 어떻게 뺄셈 연산이 수행되는지를 자세히 다루었다. 그리고 실수를 표현하기 위한 두 가지 방법인 고정 소수점과 부동 소수점에 대한 설명을 아울러 추가하였으며 실제 컴퓨터에서 어떻게 실수를 저장하는지 간단한 C 프로그램을 통해 확인할 수 있도록 하였다.
3장 정보를 2진수로 변환하는 여러 가지 방법인 디지털 코드에 대하여 다룬다. 정보라 함은 숫자, 문자, 데이터 등을 포함할 수 있는데 이 정보를 컴퓨터나 논리회로에서 사용하는 2진수로 변환함에 있어서 여러 가지 상황과 목적에 따라 다양한 디지털 코드 방식을 채택할 수 있다. 이 변환하는 방식의 코드들은 지금은 사용되지 않는 방식도 있고 최근에 새롭게 소개되는 방식들도 있으며 국제 표준으로 지정된 코드도 있는 만큼 다양한 코드들을 이해해 놓는 것은 하드웨어 및 소프트웨어 개발 업무를 수행하면서 꼭 필요하다고 생각한다.
4장 논리회로의 최소 단위인 논리 연산과 그를 실제적인 전자회로로 수행하는 논리게이트에 대하여 다룬다. 논리게이트는 단순히 기호만을 이해하고 주어진 입력에 대한 논리 연산을 수행하는 소자 정도만 가볍게 알 수도 있다. 그러나 논리게이트를 이용한 디지털 시스템을 분석하고 설계하기 위해서는 논리게이트의 내부 회로 및 전기적 특성을 추가로 이해해 두는 것이 필요하다. 이런 생각으로 본문에서는 비전공자도 이해할 수 있도록 다이오드 및 트랜지스터의 기본 동작을 논리게이트와 견주어 설명하였으며 조금 더 구체적인 내용은 부록 B에 추가하였다.
5장 복잡한 논리회로도가 주어졌을 때 그 회로도를 보고 어떻게 동작을 할지 혹은 회로를 조금 더 간단히 할 수 있을지 고민하는 것은 매우 어려운 일이다. 그러나 회로를 수학적인 표현으로 나타내면 대수적으로 간단히 하거나 동작을 분석하는 것이 한결 쉬운 일이 된다. 이 물리적 회로와 수학적 함수를 연계해주는 것이 바로 부울 대수체계이다. 이 장에서는 바로 이 부울 대수체계를 여러 가지 성질과 함께 소개하고 이를 이용해 물리적 논리회로를 수학적인 논리 함수로 변환할 수 있음을 설명한다. 아울러 변환을 통해 얻은 논리 함수(부울 함수)는 부울 대수의 여러 가지 성질을 이용하여 같은 입·출력을 내면서 간소화될 수 있음을 알아본다.
6장 부울 대수체계를 이용하여 손으로 정리해 가면서 간소화하는 방법은 회로가 복잡해지면 실수할 수도 있고 한계가 있다. 6장에서는 카노맵을 활용한 체계적인 부울 함수의 간소화 방법을 설명한다. 이 간소화 방법은 이후 모든 디지털 회로 설계과정에서 사용되는 만큼, 다양한 입력 변수들에 대한 카노맵 작성 방법, 간소화 방법, 곱의 합 혹은 합의 곱 형태로 표현하는 법 등에 익숙해지도록 한다.
7장 조합회로에 대한 분석과 설계과정을 다룬다. 조합회로의 의미와 종류 그리고 분석 및 설계 과정에 대해서 종합적으로 살펴보고 산술 연산 회로/데이터 변환 회로/데이터 전송 관련 회로로 구분되는 다양한 조합회로의 기능과 특성을 그림과 예제를 곁들여 설명하였다.
8장 순차회로의 의미와 2진 데이터를 저장하기 위한 기초 소자로서의 래치와 플립플롭의 설명에 많은 지면을 할애하였다. 단순하게 한 비트를 기억/저장하는 소자로 치부해 버릴 수도 있지만, 논리회로를 분석하고 활용하는 공학도라면 이진 정보의 저장 원리를 충분히 이해하고 있어야 이후에 나오는 다양하고 복잡한 순차회로를 무리 없이 분석하고 설계할 수 있다.
9장 순차회로의 대표적인 활용 분야인 카운터와 레지스터에 대하여 다루고 있다. 카운터는 단순하게 수를 세는 것을 넘어서 다양한 센서로부터 들어오는 이벤트를 입력받아 그 이벤트의 횟수를 세어 센서가 설치된 환경을 직·간접적으로 모니터할 수 있다. 또한, 정확한 주기를 가지는 클록을 입력받아서 그 계수된 값으로 특정 구간의 시간을 측정할 수도 있다. 9장에서는 이처럼 활용도가 높은 카운터/타이머를 8장에서 배운 플립플롭을 이용하여 설계하는 방법을 소개한다. 아울러 플립플롭을 여러 개 이어 붙여 여러 비트(8-비트, 16-비트, 32-비트 등)의 정보를 한꺼번에 저장할 수 있는 레지스터에 대하여 학습한다. 이 레지스터들의 동작을 잘 이해하는 것은 후에 컴퓨터의 구조를 학습하거나 프로세서 내부의 데이터 버스에서 레지스터값이 버스를 통하여 연산기를 거쳐 연산을 수행한 후 다시 레지스터로 저장되는 명령어 사이클을 이해하는 데 큰 도움을 줄 것으로 믿는다.
10장 데이터를 저장하는 공간인 메모리와 프로그램 가능한 논리 장치에 대하여 다룬다. 디지털 시스템에서 꼭 필요한 요소 블록이 바로 이 메모리이다. 따라서 메모리에 관한 종류와 활용법을 익힐 수 있도록 메모리의 특징과 비트의 저장원리, 그리고 행렬 구조로 이루어진 메모리의 데이터 읽기, 쓰기 동작 방식 등을 알기 쉽게 설명하였다. 또한, 소규모 논리회로를 간편하게 설계할 때 사용되는 프로그램 저장장치들을 그 저장 방식에 따라 설명하고 프로그래밍이 어떤 원리로 이루어지는지 이해할 수 있도록 소개하였다.
부록 A Logisim-evolution이라고 하는 소프트웨어를 사용하여 논리게이트 및 다양한 조합회로/순차회로의 동작을 확인하는 실습을 부록에 포함하였다. 이 소프트웨어는 JAVA 기반 무료 교육용 논리회로 시뮬레이터로써 소프트웨어의 크기도 크지 않고 GUI 인터페이스로 직관적으로 이해가 쉽도록 잘 구성되어 있어서 누구나 쉽게 논리회로를 구현하고 동작을 확인해 볼 수 있다. 따라서 브레드보드에 표준 IC들을 꼽고 선을 연결하고 전원을 인가하고 LED 혹은 7 세그먼트를 연결하여 결과를 확인하던 고전적인 방법에 비해 시간적/공간적으로 매우 효율적이다. 또한, 7 세그먼트, LED, 클록 입력신호, 16진수 표시 장치 등이 부가적으로 제공되기 때문에 회로의 동작을 시각적으로 바로 확인할 수 있어서 논리회로를 배우는 학생들의 흥미를 유발할 수 있다. 실습의 모든 내용은 본문에서 다루는 다양한 조합회로 및 순차회로를 직접 구현, 검증할 수 있도록 연계하여 꾸며졌다. 따라서 각 장의 본문 내용 이해와 연계 실습을 진행하면서 더욱더 깊은 회로의 분석 및 설계 능력이 배양될 것으로 믿는다.
부록 B 논리게이트의 내부 회로를 이해하기 위한 다이오드 및 트랜지스터 전자소자의 특성을 조금 더 자세하게 설명하였다. 즉 도체 및 부도체와 다른 반도체의 특성과 서로 다른 불순물이 첨가된 반도체의 접합으로부터 어떤 현상이 일어나는지를 포함하여 3 단자로 구성된 트랜지스터 소자가 한 단자의 제어로 나머지 두 단자가 도체와 같은 성질을 보이는지 이해하기 쉽도록 설명하고자 하였다. 비전공자가 반드시 알아야 하는 내용은 아니지만 상식적으로 알아두어도 좋은 내용이라고 생각한다.