EMS - Mögiche Prüfungsfragen Ausbesserungen an eike@ehringer.de
1. Was ist ein Mikroprozessor?
- Zentraleinheit eines Datenverarbeitungssystems ( CPU = CentralProcessingUnit ),
- CPU besteht aus Rechenwerk und Steuerwerk ( Prozessorkern ) mit Schnittstellen zur Außenwelt. Hierbei keine speziellen Schnittstellen zu Peripheriegeräten,
- Heute meist mit weiteren Komponenten auf einem einzigen Chip untergebracht,
- Weitere Komponenten ( je nach Komplexität ) möglich, z.B. Cache, virtuelle Speicherverwaltung…
- Mit Ziel, ein Programm möglichst effizient auszuführen ( Geschwindigkeit).
2. Was ist ein Mikrocontroller?
- Ein oder mehrere parallel arbeitende Mikroprozessoren mit Peripherie ( = Mikrorechner ) auf einen Chip,
- Prozessorkern, Speicher und I/O-Schnittstellen sind auf die Lösung spezieller Aufgaben zugeschnitten, wobei Prozessorkern einfacher als der eines
Mikroprozessors und damit günstiger ist,
- Ziel: Steuerungs- und Kommunikationsaufgabe mit möglichst wenigen Bausteinen lösen,
- Anwendung oft einmal programmiert und für die Lebensdauer des Mikrocontrollers auf diesem ausgeführt,
- Reduzierter Stromverbrauch und damit verbessertes Echtzeitverhalten, - Oft unsichtbar in uns umgebenden Geräten verborgen,
- Vielzahl verschiedener Mikrocontroller.
3. Was ist ein Embedded System?
Unter eingebetteten Systemen versteht man Rechensysteme, die auf einen
Anwendungsbereich zugeschnitten und in einen technischen Kontext eingebunden sind.
Sie bestehen oft aus unterschiedlichen HW- und SW- Komponenten, Sensoren und Aktoren mit einer Mensch-Maschinen-Schnittstelle ( HMI ).
4. Welche Eigenschaften muss ein Embedded System beschreiben?
- Heterogenität:
Reaktion/Erzeugung auf unterschiedliche Datenarten:
i. Einzelne, asynchrone Ereignisse ( Interrupt ),
ii. Asynchrone Meldungen (Signalisierung und Daten), iii. Kontinuierliche Datenströme, z.B. Messungen.
- Echtzeitfähigkeit,
d.h. Antwort innerhalb bestimmter Zeitschranken, - Reaktivität,
d.h. Antwort auf bestimmte Stimuli ausführen, - Zuverlässigkeit,
d.h. ausfallsichere Bearbeitung der Ereignisse / Prozesse garantieren, - Verteilte Implementierung,
d.h. Kommunikation eines ES über ein gemeinsames Kommunikationssystem, - Im Regelfall nicht programmierbar durch den Endbenutzer,
- Feste Laufzeitbedingungen.
5. Vergleiche Embeddes Systems mit regulären Personal Computer:
Embeddes Systems: Personal Computer:
Weniger Anwendungen, die zur Entwurfszeit bekannt sind.
Breites Anwendungsspektrum.
Nicht programmierbar durch Endbenutzer.
Programmierbar durch Endbenutzer.
Feste Laufzeitbedingungen (zusätzliche Rechenleistung nicht nützlich).
Schneller ist immer besser.
Kriterien:
- Kosten,
- Leistungsverbrauch, - Vorhersagbare Geschw.
Kriterien:
- Kosten,
- Geschwindigkeit, - Geschw.
Virtualität, d.h. unsichtbar in den uns umgebenden Geräten verborgen.
„direkter Zugriff“ auf das System möglich.
6. Welcher Unterschied besteht zwischen Mikrocontroller und Prozessor?
Siehe Frage 1 & 2 -> Gegenüberstellung.
Mikrocontroller: Prozessor:
Prozessor Ein oder mehrere parallel
arbeitende Mikroprozessoren mit Peripherie ( =Mikrorechner ) auf einen Chip, speziell auf
Anwendung zugeschnitten.
Eine CPU.
I/O Bausteine Speziell auf Anwendung zugeschnitten.
Keine spezielle Schnittstellen.
Erweiterbarkeit Speziell auf Anwendung zugeschnitten.
Prinzipiell beliebig erweiterbar.
Software Auf Anwendung zugeschnitten, kann nicht vom Benutzer verändert werden.
Frei programmierbar.
Zeitverhalten Muss meist Echtzeiteigenschaften erfüllen.
Erfüllt meistens kein Echtzeitverhalten.
Stromverbrauch Möglichst gering. „Beliebig“ hoch.
Wärmeentwicklung Möglichst gering. Hoch, bis an
Spezifikationsgrenzen.
Preis Möglichst gering. „Beliebig“ hoch.
7. Ist der CAN-Bus Echtzeitfähig? Begründung!
JEIN!
Das Busprotokoll ist so aufgebaut, dass in der Meldung zuerst die ID (Arbitrationfield) aufgeführt wird. Je tiefer diese ist, desto höher priorisiert ist die entsprechende
Meldung. Dies ist die direkte Folge der Dominanz des Null-Pegels.
Damit ist sichergestellt, dass die höherpriorisierte Nachricht in jedem Fall übermittelt wird.
Also sind zumindest für wichtige Nachrichten auch die Antwortzeiten garantierbar.
Die Vertreter des CAN bezeichnen deshalb den Bus als echtzeitfähig.
( Im strengen Sinn der Definition stimmt dies allerdings nicht! Ein CSMA-Verfahren ist nie zu 100% deterministisch! )
Æ In der Praxis quasi-echtzeitfähig!
Im strengeren Sinne der Definition jedoch nicht, da nicht sichergestellt werden kann, dass wirklich alle Messages innerhalb gegebener Zeitspannen gesendet werden können.
Jedoch, wurde eine Modifikation des CAN-Protokolls gemacht:
TT-CAN = TimeTriggered-CAN
Der TT-CAN ist echtzeitfähig, da vor der eigentlichen Busarbitrierung eine
Busreservierung stattfindet in welcher ein garantiertes Versenden von Nachrichten in diesem Zeitfenster für bestimmte Teilnehmer gesichert ist.
8. Geben Sie stichpunktartig die Initialisierungsschritte des AD-Wanderls an, um einen Port zu messen.
- „Disablen“ der digitalen Eingänge an denen die analogen Signale anliegen, - Globales Interrupt Enable Control Bit im PSW (ProcessorStatusWord) setzen, - „ADCON“ Register konfigurieren:
B0-3: ADCH Channel selection 0000 channel 0;
when in auto scan
mode then start
with this channel
B4-5: ADM ADC Mode selection: 01 fixed channel
continuous conversion
B6: ADX ADC Extension Channel control: 0 selects AN0-15
B7: ADST ADC Start Bit: 0 start conversions
B8: ADBSY ADC Busy Flag: 0 ADC is idle;
set by system
B9: ADWR ADC Wait for read control: 1 ADDAT is not over-
written, when set
conversion is halted
B10: ADCIN ADC Channel injection enable: 0for specific B11: ADCRQ ADC Channel Injection Request Flag: 0 conversions B12-13: ADC Sample Time Control: 00 fastes mode B14-15: ADC ADC Conversion Time Control: 10 " "
- ADCIC Register (ADCInterruptControl) konfigurieren:
(occurs when converter has written a new value to ADDAT )
B0-1: GLVL: 00 group level B2-5: LVL: 0101 interrupt level B6: ADIE: 1 interrupt enable B7: ADIR: 0 interrupt request;
set by system
B8-15: reserved
- ADEIC Register (ADCErrorInterrupt) konfigurieren:
( occurs when ADDAT is rewritten, before it is read when ADWR (wait for read control in ADCON) is set, this interrupt would never occur! )
B0-1: GLVL: 0 group level B2-5: ILVL: 0011 interrupt level B6: ADIE: 1 interrupt enable
B7: ADIR: 0 interrup request; set by system when interrupt occurs B8-15: reserved
- Setzen des ADST (ADC Start Bit) in ADCON Register um die Wandlung zu starten,
- InterruptServiceRoutinen für die konfigurierten Interrupts programmieren.
9. Was ist ein PEC / Wie ist der PEC im groben zu benutzen?
PEC = Periphal Event Controller
Interrupt-gesteuerter DMA-ähnlicher Datentransfer über acht getrennte PEC-Kanäle.
Jedem Kanal (0…7) sind die Steuerregister (Peripheral Event Channel Controll PECCx), ein Source Pointer (SRCPx) und ein Destination Pointer (DSTPx) zugeordnet.
Die Pointer lassen sich so konfigurieren, dass entweder der SRCP oder der DSTP oder keiner der beiden beim Datentransfer um ein Byte oder ein Word weitergeschaltet werden.
Jeder beliebige Hardware INT kann einem der acht PEC-Kanäle zugeordnet werden.
Die Zuordnung geschieht durch ILVL=1111 oder ILVL=1110, zugeordnet ist, so wird aufgrund des GLVL ein PEC-Kanal ausgewählt und je nach Inhalt con COUNT im PECCx ein Datentransfer oder ein INT ausgelöst.
Ist COUNT =
o zwischen 254 und 1, wird das Request Flag gelöscht ( COUNT != 1 ), COUNT dekrementiert, die Pointer ggfs. Erhöht ( nach Einstellung PECC ) und ein PEC Transfer durchgeführt.
o = 0 im PECCx, dann wird ein INT ausgelöst.
o = 255 werden PEC Transfers durchgeführt ohne COUNT zu verändern und ohne Interrupts auszulösen.
10. Was ist Bitstuffing, was bewirkt es?
Bei CAN wird die Synchronisation durch Bitstuffing sichergestellt. Sobald in einer Sendefolge 5 gleiche Bits aufeinander folgen, wird ein inverses Bit, ein sogenanntes Stuff-Bit, eingefügt. Hierdurch wird sichergestellt, dass spätestens nach 5 Bitzeiten eine Signalflanke zur Nachsynchronisation zur Verfügung steht. Die Stuff-Bits werden von den CAN-Controllern der Empfänger nach der Taktrückgewinnung wieder aus dem Datenstrom entfernt.
11. Wie erfolgt die Interrupt Behandlung beim C167 im Gegensatz zum regulären Personal Computer?
Schritte:
1. Setzen des InterruptRequestBits (IRBit) im jeweiligen InterruptControlRegister xxIC 2. Überprüfung ob selektives InterruptEnableBit (IE) im xxIC gesetzt ist
3. Überprüfung ob zentrales InterruptEnableBit (IEN) im PSW gesetzt ist
4. Vergleich ILVL des PSW (aktuelle Service Priority) mit ILVL des auftretenden Interrupts (Request Priority)
5. Speichern des PSW, IP und bei segmentiertem Mode auch CSP auf dem Stack 6. Request Priority wird als Service Priority im PSW gespeichert
7. Das InterruptRequestBit der Hardware Interrupt Quelle wird gelöscht 8. Spezialbehandlung Multiplikation / Division …
9. Direkter Sprung an die mit der Interrupt-Nummer zugeordneten Stelle der
InterruptVektorTabelle. Dort stehender Code wird direkt ausgeführt. Dabei kann es sich um die ISR selbst oder um einen Sprung in eine seperate ISR handeln.
10. Die ISR wird abgearbeitet. Mit dem Befehl RETI (ReturnFromInterrupt) wird der ursprüngliche Stack wieder hergestellt und das Programm an der unterbrochenen Stelle weiterbearbeitet.
Hauptunterschiede PC – C167:
- bei einem PC erfolgt ein indirekter Sprung in die ISR, der C167 führt einen direkten Sprung in die Vektortabelle und führt den dortigen Code aus.
- Die Prioritätenberücksichtigung erfolgt beim PC durch den PIC, im Gegensatz zum C167 der selbst die Prioritäten im PSW vergleicht.
12. Geben Sie ein Flussdiagramm zur Initialisierung des Displays DIP204-4 – wie Sie es aus der Übung kennen.
An das Display müssen folgende 6 Befehle geschickt werden:
Initialisierungsbeispiel für den 8-Bit Modus
Befehl: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 HEX Bemerkung:
Function Set 0 0 0 0 1 1 0 1 0 0 $34 8-Bit Datenlänge,
extension Bit RE=1 Ext.
Function Set 0 0 0 0 0 0 1 0 0 1 $09 4 Zeilen Modus
Funcion Set 0 0 0 0 1 1 0 0 0 0 $30 8-Bit Datenlänge,
extension Bit RE=0 Display
ON/OFF 0 0 0 0 0 0 1 1 1 1 $0F Display ein, Cursor
ein, Cursor blinken
Clear Display 0 0 0 0 0 0 0 0 0 1 $01
Display löschen, Cursor auf 1. Spalte von 1. Zeile
Entry Mode 0 0 0 0 0 0 0 1 1 0 $06 Cursor Auto-
Increment
( Quelle: http://www.lcd-module.de/deu/pdf/doma/dip204-4.pdf )
13. Geben Sie die Initialisierungssequenz des Displays DIP204-4 codemäßig an.
??????????????????????????????????????????????
14. Geben Sie ein Flussdiagramm zur Initialisierung der Tastatur – wie Sie es aus der Übung kennen.
- Pins, an denen die Clock- und Datenleitung der Tastatur angeschlossen sind müssen auf Eingang konfiguriert sein,
- Capture/Compare Interrupt auf fallende Flanke konfigurieren, - Interrupt an Pin 14 (Datenleitung) enablen,
- InterruptLevel und GroupLevel vergeben.
Im Einzelnen läuft dann Folgendes ab:
- Die Tastatur legt das Startbit auf den Datenpin. Um dieses Signal zu erkennen kann man entweder ständig den Pin pollen oder sich über die Capture/Compare Einheit am Pin 14 über einen Interrupt informieren lassen,
- Ist das Signal erkannt, wartet man wieder auf die nächste fallende Flanke des Taktsignals und liest das erste Bit (Least Significant Bit) vom Datenpin,
- Dies wiederholt sich wieder bis zum achten Bit. Das empfangene Byte wird zur Weitergabe in einer globalen Variablen abgelegt. Danach liest man das Parity Bit, - Am Ende wird noch ein Stoppbit übertragen.
15. Geben Sie die Initialisierungssequenz der Tastatur codemäßig an.
??????????????????????????????????????????????
16. Geben Sie ein Flussdiagramm zur Initialisierung des CAN-Bus- Controllers – wie Sie es aus der Übung kennen.
- Externe Peripherie enablen (XPEN), - CAN Modul 1 enablen,
- Pins der Sende-und Empfangsleitungen von CAN1 als Aus- bzw. Eingang definieren, - Porttreiber festlegen (OD/PP-Mode),
- Globales Interrupt Enable Bit setzen,
- Control Status Register des CAN1 initialisieren (C1CSR), - PortControl Interrupt Register initialisieren (C1PCIR), - Bit Timing Register initialisieren (BTR),
- Global Mask Short initialisieren (GMR), - Alle Message Objects als ungültig erklären,
- Den Message Objects werden IDs für die Arbitrierung zugeordnet, - Konfiguration der Message Objects,
- Verwendete Message Objects als gültig erklären,
- Am Ende der Initialisierung das Initflag im C1CSR zurücksetzen!!!
- CAN1 Interrupt enablen,
- Priority und Group Level für den Interrupt vergeben.
17. Geben Sie die Initialisierungssequenz des CAN-Buses codemäßig an.
??????????????????????????????????????????????
Für den DVT Zusatz SS2004 – Hier darf natürlich auch jeder helfen!
1. Was ist ein Programmierbarer Baustein?
??????????????????????????????????????????????
2. Vorteil von Programmierbaren Bausteinen gegenüber regulären Bausteinen?
- Flexible Schaltungsentwicklung,
- Flexible „standardisierte“ Entwicklung mit PALs und PLAs,
- Wiederverwendung von bereits Entwickelten Schaltteilen ( als Blackbox ), - Platzersparnis / Kostenersparnis,
- Leichtes aufbauen von yP-Steuerwerke,
- Möglichkeit von PC-Simulationen in der frühen Entwicklungsphase, - Höhere Schaltzeiten.
3. Unterschied zwischen Bausteine: PAL/GAL – CPLD – FPGA
PAL / GAL: CPLD: FPGA:
Logik-Ressourcen
Wenige und sehr einfache
Ressourcen,
Komplexe Logik nur mit Hilfe von
Feedbacks.
Wenige, komplexe Ressourcen.
Viele, sehr einfache Logikelemente, Umsetzung von komplexer Logik erfordert viele Module.
Verbindungsaufbau Verdrahtungsmatrix. Schaltmatrix.
Logik kann global und lokal genutzt werden.
Geschwindigkeit
Sehr schnell, Langsam beim Einsatz von Feedbacks.
Schnell.
Abhängig on Verdrahtung und Platzierung.
Zeitliches Verhalten Vorhersagbar. Vorhersagbar. Nicht vorhersagbar!
Software PLD-Compiler. Mapper / Fitter. Place and Route, Simulation.
4. Vorteile und Nachteile zwischen Bausteinen: PAL/GAL – CPLD – FPGA
5. Was ist die Motivation für die Verwendung von VHDL - Warum?
- Hardwarelösungen oft vorteilhafter ( gegenüber SW ):
i. Verarbeitungsgeschwindigkeit, ii. Zuverlässigkeit,
iii. Leistungsverbrauch, iv. Sicherheit.
- Produktivitätssteigerung, - Immer kürzere Produktzyklen, - Technologischer Fortschritt.
6. Was kann mit VHDL gemacht werden?
- Schaltungs- Entwicklung / Simulation / Optimierung / Verifikation, - Wiederverwendung von bereits realisierten Schaltungsteilen, - Standarisierung des Formates zur Weiterverwendung
z.B. Portierung / Übertragung auf programmierbaren Baustein…
- ! Siehe Punkt 7. !
7. Vorteile von VHDL?
- Steigerung der Produktivität,
- Fehlervermeidung durch Simulation, - Standarisierung,
- Allgemeine und detailierte Beschreibung von Bauteilen, - Logik- und Timing- Spezifikation ( Keine Pegelspezifikation ), - Entity Deklaration ( Welches, wie viel Anschlüsse ),
- Parallele Simulation bis alle Eingänge Stabil sind, - Sequenzielle Abarbeitung z.B. Register.
8. Geben Sie einen Überblick über den Entwurfsablauf in VHDL.
- Spezifikation:
i. Gewünschtes Verhalten,
ii. Schnittstellen ( Zahlen und Art der E/A ),
iii. Randbedingungen ( Geschw., Kosten, Fläche, Leistungsverbrauch…), - Implementierung:
i. Entwurfsdomänen / Entwurfsebenen:
- Entwurfsablauf: