mir.pe (일반/밝은 화면)
최근 수정 시각 : 2024-09-16 15:38:41

논리 회로

OR 게이트에서 넘어옴
''' 이론 컴퓨터 과학
{{{#!wiki style="display: inline-block; font-family:Times New Roman, serif;font-style:italic"'''
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#a36> 이론
기본 대상 수학기초론{ 수리논리학( 논리 연산) · 계산 가능성 이론 · 범주론 · 집합론} · 이산수학( 그래프 이론) · 수치해석학 · 확률론 통계학 · 선형대수학
다루는 대상과 주요 토픽
계산 가능성 이론 재귀함수 · 튜링 머신 · 람다대수 · 처치-튜링 명제 · 바쁜 비버
오토마타 이론 FSM · 푸시다운 · 튜링 머신( 폰노이만 구조) · 정규 표현식 · 콘웨이의 생명 게임 · 형식언어
계산 복잡도 이론 점근 표기법 · 튜링 기계^ 고전, 양자, 비결정론적, 병렬 임의접근 기계^ · 알고리즘 · 자료구조 · 알고리즘 패러다임( 그리디 알고리즘, 동적 계획법)
정보이론 데이터 압축( 무손실 압축 포맷 · 손실 압축 포맷) · 채널 코딩(채널 용량) · 알고리즘 정보 이론(AIT) · 양자정보과학
프로그래밍 언어이론 프로그래밍 언어( 함수형 언어 · 객체 지향 프로그래밍 · 증명보조기) · 메타 프로그래밍 · 유형 이론 · 프로그래밍 언어 의미론 · 파싱 · 컴파일러 이론
주요 알고리즘 및 자료구조
기초 정렬 알고리즘 · 순서도 · 탐색 알고리즘
추상적 자료형 및 구현 배열^ 벡터^ · 리스트^ 연결 리스트^ · 셋(set)^ 레드-블랙 트리, B-트리^ · 우선순위 큐^, 피보나치 힙^
수학적 최적화 조합 최적화 외판원 순회 문제 · 담금질 기법 · 유전 알고리즘 · 기계학습
볼록 최적화 내부점 방법 · 경사하강법
선형계획법 심플렉스법
계산 수론 및 암호학 밀러-라빈 소수판별법 · Pollard-rho 알고리즘 · 쇼어 알고리즘 · LLL 알고리즘 · 해시( MD5 · 암호화폐 · 사전 공격( 레인보우 테이블) · SHA) · 양자 암호
대칭키 암호화 방식 블록 암호 알고리즘( AES · ARIA · LEA · Camellia) · 스트림 암호 알고리즘(RC4)
공개키 암호화 방식 공개키 암호 알고리즘( 타원 곡선 암호 · RSA) · 신원 기반 암호 알고리즘(SM9)
계산기하학 볼록 껍질 · 들로네 삼각분할 및 보로노이 도형^Fortune의 line-sweeping 알고리즘^ · 범위 탐색^vp-tree, R-tree^ · k-NN
그래프 이론 탐색^ BFS, DFS, 다익스트라 알고리즘, A* 알고리즘^ · 에드몬드-카프 · 크루스칼 알고리즘 · 위상 정렬 · 네트워크 이론
정리
정지 문제 대각선 논법 · 암달의 법칙 · P-NP 문제미해결 · 콜라츠 추측미해결
틀:이산수학 · 틀:수학기초론 · 틀:컴퓨터공학 }}}}}}}}}



[[컴퓨터공학|컴퓨터 과학 & 공학
Computer Science & Engineering
]]
[ 펼치기 · 접기 ]
||<tablebgcolor=#fff,#1c1d1f><tablecolor=#373a3c,#ddd><colbgcolor=#0066DC><colcolor=white> 기반 학문 || 수학( 해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학( 환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학( 형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학 ||
하드웨어 구성 SoC · CPU · GPU( 그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술 기계어 · 어셈블리어 · C/ C++ · C# · Java · Python · BIOS · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시( SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속
연구

기타
논리 회로( 보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영 체제 · 데이터베이스 · 프로그래밍 언어{ 컴파일러( 어셈블러 · JIT) · 인터프리터 · 유형 이론 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩( 유니코드 · MBCS) · 네트워크 · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도( 최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리( 기계 번역 · 음성인식) · 버전 ( 버전 관리 시스템 · Git · GitHub)


1. 개요2. 종류3. 논리 게이트
3.1. 기호
3.1.1. IEC 기호3.1.2. ANSI 기호3.1.3. DIN 기호
4. 교과목
4.1. 내용
4.1.1. combinational logic(조합 논리)4.1.2. sequential logic(순차 논리)
5. 연관되는 교과목6. 각종 시험에서의 출제7. 관련 문서

1. 개요

/ logic circuit

불 대수(Boolean algebra)를 이용하여 1개 이상의 논리 입력을 넣었을 때 일정한 논리 연산에 의해 1개의 논리 출력을 얻는 회로이다. 1937년에 석사 과정 대학원생이던 클로드 섀넌이 불 대수를 전자 회로의 해석에 도입하여 디지털 논리 회로 이론을 창시하였다. 즉, 서로를 반대하는 수로 0과 1뿐인 2진법의 해석을 따른다.

전자 회로(electronic circuit)의 구성 요소들을 이용하여 만든 논리 게이트(NAND, NOR, NOT 등)를 이용해 원하는 동작을 구현하는, 현대의 디지털 시대를 이끈 학문이다.[1]

간단하고 쉽게 설명하자면, ‘모여서 전자 기기 등 다른 더 복잡한 전기 회로들을 구성하는 가장 기초적인 회로’ 정도로 생각하면 된다.

2. 종류

크게 순서 논리 회로와 조합 논리 회로가 있다.

조합 논리 회로는 기억 장치가 없고, 외부의 입력만을 사용하여 출력을 만들어내는 논리 회로이다. 기본적인 논리 게이트들이나, 가산기, 비교기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서 등이 조합 논리 회로이다.

순서 논리 회로는 기억 장치가 있어서 내부적으로 특정한 상태를 가질 수 있고, 외부 입력과 내부 상태를 모두 사용하여 출력을 만들어내는 회로이다. 카운터, 레지스터, CPU 등이 있다.

순서 논리 회로는 동기식과 비동기식이 나뉘며, 동기식은 클럭 펄스에 따라 기억 장치가 활성화되고, 내부 상태가 변하는 논리 회로이며, 비동기식은 입력이 바뀌는 즉시 내부 상태가 변한다.

3. 논리 게이트

이하의 내용은 Circuit Scramble처럼 논리 회로를 모델로 한 게임을 해보면 직관적으로 이해할 수 있다.[2] 1-20 스테이지 공략
게이트 종류 입력 입력
입력 출력 출력
입력 출력 출력
논리 게이트(logic gate)의 표기법이다. NOT과 버퍼 게이트는 입력이 1개만 들어오므로 1열의 입력값이 없으며 출력값도 2개만 있다.
전자 공학에서 모든 논리 게이트를 NAND만으로 구성 가능하다. 구현 방법은 위키백과 NAND logic 문서 참고.
위의 NAND 게이트와 NOR 게이트만으로 모든 논리 게이트를 만들 수 있기에 따로 범용 게이트(universal gates)라고도 불린다.



파일:나무위키+유도.png  
XNOR은(는) 여기로 연결됩니다.
작곡가 Frums의 곡에 대한 내용은 XNOR XNOR XNOR 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
참고하십시오.

3.1. 기호

파일:관련 문서 아이콘.svg   관련 문서: 회로 기호도
,
,
,
,
,
파일:Logic-gate-index.png
위: IEC 기호 / 중간: ANSI 기호 / 아래: DIN 기호[5]
논리 회로는 위의 기호를 이용해서 구성한다. 같은 논리 게이트여도 구체적인 소자 구성은 다를 수 있다.

3.1.1. IEC 기호

국제전기기술위원회(IEC)에서 제정한 표준 기호. 사실은 영국의 심볼(BS3939)을 그대로 가져온 것이다. 모든 기호가 네모나고, 부정을 뜻하는 경우 앞에 동그라미 또는 직각 삼각형이 추가된다.[6] 각 게이트의 차이는 안에 들어가는 글자[7]뿐이다.
손으로 그리기는 가장 쉬우나(대충 네모 그리고 글자 쓰면 되니....) 한눈에 논리 게이트를 알아보기는 어려운 편이다. 연속으로 그리기 어렵기로 유명한 &의 압박도 무시할 수 없다.

3.1.2. ANSI 기호

미국 국립 표준 협회( ANSI)에서 제정한 기호. 전공 서적에 그려져 있는 논리 게이트는 대부분 이거라고 생각하면 된다. IEC 기호와 마찬가지로 부정을 뜻하는 경우 앞에 동그라미가 추가된다.
한눈에 회로 구조를 비교적 알아보기는 쉽지만, 곡선이 비교적 많이 들어가기 때문에[8] 그림에 소질이 없는 경우 게이트 하나하나 그리는 데 고생하게 된다(...).

다른 기호에 비해 가로 폭이 유독 큰 편이다.

3.1.3. DIN 기호

독일 표준화 협회(DIN)에서 제정한 기호. IEC 기호와 ANSI 기호의 중간적 특성을 띤다. 모든 기호가 활꼴이며 위의 둘과는 달리 부정을 뜻하는 동그라미가 검다.
BUF/NOT과 AND/NAND가 똑같이 생겼기 때문에[9] 혼동하기 쉽다.

4. 교과목

Digital Logic Circuit, (Digital) Logic Design

정보 대학 공과 대학 전기 전자 공학부 컴퓨터 공학부 전공 과목 중 하나이다. 디지털 공학이라고도 한다. 논리 연산의 방법과 현대의 디지털 회로에 쓰이는 여러 가지 개념 및 적용법을 배우는 과목이다. 이 과목에선 기본적으로 입력값과 출력값이 0 과 1로 구성되어 있기 때문에 접근 방식이 기존에 학생들이 배우던 아날로그 방식과는 확연히 다르며[10] 아날로그 회로를 생각하고 이 과목을 듣게 되면 곤란해진다.

기본적인 접근 방식이 불 대수이기 때문에 집합(a set of elements)[11]을 생각하면 쉽다. 그러나 사실 이 과목은 엄밀히 말하면 논리 연산의 방법 자체를 배우는 것에 중점을 두기 보다는 디지털 회로에 쓰이는 개념들에 더 중점을 두는 과목이기 때문에 앞부분을 잘한다고 뒷부분까지 잘하게 된다는 보장은 없다. 특히 이 과목은 교수의 재량권이 매우 큰 과목이고, 딱 어디까지가 디지털 논리 회로고 어디부터가 디지털 시스템 설계인가 하는 명확한 기준이 없다. 따라서 교수의 강의 방식과 강의 역량에 따라서도 공부량과 흥미가 좌우될 수 있는 과목.

일반적으로 전기 전자 공학부와 컴퓨터 공학부의 1, 2학년 또는 3학년 학생들이 주로 배우게 되며 당연하게도 전공 기초인 학교가 많기 때문에 웬만한 전자 공학도라면 한 번쯤은 듣게 되는데 앞부분은 몰라도 뒷부분에서 상당히 머리가 아픈 개념들이 많이 나온다. 기초 과목이므로 전공과목 중 가장 쉬운 과목이라 생각하는 학생도 많이 있고, 어렵게 느끼는 학생도 많은 등 체감 난이도가 사람마다 천차만별인 과목이다. 낯선 개념들이 쏟아지므로 이들과 어서 친해지자.

4.1. 내용

논리 회로의 접근 방식은 크게 combinational logic design(조합 논리, structural design)과 sequential logic design(순차 논리, behavioral design)의 2가지로 나누어지게 되는데 쉽게 풀어 쓰자면 combinational logic은 시간의 개념과 관계가 없는 논리 회로를 뜻하고 sequential logic은 시간의 개념이 포함된 논리 회로를 뜻한다.

이 문서는 Randy H. Katz가 지은 Contemporary Logic Design 2판을 기초로 작성하였다. 전문 대학에서는 이보다 쉬운 교수 자체 집필 교재를 사용한다.

단원 배치는 대체적으로 디지털 개요 - 수 체계 - 불 대수 - 조합 논리 회로 - 순서 논리 회로 - 기타 응용 회로로 구성된다.

4.1.1. combinational logic(조합 논리)

파일:external/book.transtutors.com/ccc.jpg
이름 AND OR
항등 법칙 [math(\rm 1A=A)] [math(\rm 0+A=A)]
지배 법칙 [math(\rm 0A=0)] [math(\rm 1+A=1)]
동일 법칙[12] [math(\rm AA=A)] [math(\rm A+A=A)]
역원 법칙 [math(\rm A\overline A =0)] [math(\rm A+\overline A =1)]
교환 법칙 [math(\rm AB=BA)] [math(\rm A+B=B+A)]
결합 법칙 [math(\rm \left( AB \right) C = A \left( BC \right) )] [math(\rm \left( A+B \right) + C = A + \left( B + C \right) )]
분배 법칙 [math(\rm A+BC = \left( A+B \right)\left( A+C \right) )] [math(\rm A\left( B+C \right) =AB+AC)]
흡수 법칙 [math(\rm A\left( A+B \right)=A)] [math(\rm A+AB=A)]
드모르간 법칙 [math(\rm \overline{AB} = \overline A + \overline B)] [math(\rm \overline{A+B} = \overline A\ \overline B)]

기본적인 논리 연산 방법에 대해 배우는 단원으로 논리 연산 자체는 딱히 중요하게 배우지는 않으나 어찌됐든 논리 회로 해석의 가장 기본이 되는 부분이므로 잘 공부해 놓는 것이 좋다. truth table(진리표) 해석법 및 SOP form과 POS form의 차이점 구별 및 적용 방법에 대해 공부하게 되며 더 나아가 Karnaugh map(카르노 맵, 통칭 K-map)을 이용하여 여러 Boolean equation들을 줄이는 방법[13]에 대해서도 공부하게 된다. 특히 드모르간 법칙은 회로식을 간단히 만드는 데 많이 쓰이므로 필수적으로 익혀 두어야 한다.
파일:나무_전가산기.svg
adder의 개념이 처음으로 나오는 단원으로 여러 종류의 adder와 기타 combinational logic(조합 논리)들을 K-map(카르노 맵), Quine-McCluskey method(콰인-매클러스키 알고리즘), ESPRESSO 등 여러 가지 방법으로 분석해 보게 된다. 이 분석 결과들을 바탕으로 hazard(0-hazard / 1-hazard)의 개념, 존재 여부 및 hazard-free한 설계 방법에 대해서도 공부하게 된다.

파일:external/fourier.eng.hmc.edu/4x1_mux.gif
combinational logic(조합 논리)의 실질적인 적용법에 대해서 배우는 단원이다. ROM의 정의와 multiplexor(MUX) 및 demultiplexor(DEMUX)의 작동 원리 및 multi-level로 구성된 MUX와 DEMUX 설계 방법(cascading)에 대해서 공부하게 되며, 더 나아가 지금까지 배웠던 combinational logic(조합 논리)을 실질적으로 설계하는 효율적인 방법들인 PAL과 PLA가 무엇인지에 대해서도 공부하게 된다. tri-state(세 가지 상태)의 개념에 대해서 처음으로 나오는 단원이기도 하다.

파일:external/upload.wikimedia.org/400px-4-bit_ripple_carry_adder-subtracter.svg.png
위의 모든 적용법까지 다 배웠다면 이제 설계를 배울 차례만 남았다. 교수의 재량권이 매우 커지는 단원으로 어떤 방식의 설계를 가르치냐에 따라 난이도가 극명하게 갈리기 때문에 다양한 케이스들에 대해 제대로 숙지를 하고 있어야 공부하는 데에 도움이 된다.

signed number(부호가 있는 숫자 표현), 2's complement(2의 보수)의 개념에 대해서 배우게 되며 이를 바탕으로 위에서 했던 가산기를 응용한 adder/subtractor(가산기/감산기) 및 ripple-carry adder(리플 자리 올림수 가산기), carry-select adder, carry-lookahead adder(자리 올림수 예측 가산기) 등등 adder(가산기)의 다양한 설계 방법에 대해 공부하게 되며 더 나가면 기초적인 ALU 설계 방법에 대해서도 공부하게 된다.

4.1.2. sequential logic(순차 논리)

파일:external/www.cs.umd.edu/seq.png

파일:external/www.doctronics.co.uk/4014_02.gif
sequential logic은 기본적으로 memory와 위에서 배웠던 combinational logic에 시간 개념을 넣어주는 것을 바탕으로 시작하며, 이 단원에서는 위에서 배운 게이트들을 이용하여 memory를 어떤 식으로 구현하는지부터 시작한다. 이 단원에선 sequential logic의 기본 요소들인 latch와 flip-flop, clock이 무엇인지 공부하며 다양한 형태의 latch(R-S latch, M-S latch)와 flip-flop(J-K flip-flop, D flip-flop, edge-triggered flip-flop)의 기본적인 구조에 대해서도 공부하게 된다. 그리고 이것들을 바탕으로 register의 개념 및 간단한 shift register 설계 방법에 대해서도 공부할 것이다. 이 단원부터는 기본적으로 시간의 개념이 들어가기 때문에 수많은 waveform들을 보게 될 것이며, 각 waveform에서 나타나는 특성들을 꼼꼼히 봐야 한다는 것을 명심해야 한다.
파일:external/rod.info/moore.gif

finite state machine(FSM)은 sequential logic의 설계에 쓰이는 수학적인 모델로서 특정 시간당 단 하나의 state만을 갖고, 외부에서 입력된 어떤 event에 의해 state가 변화되는 형태의 모델을 의미한다. 이 단원에서는 이 FSM의 개념을 이용하여 counter와 다양한 behavioral model(자판기, 에어컨, 신호등 등)을 어떤 방식으로 접근할 것인지에 대해 주로 공부하게 된다. 그리고 이 FSM의 설계 방식인 Moore machine(출력값이 현재의 state에만 의존하는 FSM)과 Mealy machine(출력값이 현재의 state와 입력값에도 의존하는 FSM)을 배우고 이를 바탕으로 다양한 state diagram을 그려보며 전체적인 설계의 접근 방법에 대해서 공부하게 된다.

state의 수가 많다는 것은 필요한 메모리가 많다는 것을 의미하고 이는 곧 제품의 가격 및 설계의 복잡도에 악영향을 미친다. 따라서 state의 수를 줄이는 것은 논리 회로 설계에 있어서 중요한 부분 중 하나이다. 이 단원에서는 위에서 배웠던 FSM의 state를 최대한 줄일 수 있는 실질적인 방법에 대해서 공부하게 된다. 주로 implication chart를 이용하여 설계한 FSM의 state를 줄여보는 방법을 연습하게 되며 one-hot 및 heuristic algorithm을 이용한 가장 효율적인 state 할당에 대해서도 공부하게 된다.

파일:external/asic.co.in/fsm_3.gif
논리 회로의 마지막 단원으로 HDL을 이용한 실제적인 설계 방법을 배우게 된다. Verilog, 혹은 VHDL을 사용해서 sequential logic을 무엇부터 설계해야 하는지에 대한 단계적 접근법을 배우게 되며 전체적인 청사진인 FSM부터 시작해 세세한 clock이나 register를 어떤 방식으로 설계하느냐에 따른 장단점을 자세하게 배울 수 있다.

5. 연관되는 교과목

6. 각종 시험에서의 출제

전자 분야 관련 시험에서는 거의 다 출제된다. 논리회로라는 이름의 과목으로 출제되는 경우도 있지만, 다른 이름을 가진 과목의 내용으로서 출제되는 경우가 더 많다.

7. 관련 문서


[1] 엄밀히 말하면 전자가 아닌 다른 물질을 기반으로 한 논리 게이트도 얼마든지 존재한다. 이론적으로는 전자 회로와 똑같은 일을 수행할 수 있다. 단지 전자 기반 회로보다 훨씬 비효율적이라 도태됐을 뿐. 유체 기반 논리 회로 [2] 애석하게도 맨 아래의 BUF 같은 건 등장하지 않는다. [3] 유접점 회로, 릴레이 회로 [4] 해당 접점과 관련된 부품이 작동 시 접점이 붙어서 회로가 닫혀 흐르게 하는 A 접점과 달리 오히려 떨어져서 회로를 열리게 한다. [5] 그림에서는 NOT이 INV(Inverted)로 표시되어 있다. [6] 동그라미는 영국식이자 구식, 직각 삼각형이 최신 규격이다. [7] BUF/NOT은 1, AND/NAND는 &, OR/NOR는 ≥1, XOR/XNOR는 =1 [8] 특히 X(Exclusive) 계열 게이트, AND 게이트, OR 게이트. [9] 들어오는 회로의 개수에 따라 구별해야 한다. [10] 비록 최근에는 기기의 소형화 및 정밀화 때문에 혼성 신호 모델이 각광을 받고 있긴 해도 이 과목을 배우는 사람은 대부분의 경우 어디까지나 학부생이라는 점을 알아둘 필요가 있다. [11] 단순히 집합이라기보다는 (ring)으로 접근하는 것이 더 적절할 수 있다. 잘 정의된 독자적인 연산 체계가 있기 때문. [12] 멱등 법칙이라고도 한다. [13] minterm인 정사각형 [math(\boldsymbol {2^n})]개를 장방형으로 최대한 크게 묶는 것이 원칙이다. [14] 컴퓨터는 당연히 회로가 존재하기에 제대로 된 컴퓨터 구조책에는 논리 회로 개념이 들어간다. [15] 전기만 해당. 기계는 해당되지 않음. [16] 논리 게이트들을 구성해 이를 통한 멀티플렉서나 플립플롭, 래치 등을 전부 구현할 수 있으며, 작동도 한다. 이를 통해 계산기나 시계 등을 만드는 유튜브 영상도 찾아볼 수 있다.