논리회로

개념
논리 게이트 - 디지털 컴퓨터는 자료의 처리, 수치계산, 통신용 교환기, 가전제품, 산업 기기 등 여러 분야에서 활용되고 있다. 이러한 디지털 컴퓨터는 아날로그 컴퓨터에 비하여 정밀도, 신뢰성, 경제성에서 우수하며 아날로그 컴퓨터보다 더 광범위하게 사용되고 있다. 디지털 컴퓨터는 신호, 물리적인 양 등을 나타내는 정보를 이진수를 이용하여 표현한다. - 이진수를 표현하는 방식은 여러 가지가 있을 수 있으나, “on”, 또는 “off”로 표현할 수 있는 트랜지스터 전자회로는 확실한 두개의 신호값만을 가지므로 전자회로를 구성하였을 때 신뢰성을 높일 수 있다. 보통 전자회로에서 “on” 또는 “off”를 표현할 때는 “on”상태를 이진주의 1(전자회로에서 +5V), “off”를 표현할 때는 이진수의 0(전자회로에서는 0V)으로 표시한다. 그림 1은 트랜지스터가 “on”또는 “off”의 스위치로 동작하는 개념도이다.

I. 디지털 논리회로와 논리 게이트

    가. 논리 게이트

  • 디지털 컴퓨터는 자료의 처리, 수치계산, 통신용 교환기, 가전제품, 산업 기기 등 여러 분야에서 활용되고 있다. 이러한 디지털 컴퓨터는 아날로그 컴퓨터에 비하여 정밀도, 신뢰성, 경제성에서 우수하며 아날로그 컴퓨터보다 더 광범위하게 사용되고 있다. 디지털 컴퓨터는 신호, 물리적인 양 등을 나타내는 정보를 이진수를 이용하여 표현한다.
  • 이진수를 표현하는 방식은 여러 가지가 있을 수 있으나, “on”, 또는 “off”로 표현할 수 있는 트랜지스터 전자회로는 확실한 두개의 신호값만을 가지므로 전자회로를 구성하였을 때 신뢰성을 높일 수 있다. 보통 전자회로에서 “on” 또는 “off”를 표현할 때는 “on”상태를 이진주의 1(전자회로에서 +5V), “off”를 표현할 때는 이진수의 0(전자회로에서는 0V)으로 표시한다. 그림 1은 트랜지스터가 “on”또는 “off”의 스위치로 동작하는 개념도이다.

  • 그림에서 보는 바와 같이 일반 스위치의 경우 외부에서 스위치를 누르면 “on”상태가 된다. 트랜지스터의 경우에는 전기신호로써 “on”, “off”상태를 제어한다. 그림에서는 그 한예를 나타냈으며 이 경우에는 제3단자에 “off”신호를 주면 스위치가 “off”, “on”신호를 주면 스위치가 “on”이 되는 경우를 나타내었다.

 

나. 논리Gate

  • 디지털 컴퓨터의 모든 동작은 이러한 논리회로의 동작이 연속적으로 이루어지는 것이다. 가장 기본적인 boolean연산은 NOT, AND, OR이며 이렇게 기본적인 연산을 하는 논리회로를 게이트(gate)라 부른다. 아래 그림은 NOT, AND, OR게이트의 기호와 진리표를 나타내었다. 진리표란 “0”과 “1”로 계산되는 Boolean 연산에서 가능한 모든 입력에 대한 출력값을 기록한 것이다.

  • AND게이트의 출력에 NOT게이트가 연결된 것을 NAND게이트, OR게이트의 출력에 NOT게이트가 연결된 것을 NOT게이트라 한다. 아래 그림은 NAND게이트와 NOR게이트의 기호와 진리표를 나타내었다.

 

  다. Boolean과 Boolean대수

  • 위에서 설명한 논리 게이트를 Boolean대수로 나타낼 수도 있고, 반대로 Boolean대수를 논리 게이트로 그릴 수도 있다.

  • 위의 그림에서 보는 바와 같이 논리 게이트를 Boolean식으로 표현하면 위에 있는 식을 만들 수 있다.

 

II. Boolean대수

    가. Boolean대수

  • boolean대수는 이진변수(binary variable)의 논리 동작(logic operation)을 취급하는 대수를 말한다. 즉, x, y, z등의 이진변수(보통 8비트)의 AND, OR, NAND 등의 논리 동작을 계산하는 대수이다.

 

    나. 진리표와 논리 Gate

  • 기본적으로 진리표를 boolean대수로 표현할 수 있으며, 또한 진리표를 논리gate로 표현할 수 있다. 위의 진리표에서 boolean대수를 포함한 boolean함수는 F(A,B,C) = A’B+C로 표현할 수 있다.

 

     다. Boolean 대수 법칙

          - 기본적으로 boolean연산을 처리하기 위한 몇가지 법칙이 있으며, 이 법칙들은 아래와 같다.

          - 0, 1과의 기본연산 : x+0=x, x+1=1, x∙1=x, x∙0=0

          - 멱등성(idempotent property): x+x=x, x∙x=x

          - 상보성(complementary property): x+x’=1, x∙x’=0

          - 흡수성(absorption property): x+x∙y=x, x∙(x+y)=x

          - 교환법칙 : x+y=y+x, x∙y=y∙x

          - 결합법칙 : x+(y+z)=(x+y)+z, x∙(y∙z)=(x∙y)∙z

          - 분배법칙 : x∙(y+z)=(x∙y)+(x∙z), x+(y∙z)=(x+y)∙(x+z)

          - 드모르강 정리 : (x+y)’=x’∙y’, (x∙y)’=x’+y’

           n개의 변수로 확장한 일반식

             (x1 + x2 + x3 + … xn)’ = x1’ ∙ x2’ ∙ x3’ ∙ …. Xn

             (x1∙x2∙x3∙….xn)’ = x1’ + x2’ + x3’ + … + xn

 

     다. 드모르강 정리

  • 연산자와 변수로 구성된 임의의 함수가 있을 때 이 함수의 전체 부정은 연산자 +는 ∙로, ∙는 +로 바꾸고(+ ↔ ∙)함수에 포함된 변수는 긍정은 부정으로 부정은 긍정으로(A’ ↔ A)으로 바꾸어 각각의 변수에 대한 부정을 취하는 것과 결과가 같음을 나타내는 법칙으로 NAND와 NOR를 취급하는데 유용하다.

  • 간단한 예제를 통해서 위의 boolean대수와 boolean대수 법칙을 통해서 아래 논리 gate를 분석해 보자. 일단 아래 논리 gate의 boolean함수를 boolean대수로 표현해 보자.

  • 위의 boolean함수는 F = AB’C + AB’C’ + A’C이다. 그럼, boolean대수 법칙을 이용해서 위의 논리 gate를 좀 더 간단하게 변경 할 수 있는지 알아보면,
  • F=AB’C + AB’C’ + A’C = AB’(C + C’) + AC = AB’ + A’C로 표현될 수 있다.
  • 간소화된 boolean함수를 이용해서 논리 Gate를 직접 다시 그려 보면, 아래와 같다. 즉, 같은 출력값을 얻으면서 논리 Gate는 훨씬 작게 사용할 수 있다.
  • 위의 예제 처럼 boolean대수를 이용하면 현재의 논리 회로를 분석하거나 간소화하는데 쉽게 활용 할 수 있다.

 

III. 조합 논리회로 설계

가. 조합논리 회로

         - 어떤 회로에 입력이 들어와서 출력이 나가는 모든 회로를 조합논리회로라고 한다.

나. 논리회로 설계방법

         - 동작원리 분석

         - 진리표(Truth Table)작성

         - 부울함수로 표시

         - 간소화 : boolean대수나 카노맵을 이용하여 간소화

         - 회로 그리기

다. 논리회로 설계 예

         - 다음 진리표를 예를 들어서 생각하자.

 변수 a

변수 b

함수 f

0

0

0

0

1

1

1

0

0

1

1

1

         - 입력이 a, b두개이고 출력이 f하나인 회로에서 회로동작이 위의 진리표처럼 나타난다면, 위의 진리표를 boolean함수를 사용해서 아래 식으로 나타낼 수 있다.

         - f = a’b + ab

         - 즉, 입력이 00이면 첫번쨰항과 두번째함이 모두 0가 되고,

         - 입력이 01이면 첫번째항은 1, 두번째항은 0가 되며,

         - 입력이 10이면 첫번째항과 두번째항이 모두 0가 되고,

         - 입력이 11이면 첫번째항은 0 두번째항은 1이 된다.

         - boolean연산 방법을 이용해서 간소화하면 아래와 같다.

         - f = a’b + ab = b(a’ + a) = b∙1 (왜냐하면, a’ + a = 1이므로) = b

 

IV. 카르노맵을 이용한 조합 논리회로 설계

    가. 카르노맵

  • 위에서 boolean연산을 이용하여 진리표로 구한 boolean함수를 간소화하는 방법에 대해서 언급했는데, 이번에는 카르노맵을 이용해서 진리표를 통해 boolean함수를 간소화하는 방법을 알아보도록 하겠다.
  • 카르노맵은 진리표를 단순하게 다른 방법으로 표현한 것과 같다. 즉, 출력값이 1인 입력값에 대해서 Table형태로 표현한 것이 지나지 않다.
  • 단, 카르노맵을 표현할 때는 지켜야 할 규칙이 있는데, 입력변수에 대해서 진리표는 단순히 이진변수가 가질 수 있는 값이 커지는 순서대로 000부터 001, 010, …, 111까지 차례로 위에서 아래방향으로 써져 있는 반면, 카르노맵은 인접한(adjacent)네모칸들 사이에 오직 하나의 변수값만이 변환되도록 만들어져 있다.
  • 아래 그림 참조

나. 카르노맵을 이용한 논리회로 설계 방법

  • 위의 진리표를 살펴보면, 위의 그림에 나타내었던 카르노맵에서 1이 들어있는 m4칸과 m6칸을 다시 한번 고려해 보자. M4와 m6칸에 해당하는 논리식은 각각 xy’z’와 xyz’이며, 이 두 식이 OR연산(+)으로 연결될 경우 아래와 같이 간소화 할 수 있다.
  • F = xy’z’ + xyz’ = xz’(y’ + y) = xz’
  • 이와 같이 카르노맵에서 인접한 칸들 사이에는 논리식이 간소화될 수 있음을 나타내며, 카르노맵으로 부터 곧바로 간소화된 논리식을 알아낼 수 있는 방법이 있다. 즉, 서로 인접한 칸들에서 서로 공통값을 갖는 변수만을 기록하되 값이 0인 변수에는 프라임(‘)을 붙이면 논리식을 바로 구할 수 있다. 따라서 m4칸과 m6칸은 x=1, z=0이 서로 공통임으로 xz’가 간소화된 논리식이 된다. 이와 같은 직관적인 원리를 이용하여 논리식을 간소화하는 방법이 카르노맵을 이용한 논리식 간소화 방법이다.

 

    다. 카르노맵을 이용한 논리함수 간소화 절차

         - 단계 1. 변수 개수에 따른 카르노맵을 그린다.

         - 단계 2. 논리식을 1로 하는 카르노맵의 네모칸에 1을 기록한다.

         - 단계 3. 1이 들어있는 인접한 칸들끼리 그룹화한다.

         - 단계 4. 각 그룹에 대한 논리식을 OR연산자로 연결하여 최종 논리식을 구한다.

 

V. 순서 논리 회로(sequential logical circuit)

    가. 순서 논리 회로

  • 조합 논리회로와 달리 일정한 기간 동안 데이터를 저장 할 수 있는 회로를 말한다. 이는 조합 논리회로와 Flip Flop을 가지고 구성한 회로이며, 출력 값은 입력 값과 회로의 내부 상태에 의해 정해지는 논리회로이다. 따라서, 현재 상태와 이전 상태가 어떠냐에 따라 다음 상태가 정해진다. 즉, 순서 논리회로는 기억장치인 셈이다.

 

    나. latch(래치)

  • 순서 논리 회로에 사용되는 기억소자로서 입력 신호가 인가되는 순간 바로 출력에 반영이 되도록 하는 소자를 말한다. 즉, Latch는 Clock신호와 무관하게 출력이 결정되는 소자로서 Asynchronous(비 동기식)이라고 한다. 반면, Flip flop은 Clock신호에 맞추어서 rhythmical 하게 출력이 결정되기 때문에 Synchronous(동기식) 이라고 한다.

 

VI. 플립 플롭(Flip-Flop)

    가. Flip Flop

  • 트리거 회로라 불리는 회로의 일종이며, 두 개의 안정 상태(stable state)중 어느 쪽이든지 한쪽을 보존한다. 이것을 논리회로로 사용할 경우에는 이 두 개의 상태를 0과 1에 대응시킨다. 즉, 최초의 상태가 1이라 하면, 반대 상태의 입력이 없는 한 1의 상태를 계속하고 입력이 있으면 0의 상태가 된다. 이와 같이 두 개의 상태를 갖는 회로를 쌍안정 회로(bistable-circuit)라고 한다. 스위치로 말하면 토글 스위치이다. 가장 간단한 플립플롭은 NAND 게이트(NAND gate)를 사용한 것이다.

 

    나. flip flop의 종류

         - R-S flip flop

플립플롭

  • RS(Reset Set) flip flop은 R(Reset)과 S(Set)의 두 입력을 받아서 Q(현재상태)와 Q’(다음상태)의 2가지 출력을 가진다. 위의 그림에서 S와 R이 모두 0(신호 없음)인 경우는 그대로 Q상태가 된다. S가 0이고 R이 1인 경우는 Reset이 들어온 경우니까 Q상태를 0으로 만들어 준다. S가 1이고 R인 0인 경우는 Set신호가 들어온 경우이기 때문에 Q상태를 1로 만들어 준다. S와 R이 모두 1이 되는 경우는 결과를 알 수 없다.
  • D flip flop

플립플롭

  . D(Delay) Flip flop은 입력 D를 그대로 출력한다. D Flip flop은 RS Flip flop의 변형으로 S와 R을 inverter(NOT gate)로 연결하여 입력에 D라는 기호를 붙인 것이다.

  . 즉, RS의 R=1, S=0 그리고 R=0, S=1인 입력에만 가능하게 되는 회로이다. 그러니까 0, 1 그리고 1,0 일때만 D flip flop에 의한 영향을 받고 R과 S값이 같을 때는 영향을 받지 않는다는 뜻이다.

  . D flip flop은 입력된 내용과 동일한 상태가 되도록 하여 데이터의 일시적인 보관 또는 디지털 신호의 전송되는 시간을 늦춰주는 지연 목적에 사용된다.

  •  - J-K flip flop

플립플롭

 . JK Flip flop은 RS flip flop에서 Set에 1, Reset에 1이 들어왔을 때의 문제점을 보완해 나온 것이라고 할 수 있다.

 . 입력J와 K는 RS flip flop의 S와 R에 대응되고 J가 1, K가 1일 때 Clock pulse(CP)는 flip flop의 출력을 반전되게 한 것이다. JK flip flop도 마찬가지로 J와 K의 두 입력을 받고 Q(현재상태)와 Q’(다음 상태)의 2가지 출력을 가진다.

 . JK flip flop에서는 J가 1, K가 1일 때 toggle되서 값이 나온다. 여기서 JK flip flop은 RS flip flop의 문제점을 보완한 flip flop이라고 정의할 수 있다.

  • T flip flop

플립플롭

 . T(Toggle) flip flop은 JK flip flop의 J와 K단자를 연결한 것으로 입력 단자가 T하나이며, 입력이 있을 때 마다 flip flop의 값이 반전된다. 이러한 기능은 주로 계수기(Counter)회로에 사용된다.

 . T가 0이면 Clock Pulse는 현재 상태를 변화시키지 못하지만 T가 1이면 현재 상태를 보수화 시킨다. 여기서 T flip flop은 XOR연산 회로와 동일하다는 점을 발견 할 수 있다.

댓글