ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Lecture 5 , 6 (BCD, Gray, Error) code & Logic gate
    디지털 회로개론 2021. 10. 10. 22:42
    728x90

    Binary Coded Decimal (BCD 코드)

    10진수를 2진코드로 표현한 것입니다.

    각 10진수 기수(0 ~ 9) 는 BCD의 코드로 표현할 수 있습니다.

    8421 BCD code (BCD 코드의 기본)

    4bit로 표현합니다.

    8421 코드 에서는 오직 10개의 숫자만 표현가능합니다.

    (0 ~ 9)

    보통 4bit 에서는 16개의 수를 표현가능하지만(0 ~ 15) 

    8421 BCD 코드는 (0 ~ 9) 를 표현하므로 

    10 (1010), 11(1011), 12(1100), 13(1101), 14(1110), 15(1111) 즉, 이 6개의 숫자는 

    표현할 수가 없습니다.

    Dicimal -> BCD (10진수 -> BCD 코드)

    10진수의 수를 BCD코드로 바꿔주는것은 정말 간단합니다.

    그냥 BCD 코드표를 보고 1대1 대응 해주면 됩니다.

    ex) (1) 35 -> 3 => 0011, 5 => 0101 둘이 합쳐주면 00110101 입니다.

         (2) 98 -> 9 => 1001, 8 => 1000 둘이 합쳐주면 10011000 입니다.

         (3) 13 -> 1 => 0001, 3 => 0011 둘이 합쳐주면 00010011 입니다.

    10진수 13을 그냥 2진수 전환하면 1101 이지만

    BCD 코드에서는 00010011 입니다.

    BCD -> Decimal (BCD 코드 -> 10진수)

    맨 왼쪽 코드부터 4bit 씩 쪼개며 BCD 코드로 1대1 대응 시켜주면 됩니다.

    ex) 10000110 = 1000(8) | 0110(6) = 86

         001101010001 = 0011(3) | 0101(5) | 0001(1) = 351

     

    BCD Addition (BCD 덧셈)

    2진수 덧셈의 법칙을 따릅니다. 

    만약 4bit 의 합이 9를 넘기거나 또는 carry가 발생했을 때는 invalid 입니다.

    먼저 valid 인 경우 입니다.

    ex) (1) 0011 + 0100 = 0111(7) 입니다. 9보다 작으므로 valid 입니다.

         (2) 00100011 + 00010101 = 빨간색 부분 따로 파란색 부분 따로 더해줍니다.

         0010 + 0001 =0011, 0011 + 0101 = 1000 

         즉, 00111000이 됩니다.

    이제 invalid 한 경우 입니다.ex) (1) 1001(9) + 0100(4) = 1101(invalid)9 + 4 = 13이므로 BCD 4bit 코드로 표현하지 못하기 떄문에 다른 조치를 취해주어야 합니다.바로 BCD 코드 6(0110) 을 더하는 것입니다.다시 보면 1001(9) + 0100(4) => 1101(13) + 0110(6) = 10011 (여기서 Carry가 발생합니다.)Carry를 버리지 않고 4bit를 8bit로 늘려줍니다. 10011 = 00010011 로 바꾸어 줍니다.

    그렇게 되면 0001 = 1 , 0011 = 이 되면 13을 표현가능케 해줍니다.


    Gray Code

    수가 늘어 날수록 Gray Code는 비트의 변화가 1bit 밖에 없습니다. 

    따라서 연산하는 code에는 안어울리고 에러잡기에는 용이합니다.

    ex) 일반적인 2진수는 3(0011) -> 4(0100) 하면 3bit 가 바뀌게 됩니다.

    하지만 Gray Code에서는 3(0010) -> 4(0110) 1bit만 바뀝니다.

     

    Binary -> Gray Code (2진수 -> Gray 코드)

    2진수의 MSB와 Gray code의 MSB는 같으므로

    맨 왼쪽의 bit는 그대로 씁니다.

    그 다음 2진수의 MSB 부터 시작해서 맨 오른쪽 까지 

    2bit 씩 더합니다. 만약 carry가 발생하면 버립니다.

    ex) 10110(binary) -> Gray code 

    1) MSB 는 그대로 10110 -> Gray code(1.......)

    2) MSB 부터 2bit씩 더하기 10110

    1 + 0 = 1    ==> Gray code(11....)

    0 + 1 = 1    ==> Gray code(111..)

    1 + 1 = 10(carry 버리기) => 0    ==> Gray code(1110..)

    1 + 0 = 1    ==> Gray code(11101) 입니다.

    Gray code -> Binary (Gray 코드 -> 2진수)

     

    Gray code의 MSB는 2진수의 MSB와 같으므로

    그대로 똑같이 써줍니다.

    다음은 오른쪽에 사진과 같습니다.

    Carry가 발생하면 버려줍니다.

     

     

     


    Error Code (에러 코드)

    에러를 찾기 위해 Parity code를 사용합니다. 

    각 bit는 1의 개수가 짝수 혹은 홀수 입니다. 

    Parity code는 bit의 앞이나 뒤에 붙을 수 있습니다. 문제에서 요구하는 결과에 따라 홀수나 짝수를 요구할 수 있습니다.

    ex) 짝수 체크 시스템에서는 00101은 OK입니다. (1의 개수가 짝수개이기 때문입니다.)

                                        00001은 ERROR 입니다.(1의 개수가 홀수개 이기 때문입니다.)

    따라서 이런 경우에는 Parity code가 1이되어서 00001의 bit에 붙어서 1의개수를 짝수개로 만들어 줍니다.


    Logic Gates (로직 게이트)

    Inverter (NOT)

    입력이 1이 들어오면 출력은 0이되고

    입력이 0이 들어오면 출력은 1이 됩니다.

    즉, 입력과 출력이 정확히 반대로 이루어집니다.

    보통 이론적으로는 Inverter가 나오면 전파가 바로 반대로 이루어집니다.

    하지만 실제로는 약간의 delay 시간이 있습니다.

    논리식으로는 A' 라고 씁니다. 또는 ~A라고 씁니다.


    AND Gate

    수 많은 인풋이 들어와도 아웃풋은 단 1개만 나옵니다.

    모든 인풋이 1이어야 아웃풋이 1입니다.

    나머지 경우에는 아웃풋이 0입니다.

    논리식으로는 인풋이 만약 A와 B면 AB라고 씁니다.

    logical Multiplication


    OR Gate

    수 많은 인풋이 들어와도 아웃풋은 단 1개만 나옵니다.

    모든 인풋이 0이어야 아웃풋이 0입니다.

    나머지 경우에는 아웃풋이 1입니다.

    논리식으로는 인풋이 만약 A와 B 면 A + B라고 씁니다.

    logical Addition


    NAND Gate

    직관적으로 NAND 는 NOT - AND 입니다.

    그림에서 볼 수 있듯이 AND Gate의 아웃풋부분에

    Bubble이 붙어있습니다.

    따라서 AND의 아웃풋과 완전히 다른 결과를 보여줍니다.

    모든 인풋이 1이면 아웃풋은 0입니다.

    나머지 경우에는 아웃풋이 1입니다.

    논리식으로는 ~(AB) 입니다.


    Negative-OR Gate

    Negative-OR은 앞에서 배운 NAND Gate와 완전히 일치합니다. 

    논리식으로는 X = A' + B' 또는 (~A + ~B) 입니다.


    NOR Gate

    직관적으로 NOR Gate는 NOT - OR입니다.

    그림에서 볼 수 있듯이 OR Gate의 아웃풋 부분에

    Bubble이 붙어있습니다.

    따라서 OR Gate의 아웃풋과 완전히 반대의 결과를 보여줍니다.

    모든 인풋이 0이면 아웃풋은 1입니다. 나머지 경우에서는

    아웃풋이 0이 됩니다.

    논리식으로는 ~(A + B) 입니다.


    Negative-AND Gate 

    Negative-AND Gate는 NOR Gate와 완전히 일치합니다.

    논리식으로는 ~A~B 입니다.

Designed by Tistory.