Mikroprozessortechnik Kapitel 3 und 4
Informationsdarstellung
Informationsdarstellung
-
- 1 / 42
-
Lernkarten
Wie gross ist ein Word ?
In Rechnersystemen mit mehr als 8 bit ( 1 Byte) Datendarstellungsbreite spricht man von einem WORT (word) dabei ist es egal ob es sich um ein 12 bit, 16bit, 32 bit oder 64bit word handelt.
Umwandlung der Dezimahlzahl 13 in eine Dualzahl
13/2 = 6 behalte 1
6/2= 3 behalte 0
3/2 =1 behalte 1
1/2= 0 behalte 1
von unten nach oben 1101
MSB 0 oder 1 positiv oder negativ im Dualsystem
MSB 0 = positive zahl im resten steckt der Betrag
MSB 1= negative Zahl im resten steckt der Betrag
Voteile 2er Komplement gegenüber 1er Komplement
0 bleibt 0 beim einerkomplemt wäre 0= 1111 1111
15 in Hex
F
12 in hex
C Cwölf
BCD Code
Binary Code Decimal jede Dezimalziffer entspricht 4 bite dabei wird Kapazitität zwar nicht voll ausgeschöpft anstelle von 256 nur noch 100 aber ein und ausgabe sind viel einfacher
Daten formate beim 68000er
bit
BCD
Byte
Word
longWord
Bit= 1 Bit
BCD = 4 Bit
Byte = 8 Bite
Word = 16 Bit
LongWord= 32 Bit
Wie viele Adressleitungen hat der 68000er
Er hat einen 16 Bit Buss aber trozdem handelt es sich um eine Byte- Maschine. Daher wir ein word 16 Bit in gerade und ungerade Adressen unterteilt.
Einschränkungen im 6800
Er besitzt keine Adressleitung A0 daher mus die Kontrolleitung mit UDS und LDS gebildet werden.
Weiter gilt (Lang) Worte dürfen nur auf geraden Adressen adressiert werden.
Unterschied zwischen Daten und Adressregister
-Datenregister können 1,2,4,8,16,32bit Daten gehalten werden. Wird nicht das ganze 32 bit Register verwendet so liegen die Daten immer im unteren Teil des Registers. Datenregister können zum z.B. keine Adresszeiger darstellen.
-Adressregister können 16 bit und 32 bit Werte enthalten und keine Arithmetik oder Logikoperationen ausführen.Bei Adressregisteroperationen wird im Normalfall das Statusregister nicht beeinflusst im gegensatz zu den Datenregisteroperationen. Weiter haben die Adressregister eine predecrement und postincrement möglichkeit, was den Aufbau von -stacks erleichtert.
Für was sind die beiden Register A7 und A7`
Sie werden vom Prozessor speziell behandelt sie dienen als Stackpointer das bei einem Subroutinenaufruf auf dem Stack die Rücksprungadresse abgelegt wird.
Statusregister
Das Statusregister ist ein 16 Bit-Register. Der Normale User hat aber nur zugriff auf die unteren 8 Bits die oberen 8 sind dem Supervisor vorbehalten. Wird vom User troztzdem versucht die oberen 8 Bits zu manipulieren, kommt es zu einer Ausnahmebehandlung
Wie heissen die unteren 8 Bits im -statusregister
Sie heissen Condition Code Register CCR
Carry,oVerflow,Zeroflag,Negativ,eXtend
Was macht das Carry Bit
Wird immer gesetzt wenn bei einer arithmetischen Operation im Zieloperand ein übertrag entsteht oder ein Borgen stattfindet.
1000 1111
+1000 1111
100011110
Unterstrichene 1 ist das Carry
Was macht das overflow Flag
wird bei einem Bereichsüberlauf gesetzt. Zum Beispiel wenn man bei einer 8 bit Operation über 256 kommt
wann wird das Zeroflag gesetzt
Wir gesetzt wenn das Ergebniss 0 ist bzw. bei einer Vergleichsoperation die Operanden gleich gross sind.
wann wird das Negativ flag gesetzt
wird gesetzt , wenn das höchstwertige Bit eines Zieloperanden gesetzt ist
wann wir das extend gesetzt
entspricht eigentlich dem Carry, wird aber nur bei Arithmetik gessetzt und nicht bei vergleichen. Das erlaubt den Inhalt des Carry über mehrere Operationen zu erhalten
Welche Bits sind in den oberen 8 Bits des Statusregister enthalten?
Interrupt, Supervisor, Trace
Erkklärung Interrupt Bit
Der 68k unterscheidet 7 Interrupt ebenen, die in einem 3bit- Word kodiert sind. 0 heisst kein Interrupt und eine Zahl grösser 0 bedeutet einen Interrupt. Mit der Maske kan man anstehende Interrupts ignorieren eine Ausnahme bedeutet die Ebene 7 die nicht maskierbar ist.
Supervisor bit
Dieses Bit ist 1 wenn sich der Prozessor im Supervisormode befindet. Dies ist der Fall nach dem Reset und nach dem auftreten einer Ausnahmebedingung.
Für was ist das trace Bite
Dieses Bit ermöglicht es, per Software Einzelschritte abzuarbeiten
Es wird vorallem von Debuggern genutzt
Welche 3 zustände hat der 68k
Normal : normale Betriebsausführung (inkl.STOP-Befehl)
Exception: Interrupts, Traps, Trace; führt automatisch zum Supervisor Modus
Halt: entweder HALT/-Leitung oder fataler Fehler (Double Bus Fault)
Zwischen welchen 2 Exceptions wir unterschieden
intern: Befehle (Traps, Trapv, CHK,DIV), Adressfehler, Trace-Modus
extern: Interrupts, Busfehler, Reset
Für was und wie gross sind die Vektortabellen?
Die Vektortabelle ist 1024 Byte gross die Tabelle sartet bei der Adresse 0X0000 und hat platz für 256 longword Einträge. In dieser Tabelle sind alle Ausnahmen drin vom 68K. Jeder eintrag in dieser Tabelle stellt ein Zeiger auf eine Ausnahmeroutine dar. Exeption Service Routine ESR.
Was passiert beim auftreten einer Exeption?
Zuerst der laufende Befehl fertig verarbeitet,dann in den Supervisor Modus geschaltet,der Programmcounter (PC) und dann das Statusregister (SR) auf den Stack A7 befördert. Jetzt wird der Zeiger der dieser Exeption entspricht in den PC geladen und das Programm fortgesetzt. Ist der Zeiger richtig gesetzt befindet sich das Programm nun in der ESR ( Exeption Service Routine) mit dem befehl RTE geht das Programm wieder zurück. Der RTE Befehl macht alles wieder rückgängig das unterbrochene Programm wird am gleichen Ort wieder fortgesetzt mit hilfe des Stcks (A7).
Für was sind die Exeptions gut ?
Sie geben dem Programmierer die Möglichkeit eine Ausnahme zu erkennen und darauf zu reagieren.
Wie behandelt man eine Exception?
Für die Behandlung gibt es keine Richtlinie. Für den Anfang reicht es oft alle unbenutzten Vektoren auf eine Routine zu biegen, die auf dem Bildschirm eine Meldung ausgibt welche Exception aufgetreten ist. Ausserdem kann er auch noch die Register zum Zeitpunkt der Exception anzeigen.
Was wird bei einer Exception auf den Stack geschrieben?
Immer der Programmcounter (PC) und das Statusregister (RS). Das reicht fast ihn allen Fällen Beim Busfehler und Adressfehler ist es aber nicht möglich den laufenden Befehl abzuarbeiten. Hier wird zusätzlich zu den obigen Daten noch der OPcode des unterbrochenen Befehls, die Adresse, auf der abgebrochen wurde und ein Super-Statuswort auf dem Stack abgelegt. Mit diesen Information kann nunn der Programmiere ziemlich genau die Stelle orten wo die Exception aufgetreten ist.
Für was sind die Funktionscode leitungen beim 68k?
Neben Adress und Datenleitungen hat der 68k auch noch drei Funktions Code Leitungen. Das bietet die Möglichkeit die Peripherie nur im Supervisor Modus anzusprechen und normalen Usern den Zugriff auf Ressourcen zu verwehren.
Synchroner Bus
Neben dem Asynchronen bus besitzt der 68 k auch einen synchronen Bus. Ein Zugriff auf diesen Bus unterliegt einem -starren Zeitschema, das nicht verändert werden kann. Daher die Peripherie und der Speicher dürfen eine Maximale Zugriffszeit nicht überschreiten.
Welche zwei Vektoren werden unterschieden ?
Der 68k hat 197 Non-Autovektoren und 7 Autovektoren. Die Autovektoren unterstützen einfach Peripheriebausteine dieser Bausteine stellen meist keine interruptvektoren zu verfügung, sie sind nicht in der Lage sind einen Vektor also eine 8 bit Zahl zu erzeugen und so dem 68k mitzuteilen, wo der Interrupt behandelt werden soll. Bei den Non-Autovektoren teilt der Peripheriebaustein während des Interrupt Antwortzyklus dem 68k einen Vektor mit.
Wie werden dem 68k Unterbrechungen mitgeteilt.?
Mit den drei Leitungen IPL2/ IPL1 und IPL0. Diese können acht zustände anehmen wobei kombination 111 keinnen interrupt bdarstellt und 000 stellt den höchstpriorisierten Interrupt ebene 7 dar.
Welche Bedinungen müssen von der Hardware erfüllt sein damit ein Interrupt erkannt wird und sie den richtige Vektor auswählen kann?
Eine Unterbrechung, die am IMR Interruptmaskregister vorbei kommt muss so lange am 68k anstehen, bis dieser die Interruptbestätigung beendet. Funktionscode 111. Die zu bearbeitende Interrupteben wird ausserdem noch auf den untersten Adressleitungen A1 bis A3 bekannt gegeben. Nun kann folgendes passieren
-VPA wird geliefert d.h Autovektor benutzt.
-DTACK wird geliefert d.h. die Peripherie liefert eine Vektor.
-BERR wird geliefert d.h falscheer interrupt (Vektor # 0x18)
Dasy-Chainning
Sorgt dafür das die 192 interruptvektoren auf den 7 Interruptebenen richtig ausgenützt werden.
Reset eingang
Um den Prozessor in einen definierten Zustand zu bringen dient der Eingang Reset. Nach dem Reset befindet sich der 68k im Supervisor- modus holt von denAdressen 0x0 und 0x4 den Reset-SSP und en Reset- PC, setzt die IR-Maske auf 7, das Tracebit auf 0 und das Superbit auf 1.
Halt
Das Halt Signal ist bidirektional.Als Eingang, zusammen mit Reset betätigt erzeugt einen Power-up-Reset. Allein als Eingang auf 0 gelegt, hält der 68k nach abarbeiten des momentanen Buszyklus die Programmausführung an und macht erst weiter wenn das Signal wieder auf 1 geht.Zusammen mit dem Bus Error Signal ermöglicht der 68k einen ReRun-Cycle was eine wiederholung des momentanen Befehl bedeutet. Wenn der 68k einen fatlen Fehler miteilen möchte ist er als Ausgang geschaltet.
Buss Error Anschluss
Über diesen Anschluss kann man dem Prozessor mitteilen, dass es mit der momentanen Programmarbeitung Schwierigkeiten gibt. dieses Siganl wird meisten aktiviert durch eine Bus-Timout-Logik wenn ein Zugriff in einen Adressbereich erfolgt in dem kein DTACK erzeugt wird
Busanforderung DMA anschluss
Manchmal muss man dem uP den Bus wegnehmen, wenn sich mehrer CPUs um den gleichen Prozessor bemühen oder wenn für schnelle Datentransfers eine DMA-Einheit (Direkt Memory Accesss)zu Verfügung steht z.B ein HD-Kontroller. Dafür gibt es drei Leitungen
- BR signalisation das man den Bus gerne übernehmen würde
-BG antwort das der Bus zu Verfügung steht.
-BGACK anzeigen das man im Besitzt des Buses ist.
Sobald man den Bus nicht mehr braucht BGACK wieder deaktievieren.