Steuerungstasten

nächste Folie (auch Enter oder Spacebar).
vorherige Folie
 d  schaltet das Zeichnen auf Folien ein/aus
 p  wechselt zwischen Druck- und Präsentationsansicht
CTRL  +  vergrößert die Folien
CTRL  -  verkleinert die Folien
CTRL  0  setzt die Größenänderung zurück

Das Weiterschalten der Folien kann ebenfalls durch das Klicken auf den rechten bzw. linken Folienrand erfolgen.

Notation

Typ Schriftart Beispiele
Variablen (Skalare) kursiv $a, b, x, y$
Funktionen aufrecht $\mathrm{f}, \mathrm{g}(x), \mathrm{max}(x)$
Vektoren fett, Elemente zeilenweise $\mathbf{a}, \mathbf{b}= \begin{pmatrix}x\\y\end{pmatrix} = (x, y)^\top,$ $\mathbf{B}=(x, y, z)^\top$
Matrizen Schreibmaschine $\mathtt{A}, \mathtt{B}= \begin{bmatrix}a & b\\c & d\end{bmatrix}$
Mengen kalligrafisch $\mathcal{A}, B=\{a, b\}, b \in \mathcal{B}$
Zahlenbereiche, Koordinatenräume doppelt gestrichen $\mathbb{N}, \mathbb{Z}, \mathbb{R}^2, \mathbb{R}^3$

Inhalt

  • Multiplexer / Demultiplexer
  • Programmierbare logische Schaltungen
    • PLAs
    • PALs
    • PROMs

Multiplexer / Demultiplexer

  • Ein Multiplexer (auch "Mux") schaltet von vielen Eingängen auf einen Ausgang
  • Ein Demultiplexer (auch "Demux") schaltet von einem Eingang auf viele Ausgänge
mui_demux

Multiplexer

  • Für einen 2-zu-1 Multiplexer (auch "2:1 Mux") gilt:
    • Wenn das Steuersignal $s=1$, dann ist $y = b$, ansonsten $y = a$
    • Diese entspricht einem if-then-else:
      if(s) y = b; else y = a; 
  • Ein 2-zu-1 Multiplexer kann leicht aus mehreren Logikgattern aufgebaut werden:
    mux2_withgates
  • Da er häufig Bestandteil von digitalen Schaltungen ist, bekommt der Multiplexer ein eigenes Symbol
    mui_symbol

Multiplexer

one_of_n_mux
  • 2-zu-1 Multiplexer (2:1 Mux):
    $y = \overline{s}_0 i_0 \lor s_0 i_1$
  • 4-zu-1 Multiplexer (4:1 Mux):
    $y = \overline{s}_1\overline{s}_0 i_0 \lor \overline{s}_1s_0 i_1 \lor s_1\overline{s}_0 i_2 \lor s_1 s_0 i_3$
  • 8-zu-1 Multiplexer (8:1 Mux):
    $\begin{align}y =& \overline{s}_2\overline{s}_1\overline{s}_0 i_0 \lor \overline{s}_2\overline{s}_1s_0 i_1 \lor \overline{s}_2s_1\overline{s}_0 i_2 \lor \overline{s}_2s_1 s_0 i_3 \\ &s_2\overline{s}_1\overline{s}_0 i_4 \lor s_2\overline{s}_1s_0 i_5 \lor s_2 s_1\overline{s}_0 i_6 \lor s_2 s_1 s_0 i_7 \end{align}$
  • $n$-zu-1 Multiplexer ($n$:1 Mux):
    $y = \bigvee\limits_{j=0}^{n-1} m_j i_j$
    wobei $m_j$ den Minterm der $k$ Steuersignale $s_{k-1}, \dots, s_1, s_0$ bezeichnet und gilt $n = 2^{k}$

Realisierung von Multiplexern

  • Ein 4:1 Mux als zweistufige Logik:
one_of_four_mux

Realisierung von Multiplexern

  • Ein 8:1 Mux als zweistufige Logik:
one_of_eight_mux

Kaskadierung von Multiplexern

  • Große Multiplexer können durch Kaskadierung von kleinen Multiplexern aufgebaut werden
one_of_eight_mui_cascade
  • Was macht mehr Sinn? Kaskadierung oder zweistufige Logik?

Kaskadierung von Multiplexern

  • Was macht mehr Sinn? Kaskadierung oder zweistufige Logik?
  • Antwort: Es kommt darauf an, was optimiert werden soll.
    • Gatterverzögerung: Bei zweistufige Logik entstehen kleinere Gatterlaufzeiten
    • Chipfläche: Eine Kaskadierung benötigt insgesamt weniger Eingänge und kann daher auf kleinerer Chipfläche realisiert werden.
  • Beispielrechnung:
    • Eine zweistufige Logik benötigt UND-Gatter mit $(log_2 n) + 1$ Eingängen.
    • Eine kaskadierte Lösung hat mehr UND-Gatter, diese haben jedoch weniger Eingänge.
    • Beispiel 8:1 Mux: $8 \cdot 4 = 32$ Eingänge im Vergleich zu $2 \cdot 2 \cdot 7 = 28$ Eingänge
    • Wenn der Flächenbedarf proportional zu den Eingängen angenommen wird, benötigt die kaskadierte Realisierung insgesamt weniger Fläche

Multiplexer als universelle Logik

  • $n$-zu-1 Multiplexer können jede Funktion von $k=log_2 n$ Variablen implementieren
    • Die Variablen $x_{k-1},\dots,x_0$ werden als Steuervariablen $s_{k-1},\dots,s_0$ verwendet
    • Dateneingänge $i_{n-1},\dots,i_0$ werden auf $0$ bzw. $1$ gelegt
  • Beispiel:
    mux_gen_logic8
    $\begin{align}y =& m_0 \lor m_2 \lor m_6 \lor m_7 \\ & \overline{x}_2\overline{x}_1\overline{x}_0 \lor \overline{x}_2x_1\overline{x}_0 \lor x_2x_1\overline{x}_0 \lor x_2x_1x_0 \end{align}$

    Wahrheitstafel:

    x2x1x0y
    0:0001
    1:0010
    2:0101
    3:0110
    4:1000
    5:1010
    6:1101
    7:1111

Multiplexer als universelle Logik

  • Alternative: $n$-zu-1 Multiplexer können jede Funktion von $k=(log_2 n) + 1$ Variablen implementieren
    • Die Variablen $x_{k-1},\dots,x_1$ werden als Steuervariablen $s_{k-2},\dots,s_0$ verwendet
    • Dateneingänge werden auf $x_0$, $\overline{x}_0$, $0$ oder $1$ gelegt
  • Beispiel:
    mux_gen_logic4

    Wahrheitstafel:

    x2x1x0y
    0:00010
    1:0010
    2:01010
    3:0110
    4:10000
    5:1010
    6:11011
    7:1111

Praxisbeispiel: Multiplexer als universelle Logik

cd74HCT253
  • Im Folgenden soll mit Hilfe des CMOS IC CD74HCT253 eine reale Multiplexer-Schaltung aufbaut werden
  • Der 74HCT253 enthält zwei 4-zu-1 Multiplexer
  • cd74HCT253_func

Praxisbeispiel: Multiplexer als universelle Logik

  • Einer der zwei 4-zu-1 Multiplexer wird derart beschaltet, dass ein XOR realisiert wird
    $s_1$$s_0$$y_1$
    000
    011
    101
    110
  • mux_circuit

Praxisbeispiel: Multiplexer als universelle Logik

  • Dieses Photo zeigt den Aufbau der Schaltung aus der vorangegangenen Folie auf eine Steckplatine
mux_breadboard_assemble

Demultiplexer

one_of_n_demux
  • Das inverse Element zum Multiplexer ist der Demultiplexer
  • 1 Eingang, $k$ Steuereingänge, $n=2^k$ Ausgänge $r_{n-1},\dots,r_0$
  • Der Eingang $g$ wird oft "Enable" genannt
  • Abhängig von den Steuereingängen wird der Eingang auf einen der Ausgänge geschaltet, die anderen Ausgänge sind 0.
mux_demux_demuxpart

Demultiplexer

one_of_n_demux
  • 1-zu-2 Demultiplexer (1:2 Demux):
    $\begin{align} r_0 &= g \,\overline{s} \\ r_1 & = g \,s \end{align}$
  • 1-zu-4 Demultiplexer (1:4 Demux):
    $\begin{align} r_0 &= g \,\overline{s}_1 \overline{s}_0 \\ r_1 &= g \,\overline{s}_1 s_0 \\ r_2 &= g \,s_1 \overline{s}_0 \\ r_3 &= g \, s_1 s_0 \end{align} $
  • 1-zu-$n$ Demultiplexer (1:$n$ Demux):
    $r_j = g \, m_j \quad \forall \, r_{n-1}, \dots,r_1,r_0$
    wobei $m_j$ den Minterm der $k$ Steuersignale $s_{k-1}, \dots, s_1, s_0$ bezeichnet und gilt $n = 2^{k}$

Realiserung von Demultiplexern

  • Ein 1:2 Demux mit Gattern:
    demux2_withgates
  • Ein 1:4 Demux mit Gattern:
    one_to_four_demux

Kaskadierung von Demultiplexern

  • Große Demultiplexer können durch Kaskadierung von kleinen Demultiplexern aufgebaut werden
one_to_eight_demux_cascade

Demultiplexer als universelle Logik

  • 1-zu-$n$ Demultiplexer können jede Funktion von $k=log_2 n$ Variablen implementieren
    • Die Variablen $x_{k-1},\dots,x_0$ werden als Steuervariablen $s_{k-1},\dots,s_0$ verwendet
    • Eingang wird auf 1 gelegt
    • An den Ausgängen liegen die Minterme der Steuervariablen an und können durch ein ODER-Gatter verknüpft werden, um die Funktion zu implementieren
  • Beispiel: $y = m_0 \lor m_2 \lor m_6 \lor m_7$
    demux_gen_logic8

    Wahrheitstafel:

    x2x1x0y
    0:0001
    1:0010
    2:0101
    3:0110
    4:1000
    5:1010
    6:1101
    7:1111

Programmierbare logische Schaltungen

  • Eine programmierbare logische Schaltung (engl.: Programmable Logic Device, PLD) ist ein vorgefertigter IC mit vielen AND- und OR-Gattern
  • Die Eingangsvariablen werden auf ein AND-Array geführt das Monome erzeugt
  • Die Monome werden durch ein OR-Array zu den Ausgangsfunktionen verknüpft
    pla_overview
  • Vorteil: PLD können in großer Stückzahl gefertigt werden und erst später durch das Auftrennen von Verbindungen ihre Funktionalität bekommen ("programmiert werden")
  • PLA (Programmable Logic Array): AND-Array veränderbar, OR-Array veränderbar
  • PAL (Programmable Array Logic): AND-Array veränderbar, OR-Array fest
  • PROM (Programmable Read-Only Memory): AND-Array fest, OR-Array veränderbar

PLA (Programmable Logic Array)

pla_detailed
  • Nicht benötigte Verbindungen werden aufgetrennt.
  • Realisierte Monome können für verschiedene Ausgänge $y_i$ wieder verwendet werden

PLA (Programmable Logic Array)

pla_detailed_fused
  • Beispiel:
    $\begin{align}y_0 &= x_1\overline{x}_0 \lor x_2\\ y_1 &= \overline{x}_2 x_1 \lor x_2 x_0 \\ y_2 &= x_1 \overline{x}_0\lor x_2 x_0 \\ y_3 &= x_2 \lor \overline{x}_2 x_1\overline{x}_0 \end{align}$

PAL (Programmable Array Logic)

pal_detailed
  • Beim PAL ist nur das AND-Array veränderbar
  • Die ODER-Verknüpfungen sind fest verdrahtet

PROM (Programmable Read-Only Memory)

rom_detailed
  • Die UND-Verknüpfungen sind fest verdrahtet, alle Minterme realisiert

PROM (Programmable Read-Only Memory)

rom_overview
  • Beim Anlegen einer Adresse an die Eingänge liefert das PROM den Speicherinhalt für diese Adresse an den Ausgängen
  • Im Unterschied zum PLA hat das PROM ein fest verdrahtetes AND-Array, das alle möglichen Kombinationen der Eingänge (alle Minterme) realisiert
  • Bei $k$ Adressleitungen entstehen somit $2^k$ Minterme (auch "Wortleitungen" genannt)
  • Bei $m$ Ausgängen liegen im ROM-Speicher also $2^k$ Worte zu $m$ Bits

Gibt es Fragen?

questions

Anregungen oder Verbesserungsvorschläge können auch gerne per E-mail an mich gesendet werden: Kontakt


Weitere Vorlesungsfolien