Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
W poprzednim rozdziale zaprojektowaliśmy sieć logiczną. która przekształcała kod BCD na kod Aikena. Teraz zaprojektujemy sieć realizującą zadanie odwrotne - przekształcanie kodu Aikena na kod BCD. Na początek, jak zwykle, określimy sygnały wejściowe i wyjściowe naszego transkodera:
Na wejścia abcd transkodera podajemy słowo kodu Aikena. Na wyjściach ABCD otrzymujemy odpowiednik w kodzie BCD. Na podstawie poniższej tabelki zamian wyrazów kodowych określimy funkcje logiczne dla poszczególnych wyjść A, B, C i D:
Cyfra | Aiken | BCD | ||||||
d | c | b | a | D | C | B | A | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
2 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
3 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
4 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
5 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
6 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
7 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
8 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
9 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
Na podstawie tabelki układamy tablice Karnaugha dla poszczególnych wyjść transkodera. Wszystkie funkcje sprowadzamy do postaci NAND, aby można było użyć bramek standardowych:
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Podsumujmy otrzymane funkcje logiczne:
Tworzenie sieci logicznej rozpoczynamy od wejść. Jeśli przyjrzysz się wzorom:
to zauważysz, iż używane są w nich wejścia: a, b, b, c, c, d, d. Zaprzeczenia zrealizujemy za pomocą inwerterów NOT.
Realizujemy kolejne funkcje:
Sieć logiczna jest gotowa
Numerujemy bramki w sieci w kolejności przetwarzanych przez nie sygnałów:
Określamy sieć połączeń:
Program będzie tworzył na wejściach a, b, c i d kolejne wyrazy kodu Aikena. Na wyjściach sieci powinniśmy otrzymać kolejne słowa w kodzie BCD wg poniższej tabelki:
Cyfra | Aiken | BCD | ||||||
d | c | b | a | D | C | B | A | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
2 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
3 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
4 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
5 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
6 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
7 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
8 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
9 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
C++// Symulacja sieci logicznej // transkodera z kodu Aikena na BCD // (C)2020 mgr Jerzy Wałaszek // I LO w Tarnowie #include <iostream> using namespace std; // Funkcje bramek int NOT(int a) { return !a; } int NAND(int a, int b) { return !(a && b); } int main( ) { // Stany wejściowe oraz stany wyjściowe int a,b,c,d,A,B,C,D; // Stany wyjściowe bramek int YB1,YB2,YB3,YB4,YB5,YB6,YB7,YB8,YB9,YB10,YB11; // Licznik pętli i cyfra Aikena int i,ca; cout << "Cyfra | d c b a | D C B A\n" "------+---------+--------" << endl; // W pętli generujemy kody cyfr of 0 do 9 for(i = 0; i < 10; i++) { ca = i; if(i > 4) ca += 6; // Wyodrębniamy bity kodu Aikena a = (ca & 0x1); b = (ca & 0x2) > 0; c = (ca & 0x4) > 0; d = (ca & 0x8) > 0; // Symulacja sieci YB1 = NOT(d); YB2 = NOT(c); YB3 = NOT(b); YB4 = NAND(c,b); YB5 = NAND(YB2,d); YB6 = NAND(c,YB3); YB7 = NAND(YB1,b); YB8 = NAND(d,YB3); YB9 = NOT(YB4); YB10 = NAND(YB5,YB6); YB11 = NAND(YB7,YB8); A = a; B = YB11; C = YB10; D = YB9; // Wyświetlamy wyniki cout << " " << i << " | " << d << " " << c << " " << b << " " << a << " | " << D << " " << C << " " << B << " " << A << endl; } cout << endl; return 0; } |
Wynik: |
Cyfra | d c b a | D C B A ------+---------+-------- 0 | 0 0 0 0 | 0 0 0 0 1 | 0 0 0 1 | 0 0 0 1 2 | 0 0 1 0 | 0 0 1 0 3 | 0 0 1 1 | 0 0 1 1 4 | 0 1 0 0 | 0 1 0 0 5 | 1 0 1 1 | 0 1 0 1 6 | 1 1 0 0 | 0 1 1 0 7 | 1 1 0 1 | 0 1 1 1 8 | 1 1 1 0 | 1 0 0 0 9 | 1 1 1 1 | 1 0 0 1 |
W symulatorze kod Aikena ustawiasz z lewej strony na kwadratowych przyciskach. Kliknięcie w przycisk zmienia jego stan na przeciwny. Kolor czarny oznacza stan niski 0, kolor czerwony to stan wysoki 1. Kod BCD odczytujemy z okrągłych wskaźników po prawej stronie. Pamiętaj, iż sieć poprawnie działa tylko dla prawidłowych kodów Aikena. Jest to konsekwencją uproszczenia funkcji logicznych.
Symulator |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 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.