논리 회로
1. 정의
- 한자: 論理 回路
- 영어: logic circuit
전자 회로(electronic circuit)의 구성 요소들을 이용하여 만든 논리 게이트(NAND, NOR, NOT 등)를 이용해 원하는 동작을 구현하는, 현대의 디지털 시대를 이끈 장본인 격의 학문이다.
2. 논리 게이트
논리 게이트(logic gate)
AND 게이트는 입력이 모두 1이어야 출력도 1이 나온다. 입력이 3개 이상일 수 있다.
OR 게이트는 입력 중 하나만 1이어도 출력이 1이다.
NOT 게이트는 입력이 1이면 0을 출력하고, 입력이 0이면 1을 출력한다. 보수기라고 불리기도 한다.
NAND 게이트는 AND 게이트 뒤에 NOT 게이트를 붙여, 출력이 1이면 0으로, 출력이 0이면 1로 만들어준다.
NOR 게이트는 OR 게이트 뒤에 NOT 게이트를 붙여, 출력이 1이면 0으로, 출력이 0이면 1로 만들어준다.
XOR 게이트는 exclusive OR 게이트의 줄임말로 한국어로는 상호 배제적인 OR 게이트이다. 상호 배제적 OR 게이트란 이름의 의미는 OR 게이트와 동일하게 작동하지만 입력값이 동일한 경우에는 1을 출력하지 않는다는 의미이다. 입력값이 서로 다르면 1을 출력하고, 같으면 0을 출력한다.
XNOR 게이트(XNOR gate 또는 EXNOR, ENOR, NXOR, XAND gate)는 XOR 게이트 뒤에 NOT 게이트를 붙여 출력값을 반대로 만들어놓은 것이다. 입력값이 서로 같으면 1을 출력하고, 다르면 0을 출력한다. 그래서 비교 게이트나 일치 확인 게이트라고도 불린다.
버퍼 게이트는 NOT 게이트와는 정반대로 입력값과 같은 값을 그대로 출력한다. 신호를 보내는 회선이 너무 길면 전선 자체의 저항으로 인해 전송 신호가 감쇠하면서 목적지에 도달하지 못하는 경우가 생길 수 있는데 이를 방지하기 위해 중간에 버퍼 게이트를 둬서 버퍼 게이트에 도달한 신호와 같은 신호를 목적지로 전송한다. 또한, 버퍼 게이트를 통과하면서 신호 전달이 지연되는 효과가 있기 때문에 처리속도를 맞추기 위해 일부러 신호 전달을 지연시킬 필요가 있을 때에도 이용한다.
3. 교과목
Digital Logic Circuit, (Digital) Logic Design
정보대학과 공과대학의 전기전자공학부 및 컴퓨터공학부의 전공 과목 중 하나이다. 디지털공학이라고도 한다. 논리 연산의 방법과 현대의 디지털 회로에 쓰이는 여러가지 개념 및 적용법을 배우는 과목이다. 이 과목에선 기본적으로 입력값과 출력값이 0 과 1로 구성되어 있기 때문에 접근 방식이 기존에 학생들이 배우던 아날로그 방식과는 확연히 다르며[1] 아날로그 회로를 생각하고 이 과목을 듣게 되면 곤란해진다.
기본적인 접근 방식이 부울 대수이기 때문에 집합(a set of elements)[2] 을 생각하면 쉽다. 그러나 사실 이 과목은 엄밀히 말하면 논리 연산의 방법 자체를 배우는 것에 중점을 두기 보다는 디지털 회로에 쓰이는 개념들에 더 중점을 두는 과목이기 때문에 앞부분을 잘한다고 뒷부분까지 잘하게 된다는 보장은 없다. 특히 이 과목은 교수의 재량권이 매우 큰 과목이고, 딱 어디까지가 디지털 논리회로고 어디부터가 디지털 시스템 설계인가 하는 명확한 기준이 없다. 따라서 교수의 강의방식과 강의역량에 따라서도 공부량과 흥미가 좌우될 수 있는 과목.
일반적으로 전기전자공학부와 컴퓨터공학부의 1, 2학년 또는 3학년 학생들이 주로 배우게 되며 당연하게도 전공기초인 학교가 많기 때문에 웬만한 전자공학도라면 한번쯤은 듣게 되는데 앞부분은 몰라도 뒷부분에서 상당히 머리가 아픈 개념들이 많이 나온다. 기초과목이므로 전공과목 중 가장 쉬운 과목이라 생각하는 학생도 많이 있고, 어렵게 느끼는 학생도 많은 등 체감 난이도가 사람마다 천차만별인 과목이다. 낯선 개념들이 쏟아지므로 이들과 어서 친해지자.
3.1. 내용
논리회로의 접근 방식은 크게 Combinational Logic Design(조합 논리, Structural Design)과 Sequential Logic Design(순차 논리, Behavioral Design)의 2가지로 나누어지게 되는데 쉽게 풀어쓰자면 Combinational Logic은 시간의 개념과 관계가 없는 논리 회로를 뜻하고 Sequential Logic은 시간의 개념이 포함된 논리 회로를 뜻한다.
이 문서는 Randy H. Katz가 지은 Contemporary Logic Design 2판을 기초로 작성하였다. 전문대학에서는 이보다 쉬운 교수 자체 집필교재를 사용한다.
단원 배치는 대체적으로 디지털 개요 - 수체계 - 부울 대수 - 조합논리회로 - 순서논리회로 - 기타 응용회로로 구성된다.
3.1.1. Combinational Logic(조합 논리)
[image]
- 부울 대수와 논리 연산 방법
기본적인 논리 연산 방법에 대해 배우는 단원으로 논리 연산 자체는 딱히 중요하게 배우지는 않으나 어찌됐든 논리 회로 해석의 가장 기본이 되는 부분이므로 잘 공부해 놓는 것이 좋다. Truth table(진리표) 해석법 및 SOP form과 POS form의 차이점 구별 및 적용 방법에 대해 공부하게 되며 더 나아가 Karnaugh Map(카르노 맵, 통칭 K-map)을 이용하여 여러 Boolean equation들을 줄이는 방법[3] 에 대해서도 공부하게 된다.
- Combinational Logic(조합 논리)의 정의
Adder의 개념이 처음으로 나오는 단원으로 여러 종류의 Adder와 기타 Combinational Logic(조합 논리 )들을 K-map, (카르노 맵)Quine-McCluskey Method(콰인-매클러스키 알고리즘), Espresso등 여러가지 방법으로 분석해보게 된다. 이 분석 결과들을 바탕으로 Hazard(0-hazard / 1-hazard)의 개념, 존재 여부 및 Hazard-free한 설계 방법에 대해서도 공부하게 된다.
- Combinational Logic(조합 논리)의 적용법
Combinational Logic(조합 논리)의 실질적인 적용법에 대해서 배우는 단원이다. ROM의 정의와 Multiplexor(MUX)및 Demultiplexor(DEMUX)의 작동원리 및 Multi-level로 구성된 MUX와 DEMUX 설계 방법(Cascading)에 대해서 공부하게 되며, 더 나아가 지금까지 배웠던 Combinational Logic(조합 논리)을 실질적으로 설계하는 효율적인 방법들인 PAL과 PLA가 무엇인지에 대해서도 공부하게 된다. Tri-state(세가지 상태)의 개념에 대해서 처음으로 나오는 단원이기도 하다.
- Combinational Logic Design(조합 논리 디자인)
위의 모든 적용법까지 다 배웠다면 이제 설계를 배울 차례만 남았다. 교수의 재량권이 매우 커지는 단원으로 어떤 방식의 설계를 가르치냐에 따라 난이도가 극명하게 갈리기 때문에 다양한 케이스들에 대해 제대로 숙지를 하고 있어야 공부하는데에 도움이 된다.
Signed number(부호가 있는 숫자표현)2's complement(2의보수)의 개념에 대해서 배우게 되며 이를 바탕으로 위에서 했던 가산기를 응용한 Adder/Subtractor(가산기/감산기)및 Ripple-Carry Adder(리플 자리올림수 가산기), Carry-Select Adder, Carry-Lookahead Adder(자리올림수 예측 가산기) 등등 Adder(가산기)의 다양한 설계 방법에 대해 공부하게 되며 더 나가면 기초적인 ALU 설계 방법에 대해서도 공부하게 된다.
3.1.2. Sequential Logic(순차 논리)
[image]
- Sequential Logic의 정의
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에서 나타나는 특성들을 꼼꼼히 봐야한다는 것을 명심해야 한다.
- Finite State Machine
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 Optimization
State의 수가 많다는 것은 필요한 메모리가 많다는 것을 의미하고 이는 곧 제품의 가격 및 설계의 복잡도에 악영향을 미친다. 따라서 State의 수를 줄이는 것은 논리 회로 설계에 있어서 중요한 부분 중 하나이다. 이 단원에서는 위에서 배웠던 FSM의 state를 최대한 줄일 수 있는 실질적인 방법에 대해서 공부하게 된다. 주로 Implication Chart를 이용하여 설계한 FSM의 state를 줄여보는 방법을 연습하게 되며 One-Hot 및 Heuristic algorithm을 이용한 가장 효율적인 state 할당에 대해서도 공부하게 된다.
- Sequential Logic Design
논리회로의 마지막 단원으로 HDL을 이용한 실제적인 설계방법을 배우게 된다. Verilog, 혹은 VHDL을 사용해서 Sequential Logic을 무엇부터 설계해야하는지에 대한 단계적 접근법을 배우게 되며 전체적인 청사진인 FSM부터 시작해 세세한 clock이나 register를 어떤 방식으로 설계하느냐에 따른 장단점을 자세하게 배울 수 있다.
4. 연관되는 교과목
- 디지털 시스템 설계
- 컴퓨터 구조
5. 관련 문서
- 논리 연산(logical operation, logical connective)
- 가산기
- 보수기
- 정보처리기능사
- 마인크래프트/아이템/레드스톤/회로 예시
- 클로드 섀넌
- 순서도
- 플래시 메모리
- 경우의 수