0% found this document useful (0 votes)
116 views280 pages

디공실 교재

이 문서는 디지털공학실험 교재의 출간 배경과 목적을 설명하고 있다. 공학교육 인증제를 기반으로 하여 학생들이 디지털 전자기술을 실습을 통해 이해하고 응용할 수 있도록 구성되었으며, 다양한 실험과 이론을 포함하고 있다. 또한, VHDL을 이용한 회로 설계 기법을 다루며, 실험에 필요한 자료와 도구를 제공한다.

Uploaded by

sk1221tldms
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
116 views280 pages

디공실 교재

이 문서는 디지털공학실험 교재의 출간 배경과 목적을 설명하고 있다. 공학교육 인증제를 기반으로 하여 학생들이 디지털 전자기술을 실습을 통해 이해하고 응용할 수 있도록 구성되었으며, 다양한 실험과 이론을 포함하고 있다. 또한, VHDL을 이용한 회로 설계 기법을 다루며, 실험에 필요한 자료와 도구를 제공한다.

Uploaded by

sk1221tldms
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 280

머 리 말

21세기 다양한 과학기술의 융합과 국제화에 맞추어 세계 여러 나라에


서는 공학계열의 졸업자격의 상호인정과 졸업생을 대등하게 인정하자는
1989년의 워싱톤 협약에 따라 공학교육에 대한 국제 표준화작업이 진행
되고 있다. 이에 우리나라에서도 공학교육의 발전을 촉진하고 실력을 갖
춘 공학기술 인력 배출을 위해 이미 12개 대학에서 공학인증제를 도입하
여 질적으로 수준 높은 공학교육을 실시하고 있고 또 다른 대학도 실시하
려고 준비하고 있다. 현재 미국은 ABET(미국공학기술교육인증원), 한국은
ABEEK(한국공학교육인증원)에서 공학교육인증을 시행하고 있다.

특히 오늘날 디지털 기술의 눈부신 발전으로 디지털 시스템의 응용기술


이 정보화 시대의 주축을 이루고 있는 상황에서 대학의 전기, 전자, 전산
과 및 산업체와 연구소에서는 디지털 이론에 기초를 둔 디지털공학실험과
마이크로프로세서를 이용한 실험을 수행하고 있다.

그러나 공학인증을 위한 실험에 관한 적합한 교재가 없다고 판단하여


본서의 저자들이 다년간 대학에서 디지털공학, 디지털공학실험과 마이크
로프로세서 응용 및 실험을 지도하면서 얻은 경험을 바탕으로 “교육인적
자원부 대학특성화사업 중 UIT 디자인 교육프로그램”의 지원을 받아서
디지털공학실험 책을 출간하게 되었다.

본 교재는 공학교육 인증제의 교육과정에 맞추어 조합회로와 순차회로


의 이론 과목을 이수한 학생들이 실습에 의해 논리 소자들을 이용하여 회
로를 설계하고 응용할 수 있는 능력을 배양할 수 있도록 디지털 전자기술
의 기초뿐만 아니라 응용으로 발전시킬 능력을 독자들에게 키워주는 데
역점을 두어 집필 되었다. 특히 시스템구성의 기본 빌딩 블록들을 이용하
는 방법을 예시하고 이를 응용할 수 있는 간단한 설계 문제를 제공하였
다.

현재 산업체에서 실제로 사용하는 Tool들은 매우 다양하지만 본 교재의


목적이 특정 Tool의 사용법을 익히는 것이 아니라 Tool이 제공하는 기본
기능에 대한 기초 지식을 습득하는 것이 목적이므로 사용하기 쉽고, 학교
에서 무료로 사용할 수 있다는 점 등을 감안하여 Altera사의 MAX+Plus II
Student Edition 10.1 version을 기반으로 교재를 편찬하였다

본 교재는 크게 3개의 부분으로 구성된다. 1-4장은 실험에 필요한 계


측기를 소개하고 논리회로의 가장 기본이 되는 진리표와 각종 게이트와
플립플롭들, 그리고 진리표를 응용하는 방법을 다룬다. 5-8장은 조합회로
의 빌딩블록인 멀티플렉서/디멀티플렉서, 인코더/디코더, ALU(Arithmetic
and Logic Unit), 그리고 7-segment 디코더와 드라이버 등을 이용하는
방법을 제공하며, 마지막 9-12장은 VHDL을 이용하여 회로를 설계하는
기법의 기초를 닦는 것을 목표로 한다.

본 교재의 각 장은 다음과 같이 구성되어 있다. 먼저 실험의 목적과 기


본 이론 그리고 필요한 준비물 등을 소개하고 마지막으로 실험 내용을 소
개한다. 대부분의 실험은 회로를 주고 연결하여 결과를 도출하도록 구성
하였으며, 특히 제2장, 4장, 6장, 8장 및 12장은 공학 인증에서 요구하는
설계 능력을 배양하도록 하는 문제들을 포함하고 있다. 그리고 부록으로
본 실험 교재에 사용되는 각종 IC들의 Data sheet를 첨부하여 가능하면
본 교재만으로도 설계와 실험이 가능하도록 하였다.

본 교재가 디지털공학실험을 하는 많은 분들에게 조금이나마 도움이 된


다면 이 책을 저술한 보람이 있으리라 생각한다. 저자들의 菲才로 인하여
다소의 부족한 점이 있으리라 여겨지며, 앞으로 독자여러분의 많은 指導
鞭撻과 高見을 받아서 수정해 나갈 것을 약속드리는 바이다.

끝으로 본 교재를 집필하는 데 수고한 송의석 박사, 조병헌 박사, 그리


고 본 디지털공학 실험책의 원고를 정리하는 데 수고를 아끼지 않은 박사
과정 배성우군과 본 교재의 실험을 직접 수행하였던 대학원의 김종일, 양
진길, 이무청, 서영민, 안봉주, 송하선, 서우형, 유재우, 임형무 그리고 양
정규군에게 심심한 감사를 보낸다. 특히 본 교재를 펴내는 데 노고를 아
끼지 않으신 국민대학교 출판부의 관계자 여러분에게 깊은 사의를 표한
다.

2005. 2.
著者 識
김도현, 오하령, 안현식
김대정, 박영일, 장영민, 민경식
목 차

1장 오실로스코프와 함수발생기 ····································································· 17


2장 일반 논리게이트 응용 ··············································································· 33
3장 진리표 ··········································································································· 41
4장 각종 Latch와 Flip-Flop ··········································································· 55
5장 인코더(Encoder)/디코더(Decoder)와
멀티플렉서(Mux/)디멀티플렉서(Demux) ··············································· 71
6장 가산기와 ALU 그리고 조합논리회로 응용 ········································· 87
7장 순차논리회로 설계 및 구현(1) ····························································· 103
8장 순차논리회로 설계 및 구현(2) ····························································· 117
9장 VHDL(Very High speed integrated circuit hardware
Description Language) 설계 툴 사용법 ··········································· 131
10장 VHDL 설명 및 문법 ················································································ 149
11장 VHDL을 이용한 기본 논리 게이트 및 가산기의 구현 ···················· 169
12장 VHDL을 이용한 순차회로 구현 ···························································· 187
부록1. Data sheet ···························································································· 199
참고문헌 ··············································································································· 279
찾아보기 ··············································································································· 281
그림 목차

그림 1-1 2채널 모델 오실로스코프 ······························································ 18


그림 1-2 디스플레이 영역 ·············································································· 18
그림 1-3 수직컨트롤 ························································································ 21
그림 1-4 수평컨트롤 ························································································ 22
그림 1-5 트리거 컨트롤 ·················································································· 23
그림 1-6 메뉴 및 컨트롤 버튼 ······································································ 23
그림 1-7 커넥터 단자 ······················································································ 25
그림 1-8 ON/OFF 버튼 위치 ········································································ 25
그림 1-9 프로브 셋팅 ······················································································ 26
그림 1-10 AUTOSET 후 디스플레이 ····························································· 26
그림 1-11 오실로스코프 사용예 ······································································ 27
그림 1-12 함수발생기 전면판 ·········································································· 28
그림 1-13 출력파형 및 위상관계 ···································································· 31
그림 2-1 OR 게이트 ························································································ 33
그림 2-2 AND 게이트 ······················································································ 34
그림 2-3 NOT 게이트 ······················································································ 34
그림 2-4 NAND 게이트 ··················································································· 35
그림 2-5 NOR 게이트 ····················································································· 35
그림 2-6 XOR 게이트 ······················································································ 36
그림 2-7 조합 논리회로의 예1 ······································································ 37
그림 2-8 조합 논리회로의 예2 ······································································ 37
그림 3-1 교환법칙 ···························································································· 42
그림 3-2 결합법칙 ···························································································· 42
그림 3-3 분배법칙 ···························································································· 43
그림 3-4 흡수법칙 ···························································································· 44
그림 3-5 드모르강의 정리 1 ·········································································· 45
그림 3-6 드모르강의 정리 2 ·········································································· 45
그림 3-7 카노맵(Karnaugh map) ································································· 46
그림 3-8 카노맵 묶는 예 ················································································ 47
그림 3-9 게이트를 사용한 논리함수의 구현 ·············································· 48
그림 3-10 논리회로의 예1 ··············································································· 50
그림 3-11 논리회로의 예2 ··············································································· 50
그림 3-12 논리회로의 예3 ··············································································· 50
그림 3-13 논리회로의 예4 ··············································································· 51
그림 3-14 논리회로의 예5 ··············································································· 51
그림 3-15 논리회로의 예6 ··············································································· 52
그림 4-1 NOR 게이트를 이용한 RS 래치 ·················································· 56
그림 4-2 NAND게이트를 이용한 RS 래치 ·················································· 57
그림 4-3 클럭 동기 RS 플립플롭 ································································· 59
그림 4-4 D 플립플롭 ······················································································· 61
그림 4-5 JK 플립플롭 ····················································································· 62
그림 4-6 PR과 CLR 단자를 갖는 JK 플립플롭 ········································ 63
그림 4-7 T 플립플롭 ························································································ 65
그림 4-8 에지 트리거드와 레벨드리거드 플립플롭 타이밍도 ················ 66
그림 4-9 D 플립플롭의 실험 회로 ······························································· 68
그림 4-10 JK 플립플롭의 실험 회로 ····························································· 68
그림 5-1 2-to-4 디코더(Ⅰ) ·········································································· 72
그림 5-2 2-to-4 디코더(Ⅱ) ·········································································· 73
그림 5-3 대표적인 디코더 IC ········································································ 73
그림 5-4 대표적인 디코더 사용예(어드레스 디코더) ······························· 74
그림 5-5 인에이블 제어신호를 갖는 2-to-4 디코더 ······························· 75
그림 5-6 4-to-2 인코더 ················································································· 76
그림 5-7 4-to-2 인코더 설계 ······································································· 77
그림 5-8 4-to-2 우선순위 인코더 ······························································· 78
그림 5-9 2개의 4-to-2 우선순위 인코더 이용한
8-to-3 우선순위 인코더 ······························································· 79
그림 5-10 4-to-1 멀티플렉서 ········································································ 80
그림 5-11 1-to-4 디멀티플렉서 ···································································· 81
그림 5-12 디코더 응용 회로 ············································································ 82
그림 5-13 디코더와 인코더 응용회로 ···························································· 83
그림 5-14 멀티플렉서와 디멀티플렉서 응용회로 ········································ 83
그림 6-1 반가산기 회로 ·················································································· 88
그림 6-2 전가산기 회로 ·················································································· 89
그림 6-3 전가산기 블록 다이어그램 ···························································· 89
그림 6-4 74181의 핀 배열구조 ···································································· 90
그림 6-5 74181의 Operands ········································································ 91
그림 6-6 7-세그먼트 구조와 10진수 표시방법 ········································· 93
그림 6-7 공통 애노드형과 공통 캐소드형 7-세그먼트 구조 ················· 94
그림 6-8 BCD-to-7 세그먼트 디코더 ························································ 94
그림 6-9 반가산기 실험 회로 ········································································ 96
그림 6-10 전가산기 실험 회로 ········································································ 97
그림 6-11 4비트 가감산회로 ··········································································· 98
그림 7-1 상태도의 예 ···················································································· 104
그림 7-2 카노맵(Karnaugh map) ······························································· 105
그림 7-3 완성된 회로도 ················································································ 106
그림 7-4 3비트 이진 리플 카운터 ····························································· 107
그림 7-5 D-플립플롭을 이용한 T-플립플롭 구현 ································· 108
그림 7-6 JK-플립플롭을 이용한 T-플립플롭 ·········································· 108
그림 7-7 셋업 타임, 홀드 타임, 전달지연시간 ······································· 110
그림 7-8 타이밍 문제 ···················································································· 111
그림 7-9 4상태를 가진 상태도 ··································································· 113
그림 7-10 4비트 이진 리플 카운터 실험 회로 ········································· 114
그림 8-1 직렬 인에이블 논리를 가진 동기식 4비트 이진 카운터 ····· 118
그림 8-2 74x163에 대한 논리기호 ·························································· 119
그림 8-3 2비트 업 카운터의 상태도 ························································· 119
그림 8-4 2 비트 다운 카운터의 상태도 ··················································· 120
그림 8-5 병렬 인에이블 논리를 가진 동기식 4비트 2진 카운터 ······· 121
그림 8-6 D 플립플롭으로 구성된 4비트 레지스터 ································ 122
그림 8-7 입력 선택 레지스터 ······································································ 123
그림 8-8 4비트 병렬입력/병렬출력 시프트 레지스터의 구조 ·············· 124
그림 8-9 4비트 동기식 Up 카운터 ···························································· 125
그림 8-10 4비트 동기식 Down 카운터 ······················································ 126
그림 8-11 4비트 유니버설 시프트 레지스터 회로의 예 ······················· 127
그림 9-1 MAX+PLUS II 학생버전 선택 ····················································· 132
그림 9-2 MAX+PLUS II 버전 체크 ····························································· 132
그림 9-3 MAX+PLUS II 설치를 위한 하드디스크 번호 확인 ··············· 132
그림 9-4 MAX+PLUS II 하드디스크 볼륨 번호 작성 ····························· 133
그림 9-5 MAX+PLUS II 사용자 정보 작성 ··············································· 133
그림 9-6 라이센스 획득 ················································································ 134
그림 9-7 MAX+PLUS II의 구성 ··································································· 134
그림 9-8 MAX+PLUS II의 컴파일러 구성도 ············································· 135
그림 9-9 MAX+PLUS II의 검증 과정도 ····················································· 136
그림 9-10 MAX+PLUS II 초기화면 ······························································ 137
그림 9-11 MAX+PLUS II Editor 선택화면 ················································· 137
그림 9-12 MAX+PLUS II Text Editor 초기화면 ······································· 138
그림 9-13 Inverter, AND, OR 게이트 ························································· 138
그림 9-14 Entity 작성 ····················································································· 139
그림 9-15 Architecture 구현 ········································································· 139
그림 9-16 AND, OR, Inverter 프로그래밍 ················································· 140
그림 9-17 Text Editor로 작성한 설계 파일 저장 ····································· 140
그림 9-18 코딩의 Project 셋팅 ···································································· 141
그림 9-19 컴파일 수행 화면 ········································································· 141
그림 9-20 컴파일 결과 화면 ········································································· 142
그림 9-21 WaveForm Editor 초기화면 ······················································· 142
그림 9-22 입출력 포트의 Waveform 연동 ················································· 143
그림 9-23 AND, OR, Inverter의 시뮬레이션 결과 ··································· 144
그림 10-1 NOT 게이트와 진리표 ································································· 161
그림 10-2 NAND 게이트와 진리표 ······························································ 162
그림 10-3 XOR 게이트와 진리표 ································································· 164
그림 11-1 XNOR 게이트 ················································································ 170
그림 11-2 XNOR 회로도 ················································································ 171
그림 11-3 비교기 코딩 예 ············································································· 171
그림 11-4 비교기의 컴파일 수행 화면 ······················································· 172
그림 11-5 비교기의 입력파형 시뮬레이션 결과 화면 ····························· 172
그림 11-6 비교기의 Waveform ····································································· 173
그림 11-7 8-to-3 인코더의 회로도 ···························································· 174
그림 11-8 인코더의 VHDL 코딩 예 ····························································· 175
그림 11-9 인코더의 Compile 수행결과 화면 ············································ 175
그림 11-10 인코더의 시뮬레이션 결과 확인 ············································· 176
그림 11-11 Encoder의 시뮬레이션 결과 Waveform ······························· 176
그림 12-1 순차회로 블록도 ··········································································· 187
그림 12-2 D 래치 ···························································································· 188
그림 12-3 JK 플립플롭의 코딩 예 ······························································· 189
그림 12-4 VHDL을 이용한 JK플립플롭의 구현 ········································ 190
그림 12-5 JK 플립플롭 출력 결과 ······························································· 190
그림 12-6 카운터 상태도와 기호 ································································· 191
그림 12-7 D 래치 Waveform 출력파형 ······················································ 193
그림 12-8 D 플립플롭 Waveform 출력파형 ·············································· 194
그림 12-9 4비트 동기식 이진 카운터 Waveform 출력파형 ·················· 195
표 목차

표 2-1 그림 2-7 회로의 진리표 ··································································· 39


표 2-2 그림 2-8 회로의 진리표 ··································································· 39
표 3-1 논리동작 ································································································ 41
표 3-2 진리표에 의한 회로의 기능표현 ······················································ 46
표 3-3 진리표 ···································································································· 49
표 3-4 그림 3-10 회로의 진리표 ································································· 52
표 3-5 그림 3-11 회로의 진리표 ································································· 53
표 3-6 그림 3-12 회로의 진리표 ································································· 53
표 3-7 그림 3-13 회로의 진리표 ································································· 53
표 3-8 그림 3-14 회로의 진리표 ································································· 54
표 3-9 그림 3-15 회로의 진리표 ································································· 54
표 4-1 NOR 게이트 RS 래치 동작 ······························································ 57
표 4-2 NAND 게이트 RS 래치 동작 ···························································· 58
표 4-3 클럭 동기 RS 플립플롭 동작 ··························································· 60
표 4-4 D 플립플롭 동작 ················································································· 61
표 4-5 JK 플립플롭 동작 ··············································································· 63
표 4-6 T 플립플롭 동작 ·················································································· 65
표 4-7 RS 래치의 기능표 ··············································································· 69
표 4-8 그림 4-9 회로의 기능표 ··································································· 69
표 4-9 그림 4-10 회로의 기능표 ································································· 70
표 5-1 그림 5-12 회로의 진리표 ································································· 84
표 5-2 그림 5-13 회로의 진리표 ································································· 84
표 5-3 그림 5-14 회로의 진리표 ································································· 85
표 6-1 반가산기 진리표 ·················································································· 87
표 6-2 전가산기 진리표 ·················································································· 88
표 6-3 74181의 기능(Active-High & Active-Low Data) ······················ 92
표 6-4 7-세그먼트 디코더의 진리표 (공통 캐소드의 경우) ·················· 95
표 6-5 그림 6-11 회로의 기능표 ································································· 96
표 6-6 그림 6-9 회로의 진리표 ································································· 100
표 6-7 그림 6-10 회로의 진리표 ······························································ 100
표 6-8 그림 6-11 회로의 기능표 ······························································ 101
표 6-9 ALU(74181) 회로(조건1)의 기능표 ·············································· 101
표 6-10 ALU(74181) 회로(조건2)의 기능표 ·············································· 102
표 7-1 천이표 ·································································································· 104
표 7-2 그림 7-9 상태도의 천이표 ····························································· 115
표 7-3 그림 7-10 회로의 천이표 ······························································ 115
표 8-1 그림 8-9 회로의 천이표 ································································· 128
표 8-2 그림 8-10 회로의 천이표 ······························································ 129
표 10-1 연산자 우선순위 ··············································································· 160
표 11-1 8-to-3 인코더의 진리표 ································································ 173
Data sheet 목차

74LS00 Quad 2-Input OR Gate ································································ 200


74LS02 Quad 2-Input NOR Gate ····························································· 202
74LS04 Hex Inverter ······················································································ 204
74LS08 Quad 2-Input AND Gate ····························································· 206
74LS10 Triple 3-Input NAND Gate ·························································· 208
74LS11 Triple 3-Input Positive AND Gate ············································· 210
74LS32 Quad 2-Input OR Gate ································································ 221
74LS47 BCD to 7-Segment Decoder ····················································· 223
74LS48 BCD to 7-Segment Decoder ····················································· 227
74LS74 Dual D Type Positive Edge Triggered Flip-Flop ················· 230
74LS75(77) 4-Bit D Latch ············································································ 234
74LS76 Dual JK Flip-Flop with Set and Clear ···································· 238
74LS83 4-Bit Binary Full Adder with Fast Carry ································· 240
74LS86 Quad 2-Input Exclusive OR Gate ············································· 243
74LS138 1-of-8 Decoder/Demultiplexer ·················································· 245
74LS139 Dual 1-of-4 Decoder/Demultiplexer ········································ 250
74LS147(148) 10-to-4-and 8-to-3 Priority Encoders ································· 254
74LS153 Dual 4-Input Multiplexer ······························································ 259
74LS181 Arithmetic and Logic Units/Function Generators ················· 263
74LS194 4-Bit Bidirectional Universal Shift Register ··························· 273
1장 오실로스코프와 함수발생기 사용법 17

1장
오실로스코프와 함수발생기 사용법

1. 목적

가. 오실로스코프의 원리를 이해하고 그 작동 방법을 익힌다.


나. 함수발생기의 원리를 이해하고 그 작동 방법을 익힌다.

2. 이론

가. 오실로스코프(Oscilloscope)1)
전기신호를 눈으로 볼 수는 없다. 이러한 전기 신호를 파형으로 표현
하여 어떤 모양을 하고 있는지를 눈으로 볼 수 있도록 하는 계측기가
오실로스코프이다. 오실로스코프를 사용하면 전기 신호가 시간에 따라
변화하는 모습을 볼 수 있다. 오실로스코프는 주파수, 펄스 전압, 충격
성 전압, 주기, 파형 등을 측정할 수 있는 계기이며, 전자 기기의 특성
관측이나 수리, 조정 등에도 많이 쓰이는 측정기이다.

1) 작동기본사항
프론트패널
오실로스코프의 디스플레이 영역과 각종 기능을 조작할 수 있는 컨트롤
영역으로 채워져 있다.

1) 오실로스코프는 Tektronix TDS1000series를 기본 모델로 설명


18 6

[그림 1-1] 2채널 모델 오실로스코프

디스플레이 영역
디스플레이 영역은 파형을 표시할 뿐만 아니라 오실로스코프 컨트롤 설
정에 관한 많은 세부사항들을 표시하고 있다.

[그림 1-2] 디스플레이 영역

① 아이콘 디스플레이는 획득 모드를 보여준다.

샘플모드
1장 오실로스코프와 함수발생기 사용법 19

피크 검출 모드

평균모드

② 트리거란 오실로스코프가 파형 획득을 시작할 조건을 설정하는 것이


다. 즉 입력 신호가 설정된 조건을 만족하게 되면 트리거 되었다고
할 수 있다. 트리거 상태는 다음과 같다.
준비(Armed)
오실로스코프가 사전 트리거 데이터를 획득 중이다. 이 상태에서는 모
든 트리거가 무시된다.
준비(Ready)
모든 사전 트리거 데이터가 획득되었고 오실로스코프는 트리거를 받을
준비가 되어있다.
트리거(Trig'd)
오실로스코프가 트리거 조건에 따라 트리거된 데이터를 획득중이다.
중지(Stop)
오실로스코프가 데이터에서 받아들여 보여주는 파형의 획득을 중지한다.
획득완료(Acq. Complete)
오실로스코프가 단일 파형 획득을 완료한다.
자동(Auto)
오실로스코프는 자동 모드에 있으며 트리거가 없는 상태에서 파형을 획
득중이다.
스캔(Scan)
오실로스코프가 스캔모드에서 계속해서 파형을 획득하고 표시하는 중이다.

③ 마커는 수평 트리거 위치를 보여준다. 수평 위치 놉을 돌려 마커 위


치를 조절한다.

④ 판독값은 중앙계수선의 시간을 표시한다. 트리거 시간은 제로이다.


20 6

⑤ 마커는 에지 또는 펄스 폭 트리거 레벨을 나타낸다.

⑥ 화면 마커는 표시된 파형의 접지 기준 포인트를 보여준다. 마커가


없을 경우 채널은 표시되지 않는다.

⑦ 화살표 아이콘은 파형이 반전된 것을 나타낸다.

⑧ 판독값은 채널의 수직 스케일 계수를 보여준다.

⑨ Bw 아이콘은 채널의 대역폭이 제한되는 것을 나타낸다.

⑩ 판독값은 주 시간축 설정을 보여준다.

⑪ 판독값은 윈도우 시간축을 사용 중인 경우 그 설정을 보여준다.

⑫ 판독값은 트리거링에 사용되는 트리거 소스를 보여준다.

⑬ 아이콘은 선택된 트리거 종류를 다음과 같이 보여준다.


상승 에지를 위한 에지 트리거
하강 에지를 위한 에지 트리거

라인 동기를 위한 비디오 트리거


필드 동기를 위한 비디오 트리거
펄스 폭 트리거, 포지티브 극성
펄스 폭 트리거, 네거티브 극성

⑭ 판독값은 에지 또는 펄스 폭 트리거 레벨을 나타낸다.

⑮ 표시 영역은 유용한 메시지를 표시하며 일부 메시지는 3초 동안만


표시된다. 저장된 파형을 호출할 경우 RefA2) 1.00 V 500㎲와 같은
기준 파형에 대한 정보를 보여준다.

2) RefA : 기준 파형 A
1장 오실로스코프와 함수발생기 사용법 21

⑯ 판독값은 트리거 주파수를 보여준다.

수직컨트롤

[그림 1-3] 수직컨트롤

CH1, CH2, CURSOR1 및 CURSOR2 위치


파형을 수직으로 배치한다. 커서를 표시하고 사용할 때 LED가 켜져 놉
의 대체 기능이 커서를 이동하는 것을 나타낸다.

CH1, CH2, CH3 및 CH4 메뉴


수직 메뉴 선택을 표시하고 채널 파형 디스플레이를 반전한다.

전압눈금(CH1, CH2, CH3 및 CH4)


교정된 스케일 계수를 선택한다.

MATH메뉴
파형 math 연산 메뉴를 표시하고 math 파형을 반전하는데 사용할 수도 있다.

위치
모든 채널과 math 파형의 수평 위치를 조정한다.

수평메뉴
수평메뉴를 표시한다.
22 6

수평컨트롤

[그림 1-4] 수평컨트롤

제로로 설정
수평위치를 제로로 설정한다.

SEC/DIV
주 또는 윈도우 시간축에 대한 수평 시간/구간 (스케일계수)을 선택한
다. 확대 구역이 활성화되면 윈도우 시간축을 변경하여 확대 구역의 폭
을 변경한다.

레벨 및 사용자 선택
에지 트리거를 사용할 때 레벨 놉의 기본 기능은 획득이 발생하도록 신
호가 통과해야 하는 진폭 레벨을 설정하는 것이다. 또한 놉을 사용하여
사용자 선택 대체 기능을 수행할 수도 있다. 대체 기능을 나타내기 위
해 놉 아래 LED가 켜진다.

트리거 메뉴
트리거메뉴를 표시한다.
1장 오실로스코프와 함수발생기 사용법 23

트리거 컨트롤

[그림 1-5] 트리거 컨트롤

SET TO 50%
트리거 레벨은 트리거 신호의 피크 사이의 수직 중간 지점으로 설정된다.

FORCE TRIG
적절한 트리거 신호에 관계없이 획득을 완료한다. 이 버튼은 획득이 이
미 중지된 경우 효과가 없다.

TRIG VIEW(트리거 보기)


버튼을 누른 상태에서 채널 파형의 자리에 트리거 파형을 표시한다. 이
것을 사용하여 트리거 설정이 트리거 커플링과 같은 트리거 신호에 어
떻게 영향을 미치는지 확인할 수 있다.

메뉴 및 컨트롤 버튼

[그림 1-6] 메뉴 및 컨트롤 버튼


24 6

SAVE/RECALL
설정 및 파형에 대한 저장/호출 메뉴를 표시한다.

MEASURE
자동 측정 메뉴를 표시한다.

ACQUIRE
획득메뉴를 표시한다.

DISPLAY
디스플레이 메뉴를 표시한다.

CURSOR
커서 메뉴를 표시한다. 수직 위치 컨트롤은 커서 메뉴를 표시하는 동안
커서 위치를 조정하고 커서가 활성화된다. 커서 메뉴를 떠난 후에 종료
옵션이 OFF로 설정되어 있지 않은 경우 커서는 표시되지만 조정할 수
는 없다.

UTILITY
유틸리티 메뉴를 표시한다.

도움말
도움말 메뉴를 표시한다.

기본값 설정
공장 설정을 호출한다.

AUTOSET
입력 신호의 유용한 디스플레이를 생성하도록 오실로스코프 컨트롤을
자동으로 설정한다.

SINGLE SEQ
1장 오실로스코프와 함수발생기 사용법 25

단일 파형을 획득한 다음 중지한다.

RUN/STOP
파형을 연속적으로 획득하거나 획득을 중지한다.

인쇄
인쇄 작업을 시작한다. Centronics, RS-232 또는 GPIB 포트가 있는
확장 모듈이 필요하다.

커넥터

[그림 1-7] 커넥터 단자

PROBE COMP.
전압 프로브 보정 출력 및 접지. 프로브를 오실로스코프 입력 회로에
전기적으로 일치시키는데 사용한다. 프로브 보정 접지 및 BNC 절연은
접지에 연결되고 접지 단자로 간주된다.

2) 기능확인
다음과 같은 간단한 기능 확인을 수행하여 오실로스코프가 제대로 작
동하는지 확인한다. 먼저 오실로스코프의 전원을 켠다. 디스플레이에
모든 전원켜기 테스트가 합격했음이 표시될 때까지 기다린다. 기본값
설정 버튼을 누른다. 기본 프로브 옵션 감쇠 설정은 10X이다.

[그림 1-8] ON/OFF 버튼 위치


26 6

스위치를 프로브에서 10X로 설정하고 프로브를 오실로스코프에 있는


채널 1에 연결한다. 이렇게 하려면 프로브 커넥터의 슬롯을 CH1 BNC
의 키에 맞추고 눌러 연결하고 오른쪽으로 비틀어 프로브를 제 자리에
고정한다.

[그림 1-9] 프로브 셋팅

AUTOSET 버튼을 누른다. 몇 초 내에 1kHz에서 약 5V 첨두치의 디


스플레이에 구형파가 나타나야 한다.

[그림 1-10] AUTOSET 후 디스플레이

3) 간단한 설정
회로에 신호가 나타나도록 해야 하는데 신호의 진폭이나 주파수를 모
르고 있다. 신호를 신속하게 표시하고 주파수, 시간간격 및 첨두치 진
폭을 측정하려 한다.
1장 오실로스코프와 함수발생기 사용법 27

[그림 1-11] 오실로스코프 사용예

자동 설정 사용
신호를 신속하게 표시하려면 다음 단계를 수행한다.

① CH1 메뉴 버튼을 누르고 프로브 옵션 감쇠량을 10X로 설정한다.


② 스위치를 프로브에서 10X로 설정한다.
③ 채널1 프로브를 신호에 연결한다.
④ AUTOSET 버튼을 누른다.

오실로스코프는 수직, 수평 및 트리거 컨트롤을 자동으로 설정한다. 파형


디스플레이를 최적화하려면 이러한 컨트롤을 수동으로 조정할 수 있다.

나. 함수발생기(Function Generator)3)
함수발생기는 회로에서 필요로 하는 여러 가지 신호원(signal source)
을 만들어주는 장치이다. 일반적으로, 함수발생기는 오실레이터
(Oscillator)로부터 생성되는 정현파, 정현파를 비교기에 입력하여 만들
어지는 구형파, 그리고 구형파를 적분하여 만들어지는 톱니파 등 가장
널리 쓰이는 이 세 가지 신호들을 만들어준다. 설정 단자를 사용하여
출력 신호의 종류, 주파수, 진폭, DC OFFSET, 그리고 Duty Ratio 등을
조절할 수 있다.

3) 함수발생기는 Goldstar FG8000series를 기본으로 설명


28 6

1) 함수발생기의 각 부의 명칭 및 기능

[그림 1-12] 함수발생기 전면판

① GATE 시간 표시기 (G.T)


내부/외부 주파수 측정시의 게이트 시간을 표시한다.

② 단위표시 램프
화면에 표시된 측정값의 주파수단위를 표시한다.

③ 측정신호 선택스위치
내부발생주파수 또는 외부입력주파수 측정을 선택한다.

④ 주파수 범위선택 스위치


원하는 발생주파수의 범위를 선택한다.

⑤ 감쇄기
출력되고 있는 신호의 크기를 20 dB 감쇄 시킨다.

⑥ 파형선택 스위치
출력파형을 선택하는 스위치로 정현파, 삼각파, 구형파를 발생시킨다.

⑦ 소인(SWEEP) 속도 조절 손잡이
1장 오실로스코프와 함수발생기 사용법 29

내부 소인기능 동작시 소인속도를 조절한다.

⑧ 주파수 표시기
내부/외부 주파수를 읽어내어 값을 표시한다.

⑨ 전원스위치
스위치를 누르면 전원이 켜지고, 다시 한번 누르면 전원이 꺼진다.

 주파수 다이알
이 다이알을 돌려 발생주파수를 조정한다.

 외부주파수 입력단자
외부주파수를 측정하고자 할 때 신호를 이곳에 연결한다.

 VCF 입력단자
신호를 외부에서 입력하고자 할 때 이곳에 신호원을 연결한다.

 출력레벨 조절기
조절기를 좌우로 돌리면 출력신호의 크기가 증감된다.

 출력단자
본 기기에서 발생되는 신호가 출력되는 곳이다.

 TTL/CMOS 출력단자
TTL/CMOS 신호를 사용할 때 이 단자에 연결한다.

 DC OFFSET 조절 손잡이
출력 신호의 DC OFFSET을 조절하기 위해서는 이 손잡이를 조절한다.

 소인폭 조절 손잡이
소인기능 사용시 소인폭을 조절한다.
30 6

 SYMMETRY 조절 손잡이
출력파형의 대칭 또는 경사를 조절 하고자 할 때 사용한다.

 TTL/CMOS 조절 손잡이
CMOS 레벨 을 조절하고자 할 때 이 손잡이를 당겨서 원하는 레벨로
조절한다.

2) 함수발생기의 초기 설정
① 전원을 켜기 전에 입력 전압과 장비의 후면판의 전압셀렉터
(110/220V)가 일치하는지를 확인한다.

② 주파수 범위 선택 스위치를 선택한다.

③ 파형 선택 스위치를 이용하여 정현파, 삼각파, 혹은 구형파를 선택


한다.

④ 증폭도 가변스위치를 중간으로 놓는다.

⑤ 전원스위치를 눌러 장비의 작동을 준비한다. 장비출력신호가 안정되


기 까지 약 10분 정도의 예열시간을 준다.

⑥ 파형 선택 스위치를 이용하여 정현파, 삼각파 및 구형파가 정상적으


로 출력되는지 확인한다.

3) 함수 발생기 사용법
① 기능 스위치 및 조절기들을 아래와 같이 놓는다.
- SWEEP WIDTH : OFF
- SYM : OFF
- DC OFFSET : OFF
- ATTENUATOR : 0 dB

② 주파수 선택 스위치를 사용하여 발생시키고자 하는 주파수의 범위를


1장 오실로스코프와 함수발생기 사용법 31

선택하고, 주파수 다이알을 돌려서 원하는 주파수로 조정한다.


예) 5KHz주파수를 발생시키고자 할 때
a. 주파수 선택스위치 중 "x1K"을 누른다.
b. 주파수 다이알을 중간위치에 위치시킨다.
c. 그러면 원하는 약 5KHz 주파수가 발생된다.
d. 파형 선택 스위치를 이용하여 그림 1-13과 같은 정현파, 삼각파
혹은 구형파 가운데 원하는 파형을 선택한다.
e. 출력신호를 공급하기 원하는 곳에 50Ω 출력단자로부터 케이블을
연결한다.
f. 출력레벨 조절기를 사용하여 원하는 출력파형의 크기로 맞춘다.
g. DC OFFSET 조절기를 사용하여 출력신호에 “+” 또는 “-”의 원
하는 직류전압 오프셋을 가해준다.
h. 또한 고정된 레벨의 TTL 구형파를 출력단자에서 사용할 수 있으
며, 이 신호는 출력레벨 조절기, 감쇄기, DC OFFSET조절기의
영향을 받지 않는다.

[그림 1-13] 출력파형 및 위상관계

3. 실험 기기 및 부품

오실로스코프 1
함수발생기 1
32 6

4. 실험

가. 오실로스코프의 스트로브 테스트 단자를 통해 자기 진단을 해 보라.


나. DC 1V, 3V, 5V의 전압을 오실로스코프로 측정하라.
다. 함수 발생기로 AC 1V, 3V, 5V (100Hz, 1KHz, 10KHz)의 전압을 발
생시킨 후 오실로스코프로 함수발생기의 발생 전압을 측정하라. (주
파수, 크기확인)
2장 일반 논리 게이트 응용 33

2장
일반 논리 게이트 응용

1. 목적

가. 논리회로의 기본이 되는 게이트들의 기본논리와 동작원리를 이해한다.


나. 논리게이트들을 이용하여 논리식을 구현하고 동작을 확인한다.

2. 이론

가. 기본 논리게이트
1) OR 게이트

A B F
A 1 L L L
3 F = A+B
2 L H H
B
H L H
H H H
(a) 표시기호 (b) 진리표
[그림 2-1] OR 게이트

두 개 이상의 입력 신호에 대하여 한 개의 출력 신호를 얻는 게이트


로서 논리합을 나타내는데, 입력 신호가 모두 ‘L’인 경우에만 출력 신호
는 ‘L’이 되고, 입력 신호 중에 ‘H’인 신호가 하나라도 있으면, 출력 신
호는 ‘H’가 된다. OR 게이트의 출력에 대한 논리식은 F = A + B 이
다.(정논리에서 OR 게이트가 부논리에서는 AND 게이트로 사용됨을 유
의하라. 5장의 Active-High와 Active-Low 참조)
34 6

2) AND 게이트

A B F
A 1 L L L
3 F = AB
B 2 L H L
H L L
H H H
(a) 표시기호 (b) 진리표
[그림 2-2] AND 게이트

두 개 이상의 입력 신호에 대하여 한 개의 출력 신호를 얻는 게이트


로서 논리곱을 나타내는데, 입력 신호가 모두 ‘H’인 경우에만 출력 신
호는 ‘H’가 되고, 입력 신호 중에 ‘L’인 입력 신호가 하나라도 있을 경
우에는 출력 신호는 ‘L’이 된다. AND 게이트의 출력에 대한 논리식은
F = AB 이다. (정논리에서 AND 게이트가 부논리에서는 OR 게이트로
사용됨을 유의하라. 5장의 Active-High와 Active-Low 참조)

3) NOT 게이트

A F
A 1 2 F = A L H
H L

(a) 표시기호 (b) 진리표


[그림 2-3] NOT 게이트

한 개의 입력 신호와 한 개의 출력 신호를 갖는 게이트로서 논리 부


정을 나타내는데, 이진수의 논리역을 만들어 낸다. 입력이 ‘H’인 경우에
는 출력은 ‘L’이 되고, 입력이 ‘L’인 경우는 출력이 ‘H’가 된다. 이 게이
트를 인버터(inverter)라고도 한다. NOT 게이트의 출력에 대한 논리식은
F = 
A 이다.
2장 일반 논리 게이트 응용 35

4) NAND 게이트

A B F
A 1 L L H
3
2
F = AB L H H
B
H L H
H H L
(a) 표시기호 (b) 진리표
[그림 2-4] NAND 게이트

두 개 이상의 입력 신호에 대하여 한 개의 출력 신호를 얻는 게이트


로서, 입력 신호가 모두 ‘H’인 경우에만 출력 신호는 ‘L’이 되고, 그렇
지 않을 경우에는 출력 신호는 ‘H’가 된다. 이 게이트는 AND 게이트와
는 반대로 작동하는 게이트로서, NOT AND의 의미로 NAND 게이트라
고 부른다. NAND 게이트의 출력에 대한 논리식은 F = ( 
AB ) = 
A 
B
(드모르강의 법칙) 이다.

5) NOR 게이트

A B F
A 2 L L H
1 F = A+B
3 L H L
B
H L L
H H L
(a) 표시기호 (b) 진리표
[그림 2-5] NOR 게이트

두 개 이상의 입력 신호에 대하여 한 개의 출력 신호를 얻는 게이트


로서, 입력 신호가 모두 ‘L’인 경우에만 출력 신호는 ‘H’가 되고, 입력
신호 중에 하나라도 ‘H’가 있는 경우는 출력 신호는 ‘L’이 된다. 이 게
이트는 OR 게이트와는 반대로 작동하는 게이트로서, NOT OR의 의미
로 NOR 게이트라고 부른다. NOR 게이트의 출력에 대한 논리식은 F =
(
A  B) = 
A∙ 
B(드모르강의 법칙) 이다.
36 6

6) XOR 게이트

A B F
A 1 L L L
3 F = A B
2 L H H
B
H L H
H H L
(a) 표시기호 (b) 진리표
[그림 2-6] XOR 게이트

XOR(eXclusive OR) 게이트는 두 개 이상의 입력 신호에 대하여 한


개의 출력 신호를 얻으며, 입력 신호 중 홀수 개의 ‘H’가 입력된 경우에
출력 신호는 ‘H’가 된다. 그렇지 않은 경우에는 출력 신호는 ‘L’이 된다.
XOR 게이트의 출력에 대한 논리식은 F = A ⊕ B = A 
B 
AB 이다.

3. 예비보고

가. 이 장의 실험 목적에 대해서 스스로 생각해 보고 기술하라.


나. 3 입력 AND 게이트와 OR 게이트에 대한 진리표를 작성하라.
다. 3 입력 AND 게이트와 OR 게이트를 2입력의 회로에 사용할 경우 나
머지 한 개의 입력은 어떻게 연결해야 하는지 설명하라.
라. AND, OR, NOT 게이트를 이용하여 NAND, NOR, XOR 게이트를 구
현하는 방법을 기술하라.
마. NAND 혹은 NOR 게이트를 사용하여 AND, OR, NOT 게이트를 구현
하는 방법을 기술하라.

4. 실험 기기 및 부품

74x00 1
74x02 1
74x04 1
2장 일반 논리 게이트 응용 37

74x08 1
74x32 1
74x86 1
1.5k 저항 1

5. 실험

가. 다음 순서에 따라 회로를 구성하고 출력의 상태를 확인하라.


1) 74x00, 74x02, 74x08, 74x32, 74x86을 이용하여 회로를 구성하라.
2) A와 B의 값을 ‘L’과 ‘H’로 변화시키면서 출력의 상태를 확인한다.

A 1
3 1
B 2 3 F1
2
7408
7486

C 2
1 1 2 F2
D 3
7404
7402

[그림 2-7] 조합 논리회로의 예1

A 1
3 1
B 2 3 2
2 1 F1
7400 3
7432
7402

C
1 2 F2
7404

[그림 2-8] 조합 논리회로의 예2


38 6

나. XOR게이트(X=A⊕B)를 AND/OR/NOT 게이트를 이용하여 설계하고


출력의 상태를 확인하라.
1) 회로를 설계한다.
2) 입력을 변화시키면서 출력의 상태를 확인하고 XOR게이트의 진리표와
비교하라.
2장 일반 논리 게이트 응용 39

6. 결과보고 및 검토

가. 그림 2-7과 그림 2-8의 회로에 대하여 다음의 진리표를 완성하라.

[표 2-1] 그림 2-7 회로의 진리표


A B C D F1 F2
L L L L
L L L H
L L H L
L L H H
L H L L
L H L H
L H H L
L H H H
H L L L
H L L H
H L H L
H L H H
H H L L
H H L H
H H H L
H H H H

[표 2-2] 그림 2-8 회로의 진리표


A B C F1 F2
L L L
L L H
L H L
L H H
H L L
H L H
H H L
H H H
40 6

나. XOR게이트(X=A⊕B)를 AND/OR/NOT 게이트를 이용하여 설계하고


진리표를 구하라.
3장 진리표 41

3장
진리표

1. 목적

가. 부울대수의 기본 논리 연산과 정리를 이해한다.


나. 논리회로를 이용하여 논리식을 표현하고, 회로를 간략화하는 방법을
공부한다.
다. 드모르강의 정리를 이해하고 논리식에 적용하는 방법을 공부한다.

2. 이론

가. 기본 논리 연산 (Logical Operation)

[표 3-1] 논리동작

OR 덧셈 또는 AB C
OR 연산이라고 A 1  
3
논리합 B 2
F = A+B  
하며 기호는
 
(+)이다.  

AND 곱셈 또는 A∙B  C
AND 연산이라 A 1 ∙  
3
논리곱 B 2
F = AB ∙  
고 하며 기호는 ∙  
(•)이다. ∙  

NOT 연산이라 
A B
논리보수 또는
고 하며 기호는 A 1 2 F = A  
역(inversion)   
(-)이다.
42 6

나. 부울대수의 정리와 법칙
1) 교환법칙
AB  B A
1

1
B
A 3
→ 3 F = B+A
2

2
F = A+B A
B

A∙B  B∙A
1 B 1
F = BA
A
2
3
F = AB → A 2
3

[그림 3-1] 교환법칙

2) 결합법칙
A  B  C   A  B   C  A  B  C
1 A 1
A 3 3 A+B
2 F=A+B+C B 2

1
→ 1
B 3 3 F=A+B+C
2 C 2
C B+C

ABC   AB C  ABC


1 A 1
A 3 3
2 F=ABC B 2


1 1
B 3 3 F=ABC
2 C 2
C

[그림 3-2] 결합법칙


3장 진리표 43

3) 분배법칙
AB  C   AB  AC
1 1 AB
B 3 A 3
2 (B+C) B 2
1
c 3 X
1
→ A
1
2

3 3
2 X c 2
A AC
X=A(B+C) X=AB+AC

[그림 3-3] 분배법칙

4) 흡수법칙
A  A A  
1

1
A=1 3 A=1 3
2

X=1 2 X=1
0 1
1

1
3 A=0 3
A=0
2

X=0 2 X=1
0 1

AA  A A
A 

1 1
A=1 3 A=1 3
2 2 X=1
X=1
A=1 NOT(A)=0

1 1
A=0 3 3
2
A=0
X=0 2 X=1
A=0 NOT (A)=1
44 6

∙A   ∙A  A

1 1
3 A=1 3
A=1 2
2
X=0 X=1
0 1

1 1
A=0 3 3
2 A=0
X=0 2 X=0
0 1

A∙A  A A∙ 
A 
1 A=1 1
A=1 3 3
2 X=1 2 X=0
A=1 NOT(A)=0

1 A=0 1
A=0 3 3
2 X=0 2 X=0
A=0 NOT(A)=1


A A

NOT(A)=1
1 2 1 2
A=0 X=0

NOT(A)=0
1 2 1 2
A=1 X=1

[그림 3-4] 흡수법칙

5) 기타 법칙
A  AB  A  B   A ∙   A
A AB  A  AB   
AB
 A  AB  AB 

 A  A  AB
 AB
3장 진리표 45

다. 드모르강의 정리(DeMorgan's Theorems)


드모르강의 정리(DeMorgan's Theorems)는 수식을 변수의 합이나 곱
의 형태로 서로 바꾸어 식을 단순화하는 데 사용된다.

1) 드모르강의 정리 1

A  B  C ⋯ 
A∙ 
B∙ 
C ∙⋯

OR 연산된 두개 이상의 변수의 보수는 각 개별적인 변수의 보수들을


AND 연산한 것과 등가이다.

A 1 A 1
NOT(A+B) NOT(A)NOT(B)
B 2
3
→ B 2
3

[그림 3-5] 드모르강의 정리 1

2) 드모르강의 정리 2

A ∙ B ∙ C ∙⋯ 
A 
B 
C ⋯

AND 연산된 두개 이상의 변수의 보수는 각 개별적인 변수의 보수들


을 OR 연산한 것과 등가이다.

1
A NOT(AB) A 1
NOT(A)+NOT(B)
2
3
→ B 2
3

[그림 3-6] 드모르강의 정리 2

라. 조합논리회로 설계
조합논리회로는 입력의 조합에 의해서만 출력이 결정되는 회로이다.
조합논리회로를 설계하기 위해서는 우선 설계하려는 회로의 기능을 입
출력관계에 대한 논리식으로 표현하여야 한다. 이 때 모든 경우의 입력
에 대응되는 출력을 고려해야 한다. 또한 회로의 간략화 방법을 이용하
46 6

면 단순한 회로(게이트의 수 혹은 입력의 수가 작은 회로)로 구현할 수


있다. 다음과 같이 간단한 기능을 갖는 회로를 예로 들어 설계과정을
살펴보기로 한다.

입력 : A, B, C
출력 : Y
기능 : ① A, B, C가 모두 ‘H’일 때 출력이 ‘H’
② B, C만이 ‘H’일 때 출력이 ‘H’
③ B만이 ‘H’일 때 출력이 ‘H’
④ 위와 다른 경우의 입력조합일 때 출력이 ‘L’

1) 입력과 출력 관계의 표현
입출력 관계를 표현하는 방법으로 진리표, 논리식 그리고 카노맵
(Karnaugh map)으로 표현하는 방법 등이 있다.

① 진리표로 표현하는 방법

[표 3-2] 진리표에 의한 회로의 기능표현

입력 출력
A B C Y
L L L L
L L H L
L H L H
L H H H
H L L L
H L H L
H H L L
H H H H
3장 진리표 47

② 논리식으로 표현하는 방법
위의 진리표에서 출력 Y를 논리식으로 표현하면 다음과 같다.

Y
A∙ B ∙ 
C 
A∙ B ∙ C  A ∙ B ∙ C (3-1)

③ 카노맵(Karnaugh map)으로 표현하는 방법


위의 진리표를 카노맵으로 표시하면 다음과 같이 표현할 수 있다.

[그림 3-7] 카노맵

2) 간략화
간략화 방법으로는 부울대수의 기본논리와 정리를 이용하는 방법, 카
노맵을 이용하는 방법, Tabular 방법 및 소프트웨어를 이용하는 방법
등이 있으며 여기서는 논리식과 카노맵 방법을 소개한다.

① 논리식과 기본 정리를 이용하는 간략화


앞의 식을 간략화하면 다음의 식과 같다.

Y
A∙ B ∙ 
C  A∙ B ∙ C  A ∙ B ∙ C (3-2)
A∙ B ∙ C 
  A∙ B ∙ C   A∙ B ∙ C  A ∙ B ∙ C
 A∙ B ∙  C  C   B ∙ C ∙  
  A A

 A∙ B  B ∙ C

② 카노맵 방법
카노맵에서 ‘H’를 묶으면 다음과 같고 공통항을 논리식으로 쓰면 아래
와 같다.
48 6

[그림 3-8] 카노맵을 묶는 예

Y 
A∙ B  B ∙ C (3-3)

3) 논리식의 구현
간략화된 논리식을 소자로 구현하는 방법은 사용하는 소자에 따라 다
양하나 여기서는 게이트를 사용하는 방법만을 소개한다. 식3-1은 다음
과 같이 구현 할 수 있다.

A
A 1 2 1 AB
3
2

1 Y=AB+BC
B 3
2

1
3
C 2
BC

[그림 3-9] 게이트를 사용한 논리식의 구현

3. 예비보고

가. 이 장의 실험 목적에 대해서 스스로 생각해 보고 기술하라.


 
나. 진리표를 이용해서 
AB  A  B, 
A 
B  AB 가 성립됨을 보여라.

다. 
ABC  
AB  A  
BC의 관계식을 증명하고, 이를 논리회로로 표현하라.
다. 다음 진리표를 보고 질문에 답하라.
3장 진리표 49

[표 3-3] 진리표
입력 출력
A B C F
L L L H
L L H H
L H L L
L H H L
H L L L
H L H H
H H L L
H H H H

1) 위의 진리표를 논리식으로 표현하라.


2) 위에서 구한 논리식을 이용하여 회로도를 그려라.
3) 카노맵을 이용하여 1)의 논리식을 간략화 하라.
4) 3)의 간략화된 논리식을 회로도로 그려라.
5) 2)과 4)의 회로도를 비교하라.

4. 실험 기기 및 부품

74x04 1
74x08 1
74x32 1

5. 실험

가. 다음의 두 회로를 수식화하고 출력 F1, F2가 동일함을 진리표를 통해


확인하라.
50 6

A 1
3 1 2 F1
B 2
7404
7408

[그림 3-10] 논리회로의 예1

A 1 2
7404
1
3 F2
2

7432
B 1 2
7404

[그림 3-11] 논리회로의 예2

나. 다음 회로의 출력 F를 논리식으로 작성하고 부울 대수를 이용하여 간


단화한 식을 구하고 모든 입력에 대하여 출력이 같음을 확인하라.

A 1
3 F
2

7408
1 2 1
3
7404
2

7432
B

[그림 3-12] 논리회로의 예3


3장 진리표 51

다. 다음 회로를 논리식으로 각각 표현하고 진리표와 부울대수를 이용하


여 출력 F1과 F2가 동일한 식임을 증명하라.

1
3
B

2
1 2
7404
7432 1
3 F1
2

7408

1
1 2
3
7404

2 7432

[그림 3-13] 논리회로의 예4

A 1
3
B 2

7408 1
3 F2
2

1 2 7432
7404
1
3
2

7408
1 2
7404

[그림 3-14] 논리회로의 예5


52 6

라. 다음 회로의 출력 F에 해당하는 진리표와 논리식을 작성하고 카노맵


을 이용하여 간략화 시킨 후 회로를 완성하라.

A
1
3 F
2

B 7408
1 2 1
3
7404
2

C 7432

[그림 3-15] 논리회로의 예6

6. 결과보고 및 검토

가. 그림 3-10과 그림 3-11의 회로를 수식화하고 출력 결과를 확인하여


다음의 진리표를 완성하라.

[표 3-4] 그림 3-10 회로의 진리표

A B F1
L L
L H
H L
H H
3장 진리표 53

[표 3-5] 그림 3-11회로의 진리표

A B F2
L L
L H
H L
H H

나. 그림 3-12 회로의 출력 결과를 확인하여 다음의 진리표를 완성하라.

[표 3-6] 그림 3-12 회로의 진리표

A B F
L L
L H
H L
H H

다. 그림 3-13과 그림 3-14의 출력 결과를 확인하고 비교하라

[표 3-7] 그림 3-13 회로의 진리표

A B F1
L L
L H
H L
H H
54 6

[표 3-8] 그림 3-14 회로의 진리표

A B F2
L L
L H
H L
H H

라. 그림 3-15 회로에 대한 진리표와 카노맵을 완성하고 회로를 설계하라.

[표 3-9] 그림 3-15 회로의 진리표

A B C F
L L L
L L H
L H L
L H H
H L L
H L H
H H L
H H H
4장 각종 Latch와 Flip-Flop 55

4장
각종 Latch와 Flip-Flop

1. 목적

가. 기억소자의 기본 원리를 이해한다.


나. 순차논리회로의 기본 소자인 래치와 플립플롭을 종류 (RS, D, JK, T)
별로 소개하고 이들의 기본 동작, 회로 구성 및 기능표를 이해한다.

2. 이론

디지털 회로는 조합회로(Combinational Circuits)와 순차회로


(Sequential Circuits)로 구분할 수 있으며, 조합회로는 단순히 현재의
입력에 의해서만 출력이 결정되는 회로로 기억능력이 없는 반면에 순차
회로는 현재의 입력뿐만 아니라 회로 내부에 기억된 상태값(과거의 입
력 순서에 의해 결정됨)에 따라 출력값이 결정되는 회로를 말한다. 따
라서 순차회로는 회로 내부에 값들을 기억하기 위한 메모리 소자들을
가지게 되며, 일반적으로 많이 사용되는 메모리 소자로는 플립플롭
(Flip-Flop)이라고 하는 소자가 있다. 플립플롭은 1비트의 정보(‘L' 또는
‘H')를 저장할 수 있는 소자이며, 논리 게이트들을 연결하는 방법에 따
라 다음에 설명하는 바와 같이 다양하게 구성할 수 있다.
래치(Latch)는 기본적인 플립플롭(Basic Flip-Flop)을 말하며, 그림
4-1(a)와 같이 NOR 게이트를 사용하여 구성할 수도 있고, 그림
4-2(a)와 같이 NAND 게이트를 사용하여 구성할 수도 있다. 그림에서
각 게이트의 출력이 다른 게이트의 입력 쪽으로 되돌아가서 연결(궤환)
되는 일종의 피드백(feedback) 경로가 있음에 유의하라.
56 6

가. RS 래치(RS Latch)
RS 래치의 입출력 단자는 각각 2개가 있으며, 입력은 R(Reset)과
S(Set)이고, 출력은 Q 와 
Q 이다. 또한 구성 게이트로는 NOR 게이트를
사용한 것과 NAND 게이트를 사용한 것 등의 2종류가 있다.

1) NOR 게이트를 이용한 RS 래치

2
R 1 Q
3

5
4 Q
S 6

(a) 회로도 (b) 타이밍도

SET 입력 출력
S Q S R Q
L L Q(유지)
L H L
R CLR Q H L H
H H 사용금지

(c) 기호 (d) 기능표


[그림 4-1] NOR 게이트를 이용한 RS 래치

그림 4-1(a)과 같이 2개의 NOR 게이트로 구성할 수 있다. NOR 게


이트의 출력은 다른 NOR 게이트의 입력 중 하나에 서로 연결된 구조
를 갖는다. 그림 4-1(a)의 회로는 표4-1과 같이 동작한다.
4장 각종 Latch와 Flip-Flop 57

[표 4-1] NOR 게이트 RS 래치 동작

R=‘L’ S=‘H’이므로 
Q 는 ‘L’이 되고 이 출력 ‘L’이 위쪽의 NOR 게
S=‘H’ 이트에 입력되어 Q는 ‘H’가 된다.

R=‘H’ R=‘H’이므로 Q는 ‘L’이 되고 이 출력 ‘L’이 아래쪽의 NOR


S=‘L’ 게이트에 입력되어  Q 는 ‘H’가 된다.

모두 NOR 게이트의 입력에 ‘H’가 입력되므로 Q와 


Q 모두
R=‘H’  의 보수 관계(‘L’이면 ‘H’, ‘H’이면 ‘L’)가
‘L’이 되고 Q와 Q
S=‘H’ 성립하지 않으므로 금지 상태 (Forbidden State) 혹은 부정
상태 (Undefined State)라 하며 사용하지 않는다.

출력 Q와 
Q 가 어떤 값을 가지고 있을 때 (‘L’과 ‘H’, 또는
R=‘L’
‘H’과 ‘L’) 출력 Q와 
Q 의 값이 아무 변화가 없이 그대로 이
S=‘L’
전 값을 유지한다.

이상의 동작을 그림 4-1(d)에 기능표로 나타내었다.

2) NAND 게이트를 이용한 RS 래치

S 1
3 Q
2

4
6 Q
R 5

(a) 회로도 (b) 타이밍도


SET 입력 출력
S Q
S R Q
L L 사용금지
L H H
R CLR Q H L L
H H Q(유지)
(c) 기호 (d) 기능표
[그림 4-2] NAND게이트를 이용한 RS 래치
58 6

그림 4-2(a)와 같이 2개의 NAND 게이트로 구성할 수 있으며 회로의


동작은 다음과 같다.

[표 4-2] NAND 게이트 RS 래치 동작

R=‘L’ R=‘L’이므로 
Q 가 ‘H’가 되고 이 출력 ‘H’가 위쪽의 NAND
S=‘H’ 게이트에 입력되어 Q는 ‘L’이 된다.

R=‘H’ S=‘L’이므로 Q는 ‘H’가 되고 이 출력 ‘H’가 아래쪽의 NAND


S=‘L’ 게이트에 입력되어  Q 는 ‘L’이 된다.

R=‘L’ Q와 
Q 모두 ‘H’가 되고 보수 관계가 성립하지 않으므로 부
S=‘L’ 정 상태가 된다.

R=‘H’ 출력 Q와 
Q 의 값이 아무 변화가 없이 그대로 이전 값을 유
S=‘H’ 지한다.

이상의 동작을 기능표로 나타내면 그림 4-2(d)와 같이 된다.


4장 각종 Latch와 Flip-Flop 59

3) 클럭 동기 (Clocked) RS 플립플롭

1
R 3 2
2 1 Q
S
3

C C

Q
2
1 1 Q
3 3
2
Q
S

(a) 회로도 (b) 타이밍도

입력 출력
S Q C S R Q
H L L Q(유지)
C H
H
L
H
H
L
H
L
H H H X
R Q L x x Q(유지)

(c) 기호 (d) 기능표


[그림 4-3] 클럭 동기 RS 플립플롭

앞 절에서 설명한 RS 래치들은 입력 R, S가 변할 때 출력도 직접 변


하지만 디지털 시스템에서는 시스템의 클럭(Clock)에 따라서만 출력의
변화가 요구되는 경우가 많다. 이렇게 클럭에 따라 출력이 변하는 RS
플립플롭을 클럭 동기 (Clocked) RS 플립플롭이라 하며 그 구성은 그
림 4-3(a)과 같다. 이 플립플롭을 레벨 트리거드(Level triggered) 플립
플롭이라고 하며 에지 트리거드(Edge triggered) 플립플롭과 구별한다.
그림 4-3(a)의 회로는 CP(클럭펄스: Clock Pulse)에 의해 다음과 같이
동작한다.
60 6

[표 4-3] 클럭 동기 RS 플립플롭 동작

S와 R의 입력이 앞단의 NAND 게이트를 통과하지 못하여


출력은 모두 ‘H’가 되어 뒷단의 플립플롭의 출력에 아무런
CP=‘L’
변화를 주지 않는다. 즉, 입력 R, S가 변하더라도 출력 Q와

Q 는 아무런 변화 없이 현 상태를 유지한다.

S와 R이 NAND 게이트를 통해 전달되고 뒷단의 RS 플립플


CP=‘H’ 롭이 동작을 하게 되어 입력 R, S에 따라 출력이 변하게 된
다.

CP가 ‘H’일 때 입력 R, S가 NAND 게이트를 통하면서 반전(NOT)되


므로 그림 4-2(d)의 기능표가 그림 4-3(d)과 같이 바뀌게 된다. 클럭
동기(Clocked) RS 플립플롭의 입력 R, S와 클럭 펄스 CP에 따른 출력
Q와 
Q 의 파형을 그림 4-3(b)에 나타내었다. 초기조건으로 Q 와 
Q의
값은 ‘L’과 ‘H’로 가정하였다. 그림 4-3(b)에서 보는 바와 같이 입력 R,
S가 변하더라도 출력 Q 와 
Q 는 바로 변하지 않고 CP가 ‘H’가 되는 시
점에서 변화는 것을 알 수 있다.

나. D 플립플롭(D Flip-Flop)
D 플립플롭은 입력 데이터를 출력에 단순히 전달하는 플립플롭으로 중
요한 기능은 클럭 펄스 CP에 따라 동기 되어 전달된다는 점이다. 즉
입력 데이터를 변경하더라도 출력은 바로 바뀌지 않으며 CP가 ‘H’가
되는 시점에 변경된다. D 플립플롭의 구성은 그림 4-4(a)와 같다.
4장 각종 Latch와 Flip-Flop 61

D 1
3 1
2 3 Q
2
D Q
C
C

1
1
3 Q Q
3 2
1 2 2

(a) 회로도 (b) 기호

입력 출력
C D Q
L L Q(유지)
L H Q(유지)
H L L
H H H

(c) 기능표
[그림 4-4] D 플립플롭

그림 4-4(a)는 D 플립플롭을 나타내는 회로로서 앞 절의 클럭 동기


RS 플립플롭과 유사한 구조를 가지고 있다. 차이점으로는 두 개의 입
력 R과 S가 하나의 입력 D로 바뀐 것으로 입력 D가 클럭 동기 RS 플
립플롭의 입력 S에 그대로 연결되고 입력 R에는 입력 D가 NOT 게이트
를 거쳐 연결되는 것이다. 이렇게 구성된 회로의 동작은 다음과 같다.

[표 4-4] D 플립플롭 동작

클럭 동기 RS 플립플롭의 S=‘L’, R=‘H’인 경우와 같게 되어


D=‘L’
Q=‘L’, 
Q =‘H’가 된다.

클럭 동기 RS 플립플롭의 S=‘H’, R=‘L’인 경우와 같게 되어


D=H
Q=‘H’, 
Q =‘L’이 된다.

이상의 동작을 기능표로 나타내면 그림 4-4(c)와 같이 된다.


62 6

다. JK 플립플롭(JK Flip-Flop)
JK 플립플롭은 RS 플립플롭을 개선한 것으로 RS 플립플롭에서
R=‘H’, S=‘H’인 경우에 금지 상태(혹은 부정 상태)가 되어 사용되지 않
는 경우에 출력이 반전되도록 외부회로를 추가한 것이다. 즉, R=‘H’,
S=‘H’인 경우에 현재의 출력 Q 값이 ‘L’이었다면 CP를 인가한 후에는
출력 Q 가 ‘H’가 되고, ‘H’이었다면 출력 Q 는 ‘L’이 된다.
JK 플립플롭에서 입력 J 는 RS 플립플롭의 입력 S에 해당되고, 입력
K는 입력 R에 해당한다. 그림 4-5(a)에서 NOR 게이트로 구성된 RS
플립플롭을 이용하여 구성한 JK 플립플롭을 나타내었다.

1
J 2
3 J Q
2

1 2 5 Q C
D Q
3

K 4 3 6 Q
6 CP Q
5 K Q
C

(a) 회로도 (b) 기호

입력 출력
C J K Q
L H L Q(유지)
L L H Q(유지)
L H L Q(유지)
L H H Q(유지)
H L L Q(유지)
H L H L
H H L H
H H H 
Q (반전)

(c) 기능표
[그림 4-5] JK 플립플롭

JK 플립플롭의 동작을 기능표로 나타내면 그림 4-5(c)와 같다. 그림


4-5(c)에서 CP=‘L’일 경우와 CP=‘H’일 경우에 따라 JK 플립플롭의 동
4장 각종 Latch와 Flip-Flop 63

작이 달라지는 것을 알 수 있는데, 이를 정리하면 다음과 같다.

[표 4-5] JK 플립플롭 동작

입력 J, K에 무관하게 출력 Q와 
Q 는 아무런 변화가 없이
CP=‘L’
이전 값을 유지한다.

CP=‘H’ 입력 J, K에 따라 출력이 변화한다.

또한 JK 플립플롭에서는 출력 Q 와 
Q 의 값을 CP와 무관하게 원하는
결과를 얻기 위해 출력 Q 를 ‘H’로 하는 Preset(PR) 단자와 ‘L’로 하는
Clear(CLR) 단자를 두고 있는데 이의 구성은 그림 4-6(a)과 같다. 이
경우 Preset 단자와 Clear 단자는 각각 비동기 PR, CLR로 부른다.

PR

1
3 J PR Q
J
4

2
2

PR
3
1 2
D Q
5 Q C
K 4 3 6 Q
6 CP Q

C
5 CLR K CLR Q
1

CLR

(a) 회로도 (b) 기호

입력 출력

PR 
CLR Q
L L ×
L H H
H L L
H H 정상동작

(c) 기능표
[그림 4-6] PR과 CLR 단자를 갖는 JK 플립플롭
64 6

그림 4-6(a)를 보면 PR 단자와 CLR 단자가 추가되어 있는데 JK 플


립플롭이 정상 동작할 때는 PR과 CLR 단자에 ‘H’가 입력되어야 한다.
그러나 PR 단자에 ‘L’이 입력되면 Q 는 ‘H’, 
Q 는 ‘L’이 되고 CLR 단자
에 ‘L’이 입력되면 Q 는 ‘L’, 
Q 는 ‘H’가 된다. 즉 PR과 CLR의 기능이
사용되지 않을 때는 ‘H’가 입력되어야 하고 사용할 때에는 ‘L’이 입력되
어야 한다. 이렇게 PR과 CLR 단자가 ‘L’일 경우에 동작하는 논리를 부
논리(Active-Low)라고 한다. PR과 CLR에 따른 출력 Q 와 
Q 의 동작을
그림 4-6(c)에 기능표로 나타내었다.

라. T 플립플롭(T Flip-Flop)
T 플립플롭은 Toggling(반전) 플립플롭의 약자로 입력 T 단자와 출력
Q, 
Q 를 갖는다. T 플립플롭은 JK 플립플롭에서 J=K=‘H’인 경우에 CP
를 인가하면 Q 와 
Q 가 반전되는 기능만을 채택한 플립플롭이다. 현재의
출력 Q 가 ‘L’이든 ‘H’이든 상관없이 입력 T 단자에 클럭 펄스가 인가되
 는 반전된다.
면 출력 Q 와 Q
T 플립플롭은 RS, JK, D 플립플롭으로 구성할 수 있으며 구성 방법
을 그림 4-7(a)에 나타내었다. 여기서는 CP에 ‘o’(NOT)이 없으므로
CP가 ‘L’에서 ‘H’로 변할 때 출력이 반전된다.

Vcc

SET
S Q SET
J Q
D
SET
Q
T T T
R CLR Q
K CLR Q CLR Q

(a) 회로도
T

(b) 타이밍도
4장 각종 Latch와 Flip-Flop 65

입력 출력
Q
T Q
TT
H → L Q(유지)
Q 
L → H Q 반전

(c) 기호 (d) 기능표


[그림 4-7] T 플립플롭

그림 4-7(a)의 회로는 다음과 같이 동작한다.

[표 4-6] T 플립플롭 동작

Q=‘L’, 
Q =‘H’인 경우 S=‘H’, R=‘L’이므로 CP가 입력되면
RS 플립플롭을 Q=‘H’, 
Q =‘L’이 된다. 이때 S=‘L’, R=‘H’가 되므로 다시
이용한 경우 CP가 입력되면 Q=‘L’,  Q =‘H’가 되여 CP가 입력 될 때마다
출력 Q는 ‘L’에서 ‘H’로 또는 ‘H’에서 ‘L’로 반전된다.

Q=‘L’, Q =‘H’인 경우 D=‘H’이므로 이때 CP가 입력되면 Q


D 플립플롭을 =‘H’, 
Q =‘L’이 되고 D=‘L’이 된다. 다시 CP가 입력되면 Q
이용한 경우 
=‘L’, Q =‘H’가 된다. 이와 같은 동작이 CP가 입력될 때마다
반복되어 T 플립플롭과 같이 동작한다.

JK 플립플롭을 J=K=‘H’이므로 출력 Q와 
Q 는 CP가 입력될 때마다 반전되
이용한 경우 어 T 플립플롭과 같이 동작함을 쉽게 알 수 있다.

그림 4-7(a)의 T 플립플롭의 입출력 파형을 그림 4-8(b)에 나타내었


다. 그림 4-7(c)에 T 플립플롭의 기호를 나타내었다. T 단자 앞에
‘o’(NOT)가 붙은 것은 부논리(Active-Low)에서 동작함을 의미한다. 즉
T 입력이 ‘L’→‘H’일 때 출력이 변하는 것이 아니라 ‘H’→‘L’일 때 출력
이 변함을 의미한다. T 플립플롭의 기능표를 그림 4-7(d)에 나타내었
다.
66 6

마. 에지-트리거드(Edge-triggered) 플립플롭과 레벨-트리거드(Level-


triggered) 플립플롭
클럭드 플립플롭에는 두가지 형태가 존재한다. 하나는 레벨-트리거드
플립플롭으로 클럭이 특정 레벨(‘H’이나 ‘L’)일 때 플립플롭의 입력을
받아들이는 것이다. 예를 들어 Active-Low의 레벨-트리거드 D 플립플
롭의 경우 클럭이 ‘L’이면 입력이 플립플롭에 저장(출력도 변화)되고,
클럭이 ‘H’이면 플립플롭은 과거의 값을 유지한다. 한편 에지-트리거드
플립플롭은 클럭의 특정 에지(예를 들면 rising edge)에서만 입력을 받
아들인다. 따라서 에지-트리거드 플립플롭은 동기식 플립플롭이라고 할
수 있다.
두 플립플롭의 차이를 타이밍도에서 살펴 보면 그림 4-8과 같다. 단
그림 4-8에서 각 플립의 셋업 타임과 홀드 타임 그리고 회로지연특성
(propagation delay)은 0, 레벨-트리거드 플립플롭은 Active-Low, 에지
-트리거드 플립플롭은 falling edge 타입이며 각 플립플롭의 초기값은
‘L’이라고 가정하였다.

clock

D-입력
Active-Low 의
레벨 트리거드

Falling edge
플립플롭

[그림 4-8] 에지-트리거드와 레벨-트리거드 플립플롭 타이밍도

3. 예비보고

가. 이 장의 실험 목적에 대해서 스스로 생각해 보고 기술하라.


나. 에지-트리거드 플립플롭과 레벨-트리거드 플립플롭의 차이점을 설명
하라
다. NOR 게이트를 이용하여 RS 래치를 구성하고 기능표를 구하라.
4장 각종 Latch와 Flip-Flop 67

라. Preset 단자와 Clear 단자의 기능을 설명하고 각 모드별 기능표를 기


술하라. (Data sheet 참조)

4. 실험 기기 및 부품

74x00 2
74x02 1
74x74 1
74x75 1
74x76 1

5. 실험

가. RS 래치 구현
1) 2입력 NOR 게이트를 이용하여 RS 래치를 구현하라.
2) 출력 Q 와 
Q 를 측정하여 표에 기록하고 기능표와 비교하여 확인하라.
3) 금지 영역에서의 동작을 실험을 통해 확인하라.

나. 그림과 같이 회로를 구성하고 표와 같은 순서대로 입력하고 출력 Q


와 
Q 를 측정하여 기록하라. 입력 D를 입력 한 후에 CP를(L→H→L)
인가하고 측정하라.
68 6

VCC ↖

4
D 2
PR
5 Q
D Q
CP 3 6
CP Q Q
CLR
↙ 7474

[그림 4-9] D 플립플롭의 실험 회로 1

다. 그림과 같이 회로를 구성하고 표와 같은 순서로 PR과 CLR 그리고


CP에 입력하고 출력을 측정하여 표에 기록하라. J와 K에는 임의의
값(‘L’ 또는 ‘H’)을 입력하면서 실험하라.
VCC ↖
2

PR
4 15
J Q
1
CP
16 14
K Q
CLR
↙ 7476
3

[그림 4-10] JK 플립플롭의 실험 회로


4장 각종 Latch와 Flip-Flop 69

6. 결과보고 및 검토

가. RS 래치를 구현하고 출력을 확인하여 다음의 표를 완성하라.

[표 4-7] RS래치의 기능표


입력 출력
R S Q 
Q
L L
L H
H L
H H

나. 그림 4-9의 회로를 구성하고 출력을 확인하여 다음의 표를 완성하라.

[표 4-8] 그림 4-9 회로의 기능표

입력 출력
D CP 
CLR 
PR Q 
Q
H L L H
L L H L
L L H H
L H H
H H H
H L H H
L L H H
L H H
70 6

다. 그림 4-10의 회로를 구성하고 출력을 확인하여 다음의 표를 완성하라.

[표 4-9] 그림 4-10 회로의 기능표


입력 출력

PR 
CLR CP Q 
Q
L L
L H
H L
L L L
L H L
H L L
5장 인코더(Encoder)/디코더(Decoder)와 멀티플렉서(Mux)/디멀티플렉서( 71

5장
인코더(Encoder)/디코더(Decoder)와
멀티플랙서(Mux)/디멀티플렉서(Demux)

1. 목적

가. 인코더와 디코더의 기능 및 그 구성 방법을 익힌다.


나. 멀티플렉서와 디멀티플렉서의 구조와 동작 원리를 이해하고 이들 회
로에 대한 응용 예를 배운다.

2. 이론

가. 디코더
‘복호기’라고도 부르는 디코더는 최대 2n개의 서로 다른 정보 중에서
n비트의 이진 입력 코드에 대응하는 하나의 출력을 선택하는 조합회로
(combinational circuit)이다. 다시 말하면, 디코더는 어떤 이진수를 나
타내는 입력을 받아서 그 입력 숫자에 대응되는 하나의 출력만을 활성
화하고, 다른 모든 출력은 활성화되지 않은(inactive) 상태로 유지시키
는 회로이다.
일반적으로 디코더는 n개의 입력선과 최대 2n개의 출력선을 가지며, 입
력 값에 따라 선택된 하나의 출력선이 활성화 된다. 그림 5-1에 입력선
이 2개, 출력선이 22=4개인 2-to-4 디코더를 나타내었다. 그림에서 예를
들어 AB 입력 값이 01일 경우에는 출력선 D1만이 ‘H’이고 나머지 출력
선 D3, D2, D0은 모두 ‘L’이 되며, 나머지 입력의 조합에 대해서도 하나
의 출력선만이 ‘H’로 됨을 확인할 수 있다. (Active-High일 경우이며 뒤
의 “Active-High 신호와 Active-Low 신호”에 대한 설명을 참조하라.)
72 6

1 2
4
D0 5
B 2 D1 6
3 A D2 7
B D3
1 2

A 1

2
3 D0 = A B (b) 블럭도

2
3 D1 = A B 입력 출력
A B D D D D
1 L L L L L H
2
3 D2 = A B
L H L L H L
H L L H L L
1
H H H L L L
3 D3 = A B
2

(a) 회로도 (c) 진리표


[그림 5-1] 2-to-4 디코더(Ⅰ)

2-to-4 디코더의 또 다른 형태로 그림 5-2와 같은 디코더가 있다.


그림 5-2의 디코더에 대한 진리표와 그림 5-1의 디코더에 대한 진리표
를 비교해 볼 때 출력 값이 ‘L’은 ‘H’로, ‘H’는 ‘L’로 바뀌었음을 알 수
있다. 이 디코더 역시 입력의 각 조합에 대해 하나의 출력선만이 활성
화됨을 확인할 수 있다. (Active-Low일 경우이며 뒤의 “Active-High
신호와 Active-Low 신호”에 대한 설명을 참조하라.)
회로를 비교해 보면 그림 5-1의 AND 게이트들이 그림 5-2에서는
NAND 게이트로 바뀌었음을 알 수 있다. 실제로 회로 구성에 사용되는
디코더는 주로 그림 5-2와 같이 NAND 게이트를 사용하는 경우가 많
다. 그 이유는 일반적으로 AND 게이트를 칩 내부에 구현할 때는
NAND 게이트 뒤에 NOT 게이트를 연결한 형태로 구현되며, 따라서 그
림 5-2의 NAND 게이트를 사용한 디코더가 그림 5-1의 AND 게이트를
사용한 디코더에 비해 더 작은 수의 게이트를 쓰기 때문에 경제적이다.
또한 NOT 게이트의 신호전달 지연시간만큼 동작 시간을 줄일 수 있기
때문에 성능(동작 속도) 측면에서도 유리하다.
5장 인코더(Encoder)/디코더(Decoder)와 멀티플렉서(Mux)/디멀티플렉서( 73

1 2
4
D0 5
B 2 D1 6
3 A D2 7
1 2 B D3

A 1
3 D0 = A B
2
(b) 블럭도

2
3 D1 = A B
입력 출력
A B D D D D
1
3
L L H H H L
D2 = A B
2
L H H H L H
H L H L H H
1
3 D3 = A B
H H L H H H
2

(a) 회로도 (c) 진리표


[그림 5-2] 2-to-4 디코더(Ⅱ)

3 to 8 LineDecoder
5 15
G2BY0 14
1 Y1 13
2 A Y2 12
3 B Y3 11
C Y4 10
6 Y5 9
4 G1 Y6 7
G2AY7
74HC138

[그림 5-3] 대표적인 디코더 IC

74계열 IC 중에서 대표적인 디코더 IC는 위의 그림 5-3과 같다. 이


것은 3비트 이진 데이터를 8개의 개별 신호로 변환해 준다. 이것을
이용하면 3비트의 어드레스 신호로부터 8개의 디바이스를 지정하여
사용할 수 있다.이 디코더 IC를 응용한 좋은 예 중 하나는 마이크로컴
퓨터의 주변기기 어드레스의 디코딩에 이용하는 것이다.
74 6

[그림 5-4] 대표적인 디코더 사용예(어드레스 디코더)

Z80 등 마이크로컴퓨터의 입출력 명령을 실행하면 그림 5-4와 같은


신호가 각각 출력 된다.여기에서 어드레스 버스(A7∼A0)에는 특정
한 디바이스 어드레스가 포함되고 있으며 입출력에 관한 신호인 것을
알리기 위해 IORQ 신호가 같은 타이밍에 출력된다. 이 경우 어드레스
버스에 8-to-256 디코더를 이용하면 최대 256개의 주변장치를 사용
할 수 있게 된다.

♠ Active-High 신호와 Active-Low 신호


그림 5-2에 나타낸 2-to-4 디코더의 출력을 보면 입력값에 따라 선
택된 하나의 출력선 만이 ‘L’로 된다. 이와 같이 특정 입출력이 ‘L’이
될 때 정의된 기능을 수행하는 것으로 보는 신호를 Active-Low 신호라
고 한다. 반면 Active-High 신호는 그림 5-1을 비롯해 우리가 그동안
주로 보아왔던 대부분의 회로처럼 값이 ‘H’가 될 때 정의된 기능을 수
행하는 것으로 보는 신호를 말한다.
그림 5-5에는 인에이블(Enable) 제어신호 E를 가진 2-to-4 디코더를
나타내었다. 이 회로에서 제어신호 E는 디코더의 동작을 제어하는 역할
을 수행한다. 만일 제어신호 E가 ‘L’일 경우에는 회로가 디코더로 동작
하지 않게 되고(즉, 입력 A, B의 값에 상관없이 모든 출력들이 동일한
값 ‘H’로 되어 비활성화 됨), E가 ‘H’일 경우에는 디코더로 동작하게
된다. 이 경우 입력 A, B와 제어 신호 E는 Active-High 신호이며, 출력
D3-D0는 모두 Active-Low 신호이다.
5장 인코더(Encoder)/디코더(Decoder)와 멀티플렉서(Mux)/디멀티플렉서( 75

1 2
8 4
E D0 5
B
2 D1 6
3 A D2 7
1 2
B D3
A 1 D0 = A B E
2
8
9
(b) 블럭도

E
3 D1 = A B E 입력 출력
4 6
5 E A B D D D D
L X X H H H H
11
12 10
D2 = A B E H L L H H H L
13
H L H H H L H
H H L H L H H
1
2 9
D3 = A B E H H H L H H H
8

(a) 회로도 (c) 진리표


[그림 5-5] 인에이블 제어신호를 갖는 2-to-4 디코더

나. 인코더
‘부호기’라고도 부르는 인코더는 디코더의 반대 기능을 수행하는 회로
이다. 2n개 또는 이보다 적은 개수의 신호를 입력받아 그에 상응하는 n개
의 출력신호를 만든다. 디코더가 이진 정보를 인식, 식별하는 기능을 한
다면, 인코더는 어떠한 상태 또는 명령에 대한 이진 정보를 만들어 내는
기능을 한다고 할 수 있다.
그림 5-6은 4-to-2 인코더의 예이다. 2-to-4 디코더와 비교해 보면
입력은 출력으로, 출력은 입력으로 역할이 바뀌었음을 알 수 있다. 그림
5-6의 인코더에서 입력 D0에 ‘H’가 들어오면 출력 AB는 00이 되고, 입
력 D1에 ‘H’가 들어오면 출력은 01이 된다. 또한 입력 D2에 ‘H’가 들어오
면 출력은 10이 되고, 입력 D3에 ‘H’가 들어오면 출력은 11이 된다. 이
인코더는 4개의 입력 중 어느 한 입력으로만 ‘H’가 들어오는 경우만을 고
려하였으며, 이를 제외한 나머지 경우(모두 ‘L’이거나 두 개 이상이 ‘H’인
경우)는 발생하지 않는다고 가정하여 설계된 것이다.
76 6

입력 출력

1
B 1
3 D0 4 A 5 A B C D D D
2 B D0
2 6 L L L H L L
3 C D1
C
D L L H L L H
L H L L H L
1

3 D1 H L L L H H
2

(a) 회로도 (b) 블럭도 (c) 진리표


[그림 5-6] 4-to-2 인코더

1) 4-to-2 인코더 설계
그림 5-6의 인코더 회로에서 진리표를 보면 입력신호가 4개이다. 따
라서 입력신호가 4개이면 총 24=16 가지의 입력조합이 생긴다. 그럼에
도 불구하고 그림 5-6의 진리표에는 4가지 입력 조합의 경우만을 고려
하였다. 이는 편의상 기능 중심으로 진리표(이를 기능표(function table)
라고 부르기도 함)를 표시하였기 때문이다. 그림 5-7에 완전한 진리표
를 보여주었다. 그리고 각 출력에 대한 논리식을 최소화하기 위한 카노
맵(Karnaugh map)도 같이 나타내었다.
그림 5-6의 4-to-2 인코더는 어느 한 순간에 입력들 중 오직 한 입
력만이 ‘H’이어야 정상적으로 동작할 수 있다는 제약을 가지고 있다.
예를 들어 입력 D1과 D2가 동시에 1이 되면 출력 AB=11이 되어 마치
입력 D3이 ‘H’인 것처럼 동작한다. 이와 같은 문제점을 해결하기 위한
방안의 하나는 입력들 사이에 우선순위를 부여하는 것이다. 예를 들어
첨자가 큰 입력이 더 우선순위가 높다고 가정하고 회로를 설계해보자.
즉, D1과 D2가 동시에 ‘H’가 되면 D2가 D1에 비해 우선순위가 높으므로
D2만이 ‘H’인 것으로 생각하여 출력 AB를 10으로 내보내도록 설계한
다. 이러한 회로를 우선순위 인코더(priority encoder)라고 부른다.
그림 5-6과 같은 인코더 회로의 또 다른 문제점은 모든 입력이 ‘L’인
경우와 D0 입력으로 ‘H’가 들어오는 경우에 모두 출력이 00이 되어 서
로 구별이 안 된다는 점이다. 이를 구별하기 위하여 적어도 하나 이상의
입력이 ‘H’라는 것을 나타내는 출력을 하나 더 추가하는 경우도 있다.
5장 인코더(Encoder)/디코더(Decoder)와 멀티플렉서(Mux)/디멀티플렉서( 77

입력 출력
D D D D A B
L L L L X X
H L L L H H
L H L L H L
H H L L X X
L L H L L H
H L H L X X
L H H L X X
H H H L X X
L L L H L L
H L L H X X
L H L H X X
H H L H X X
L L H H X X
H L H H X X
L H H H X X
H H H H X X
(a) 진리표 (b) 카노맵과 논리식
[그림 5-7] 4-to-2 인코더 설계

그림 5-8은 우선순위를 갖는 4-to-2 인코더 회로에 대한 회로도와


진리표이다. 진리표에서 입력 Ei는 이 칩의 동작 여부를 제어하는 신호
로서, Ei가 ‘L’일 경우에는 나머지 입력 값에 상관없이 모든 출력이 ‘L’
로 되고, Ei가 ‘H’일 경우에는 통상적인 인코더로 동작한다. Ei가 ‘H’일
때 4개의 입력 중 두 개 이상이 동시에 ‘H’이면 우선순위가 높은 입력
(I3, I2, I1, I0 순서로 우선순위를 부여)에 대한 이진수 값이 출력 A1A0에
나타난다. 진리표에서 출력 G는 입력 중 적어도 하나가 ‘H’라는 것을
나타내는 신호이다. 이 신호는 입력 I0이 ‘H’인 경우와 모든 입력이 ‘L’
일 경우(두 경우 모두 출력 A1A0=00)를 구분한다. 또한 출력 Eo는 I3,
I2, I1, I0 입력이 모두 ‘L’일 경우 ‘H’가 되며, 이 신호와 Ei신호를 순차
적으로 연결하면 더 많은 입력신호를 갖는 우선순위 인코더 회로를 만
들 수 있다. 예를 들어 그림 5-8의 4-to-2 인코더 2개를 연결하여 구
성한 8-to-3 우선순위 인코더를 그림 5-9에 보여주었다.
78 6

I0
I1

1 2

I2 1
3
I3 2 1
3 A1
Ei 2
10 9
I0 A1
1
3 12 7
2
I1 A0
1 1
3
I2
2 1
3 A0
3 14
I3 G
2
5 15
EI EO

2
3
1
4 1
5 3 G
2

1 21
3 Eo
2

(a) 회로도 (b) 블럭도


입력 출력
Ei I I I I A A G Eo A  Ei I  
I ∙ I 
L X X X X L L L L
H L L L L L L L H A  Ei I  I 
H H X X X H H H L G  Ei I  I  I  I 
H L H X X H L H L
H L L H X L H H L Eo  Ei 
I  I  I  I 
H L L L H L L H L
(c) 진리표 (d) 논리식
[그림 5-8] 4-to-2 우선순위 인코더
5장 인코더(Encoder)/디코더(Decoder)와 멀티플렉서(Mux)/디멀티플렉서( 79

A2
I0 10 9
I0 A1
I1 12 7
I1 A0 1
I2 1 3 A1
I2 2
I3 3 14
I3 G
5 15
EI EO
1
3 A0
2

I4 10 9
I0 A1
I5 12 7
I1 A0 1
I6 1 3 G
I2 2
I7 3 14
I3 G
Ei 5 15
EI EO
Eo

(a) 회로도
입력 출력
Ei I I I I I I I I A A A G E
L X X X X X X X X L L L L L
H L L L L L L L L L L L L H
H H X X X X X X X H H H H L
H L H X X X X X X H H L H L
H L L H X X X X X H L H H L
H L L L H X X X X H L L H L
H L L L L H X X X L H H H L
H L L L L L H X X L H L H L
H L L L L L L H X L L H H L
H L L L L L L L H L L L H L

[그림 5-9] 2개의 4-to-2 우선순위 인코더 이용한 8-to-3 우선순위 인코더

다. 멀티플렉서
멀티플렉서(MUX : Multiplexer)는 여러 개의 입력 데이터 중에서 하나
를 선택하여 출력으로 내보내는 논리회로이며 데이터 선택기라고도 한
다. 그림 5-10에 4-to-1 멀티플렉서 회로를 나타내었다. 그림의 진리
표에서 입력 S1S0는 선택신호로, S1S0=00일 경우 입력 I0의 값이 출력
Y로 나가며, S1S0=01일 경우에는 입력 I1의 값이, S1S0=10일 경우에는
입력 I2의 값이, S1S0=11일 경우에는 입력 I3의 값이 각각 출력 Y로 나
가게 된다.
멀티플렉서는 여러 개의 신호원에서 데이터를 하나의 목적지로 연결
80 6

하는 응용 분야에서 매우 유용한 소자이다. 컴퓨터에서의 응용 중 하나


는 프로세서의 레지스터와 ALU(Arithmetic and Logic Unit: 산술 논리
연산, 6장을 참조)사이에 사용하는 것이다. 예를 들어, 각 명령에 8개의
레지스터 중 하나를 명시하는 3비트 필드를 갖는 16비트 프로세서를
생각해 보자. 이 3비트 필드는 8입력, 16비트 멀티플렉서의 선택 입력
에 연결된다. 멀티플렉서의 데이터 입력은 8개의 레지스터와 연결되고,
데이터 출력은 선택된 레지스터를 사용하는 명령을 수행하기 위해서
ALU와 연결된다. 결과적으로 8개의 레지스터 중에서 하나를 선택하여
ALU 연산에 이용할 수 있게 된다.

1 2 입력 출력
S S Y
S0

1 2
L L I
L H I
S1
H L I
1
2
8
9 H H I
Io

(b) 진리표
1
2 9
I1 8
2
3
1 Y
4
5
1
2 9
I2 8

Y
S 
S I  
S SI  S 
S I  SSI
1
2 9
I3 8

(a) 회로도 (c) 논리식


[그림 5-10] 4-to-1 멀티플렉서

라. 디멀티플렉서
디멀티플렉서(Demultiplexer)는 멀티플렉서의 반대되는 기능(즉, 입력
과 출력이 바뀐 기능)을 수행하는 회로로, 하나의 입력을 통해 들어오
는 신호를 선택신호의 제어에 따라 복수개의 출력 중에서 하나로 내보
5장 인코더(Encoder)/디코더(Decoder)와 멀티플렉서(Mux)/디멀티플렉서( 81

내는 회로이다. 그림 5-11은 1-to-4 디멀티플렉서 회로이다.

1 2

입력 출력
S0
S S D D D D
1 2
L L L L L H
S1 L H L L H L
1 H L L H L L
2 9 D0
I 8 H H H L L L

1
(b) 진리표
2 9 D1
8

1
2 9 D2 D  
S 
S I
8

D  
S SI
1
2 9 D3 D   S 
S I
8

D   SSI

(a) 회로도 (c) 논리식


[그림 5-11] 1-to-4 디멀티플렉서

3. 예비보고

가. 이 장의 실험 목적에 대해서 스스로 생각해 보고 기술하라.


나. 인코더와 디코더의 기능에 대해 기술하라.
다. 멀티플렉서와 디멀티플렉서의 동작방법과 용도를 설명하라.
라. 8-to-3 인코더의 출력을 3-to-8 디코더의 입력에 연결하였다. 이 경
우, 인코더의 입력과 디코더의 출력을 명시한 진리표를 작성하라.
82 6

4. 실험 기기 및 부품

74x138(decoder) 1
74x148(encoder) 1
74x153(mux) 1
74x139(demux) 1
LED 12

5. 실험

가. 디코더 회로를 실험보드에 구성하고 디코더의 출력에 LED를 연결하


여 디코더의 입력을 변화시키면서 디코더 출력을 조사하라.

VCC
U24
5 15
G2BY0 14
1 Y1 13
2 A Y2 12
3 B Y3 11
VCC C Y4 10
6 Y5 9
4 G1 Y6 7
G2AY7
74LS138

[그림 5-12] 디코더 응용 회로


5장 인코더(Encoder)/디코더(Decoder)와 멀티플렉서(Mux)/디멀티플렉서( 83

나. Encoder의 입력에 Decoder의 출력을 연결하고 Encoder의 출력값을


확인하라.

U20 U23
5 15 10 9
G2BY0 14 11 IN0 A0
1 Y1 13 12 IN1 7
2 A Y2 12 13 IN2 A1
3 B Y3 11 1 IN3 6
VCC C Y4 10 2 IN4 A2
6 Y5 9 3 IN5 14
4 G1 Y6 7 4 IN6 GS
G2AY7 5 IN7 15
74LS138 EI EO
74LS148

VCC

[그림 5-13] 디코더와 인코더 응용회로

다. 4-to-1 멀티플렉서와 1-to-4 디멀티플렉서를 연결하여 실험보드에


구성하고, 멀티플렉서의 선택신호 A, B와 입력신호 C3, C2, C1, C0
을 표와 같이 인가할 때 멀티플렉서와 디멀티플렉서의 출력 값을 조
사하여 표에 기록하라.

U22
VCC 14
2 A
B
1 VCC
6 1G U21A
5 1C0 7 1 4
4 1C1 1Y G Y0 5
CP 3 1C2 2 Y1 6
1C3 3 A Y2 7
15 B Y3
10 2G 74LS139A
11 2C0 9
12 2C1 2Y
13 2C2
2C3
74LS153

[그림 5-14] 멀티플렉서와 디멀티플렉서 응용회로


84 6

6. 결과보고 및 검토

가. 디코더의 출력을 확인하여 다음의 진리표를 완성하고 설명하라.

[표 5-1] 그림 5-12 회로의 진리표


입력 출력
A B C Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
L L L
L L H
L H L
L H H
H L L
H L H
H H L
H H H

나. 조합회로의 출력을 확인하여 다음의 진리표를 완성하고 설명하라.

[표 5-2] 그림 5-13 회로의 진리표


입력 출력
A B C Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 A2 A1 A0
L L L
L L H
L H L
L H H
H L L
H L H
H H L
H H H
5장 인코더(Encoder)/디코더(Decoder)와 멀티플렉서(Mux)/디멀티플렉서( 85

다. 멀티플렉서와 디멀티플렉서의 출력을 확인하여 다음의 진리표를 완성


하고 설명하라.

[표 5-3] 그림 5-14 회로의 진리표


멀티플렉서
입력 디멀티플렉서 출력
출력
A B C3 C2 C1 C0 Y Y3 Y2 Y1 Y0
L L L L L H
L L L L H L
L H L L H L
L H L H L L
H L L H L L
H L H L L L
H H H L L L
H H L L L H
6장 가산기와 ALU 그리고 조합논리회로 응용 87

6장
가산기와 ALU 그리고 조합논리회로 응용

1. 목적

가. 반가산기와 전가산기의 원리를 이해한다.


나. 반가산기와 전가산기의 설계를 통해 조합논리회로의 설계방법을 공부
한다.
다. 상용 ALU(산술논리 연산장치)의 기능을 이해한다.
라. 상용화된 4비트 ALU를 이용하여 두 수의 가감산을 실험함으로써
ALU의 동작과 응용을 확인한다.

2. 이론

가. 반가산기(Half Adder)
1비트의 이진수로 표시된 두 수를 합하여 그 결과를 출력하는 가산기
를 반가산기라고 한다. 이때 두 개의 수 A, B를 합해서 나온 합(Sum)
과 자리올림(Carry)이 발생한다.

[표 6-1] 반가산기 진리표


A B C S
L L L L
L H L H
H L L H
H H H L

위의 진리표를 만족하는 논리식은 다음과 같다.


88 6

S  A
B 
AB  A  B  
A 
B  A⊕B
C  AB

이 논리식을 회로로 표현하면 그림 6-1(a)와 같이 되고, 그림 6-1(b)


는 이 반가산기의 기호를 나타내고 있다.

A 1
3 S
B 2

1
3 C
2

(a) 회로도

A S

B
HA C

(b) 기호
[그림 6-1] 반가산기 회로

나. 전가산기(Full Adder)
두 개의 이진수와 아래 자리에서 발생한 자리올림수를 더해주는 회로
를 전가산기라 한다. 즉, 3개의 입력과 2개의 출력을 가지고 있으며 진
리표는 표 6-2와 같다.

[표 6-2] 전가산기 진리표


6장 가산기와 ALU 그리고 조합논리회로 응용 89

A B Ci C S
L L L L L
L L H L H
L H L L H
L H H H L
H L L L H
H L H H L
H H L H L
H H H H H

위의 진리표를 만족하는 논리식은 다음과 같다.

S  A⊕B⊕C i
C  C i A⊕B AB

이 논리식을 회로로 표현하면 그림 6-2(a)와 같고, 그림 6-2(b)는 전


가산기의 기호이다.

A 4
1

6
B 5 3 C
2
1

3 9
2

8
10
Ci
4

6 S
5

(a) 회로도

A
C
B
Ci
FA S

(b) 기호
[그림 6-2] 전가산기 회로

전가산기를 반가산기 2개와 OR게이트로 구성하면 그림 6-3과 같다.


90 6

A 4

B HA 5
6 C

Ci HA S

[그림 6-3] 전가산기 블록 다이어그램


6장 가산기와 ALU 그리고 조합논리회로 응용 91

다. 산술논리 연산장치(Arithmetic and Logic Unit, ALU)

1) 산술논리 연산장치
ALU는 사칙연산을 비롯하여 여러 가지 산술 및 논리연산 기능을 하
나의 MSI내에서 이루어지도록 한 소자이다. 4비트 ALU인 74x181은 24
개의 단자를 가지고 있으며 그 핀 배열구조는 그림 6-4와 같다.

3
4
5
6
S3
S2
S1
S0
2 9
23 A0 F0 10
21 A1 F1 11
19 A2 F2 13
1 A3 F3
22 B0 14
20 B1 A=B 16
18 B2 CN+4 17
7 B3 G 15
8 CN P
M
74LS181

[그림 6-4] 74181의 핀 배열구조

74181은 선택적으로 Active-High, 혹은 Active-Low로 사용할 수 있


다. Active-High와 Active-Low를 선택하는 별도의 제어 단자는 필요하
지 않으며, 입력과 출력에 해당되는 Active 신호를 이용하면 된다. 각각
의 경우에 대한 등가 기호와 기능을 살펴보면 각각 그림 6-5와 표 6-3
과 같다. 이 때 제어 단자(M, S3~S0)와 출력 단자 중 A=B 등은 입출력
의 Activeness와 관계없이 항상 Active-High 신호로 동작함을 유의하
라.
92 6

(a) Active-High Operands

(b) Active-Low Operands

[그림 6-5] 74x181의 Operands

2) 74181 ALU의 기능
74181은 16가지의 산술 및 논리연산을 수행할 수 있으며 2개의 4비
트 입력(A3~A0, B3~B0)과 1개의 4비트 출력(F3~F0)을 가지고 있다. 또
한 4비트 기능선택 입력(S3~S0)과 1비트 모드선택 단자(M)가 있으며,
각 비트의 조합으로 원하는 산술 및 논리연산을 수행할 수 있다.
74x181의 기능을 표 6-3에 나타내었다.
6장 가산기와 ALU 그리고 조합논리회로 응용 93

[표 6-3] 74181의 기능(Active-High & Active-Low Data)

3) 74181 ALU의 동작
74181은 산술 및 논리연산기능을 하나의 칩 안에서 동작되도록 만들
어진 집적회로이다. 모드선택 단자 M이 ‘H’일 경우 논리연산을 수행하
며, ‘L’일 경우 산술연산을 수행하게 된다.
연산은 4비트 단위로 실행되며, 자리올림을 위하여 Carry 입력(Cn)과
Carry 출력(Cn+4)단자를 갖고 있다. 두 개의 ALU를 직렬로 접속하면 8
비트 연산도 가능하며 이때 연산속도를 높이기 위해(Carry Lookahead
기능) 자리올림 전송단자(P, Carry Propagation)와 자리올림 발생단자
(G, Carry Generation)를 사용할 수 있다.
A=B 출력단자는 오픈 콜렉터(Open Collector) 출력(4비트 이상으로
사용할 경우 별도의 주변회로 없이 연결하여 Activeness에 따라
Bitwise AND나 OR로 사용할 수 있음)으로서 비교를 나타내는 단자이
다. 빼기 연산 시에는 출력(F3~F0)이 모두 ‘H’일 때 입력 A, B가 논리
적 등가임을 나타내고 또한 Cn+4단자와 같이 사용하면 A>B와 A<B 등
두 수에 대한 비교 기능으로 사용할 수 있다.
감산은 보수의 가산에 의해 실행되기 때문에 감산이 가능하지 않을
때는 자리올림이 발생하고 감산이 가능할 때는 자리올림이 발생하지 않
는다. 즉, 표 6-3에서 모드선택 입력이 1001, M이 ‘H’이고, 자리올림
94 6

입력단자 Cn이 ‘L’일 때에는 2의 보수법에 따라 A PLUS B(A+B, 논리


적 OR와 구별하기 위해 PLUS로 표기)가 출력되고 Cn이 1일 경우에는
A PLUS B PLUS 1(A+B+1)을 출력한다.

라. 7-세그먼트 디코더 (7-Segment Decoder)


7-세그먼트 LED는 10진수(혹은 16진수)를 표시하는 발광소자이다. 7
개의 발광소자(LED)로 구성되며, 그림 6-6에 7-세그먼트의 구조 및 표
시 형태를 나타내었다.
a
f b
e g c
d

[그림 6-6] 7-세그먼트 구조와 10진수 표시방법

7-세그먼트 LED는 공통 단자의 묶이는 모양에 따라 2가지 종류가 있


다. 공통 캐소드(Common Cathod)형과 공통 애노드(Common Anode)
형이 있다. 공통 캐소드 방식의 경우에는(공통 캐소드는 GND에 연결)
해당 LED 단자에 ‘H’를 인가하면 LED가 ON되며, 공통 애노드방식에서
는(공통 애노드는 Vcc에 연결) 해당 LED 단자에 ‘L’을 인가하면 LED가
ON이 된다.
7-세그먼트 디코더는 4비트 BCD코드(혹은 4비트 16진수용 7-세그먼
트 디코더도 있지만 본 교재에서는 BCD 코드용 7-세그먼트 디코더만
을 다룬다)를 7-세그먼트 LED에 표시하기 위해 사용하는 디코더이다.
7-세그먼트 디코드의 입력은 4비트 10진 BCD코드이며 출력이 7-세그
먼트에 내장된 LED로 연결되어 해당 10진 출력을 표시한다. 즉, 7-세
그먼트 디코더는 BCD코드의 해당 10진수를 7-세그먼트에 표시할 수
있도록 하는 디코더이다.
6장 가산기와 ALU 그리고 조합논리회로 응용 95

g f Vcc a b g f Gnd a b

a a
f b f b

g g

e c e c
d d

e d Vcc c dp e d Gnd c dp

Vcc Gnd

a b c d e f g dp a b c d e f g dp

common-anode type common-cathode type

[그림 6-7] 공통 애노드형과 공통 캐소드형 7-세그먼트 구조

220Ω
a a
(MSB)
b b
S3 c c
S2 BCD-to-7세그먼트 d d
S1 디코더 e e
S0 f f
g g
BCD
저항 7세그먼트 표시기
입력

[그림 6-8] BCD-to-7 세그먼트 디코더

74x46, 74x47은 공통 애노드형 7-세그먼트를 위한 디코더이며,


74x48, 74x49는 공통 캐소드형 7-세그먼트를 위한 디코더이다.
96 6

[표 6-4] 7-세그먼트 디코더의 진리표 (공통 캐소드의 경우)


입력 출력
10진수
S3 S2 S1 S0 a b c d e f g
0 L L L L H H H H H H L
1 L L L H L H H L L L L
2 L L H L H H L H H L H
3 L L H H H H H H L L H
4 L H L L L H H L L H H
5 L H L H H L H H L H H
6 L H H L H L H H H H H
7 L H H H H H H L L L L
8 H L L L H H H H H H H
9 H L L H H H H H L H H

3. 예비보고

가. 이 장의 실험 목적에 대해서 스스로 생각해 보고 기술하라.


나. 반가산기의 회로를 보고 진리표를 작성하여 동작을 확인하라.
다. 2개의 반가산기를 사용하여 전가산기 회로를 구성해보고 진리표를 통
해 동작을 확인하라.
라. ALU의 기능에 대해 서술하라.
마. BCD to 7-Segment 디코더인 74x47과 74x48의 차이점을 서술하라.
바. 7-segment에는 동작방식에 따라 공통 캐소드 방식과 공통 애노드
방식이 있다. 위에서 알아본 74x47과 74x48의 차이점에 따라 어떤
7-segment를 선택해야 하는가?
사. 74x181의 Data sheet를 찾아 기능표(Function Table)를 확인하라.

4. 실험 기기 및 부품

74x32 1
74x08 1
6장 가산기와 ALU 그리고 조합논리회로 응용 97

74x86 1
74x47 3
74x181 1
7-세그먼트 LED 3
토글 스위치 3

5. 실험

가. 반가산기 회로를 구현하고 표를 완성하라.


반가산기의 논리식은 아래와 같다.

S  A
B 
AB  A  B  
A 
B  A⊕B
C  AB

S는 A와 B의 XOR연산으로, C는 A와 B의 AND 연산으로 각각 구현


할 수 있다. 위 식을 회로도로 나타낸 것이 아래의 그림이다. 이제 각
자 위의 논리식을 참고로 또 다른 반가산기 회로를 구현해보고 진리표
를 완성하라.

A 1
3 S
B 2

74LS86

1
3 C
2

74LS08

[그림 6-9] 반가산기 실험 회로


98 6

나. 전가산기의 회로를 구현하고 출력을 측정하여 표를 완성하라


전가산기의 논리식은 아래와 같다.

S 
ABC i  
AB 
Ci  A
BC i  ABC i  A⊕B⊕C i

C
ABC i  A 
BC i  AB 
C i  ABC i  C i A⊕B  AB

S는 A, B 그리고 C의 XOR 연산으로, C는 A와 B의 XOR연산과 Ci의


AND 연산을 한 것과 A와 B를 AND 연산한 것의 OR연산으로 구현할
수 있다. 아래 그림은 위의 논리식을 회로도로 나타낸 것이다. 위의 논
리식을 참고하여 각자 또 다른 전가산기 회로를 구현해보고 표를 완성
하라.

A 1
1

3
B 2 3 C
2

74LS08
74LS32
1

3 4
2

6
5
74LS86
Ci 74LS08
U98A
1

3 S
2

74LS86A

[그림 6-10] 전가산기 실험 회로


6장 가산기와 ALU 그리고 조합논리회로 응용 99

다. 다음 그림의 회로를 구성하고 출력을 측정하여 표를 완성하라.


4비트 2진 병렬 가감산기 74x83은 두 개의 4비트 입력(A3~A0, B3~
B0)을 받아 출력(C3~C0)으로 가감산한 결과를 내보낸다. 스위치를 GND
에 연결하면 가산을 하게 되고, Vcc에 놓으면 2의 보수를 이용한 감산
(단, A>B)을 하게 된다. 아래 그림의 회로를 구성하고 출력을 측정하여
표 6-5를 완성하라.
가산기의 기본적인 형태는 첫 번째 자릿수에 반가산기를 사용하고 다
음 자릿수부터 전가산기를 사용하는 것이다. 그러나 감산기는 가산기와
다른 방식을 사용해야 한다. 실제 숫자를 빼는 것처럼 작동하려면 가산
기와 전혀 다른 회로가 되므로 별도의 회로를 구현해야 한다. 하지만 2
의 보수 방식을 사용하면 가산기로 감산기를 구현할 수 있으므로 회로
가 간단해 진다. 그림 6-11에서 입력 B에 사용한 XOR는 B를 선택적으
로 보수를 취하기 위하여 사용되었다.(X⊕  X X⊕  
X 임을 유의하
라.) 이 때 C0도 덧셈일 때는 ‘L’이고 뺄셈일 때는 ‘H’이어야 2의 보수
가 됨을 유의하라.

[그림 6-11] 4비트 가감산회로


100 6

[표 6-5] 그림 6-11 회로의 기능표


A3 A2 A1 A0 B3 B2 B1 B0 C3 S3 S2 S1 S0
H H H H L L L H
H H H L L L H L
H H L H L H L H
H L H H L H H L
H L H L L H H H
H L L H H L L H
L H H H L H H L
L H L H L L L H

라. 2개의 입력과 출력을 표시하고 16진 가감산 결과를 확인하는 실험을


ALU를 이용하여 해보자. 아래는 실험을 위한 조건이다.
1) ALU는 2개의 4비트 입력이 가능한 74x181을 사용하라.
2) 입출력을 표시하기 위해서는 7-세그먼트 LED를 사용하라. (입력 2
개, 출력 1개)
3) 7-세그먼트 LED를 쉽게 사용하기 위해 7-세그먼트 디코더를 사용
하라.
4) 입력과 74x181의 작동모드 설정을 위해 토글 스위치를 사용하라.

위 조건을 고려하여 회로도를 구현해 보라.

조건 1
① M = ‘L’, Cn = ‘H’, S3S2S1S0 = 0110에 해당하도록 단자를 연결하

② 입력 토글스위치를 이용하여 아래 표에 해당하는 값을 입력하고 출
력단에 연결된 7-세그먼트로 결과를 확인한 후 표를 작성하라.
6장 가산기와 ALU 그리고 조합논리회로 응용 101

조건 2
① M = ‘L’, Cn = ‘H’, S3S2S1S0 = 1001이 되도록 단자를 연결하라.
② 입력 토글스위치를 이용하여 아래 표에 해당하는 값을 입력하고 출
력단에 연결된 7-세그먼트 LED의 결과를 확인한 후 표를 작성하라.

6. 결과보고 및 검토

가. 반가산기 회로를 구현하고 다음의 진리표를 완성하라.

[표 6-6] 그림 6-9 회로의 진리표


A B C S
L L
L H
H L
H H

나. 전가산기의 회로를 구현하고 출력을 확인하여 다음의 진리표를 완성


하라.

[표 6-7] 그림 6-10 회로의 진리표


A B Ci C S
L L L
L L H
L H L
L H H
H L L
H L H
H H L
H H H
102 6

다. 그림 6-11의 회로를 구성한 후 동작을 확인하여 아래의 진리표를 완


성하고 설명하라.

[표 6-8] 그림 6-11 회로의 기능표


A3 A2 A1 A0 B3 B2 B1 B0 C3 S3 S2 S1 S0
H H H H L L L H
H H H L L L H L
H H L H L H L H
H L H H L H H L
H L H L L H H H
H L L H H L L H
L H H H L H H L
L H L H L L L H

라. 2개의 입력과 출력을 표시하고 ALU를 이용하여 16진 가감산 결과를


확인하는 실험을 해보자. 아래의 표와 같이 입력을 가하고 다음의 진
리표를 완성하고 설명하라.

[표 6-9] ALU(74181) 회로(조건1)의 기능표


입력(A) 입력(B) 출력(F)
A3 A2 A1 A0 7seg B3 B2 B1 B0 7seg F3 F2 F1 F0 7seg
L L L H L L L L
L L H L L L H L
L L H H L H L H
L H L L L L L H
H L L L L L H L
6장 가산기와 ALU 그리고 조합논리회로 응용 103

[표 6-10] ALU(74181) 회로(조건2)의 기능표


입력(A) 입력(B) 출력(F)
A3 A2 A1 A0 7seg B3 B2 B1 B0 7seg F3 F2 F1 F0 7seg
L H L L L L H L
H L L H L H H L
L L H H L L L H
L H L L L L L H
H L H L L L H L
104 6

7장
순차논리회로 설계 및 구현(1)

1. 목적

가. 4상태를 가진 상태도(state diagram)를 회로로 구현하고 동작을 확인


한다.
나. T-플립플롭을 이용한 4비트 리플 카운터를 설계하고 구현한다.
다. 최대 동작 주파수와 전달 지연(propagation delay)을 측정한다.

2. 이론

가. 4상태를 가진 상태도에 대응하는 회로


상태도는 순차회로의 현재 상태와 입력 값으로부터 출력 값과 다음
상태에 대한 모든 정보를 한눈에 볼 수 있는 아주 유용한 수단이다. 상
태도의 표현방법은 회로의 형태에 따라서 밀리 머신 회로를 위한 다이
어그램과 무어머신 회로를 위한 다이어그램이 있다. 밀리 머신 회로란
출력이 현재 상태와 입력에 따라 결정되는 회로이며, 무어 머신 회로란
출력이 현재 상태만으로 결정되는 회로이다. 즉 밀리 머신은 상태도를
표시했을 때 출력이 화살표에 들어가야 하는 반면, 무어 머신은 출력이
원(상태)안에 표시된다. 이번 장에서는 먼저 그림 7-1의 상태도를 설계
해보자. 그림 7-1은 4개의 상태를 가진 밀리 머신의 상태도이다.
7장 순차논리회로 설계 및 구현(1) 105

[그림 7-1] 상태도의 예

일반적으로 상태도로부터 순차회로를 설계하는 방식은 다음과 같은


절차를 갖는다.

① 상태도를 해석한다.
② 상태도로부터 천이표를 구한다.

[표 7-1] 그림 7-1의 천이표

현재 상태 입력 다음 상태 출력
A B X A B Y
L L L L L L
L L H L H H
L H L H L L
L H H L H L
H L L H L L
H L H H H H
H H L H H L
H H H L L L

이때 천이표의 한 줄은 하나의 화살표에 대응된다.

③ 천이표로부터 카노맵을 이용해 논리식을 최소항의 합으로 구한다.


106 6

위의 천이표로부터 조합게이트에 대한 3개의 논리식은 현재 상태


변수 A와 B 그리고 입력변수 X를 변수로 하는 최소항의 합으로 표
현된다.

m     
A t     D A A B  X  

B t     D A B  X   m     
B

Y A B  X   m   

B
BX
A 00 01 11 10
0 1

A 1 1 1 1

X
(a) A(t+1)
B
BX
A 00 01 11 10
0 1 1

A 1 1 1

X
(b) B(t+1)

B
BX
A 00 01 11 10
0 1

A 1 1

X
(c) Y(t+1)
[그림 7-2] 카노맵(Karnaugh map)
7장 순차논리회로 설계 및 구현(1) 107

카노맵을 이용하여 논리식을 간략하게 만들면 다음과 같다.

DA  A
B B 
X

DB  A
X 
BX  AB 
X

Y
BX

④ 논리식을 이용하여 회로도를 설계한다.


상태도로부터 구한 천이표에서 논리식들을 정리하면 최종적으로 그림
7-3과 같은 순차회로를 얻을 수 있다.

1
3
2

1
3 2 5 Q0
2 D Q
3 6
1 CP Q Q0
3
X 1 2 2

1
3
2

1 1
3 2 9 2 5
2 8 D Q Q1
3 6
CP Q Q1

CP

1
2 9
8

[그림 7-3] 완성된 회로도


108 6

나. T-플립플롭을 이용한 3비트 리플 카운터


n비트 이진 리플 카운터(binary ripple counter)는 별도의 외부 회로
가 필요 없으며, 단지 n개의 플립플롭만으로 구성할 수 있다. 그림 7-4
는 3비트 리플 카운터(n=3)이다. T-플립플롭은 입력 클럭의 상승 에지
마다 상태가 변한다(반전한다). 따라서 카운터의 각 비트는 바로 전 비
트가 ‘H’에서 ‘L’로 변화할 때만 반전한다. 이것은 정상적인 2진 계수의
순서와 동일하다.(따라서 별도의 외부 조합회로가 필요하지 않게 된다.)
특정 비트가 ‘H’에서 ‘L’로 변할 때 다음 상위 비트로 캐리를 발생시킨
다. 캐리정보가 하위비트(less significant bit, LSB)에서 상위비트로 한
번에 한 비트씩 물결치듯 전달되기 때문에 리플카운터라 부르며, 각 플
립플롭이 동일 클럭을 사용하지 않으므로 비동기식 카운터라고 부른다.
4

PR
2 5 Q0
D Q
CP 3 6
CLK Q
CLR
1
4

PR
2 5 Q1
D Q
3 6
CLK Q
CLR
10 1

PR
12 9 Q2
D Q
11 8
CLK Q
CLR
13

PRE CLR

[그림 7-4] 3비트 이진 리플 카운터


7장 순차논리회로 설계 및 구현(1) 109

T 플립플롭은 D 플립플롭이나 JK 플립플롭으로 쉽게 구현되기 때문


에 상용화 된 제품으로 출시되어 있지 않다. 그림 7-5와 그림 7-6은
각각 D 플립플롭과 JK 플립플롭을 이용하여 T 플립플롭을 만드는 예를
보여주고 있다.

SET
D Q

CLR Q

[그림 7-5] D-플립플롭을 이용한 T-플립플롭 구현

Vcc

SET
J Q

K CLR Q

[그림 7-6] JK-플립플롭을 이용한 T-플립플롭 구현

다. 최대주파수와 전달지연시간(propagation delay)


1) 셋업 타임(setup time,  )과 홀드 타임(hold time,  )
에지-트리거드 플립플롭은 클럭의 상승(또는 하강) 에지 시점에 맞추
어 출력 값이 변화한다. 그런데 만일 클럭의 상승 에지 시점과 동일한
시간에 플립플롭의 동기식 입력 신호(JK 플립플롭의 경우 J 혹은 K, D
플립플롭의 경우 D 입력 등) 값이 변하면 출력 값은 어떻게 될까? 이
경우 플립플롭은 불안정하게 되어 출력 값이 어떻게 될 지 알(보장할)
수 없게 된다. 따라서 클럭의 상승 에지 시점에서는 플립플롭의 동기식
110 6

입력신호 값이 변화해서는 안되며, 실제로 모든 플립플롭들은 상승 에


지 시점 직전과 직후의 일정시간동안 플립플롭의 동기식 입력신호 값이
변화하면 안 되는 제한된 시간 구간이 있다. 이와 같은 제한된 시간 구
간을 셋업 타임(setup time)과 홀드 타임(hold time) 이라고 하며, 이를
그림 7-7에 표시하였다.
그림에서 셋업 타임  는 클럭의 상승 에지 시점 이전에 동기식 입력
신호가 변하지 않아야 되는 최소 시간간격을 말하며, 홀드 타임  는 클
럭의 상승 에지 시점 이후에 동기식 입력신호가 변하지 않아야 되는 최
소 시간간격을 말한다. 일반적으로 IC 칩으로 만들어져 있는 플립플롭들
의 셋업 타임은 대략 5-50ns 정도이고, 홀드 타임은 0-10ns 정도이다.
참고로 그림 7-6에서 파형이 ‘L’에서 ‘H’로 변하거나 ‘H’에서 ‘L’으로
변할 때 경사지게 그린 이유는, 전압이 0V에서 5V로 또는 5V에서 0V로
순간적으로 변할 수 없으며, 값이 변하는데 약간의 시간이 걸리기 때문
에 좀 더 실제적으로 변화하는 모양을 나타내기 위해서이다.

2) 전달지연시간(Propagation Delay)
전달지연시간이란 한 경로의 입력변화가 그 경로의 출력변화를 만드
는데 걸리는 시간이다. 다수의 입출력에 대한 조합회로나 순차회로는
여러 경로를 가지며 각 경로는 서로 다른 전달 지연을 갖는다. 또한 출
력이 ‘L’에서 ‘H’로 변화할 때의 전달지연(  )은 ‘H’에서 ‘L’로 변화할
때의 지연(  )과 다를 수 있다. 이는 트랜지스터의 시상수와 관련이
있다. 논리 IC 제조자들은 통상 이들 전달 지연을 데이터 시트에 명시
하여 놓는다. 전달지연시간에는 최대값, 대표값, 그리고 최소값이 있다.
플립플롭은 클럭에 반응하여 출력이 변화되기 때문에 클럭에 대한 전
달 지연 시간은 그림 7-7에 나타낸 것과 같이  와  의 2종류가
있다.  는 클럭의 상승 에지 시점부터 출력이 ‘L’에서 ‘H’로 변하는
시점까지의 시간을 말하고,  는 클럭의 상승 에지 시점부터 출력이
‘H’에서 ‘L’로 변하는 시점까지의 시간을 말한다.
7장 순차논리회로 설계 및 구현(1) 111

[그림 7-7] 셋업 타임, 홀드 타임, 전달지연시간

3) 최대 클럭 주파수(Maximum Clock Frequency)


최대 클럭 주파수는 회로(주로 플립플롭)가 정상적으로 동작할 수 있
는 클럭의 최대 주파수를 말한다. 일반적으로 순차회로의 최대 주파수
를 max 라 할 때 T(1/ max ) ≥  +  +  라는 관계가 성립되며 이때
 는 셋업 타임  는 홀드 타임  는 조합논리의 최대 지연 시간이다.

4) 타이밍 문제
그림 7-8(a)와 같이 첫 번째 플립플롭의 출력 Q1이 두 번째 플립플
롭의 입력 D2로 연결되어 있는 회로의 타이밍을 고려해 보자. 그림
7-8 (b)에서 음영으로 표시된 부분은 두 번째 플립플롭의 셋업 타임
(  )과 홀드 타임(  ) 구간을 나타낸다. 따라서 이 구간에서 두 번째 플
립플롭의 입력 D2의 값(=첫 번째 플립플롭의 출력 Q1의 값)이 변화되면
안 된다. 그런데 첫 번째 플립플롭의 출력 Q1은 클럭의 상승 에지 시점
112 6

에서부터 전달지연시간(  ) 후에 값이 변하게 되므로, 만일  > t h


인 경우에는 그림7-8(b)의 타이밍도에서와 같이 별다른 문제가 없으나
 <  인 경우에는 회로가 불안정하게 된다.

(b) 타이밍도( > t h )


[그림 7-8] 타이밍 문제

3. 예비보고

가. 이 장의 실험 목적에 대해서 스스로 생각해 보고 기술하라.


나. 상태도(state diagram)에 대하여 설명하라.
다. D 플리플롭을 이용해 T 플리플롭의 등가회로를 구성하고 천이표를
통해 동작을 확인하라.
라. 그림7-4의 3비트 이진 리플카운터에 대한 천이표를 작성하고 동작을
7장 순차논리회로 설계 및 구현(1) 113

확인하라.
마. 이론에 나와 있는 순차회로 설계를 참고하여 [실험 가]에 제시된 그
림 7-9의 상태도로부터 회로를 설계하라.
바. 전달지연시간, 셋업시간, 홀드시간, 최대클럭주파수에 대하여 설명하라.
사. 타이밍 문제란 무엇인지 서술하라.

4. 실험 기기 및 부품

74x32 2
74x08 2
74x04 1
74x74 2
LED 5
저항(330Ω) 5

5. 실험

가. 그림 7-9의 상태도를 회로로 설계하라.


① 회로를 꾸민 후 전원을 인가하고 상태의 초기화를 위해 클럭 펄스를
입력하지 않은 상태에서 
PR = ‘H’, 
CLR = ‘L’ 를 입력하여 Q 의 값
을 ‘L’로 만들어 준다. (초기화 상태가 되면 
PR 와 
CLR 는 ‘H’ 상태
로 함)
② 신호발생기의 진폭을 5V, 주파수를 1Hz, OFFSET을 0V가 되도록
오실로스코프로 확인 한 후 클럭 펄스를 회로에 인가한다. (즉 오실
로스코프로 신호발생기의 출력을 측정 했을 때 GND와 5V 사이를
1Hz의 주파수로 바뀌는지 확인한다.)
114 6

[그림 7-9] 4상태를 가진 상태도

나. 그림의 4비트 이진 리플 카운터에 대한 출력값의 변화를 확인하라.


① 회로를 꾸민 후 전원을 인가하고 상태의 초기화를 위해 클럭 펄스를
입력하지 않은 상태에서 
PR = ‘H’, 
CLR = ‘L’를 입력하여 Q 의 값을
‘L’로 만들어 준다. (초기화 상태가 되면 
PR 와 
CLR 는 ‘H’ 상태로
함)
② 신호 발생기의 진폭을 5V, 주파수를 1Hz, 오프셋(OFFSET)을 0V가
되도록 오실로스코프로 확인 한 후 클럭 펄스를 회로에 인가한다.
(즉 오실로스코프로 신호발생기의 출력을 측정 했을 때 GND와 5V
사이를 1Hz의 주파수로 바뀌는지 확인한다.)
③ 아래의 표 7-3에 맞추어 실험 결과를 기입한다. 클럭이 공급됨에 따
라 변화하는 출력을 기입하고 10진수로 변환하여 기입한다.
④ 신호 발생기의 주파수를 계속 높여, 동작하지 않기 시작하는 점을
찾는다. 이 때 신호 발생기의 진폭과 오프셋을 계속 확인한다.
7장 순차논리회로 설계 및 구현(1) 115

4
PR
2 5 Q0
D Q

CP 3 6
CLK Q
CLR

1
10
PR
12 9 Q1
D Q
11 8
CLK Q
CLR

13
10

PR
12 9 Q2
D Q
11 8
CLK Q
CLR
13
10

PR
12
D Q
9 Q3
11 8
CLK Q
CLR
13

PR CLR

[그림 7-10] 4비트 이진 리플 카운터 실험 회로


116 6

6. 결과보고 및 검토

가. 그림 7-9의 회로를 설계하고 다음의 천이표를 완성하라.

[표 7-2] 그림 7-9 상태도의 천이표


현재 상태 입력 다음 상태
A B X A B
L L L
L L H
L H L
L H H
H L L
H L H
H H L
H H H

나. 4비트 이진 리플 카운터를 구성하고 다음의 표를 완성하라.

[표 7-3] 그림 7-10 회로의 천이표


클럭 출력 십진수
(DSTM1) Q3 Q2 Q1 Q0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
118 6

8장
순차논리회로 설계 및 구현(2)

1. 목적

가. 4비트 동기 카운터를 설계하고 구현한다.


나. 4비트 레지스터를 설계하고 구현한다.
다. 3비트 시프트 레지스터를 설계하고 구현한다.

2. 이론

가. 동기식 카운터(Synchronous Counter)


1) T 플립플롭을 이용한 동기식 카운터
동기식 카운터는 모든 플립플롭의 클럭 입력에 공통의 클럭 신호가
연결되기 때문에  (  : T 플립플롭의 입력에서 출력까지의 전달지
연) 의 지연 후에 플립플롭의 모든 출력이 동시에 변한다. 따라서 시간
지연이 매우 작고, 최대 동작 주파수가 높다. 동기식 카운터는 그림
8-1과 같이 인에이블(EN) 입력을 갖는 T 플립플롭으로 구성할 수 있
다. 이 플립플롭의 출력은 EN이 유효할 때만 T의 상승에지에서 반전
된다. 따라서 EN 입력에 대한 조합논리의 출력에 의해 상승에지에서
그 플립플롭이 반전할지가 결정된다. 그림과 같이 Q0의 EN을 이용하면
매스터 카운터 인에이블 신호(CNTEN)로 사용할 수 있다. CNTEN이 유
효할 때 각 T 플립플롭은 자신보다 하위 비트가 모두 ‘H’일 때만 반전
한다.
8장 순차논리회로 설계 및 구현(2) 119

CNTEN Q0
EN Q

CP
T

1
3 Q1
2 EN Q

4
6 Q2
5 EN Q

9
8 Q3
10 EN Q

[그림 8-1] 직렬 인에이블 논리를 가진 동기식 4비트 이진 카운터

2) D 플립플롭을 이용한 동기식 카운터


가장 많이 쓰이는 MSI 카운터는 적재 및 클리어 입력을 갖는 동기식
4비트 이진 카운터 74x163이며, 그림 8-2는 이 카운터의 내부 논리도
이다. ‘163은 적재 및 클리어 기능을 내부적으로 용이하게 하기 위하여
T 플립플롭 대신 D 플립플롭을 사용하고 있다. 각 D 입력은 하나의
OR 게이트와 두개의 AND 게이트로 구성된 2입력 멀티플렉서에 의해
구동된다. 만약 
CLR 입력이 유효하면(‘L’이면) 멀티플렉서의 출력은 ‘L’
이 된다. 그렇지 않을 경우 
LD 입력이 유효하면 위쪽 AND 게이트가
데이터입력 A, B, C와 D를 멀티플렉서의 출력쪽으로 전달한다. 만약

CLR 이나 
LD 입력이 둘 다 유효하지 않으면 아래쪽 AND 게이트를 통
하여 XNOR 게이트의 출력을 멀티플렉서의 출력으로 전달한다.
‘163에서 XNOR 게이트가 카운터 기능을 수행한다. 각각의 XNOR의
입력중 하나는 대응하는 카운터 비트 QA, QB, QC 또는 QD이며, 다른
하나의 입력은 ‘H’인데 이는 ENP, ENT의 두 인에이블 입력이 유효하고
또 하위 카운터 비트들이 모두 ‘H’일 때만 카운터 비트를 보수화
120 6

(Complement)시킨다. 리플 캐리 출력(ripple carry out : RCO) 신호는


MSB 위치로부터 발생한 자리올림을 뜻하며, 모든 카운터 비트가 'H'이
고 ENT가 유효할 때 ‘H’가 된다. 이 신호를 이용하면 ‘163을 직렬로
연결하여 8비트 이상의 카운터를 만들 수 있다.

3 14
4 A QA 13
5 B QB 12
6 C QC 11
D QD 15
2 RCO
10 CLK
7 ENT
9 ENP
LOAD
CLR
1

[그림 8-2] 74x163에 대한 논리기호

3) 동기식 상향 카운터
동기식 상향(up) 카운터는 클록펄스가 발생할 때마다 카운터 출력값
이 증가하는 카운터이다.

[그림 8-3] 2비트 상향 카운터의 상태도

4) 동기식 하향 카운터
동기식 하향(down) 카운터는 클록펄스가 발생할 때마다 카운터 출력
값이 감소하는 카운터이다.
8장 순차논리회로 설계 및 구현(2) 121

[그림 8-4] 2 비트 하향 카운터의 상태도

5) 직렬 카운터 와 병렬 카운터
그림 8-1의 카운터 구조는 가끔 동기식 직렬 카운터라고 불리는데,
이는 조합 인에이블 신호가 최하위 비트(LSB, Least Significant Bit)에
서 부터 최상위 비트(MSB, Most Significant Bit)로 순차적으로 전달되
기 때문이다. 만약 클럭 주기가 너무 짧다면, 카운터의 LSB의 변화가
MSB로 전달되는데 시간이 충분하지 않을 수도 있다. 따라서 이 회로는
비트수가 커질수록 여러 개의 AND 게이트를 통과하므로 최대 동작 주
파수가 낮아진다. 이러한 문제는 그림 8-5와 같이 다입력 AND 게이트
를 이용하여 EN 입력을 구동하여 해결할 수 있다. 이러한 카운터를 동
기식 병렬 카운터로 부르며, 이진 계수기에서는 가장 빠른 구조이다.
122 6

CNTEN Q0
EN Q

CP
T

12
11 Q1
13 EN Q

1
2 12
13 EN Q Q2

74LS11
T

1
2
6 Q3
4 EN Q
5
74LS21
T

[그림 8-5] 병렬 인에이블 논리를 가진 동기식 4비트 2진 카운터

나. 레지스터(Register)
레지스터는 플립플롭의 집합으로 구성할 수 있다. 각 플립플롭은 한
비트의 정보를 저장한다. 즉 n비트 레지스터는 n개의 플립플롭으로 구
성되고 n비트의 이진 정보를 저장할 수 있다.
보통 레지스터의 구성은 플립플롭과 그들의 기능(예를 들어 다기능
레지스터) 혹은 입력 선택 등을 정의하는 조합논리로 구성된다. 가장
간단한 레지스터는 그림 8-6과 같이 외부에 게이트가 없이 단지 플립
플롭으로 구성할 수 있다. 클럭 입력 신호의 상승에지에서 4비트의 입
력이 4비트 레지스터에 저장된다. 클리어(Clear) 신호는 비동기 신호로
서(클럭에 관계없이 동작), 모든 플립플롭의 
CLR 입력단자로 연결되어
모든 레지스터를 리셋(‘L’) 상태로 만드는데 사용되며 일반적으로 초기
화 회로에 이용된다. 그림 8-5에서 레지스터의 내용을 변하지 않게 그
대로 유지하고 싶다면 클럭 입력 단자에 클럭이 가해지지 않도록 제어
할 수도 있다.
8장 순차논리회로 설계 및 구현(2) 123

4
PR
2 5 Q0
D0 D Q
3 6
CP CP Q
CLR

1
4
PR
D1 2
D Q
5 Q1
3 6
CP Q
CLR

1
10
PR
D2 12 9 Q2
D Q
11 8
CP Q
CLR
13
10

PR
D3 12 9 Q3
D Q
11 8
CP Q
CLR
13

PR CLR

[그림 8-6] D 플립플롭으로 구성된 4비트 레지스터

또 다른 방법으로는 그림 8-7과 같이 MUX를 이용하여 플립플롭의


입력을 선택할 수 있도록 구성하고, 레지스터의 내용을 유지하려면 자
신의 출력을 입력으로 선택할 수 있도록 회로를 구성할 수도 있다.
124 6

S1 S0

DSL

13 2 5 Q0
15 . D Q
D0 14 00 3
1 01 CLK
2 10 4
11 S1 4
S0
MUX

5 12 9 Q1
7 . D Q
D1 6 00 11
9 01 CLK
10 10 12
11 S1
S0
MUX

5 12 9 Q2
7 . D Q
D2 6 00 11
9 01 CLK
10 10 12
11 S1
S0
MUX

5 12 9 Q3
7 . D Q
D3 6 00 11
9 01 CLK
10 10 12
11 S1
S0
DSR MUX

[그림 8-7] 입력 선택 레지스터

다. 시프트 레지스터(Shift Register)


시프트 레지스터는 클럭이 발생할 때마다 내용을 한 비트씩 이동하는
레지스터이다. 시프트 레지스터는 두 가지 방향으로 자리이동을 한다.
우(Right) 방향 시프트레지스터는 클럭이 발생할 때마다 레지스터의 각
비트 값들이 MSB(Most Significant Bit)에서 LSB(Least Significant Bit)
방향으로 이동하고 좌(Left) 방향 시프트 레지스터는 LSB에서 MSB방향
으로 이동한다.
그림 8-8은 병렬입력/병렬출력의 시프트레지스터를 나타낸 것으로,
D1에서 D4로의 방향으로 시프트 되어 출력된다.
8장 순차논리회로 설계 및 구현(2) 125

[그림8-8] 4비트 병렬입력/병렬출력 시프트 레지스터의 구조

3. 예비보고

가. 이 장의 실험 목적에 대해서 스스로 생각해 보고 기술하라.


나. 동기식 카운터와 비동기식 카운터의 차이점에 대해 설명하라.
다. 플리플롭을 사용하기 위해서는 Preset 단자와 Clear 단자의 설정이
필수이다. 그 이유를 기술하라.
라. 그림8-1의 4비트 이진 카운터의 동작을 클럭에 따른 시간의 변화를
감안하여 천이표로 작성하라.
마. 직렬 카운터와 병렬 카운터의 차이점에 대해 서술하라.
바. 레지스터에 대해서 간단히 설명하고 그림 8-6의 4비트 레지스터의
입력과 출력의 관계를 천이표를 통해 확인하라.
사. [실험 다]를 위한 회로를 구성하고 [실험 다]의 3번 항목에 대한 해
126 6

결방안을 제시하라.

4. 실험 기기 및 부품

74x32 2
74x08 3
74x04 1
74x00 1
74x10 1
74x74 2
74x76 2
74x194 2
LED 4
저항(330Ω) 4

5. 실험

가. 4비트 동기식 상향 카운터를 설계하고 출력 값의 변화를 관찰하여 표


8-1을 완성하라.

VCC
Q0 Q1 Q2 Q3

PR
1 1
2

3 3
2 2
PR PR PR PR
4 15 4 15 9 11 4 15
J Q J Q J Q J Q
CP 1 1 6 1
CP CP CP CP
16 14 16 14 12 10 16 14
K Q K Q K Q K Q
CLR CLR CLR CLR
7476 7476 7476 7476
3

CLR

[그림 8-9] 4비트 동기식 Up 카운터


8장 순차논리회로 설계 및 구현(2) 127

나. 4비트 동기식 하향 카운터를 설계하고 출력값의 변화를 관찰하여 표


8-2를 완성하라.

VCC

Q0 Q1 Q2 Q3

PR

1 1
3 3
2

2
2 2
PR PR PR PR
4 15 4 15 9 11 4 15
J Q J Q J Q J Q
CP 1 1 6 1
CP CP CP CP
16 14 16 14 12 10 16 14
K Q K Q K Q K Q
CLR CLR CLR CLR
7476 7476 7476 7476
3

3
CLR

[그림 8-10] 4비트 동기식 Down 카운터

다. 4비트 유니버설 시프트 레지스터(universal shift register, 74x194)를


사용하여 회로를 구현하라.
1) 회로를 구현하고 결과를 확인하라.
2) 1(15pin)번과 4(12pin)번의 출력을 XOR하고 이를 시프트 레지스터
의 shift-in 입력으로 사용했을 때 시프트 레지스터에서 shift-out
되는 출력의 파형을 확인하라.
3) 병렬-직렬 변환(parallel to serial convert)이 되는 것을 확인하라.
어떻게 실험을 하면 좋을지 설명하고 그 결과를 구하라.
128 6

10
9 S1 15
7 S0 QA
2 SL 14
3 SR QB
4 A 13
5 B QC
6 C 12
11 D QD
CP
CLR
74LS194A
1

[그림 8-11] 4비트 유니버설 시프트 레지스터 회로의 예


8장 순차논리회로 설계 및 구현(2) 129

6. 결과보고 및 검토

가. 4비트 동기식 상향 카운터를 설계하고 출력을 확인하여 다음의 표를


완성하라.

[표 8-1] 그림 8-9 회로의 천이표

클럭수 Q3 Q2 Q1 Q0 십진수
초기화
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
130 6

나. 4비트 동기식 하향 카운터를 설계하고 출력을 확인하여 다음의 표를


완성하라.

[표 8-2] 그림 8-10 회로의 천이표

클럭수 Q3 Q2 Q1 Q0 십진수
초기화
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

다. 4비트 유니버설 시프트 레지스터 회로를 구현하라.


132 6

9장
VHDL(Very High speed Integrated Cir-
cuit Hardware Description Language)
설계 툴 사용법

1. 목적

가. VHDL의 설계 툴 중 하나인 MAX+PLUS II의 설치법을 익힌다.


나. MAX+PLUS II Text Editor를 이용하여 VHDL 설계에 대하여 이해하고
사용법을 익힌다.
다. MAX+PLUS II의 컴파일러와 시뮬레이터를 이용하여 VHDL로 설계한
회로에 대한 시뮬레이션 방법을 익힌다.
라. MAX+PLUS II의 Timing Analyzer와 Wavefrom Editor를 이용하여 설
계한 회로를 분석하는 방법을 익힌다.

2. 이론

가. MAX+PLUS II 설치법
하드디스크에 MAX+PLUS II를 설치하기 위한 MAX+PLUS II 설치파일
License file을 다운로드 받는다. 현재는 http://www.altera.com사이트에
서 MAX+PLUS II Student Edition 10.1 버전을 다운로드받을 수 있다.
설치 파일 이외에 License 파일을 다운 받기 위한 과정은 다음과 같
다.

① http://www.altera.com에서 오른쪽 맨 위의 License file을 클릭한다.


9장 VHDL 설계 툴 사용법 133

② 맨 아래 부분의 Student 버전의 라이센스 부분을 클릭한다.

[그림 9-1] MAX+PLUS II 학생버전 선택

③ 버전체크에서 Student 버전의 10.1 버전의 라디오 버튼을 선택한다.

[그림 9-2] MAX+PLUS II 버전 체크

④ 자신의 컴퓨터의 윈도우즈가 설치된 하드디스크의 볼륨넘버를 기입


한다. MS-DOS 모드를 실행한 후 dir/w를 쳐보면 자신의 C 드라이
브의 볼륨넘버를 알 수 있다.

[그림 9-3] MAX+PLUS II 설치를 위한 하드디스크 번호 확인


134 6

[그림 9-4] MAX+PLUS II 하드디스크 볼륨 번호 작성

⑤ 자신의 개인 정보를 삽입한다. 이때 메일정보를 정확하게 기입하여


야 한다.

[그림 9-5] MAX+PLUS II 사용자 정보 작성


9장 VHDL 설계 툴 사용법 135

⑥ 이제 완료되었으며 기록된 이메일로 라이센스 파일이 배달된다.

[그림 9-6] 라이센스 획득

나. MAX+PLUS II의 설계과정에 대한 설명


MAX+PLUS II는 쉬운 그래픽 설계 환경과 사용자 인터페이스 형태로
되어 있으며 사용자가 Design Entry를 사용하여 디지털 논리회로를 설
계할 수 있다.

[그림 9-7] MAX+PLUS II의 구성

그림 9-8은 MAX+PLUS II의 각 구성요소 및 사용되는 윈도우즈 내의


확장자명에 대하여 보여주고 있다.
136 6

[그림 9-8] MAX+PLUS II의 컴파일러 구성도


9장 VHDL 설계 툴 사용법 137

[그림 9-9] MAX+PLUS II의 검증 과정도

그림 9-9는 MAX+PLUS II의 검증 과정을 보여준다. 컴파일러를 이용


하여 코드의 에러를 수정하고 시뮬레이터를 이용하여 그 결과를 검증할
수 있다.
138 6

다. MAX+PLUS II를 사용한 설계 예

1) MAX+PLUS II 사용법
MAX+PLUS II의 초기화면 은 그림 9-10과 같다.

[그림 9-10] MAX+PLUS II 초기화면

FILE 메뉴에서 NEW를 선택하면 아래와 같은 DIALOG BOX가 나온다.

[그림 9-11] MAX+PLUS II Editor 선택화면


9장 VHDL 설계 툴 사용법 139

Text Editor file을 선택한 후 OK를 하면 다음과 같은 창이 열린다.

[그림 9-12] MAX+PLUS II Text Editor 초기화면

다음과 같은 간단한 논리회로를 구현한다고 하면,

A1 1 2 F1 = A

A2 1
3 F2 = AB
B2 2

A3 1
3 F3 = A+B
B3 2

[그림 9-13] 간단한 논리회로(Inverter, AND, OR 게이트)

Text Editor에 다음과 같이 Library와 Entity를 선언한다.


140 6

[그림 9-14] Entity 작성

다음으로 아래와 같은 architecture 선언을 한다.

[그림 9-15] Architecture 구현


9장 VHDL 설계 툴 사용법 141

그림 9-16은 그림 9-13의 회로를 전체 프로그램밍한 예제이다.

[그림 9-16] AND, OR, Inverter 프로그래밍

File의 Save as를 선택한 후 파일 이름을 ENTITY의 이름과 같게 지정해


준다. 이때 파일의 확장자 명은 .vhd 확장자 명으로 하여야 한다.

[그림 9-17] Text Editor로 작성한 설계 파일 저장


142 6

2) VHDL 컴파일(Compile)

[그림 9-18] 코딩의 Project 셋팅

file의 Project의 Name 메뉴를 선택한 후 Set Project to Current File을


클릭한다. 그리고 File의 Project에 Save&Compile을 선택해서 Compile을
수행한다.

[그림 9-19] 컴파일 수행 화면


9장 VHDL 설계 툴 사용법 143

컴파일이 시작되고 아무런 에러나 경고가 없으면 VHDL로 기술된 하드


웨어에 에러가 없음이 검증된 것이다. 그러나 다른 경고나 에러가 발생하
면 ALTERA의 HELP를 이용하여 문법이 틀린 곳을 수정하여 위의 과정을
되풀이 한다.

[그림 9-20] 컴파일 결과 화면

3) VHDL 시뮬레이션

Waveform Editor로 들어간다.

[그림 9-21] WaveForm Editor 초기화면


144 6

Waveform과 연동을 위해서는 입출력 포트에 대한 정의를 해야 하므로


먼저 입출력 포트를 지정해야 한다. 마우스 오른쪽 버튼을 클릭하여
Menu box를 클릭한 후, Menu box에서 그림 9-22(a)와 같이 Enter
Node form SNF를 클릭하고 그림 9-22(b)와 같이 입출력 포트를 지정한
다.

(a) Enter Node from SNF 윈도우

(b) 입출력 포트 지정
[그림 9-22] 입출력 포트의 Waveform 연동

먼저 List를 클릭 후 "=>" 표시된 것을 클릭한 뒤 OK를 선택한다.


9장 VHDL 설계 툴 사용법 145

[그림 9-23] AND, OR, Inverter의 시뮬레이션 결과

입력 Node(IN1~5)에 대해 Wave를 편집한다. 편집 방법은 자신이 주고


자 하는 입력을 결정한 후 입력 파형을 입력하여야 한다. 기본적으로 모
든 입력은 ‘L’로 되어 있는 상태이므로 마우스로 해당 라인을 선택 하여
왼쪽부터 오른쪽으로 드래그하여 구간을 선택한 후 마우스의 오른쪽 버튼
을 클릭하면 ‘H’ 또는 ‘L’ 등의 값을 줄 수 있다. 마지막으로 File의
Project의 Save & Simulation 메뉴를 선택해서 시뮬레이션을 수행한다.

3. 예비보고

가. MAX+PLUS II 프로그램에 대하여 조사하고 설명하라.


나. MAX+PLUS II 프로그램을 다운로드하여 설치하고 주의 할 점을 조사
하고 설명하라.
나. 컴파일러와 시뮬레이터에 대해 설명하라.
146 6

4. 실험 기기 및 부품

컴퓨터
MAX+PLUS II

5. 실험

가. MAX+PLUS II 설치
MAX+PLUS II를 위 방법에 따라 차례대로 설치하라.

나. MAX+PLUS II Text Editor 연습


기본게이트인 AND, OR 게이트를 코딩한다. 2 입력 AND 게이트를 다
음과 같은 코딩을 통하여 구조화 할 수 있다.

Text Editor를 이용하여 다음의 코드를 입력한다.


코드1
library ieee;
use ieee.std_logic_1164.all;
entity and2 is
port (A,B : IN std_logic;
Y : OUT std_logic);
end and2;
architecture action of and2 is
begin
Y<='1' when A='1' and B='1'
else '0';
end action;
9장 VHDL 설계 툴 사용법 147

코드2
library ieee;
use ieee.std_logic_1164.all;
entity or2 is
port (A,B : IN std_logic;
Y : OUT std_logic);
end or2;
architecture action of or2 is
begin
Y<='0' when A='0' and B='0'
else '1';
end action;

※ VHDL을 이용한 코딩은 다음 장에서 배울 수 있는 동작적 모델링 기


법과 자료흐름적 모델링 기법으로 나눌 수 있으며 자세한 내용은 다
음 장에서 학습기로 한다.

다. MAX+PLUS II Compile & Simulate 연습


기본 게이트인 AND, OR 게이트를 시뮬레이션 한다. 컴파일러를 통하
여 에러를 발견하고 수정할 수 있으며 시뮬레이터를 이용하여 코딩의 결
과를 검증할 수 있다.

라. MAX+PLUS II Timing analyzer 와 Waveform Editor 연습


기본게이트인 AND, OR 게이트를 분석한다.

※ Waveform 편집기를 통하여 input 파형을 구체적으로 결정할 수 있다.


전체 회로에 대한 이해가 없을 경우 입력파형을 결정 할 수 없기 때문
에 회로에 대한 이해를 바탕으로 입력을 결정한다. 시뮬레이션과 파형
검증을 통해 실제 칩을 제작하지 않고도 회로의 동작 결과를 눈으로서
확인할 수 있다.
148 6

6. 결과보고 및 검토

가. MAX+PLUS II 설치 시 주의 할 점은 무엇인가?

나. 기본게이트인 AND, OR 게이트를 시뮬레이트하고 결과를 검증하라.

다. 위의 시뮬레이트된 결과를 Timing analyzer 와 Waveform Editor를


이용해 분석하라.
150 6

10장
VHDL 설명 및 문법

1. 목적

가. VHDL의 특징과 설계 기법에 대하여 학습한다.


나. VHDL 설계를 위한 기본적인 문법을 학습한다.

2. 이론

가. VHDL의 역사
VHDL은 상위의 동작 레벨부터 하위의 게이트 레벨까지 하드웨어 및 그
동작을 기술할 수 있도록 만들어진 하드웨어 기술 언어(Hardware
Description Language)이다. 미 국방성에 의해서 개발되었으며 현재 대
부분의 하드웨어 설계 회사에서 사용 중이고 IEEE에서 표준화 작업을 담
당하고 있다. 1970년대 개발되어 1983년부터 민간에서 본격적으로 개발
되기 시작하였다

나. VHDL의 특징
1) 장점
① 표준화된 라이브러리
② 특정 기술 및 공정에 무관한 설계방법
③ 폭 넓은 이용 범위
④ Top-Down 방식의 설계
⑤ 재사용이 가능
⑥ 설계 기간 단축
10장 VHDL 설명 및 문법 151

2) 단점
① VHDL 언어 자체의 복잡성
② Full-custom 설계 방식에 비해 최적화된 설계가 어려움

다. VHDL의 설계기법 (모델링별 설계기법)


1) 동작적 모델링 기법
동작적 모델링이란 시스템이 내부적으로 어떠한 구조를 가지고 있는지
에 상관없이 설계자가 원하는 것을 기능적 또는 수학적인 알고리즘을 사
용하여 시스템의 기능을 기술한 것을 말한다. 간단하게 입력에 따른 출력
결과에 대하여 표현한다. 흔히 우리가 말하는 C 나 Pascal 언어와 같은
고급 프로그래밍 언어를 사용하여 프로그램을 작성하는 것과 비슷하다.

2) 자료흐름적 모델링 기법
말 자체가 의미하는 바와 같이 자료의 흐름 즉 신호 및 제어의 흐름을
통한 코딩을 나타낸다. 다시 말하면 입력으로부터 출력까지의 신호의 흐
름에 따른 경로 표현을 통하여 시스템을 설계하는 기법을 의미한다.
RTL(Register-Transfer-language) 형태를 사용하여 VHDL의 순차문
(concurrent)을 주로 사용하여 표현하는 기법이다.

3) 구조적 모델링기법설명
3가지 모델링 기법 중 하드웨어에 가장 가까운 모델링 기법을 의미한
다. 모든 컴포넌트(component)뿐만 아니라 연결 상태까지 하드웨어로 시
스템을 구성하는 것과 같은 방법으로 일일이 세세하게 기술하여 전체적인
시스템의 구조를 말로써 풀어 쓰는 것과 유사한 방법으로 설계를 하는 기
법이다.

라. VHDL에 의한 설계 단계별 문법 설명
1) 엔티티 선언(Entity declaration)

- 하드웨어 블록의 이름과 입출력포트 선언


프로세스의 입출력과 같이 전체의 회로에서 단지 하나만이 존재하며
152 6

하나의 엔티티가 가지는 여러 아키텍처 몸체에 대한 서로간의 연결과


관계된 선언 및 전체적인 구성에 관한 정의를 내려주는 부분이다.

① Component의 이름과 입출력 interface를 정의


② 하드웨어의 검사 및 동작에 필요한 설계 매개변수의 전달
③ 여러 아키텍쳐 몸체에서 공통으로 사용할 것을 선언

- 형식
entity 엔티티_이름 is
[generic(리스트);]
[port(리스트);]
{선언문}
[begin
{문장}]
end [엔티티_이름];

l generic문
① 설계의 엔티티를 매개변수화 하는데 사용한다.
② generic문을 통하여 설계 파라미터를 회로에 전달함으로서 특정크기
나 개수들에 국한시키지 않고 보다 일반화 할 수 있다.
③ 지연부, 컴포넌트 수, 비트 수 등을 전달한다.
형식 : generic (이름, ..... : 자료형[:=표현]; .....);

(예)
entity Example is
generic(Delay : Time);
port(INPUT : in_bit ; OUTPUT : out_bit);
end Example;

l port문
① 하드웨어 컴포넌트 상의 핀 또는 연결된 핀 그룹을 표현하며 엔티티
내에서 정의한다.
10장 VHDL 설명 및 문법 153

② 매개변수_리스트를 통해서 외부와의 연결한다.


③ 포트이름, 신호, 흐름 그리고 자료형을 나타낸다.
형식 : port (포트이름, ..... : [모드] 자료형[:=표현]; .....)

(예)
entity Example is
port ( a,b : in_bit :='1'; c : out_bit );
end Example;

l 선언문
① 여러 개의 아키텍쳐 몸체에서 공통으로 사용할 것들을 선언한다.
② 선언문에 사용되는 선언들은 다음과 같다.
• 자료형 선언(deta type declaration)
• 부자료형 선언(substype declaration)
• 상수 선언(constant declaration)
• 신호 선언(signal declaration)
• 속성 선언 및 명세(attribute declaration and specification)
• 단절 명세(disconnection specifiation)
• 사용구(use clause)
• 파일 선언(file declaration)

(예)
entity declaration_sample is
port ( .... );
type three_level_logic is ('0', '1', 'X');
type chars is array(Natural range<>) of Three_level_logic;
use work.specials.all;
......
end declaration_sample;

- 문장
① 값의 설정 또는 소거와 같은 단언 또는 검사를 하는 부분이다.
154 6

② 검사나 단언을 여러 아키텍처 몸체에서 반복해서 할 필요 없이 여기


에 한번만 표현한다.

2) 아키텍쳐 몸체 선언 (architecture body)


- 하드웨어 내부를 표현한다.
시스템의 실제적 동작부분에 대한 기술을 하는 부분이다.

- 내부회로의 연결, 동작 또는 구조 등을 표현한다.


VHDL은 generic문과 더불어 순차문도 가지고 있다. 순차문은 프로세
스 불록 또는 함수 프로시저 내에서만 기술 될 수 있다. 이는 프로그램
내의 순서에 따라 수행되며 일반적인 프로그램 언어들과 같이 변수와
상수들로 상태가 유지된다. 이로써 내부의 병행문을 통해 하드웨어적으
로 소자들의 구성과 동작에 대한 전체적인 맥락을 준비하고 내부의 순
차문을 통하여 각각의 블럭의 동작특성 및 사용에 대한 정의를 통해서
전체적인 VHDL 언어를 구성하는 것이다.

- 형식
architecture 아키텍처_이름 of 엔티티_이름 is
{선언문}
begin
내부적_동작_표현
end [아키텍쳐_이름];

- 선언문
begin과 end 사이에서 사용할 신호(signal), 변수(variable), 상수
(constant) 그리고 자료형 등을 선언한다.
• 자료형, 부자료형 선언
• 상수, 신호 선언
• 컴포넌트 선언, 구성 명세
• 서브프로그램 및 몸체 선언
• 속성 선언 및 명세
• 단절 명세, 사용구 선언
10장 VHDL 설명 및 문법 155

• 파일 선언, 별명 선언

- 병행문
다른 문장과 병행적으로 수행되는 병행문을 이용하여 하드웨어 내부
적인 동작 또는 구조를 나타낸다.
• 블록문
• 컴포넌트 사례문
• 병행 단언문 등

- 내부적 동작표현
① 하드웨어 내부적인 동작표현을 하여 실제 동작을 설명한다.
② 동작적 설계기법의 내부적 표현 문법이다.

3) 프로세스문
하드웨어 시스템의 모듈들은 서로 간에 병행적으로 수행되므로 시스템
의 동작으로 표현하기 위해서는 일반적으로 병행문을 사용하는 것이 바람
직하다. 프로세스 내부는 순차적으로 수행되고 프로세스 문들은 병행적으
로 수행된다.

- 형식
[프로세스_레이블:]
process [(감지_리스트)]
{선언문}
begin
{순차문}
end process [프로세스_레이블]

위에서 언급한 것과 같이 사용할 여러 변수 및 상수들에 대하여 선언


을 한 다음 순차문에서 동작을 표현한다. 이제 순차문의 종류들에 대하
여 알아보도록 한다.

4) 순차문
156 6

- 대기문
대기문은 프로세스문의 수행을 잠시 중단시키고 대기시킴으로서 활동
과 중지 사이의 변화를 제어한다. 대기하고 있다가 신호에 변화가 있거
나 조건을 만족할 경우 또는 일정한 시간이 지나면 프로세스문의 수행
을 재개한다.

wait until 조건; --대기하다가 조건이 만족하면 수행한다.


wait until enable = ‘1’

- 변수 할당문
변수는 프로시져 및 프로세스문 내에서 사용할 변수에 값을 할당할
수 있다.

변수이름=값

- if문
조건을 만족할 시에 순차문을 수행한다.

if 조건 then 순차문;
end if;

if 조건 then 순차문1;
else 순차문2;
end if;

if 조건 then 순차문1;
elsif 조건2 then 순차문2;
......
else 순차문 N;
end if;
10장 VHDL 설명 및 문법 157

- case문
수식의 결과에 따라서 정해진 순차문을 실행한다. 정해진 결과에 속
하지 않을 경우 또한 정해진 순차문이 존재한다.

case 수식 is
when 값1 => 순차문1;
when 값2 => 순차문2;
when 값3 => 순차문3;
when 값4 => 순차문4;
end case;

5) 자료흐름적 기법의 내부적 동작표현


- 병행신호할당문
병행신호할당문은 프로세스문에서 지정어인 process, begin, end 등
과 감지신호를 없앤 간결한 표현으로서 하나의 프로세스문을 수행하는
것과 같은 결과를 가진다. 병행신호할당문은 병행으로 수행되는 문장으
로서 순서에 무관하다. 병행신호할당문의 제어는 조건적 병행신호할당
문과 선택적 병행신호할당문이 있다.

- 조건적 병행 신호할당문
신호이름 <= [transport][guarded]
파형1 when 조건1 else
파형2 when 조건2 else
......
파형N-1 when 조건N-1 else
파형N;

- 선택적 병행 신호할당문
신호이름 <= [guarded][transport]
파형1 when 선택1
파형2 when 선택2
파형3 when 선택3
파형N when other;
158 6

각각의 선택이나 조건은 일반적인 연산자를 바탕으로 판단하고 파형


부분은 병행문이나 예약어 지정어 등을 이용한 특정 값의 할당으로서
표현한다.
(예)
architecture actiondata of and_4 is
begin
Y <= A and B and C and D;
end actiondata;

6) 설계문법
- 식별어, 예약어, 주석, 개별어
설계자가 정의한 공백을 가지지 않는 문자열, 엔티티, 아키텍쳐 몸체,
함수, 프로시져 등의 이름을 정의하기 위하여 사용한다.
① 식별어의 첫 번째 문자열은 영문자로 시작하며 두 번째 문자열부터
는 영문자, 숫자, 공백(_)이 올수 있다.
② 주석 : VHDL 수행에는 영향을 미치지 않는 프로그램이 설명을 위해
사용하는 문자열 “--”표시로 주석임을 알 수 있다.

- 자료형과 객체
① VHDL에서 신호, 변수, 상수와 같이 어떤 값을 가지고 있는 것을 객
체라고 하며 모든 객체는 자료형을 가진다.

정수형, 실수형, 열거형, 물리형, 복합형, 참조형, 파일형등의 자료형을 가진다.

② 정수형(integer type)
a. 정수형은 32비트 표현범위를 가진다.
-(231-1) ~ +(231-1) = -2147483647 ~ +2147483647
b. 부자료형은 type으로 정의된 자료형의 부분집합을 가진다.
10장 VHDL 설명 및 문법 159

☉미리정의된 정수형
type Integer is range -2147483647 to 2147483647; --predefined
subtype Natural is Integer range 0 to Integer'high; --predefined
subtype positive is Integer range 1 to Integer'high; --predefined

☉사용 예
variable a: bit_positive; --use of Integer type
signal b: Byte;

③ 실수형(real type, floating point type)


자료형l은 이미 미리 정의되어 있고 그 표현 범위는 다음과 같다.

-1.0*1038 ~ +1.0*1038

☉미리정의된 실수형
type Real is range -1.0E38 to 1.0E38; --predefined
type Norm is range 0.0 to 1.0; --predefined

④ 열거형(Enumeration type)
열거형은 가로안에 식별어 또는 문자 리터럴을 가진다. 문자 리터럴은
단일 인용부호 (‘’)안에 있는 하나의 ASCII 문자를 말한다.

☉미리 정의된 열거형


type Boolean is (TURE, FALSE); --predefined
type Bit is ('0', '1'); --predefined
type Character is (
NUL, SOH, STX, ETX, EOT, ENQ,
... -- ... 는 생략을 의미함
' ', '!', .....
'a','b','c','d','e'
);

⑤ 물리형(Physical Type)
160 6

물리형은 저항, 시간, 거리 등과 같이 물리적인 양을 나타내기 위해서


사용한다. 또한 물리형은 기준단위를 가지며 2차 단위는 기준단위의
정수배로 표현한다.
☉물리형의 정의와 사용 예
type Resistance is range 1 to 1E10
units
ohm; --base unit
Kohm = 1000ohm; -- secondary unit
Mohm = 1000Kohm;
end units;
type Time is range implementation_defined
units
fs; --base unit
ps = 1000fs;
ns = 1000ps;
us = 1000ns;
ms = 1000us;
sec = 1000ms;
min = 60 sec;
hr = 60 min;
end units;
type Length is range 0 to 1E10
units
A ;
nm = 10A;
um = 1000nm;
mm = 1000um;
cm = 10 mm;
m = 100cm;
end units;

- 연산자
수학적 기호 또는 판단을 해야 하는 경우의 조건문으로서 사용되는 연
산자는 다음과 같이 논리연산자, 관계연산자, 연결연산자, 산술연산자,
부호연산자, 기타연산자 등이 있다. 각각의 이름과 같이 사용되는 곳이
다르며 연산자 각각은 하드웨어적으로 복잡하게 구현되는 내용을 함축
적으로 담고 있는 것이다. 각각의 연산자 간에는 종류에 따라서 우선순
위가 정해지며 이 우선순위에 따라서 계산의 결과가 달라질 수 있다. 일
반적으로 같은 우선순위를 가진 연산자는 왼쪽으로부터 수행된다.
10장 VHDL 설명 및 문법 161

[표 10-1] 연산자 우선순위

구분 종류 우선순위
and (Logical AND)
논리연산자 or (Logical OR)
nand (Logical NAND) 6
(logical operator) nor (Logical NOR)
xor (Logical Exclusive OR)
= (equal)
/= (Not equal)
관계연산자 < (less than)
5
(relational operator) <= (less than or equal)
> (grater than)
>= (grater than or equal)
연결연산자 & (concatenation)
+ (addition) 4
산술연산자
- (subtraction)
+ (unary PLUS)
부호연산자 3
- (unary Minus)
*
/
산술연산자 2
mod (Modulus)
rem (Remainder)
abs (absolute value)
기타연산자 1
not (complement)

3. 예비보고

가. VHDL의 특징에 대해 조사하라.


나. 자료흐름적 모델링과 동작적 모델링의 차이를 설명하라.

4. 실험 기기 및 부품

컴퓨터
MAX+PLUS II
162 6

5. 실험

가. NOT(inverter) 게이트 실습
1) 주어진 회로를 구성하기 위하여 빈칸을 채워 프로그램을 완성하라.
MAX+PLUS II를 이용하여 설계를 시뮬레이션하고 waveform 형식으로
출력 한 후 결과를 분석하라.

A F
A 1 2 F = A L H
H L

[그림 10-1] NOT 게이트와 진리표

논리식 : F  
A

2) VHDL 코딩
① 동작적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그램을
완성하라.

library ieee;
use ieee.std_logic_1164.all;
entity inv is

end inv;
architecture action of inv is
begin

end action;
10장 VHDL 설명 및 문법 163

② 자료흐름적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그


램을 완성하라.

library ieee; use ieee.std_logic_1164.all;


entity inv is

end inv;
architecture actiondata of inv is
begin

end actiondata;

나. NAND 게이트 실습
1) 주어진 회로를 구성하기 위하여 빈칸을 채우고 프로그램을 완성하라.
MAX+PLUS II를 이용하여 설계를 시뮬레이션 하고 waveform 형식으
로 출력한 후 결과를 분석하라.

A B F
A 1 L L H
3
2
F = AB L H H
B
H L H
H H L

[그림 10-2] NAND 게이트와 진리표

논리식 : F  A  B 
164 6

2) VHDL 코딩
① 동작적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그램을
완성하라.
library ieee;
use ieee.std_logic_1164.all;
entity nand2 is

end nand2;
architecture action of nand2 is
begin

end action;

② 자료흐름적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그


램을 완성하라.

library ieee;
use ieee.std_logic_1164.all;
entity nand2 is

end nand2;
architecture actiondata of nand2 is
begin

end actiondata;
10장 VHDL 설명 및 문법 165

다. XOR 게이트 실습
1) 어진 회로를 구성하기 위하여 빈칸을 채우고 프로그램을 완성하라.
MAX+PLUS II를 이용하여 설계를 시뮬레이션 하고 waveform 형식으
로 출력한 후 결과를 분석하라.

A B F
1

A L L L
3 F = A B L H H
2

B
H L H
H H L

[그림 10-3] XOR 게이트와 진리표

논리식 : F  A⊕B   A 
B 
AB

2) VHDL 코딩
① 동작적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그램을
완성하라.

library ieee;
use ieee.std_logic_1164.all;
entity xor2 is

end xor2;
architecture action of xor2 is
begin

end action;
166 6

② 자료흐름적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그


램을 완성하라.

library ieee;
use ieee.std_logic_1164.all;
entity xor2 is

end xor2;
architecture actiondata of xor2 is
begin

end actiondata;
10장 VHDL 설명 및 문법 167

6. 결과보고 및 검토

가. NOT(inverter) 게이트 실습
1) VHDL 코딩
① 동작적 모델링 기법을 이용하여 프로그램을 완성하라.
② 자료흐름적 모델링 기법을 이용하여 프로그램을 완성하라.

나. NAND 게이트 실습
1) VHDL 코딩
① 동작적 모델링 기법을 이용하여 프로그램을 완성하라.
② 자료흐름적 모델링 기법을 이용하여 프로그램을 완성하라.
168 6

다. XOR 게이트 실습
1) VHDL 코딩
① 동작적 모델링 기법을 이용하여 프로그램을 완성하라.
② 자료흐름적 모델링 기법을 이용하여 프로그램을 완성하라.
170 6

11장
VHDL을 이용한 기본 논리 게이트 및
가산기의 구현

1. 목적

가. VHDL을 이용한 조합논리회로(Combinational Logic) 구현을 익힌다.

2. 이론

조합논리회로는 출력이 현재 입력에 의해서만 결정되는 회로이다. 조합


논리회로는 임의의 개수의 논리 게이트 및 인버터를 포함하며, 귀환 루프
(Feedback Loop)는 없다. 귀한 루프는 하나의 게이트의 출력이 동일한
게이트의 입력으로 되돌아가도록 하는 회로에서의 신호 경로이다. 일반적
으로 그러한 루프는 순차회로 동작을 만든다.

가. 반가산기
※ 6장 가산기와 ALU 그리고 조합논리회로 응용 반가산기 이론 참조

나. 전가산기
※ 6장 가산기와 ALU 그리고 조합논리회로 응용 전가산기 이론 참조

다. 멀티플렉서(Multiplexer 혹은 MUX)
멀티플렉서는 여러 개의 데이터 입력을 받아서 그 중 하나를 선택적으
로 출력하는 논리회로로서 출력하고자 하는 데이터의 입력은 선택입력
(select input)신호에 의해서 제어된다. MUX는 디지털 제어 중 다중 스위
11장 VHDL을 이용한 기본 논리 게이트 및 가산기의 구현 171

치와 같은 역할을 하며, N개의 입력데이터 중 하나를 선택해서 선택된 데


이터를 전송하는데 이를 멀티플렉싱(Multiplexing)이라 한다.

1) 4-to-1 MUX
※ 5장 Encoder/Decoder 와 Mux/Demux MUX이론 참조

라. VHDL을 이용한 조합논리회로의 설계


VHDL은 상위의 동작 레벨부터 하위의 게이트 레벨까지 하드웨어를 기
술하고 설계하도록 하는 CAD 작업의 IEEE 표준 언어인 하드웨어 설계
언어이다. VHDL을 이용한 조합논리회로 설계 예제를 통해 이해해 보자.

1) 비교기(Comparator)의 VHDL 코딩
비교기는 두 개의 입력신호를 받아 두 신호가 같으면 ‘H’을 출력하고
다르면 ‘L’을 출력하는 회로이다. 즉, XNOR게이트이다. 비교기의 진리표
는 아래와 같다.

A B F
L L H
L H L
H L L
H H H

(a) 진리표 (b) 카노맵


[그림 11-1] XNOR 게이트

위의 표를 논리식과 게이트를 이용한 회로도는 다음과 같다.

F
AB AB
172 6

A 1
3
B 2

1
3 F
2

A 4
6
B 5

[그림 11-2] XNOR 회로도

위의 비교기를 VHDL로 코딩하면 아래와 같다.

[그림 11-3] 비교기 코딩 예

코딩한 VHDL을 컴파일하면 오류가 없을 경우 아래와 같은 결과를 얻을


수 있다.
11장 VHDL을 이용한 기본 논리 게이트 및 가산기의 구현 173

[그림 11-4] 비교기의 컴파일 수행 화면

컴파일을 수행했으면 Waveform Editor를 이용하여 입력파형을 만든다.


예를 이용해서 시뮬레이터를 수행하면 에러가 없을 경우 아래와 같은 결
과를 얻는다.

[그림 11-5] 비교기의 입력파형 시뮬레이션 결과 화면

다음으로 입력파형을 설정하고 최종 시뮬레이션하면 아래와 같은 출력


파형을 얻게 된다.
174 6

[그림 11-6] 비교기의 Waveform

위의 출력 파형을 분석해 보면 두 입력이 같을 때만 출력파형의 값이


‘H’가 된다는 것을 알 수 있다.

2) 인코더(Encoder)
인코더는 디코더의 기능으로부터 반대되는 동작을 만들어 내는 디지털
n
회로이다. 인코더는 2 의 입력과 n개의 출력을 갖고 있다. 출력은 입력
값에 대한 이진 코드를 발생시킨다. 예로써 8-to-3 인코더에 대한 진리
표를 아래의 표에 나타내었다.

[표 11-1] 8-to-3 인코더의 진리표

입력 출력
D7 D6 D5 D4 D3 D2 D1 D0 Y2 Y1 Y0
L L L L L L L H L L L
L L L L L L H L L L H
L L L L L H L L L H L
L L L L H L L L L H H
L L L H L L L L H L L
L L H L L L L L H L H
L H L L L L L L H H L
H L L L L L L L H H H
11장 VHDL을 이용한 기본 논리 게이트 및 가산기의 구현 175

위의 진리표를 최소화하면 아래와 같은 표현식이 된다.

Y  D  D  D  D
Y  D  D  D  D
Y  D  D  D  D

위의 표현식을 바탕으로 다음과 같은 회로도를 구성할 수 있다.

2
3
1 Y2
4
5

D0
D1 9
D2 10
D3 13 Y1
D4 11
D5 12
D6

2
3
1 Y0
4
5
D7

[그림 11-7] 8-to-3 인코더의 회로도

위의 인코더를 VHDL로 코딩하면 아래와 같다.


176 6

[그림 11-8] 인코더의 VHDL 코딩 예

인코더를 위와 같이 코딩하면 오류가 없을 경우 아래와 같이 오류가 없


다는 메시지가 나온다.

[그림 11-9] 인코더의 Compile 수행결과 화면


11장 VHDL을 이용한 기본 논리 게이트 및 가산기의 구현 177

컴파일을 수행하였으면 Waveform Editor를 수행한다. 오류가 없을 경


우 아래와 같이 오류가 없다는 메시지가 나온다.

[그림 11-10] 인코더의 시뮬레이션 결과 확인

다음으로 입력 파형을 설정하고 시뮬레이션하면 아래와 같은 결과를 얻


게 된다.

[그림 11-11] Encoder의 시뮬레이션 결과 Waveform


178 6

3. 예비보고

가. 반가산기의 동작원리에 대해 설명하라.


나. 카노맵을 이용해 전가산기의 회로를 최소화하라.
다. 멀티플렉서의 동작원리에 대해 설명하라.

4. 실험 기기 및 부품

컴퓨터
MAX+PLUS Ⅱ의 셋업

5. 실험

가. 반가산기 실습
1) 실습과제로 주어진 반가산기 회로를 모델링하기 위한 코딩을 완성한
다.
2) MAX+PLUSⅡ를 이용하여 시뮬레이션한 후 Waveform을 확인한다.
11장 VHDL을 이용한 기본 논리 게이트 및 가산기의 구현 179

① 동작적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그램을


완성하라.

LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_arith.all;
ENTITY half_adder IS

END half_adder;
ARCHITECTURE action OF half_adder IS
BEGIN

END action;
180 6

② 자료흐름적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그


램을 완성하라.

LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_arith.all;
ENTITY half_adder IS

ARCHITECTURE actiondata OF half_adder IS


BEGIN

end actiondata;
11장 VHDL을 이용한 기본 논리 게이트 및 가산기의 구현 181

나. 전가산기 실습

1) 동작적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그램을 완


성하라.

LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_arith.all;
ENTITY full_adder IS

ARCHITECTURE action OF full_adder IS


BEGIN
PROCESS(X,Y,Ci)
variable I : integer;
BEGIN

END action
182 6

2) 자료흐름적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그램


을 완성하라.

LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_arith.all;
ENTITY full_adder IS

END full_adder;
ARCHITECTURE datafolw OF full_adder IS
BEGIN

END actiondata;
11장 VHDL을 이용한 기본 논리 게이트 및 가산기의 구현 183

다. 4x1멀티플렉서 실습
1) 실습과제로 주어진 4x1MUX 회로를 모델링 하기위한 코딩을 완성한
다.
2) MAX+PLUSⅡ를 이용하여 시뮬레이션한 후 wave form을 통해 확인한다.
3) VHDL 모델링

① 동작적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그램을


완성하라.

LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY mux_1 IS

END mux_1;
ARCHITECTURE action OF mux_1 IS
BEGIN
PROCESS(I,S)
BEGIN

END action;
184 6

② 자료흐름적 모델링 기법을 이용하여 다음의 빈 칸을 채우고 프로그


램을 완성하라.

LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY mux4_1 IS

END mux4_1;
ARCHITECTURE actiondata OF mux4_1 IS
BEGIN

END actiondata;
11장 VHDL을 이용한 기본 논리 게이트 및 가산기의 구현 185

6. 결과보고 및 검토

가. 반가산기 실습
1) 동작적 모델링 기법을 이용하여 프로그램을 완성하라.
2) 자료흐름적 모델링 기법을 이용하여 프로그램을 완성하라.

나. 전가산기 실습
1) 동작적 모델링 기법을 이용하여 프로그램을 완성하라.
2) 자료흐름적 모델링 기법을 이용하여 프로그램을 완성하라.
186 6

다. 4x1멀티플렉서 실습
1) 동작적 모델링 기법을 이용하여 프로그램을 완성하라.
2) 자료흐름적 모델링 기법을 이용하여 프로그램을 완성하라.
11장 VHDL을 이용한 기본 논리 게이트 및 가산기의 구현 187
188 6

12장
VHDL을 이용한 순차회로 구현

1. 목적

가. 기본적인 소자인 래치와 플립플롭의 VHDL구현에 대하여 이해한다.


나. 래치와 플립플롭을 이용한 카운터를 VHDL로 설계한다.

2. 이론

가. 순차논리회로(Sequential Logic)
순차회로는 현재의 입력뿐만 아니라 회로 내부에 기억된 이전 상태의
값(과거의 입력에 의해 결정됨)에 따라 현재의 출력 값이 결정되는 회로
이다. 따라서 순차회로는 회로 내부 상태의 값들을 기억하기 위한 기억요
소들을 가지게 되며, 일반적으로 많이 사용되는 기억요소로는 플립플롭
(flip-flop)과 래치(Latch)라고 하는 소자 등이 있다. 순차회로에는 입력에
가하는 신호의 타이밍에 따라 크게 동기식 순차회로와 비동기식 순차회로
로 분류된다.

[그림 12-1] 순차회로 블록도


12장 VHDL을 이용한 순차회로 구현 189

1) 동기식 순차논리회로 (Synchronous Sequential Logic)


동기식 순차논리회로란 회로에 클럭 펄스가 들어오는 시점을 기준으
로 회로의 입력 신호로부터 회로의 동작을 정의할 수 있는 시스템이다.
즉 다시 말해서 입력으로 다수의 신호가 들어오더라도 회로의 동작은
클럭 펄스가 들어오는 시점에서의 입력신호만 유효한 것이다.

2) 비동기식 순차논리회로(Asynchronous Sequential Circuit)


비동기식 순차논리회로는 입력 신호가 차례로 전달되어 순차적으로
출력이 넘어가 최종단에서 최종출력 신호가 출력된다. 최종출력은 회로
의 소자들의 순서에 따르게 되며, 소자들을 차례로 통과한다. 따라서
지연 문제가 생길 수 있다.

3) RS 래치
※ 4장 각종 Latch와 Flip-Flop RS래치 이론 참조

4) D 래치
※ 4장 각종 Latch와 Flip-Flop RS래치 이론 참조

D 2
S 2 5
5 D Q
E3 Q
E 6 3 6
Q E Q
2
R

(A) 회로도 (B) 기호

입력 출력
E D Q
L X Q(유지)
H L L
H H H

(c)기능표
[그림 12-2] D 래치
190 6

그림 12-2는 D래치를 나타낸 것으로, Enable신호와 D 입력이 존재하


고, 출력 Q, 
Q 를 가지고 있다. E=‘L’ 이면 D의 값에 상관없이 이전의
값이 그대로 출력이 되고, E=‘H’가 되면 D의 값에 따라서 출력이 변화
하는데, D=‘L’이면 Q=‘L’, 
Q =‘H’가 되고, D=‘H’이면 Q=‘H’, 
Q =‘L’이
된다.

5) RS 플립플롭
※ 4장 각종 Latch와 Flip-Flop 클럭드(Clocked) RS플립플롭 이론 참조

6) D 플립플롭
※ 4장 각종 Latch와 Flip-Flop D플립플롭 이론 참조

7) JK 플립플롭(JK Flip-Flop)
※ 4장 각종 Latch와 Flip-Flop JK플립플롭 이론 참조

그림 12-3은 실제 JK플립플롭을 구성하기 위한 VHDL 설계의 예를 나


타내었다.

[그림 12-3] JK 플립플롭의 코딩 예


12장 VHDL을 이용한 순차회로 구현 191

다음은 그림 12-3에서 보여준 JK 플립플롭의 코딩이다.

LIBRARY ieee; USE ieee.std_logic_1164.all;


ENTITY JK_FF IS
PORT(J, K, CL : IN std_logic;
Q : BUFFER std_logic);
END JK_FF ;
ARCHITECTURE action OF JK_FF IS
BEGIN
PROCESS (J, K, CL)
BEGIN
IF (CL'EVENT and CL = '1') THEN
IF (J = '1' and K = '0') THEN Q <= '1';
ELSIF (J = '0' and K = '1') THEN Q <= '0';
ELSIF (J = '1' and K = '1') THEN Q <= not(Q);
END IF;
END IF;
END PROCESS;
END action;

[그림 12-4] VHDL을 이용한 JK플립플롭의 구현

그림 12-5는 J, K, CL 입력을 가하여 JK 플립플롭의 출력 Q를 시뮬


레이션 한 파형이다.

[그림 12-5] JK 플립플롭 출력 결과


192 6

바. 카운터(8비트 동기식 이진 카운터)


1) 카운터 종류와 특징
※ 8장 순차논리회로 설계 및 구현(1) 이론 참조

2) 카운터 설계
카운터를 설계하기 위해서는 사용할 플립플롭의 클럭이 어떻게 동작하
는지 알아야하며, 설계할 카운터의 상태 변화도 또한 정해야 한다. 그림
12-6은 동기식 이진 상향카운터의 상태도와 기호를 보여주고 있다.

[그림 12-6] 카운터 상태도와 기호

상태도를 결정한 다음에는 상태도에 맞추어 입, 출력 단자를 정하고 각


각의 성질을 결정한다. 입, 출력 단자들의 성질을 이용 상태도에 맞게
VHDL로 프로그래밍하면 카운터 설계가 끝이 난다.

3. 예비보고

가. 순차논리회로에 대해 설명하라.
나. 래치와 플립플롭의 VHDL구현에 대하여 설명하라.
다. 카운터의 VHDL구현에 대하여 설명하라.
12장 VHDL을 이용한 순차회로 구현 193

4. 실험 기기 및 부품

컴퓨터
MAX+PLUS II의 셋업

5. 실험

가. VHDL을 이용하여 D래치를 구현하라.


1) 다음 빈곳을 채워서 D래치를 구현하라.

LIBRARY ieee; USE ieee.std_logic_1164.all;


ENTITY D_LATCH IS

END D_LATCH ;
ARCHITECTURE action OF D_LATCH IS
BEGIN

END action;
194 6

2) 다음과 같은 출력이 나오도록 입력파형을 그려라.

[그림 12-7] D 래치 Waveform 출력파형

나. VHDL을 이용하여 D플립플롭 구현하라.


1) 다음 빈곳을 채워서 D플립플롭을 구현하라.

LIBRARY ieee; USE ieee.std_logic_1164.all;


ENTITY D_FF IS

END D_FF ;
ARCHITECTURE action OF D_FF IS
BEGIN

END action;
12장 VHDL을 이용한 순차회로 구현 195

2) 다음과 같은 출력이 나오도록 입력파형을 그려라.

[그림 12-8] D 플립플롭 Waveform 출력파형

다. VHDL을 이용하여 4비트 동기식 이진 카운터를 구현하라.


1) 다음 빈곳을 채워서 4비트 동기식 이진 카운터를 구현하라.
196 6

LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all;


ENTITY 4b_Sync_Counter IS

END 4b_Sync_Counter ;
ARCHITECTURE action OF 4b_Sync_Counter IS

BEGIN

END action;

2) 다음과 같은 출력이 나오도록 입력파형을 그려라.

[그림 12-9] 4비트 동기식 이진 카운터 Waveform 출력파형


12장 VHDL을 이용한 순차회로 구현 197

라. VHDL을 이용하여 8비트 동기식 이진 카운터를 구현하라.


1) 다음 빈곳을 채워서 8비트 동기식 이진 카운터를 구현하라.

LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all;


ENTITY 8b_Sync_Counter IS

END 8b_Sync_Counter ;
ARCHITECTURE action OF 8b_Sync_Counter IS
BEGIN

END action;
198 6

6. 결과보고 및 검토

가. VHDL을 이용하여 D래치를 구현하라.


1) D래치를 구현하라.
2) 입력파형을 구하라.

나. VHDL을 이용하여 D플립플롭을 구현하라.


1) D플립플롭를 구현하라.
2) 입력파형을 구하라.
12장 VHDL을 이용한 순차회로 구현 199

다. VHDL을 이용하여 4비트 동기식 이진 카운터를 구현하라.


1) 4비트 동기식 이진 카운터를 구현하라.
2) 입력파형을 구하라.

라. VHDL을 이용하여 8비트 동기식 이진 카운터를 구현하라.


1) 8비트 동기식 이진 카운터를 구현하라.
Data Sheet 199

Data sheet
200 디지털 공학 실험
Data Sheet 201
202 디지털 공학 실험
Data Sheet 203
204 디지털 공학 실험
Data Sheet 205
206 디지털 공학 실험
Data Sheet 207
208 디지털 공학 실험
Data Sheet 209
210 디지털 공학 실험
Data Sheet 211
212 디지털 공학 실험
Data Sheet 213
214 디지털 공학 실험
Data Sheet 215
216 디지털 공학 실험
Data Sheet 217
218 디지털 공학 실험
Data Sheet 219
220 디지털 공학 실험
Data Sheet 221
222 디지털 공학 실험
Data Sheet 223
224 디지털 공학 실험
Data Sheet 225
226 디지털 공학 실험
Data Sheet 227
228 디지털 공학 실험
Data Sheet 229
230 디지털 공학 실험
Data Sheet 231
232 디지털 공학 실험
Data Sheet 233
234 디지털 공학 실험
Data Sheet 235
236 디지털 공학 실험
Data Sheet 237
238 디지털 공학 실험
Data Sheet 239
240 디지털 공학 실험
Data Sheet 241
242 디지털 공학 실험
Data Sheet 243
244 디지털 공학 실험
Data Sheet 245
246 디지털 공학 실험
Data Sheet 247
248 디지털 공학 실험
Data Sheet 249
250 디지털 공학 실험
Data Sheet 251
252 디지털 공학 실험
Data Sheet 253
254 디지털 공학 실험
Data Sheet 255
256 디지털 공학 실험
Data Sheet 257
258 디지털 공학 실험
Data Sheet 259
260 디지털 공학 실험
Data Sheet 261
262 디지털 공학 실험
Data Sheet 263
264 디지털 공학 실험
Data Sheet 265
266 디지털 공학 실험
Data Sheet 267
268 디지털 공학 실험
Data Sheet 269
270 디지털 공학 실험
Data Sheet 271
272 디지털 공학 실험
Data Sheet 273
274 디지털 공학 실험
Data Sheet 275
276 디지털 공학 실험
Data Sheet 277

You might also like