디지털 회로 개론 03(디지털 코드, 불대수)

TonyHan·2020년 9월 21일
0

20) 디지털회로개론

목록 보기
5/24

3. 디지털 코드

3.1. BCD 코드와 3초과 코드

bcd 코드(Binary Coded Decimal code: 2진화 10진 코드, 8421코드)
bcd 코드는 쉽게 말해 10진수 숫자의 한자리 숫자를 4비트의 2진수로 나타낸 것을 의미한다.1

이때 2진수를 어떻게 표현하느냐에 따라서 위와 같이 다양한 코드가 나오지만 현재는 거의 사용하지 않으며 8421 code 정도가 우리에게 익숙한 코드라고 생각하면 된다.

BCD 코드 연산



bcd 코드는 10진수 연산처럼 진행하되, 계산 결과가 BCD 코드를 벗어날 떄, 즉 9를 초과하는 경우에는 계산 결과에 6(0110)을 더해준다. 위의 그림은 6을 더해준 것을 보여준다. 사실상 백/십/일의 자리수 순으로 코드를 나누어 주기 위해서 6을 더해준다고 보면 된다.

3초과 코드

3초과 코드는 BCD코드에 3(0011)을 더하여 나타낸 코드이다. 즉, 3초과 코드는 10개의 코드만 있는 10진 코드이며
0000/0001/0010/1101/1110/1111은 3초과 코드에 없는 코드이다.

특이사항으로 현재값에 1의 보수를 취하면 10진수에서 9의 보수에 해당하는 값이 된다.

Conversion vs Coding

그렇다면 BCD는 왜 코드라고 불리는 것일까?

우리가 알아야 하는 것이 Conversion과 Coding은 큰 차이가 존재한다는 것이다.

우선 conversion은 단순히 값을 다른 진법으로 변환해주는 것을 의미한다.
반면 Coding은 에러를 줄이고
종류로는
1. Channel Coding : 안전성, 무결성을 보장(코드에 에러가 생기지 않게 해줌)
2. Source Coding : 자연어를 디지털 형식으로 변환, 압축하는 과정(가장 적은 수의 비트로 원래의 정보를 표현할 수 있는 방법 묘색)

3.3 Gray Code

그레이 코드는 가중치가 없기 때문에 연산에는 부적합하다. 대신에 아날로그-디지털 변환기나 입출력 자치 코드로 주로 사용된다.


내가 보내는 비트가 네트워크 속도의 지체로 인하여 문제가 생긴다면 어떻게 될까? 예를 들어 이진 코드 010을 보내는 데 1이 좀 늦게 보내져서 011로 간다면? 그러면 프로그램이 깨지는 등의 문제점이 생길 것이다.

이러한 문제점을 해결하기 위해 나온 것이 Gray Code로

각 숫자별 1비트의 차이만 나도록 제작하였기 때문에 에러를 발견하는데 좋다.

이제 그레이 코드로 바꾸는 방법을 상피어 보면 최상위비트는 그대로 내려쓰고, 그 다음 그레이 비트부터는 앞의 2진 비트와 그 다음 2진 비트를 비교하여서 같으면 0 다르면 1을 출력하는 형태이다.

3.6. Hamming Code

또다른 비트의 에러를 해결하는 방법에는 해밍코드가 존재한다. 해밍코드는 4비트를 보내는 데에 3비트를(check bits) 추가한 총 7비트를 전달하는 방식으로 특수한 연산을 통해 4비트에 어디가 문제인지 확인할 수 있다.

물론 그렇다고 반드시 7비트만 보내는 것이 아닌 갯수를 늘릴 수도 있는데
2^(n-1)-(n-1) < d < 2^n-(n+1) (n은 check bits 수) 연산의 결과는 n개의 check bits가 있을 때 몇개의 비트를 보호할 수 있는지의 max값이다.


이때 어떤 비트가 고장 났는지를 확인하기 위해 a1,a2,a4 위치에 check bits가 배치되고 각 비트의 값은 a3,a5,a6,a7간의 XOR 연산을 통해 정확한 bits가 들어가 있는지를 보고 확인할 수 있다.

추가적으로 3input xor 연산은 위와 같이 수행하면 된다.
xor 연산은 태생적으로 1의 갯수가 홀수 개이면 1을 반환하고 짝수 개이면 0을 반환하는 논리게이트 이다.


최종적으로 수신측에서는 받은 해밍코드의 에러 검출 위치를 다시금 연산식을 이용하여 확인하고 원래 나와야 하는 값과 다른 결과가 나왔다면 이를 수정한다.



4. Combinational Systems

첫수업에 말했던 memory component가 없는 회로를 이야기 한다.

Digital logic circuit

  • Digital Circuit : 다수의 이진정보를 처리하는 회로 <-> analog circuit
  • Logic gates : logic function을 만드는 building block(아래에서 회로로 나옴)
    ex> Basic Logic operators가 logic function이다.(And,Or,Not 등등)
  • Boolean Algebra : Boolean Variable 과 Logic Function을 사용하여서 연산을 하는 것

Levels of Abstractions

디지털 회로를 여러 레벨로 나누어 추상화

  • Transistor : 스위치
  • Gate : Transistor을 모아 만듬(And, Or, Not 등등)
  • Register : Gate의 비메모리 소자

Y Chart(추가 조사 필요)

Block적으로 어떻게 구성되는지를 표현한 Chart

5. 불 대수

5.1. 기본 논리식의 표현( Logical Operations)

And, Or, Not은 논리 기호로 표현할 수 있다.

예시

진리표(Truth Table)

나올 수 있는 모든 조합을 표현한 표

Logic function implementation


And, Or, Not의 로직 게이트를 회로로 묘사해 보면 이렇게 된다.

Logic Diagrams and Expressions


우리가 만든 Logic을 설명하기 위해 다음 세가지를 사용한다.
1. 진리표
2. 방정식
3. Logic Diagram

Basic Logic Diagram


이중에서도 대표적인 Logic Diagram을 따지면 위와 같이 8가지가 존재한다.

Design process

profile
신촌거지출신개발자(시리즈 부분에 목차가 나옵니다.)

0개의 댓글