-
트랜지스터로배우는디지털회로Ⅱ-5. 기초부터 배우는 순서 회로설계Electron 2015. 5. 19. 15:03트랜지스터로배우는디지털회로Ⅱ
HDL(Hardware Description Language)을 사용하는 논리회로설계가 당연해진 지금도 실제로 동작하고 있는 하드웨어, 즉 전자회로의 동작이나 실력을 숙지해두는 것은 매우 중요한 일이다. 그 지식들은 인터페이스를 설계하거나 트러블이 발생했을 때 반드시 필요한 것이기 때문이다. 이와 관련, 본지 특집에서는 NAND 게이트를 직접 제작하여 스타트시키고 플립플롭의 실제 동작을 확인한다. 또한 순서회로설계에 있어서 중요한 동기식 방식도 해설하고 각종 로직 IC의 실력 및 특징도 알아본다.
本記事는 日本CQ出版社가 發行하는「トランジスタ技術」誌(2004年9月號)와의 著作權協定에 依據하여 提供받은 資料입니다.
카운터를 만들면서 동기식 회로설계의 기본을 익힌다
5. 기초부터 배우는 순서 회로설계
디지털 회로설계와 관계된 일에 종사하는 한, 피할 수 없는 회로설계의 대전제 개념에 ‘동기’, ‘비동기’라는 용어가 있 다. 동기, 비동기는 어느 정도 고속이며 우수한 프로세서, 비 디오 칩 설계뿐만 아니라 반대로 풍력계나 지진계, 또는 일상 생활에서 흔히 볼 수 있는 시계처럼 매우 저속인 디지털 회로 설계에서도 반드시 고려해야 할 키워드이다.
동기회로와 비동기회로의 개념
1. 동기회로란…클록의 변화에 맞춰 회로 전체가 동작하는 디지털 회로
동기/비동기란, 동작의 기본이 되는 어떤 맥동(脈動)에 따 라 움직이는 것인지, 그렇지 않으면 제멋대로 동작하는 것인 지의 차이다.
맥동이란, 디지털 회로 세계에서는‘클록(clock)’이라 불리 며 그 클록에 동기하여 회로 전체가 동작하면 그것은 동기회 로이다. 반대로 클록의 움직임과 관계없이 동작하면 그것은 비동기회로가 된다.
2. 디지털 시계의 예에서 동기/비동기를 상정한다
그림 1의 블록도와 같은 시계용 IC와 클록을 만들어 내는 오실레이터(발진기), 표시용 액정 패널과 일시, 시간을 전환 시키는 스위치가 함께 있는 디지털 시계의 예를 들어 동기/비 동기에 관하여 살펴본다. 오실레이터는 정확하게 1초마다 시간을 새기는 클록을 출 력한다. 시계용 IC는 내부에 연, 월, 일, 시, 분, 초라는 수를 세는 기구를 구비하고 있다. 표시장치는 연월일, 그리고 시분 초를 스위치 입력에 따라 전환할 수 있다. 이 시계에는 동기 회로와 비동기회로가 들어 있다.
(1) 초를 센다
먼저 시계용 IC는 1초마다 1회만 보내오는 클록에 동기하 여 초를 세는 회로를 구동한다. 1초 동안 1회씩 초의 데이터를 가산해 가는 것이다. 그 결과, 59회를 세고 다음 1회에서 제로로 되돌아가는지 (동기 리셋이라고 한다) 60회 세는 순간에 제로로 되돌아가 는지(비동기 리셋이라고 한다)로 초를 세는 회로가 완성된다.
(2) 분을 센다
분을 셀 때에도 마찬가지로 초의 결과가‘59초’로 된 다음 클록에서 분의 자리를 가산하는 방법(동기식), 초의 결과가 ‘60초’로 되는 순간을 검출하여 분의 자리를 가산하는 방법 (비동기식)의 2가지 방법이 있다.
또 분이라는 자리는 00~59까지의 60값밖에 존재하지 않 기 때문에 초 자리의 회로와 마찬가지로, ‘59분’뒤에는‘00 분’으로 되돌리는 리셋 처리에도 동기회로/비동기회로의 2가 지 방법이 있다.
이와 같이 시(時)라면 분의 결과를 60회 세어 가산하거나 제로로 되돌리고, 일(日)이라면 시의 결과를 24회 세어 가산 하거나 되돌리면 연월일 등도 마찬가지로 동작한다. 4년에 1회 있는 윤년에 의한 보정도 그 해가 윤년인가의 여 부에 따라 일의 결과를 1일 많게 추가하는 것이다.
3. 비동기식 시계에서는 있을 수 없는 일이 일어난다!?
그림 2는 동기식과 비동기식으로 초/분의 관리회로를 나타낸 것이다. 그림 2(a)가 동기식, 그림 2(b)가 비동기식 회로 이다. 두 회로 모두 인간의 눈으로 보면 외관 상의 결과는 똑같은 값을 출력한다.
수를 세는 타이밍이 1초 등의 최신 디지털 회로에 비해 터무니없이 느린 시계 정도의 회 로라면 나는 어느 쪽 회로라도 상관없다고 생 각한다. 그렇지만 약간 고속인 회로를 설계할 경우, 우리와 같은 프로 회로설계자 입장에서 보면‘오동작이 포함되는 비동기식 회로는 피 하고 싶다’라고 말하게 된다.
상세한 이유는 후술하겠지만 그림 3에 초회로를 동기식과 비동기식으로 구축했을 경우에 수를 세어‘00초’로 되돌리는 부분의 시간적 동작을 나타내고 있다. 그림 3(a)는‘59초’를 센 다음‘00초’로 되 돌릴 때의‘리셋 조건’의 신호가 클록 펄스폭 과 동일한 1초동안만 출력된다. 이에 대해 그 림 3(b)에서는‘00초’로 되돌릴 때의‘리셋 조건’이 매우 짧 은 펄스로밖에 나오지 않는다. 이 펄스의 움직임을 엄밀하게 보면,
① AND 게이트는 초 회로의 결과가 60이라는 것을 인식 한다
② 초 회로의 리셋 라인에 펄스를 출력한다
③ AND 게이트에서 초 회로의 결과가 60 이외(00으로 되 어 있기 때문에)라는 것을 인식한다
④ 초 회로에의 리셋 신호 출력이 억제된다
라는 동작 결과가 리셋 펄스폭의 길이로 된다.
이 동작을 그림 3(b)에서 자세히 살펴보면 비동기회로인 경우 순간적으로‘60초’라고 하는, 있을 수 없는 숫자를 세고 있는 것이다.
조금 더 심술궂게 생각해보자. 그림 2(b)의 회로가 그림 3(b)와 같이 동작하는 비동기회로이고 AND 게이트의 동작 에 있어서 입력에서 출력이 나올 때까지 가령 0.5초가 걸린다 고 하자. 즉, AND 게이트의 지연시간 tPD를 0.5s로 했을 경 우이다.
초의 결과는‘58초’, ‘59초’로 되며 여기서 0.5초 동안만 ‘60초’가 표시된다. 그리고‘00초’로 되돌아가지만‘00초’ 가 표시되는 기간은 오직 0.5초 동안뿐이다. 이 시계의 이용 자는 매분마다‘00초’를 0.5초밖에 느낄 수 없게 될 것이다. 이렇게 이상한 시계는 필요 없다.
이것은 분이나 연월일 표시도 마찬가지라고 할 수 있으므 로 AND 게이트의 동작시간에 따라서는 이 세상에 존재하지 않는(있을 수 없는) 상황이 나타난다.
이에 대해 동기식인 경우에는‘40초’, ‘41초’…‘58초’, ‘59초’, 그리고‘00초’(로 되돌아간다)라는 이상적인 동작을 실행한다.
4. 비동기신호는 동기회로에 동기시켜 도입
또 스위치의 입력에 따라‘연월일’과‘시분초’를 전환하는 부분은 가장 분명한 비동기회로이다. 이것은 스위치를 누르 거나 떼는 인간의 동작은 1초간마다 시를 새기는 오실레이터 (발진기)의 움직임과 상관관계가 없다. 이 부분은‘겉모습’을 고려한다면 동기식으로 화면을 전환해야 할 점이다.
클록의 사고에 속박되지 않는 비동기식 전환기능을 만드는 쪽이 간단하지만 이 경우는 스위치를 누른 순간이 정확히 ‘초’나‘일’이 전환하는 순간일 경우, 그 확률은 낮지만 스위 치를 누른 순간 전환할 때에는 보기 힘들게 표시된다. 이것은 비디오나 음성출력 전환에서 확실하게 예를 들 수 있는데, 가령 TV를 보고 있을 때 채널을 비동기로 전환하면 화면 아래 반쪽에는 과거의 영상이, 위의 반쪽에는 새로운 프 로의 영상이 표시되게 된다(그림 4). TV의 경우, 어중간하게 표시되는 상태가 좋은지 나쁜지는 개인의 주관에 따라 다를 것이다. 그러나 시스템 설계를 고려 했을 경우, ‘어중간한 상태를 표시한다’라는 것은 프로 사양 의 방송기기나 통신기기에서는 허용되지 않는다.
시계의 예로 돌아가서 스위치 입력이 비동기인 것은 어쩔 수 없으므로 이것을 어떻게든 해서 클록에 동기화시켜 다루 면 화면을 깨끗하게 전환할 수 있다. 이‘비동기신호를 동기 화한다’라는 것은 전술한‘풍력계’나‘지진계’와 같이 매우 저속의 빈도로 변화가 일어나는 사상을 촉진하는 경우의 필 수항목이며 동기회로를 구축하는 데 있어 중요한 점이다. 이 방법은 나중에 해설한다.
5. 안정적인 동작, 현실적인 결과를 얻을 수 있는 동기회로
동기식과 비동기식의 회로설계 개념을 정리하면 다음과 같다.
.동기식 회로 - 클록에서 동작하는 순간, 그 때까지의 상 태에 따라 다음에 해야 할 것을 결정하는 회로
.비동기식 회로 - 현재의 상태에 따라 즉시 상태를 변화시 키는 회로. 그 때까지의 상태는 전혀 관계없다
이것을 디지털 시계의 초 계산회로 예로 상정해 보면 다음 과 같다.
(1) 동기식 회로
‘초’의 값이‘59초’로 될 때까지는 순서대로 센다. ‘59초’ 로 됐다면‘다음에 00초로 돌아갈’준비를 해놓는다. 그리고 클록이 들어오면‘00초’로 되돌아간다. 이 사이의 준비기간 은 1초(클록 입력의 폭) 동안만 존재한다.
(2) 비동기식 회로
오로지‘초’의 값을 가산한다. ‘초’의 값이‘60초’로 된 순 간에‘00초’로 되돌아가는 리셋을 입력한다. 준비기간은 존 재하지 않고 리셋 펄스폭은‘60초’의 검출을 실행하는 게이 트 회로의 지연시간에 의해 결정된다.
디지털 시계인 경우로 말한다면, 동기식 회로나 비동기식 회로 모두 회로규모는 거의 변하지 않는다. 그래서 안정적인 동작과 현실적인 결과를 얻을 수 있는 동기식 회로를 선택하 는 것이‘정답’이라 할 수 있다(일부 기술자나 기술에 다소 자신이 있는 설계자는 동기회로를 강요하겠지만, 실제로는 비동기회로로 설계한 쪽에서 1클록 줄거나 회로가 약간 작아 지는 경우가 있다. ‘플립플롭을 숭상하는 종교법인 동기회로 교’를 맹신하는 것보다는 비동기회로의 결점을 숙지하여 사 용하는 쪽이 더욱 스킬업 될 것이다).
이상으로 디지털 시계의 예를 들어 동기/비동기 회로의 사 고방식에 대해 해설했다. 다음에는 대표적인 동기 회로설계 방법이라 할 수 있는‘순서회로’에 관해 동일한 제재를 바탕 으로 해설한다.
순서회로란
1. 순서회로의 기초지식
(1) 디지털 회로와 샐러리맨
디지털 회로의 동작은 대략 순서대로 실행된다. 샐러리맨 이라면 아침에 일어나 밤에 잠잘 때까지의 순서는 월요일~ 금요일 거의 결정되어 있는 패턴을 반복하게 될 것이다. 전철을 탈 때에도 먼저 갈 곳을 결정하고 다음에 티켓을 구입하여 개찰구에 들어가 홈으로 올라가는… 이 때‘티켓을 잘못 구입했을’경우에는 개찰구에서 멈추게 되고 다음에 (당황해하면서) 티켓을 확인하고 역무원에게 상담하여 환불 받은 다음 다시 티켓을 구입하는… 등의‘순서’가 존재한다 (그림 5). 2. 순서회로는 순서대로 사물이 동작하는 회로
하드웨어 설계에서는 이 순서라는 것을‘플로(flow)’나‘시 퀀스(sequence)’라 부른다. 엄밀하게 본다면 다른 의미이지 만 회의 등에서는 같은 의미로 사용된다.
처음에 소개한 디지털 시계를 예로 들면, 시계는 1초마다의 시간변화에 있어서‘순서회로’가 가장 두드러진다. 회로 내부 에서는 10Hz(0.1초)마다 움직이고 있을 지도 모르고, 경우에 따라서는 100MHz(10ns)로 움직이고 있을지도 모르지만 시 계의 결과는 1초마다 변화한다. 그리고 시계동작의 순서는,
초 ⇒ 분 ⇒ 시 ⇒ 일 ⇒ 월 ⇒ 년
으로 변화돼간다. 디지털 시계의 동작을 플로차트로 정리한 것 이 그림 6이다(이 시계의 플로차트는 회로화에 적합하지 않지 만 동작개념을 이해한다는 점에서 소개하고 있다). 1초를 동작의 기본단위로 하여 값이 변화한다.
이와 같이 순서대로 사물이 동작하는 회로를‘순서회로’ 또는‘시퀀서(sequencer)’라 한다.
3. 순서회로는 동기식으로 만든다
순서회로는 동기회로설계에 의해 성립된다. 이것은 이 순 서회로를 구성하는 데 있어서 필수적인 사항이며 시계인 경 우라면‘1초’, 프로세서인 경우라면‘클록’이라는 동작기준 이 필요하기 때문이다.
비동기설계에서도 순서회로가 성립되지 않는 것은 아니지만 클록에 따라 동작하는 것이 아니라 현재의 상황에 따라 단번에 전 부 동작해버리므로 어떤 의미에서는‘계획 없이 이뤄지는 회로’가 되어 순서회로에는 적합하지 않다.
순서회로를 이해하는 데 대해 어렵게 생각 할 필요 없이, 클록이 있음으로써‘이 때에는 이 일을 한다’, ‘이 시간에는 이 동작을 한다’라는, 인간의 동작과 마찬가지 로 사물을 생각하면 된다.
또한 밤중에 지하철역에서 갑자기‘만취된 사람이 시비를 걸어왔다!’와 같은 긴급사태(회로설계에서 말한다면‘인터럽 트’에 해당)가 발생해도 클록에 동기하여‘무시한다’, ‘피한 다’, ‘싸운다’, ‘설명한다’(인터럽트인 경우에는‘연기시킨 다’, ‘응답한다’, ‘기각한다’등이 된다)와 같이 동작하게 될 것이다.
긴급사태에 직면했을 경우, 사람에 따라 동작이 느린 사람 도 있고 임기응변으로 민첩하게 반응하는 사람도 있을 것이 다. 이것을 클록 동작으로 치환하면‘저속 클록’으로 동작하 는가‘ 고속 클록’으로 동작하는가의 차이가 된다.
결과적으로 클록 동기식 회로를 구축함으로써 질서정연하 게 사물을 수행해 갈 수 있다.
순서회로의 제작방식에는 다양한 방법이 있다지만[참고문 헌 (1) 등] 여기서는 디지털 시계를 예로 들어 순서회로에 의 한 디지털 시계 설계를 소개한다.
4. 순서회로의 기본, ‘카운터’의 기능과 종류
(1) 카운터란
어떤 사상이 발생했을 때 그 수를 세는‘카운터(counter)’ 라는 회로는 순서회로를 구성하는 데 기본이 되는 회로이다. 카운트(count)라는 명칭에서 상상할 수 있듯이 카운터의 일 은 수를 세는 것이다. 그리고 통상적으로는, 수를 세는 타이 밍이 클록에 동기하고 있으므로 동기식 회로설계의 부류가 된다.
카운터는 수를 세는 것이 주 작업이지만 1개씩 가산/감산 할 수 있는 고정값 가감산뿐만 아니라 어떤 사상에서는 3을 가하거나 또 4를 감하게 되어 각기 달라진다.
그리고 카운터의 값에 따라‘다음에 어떠한 처리를 실행해 야 할까?’라는 것을 결정하는 것이 바로‘순서회로(시퀀서)’ 의 역할이다.
수를 세는 카운터에는 다음과 같이 몇 가지 종류가 있다.
① 존슨 카운터
② 그레이 코드 카운터
③ 바이너리 카운터
이번에 소개하는 시계는 이 중‘바이너리 카운터’를 사용 한다.
(2) 바이너리 카운터
바이너리 카운터는 2진수(binary)로 수를 세는 카운터이다. 표준 TTL 라이브러리로서는 74161(비동기 리셋)과 74163 (동기 리셋)이 준비되어 있어 쉽게 구할 수 있다. 74161/163 은 외부 클록에 동기하여 내부의 카운터 값을 +1씩 가산하는 카운터이다.
참고로, 가산한다는 것을‘인크리먼트(increment)’라 하 지만 반대로 1을 감산하는 것을‘디크리먼트(decrement)’라 고도 하므로 +1/-1 카운터를 다른 이름으로‘원 인크리먼 터/디크리먼터 카운터’라 한다. 이 호칭은 IC 설계 현장에서 널리 사용되고 있으므로 기억해두면 좋을 것이다.
또한 74161/163은 외부에서 주어진 4비트 설정값(로드 값이라고 한다)을 도입할 수 있다. 이 도입은 클록에 동기하 여 실행되므로 74161/163을 정식 명칭으로 부를 때에는‘프 리세터블 원 인크리먼터 카운터’라 한다. 그림 7에 TTL 디바이스 SN74LS163A(텍사스 인스트루먼트)의 내부회로와 DIP판의 핀 배치를 나타낸다. IC 내부에는 4개의 플립플롭이 있고 (로드 신호)가 L레벨이라면 외부에서의 4비트 입력에 따라 값을 세트하고, 신호가 H레벨 상태에서 CLK로 클록 펄스가 들어가 면 1개씩 가산하는 것이다.
4개의 플립플롭 값이 모두 H레벨, 즉 수로써 15가 되면 RCO(Ripple Carry Out) 출력이 H레벨로 된다. 이것은‘4 비트 카운터가 풀이다’라는 것을 표시하며 이 신호를 다음 74161/163의 ENP나 ENT 입력에 넣어두면 다시 5비트 째 이후의 카운터로서 다음 단인 161/163을 구동할 수 있다. 즉, 카운터를 2개 나열하면 8비트, 3개 나열하면 12비트, 4 개 나열하면 16비트…와 같이 4비트 단위로 카운터를 늘릴 수 있다. 그러므로 범용적인 74161/163은 널리 사용되고 있다.
(3) 기타 카운터
이밖에 2진수로 16까지 세는 바이너리 카운터 외에 2진수 로 10까지 세는(이것을 2진화 10진법이라고 한다) 바이너리 카운터도 있다. 10진수로 세는 것을 특별히‘데시멀 카운터’ 라고도 한다.
10진수는, 사람에 따라서는 익숙한 방식이다. 예를 들어 디 지털 시계 등을 제작하려는 경우, 0h~Fh까지 세는 74161과 같은 16진수 카운터가 아니라 00초~59초라 표현할 수 있는 쪽이 편리하다. 그리고 1의 자리와 10의 자리에서 0~9, 0~5(10분 단위에서 최대 50분까지)와 같이 10진수로 나누 어 다룰 수 있는 카운터가 바람직하다.
이러한 경우에 적합하도록 TTL 라이브러리에는 74162라 는 디바이스가 준비되어 있다. 이 디바이스는 0~9까지 셀 수 있는 카운터이며 9를 초과하면 다음은 제로로 된다. 디지털 시계의 예 이외에도 콘서트장의 입장자 수를 세거나 자동차 의 주행거리를 세는 등 10진수로 세는 경우에 매우 편리한 ‘왕년에 유명했던 디바이스’이다. TTL 데이터북이 있다면 74 라이브러리의 161, 162, 163을 다시 확인해보기 바란다.
카운터를 만든다
1. 플립플롭으로 동기회로를 제작하는 능력을 기른다
여기서는 디지털 회로의 기초편으로 16진 카운터를 직접 설계해본다. 이 항목에서 배울 것은 카운터의 설계보다도 플 립플롭을 사용하여 어떻게 동기식 회로를 만들 것인가?… 하 는 것이다. 그리고 카운터의 움직임을 나타내는 진리표에서 회로를 만드는 실천기술에 대해 배운다.
그림 8은 이번에 설계한‘동기식 리셋/프리세터블 4비트 바이너리 카운터’이다. D0~D3가 4비트의 데이터, 가 설정값의 로드 신호, 은 카운트 이네이블 신호이다. Q0~Q3는 4비트의 출력값을, 출력은 카운터가 풀로 되어 있다는 것을 나타낸다.
2. 설계하는 카운터의 동작
표 1에 동작의 진리값표를 나타낸다.
진리값표에서 판독된 카운터의 동작을 다음에 설명한다.
① 신호가 L레벨일 때에는 D0~D3에 설정된 입력 데이터를 플립플롭에 패치한다. 패치한 결과는 플립플롭의 Q0~Q3에 출력된다.
② 신호가 H레벨일 때에는 데이터 페치를 실행하 지 않는다.
③ 신호가 H레벨이고 신호가 H레벨일 경우, 4비트 플립플롭의 출력은 변화가 없다. 또 클록의 상승 에지를 검출했다 하더라도 값의 변화는 없다.
④ 신호가 H레벨이고 신호가 L레벨일 때에는 4비트 플립플롭이 클록의 상승 에지에 동기하여 +1씩 카운트업한다.
⑤ 카운터의 출력 Q0~Q3가 모두 H레벨, 즉 카운트 값이 15로 되면 신호가 L레벨로 된다. 그리고 다음 클록의 상승 에지에서 Q0~Q3는 모두 L레벨(‘0’)로 리턴하고 신호도 H레벨로 된다.
상기와 같이 진리값표에서 설계해야 할 카운터의 기능을 발췌할 수 있었다.
그림 9는 카운트 동작을 타임차트로 나타낸 것이다.
다음에는 카운터 설계이다.
3. +1 가산기의 동작
표 2는 카운트 중에서 원 인크리먼트 바이너리 카운터의 수치 상태를 나타낸 것이다. 이 표에서는‘직전 값’과‘다음값’의 2패턴이 16진수와 2진수로 표현되고 있다. 바이너리 카운터의 설계는 이 표에 있는 바와 같이‘어떠한 카운트 방 법으로 값을 만들어 낼 것인가’라는 테이블을 제작하는 것부 터 시작한다.
이번 바이너리 카운터는 1클록 전의 상태에서 1이 가산된 값을 플립플롭에서 점점 도입해 간다. 이 회로동작을 시퀀스 도로 하여 간략화한 것이 그림 10이다. 즉, 기본은 1개의 1을 가산하는 회로와 그 결과를 유지하는 회로이다.
그러면 1을 가산하는 회로는 어떻게 되어 있는가에 대해 진리표와 플로차트를 살펴보며 조사한다. Q0, Q1, Q2 및 Q3 의 각 비트를 살펴보면 다음과 같은 점을 알 수 있다.
(1) Q0에 관하여
Q0는‘1’다음에‘0’이, ‘0’다음에는‘1’이 나타난다. 즉, Q0 출력결과의 반전값을 반복하고 있다[이 동작을 토글(toggle) 이라 한다].
(2) Q1에 관하여
Q1에 관해서는 Q0와 Q1의 값이‘01’또는‘10’일 때 Q1= ‘1’, Q0와 Q1의 값이‘00’과‘11’일 때 Q1=‘0’으로 된다. 다른 방식으로 말하면, Q0가‘1’인 상태이면서 Q1이‘0’또 는‘1’일 때 Q1의 반대 값을 다음으로 유지하고 있다. 이 상 태는 배타적 논리합(XOR)을 사용하여 검출할 수 있다.
(3) Q2에 관하여
Q2는 Q1~Q0가‘11’의 상태이면서 Q2가‘0’또는‘1’일 때 Q2의 반대 값을 다음으로 유지하고 있다.
(4) Q3에 관하여
Q3도 Q2, Q1과 마찬가지로 Q2~Q0가‘111’의 상태이면서 Q3가‘0’일 때 다음은‘1’로, Q3가‘1’일 때 다음은‘0’으로 하고, 그 때까지의 Q3의 반대 값을 다음으로 유지하고 있다. 이와 같이 Q1 이후는 하위 비트의 상태가 앞당겨진 상태 로 되었을 때, 자신의 비트가 반전하게 된다(Q0는 오직 토글 할 뿐이다).
그러나 상기와 같은 움직임을 발견할 수 없는 사람은 진리 값표와 문장을 몇 번이고 반복해서 보기 바란다. 사실 진리값 표로 논리회로를 만드는 경우의 요점은 표를 보고 감각적으 로 변화점을 발견하는 것이다. 이 점만은 요령과 감각과 경험 으로밖에는 기를 수 없다.
반대로 상당한 시간을 들여도 이 감이 길러지지 않으면 카 운터 설계뿐만 아니라 수백만 게이트 규모의 설계에서 상당 히 애를 먹게 될 것이다. 진리값표라는 사양서의 핵심을 이해 할 수 없기 때문이다.
4. 가산기 설계
상기와 같이 각 비트마다 가산된 값의 움직임을 이해할 수 있었으므로 다음에는 드디어 가산기를 설계한다. 여기서 앞 장까지 소개된‘AND/OR/NOT/XOR’의 프리미티브 게이트 소자가 등장한다. 게이트 소자를 사용하여 실제로 4비트의 가산기를 만들어 본다.
(1) Q0에 관하여
새로운 Q0 값은 원시 Q0의 반전이기 때문에 Q0의 출력에 NOT(낫, 인버터 게이트)을 넣음으로써 표현할 수 있다.
(2) Q1에 관하여
새로운 Q1 값은 원시의 Q0와 Q1의 배타적 논리합이다. 따 라서 Q0와 Q1의 XOR(익스클루시브 오어)에 의해 표현할 수 있다.
(3) Q2에 관하여
새로운 Q2 값은 원시의 Q0와 Q1이‘11’의 상태이며 Q2와 의 배타적 논리합이다. 따라서 Q0/Q1의 AND(앤드)와 Q2의 XOR에 의해 표현할 수 있다.
(4) Q3에 관하여
새로운 Q3 값은 Q2와 마찬가지로 원시의 Q0~Q2가‘111’ 의 상태이며 Q3와의 배타적 논리합이다. 따라서 Q0~Q2의 AND와 Q2의 XOR에 의해 표현할 수 있다.
이로써 완성된 가산기를 그림 11에 나타낸다. Q3의 예를 들어본다면 I9의 AND 게이트에서 Q0, Q1, Q2의 출력을 AND하고 I7의 XOR 게이트에서 배타적 논리합을 취 하고 있다.
다음에 이 회로를 그림 8과 같이 플립플롭에 설치한다면 4 비트의 바이너리 카운터가 완성된다.
5. , 기능을 탑재한다
다음에 단자와 단자의 기능실장을 실행해보자. 이것도 진리표를 살펴보면 가 L레벨일 경우, 플립플롭의 출력 Q [3:0]에는 입력 D [3:0]가 직접 주어진다. 이 L레벨일 때는 가산기가 움직이지만 H레벨일때에는 Q의 출력이 그대로 유지된다.
이러한 점은 와 의 상태에 따라,
① 외부 D [3:0] 입력을 플립플롭으로 보낸다
② 가산기의 결과를 플립플롭으로 보낸다
③ 또는 유지되어 있는 Q 값을 그대로 다시 플립플롭으로 보낸다
라는 신호 패스를 만드는 것이다. 신호 패스를 만드는 경우에 는‘셀렉터(별명 멀티플렉서)’를 사용한다.
셀렉터(selector)란 그 명칭대로 셀렉트 입력에 따라 복수 의 신호에서 필요한 것만을 선택하여 출력하는 기구이며 2입 력 1출력 셀렉터, 4입력 1출력 셀렉터, 8입력 1출력이 일반적 이다(그림 12). 각 셀렉터에는 그림에 있는 것처럼, 셀렉트 신호 개수의 제곱의 입력이 있으므로, 예를 들어 신호와 신호인 경우에는 4입력 1셀렉터를 사용하게 된다. 단, 4입력 1출력 셀렉터는 2입력 1출력 셀렉터를 3개 사용 함으로써 대체할 수 있고, 8입력 1출력 셀렉터는 4입력 1출 력 셀렉터 2개와 2입력 1출력 셀렉터 1개 또는 2입력 1출력 셀렉터를 7개 사용함으로써 동일 회로를 구축할 수 있다[그 림 12(b), (c)]. 또 2입력 1출력 셀렉터를 2개 사용했을 경우 에는 결과적으로 3-1셀렉터로 되지만 셀렉트 입력에 우선순 위를 부여할 수 있다[그림 12(d)].
이번 바이너리 카운터에서는 카운터 진리값표에서 이 3-1 셀렉터를 선택하기로 했다. 그림 8에 나타난 바와 같이 최종 적으로 완성된 회로를 잘 살펴보면 알 수 있겠지만, 진리표에 서 를 L레벨로 하여 D [3:0]를 프리로드할 경우 은 돈 케어(고려하지 않아도 된다)라고 되어 있다.
이것은 보다 가 우선된다는 것이며 이를 위해 2단 캐스케이드의 2-1셀렉터에서는 가 L레벨이면 무조건 전단의 2-1셀렉터의 출력이 들어갈 수 있도록 했다.
6. 리셋과 캐리 출력기능을 탑재한다
마지막으로 어떤 값이 되었다면 카운터의 값을 원시의 제로로 복귀시키는 기구를 탑재한다. 여기서는 출력 Q [3:0] 의 값을 평가하여 카운터를 리셋하거나 외부에‘평가결과가 일치했다’라 출력할 필요가 있다.
디지털 회로인 경우에는 모든 비트가 H레벨인 상태에서 다 시 1이 가산되었을 때, ‘캐리 플래그가 뜬다’라고 한다. 앞에 서도 소개한 바와 같이, 74TTL 패밀리의 161/162, 그리고 163에서는 이 캐리 플래그를 능숙하게 사용함으로써 다(多) 비트의 카운터를 구축할 수 있는 것이다.
이번에 설계한 바이너리 카운터에서는 출력 Q [3:0]의 평가에 4입력 AND/NAND 게이트를 사용하고 있다(I10, I11). 즉, Q0~Q3가 모두 H레벨이고 10진수에서 15일 때 이 게이트가 유효하게 되며 레지스터의 리셋(신호명 RESET)과 외부에의 캐리 출력(신호명 )이 발생되는 것이다. 또 신호 핀에 의한 캐리 출력이 부논리 출력(L레벨 에서 유효)인 이유는 동일 카운터를 다음 단에 연결하여 다비 트 카운터로 사용했을 경우, 다음 단의 신호에 직접 입력할 수 있도록 배려했기 때문이다.
이것은 74161 등의 캐스케이더블 카운터(다단 카운터)에서 도 마찬가지이며 74161인 경우에는 ENP 신호에 전단의 캐리 신호를 입력한다.
리셋 신호에 관해서는 Q [3 : 0]가 모두 H레벨일 때 정논 리로 출력된다. 리셋 조건으로 되면 회로도 가운데 플립플롭 직전의 셀렉터를 구동하여 GND 레벨(L레벨)을 플립플롭의 D 입력에 공급하고 플립플롭은 다음 클록에서 이 값을 받아 들이므로 플립플롭의 출력 Q는 모두‘0’으로 되고 AND 조 건회로는 무효로 된다.
발행되는 기간은 클록의 상승 에지에서 다음 클록의 상승 에지이고 Q [3:0]가 변화할 때까지이기 때문에 1클록의 기 간뿐이다. 그렇다고는 해도 레지스터를 리셋하는 데 있어서 비동기회로와 달리 1클록 기간이라는 엄밀한 타이밍이 확정되어 있으므로(플립플롭의 권장동작 클록 범위 내라면) 잘못 동작되는 경우는 없다.
7. 임의의 카운터로 발전시킨다
사실을 말하자면, 이 4비트 바이너리 카운터인 경우, 리셋 조건이 15일 때에는 AND 게이트와 2-1 셀렉터가 필요 없 다. 이것은 결국 가산기의 동작에 의해‘1111’다음은 ‘0000’으로 복귀되기 때문이다.
단, 발행되는 리셋의 조건은 이 AND 게이트에 연결되는 레지스터의 출력 Q 값으로 되는데, 가령 여기서‘1001’(10 진수에서 9)을 넣으면 어떻게 될까?
단도직입적으로 말해 0~9까지 카운트업했다면 다시 0으 로 복귀하는‘10진 카운터’가 완성된다. 또 이용자가 리셋 조 건을 자유롭게 설정할 수 있도록 출력 Q와 AND 게이트의 접 속을 조작했을 경우, 특정시간을 계속해서 반복 카운트하는 ‘타이머’기능으로 된다. 타이머 기능은 로봇, 항공우주산업, 자동차, 자동 발권장치, PC 등 모든 조립 시스템에서는 필수 적인 기능이다. 즉, 복잡하고 이상한 조립 시스템이라도 원리 는 이와 같은 카운터라는 것이다.
8. 마지막으로…플립플롭은 단순한 정보 유지회로
내가 처음으로 IC를 사용, 구체적으로 설계한 것은 중학교 1학년(1985년) 즈음이었다고 생각된다. 첫 전자회로 제작은 잡지를 보고 흉내내던 중에 터득한 것으로, 전자 사이클로를 메탈 게이트 CMOS의 14xxx 패밀리에 있는 게이트 소자나 플립플롭을 부품 가게에서 구입하여 시행착오로 움직였던 기 억이 있다.
당시에는 잡지에 게재된 회로 예에 따라 충실하게 작품을 만든다는 꿈을 꾸었으며 회로의 동작을 생각한다는 것은 둘 째 문제였지만, 사이클로 회로를 디스크리트 부품으로 조립 해 가면서‘사이클로 카운터의 플립플롭은 주역이 아니다!’ 라는 점을 깨달았었다.
즉, 이번 카운터의 예에서 해설한다면 카운터의 주역은 플 립플롭이 아니라 I5, I6, I7이나 그 다음에 연결되는 멀티플렉 서 등의 AND-OR로 구성된 회로이다. 이 회로에 의해 +1 가산기나 , 등의 입력 상황에 따라 신호경로가 확립되며 마치 전철의 포인트와 같이 신호가 플립플롭으 로 흘러간다.
플립플롭은 그 상태를 클록이라는 트리거 신호로 유지하고 있을 뿐이며 이 유지된 결과를 이번에는 또 가산기가 재이용 하고 있는 것이다. 앞서 소개한 표 2를 다시 살펴보기 바란 다. 1클록 앞에 가산기가 준비해둔 수치를 단지 클록의 상승 으로 유지하고 있을 뿐이라는 것을 알 수 있다.
결국, 어떤 복잡한 동작을 실행하는 카운터에 대해 상정했 다고 해도 중요한 것은 플립플롭 전단의 연산회로이다. ‘플립 플롭은 단순한 정보유지기구’라는 맹점을 알아차린 것이다. 그리고 카운터의 진정한 주역은 플립플롭이 아니라 게이트 회로이다! …라는 점을 깨달았을 때, 동기식 회로에 있어서 하나의 진리를 깨달은 기분이었다. 이 사고방식은 순서회로 를 조립하거나 동작을 이해할 경우 매우 중요하다.☆ 앞에서 설명한 AND나 OR 게이트 그리고 플립플롭 등의 기초적인 게이트 로직 조합에 의해, 이번에는 디지털 시계를 주제로 하여 가장 기본적인 동기식 카운터를 설계해 보았다. 각 게이트 로직에 의해 플립플롭의 출력에서 새로운 시간 을 산출하여‘00초’에서‘59초’까지 세고 또 원시로 복귀하 는… 등의 움직임을 살펴보는 것만으로도 PC나 마이크로컨 트롤러에서 실행되고 있는 회로의 움직임이 전기적으로 보일 것이라 생각한다.
소프트웨어로 실현할 수 있는 것은 개발기간, 회로규모의 대 소나 코스트와의 균형이 있지만, 하드웨어로도 실현할 수 있다. 예를 들어 10GHz로 움직이는 최신 마이크로프로세서가 등장 했다고 해도 하나 하나의 기능 블록을 자세히 살펴보면 AND/OR/INV/NOT과 플립플롭이라는 프리미티브(기초 라이 브러리)의 집합체가 순서적으로 움직이고 있다고 할 수 있다. 또 현재의 설계 방법은 회로도가 아니라 Verilog-HDL이나 VHDL 언어에 의한 언어설계가 주체이다. 그러나 이 설계마 저도 회로도 레벨에서 움직임을 이해해두면‘비동기회로보다 동기회로 쪽이 안정적으로 움직인다’는 것을 알 수 있고, 또 소스 코드에서 움직임을 추측할 수도 있다. 이 기고가 디지털 회로입문에 도움이 되기를 바란다.출처: ICBANK
'Electron' 카테고리의 다른 글
트랜지스터로배우는디지털회로Ⅱ-7. 각종 로직 IC의 실력을 평가한다 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅱ-6. 각종 로직 IC의 특징과 선택 기준 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅰ-4. 플립플롭을 이해하자 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅰ-3. 조합 논리회로의 제작방법과 논리압축의 기초 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅰ-2. 트랜지스터로 제작하는 NAND 게이트 회로와 그 동작 (0) 2015.05.19