Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
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