
Digitaltechnik und Digitale Systeme
Beschreibung
Mit diesem, nun in der 6. Auflage vorliegenden Buch wird erstmalig ein Bogen von den Grundlagen der Digitaltechnik über den VHDL-basierten Schaltungsentwurf bis zur High-Level-Synthese aufgespannt. Es stellt somit ein aktuelles Kompendium zu rechnergestützten Methoden beim Entwurf digitaler Systeme dar.
Neben dem Verständnis des funktionellen und zeitlichen Verhaltens von Logikfunktionen und grundlegenden Implementierungskonzepten für digitale Systeme wird auch die Fertigkeit zur synthesegerechten Modellierung mit einer Hardwarebeschreibungssprache wie VHDL oder einer Programmiersprache wie C bzw. C++ vermittelt.
Mit der signifikanten Ergänzung zur High-Level Synthese wird der Tatsache Rechnung getragen, dass sich die Ergebnisqualität der zugehörigen Synthesecompiler in den letzten Jahren deutlich verbessert hat, sodass auf C/C++-Ebene beschriebene Systeme durch automatisch vorgenommene Optimierungen einen erheblichen Performancegewinn bringen, der bei Implementierungen mit Hardwarebeschreibungssprachen noch manuell hinzugefügt werden muss.
Der ausgezeichnete didaktische Aufbau unterstützt den Lernprozess: Den Kapiteln sind Lernziele vorangestellt und immer wieder werden grafische und tabellarische Übersichten sowie vertiefende Beispiele präsentiert. Eine Vielzahl von Übungsaufgaben mit Musterlösungen dient zur Lernkontrolle.
Weitere Details
Weitere Ausgaben
Person
Prof. Dr. Jürgen Reichardt hat bis 2016 an der HAW- Hamburg die Fachgebiete Digitale Systeme und Digitale Signalverarbeitung vertreten. Nach seiner Pensionierung hat er Lehraufträge an verschiedenen Hochschulen übernommen.
Inhalt
- Intro
- Inhalt
- 1 Einleitung
- 1.1 Die Hardwarebeschreibungssprache VHDL
- 1.2 Digitale und analoge Signale
- 1.3 Digitale Systeme
- 1.4 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.4.4 Modellierung auf algorithmischer 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
- Vollständiges System aus NAND-Gattern
- Vollständiges System aus NOR-Gattern
- 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 Lookup-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 FPGA-Simulation und -Synthese mit Vivado
- 5.1 Konfiguration eines RTL-Projektes in Vivado
- 5.2 Funktionale Simulation des VHDL-Codes
- 5.3 Synthese und Implementierung
- 5.4 Analyse der Schaltungsimplementierung
- 5.5 Erzeugung der Programmierdatei, Hardwaredownload und Test
- 6 Zahlensysteme in der Digitaltechnik
- 6.1 Lernziele
- 6.2 Polyadische Zahlensysteme
- 6.3 Umwandlung zwischen Zahlensystemen
- 6.4 Addition und Subtraktion vorzeichenloser Dualzahlen
- 6.5 Darstellung negativer Zahlen
- 6.5.1 Eigenschaften des 2er-Komplementzahlensystems
- 6.5.2 Addition und Subtraktion im 2er-Komplementzahlensystem
- 6.6 Darstellung rationaler Zahlen
- 6.6.1 Festkommadarstellung im Q-Format
- 6.6.2 Gleitkommadarstellung
- 6.7 Vertiefende Aufgaben
- 7 Logikminimierung
- 7.1 Lernziele
- 7.2 Minimierung mit KV-Tafeln
- 7.2.1 Disjunktive Minimalform (DMF)
- 7.2.2 Konjunktive Minimalform (KMF)■
- 7.2.3 Output-Don't-Care-Terme
- 7.2.4 Grenzen der zweistufigen Minimierung
- Nutzung konformer Terme
- Vermeidung von Hazards
- 7.3 Softwarealgorithmen zur zweistufigen Minimierung
- 7.3.1 Quine-McCluskey-Algorithmus
- 7.3.2 Espresso-Algorithmus
- 7.4 Minimierungskonzepte für FPGAs
- 7.5 Vertiefende Aufgaben
- 8 VHDL-Einführung II
- 8.1 Lernziele
- 8.2 Das VHDL-Prozesskonzept
- 8.3 Ereignisgesteuerte Simulatoren
- 8.4 Verzögerungsmodelle
- 8.5 Sequenzielle Anweisungen in Prozessen
- 8.5.1 case-Anweisung
- 8.5.2 if-Anweisung
- Modellierung von Signalflanken mit der if-Anweisung
- 8.6 Prozesse ohne Sensitivity-Liste
- 8.7 Verwendung von Variablen in Prozessen
- 8.8 Modellierungsbeispiel
- 8.9 Lesen und Schreiben von Dateien in Testbenches
- 8.10 Vertiefende Aufgaben
- 9 Codes
- 9.1 Lernziele
- 9.2 Charakterisierung und Klassifizierung
- 9.3 Zahlencodes
- 9.4 Code für die Längen- und Winkelmesstechnik
- 9.5 Methoden der Fehlererkennung und -korrektur
- 9.6 Vertiefende Aufgaben
- 10 Physikalische Implementierung und Beschaltung von Logikgattern
- 10.1 Lernziele
- 10.2 Logikgatter in CMOS-Technologie
- 10.2.1 CMOS-Technologie und Kennlinien der MOS-Transistoren
- 10.2.2 Aufbau und Kennlinien eines CMOS-Inverters
- 10.2.3 Pegelbereiche und Störabstände digitaler Logikfamilien
- 10.3 Logikzustände und elektrische Pegel
- 10.4 Statische CMOS-Logikgatter
- 10.5 Beschaltung von Gatterausgängen
- 10.5.1 Standardausgang
- 10.5.2 Open-Drain-/Open-Collector-Ausgang
- 10.5.3 Three-State-Ausgang
- 10.6 VHDL-Modellierung mit den Datentypen std_ulogic und std_logic
- 10.6.1 Mehrwertige Datentypen
- 10.6.2 Datentypen mit Auflösungsfunktion
- 10.6.3 VHDL-Modellierungsbeispiele
- 10.7 Vertiefende Aufgaben
- 11 Datenpfadkomponenten
- 11.1 Lernziele
- 11.2 Multiplexer
- 11.3 Binärzahlendecoder und Demultiplexer
- 11.4 Prioritätsencoder
- 11.5 Code-Umsetzer
- 11.6 Komparator
- 11.7 Hierarchische Strukturmodellierung in VHDL
- 11.8 Addierer
- 11.8.1 Halb- und Volladdierer
- 11.8.2 Ripple-Carry-Addierer
- 11.8.3 Carry-Lookahead-Addierer
- 11.8.4 Kombinierter Addierer/Subtrahierer
- 11.8.5 Addition von Festkommazahlen im Q-Format
- 11.9 Hardware-Multiplizierer
- 11.10 Arithmetik in VHDL
- 11.11 Vertiefende Aufgaben
- 12 Latches und Flipflops in synchronen Schaltungen
- 12.1 Lernziele
- 12.2 Das RS-Latch
- 12.2.1 Basis-RS-Latch
- 12.2.2 Taktzustandsgesteuertes RS-Latch
- 12.3 Das D-Latch (Data-Latch)
- 12.4 D-Flipflops
- Varianten von D-Flipflops
- 12.5 JK-Flipflop
- 12.6 T-Flipflop
- 12.7 Zweispeicher-Flipflops
- 12.8 RTL-Modellierung synchroner Schaltungen
- 12.9 Zusammenfassung
- 12.10 Vertiefende Aufgaben
- 13 FPGA-Entwurf synchroner Schaltungen mit Vivado
- 13.1 FPGA-Technologien
- 13.1.1 Grundkomponenten kombinatorischer und sequenzieller Logik in FPGAs
- 13.1.2 Die Architektur von SRAM-basierten FPGAs
- 13.1.3 Technologische Entwicklungstrends bei FPGAs
- 13.2 FPGA-Entwurf synchroner Schaltungen mit Vivado
- 13.2.1 Funktionale Simulation mit Vivado
- 13.2.2 VHDL-Synthese und Implementierung
- 13.2.3 Statische Timing-Analyse
- 13.2.4 Post-Implementation-Timing-Simulation
- 13.2.5 Programmierung des FPGAs
- 13.3 Externe Beschaltung des FPGAs
- 13.3.1 Analyse von Output-Constraints
- 13.3.2 Analyse von Input-Constraints
- 13.4 Hardware Debugging
- 13.4.1 Debug-Vorbereitungen in Vivado
- 13.4.2 Implementierung der zu analysierenden Schaltung
- 13.4.3 Debug-Analyse mit Vivado
- 13.5 Arithmetik-Hardware in FPGAs
- 14 Entwurf synchroner Zustandsautomaten
- 14.1 Lernziele
- 14.2 Formale Beschreibung von Zustandsautomaten
- 14.3 Entwurf eines Geldwechselautomaten
- 14.3.1 Realisierung als Mealy-Automat
- Manuelle Hardwareimplementierung
- Implementierung durch VHDL-Synthese
- 14.3.2 Realisierung als Moore-Automat
- VHDL-Modellierung des Moore-Automaten
- 14.3.3 Medwedew-Automatenstruktur
- 14.4 Impulsfolgeerkennung mit Zustandsautomaten
- 14.4.1 Implementierung als Moore-Automat
- 14.4.2 Implementierung als Mealy-Automat
- 14.5 Kopplung von Zustandsautomaten
- 14.6 Vertiefende Aufgaben
- 15 Entwurf von Synchronzählern
- 15.1 Lernziele
- 15.2 Manuelle Implementierung von Zählern
- 15.2.1 Abhängigkeitsnotation
- 15.2.2 mod-5-Zähler
- Realisierung mit D-Flipflops
- Realisierung mit T-Flipflops
- VHDL-Modellierung mit D-Flipflops
- 15.2.3 mod-4-Vorwärts-/Rückwärtszähler
- 15.3 Standardzähler
- 15.3.1 Systematischer VHDL-Entwurf von Zählern
- 15.3.2 Kaskadierung von Standardzählern
- 15.4 Vertiefende Aufgaben
- 16 Schieberegister
- 16.1 Lernziele
- 16.2 Arbeitsweise von Schieberegistern
- 16.3 Serien-Parallel-Umsetzer
- 16.4 Parallel-Serien-Umsetzer
- 16.5 Zähler mit Schieberegistern
- 16.5.1 Ringzähler
- 16.5.2 Johnson-Zähler
- 16.6 Linear rückgekoppelte Schieberegister
- 16.7 Dynamisch adressierbare Schieberegister
- 16.8 Vertiefende Aufgaben
- 17 Kommunikation zwischen digitalen Teilsystemen und Vivado Block-Design
- 17.1 Lernziele
- 17.2 Kopplung von Signalen in zueinander synchronen Taktdomänen
- 17.2.1 Impulsverkürzung
- 17.2.2 Impulsverlängerung
- 17.3 Synchronisation asynchroner Eingangssignale
- 17.3.1 Synchronisation langer Eingangsimpulse
- 17.3.2 Synchronisation kurzer Eingangsimpulse
- 17.3.3 Asynchrone Resets
- 17.4 Datenaustausch zwischen Teilsystemen
- 17.4.1 Synchrone Datenübertragung
- 17.4.2 Asynchrone Datenübertragung
- 17.5 Der AXI4-Interfacestandard
- 17.5.1 Übersicht
- 17.5.2 Das AXI4-Stream Interface
- 17.6 Vivado Block-Design eines FIR-Filter-IPs mit AXI4-Streaming-Schnittstelle
- 17.6.1 VHDL-Modelle für FIR-Filter mit linearem Phasengang
- 17.6.2 Hinzufügen der AXI4-Streaming-Schnittstelle
- 17.6.3 Verifikation des FIR-IPs
- 17.7 Vertiefende Aufgaben
- 18 High-Level-Synthese
- 18.1 Lernziele
- 18.2 Grundlagen
- 18.2.1 Teilaufgaben der High-Level-Synthese
- 18.2.2 Transaction-Level-Modellierung (TLM)
- 18.2.3 Grundlegende Paradigmen
- Datenstrom Paradigma
- Erzeuger-Verbraucher-Paradigma (engl. Consumer Producer Paradigm)
- Pipeline-Paradigma
- Zusammenfügen der drei Paradigmen [78]
- 18.3 Algorithmische Synthese
- 18.3.1 Begriffsdefinitionen
- 18.3.2 Ein einfaches Anwendungsbeispiel
- Ablaufdiagramm (engl. Scheduling)
- Zuordnung (engl. Binding)
- Datenpfade mit Pipelining
- 18.4 Software zur FPGA High-Level-Synthese
- 18.4.1 Die Vitis FPGA-Entwicklungsumgebung
- 18.4.2 Synthese von C-Variablen und C-Funktionsparametern
- 18.4.3 Der Vitis-HLS Design Flow
- 18.5 Arithmetik-Synthese mit Vitis
- 18.5.1 Bindung und Allokation von Operatoren
- 18.5.2 Pipelining von Operationen
- 18.5.3 Pipelining von Schleifen und Funktionen
- 18.6 Interface Synthese mit Vitis
- 18.6.1 Handshake-Protokolle
- Schnittstellen auf Block-Ebene
- Port-Schnittstellen
- 18.6.2 Abstrakte Schnittstellen
- 18.6.3 Task-Level Parallelisierung
- 18.7 Eine HLS-Komponente zur Lösung einer Differenzialgleichung 2. Ordnung
- 18.8 High-Level Modellierung von Zustandsautomaten
- 18.8.1 Implementierungskonzept für Moore-Automaten
- 18.8.2 HLS-Implementierung von Mealy-Automaten
- 18.9 HLS-Implementierung von FIR-Filtern mit linearem Phasengang
- 18.10 Speicher-Synthese und Implementierung von Block-Level Algorithmen
- 18.10.1 Speicher-Synthese
- 18.10.2 Implementierung von Blocklevel-Algorithmen
- 18.11 Ausblick
- 19 Digitale Halbleiterspeicher
- 19.1 Lernziele
- 19.2 Übersicht
- 19.2.1 Klassifizierung
- 19.2.2 Speicherstrukturen
- 19.2.3 Kenngrößen
- Speicherkapazität
- Elektrische Verlustleistung
- Speicherzugriffszeit
- Speicherzykluszeit
- Data Retention
- Endurance
- 19.3 Nichtflüchtige Speicher
- 19.3.1 Maskenprogrammierbares ROM
- 19.3.2 PROM
- 19.3.3 EPROM
- 19.3.4 EEPROM und Flash-EEPROM
- 19.3.5 Instanziierung von ROM-Strukturen durch VHDL-Code
- 19.4 Flüchtige Speicher
- 19.4.1 SRAMs
- Asynchrones SRAM
- Synchrones SRAM
- 19.4.2 DRAMs
- 19.4.3 SDRAM und DDR-RAM
- 19.4.4 Modellierung von SRAM-Speicher in VHDL
- 19.5 FIFO-Speicher
- VHDL-Modellierung eines Dual-Port-Block-RAMs
- 19.6 Speichererweiterung
- Parallelerweiterung
- Speicherkapazitätserweiterung
- 19.7 Vertiefende Aufgaben
- 20 Programmierbare Logik
- 20.1 Lernziele
- 20.2 PLD-Architekturen
- 20.3 SPLDs
- 20.3.1 PROM-Speicher
- 20.3.2 PLAs
- 20.3.3 PALs
- UND-ODER-Matrix von PALs
- Ausgangszellen von PALs
- Programmierung von PALs
- 20.4 CPLDs
- 20.5 Vertiefende Aufgaben
- 21 Anhang
- 21.1 Installation von Vitis und Vivado
- 21.2 Erweiterungen durch den Standard VHDL-2008
- Outline placeholder
- Blockkommentare
- Aggregate auf der linken Seite einer Signalzuweisung
- Angabe der Felddimensionen bei der Signaldeklaration
- Bitstring Konstanten
- Signalausdrücke in port map-Anweisungen
- Lesen von Output-Ports
- Bitweise Boole'sche Verknüpfungen
- Neue Vergleichsoperatoren
- Verknüpfung skalarer Signale mit Signal-Arrays
- Verwendung von Schiebe- und Rotationsoperatoren
- Vereinfachung Boole'scher Ausdrücke in Bedingungsausdrücken
- Sensitivity-Liste kombinatorischer Prozesse
- Bedingte und selektive Signalzuweisungen in Prozessen
- Don't-Cares auf der linken Seite der Wahrheitstabelle
- Bedingte Komponenteninstanziierung
- Deklaration eines Kontextes
- Datenformat für Festkommazahlen im Q-Format
- Datenformat für Gleitkommazahlen
- 21.3 Hinweise zur Verwendung von ModelSim
- 21.3.1 ModelSim Hilfesystem
- 21.3.2 VHDL-Simulation mit ModelSim
- 21.4 VHDL-Codierungsempfehlungen
- Literaturverzeichnis
- Sachregister
Systemvoraussetzungen
Dateiformat: PDF
Kopierschutz: Wasserzeichen-DRM (Digital Rights Management)
Systemvoraussetzungen:
- Computer (Windows; MacOS X; Linux): Verwenden Sie zum Lesen die kostenlose Software Adobe Reader, Adobe Digital Editions oder einen anderen PDF-Viewer Ihrer Wahl (siehe E-Book Hilfe).
- Tablet/Smartphone (Android; iOS): Installieren Sie bereits vor dem Download die kostenlose App Adobe Digital Editions oder die App PocketBook (siehe E-Book Hilfe).
- E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m.
Das Dateiformat PDF zeigt auf jeder Hardware eine Buchseite stets identisch an. Daher ist eine PDF auch für ein komplexes Layout geeignet, wie es bei Lehr- und Fachbüchern verwendet wird (Bilder, Tabellen, Spalten, Fußnoten). Bei kleinen Displays von E-Readern oder Smartphones sind PDF leider eher nervig, weil zu viel Scrollen notwendig ist. Mit Wasserzeichen-DRM wird hier ein „weicher” Kopierschutz verwendet. Daher ist technisch zwar alles möglich – sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.
Weitere Informationen finden Sie in unserer E-Book Hilfe.