{{위키데이터 속성 추적}}
'''논리 회로'''({{llang|en|logic gate}})는 [[불 대수]]를 물리적 장치에 구현한 것으로, 하나 이상의 논리적 입력값에 대해 [[논리 연산]]을 수행하여 하나의 논리적 출력값을 얻는 [[전자회로]]를 말한다. '''AND''', '''OR''', '''NOT'''의 기본 불 대수를 수행하며, 이 기본 불 대수들의 결합으로 복합적인 논리 기능을 수행한다.

문맥에 따라서 '''이상적인 논리 회로'''라는 말을, 인스턴스에 대해서 [[상승 시간]]이 없고 무제한의 [[팬아웃]]이라고 해석하거나 비이상적 물리장치라고 해석한다.<ref>Jaeger, Microelectronic Circuit Design, McGi5'osex
raw-Hill 1997, {{ISBN|0-07-032482-4}}, pp. 226-233</ref>

== 논리 회로의 설계 ==
논리 회로의 설계는 [[논리식]]이나 [[진리표]]가 사용된다. 좀 더 회로도적인 표기 수단으로 MIL 기호 등 논리 소자 기호가 사용되었다.

1960년대에 표준 논리 [[집적 회로|IC]]([[텍사스 인스트루먼트]]의 7400 시리즈)가 등장하자 아날로그 회로 설계와 논리 설계를 분리하여 단순하게 구현할 수 있게 되었다.

작은 규모에서는 논리 소자 기호로 설계할 수 있지만 규모가 커지면 힘들어진다. 그렇기 때문에 1990년대부터 대규모 회로 설계에는 [[하드웨어 기술 언어]]가 사용되고 있다. 그리고 [[집적 회로]] 기술의 발전에 대응할 수 있도록 다양한 모델에 적용이 가능한 독립적인 모델(동작 기술)을 사용하여 설계한다.

1990년대 후반에는 개발품의 경우 논리 회로 프로그램을 이용하여 [[프로그래머블 논리 소자|PLD]], CPLD, FPGA을 사용하였다. 양산품이나 높은 성능이 요구될 경우 [[ASIC]]를 사용했다.

== 조합 회로 ==
입력 신호만으로 출력이 결정되는 회로이다.

=== 논리 게이트 ===
[[논리곱|AND]], [[부정 (논리학)|NOT]], [[논리합|OR]], [[배타적 논리합|XOR]] 등 기본이 되는 [[논리 연산]]을 수행하는 것이다. 덧붙여서 일반적인 논리 회로 설계를 하는 기술자는 수학의 논리 연산 기호와 다른 기호를 사용하여 논리식을 기술하는 경우가 많다.

::{| border="1" cellspacing="0" cellpadding="4"
|-align=center
!bgcolor=#cccccc|논리
!논리식
!회로 기호（MIL 기호）
|-
|bgcolor=#cccccc|NOT
|<math>\overline{A}</math>
|[[파일:Not-gate-en.png|NOT]]
|-
|bgcolor=#cccccc|OR
|<math>A + B</math>
|[[파일:OR-gate-US.png|OR]]
|-
|bgcolor=#cccccc|AND
|<math>A \cdot B</math>
|[[파일:AND-gate-US.png|AND]]
|-
|bgcolor=#cccccc|XOR
|<math>A \oplus B</math>
|[[파일:XOR-gate-US.png|XOR]]
|-
|bgcolor=#cccccc|NOR
|<math>\overline{A + B}</math>
|[[파일:NOR-gate-US.png|NOR]]
|-
|bgcolor=#cccccc|NAND
|<math>\overline{A \cdot B}</math>
|[[파일:NAND-gate-US.png|NAND]]
|}

=== 응용 회로 ===
* [[셀렉터]] : 출력 신호 중 하나를 선택하여 출력하는 것.
* [[멀티플렉서]] : 입력 회로 중 하나를 선택하여 출력하는 것.
* [[가산기]] : [[이진법|이진수]] [[연산 (수학)|연산]](덧셈이나 뺄셈)을 처리하는 것.

== 순차 회로 ==
이전 상태의 신호와 외부 입력 신호에 따라 출력이 결정되는 회로이다. '''이전상태'''가 계속 유지되려면 출력을 입력에 반영하는 되먹임 논리회로 구조를 갖는다.

=== 래치와 플립플롭 ===
{{본문|플립플롭}}

제어 신호에 따라, 현재의 입력 신호가 저장되거나 이전의 입력 신호를 보관 유지하는 것이다.

'''래치와 플립플럽의 차이'''는 입력이 들어왔을 때, 출력에 반영하는 방식이 다르다.
* 래치 : 입력이 들어왔을 때, 조건이 맞으면 바로 반영된다. 단, EN 신호가 있을 경우, 이 조건이 만족해야 한다.
* 플립플럽 : 입력이 들어왔을 때, 클럭(CLK, CK, clock)의 동기 신호에 의해 입력이 반영된다.

'''플립플럽'''은 입력을 반영하는 시점이 상승에지(클럭에서 논리 L에서 H로 바뀌는 순간)나 하강에지(클럭에서 논리 H에서 L로 바뀌는 순간)에서 반영한다. 이 반영시점 동기를 위해 래치보다 회로가 복잡하다.

=== 플립플롭 (Flip - Flop) ===
[[플립플롭]]은 클럭(CLK, CK 등으로 표기) 신호에 동기화되면서 입력 값(D, S, J 등)을 출력한다. 이 값들은 다음 클럭이 입력되기 전까지 보존된다.

* D 플립플롭
* J-K 플립플롭
* T 플립플롭
* A 플립플롭

=== 완전 동기식 회로 ===
전체가 동일한 [[클럭]]으로 동작되는 회로이다.([[동기클럭 설계]]) 특히 대규모 회로에서 넓게 사용되고 있다.

* 설계할 때 대규모 회로 시뮬레이션이 빠르다.
* 제조할 때 모든 래치의 1, 0 변화 테스트를 하는 벤치 프로그램 제작이 쉽다.

=== 카운터 ===
레지스터와 게이트로 구성되어서 순서에 따라서 일정한 출력이 나오고, 일정한 주기가 되면 원래 상태로 되돌아간다.

* 필드 코드 카운터(Filled Code Counter): 모든 출력의 상태가 사용되는 것.
** 2 비트 코드 카운터
** 그레이 코드 카운터
** 이진 카운터

* 언필드 코드 카운터(Unfilled Code Counter): 출력의 일부만 사용되고, 그 밖에는 알 수 없는 상태가 되는 것.
** 3 비트 이상의 코드 카운터
** 링 카운터
** M계열 발생기 (LFSR: Linear Feedback Shift Register)

=== [[시퀀서]] (Sequencer) ===
입력 신호에 따라서 카운터, 레지스터, 게이트 등으로 제작된 회로가 연산 및 일련의 동작을 하는 것이다.

== 순차회로에서 상태도를 활용한 설계 기법 ==
순차회로에서의 설계에서 많이 사용 방법 중의 하나가 상태 기법이다.

* [[상태도 (오토마타 이론)|상태도]] 활용 : 설계 목적을 구현하기 위해 동작 상태를 추상화 하여 상태도를 그린다. 이 상태도에 입력과 출력을 표시하고 논리회로를 이용하여 회로화 하면 된다.

== 활용도 ==
[[컴퓨터]], [[프로그래머블 로직 컨트롤러]] (PLC, 공업용 제어 프로세서), [[디지털 신호 처리장치]] 등은 논리 회로를 이용해 만들어진다.

== 각주 ==
<references />

== 같이 보기 ==
{{위키공용분류}}
* [[집적 회로]]
* [[수리 논리학]]
* [[논리 제어]]
* [[전자 회로]]
* [[전기 회로]]

{{전거 통제}}

[[분류:논리 게이트| ]]