Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek

©2020 mgr Jerzy Wałaszek
I LO w Tarnowie

Bity w elektronice

Transkoder kodu 8421 na kod Gray'a

SPIS TREŚCI
Podrozdziały

Opis

Konwerter (lub transkoder) jest układem cyfrowym, który przekształca wyrazy jednego kodu binarnego w odpowiadające im wyrazy innego kodu. Nasz konwerter tłumaczy wyrazy kodu 8421 w wyrazy kodu Gray'a. Konwerter będzie posiadał 4 wejścia na bity kodu 8421, które oznaczymy b1, b2, b4 i b8, i 4 wyjścia A, B, C i D, na których pojawi się odpowiedni dla danych wejściowych wyraz w kodzie Gray'a.

obrazek

Tablica stanów wejściowych i wyjściowych dla konwertera jest następująca:

Kod 8421 Kod Gray'a
b8 b4 b2 b1 D C B A
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 1
0 0 1 1 0 0 1 0
0 1 0 0 0 1 1 0
0 1 0 1 0 1 1 1
0 1 1 0 0 1 0 1
0 1 1 1 0 1 0 0
1 0 0 0 1 1 0 0
1 0 0 1 1 1 0 1
1 0 1 0 1 1 1 1
1 0 1 1 1 1 1 0
1 1 0 0 1 0 1 0
1 1 0 1 1 0 1 1
1 1 1 0 1 0 0 1
1 1 1 1 1 0 0 0
Na początek:  podrozdziału   strony 

Określenie funkcji logicznych

Przy wyznaczaniu funkcji logicznych wyjść D, C, B i A możemy wykorzystać mapy Karnaugha. Jednakże istnieje dużo prostszy sposób, który opisaliśmy w artykule o kodzie Gray'a. Otóż jeśli chcemy z wyrazu kodu 8421 uzyskać odpowiadający mu wyraz w kodzie Gray'a, to wykonujemy operację różnicy symetrycznej (EX-OR) nad danym wyrazem 8421 i jego przesunięciem o 1 bit w prawo. Na przykład, dla wyrazu 1011(8421) wyraz kodu Gray'a jest równy:

  0 1 0 1 1
1 0 1 1  
  1 1 1 0  

Stąd już można prosto wyprowadzić odpowiednie funkcje logiczne dla wyjść transkodera:

D = b8
C = b8 ⊕ b4
B = b4 ⊕ b2
A = b2 ⊕ b1

Sieć logiczna jest następująca:

Na początek:  podrozdziału   strony 

Symulacja sieci w języku C++

Numerujemy bramki:

Określamy sieć połączeń:

YB1 = EXOR(b1,b2)
YB2 = EXOR(b2,b4)
YB3 = EXOR(b4,b8)
A = YB1
B = YB2
C = YB3
D = b8

Na wejścia b1, b2, b4 i b8 będziemy podawać stany zgodnie z tabelką:
Kod 8421 Kod Gray'a
b8 b4 b2 b1 D C B A
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 1
0 0 1 1 0 0 1 0
0 1 0 0 0 1 1 0
0 1 0 1 0 1 1 1
0 1 1 0 0 1 0 1
0 1 1 1 0 1 0 0
1 0 0 0 1 1 0 0
1 0 0 1 1 1 0 1
1 0 1 0 1 1 1 1
1 0 1 1 1 1 1 0
1 1 0 0 1 0 1 0
1 1 0 1 1 0 1 1
1 1 1 0 1 0 0 1
1 1 1 1 1 0 0 0

Na wyjściach A, B, C i D powinniśmy otrzymać bity kodu Gray'a.
C++
// Symulacja sieci logicznej
// kodera 8421 na kod Gray'a
// (C)2020 mgr Jerzy Wałaszek
// I LO w Tarnowie

#include <iostream>

using namespace std;

// Funkcje bramek

int EXOR(int a, int b)
{
    return (a ^ b);
}

int main( )
{
  // Stany wejściowe oraz stany wyjściowe
  int b1,b2,b4,b8,A,B,C,D;

  // Stany wyjściowe bramek
  int YB1,YB2,YB3;

  cout << "b8 b4 b2 b1 | D  C  B  A\n"
          "------------+-----------" << endl;

  // Generujemy kolejne stany wejściowe

  for(b8 = 0; b8 < 2; b8++)
    for(b4 = 0; b4 < 2; b4++)
      for(b2 = 0; b2 < 2; b2++)
        for(b1 = 0; b1 < 2; b1++)
        {
          // Symulacja sieci

          YB1 = EXOR(b1,b2);
          YB2 = EXOR(b2,b4);
          YB3 = EXOR(b4,b8);

          // Określamy stany wyjściowe

          A = YB1;
          B = YB2;
          C = YB3;
          D = b8;

          // Wyświetlamy wyniki

          cout << " "
               << b8 << "  "
               << b4 << "  "
               << b2 << "  "
               << b1 << " | "
               << D << "  "
               << C << "  "
               << B << "  "
               << A << endl;
        }

  return 0;
}
Wynik:
b8 b4 b2 b1 | D  C  B  A
------------+-----------
 0  0  0  0 | 0  0  0  0
 0  0  0  1 | 0  0  0  1
 0  0  1  0 | 0  0  1  1
 0  0  1  1 | 0  0  1  0
 0  1  0  0 | 0  1  1  0
 0  1  0  1 | 0  1  1  1
 0  1  1  0 | 0  1  0  1
 0  1  1  1 | 0  1  0  0
 1  0  0  0 | 1  1  0  0
 1  0  0  1 | 1  1  0  1
 1  0  1  0 | 1  1  1  1
 1  0  1  1 | 1  1  1  0
 1  1  0  0 | 1  0  1  0
 1  1  0  1 | 1  0  1  1
 1  1  1  0 | 1  0  0  1
 1  1  1  1 | 1  0  0  0

Na początek:  podrozdziału   strony 

Symulacja interaktywna

Kod wejściowy 8421 ustalasz kliknięciami w kwadratowe przyciski. Kolor czarny oznacza stan 0, kolor czerwony oznacza stan 1.  Słowo Gray'a odczytujesz z okrągłych wskaźników.

Symulator
Na początek:  podrozdziału   strony 

Zestawienie elementów

Obciążenia wejść

b1 = 1
b2 = 2
b4 = 2
b8 = 1 + obciążenie linii D.
SN7486 × 1
 obrazek
Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2020 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.