Table Of ContentDigitaltechnik - Eine praxisnahe Einführung
· ·
Armin Biere Daniel Kröning
·
Georg Weissenbacher Christoph M. Wintersteiger
Digitaltechnik -
Eine praxisnahe Einführung
123
Prof.Dr.ArminBiere Prof.Dr.DanielKroening
InstituteforFormalModelsandVerification GeorgWeissenbacher
JohannesKeplerUniversity ChristophM.Wintersteiger
Altenbergerstr.69 ComputerSystemsInstitute
A-4040Linz,Österreich ETHZürich
[email protected] 8092Zürich,Schweiz
[email protected]
[email protected]
[email protected]
ISBN978-3-540-77728-1 e-ISBN978-3-540-77729-8
DOI10.1007/978-3-540-77729-8
BibliografischeInformationderDeutschenNationalbibliothek
DieDeutscheNationalbibliothek verzeichnet diesePublikation inderDeutschenNationalbibliografie;
detailliertebibliografischeDatensindimInternetüberhttp://dnb.d-nb.deabrufbar.
(cid:2)c 2008Springer-VerlagBerlinHeidelberg
Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der
Übersetzung, desNachdrucks,desVortrags,derEntnahmevonAbbildungen undTabellen,derFunk-
sendung, der Mikroverfilmung oder der Vervielfältigung auf anderen Wegen und der Speicherung
in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine
Vervielfältigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den
Grenzen der gesetzlichen Bestimmungen desUrheberrechtsgesetzes der Bundesrepublik Deutschland
vom 9.September 1965 in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich vergütungs-
pflichtig.ZuwiderhandlungenunterliegendenStrafbestimmungendesUrheberrechtsgesetzes.
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk
berechtigtauchohnebesondereKennzeichnungnichtzuderAnnahme,dasssolcheNamenimSinneder
Warenzeichen-undMarkenschutz-Gesetzgebungalsfreizubetrachtenwärenunddahervonjedermann
benutztwerdendürften.
Satz:ReproduktionsfähigeVorlagederAutoren
Einbandgestaltung:WMXDesignGmbH,Heidelberg
Production:LE-TEXJelonek,Schmidt&VöcklerGbR,Leipzig,Germany
GedrucktaufsäurefreiemPapier
987654321
springer.com
Vorwort
DieDigitaltechnikistheuteallgegenw¨artig.WirfindensiealseineBasistech-
nologie fu¨r ein großes Spektrum von informationstechnischen Anwendungen
innahezuallenLebensbereichen.InderDigitaltechnikkommenvieleverschie-
dene Disziplinen zusammen – naturwissenschaftliche wie die Physik, geis-
teswissenschaftliche wie die Mathematik, ingenieurwissenschaftliche wie die
Elektrotechnik,undschließlichdie Informatik,die Anteile aus alldiesenDis-
ziplinen vereinigt. An den Schnittstellen dieser Gebiete sind die Forschungs-
aktivit¨aten besonders lebendig – dies ist einer der Gru¨nde fu¨r den rasanten
Fortschritt in der Digitaltechnik.
Die thematische Breite ihrer Wurzeln macht die Digitaltechnik zu einem
GrundlagenfachderverschiedenstenStudieng¨angeanUniversit¨atenundFach-
hochschulen.DieLebendigkeitdesGebietesbringtesmitsich,dassdasbeste-
hendeLehrmaterialimmerwiederu¨berarbeitetunderg¨anztwerdenmuss.Al-
lerdingsistesnichteinfach,eingutesGrundlagenlehrbuchzuschreiben.Zum
einenliegtdasanderschierenGr¨oßedesGebietes.WosollmanSchwerpunk-
te setzen, wo vertiefen, ohne die Darstellung zu u¨berfrachten? Worauf kann
manandererseitsineinemEinfu¨hrungsbuchverzichten?Und:wieberu¨cksich-
tigt man den stetigen Wandel; welche Themen werden in fu¨nf Jahren noch
relevant sein? Zudem gilt es, ein ausgewogenes Verh¨altnis von theoretischen
Grundlagen und Bezug zur Praxis zu finden.
All diese Abw¨agungen sind in dem vorliegenden Buch sorgf¨altig beru¨cksich-
tigt worden. Das Buch vermittelt den Studierenden sowohl einen breiten
U¨berblick u¨ber dasFachgebietalsaucheine fundierte Ausbildung inden we-
sentlichentheoretischenGrundlagen.DabeiwendetsichderBlickimmerwie-
der auf moderne Entwicklungen im Bereich des Entwurfs informationstech-
nischer Systeme. Bekanntlich entwirft heutzutage kein Schaltungsentwick-
ler seine Hardware noch von Hand. Stattdessen verwendet er Methoden des
Computer-AidedDesign (CAD),wofu¨rleistungsf¨ahigeSoftwarewerkzeugezur
Verfu¨gung stehen. Der heutige industrielle Entwurfsprozess ¨ahnelt in weiten
TeileneherdemSoftwaredesignalsderklassischenelektronischenSchaltungs-
entwicklung.DurchdiedamiteinhergehendeAutomatisierungwurdediePro-
duktivit¨at des Entwurfsprozessesin den letzten Jahren drastisch erh¨oht und
wirddurchst¨andigeInnovationimmerweitergesteigert.Umvondiesenaktu-
ellenEntwicklungenmaximalprofitierenzuk¨onnen,istes fu¨r einenInforma-
VI Vorwort
tiker oder Ingenieur wichtig zu verstehen, was hinter den Kulissen“ solcher
”
CAD-Systeme abl¨auft.Die Autorenvermittelndieses Hintergrundwissen,in-
demsie die wichtigenGrundlagender theoretischenInformatik inBeziehung
setzen zu den Fragestellungen des rechnergestu¨tzten Entwurfs. Ein sp¨aterer
Designer“ digitalerSysteme wirdzwarinderindustriellenPraxisselbstkei-
”
ne Entwurfsalgorithmenentwickeln.Dennochversetztihn ersteine fundierte
Vorbildung in die Lage, existierende CAD-Systeme produktiv einzusetzen,
ihre Ergebnisse richtig zu interpretieren und die richtigen Designentschei-
dungen zu treffen.
Der konsequente Bezug zur Praxis zieht sich wie ein roter Faden durch alle
KapiteldesBuches.Erl¨auterungentheoretischerKonzeptewieetwaderBoo-
leschenFunktionenwerdensofortumkonkreteAnwendungenerg¨anzt,indem
beispielsweise aufgezeigt wird, wie in der industriellen Praxis Schaltungen
mittels sogenannter Hardwarebeschreibungssprachen entworfen werden. Die
Autoren haben dazu die weit verbreitete Sprache Verilog gew¨ahlt und be-
nutzen sie im gesamten Buch, um Beispiele behandelter Schaltungskonzepte
vorzustellen. Die Leser werden angehalten, mit Hilfe frei erh¨altlicher CAD-
ToolsselbstpraktischeErfahrungenzusammeln.GeradedurchdieWahlder
Sprache Verilog, die viele A¨hnlichkeiten zu h¨oheren Programmiersprachen
wie Java aufweist, werden die Gemeinsamkeiten – aber auch die Unterschie-
de – des modernen Hardwareentwurfsim Vergleich zum Softwareentwurffu¨r
die Studierenden besonders deutlich.
Das vorliegende Buch geh¨ort zu den wenigen Einfu¨hrungen, die dem Thema
der Verifikation digitaler Systeme ein eigenes Kapitel widmen. Kein ande-
res Thema spielt in der Praxis derzeit eine gr¨oßere Rolle. In der Industrie
entfallen heute bis zu 80% der Entwurfskosten fu¨r ein System-on-Chip auf
die Verifikation, also auf das Problem zu entscheiden, ob ein Systementwurf
allefunktionalenAnforderungenerfu¨llt.DieseSituationspiegeltsichsogarin
den Personalentscheidungen der Firmen wider: Fu¨r den Schaltungsentwurf
werdenheute genauso viele Verifikationsingenieurewie klassische“ Designer
”
gebraucht.Die Autoren tragendieser Tatsache Rechnung. Es werden sowohl
wichtige theoretische Grundlagen gelegt, als auch der Bezug zur Praxis an-
hand von CAD-Werkzeugen hergestellt, die fu¨r die Studierenden frei erh¨alt-
lich sind.
Das Buch schließt mit dem beispielhaften Entwurf eines Prozessors. Hier
kommtnochmalsalles Gelernte zum Einsatz.Die Wahl der Befehlssatzarchi-
tektur der Intel x86-Prozessorfamilie ist fu¨r die Studierenden von besonde-
rem Reiz, denn sie k¨onnen die hierfu¨r erstellten Programme auch auf dem
eigenen PC laufen lassen. Es l¨asst sich n¨amlich die gesamte fu¨r die x86-
Architektur verfu¨gbare Toolchain“ (Assembler, Debugger, etc.) anwenden.
”
Fu¨r den Lernenden – gerade in den neuen Bachelorstudieng¨angender Infor-
Vorwort VII
matik, Elektrotechnik und Informationstechnik – entsteht so eine fundierte
und umfassende Sicht auf Architekturen und Methodik der Digitaltechnik,
die sowohl die Grundlagen fu¨r ein weiterfu¨hrendes Studium als auch fu¨r die
berufliche Praxis liefert.
TU Kaiserslautern, WolfgangKunz
Dezember 2007
Danksagung
DiesesBuchbasiertaufeinerEinfu¨hrungsvorlesunginDigitaltechnik,welche
in den Jahren 2001 bis 2007 von den beiden ersten Autoren am Informa-
tikdepartement der ETH Zu¨rich entwickelt wurde. Deshalb gilt der gr¨oßte
Dank natu¨rlich den zahlreichen Assistenten, die beim U¨bungsbetrieb gehol-
fen haben. Hervorzuheben sind Cyrille Artho, Viktor Schuppan und G´erard
Basler.Auchm¨ochtenwirunserenehemaligenStudentendanken,ohnederen
positives Feedback das Buch wohl nie entstanden w¨are. Schließlich stehen
wirinderSchuldunsererKorrekturleser.SodankenwirAngeloBrillout,Ro-
bert Brummayer, Susanne Cech Previtali, Veronika Licher, Dominik Stoffel,
Oliver Trachselund Thomas Wahl fu¨r die ¨außerstwertvollenVerbesserungs-
vorschl¨age.
Extras im Web
ZudiesemBuchstehenzahlreicheExtraszumAbrufenimWebzurVerfu¨gung.
Aufhttp://www.digitaltechnik.org findenStudentenweitereU¨bungs-
aufgaben, eine Fehlerliste, praktische Beispiele und Verilog-Quelltexte. Fu¨r
Dozenten stehen Folien zur Begleitung einer auf diesem Buch basierten Vor-
lesung zum Abrufen bereit.
Inhaltsverzeichnis
1 KombinatorischeSchaltungen
1.1 Die Boole’sche Algebra......................................... 3
1.2 Implementierung Boole’scher Funktionen................... 11
1.3 Minimierung von Schaltungen................................. 16
1.4 Kombinatorische Schaltungen in Verilog.................... 30
1.5 Aufgaben.......................................................... 32
1.6 Literatur........................................................... 38
2 Technologie
2.1 Abstrakte Schalter............................................... 41
2.2 Schalter in Hardware............................................ 43
2.3 Fanout............................................................. 53
2.4 Schaltzeiten....................................................... 55
2.5 Latches............................................................. 61
2.6 Flipflops und Clocks............................................. 64
2.7 Metastabile Zust¨ande........................................... 69
2.8 FPGAs............................................................. 73
2.9 Aufgaben.......................................................... 81
2.10 Literatur........................................................... 83
3 SequenzielleSchaltungen
3.1 Transitionssysteme............................................... 87
3.2 Synchroner sequenzieller Entwurf............................. 94
3.3 Zustandsmaschinenin Verilog................................. 100
3.4 Timing-Analyse................................................... 101
3.5 Aufgaben.......................................................... 103
4 Arithmetik
4.1 Zahlendarstellungen............................................. 113
4.2 Volladdierer....................................................... 123
4.3 Ripple-Carry-Addierer........................................... 124
4.4 Carry-Look-Ahead Addierer.................................... 127
4.5 Carry-Save-Addierer............................................. 137
4.6 Multiplizierer...................................................... 138
4.7 Aufgaben.......................................................... 144
4.8 Literatur........................................................... 148
5 Verifikation
5.1 Motivation ........................................................ 151
5.2 Spezifikation...................................................... 152
5.3 Fehlersuchemit Simulation.................................... 154
X Inhaltsverzeichnis
5.4 Event-Queue-Semantik......................................... 157
5.5 Formale Methoden............................................... 162
5.6 Aufgaben.......................................................... 170
5.7 Literatur........................................................... 171
6 Speicherelemente
6.1 Adressen........................................................... 175
6.2 Read-Only Memory – ROM.................................... 176
6.3 Random Access Memory – RAM............................. 178
6.4 Datenbusse........................................................ 181
6.5 Caches............................................................. 186
6.6 Aufgaben.......................................................... 189
6.7 Literatur........................................................... 190
7 EineinfacherCISC-Prozessor
7.1 Die Y86 Instruction Set Architecture........................ 193
7.2 Der Y86 in C++................................................. 198
7.3 Eine sequenzielle Y86-Implementierung..................... 202
7.4 Eine Y86-Implementierungmit Pipeline..................... 212
7.5 Aufgaben.......................................................... 215
7.6 Literatur........................................................... 217
Literaturverzeichnis................................. 219
1
Kapitel 1
Kombinatorische Schaltungen