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 Gray'a na kod 8421

SPIS TREŚCI
Podrozdziały

Opis

Konwerter (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 Gray'a  na wyrazy kodu 8421. W poprzednim rozdziale opisaliśmy konwerter odwrotny: kod 8421 na kod Gray'a. Nasz konwerter będzie posiadał 4 wejścia A, B, C D, na które podajemy wyrazy w kodzie Gray'a, i 4 wyjścia b1, b2, b4, b8, na których pojawia się odpowiedni dla danych wejściowych wyraz w kodzie 8421.

obrazek

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

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

Wyznaczenie funkcji logicznych

Do wyznaczenia funkcji logicznych dla wyjść b1, b2, b4 i b8 wykorzystujemy algorytm opisany w rozdziale o kodzie Gray'a. Najstarszy bit b8 jest równy bitowi D. Pozostałe bity wyznaczamy kaskadowo na podstawie bitów wyznaczonych wcześniej.

Na początek:  podrozdziału   strony 

Budowa sieci logicznej

Sieć budujemy w kolejności funkcji podanej we wzorze. Rozpoczynamy od sygnałów wejściowych i wyjściowych:

Teraz realizujemy kolejne funkcje logiczne sieci:





Sieć działa kaskadowo. Oznacza to, iż sygnał wyjściowy ustali się dopiero po czasie równym sumie czasów propagacji dla poszczególnych bramek EX-OR.

Na początek:  podrozdziału   strony 

Symulacja sieci w języku C++

Rozpoczynamy od ponumerowania bramek. Należy je ponumerować zgodnie z kolejnością przetwarzania sygnałów, ponieważ sieć logiczna ma strukturę kaskadową:

Określamy sieć połączeń:

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

Na wejścia A, B, C i D będziemy podawać stany zgodnie z poniższą tabelką. Stany te oznaczają wyrazy w kodzie Gray'a. Na wyjściach b8, b4, b2 i b1 powinniśmy otrzymać wyrazy w kodzie 8421, które odpowiadają wyrazom kodu Gray'a.
Kod Gray'a Kod 8421
D C B A b8 b4 b2 b1
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 1
0 1 0 1 0 1 1 0
0 1 1 0 0 1 0 0
0 1 1 1 0 1 0 1
1 0 0 0 1 1 1 1
1 0 0 1 1 1 1 0
1 0 1 0 1 1 0 0
1 0 1 1 1 1 0 1
1 1 0 0 1 0 0 0
1 1 0 1 1 0 0 1
1 1 1 0 1 0 1 1
1 1 1 1 1 0 1 0
C++
// Symulacja sieci logicznej
// kodera kodu Gray'a na 8421
// (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 A,B,C,D,b1,b2,b4,b8;

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

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

  // Generujemy kolejne stany wejściowe

  for(D = 0; D < 2; D++)
    for(C = 0; C < 2; C++)
      for(B = 0; B < 2; B++)
        for(A = 0; A < 2; A++)
        {
          // Symulacja sieci

          YB1 = EXOR(D,C);
          YB2 = EXOR(YB1,B);
          YB3 = EXOR(YB2,A);

          // Określamy stany wyjściowe

          b1 = YB3;
          b2 = YB2;
          b4 = YB1;
          b8 = D;

          // Wyświetlamy wyniki

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

  return 0;
}
Wynik:
 D  C  B  A | b8 b4 b2 b1
------------+------------
 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  1
 0  1  0  1 |  0  1  1  0
 0  1  1  0 |  0  1  0  0
 0  1  1  1 |  0  1  0  1
 1  0  0  0 |  1  1  1  1
 1  0  0  1 |  1  1  1  0
 1  0  1  0 |  1  1  0  0
 1  0  1  1 |  1  1  0  1
 1  1  0  0 |  1  0  0  0
 1  1  0  1 |  1  0  0  1
 1  1  1  0 |  1  0  1  1
 1  1  1  1 |  1  0  1  0

Na początek:  podrozdziału   strony 

Symulacja interaktywna

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

Symulator
Na początek:  podrozdziału   strony 

Spis elementów

Obciążenia wejść:

A = 1
B = 1
C = 1
D = 1 + obciążenie linii b8.
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.