Bitte beschreiben Sie kurz was ein eingebettetes System ist.
Ein eingebettetes System ist ein Rechnersystem, bei dem alle Komponenten hochintegriert und eng miteinander verbunden sind. Es wurden ja schon FPGAs erwähnt, ich denke da ist von einem eingebetteten System die Rede, wenn auf einem Chip sowohl ein Prozessorkern als auch diverse (evtl Applikationsspezifische) Peripherie untergebracht ist. Ein Eingebettetes System kann auch ein Microcontroller mit fest verbundenem Speicher und Peripherie sein.
Die charakteristischen Eigenschaft eines eingebetteten Systems ist die enge Verknüpfung eines Prozessors mit Peripherie, welche ein sehr Anwendungsspezifisches Computersystem realisiert.
Eingebettete Systeme bieten durch die enge Integration Vorteile wie Energieeffizienz und reduzierte Herstellungskosten, oder erhöhte Performance durch wegfallen von generischen Schnittstellen, bringen aber den Nachteil der geringeren Flexibilität (außer im oben genannten FPGA Beispiel z.B.).
Ein eingebettetes System kann aber auch ein klassischer PC sein, der z.B. durch besonders kleine Bauform in andere Anwendungen integriert ist, z.B. in industriellen Steuerungsanlagen oder Maschinen. Hier bezieht sich “eingebettet” auf den Kontext des Systems und nicht auf die einzelnen Rechnerkomponenten.
Vorlesungsnotizen
Zeitleiste
ABS beim Flugzeug
Verhindern des Blockieren der Räder beim Landen auf nasser Piste
1927 entwickelt
Realisierungstechnik: Mechanisches System
Setzt sich auf Grund von Kosten nicht beim Auto durch
Konrad Zuse
1936: Mechanische Rechenanlagen
Später mit Relais
Raketentechnik 1940-1950
A4: Steuerung erst durch Uhr
Funkstation (Röhren) am Boden steuert Rakete
Funktechnik versagt aufgrund von Vibrationen in Rakete
Transistor: 1947
Computer mit Röhren (ENIAC)
Transistoren erhöhen Zuverlässigkeit und ermöglichen mehr Komplexität
Kalter Krieg: 1950
Minuteman Projekt: Interkontinentalrakete
Fernsteuerung funktioniert nicht aufgrund von Funkschatten
Miniaturisierung eines Rechners (mit Transistoren) zur Integration in Rakete
Integrierte Schaltung (IC)
Mondlandeprogramm
Benötigt integrierte Steuerung
Navigationscomputer AGC aus ICs (NOR-Gatter)
Nicht gelötet, sondern Wire-Wrap für Vibrationsschutz
Prototyp jedes heutigen Eingebetteten Systems
Kampfflugzeuge mit AGC
Technisches System (Rakete, Flugzeug, Auto) + Computer
Definition
Computer bekommt Messdaten von Sensoren, steuert Aktoren > Ein Eingebettetes System ist ein Computer der steuert, regelt, und in einen technischen Kontext eingebunden ist.
Heutige Computer (z.B. ABS, Airbag) gehen direkt auf AGC zurück
Komponenten sind entitys. Schnittstelle wird mit port spezifiziert. Port spezifiziert mehrere Eingänge in, an die Eingangssignale angeschlossen werden. Eingangssignale müssen spezifiziertem Typ (z.B. bit) entsprechen. Port spezifikation enthält auch Ausgänge out und Ein/Ausgänge inout.
Komponenten können aus Unterkomponenten bestehen, die miteinander verbunden sind. Diese Unterkomponenten können aus einer Bibliothek kommen.
Bibliothek wird genutzt mit
LIBRARY IEEE;USE ieee.std_logic_1164.all;
Der Inhalt einer Komponente wird spezifiziert mit der Anweisung architecture:
architecturebehaviorofNameisBeginEnd
Komponente kann mit Verhaltens- oder Strukturbeschreibung spezifiziert sein.
architecturestructureofNameisBeginEnd;
Eine Entity kann aus mehreren Architekturen aufgebaut werden. Zuerst wird das Verhalten spezifiziert. Dieses Verhalten wird getestet, durch eine Testbench Entity. Dann kann die Komponente “gebaut” werden, also die Strukturbeschreibung.
Das Verhalten stellt die Spezifikation dar, die Struktur stellt die Implementierung dar.
configurationnameofEntityisend configuration
Verhalten
Das Konzept process kapselt algorithmisches Verhalten.
Beispiel Multiplexer:
MX: process (a,b,s)Begin if s='1' then o<=a; else o<=b; endif;end process;
Auch Schleifenkonstrukte wie for, while sind möglich.
Ein process spezifiziert beliebige Algorithmen.
Auch auf der Registertransferebene lässt sich Verhalten spezifizieren:
architecture...begino<=a when s='1' else bend...
Dies ist eine Datenflussbeschreibung.
Struktur
Spezifizieren einer Komponente aus Bibliothek:
component NAND port ( a,b: in bit; c: out bit );end component;
Aufrufen der Komponente:
nand1: NAND portmap(t, s, o) (a=>t, b=>s, c=>o)
Datentypen
Numerische Datentypen
Integer, Real
Boolean true/false
Character
String
Time (fps oder s,h)
Bit '1'/'0'
Bit_Vector "10001"
IEEE
std_logic
Mehr logische Werte: U, X, 0, 1, Z, L, H, W, -
std_ulogic
std_logic_vector
Userdefiniert
type int0 is range 0 to 100;type int1 is range -100 to 1000;
Subtypes
“Vererbung”:
subtype int5 is Integer range -5 to 5;
Aufzählungen
type state is (locked, unlocked,...);
Komplexere Datentypen
4-bit breiter Bus:
type BUS is array(0 to 3) of bit;
Äquivalent zu c-struct:
type INTERFACE is record bus: BUS; ctrl: BIT; date: BUS;end record;
Simulationssemantik
In der Realität treten Effekte wie Verzögerungszeiten auf. Diese können modelliert werden:
x <= Not In after 10nsx <= Regejt 10ns Inertial Not In after 10ns
x <= Reject 0ns Inertial Not In after 10nsx <= Transport Not In after 10ns
Diese Konstrukte können nur für die Modellierung, nicht bei der Synthetisierung verwendet werden.
Die Transaktionsliste gibt die Zustände aller Signale zu jedem Zeitschritt an. Dabei werden Verzögerungen für jedes Gatter angenommen.
Bei sequentiellen Schaltungen werden zum Auflösen von Rückkopplungen künstliche Zeitschritte mit “delta-Zeitschritten” angegeben.
Architektur der Komponenten
Instruction Set Processor ISP
Struktur:
Mikroarchitektur
Register
ALU
Speicher
Verhalten
Befehle
add z, x, y
load, store
Befehlszyklus
Instruction Fetch
Instruction Decode
Operand Fetch
Execute
Store to Memory
Operand Store
Application Specific Instructionset Processor ASIP
z.B. Vektorrechner (SIMD), DSP
Applikationsspezifische Befehle
Spezifische Komponenten
Hardware Multiplizierer
Application Specific Processor ASP
Fur eine genz bestimmte Operation gebaut, z.B. FFT
Weitere Architecture in Registertransferebene/Gatterebene/…
Kann getestet werden mit Testbench, die anhand der Verhaltensbeschreibung konstruiert wird
-> Schrittweise Verfeinerung
Synthese digitaler Schaltungen
Verhalten -> Boolsche Gleichung
RTL Synthese
Boolsche Gleichung -> Gatter Netzliste
Logiksynthese
Erst zu logischen Komponenten (minimierung), dann Gatter (Technologie)
Silicon Synthese
Automatische Erzeugung des Layouts
Chip Technologie
Full-Custom-Entwurf
Layout und Schaltung spezifiziert ## Semi-Custom-Entwurf
Nutzen von Standardzellen (z.B. Addierer als fertige Komponente)
ASIC
Gate Arrays / Sea of Gates
FPGA
ASIC Entwurf
Standardzellenentwurf
Komponenten aus Bibliotheken (vorgefertigte Layouts)
Bibliotheken enthalten auch Verhaltensbeschreibungen zur Simulation
Gate Array
Array von Logikgattern
Durch entsprechende Verdrahtungen (mittels Layoutsynthese) entstehen Schaltungen
Braucht mehr Fläche als Full-Custom-Entwurf
Sea of Gates
Metallisierung nicht zwischen Gates, sondern beliebig über Gates
Zusammenfassung
Tradeoff Fläche<->Komplexität
FPGAs
Field Programmable Gate Array * Zusammengesetzt aus Arraystrukturen * In Arrayelementen befindet sich programmierbare Schaltung * n -> 1 Auswahllogik, Speicher realisiert LUT
Dies nennt man auch Foreground/Background System: Main-Loop im Hintergrund, Interrupts im Vordergrund.
Programmieren von Treibern in ADA
Mangels Motivation und aufgrund von Unwillen, die Software des Eurofighters näher zu betrachten, bleibt dieser Abschnitt leer.
EA Architekturen
I2C
ADC an I2C Baustein (Target)
Interrupt Controller mit I2C Initiator verbunden
I2C Initiator Baustein hängt am Microcontroller Bus
Sende- und Empfangswarteschlange
Zusammenfassen von Messungen in Pakete
-> Interrupt nicht bei jedem empfangenen Byte
I2C erlaubt z.B. Konfiguration des ADC
+DMA
Prozessor programmiert DMA Controller
ISA hat Cache und kann unabhängig vom Bus laufen
Echtzeitsysteme
Beispiel: Steuercomputer eines Flugzeugs
Mehrere Sensoren:
z.B. Beschleunigung, mit Signalverarbeitung:
A/D Wandlung
z.B. Integration zu Geschwindigkeit, Ort
analog dazu Drehratensensor
Drucksensor
Signalverarbeitung: Umrechnung zur Höhe
Geschwindigkeit mittels differenzieller Messung
Diese Sensordaten werden teils direkt auf Instrumente geführt, aber im Allgemeinen auf einen gemeinsamen Systembus geführt. Auf diesen Systembus werden auch die Nutzereingabe von z.B Steuerknüppel und Pedalen geführt.
Ein Zustandsregler erzeugt daraus Steuerdignale, die mittels D/A Wandler an Triebwerke und Klappen geführt werden.
Man stellt fest, dass hier viele voneinander unabhängige Operationen spezifiziert wurden. Diese nennen wir Tasks, die ständig voneinander unabhängig laufen.
Eine Anforderung an das Gesamtsystem ist, dass die gesamte Zeit von Eingang zum Ausgang begrenzt ist. Diese Begrenzung ergibt sich aus der Dynamik des Physikalischen systems, ein Überschreiten kann zur Instabilität führen.
Die Dynamik des Flugzeugs beeinflusst das Zeitverhalten des Rechensystems.
Der Rechner muss also so schnell wie nötig sein, allerdings wirken andere Anforderungen wie Größe und Kosten dem entgegen.
Ein solcher Rechner heißt Echtzeitsystem.
Zeit und Echtzeitsysteme
Ein Programm in einem Rechner läuft i.A. sequentiell ab. Diese Ausführung wird von einem Takt vorgegeben. Hier wird von Logischer Zeit gesprochen. Bei einer Logischen Uhr wird nur gefordert, dass die Ursache eines Ereignisses vor dessen Wirkung stattfindet.
In der reellen Welt wird durch die Zeit z.B. eine Bewegung beschrieben. Zur Messung der Zeit benötigen wir eine Uhr, die z.B. auf einer periodischen Bewegung basieren.
Ein Ereignis (in der VL dargestellt durch einen Blitz ⚡) ist ein zeitloser Zustandswechsel.
Die echte Zeit nennen wir Realzeit oder Echtzeit. Diese läuft unabhängig von den Vorgängen im Rechner.
Innerhalb unseres Rechners (zwischen A/D und D/A) herrscht die Logische Zeit. Wir definieren eine Frist, in der die Berechnung abgeschlossen sein muss.
Echtzeitssystem
Ein einegebetter Rechner, der durch externe Ereignisse ausgelöste Berechnungnen rechtzeitig ausführt. Das beinhaltet sowohl das Bereitstellen von Ergebnissen zu festen, vorgegebenen Zeitpunken als auch die rechtzeitige Fertigstellung von Berechnungen.
Diese Rechtzeitigkeit ist vorgegeben durch die Reale Zeit, nicht die Logische Zeit im Rechner.
Wir unterscheiden zwischen harten und weichen Echtzeitsystemen.
Harte Echtzeitsysteme
Keine Echtzeitverletzung wird toleriert.
Beispiele:
ABS
Steuerung eines AKW
Flugzeugregelung
Weiche Echtzeitsysteme
Kostenfunktion für Berechnungsdauer fällt langsam, flach ab. Rechnungen, die das Zeitlimit überschreiten sind nicht immer problematisch.
Beispiele:
Telefonnetz
Streaming
Nebenläufigkeit in Echtzeitsystemen
Zeitgesteuertes Echtzeitsystem
Englisch: Time triggered System
Ereignisse werden von periodischen Zeitimpulsen ausgelöst
Ereignisgesteuertes Echtzeitsystem
Ereignisse treten sporadisch auf
Wir erinnern uns daran, dass wir viele zeitlich unabhängige Abläufe spezifiziert haben. Das Ausführungsmodell der Tasks ist Nebenläufig.
Wahre Nebenläufigkeit
Aufgaben können gleichzeitig ausgeführt werden
Dies ist nicht unbedingt immer der Fall
Scheinbare Nebenläufigkeit
Zeitlich unabhängige Aufgaben, die scheinbar gleichzeitig ausgeführt werden
Sequentielle Abarbeitung
Es soll eine scheinbare Nebenläufigkeit auf einem sequentiellen Prozessor implementiert werden.
Ein Ablaufplan legt die Ausführungsreihenfolge der Aufgaben fest. Dieser kann fest einprogrammiert sein, oder durch Regeln spezifiziert sein. Ersteres nennt man ein statisches, zweiteres ein dynamisches Echtzeitsystem.
Ein dynamisches System können Aufgaben unterbrechbar (preemptive) sein, so kann flexibel auf externe Ereignisse reagiert werden.
Es muss eine Ablaufreihenfolge festgelegt werden. Dafür werden den Aufgaben Prioritäten zugewiesen, die wiederum statisch oder dynamisch sein können.
Ausführungsmodelle
Wie synchronisieren wir den Rechenablauf mit der externen Zeit*
Physical execution time programming PET
Für jedes Ereignis wird eine feste Menge Programmzeit \(c\) angefordert.
Ein Ereignis bei \(t_\epsilon\) ist zum Zeitpunkt \(t_\epsilon + c\) fertig.
Nachteil: Software ist nicht portabel, z.B. auf einen langsameren Prozessor.
Logical execution time programming LET
Synchronisation zur Realzeit mittels Timer
Task wird immer zu fester Zeit (periodisch) ausgeführt
Lesen und Schreiben immer bei Zeit \(n \cdot T\)
Zero execution time programming ZET
Annahme: Prozessor ist sehr schnell vgl. zur Anwendung
Ausführung eines Tasks in immer genau 1 Zeitschritt
Bei LET und ZET können statische Ablaufpläne erstellt werden.
Bounded execution time programming BET
Sporadische Ereignisse
Nach Eintreffen eines Ereignisses startet Ausführungsfrist
Ausführungsplan des scheinbar nebenläufigen Systems ist vorhersehbar!
RTOS
Nebenläufigkeitsmodelle werden durch einen Scheduler implementiert. Zwischen Tasks und ISA liegt ein OS oder RTOS.
Ein RTOS hat die Eigenschaften:
Geringe Interruptlatentz
Vorhersehbarkeit
Deterministische Ablaufpläne
Echtzeitbetriebssysteme
Aufgaben eines RTOS
Kernel Implementierung eines RTOS
Nebenläufigkeit
Ein Prozess wird hier task genannt.
Ein Prozess ist ein Programm und die dazugehörigen Daten.
Leichtgewichtige Prozesse heißen threads
Resourcenverwaltung:
Zeit (Prozessorzeit, Echtzeit durch Timer-Baustein)
Timer erzeugt Interrupt, ISR wird ausgeführt, unterbricht aktuellen Task
Externe Ereignisse erzeugen Interrupts
Ziel ist Unterstützung von nested Interrupts. Nach der ISR kann der Scheduler aufgerufen werden. Nach dem Scheduler wird der Dispatcher aufgerufen, welcher feststellt, welcher Task als nächstes ausgeführt werden soll.
Besonders in Echtzeitbetriebssystemen kann ein Task einen zusätzlichen Zustand “Zombie” annehmen, welcher z.B. angenommen wird, wenn der Task Fristen (Echtzeitbedingung) nicht einhält.
Echtzeitkernel
Task Control Block
PID
Registerinhalt (Prozessorkontext)
Register
PC
SP
…
Zustand (State: Ready, Idle, …)
Memory
Priority
Deadline
…
Next Pointer
Previous Pointer
Ready List als (Doubly) Linked List von TCBs
Analog Idle List, Zombie List, etc
Scheduling:
Round Robin
Earliest Deadline First
Sortierung der Tasks im Scheduler
Mit statischen Prioritäten: * Mehrere Ready Lists (für jede Priorität) * Komische redundante Datenstruktur (Bitmap) zum cachen der belegten Einträge