digitaltechnikknmat/v/alt/dr%20k%94...4. entwurf zweistufiger kombinatorischer logik 5....

54
Digitaltechnik © Andreas König Folie 8-1 Funktionsblöcke Digitaltechnik Andreas König Professur Technische Informatik Fakultä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 Automaten Vorstellung einer systematischen Entwurfsweise von FSM Erweiterung der bisherigen Optimierungskonzepte auf FSMs: Zustandsminimierung Zustandskodierung Partionierung von FSMs Zusammenschaltung von FSMs Anwendung der verschiedenen Umsetzungsmöglichkeiten und Entwurfstile zur FSM-Implementierung Schwerpunkt lag auf dem Entwurf von (festverdrahteten) Steuerwerken für kontroll-dominierte Anwendungen Für daten-dominierte Anwendungen weitere Funktionsblöcke, z.B. arithmetische Funktionsblöcke zur Digitalen Signalverarbeitung

Upload: others

Post on 23-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

  • 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

    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

    11´1112

    7´78

    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

    11´

    15´3

    ´7

    ´11

    ´15

    ´7

    ´11

    ´15

    ´11

    ´15

    ´15

    12´

    15´1516

    11´3

    ´7

    ´11

    ´7

    ´11

    ´118

    ´11

    ´1112

    7´3

    ´7

    ´74

    ´7

    ´78

    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