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

4-bitowy demultiplekser

SPIS TREŚCI
Podrozdziały

Opis

Demultiplekser jest elementem cyfrowym, który przesyła dane z wejścia na jedno z wyjść, którego numer określa stan wejść adresowych. Pełni on zatem rolę przeciwną do multipleksera, który utworzyliśmy w poprzednim projekcie. Teraz stworzymy prosty demultiplekser, który będzie posiadał jedno wejście danych G, cztery wyjścia Y0, Y1, Y2, Y3 oraz dwa wejścia adresowe A i B.

obrazek

Na początek:  podrozdziału   strony 

Określenie funkcji logicznych

Dla każdego wyjścia możemy bezpośrednio napisać funkcję logiczną, która będzie iloczynem adresu i wejścia danych:

Funkcje przekształcamy w funkcje NAND, aby zastosować bramki standardowe.

B A G Y0 Y1 Y2 Y3
X X 0 0 0 0 0
0 0 1 1 0 0 0
0 1 1 0 1 0 0
1 0 1 0 0 1 0
1 1 1 0 0 0 1
Na początek:  podrozdziału   strony 

Budowa sieci logicznej

Budowę sieci rozpoczynamy tradycyjnie od sygnałów wejściowych. Będą nam potrzebne sygnały adresowe A, B wraz z ich zaprzeczeniami A i B oraz sygnał G.

Teraz realizujemy kolejne funkcje wyjść:





Sieć jest gotowa.

Na początek:  podrozdziału   strony 

Symulacja sieci w języku C++

Numerujemy bramki:

Określamy sieć połączeń:

YB1 = NOT(B)
YB2 = NOT(A)
YB3 = NAND(YB2,YB1,G)
YB4 = NAND(A,YB1,G)
YB5 = NAND(YB2,B,G)
YB6 = NAND(A,B,G)
YB7 = NOT(YB3)
YB8 = NOT(YB4)
YB9 = NOT(YB5)
YB10 = NOT(YB6)
Y0 = YB7
Y1 = YB8
Y2 = YB9
Y3 = YB10

Na wejścia sieci będziemy podawać sygnały zgodne z poniższą tabelką:
G B A Y0 Y1 Y2 Y3
0 0 0 0 0 0 0
0 0 1 0 0 0 0
0 1 0 0 0 0 0
0 1 1 0 0 0 0
1 0 0 1 0 0 0
1 0 1 0 1 0 0
1 1 0 0 0 1 0
1 1 1 0 0 0 1
C++
// Symulacja sieci logicznej
// demultipleksera 4-bitowego
// (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, int c)
{
  return !(a && b && c);
}

int main( )
{
  // Stany wejściowe oraz stany wyjściowe
  int G,A,B,Y0,Y1,Y2,Y3;

  // Stany wyjściowe bramek
  int YB1, YB2, YB3, YB4, YB5, YB6, YB7, YB8, YB9, YB10;

  int i;

  // W pętli generujemy stany wejściowe

  cout << " G  B  A | Y0 Y1 Y2 Y3" << endl;

  for(i = 0; i < 8; i++)
  {
    // Wydzielamy stany wejściowe

    G = (i & 0x4) > 0;
    B = (i & 0x2) > 0;
    A = i & 0x1;

    // Symulujemy sieć

    YB1 = NOT(B);
    YB2 = NOT(A);
    YB3 = NAND(YB2,YB1,G);
    YB4 = NAND(A,YB1,G);
    YB5 = NAND(YB2,B,G);
    YB6 = NAND(A,B,G);
    YB7 = NOT(YB3);
    YB8 = NOT(YB4);
    YB9 = NOT(YB5);
    YB10 = NOT(YB6);
    Y0 = YB7;
    Y1 = YB8;
    Y2 = YB9;
    Y3 = YB10;

    // Wyniki

    cout << " " << G << " "
         << " " << B << " "
         << " " << A << " | "
         << " " << Y0 << " "
         << " " << Y1 << " "
         << " " << Y2 << " "
         << " " << Y3 << " " << endl;
  }
  cout << endl;

  return 0;
}
Wynik:
 G  B  A | Y0 Y1 Y2 Y3
 0  0  0 |  0  0  0  0
 0  0  1 |  0  0  0  0
 0  1  0 |  0  0  0  0
 0  1  1 |  0  0  0  0
 1  0  0 |  1  0  0  0
 1  0  1 |  0  1  0  0
 1  1  0 |  0  0  1  0
 1  1  1 |  0  0  0  1

Na początek:  podrozdziału   strony 

Symulacja interaktywna

Symulator
Na początek:  podrozdziału   strony 

Spis elementów

Obciążenia wnoszone przez poszczególne wejścia: A - 3,  B - 3, G - 4.

SN7404 × 1
obrazek
SN7410 × 2
obrazek

Scalone demultipleksery

obrazek

Przemysł elektroniczny produkuje demultipleksery w postaci pojedynczych układów scalonych średniej skali integracji - MSI. Służą one do konstruowania różnego rodzaju koderów.

Typowy scalony demultiplekser posiada jedno lub dwa wejścia danych G (jeśli dwa, to wewnętrznie podłączone są do bramki NOR - umożliwia to tworzenie układów złożonych z kilku demultiplekserów), określoną liczbę wyjść danych Yn (n = 16, 8, 4 lub 2) i wejścia adresowe,

Linie adresowe wybierają jedno z wyjść danych Yi o numerze i odpowiadającym adresowi. Stan wejścia G przenoszony jest na zaadresowane wyjście Yi. Jeśli wyjście nie jest zaadresowane, to znajduje się w stanie wysokim 1.

Po lewej stronie przedstawiamy typowy symbol demultipleksera, stosowany na schematach układów cyfrowych. Poniżej prezentujemy dwa popularne układy scalone, zawierające różne demultipleksery.

SN74154 - szesnastowyjściowy demultiplekser

obrazek

Układ SN74154 posiada dwa wejścia danych G1 i G2 (jedno z nich można traktować jako wejście strobujące - stan wysoki na nim blokuje wyjścia demultipleksera). Zwróć uwagę, iż wejścia te pracują w logice ujemnej - świadczy o tym kółeczko na symbolu demultipleksera. Oznacza to, iż sygnał wejściowy jest negowany, a stanem aktywnym wejścia jest stan niski 0. Aby na wybranym wyjściu demultipleksera otrzymać stan niski, oba wejścia G1 i G2 muszą również znajdować się w stanie niskim. Wejścia adresowe D, C, B i A służą do wyboru jednego z 16 wyjść Y0 ... Y15. Wyjścia są również zanegowane, jednakże z powodu zanegowania wejść, stan wyjścia wybranego adresem odpowiada sygnałowi wejściowemu na G1 i G2. Poniżej umieściliśmy tabelkę stanów demultipleksera SN74154.

Wejścia Wyjścia
G1 G2 D C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1
0 0 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1
0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1
0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1
0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
0 1 X X X X 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 X X X X 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 X X X X 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

obrazek

Zwróć uwagę, iż jeżeli wejścia G1 i G2 ustawimy w stan niski 0, to układ SN74154 może pełnić funkcję konwertera kodu 8421 na kod 1 z 16. Słowo kodu 8421 podajemy w takim przypadku na wejścia adresowe D, C, B i A, a na wyjściach Y0...Y15 otrzymujemy zanegowane słowo w kodzie 1 z 16. Obok przedstawiamy schemat ideowy transkodera 8421 na kod 1 z 16.  Inwertory na wyjściach są konieczne do otrzymania kodu w logice dodatniej.

Tego typu układy stosuje się np. do sekwencyjnego sterowania różnych urządzeń cyfrowych.

SN74155 - dwa demultipleksery z dwóch linii na cztery linie

obrazek

Układ scalony SN74155 zawiera dwa demultipleksery z dwóch linii na cztery linie. Dzielą one wspólne wejścia adresowe B i A - nie można zatem adresować niezależnie wyjść demultiplekserów - pracują one zawsze w parze. Pierwszy demultiplekser posiada zanegowane wejście danych, co powoduje jego odmienne działanie.

Każdy z demultiplekserów zawiera jedno wejście danych C, jedno wejście strobowania G, dwa wspólne wejścia adresowe B i A, które wybierają aktywne wyjście oraz cztery wyjścia Y0 ... Y3. Poniżej umieściliśmy tabelki stanów dla obu demultiplekserów.

Wejścia Wyjścia
B A 1G 1C 1Y0 1Y1 1Y2 1Y3
0 0 0 1 0 1 1 1
0 1 0 1 1 0 1 1
1 0 0 1 1 1 0 1
1 1 0 1 1 1 1 0
X X 1 X 1 1 1 1
X X X 0 1 1 1 1
Wejścia Wyjścia
B A 2G 2C 2Y0 2Y1 2Y2 2Y3
0 0 0 0 0 1 1 1
0 1 0 0 1 0 1 1
1 0 0 0 1 1 0 1
1 1 0 0 1 1 1 0
X X 1 X 1 1 1 1
X X X 1 1 1 1 1
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.