논리회로

myblack·2025년 3월 21일

전자회로

목록 보기
12/13

신호

디지털 신호란?
아날로그 신호는 정보를 연속적인 물리량으로 표시. 디지털 신호는 항상 0 또는 1의 값을 가지는 신호.
논리 소자들은 트랜지스터의 조합으로 구성되며 +5V를 1, GND를 0으로 처리

논리회로 (Digital Logic Circuit)
이진(Binary) 신호(0과 1) 를 사용하여 연산 및 제어를 수행하는 전자회로. 컴퓨터, 마이크로컨트롤러, 디지털 시스템의 기본

✔ 이진수(Binary Number) 기반 → 0 (Low), 1 (High)
논리 게이트(Logic Gate) 를 조합하여 연산 수행
✔ 조합 논리 회로 (Combinational Logic)
✔ 순차 논리 회로(Sequential Logic)

High(1) 상태

  • 정의 : 출력이 ‘논리 1’을 나타내는 상태로, 일반적으로 회로의 전원 전압(VCC 근처) 수준에 가까운 전압값을 가짐

  • 특징 :
    디지털 논리에서 ‘1’ 또는 ‘TRUE’로 인식
    회로가 이 출력을 적극적으로 구동하여, 신호선을 높은 전압으로 만든 상태
    예 : 5V 계열 회로에서는 약 5V 근처, 3.3V 계열 회로에서는 약 3.3V 근처

Low(0) 상태

  • 정의: 출력이 ‘논리 0’을 나타내는 상태로, 회로의 GND(접지) 수준에 가까운 전압값을 가짐

  • 특징:
    디지털 논리에서 ‘0’ 또는 ‘FALSE’로 인식
    회로가 이 출력을 적극적으로 구동하여, 신호선을 낮은 전압(접지)에 가깝게 만든 상태
    예 : 5V 계열 회로에서는 약 0V 근처

High Impedance(Z) 상태
정의 : 출력이 회로에 ‘거의 연결되지 않은(open)’ 상태처럼 보이게 만드는 것.

  • 어떤 특정 전압 수준으로 구동하지 않음 (즉, ‘High’도 ‘Low’도 아님)
    입출력이 아닌 “출력” 핀을 이 상태로 만들면, 내부적으로는 출력 트랜지스터가 모두 꺼진(open) 상태가 되어, 출력이 외부로 전류를 거의 공급하거나 소모하지 않도록 함

High Impedance(Z) 특징 :

  1. 출력이 버스(bus)나 공용선에서 충돌(conflict) 없이 공유될 수 있도록 함.
    예: 여러 디바이스가 한 신호선을 번갈아가며 구동해야 할 때, 실제 데이터를 구동하지 않는 디바이스들은 Z 상태로 만든다.

  2. 출력이 확실한 0/1 상태가 아니므로, 외부 회로에서 풀업(pull-up)이나 풀다운(pull-down) 저항을 사용하여 선을 특정 레벨로 유도해야 한다.
    풀업/풀다운이 없으면 임의 전압(‘floating’)이 되어 예측 불가능한 값이 될 수 있다.

  3. 디지털 IC에서 Tri-state, Three-state, 3-state라고도 불림
    ‘Z’ 상태는 FPGA/마이크로컨트롤러에서 I/O 핀을 “입력” 모드로 설정할 때도 비슷한 효과(외부로 구동하지 않음)를 얻을 수 있다.

  1. 측정 시 주의: 멀티미터나 오실로스코프로 Z 상태를 측정하면, 특정한 안정된 전압이 아닌 ‘뜨는’ 값이 보일 수 있다.
    이는 내부적으로 드라이빙이 없어서, 측정 환경(계측기/회로/주변 노이즈 등)에 따라 전압이 변하기 때문번외로 High Impedance 상태가 필요한 이유와 활용 

High Z 필요한 이유

  • 버스 구조에서의 충돌 방지
    마이크로프로세서와 여러 주변장치가 한 데이터 버스(D0~D7 등)를 공유할 때
    한 순간에는 단 한 기기만 버스에 데이터를 내보내고, 나머지 기기들은 Z 상태로 둬야 신호 충돌을 피할 수 있음

  • 양방향 포트 구현
    GPIO(일반 목적 입출력)를 한 순간에는 출력으로, 다른 순간에는 입력으로 사용하려면
    출력이 필요 없을 때 Z(또는 입력) 상태로 전환해 외부 신호를 안전하게 읽을 수 있음

  • 저전력 동작
    Z 상태일 때는 해당 핀에 구동 전류가 흐르지 않아 전체 소모전력을 줄일 수 있음

시프트 연산

  • 왼쪽 시프트 (<<)
    설명: 비트를 왼쪽으로 이동시키며 오른쪽에 0을 채웁니다.
    효과: 각 이동마다 숫자를 2배로 만듭니다.
    예시:
    5의 이진수: 00000101
    5 << 1의 결과: 00001010 (10)
    5 << 2의 결과: 00010100 (20)

  • 오른쪽 시프트 (>>)
    설명: 비트를 오른쪽으로 이동시키며 왼쪽 비트를 버립니다.
    효과: 각 이동마다 숫자를 2로 나눕니다.
    예시:
    20의 이진수: 00010100
    20 >> 1의 결과: 00001010 (10)
    20 >> 2의 결과: 00000101 (5)

출처: https://njh208804.tistory.com/38 [우당탕탕 회로둥이:티스토리]

기본 논리 게이트

(Basic Logic Gates)

논리회로는 기본적인 논리 연산을 수행하는 "게이트(Gate)" 로 구성

  • AND 게이트 [ 𝑌=𝐴⋅𝐵 ] : 모든 입력이 1일 때만 1 출력
    OR 게이트 [ 𝑌=𝐴+𝐵 ] : 입력 중 하나라도 1이면 1 출력
    NOT 게이트 [ 𝑌=𝐴' ] : 입력을 반전 (0→1, 1→0)

  • NAND 게이트 [ 𝑌=(𝐴⋅𝐵)' ] : AND의 반대 (모든 입력이 1이면 0 출력)
    NOR 게이트 [ 𝑌=(𝐴+𝐵)'] : OR의 반대 (모든 입력이 0이면 1 출력)
    XOR 게이트 [ 𝑌=𝐴⊕𝐵 = A′B+AB′] : 입력이 다르면 1, 같으면 0 출력
    XNOR 게이트 [ 𝑌=𝐴⊕𝐵' ] : 입력이 같으면 1, 다르면 0 출력

조합논리회로

(Combinational Logic Circuit)

  • 과거의 입력값에 상관없이 현재의 입력값에 의해 출력이 결정됨
    메모리(저장 기능)가 없으며, 이전 상태를 기억하지 않음

반가산기

2개의 피연산자(오퍼랜드,operand) 만을 더하는 가산기
이전 단에서 올라오는 캐리(올림수)를 고려 안함

  • 입력 : A, B

  • 출력 :
    합 (Sum) = 𝐴⊕𝐵 = A′B+AB′
    자리올림 (Carry) = 𝐴⋅𝐵

  • 두 개의 입력 (0 또는 1)을 받아들이고, 이들을 더하여 합과 자리 올림 값을 출력. 자리 올림 값은 해당 자리에서 다음 자리로 전달된다.

ex) 1+1을 더할 때, 반가산기는 합을 0으로 출력, 자리 올림(carry) 값 1로 출력.

전가산기

2개의 피연산자 및 이전의 캐리(올림수)도 포함해서 더하는 가산기

전 가산기 = 반 가산기 2개 + OR 게이트 1개

  • 입력 : A, B, Cin
    출력 :
    S = (A⊕B) ⊕ Cin
    Cout = Cin (A⊕B) + AB

  • 전가산기는 반가산기와 달리, 세 개의 입력 (A, B, Carry-in)을 받아들이고, 이들을 더하여 합과 자리 올림 값을 출력.

  • Carry-in은 이전 단계에서의 자리 올림 값을 나타냄.
    여러 자릿수의 이진수를 더할 때 사용

인코더 (Encoder)

  • 입력의 n 비트 2진 코드를, 2n개의 서로다른 정보로 출력시킬 수 있는 논리소자

✔ 입력 : 4비트 (A0, A1, A2, A3)
✔ 출력: 2비트 (F0, F1)
✔ 활성화된 입력의 번호를 이진 코드로 변환

F0 = A3+A0
F1 = A1′ A0′

디코더 (Decoder)

  • 입력 2^n개로부터, 출력 n 비트 코드로 변환하는 논리소자
    2^n 개 입력 중 활성화된 하나를 받아들여, 해당되는 n 비트 코드를 출력

2X4 Decoder

✔ 입력: 2비트 (A, B)
✔ 출력: 4비트 (D0, D1, D2, D3)
✔ 입력값에 따라 하나의 출력만 1(High), 나머지는 0(Low)

D0 = A′B′
D1 = A′B
D2 = AB′
D3 = AB

디코더-인코더 관계

멀티플렉서 & 디멀티플렉서

멀티플렉서 (MUX)

  • 입력신호 중 하나를 선택하여 출력할 수 있는 논리회로
  • 여러 입력 중 하나를 선택하여 출력으로 연결하는(내보내는) 조합논리소자

4X1 MUX

✔ 입력 : X1, X2, X3, X4
✔ 선택 신호 : C1 C2
✔ 출력 : Y = (C1′⋅C2′⋅X1)+(C1′⋅C2⋅X2)+(C1⋅C2′⋅X3)+(C1⋅C2⋅X4)

디멀티플렉서 (DEMUX)

  • 하나의 입력신호를 받아서 여러 개의 출력신호로 분배하는 역할.
    N개의 선택 입력에 의해 2^N개의 가능한 출력선 중의 하나를 선택하여 정보를 전송

순차논리회로

  • 과거의 입력값과 현재 상태에 의해 출력값 결정됨
    ex) 래치, 플립플롭, 레지스터

래치

클럭 입력을 갖지 않는, 2진 기억소자 (쌍안정회로)

  • 기억귀환 요소가 있으므로, 플립플롭과 유사하나,
  • 클럭 입력이 없는, 비동기 순서논리회로 소자 임

D 래치

✔ 2개의 입력 (D 및 Enable) 만을 갖는 래치
✔ 비동기 RS 래치의 문제(S=1, R=1 금지 상태)를 해결
✔ Enable(또는 Clock) 신호에 따라 데이터(D)를 저장

1 비트 저장 및 투과(전달) 능력 있음

  • Disable : 저장된 비트(High 또는 Low) 유지
    => 데이터 비트 저장
  • Enable : D 입력으로부터 새로운 1 비트를 읽어들임 (Read)
    => 데이터 비트 투과(전달)

즉, Enable 1이면 출력은 그대로 입력을 따라감

SR 래치

RS 래치는 2개의 NOR 게이트 또는 NAND 게이트로 구성

  • S=0, R=0 → 이전 상태 유지 (메모리 기능)
    S=0, R=1 → Q=0 (Reset 상태)
    S=1, R=0 → Q=1 (Set 상태)
    S=1, R=1 → 논리적으로 불가능한 상태 (Q, Q'이 동일해짐, 금지됨)

NAND Gate SR 래치

  • NOR 게이트와 반대로 동작하며, Active-Low 입력 사용
    S와 R이 0일 때 동작 (Negative Logic)

플립플롭

✔ 출력(Q)이 현재 입력뿐만 아니라 이전 상태에도 영향을 받음
✔ 클록(Clock) 신호가 있을 때만 동작 (비동기 플립플롭 제외)
클럭 입력을 갖는, 2진 기억소자(쌍안정회로)

  • RS 플립플롭 (Set-Reset Flip-Flop) :
    기본적인 기억 기능 (S=Set, R=Reset)

  • D 플립플롭 (Data Flip-Flop) :
    데이터 저장 (D 입력을 클록에서 Q로 전달)

  • JK 플립플롭 (Jump-Kill Flip-Flop) :
    RS 플립플롭의 단점을 개선, 1-1 입력 시 토글(Toggle)

  • T 플립플롭 (Toggle Flip-Flop) :
    매 클록마다 상태가 반전됨 (카운터 회로에 사용)

RS 플립플롭

SR래치에 클럭 결합

✔ 입력 : S (Set), R (Reset)
✔ 출력 : Q, Q' (Q의 반대값)
✔ S=1 → Q=1 (Set), R=1 → Q=0 (Reset)

단점 : S=1, R=1 입력 시 출력이 정의되지 않음
→ 해결책 : JK 플립플롭 사용

D 플립플롭 (DFF)

✔ 입력: D (Data), Clock (CLK)
✔ 출력: Q, Q'
✔ 클록이 들어올 때 D의 값을 저장하여 출력 Q로 전달

  • 클록이 변할 때만 값이 저장됨
    비동기식 래치보다 신뢰성이 높음
    레지스터, 메모리 저장장치 등에 사용됨

  • D 플립플롭은, 지연 소자(Delay Element)의 일종

  • 입력이 다음 활성 클럭이 나타낼 때까지 지연된 후 출력됨
    다음 출력 값 Q(t+1) 이 이전의 출력 값 Q(t) 와는 무관
    활성 클럭 직전의 입력 D(t) 값으로 됨

특성 방정식 : Q(T+1) = D

JK 플립플롭

✔ RS 플립플롭의 금지 상태(S=1, R=1 문제)를 해결
✔ J=1, K=1일 때 상태가 반전됨 (토글, Toggle 동작)

  • RS 플립플롭의 금지 상태 해결
    J=1, K=1일 때 상태가 반전됨 (토글)
    카운터, 주파수 분할 회로 등에 사용됨

특성 방정식 : Q(T+1) = JQ' + K'Q

T 플립플롭 (TFF)

✔ 입력: T (Toggle), Clock (CLK)
✔ 출력: Q, Q'
✔ T=1이면 클록이 변할 때마다 Q 값이 반전됨

  • JK 플립플롭의 J와 K 입력을 묶어서 하나의 입력신호 T로 동작시키는 플립플롭이다.- 입력이 0이 되면 이전상태(Q)의 값이 그대로 출력된다.

  • 입력이 1이 되면 이전상태(Q)의 보수 값이 출력된다.

이전 상태를 기반으로 반전(Toggle)
2진 카운터, 분주기(Frequency Divider) 등에 사용됨

특성 방정식 : Q(T+1) = T⊕Q = TQ' + T'Q










Ref
https://ckim0531.tistory.com/entry/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-2%EA%B3%BC%EB%AA%A9-%EC%A0%84%EC%9E%90%EA%B3%84%EC%82%B0%EA%B8%B0-%EA%B5%AC%EC%A1%B0-1-%EB%85%BC%EB%A6%AC%ED%9A%8C%EB%A1%9C-%EB%85%BC%EB%A6%AC-%EA%B2%8C%EC%9D%B4%ED%8A%B8
https://velog.io/@boseong-choi/ca-1
http://www.ktword.co.kr/test/view/view.php?no=4890
https://woodforest.tistory.com/124
https://aanrt.tistory.com/17
http://www.ktword.co.kr/test/view/view.php?id=273&m_temp1=3520
https://devraphy.tistory.com/297

출처: https://njh208804.tistory.com/102#1. High(1) 상태-1 [우당탕탕 회로둥이:티스토리]

profile
기록과 분석, 이해

0개의 댓글