5 장 대형 조합회로 1) 반복 시스템 2) 디코더 3) 인코더와 우선순위 인코더

Download Report

Transcript 5 장 대형 조합회로 1) 반복 시스템 2) 디코더 3) 인코더와 우선순위 인코더

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