-
트랜지스터로배우는디지털회로Ⅰ-3. 조합 논리회로의 제작방법과 논리압축의 기초Electron 2015. 5. 19. 14:57
트랜지스터로배우는디지털회로Ⅰ
HDL(Hardware Description Language)을 사용하는 논리회로설계가 당연해진 지금도 실제로 동작하고 있는 하드웨어, 즉 전자회로의 동작이나 실력을 숙지해두는 것은 매우 중요한 일이다. 그 지식들은 인터페이스를 설계하거나 트러블이 발생했을 때 반드시 필요한 것이기 때문이다. 이와 관련, 본지 특집에서는 NAND 게이트를 직접 제작하여 스타트시키고 플립플롭의 실제 동작을 확인한다. 또한 순서회로설계에 있어서 중요한 동기식 방식도 해설하고 각종 로직 IC의 실력 및 특징도 알아본다.
1장 디지털 회로의 기초
2장 트랜지스터로 제작하는NAND 게이트회로와 그 동작
3장 조합논리회로의 제작 방법과 논리압축의 기초
4장 플립플롭을 이해하자
本記事는 日本CQ出版社가 發行하는「トランジスタ技術」誌(2004年9月號)와의 著作權協定에 依據하여 提供받은 資料입니다.
8개의NAND 게이트로7세그먼트LED 인코더를 만든다.
3. 조합 논리회로의 제작방법과 논리압축의 기초
이 장에서는 조합 논리회로의 이론압축에 관하여 설명한 다. 그리고 실제로 7세그먼트 LED의 인코더를 설계한다. 또 한 제2장에서 제작한 TTL-NAND 모듈을 사용하여 실제로 동작시켜본다.
논리압축이란 무엇인가
1. 조합 논리회로
표 1에 어떤 논리의 진리값표를 나타낸다..입력 C가 H 레벨일 때
입력 A, B 중 어느 것인가 H 레벨이라면 출력 Y가 H 레벨로 된다
.입력 C가 L 레벨일 때
입력 B가 H 레벨이고 입력 A가 L 레벨인 경우에만 출력 Y가 H 레벨로 된다
는 논리이다. 이 논리를 이후의 예제로 한다.
이 논리의 회로는 정논리이며 그림 1과 같이 된다.출력 Y가 H 레벨로 되는 경우는,
A=“L”, B=“H”, C=“L”
A=“H”, B=“L”, C=“H”
A=“L”, B=“H”, C=“H”
A=“H”, B=“H”, C=“H”
의 4가지뿐이다. 따라서 각각을 AND 회로로 구성하고 그 4 가지 출력을 OR하면 된다. 논리식으로 쓰면 다음과 같다.
그림 1에서 출력 Y와 입력 A, B, C는 논리회로로 관계 부 여되고 있을 뿐이다. 따라서 입력 A, B, C가 변화하면 순간적 으로 출력 Y에 반영된다. 이러한 회로가 조합 논리회로이다.
2. 카르노도와 베이치도
그림 1의 회로는 확실히 표 1의 논리를 실현하고 있다. 그 러나 논리압축은 실행되지 않고 있다. 사실 논리압축을 실행 함으로써 표 1과 같은 논리를 실현하는 회로가 그림 1보다 한 층 적은 논리소자로 실현되는 것이다. 이 논리압축을 위해 사 용되는 것이 카르노(Karnaugh)도와 베이치(Veitch)도이다. 그림 2에 3입력의 카르노도와 베이치도를 나타낸다.본질적으로 이들은 같은 것이다. 카르노도에서는 가로방향으로,
AB=10, 11, 01, 00
과 같이 나열되어 있다. 이와 같이 A, B가 하나만 변화하도록 나열되어야 한다.
베이치도가 실제로 어떻게 논리압축에 이용되는가를 다음 에 설명한다. 앞으로는 베이치도를 사용하겠지만 카르노도 쪽이 알기 쉬운 분은 카르노도로 대체하여 적용하기 바란다. 그림 3에 2항이 1항으로 압축되는 예를 나타냈다.최초의 것을 실제로 확인해보자.
‘1’로 되어 있는 부분은,
A=1, B=1, C=1과,
A=0, B=1, C=1
이다. 출력 Y는 이들의 OR를 사용하면 되므로,
이다. 불 대수를 사용하면 분배법칙에서,
가 된다. 여기에서는을 이용하고 있다. 베이치도에서는 A, B가 하나만 변화하도록 나열되고 있으 므로 그림과 같이 인접된 부분은 하나로 압축할 수 있다. 구 체적으로는, 인접되어 있는 부분은 변수 A인 곳이 되므로 A 를 생략할 수 있다. 참고로 양단도 연결되어 있으므로 그림 3(c)의 예와 같이 양단의 항도 하나로 압축할 수 있다. 그림 4에는 4항이 1항으로 압축되는 예를 나타냈다.
3. 예제의 논리를 압축한다
논리회로에서 H/L 레벨은 절대적인 것이지만 이 H 레벨 을‘1’로 하는지, L 레벨을‘1’로 하는지에 따라 논리가 달라 진다. H 레벨을‘1’로 하는 방법을 정논리, L 레벨을‘1’로 하는 방법을 부논리라 한다. 우 선은 정논리로 예제를 논리압축 해본다. 예제의 출력 Y가 H 레벨로 되는 것은 전술 한 4가지이다. 이것을 정논리로 베이치도에 나타낸 것이 그림 5(a)이다.이 그림에서 직접 점선에 둘러싸인 항이 압축된다는 것을 알 수 있다. 압축한 논리의 회로를 그림 5(b)에 나타낸다. 그림 1에 비해 상당히 간단해졌다. 압축 시‘0’으로 되는 항을 모아 그 전체를 반전해도 가능하다. 그림 6에 이 방법에 의한 압축을 나타낸다.
예제에서 Y가 L 레벨로 되는 경우는 다음과 같은 4가지이다.
A=“L”, B=“L”, C=“L”
A=“H”, B=“L”, C=“L”
A=“H”, B=“H”, C=“L”
A=“L”, B=“L”, C=“H”
베이치도에서는‘0’을 기록한 부분에 주목하고 인접한‘0’ 의 부분에 관해 압축을 실행한다.
그림 5(b)와 그림 6(b)의 회로는 똑같은 논리동작을 실행하 는 회로이다. 이와 같이 조합 논리회로는 각 변수의 논리곱의 논리합 또는 각 변수의 논리합의 논리곱으로 나타낼 수 있다.
4. 부논리로 압축한다
출력 Y가 L 레벨일 때를‘1’로 하는 부논리로 예제의 논리 압축을 실행해본다. 이 경우의 베이치도를 그림 7에 나타낸다.각 부분의‘1’과‘0’이 앞의 경우와 반대로 되어 있다는 것을 알 수 있다.
이 회로를 그림 7(b)에 나타낸다. 부논리이므로 출력에 부 논리를 나타내는 .이 필요하다는 점에 주의하기 바란다. 이 처럼 최종출력에 .이 붙어 있으면 L 레벨에서 목적으로 하 는 동작을 실행한다는 뜻이다(이하, ‘L 액티브’라 한다). 다음에 입력 A, B, C에 관해서도 부논리로서 예제의 논리 압축을 실행해본다. 예를 들어,
A=“L”, B=“L”, C=“L”
일 때,
Y=“L”
이지만 이 경우에는,
A=“1”, B=“1”, C=“1”
에서,
Y=“1”
로 취급하게 된다. 이렇게 하면 예제의 베이치도는 그림 8(a)와 같이 된다.이번에는 입력도 부논리이므로 회로로 할 경우에는 입력도 반전해야 한다. 이렇게 해서 그림 8(b)의 회로가 얻어진다. 이것은 그림 7(b)와 같다.
그리고 당연한 말이겠지만, 여기서 얻어진 그림 7(b)의 회 로는 H/L 레벨의 절대값에서 그림 5(b)나 그림 6(b)의 회로 와 똑같이 동작한다.
5. 드 모르강 변환하여 출력을 부논리로 한다
드 모르강의 법칙은,
였다. 이것을 회로로 할 경우에는 AND 회로와 OR 회로를 변환하고 또 출력을 반전한다. 이것을 드 모르강 변환이라 부 르기로 한다.
그림 9에 그림 6(b) 회로의 드 모르강 변환을 나타낸다.그림 6(b)의 회로를 드 모르강 변환하면 그림 7(b)의 회로로 된 다는 것을 알 수 있다. 마찬가지로 그림 5(b)의 회로를 드 모르강 변환한 것을 그림 10에 나타낸다.
그림 9나 그림 10에 나타난 바와 같이, .이 있는 입력은 .이 있는 출력이고 .이 없는 입력은 .이 없는 출력으로 구 동하도록 한다. 즉, 논리회로를 그릴 때에는 입출력의 논리를 일치시키도록 한다.
인코더를 설계해보자
1. 7세그먼트 LED 인코더 설계
복수의 입력이 있고 그 중 하나를 선택했을 때 결정된 코드 (code)를 출력하는 것이 인코더(encoder)이다. 반대로 어떤 코드를 입력했을 때 복수의 출력 중 하나를 선택하는 것이 디 코더(decoder)이다. 이번에는 1개의 스위치를 누르면 그에 대응하는 숫자가 점등하는 회로를 설계한다. 이것은 말하자 면 인코더이다.
그림 11(a)에 이번에 설계하는 7세그먼트 LED 인코더의 구성을 나타낸다.여기서는 2장에서 제작한 TTL NAND를 사용하여 실제로 제작해 본다. 사용할 수 있는 TTL NAND 는 8개이므로 규모가 큰 것은 제작할 수 없다. 때문에 스위치 는 SW1 , SW2, SW3의 3개로 하고 그것을 누르면 7세그먼트 LED에 숫자 1, 2, 3이 점등되도록 한다. 장치로서는 매우 빈 약하지만 그런 대로 여러 가지를 학습할 수 있다.
그림 11(b)에 진리값표를 나타낸다. 이 회로구성에서는, SW1~SW3를 누르면 그 출력은 L 레벨로 된다. 따라서 이 진 리값표의 S1~S3에 L이라고 되어 있는 것은 SW1~SW3를 눌 렀다는 것을 의미한다. ×는 H 레벨, L 레벨 중 어느 쪽이라 도 상관없다는 것을 의미한다. 즉, SW2를 누르면 SW1이 어 느 쪽 상태라도 출력은 2를 점등하게 된다. 이러한 인코더를 Priority Encoder라 한다. 예를 들어 출력이 2인 경우에는 SW2가 SW1보다 우선적이기 때문이다.
LED의 각 세그먼트 a~g는 회로의 출력이 L 레벨일 때 점 등시키는 구성이다. 앞장에서 TTL NAND의 VOL, VOH의 특 성을 측정했을 때를 떠올리기 바란다.
TTL NAND의 출력은 L 레벨일 때 보다 많은 전류를 유입 시킬 수 있었다. 때문에 출력은 L 레벨에서 LED를 점등시키 도록 했다.
따라서 그림 11(b)의 진리값표에서 a~g가 L 레벨일 때에 는 그 세그먼트가 점등한다는 것을 의미한다.
2. 각 세그먼트의 구동 논리
전술한 바와 같이, 각 세그먼트는 출력이 L 레벨일 때 점등 한다. 확실히 액티브이다. 때문에 부논리로 설계해야 할지도 모르지만 이번에는 정논리로 설계하고 드 모르강 변환하여 부논리로 변경하도록 한다. 어느 쪽으로 해도 L 액티브이므 로 각 세그먼트를 구동하는 최종출력에는 .이 붙어야 한다.
(1) 세그먼트 a
그림 12는 베이치도와 회로이다.출력이‘1’로 되는 경우는 S1~S3가 모두‘1’일 때뿐이므로 압축은 할 수 없다. 회로 는 NAND만으로 구성한다. 모두 2입력 NAND에서도 가능 하지만 3입력 NAND를 하나 제작했으므로 그것을 사용한다.
(2) 세그먼트 b
그림 13에 베이치도와 회로를 나타낸다.입력이,
S3=1, S2=0, S1=×
일 때 b=1로 되지만 이 때에는 입력,
S3=1, S2=0, S1=0 및 S3=1, S2=0, S1=1일 때 b=1로서 베이치도를 작성한다.
회로는 모두 2입력 NAND로 구성한다. 물론 최종출력에 는 .이 붙어야 한다. 또 도중의 논리가 일치하도록 한다(. 이 있는 입력은 .이 있는 출력으로, .이 없는 입력은 .이 없는 출력으로 구동한다).
(3) 세그먼트 c, f, g
그림 14에 베이치도와 회로를 나타낸다.c, f, g는 같은 논리이므로 하나의 출력으로 3개의 세그먼트를 구동한다. 점등 시에는 1개의 세그먼트에서 TTL NAND 출력에 6mA 정도의 전류가 유입된다. 2장에서 제작한 TTL NAND는 출력 L 레벨일 때 여유롭게 20mA를 유입할 수 있으므로 전혀 문제 되지 않는다.
(4) 세그먼트 d
그림 15에 베이치도와 회로를 나타낸다.그러나 상술한 세그먼트까지 이미 NAND가 8개 필요하다. 때문에 이 세그먼 트에 사용할 수 있는 TTL NAND가 없다. 그러나 다행히도 때로는 세그먼트 d와 같은 논리로 되는 신호가 세그먼트 b에 있다. 그림 13(b)의 X점이다. 이번에는 이 신호로 세그먼트 d를 구동한다.
이와 같이 논리회로 도중의 신호로 최종소자를 구동하는 것은 바람직하지 않지만 전기적 특성상으로는 문제가 없으므 로 바람직한 것이 아니라는 것을 알아둔 채 이번에는 이렇게 한다.
(5) 세그먼트 e
이 세그먼트는 점등하지 않으므로 그대로 한다.
3. HDL로 합성해본다
지금까지 베이치도를 사용, 수작업으로 논리압축을 실행했 다. 그러나 최근에는 HDL로 논리회로를 설계하므로, 논리압 축은 HDL의 컴파일러가 자동으로 실행한다.
시험적으로 이 7세그먼트 LED 인코더를 HDL로 논리합 성해 보았다. 사용한 HDL은 자일링스의 WebPACK ISE의 Verilog HDL이다. 이것은 몇 년 전에 무료로 구한 것이다. Verilog HDL의 리스트를 리스트 1에 나타낸다.CPLD인 XC9532에 임플리먼트한 결과가 리스트 2이다.
여기서 in[2], in[1], in[0]가 S3, S2, S1에, seg[6]~seg[0] 가 세그먼트 a~g에 대응한다. 결과는 베이치도를 이용한 논 리압축과 똑같았다.
4. 7세그먼트 LED 인코더의 최종회로
그림 16에 최종 회로를, 사진 1에 제작한 것을 나타낸다.내가 사용한 7세그먼트 LED는 샤프의 GL9T040이지만 다 른 것도 사용할 수 있다. 단, 반드시 애노드 코먼의 7세그먼 트 LED를 사용하기 바란다.
핀 배치는 그림 17과 같은 방법으로 쉽게 찾아낼 수 있다.참고로 이 그림의 핀 배치는 내가 사용한 GL9T040의 것이다. 2입력 NAND를 인버터(논리의 반전)로 사용할 경우, 그림18과 같이 2가지 방법으로 사용할 수 있다.
그림 18(b)에서는 한 쪽을 VCC에 접속한다. 이 경우, 1㏀의 저항을 통하여 VCC에 접속하도록 한다. 만일 초단의 트랜지스터가 고장을 일 으켜 이미터-컬렉터 사이가 쇼트했을 경우 대전류가 흘러 위험하기 때문이다. 이번에는 간단한 그림 18(a)의 방법을 사 용한다.
전원에는 바이패스 콘덴서 C1, C2를 넣고 있다. 이것은 전 원전압의 변동을 흡수한다. 이 회로에서는 거의 필요 없지만 통상적인 디지털 회로에서는 이러한 바이패스 콘덴서가 필요 하다.
C1에는 알루미늄 전해 콘덴서를 사용한다. 용량은 크지만 주파수 특성이 좋지 않아 주파수가 낮은 영역을 담당한다. C2 에는 적층 세라믹 콘덴서를 사용한다. 용량은 작지만 주파수 특성이 우수하므로 주파수가 높은 영역을 담당한다.
실제 7세그먼트 디코더/드라이버의 논리회로
본문 중에서는 사용할 수 있는 게이트 수를 제한하여 7세 그먼트 LED에서 숫자 1, 2, 3까지밖에 표시하지 않았다. 7세그먼트 LED 표시기를 사용하여 실제로 0~9의 숫자를 모두 표시하는 데에는“BCD to 7segment decoders/drivers” 로서 TTL에 라인업되어 있는 7446/47/48/49를 이용하 는 것이 일반적이다.
여기서 BCD(Binary Coded Decimal)란 10진수를 2 진수로 코드화한 것을 가리키며 그 코드를 실제 LED의 각 세그먼트에 대응시켜 출력한다는 점에서‘디코더’라 불리고 있다.
그림 A에 SN7447A(텍사스 인스트루먼트)의 내부회로를, 그림 B에 핀 배치를 나타낸다. A, B, C, D가 BCD의 4비트 입력이고 D가 최상위이다. LT는 램프 테스트(Lamp Test)를 위한 입력이며 이 단자를 L 레벨로 하면 A~D의 상 태에 상관없이 출력이 ON으로 된다. 표시기에 전구 등을 사 용하고 있는 경우, 전구 단선이 없다는 것을 확인하기 위해 이용한다.
각 세그먼트 드라이버의 출력은 오픈 컬렉터로 되어 있으 므로 7세그먼트 LED 표시기를 직접 드라이브할 수 있다.[출처] 트랜지스터로배우는디지털회로Ⅰ|작성자 맥가이심
출처: ICBANK
'Electron' 카테고리의 다른 글
트랜지스터로배우는디지털회로Ⅱ-6. 각종 로직 IC의 특징과 선택 기준 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅱ-5. 기초부터 배우는 순서 회로설계 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅰ-4. 플립플롭을 이해하자 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅰ-2. 트랜지스터로 제작하는 NAND 게이트 회로와 그 동작 (0) 2015.05.19 트랜지스터로배우는디지털회로Ⅰ-1. 디지털회로의기초 (0) 2015.05.19