-
트랜지스터로배우는디지털회로Ⅰ-1. 디지털회로의기초Electron 2015. 5. 19. 14:54
트랜지스터로배우는디지털회로Ⅰ
HDL(Hardware Description Language)을 사용하는 논리회로설계가 당연해진 지금도 실제로 동작하고 있는 하드웨어, 즉 전자회로의 동작이나 실력을 숙지해두는 것은 매우 중요한 일이다. 그 지식들은 인터페이스를 설계하거나 트러블이 발생했을 때 반드시 필요한 것이기 때문이다. 이와 관련, 본지 특집에서는 NAND 게이트를 직접 제작하여 스타트시키고 플립플롭의 실제 동작을 확인한다. 또한 순서회로설계에 있어서 중요한 동기식 방식도 해설하고 각종 로직 IC의 실력 및 특징도 알아본다.
1장 디지털 회로의 기초
2장 트랜지스터로 제작하는NAND 게이트회로와 그 동작
3장 조합논리회로의 제작 방법과 논리압축의 기초
4장 플립플롭을 이해하자
本記事는 日本CQ出版社가 發行하는「トランジスタ技術」誌(2004年9月號)와의 著作權協定에 依據하여 提供받은 資料입니다.
디지털이란무엇인가?
1. 디지털회로의기초
나 자신도 그렇듯, 독자 여러분도‘디지털(digital)’이라는 용어를 이미 오래 전부터 알고 있을 것이다. 또‘디지털’이라 는 말이‘아날로그(analog)’와 함께 사용되고 있다는 것도 너 무나 잘 알고 있을 것이다.
그러나‘디지털이란 무엇인가? 디지털과 아날로그의 차이 는?’이라는 물음에 대해 제대로 대답하는 것은 의외로 어렵 다고 생각한다. 아마 많은 사람들은‘아날로그는 흐릿한 것이 고 디지털은 뚜렷한 것이다’라는 막연한 인상밖에 갖고 있지 않을지도 모른다.
디지털은 어렵지 않다
어쩌면‘전자회로가 생기기 전에는 아날로그적인 것밖에 존재하지 않았고 디지털은 새로운 사고방식이다’라는 생각을 갖고 있는 사람도 있을 것이다. 확실히 레코드가 CD로 바뀌 고 일반전화가 휴대전화로 된 것처럼 기술 진보에 따라 다양 한 분야에서 디지털화되고 있다.
또‘자연은 아날로그이다’라는 생각에서‘인간의 뇌는 아 날로그이므로 디지털을 이해하는 것은 어려운 일이다’라고 생각하고 있을지도 모른다.
만약 그렇다고 해도 걱정할 것은 없다. 나는 디지털이라는 사고방식이 인간에게 그 정도로 친숙하지 않다고는 생각하지 않는다. 여러분도 일상생활에서 사물을 디지털적으로 생각하 고 있다. 만약 디지털이 어렵다는 생각을 가진 사람이라면 먼 저 이 장을 읽고 디지털의 세계로 쉽게 들어갈 수 있게 되기 를 바라는 바이다.
‘수를 센다’란
1. 손가락을 구부려 센다
흔히‘컴퓨터는 2진수, 인간은 10진수를 사용한다’라고 말 한다. ‘인간이 10진법을 사용하고 있는 것은 양손에 10개의 손가락을 갖고 있기 때문이다’라는 이야기도 자주 듣는다. 정 말 그럴지도 모른다. 그러나 손가락을 펼치거나 구부려서 수 를 세는 방법은 사실‘1진법’의 사고방식에 가깝다고 할 수 있다.
10진법이 기호를 10개 사용하여 수를 표현하는 방법인 것 처럼, 1진법이란 기호를 1종류만 사용하여 수를 표현하는 방 법이다. 예를 들어 5라는 수를 표현하기 위해 돌 5개를 지면 에 놓고 표현하는 방법 등이 그것이다. 손가락으로 세는 방법 도‘손가락이 몇 개 펴져 있는가’로 수를 나타내고 있으므로 1진법이라 할 수 있다.
그림 1은 사과가 3개 있다는 것을 표현하기 위해 손가락을 3개만 편 모습이다.직감적으로 알기 쉬워 지금도 누구나 사 용하고 있는 방법이다.
2. 더 큰 수를 다루고 싶다
손가락을 사용하는 수치표현으로는 양손을 사용해도 10까 지밖에 셀 수 없다. 옛날 사람들은 더 큰 수를 표현하는 방법 에 대해 여러 가지로 고민했을 것이다.
가장 간단한 것은‘손가락을 늘리는’방법이다. 양손에는 손가락이 10개밖에 없지만 재치가 있는 사람이라면 양발을 사용함으로써 20까지 셀 수 있게 된다. 손가락을 늘리는 것은 이것이 한계이지만 막대나 돌을 나열함으로써 좀 더 큰 수까 지 표현할 수 있다.
3. 한 뭉치를 하나로 한다
손가락 대신 돌을 사용한다고 해도 돌이 부족해질 수 있다. 어쩔 수 없이 약간 큰돌을 갖고‘이것을 작은 돌 10개라고 한 다’라는 룰을 정해본다.
이 방법을 계속 진행시켜‘약간 큰 돌 10개를 더 큰 돌 1개 로 나타내고 또 그것이 10개가 모아지면…’이라는 식으로 재 귀적으로 룰을 결정한다. 또‘어떤 크기의 돌은 10개 이상 사 용하지 않고 10개가 모아지면 반드시 다음 사이즈의 것으로 바꾼다’라는 룰도 추가한다.
이와 같이 할 경우, 각 크기의 돌을 각각 9개씩만 준비해도 충분하며 또 어떤 수를 표현하는 돌의 조합이 반드시 한가지 로 된다는 메리트도 발생한다.
그림 2는 10을 나타내는 돌 1개와 1을 나타내는 돌 2개로 12를 나타낸 모습이다.
이것이 10진법의 사고방식이다. 2진법 등과 같이 기수가 다르다고 해도 손가락을 몇 개 단위에서 한 뭉치로 할 것인가가 다를 뿐이다.
한쪽 손을 한 뭉치로 했다면 세상은 5진법의 세계로 되어 있을지도 모른다.
4. ‘자릿수’의 사고방식
10배의 크기가 될 때마다 조금씩 돌을 크게 해 가는 방법에 서는 다른 크기의 돌을 여러 종류 준비해야 한다는 단점이 있 다. 이것은 한자로 수치를 나타내는 경우에도 마찬가지다. 예 를 들어 한자로 나타낼 경우‘百二十三’이 되지만‘百’이나 ‘十’이라고 하는‘크기의 베리에이션’, 즉 단위의 명칭을 여 러 종류 준비해야 한다.
이 단점을 극복하는 방법으로는‘위치의 원리’라는 것이 있 다. 잘 알고 있는 바와 같이, 수(돌)가 놓인‘장소’에 의미를 부여하고 그에 따라 수의 크기를 나타내는 방법이다. 百二十三을‘123’으로 나타내는 방법도 같은 것이다.
그림 3은 위치의 원리를 이용하여 모두 같은 크기의 돌을 사용, 123을 나타낸 모습이다.양손의 손가락으로 1,023까지 셀 수 있다!?
1. 양손의 손가락을 효율적으로 사용한다…6진법이라 면 35까지 셀 수 있다
앞서 5진법에 관해 기술했지만 잠깐 실험적으로 손가락을 사용, 5진법으로 수를 세어보자. 룰은 다음과 같다. 모든 손가락이 구부러진 상태를 0으로 하고 1이 늘어날 때 마다 오른손의 손가락을 펴간다. 그리고‘오른손이 5가 됐다 면 왼손을 1 늘리고 오른손을 0으로 되돌린다’는 식으로 한 다. 왼손도 마찬가지로‘5가 됐다면 0으로 되돌린다’는 식으 로 한다. 이와 같이 수를 세면 5진법으로 세는 방법을 알 수 있을 것이다.
실제 이 룰로 수를 세어 갈 경우, 양손 모두 4의 상태로 되었 을 때 가장 큰 숫자를 표현하게 된다. 왜냐하면 수가 하나 늘어 나면 양손 모두 0으로 되어 한바퀴 돌아가 버리기 때문이다. 그런데 양손 모두 4의 상태라는 것은 10진법의 24에 해당 하므로 사실 5진법을 사용하면 양손만으로 10보다 큰 수까지 셀 수 있다는 것을 알 수 있다.
실제로는 한 손으로 0~5까지의 6가지 수를 나타낼 수 있 으므로 6진법을 사용하면 더욱 효율적이며 양손만으로 35까 지 셀 수 있다.
2. 1진법은 효율이 낮다
이와 같이 계수방식만 약간 변경함으로써 큰 수까지 셀 수 있게 되는 이유는, 여러분이 언제나 손가락을 구부려 세고 있 는 1진법이 효율이 낮은 계수방식이기 때문이다.
사실 기수(n진법의 n의 수)가 1인 경우와 2 이상인 경우에 는 수의 표현에 필요한 자릿수에 결정적인 차이가 있다. 기수 가 2 이상인 경우, 자릿수가 하나 증가하면 표현할 수 있는 수의 범위가 n배로 된다. 즉, 자리의 증가에 따라 표현할 수 있는 수의 범위는 지수함수적으로 확대된다.
그러나 1진법은 자리가 1개 증가해도 표현할 수 있는 수의 범위는 하나밖에 증가하지 않는다. 즉, 선형으로밖에 확대되 지 않는다.
실제로 1진법에서 5진법, 5진법에서 10진법, 10진법에서 100진법과 같이 n이 클수록 자릿수가 적어 수를 콤팩트하게 표현할 수 있다.
그림 4에서는 1진법, 2진법, 10진법에서 각각 같은 수를 표현하고 싶은 경우에 필요한 자릿수를 비교하고 있다.수가 작을 때에는 별로 차이가 없지만 수가 커지면 1진법이 얼마나 비효율적인 표현방법인지 알 수 있을 것이다. 또한 2진법 이 상에서는 표현하는 수의 크기에 관계없이 필요한 자릿수의 비가 거의 일정하게 된다.
3. 가장 효율적인 방법…2진법이라면 양손으로 1,023까지 셀 수 있다
여기서 이야기를 조금 되돌려, 손가락을 사용하여 효율적 으로 수를 세는 방법에 관해서도 생각해보자.
앞서 기수의 n을 크게 한 쪽은 자릿수가 적어도 된다고 말했 지만 그 이야기는 어디까지나‘n개의 기호를 준비할 수 있다 면’이라는 조건이 전제이다.
손가락을 구부려 수를 세는 방법에서는‘손가락을 구부린’상태와‘손가락을 편’상태의 2가지 상태밖에 없다. 즉, 기호 를 2종류밖에 준비할 수 없는 것이다.
손가락을 사용하는 5진법의 예는 한쪽 손으로 5진법의 1자 리를 표현하는, 바꿔 말해 5진법의 기호를 1진법으로 표현하 는 좀 특수한 표현방법이라 할 수 있다.
그렇다면 손가락이‘구부린다’와‘편다’의 2가지 상태밖에 없는데 대해, 가장 효율적으로 수를 표현하기 위해서는 어떻게 해야할까. 2진법을 사용하여 각 손가락을 2진법의 1자리로 하 는 것이 가장 효율적인 방법이다. 이 방법으로는 손가락 10개 상태의 조합(210=1,024와 같이)을 모두 사용하여 0~1,023 까지 셀 수 있다.
나는 어렸을 때‘양손으로 1,023까지 세는 방법’이라는 말 을 듣고 골똘히 생각했던 기억이 있다. 그림 5에 한쪽 손으로 31까지 세는 방법을 나타낸다.
디지털의 기본은 2가지 상태에서 수를 나타내는 것
1. 손가락을 구부리는 형태에 따라 상태를 늘리면 더 많은 수를 표현할 수 있지만…
지금까지는 손가락을‘구부린 상태’와‘편 상태’의 2가지 상태만 사용했다. 그러나‘손가락을 절반 구부리고 있다’나 ‘손가락을 2/3 구부리고 있다’라고 하는 상태를 도입하면 더 욱 많은 수를 표현할 수 있다.
확실히 수치표현의 효율은 높아질지 모르겠지만 그와 함께 문제도 발생한다. 사람에 따라서는 그러한 동작이 어려울 수 있고, 게다가 타인에게 보였을 때 상대에게 제대로 전달되지 않을 가능성도 있다. 표현한 사람은 손가락을 반만 구부렸는 데, 보는 사람은 완전히 구부러져 있다고 착각해버릴 수도 있 는 것이다.
디지털 회로가‘0’과‘1’의 2값만 사용하여 만들어진 이유 도 마찬가지이다. 연구 상으로는 상태의 수가 3개 이상인 회 로도 구상되었지만 실용적으로는 사용되지 않고 있다.
2. 2개뿐인 상태에서 확실하게 수를 표현하는 것이 디지털의 기본적인 사고방식
이와 같이, 인간은‘있다’와‘없다’의 2가지만으로 상태를 제한해놓고 오해를 일으키지 않도록 예전부터 연구하고 있었 던 것이다.
디지털이라는 용어에는‘숫자의’라는 의미 이외에‘손가락 의’라는 의미도 있다. ‘디지털과 아날로그의 차이는?’이라는 물음에 대한 답으로는‘손가락을 구부리거나 펴서 표현할 수 있는 것이 디지털이다’라고도 할 수 있을 것이다.
3. 2진수는 효율적인 계수방법
10진법의 1자리에는 10의 상태가 있는 것처럼, 2진법의 1 자리에는 2가지 상태밖에 없다. 그 2가지의 상태를 뭔가‘있 는’상태와‘없는’상태에 대응시키면 실질적인 1종류의 기 호로 수를 표현할 수 있다. 이것은 전자회로에서 말하면 전원 이 1종류라는 것을 의미한다.
실은 1진법도 뭔가‘있는’상태와‘없는’상태로 수를 표현 하고 있으므로 사용하는 리소스는 2진법과 다르지 않다. 그럼 에도 불구하고, 전술한 바와 같이 2진법은 압도적으로 적은 자릿수로 큰 수를 표현할 수 있다.
물론 상태를 더욱 늘려 3진법, 4진법, …과 같이 n진법의 n 을 크게 해 가면 필요한 자릿수가 적어도 된다. 그렇지만 2진 법과 n진법 각각에 필요한 자릿수(의 오더) 사이에는 log2 n: 1의 비례관계밖에 없다.
log의 함수는 완만하게 증가해 가는 함수이므로, 예를 들어 100진법에서 나타낸 수를 2진법으로 고쳐도 자릿수의 증가 는 기껏해야 log2100배, 즉 약 6.6배밖에 되지 않는다. ‘의외 로 차이가 없구나’라 생각되지 않는가?
이와 같이 2진법은‘1종류의 기호만으로’, ‘콤팩트하게’ 수를 표현할 수 있다는 특징을 갖고 있다.
2진수의 계산
1. 2진수와 그 표기
2진법으로 표기된 수를‘2진수’라 한다. 이 이후에는 2진 수의 표기를 다음과 같이 하고 싶다. 먼저 위치의 원리를 사 용한다. 그리고 각각의 자리에 값이 존재하는 것을‘1’, 존재 하지 않는 것을‘0’으로 표기한다. 예를 들어 10진수의 3을 2 진수로 표현하면 11이 된다.
2. 2진법으로 센다
그림 5는‘손을 사용하여 2진법으로 수를 세는 방법’인데, 반드시 실제로 0, 1, 2, 3, …으로 1개씩 증가시키며 손가을 움직여 보기 바란다. 일단 7 정도까지 원활하게 할 수 있 게 되면 다음에는 그것이 반복되므로 의외로 간단하게 31 정 도까지 셀 수 있다.
이와 같이 2진법으로 1을 더하는 동작에는 일정한 리듬이 있으며 그 움직임은 다음과 같이 최하위의 자리에서 다음과 같은 조작을 순서대로 반복함으로써 실현된다.
① 0과 1을 반전한다
② 1 → 0의 반전동작을 실행했다면 1개 위의 자리에서 마 찬가지로 조작한다. 0 → 1이 되면 종료. 반대로 1을 빼는 동작은 다음과 같이 최하위의 자리에서 다음과 같은 조작을 순서대로 반복하면 된다.
① 0과 1을 반전한다
② 0 → 1의 반전동작을 실행했다면 1개 위의 자리에서 마 찬가지로 조작한다 1 → 0이 되면 종료.
이와 같이 매우 간단하게 조작할 수 있다.
3. 2진수로 1을 더하는 장치
다음에는 앞서 설명한‘1을 더한다’는 계산을 실행하는 장 치 제작에 대해 생각해보자.
최종적으로는 그 장치를 전자회로에서 실현하고 싶겠지만 우선 이 장에서는, 장치의 실현수단은 생각하지 않기로 하고 ‘어떠한 장치가 필요한가’라는 점만 생각하도록 한다. 그 장 치를 어떻게 해서 전자회로로 실현할 것인가에 대해서는 제2 장 이후에서 설명한다.
먼저 정보(수치)는「‘0’과‘1’의 2가지 상태를 가진 무언 가」로 나타내고 있다고 하자. 그리고 그 장치는‘0’과‘1’의 조합을 입력할 경우 그것을 2진수로 보고 1을 가산한 결과를 별도 출력하는 것으로 한다.
먼저「‘0’과‘1’을 반전하는 장치」가 필요하다는 것을 알 수 있다. 그 장치가 있으면 그림 6과 같이 1자리 째의 정보를 그 장치에 넣을 경우 1자리 째의 계산까지 완료한다.
이 상태에서 2자리 째…로 가고싶지만, 2자리 째를 반전해 도 될지의 여부는 1자리 째의 결과에 의존한다. 즉, 「어떤 조 건이 충족되었을 때에만‘0’과‘1’을 반전하는 장치」가 필요 하게 된다.
그래서 전술한「‘0’과‘1’을 반전하는 장치」를 약간 개량하 여‘조건입력’과‘조건출력’이라는 명칭의 입출력을 더한다. 그리고 동작을 다음과 같이 변경한다.
조건입력이‘1’일 때는‘0’과‘1’을 반전하고 그렇지 않 을 때는 원래대로 출력한다. 만약‘1’→‘0’의 반전동작 을 실행했다면 조건출력에‘1’을 출력한다.
이 장치를‘조건부 반전장치’라 부르기로 한다. 이 조건부 반전장치를 입력 자릿수분만 잇따라 연결하면‘1을 더하는 장치’가 완성된다(그림 7).이 조건부 반전장치를 어떻게 만드는가에 대해 신경이 쓰 이겠지만 그것을 설명하기 전에 논리연산이라는 것에 관하여 해설해둔다.
2진법과 논리회로
1. 논리회로란
‘0’과‘1’의 2값을 입력하고 결과로써 또‘0’이나‘1’을 출력하는 장치를‘논리회로’라 부른다. ‘논리(logic)’라는 것 은 간단히 말해‘참’과‘거짓’이라는 2가지 상태를 베이스로 하여 생각하는 것으로, 예를 들면‘A는 참이고 B는 거짓’이 라는 논리식으로 표현된다.
논리식이 성립되었는가의 여부를 판정하는 것을‘논리연 산’(혹은 논리계산)이라 한다. ‘참’과‘거짓’각각을‘1’과 ‘0’에 할당하면 논리연산을 실행하는 장치를 디지털 회로로 실현할 수 있다. 그러한 회로를‘논리회로’라 한다.
2. 논리회로의 구성요소
간단히‘논리회로’라 말했지만 논리회로는 어떻게 만들어 지는 것일까. 지금부터 그것을 간단히 해설한다.
논리회로는 일반적으로‘n입력 m출력’으로 이루어지는데, 먼저 1입력 1출력의 논리회로부터 살펴보자. 표 1에 1입력 1출력인 회로의 상태 일람을 나타낸다.입력은 2패턴밖에 없으므로 그에 대한 출력을 전(全) 패턴 찾아내도 4패턴(Ⅰ~Ⅳ) 밖에 없다.
4개의 패턴 중 2가지에 관해서는 입력에 관계없이 출력이 결정되는 회로이므로 간단히 실현할 수 있다. 나머지 2가지 중 하나는 입력을 스루하기만 하면 되므로 이것도 간단하다. 결국, 회로로서 의미가 있다는 것은‘입력을 반전한다’라는 동작을 실행하는 것 뿐이라 할 수 있다. 이것을‘부정(NOT) 회로’라 한다. 또 입력을 반전하는 조작을‘부정(NOT)연산’ 이라 한다.
3. 2입력 1출력의 논리회로
다음에 2입력 1출력의 논리회로를 상정해 본다. 입력의 조 합은 4가지이므로 회로로서는 16가지를 상정할 수 있다. 이 러한 16가지 회로 속에는 입력에 의존하지 않고 출력이 결정 되는 경우도 있으므로 표 2에 5패턴 정도의 대표적인 것만 나타냈다.여기에 나타난 5가지 논리회로는‘인간이 의미부여하기 쉽 다’라는 이유를 들고 있다.
예를 들어 OR 회로는 일본어로‘논리합’이라는 명칭이 붙 어있지만 영어 명칭대로‘또는’이라는 동작을 실행한다고 생 각하는 쪽이 간단할 것이다. 「A가‘1’또는 B가‘1’일 때는 ‘1’을 출력한다(참이 된다)」는 것이다. AND 회로도 마찬가 지로‘그리고’라는 동작을 실행한다. 「A가‘1’그리고 B가 ‘1’일 때는‘1’을 출력한다」가 된다.
또 AND와 OR에 NOT을 조합한 NAND, NOR라는 논리 회로도 자주 사용된다. 이것은 나중에 해설하는‘드 모르강의 정리’에서 더 상세하게 기술한다.
XOR 회로는 의미부여가 어려울지도 모른다. 「어느 쪽인가 한쪽만‘1’일 때‘1’을 출력한다」라는 의미로 보아도 상관없 지만, 나는「B가‘1’이라면 A의 부정을 출력한다」혹은「A가 ‘1’이라면 B의 부정을 출력한다」라는 의미라 기억해 두면 사 용하기 편리할 것이라 생각된다. 실제로‘1을 더하는 장치’에 서 나온‘조건부 반전장치’의 출력 중 하나는 이 XOR 회로를 사용하여 구성되고 있다. 이에 관해서는 나중에 상세하게 설명 하도록 한다.
4. 3입력 이상의 논리회로
입력이 3 이상으로 되어도 AND나 OR에 관해서는 마찬가 지로 정의할 수 있다. 다(多)입력 AND 회로는「모든 입력이 ‘1’일 때에만‘1’을 출력하는 회로」이고 다입력 OR 회로는 어떤 것 하나라도 입력이‘1’이면‘1’을 출력하는 회로」이다.
5. 출력이 다수 있는 논리회로
지금까지 출력에 관해서는 하나만 생각했지만, 출력이 다 수 있는 회로는 그림 8과 같이‘입력을 분배하여 1출력의 회로를 복수 병렬로 나열한다’는 것만으로 만들 수 있다.그러므로 다출력 논리회로를 구성했을 경우, 우선은 출력 을 하나 선택하여 1출력의 회로라 생각하고 회로를 만들어 간 다. 그리고 모든 출력에 관하여 회로를 구성했다면 입력을 분 배하여 그곳 모두에 접속하면 된다.
논리회로를 표현하는 방법
1. 논리식과 논리기호
지금까지 단어로 기술해 온 논리식이지만 기호를 사용하는 식으로 기술하는 쪽이 일반적이다. 또 논리식을 판정하는 논 리회로는 논리기호라 불리는 기호를 사용하여 평면적으로 회 로도로 기술한다.
표 3에 전술한 NOT, OR, AND, XOR, NAND, NOR에 관하여 각각 식으로 기재하는 방법(논리식)과 회로도에서 사용하는 논리기호를 나타낸다.여기서는 일반적으로 자주 사용되고 있는 기재방식을 나타냈지만 이와는 다른 기법도 존 재하므로 주의하기 바란다.
또 NOT, AND, OR 등의 각 회로는 신호가 그곳을 통과하 면(빠져나가면) 값이 변화하기 때문에‘논리 게이트(gate)’ 라고도 불리며 각각 NOT 게이트, AND 게이트 등으로 부르 는 경우도 있다.
2. 논리식에서 사용할 수 있는 공리
기호를 사용한 논리식에서는 통상적인 식과 마찬가지로 일 반적으로 다음과 같은 룰이 적용된다.
.합(논리합)보다 곱(논리곱)인 쪽이 계산의 우선 순위가 높다
예를 들어 A+B·C라는 식은 A+(B·C)와 같은 값이 므로 논리곱을 먼저 계산한다.
.논리합, 논리곱 속에서 순서를 반전할 수 있다(교환율)
A·B=B·A
A+B=B+A
.논리합, 논리곱에서도 분배율(律)이 성립된다
A·(B+C)=A·B+A·C
반대로 일반적인 식과는 다른 부분으로 주의해야 할 경우 도 있다. 논리식에서는 차나 몫에 해당하는 연산이 존재하지 않으므로 다음과 같은 조작은 할 수 없다.
.항등식의 양변에서 동일한 변수를 뺀다
예를 들어,
A+B=B+C
라는 항등식의 양변에서 C를 빼 A=B라는 식으로 변환 할 수 없다. 이 경우, C가 참일 때는 A, B에 관계없이 항등식이 성립되므로 C를 생략할 수 없는 것이다.
.항등식의 양변을 동일한 변수로 나눈다
예를 들어,
A·C=B·C
라는 항등식을 C로 나누어 A=B라는 식으로 변환할 수 없다. 이 경우, C가 거짓일 때는 A, B에 상관없이 항등 식이 성립되므로 역시 C를 생략할 수 없는 것이다.
조합회로를 이해한다
1. 참 진리값표
다입력 다출력 논리회로의 사양을 기술하는 방법으로 진리 값표라 불리는 표가 자주 사용된다. 진리값표는 좌측에 입력 패턴을 열거하고 우측에 그 입력이 있었던 경우의 출력을 기 술한다. 표 2에 나타난 2입력 1출력 논리회로의 표도 진리값 표라 할 수 있다. 진리값표에서 회로의 사양을 기술하면 규정되어 있지 않은 입력 패턴이 없는가의 여부 등을 한 눈에 체크할 수 있어 매 우 편리하다.
예를 들어 앞에서 몇 차례나 나왔던‘조건부 판정장치’의 사양을 진리값표로 기술해보자.
2. 진리값표로 사양을 기술한다
그림 9(a)는‘조건부 반전장치’의 동작사양을 진리값표로 나타낸 것이다.출력이 복잡한 경우에는 출력 수만큼 열을 증 가시키고 나열하여 기술한다.
이와 같이 진리값표로 나타내면 회로 사양이 일목요연해진 다는 것을 알 수 있다.
여기서 이 표를 잘 살펴보면, 출력 Y는「A나 B 중 어느 쪽 한쪽만‘1’일 때‘1’로 된다」라는 사양이며 이것은 앞서 나왔 던 XOR과 같은 동작 패턴이라는 것을 알 수 있다. 또 출력 C 는「A와 B 양쪽이‘1’일 때에만‘1’로 된다」는 사양이며 AND와 같은 출력 패턴이다.
즉, 이‘조건부 반전장치’는 그림 9(b)와 같이 AND와 XOR을 조합한 논리회로로 실현할 수 있다.
3. 조합회로란
입력이 결정되면 출력도 단번에 결정되는 논리회로는, 입 력신호의 조합으로 출력이 결정되기 때문에‘조합회로’라 부 른다.
이러한 점은 입력신호의 상태가 결정되어도 출력이 결정되 지 않는 논리회로가 존재한다는 것을 의미하고 있다. 여기서 는 상세하게 설명하지 않지만, 회로 내부에 정보를 기억하는 소자가 존재하면 외부에서 부여된 신호만으로는 출력이 결정 되지 않는다. 그러한 회로는‘순서회로’등으로 부른다.
그러나 조합회로는 모든 논리회로의 기본이 되므로 우선은 조합회로의 특징을 잘 이해하기 바란다. 순서회로에 관해서 는 제4장에서 설명한다.
4. 조합회로의 설계
1입력의 NOT, 2입력의 OR, AND, XOR이라는 논리회로 는‘논리회로소자’라 불리며 모든 논리회로의 바탕이 된다. 진리값표에 의해 사양이 정해진 조합회로는 이러한 논리회로 소자를 사용하여 실현할 수 있다. 논리회로소자 그 자체를 어떻게 만들 것인가에 대해서는 제2장에서 기술하겠지만 여기 서는 먼저 복잡한 조합회로를 단순한 조합회로로 분해할 수 있다는 점을 이해하기 바란다.
전술한‘조건부 반전장치’의 예에서는 가끔 각 출력의 출력 패턴이 AND나 XOR과 같은 것이었으므로 간단했지만 언제 나 그렇게 되는 것은 아니다.
그러나 어떤 기계적인 순서를 사용할 경우 모든 조합회로 는 NOT, AND, OR의 3종류 회로조합으로 만들 수 있다는 것이 증명되고 있다.
5. 모든 논리회로는 NOT-AND-OR 형식으로 표현할 수 있다
NOT, AND, OR의 3종류 회로로 조합회로를 실현할 수 있다는 것은 전술한‘조건부 반전장치’도 XOR을 사용하지 않고 만들 수 있다는 것을 의미한다.
실제로 해보자. 먼저 출력 Y가‘1’로 되는 조건을 좀 더 상 세하게 그려낸다. 출력 Y가‘1’로 되는 것은 다음 중 어떤 논 리식이‘참’인 경우이다.
.A가‘0’이고, 그리고 B가‘1’이다
.A가‘1’이고, 그리고 B가‘0’이다
여기까지 잘 되었는가. 그렇다면 기재방법을 약간 고쳐 다 음과 같이 재기록해 본다.
.A를 부정한 것이‘1’이고, 그리고 B가‘1’이다
.A가‘1’이고, 그리고 B를 부정한 것이‘1’이다
‘부정’이라는 용어를 사용함으로써 논리식 속에 있던‘0’ 이라는 문자를 없앨 수 있었다. 어째서 이렇게 했는가 하면 두개의 입력이‘1’(참)이었을 때만‘1’(참)로 되는 회로소자, 즉 AND를 사용하고 싶었기 때문이다.
문장으로 기재한 다음 논리식에 대해 기호를 사용하여 다 시 기술하면 다음과 같이 된다.
이 2가지 중 어느 한쪽이 성립되었을 때, Y가‘1’로 되기 때문에 결과적으로 Y의 논리식은 다음과 같다.
C에 관해서도 마찬가지로 조작하면 다음과 같은 논리식이 도출된다.
C=(A·B)
이렇게 해서 만들어진‘조건부 반전회로’를 그림 10에 나타낸다.6. 곱합 표준형
전술한 순서를 정리하면 다음과 같다.
① Y가‘1’로 되는 입력 패턴을 모두 찾아낸다
② 부정(NOT)을 사용하여「‘0‘이다」라는 상태를 없애고 논리곱(AND)으로 연결한다
③ 논리합(OR)을 사용하여 모든 패턴을 하나로 묶는다
이러한 조작으로 만들어진, 논리곱의 항이 논리합으로 정 리된 형태의 논리식을‘곱합 표준형’이나‘최소항 표현’,‘NOT-AND-OR 형식’등으로 부른다.
7. 곱합 표준형과 PLD
곱합 표준형을 사용함으로써 사양에서 기계적으로 회로를 만들 수 있다는 것은 매우 중요한 점이다. 그림 11에 PLA(Programmable Logic Array)라고 하는 구성을 나타낸다.PLA는 입력신호와 그 반전신호 가운데 어느 것을 어떤 AND 게이트에 접속할지 결정하는 것만으로 다양한 논리회 로를 실현하는 구성방법이다. PLD(Programmable Logic Device)라 불리며 기록 가능한 LSI에서 사용되고 있다. 디바 이스에 따라 한번 접속을 결정해 버리면 다시는 변경할 수 없 는 것부터, 몇 번이나 접속을 변경할 수 있는 것까지 다양한 종류가 있다.
그렇다고 해도, 다음절에서 기술하겠지만 곱합 표준형은 효율적인 회로구성 방법이라 할 수 없다. 때문에 제품으로 만 들어지는 PLD는 회로의 사용효율을 높이기 위해 다양한 연 구가 시행되고 있다.
논리회로의 변환
1. 곱합 표준형은 비효율적
곱합 표준형(NOT-AND-OR 형식)을 사용할 경우 어떠한 조합회로에서도 실현할 수 있다는 강점이 있지만, 효율이라 는 면에서 보면 상당히 나쁘다고 밖에 할 수 없다.
예를 들어, 전술한 예에서 XOR일 경우 1개면 되는 회로가 곱합 표준형에서는로 되어 있으며 NOT 게이트가 2개, AND 게이트가 2개, OR 게이트가 1개 필요하 도록 되어 있다.
회로를 효율화하는 방법은 다양하지만 이를 위해서는‘논 리식을 등가로 변환한다’는 것이 가능해야 한다. 논리회로의 등가변환에 대해 약간 설명해 둔다.
2. 보수율
논리연산에서는‘0’과‘1’이 서로 보합 관계에 있으므로 다음과 같은 재미있는 성질이 성립된다.
A가 무엇이든 그것을 부정한 것과 페어로 하면 논리합, 논 리곱, 배타적 논리합 등의 결과는 반드시 한가지로 된다. 이 성질을 사용하면 다음과 같은 논리식을 단순화할 수 있다.
3. 드 모르강의 정리
이름 정도는 들어본 사람이 많을 것이다. ‘드 모르강의 정 리’란 다음과 같은 식이 항상 성립된다는 정리이다.
이 정리가 의미하는 바를 직감적으로는 알 수 없을지도 모른 다. 이것을 이해하기 위해서는‘부논리’라는 사고방식을 알아 야 한다.
4. 부논리의 세계
지금까지 AND나 OR라는 논리식(논리회로)은‘1’을 참, 그리고‘0’을 거짓에 맞춰 생각해 왔다. 여기서 만약‘0’을 참, ‘1’을 거짓으로, 즉 지금까지와는 의미를 반대로 한다면 어떻게 될까.
이와 같이‘0’과‘1’의 의미를 반대로 한 논리식을‘부논 리’라 한다. 좀 까다롭지만 다시 한번 표 2를 보면서 부논리에 관해 생각해보자. ‘0’을 참으로 했을 경우, 「양자가 참(‘0’)이었을 때에만 참 (‘0’)이 되는」회로는 부논리의 세계에서 AND 회로라 할 수 있다. 이것은「어느 쪽이든 한쪽이라도‘1’이었다면‘1’이 되 는」회로와 같기 때문에 정논리 세계의 OR 회로와 같다. 또 「어느 쪽이든 한쪽만이라도 참(‘0’)이었다면 참(‘0’)이 되 는」회로는 부논리 세계의 OR 회로이지만 이것은 정논리의 AND 회로와 같다.
드 모르강의 정리는 바로 이러한 점을 표현하고 있다. 등호 의 좌측이 정논리의 세계이고 우측이 부논리의 세계라고 생 각하기 바란다.
예를 들어‘A가 참이다’라는 것은 좌변에서는 A가‘1’이 라는 뜻이고 우변에서는 A가‘0’이라는 뜻에 해당하기 때문 에 우변에서는 각 변수에 부정의 바가 붙는다. 그리고 AND 와 OR의 의미가 반전된다. 또 우변에서는 식 전체가‘0’인 것이‘참’을 의미하므로 좌변과 맞추기 위하여 식 전체에 부 정의 바가 붙는다.
5. 부논리의 메리트
논리식 속에서 의미를 상정하다 보면 부논리 쪽이 확실한 경우가 있다. 또 AND를 OR로 변환하거나 반대로 OR를 AND로 변환하고 싶은 경우가 있는데, 그럴 때 드 모르강의 정리를 적용하여 논리식을 변환하면 유리한 경우가 있다. 예를 들어‘A 그리고 B 그리고 C가 성립하지 않을 때 참’ 이 되는 논리식을 그대로 기재하면,
이지만 드 모르강의 정리로 변환하면,
로 된다. 어느 식이 이해하기 쉬운가는 A, B, C의 내용에 따 라 다르지만 반대의 논리로 생각하는 쪽이 알기 쉬운 경우가 있다.
6. 부논리와 NAND, NOR
지금까지 NAND 게이트와 NOR 게이트에 대해서는 별로 설명하지 않았지만, 부논리라는 것이 나왔으므로 기술한다. NAND 게이트는‘AND 연산한 후에 부정하는’게이트이 고 NOR 게이트는‘OR 연산한 후에 부정하는’게이트이다. 이것을 드 모르강의 정리의 우변에 적용하여 식을 약간 변형 하면 다음과 같이 된다.
이 식의 의미는 다음과 같이 해석할 수 있다. A와 B가 부논 리의 입력신호라고 하면, ‘부논리의 2가지 신호 A와 B에 NAND 조작을 실시하는 것은 A와 B를 정논리로 고쳐 OR 조작하는 것과 같다’라고 할 수 있으며, 또‘부논리의 2가지 신호 A와 B에 NOR 조작을 실시하는 것은 A와 B를 정논리 로 고쳐 AND 조작하는 것과 같다’고 할 수 있다.
이와 같이 NAND와 NOR는 신호 속에 부논리인 것과 정 논리인 것이 혼합되었을 경우에 편리하며 부논리 신호를 정 논리로 변환하면서 연산하고 싶을 때 사용된다.
7. NAND만으로 모든 조합회로를 실현할 수 있다
NAND 게이트는 우수한 성질을 갖고 있다. 전술한 곱합 표준형의 설명에서 NOT, AND, OR의 3종류 게이트를 사용 하여 모든 조합회로를 실현할 수 있다고 했지만, 사실 3종류 의 게이트를 사용하지 않아도 NAND 게이트만 있다면 모든 조합회로를 실현할 수 있다.
NOT, AND, OR 각각의 회로를 NAND 게이트만으로 실현하는 방법에 대해 표 4에 나타낸다.먼저 NOT 게이트가 NAND 게이트로 변환된다는 것을 나타낸다. 2입력 NAND 게이트의 2가지 입력을 묶어 하나로 해버리면 입력이‘1’일 때는‘0’이 출력되고 입력이‘0’일 때는‘1’이 출력되므로 NOT와 같은 회로로 된다.
다음에 AND 게이트인데, NAND 게이트로 NOT 게이트 를 만들어 NAND 게이트 뒤에 접속함으로써 AND 게이트로 된다는 것을 알 수 있다.
마지막으로 OR 게이트인데, NAND 게이트는‘부논리의 입력을 정논리로 되돌려 OR 조작하는 것이다’라는 것을 앞 서 설명했다. 따라서 정논리의 입력을 한번 반전하여 부논리 로 하고 그 신호를 NAND 게이트에 입력함으로써 정논리의 OR가 실현된다. 이해하기 어려운 사람은 4가지의 입력 패턴 을 모두 시도해 보고 확실히 같은 동작으로 된다는 것을 확인 하기 바란다.
8. NOT-AND-OR를 NAND 3단계로 실현한다
NOT-AND-OR 형식의 회로를 NAND 게이트만으로 실현 할 경우, 각 게이트를 상기의 방법과 같이 NAND로 치환하면 되지만, 사실 AND를 변환했을 때 뒤에 나오는 NAND(NOT) 와 OR를 변환했을 때 앞에 붙는 NAND(NOT)가 상쇄되므로 NAND 게이트 3단으로 NOT-AND-OR 형식의 회로와 같이 동작하는 회로를 구성할 수 있다. 그 예를 표 4의 아래쪽에 나 타낸다.
9. 게이트 어레이
전술한 NOT-AND-OR의 3종류 게이트를 내장한 PLD에 서는 결선을 재결합함으로써 다양한 논리회로를 실현할 수 있다는 것을 설명했다.
이번에 NAND 게이트 1종류뿐이라면 어떠한 조합회로라 도 실현할 수 있다는 것을 알았으므로, 그러한 경우 필연적으 로 연상되는 것이‘NAND 게이트의 조합을 재결합함으로써 다양한 논리회로를 실현하는 LSI’이다.
게이트 어레이(gate array)라 불리는 디바이스는 이러한 사고방식으로 만들어진 것이며, 간단히 말해 LSI를 단기간에 만들기 위한 디바이스이다.
처음부터 설계한 LSI를 풀 커스텀 LSI라 하지만 풀 커스텀 LSI를 설계한다는 것은 대단한 작업으로, 개발비나 기간도 상당히 많이 필요하다.
게이트 어레이는 LSI를 단기간에 개발하기 위한 디바이스 로, 사전에 NAND 게이트를 격자상으로 나열한 LSI를 준비 해 놓고 작성하고 싶은 회로의 사양에 따라 NAND 게이트끼 리만 배선 설계하여 LSI를 개발하는 방법이다.
회로소자를 1종류밖에 사용하지 않기 때문에‘AND 게이 트가 부족하지만 OR 게이트는 남는다’라는 리소스의 낭비가 발생하지 않는다는 메리트도 있다.
10. NOR도 가능하다
NAND와 NOR의 관계는 AND와 OR의 관계와 마찬가지 로 정논리로 생각하는가 부논리로 생각하는가에 따라 의미가 서로 반전된다. 때문에 양자에는 본질적인 차이가 없다는 점 을 이해해두기 바란다.
즉, NAND로 가능하다는 것은 NOR도 가능하다고 할 수 있으므로, 실은 NOR 게이트만으로도 조합회로를 실현할 수 있다. NAND일 때와 똑같은 방법으로 이루어지므로 스스로 시험해 보기 바란다.☆ 여기까지 급하게 설명했지만, 디지털 회로설계에 대해 약 간은 이해가 깊어졌을 것이라 믿는다.
디지털 회로설계는 기본적으로 논리소자의 조합이지만, 실 제로는 이번에 소개하지 못한 회로소자도 많이 존재한다. 특 히 순서회로를 구성하는 데 반드시 필요한 플립플롭 등은 중 요한 구성요소이다. 이러한 구성요소는 4장 이후에 나오지만 그 전에 논리연산이나 조합회로의 구성에 조금이라도 익숙해 지면 도움이 될 것이다.
역시 무슨 일이나‘익숙’해지면 뭔가 이루어진다. 자신의 실력으로 적극적으로 설계해 볼 것을 권장한다.
이 장을 끝내기 전에 한가지 주의해야 할 점을 기록해 둔 다. 이 장에서는 NOT, AND, OR라는 논리소자를 어떻게 만 들 것인가에 대해 완전히 생략했다. 그러나 실제로는 반도체, 즉 트랜지스터의 조합으로 회로가 만들어지므로‘어떠한 회 로가 효율적인 회로인가’를 생각하려면 각 논리소자가 어떻 게 해서 실현되는가를 이해해야 한다.
이 점에 관해서는 2장 이후에 해설하겠지만 처음에는 곱합 표준형을 사용하여 기계적으로 논리회로를 만들어도 상관없 을 것이다. 그러나 보다 효율적인 회로설계가 이루어지려면 서서히 그러한 점을 의식해야 할 것이다.[출처] 트랜지스터로배우는디지털회로Ⅰ|작성자 맥가이심
'Electron' 카테고리의 다른 글
트랜지스터로배우는디지털회로Ⅱ-6. 각종 로직 IC의 특징과 선택 기준 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅱ-5. 기초부터 배우는 순서 회로설계 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅰ-4. 플립플롭을 이해하자 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅰ-3. 조합 논리회로의 제작방법과 논리압축의 기초 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅰ-2. 트랜지스터로 제작하는 NAND 게이트 회로와 그 동작 (0) 2015.05.19