Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
디지털 논리 회로
Analog란?
• 아날로그(analog)의 신호와 자료는 연속적인 물리량으로 나타낸 것이다.
• 우리가 거시적인 자연에서 얻는 신호는 대개 아날로그이다.
• 이를테면, 빛의 밝기, 소리의 높낮이나 크기, 바람의 세기 등이 있다.
3
TextVoiceVideoImage
Encoder
Analog
Digital 이란?
• 디지털(Digital)은 아날로그의 반대되는 개념으로 자료를 연속적인 실수가 아닌, 특정한 최소 단위를 갖는 이산적인 수치를 이용하여 처리하는 방법을 말한다.
4
TextVoiceVideoImage
Encoder
Digital
조합과 순차
• 조합 회로(combinational circuit)
– Memory가 없다.
– 입력한 값에 따른 출력
• 출력 = f (입력)
• 순차 회로(sequential circuit)
– Memory가 있다.
– Memory에는 회로의 현 상태가 저장
– 출력은 입력과 현 상태에 의해 결정
• (출력, 다음 상태) = f (입력, 상태)
5
논리회로 설계란?
• 기능이 주어질 때, 그 기능을 논리 소자(하드웨어)로 구현하는 것– 기능의 표현(뭘 하는 회로인가?)
• 문장, 말, pseudo code, program
• 진리표
• 카르노 맵
• minterm의 합, maxterm의 곱
• FSM
• BDD, 등등등…
– 구현 방법• 논리 회로 설계에서는 논리 게이트를 서로 연결하여 회로망을 형성하여 구현
• 하나의 기능을 구현하는 논리 회로는 많이 있다. 그 중 최적을 구하는 것이 중요
6
Design Levels
7
+
SYSTEM
MODULE
GATE
CIRCUIT
DEVICE
n+
S D
n+
G
VoutVin
설계의 단계
• 시스템 단계(board-level)
• 칩 단계 (chip-level)
• 모듈 단계 (module-level)
• 게이트 단계 (gate-level)
• 회로 단계 (circuit-level)
• 트랜지스터 단계 (transistor-level)
8
Computer ArchitectureMicroprocessor
Logic Design
전자회로
VLSI/SoC 설계
음수의 표현
음수의 표현
10
• 2’s Complement 의 표현 방법에서 음수 -N 의 표현은 2의 보수
으로 표시된다. n 비트 word에서 양의 정수 N에 대한 2의 보수
은 다음과 같이 정의된다.
2
4
110012416
42*4)4(
==−=
−==−
2
4
1000016
02*0)0(
==
−==−
음수의 표현 (2’s Complement Number)
11
10008
10017
10106
10115
11004
11013
11102
11111
'2
−
−
−
−
−
−
−
−
numberPositive
Complements
number
Negative
NN n −= 2*
*N
*N
• 1’s Complement 수를 만드는 또 다른 방법은 단순히 K을 비트 별로(bit by bit) 0은 1로 1은 0으로 대체하여 보수를 취하는 것이다.
– 예를 들어 word가 6비트이고, K=010101(21)인 경우
• 2’s Complement 수를 만드는 또 다른 방법은 1’s Complement 를 취한 후 1을 더해 구할 수 있다.
– 예를 들어 N=0101100(44)인 경우
음수의 표현
12
10101001010121)21( ===−
11)12(2* +=+−−=−= NNNN nn
*101010010100110101100 NN =→→=
논리 소자
• NOT 연산
– NOT의 또 다른이름을 inverse이라고 한다. Boolean variable x의Inverse을 나타내는 전자회로는 inverter이다. Inverter의 기호는 다음과 같다.
– 논리 0이 낮은 전압이라하고 논리 1이 높은 전압이라고 하면, Inverter 입력에서의 낮은 전압은 그 출력에서는 높은 전압으로 나타나고, 그 반대도성립한다.
Basic Operations
14
X X
Basic Operations
• AND 연산
– A와 B가 1일 때만 C=1가 된다. AND 연산을 수행하는 Logic Gate는다음과 같이 표시한다.
– “ ”기호는 Boolean expression에서는 일반적으로 생략하여A B 대신 AB로 표기한다.
15
ABAC =
B
• OR 연산
– A 또는 B가 1일 때 C=1가 된다. OR 연산을 수행하는 Logic Gate는 다음과 같이 표시한다.
– OR 연산을 내포적 OR(Inclusive-OR)라고도 한다.
Basic Operations
16
ABAC +=
B+
• Exclusive-OR 의 연산
• Exclusive-OR 의 Truth table
– Boolean variable X, Y의 값이 서로 다를 경우 Exclusive-OR의 결과가1이고 같을 경우 결과가 0이다.
– Exclusive-OR은 AND와 OR gate를 이용해 다음과 같이 쓸 수 있다.
Exclusive-OR and Equivalence Operations
17
011101
110000
==
==
011
101
110
000
YXYX
YXYXYXYXXYYXYX +=++=+= ))(())((
Exclusive-OR and Equivalence Operations
• Exclusive-OR의 gate symbol
• Exclusive-OR에 대한 정리
18
YXYXYX +=X
Y
YXXYYXYXYX
XZXYZYX
ZYXZYXZYX
XYYX
XXXX
XXXX
+===
=
==
=
==
==
)(
)(
)()(
1 0
1 0
Multiplexer
• Multiplexer (데이터 선택기, MUX )
– 데이터 입력과 제어 입력으로 구성된 소자.
– 제어 입력은 데이터 입력 중에서 하나를 선택하여 출력단과 연결하는 역할을 한다
– 2-to-1 multiplexer 및 등가 스위치
19
0 1'Z A I AI= +
• 여러 가지 multiplexer들
Multiplexer
20
3210 ABIIBABIAIBAZ +++=
7654
3210
ABCIICABCIBAICBA
BCIAICBACIBAICBAZ
++++
+++=
−
=
=12
0
n
k
kk ImZ
• 작은 MUX를 이용한 큰 MUX의 구현
Multiplexer
21
0
1
0
1
f 0
1
2-to-1 MUX를 이용한 4-to-1 MUX
0s1s
0w
1w
2w
3w
f
16-to-1 MUX
0s1s
0w
3w
4w
7w
8w
11w
12w
15w
3s2s
• Truth table와 MUX와의 관계
– MUX로 어떤 함수도 만들 수 있다.
Multiplexer
22
Truth table Graphic symbol
1s 1s
0w
1w
2w
3w
f
00
01
10
11
0s1s
0w
1w
2w
3w
f
Adder and Subtractor
Design of Binary Adders
• Parallel adder의 설계
– 2개의 4비트 unsigned 2 진수와 carry 입력을 더하여 4비트 sum과carry 출력을 갖는 parallel adder를 설계하고자 한다.
– 하나의 접근 방법은 9개의 입력과 5개의 출력을 갖는 truth table을 작성하고, 5개의 출력 식을 구하고 simplifying하는 것이다.
• 이 방법은 매우 어렵고 논리 회로도 매우 복잡할 수 있다.
24
4bitparallel adder
00112233 BA BA BA BA
0123 S S S S
4C 0C
• Parallel adder의 설계
– 또 다른 방법은 2개의 1비트 입력과 1개의 carry를 더하는 logic module을 설계하고 아래 그림과 같이 4비트 Adder를 구성하기 위해 이들 모듈4개를 연결하는 것이다.
– 여기서 각 모듈을 Full adder라고 한다.
Design of Binary Adders
25
FullAdder
00112233 BA BA BA BA
0123 S S S S
4C 0CFull
AdderFull
AdderFull
Adder
3C2C 1C
실습 1
• Full Adder의 설계
– 3개의 입력과 2개의 출력으로 구성됨.
Design of Binary Adders
27
A Y Cin Cout Sum
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
BA
Sum
inCFull
AdderoutC
Design of Binary Adders
28
( 1, 2, 4, 7 )
( ) ( )
( ) ( )
( 3, 5, 6, 7 )
in in in in
in in in in
in in
in
out
in in in in
in in in
Sum m
X Y C X YC XY C XYC
X Y C YC X Y C YC
X Y C X Y C
X Y C
C m
X YC XY C XYC XYC
X YC XYC XY C XYC
=
= + + +
= + + +
= +
=
=
= + + +
= + + +
( ) ( ) ( )
in in in
in in in in
in in
XYC XYC
X X YC Y Y XC XY C C
YC XC XY
+ +
= + + + + +
= + +
XYCin
Sum
X
X
Y
Y
Cin
Cin
Cout
• 실습 1. Full Adder
– day3 폴더에 프로젝트 생성
– full_adder.v 파일 생성
– full_adder 모듈 생성
– full_adder 입출력 상세
• 1-bit input의 a
• 1-bit input의 b
• 1-bit input의 cin
• 1-bit output의 result
• 1-bit output의 cout
Design of Binary Adders
29
Design of Binary Adders
30
실습 2
• 실습 2. 32-bit Serial Adder (Ripple Carry Adder)
– serial_adder_32bit.v 파일 생성
– serial_adder_32bit 모듈 생성
– serial_adder_32bit 입출력 상세
• 32-bit input의 a
• 32-bit input의 b
• 1-bit input의 cin
• 32-bit output의 result
• 1-bit output의 cout
– 앞에서 만든 full_adder 모듈 32개 이용
Design of Binary Adders
32
Design of Binary Adders
33
Design of Binary Adders
• Ripple Carry Adder 단점
– 첫 번째 full adder에서 발생한 carry가 최종 full adder로 전파되기 때문에 비트 수가 큰 경우에는 덧셈 결과가 느림
34
001122 BA BA BA
012 S S S
0CFull
AdderFull
AdderFull
Adder
3C2C 1CFull
Adder1nC +
nnBA
nS
nC
Design of Binary Adders
• Carry-look-ahead adder
– Carry 값을 미리 계산하는 logic을 포함한 adder
35
FullAdder
00112233 BA BA BA BA
0123 S S S S
4C
0CFull
AdderFull
AdderFull
Adder
3C2C 1C
4-bit carry look-ahead block
실습 3
Design of Binary Subtractors
• Full adder를 이용한 부호화 연산
– 4 비트 가산기의 B가 음수일 경우 보수 형태로 변환된 수가 입력되면 됨
– 2의 보수를 사용하는 경우
• B는 역수
• 𝐶0 = 1
37
FullAdder
A3B′3 A2B′2 A1B′1 A0B′0
0123 S S S S
4C 1Full
AdderFull
AdderFull
Adder
3C2C 1C
• 실습 3. 32-bit Subtractors
– sub_32bit.v 파일 생성
– sub_32bit 모듈 생성
– sub_32bit 입출력 상세
• 32-bit input의 a
• 32-bit input의 b
• 32-bit output의 result
– 앞에서 만든 serial_adder_32bit 모듈 이용
Design of Binary Subtractors
38
Design of Binary Subtractors
39
실습 4
• 실습 4. ALU
– 지난 시간의 ALU 실습내용을 활용
• adder를 32-bit serial adder로 대체
• xor연산 대신 32-bit subtractor 동작 수행
– 지난 시간 작성한 testbench 사용
• 32-bit serial adder 정상동작 확인
• 32-bit subtractor 정상동작 확인
ALU 만들기 - 1
41
ALU 만들기 – 2
42