Inhaltsverzeichnis
I Grundlagen der Digitaltechnik 1 13
-
2 Materialien zum Buch 23
2.1 Das FPGA-Board 27
2.1.1 Beschreibung der Komponenten 28
2.2 Die Entwicklungssoftware "Diamond“ 29
2.3 Übungsblätter 37
-
3 Aufbau von Teil I: „Grundlagen der Digitaltechnik 1“ 41
-
4 Boolesche Logik 43
4.1 Analog versus digital 45
4.2 Boolesche Algebra 45
4.2.1 Wahrheitstabellen 48
4.2.2 Boolesche Grundfunktionen mit zwei Eingängen 50
4.2.3 Übung zu Funktionen mit zwei Eingängen 53
4.2.4 Boolesche Grundfunktionen mit N Eingängen 56
4.2.5 Übung zu Funktionen mit vier Eingängen 56
4.2.6 Zusammengesetzte boolesche Funktionen 58
4.2.7 Rechnen mit booleschen Werten 61
4.2.8 Übungen zu booleschen Gleichungen 64
4.3 Normalformen 65
4.3.1 Disjunktive Normalform 65
4.3.2 Konjunktive Normalform 67
4.3.3 Vergleich der Normalformen 68
4.3.4 Übungen zu Normalformen 69
4.4 Binärzahlen 70
4.4.1 Das Stellenwertsystem 70
4.4.2 Umwandlung zwischen Binär und Dezimal 73
4.4.3 Übungen zur Zahlenumwandlung 76
4.4.4 Weitere Übung zur Zahlenumwandlung 77
4.4.5 Binäre Addition 79
4.4.6 Übungen zur binären Addition 81
4.4.7 Halb- und Volladdierer 85
4.4.8 Negative Zahlen 89
4.4.9 Binäre Subtraktion 94
4.4.10 Übungen zum Zweierkomplement 95
4.4.11 Weitere Übung zum Zweierkomplement 99
4.5 Das Entwicklungs-Board in den Auslieferungszustand bringen 101
4.6 Lösungen zu den Übungsaufgaben 104
II Grundlagen der Digitaltechnik 2 113
5 Aufbau von Teil II: „Grundlagen der Digitaltechnik 2" 115
6 Darstellung und Beschreibung von Gatterlogik 117
6.1 Grundgatter 117
6.1.1 Eine kurze Einführung in VHDL 119
6.1.2 VHDL-Beschreibung für ein UND-Gatter 119
6.1.3 Das erste FPGA-Projekt 122
6.1.4 Zeitgenaue Modellierung realer Gatter 151
6.2 Kombinierte Gatter 151
7 Schaltnetze 163
7.1 Boolesche Gleichungen in VHDL 163
7.2 Umsetzung von Wahrheitstabellen in VHDL 166
8 Digitale Speicherelemente 175
8.1 RS-Flip-Flop 175
8.2 D-Latch 181
8.3 D-Flip-Flop 184
8.3.1 Steuereingänge für Flip-Flops 190
8.4 Register 194
8.4.1 Parallelregister 195
8.4.2 Serienregister 198
9 Schaltwerke 201
III Komponenten Digitaler Systeme 205
10 Aufbau von Teil III: „Komponenten Digitaler Systeme" 207
11 std_logic-Datentypen 209
12 Transport im Datenpfad 213
12.1 Multiplexer 213
12.2 Demultiplexer 217
12.3 Datenbus 220
13 Schaltungen zur Datenverarbeitung 223
13.1 Umkodieren von Daten 223
13.2 Rechenschaltungen 225
13.2.1 Die Vektortypen signed und unsigned. 226
13.2.2 Addieren und Subtrahieren 230
13.2.3 Multiplizieren 232
13.2.4 Schieben und Rotieren 234
13.2.5 Testen und Vergleichen 237
13.2.6 Häufige Probleme mit signed und unsigned . 239
14 Datenspeicher 243
14.1 Register und Speicher 243
14.1.1 Universalregister 243
14.1.2 Arbeitsspeicher 246
14.2 Zwischenspeicherung im Datenpfad 249
14.2.1 Pipelines 249
14.2.2 FIFO-Speicher 249
14.2.3 LIFO-Speicher 251
14.3 Register-File 251
15 Ablaufsteuerung 255
15.1 Endliche Automaten 257
15.1.1 Mealy-Automat 257
15.1.2 Moore-Automat. 259
15.2 Endliche autonome Automaten 260
15.2.1 Zähler 260
15.2.2 Sequenzer 266
IV Hardwarebeschreibung mit VHDL auf RTL-Ebene 269
16 Aufbau von Teil IV: „Hardwarebeschreibung mit VHDL auf RTL-Ebene“ 271
17 Simulation von VHDL-Modellen 273
17.1 Warum simulieren? 273
17.2 Die zwei Phasen der VHDL-Simulation 274
17.3 Das „Weihnachtsmannprinzip“ 275
17.3.1 Prozessausführung 277
17.3.2 Zeit in der Simulation 279
17.3.3 ALDEC VHDL-Simulator 281
17.3.4 Deltazyklen 285
17.3.5 VHDL-Modell eines RS-Flipflops 287
18 Synchrone Schaltungen 293
18.1 Warum Hardware-Synthese? 293
18.2 Was sind synchrone Schaltungen? 294
18.2.1 Pipelining 295
18.2.2 „MinMax8“: Minimum und Maximum von acht Zahlen 295
18.3 RTL-Beschreibungen 314
19 VHDL-Beschreibungen von RTL-Designs 317
19.1 Getrennte Beschreibung von Registern und kombinatorischer Logik 317
19.1.1 Register 317
19.1.2 Schleifen 320
19.2 Kombinatorische Logik 321
19.3 Gemeinsame Beschreibung von Registern und kombinatorischer Logik 323
19.3.1 Synthese einer if-then-else-Anweisung 325
19.3.2 Synthese einer „if-then"-Anweisung 327
19.3.3 Synthese von „if-then-else"-Ketten 327
19.3.4 Mehrere Zuweisungen in einer „if-then"-Anweisung 329
19.3.5 Verschiedene Signale in den Alternativen einer if-then-else-Anweisung 330
19.3.6 Case-Anweisung 331
19.4 Übungen zur RTL-Synthese Teil I. 333
19.5 Variablen 336
19.5.1 Variablen als flüchtiger Zwischenspeicher 338
19.5.2 Variablen als Register 343
19.6 Vereinfachtes MM-Modul für Min Max8PipeSlim 345
19.7 Beispiel 1: Mittelwertfilter 346
19.8 Beispiel 2: Optimierte Mittelwertfilter 354
19.9 Beispiel 3: Größter Wert im Fenster 358
20 Lösungen zu den Übungsaufgaben 361
V Ein FPGA-Projekt step-by-step 365
21 Aufbau von Teil V: „Ein FPGA-Projekt step-by-step" 367
22 Konstanten, Subtypes, Packages und Generics 369
22.1 Konstanten 369
22.2 Subtypes 371
22.2.1 Unterschied zwischen type und subtype 372
22.3 Packages 374
22.4 Generics 378
23 HNR16 – ein einfacher RISC-Mikroprozessor 383
23.1 Grundsätzliche Arbeitsweise eines Prozessors 384
23.2 Architektur des HNR16 385
23.3 Ein einfaches Beispielprogramm 387
23.3.1 Befehlsformat der verwendeten Befehle 388
23.3.2 Das Maschinenprogramm 389
23.4 VHDL-Design des HNR16 390
23.4.1 Der Programmspeicher 390
23.4.2 Der Datenspeicher 396
23.4.3 Der Registersatz 401
23.4.4 Der Decoder 411
23.4.5 Die ALU 414
23.4.6 Zusammenbau des HNR16 418
23.4.7 Optimierung des HNR16 425
23.5 Der vollständige Befehlssatz des HNR16 431
VI FPGA-Architektur 435
24 Aufbau von Teil VI: „FPGA-Architektur" 437
25 Basiskomponenten von FPGAs 439
25.1 Logikelemente 440
25.1.1 LUT-basierte Kombinatorik 442
25.1.2 MUX-basierte Kombinatorik 457
25.1.3 Flip-Flops in Logikelementen 459
25.1.4 Sonderfunktionen in Logikelementen 460
25.2 Ein-/Ausgabeblöcke 462
25.3 Verbindungsressourcen 469
25.4 Programmierbare Elemente 472
26 Spezielle Funktionseinheiten 475
26.1 PLL-Schaltungen 477
26.2 Speicherblöcke 479
26.3 DSP-Einheiten 481
26.4 Entwurf mit Spezialressourcen 483
27 Stromversorgung und Konfiguration 487
27.1 Stromversorgung 487
27.2 Konfiguration 488