|
Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie
|
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2026 mgr Jerzy Wałaszek
|
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.

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 |
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.
![]() |
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.
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ń:
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 |
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 |
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.