|
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 (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.

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 |
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:

Numerujemy bramki:

Określamy sieć połączeń:
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 |
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 |
![]() |
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.