1 Einführung | 15 |
1.1 Begriffsbestimmung und Beispiele | 15 |
1.2 Systemkategorien | 17 |
1.3 Typischer Aufbau | 19 |
1.4 Zusammenfassung | 21 |
2 Bauformen und Implementierungsarten | 23 |
2.1 Bauformen | 23 |
2.2 Implementierungsarten | 25 |
2.3 übersicht über Technologien für Eingebettete Systeme | 26 |
2.3.1 Anwendungsspezifische Hardware | 26 |
2.3.2 Feldprogrammierbare Bausteine (FPGAs) | 29 |
2.4 Evolution der Siliziumtechnologie | 34 |
2.5 Zusammenfassung | 35 |
3 Mikroprozessor-Grundlagen | 37 |
3.1 Evolution der Mikroprozessoren | 37 |
3.2 Mikroprozessoren in Eingebetteten Systemen | 38 |
3.3 Mikroprozessor-Grundlagen | 40 |
3.3.1 Mikroprozessor-Architekturen | 40 |
3.3.2 Eingabe und Ausgabe durch Befehle, Register und Interrupts | 43 |
3.3.3 Speicher-Systeme | 45 |
3.3.4 Hauptspeicher | 51 |
3.3.5 Festwertspeicher (ROM) | 54 |
3.3.6 Befehls-Verarbeitungsmethoden | 54 |
3.3.7 Performanz und Energieverbrauch | 60 |
3.3.8 Ein-Ausgabe-Geräte und Schnittstellen | 64 |
3.4 Mikrokontroller und Mikroprozessoren | 65 |
3.4.1 Niedrigpreis-Mikrokontroller | 66 |
3.4.2 Mikroprozessoren höherer Leistung | 67 |
3.4.3 Mikroprozessor-Familien | 67 |
3.5 Mehrprozessorsysteme | 75 |
3.5.1 Beispiel für ein Mehrprozessor-System: Der Cell-Prozessor | 77 |
3.6 Prozesse und Betriebssysteme | 78 |
3.6.1 Prozesse | 78 |
3.6.2 Wozu Betriebssysteme? | 80 |
3.6.3 Aufgaben und Schichtenmodell eines Betriebssystems | 82 |
3.6.4 Echtzeitbetriebssysteme | 84 |
3.6.5 Zeitablaufplanung in Echtzeitbetriebssystemen | 84 |
3.6.6 Prioritätsumkehr und Prioritätsvererbung | 91 |
3.7 Zusammenfassung | 93 |
4 Kommunikation, Busse, Netzwerke und verteilte Systeme | 95 |
4.1 Das ISO-OSI-Referenzmodell | 95 |
4.2 Modellierung der Kommunikation | 99 |
4.2.1 Kommunikationsprimitive | 99 |
4.2.2 Der parallele Bus | 102 |
4.3 Verteilte Systeme | 111 |
4.4 Netzwerke | 113 |
4.4.1 Kommunikationsmodi | 114 |
4.4.2 Netzwerk-Topologien | 114 |
4.5 Busähnliche Netzwerke oder serielle Busse | 117 |
4.5.1 Der I2C-Bus | 119 |
4.5.2 Der CAN-Bus | 120 |
4.5.3 FlexRay, LIN und MOST | 123 |
4.5.4 Profibus (Process Field Bus) | 124 |
4.5.5 Weitere Verbindungsnetzwerke für verteilte Systeme | 126 |
4.6 Zusammenfassung | 128 |
5 Entwicklungsmethodik | 129 |
5.1 Die Produktivitätslücke | 129 |
5.2 Anforderungen | 131 |
5.2.1 Nichtfunktionale Anforderungen | 131 |
5.2.2 Lastenheft | 135 |
5.3 Der Beginn einer Entwicklung | 137 |
5.3.1 Der Architekturbegriff | 138 |
5.3.2 Pflichtenheft | 139 |
5.3.3 Spezifikation | 140 |
5.4 Entwurfsmethoden von Software-Systemen | 142 |
5.4.1 Das Wasserfallmodell | 142 |
5.4.2 Das Spiralmodell | 144 |
5.5 Hardware-Entwicklungsmethodik: Die Abstraktionsebenen | 145 |
5.6 Entwicklungsmethoden von Eingebetteten Systemen | 149 |
5.6.1 Erfassen und Simulieren | 150 |
5.6.2 Beschreiben und Synthetisieren | 151 |
5.6.3 Spezifizieren, Explorieren und Verfeinern | 152 |
5.6.4 Evolution der Chip-Entwicklung: Vom ASIC zum SoC | 154 |
5.6.5 Plattformbasierter Entwurf für Ein-Chip-Systeme | 157 |
5.6.6 Beispiele von Mehrprozessor-Entwicklungsplattformen | 159 |
5.7 Modellieren von Systemen | 164 |
5.7.1 Was sind Modelle? | 164 |
5.7.2 Modelle auf System- und algorithmischer Ebene: Berechnungsmodelle | 167 |
5.7.3 Unified Modeling Language (UML) | 180 |
5.7.4 Transaction Level-Modellierung (TLM) | 182 |
5.7.5 Modellieren auf RT-Ebene | 188 |
5.7.6 Modelle auf Logik-Ebene | 193 |
5.8 Modellbasierte Entwicklungsmethode | 193 |
5.8.1 Synthese | 195 |
5.8.2 System-Synthese | 196 |
5.8.3 Software-Synthese von Eingebetteten Systemen | 206 |
5.8.4 Das ESE-Werkzeug von Gajski et al | 223 |
5.9 Software-Entwicklung für Eingebettete Systeme | 224 |
5.9.1 Programmentwicklung | 225 |
5.9.2 Entwickeln von Klassendiagrammen mit CRC-Karten | 225 |
5.9.3 Entwurfsmuster | 228 |
5.9.4 Programm-Modelle | 228 |
5.9.5 Compiler für Eingebettete Systeme | 231 |
5.9.6 Programm-Optimierungen | 231 |
5.10 Verifikation, Simulation und Validierung | 237 |
5.10.1 Simulation | 238 |
5.10.2 Formale Verifikation | 245 |
5.10.3 Werkzeuge für Modellierung und Simulation | 248 |
5.11 Test | 250 |
5.11.1 Begriffsbestimmungen, Black-Box- und White-Box-Test | 251 |
5.11.2 Ein klassisches Fehlermodell | 252 |
5.11.3 Testmuster | 252 |
5.11.4 JTAG Boundary-Scan | 254 |
5.12 Zusammenfassung | 255 |
6 Beschreibungssprachen für den Systementwurf | 257 |
6.1 VHDL – Eine Hardware-Beschreibungssprache | 258 |
6.1.1 Grundlegender Aufbau | 259 |
6.1.2 Das Sprachkonzept | 263 |
6.1.3 Die Schaltungsbeschreibung | 264 |
6.1.4 Signale und Datentypen | 269 |
6.1.5 Operationen | 274 |
6.1.6 Parallele und sequenzielle Anweisungen | 277 |
6.1.7 Zusammenfassung | 290 |
6.2 Die System-Beschreibungssprache SystemC | 291 |
6.2.1 Grundlagen von SystemC | 293 |
6.2.2 Beispiel eines SystemC-Moduls | 296 |
6.2.3 Simulationssemantik | 305 |
6.2.4 Transaction-Modellierung mit SystemC | 307 |
6.2.5 RTL-Modellierung mit SystemC | 308 |
6.2.6 Zusammenfassung | 309 |
7 Sensornetzwerke | 311 |
7.1 Drahtlose Sensornetzwerke | 311 |
7.1.1 Einsatz von Sensornetzwerken, Topologie | 312 |
7.2 Kommunikation im Sensornetzwerk | 314 |
7.2.1 Der Protokoll-Stapel (Protocol Stack) von drahtlosen Sensornetzwerken | 316 |
7.2.2 Anwendungsschicht | 317 |
7.2.3 Transportschicht | 318 |
7.2.4 Netzwerkschicht | 318 |
7.2.5 Datensicherungsschicht (Data Link) | 319 |
7.2.6 Medium Access Control (MAC) | 320 |
7.2.7 Physikalische Schicht von drahtlosen Sensornetzwerken | 326 |
7.3 Der Sensorknoten | 327 |
7.3.1 Beispiele von Sensorknoten | 329 |
7.4 Kommunikationsstandards für MANETs | 331 |
7.5 Zusammenfassung | 333 |
8 High-Level-Synthese | 335 |
8.1 Einführung: Begriffsbestimmungen und Bewertung | 336 |
8.1.1 Begrisffsbestimmungen | 336 |
8.1.2 Eingabe und Ausgabe eines High-Level-Synthese-Werkzeugs | 337 |
8.1.3 Bewertung von elektronischen Schaltkreisen | 340 |
8.2 Die wesentlichen Schritte der High-Level-Synthese | 342 |
8.2.1 Allokierung | 343 |
8.2.2 Die Komponentenbibliothek | 344 |
8.3 Zeitablaufplanung (Scheduling) | 345 |
8.3.1 Einführung in die Zeitablaufplanung: Der Sequenzgraf | 345 |
8.3.2 Zeitablaufplanung ohne Ressource-Schranken | 348 |
8.3.3 Zeitablaufplanung unter Ressource- und Zeitschranken | 352 |
8.3.4 Einige besondere Verfahren der Zeitablaufplanung | 365 |
8.3.5 Zusammenfassung des Abschnitts Zeitablaufplanung | 369 |
8.4 Ressourcen-Bindung | 369 |
8.4.1 Kompatibilitäts- und Konfliktgraf | 370 |
8.4.2 Bindung von Speicher-Ressourcen (Registern) | 372 |
8.4.3 Die Grafen-Partitionierungs-Methode | 375 |
8.4.4 Zuweisung von Verbindungselementen und Erstellung der Netzliste | 377 |
8.5 Steuerwerksynthese | 384 |
8.5.1 Das mikrocodebasierte Steuerwerk | 385 |
8.5.2 Das hartverdrahtete Steuerwerk | 386 |
8.6 Zusammenfassung | 388 |
Literaturverzeichnis | 389 |
Index | 397 |