전자전기공학/디지털논리회로

[Digital Logic #7-1][Function of Combinational Logic/조합논리의 기능]

Sim 2024. 3. 3. 20:01
반응형

· 목차

 - 반가산기와 전가산기

 - 병렬 2진 가산기

 - 리플 캐리와 룩-어헤드 캐리 가산기

 - 비교기

 - 디코더

 - 인코더

 - 코드 변환기

 - 멀티플렉서

 - 디멀티플렉서

 - 패리티 발생기/검사기


 

 

저번 시간에 가산기부터 디코더까지 배워봤습니다.

내용이 엄청 많은 만큼 이번에도 배울 내용이 많을 것이라고 생각되네요.

만약 전 포스팅에 대해서 궁금하다면 아래에서 확인해주세요.

 

2024.03.01 - [전자전기공학/디지털논리회로] - [Digital Logic #7][Functions of Combinational Logic/조합논리의 기능]

 

[Digital Logic #7][Functions of Combinational Logic/조합논리의 기능]

· 목차 - 반가산기와 전가산기 - 병렬 2진 가산기 - 리플 캐리와 룩-어헤드 캐리 가산기 - 비교기 - 디코더 - 인코더 - 코드 변환기 - 멀티플렉서 - 디멀티플렉서 - 패리티 발생기/검사기 - 고장 진단

monkey-engineer.tistory.com

 

 

 


 

 

 

저번 시간에 기본적인 디코더까지 보고 포스팅을 끝냈습니다.

이번에는 디코더의 한 종류인 BCD Decoder에 대해서 배워보도록 하겠습니다.

BCD는 'Binary-coded Decimal'로 이진화 십진법을 말합니다.

BCD의 경우 숫자의 10진 출력을 요하는 전자회로와 마이크로프로세서에서

많이 사용된다고 합니다.

 

그렇다면 BCD Decoder가 무엇인지에 대해서 배워보도록 하겠습니다.

 

 

 

Decoder

 

 

 

  • BCD-to-Decimal Decoder

BCD → 10진수 디코더는 각 BCD 코드(8421 코드)를 10가지의 10진 자릿수 중에서 하나로 변환합니다.

이 디코더는 '4-line-to-10-line디코더' 또는 '1-of-10디코더'라고 합니다.

각각의 디코딩 함수는 Active-LOW를 출력하는 NAND게이트 또는 Active-High를 출력하는

AND 게이트를 이용하여 구현할 수 있습니다.

아래 진리표를 보시면 회로를 그리실 수 있으실 겁니다.

 

 

 

Active-LOW Logic symbol

 

 

 

 

  • BCD-to-7-Segment Decoder

BCD-to-7-Segment Decoder는 BCD code를 입력받아 10진수를 표현하는

7-Sgement 디스플레이 장치를 구동하여 십진법 판독값을 표현합니다.

 

 

74LS47

 

LED 7-segment 디스플레이에 연결할 때, LED 디스플레이의 과구동을 방지하기 위해

저항을 통해서 전류를 제한할 필요가 있습니다.

 

 

74LS47에는 '4자리 표시기에서의 0억제'라는 것이 있습니다.

이 기능은 불필요한 선행 0은 비워두지만 유의한 0은 유지하는 기능입니다.

$\overline{BI}/\overline{BRO}$

 

 

여기까지 Decoder에 대해서 배워봤습니다.

위의 Logic Symbol의 경우 각 해당하는 TTL소자의 모델명에 맞는

datasheet가 존재하기 때문에 참고해보시면 될 것 같습니다.

아마도 조만간 더 자세히 알아볼 것 같다고 생각합니다.

 

 

 

Encoder

 

 

 

인코더는 디코더의 기능을 역으로 수행하는 조합회로입니다.

10진수 또는 8진수 등의 숫자를 의미하는 액티브 상태의 입력을 받아 BCD

또는 2진 코드화된 출력으로 변환합니다.

또한 인코더는 기호나 알파벳문자를 인코딩할 수도 있습니다.

 

 

 

  • Decimal-to-BCD Encoder

 

 

 

Decimal-to-BCD-Encoder의 경우 말 그대로 10진수에 해당하는 10개의 입력을 받아

BCD코드에 해당하는 4개의 출력을 가지고 있는 인코더 입니다.

 

74HC147

 

위의 진리표를 참고하여 회도로를 작성해보면 아래와 같습니다.

 

여기서 보시면 HIGH입력이 없으면 BCD 출력은 항상 LOW이므로

입력이 필요하지 않다는 것을 알 수 있습니다.

 

키보드에 있는 10진 순자들은 논리회로에 의해 인코딩 되어야 합니다.

키들 중 하나를 누르면 10진수는 그 숫자에 대응하는 BCD코드로 변환되어야 합니다

 

그렇다면 키보드에서 논리회로인한 인코딩 구성은 어떻게 되어야 할까요?

 

위와 같이 회로를 구성할 수 있습니다.

 

여기까지는 10진수를 BCD로 바꾸는 유형에 대해서 살펴봤습니다.

인코더에는 '코드 변환기'로써 임의의 코드를 다른 코드로 변환하는 조합논리회로가 존재합니다. 

 

1. BCD를 2진코드로 변환하는 방법

2. OR게이트를 이용하여 2진 코드와 그레이 코드의 상호변환

 

 

 

  • BCD-to-Binary converter

 

 

 

BCD를 2진 코드로 변환하는 방법 중 하나는 가산기 회로를 이용하는 것입니다.

기본적인 변환과정은 다음과 같습니다.

 

1. BCD를 구성하는 각 비트의 값또는 그 비트 자릿수에 해당하는 가중치를 2진수로 바꾼다.

2. BCD 비트가 1인 경우의 2진수들을 전부 더한다.

3. 이 던셈의 결과가 BCD에 대응하는 2진수이다.

 

결과적으로 BCD의 각 비트에 해당하는 가중치들을 모두 더하면 2진수가 된다는 것을 알 수 있습니다.

 

예를 들어서, 아래의 경우 10진수 87은 BCD로 다음과 같이 표현됩니다.

 

여기서 왼쪽의 4비트는 80을 그리고 오른쪽의 4비트는 7을 의미합니다.

왼쪽의 비트의 가중치는 10을 그리고 오른쪽 비트의 가중치는 1입니다.

 

 

 

왼쪽과 오른쪽 비트 그룹을 가중치로 나타낸 것이며 위의 관계를 표현하자면 아래와 같습니다.

 

표만 보자니 이해가 쉽지 않을 것 같습니다. 간단한 예제와 솔루션을 통해서 확인해보세요.

 

 

 

원래는 두번째 항목인 그레이코드와 2진법의 상호변환에 대해서 배워봐야 하는데,

제가 지난 포스팅에서 그레이코드를 다루지 않았었습니다.

그레이코드를 다루면서 다시한번 언급하고,

이 글에 포스팅에 대한 글을 추가해 넣도록 하겠습니다.

 

 

 

Multiplexer(MUX)

 

 

 

멀티플렉서는 다수의 입력선과 하나의 출력선 그리고 여러 디지털 입력 데이터 중에서

어떤 데이터를 출력할 것인지를 선택하는 데이터 선택 입력을 가지고 있습니다.

이런 이유로 멀티플렉서는 데이터 선택기라고도 합니다.

 

 

Data select코드에 의해서 입력데이터를 출력시킬지 말지 결정하게 됩니다.

 

1. ($S_{0} = 0\; , \; S_{1} = 0$)이라면 $D_{0}$출력 , $Y = D_{0}\,\overline{S_{1}}\,\overline{S_{0}}$

2. ($S_{0} = 1\; , \; S_{1} = 0$)이라면 $D_{1}$출력 $Y = D_{1}\,\overline{S_{1}}\,S_{0}$

3. ($S_{0} = 0\; , \; S_{1} = 1$)이라면 $D_{2}$출력 $Y = D_{2}\,S_{1}\,\overline{S_{0}}$

4. ($S_{0} = 1\; , \; S_{1} = 1$)이라면 $D_{3}$출력 $Y = D_{3}\,S_{1}\,S_{0}$

 

위의 조건식들을 모두 OR을 통해서 더하면 다음과 같은 데이터 출력식이 됩니다.

 

$$ Y = D_{0}\overline{S_{1}}\overline{S_{0}}+D_{1}\overline{S_{1}}S_{0}+D_{2}S_{1}\overline{S_{0}}+D_{3}S_{1}S_{0}$$

 

위의 식을 아래와 같이 회로구성할 수 있습니다.

 

오른쪽은 멀티플렉서의 인풋에 따른 결과값에 대한 Wave form입니다.

 

 

 

Demultiplexer(DEMUX)

 

 

 

디멀티플렉스는 기본적으로 멀티플렉스의 반대 기능을 합니다.

하나의 선으로 디지털 정보를 받아 여러가지 출력선으로 분배합니다.

이런 이유로 DEMUX를 데이터 분배기라고도 합니다.

 

 

 

 

왼쪽에 'Y'로 표현된 것은 오른쪽에서 'D'와 같습니다.

Logic symbol

 

오른쪽은 디멀티플렉서의 인풋에 따른 결과값에 대한 Wave form입니다.

 

 

패리티 발생기/검사기

 

 

 

디지털 시스템 내에서 디지털 코드를 전송할 때 오류가 발생할 수 있습니다.

오류는 코드 정보를 구성하는 비트값들이 원하지 않는 상태로 변하는 것을 말합니다.

전송되는 동안에 시스템 구성요소의 기능 장애나 전기적 잡음에 의해서

1 에서 0 또는 0에서 1로 변하는 것 입니다. 

 

전체 1의 개수가 홀수 또는 짝수가 되도록 패리티 비트를 정보 비트에 덧붙여서 오류를 검출합니다.

짝수 패리티는 총 개수가 짝수이며, 홀수 패리티의 경우 총 개수가 홀수입니다.

 

예를 들어서, ASCII문자 S는 1010011입니다.

odd parity를 쓰면 11010011이며,

even parity를 쓰면 01010011입니다.

 

Exclusive-OR 게이트를 이용해서 2비트와 4비트에 대한 모듈로-2에 대한 합에 대한 회로는 아래와 같습니다.

 

 

 


 

 

지금까지 조합논리의 기능에 대해서 살펴봤습니다.

 

아직 Gray Code와 Parity Bit에 대해서 배워보지 못한 상태로

이 글을 보게 되어서 많이 헷갈리셨을 것이라고 생각합니다.

 

다음에는 Gray Code와 Parity Bit에 대한 기본적인 지식들을

상세히 배워보고 난 이후에 래치, 플립플롭, 타이머에 대해서 배워보도록 하겠습니다.

 

 

감사합니다.

 

 

반응형