-
1
Digitaltechnik
© Andreas König Folie 8-1
Funktionsblöcke
DigitaltechnikAndreas König
Professur Technische InformatikFakultät Informatik
Technische Universität Chemnitz
Wintersemester 2001/2002
Digitaltechnik
© Andreas König Folie 8-2
Funktionsblöcke
Rekapitulierung zu Kapitel 7
Einführung in sequentielle Schaltwerke und AutomatenVorstellung
einer systematischen Entwurfsweise von FSMErweiterung der
bisherigen Optimierungskonzepte auf FSMs:
ZustandsminimierungZustandskodierungPartionierung von
FSMsZusammenschaltung von FSMs
Anwendung der verschiedenen Umsetzungsmöglichkeiten und
Entwurfstile zur FSM-ImplementierungSchwerpunkt lag auf dem Entwurf
von (festverdrahteten) Steuerwerken für kontroll-dominierte
AnwendungenFür daten-dominierte Anwendungen weitere
Funktionsblöcke, z.B. arithmetische Funktionsblöcke zur Digitalen
Signalverarbeitung
-
2
Digitaltechnik
© Andreas König Folie 8-3
Funktionsblöcke
Vorlesungsgliederung:1. Einführung2. Kodierung und Arithmetik3.
Grundlagen der Booleschen Algebra4. Entwurf zweistufiger
kombinatorischer Logik5. Zieltechnologien und
Technologieanpassung6. Zeitliches Verhalten kombinatorischer
Schaltnetze7. Entwurf sequentieller Schaltwerke 8. Funktionsblöcke
digitaler Rechner und Systeme9. Entwurf von Systemen der
Digitaltechnik10. Ausblick
Digitaltechnik
© Andreas König Folie 8-4
Funktionsblöcke
Kapitelgliederung:
8. Funktionsblöcke digitaler Rechner und Systeme8.1
Einführung8.2 Verbindungsstrukturen 8.3 Digitale Speicher8.4
Barrelshifter8.5 Arithmetische Funktionsblöcke8.6 Datenpfad und
Steuerwerk8.7 Prinzip der Mikroprogrammierung8.8 Vom Addierer zum
Mikroprozessor8.9 Prinzip des von-Neumann-Rechners
-
3
Digitaltechnik
© Andreas König Folie 8-5
Funktionsblöcke
In den bisherigen Kapiteln wurde der systematische Entwurf von
Schalt-netzen betrachtetDies wurde auf die Betrachtung des
systematischen Entwurfs sequentieller Schaltwerke erweitertIm
Vordergrund standen dabei FSMs, die primär Steuerungsaufgaben
dientenZusätzlich zu kontrolldominierten Strukturen oder Blöcken
(Steuerwerke) werden für viele daten-dominierte Aufgaben der
Digitaltechnik entsprechende Rechenwerke benötigt Die zum Aufbau
der gewünschten Datenverarbeitungsfunktionalitäterforderlichen
Funktionsblöcke sind Gegenstand dieses KapitelsUmsetzung von
Algorithmen des Kapitels 2 (Arithmethik)Die Regularität der
betrachteten Strukturen wird Präferenzen bezüglich des zu wählenden
Entwurfstils bestimmenFür die Rechenwerke oder Datenpfade wird eine
entsprechende Steuerung benötigt (Steuerwerk), die ggf. veränderbar
oder programmierbar sein sollteVorbereitung programmgesteuerter
Rechner (s. Rechnerorganisation)
Einführung
Digitaltechnik
© Andreas König Folie 8-6
FunktionsblöckeEinführung
Verhalten
Geometrie
StrukturSystem
Algorithmen
Register-Transfer
Logik
Transistoren
(Standard)Zellen
Floorplan/Makrozellen
Cluster/Chip
IC-Partitionierung/Chip/Board
Gatter, FlipFlopsFunktionsblöcke(ALUs, MUX)
SubsystemeSpeicher, CPU
DGLsBoolsche GleichungenRT-BeschreibungAlgorithmen
Systemspezifikation
Maskenebene
-
4
Digitaltechnik
© Andreas König Folie 8-7
Funktionsblöcke
Für den Aufbau datenverarbeitender Einheiten werden die
folgenden prinzipiellen Funktionsblöcke benötigt:
Verbindungsstrukturen (Adress- und Datenbusse) realisierbar
durch Multiplexer und/oder SchalterstrukturenSpeicherstrukturen:
Datenspeicherung und –pufferung , realisierbar u.a. aus
FFsArithmetische und logische Strukturen, realisierbar als reguläre
(komplexe) Schaltnetze bzw. Schaltwerke
Der Aufbau derartiger Funktionsblöcke kann im Hinblick auf
Verarbeitungs-geschwindigkeit und Realisierungsaufwand (Gatter,
Fläche, Verdrahtung, ...) in verschiedener Form erfolgenIm
folgenden werden prinzipielle Realisierungsmöglichkeiten anhand von
Beispielen aus der 74-Familie dargestelltKomplexe programmierbare
Logikbausteine liefern die Basis für die Implementierung komplexer
Funktionsblöcke und ganzer Systeme (ASIC, CPU)
Einführung
Digitaltechnik
© Andreas König Folie 8-8
FunktionsblöckeVerbindungsstrukturen
Eine typische Aufgabe ist die Auswahl aus mehreren Quellen zur
Beschaltung einer Verbindungsleitung (s. Kapitel 5)
s0 s1
x3
x4
x1
x2
00
01
10
11
Mittels eines Multiplexers können z.B. verschiedene Operanden an
eine arithmetische Einheit herangeführt werdenWeitere Beispiele:
74yyy150 16:1 Mux.; 74yyy151 8:1 Mux
4:1 Mux.: 74yyy153
f1
4013012011011 xssxssxssxssf ∨∨∨=
Operand 1
Operand 2Resultat
-
5
Digitaltechnik
© Andreas König Folie 8-9
Funktionsblöcke
00
01
10
11
10
11
Verbindungsstrukturen
Größere Bitbreiten der Operanden werden durch Parallelschaltung
einer entsprechenden Anzahl von 1-bit Multiplexern erreicht:
s0 s1
c1
d1
a1
b1
00
01
10
11
8 4:1 Mux. 74yyy153
f1
1011011011011 dsscssbssassf ∨∨∨=
Operand 1
Operand 2Resultat
8
8
00 f8a2
a8
8018018018018 dsscssbssassf ∨∨∨=
Bus
Digitaltechnik
© Andreas König Folie 8-10
FunktionsblöckeVerbindungsstrukturen
Kompaktere Darstellung mit mehreren möglichen Senken:
s0 s1
c
d
a
b
00
01
10
11
Senke 1
Senke 2
Senke n
Bus
Aus einem Leitungsbündel können durch feste Beschaltung alle
oder eine selektierte Zahl von Leitungen an eine oder mehrere
Senken geführt werdenEine Übernahme der Businformation kann
selektiv durch die Aktivierung einer Auswahlleitung (Enable)
erfolgenDabei kann gezielt eine oder mehrere (Broadcast) Senken
gewählt werden
f 8
8
8
8
8
8
4
8
En 1
En 2
En n
Quellen
-
6
Digitaltechnik
© Andreas König Folie 8-11
FunktionsblöckeVerbindungsstrukturen
Kompaktere Darstellung mit mehreren möglichen Senken:
s0 s1
c
d
a
b
00
01
10
11
Senke 1
Senke 2
Senke 4
Bus
Durch Einsatz eines Decoders wird anhand einer Auswahladresse
genau eine der möglichen Senken zur Informationsübernahme
selektiert Die Leitungen s0 bis s3 könnten also von einem
Steuerwerk kommend das Verhalten eines Rechenwerks durch selektive
Beschaltung möglicher Pfade kontrollieren
f 8
8
8
8
8
8
8
8
En 1
En 2
En 4
Quellen
Senke 38 En 3
00
01
10
11
s2 s3
Digitaltechnik
© Andreas König Folie 8-12
FunktionsblöckeVerbindungsstrukturen
Einsatz eines Demultiplexers in Verbindung mit einem
Multiplexer:
s0 s1
c
d
a
b
00
01
10
11
Senke 1
Senke 2
Senke 4
Bus
Der Demultiplexer schaltet die Businformation selektiv auf die
durch s2 und s3 gewählte Senke; Alle anderen Ausgangsbündel sind
nicht aktiv
y 8
8
8
8
8
8
8
8
Quellen
Senke 38
00
01
10
11
s2 s3
1231
1 yssf =
8231
8 yssf =
1238
1 yssf =
8238
8 yssf =
-
7
Digitaltechnik
© Andreas König Folie 8-13
FunktionsblöckeVerbindungsstrukturen
Anwendungsbeispiel eines Mux/Demux zur
Parallel/Seriell-Umsetzung:
s0 s1
00
01
10
11
0101
Umsetzung des Inhalts von 4 FFs (4-bit) in eine serielle
BitfolgeRückwandlung über Demultiplexer und Abspeicherung in 4 FFs
auf der Empfängerseite Alternative Realisierung durch parallel
ladbare/auslesbare SR
y
00
01
10
11
s0 s1
0101y: 0 1 0 1
S0: 0 1 0 1S1: 0 0 1 1
t1 t2 t3 t4
Digitaltechnik
© Andreas König Folie 8-14
Funktionsblöcke
Beim Einsatz von Multiplexern wird immer eine ´´starke´´ 1 oder
0 auf angeschlossene Busleitungen getriebenBei nichtaktivem
Enable-Eingang beispielsweise alle Ausgänge 0Dies lässt nur einen
Multiplexer bzw. nur eine direkt angeschaltete Quelle zu
(Buskonflikt !)Eine Alternative: Verwendung von Tristate-Treibern
mit konfliktfreier Enable-Steuerung für multiple und bidirektionale
Busbeschaltung
Verbindungsstrukturen
En 1 En 2 En 3
En 4En n
-
8
Digitaltechnik
© Andreas König Folie 8-15
Funktionsblöcke
Weitere Alternative: Sogenannte Wired-OR-Zusammenschaltung
Verbindungsstrukturen
RVdd
Open-Collector bzw. Open-Drain-Treiber:
x1x2x1 x3 xn
Wired-OR(AND)-Schaltung:
x1
Gemeinsame LastGemeinsameBusleitung
Digitaltechnik
© Andreas König Folie 8-16
Funktionsblöcke
Beispiel: Baustein 7400 enthält vierfach NAND-Gatter mit zwei
Eingängen (positive Logik)Baustein 7401 enthält ebenfalls vierfach
NAND-Gatter mit zwei Eingängen (positive Logik) aber mit
Open-Collector-AusgängenKennzeichung im Schaltzeichen:
Verbindungsstrukturen
Wirkung: Wired-OR Verknüpfung der Werte 1100 und 1010
Ergebnis: 1000Einfache Zusammenschaltung, jedoch ungünstigstes
Schaltverhalten (Hohe Knotenkapazität bei gegebenem R)
x1 x2
x1 x21 0
0
10 1
0
-
9
Digitaltechnik
© Andreas König Folie 8-17
Funktionsblöcke
CMOS-Schalter lassen sich zur Erzeugung von Tristate-Ausgängen
ebenso wie zur Implementierung von Multiplexern verwendenBeispiel
eines 2:1 Mux und eines 4:1 Mux:
Verbindungsstrukturen
f
x2x3
x1
x1 x1
3121 xxxxf ∧∨∧=
x1
y
a b c d00
01
10
11
s1 s0
s00s01
s10
s11
s00s00 s01s01 s10s10 s11s11
Digitaltechnik
© Andreas König Folie 8-18
Funktionsblöcke
Andere Darstellung durch Zusammenfassung des CMOS-Schalter und
der erforderlichen Invertierung des Ansteuersignals in einen
Knoten
Verbindungsstrukturen
00
01
10
11
s1 s0
s00s01
s10
s11
y
a b c d
s00 s01 s10 s11
-
10
Digitaltechnik
© Andreas König Folie 8-19
Funktionsblöcke
Realisierung komplexer Kommunikation (Routing) durch
Kreuzschienen-verteiler (Cross-Bar oder Switch-Matrix)
Verbindungsstrukturen
SwitchMatrix
Prinzipiell 6 Durchschalte-möglichkeiten pro Knoten
Digitaltechnik
© Andreas König Folie 8-20
Funktionsblöcke
Bislang wurde die Speicherung digitaler Information für die
Zustände von Schaltwerken benötigtWeiterhin: Speicherung von Daten,
Ergebnissen und ProgrammenAusnutzung unterschiedlichster
physikalischer Effekte zur Speicherung (Geschwindigkeit,
Speicherkapazität, Größe, Kosten/bit)
Digitale Speicher
Gruppen digitaler Speicher
• Schnelle, kleine Speicher (Zwischenergebnisse)
• Aufgebaut aus FFs• Statisch• Register(bänke)
• Größere Speicher mittlerer Geschwindig-keit
• Kompakte dynamische Ladungsspeicherung
• Speichermodule
• Sehr große, (relativ) langsame Massen-speicher
(Archivierung)
• Magnetische Effekte• Platte, Floppy, Band,
Kassette (CD-RW)
-
11
Digitaltechnik
© Andreas König Folie 8-21
Funktionsblöcke
Weitere Gliederungsmerkmale digitaler Speicher:Organisation des
Speichers: bit-oder wortorganisiert; Wortbreite; ggf.
Zusammenfassung einer Gruppe von Worten zu einem
BlockZugriffsmethode: Beliebiger, wahlfreier Zugriff auf jedes bit
oder Wort (Random-Access-Memory, RAM); Sequentieller Zugriff
(Sequential Access Memory, SAM)Zugriffsmöglichkeit: Lesend und/oder
schreibend; Schreib/Lesespeicher (Register, Arbeitspeicher); Nur
Lesespeicher (Read-Only-Memory, ROM); Einmaliges
Schreiben/vielfaches Lesen (Write Once, Read Many WORM); Nur
Schreiben (Write-Only-Memory, WOM)
Realisierung durch optische oder
HalbleiterspeicherDatenspeicherung: Flüchtige oder nichtflüchtige
Speicher
Nichtflüchtige Speicher behalten ihren Wert ohne
EnergiezufuhrFlüchtige Rückkopplungsspeicher (Static RAM, SRAM)
behalten ihren Wert bei EnergiezufuhrFlüchtige Ladungsspeicher
(Dynamic RAM, DRAM) bedürfen zyklischer Auffrischung um Leckströme
zu kompensieren, sonst geht die Information verloren !
Orts- und inhaltsadressierter Speicher (Assoziativspeicher)
Digitale Speicher
Digitaltechnik
© Andreas König Folie 8-22
Funktionsblöcke
Halbleiterspeicher bestimmt durch Schaltungstechnik und
Technologie:
Digitale Speicher
Halbleiterspeicher
Matrixspeicher Umlaufspeicher (SR)
RAM ROM FF-ZellenLadungs-transport-speicher
• Bipolar FF• MOS-FF (stat./dyn.)• NV-RAM
• Maskenprogrammiert• PROM• EPROM (UV)• EEPROM• Flash-EEPROM
• Bipolar FF• MOS-FF (stat./dyn.)
• CTD (dyn. SR)• CCD/BBD
-
12
Digitaltechnik
© Andreas König Folie 8-23
Funktionsblöcke
Parallelregister durch Zusammenschaltung von FF (D-FF)
Digitale Speicher
QDQ
C
QDQ
QDQ
D1 D2 Dn
Q2Q1 Qn
N-bit-Register
Q1 Q2 Qn
D1 D2 Dn
COC
Erweiterung durch Tristate-Ausgänge und selektive Übernahme8-bit
Register: 74374, 574 (D-FF) 74573; 4-Bit Register: 74173
(D-Latches)
Z--1
Qi-L0
0010
1110
QiDiCOC
AusgangEingänge
Digitaltechnik
© Andreas König Folie 8-24
Funktionsblöcke
Zusammenschalten mehrerer Register zu Registersätzen oder
–bänken:
Digitale Speicher
Daten
Adresse
Schreib/Lesezugriff
R/W
Optionale Zugriffs-möglichkeit auf Halb-worte
Wortbreite
Registerzahl
-
13
Digitaltechnik
© Andreas König Folie 8-25
Funktionsblöcke
Multiport Registerbänke bzw. Multiport-Memory (Dualport):
Digitale Speicher
Daten 1
Adresse 1
R/W 1
Daten 2
Adresse 2
R/W 2
Gleichzeitiges Lesen auf verschiedene Busse; Abitrierung für
Schreiben
Digitaltechnik
© Andreas König Folie 8-26
Funktionsblöcke
Pufferspeicher (First-In-First-Out Speicher FIFO)
Digitale Speicher
FIFO
SchreibenVoll
LesenLeer
Eingangsdaten Gepufferte Daten
Pufferspeicher zum Ausgleich bei unterschiedlich schnellen
BaugruppenVon der linken Seite wird in den Speicher eingeschrieben,
von rechts ausgelesenDie beiden Signale Voll und Leer erlauben
schreibenden bzw. lesenden Baugruppen die Prüfung freien bzw.
gültigen PufferinhaltsZ.B. 74ALS236: 64 Worte x 4 bit asynchroner
FIFO-Speicher
-
14
Digitaltechnik
© Andreas König Folie 8-27
Funktionsblöcke
Prinzipielle FIFO-Funktion:
Digitale Speicher
FIFO leer
1
Schreiben1. Datenwort
12
Schreiben2. Datenwort
2 13
Schreiben3. Datenwort
3 2 14
Schreiben4. Datenwort
4 3 2
Kein Zugriff
1 4 3 2 1
Lesen1. Datenwort
Realisierung als SR oder Registersatz und spezielles
SchaltwerkArbeitsspeicherbereich mit speziellen Zugriffsregistern
(Queuepointern)
Digitaltechnik
© Andreas König Folie 8-28
Funktionsblöcke
Stapel- oder Kellerspeicher, Stack (Last-In-First-Out Speicher
LIFO)
Digitale Speicher
LIFO
PUSHVoll
POPLeer
Eingangsdaten
Speicher zur Ablage von Zwischenergebnissen, die in umgekehrter
Reihenfolge ihre Ablage wieder geholt werdenAnalogie Tellerstapel:
Schreiben entspricht auflegen (Stapel geht nach unten PUSH) Lesen
entspricht abnehmen (Stapel geht nach oben POP) Die beiden Signale
Voll und Leer erlauben der schreibenden bzw. lesenden Baugruppe die
Prüfung freien Speichers bzw. gültigen Inhalts
LIFO-Tiefe
LIFO-W
ortbreite
-
15
Digitaltechnik
© Andreas König Folie 8-29
Funktionsblöcke
Prinzipielle LIFO-Funktion:
Digitale Speicher
1. Datenwort
LIFO leer
Schreiben
1. Datenwort
2. DatenwortSchreiben
2. Datenwort1. Datenwort
1. Datenwort
2. DatenwortLesenKein Zugriff
Realisierung als bidirektionales SRRegistersatz und spezielles
SchaltwerkArbeitsspeicherbereich mit speziellem Zugriffsregister
(Stackpointer)
Digitaltechnik
© Andreas König Folie 8-30
Funktionsblöcke
Allgemeine Speicher für Digitale Systeme (Arbeitsspeicher) sind
typisch matrixförmig organisierte Anordungen von statischen oder
dynamischen Speicherzellen in führender Halbleitertechnologie:
Digitale Speicher
Speicherwort 0
Speicherwort 1
Speicherwort 2
Speicherwort 2k-1
k-bitk-bit
Daten Schreib/Lesezugriff
R/W
Wortbreite
Speicherwortzahl
Adresse
CS
Auswahl eines Speicherchips mit Tristate-Ausgängen
-
16
Digitaltechnik
© Andreas König Folie 8-31
Funktionsblöcke
Schaltbild einer typischen statischen CMOS-RAM-Speicherzelle
Digitale Speicher
Zeilenauswahl
Linke Bitleitung Rechte BitleitungVdd
Offensichtlich ungepufferte und damit kompakte
6–Transistor-ZelleOptimiertes Layout und dadurch hohe
Packungsdichte und SpeicherkapazitätOrganisation mit Adresslogik,
Schreib- und Lesespeicher zu größeren Speichereinheiten
Digitaltechnik
© Andreas König Folie 8-32
Funktionsblöcke
Auslesen eines RAM gegebener Wortbreite auf einen kleineren Bus
durch geteilte Adressierung:
Digitale Speicher
k-2-bitk-2-bit
8-bit Daten
Wortbreite 32 bit
Speicherwortzahl
Adresse (k-bit)
4:1 8-fach Demultiplexer2-bit
-
17
Digitaltechnik
© Andreas König Folie 8-33
Funktionsblöcke
R/W
Speicherwort 0
Speicherwort 1
Speicherwort 2
Speicherwort 2k-1
CSR/W
Speicherwort 0
Speicherwort 1
Speicherwort 2
Speicherwort 2k-1
CS
Vergrößerung der Speicherkapazität durch Zusammenschalten
mehrerer Chips und Auswahl durch geteilte Adresse über
CS-Signale
Digitale Speicher
k-bitk-bit
Daten Schreib/Lesezugriff
Adresse k + ld(n) bit
R/W
Speicherwort 0
Speicherwort 1
Speicherwort 2
Speicherwort 2k-1
CS
12
n
ld(n)-bitld(n)-bit
Digitaltechnik
© Andreas König Folie 8-34
Funktionsblöcke
Vergrößerung der Wortbreite durch Zusammenschalten mehrerer
Chips:
Digitale Speicher
k-bitk-bit
Daten (n-mal Speicherwortbreite,n=4, bei 8-bit chips:
32-bit)
R/W
Speicherwort 0
Speicherwort 1
Speicherwort 2
Speicherwort 2k-1
Speicherwortzahl
Adresse
CS
Speicherwort 0
Speicherwort 1
Speicherwort 2
Speicherwort 2k-1
Speicherwort 0
Speicherwort 1
Speicherwort 2
Speicherwort 2k-1
Wortbreite
1 2 n
-
18
Digitaltechnik
© Andreas König Folie 8-35
Funktionsblöcke
Prinzipielles Schaltbild einer typischen dynamischen
CMOS-RAM-Speicherzelle:
Digitale Speicher
Zeilenauswahl
Spaltenauswahlleitung
Hochkompakte 1–Transistor-Zelle in modernster
HerstellungstechnologieOptimiertes Layout unter Nutzung von
3D-Strukturen (Trench-Technologie) und damit sehr hohe
Packungsdichte und SpeicherkapazitätOrganisation mit Adresslogik,
Schreib- und Lesespeicher zu größeren Speichereinheiten
R/W
DAusleseverstärker(Sense-Amplifier)
Speicherkapazität(flüchtig durch Leckströme)
Digitaltechnik
© Andreas König Folie 8-36
Funktionsblöcke
Typisch wird an einen SRAM-Baustein zeitlich gleichzeitig die
vollständige Wortadresse angelegtEin DRAM-Baustein wird dagegen
zeitlich gestaffelt mit Zeilen- und Spaltenadresse beschaltet
Digitale Speicher
SRAMk-bitk-bit
Adresse
DRAMk/2-bitk/2-bit
Adresse
CASRAS
Wachstum der internen DRAM-Kapazität immer um 22
SRAM typisch wortorganisiert, DRAM bit-organisiertDRAM benötigt
Refresh (ca. alle 8-16 ms), überlappt zu normalem Betrieb, RAS-only
oder Hidden-Refresh (Refresh-DRAM-Controller,
Self-Refreshing)Mögliche Einschränkungen für Echtzeitzugriffe und
–systeme !Sog. Page-Mode erlaubt schnelleren Zugriff auf (lokale)
DRAM-Inhalte
-
19
Digitaltechnik
© Andreas König Folie 8-37
Funktionsblöcke
Prinzipielles Schaltbild einer CMOS-ROM-Speicherzelle:
Digitale Speicher
Zeilenauswahl i
Spaltenauswahlleitung
Sehr kompakte 1–Transistor-Zelle in moderner
HerstellungstechnologieOptimiertes Layout und damit sehr hohe
Packungsdichte und Speicherkapazität; Programmierung durch Maske
für GatebereichOrganisation mit Adresslogik, Schreib- und
Lesespeicher zu größeren Speichereinheiten
Ausleseverstärker
Zeilenauswahl i+1
maskenprogrammiert durch Oxiddickenvariation
Dünnes Gateoxid: 0
Dickes Oxid: 1
Digitaltechnik
© Andreas König Folie 8-38
Funktionsblöcke
Für kleine Stückzahlen und kundenspezifische Lösungen
programmierbare ROMs (WORM)Programmable ROM (PROM):
Fuse-Technologie; Metallfilm- oder Polysiliziumverbindung wird im
Programmiervorgang gezielt zerstörtHohe Programmierspannungen
erforderlich, irreversibel, zeitraubendErasable PROM (EPROM):
Digitale Speicher
P-Substrat
Source Drain-
GateFloating Gate
Control Gate
Über hohe Programmierspannung wird Tunneln von Ladungsträgern
auf zweites schwebendes Gate und damit programmierbares
Durchschalten des Transistors ermöglichtNichtflüchtig über sehr
langen Zeitraum; Löschen durch UV-LichtElectrical EPROM (EEPROM)
und Flash elektrisch (schnell) lösch- und schreibbar; keine
(externen) Programmierspannungen mehr [Seifart 98]
Prinzipdarstellung:N-dotiert
-
20
Digitaltechnik
© Andreas König Folie 8-39
Funktionsblöcke
Zur Realisierung logischer Funktionen werden Schaltnetze
entsprechender Verknüpfungsfunktionen benötigtEine wichtige
Funktion ist das Schieben oder Rotieren von Datenwörtern in
Verbindung mit Verknüpfungsfunktionen, z.B. zur Maskierung von
bits:
Barrelshifter
Schieberegister
&
Maskenregister
10000000 10100110
10000000
Jedes bit ist nur sequentiell über eine positions-abhängige Zahl
von Verschiebungen erreichbarEin Barrelshifter bietet die
Möglichkeit um eine beliebige Stellenzahl in einem Takt zu
verschieben bzw. zu rotierenSchneller durch Parallelitätund
Flächenaufwand
Digitaltechnik
© Andreas König Folie 8-40
Funktionsblöcke
Funktionstabelle für 8-bit-Barrelshifter:
Barrelshifter
D1D2D3D4D5D6D7D0111D2D3D4D5D6D7D0D1011D3D4D5D6D7D0D1D2101D4D5D6D7D0D1D2D3001D5D6D7D0D1D2D3D4110D6D7D0D1D2D3D4D5010D7D0D1D2D3D4D5D6100D0D1D2D3D4D5D6D7000O0O1O2O3O4O5O6O7S0S1S2
Barrelshifter3S2 S1 S0
D
O
-
21
Digitaltechnik
© Andreas König Folie 8-41
Funktionsblöcke
Aufstellung der Booleschen Funktionen für die 8 Ausgänge:
Barrelshifter
1012701200120
7012501260126
0012601270127
DSSSDSSSDSSSO
DSSSDSSSDSSSO
DSSSDSSSDSSSO
∨∨∨=
∨∨∨=
∨∨∨=
K
M
K
K
Keine Zusammenfassungen zur Logikminimierung möglich; jede
Funktion benötigt 8 4-fach UND und ein 8-fach ODER-GatterGünstigere
Option: Verwendung von 8 8:1 MuxROM und PLA Lösungen bringen auch
keine wesentlichen VorteileWeitere interessante Lösung:
Schaltmatrix mit Decoder
Digitaltechnik
© Andreas König Folie 8-42
FunktionsblöckeDer Barrelshifter
O7 O6 O5 O4 O3 O2 O1 O0
D7
D6
D5
D4
D3
D2
D1
D0
S000
S001 S001
-
22
Digitaltechnik
© Andreas König Folie 8-43
FunktionsblöckeDer Barrelshifter
O7 O6 O5 O4 O3 O2 O1 O0
D7
D6
D5
D4
D3
D2
D1
D0
S000
S001 S001
S110
S010
S011
S100
S101
S111
Digitaltechnik
© Andreas König Folie 8-44
Funktionsblöcke
Barrelshifter Implementierung auf Basis einer Schaltmatrix
(Crosspoint-Switch) ist eine sehr effiziente Lösung
Barrelshifter
Für den Decoder werden 8 3-fach UND und 3 Inverter benötigtDie
Schaltmatrix lässt sich bei NMOS-Schaltern mit 64 Transistoren
implementierenReguläre Struktur, sehr günstig für integrierte
Implementierung
3S2 S1 S0
Schaltmatrixmit 8x8 Schaltern
(Transistoren)
S000
S111
-
23
Digitaltechnik
© Andreas König Folie 8-45
Funktionsblöcke
Arithmetische Einheiten sind wesentlich für die
DatenverarbeitungErstes Beispiel: Addition und Subtraktion
(vorzeichenloser) Zahlen:
X 190 10111110Y 141 10001101
C + 101111000X+Y 331 01001011
Arithmetische Funktionsblöcke
iiini
iiiniiniout
BACSBACACBC
⊕⊕=++=
Schaltnetze für die Implementierung Arithmetischer
EinheitenAddierergrundbausteine:
Voll-addierer
Cout
Cin
Si
Ai Bi
Halb-addierer
Cout Si
Ai Bi
iii
iiout
BASBAC⊕=
=
Digitaltechnik
© Andreas König Folie 8-46
Funktionsblöcke
Realisierung eines Volladdierers (VA) aus zwei Halbaddierern
(HA):
Serieller Addierer:
Arithmetische Funktionsblöcke
Halb-addierer
Ai Bi
Halb-addierer
Cin
≥1
Cout Si
Vol
l-ad
dier
er
CoutCin
Si
AiBi
QDQ
(n+1)-bit Register(n)-bit Register
(n)-bit Register
Par./Ser. LadenFSM ?
-
24
Digitaltechnik
© Andreas König Folie 8-47
Funktionsblöcke
Der serielle Addierer benötigt für n-bit Operanden n Takte und
erzeugt ein (n+1)-bit breites ErgebnisWünschenswert: Durchführung
einer Addition in einem Takt
Arithmetische Funktionsblöcke
Voll-addierer
Cout
Cin
Sn
An Bn
Voll-addierer
Cout
Cin
Sn-1
An-1Bn-1
Voll-addierer
Cout
Cin
Sn-2
An-2Bn-2
Voll-addierer
Cout
Cin
Sn-3
An-3Bn-3
Voll-addierer
Cout
Cin
S1
A1 B1
n-bit Ripple-Carry Addierer
n
n
CinCout
nA B
S
Digitaltechnik
© Andreas König Folie 8-48
Funktionsblöcke
Subtraktion mit gegebenen Addierwerken lässt sich über
K2-DarstellungdurchführenErforderliche Erweiterung: Invertierung
des zu subtrahierenden Operanden und Setzen des Eingangsübertrags
(Regel zur K2-Komplementbildung Kap.2)Beispiel: Serieller
Subtrahierer (D=A-B)
Arithmetische Funktionsblöcke
Vol
l-ad
dier
er
CoutCin
AiBi
QDQ
(n+1)-bit Register(n)-bit Register
(n)-bit Register
Par./Ser. Laden
Di
S
Im ersten Taktschritt FF setzen (Eingangsübertrag !)
-
25
Digitaltechnik
© Andreas König Folie 8-49
Funktionsblöcke
Beispiel: Paraller Subtrahierer (D=A-B)
Arithmetische Funktionsblöcke
n-bit Ripple-Carry Addierer
n
n
Cin=1Bout
nA K1(B)
D
n-fach Inverter
nB
Digitaltechnik
© Andreas König Folie 8-50
Funktionsblöcke
Schaltbarer Paraller Addierer/Subtrahierer
Arithmetische Funktionsblöcke
n-bit Ripple-Carry Addierer
n
n
Cout /Bout
nA K1(B)/B
S/D
n-fach EXOR
nB
Add/Sub
-
26
Digitaltechnik
© Andreas König Folie 8-51
Funktionsblöcke
Laufzeitbetrachtung im Volladdierer: Kritischer Pfad in
Carry-Funktion
Arithmetische Funktionsblöcke
=1
=1
&
&
CoutCin
AiBi
AiBi
@0
@N
@0@0
@0 @N+1
@N+2
@1
@1
Voll-addierer
Cout
Cin
Sn
An Bn
Voll-addierer
Cout
Cin
Sn-1
An-1Bn-1
Voll-addierer
Cout
Cin
Sn-2
An-2Bn-2
Voll-addierer
Cout
Cin
Sn-3
An-3Bn-3
Voll-addierer
Cout
Cin
S1
A1 B1 @0
@2(n-4)+1@2(n-3)+1@2(n-2)+1@2(n-1)+1
@2n+1
Berechnungsdauer Stufenzahl- und bitbreitenabhängig (Limit
Systemtakt !)
=1AiBi =1Cin
Si
(4-bit Add.7482)
@3
Digitaltechnik
© Andreas König Folie 8-52
Funktionsblöcke
Beschleunigung durch Carry-Look-Ahead-AdderEinführung zweier
neuer Funktion zur Durchreichung (Propagate) bzw. Erzeugung
(Generate) eines Carry-Signals:
Arithmetische Funktionsblöcke
iii BAG = iii BAP ⊕=Die Funktionen für Summe und Übertrag lassen
sich durch die beiden neu eingeführten Funktionen ausdrücken:
iiiiii CPCBAS ⊕=⊕⊕=
iii
iiiii
iiiii
iiiiiii
PCGBACBABACBACBCABAC
∨=⊕∨=∨∨=∨∨=+
)()(
1
2 Gatterlaufzeiten
2 Gatterlaufzeiten(bei kaskadierten Stufen)
-
27
Digitaltechnik
© Andreas König Folie 8-53
Funktionsblöcke
In diesem Ansatz bedeutet ein ausgehendes Carry einer Stufe,
dass entweder ein Übertrag tieferer Stufen propagiert oder ein
Übertrag generiert wurdeDie Übertragslogik der einzelnen Stufen
eines mehrstufigen Addierers lässt sich nun in Abhängigkeit der
Funktionen G und P schreiben als:
Arithmetische Funktionsblöcke
001230123123233
3334
00120121222223
0010111112
0001
CPPPPGPPPGPPGPGCPGC
CPPPGPPGPGCPGCCPPGPGCPGC
CPGC
∨∨∨∨=∨=
∨∨∨=∨=∨∨=∨=
∨=
Preis für Laufzeitvorteil von 3 Gatterstufen: Wachsende
Gatterzahl und Fan-In pro Stufe; Daher Limitierung auf z.B.
4-bit-Addiererstufen
Digitaltechnik
© Andreas König Folie 8-54
Funktionsblöcke
Hierarchische Erzeugung von Propagate- und Generate-Signalen um
größere Addierer mehrstufig aufbauen zu können (Kompromiss Laufzeit
vs. Gatteraufwand):
Arithmetische Funktionsblöcke
0´
3´34
0012301231232334
CPGC
CPPPPGPPPGPPGPGC
∨=
∨∨∨∨=
Addierer
A3:0 B3:0 C04 4
4
S3:0G´3S´3C4
-
28
Digitaltechnik
© Andreas König Folie 8-55
Funktionsblöcke
Annahme eines 16-bit Addierers aus 4-bit Addiererstufen (z.B.
7483) mit Carry-Look-AheadGenerierung des Übertrags der 4 Stufen
zunächst wieder sequentiell:
Arithmetische Funktionsblöcke
12´
15´1516
8´
11´1112
4´
7´78
0´
3´34
CPGC
CPGC
CPGC
CPGC
∨=
∨=
∨=
∨=
Folge: Es werden 3+3*2=9 Gatterlaufzeiten durch die Stufentiefe
benötigtVerbesserungsmöglichkeiten: Hierarchische Erweiterung des
Carry-Look-Ahead-Konzepts
2 Gatterlaufzeiten
2 Gatterlaufzeiten
3 Gatterlaufzeiten
2 Gatterlaufzeiten
Digitaltechnik
© Andreas König Folie 8-56
Funktionsblöcke
Umformung der bisherigen Übertragsfunktionen der 4
Addiererstufen mit P und G Funktionen der zweiten
Hierarchieebene:
Arithmetische Funktionsblöcke
0´
3´
7´
11´
15´3
´7
´11
´15
´7
´11
´15
´11
´15
´15
12´
15´1516
0´
3´
7´
11´3
´7
´11
´7
´11
´118
´11
´1112
0´
3´
7´3
´7
´74
´7
´78
0´
3´34
CPPPPGPPPGPPGPG
CPGC
CPPPGPPGPGCPGC
CPPGPGCPGC
CPGC
∨∨∨∨=
∨=
∨∨∨=∨=
∨∨=∨=
∨=
Entsprechender Baustein z.B. 74182 mit Gruppen-Propagate und
–Generate Signalausgängen sowie Zwischen- und
Ausgangs-CarryWeiterer Ausbau einer Addiererhierarchie möglichBei
gegebener Stufentiefe nur 3+2=5 Gatterlaufzeiten !
-
29
Digitaltechnik
© Andreas König Folie 8-57
Funktionsblöcke
Hierarchischer Addierer nach Carry-Look-Ahead-Konzept:
Arithmetische Funktionsblöcke
Addierer
A3:0 B3:0 C04 4
4
S3:0
C16
Addierer
A3:0 B3:0 C44 4
4
S3:0
Addierer
A3:0 B3:0 C84 4
4
S3:0
Addierer
A3:0 B3:0 C124 4
4
S3:0
G´11P´11
Carry-Look-Ahead-Einheit (74182)
G´7P´7 G´3P´3G´15P´15
C0
16-bit Summe nach 8 statt nach 32 Verzögerungszeiten (4-facher
Takt)
P3-0 G3-0
Digitaltechnik
© Andreas König Folie 8-58
Funktionsblöcke
Hierarchischer Addierer nach Carry-Look-Ahead-Konzept:
Arithmetische Funktionsblöcke
Addierer
A3:0 B3:0 C04 4
4
S3:0
C16
Addierer
A3:0 B3:0 C44 4
4
S3:0
Addierer
A3:0 B3:0 C84 4
4
S3:0
Addierer
A3:0 B3:0 C124 4
4
S3:0
G´11P´11
Carry-Look-Ahead-Einheit (74182)
G´7P´7 G´3P´3G´15P´15
C0
16-bit Summe nach 8 statt nach 32 Verzögerungszeiten (4-facher
Takt)
P3-0 G3-0
@0@3@2@3@2@3@2 @3@2
@3 @5
@8 @4@7@8@4@5@5
@5
-
30
Digitaltechnik
© Andreas König Folie 8-59
Funktionsblöcke
Carry-Select-Addierer: Parallele Berechnung beider möglicher
Resultate für Eingangs-Carry der unteren Stufe und Selektion nach
tatsächlichem Carry
Arithmetische Funktionsblöcke
Addierer
A7:4 B7:4 C04 4
4
Addierer
4 4
4
Addierer
4 4
4
A3:0 B3:0A7:4 B7:41 0
4-fach 2:1 Mux
4 S7:4 S3:0
4-bit-CLA-Addiererstufen: 4 Verzögerungen für Summe + 2 durch
MuxFür 8-bit Addierer: Summenberechnung in 6 Laufzeiten vs. 16
(RCA) und 7 des 2-Ebenen CLA bei 50% mehr Aufwand
C4≥1
C4
&
C8
C8C8
Digitaltechnik
© Andreas König Folie 8-60
Funktionsblöcke
Carry-Save-Addierer (CSA): Eine Reihe nicht lateral
verschalteter Volladdierer, die sowohl Carry- als auch
Summensignale generieren
Arithmetische Funktionsblöcke
CS-Addierer
C3:04 4
4
A3:0 B3:0
Co4:1
Voll-addierer
Co3
Ci3
S3
A3 B3
Voll-addierer
Co2
Ci2
S2
A2 B2
Voll-addierer
Co1
Ci1
S1
A1 B1
Voll-addierer
Co0
Ci0
S0
A0 B0
4
4
S3:0
-
31
Digitaltechnik
© Andreas König Folie 8-61
Funktionsblöcke
Zeitgewinn des CSA: Kein Durchreichen von Überträgen in höhere
StufenAm Ende einer CSA-Kette ist eine konventionelle
Abschlussadditionerforderlich (RCA, CLA, ...)
Arithmetische Funktionsblöcke
Addierer
C3:04 4
4
A3:0 B3:0
Co4:1
4
4 S3:0
Addierer
A4:0 B4:04 4
6
S5:0
0 0
CSA CSA
CSA CSA
CSA
CSA
RCA
CSA-Addiererbaum
2 Gatterlaufzeiten 8 Gatter-laufzeiten
8 Operanden
Digitaltechnik
© Andreas König Folie 8-62
Funktionsblöcke
Weitere Addiererkonzepte mit unterschiedlichem Trade-off Aufwand
zu Geschwindigkeit, z.B. Wallace-Tree etc. Die Überlegungen zur
Subtraktion gelten für alle betrachteten AddiererkonzepteAddierer
sind wesentliche Bestandteile von Arithmetisch-Logischen Einheiten
(Arithmetic-Logic-Unit, ALUs) und Multiplizierern in
Rechenwerken
Arithmetische Funktionsblöcke
-
32
Digitaltechnik
© Andreas König Folie 8-63
Funktionsblöcke
Arithmetisch-Logische Einheiten (Arithmetic-Logic-Unit,
ALUs)ALUs werden aus den bislang betrachteten Komponenten zur
logischen Verknüpfung und Rechnung (Addierer/Subtrahierer)
zusammengeschaltetDer parallele Subtrahierer zeigt bereits das
PrinzipSteuereingänge bestimmen die durchzuführende
OperationOperationen können auf nur einem Operanden oder auf zwei
Eingangsoperanden angewandt werden (Unsymmetrie bei
ALU-Beschaltung)
Arithmetische Funktionsblöcke
Cn+1
n nAn-1:0 Bn-1:0
n
C0
ALU ist essentieller Bestandteil eines Prozessors
kSk-1:0
ALU Funktions-auswahl
Fn-1:0
• Flags (ergebnis-abhängige Ausgänge)
• Generate/Propagate
Digitaltechnik
© Andreas König Folie 8-64
Funktionsblöcke
Zusätzlich zu logischen Funktionen und Addition/Subtraktion ist
der Vergleich von Operanden eine wichtige FunktionEin Komparator
kann als Komponente durch ein spezielles Schaltwerk entworfen
werden (Folienbeispiel 2-bit Komparator)Das Ergebnis einer
versuchsweisen Subtraktion der Operanden F=(A-B) kann bezüglich der
Vorzeicheninformation zum Vergleich genutzt werden:
F=0: A=B; Logische Verknüpfung aller bits von F, Speicherung in
Zero-FlagF>0: A>B; Vorzeichen von F=0; Typisch Speicherung in
Negative-FlagF
-
33
Digitaltechnik
© Andreas König Folie 8-65
Funktionsblöcke
Beispiel einer verfügbaren, einfachen 4-bit ALU (74181):
Arithmetische Funktionsblöcke
Cn+1
4 4A3:0 B3:0
4
C0
5S3:0M
F3:0G´3F´3
A=B
Open-Kollektor-Ausgang zur Zusammenschaltung mehrerer Stufen
Digitaltechnik
© Andreas König Folie 8-66
FunktionsblöckeFunktionstabelle der 4-bit ALU (74181) [Katz
94]:
Arithmetische Funktionsblöcke
F=A PLUS 1F=AF=A1 1 1 1
F=A(NOT B) PLUS A PLUS 1F=A(NOT B) PLUS AF=AB1 1 1 0
F=AB PLUS A PLUS 1F=AB PLUS AF= A(NOT B)1 1 0 1
F=A PLUS 1F=AF=01 1 0 0
F=(A+B)PLUS 1F=(A+B)F= A+ B1 0 1 1
F=A(NOT B)PLUS(A+B)PLUS 1F=A(NOT B)PLUS(A+B)F=B1 0 1 0
F=A PLUS B PLUS 1F= A PLUS BF= A XOR B1 0 0 1
F=A PLUS (A+B)PLUS 1F=A PLUS (A+B)F= (NOT A)B1 0 0 0
F=A MINUS BF=A+ NOT BF=A + NOT B0 1 1 1
F=(A+ NOT B)PLUS 1F=A MINUS B MINUS 1F=A XNOR B0 1 1 0
F=AB PLUS(A+ NOT B)PLUS 1F=AB PLUS (A+ NOT B)F= NOT B0 1 0 1
F=A PLUS(A+ NOT B)PLUS 1F=A PLUS (A+ NOT B)F= A NOR B0 1 0 0
F=0F=MINUS 1F=10 0 1 1
F=A(NOT B)F= A(NOT B) MINUS 1F=(NOT A) + B0 0 1 0
F=ABF= AB MINUS 1F=A NAND B0 0 0 1
F=AF= A MINUS 1F= NOT A0 0 0 0
Cn =1Cn =0Logische FunktionenS3 S2 S1 S0
M=0 Arithmetische FunktionenM=1Auswahl
-
34
Digitaltechnik
© Andreas König Folie 8-67
Funktionsblöcke
Beschaltung der 4-bit ALU (74181) zur Berechnung F=A-B:
Arithmetische Funktionsblöcke
Cn+1
4 4A3:0 B3:0
4
C0
5
F3:0 =A3:0 -B3:0G´3F´3
A=B
S3:0M01110
=0
16-bit ALU aus 4 74181 und einer 74182
Digitaltechnik
© Andreas König Folie 8-68
Funktionsblöcke
Eine Multiplikation ist durch eine Folge von Schiebe- und
Addierschritten durchführbar (ALU + Schieberegister)Gerade im
Hinblick auf echtzeitfähige Systeme, z.B. zur Digitalen
Signalver-arbeitung, ist die Realisierung einer dedizierten
Multiplikationseinheitrelevant (Hardware-Multiplizierer,
DSPs)Multiplikation von Integer- bzw. Festpunktzahlen (Kap. 2):
Arithmetische Funktionsblöcke
Dual: 1011 * 11011011 = 1 *1011
0000 = 0 *10111011 = 1 *1011
1011 = 1 *1011_________10001111
Voll-addierer
Coutk
Cink
Si-1k
Ak Bj
&
Sik-1
AB A0 B3
k
i
Prinzip eines Multipliziererelements:
-
35
Digitaltechnik
© Andreas König Folie 8-69
Funktionsblöcke
Prinzipieller serieller Multiplizierer:
Arithmetische Funktionsblöcke
&
Vol
l-ad
dier
er
CoutCin
Ak
BiQDQ
(2n)-bit Register(n)-bit Register
(n)-bit Register
Par./Ser. Laden
&RESET
Ein Partialprodukt wird in n-Takten errechnet (serieller
Addierer)Gleichzeitig erfolgt die Akkumulation der
PartialprodukteDamit werden bei gleichlangen n-bit Operanden
n*n-Takte zur Bildung des 2n-bit Produkts benötigtErfordert
speziellen Zugriff auf nur n-bit der 2n-bit des
AusgangsregistersSinnvolle Lösung für spezielle Anwendungen oder
massivparallele Systemarchitekturen (z.B. synapsenparalleler
Neurocomputer)
Digitaltechnik
© Andreas König Folie 8-70
Funktionsblöcke
Prinzipieller seriell/paralleler Multiplizierer:
Arithmetische Funktionsblöcke
Hier erfolgt die Bildung einer Stelle aller Partialprodukte in
einem Takt Gleichzeitig erfolgt die Akkumulation über die Spalte
der PartialprodukteDamit werden bei gleichlangen n-bit Operanden
2n-Takte zur Bildung des 2n-bit Produkts benötigt
Vol
l-ad
dier
er
CoutCin
FF
&
FF
Vol
l-ad
dier
er
CoutCin
FF
&
FF
Vol
l-ad
dier
er
CoutCin
FF
&
FF
&
Ak
B0 Bn-1B1 B2
LSB@t0
SR
-
36
Digitaltechnik
© Andreas König Folie 8-71
Funktionsblöcke
Anwendungsbeispiel 4-bit seriell/paralleler Multiplizierer:
Arithmetische Funktionsblöcke
0000000
000
000
000
32107
332106
2332105
13223104
031221303
30211202
3201101
321000
BBBBPABBBBPABABBBPABABABBPABABABABP
BABABABPBBABABP
BBBABP
+++=+++=+++=+++=+++=+++=
+++=+++=
8 Takte
• Die Darstellung führt nicht explizit die im vorhergehenden
Takt berechneten Über-träge auf !
• Diese werden mit 0 initialisiert
• Die letzte Stelle ergibt sich anhand des finalen Übertrags
Digitaltechnik
© Andreas König Folie 8-72
Funktionsblöcke
Prinzipieller paralleler 4-bit Multiplizierer:
Arithmetische Funktionsblöcke
B0
B1
B2
B30
0
0
0
A3 A2 A1 A00 0 0 0
P6P7 P4P5 P2P3 P0P1
-
37
Digitaltechnik
© Andreas König Folie 8-73
Funktionsblöcke
Aufbau der Multipliziererzelle:
Arithmetische Funktionsblöcke
Voll-addierer
Cout
Cin
Si
Ak
Bj
& • HW-Aufwand n2 UND-Gatter und Addierer
• Für die Randzellen genügen HA
• n(n-2) FA; 2n HA !• Durchlaufzeit ?
Digitaltechnik
© Andreas König Folie 8-74
Funktionsblöcke
Durchlaufzeit im parallelen 4-bit Multiplizierer:10
VA-Laufzeiten Allgemein: 3n-2
Arithmetische Funktionsblöcke
B0
B1
B2
B30
0
0
0
A3 A2 A1 A00 0 0 0
P6P7 P4P5 P2P3 P0P1
@0@4
@7
@10
-
38
Digitaltechnik
© Andreas König Folie 8-75
Funktionsblöcke
Erkennbar bestimmt der Addierertyp die Durchlaufzeit und damit
die Berechnungszeit eines MultiplizierersAnwendung der Konzepte aus
dem Abschnitt über AddiererBeispiel Carry-Save-Addierer (Überträge
werden nicht in die nächste Stelle eingespeist sondern parallel an
die Folgestufe übergeben !):
Arithmetische Funktionsblöcke
Dual: 1011 * 11011011 = 1 *10110000 = 0 *1011
S: 01011C: 0000
1011 = 1 *1011S: 1001C: 0010
1011 = 1 *1011S: 1101C: 0010S: 0000C: 0110
10001111
• Eingänge eines RCA aus CSA-Stufen
• Summe und lateral geschal-tetes Carry des RCA
Durch konkrete Daten keine Addition, daher verkürzte
Darstellung
Abschlussaddition:
Digitaltechnik
© Andreas König Folie 8-76
Funktionsblöcke
4-bit Multiplizierer mit CSA:
Arithmetische Funktionsblöcke
HA VA VA HARCA
CSA
CSA
CSA
CSA B0
B1
B2
B3
A3 A2 A1 A00 0 0 0
P6P7 P4P5 P2P3 P0P1
-
39
Digitaltechnik
© Andreas König Folie 8-77
Funktionsblöcke
Durchlaufzeit des CSA-Multiplizierers:8 VA-LaufzeitenAllgemein:
2n
Arithmetische Funktionsblöcke
HA VA VA HARCA
CSA
CSA
CSA
CSA B0
B1
B2
B3
A3 A2 A1 A00 0 0 0
P6P7 P4P5 P2P3 P0P1
@0
@4
@8
Digitaltechnik
© Andreas König Folie 8-78
Funktionsblöcke
Die Taktfrequenz eines Systems mit einem solchen Multiplizierer
wird also limitiert durch die Mindestanforderung an die Taktperiode
T:
Arithmetische Funktionsblöcke
AdderDelaytnT ••> 2Der Faktor n entspricht der
Rechnengenauigkeit, d.h. der Zahl der verwendeten Bitstellen für
jeden OperandenFür 16 bit liegen bereits 32 Addiererverzögerungen
vor !Weitere Beschleunigung durch:
CLA zur AbschlussadditionPipelining der Multipliziererstruktur:
VA VA
VA
B0
B1
A1 A00 0
∆
∆
• Pufferregister zwischen den einzelnen Multipliziererstufen
erlauben das zeitlich verschränkte Bearbeiten von Operanden
• Laufzeit auf eine Stufe reduziert• Erstes Ergebnis nach
n-Takten, dann (bei
kontinuierlichem Betrieb) 1 Ergebnis/Takt
-
40
Digitaltechnik
© Andreas König Folie 8-79
Funktionsblöcke
Sonderfälle, die strukturelle Vereinfachungen
erlauben:Multiplikation mit einer Potenz von 2, d.h. mit 2k ;
k>0. Dieser Fall entspricht einer Linksverschiebung um k-Stellen
und kann mit einem SR in mehreren Takten bzw. einem Barrelshifter
in nur einem Takt durchgeführt werden. Multiplikation mit einer
Konstanten: Es ist unwahrscheinlich, dass alle Stellen einer
Konstanten mit einer 1 belegt sind. Jede mit 0 belegte Stelle
braucht nicht durch Addierer berücksichtigt zu werden:
Arithmetische Funktionsblöcke
A * 10001001 = A*27 + A*23 +A
Die jeweilige Belegung von A muss also dreimal stellengewichtet
(verschoben, Verdrahtung) addiert werdenEs muss bei vorab
bekannter, unveränderlicher Konstante kein vollständiger
Multiplizierer implementiert werden
A
A
A
Digitaltechnik
© Andreas König Folie 8-80
Funktionsblöcke
Eine Reihe von arithmetischen Funktionsblöcken bzw. –einheiten
müsste in die Betrachtung mitaufgenommen werden [Hoffmann 83]:
Vorzeichenbehaftete MultiplikationDivision für vorzeichenlose
und –behaftete
ZahlenBCD-ArithmetikFloating-Point-ArithmetikSaturierungstechniken
und Rundungsmechanismen für Festpunktarithmetik
Vertiefung in Fachveranstaltung zur Rechnerorganisation und zum
Entwurf dedizierter Digitaler Systeme, z.B. Eingebetteter
Systeme
Arithmetische Funktionsblöcke
-
41
Digitaltechnik
© Andreas König Folie 8-81
Funktionsblöcke
Aus den betrachteten Funktionsblöcken können jetzt Rechenwerke
und Datenpfade für Verarbeitungseinheiten (z.B. Prozessoren)
zusammengesetzt werdenBeispiel: Eine Einheit soll den
(quadratischen) Euklidschen Abstand jeweils zweier Vektoren
variabler Länge berechnen. Dabei soll jeweils ein neu einzulesender
Eingangsvektor mit einer Menge gespeicherter Vektoren verglichen
und der Vektor mit der geringsten Distanz ermittelt werden
Datenpfad und Steuerwerk
( ) jjcn
iijij DDwxD min;
21
0=−=∑
−
=
xi
wij- * +
≥Min
Index. Index c
Abstandswert Dc
Digitaltechnik
© Andreas König Folie 8-82
Funktionsblöcke
Für eine anwendungsspezifische Verarbeitungseinheit kann der
Datenpfad und seine Verbindungsstruktur als auch das Steuerwerk
optimiert und fest generiert werden
Datenpfad und Steuerwerk
xi
wij - * +≥
MinIndex. Index
Abstandswert
Dedizierter Datenpfad
Steuerwerk:• Addressgenerierung• Ablaufsteuerung
W-Speicher
X-Puffer i
i,j
Gültig
Vektorlänge
-
42
Digitaltechnik
© Andreas König Folie 8-83
Funktionsblöcke
Mögliche Parallelisierung einer Berechnung durch Vervielfachung
der Einheiten in einem Datenpfad:
Datenpfad und Steuerwerk
xn
wnj - * +
≥Min
Index. Index
Abstands-wert
Dedizierter paralleler Datenpfadx1
w1j - *
x2
w2j - * +
+
Addiererbaum
Digitaltechnik
© Andreas König Folie 8-84
Funktionsblöcke
Das betrachtete Beispiel ist sehr speziell und repräsentiert
anwendungs-spezifische SituationenAllgemeinerer Fall:
(Willkürlicher) Datenpfad für Allzweckrechner
Datenpfad und Steuerwerk
C0Sn-1:1
Register 0Register 1Register 2
Register 2k-1 Datenbus (z.B. vom/zum Speicher)
Akkumulator
C Z N OALU
Steuerwerk
Realisierung
? Sk-1:nSj-1:k
Sinnvolle Organisation ?
-
43
Digitaltechnik
© Andreas König Folie 8-85
Funktionsblöcke
Ein Steuerwerk kann festverdrahtet durch krause Logik
(Random-Logic) oder durch reguläre, programmierbare Strukturen
(PLA, PAL, ROM) implementiert werdenROM-basierte Implementierung im
Beispiel 7.2 (Verkaufsautomat):
Prinzip der Mikroprogrammierung
ROM
Zustandsspeicher
s s
oiA0.Ai-1Ai+s-1
0 0 0 d1111
1 1 1 d0111
1 1 1 d1011
1 1 1 d0011
0 0 0 d1101
1 1 0 d0101
1 1 0 d1001
1 0 0 d0001
0 0 0 d1110
1 1 0 d0110
1 0 0 d1010
0 1 0 d0010
0 0 0 d1100
1 0 0 d0100
0 1 0 d1000
0 0 0 d0000
InhaltA0A1A2A3
Hier: 16x4-bit ROMs=2, i=2, o=1
Digitaltechnik
© Andreas König Folie 8-86
Funktionsblöcke
Eine flexiblere Lösung in Richtung programmierbarer Steuerwerke
ist dadurch gegeben, dass der Inhalt der Speicher als Adresse
interpretiert wirdDiese wird inkrementiert (sequentieller
Folgezustand) und nur bei Verzweigung in einen anderen Folgezustand
explizit neu geladen (Sprung, bedingte Verzweigung)
Prinzip der Mikroprogrammierung
ROM
Addresse
s
s
o
iA0.Ai-1Ai+s-1
+1
Steuervektor
OPC (Anfangsadresse)
Bedingungen (Status)
Verzweigungsadresse aus ROM
-
44
Digitaltechnik
© Andreas König Folie 8-87
Funktionsblöcke
Der mögliche Verzweigungsgrad aus einem Zustand wird
reduziertStatistische Betrachtungen zeigen, dass ein großer Teil
(ca. 40%) der Übergänge in Zustandsdiagrammen unbedingt sind In
Verbindung mit dem Operationswerk eines Prozessors dient der
dekodierte Befehl (Opcode, OPC) als Einsprungadresse in das
Mikroprogramm, das die gewünschten Mikrooperationen im
Operationswerk ausführt, die den Befehl charakterisierenDie
Mikrooperationen werden in möglicher Parallelität und
erforderlicher zeitlicher Staffelung (Buskonflikte)
durchgeführtMaschinenbefehle entsprechender Prozessoren können
daher sehr unterschiedliche Ausführungszeiten
habenMikroprogrammierung typisch für
Complex-Instruction-Set-Computer (CISC)ROM-Inhalte einfach und
flexibel austauschbar (oft RAM mit Initialisierung)Horizontale und
vertikale Mikroprogrammierung zur Optimierung des ROMsHier nur
verkürzte Darstellung des Themas, besser: [Katz 94] [Hoffman
83]Durch programmierbare Logik ist Grenze der Steuerwerkstypen
aufgeweicht
Prinzip der Mikroprogrammierung
Digitaltechnik
© Andreas König Folie 8-88
Funktionsblöcke
Auf den folgenden Folien soll nun an einem überschaubaren
Beispiel das Zusammensetzen der bislang eingeführten Komponenten
und Funktions-blöcke vom Gatter und Addierer bis hin zu einem sehr
einfachen Mikroprozessor über die Entwurfsebenen gezeigt
werden:
Vom Addierer zum Mikroprozessor
=1
=1
&
&
CoutCin
AiBi
AiBi
=1AiBi =1Cin
Si
Voll-addierer
Cout
Cin
Si
Ai Bi
x4
x3
3x 4x
+Inverter
-
45
Digitaltechnik
© Andreas König Folie 8-89
Funktionsblöcke
Zusammensetzung der Addierer zu Addierwerk (RCA):
Vom Addierer zum Mikroprozessor
Cin Ai Bi
Voll-addierer
Co3
Ci3
S3
A3 B3
Voll-addierer
Co2
Ci2
S2
A2 B2
Voll-addierer
Co1
Ci1
S1
A1 B1
Voll-addierer
Co0
Ci0
S0
A0 B0
n-bit Ripple-Carry Addierer
4
4
CinCout
4A B
F
Digitaltechnik
© Andreas König Folie 8-90
Funktionsblöcke
Erweiterung des Addierwerks für Subtraktion:
Vom Addierer zum Mikroprozessor
4-bit Ripple-Carry Addierer
4
4
Cout
4K1(A)/A
F
4-fach EXOR
4B
S2
4
4-fach EXOR
S0Cin
=1
K1(Bi) für S1=1Bi
Oi
Oi=Bi für S1=0
S1
S1
Wahlweise kann jeder Operand mittels dreier Steuerleitungen in
K2gewandelt werden und A-B, B-A, A+B ausgeführt werden
K1(B)/B
-
46
Digitaltechnik
© Andreas König Folie 8-91
Funktionsblöcke
Erweiterung des Addierwerks für Subtraktion in K2-Darstellung
und Konstantengenerierung (z.B. für Inkrement-Funktion: F=A+1)
Vom Addierer zum Mikroprozessor
4-bit Ripple-Carry Addierer
4
4
Cout
4K1(B)/B
F
4-fach EXOR
4
S4
4
4-fach UND
S0Cin
&
Bi für S3=1Bi
Oi
Oi=0 für S3=0
S3
S3
4-fach EXOR
4-fach UND
K1(A)/A
4B/04A/0
BA
S2 S1
Konstante 0 durch Invertierung in -1 umsetzen
Digitaltechnik
© Andreas König Folie 8-92
Funktionsblöcke
Funktionalität des realisierten Rechenwerks:
Vom Addierer zum Mikroprozessor
-B-1=B´11110
-B-201110
B10110
B-100110
-B11010
-B-1=B´01010
B+110010
B00010
-111100
-201100
010100
-100100
011000
-101000
110000
000000
AusgangsfunktionS0S1S2S3S4
-A-B-111111
-A-B-201111
B-A10111
B-A-100111
A-B11011
A-B-101011
A+B+110011
A+B00011
-A-1=A´11101
-A-201101
-A10101
-A-1=A´00101
A11001
A-101001
A+110001
A00001
AusgangsfunktionS0S1S2S3S4
-
47
Digitaltechnik
© Andreas König Folie 8-93
Funktionsblöcke
Erkennbar werden durch unterschiedliche Steuervektoren gleiche
Funktionen mehrfach realisiertUnnötige Aufblähung eines
BefehlswortesDaher hier eine Umkodierung
Verwendung eines ROM-Bausteins:
Vom Addierer zum Mikroprozessor
frei1111
frei0111
frei1011
frei0011
frei1101
frei0101
frei1001
A-B0001
A+B1110
A-10110
A+11010
00010
B1100
A´0100
11000
A0000
FunktionU0U1U2U3
ROMU0
U1U2U3
S0S4 S3 S2 S1
Steuervektor
Befehlswort
Simple Form der Mikroprogrammierung
Digitaltechnik
© Andreas König Folie 8-94
Funktionsblöcke
Erweiterung des bisherigen arithmetischen Schaltwerks um
logische Funktionen, d.h. um logische Verknüpfungsmöglichkeiten der
Operanden:
Vom Addierer zum Mikroprozessor
Rechenwerk
S0
S4S3S2S1
4 4
4
4-fach 4:1 Mux
4
F
& ≥1 =1
4 44 4 44BA
4 44
S6S5
Einfache 4-bit ALU
-
48
Digitaltechnik
© Andreas König Folie 8-95
FunktionsblöckeVom Addierer zum Mikroprozessor
frei1111
frei0111
frei1011
-10011
1101
A+B0101
AB1001
A-B0001
A+B1110
A-10110
A+11010
00010
B1100
A´0100
11000
A0000
FunktionU0U1U2U3
Der Steuervektor wird nun um zwei weitere Komponenten zur
Auswahl der vier möglichen Quellen in der ALU erweitertEntsprechend
neue BefehlsworteErweiterung der SteuervektorbreiteROM mit höherer
Wortbreite:
ROMU0U1U2U3
S0S5 S3 S2 S1
Steuervektor
BefehlswortS4S6 BA⊕
Digitaltechnik
© Andreas König Folie 8-96
FunktionsblöckeVom Addierer zum Mikroprozessor
Vollständige ALU mit Dekodierung von Befehlen in
Steuervektoren
ROMU0
U1U2U3
S0S5 S3 S2 S1
Steuervektor
Befehlswort
S4S6
S74
4B
A
4
Datenworte
&
C
S7
Cout
Ausgabewort Übertragsbit
Mögliche Unterdrückung des Ausgangsübertrags
-
49
Digitaltechnik
© Andreas König Folie 8-97
Funktionsblöcke
ALU
Vom Addierer zum Mikroprozessor
Erweiterung um Pufferregister und Rückführung:
ROMU0U1U2
U3
S0S5 S3 S2 S1
Steuervektor
Befehlswort
S4S6
S74
4B
A
4
Datenwort(e)
&
C
S7
Cout
AusgabewortÜbertragsbit
1-bit4-bit Reg.4
Systemtakt
Akku Status Rechnerkern
(Akkumulator)
Digitaltechnik
© Andreas König Folie 8-98
FunktionsblöckeVom Addierer zum Mikroprozessor
Symbolische Notation der Befehle (Mnemonics) und ihrer
Wirkung:
neinfrei-1111
nein
nein
ja
ja
ja
ja
ja
ja
ja
ja
nein
nein
nein
ja
ja
Carry-Flag
-
-
SM1
XOR
IOR
AND
SUB
ADD
DEC
INC
CLA
LDA
CMA
SP1
NOP
Abkürzung
frei0111
frei1011
Setze Akku = -10011
Akku EXOR B in Akku1101
Akku ODER B in Akku0101
Akku UND B in Akku1001
Subtrahiere B von Akku0001
Addiere B zu Akku1110
Dekrementiere Akku0110
Inkrementiere Akku1010
Lösche Akku0010
Lade B in Akku1100
Komplementiere Akku0100
Setze Akku=11000
Keine Operation0000
FunktionU0U1U2U3
-
50
Digitaltechnik
© Andreas König Folie 8-99
FunktionsblöckeVom Addierer zum Mikroprozessor
Erweiterung um einen RAM-Speicher zur Datenablage:
Rechnerkern(ALU, Akkumulator)
Datenspeicher
(Schreib/Lese-speicher RAM
16 x 4 bit)
4
Befehlswort U
4
Adresswort ADatenwort D
2:1 Mux
4
4
4
4
4
B
&
S8
S9
ROM
S8S0 S9S7
C Takt Rechnerkernund Daten-speicher
Digitaltechnik
© Andreas König Folie 8-100
FunktionsblöckeVom Addierer zum MikroprozessorErweiterung der
Befehle um Adressfeld (soweit anwendbar):
d
a
d
d
a
a
a
a
a
d
d
d
a
d
d
d
A3
d
a
d
d
a
a
a
a
a
d
d
d
a
d
d
d
A2
d
a
d
d
a
a
a
a
a
d
d
d
a
d
d
d
A1
d
a
d
d
a
a
a
a
a
d
d
d
a
d
d
d
A0
nfrei-1111
n
n
j
j
j
j
j
j
j
j
n
n
n
j
j
C
STA
INP
SM1
XOR
IOR
AND
SUB
ADD
DEC
INC
CLA
LDA
CMA
SP1
NOP
Abkürzung
Speichere Akku in Adresse aaaa0111
Lade B-Eingänge in Akku1011
Setze Akku = -10011
Akku EXOR Inhalt der Adresse aaaa in Akku1101
Akku ODER Inhalt der Adresse aaaa in Akku0101
Akku UND Inhalt der Adresse aaaa in Akku1001
Subtrahiere Inhalt der Adresse aaaa von Akku0001
Addiere Inhalt der Adresse aaaa zu Akku1110
Dekrementiere Akku0110
Inkrementiere Akku1010
Lösche Akku0010
Lade Inhalt der Adresse aaaa in Akku1100
Komplementiere Akku0100
Setze Akku=11000
Keine Operation0000
FunktionU0U1U2U3
-
51
Digitaltechnik
© Andreas König Folie 8-101
FunktionsblöckeVom Addierer zum Mikroprozessor
Erweiterung um Befehlszähler und Programmspeicher:
Rechnerkern undDatenspeicher
4D
4
Takt 1 C
B
Programmspeicher(n-Worte/Befehle)
U3U2 U1 U0 a3 a2 a1 a0
k
k=ld(n)
BefehlszählerTakt 2
k
• Adresse des ersten Befehlsworts
• Ab dann automatisches Inkrementieren
• Abarbeiten des Folge-befehls
Ladeeinrichtung
• Festwertspeicher• RAM + Laden:
• Schalter• Lochkarte• Tastatur• Ifc.
Digitaltechnik
© Andreas König Folie 8-102
FunktionsblöckeVom Addierer zum Mikroprozessor
Beispielprogramm zur Durchführung der Rechnung:
Dabei soll Y und X jeweils nacheinander am externen Eingang
bereitstehen und das Ergebnis der Rechnung am externen Ausgang
ausgegeben werdenDie Wertebereiche von X und Y seien klein genug,
um einen Überlauf auszuschließen
12 ++= YXZ
BinärcodeKommentarBefehl + Adresse
11100000Speichere in 0x0STA 0x00101ddddAddiere
2X+Y+1INC01110000Addiere 2X+YADD 0x001110001Addiere X+X=2XADD
0x111100001Speichere Akku in 0x1STA 0x11101ddddLade X in
AkkuINP11100000Speichere Akku in 0x0STA 0x01101ddddLade Y in
AkkuINP
-
52
Digitaltechnik
© Andreas König Folie 8-103
FunktionsblöckeVom Addierer zum Mikroprozessor
Der simple speicherprogrammierbare Rechner verfügt über einen
getrennten Daten- und ProgrammspeicherDie Abarbeitung von
Programmen ist nur sequentiell ohne VerzweigungenmöglichDer
Befehlssatz und die Architektur erlauben nicht das Generieren und
Abfragen von Bedingungen, z.B. C=1/0, Z=1/0, N=1/0, O=1/0, und
daraus resultierende bedingte VerzweigungenEs ist nur eine,
konstante und eingeschränkt lange Adresse für einen Befehl
angebarKonstante BefehlswortlängeEntsprechende Erweiterungen in der
Architektur des von-Neumann-Rechners
Digitaltechnik
© Andreas König Folie 8-104
FunktionsblöckePrinzip des von-Neumann-Rechners
Wesentliches Merkmal der von-Neumann-Architektur ist der
gemeinsame Programm- und Datenspeicher (Burks, Goldstine und
v.Neumann 1947)Keine Unterscheidung mehr zwischen Befehlen und
Daten, prinzipiell kann ein Programm sich seinen eigenen Kode
berechnen/modifizieren (Self-Modifying-Code)Die Abarbeitung
gliedert sich im von-Neumann-Rechner in drei prinzipielle
Phasen:
Befehl holen (Fetch)Befehl dekodieren (Decode)Befehl ausführen
(Execute; mit (un)bedingten Sprüngen, Einadressbefehlsformat)
Ein Sequencer (FSM) steuert diesen Ablauf und die Einzelschritte
der PhasenSo kann die Ausführung eines Befehl eine Reihe von Takten
(Mikroprogramm-schritte; Durchschaltungen) erfordernDie
erforderliche streng sequentielle Zugriffsweise auf Befehl und
Daten im gemeinsamen Speicher wird häufig auch als
von-Neumann-Flaschenhalsbezeichnet (Harvard-Architektur, innovative
und parallele Architekturen)
-
53
Digitaltechnik
© Andreas König Folie 8-105
FunktionsblöckePrinzip des von-Neumann-Rechners
Umstellung des bisherigen einfachen Rechners auf gemeinsamen
Programm-und Datenspeicher:
SpeicherAdress-
zwischen-speicher
Befehls-zähler
Befehls-register
Steuerung undTaktverteilung
ALUAkkumulator D
Daten-selektor
Bedienteil
Taktgenerator
B
aaaa
pppp
Opcode
Digitaltechnik
© Andreas König Folie 8-106
FunktionsblöckePrinzip des von-Neumann-Rechners
Erweiterung auf busstrukturierten Rechner:
Befehls-register
Steuer-werk
Flags
Takt
ALU mitAkkumulator
RegisterblockAllgemeine oder
aufgabenspezifischeZusatzregister
Adressregister
Prozessor
ArbeitsspeicherDatenbusAdressbus
Eingangs-multiplexer
Ausgangs-multiplexer
Befehlszählermit Inkrement
SteuerwerkRechenwerk
Steuerbus (z.B. R/W)
-
54
Digitaltechnik
© Andreas König Folie 8-107
FunktionsblöckePrinzip des von-Neumann-Rechners
Der gezeigte busstrukturierte Rechner entspricht in seiner
prinzipiellen Struktur bereits realen MikroprozessorenDie gezeigte
Komplexität korrespondierte etwa mit der typischen 8-bitGeneration
von Mikroprozessoren (6502, 6809 u.a.)Unterschiede liegen im
verfügbaren Befehlssatz und den zugehörigen Adressierungsarten,
weiteren möglichen Registern und zusätzlichen Bussensowie der
AblaufsteuerungAnwendungsspezifische Einheiten
(Application-Specific-Integrated-Circuits, ASIC) und vielseitig
einsetzbare Prozessoren (General-Purpose-Processors) sind
elementare Komponenten Digitaler SystemeIhr Entwurf erfordert bei
gegebener Komplexität erkennbar eine Erweiterung der bisherigen
HerangehensweiseMächtigere Entwurfsmethodik und Beschreibungsform
durch Hardware-Beschreibungssprachen (HDL) und
SynthesemöglichkeitenSchnellere und sichere Entwicklung durch
hochkomplexe, programmierbare Logikbausteine