5 장 대형 조합회로
DESCRIPTION
5 장 대형 조합회로. 반복 시스템 - 조합회로 시스템에서의 지연 - 가산기 , 감산기 , 비교기 디코더 인코더와 우선순위 인코더 멀티플렉서와 디멀티플렉서 3 상태 게이트 게이트 배열 (ROM, PLA, PAL). 개요. 게이트를 통한 지연의 영향 가산기의 설계 : 감산기 , 십진 가산기 자주 사용되는 회로들 : 디코더 , 인코더 , 우선순위 인코더 그리고 멀티플렉서 중간 크기의 시스템 설계에서 사용되는 gate array : - PowerPoint PPT PresentationTRANSCRIPT
5 장 대형 조합회로
1) 반복 시스템- 조합회로 시스템에서의 지연- 가산기 , 감산기 , 비교기
2) 디코더3) 인코더와 우선순위 인코더4) 멀티플렉서와 디멀티플렉서5) 3 상태 게이트6) 게이트 배열 (ROM, PLA, PAL)
2
개요• 게이트를 통한 지연의 영향
• 가산기의 설계 :
- 감산기 , 십진 가산기
• 자주 사용되는 회로들 :
- 디코더 , 인코더 , 우선순위 인코더 그리고 멀티플렉서
• 중간 크기의 시스템 설계에서 사용되는 gate array :
- 곱의 합 구현을 위해 연결된 여러 개의 AND 와 OR 게이트들로 구성
- 세 가지 형태 : ROM(read-only memory),
PLA(programmable logic array),
PAL(programmable array logic)
• 시스템 설계에 대한 고찰 :
- 7- 세그먼트 디스플레이 구동기- error coder/decoder
3
반복 시스템
• 작은 블록의 회로를 여러 번 복사하여 시스템 구성
- 1 비트 전 가산기 4 개의 복사본을 직렬로 연결하여 4 비트 가산기 구성
4
조합 회로 시스템에서의 지연• 게이트의 입력 변화시 게이트의 출력은 동시에 변하지 않음
작은 지연 ( ) 발생
• 시간 4 에서 , B 와 C 가 동시에 변하면
해저드 (hazard) 또는 글리치 (glitch) 상황 발생
5
• 가산기의 덧셈에 걸리는 시간 계산 ( 모든 입력이 동시에 들어간다고 가정 )
• 입력 a 와 b 가 변할 때 회로의 다양한 지점에서 생기는 지연을 표시
• 입력 a 와 b 가 변하는 시점에서 합이 나오는 시점까지 지연 시간은 6△, 캐리 출력이 나오는 시점까지 지연 시간은 5△• a, b 의 값이 고정되면 , Cin 에서 Cout 까지 지연 시간은 단지 2△, 캐리 입력에서 합까지 지연은 3△
1 bit 가산기를 통한 지연
6
2 레벨회로의 지연
• 곱의 합 형식으로 구현한 2 level 회로
Cout = bCin + aCin + ab
s = a´b´Cin + a´bC´ in + ab´C´in + abCin
• 캐리 출력 : 2 단 회로 => 각 입력에서 Cout 까지의 지연은 2△
• 합은 Cin 에 대한 NOT 게이트를 필요로 함 (Cin 이 다른 전가산기의
출력 )
=> Cin 에서 s 까지 지연 시간이 3△
7
N 비트 가산기 지연• n 개의 1 비트 가산기 회로를 가지고 n 비트 가산기 구현시 총 지연 시간
1) LSB 의 입력에서 Cout 까지의 지연 시간
2) 중간 가산기들의 Cin 에서 Cout 까지의 지연 시간 ×(n-2) 3) MSB 의 Cin 에서 Cout 혹은 Cin 에서 s 까지의 지연시간중 긴 것
=> multilevel 가산기 : 5△ + 2(n-2)△ + 3△ = (2n + 4)△ => 2-level 가산기 : 최소 유효비트에서만 5△ 가 2△ 로 3△ 단축됨
Ex. 64 비트 가산기 : 132△(multilevel 가산기 ) 와 129△(2-level 가산기 )
• △ 가 아무리 작다 해도 총 지연 시간이 길어짐 .• 해결책
1) 2 level 혹은 3 level multibit 가산기를 만드는 것
2) 캐리 미리보기 가산기 (carry-look-ahead adders)
8
Multibit 가산기(2 level)
2 비트 가산기 진리표
9
2 비트 가산기
• 2 비트 가산기에 대한 최소의 곱의 합 표현 (2 level 구현 )
• 2 비트 가산기를 사용하는 n 비트 가산기 구현 => 지연 시간의 감소
• 처음 2 비트와 마지막 2 비트를 제외하면 매 두 비트마다
캐리 입력으로부터 캐리 출력까지 지연은 단지 2△ => 총 지연 시간은 2△ + 2(n/2-2)△ + 3△ = (n+1)△ • 이전 방법에 비해 지연 시간이 절반으로 줄어들게 됨
10
4 비트 가산기의 직렬연결
• 4 비트 가산기 : 7483, 74283
11
Carry-look-ahead adder• adder 의 각 단에서 두 개의 신호를 만들어 냄
•Gi(generate) = aibi
•Pi(propagate) = ai + bi
•ci = aibi + aici-1 + bici-1 = aibi + (ai + bi) ci-1
= Gi + Pi ci-1
•c1 = G1 + P1 c0 •c2 = G2 + P2 c1
= G2 + P2 (G1 + P1 c0) = G2 + P2 G1 + P2 P1 c0
12
감산기와 가산기
4 비트 가 /감산기
13
비교기
4 비트 비교기
14
비교기
typical bit of a comparator
15
멀티비트 비교기
16
디코더
• 디코더는 코딩된 입력 신호에 의해 여러 출력 선 중 하나를 선택하는 장치
=> 일반적으로 , 입력은 n 비트 이진수이고 2n 의 출력 선이 존재
• 2- 입력 (4- 출력 ) active high 출력 디코더에 대한 진리표
=> 활성화되는 출력은 1 이고 비활성화되는 출력은 0
* active low: 활성화되는 출력은 0 이고 비활성화되는 출력은 1 인 경우
17
2- 입력 디코더
• 2- 입력 (4- 출력 ) active high 출력 디코더
• 각 출력은 2 변수 함수의 최소항들과 일치
출력 0 : a'b' 출력 1 : a'b 출력 2 : ab' 출력 3 : ab
active high 디코더
18
Active low 출력 형식
• active low 출력 형식의 디코더 회로와 진리표
19
Enable input( 활성화 신호 )• active low 활성화 신호가 있는 active high 출력 디코더 ( 진리표 , 블록 다이어그램 , 회로 )• active low 신호는 블록 다이어그램에서 작은 원 (bubble) 으로 표시
20
74138 (3-to-8 decoder)
• 74138 에 대한 진리표 (3- 입력 , 8- 출력 디코더 )
• active low 출력과 3 개의 동작 입력
=> active high : EN1 active low : EN2', EN3'
=> EN1 = 1, EN2' = 0, EN3' = 0 일 때 동작
• 입력은 C, B, A(C 가 최상위 비트 ) 로 표기
21
디코더 응용
• 디코더의 응용
- 각각 고유의 주소를 갖고 있는 많은 장치 중에서 하나를 선택하는 것
- 주소는 디코더의 입력이 되고 하나의 출력이 활성화되면 그 주소에
해당하는 하나의 장치를 선택
• 하나의 디코더로 선택할 수 있는 것보다 더 많은 장치가 있는 경우 - 동작 입력을 이용하여 디코드
- 추가적인 디코더를 사용
22
예제 5.1 동작 입력을 이용
74138 디코더를 사용하여 32 개의 장치 중 하나를 선택하기 위한 회로를 설계하라
- 4 개의 동일한 디코더를 사용
- 주소가 a, b, c, d, e 로 주어졌다면 , c, d, e 비트가 4 개의 디코더에 공통으로 사용
(C, B, A 의 순서 )
- a, b 는 4 개의 디코더 중에서 1 개를 선택
23
예제 5.2
24
디코더를 이용한 논리함수 구현
• 디코더 각각의 active high 출력은 그 함수의 최소항과 일치
=> 논리함수 구현에 필요한 것은 해당된 출력들을 연결할 OR 게이트
• active low 출력 디코더의 경우는 OR 게이트를 NAND 게이트로 변경
=> AND-OR 회로에서 NAND-NAND 회로로 변경
f = ab + cd = (ab + cd) = ( ab • cd )
• 같은 입력들로 구성되는 둘 이상의 함수에 대해서도 하나의 디코더만 필요
=> 각각의 출력 함수에 대해서는 하나의 OR 또는 NAND 가 필요
25
예제 5.3 논리함수 구현
f(a, b, c) = m(0, 2, 3, 7)
g(a, b, c) = m(1, 4, 6, 7)
함수를 디코더를 사용하여 설계하라 .
- 위 함수들은 아래에 보이는 디코더 회로 중 하나로 구현 가능 .
26
예제 5.4 디코더와 3 개의 NAND
27
28
인코더와 우선순위 인코더
• 인코더는 여러 장치 중 하나가 신호를 보낼 때 그 장치를 나타내는 코드를 만들어 냄
• 만일 A0, A1, A2, A3 4 개의 입력 중에서 정확히 한 개의 입력만 1 이라고 하면 , 다음 진리표는 4 입력 인코더의 동작을 표현
• 식Z0 = A2 + A3
Z1 = A1 + A3
A0 A1 A2 A3 Z0 Z1
1 0 0 0 0 00 1 0 0 0 10 0 1 0 1 00 0 0 1 1 1
29
인코더
• 장치 0 에 신호가 있는 경우와 모든 장치에 신호가 없는 것을 구분 하지 못함
• 어떤 입력도 활성화되지 않았다는 것을 나타내는 출력 N 이 필요
• 식
Z0 = A2 + A3
Z1 = A1 + A3
N = A’0A’1A’2A’3
= (A0+A1+A2+A3)’
A0 A1 A2 A3 Z0 Z1 N
0 0 0 0 0 0 11 0 0 0 0 0 00 1 0 0 0 1 00 0 1 0 1 0 00 0 0 1 1 1 0
30
우선순위 인코더
• 하나 이상의 입력이 동시에 일어날 수 있다면 , 우선 순위가 필요
=> 우선순위가 가장 높은 장치 번호에 대한 code 출력
• 우선순위는 일반적으로 내림차순 ( 또는 오름차순 ) 으로 정렬되어 최우선 순위에 가장 큰 ( 또는 가장 작은 ) 입력 번호가 주어짐
• 표 5.5 은 8- 입력 우선순위 인코더에 대한 진리표를 나타냄
31
8- 입력 우선순위 인코더에 대한 진리표
0 1 2 3 4 5 6 7
0 4 5 6 7
1 6 7 2 3 4 5
2 7 5 6 3 4 6 1 2 4 6
( )
NR A A A A A A A AZ A A A AZ A A A A A AZ A A A A A A A A A A
32
멀티플렉서
=> n 개의 데이터 입력 중 하나를 선택하여 출력으로 보낸다 .
33
4-way 멀티플렉서
34
Multibit multiplexer
• 16 비트 숫자 4 개에서 1 개의 16 비트 숫자 선택
• 각 비트에 대하여 4-to-1 multiplexer 가 필요 -> 총 16 개의 4-to-1 multiplexer
• 그림 5.12 의 회로를 이용하여 - 64(4 X 16) 개의 3- 입력 AND 게이트 - 16 개의 4- 입력 OR 게이트 가 필요 - 22 개의 3- 입력 AND 게이트 패키지
• 그림 5.13 와 같이 디코더를 사용하면 - 68 개의 2- 입력 AND 게이트 - 16 개의 4- 입력 OR 게이트 가 필요 - 17 개의 2- 입력 AND 게이트 패키지
35
멀티플렉서를 이용한 함수 구현
S2 S1 S0
0 1 2 3 4 5 6 7
0 1 1 1 1 0 0 0
X Y Z
F
X
X Y Z F0 0 0 00 0 1 10 1 0 10 1 1 11 0 0 11 0 1 01 1 0 01 1 1 0
36
Better Solution
S1 S0
0 1 2 3
X Y
F
X Y Z F0 0 0 00 0 1 10 1 0 10 1 1 11 0 0 11 0 1 01 1 0 01 1 1 0
F = Z
F = 1
F = Z’
F = 0Z
1
Z’
0
37
상용 멀티플렉서 패키지
• 74151- 8-to-1 mux - active low 동작입력 EN'- active high 와 active low 의 출력- 선택 입력 : S2, S1, S0
• 74153- 2 개의 ( 이중의 ) 4-to-1 멀티플렉서- 독립된 active low 동작입력 (ENA' 와 ENB') - 공통인 선택신호 : S1, S0
• 74157- 4 개의 2-to-1 멀티플렉서- 공통의 active low 동작입력 EN'- 공통의 선택 입력 : S
38
디멀티플렉서 (Demultiplxer)
• 멀티플렉서의 역함수 역할• enable 입력이 있는 디코더 (decoder with enable) 의 내부회로와 동일
S1 S0 O0 O1 O2 O3
0 0 I 0 0 00 0 0 I 0 00 0 0 0 I 00 0 0 0 0 I
S1 S0
I O0
O1
O2
O3
39
• 두개 이상의 출력을 서로 연결하는데 사용되는 두 가지 방법
1) 3- 상태 (three-state) 출력 게이트 : 일반적
2) 개방 - 컬렉터 (open-collector) 게이트
• 3- 상태 (three-state) 게이트에서는 게이트의 측면에 enable 입력이 있음
=> enable 입력이 활성화되면 (active high 또는 active low), 게이트는 평상시와 같이 동작
=> enable 입력이 비활성화된다면 출력은 연결되지 않은 것처럼 ( 개방 회로처럼 ) 동작하며 그 출력은 Z 로 나타냄 Z: high impedence 상태 ( 연결이 안된 것처럼 동작 )
3- 상태 (three-state) 게이트
40
• 그림 5.14 는 3- 상태 (three-state) 버퍼 (active high 동작 ) 의 진리표와 회로 표기
3- 상태 게이트 심볼과 진리표
• active low enable 입력 과 active low 출력을 가진 3- 상태 (three- state) 버퍼 -> three-state inverter
41
3- 상태 게이트로 멀티플렉서 구현
• 3- 상태 (three-state) 게이트로 OR 게이트 없는 멀티플렉서 구현 가능
• 2-to-1 멀티플렉서
=> f = a • EN' + b • EN
42
3-state 버퍼를 이용한 버스 구현1- 비트 버스 구현
43
게이트 배열 - ROMs, PLAs, AND PALs
• 게이트 배열은 꽤 복잡한 시스템의 구현을 쉽게한다
• 3 입력과 3 출력 시스템
• 점선들은 가능한 연결
• 곱의 합 식을 구현
• 6 개의 곱 항이 가능
• 보수 입력이 필요 없음
44
f = a'b' + abc
g = a'b'c' + ab + bc
h = a'b' + c
- 연결점들은 생략하였고 각각의 실선이 연결을
나타냄 . - a'b' 공유항
- 항 c 를 위한 게이트는 일반
회로에서는 필요없는 것
예제 5.7a
45
• 앞의 방식은 입력수 , 게이트 수가
많아지면 나타내기가 어렵다 .
• 모든 선을 보여주기보다 보통은
각각의 게이트에 대해 한 개의
입력선만 보여주고 연결되는
교차점에서는 X 또는 점으로 표시
예제 5.7b
46
1) PLA(programmable logic array) : 가장 일반적인 유형
- 사용자가 모든 연결 (AND 배열과 OR 배열 모두 ) 을 지정 가능 - 어떤 곱의 합 식 ( 공유하는 공통항 ) 도 가능
2) ROM(read-only-memory)
- ROM 에서 AND 배열은 고정됨• 2n 개의 AND 게이트들로 구성된 디코더
- 사용자는 단지 OR 게이트로의 연결을 지정- 따라서 최소항들의 합을 만들어 냄
3) PAL(programmable array logic)
- OR 게이트 연결이 지정되어 있음- 사용자는 AND 게이트 입력을 지정- 각각의 곱 항은 공유할 수 없음
Gate Array 의 세 가지 일반적인 유형
47
프로그램 가능한 출력 회로
48
• 출력단에 3- 상태 (three-state) 버퍼 -> 버스 출력에 적합
• 출력은 AND 배열의 또 다른 입력으로 feedback 되기도 함 이것은 2 level 이상의 논리회로를 고려한 것 (PAL 에서 ) • 그림에서 만약 EN = 0 이면 , 출력 대신에 입력으로 사용 가능
프로그램 가능한 출력 회로
49
• ROM 을 이용하여 시스템을 설계하기 위해서는 각 함수의 최소항들
목록만이 필요 함
• ROM 은 각각의 최소항에 대해 한 개의 AND 게이트를 가지고 있고 , 각각의 출력에 해당된 최소항 게이트들을 연결해주면 됨
• 곱의 합 식을 디코더로 구현한 것 ( 예제 5.3) 과 같음
ROM 에 의한 설계
50
W(A, B, C, D) = m(3, 7, 8, 9, 11, 15)X(A, B, C, D) = m(3, 4, 5, 7, 10, 14, 15)Y(A, B, C, D) = m(1, 5, 7, 11, 15)
예제 5.8
51
PLA 에 의한 설계
• 구현할 함수에 대한 곱의 합 식을 찾아내기만 하면 됨
• 사용 가능한 AND 게이트 ( 곱 항 ) 의 수가 정해져 있음
• 가능한 기능
- 최소항의 합
- 각 함수를 독립적으로 최소화한 것
- 또는 공유를 최대화한 것 모두 가능
52
W(A, B, C, D) = m(3, 7, 8, 9, 11, 15)X(A, B, C, D) = m(3, 4, 5, 7, 10, 14, 15)Y(A, B, C, D) = m(1, 5, 7, 11, 15)
• 독립된 함수로 맵을 나타냄
• X 와 Y는 두가지 해가 존재함
W = ABC + CDX = ABC + ACD + ACD + {BCD or ABC}Y = ACD + ACD + {ABD + BCD}
예제 5.9
53
• 만일 X 와 Y 둘 다 BCD 를 선택한다면 해는 8개의 항이 필요 ( 그렇지 않으면 9개의 항을 필요로 함 )• 다중 출력 문제로 처리하면 더 적은 수의 항으로 가능 (7 개 )
• 7개의 항만을 사용함
W = AB´C´ + A´CD + ACD
X = A´BC´ + ACD´ + A´CD + BCD
Y = A´C´D´ + ACD + BCD
54
두 가지 해를 나타낸 PLA
55
1) 첫 번째 : 처음 8개의 항이 사용한 것에서 BCD 항 ( 갈색 점 ) 을 X 에서는 ABC 로 , Y 에서는 A'BD 로 대치시켜 총 9개의 항을 사용하는 것도 주어진 PLA 로 가능
2) 두 번째 : 두 번째 항 CD 가 사용되지 않음 . A'CD, ACD 를 공유 .
7개의 항만 사용 .
만일 사용되는 PLA(programmable logic array) 가 그림에
나타난 것과 같이 크다면 어느 해를 선택하든 문제되지 않는다 .
56
• 출력 G 의 8개로 이루어진 그룹 , C: AND 게이트 없이 단지 OR 입력만 필요 .• PLA 에서는 하나의 문자 항도 한 개의 게이트를 필요로 한다 .
• B'C 는 F 에 필요하고 , BC 가 H 에 필요하기 때문에 G 에 대해 C 대신 BC+B'C 를 사용함으로써 항 수를 줄일 수 있음 . ( 두 번째 해 )
예제 5.10 단일 문자항이 존재할 때
57
예제 5.10 ( 계속 )
58
• PLA 의 예 : PLS100
- 16 개의 입력 , 48 개의 곱 항 , 8 개의 출력을 갖고 있음
- 각각의 출력은 active high 나 active low 로 프로그램 가능함
- 3- 상태 (three-state) 버퍼를 갖고 있음
- 공통의 active low 활성화 입력
• 16 개의 입력을 갖는 ROM 에서 요구되는 곱 항 수의 1/1000 보다 적다 .
59
PAL 에 의한 설계
• PAL 에서 각각의 출력은 AND 게이트의
그룹이 연결된 OR 게이트로부터 나옴
• AND 항 공유 불가
• 그림 5.19 는 작은 PAL 의 예
6 개의 입력과 4 개의 출력 . 각각의 OR 게이트는 4 개의 입력 항
60
- PAL 을 사용하면 각 AND 게이트의 출력은 단 하나의 OR 에 연결
- 공유되는 항이 없기 때문에 각 함수를 개별적으로 풀어야 함
- 일부 OR 게이트의 출력이 내부적으로 궤환되어 모든 AND 게이트의
또 다른 입력으로 쓰이는 경우도 있다 . 또는 외부에서 연결해 줌 ( 예제 5.10)
-> SOP 식에서 더 많은 항을 사용가능하게 함
SOP 식이 아닌 것도 가능 항들의 그룹을 공유 가능
- 많은 PAL 들은 출력에 3- 상태 (three-state) 버퍼를 갖고 있음
=> 출력이 입력으로도 사용 가능
61
W = ABC + CDX = ABC + ACD + ACD + {BCD or ABC}Y = ACD + ACD + {ABD or BCD}
- ROM 과 PLA 에서 사용한 예제
- 공유를 고려할 필요가 없음 - X 와 Y에서 선택할 수 있는 항들 중 처음 것을 고르면 다음 그림과
같이 구현됨
예제 5.11 PAL 예
62
예제 5.11 (계속 )
63
• 세개의 적색 항들이 각 함수의 필수 주 내포항들이고 다른 두 항은 아님
• 최소 식
f = a'b'c' + a'c'd + b'c'd + abd'+ bcd'
g = a'b'c' + a'c'd + b'c'd + abc + acd'
h = a'b'c' + a'c'd + b'c'd + a'cd' + b'cd'
예제 5.12 궤환 (feedback) 이용 예
64
- 이 풀이는 각 함수들을 독립적 문제 간주- 만일 다중 출력 문제로 다루면 g 와 h 에서 ab'cd' 를 공유하여 대수 식에서 항들의 수를 줄일 수 있으나 , PAL 에서는 사용되는 게이트 수가 줄어들지 않음 .
t = a'b'c' + a'c'd + b'c'd
f = t + abd'+ bcd‘
g = t + abc + acd'
h = t + a'cd' + b'cd'
예제 5.12 ( 계속 )
65
예제 5.12 ( 계속 )
- 출력 t 는 AND 게이트 중
하나의 입력으로 feedback - t 회로의 네 번째 AND 게이트의 입력으로 a 와
a' 가
모두 연결되어 있음
( 사용하지 않는 AND 항을 이렇게 사용자가 연결을 해야되는 PAL 이 있다 .
나머지는 생략했음 )
t = a'b'c' + a'c'd + b'c'd