논리게이트를 읽고 오기전에 불 대수에 대해서 제대로 알지 못하는 사람들은 필자의 불 대수 포스팅을 읽고 오기를 바란다.

 

[임베디드기사] [필기] 불 대수(Boolean Algebra)

불 대수의 개요 불 대수란 논리식을 알기위한 기본적인 성질을 수학적으로 표현하기 위한 구조이다. 영국의 수학자 G. Boole이 만들었다. 어째서 우리가 논리식을 알아야하는 걸까?임베디드기사

tutoreducto.tistory.com

 

논리게이트의 개요

 

논리게이트는 논리식에서 사용되는 기본연산(AND / OR ) 회로에 사용하기 위해서 표현하는 도식화된 기호이다. 기호들을 사용해서 회로도면상에 논리식을 표현할 수 있으며 바로 보도록 하자

조합논리 회로

위와 같은 기본 논리게이트를 활용해서 특정한 목적을 수행하는 단위 논리회로를 만들 수 있다. 시험 출제범위로 존재하는 조합논리회로에 대해서 알아보도록 하자. 아래에서 표현되는 모든 회로도는 위키백과에서 참고하였다.

 

출처 : 

가산기 – 반 가산기(Half Adder)

반 가산기는 이진수의 한자리 수 덧셈을 수행하고 자리올림이 발생하면 Carry 값으로 표현하는 조합논리회로이다.

입력으로 A/B가 존재할 때 둘 다 1이거나 0이면 덧셈의 결과는 0이다.(둘다 1일 경우 합의 결과는 0이고 자리올림(S)발생), 한쪽만 1인 경우에만 1이 반환되고 이는 XOR회로와 같다.

 

반면 자리올림 값은 둘다 1인경우에만 발생하기 때문에 AND게이트로 표현하면 반가산기가 된다. XOR의 진리식이 F=A’B+AB’ 인 것을 생각하면 반가산기는 AND / OR / NOT만으로 구성이 가능한 것이다.

 

가산기 – 전 가산기(Full Adder)

전 가산기는 반가산기에서 아래 자리에서 발생한 캐리 값이라는 한 가지의 입력을 더 받는다. 단순하게 생각하면 인자가 3개인 덧셈회로와 다르지 않다.

진리표를 통해서 보면 알 수 있듯 이 S3개의 합을 나타내고 Cout은 캐리값 발생에 중심을 둔다. 카르노맵을 통해서 해당논리식을 구해보면 S=ABC, Cout=AB+(Cin(AB))가 된다. 이를 회로로 구현하면 반가산기 2개와 OR 게이트 하나가 됨을 알 수 있다.

 

가산기를 복수개 사용하면 여러자리수를 더하는 논리회로를 만들 수 있다. 이전자리에서 발생한 Carry out 비트를 다음 전가산기의 Cin으로 사용하는 방식인데, 자리올림수가 물결(Ripple)치듯 올라가는 형태로 리플 캐리 가산기라는 명칭을 가지고 있다. 구조가 단순하지만 이전 가산기의 연산결과를 기다려야하는 지연시간이 존재한다(이를 리플 지연이라 부른다.) 이를 예방하고자 자리올림을 미리 예측하는 가산기(이러면 리플지연은 없어진다)도 존재한다.

 

부호기와 복호기 – 부호기(Encoder)

사용자는 임의의 선택을 할 때 이를 적절한 이진수로 변환하는 회로를 의미한다. 보통 부호화(Encoding)을 한다는 것은 데이터를 코드화 하는 것을 의미하는데, 임의의 선택선(I0~In)을 이진화한다는 점에서 부호기라고 칭할 수 있다.

위에서 보다시피 입력 I0~I3까지 중 한가지를 코드화 한다. V는 입력이 존재하는 가를 표현하는 출력선으로 I0~I3모두가 선택되지 않았을 때 만 0이 출력된다.(모두 OR Gate) 이후 Inn을 이진수로 출력한 결과가 O0O1에 비트로써 출력된다. 4개의 입력선택선과 2개의 이진비트출력을 가지기에 4 x 2라는 수식어가 앞에 붙어있다.

 

부호기와 복호기 – 복호기(Decoder)

 

조합논리회로에서 부호기와 반대로 복호기는 주어진 2진 입력으로부터 적절한 출력선 1개에 해당하는 번호에만 1을 출력하는 회로이다.

 

멀티플렉서(MUX)와 디멀티플렉서(DeMUX) - MUX

멀티플렉서는 데이터 선택기로 불리는데 복수개의 입력신호가 존재할 때 특정 조건(S0~S1)에 의해 한 개의 입력신호를 선택할 때 사용된다.

위에 회로진리표를 보듯이 4개의 입력선(I0~I3)중에서 S0S1조건에 따라 하나의 출력을 Y로 보내고 있다. 위에회로에서는 4개의 선 중 하나를 선택하기 때문에 4X1이고 역시 유연하게 변경가능하다.

 

멀티플렉서(MUX)와 디멀티플렉서(DeMUX) - DeMUX

 

반면에 DeMUXn개의 입력중 선택하면 MUX와 반대로 1개의 입력석은 조건에 따라 N개의 출력선에 선택하여 출력하는 회로이다. 데이터 분배기(Distributer)라고 부른다.

 

위에서 입력선 I는 조건 S0S1의 비트에 따라서 O0~O3 중 적절한 곳에 출력된다.

 

추가로 시험범위로 명시되어있지는 않지만 감산기라는 조합논리회로도 존재한다. 뺼셈이 기본적으로는 존재하지 않는 디지털 세상에서 보수체계를 통한 가산기로 수행되는 계산인데, 자세한 것은 위키백과를 참고하기를 바란다.

 

감산기 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org


정리

이번시간에는 기본적인 논리게이트의 표기법과 조합논리회로(가산기 / 선택기 / 분배기 / 부호기 / 복호기)의 구조를 알아보았다.

 

다음시간에는

오류수정코드인 패리티 비트와 해밍코드를 알아보도록 하겠다.

 

 

진수표현

 

진수라는 것은 수 체계에서 수를 어떻게 표현할 것인지에 대한 개념이다. 이미 우리가 알고 있는 것은 통상적으로 사용하는 10진법과 컴퓨터 이해 체계에 존재하는 2진법이다.

컴퓨터의 정보표현단위는 이진법으로 이루어져 있다. 즉 우리가 알고 있는 정보의 저장은 사실 저장공간에 무수히 많은 01로 이루어져 있다고 할 수 있겠다.


8진법과 16진법

 

자연스럽게 생각하면 3진법과 4진법도 생각을 할 수 있을 것이다. 물론 표현방식에 따라 n진법은 자연수공간에서 무수히 존재할 수 있으나 우리는 8진법 / 16진법만 더 알아볼 것이다.

두 가지만을 더 알아보는 이유는 당연히 자주 사용하기 때문인데, 특히나 16진법의 경우 2진법을 효율적으로 압축하여 이해도를 증진시키기 유용하기 때문에 프로그래밍의 단위처럼 여겨지고는 한다. 컴퓨터 세상에서 2진수는 바이너리라고 부르며 표현 시 2진수로 되어있다는 것을 알리기 위해 수 앞에 0b를 붙이는 것을 관례로 한다. 8진법으로 표현된 값은 옥텟(Octet)값이라고 칭하며 0o를 붙이는 것을 관례로 한다.16진수로 표현된 값을 헥스(Hex)값으로 칭하며 0x를 붙이는 것을 관례로 한다. 십진수는 Decimal이고 0d지만 보통 생략하는 것을 관례로 한다.

 

10진수와의 변환

10진수와 n진수를 변환할 때는 다음과 같은 일반식을 주로 사용한다. 반대로 10진수를 N으로 변환할때는 나눗셈을 사용한 방식이 일반적이지만, 아래 수식을 활용해서 올바른 수를 대입하도록 계산하면 된다.


정리

컴퓨터와 사람은 사용하는 진수 체계가 다르다. 각각 2진수와 10진수를 사용하고 표현의 압축과 단순화를 위해서 2진수를 3/ 4개씪 묶은 8진수와 16진수가 컴퓨터에서는 자주사용된다.

 

다음시간에는

다음시간에는 디지털 시스템에서 사용되는 기초 논리게이트에 대해서 알아보도록 하겠다.

개요

불 대수로 표현된 논리식은 불 대수의 연산법칙을 적용하여 간소화 할 수 있다.

 

간소화는 회로를 단순하게 만들어주고, 비용을 낮춰주며 이해를 돕기 때문에 어떠한 논리식을 작성한 이후로는 이를 간소화시켜주는 작업이 필요하다. 예를 들면 어떠한 컴퓨터 논리를 작성한 결과가 AB + AB’ 였다면 이는 A(B+B’) 이고 결국 그냥 A와 같은 논리식이 된다. AND연산 2개와 NOT연산 1, OR연산 1개 있던 것이 그냥 연산이 없어지는 것과 같다. 혹은 아래와 같은 복잡한 연산도 드모르간의 법칙 등을 활용해 간소화 할 수 있다.

그러나 너무 복잡해 진다면 이런 수학적인 방법(계산과 법칙)을 선택하는 것이 최소한으로 간소화된 식을 얻을 수 있는 최적의 방법이 되진 못한다.(어쩔 수 없지뭐... 사람이 감으로 하는 거니까..)


간소화 방식 – 카르노맵(Karnaugh map)

카르노 맵은 불 대수 함수식을 단순화 하는 방식이다. 요는 논리식을 구성하는 인자들의 구성요소를 최소항 전개(참을 출력하는 인자곱들의 합성으로 이루어진 수식) 하여 도표를 통해 간소화 하는 방식이다. 아래는 예시이다.

혹시나 시험에 나올 수도 있어서 적어두는 것인데, 최소항을 표현할 때 Don’t Care 인자가 존재할 수 있다.(X)로 표시됨. 이는 간소화 시에 결합해도 되고(사각형 처리) 안해도 상관 없는 항이라는 의미이다.


간소화 방식 - 콰인 매클러스키(Quine-McCluskey Algorithm)

콰인 매클러스키 알고리즘은 주어진 논리식의 후보항을 구하고 한 인자만 변한다면 지배되는 법칙(AB+AB’=A)을 활용하여 논리식을 간소화 하는 방식이다. 기본적으로 노가다 이지만 변수의 개수가 5개 이상이 되는 논리식에서는 카르노 맵이 제한이 생기기 때문에(열 헤더의 생성 난해함, 5개까지는 되긴한다) 콰인 매클러스키 방식을 사용한다.

 

나중에 시간이 생기면 문제까지 예시로 넣는 것으로 하고 우선 위키백과에 좋은 예시까지 나와있으니 링크를 걸도록 하겠다.

최소항을 찾는 콰인 매클러스키방식을 조금 더 발전 시킨 패트릭 방법이라는 것이 있다. 참고만 하고 있자.


정리

논리식은 같은 논리식으로(동치) 간소화 할 수 있다. 이해도를 증진시키고, 비용을 절감하는 등 여러 가지 장점을 가지고 있는 논리식 간소화는 불 대수의 기본 법칙을 활용한 방식, 카르노 맵을 이용한 방식, 콰인 매클러스키방식이 존재한다.

 

다음시간에는

다음 시간에는 진수표현 방식에 대해서 알아보도록 하겠다.

 

 
 

불 대수의 개요

불 대수란 논리식을 알기위한 기본적인 성질을 수학적으로 표현하기 위한 구조이다. 영국의 수학자 G. Boole이 만들었다. 어째서 우리가 논리식을 알아야하는 걸까?임베디드기사를 준비하고 있는 나와 독자들은 디지털 시스템(Digital System)을 마스터 하고자한다. 디지털은 이산적(Binary; 원문은 Discrete이지만 넘어가자)이고 논리식의 참/거짓의 성질과 1/0을 대응하여 컴퓨터논리의 이해에 그대로 적용할 수 있다. 위키백과에서는 불 대수를 다음과 같이 정의내리고 있다.

 

순서론과 추상대수학, 논리학에서 불 대수(Boole代數, 영어: Boolean algebra)는 고전 명제 논리의 명제의 격자와 같은 성질을 갖는 격자이다. 즉, 논리적 공리들을 만족시키는 논리합과 논리곱 및 부정의 연산이 정의된 대수 구조이다.
 
-위키백과 : 불 대수
(https://ko.wikipedia.org/wiki/%EB%B6%88_%EB%8C%80%EC%88%98)

위의 페이지에서도 볼 수 있듯 컴퓨터에서 가지는 높은 전압(H)를 1(혹은 True를 표현하는 T)로, 낮은 전압(L)을 0(혹은 False를 표현하는 F)으로 표현하여 조합 회로의 논리표현에 불 대수가 사용된다.


불 대수의 기본연산

먼저 이야기 해두자면 불 대수에서 표현하는 01은 수치적인 값이 아니다. 참과 거짓을 논하고 있기 때문에 이를 매개변수로 사용하는 수학적인 기호도 논리학에서 사용하는 성질을 따르며 일반수학에서 적용되는 연산이 아니라는 점을 참고바란다.

 

가장 기본적인 연산은 AND / OR / NOT 이 있다

  • AND : AND연산은 기호로 *로 표시한다. 양옆의 두 개 인자가 둘다 참일때만 참(1)을 반환하고 하나라도 거짓이 있으면 거짓(0)을 반환한다.
  • OR : OR연산은 기호로 +로 표시한다. 양옆의 두 개 인자가 하나라도 참이면 참(1)을 반환하고 둘다 거짓인 경우에만 거짓(0)을 반환한다.
  • NOT : NOT은 뒤에 있는 인자가 참이면 거짓을, 거짓참을 반환하는 연산이다. 2진 체계에서 1의 보수연산과 같기 때문에 보수를 의미하는 Complementation으로 표기하기도 한다.

어떠한 논리식에 대해 가질 수 있는 모든 변수에 결과로 대응한 표를 진리표라고 칭한다. 다음은 가장 기본연산인 AND / OR / NOT의 진리표와 회로기호로의 표현이다.

위의 논리표에서 볼 수 있듯이 불 대수에서 사용되는 임의의 논리 변수는 문자로 표현한다. 반면 항상 참인 값(1)과 거짓인 값(0)을 식에 표현할 때도 있으니 참고 바라며,(EX : A*1 = B+0 etc) 아래의 기본정리를 알기 위해서 위의 수식은 자연스럽게 사용할 수 있도록 해두는 것이 좋다.

AND / OR 는 연산 최종결과에 NOT이 붙은 것을 줄여 NAND / NOR로 부르기도 한다. 회로기호결과값에 동그라미 가 붙는 것으로 표현된다,

 

참고로 11의 덧샘값이 1이 되는 이유는 앞서 설명하였듯 이것이 논리의 분야이기 때문이다. /거짓 혹은 이진수로 0/1표현되는 이곳에 2는 없다. 이것은 상태(1On 0Off)를 나타내는 표현이다. 또한 곱하기 기호(*)는 생략하여 표현이 가능하다.

기본연산은 아니지만 논리회로에 자주 사용되는 연산으로 XOR 연산이 있다. 배타적 합 연산 이라고 칭하며, 피연산자 A와 B의 값이 다르면 1, 같으면 0으로 표현된다.

 
 

불 대수의 기본정리

불 대수에는 공리처럼 여겨지는 기본 정리가 존재한다. 순수수학 대수체계에 존재하는 그것들(우리가 고등학교 수학에서 배우는 그 정리들)과 매우 유사하다. 이러한 정리를 활용하여 불대수의 논리적 결과를 유지한 상태로 불 대수 식을 변형할 수 있다.

 

동일 법칙(Identity Laws)

 

임의의 값 A에 항상 참(1)인 값을 곱하면 그 값은 항상 값 A와 같다. 또한 임의의 값 A에 항상 거짓(0)인 값을 더하면 그 값은 항상 값 A와 같다. (A1일 때 0일 때를 각각 가정해 보기를 바란다. 변수가 복잡해져도 그것을 A로 치환한다고 생각한다면 항상 맞는 법칙이 된다.)

 

지배 법칙(Domination Laws)

동일 법칙과 반대되는 성질로 임의의 값 A에 항상 거짓(0)인 값을 곱하면 항상 거짓(0)이 되고 임의의 값 A에 항상 참(1)인 값을 더하면 그 값은 항상 참(1)이 된다.

 

등멱 법칙(Idempotent Laws)

임의의 값 A에 자기 자신을 곱하거나 더해도 A가 된다.(당연 하다 0+0=0, 1+1=1, 0*0=0, 1*1=1)

 

부정 법칙(Negation Laws)

 

등멱 법칙의 반대되는 법칙으로 임의의 값 A에 자기 자신의 부정(NOT)값을 곱하거나 무조건 거짓(0), 더하면 무조건 참(1)이 된다.

 

교환 법칙(Commutative Laws)

ANDOR연산에서 피연산자의 위치가 바뀌어도 결과는 동일하다.

 

결합 법칙(Associative Laws)

ANDOR의 연속된 같은 연산이라면 무엇부터 수행하더라도 결과는 동일하다.

 

분배 법칙(Distributive Laws)

 

괄호로 먼저계산되는 식을 해체하면 그 수식에 모두 적용되는 연산을 적용된 결과와 같다.

 

드 모르간의 법칙(De Morgan’s Laws)

괄호 전체에 부정연산(NOT)연산을 적용하면 각 변수에 NOT연산을 하고 AND연산을 OR, OR연산을 AND로 변환한다.

 

이중 부정의 법칙(Dual negation Laws)

부정을 두 번하면 원래의 값으로 돌아온다. Sim-Ple하다.

 

흡수 법칙(Absorption Laws)

 

위의 기본 증명들을 활용하여 유도할 수 있는 법칙이다.


정리

불 대수는 디지털 시스템에서 컴퓨터 논리를 표현하기위한 수식이다. 불 대수를 활용하면 복잡한 컴퓨터의 논리를 표현할 수 있다. 불 대수에는 기본연산이 되는 AND / OR / NOT이 존재한다. 또한 불 대수에 적용되는 기본 법칙들이 존재한다.

 

다음시간에는

다음시간에는 논리식의 간소화를 알아보도록 하겠다.

지털 시스템의 정의

디지털 시스템을 정의내리고 싶은데, 적당한 정의를 찾지 못했다. 유명한 IT도서 집필 도서출판사인 O’Relly에서 내린 정의가 적당하여 가지고 와봤다.

 

(원문) “Digital systems are designed to store, process, and communicate information in digital form”
(번역) “정보를 디지털 형태로 저장, 처리 그리고 통신하기 위해 디자인된 것이 디지털 시스템이다”

- O'Relly Fundamentals of Digital Logic and Microcontrollers, 6th Edition by
(https://www.oreilly.com/library/view/fundamentals-of-digital/9781118969304/9781118969304c01.xhtml)

 

아날로그와 디지털

임베디드기사의 가장 기본적인 개념이 되는 디지털시스템의 위의 정의를 이해하기 위해서는 디지털아날로그의 차이를 알아야 한다.

  • 아날로그 : 자연상태에 존재하는 연속적인 값
  • 디지털 : 컴퓨터로 처리되기 위해 0과 1로 표현되는 이산적인 값

아날로그는 연속적으로 변화하는 값이다. 전압과 전류, 온도 등 시간이 흘러감에 따라 끊기지 않고 연속적인 계측값을 가지는 신호를 아날로그 신호라고 부른다.

반면에 디지털 신호는 임의의 시간에서 지정된 값들을 가진다. 흔히 전기가 On 된 상태인 ‘1’Off된 상태인 ‘0’의 이진법을 디지털 신호로 구분하며 중간값은 존재하지 않는다.

 

컴퓨터에서 아날로그가 아닌 디지털 시스템을 차용한 것에는 디지털 신호가 가진 장점에 있다.(물론이야 전기선을 사용하는데 디지털이 아닌 것도 이상하지만) 디지털 신호는

  • 에러에 강하다. : 중간값을 가지지 않고 0/1의 확실한 상태만을 가지기에 손실과 감쇠에 따른 에러 복구등이 쉽다
  • 제작이 간편하다 : 아날로그회로에 비해 상대적으로 말이다.

 

위의 디지털 시스템정의에서 디지털 시스템이 수행하는 세 가지의 목적은 다음과 같다.

  • 정보저장 : 논리회로상에 잠재적인 활용을 위해 0/1의 상태를 기록하는 것
  • 정보처리 : 특정한 목적을 위해서 저장된 0/1의 일련의 입력받거나 하여 정보를 가공하고 출력/저장하는 것
  • 정보통신 : 신호를 다른 디지털 시스템에 전송하거나 다른 디지털 시스템으로부터 수신된 신호를 저장/처리하는 것

 

디지털 시스템의 구성

디지털 시스템은 01의 연산을 수행하는 여러개의 회로로 이루어져있다. 가장 기본이 되는 단위는 목적과 방식에 따라 조합논리회로와 순서논리회로로 구분이 되고 이 기본회로등을 융합하고 조합하여 특정한 역할을 수행하는 디지털 시스템을 제작할 수 있다.

 


정리

컴퓨터는 모든 것을 전기신호로 처리하게 된다. 한 개의 0/1을 표현하는 비트를 여러 개 조합하여 사람들이 익숙하고 이해할 수 있는 아날로그신호를 유사하게 표현할 수 있는 데 디지털 시스템이란 이러한 디지털 신호를 사용하는 시스템을 의미한다. 쉽게 이해해보면 전기기판위에 존재하는 정보저장, 처리, 통신을 수행하는 일련의 HW/SW 장치가 되겠다. 이러한 디지털 시스템을 제작하기 위해 기본단위인 조합논리회로와 순서논리회로를 사용한다.

 

디지털 시스템은 이미 우리 일상속에 존재한다. 우리가 사용하는 컴퓨터라던가(마더보드 이야기다) 요즘 많이 부흥하고 있는 드론과 자율주행 차거나 모두 전기적인 신호로 제어되는 시스템의 집합체이다.

 

다음시간에는

다음시간에는 이진수와 불 대수를 알아보도록 하겠다.

 

임베디드 기사는 Q-net(한국 산업인력공단 예하 자격검정기관)에서 주관하는 자격증이다. 기사등급의 자격증이고 IT와 밀접한 관련이 있을 것으로 예상이 되지만, IT계열자격계통의 기술사인 컴퓨터시스템응용기술사와 정보관리기술사계통에 응시자격을 부여하지 않는 것으로 보아 독립적으로 취급되는 자격증으로 보인다.

 

아래는 Q-net에서의 소개이다.

하드웨어에 대한 이해, 임베디드 소프트웨어 플래폼, 임베디드 시스템 응용 소프트웨어에 대한 기초 지식과 설계 및 응용 능력을 바탕으로 임베디드 시스템에 펌웨어, 운영체제를 이식하고, 응용 프로그램을 설계, 구현 및 테스트를 수행하는 업무 또는 이와 관련된 지도적 업무를 수행

Q-net임베디드 기사 자격개요 (https://www.q-net.or.kr/crf005.do?id=crf00505&gSite=Q&gId=&jmCd=1121&examInstiCd=1)

총 4회의 기사/산업기사 응시 일정이 존재하는 Q-net의 기사시험 일정에서 단 1번 4회차에 응시기회가 존재한다. 그말인 즉슨 응시하는 사람자체가 매우 적다는 반증인데, 절대 못참지 한번 응시하기 위해서 시험을 쳐보려고 한다. 시험은 9월 10에 필기를 응시했는데, 한 번 보고 오려고 한다. 문제는 응시자가 워낙 적어서 그런지 몰라도 공부할 수 있는 자료가 너무너무 적다.

<yes24에서 임베디드기사를 검색, 1개밖에 안나온다.>

 

아래는 Q-net에서 제공하는 임베디드기사의 출제기준이다. 3년단위로 갱신되는 거 같고, 2024년 부터 새로운 출제기준이 적용되지만 사실상 변경점이 없기 때문에 이것을 목차로 잡아 블로그에 오리면 될 거 같다.

임베디드기사 출제기준(2020.1.1 ~ 2023.12.31)_등재용.hwp
0.03MB
임베디드기사출제기준(2024~2027).pdf
0.16MB

 

+ Recent posts