순서 논리 회로는 현재의 입력뿐만 아니라 이전의 상태(기억된 정보)를 기반으로 동작하는 논리 회로를 의미한다. 일반적인 조합 논리 회로와 달리, 순서 논리 회로는 메모리 요소가 포함되어 있어 입력의 변화를 단순히 처리하는 것이 아니라 상태 변화에 따라 다양한 출력을 생성한다.
순서 논리 회로는 크게 동기식과 비동기식으로 나뉜다.
- 동기식 순서 논리 회로는 클럭 신호에 맞춰 상태가 변화한다. 이 회로는 모든 상태 변화가 클럭 펄스의 상승 또는 하강 엣지에서 발생하기 때문에, 예측 가능하고 안정적인 동작을 보인다. 플립플롭(flip-flop)과 같은 기본 메모리 소자를 사용하여 상태를 저장한다.
- 비동기식 순서 논리 회로는 클럭 신호 없이 입력의 변화에 따라 즉각적으로 상태가 변한다. 이는 동기식보다 설계가 복잡할 수 있으며, 안정성을 보장하기 어렵다.
순서 논리 회로의 주요 구성 요소는 다음과 같다:
- 플립플롭(Flip-Flop): 단일 비트의 데이터를 저장하는 메모리 소자이다. 클럭 신호가 주어졌을 때 상태를 변경하며, 다양한 종류(D 플립플롭, JK 플립플롭, T 플립플롭 등)가 있다.
- 상태 다이어그램: 회로의 동작을 시각적으로 표현하는 도구로, 상태(state)와 상태 전환(transition)을 노드와 화살표로 나타낸다. 이를 통해 상태가 어떻게 변화하는지를 쉽게 이해할 수 있다.
- 입력과 출력 함수: 현재 상태와 입력 값에 따라 출력이 결정되는 무어(Moore) 모델과 상태와 입력에 따라 출력이 결정되는 밀리(Mealy) 모델이 있다. 무어 모델은 상태만으로 출력을 결정하고, 밀리 모델은 상태와 입력에 따라 출력을 결정한다.
순서 논리 회로의 설계는 보통 다음과 같은 단계를 거쳐 이루어진다:
- 상태 정의 및 다이어그램 작성: 해결하려는 문제에 필요한 상태와 그 전환을 정의한다.
- 상태 표 작성: 상태 다이어그램을 토대로 상태 전이 표를 작성한다.
- 플립플롭 선택: 사용하려는 플립플롭의 종류를 선택한다.
- 논리식 도출: 각 플립플롭의 다음 상태 논리식과 출력 논리식을 유도한다.
- 회로 구현: 도출된 논리식을 기반으로 회로를 설계하고, 필요한 게이트와 플립플롭을 배치한다.
이런 순서 논리 회로는 디지털 시스템에서 매우 중요하며, 레지스터, 카운터, 시퀀서 등 다양한 곳에서 사용된다. 예를 들어, CPU의 제어 장치나 메모리에서 데이터를 읽고 쓰는 과정도 순서 논리 회로의 원리를 사용하여 이루어진다.