Digitaltechnik: Eine Einführung mit VHDL 9783110478341

Formerly Textbook of Digital Technology This textbook offers a step-by-step introduction to the major elements of the

206 28 13MB

German Pages 486 Year 2016

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Digitaltechnik: Eine Einführung mit VHDL
 9783110478341

Table of contents :
Vorwort zur 4. Auflage
Inhaltsverzeichnis
1. Einleitung
1.1 Die Hardwarebeschreibungssprache VHDL
1.2 Digitale und Analoge Signale
1.3 Digitale Systeme
1.4 Gliederung des Buches
1.5 Vertiefende Aufgaben
2 Modellierung digitaler Schaltungen
2.1 Lernziele
2.2 Entwurfssichten und Abstraktionsebenen
2.3 Modellierung mit Hardwarebeschreibungssprachen
2.3.1 Datenflussmodelle
2.3.2 Strukturmodelle
2.3.3 Verhaltensmodelle
2.4 Kombinatorische und getaktete Logik
2.4.1 Eigenschaften kombinatorischer Logik
2.4.2 Eigenschaften getakteter Logik
2.4.3 Modellierung auf Register-Transfer-Ebene
2.5 Entwurfsmethodik für programmierbare digitale Schaltungen
2.6 Vertiefende Aufgaben
3 Boole’sche Algebra
3.1 Lernziele
3.2 Schaltvariable und Schaltfunktionen, Signale
3.3 Elementare Schaltfunktionen
3.3.1 Die NICHT-Schaltfunktion (Inversion)
3.3.2 Die UND-Schaltfunktion (Konjunktion)
3.3.3 Die ODER-Schaltfunktion (Disjunktion)
3.3.4 Boole’sche Funktionen mit mehreren Eingängen
3.4 Rechenregeln der Schaltalgebra
3.4.1 Theoreme
3.4.2 Kommutativgesetze
3.4.3 Assoziativgesetze
3.4.4 Distributivgesetze
3.4.5 De Morgan’sche Gesetze
3.4.6 Vereinfachungsregeln
3.5 Vollständige Systeme
3.5.1 Das Dualitätsprinzip
3.5.2 NAND- und NOR-Gatter
3.6 Normalformen
3.6.1 Disjunktive Normalform (DNF)
3.6.2 Konjunktive Normalform (KNF)
3.7 Realisierung von Schaltfunktionen mit Wahrheitstabellen
3.7.1 SOP- und POS-Darstellungen von Wahrheitstabellen in programmierbaren Bausteinen mit UND/ODER-Logik
3.7.2 Look-Up-Tabellen
3.8 XOR- und XNOR-Logik
3.8.1 SOP- und POS-Darstellungen
3.8.2 XOR- und XNOR-Regeln und Gesetze
3.8.3 XOR- und XNOR-Logik mit mehr als zwei Eingängen
3.9 Vorrangregeln
3.10 Schaltsymbole
3.11 Implementierung von Schaltfunktionen mit Multiplexern
3.12 Analyse von Schaltnetzen
3.13 Vertiefende Aufgaben
4 VHDL-Einführung I
4.1 Lernziele
4.2 Syntaxnotation
4.3 Der Aufbau eines VHDL-Modells
4.3.1 Beschreibung einer entity
4.3.2 Aufbau einer architecture
4.3.3 Nebenläufige Signalzuweisungen
4.3.4 Logikoperatoren in VHDL
4.4 Das Konzept von VHDL-Testbenches
4.5 Vertiefende Aufgaben
5 Zahlensysteme in der Digitaltechnik
5.1 Lernziele
5.2 Polyadische Zahlensysteme
5.3 Umwandlung zwischen Zahlensystemen
5.4 Addition und Subtraktion vorzeichenloser Dualzahlen
5.5 Darstellung negativer Zahlen
5.5.1 Eigenschaften des 2er-Komplementzahlensystems
5.5.2 Addition und Subtraktion im 2er-Komplementzahlensystem
5.6 Darstellung rationaler Zahlen
5.6.1 Festkommadarstellung im Q-Format
5.6.2 Gleitkommadarstellung
5.7 Vertiefende Aufgaben
6 Logikminimierung
6.1 Lernziele
6.2 Minimierung mit KV-Tafeln
6.2.1 Disjunktive Minimalform (DMF)
6.2.2 Konjunktive Minimalform (KMF)
6.2.3 Output-Don’t-Care-Terme
6.2.4 Grenzen der zweistufigen Minimierung
6.3 Softwarealgorithmen zur zweistufigen Minimierung
6.3.1 Quine-McCluskey-Algorithmus
6.3.2 Espresso-Algorithmus
6.4 Minimierungskonzepte für FPGAs
6.5 Vertiefende Aufgaben
7 VHDL-Einführung II
7.1 Lernziele
7.2 Das VHDL-Prozesskonzept
7.3 Ereignisgesteuerte Simulatoren
7.4 Verzögerungsmodelle
7.5 Sequenzielle Anweisungen in Prozessen
7.5.1 case-Anweisung
7.5.2 if-Anweisung
7.6 Prozesse ohne Sensitivityliste
7.7 Verwendung von Variablen in Prozessen
7.8 Modellierungsbeispiel
7.9 Lesen und Schreiben von Dateien in Testbenches
7.10 Vertiefende Aufgaben
8 Codes
8.1 Lernziele
8.2 Charakterisierung und Klassifizierung
8.3 Zahlencodes
8.4 Code für die Längen- und Winkelmesstechnik
8.5 Methoden der Fehlererkennung und -korrektur
8.6 Vertiefende Aufgaben
9 Physikalische Implementierung und Beschaltung von Logikgattern
9.1 Lernziele
9.2 Logikgatter in CMOS-Technologie
9.2.1 CMOS-Technologie und Kennlinien der MOS-Transistoren
9.2.2 Aufbau und Kennlinien eines CMOS-Inverters
9.2.3 Pegelbereiche digitaler Logikfamilien
9.3 Logikzustände und elektrische Pegel
9.4 Statische CMOS-Logikgatter
9.5 Beschaltung von Gatterausgängen
9.5.1 Standardausgang
9.5.2 Open-Drain- / Open-Collector-Ausgang
9.5.3 Three-State-Ausgang
9.6 VHDL-Modellierung mit den Datentypen std_ulogic und std_logic
9.6.1 Mehrwertige Datentypen
9.6.2 Datentypen mit Auflösungsfunktion
9.6.3 VHDL-Modellierungsbeispiele
9.7 Vertiefende Aufgaben
10 Datenpfadkomponenten
10.1 Lernziele
10.2 Multiplexer
10.3 Binärzahlendecoder und Demultiplexer
10.4 Prioritätsencoder
10.5 Code-Umsetzer
10.6 Komparator
10.7 Hierarchische Strukturmodellierung in VHDL
10.8 Addierer
10.8.1 Halb- und Volladdierer
10.8.2 Ripple-Carry-Addierer
10.8.3 Carry-Lookahead-Addierer
10.8.4 Kombinierter Addierer/Subtrahierer
10.8.5 Addition von Festkommazahlen im Q-Format
10.9 Hardware-Multiplizierer
10.10 Arithmetik in VHDL
10.11 Vertiefende Aufgaben
11 Latches und Flipflops in synchronen Schaltungen
11.1 Lernziele
11.2 Das RS-Latch
11.2.1 Basis-RS-Latch
11.2.2 Taktzustandsgesteuertes RS-Latch
11.3 Das D-Latch (Data-Latch)
11.4 D-Flipflops
11.5 JK-Flipflop
11.6 T-Flipflop
11.7 Zweispeicher-Flipflops
11.8 RTL-Modellierung synchroner Schaltungen
11.9 Zusammenfassung
11.10 Vertiefende Aufgaben
12 Entwurf synchroner Zustandsautomaten
12.1 Lernziele
12.2 Formale Beschreibung von Zustandsautomaten
12.3 Entwurf eines Geldwechselautomaten
12.3.1 Realisierung als Mealy-Automat
12.3.2 Realisierung als Moore-Automat
12.3.3 Medwedew-Automatenstruktur
12.4 Impulsfolgeerkennung mit Zustandsautomaten
12.4.1 Implementierung als Moore-Automat
12.4.2 Implementierung als Mealy-Automat
12.5 Kopplung von Zustandsautomaten
12.6 Vertiefende Aufgaben
13 Entwurf von Synchronzählern
13.1 Lernziele
13.2 Manuelle Implementierung von Zählern
13.2.1 mod-5-Zähler
13.2.2 mod-4-Vorwärts-/Rückwärtszähler
13.3 Standardzähler
13.3.1 Abhängigkeitsnotation
13.3.2 Systematischer VHDL-Entwurf von Zählern
13.3.3 Kaskadierung von Standardzählern
13.4 Vertiefende Aufgaben
14 Schieberegister
14.1 Lernziele
14.2 Arbeitsweise von Schieberegistern
14.3 Serien-Parallel-Umsetzer
14.4 Parallel-Serien-Umsetzer
14.5 Zähler mit Schieberegistern
14.5.1 Ringzähler
14.5.2 Johnson-Zähler
14.6 Linear rückgekoppelte Schieberegister
14.7 Vertiefende Aufgaben
15 Kommunikation zwischen digitalen Teilsystemen
15.1 Lernziele
15.2 Kopplung von Signalen in zueinander synchronen Taktdomänen
15.2.1 Impulsverkürzung
15.2.2 Impulsverlängerung
15.3 Synchronisation asynchroner Eingangssignale
15.3.1 Synchronisation langer Eingangsimpulse
15.3.2 Synchronisation kurzer Eingangsimpulse
15.3.3 Asynchrone Resets
15.4 Datenaustausch zwischen Teilsystemen
15.4.1 Synchrone Datenübertragung
15.4.2 Asynchrone Datenübertragung
15.5 Der AXI4-Interfacestandard
15.5.1 Übersicht
15.5.2 Das AXI4-Stream Interface
15.6 Vertiefende Aufgaben
16 Digitale Halbleiterspeicher
16.1 Lernziele
16.2 Übersicht
16.2.1 Klassifizierung
16.2.2 Speicherstrukturen
16.2.3 Kenngrößen
16.3 Nichtflüchtige Speicher
16.3.1 Maskenprogrammierbares ROM
16.3.2 PROM
16.3.3 EPROM
16.3.4 EEPROM und Flash-EEPROM
16.3.5 Instanziierung von ROM-Strukturen durch VHDL-Code
16.4 Flüchtige Speicher
16.4.1 SRAMs
16.4.2 DRAMs
16.4.3 SDRAM und DDR-RAM
16.4.4 Modellierung von SRAM-Speicher in VHDL
16.5 FIFO-Speicher
16.6 Speichererweiterung
16.7 Vertiefende Aufgaben
17 Programmierbare Logik
17.1 Lernziele
17.2 PLD-Architekturen
17.3 SPLDs
17.3.1 PROM-Speicher
17.3.2 PLAs
17.3.3 PALs
17.4 CPLDs
17.5 FPGAs
17.5.1 Die Spartan-3-FPGA-Familie der Fa. Xilinx
17.5.2 Technologische Entwicklungstrends bei FPGAs
17.6 Vertiefende Aufgaben
18 Anhang
18.1 Erweiterungen durch den Standard VHDL-2008
18.2 Hinweise zur Verwendung der Vivado WebPACK Entwicklungsumgebung
18.2.1 Konfiguration eines RTL-Projektes in Vivado
18.2.2 Funktionale Simulation des VHDL-Codes
18.2.3 Synthese und Implementierung
18.2.4 Hardwaredownload und Test
18.2.5 Entwurf getakteter Schaltungen mit Vivado
18.3 Hinweise zur Verwendung von ModelSim
18.3.1 ModelSim Hilfesystem
18.3.2 Entwicklungsablauf mit ModelSim
18.4 VHDL-Codierungsempfehlungen
19 Literaturverzeichnis
20 Sachregister

Citation preview

Jürgen Reichardt Digitaltechnik De Gruyter Studium

Weitere empfehlenswerte Titel VHDL-Synthese, 7. Auflage Jürgen Reichardt, Bernd Schwarz, 2015 ISBN 978-3-11-037505-3, e-ISBN 978-3-11-037506-0, e-ISBN (EPUB) 978-3-11-039784-0

Prozessorentwurf, 2. Auflage Dieter Wecker, 2015 ISBN 978-3-11-040296-4, e-ISBN 978-3-11-040305-3, e-ISBN (EPUB) 978-3-11-040309-1

SIP und Telekommunikationsnetze, 5. Auflage Ulrich Trick, Frank Weber, 2015 ISBN 978-3-486-77853-3, e-ISBN 978-3-486-85922-5, e-ISBN (EPUB) 978-3-11-039911-0

Entwurf von digitalen Schaltungen und Systemen mit HDLs und FPGAs, 3. Auflage Frank Kesel, Ruben Bartholomä, 2013 ISBN 978-3-486-73181-1, e-ISBN 978-3-486-74715-7

Analoge Schaltungstechniken der Elektronik Wilfried Tenten, 2012 ISBN 978-3-486-70682-6, e-ISBN 978-3-486-85418-3

Modellierung von digitalen Systemen mit SystemC Frank Kesel, 2012 ISBN 978-3-486-70581-2, e-ISBN 978-3-486-71895-9

Jürgen Reichardt

Digitaltechnik

Eine Einführung mit VHDL 4. Auflage

Autor Prof. Dr. rer. nat Jürgen Reichardt Hochschule für angewandten Wissenschaften Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik Digitale Informationstechnik Berliner Tor 7 20099 Hamburg [email protected]

Die ersten drei Auflagen dieses Buches erschienen unter dem Titel „Lehrbuch Digitaltechnik“.

ISBN 978-3-11-047800-6 e-ISBN (PDF) 978-3-11-047834-1 e-ISBN (EPUB) 978-3-11-052997-5 Library of Congress Cataloging-in-Publication Data A CIP catalog record for this book has been applied for at the Library of Congress. Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen National­ bibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.dnb.de abrufbar. © 2017 Walter de Gruyter GmbH, Berlin/Boston Einbandabbildung: Motorola68040die/Wikimedia Commons/Photo by Gregg M. Erickson Druck und Bindung: CPI books GmbH, Leck ♾ Gedruckt auf säurefreiem Papier Printed in Germany www.degruyter.com

Vorwort zur 4. Auflage Die Entwurfsmethoden für Digitalschaltungen haben sich seit mehreren Jahren massiv verändert. Waren es in der Vergangenheit Lötkolben, Messgeräte und Datenbücher, die sich auf dem Laborarbeitsplatz eines Ingenieurs für Informations- und Elektrotechnik befanden, so ist das Hauptarbeitsmittel heute ein oder häufig auch mehrere Computer. Diese werden nicht nur zur Recherche von Datenblättern und Applikationsnotizen oder zur Entwurfsdokumentation verwendet, sondern dienen insbesondere auch als Entwurfswerkzeug. Dabei wird der Schaltungsentwurf zunehmend häufiger unter Verwendung einer Hardwarebeschreibungssprache eingegeben. Durch Simulationen wird überprüft, ob die Spezifikationen eingehalten werden. Waren es in der Vergangenheit häufig kleine integrierte Schaltungen, die zusammen gelötet wurden, so sind es heute überwiegend programmierbare, teilweise hochkomplexe Bausteine, auf denen ein digitales System implementiert wird. Hier dient der Computer, indem er zunächst den Quellcode der Schaltung durch Synthese und Implementierung in eine Programmierdatei für die Zielhardware überführt und anschließend diese Datei auf den programmierbaren Baustein lädt. Schlussendlich hilft der Computer bei der Messung interner Signalzustände der Digitalschaltung, indem die Signale aus dem programmierbaren Baustein ausgelesen werden und diese mit Hilfe einer speziellen Logikanalysator-Software auf dem Bildschirm dargestellt und mit den Simulationen verglichen werden können. Zum Entwurf digitaler Systeme benötigt man also heute neben dem Verständnis des funktionellen und zeitlichen Verhaltens der Logikfunktionen auch die Fertigkeit zur synthesegerechten Modellierung mit einer Hardwarebeschreibungssprache wie z.B. VHDL. Aus der Überzeugung heraus, dass man eine Sprache am besten durch praktische Anwendung erlernt, führe ich in diesem Lehrbuch - parallel zur Vermittlung der Grundkenntnisse zum Entwurf von Digitalschaltungen - die wesentlichen VHDL-Sprachelemente schrittweise ein. In dem vorliegenden Lehrbuch Digitaltechnik habe ich die Lehrinhalte meiner Vorlesung „Digitaltechnik“ sowie einige Abschnitte meiner Lehrveranstaltung „Digitale Systeme“ an der HAW-Hamburg und der German Cairo University (GUC) zusammen gefasst: Nach einer kurzen Einführung in die Modellierungskonzepte von Digitalschaltungen beginnt der Einstieg bei den elementaren Grundlagen, wie Boole’sche Algebra, Logikminimierung, Zahlensysteme und Codes und führt über weitere kombinatorische Logikschaltungen zur getakteten Logik. Dazu gehören neben der Einführung verschiedener Flipflop-Arten der Entwurf von endlichen Zustandsautomaten sowie Zähler- und Schieberegisterschaltungen. Ein Kapitel zur Kommunikation zwischen digitalen Teilsystemen, sowie zwei einführende Kapitel zu digitalen Halbleiterspeichern und programmierbaren Logikbausteinen wie (C)PLDs und FPGAs runden den Lehrstoff ab.

VI

Vorwort

Der Erfolg dieses Konzepts wird mir durch das bei den Lesern anhaltend hohe Interesse an diesem Lehbuch bestätigt, welches nun zum Erscheinen dieser 4. Auflage führte. Darin wurden im Vergleich zur letzten Auflage mit zusätzlichen Abbildungen und Beispielen Klärungen und Vertiefungen von einzelnen Sachverhalten vorgenommen, deren Notwendigkeit mir durch das Feedback der Leser sowie die Lehre an den Hochschulen verdeutlicht wurde. Weiter wurde ein zusätzlicher Abschnitt zum AXI4-Schnittstellenstandard aufgenommen, der beim Austausch von Daten zwischen Teilsystemen eines komplexeren digitalen Systems zunehmende Bedeutung erlangt. Im Anhang stelle ich erstmalig die wesentlichen Erweiterungen und Vereinfachungen vor, die der neueste VHDL-2008 Standard bietet. Weiter wurde in den Anhang eine ausführliche Beschreibung der neuen FPGA-Entwicklungsumgebung Vivado der Fa. Xilinx neu aufgenommen. Mit diesem Werkzeug soll der Leser in die Lage versetzt werden, sich mit Hilfe von Simulationen ein kleines „Digitallabor“ einzurichten, um damit alle vorgestellten VHDL-Codes in diesem Buch simulieren und damit besser nachvollziehen zu können. Nach Kauf eines einfachen FPGA-Entwicklungsboards für etwa 100 € besteht nach Studium dieses Anhangs die zusätzliche Möglichkeit, die Ergebnisse in Hardware umzusetzen bzw. eigene Digitale Schaltungen und Systeme zu entwickeln. Ich danke meinen Kollegen an der HAW-Hamburg für ihre vielfältigen Anregungen zur Gestaltung dieses Lehrbuchs. Die zusammen mit meinem langjährigen Kollegen Prof. Dr. B. Schwarz über viele Jahre hinweg gemeinsam entwickelten Lehrveranstaltungen zur Digitaltechnik waren eine wesentliche Grundlage für Struktur und Inhalte dieses Lehrbuchs. Den vielen Studierenden und Lesern der ersten drei Auflagen sei für ihr kritisch konstruktives Feedback und ihre Toleranz bei der Aufklärung von Fehlern gedankt. Abschließend möchte ich die Lektoren des De Gruyter Oldenbourg Verlags dankend erwähnen, die sich geduldig und kenntnisreich um die Ausgestaltung des Buches gekümmert haben.

Hamburg, Juli 2016

Jürgen Reichardt

Inhaltsverzeichnis Vorwort zur 4. Auflage Inhaltsverzeichnis

V VII

1

Einleitung

1

1.1

Die Hardwarebeschreibungssprache VHDL .............................................................. 3

1.2

Digitale und Analoge Signale .................................................................................... 4

1.3

Digitale Systeme ........................................................................................................ 5

1.4

Gliederung des Buches .............................................................................................. 7

1.5

Vertiefende Aufgaben ................................................................................................ 9

2

Modellierung digitaler Schaltungen

2.1

Lernziele .................................................................................................................. 11

2.2

Entwurfssichten und Abstraktionsebenen ................................................................ 11

2.3 2.3.1 2.3.2 2.3.3

Modellierung mit Hardwarebeschreibungssprachen ................................................ 14 Datenflussmodelle ................................................................................................... 15 Strukturmodelle ....................................................................................................... 15 Verhaltensmodelle ................................................................................................... 16

2.4 2.4.1 2.4.2 2.4.3

Kombinatorische und getaktete Logik ..................................................................... 17 Eigenschaften kombinatorischer Logik ................................................................... 17 Eigenschaften getakteter Logik................................................................................ 18 Modellierung auf Register-Transfer-Ebene ............................................................. 18

2.5

Entwurfsmethodik für programmierbare digitale Schaltungen ................................ 19

2.6

Vertiefende Aufgaben .............................................................................................. 21

3

Boole’sche Algebra

3.1

Lernziele .................................................................................................................. 23

3.2

Schaltvariable und Schaltfunktionen, Signale.......................................................... 23

3.3 3.3.1 3.3.2 3.3.3 3.3.4

Elementare Schaltfunktionen ................................................................................... 24 Die NICHT-Schaltfunktion (Inversion) ................................................................... 25 Die UND-Schaltfunktion (Konjunktion) ................................................................. 25 Die ODER-Schaltfunktion (Disjunktion)................................................................. 26 Boole’sche Funktionen mit mehreren Eingängen .................................................... 26

11

23

VIII

Inhaltsverzeichnis

3.4 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6

Rechenregeln der Schaltalgebra ...............................................................................27 Theoreme ..................................................................................................................27 Kommutativgesetze ..................................................................................................28 Assoziativgesetze......................................................................................................28 Distributivgesetze .....................................................................................................28 De Morgan’sche Gesetze ..........................................................................................29 Vereinfachungsregeln ...............................................................................................30

3.5 3.5.1 3.5.2

Vollständige Systeme ...............................................................................................31 Das Dualitätsprinzip .................................................................................................31 NAND- und NOR-Gatter..........................................................................................31

3.6 3.6.1 3.6.2

Normalformen ..........................................................................................................33 Disjunktive Normalform (DNF) ...............................................................................34 Konjunktive Normalform (KNF) ..............................................................................34

3.7 3.7.1 3.7.2

Realisierung von Schaltfunktionen mit Wahrheitstabellen .......................................35 SOP- und POS-Darstellungen von Wahrheitstabellen in programmierbaren Bausteinen mit UND/ODER-Logik ..........................................................................37 Look-Up-Tabellen ....................................................................................................37

3.8 3.8.1 3.8.2 3.8.3

XOR- und XNOR-Logik ..........................................................................................38 SOP- und POS-Darstellungen...................................................................................38 XOR- und XNOR-Regeln und Gesetze ....................................................................39 XOR- und XNOR-Logik mit mehr als zwei Eingängen ...........................................39

3.9

Vorrangregeln ...........................................................................................................40

3.10

Schaltsymbole...........................................................................................................41

3.11

Implementierung von Schaltfunktionen mit Multiplexern........................................44

3.12

Analyse von Schaltnetzen .........................................................................................45

3.13

Vertiefende Aufgaben...............................................................................................48

4

VHDL-Einführung I

4.1

Lernziele ...................................................................................................................51

4.2

Syntaxnotation ..........................................................................................................51

4.3 4.3.1 4.3.2 4.3.3 4.3.4

Der Aufbau eines VHDL-Modells............................................................................52 Beschreibung einer entity .........................................................................................53 Aufbau einer architecture .........................................................................................55 Nebenläufige Signalzuweisungen .............................................................................55 Logikoperatoren in VHDL .......................................................................................56

4.4

Das Konzept von VHDL-Testbenches .....................................................................63

4.5

Vertiefende Aufgaben...............................................................................................66

5

Zahlensysteme in der Digitaltechnik

5.1

Lernziele ...................................................................................................................70

51

69

Inhaltsverzeichnis

IX

5.2

Polyadische Zahlensysteme ..................................................................................... 70

5.3

Umwandlung zwischen Zahlensystemen ................................................................. 72

5.4

Addition und Subtraktion vorzeichenloser Dualzahlen ........................................... 74

5.5 5.5.1 5.5.2

Darstellung negativer Zahlen ................................................................................... 76 Eigenschaften des 2er-Komplementzahlensystems ................................................. 77 Addition und Subtraktion im 2er-Komplementzahlensystem .................................. 80

5.6 5.6.1 5.6.2

Darstellung rationaler Zahlen .................................................................................. 83 Festkommadarstellung im Q-Format ....................................................................... 83 Gleitkommadarstellung ............................................................................................ 85

5.7

Vertiefende Aufgaben .............................................................................................. 86

6

Logikminimierung

6.1

Lernziele .................................................................................................................. 89

6.2 6.2.1 6.2.2 6.2.3 6.2.4

Minimierung mit KV-Tafeln.................................................................................... 89 Disjunktive Minimalform (DMF) ............................................................................ 90 Konjunktive Minimalform (KMF) ........................................................................... 98 Output-Don’t-Care-Terme ....................................................................................... 99 Grenzen der zweistufigen Minimierung ................................................................ 101

6.3 6.3.1 6.3.2

Softwarealgorithmen zur zweistufigen Minimierung ............................................ 107 Quine-McCluskey-Algorithmus ............................................................................ 107 Espresso-Algorithmus ............................................................................................ 108

6.4

Minimierungskonzepte für FPGAs ........................................................................ 108

6.5

Vertiefende Aufgaben ............................................................................................ 110

7

VHDL-Einführung II

7.1

Lernziele ................................................................................................................ 113

7.2

Das VHDL-Prozesskonzept ................................................................................... 113

7.3

Ereignisgesteuerte Simulatoren ............................................................................. 115

7.4

Verzögerungsmodelle ............................................................................................ 119

7.5 7.5.1 7.5.2

Sequenzielle Anweisungen in Prozessen ............................................................... 121 case-Anweisung ..................................................................................................... 121 if-Anweisung ......................................................................................................... 122

7.6

Prozesse ohne Sensitivityliste ................................................................................ 127

7.7

Verwendung von Variablen in Prozessen .............................................................. 127

7.8

Modellierungsbeispiel ............................................................................................ 129

7.9

Lesen und Schreiben von Dateien in Testbenches ................................................. 133

7.10

Vertiefende Aufgaben ............................................................................................ 135

89

113

X

Inhaltsverzeichnis

8

Codes

137

8.1

Lernziele .................................................................................................................137

8.2

Charakterisierung und Klassifizierung ...................................................................137

8.3

Zahlencodes ............................................................................................................138

8.4

Code für die Längen- und Winkelmesstechnik .......................................................142

8.5

Methoden der Fehlererkennung und -korrektur ......................................................143

8.6

Vertiefende Aufgaben.............................................................................................146

9

Physikalische Implementierung und Beschaltung von Logikgattern

9.1

Lernziele .................................................................................................................149

9.2 9.2.1 9.2.2 9.2.3

Logikgatter in CMOS-Technologie ........................................................................149 CMOS-Technologie und Kennlinien der MOS-Transistoren .................................149 Aufbau und Kennlinien eines CMOS-Inverters ......................................................151 Pegelbereiche digitaler Logikfamilien ....................................................................153

9.3

Logikzustände und elektrische Pegel......................................................................155

9.4

Statische CMOS-Logikgatter..................................................................................157

9.5 9.5.1 9.5.2 9.5.3

Beschaltung von Gatterausgängen ..........................................................................158 Standardausgang .....................................................................................................158 Open-Drain- / Open-Collector-Ausgang ................................................................159 Three-State-Ausgang ..............................................................................................162

9.6 9.6.1 9.6.2 9.6.3

VHDL-Modellierung mit den Datentypen std_ulogic und std_logic ......................165 Mehrwertige Datentypen ........................................................................................165 Datentypen mit Auflösungsfunktion.......................................................................166 VHDL-Modellierungsbeispiele ..............................................................................168

9.7

Vertiefende Aufgaben.............................................................................................172

10

Datenpfadkomponenten

10.1

Lernziele .................................................................................................................176

10.2

Multiplexer .............................................................................................................176

10.3

Binärzahlendecoder und Demultiplexer .................................................................178

10.4

Prioritätsencoder .....................................................................................................181

10.5

Code-Umsetzer .......................................................................................................183

10.6

Komparator .............................................................................................................186

10.7

Hierarchische Strukturmodellierung in VHDL .......................................................186

10.8 10.8.1 10.8.2 10.8.3

Addierer ..................................................................................................................189 Halb- und Volladdierer ...........................................................................................189 Ripple-Carry-Addierer............................................................................................193 Carry-Lookahead-Addierer.....................................................................................196

149

175

Inhaltsverzeichnis

XI

10.8.4 10.8.5

Kombinierter Addierer/Subtrahierer ...................................................................... 199 Addition von Festkommazahlen im Q-Format ...................................................... 199

10.9

Hardware-Multiplizierer ........................................................................................ 201

10.10

Arithmetik in VHDL .............................................................................................. 203

10.11

Vertiefende Aufgaben ............................................................................................ 208

11

Latches und Flipflops in synchronen Schaltungen

11.1

Lernziele ................................................................................................................ 212

11.2 11.2.1 11.2.2

Das RS-Latch ......................................................................................................... 213 Basis-RS-Latch ...................................................................................................... 213 Taktzustandsgesteuertes RS-Latch ........................................................................ 218

11.3

Das D-Latch (Data-Latch) ..................................................................................... 220

11.4

D-Flipflops ............................................................................................................. 223

11.5

JK-Flipflop ............................................................................................................. 232

11.6

T-Flipflop ............................................................................................................... 233

11.7

Zweispeicher-Flipflops .......................................................................................... 234

11.8

RTL-Modellierung synchroner Schaltungen.......................................................... 236

11.9

Zusammenfassung ................................................................................................. 239

11.10

Vertiefende Aufgaben ............................................................................................ 239

12

Entwurf synchroner Zustandsautomaten

12.1

Lernziele ................................................................................................................ 246

12.2

Formale Beschreibung von Zustandsautomaten .................................................... 246

12.3 12.3.1 12.3.2 12.3.3

Entwurf eines Geldwechselautomaten ................................................................... 249 Realisierung als Mealy-Automat ........................................................................... 249 Realisierung als Moore-Automat ........................................................................... 259 Medwedew-Automatenstruktur ............................................................................. 264

12.4 12.4.1 12.4.2

Impulsfolgeerkennung mit Zustandsautomaten ..................................................... 264 Implementierung als Moore-Automat .................................................................... 265 Implementierung als Mealy-Automat .................................................................... 267

12.5

Kopplung von Zustandsautomaten......................................................................... 270

12.6

Vertiefende Aufgaben ............................................................................................ 272

13

Entwurf von Synchronzählern

13.1

Lernziele ................................................................................................................ 275

13.2 13.2.1 13.2.2

Manuelle Implementierung von Zählern................................................................ 276 mod-5-Zähler ......................................................................................................... 276 mod-4-Vorwärts-/Rückwärtszähler........................................................................ 281

211

245

275

XII

Inhaltsverzeichnis

13.3 13.3.1 13.3.2 13.3.3

Standardzähler ........................................................................................................285 Abhängigkeitsnotation ............................................................................................285 Systematischer VHDL-Entwurf von Zählern .........................................................287 Kaskadierung von Standardzählern ........................................................................291

13.4

Vertiefende Aufgaben.............................................................................................293

14

Schieberegister

14.1

Lernziele .................................................................................................................297

14.2

Arbeitsweise von Schieberegistern .........................................................................297

14.3

Serien-Parallel-Umsetzer ........................................................................................299

14.4

Parallel-Serien-Umsetzer ........................................................................................301

14.5 14.5.1 14.5.2

Zähler mit Schieberegistern ....................................................................................304 Ringzähler...............................................................................................................305 Johnson-Zähler .......................................................................................................307

14.6

Linear rückgekoppelte Schieberegister ...................................................................309

14.7

Vertiefende Aufgaben.............................................................................................312

15

Kommunikation zwischen digitalen Teilsystemen

15.1

Lernziele .................................................................................................................315

15.2 15.2.1 15.2.2

Kopplung von Signalen in zueinander synchronen Taktdomänen ..........................316 Impulsverkürzung ...................................................................................................316 Impulsverlängerung ................................................................................................317

15.3 15.3.1 15.3.2 15.3.3

Synchronisation asynchroner Eingangssignale .......................................................321 Synchronisation langer Eingangsimpulse ...............................................................321 Synchronisation kurzer Eingangsimpulse ...............................................................325 Asynchrone Resets .................................................................................................326

15.4 15.4.1 15.4.2

Datenaustausch zwischen Teilsystemen .................................................................328 Synchrone Datenübertragung .................................................................................329 Asynchrone Datenübertragung ...............................................................................331

15.5 15.5.1 15.5.2

Der AXI4-Interfacestandard ...................................................................................340 Übersicht.................................................................................................................340 Das AXI4-Stream Interface ....................................................................................340

15.6

Vertiefende Aufgaben.............................................................................................343

16

Digitale Halbleiterspeicher

16.1

Lernziele .................................................................................................................345

16.2 16.2.1 16.2.2 16.2.3

Übersicht.................................................................................................................345 Klassifizierung ........................................................................................................345 Speicherstrukturen ..................................................................................................346 Kenngrößen ............................................................................................................348

16.3 16.3.1

Nichtflüchtige Speicher ..........................................................................................349 Maskenprogrammierbares ROM ............................................................................349

297

315

345

Inhaltsverzeichnis

XIII

16.3.2 16.3.3 16.3.4 16.3.5

PROM .................................................................................................................... 351 EPROM.................................................................................................................. 351 EEPROM und Flash-EEPROM ............................................................................. 352 Instanziierung von ROM-Strukturen durch VHDL-Code ...................................... 353

16.4 16.4.1 16.4.2 16.4.3 16.4.4

Flüchtige Speicher ................................................................................................. 354 SRAMs .................................................................................................................. 354 DRAMs .................................................................................................................. 357 SDRAM und DDR-RAM ...................................................................................... 360 Modellierung von SRAM-Speicher in VHDL ....................................................... 361

16.5

FIFO-Speicher ....................................................................................................... 365

16.6

Speichererweiterung .............................................................................................. 372

16.7

Vertiefende Aufgaben ............................................................................................ 375

17

Programmierbare Logik

17.1

Lernziele ................................................................................................................ 377

17.2

PLD-Architekturen ................................................................................................ 377

17.3 17.3.1 17.3.2 17.3.3

SPLDs .................................................................................................................... 379 PROM-Speicher ..................................................................................................... 379 PLAs ...................................................................................................................... 383 PALs ...................................................................................................................... 384

17.4

CPLDs ................................................................................................................... 390

17.5 17.5.1 17.5.2

FPGAs ................................................................................................................... 393 Die Spartan-3-FPGA-Familie der Fa. Xilinx ......................................................... 395 Technologische Entwicklungstrends bei FPGAs ................................................... 402

17.6

Vertiefende Aufgaben ............................................................................................ 403

18

Anhang

18.1

Erweiterungen durch den Standard VHDL-2008 ................................................... 405

18.2 18.2.1 18.2.2 18.2.3 18.2.4 18.2.5

Hinweise zur Verwendung der Vivado WebPACK Entwicklungsumgebung ...... 418 Konfiguration eines RTL-Projektes in Vivado ...................................................... 419 Funktionale Simulation des VHDL-Codes ............................................................ 423 Synthese und Implementierung.............................................................................. 427 Hardwaredownload und Test ................................................................................. 431 Entwurf getakteter Schaltungen mit Vivado .......................................................... 434

18.3 18.3.1 18.3.2

Hinweise zur Verwendung von ModelSim ............................................................ 440 ModelSim Hilfesystem .......................................................................................... 440 Entwicklungsablauf mit ModelSim ....................................................................... 440

18.4

VHDL-Codierungsempfehlungen .......................................................................... 452

19

Literaturverzeichnis

457

20

Sachregister

461

377

405

1

Einleitung

Warum schon wieder ein neues Lehrbuch zur Digitaltechnik? Diese Frage wurde mir zu Beginn dieses Buchprojektes einige Male gestellt. Die daraus resultierenden Gespräche mit Kollegen haben deutlich zu Tage gebracht, dass vielfältige Gründe für ein neues Buchkonzept vorliegen, die ich im Folgenden skizzieren werde.

)

2013

2009

2005

2001

1997

1993

1989

1985

1981

(

Entwickler-Produktivität 1000 Transistoren/Person/Monat

) (

MillionenTransistoren pro Chip

Integrationsgrad

Obwohl die Grundlagen der Digitaltechnik im letzten Jahrzehnt weitgehend unverändert blieben, so haben sich die Vorlesungs- und Praktikumsinhalte in diesem Fach an den Hochschulen in den letzten Jahren doch erheblich verändert. Dies liegt an neuen Methoden, die sich beim Entwurf digitaler Schaltungen und Systeme weitgehend durchgesetzt haben. Eine digitale Schaltung wird nur noch im Ausnahmefall mit diskreten Logikbausteinen aufgebaut und deren Funktion auf einer Platine nachträglich überprüft. Die stark gestiegenen Anforderungen an die Komplexität digitaler Systeme, zusammen mit den Anforderungen eines geringen Platzbedarfs und niedriger Stromaufnahme haben dazu geführt, dass in umfassendem Maße reprogrammierbare Bausteine zur Implementierung digitaler Logikfunktionen eingesetzt werden.

Bild 1.1: Entwicklung des Integrationsgrads digitaler Schaltungen (gestrichelte Linie) und Entwurfsproduktivität der Schaltungsentwickler (durchgezogene Linie). Wesentliche Veränderungen der Entwurfsmethoden sind dargestellt (nach [28])

Eine wesentliche Kraft zur Veränderung der Entwurfsverfahren war und ist bis heute das unter dem Begriff „Design Productivity Gap“ zusammengefasste Problem, dass die Produktivität der Schaltungsentwickler nicht mehr mit den technologischen Möglichkeiten bei der Halbleiterfertigung Schritt halten kann (vgl. Bild 1.1). Während durch umfangreiche technologische Innovationen der Integrationsgrad von der Medium Scale Integration MSI mit einigen 1000 Transis-

2

1 Einleitung

toren pro Chip Anfang der 1980er-Jahre über die Very Large Scale Integration VLSI auf die heutige Ultra Large Scale Integration ULSI mit einem mittleren jährlichen Produktivitätszuwachs etwa 60% auf mehr als 1 Milliarde Transistoren pro Chip angestiegen ist, konnte die Entwicklerproduktivität nicht in diesem Maße gesteigert werden. Obwohl damals bereits von jedem Entwickler pro Monat nur etwa hundert Transistoren entworfen und verdrahtet wurden und dies heute im Mittel mehr als Hunderttausend sind, reicht die jährliche Steigerung der Entwicklerproduktivität von ca. 21% bei Weitem nicht aus, um den technologischen Fortschritt ausschöpfen zu können. Wie Bild 1.1 zeigt, ist die enorme Verbesserung der Entwicklerproduktivität auf die Einführung neuer Methoden des Digitalentwurfs zurückzuführen. Dabei übernehmen Softwarewerkzeuge nicht nur die Platzierung und Verdrahtung sowie die Optimierung der Logik, sondern sie werden auch eingesetzt, um aus „Programmierdateien“, die das gewünschte Verhalten einer Schaltung beschreiben, weitgehend automatisch eine Schaltungsimplementierung zu generieren. Für den Entwurf moderner digitaler Systeme, die auf einem Chip mehrere miteinander kommunizierende Prozessorelemente besitzen, wurden in den letzten Jahren unter der Bezeichnung ESL (Electronic-System-Level) [52] besondere Entwurfsmethoden entwickelt bei denen die Entwurf der Hard- und Prozessorsoftware in der gleichen Entwicklungsumgebung angestrebt wird. Bild 1.1 zeigt auch, dass in Zukunft dringend weitere Innovationen bei den Entwurfsverfahren benötigt werden, wenn der Abstand zum technologischen Fortschritt bei der Halbleiterfertigungstechnik nicht noch größer werden soll. Nun wird von Studierenden, die eine Grundlagenvorlesung in Digitaltechnik absolviert haben, sicher nicht erwartet, dass sie in der Lage sind, Digitalschaltungen mit einer derartigen Komplexität zu entwerfen, allerdings werden heute durchaus verbreitet im Rahmen von Diplom- oder Masterarbeiten Digitale Systeme mit mehr als 100.000 Transistoren entworfen. Entsprechend hat dieses Lehrbuch den Anspruch, neben den unabdingbaren Grundlagen der Digitaltechnik auch eine Einführung in die Verhaltensbeschreibung digitaler Schaltungen mit der Hardwarebeschreibungssprache VHDL (Very High Speed Integrated Circuit Hardware Description Language) auf Register-Transfer-Abstraktionsniveau (Register-Transfer-Level, RTL) zu geben. Eine Einführung in die Synthese von Systemachitekturen (High-LevelSynthese) muss dagegen weiterführenden Lehrveranstaltungen und entsprechender Literatur zum Entwurf Digitaler Systeme überlassen bleiben [7], [15]. Für dieses, in meiner Lehre bereits seit vielen Jahren eingesetzte Konzept existieren nach meiner Überzeugung bisher keine geeigneten deutschsprachigen Lehrbücher. Die bisher auf dem Buchmarkt erhältlichen Lehrbücher behandeln die Einführung in VHDL in der Regel überwiegend in ergänzenden Kapiteln und nicht als integralen Bestandteil bei der Vermittlung der digitaltechnischen Konzepte. Das nun vorliegende Lehrbuch, welches sich aus den Lehrveranstaltungen Digitaltechnik und Digitale Systeme speist, die von mir seit vielen Jahren an der Hochschule für Angewandte Wissenschaften Hamburg gehalten werden, soll diese Lücke füllen: Grundkonzepte der Hardwarebeschreibungssprache VHDL werden in nur zwei speziellen Kapiteln eingeführt, weitere syntaktische und semantische Erweiterungen dieser Sprache werden jeweils direkt im Zusammenhang mit dem Grundwissen über die digitalen Grundbausteine vermittelt. Entsprechend kann das Lehrbuch auch nicht den Anspruch auf eine vollständige VHDLDarstellung erfüllen. Dazu gehört auch, dass die VHDL-Konstrukte überwiegend mit Beispielen und nicht durch vollständige Syntaxbeschreibungen vorgestellt werden.

1.1 Die Hardwarebeschreibungssprache VHDL

3

Dieses Lehrbuch kann somit als Kompromiss zwischen einem Standardlehrbuch zur Digitaltechnik und einem Lehrbuch zur Einführung von VHDL aufgefasst werden. Dabei musste selbstverständlich auf einige Vertiefungen, wie sie sich z.B. in [5] und [6] finden, verzichtet werden. Ich bin jedoch davon überzeugt, dass die gewählte Stoffauswahl einen guten Kompromiss darstellt. Die im Buch gewählten Anwendungsbeispiele sind durch das Symbol herausgehoben, sie wurden unter dem Aspekt ausgewählt, dass sie einen praktischen Bezug zu wichtigen Grundschaltungen der Digitaltechnik haben. Dabei konnte leider nicht in allen Fällen vermieden werden, dass ein Vorgriff auf Lehrinhalte erfolgte, die erst an späterer Stelle des Lehrbuchs umfassend erläutert werden. In jedem Fall wurde jedoch versucht, die notwendigen Informationen bereits an dieser Stelle zu vermitteln. An einigen Stellen des Textes sind markierte Aufgaben eingebettet, mit denen das gerade Erlernte verdurch das Symbol tieft werden soll. Durch das Symbol sind Tipps markiert, die den Lehrstoff in einem erweiterten Zusammenhang erscheinen lassen. Das Ende derartiger Einschübe ist durch das Symbol  gekennzeichnet.

1.1

Die Hardwarebeschreibungssprache VHDL

Als Hardwarebeschreibungssprachen weit verbreitet sind VHDL und Verilog [23]. Letztere ist integraler Bestandteil der umfassenden und entsprechend teuren Entwicklungssoftware, die in international agierenden Unternehmen eingesetzt wird. Im Gegensatz dazu gibt es im Bereich der kleinen und mittelständischen Unternehmen sowie der europäischen Hochschulen eine deutliche Präferenz für VHDL. Bei der Darstellung von VHDL in diesem Lehrbuch werden vorwiegend solche Sprachkonstrukte vorgestellt, die auch synthesefähig sind, für die also durch Hardwarecompiler eine Datei für reprogrammierbare Digitalhardware erstellt werden kann. Trotz der als „Programmiersprache“ erscheinenden VHDL-Syntax sollte sich der Hardwareentwickler jedoch immer vor Augen führen, dass VHDL eine Sprache ist, die ein digitales System beschreiben soll. Dies beinhaltet die Modellierung der Nebenläufigkeit der verschiedenen Funktionen eines Designs, also die gleichzeitige Ausführung unterschiedlicher Hardwareaktionen. Diese Nebenläufigkeit bereitet dem Neuling, der in der Regel bereits Erfahrung mit prozeduralen oder objektorientierten Programmiersprachen wie z.B. C, C++ oder Java besitzt, erfahrungsgemäß anfangs einige Schwierigkeiten. Da es für die verwendeten Hardwarecompiler spezielle VHDL-Codierungsempfehlungen gibt, die durch die IEEE-Norm 1076.3 [12] definiert sind, und in denen nicht der vollständige VHDL-Sprachumfang genutzt werden kann, empfiehlt es sich, die in diesem Lehrbuch vorgestellten VHDL-Beispiele als Entwurfsmuster (Templates) für die Standardbauelemente der Digitaltechnik aufzufassen: Der fortgeschrittene Hardwaredesigner sollte weiter in Standardkomponenten wie einfachen Boole’schen Logikbausteinen (Logikgattern), komplexeren De-, Multiplexern etc. sowie diversen Ausführungsformen von Flipflops (Registern), Zählern, Zustandsautomaten und Speichern denken, er sollte aber auch die Templates verinnerlicht haben, mit denen sich diese Funktionen in VHDL synthesegerecht modellieren lassen. Die langjährige Praxis mit Studierenden sowie das Feedback der Praktiker in der Industrie haben gezeigt, dass die Einhaltung einiger wesentlicher Codierungsrichtlinien einen VHDL-Code mit übereinstimmender Simulations- und Synthesesemantik garantiert und somit einen Entwurfsablauf gewährleistet, der frei von Überraschungen ist.

4

1.2

1 Einleitung

Digitale und Analoge Signale

Die Digital- hat ebenso wie die Analogtechnik die Aufgabe, Signale zu verarbeiten. Dabei dienen die Signale der Erfassung, Speicherung und Verarbeitung von Nachrichten. Die durch Sensoren erfassten Signale beschreiben physikalische Größen wie Spannung, Strom, Kraft, Druck, Frequenz usw. und erzeugen in der Regel ein analoges Ausgangssignal, welches durch Analog/Digital-Umsetzer digitalisiert wird. Die digital verarbeiteten Signale werden an Anzeigen weitergeleitet oder durch Digital/Analog-Umsetzer rückgewandelt, so dass analog operierende Aktoren daraus wieder eine physikalische Größe machen können. Charakteristisch für analoge Signale ist der kontinuierliche Signalwertbereich zwischen zwei sensorbedingten Grenzwerten. Im Gegensatz dazu besitzen digitale Signale nur eine endliche Zahl diskreter Werte. Voraussetzung für die digitaltechnische Verarbeitung physikalischer Signale ist also eine Wertdiskretisierung, die im Analog/Digital-Umsetzer mit gestufter Übertragungscharakteristik vorgenommen wird.

Bild 1.2: Diskretisierung eines wertkontinuierlichen Analogsignals durch eine Kennlinie mit schrittweiser Übertragungscharakteristik

Wie Bild 1.2 zeigt, wird immer ein ganzer Bereich von Analogwerten auf einen Digitalwert abgebildet. Dies bedeutet einen Informationsverlust, der als Quantisierungsfehler bezeichnet wird, denn nach der Wertdiskretisierung ist unklar, auf welchen Analogwert innerhalb eines Quantisierungsintervalls das Digitalsignal ursächlich zurückzuführen war. Dieser prinzipielle Nachteil der digitalen Signalverarbeitung wird aber dadurch gemildert, dass die Anzahl der verwendeten diskreten Digitalwerte vergrößert wird. Im Vergleich zur Analogtechnik besitzt die Digitaltechnik den wesentlichen Vorzug, dass in den allermeisten Fällen letztlich nur die zwei Signalzustände 0 und 1 verwendet werden. Dies hat Vorteile für:  Eine sichere Reproduzierbarkeit und garantierte Rauschfreiheit,  hohe Langzeitstabilität,

1.3 Digitale Systeme

5

 Reprogrammierbarkeit,  sichere Datenübertragung,  eine hohe Datenkompressionsrate. Neben der Wertdiskretisierung ist in der Digitaltechnik auch die Zeitdiskretisierung bedeutsam. Bei einem zeitdiskreten digitalen Signal ist garantiert, dass der wertdiskrete Signalwert für eine gewisse Zeit konstant bleibt. Dies erfordert die Vorgabe eines Arbeitstaktes bei der Verarbeitung der digitalen Signale. Digitale Systeme, die einen, meist mit „Clock“ bezeichneten Arbeitstakt besitzen, werden als synchrone Systeme bezeichnet und der Takt, mit dem der Analog/Digital-Umsetzer arbeitet, wird als Abtasttakt bezeichnet.

1.3

Digitale Systeme

Die Bedeutung digitaler Systeme hat in den letzten Jahren im Vergleich zu analogen Systemen erheblich zugenommen. Dafür sind drei Gründe ausschlaggebend:  Technologische Fortschritte bei der Technologie von Analog/Digital-Umsetzern, die es erlauben, mit höheren Abtastfrequenzen zu arbeiten.  Eine zunehmende Strukturverkleinerung bei gleichzeitigem Preisverfall in der Halbleiterindustrie.  Technologische Fortschritte bei Verfahren zur effizienten Kompression digitaler Daten. Daher wurden in den letzten Jahren viele vormals analog operierende Systeme auf Digitaltechnologie umgestellt sowie die Komplexität vorhandener digitaler Systeme systematisch erweitert (vgl. Bild 1.3).

Bild 1.3: Zeitleiste zur Einführung digitaler Systemlösungen

In dem vorliegenden Buch zur Digitaltechnik sollen die Grundlagen zum Entwurf digitaler Systeme vermittelt werden. Dabei geht es nicht nur darum, grundlegende Konzepte zu vermitteln, vielmehr sollte sich der Leser beim Durcharbeiten dieses Lehrbuchs eine Wissensbibliothek mit den verschiedenen Grundbausteinen der Digitaltechnik anlegen. Für jeden dieser Bausteine sollten nach Durcharbeiten dieses Lehrbuchs die folgenden Informationen hinterlegt sein:  Die Funktion des Bausteins  Das zeitliche Ansteuerverhalten des Bausteins: Welche Signale müssen zu welchem Zeitpunkt am Eingang anliegen, welche Signale erscheinen zu welchem Zeitpunkt am Ausgang?  Ein synthesefähiges Entwurfsmuster für den VHDL-Code

6

1 Einleitung

Exemplarisch soll nachfolgend an einem Beispiel der digitalen Bildbearbeitung erläutert werden, um welche Klassen digitaler Hardware es sich dabei handelt: Ein reprogrammierbarer digitaler Hardwarebaustein (z.B. ein Field Programmable Gate Array, FPGA) hat die Aufgabe, den Kontrast der Bilder einer Kamera unter Echtzeitbedingungen so zu verstärken, dass ein über einen PCI-Bus angeschlossener PC diese weiterverarbeiten kann (vgl. Bild 1.4).

a)

b)

Bild 1.4: Kontrastarmes Kamerasignal a) und Ergebnis der Kontrastverstärkung b)

Bild 1.5: Häufigkeitsverteilung der Grauwerte im Quellbild a) und nach der Kontrastverstärkung b)

249

241

233

225

217

209

201

193

185

177

169

161

153

145

137

129

97

121

89

113

105

81

73

65

57

49

41

33

25

17

9

1

249

241

233

225

217

209

201

193

185

177

169

161

153

145

137

129

97

121

113

89

105

81

73

65

57

49

41

9

33

25

17

1

Häufigkeit

Häufigkeit

Da die Kamera die einzelnen Bildpunkte (Pixel) als Grauwertsignal zwischen 0 (schwarz) und 255 (weiß) nicht über den ganzen Wertebereich liefert, besteht die Aufgabe, die schmale Grauwertverteilung des Quellbilds a) so zu strecken, dass der gesamte Grauwertbereich genutzt wird. Bild 1.5 zeigt die Grauwertverteilung der Pixel aus Bild 1.4a sowie die entsprechende Verteilung nach der Bearbeitung durch den FPGA-Baustein. Die in dem FPGA verwendete Hardwarearchitektur zum Grauwertausgleich zeigt Bild 1.6.

1.4 Gliederung des Buches

7

Bild 1.6: Architektur zur Kontrastverstärkung eines Grauwertsignals

Ohne hier auf Details eingehen zu wollen, sind dennoch typische Elemente eines digitalen Systems erkennbar, deren Eigenschaften in den nachfolgenden Kapiteln erläutert werden:     

Kombinatorische Logik Addierer und Subtrahierer Speicher mit bidirektionalen Busschnittstellen Zähler und Schieberegister Zustandsautomaten

1.4

Gliederung des Buches

Im nachfolgenden Kap. 2 werden zunächst einige Grundbegriffe zum Verständnis der Entwurfsmethodik für digitale Systeme erläutert. Dazu gehören insbesondere Modellierungskonzepte, ohne die heute kein komplexes digitales System mehr auskommt. In vier Kapiteln werden die wesentlichen Grundlagen zum Entwurf kombinatorischer Schaltungen gelegt, die in keinem Lehrbuch der Digitaltechnik fehlen dürfen. Dazu gehören die Gesetze und Methoden beim Entwurf mit einfachen Logikgattern (Boole’sche Algebra, Kap. 3), die Beschreibung der in der Digital- und Mikroprozessortechnik verwendeten Zahlensysteme (Kap. 5) sowie die Beschreibung von Methoden zum Entwurf von kombinatorischen Digitalschaltungen mit minimalem Hardwareaufwand (Kap. 6). Die Definition von Code-Kenngrößen sowie die Erläuterung einiger häufig verwendeter Codes der Digitaltechnik in Kap. 8 zählen ebenfalls zu den Grundlagen der kombinatorischen Schaltungstechnik. Quasi „zwischendurch“, nämlich in den Kap. 4 und 7 erfolgt eine grundlegende Einführung in die Konzepte der Hardwarebeschreibungssprache VHDL, wobei zunächst der Schwer-

8

1 Einleitung

punkt auf die Hardwaremodellierung mit nebenläufigen Anweisungen gelegt wird und in Kap. 7 das allgemein gültige Konzept der Modellierung mit Prozessen erläutert wird. In den nachfolgenden Kapiteln werden an Hand konkreter Beispiele immer mehr VHDLSyntaxkonstrukte eingeführt, wobei das Ziel darin besteht, typische Entwurfsmuster für die in der Digitaltechnik verwendeten Hardwarekomponenten zu erlernen. Das Kap. 9 beschreibt die physikalische Implementierung und Beschaltung von CMOSLogikgattern. Ausgehend vom Aufbau und den Kennlinien von MOS-Transistoren wird zunächst das Umschaltverhalten des CMOS-Inverters und nachfolgend die Struktur einfacher Logikgatter erläutert. Neben den Pegelbereichen aktueller Logikfamilien werden drei verschiedene Ausgangsschaltungen von CMOS-Gattern vorgestellt und diese auch in VHDL modelliert. Mit dem Kap. 10 wird die Ebene einfacher Logikgatter verlassen und es erfolgt eine Beschreibung komplexerer kombinatorischer Komponenten, die sich üblicherweise im „Datenpfad“ eines digitalen Systems befinden. Dazu gehört neben Multiplexern, Demultiplexern und Prioritätsencodern auch Arithmetikhardware wie Komparatoren, Addierer und Multiplizierer. Diese Komponenten werden unter Einführung neuer VHDL-Syntaxkonstrukte durch geeignete Entwurfsmuster modelliert. Die weiteren Kap. 11 bis 14 sind der Beschreibung bzw. Modellierung sequenzieller Schaltungen mit Speicherverhalten und getakteter Hardware gewidmet: Aufbauend auf taktzustandsgesteuerten Latches werden in Kap. 11 zunächst die flankengesteuerten Flipflops eingeführt. Diese dienen nicht nur als Grundlage für den Entwurf endlicher Zustandsautomaten, dessen Konzepte in Kap. 12 vermittelt werden, sondern auch für den Entwurf von Synchronzählern (Kap. 13) und Schieberegistern (Kap. 14). Bei den in diesen Kapiteln vorgestellten VHDL-Konzepten steht eine synthesegerechte Modellierung im Vordergrund, die insbesondere das Taktflankenverhalten korrekt abbildet. Im Kap. 15 wird die Sicht auf den Austausch zwischen digitalen Teilsystemen erweitert, die eventuell auch mit unterschiedlichen Taktsignalen betrieben werden. Auch Fragen der Initialisierung bzw. des Rücksetzens von Flipflops werden in diesem Kapitel diskutiert. Abschließend werden in den Kapiteln 16 und 17 der innere Aufbau und das Verhalten digitaler Halbleiterspeicher bzw. programmierbarer Logik vorgestellt. Auf diese Bausteine wird an mehreren Stellen des Buches verwiesen. Daher wird dem Leser empfohlen, sich während des Durcharbeitens der anderen Kapitel vertiefende Informationen hier zu holen. Als Beispiel für die laufende Weiterentwicklung der VHDL-Synthesestandards enthält Kap. 16 auch synthesegerechte VHDL-Modelle zur Implementierung von RAM- und ROM-Speichern auf FPGAs. Im Anhang 18 findet der Leser zunächst eine Übersicht über Erweiterungen und Vereinfachungen die sich aus der Anwendung des neuesten Standards VHDL-2008 ergeben. Außerdem findet sich dort neben einer Einführung in die Nutzung des VHDL-Simulators ModelSim eine Zusammenfassung der in diesem Buch vorgestellten wesentlichen Codierungsrichtlinien, die einen synthesegerechten VHDL-Entwurf digitaler Schaltungen sicherstellen.

1.5 Vertiefende Aufgaben

1.5

9

Vertiefende Aufgaben Aufgabe 1.1

Beantworten Sie die folgenden Verständnisfragen: a) b) c) d)

Was versteht man unter dem Begriff „Design Productivity Gap“? Welche Maßnahmen wurden in der Vergangenheit aus dem damit beschriebenen Konflikt abgeleitet? Worin unterscheiden sich digitale und analoge Signale? Welche Vorteile bieten digitaltechnische Systemlösungen im Vergleich zu analogen? Wodurch ist ein synchrones System gekennzeichnet? 

2

Modellierung digitaler Schaltungen

In diesem einführenden Kapitel sollen grundlegende Konzepte des Entwurfs digitaler Schaltungen vorgestellt werden, zu denen insbesondere die Modellierung mit Hardwarebeschreibungssprachen zählt. Dabei werden Begriffe erläutert, die zum Verständnis eines modernen digitalen Systementwurfs erforderlich sind.

2.1

Lernziele

Nach Durcharbeiten dieses Kapitels sollen Sie  das Y-Modell des Entwurfsablaufs für digitale Systeme kennen und wissen, dass bei einem Entwurf verschiedene Sichten und unterschiedliche Abstraktionsebenen betrachtet werden müssen;  die Bedeutung der Modellierung durch Hardwarebeschreibungssprachen verstanden haben und die unterschiedlichen Modellierungsstile kennen;  die grundlegenden Eigenschaften kombinatorischer und getakteter Logik kennen;  das Konzept der Modellierung auf Register-Transfer-Ebene verstanden haben;  die wesentlichen Schritte zum Entwurf programmierbarer Digitalschaltungen kennen.

2.2

Entwurfssichten und Abstraktionsebenen

Der Entwurf einer digitalen Schaltung bzw. eines digitalen Systems bedeutet die Umsetzung einer Produktidee in eine produktionsfähige Beschreibung. Da die Herstellung weitgehend rechnergestützt erfolgt, wird dies in der Regel eine während des Entwicklungsprozesses erstellte Implementierungsdatei sein, die während der Fertigung von einer geeigneten Software interpretiert wird. Diese Datei kann z.B. enthalten:  Informationen zur Herstellung eines Platinenlayouts,  Daten zur Programmierung von programmierbaren Logikbausteinen wie CPLDs und FPGAs (vgl. Kap. 17),  Informationen zur Maskenherstellung beim Entwurf einer applikationsspezifischen integrierten Schaltung (Application Specific Integrated Circuit, ASIC).

12

2 Modellierung digitaler Schaltungen

Selbstverständlich unterliegt auch der Entwurfsprozess einem erheblichen Konkurrenz- und Kostendruck. Entwurfsfehler, die durch eine geänderte Implementierungsdatei (Redesign) behoben werden müssen, sind meist sehr kostenintensiv und sollten daher unbedingt vermieden werden. Die anzustrebende Vorgehensweise setzt daher einen umfassenden Einsatz von Simulationswerkzeugen voraus. Diese interpretieren Modelle der zu implementierenden Schaltung bzw. des Systems, die entweder in einer Programmiersprache wie z.B. C oder C++, oder aber in einer geeigneten Hardwarebeschreibungssprache (Hardware Description Language, HDL) erstellt wurden. Selbstverständlich ist dabei zu berücksichtigen, dass ein Modell immer nur Teilaspekte des Schaltungsverhaltens modellieren kann. Dabei müssen während des Entwurfsprozesses unterschiedliche Sichten betrachtet werden:  das Verhalten der Schaltung bzw. des Systems,  die Strukturierung des Systems in Teilaufgaben,  die geometrisch-physikalische Anordnung der zur Lösung von Teilaufgaben verwendeten Komponenten. In dem von D.D. Gajski [22] eingeführten Y-Diagramm des Entwurfsprozesses werden diese Sichten grafisch durch drei Achsen dargestellt (vgl. Bild 2.1).

Bild 2.1: Darstellung der Entwurfsschritte im Y-Diagramm

Digitalschaltungen sind wesentlicher Bestandteil nicht nur von Mikroprozessoren, sondern auch von Geräten für Kommunikations- bzw. Konsumeranwendungen, wie z.B. Mobiltelefonen, Videospielkonsolen, portablen Media-Playern oder Satellitennavigationsgeräten. Üblicherweise besitzen diese Anwendungen einen oder mehrere Prozessoren, von denen einer oder mehrere Software-programmierbar sind. Die Entwurfsaufgabe besteht also aus einem Software- wie einem Hardwareentwurf (Hardware-Software-Codesign). Die Komplexität derartiger Anwendungen erlaubt es mit den heute zur Verfügung stehenden Digitalsimulatoren nicht, alle Detaileigenschaften des Systems mit einem einzelnen Simulationsmodell nachzubilden, vielmehr ist es insbesondere zu Beginn der Systementwicklung erforderlich, das Gesamtsystem auf einer höheren und damit abstrakteren Ebene zu modellieren, welche

2.2 Entwurfssichten und Abstraktionsebenen

13

wesentliche Detailfragen bewusst offen lässt. Eine derartige Systemsimulation ist die Grundlage für Entscheidungen über Entwurfsalternativen und erlaubt den Übergang auf eine niedrigere Abstraktionsebene. Auf dieser Ebene wird das Systemmodell häufig durch einen strukturierenden Konkretisierungsschritt in Teilmodelle aufgespalten, die Teilkomponenten des Systems repräsentieren. Die Modellierung dieser Komponenten erfolgt mit höherem Detaillierungsgrad und, sofern es sich um Hardwarekomponenten handelt, mit einer Hardwarebeschreibungssprache. In einem weiteren Transformationsschritt, bei dem auf die geometrisch-physikalische Sicht gewechselt wird, erfolgt nun die Entscheidung, wie die einzelnen Hardwarekomponenten relativ zueinander angeordnet werden. Den Übergang von einer höheren zu einer niedrigeren Abstraktionsebene bezeichnet man als Synthese und die konkrete Anordnung der Komponenten erfordert eine Platzierung sowie eine Verdrahtung (engl. place and route) (vgl. Bild 2.1).

Bild 2.2: Das Entwurfsdiagramm nach Gajski [22] mit typischen HDL-Modellierungsebenen (vgl. Kap. 2.3)

In dem in Bild 2.2 dargestellten, nach Gajski benannten Diagramm werden für die verschiedenen Sichten konkrete Abstraktionsebenen vorgeschlagen, in denen die Entwurfsschritte durch Transformationen zwischen einerseits den Entwurfssichten und andererseits den Entwurfsebenen aufgefasst werden [22]. Ziel ist es dabei, von der äußeren Spezifikationsebene durch konzentrische Transformationen zum Kreismittelpunkt zu gelangen, in dem der höchste Detaillierungsgrad vorliegt:

14

2 Modellierung digitaler Schaltungen

 Alle Logikgatter wurden in Transistoren aufgelöst,  deren Verhalten wird durch Differenzialgleichungen beschrieben und  deren Hardwareimplementierung erfolgt durch fotolithografisch genutzte Masken, die durch Polygone beschrieben werden. In diesem einführenden Lehrbuch zur Digitaltechnik können nicht alle Teilaspekte aus Bild 2.2 behandelt werden, sondern wir beschränken uns auf:  Die Verhaltensmodellierung von einfachen Logikgattern und Flipflops durch Boole’sche Gleichungen (vgl. Kap. 3), sowie die  Modellierung des Zusammenspiels von komplexeren kombinatorischen Schaltungskomponenten wie z.B. Multiplexern (MUX) und arithmetisch logischen Recheneinheiten (Arithmetical Logical Unit, ALU) (vgl. Kap. 10) etc. mit Registern (vgl. Kap. 11) bzw. Speichern (vgl. Kap. 16) auf der Register-Transfer-Ebene (vgl. Kap. 2.4.3).

2.3

Modellierung mit Hardwarebeschreibungssprachen

Zur Modellierung digitaler Hardware werden heute überwiegend Beschreibungssprachen der zweiten Generation eingesetzt: Verilog [23] und VHDL (Very High Speed Integrated Circuit Hardware Description Language) [9].1 Obwohl beide Sprachen die Simulation und rechnergestützte Synthese digitaler Hardware erlauben, erfolgt die Modellierung in diesem Lehrbuch ausschließlich mit VHDL. Dabei wird besonders darauf geachtet, einen Entwurfsstil zu verwenden, der eine automatische Synthese garantiert. Nachfolgend soll gezeigt werden, dass die gleiche Problemstellung gemäß Bild 2.2 auf verschiedene Weise modelliert werden kann. Die dafür vorgestellten VHDL-Codebeispiele sollen dazu dienen, dem Leser einen ersten Einblick in die Vielfalt der Modellierungsstile zu geben, ohne dass auf syntaktische Details geachtet werden muss. Exemplarisch soll ein 2-zu-1-Multiplexer (MUX) betrachtet werden, dessen Aufgabe darin besteht, abhängig von einem Steuersignal S eines der beiden Eingangssignale IA oder IB auf den Ausgang Y zu schalten (vgl. Bild 2.3). S IA IB

Y

Bild 2.3: Schaltermodell eines 2-zu-1-Multiplexers

1

Als Hardwarebeschreibungssprachen der dritten Generation werden z.B. SystemC [24] und System-Verilog [25] bezeichnet. Insbesondere SystemC bietet im Gegensatz zu den Sprachen der zweiten Generation auch eine Hardware-Software-Cosimulation, da SystemC als C++-Klassenbibliothek mit integriertem Simulationskern implementiert wird.

2.3 Modellierung mit Hardwarebeschreibungssprachen

15

Diese Funktion kann in zugegebenermaßen etwas sperriger Ausdrucksweise auch wie folgt beschrieben werden: Das Ausgangssignal Y erhält den Wert von IA UND wenn gleichzeitig S = 0 ist ODER den Wert von IB UND wenn gleichzeitig S = 1 ist Der Multiplexer kann also aus den logischen Funktionen UND, ODER und INVERTER aufgebaut werden. Dies ist im Schaltplan Bild 2.4 dargestellt (eine Übersicht der verwendeten Schaltungssymbole findet sich in Bild 3.12).

Bild 2.4: Schaltplan des 2-zu-1-Multiplexers

2.3.1

Datenflussmodelle

In einem Datenflussmodell wird das Verhalten der zu entwerfenden Schaltung durch eine relativ geringe Zahl logischer Grundfunktionen realisiert. Diese Boole’schen Funktionen werden durch die im Listing 2.1 verwendeten VHDL-Operatoren and, or und not implementiert. Diese Gatter werden durch lokale Koppelsignale NODE1,.., NODE3 an den Einbzw. Ausgängen untereinander verknüpft (vgl. Bild 2.4). Der Gatterausgang befindet sich jeweils auf der linken Seite des VHDL-Zuweisungsoperators