Mitschrift Mikrocomputer -...

44
Mitschrift Mikrocomputer 18.12.2004 Seite 1 von 44 Mikrocomputer INF 5T Wintersemester 2004/2005

Transcript of Mitschrift Mikrocomputer -...

Page 1: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

18.12.2004 Seite 1 von 44

Mikrocomputer

INF 5T

Wintersemester 2004/2005

Page 2: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

Inhaltsverzeichnis1 Einführung..............................................................................................................................4

1.1 Architektur eines Mikrocomputers..................................................................................41.2 Möglichkeiten der Algorithmusimplementierung...........................................................5

1.2.1 Algorithmusentwicklung.........................................................................................51.2.2 Algorithmusimplementierung..................................................................................5

1.3 ?.......................................................................................................................................61.4 ?.......................................................................................................................................61.5 Logikfamilien..................................................................................................................61.6 Logikbausteine................................................................................................................6

1.6.1 Bezeichnungssystematik..........................................................................................61.6.2 Beispiele der 74er Serie...........................................................................................6

2 CPU.........................................................................................................................................72.1 Grundlagen Befehlsabarbeitung und Maschinensprache................................................7

2.1.1 Befehlsanordnung im Speicher................................................................................72.1.2 Maschinenprogramm...............................................................................................72.1.3 Prinzip Maschinenprogramm...................................................................................72.1.4 Befehlszyklus...........................................................................................................8

2.2 Blockdiagramm CPU......................................................................................................82.3 Betriebsarten der CPU.....................................................................................................8

2.3.1 Normaler Betriebsmodus.........................................................................................82.3.2 Interrupt-Modus.......................................................................................................9

2.3.2.1 Begriffe............................................................................................................92.3.2.2 Abarbeitung von Interrupts..............................................................................92.3.2.3 Interrupt Control Register................................................................................92.3.2.4 Prinzipielle Programmstruktur mit Interrupt-Servicefunktion.........................9

2.3.3 Power Down-Modus..............................................................................................102.3.4 DMA-Modus..........................................................................................................10

3 Peripheriemodule..................................................................................................................113.1 Digitale Ports.................................................................................................................113.2 Timer und Zähler...........................................................................................................11

3.2.1 Vorlesungsübung 2................................................................................................123.3 Peripheriemodule für serielle Datenübertragung..........................................................14

3.3.1 Allgemeines...........................................................................................................143.3.1.1 Unterscheidung parallel – seriell...................................................................143.3.1.2 Kommunikationsmodi....................................................................................143.3.1.3 Übertragungsmodi synchron – asynchron.....................................................14

3.3.2 Asynchrone Übertragung mit UART.....................................................................153.3.3 Synchrone Datenübertragung................................................................................16

3.3.3.1 Separate Übertragung von Takt und Rahmen-Anfang/Ende.........................163.3.4 Physical Layer.......................................................................................................16

3.3.4.1 RS 232-Standard............................................................................................163.3.4.2 RS485/488......................................................................................................17

3.3.5 CAN.......................................................................................................................174 Programmiermodelle und Assemblerprogrammierung.........................................................19

4.1 Arithmetik in B-Komplement-Darstellung...................................................................194.1.1 Ganzzahlen............................................................................................................19

4.1.1.1 Addition.........................................................................................................194.1.1.2 Subtraktion.....................................................................................................204.1.1.3 Multiplikation................................................................................................21

18.12.2004 Seite 2 von 44

Page 3: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

4.1.2 Festkomma-Zahlen................................................................................................214.1.2.1 Addition.........................................................................................................234.1.2.2 Subtraktion.....................................................................................................244.1.2.3 Multiplikation................................................................................................24

4.2 Programmiermodelle.....................................................................................................254.2.1 Registerstrukturen..................................................................................................254.2.2 Operanden-Adressierung.......................................................................................254.2.3 Adressierung Code.................................................................................................26

4.2.3.1 Ein Instruction Pointer...................................................................................264.2.3.2 Banking..........................................................................................................264.2.3.3 Segmentierung...............................................................................................27

4.3 Maschinenbefehle - Assemblersprache.........................................................................284.3.1 Transportbefehle....................................................................................................284.3.2 Datenbearbeitungsbefehle......................................................................................284.3.3 Rotier- und Schiebebefehle....................................................................................294.3.4 Bitmanipulation.....................................................................................................294.3.5 Programm-Steuer-Befehle.....................................................................................304.3.6 CPU-Steuerbefehle................................................................................................314.3.7 Unterschied Controller – DSP – Prozessor............................................................32

5 Bussysteme............................................................................................................................335.1 Grundlagen Busarchitektur............................................................................................33

5.1.1 Überblick Busse.....................................................................................................335.1.2 Einteilung Busarchitekturen..................................................................................335.1.3 Prinzipieller Bus-Aufbau.......................................................................................34

5.2 Buszyklus......................................................................................................................355.2.1 Asynchroner Buszyklus.........................................................................................355.2.2 Synchroner Buszyklus...........................................................................................365.2.3 Multiplex von Adressen und Daten.......................................................................37

5.3 Adressraum-Dekodierung.............................................................................................385.3.1 Minimale Adress-Dekodierung.............................................................................385.3.2 Maximale Adress-Dekodierung.............................................................................38

18.12.2004 Seite 3 von 44

Page 4: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

1 Einführung

1.1 Prüfung und Literatur

1.2 Architektur eines MikrocomputersDerivat: Halbleiter-Hersteller bieten Controller-Fam. an, welche auf einer CPU basieren (= einMaschinenbefehlsatz), jedoch mit unterschiedlichen Peripherieaussattung (on-chip).

Ausgewählte Herstellerliste:

Hersteller ProduktInfineon 8051-Fam. 8-Bit

C167-Fam. 16-Bit (Einsatz im Praktikum)TriCore 32-Bit

Motorola 68 ... 05 / 08 / 12PowerPC 32-Bit

Philips 8051XA

MicrochipTech PICAtmel 8051

AVRARM 32-Bit (sehr beliebt bei Handys)

Intel ARM (-> XSCALE)8051

Penesas H8S, M16 bis 32-BitZilog Z80

1.3 Algorithmus

1.3.1 AlgorithmusentwicklungNicht Thema dieser Vorlesung

1.3.2 Möglichkeiten der Algorithmusimplementierung

PROZESSOR mit Pro-grammspeicher

Fest verdrahtete Logik Programmierbare Logik

Programm schreiben in C,C++, Java, Delphi, ...

VHDL (Sprache)

Kompilieren / Übersetzen Synthese

Maschinenprogramm, re-lative

object-files

Schaltplan / Schematic

Linken / Binden benötigtSpeicheradressen des mC-Systems

Platzieren und Verdrahteten

18.12.2004 Seite 4 von 44

Page 5: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

PROZESSOR mit Pro-grammspeicher

Fest verdrahtete Logik Programmierbare Logik

Maschinenprogramm mitphysikalischen Adressberei-chen

Layout, Lageplan

Laden (serielle Schnittstelle) Film, Platinenhersteller, Be-stücken (z.B. löten)

Baugruppe mit program-mierten Programmspeicher

Fertige Baugruppe

� Standard-Baustein

� billig

� flexibel programmierbar

� statische lösung

� zeit- & kostenintensiv

� sehr kostenintensiv

� komplex

� nicht jedes VHDL- Pro-gramm ist realisierbar

1.4 Informationsabbildung und -darstellung1. Abbildung2. Darstellung

analoge: zeitkontinuierlichwertkontinuierlich

digitale: zeitdiskretwertdiskret, wertbegrenzt

Vorteile:� einfache Darstellung durch binäre Zustände� einfach speicherbar

z.B. Kondensator geladen / ungeladenFlipflop

� störsicher

Gruppierung von Bits:4 Bit Nibble8 Bit Byte16 Bit Word int32 Bit long word

3. Binäre Zustände in der Digitaltechnika) Low-High Potential

b) Zeitverzögerung

18.12.2004 Seite 5 von 44

Leitung für Bit x

GND

ux

Bezugspotential“Ground”“Masse”

Log. 0 � 0 < ux < uLOW

Log. 1 uHigh < ux < uB

Betriebsspannung

Page 6: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

c) LeistungLeistungsverbrauch logischer Gatter�� �����

������ ���

� ��������������������������������

� �

������������ ��

����

1.5 LogikfamilienUnterscheidungsmerkmale

� Halbleitertechnologie (CMOS, Bipclon, BICMOS, ...)

� Betriebsspannung

� Low-High Pegel

� Leistungsaufnahme

� Geschwindigkeit

� Treiberleistung

� single-ended differential

� Terminierung

1.6 Logikbausteine

1.6.1 Bezeichnungssystematik

1.6.2 Beispiele der 74er Serie

18.12.2004 Seite 6 von 44

y

x

pStart

t

CLK CLK

Page 7: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

2 CPU

2.1 Grundlagen Befehlsabarbeitung und Maschinensprache

2.1.1 Prinzip MaschinenprogrammAufbau eines Maschinenbefehls

2.1.2 Befehlsanordnung im SpeicherJede Speicherzelle hat eine Adresse: z.B. von 0x0000 bis 0xFFFF; jede Stelle stellt dabei 4 Bitzu, also ist in dem Beispiel der Gesamtadressraum 16 Bit

Mit den Adressen werden BYTE adressiert, nicht WORDs. D.h. bei 16bit und 32bit Pro-zessoren werden immer Bytes adressiert, auch wenn 2 bzw. 4 Byte auf einmal ausgelesenwerden (können).=> Adressen werden (meist) byteweise gezählt

Bem. Adresse Inhalt AssemblerCPU holt ersten Befehl nach Reset 0x0000 Befehl 1 NOP

0x0001 Befehl 2 JUMP

Zieladresse des Sprunges (low Byte) 0x0002 ALB

Zieladresse des Sprunges (hight Byte) 0x0003 AHB

...

Zieladresse 0x00.. Befehl 3

2.1.3 MaschinenprogrammC-Beispielprogramm:unsinged int a, b[5], c, i; // 16-bita = 0;c = 2;

for( i = 5; i > 0; i-- ) { a = a + b[i]; a = a * c;}

2.1.4 Prinzip Maschinenprogramm

Folgerungen:� Maschinenbefehle sind aufgebaut aus:

� Operations-Code „OpCode“� Operanden

� interne Register ermöglichen es dem Compiler, das Maschinenprogramm effizienter zugestalten:� effiziente Adressieren (da Adressen wesentlich kürzer)

=> kürzerer Code, schnellere Ausführung� schnellerer Zugriff als auf (externen) Speicher

18.12.2004 Seite 7 von 44

N-1 0 OP-CODE OPERANDENOperations-code

Page 8: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

� wird ein Befehl falsch interpretiert (durch Störung), kann der nachfolgende Operand alsBefehl interpretiert werden oder umgekehrt=> die CPU schmiert ab

� Befehlsabarbeitung besteht aus mehreren Phasen

18.12.2004 Seite 8 von 44

Page 9: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

2.1.5 Befehlszykluseffiziente Abarbeitung durch „Pipelining“

Unit \Cycle

i i+1 i+2 i+3 i+4 i+5

Fetch N N+1 N+2 N+3 N+4 N+5

Decode N N+1 N+2 N+3 N+4

OperandFetch

N N+1 N+2 N+3

Execute N N+1 N+2

WriteBack

N N+1

2.2 Programmiermodelle

2.2.1 Blockdiagramm CPU

2.2.2 Registerstrukturen1. Daten- und Adressenregister

2. Kontrollregister

a) Steuerbits für ALV

b) Interupt-Control-Register SER

2. Steuerregister

a) PSWStatusbits der ALVaktuelle PrioritätRegistersatz

Warum Register für Adressierung und Operanden?

� effiziente Adressierungmehrere Registeradressen (Registerindex)können in einem Maschinenbefehl codiert werden

� schneller Zugriff auf interne Register

� Optimierungsmöglichkeit für Compiler

2.2.3 Adressierung OperandenPrüfungsfrage: Nennen Sie drei Adressierungsarten und erläutern Sie diese kurz.

18.12.2004 Seite 9 von 44

Ad ressberechnu ng

“Fetch”

Decod e(Befeh lsd ecod ieru ng)

Op erand en- Ad resse(Berechnu ng)

op eran dFetch

Execu teALU- op erat ion

Ad ressberechnu ngfü r Ergebn is

write back

Page 10: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

Beschreibungen siehe Folien1) Immediate2) Memory direct3) Register direct4) Register indirect5) Base Offset6) Zirkuläre Adressierung

2.2.4 Adressierung CodeUnterschieden wird

1) absolute Adressierung

2) relative Adressierung

3) direkte Adressierung

4) indirekte Adressierung

Die (physikalische) Adressierung kann erfolgen über

1) einen Instruction Pointer

2) mehrere Instruction Pointer � Segmentierung� Banking

2.2.5 Grundstrukturen C-Assembler

2.3 Betriebsarten der CPU

2.3.1 Normaler Programmablaufint main( void ){ Initialisieren(); while( 1 ) { /* Polling-Schleife */ EingängeLesen(); /* !! no busy waiting !! */ AusgangszuständeBerechnen(); AusgängeSchreiben(); }}

CALL Init

L1: CALL InputCALL CompCALL OutputJUMP L1

Main-LoopPolling-Schleife oder Hauptschleife

Enthält keine „busy-waitings“ (aktives Warten auf Eingaben).

Typischerweise werden in der Pollingschleife Benutzereingaben und Displayausgaben be-arbeitet oder Ereignisse bearbeitet, welche Bearbeitungszeiten bis 50ms tolerieren.

Im Allgemeinen läßt sich eine maximale Durchlaufzeit der Pollingschleife ermitteln � fallsder Controller nur die Pollingschleife bearbeitet, wäre diese „echtzeitfähig“ bis zu dieserDurchlaufzeit.

Echtzeitfähig = maximale Rechenzeit wird garantiert.

Ereignisse, welche eine schnellere Bearbeitung erfordern als die Pollingschleife Laufzeithat, werden in Interruptfunktionen behandelt.

18.12.2004 Seite 10 von 44

Adresse der Routine “Initialisieren”

Page 11: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

2.3.2 Interrupt-Modus

2.3.2.1 BegriffeUnterscheidung „Exceptions“.� Asynchron zum Programmlauf (externe Ereignisse)

� Synchron zum Programmlauf (Stackover- / -underflow, ...)

� maskierbar (d.h. kann die Exception deaktiviert werden)

� Priorität

Einteilung nach Filk/Liebig:� Traps: synchron zum Programmlauf

� Interrupts: asynchron

Einteilung Infineon C166-Serie:� Traps: nicht maskierbar

� Hardware-Traps (Reset, NMI (Non Maskable Interrupt), Bufferoverflow, ...)� Software-Traps

� Interrupts: maskierbar, Priorität einstellbar (im wesentlichen die asynchronen HW-Er-eignisse)

2.3.2.2 Abarbeitung von Interrupts� Prioritäten

� Aufruf der Interrupt-Servicefunktion

� Interrupt-Latenzzeit

Prüfungsfrage: Was passiert bei einem Interrupt? (siehe Folie „Aufruf der Interrupt-Ser-vice...“

2.3.2.3 Interrupt Control Register<Folie „Aufbau Interrupt Control Register“ und „Programm Status Word ...“>

z.B. T3IC = 88; //dezimal0x48; //hexadezimal

enable flag und Priorität 6 wurden gesetzt

IEN = 1 // IEN bitadressierbar// im Headerfile hinterlegt

T3IE = 0; // � T3-Interrupt disabled

2.3.2.4 Prinzipielle Programmstruktur mit Interrupt-Servicefunktion#include <reg161.h>

int main( void ){ T3IC=0x48; IEN=1; ... //restliche Initialisierungen while( 1 ) {

18.12.2004 Seite 11 von 44

Page 12: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

EingängeLesen(); Zustände(); Ausgänge(); }}

/* Interrupt-Servicefunktionvoid Timer3( void ) interrupt 0x23 { /* 0x23 ist die Interrupt-Nr. */ ...}

2.3.3 Power-Down ModiStromspar-Modi können durch verschiedene Maßnahmen eingeleitet werden.� Abschalten von Peripheriemodulen, welche (momentan) nicht benötigt werden

� Verringerung der Taktfrequenz (durch Konfigurationsbits)

� CPU abschalten (Aufwecken z.B. durch Interrupt)

spezielle Befehle, z.B. SLEEP, IDLE, PWRDOWN

2.3.4 DMA-Modus„Direct Memory Access“CPU übergibt die Kontrolle über den Speicher an ein Peripheriegerät.

18.12.2004 Seite 12 von 44

Page 13: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

3 Peripheriemodule

3.1 Digitale PortsPorts sind Anschlüsse des Controller-Chips für Steueraufgaben. Es gibt zwei Typen:

� Digitale EingangsportsEingangsspannung am Port-Pin wird in eine logische 0 oder 1 verwandelt (� ElectricalCharacteristics);

� Digitaler AusgangsportLogische 0 oder 1 wird in ein Low- oder High-Potential von einem Pin umgesetzt.

Typischerweise werden die Portpins Portregistern zugeordnet.

P2 16-Bit 0xFFC0 physikalische Adresse...VAR = *((unsigned int volatile *) 0xFFC0);

Im (Keil)-C erfolgt der Zugriff über sogenanntes SFR (eng. Special Funktion Register). DieseFunktionen und andere Werte sind in der spezifischen Header-Datei zum jeweiligen Con-troller hinterlegt (z.B. #include <reg161.h>)

Beispiel:SFR P2 0xFFC0

� Umschaltung zwischen digitalem Eingangsport und Ausgangsport erfolgt typischer-weise über Konfigurationsregisterz.B. beim Port P2 mittels Registers DP2

Beispiel:z.B. ... 4 3 2 1 0

0 1 1 0 0 DP2

... ... ... Output Input Input P2

in C. Hinweis: DP2 heißt Direction Port 2DP2 = 0x0000; /* alles Eingänge */Variable = P2;DP2 = 0xFFFF; /* alles Ausgänge */P2 = Variable;

3.2 Timer und Counter

3.2.1 GrundaufbauWichtigste Verwendungszwecke:� Zeitbasis erzeugen (unabhängig von der CPU-Clock, denn wir wollen vielleicht nur Milli-

Sekunden oder Sekunden für die Messtechnik verwenden)� Ereignisse zählen

Beschreibung zu Folie <mc_kap_3-2_timer>, Seite 1:1. Wir haben eine CPU. Diese CPU ist MHz-getaktet, typischerweise mit 16 und 20 MHz.

Wir könnten also die CPU zählen lassen. Das Problem ist nur, dass der Prozessor 16 Bitbreit ist und somit max. bis 216 = 65535 zählen kann.

18.12.2004 Seite 13 von 44

Page 14: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

2. Ersatz: ein Vorteiler (engl. Prescaler) teilt die Frequenzen in 2er Pozenzen (also 20, 21, ...,215). Den Wert des Teilers (also 0 – 15) liest der Vorteiler aus dem Vorteiler-Register(engl. Prescale-Register). Dieses Register kann über den Bus beschrieben werden.

3. Der n-Bit-Zähler (engl. n-Bit-Counter) zählt die Impulse, die der Vorteiler abgegebenhat. Aber nur wenn der Counter überläuft, wird ein Interrupt-Request-Flag gesetzt.Wenn wir also früher einen Interrupt auslösen wollen, dann müssen wir den Counterbei einem Wert != 0 starten lassen, und schon läuft er eher über!

4. Zeitbasiserzeugung nur mit Zählerregister. Laden in Interrupt-Servicefunktionvoid Timer interrupt 0x...{ TIM = Startwert; // -10000 ...}nicht exakt, da Aufruf Zeit benötigt

genauer:TIM = TIM + Startwert; // bei uns: TIM – 10000

5. separates Reload-Regster; kein Code in der Service-Routine nötig. Das Reload-Registerspeichert also den Initialwert des Counters, für die nächste Zählung, nachdem ein Inter-rupt ausgelöst wurde

6. Wenn ein Interrupt angefordert wird, ist TFLag = 1, ansonsten 0.7. Der rechte Schalter dient dient zum An- und Ausschalten der Zeitzählung8. Der linke Schalter bestimmt den Modus, also ob der Zähler raufzählen soll (i++) oder

runter zählen soll (i--).9. Gate-Modus: zählen, nur wenn high ist

t

Tim

erre

gist

er

Bei Überlau f - > In terru p t - Requ es t

10m s

10000 m it reload“T3 = - 10000” < -

- FFFF

Au fwärts -z äh len d

Oh n e Reload

Prescaler 1/16 � Eingangstakt Timer = 1MHzgewünscht: 10ms Überlaufperiode 10000 * zählen

3.2.2 Capture (Beschreibung zu Folie <mc_kap_3-2_timer>, Seite 2):1. Bei einem Ereignis wird der Counter-Wert in das Capture-Register kopiert (damit man

also feststellen kann, wie viel Zeit bis zu diesem Ereignis vergangen ist).Beispiel: Ereignis E1 erzeugt Cap1, Ereignis E2 erzeugt Cap2. Wie groß ist die Zeitdiffe-renz?

Lösung: � t��cap2 cap1��VorteilerFCPU

2. Wann wird reagiert? Z.B. nur bei positiven Flanken

18.12.2004 Seite 14 von 44

Page 15: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

E1 E2

Cap 1

Cap 2

E3

?

� = Cn+ 1 – Cn + Nü · Per iod e

In terru p tÜberläu fe z wisch enz wei Even ts z äh len (Nü)

t

Even t

1 2 3

�= C2- C1

3.2.3 Pulsweitenmodulation (PWM) (Beschreibung zu Folie <mc_kap_3-2_timer>, Seite 3):1. Wir führen jetzt einen Compare-Wert ein2. Unterhalb des Compare-Wertes ist COUT high (1), oberhalb low (0).3. COUT ist also ein Pulsweitensignal, das angibt, wann ein Ereignis eingetreten ist (wo

also der Compare-Wert lag).

4. Periodendauer�VorteilerFCPU

�Rücksetzwert

Cou

nte

r

Com p are1

Com p are2

TPWM = 1 / Fp rescaler · Per iod z .B. Fcin = 16MHzPrescaler = 32TPWM = 1m sPeriod ? = 500 2 9

3.2.4 Vorlesungsübung 2Zeitbasis = 10 ms

FCPU�16 MHz -> soll 4 Micro-Sek. Periode haben => 250 kHz

18.12.2004 Seite 15 von 44

Page 16: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

T3CON

... 10 9 8 7 6 5 4 3 2 1 0T3OTLT3OET3UDET3UDT3R T3M T3I

0 0 0 0 0 0 0 0 0 0 1 1

zählt aufwärts

gespeist vom vorgeteilten CPU-Clock

für unseren Fall:Prescaler

T2CON

... 10 9 8 7 6 5 4 3 2 1 0T2R T2M T2I

0 0 0 0 0 0 1 0 0 1 1 1

Reload für T3 bei jedem T3-Überlauf

T3-Takt 4 Mic-Sec / 250 kHz

Überlauf-Periode: 10.000 Mic-Sec

=> Reload-Wert = 2500 (weil Timer 3 hochzählt)

Der C-Code könnte irgendwie so aufgebaut sein:

#define TC_TxM(y) ( (y << 3) & 0x0038) // y: {0;...;7}

T3CON = 0x0043;//besser:T3CON = TC_TxM( 0 ) | TC_TxI( 3 );T3UD = 0; //bewusst initialisieren, so dass er aufwärts zähltT3UDE = 0; ...T2CON = 0x0027;//besser:T2CON = TC_TxM( 4 ) | TC_TxI( 7 );T2R = 0;T2 = -2500; //Reload-Register LadenT3 = -2500;

T3IC = IC_ILVL( 3 ) //Interrupt-Register konfigurieren //hier sieht man auch die PrioritätT3IE = 1; // Interupt aktivieren (enablen)IEN = 1; // globale Enable/Disalbe-Flag

T3R = 1; // so, jetzt geht's los!

void main( void ){ unsigned int wtimer1000ms = 100; unsigned int f1000ms = 0; //flag, ob eine sec. vergangen ist //wird in der Polling-Schleife geprüft ... while( 1 ) { ... // read inputs if( f1000ms ) { // dann schrei! if( ENGINEON_1 ) ..++; }}

//interrupt-service-Routine

18.12.2004 Seite 16 von 44

Page 17: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

void TIMER3( void ) interrupt 0x23{ wtimer1000ms--; if( wtimer1000ms == 0 ) { wtimer1000ms = 100; f1000ms = 1; }}

3.3 Serielle Datenübertragung

3.3.1 Allgemeines

3.3.1.1 Unterscheidung parallel – seriell

parallel

zu einem Zeitpunkt werden mehrere Bits auf mehreren Leitungen übertragen

seriell

ein Bit je Zeit auf einer Leitung

Vorteil:

� definierte geometrische Struktur möglich

� keine Laufzeitdifferenzen

� preisgünstigeres Kabel

3.3.1.2 Kommunikationsmodus� Simplex: Übertragung nur in eine Richtung (z.B. Master � Slave)

� Halb-Duplex: eine Übertragungsstrecke; beide Richtungen sind möglich, aber immernur nacheinander (Master � Slave, Master � Slave)

� Duplex: zwei Übertragungsstrecken, beide Richtungen gleichzeitig möglich (Master �Slave)

3.3.1.3 Übertragungsmodi synchron – asynchronEmpfänger erhält „nur“ eine Folge von 0/1. Problematik:� Anfang und Ende eines Bits

� Anfang und Ende eines Zeichens

� Anfang und Ende einer Nachricht

Synchrone Übertragung

USRT (engl. universal synchronious receive transmit device); einfache Implementierung inMicrocontrollern

Takt des Senders ist beim Empfänger verfügbar� durch separate Taktleitung (typ. auf Baugruppen)

� durch Taktregeneratoren aus dem Bitstrom

18.12.2004 Seite 17 von 44

Page 18: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

Asynchrone Übertragung

UART (engl. universal ansynchronious receive transmit device); einfache Implementierungin Microcontrollern

Takt des Senders und des Empfängers sind unabhängig. Synchronisation erfolgt typ. bei je-dem Zeichen neu, bzw. die Anzahl der übertragbaren Bits ist begrenzt

Die Kombination aus USRT und UART nennt man USART.

3.3.2 Asynchrone serielle Datenübertragung (UART)� Byte-orientiertes Über-

tragungsverfahren� Synchronisation erfolgt bei je-

dem neuen Zeichen� Dauer eines Bits ist Bekannt

(ca.)

Typischer Ablauf Sendevorgang:

Flanke dient zur Synchronisation, Abtastung in der Bit-Mitte (typischerweise bis zu dreiAbtastungen).

18.12.2004 Seite 18 von 44

Daten(ser ieller Bits t rom )

TxD RxD

Sen d erTran sm it ter

Em p fängerReceiver

GND GND

RxDTxD

HighLow idle

Bit0 1 2 3 4 5 6 7 P S�

LSBit (Bit 0 des Bytes) S = Stop-BitP = Parity-Bit (optional)

Start-Bit

SendevorgangPortpin, Output

TxD Idle-ZustandUART 0 1 2 3 4 5 6 7 0 1 2 3 4

UART löst Trans- UART sendetUART Mit-Int. Aus Nächstes Byte

CPU Sendet Nächstes ByteEmpfangsinterrupt 1. Byte In Transmit-

Polling Buffer schreibenCPU UART Nachricht Erstes BytePolling-Schleife Konfig Zusammen- In Transmit- ? ?

Stellen Buffer schreiben

Page 19: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

18.12.2004 Seite 19 von 44

Empfangsvorgang

RxDUART

UART sammelt Empfangs-Bits Interrupt

CPU Byte abholen Nachricht komplettEmpfangsinterrupt Nachrincht in einem An Pollingschleife

String zusammenstellen Zur AuswertungCPUPolling-Schleife

Page 20: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

3.3.3 Synchrone Datenübertragung

3.3.3.1 Separate Übertragung des Taktes – Serial Microwire (SPI)

Eingesetzt zur Kommunikation auf der Baugruppe

Prinzipieller Kommunikationsablauf

um eine Taktregeneration zu ermöglichen, müssen die Bits (0, 1) kodiert werden, z.B. Man-chester-Codierung

0 1 0 0 0 1 1 0HighLow

3.3.3.2 Übung: Serial MicrowireInit:DP1H = 0x70;

Deklaration:

18.12.2004 Seite 20 von 44

t � �-> Baustein selektiertÜblich: Slave übernimmt Daten

SS, CS HighLow

CLK HighLow

� �Slave übernimmt 1MOSI High

1 0 0 0 1Low

MISO High ? Zeitraum für CPU zum EinlesenLow

Slave sendet Daten zurück

GND

MasterCon t roller

GND

Slave

Data ou t (MOSI)

Clock

Ch ip SelectSCK, CLK

CS, SS

Mas ter Ou t , Slave In

Mas ter In , Slave Ou t Ch ip - Select

Slave Select

D0

D1

Data ou t (MOSI) MOSI (D1)

MISO (D0)Data ou t (MOSI)

tSynchronisations-Bytes Start of Frame End of Frame

Syn-Byte SOF Daten

Page 21: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

sbit LD = P1H^4;sbit CLK = P1H^6sbit DIN = P1H^5load_da (int da_a, int da_b) {

int mask;CLK = 0;LD = 0;mask = 0x0800; // Bit 11while () {

if ((da_a & mask) != 0) {DIN = 1;

} else {DIN = 0;

}CLK = 1; // Flanke mask = mask >> 1;CLU = 0;

}LD = 1;

}

3.3.4 Physical Layer

Tin Tou tTxD

RxD

Mikro-Con t roller

Transceiver Realis ier t d en “p hysikaliscen”Übert ragu ngsstand ard fü rlängere St reckenz .B. RS232

RS485LINCAN

GND GND

3.3.4.1 RS 232-Standard<siehe Folie „mc_kap3_3_rs232_rs485.pdf“>

3.3.4.2 RS485/488Merkmale von RS485:� differentielle Datenübertragung

� verdrillte Datenleitungen, um störunempfinglich zu sein

� zumeist nur drei Leitungen: zwei ineinander verdrillteLeitungen für differentielle Datenübertragung plus eineMasse-Leitung=> Betrieb nur in eine Richtung möglich=> Halb-Duplex-Betrieb

� es ist auch möglich, eine Bus-Struktur aufzubauen

Der RS485-Standard wird auch vom SIEMENS-Profibus verwendet

Merkmale von RS488: genauso wie bei RS485, nur dass es zwei verdrillte Adern gibt, so dassFull-Duplex-Betrieb möglich ist.

18.12.2004 Seite 21 von 44

U_B

U_A

“1 ” “0”

Page 22: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

<siehe Folie „mc_kap3_3_rs232_rs485.pdf“>

3.3.5 LIN-Bus<siehe Folie „mc_kap3_3_lin.pdf“>

3.3.6 CAN-Bus<siehe Folie „mc_kap3_3_can.pdf“>

18.12.2004 Seite 22 von 44

Page 23: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

4 CPU – 2. Teil

4.1 Ganzzahlarithmetik Grundlagen

Bearbeitungsreihenfolgez.B.

����� ������ ��� !��"#�$������ ���� �"��

�$�����������%

4.1.1 2-er KomplementIdee: ALU hat nur Addierwerk für ganze Zahlen. Trotzdem sollen Substraktionen möglichsein!

� � �!�� �� � ���

�&���'(���(���� �)�)

����* �� *����������+�,����� ���-��.�����������"!*�/ "

" """"

��/ " """") ""

einfach HW zur Ermittlung des 2-er Komplements

� ���� ��* � "���&���'(����0��������1�2��� ��$

�"

��/ " ��" """

" ��3 �+ 4--���-�� ���� ""

Wertebereich 2-er komplementäre Zahlen (N Bits)

�* "� ���* " "�

18.12.2004 Seite 23 von 44

Page 24: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

0 + 1

+ 2

+ 3

+ 4

+ 5

+ 6

+ 7- 8

- 7

- 6

- 5

- 4

- 3

- 2

- 1

N = 4

Zuordnungstabelle0 00001 00012 00103 00114 01005 01016 01107 0111

-8 1000-7 1001-6 1010-5 1011-4 1100-3 1101-2 1110-1 1111

Multiplikation

*�/

��#��5

������- �����-�� 5

" ����'(�����+���*���6 " "�" " " """"" "

Ergebnis 2�N Bits nötig

4.1.2 2-er Komplement als FestkommazahlIdee: Bei einer Multiplikation soll der darstellbare Zahlenbereich nicht verlassen werden

Zahlenbereich [-1 ... 0 ... 1[

z.B. N=8

Skalierung �"

�* "

Fixed Point Multiplikation Beispiel:

18.12.2004 Seite 24 von 44

7 6 5 4 3 2 1 01 0 0 0 0 1 0 1

MantisseWertigkeit LSBit

.

Vorzeichen-Bit

virtuellerDezimalpunkt

"

�* "�

"

"�5

���

Page 25: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

N = 4

+2 0 � 0 1 0�

5

*-6 1 � 0 1 0 %

5___ ________ ________

-12 1�110100 "�

%/�

�/

"�5

für richtiges Ergebnis um 1 nach links schieben

� "�

"�5

Ergebnis der Ganzzahlmultipliziereinhei

ein nach links geschoben1 � 1 1 0 1 0 0 0

Reduktion auf 4 Bits

� �

5�

"

/�

"�

%/�

7

"%

4.1.3 Grundprinzip der Signalverarbeitung

18.12.2004 Seite 25 von 44

Page 26: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

4.2 Programmiermodelle

4.2.1 (Registerstrukturen)Einteilung der Register in� Kontrollregister

� Interrupt-Kontrollregister� Register zur Konfiguration der Peripheriemodule (SFR)� Steuerbits für die ALU u.v.m

� Statusregister; sie spiegeln den momentanen „Zustand“ der CPU wieder und ändernsich durch Operationen� Priorität des momentan bearbeiteten Codes� Status Flags der ALU (Zero-Flag, Negativ, ...)� Registersatz

� Adressen- und Operanden-Register

4.2.2 (Operanden-Adressierung)Arten der Adressierung:� Immediate: hier handelt es sich um Konstanten, die fest in den Befehl codiert sind

z.B. ADD R3, # data3; damit reicht ein Wort als Gesamtbefehl ausz.B. ADD R3, # data16; damit stehen 16 Bit für die Konstante zur Verfügung; es werdenzwei Wörter verwendet

� Memory Direct: der Adress-Operand ist bei 16-Bit-Prozessoren mit 16-Bit-Adressraum24 Bit lang; somit benötigt ein Befehl zwei Wörter

� Register Direct: direkte Register-Adressierung� single Index

z.B. ADD A, @Rx� double Index

z.B. ADD A, Rx, Ry� Offset

� Base Offset: verwendet für Adressierung eines Stucture-Elements innerhalb eines Ar-rays

� Implicit Base Offset: fusionieren der Bits; Vorsicht: nicht Addieren!z.B. A = A + @SMEM

� Register Indexed Base Offset� Circular Base-Offset

18.12.2004 Seite 26 von 44

Page 27: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

4.2.3 (Adressierung Code)Adressierung (im einfachsten Fall) durch einen „Instruction Pointer“ bzw. „ProgramCounter“ wird bei der Abarbeitung des Programms automatisch inkrementiert.

Ausnahmen:� Sprünge

� absolute Sprünge: IP wird mit neuem Wert geladen� relative Sprünge. zum IP wird eine Distanzadresse addiert

� Unterprogramm/Funktionsaufruf� direkt: Adresse der Funktion ist im Code hinterlegt� indirekt: Adresse der Funktion ist im Register hinterlegt (dieses Verhalten entspricht in

C den Funktionszeigern)

4.2.3.1 (Ein Instruction Pointer)Gegeben: 8-Bit-Architektur, 16-Bit-Adressraum JMPA (absoluter Sprung): 3-Byte-Befehl.

Zieladresse: JMPAZA LBZA HB

Gegeben: 16-Bit-Architektur JMPA (relativer Sprung): 2-Byte-Befehl.

Zieladresse: 15 0JMPA ZA MS-ByteZA Lower Word

; Hinweise zu „JMPA“:

� mit Bedingungen reichen u.U. 2 words nicht

� indirekte Aufrufe/Sprünge; nur 16-Bit-Register (R0 ... R15)

4.2.3.2 (Banking)

Hinweise zum PDF „...“

Banking verwendet mehrere Speicherblätter, die über spezielle Maschinenbefehle ausge-wählt werden

18.12.2004 Seite 27 von 44

Rings pe icher

Base

Poin ter fü raktu ellen Abtas twert

Abtastw.

trei U0U1...U23U24

Page 28: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

4.2.3.3 (Segmentierung)

Hinweise zum PDF ....

Wenn der Linker intelligent genug war, die Funktion nicht an die Grenze zu legen son-dern in ein Segment, dann ist alles chillig.

Zerteilen der physikalischen Adresse auf zwei Register.

18.12.2004 Seite 28 von 44

Page 29: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

4.3 Maschinenbefehle - AssemblerspracheEinteilung:� Transportbefehle

� Datenbearbeitungsbefehle

� Programmsteuerbefehle

� CPU-Steuerbefehle

Hinweise zu Folie „K-4.3_AssemblerBefehle.pdf“

4.3.1 (Transportbefehle)A = ACCU = Akkumulator

DPTR = Data-Pointer

MOV A, @R2R2: 8-Bit-Register

MOVX A, @DPTR DPTR: 16-Bit-Register

MOVC A, @DPTR

8051: Harvard-Architektur:� internes RAM (8-Bit-Adresse MOV)

� externes RAM (16-Bit-Adresse MOVX (external))

� Code-Speicher (Konstanten + Code; 16-Bit-Adresse MOVC)

PUSH R3

4.3.2 Datenbearbeitungsbefehle� ADC

Beispiel: 8-Bit-CPU

Es sollen zwei 16-Bit-Zahlen addiert werden: c = a + b

18.12.2004 Seite 29 von 44

����� �

� � � � �

�� � ������ � � � � � ����� � � � �

Page 30: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

CMPD1 op1�i

, op2�#0

; for( i = 100, i >= 0; i++ ) {...}

Compare op1 � op2 Flags werden gesetzt, z.B:: ZERO_Flag falls op1 == op2

INZ

4.3.3 (Rotier- und Schiebebefehle)ROR R0, #1 (Rotiere Register R0 um eine Stelle nach rechts)

SHR R0, #2 (Rechts-Shift um zwei Stellen; es werden 0en aufgefüllt)

Beispiel: Rechtsshiftsinged int R0;R1 = R0 / 2

In dem Beispiel ist R0 eine positive Zahl. Probleme treten auf, wenn negative Zahlen be-handelt werden. Dann muss das Vorzeichen-Bit wieder auf die erste Stelle kopiert werden.

ASHR R0, #1

18.12.2004 Seite 30 von 44

R1 R0a: 0x0180 0000 0001 1000 0000

15 0

R3 R2b: 0x0080 0000 0000 1000 0000

15 0

1 Carry-Flag gesetzt0000 0000 ADD R0, R2

0000 0010

byteweiseaddieren

ADDC R1, R3

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0vorher: 1 0 0 1 0 0 1 1 0 1 0 1 1 0 1 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0nachher: 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 1

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0vorher: 1 0 0 1 0 0 1 1 0 1 0 1 1 0 1 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0nachher: 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0vorher: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 = 0x4000

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0nachher: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

Page 31: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

4.3.4 Bitmanipulationz.B. IC:

IC = 0x0044 | ( IC & 0x0080

Intern:MOV R4, IC <- nun setzt Peripherie IRAND R4, 0x0080OR R4, 0x0044MOV IC, R4 <- IR wird gelöscht !!!

Es hilft alles nichts: die CPU muss immer das gesamte Register lesen, das einzelne Bit setz-ten und dann das komplette Register zurückschreiben. Wenn in der Zeit von der Hardwareein Flag gesetzt wird, wird es von der CPU wieder gelöscht.

Hinweis zur Folie „Maschinenbefehle – Assemblersprache“, Seite 4

Der untere Absatz ist falsch und kann ignoriert werden.

Lösung: Protected Bits� Register msg-ctl (bei CAN-Versuch). Zwei Bits werden gebraucht.

Es gibt folgende Kombinationsmöglichkeiten:� 01: Reset durch CPU� 11: Setzen� 11: unverändert lassen

Beispiel: LEDs zum Leuchten bringen// niederwertige 8 Bit von a auf Port P2 ausgebenIEN = 0P2 = ( P2 & 0xFF00 ) | ( a & 0x00FF );IEN = 1

jetzt komme einer auf die Idee, in einer Interrupt-Funktion die anderen 8 Bits zubeschreiben. Das ist schlecht.// höherwertige 8 Bits von b auf P2 ausgebenP2 = ( P2 & 0x00FF ) | ( a & 0x00FF );

Das Problem das hier auftritt: wenn jemand den Port schreibt und genau in dieser Phaseder Interrupt ausgelöst und behandelt wird, dann wird das Ergebnis des Interrupts wiederüberschrieben, da das reguläre Schreiben von a auf Port P2 mit einer Kopie von Port 2arbeitet und diese Kopie dann zurückschreibt. Die Lösung wurde blau dargestellt.

4.3.5 (Programm-Steuer-Befehle)Es existieren folgende Arten von Programm-Steuer-Befehlen:� Sprünge

� Unterprogrammaufrufe

18.12.2004 Seite 31 von 44

7 6 5 4 3 2 1 0IC: IR IE ILVL GL

setzt user

wird von Peripherie gesetzt

Page 32: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

Sprünge

JMPA cc, op2 (Sprung)

für OP2 gilt: Zieladresse im gleichen Segment „Intra-Seg“

Möglichkeiten: für cc:� cc_uc (Condition-Code, unconditional; er springt immer) [if-else-Konstrukte]

� cc_z (Condition-Code, Zero-Flag) [bei SUB Zero-Flag gesetzt ist]

� cc_N (Condition Code, Null)

� cc_NN (Condition Code, Not Null)

� ...

„einfache“ haben oft nur wenige Bedingungen

DJNZ op1, Zieladresse (Decrement Jump Not Zero)� Einsatz in Schleifen, wo die Laufvariable nach unten gezählt wird.

Unterprogrammaufrufe

Intrasegment:

CALLA cc, ZielRET( SP ) � (SP ) - 2(( SP )) � ( IP )( IP ) � Ziel

RET( IP ) � (( SP ))( SP ) � ( SP ) + 2

Intersegment

CALLS( SP ) � ( SP ) - 2(( SP )) � ( CSP )( SP ) � ( SP ) - 2(( SP )) � ( IP )( CSP )( ISP )

RETS( IP ) � (( SP )) ( SP ) + 2( CSP ) � (( SP )) ( SP ) + 2

RETI (Return für Interrupt-Aufruf)( IP ) � (( SP )) ( SP ) + 2( CSP ) � ( SP )( PSW ) � (( SP ))

auslösender Befehl für Interrupt-Service-Routine:TRAP(( SP )) � ( PSW )(( SP )) � ( CSP )(( SP )) � ( IP )

wird i.a. vom Interrupt-Controller bei Request in die Pipeline eingeschleust

18.12.2004 Seite 32 von 44

Page 33: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

4.3.6 (CPU-Steuerbefehle)Wechseln von Registersätzen

Context-Pointer (CP) bestimmt den „angewählten“Registersatz

In C (Keil-IDE) sieht das so aus:void NAME ( void ) interrupt NR usingREGNAME {...}

Parameterübergabe

Wenn man von einem C-Programm aus ein Assem-bler-Programm oder eine Assembler-Funktion auf-rufen will, muss man beachten, wie der Controller die Parameter verarbeitet.

Beispiel: C-Aufruflong function( int b, int c, long d, int e, int f ) { ... }

b � R8c � R9d � R10, R11e � R12f � Stack (weil der Controller nur 12 Register hat und alles weitere auf den Stack schiebenmuss)

Hinweis: die Rückgabe des Datentyps long erfolgt auf Register R4 und R7.

4.3.7 (Unterschied Controller – DSP – Prozessor)Controller:� integrierte Peripheriemodule und effiziente Verbindung zur CPU

� „mächtige“ Interruptverarbeitung

� Bitmanipulation

DSP:� MAC (Multiplikations-Additions-Einheit) in einem Takt

� Zero Overhead Loops: Schleifenzähler ist in Hardware realisiert, der parallel zur MAC-Einheit integriert ist

� zirkuläre Adressierung

� bit reversed Adressierung für Spektral-Analyse via FFT: die interne Berechnung und Dar-stellung erfolgt von links nach rechts von LSB zu MSB; die Ausgabe erfolgt genau andersherum und somit richtig lesbar für normale Programme

� Festkomma-Arithmetik

� Saturation (Sättigung); was passiert bei Überlauf? Bei Überlauf wird der Maximal-Wertgehalten und nicht im Zahlenring wieder von vorne angefangen entspricht bei einemAudio-Verstärker der maximalen Leistungs-Begrenzung

Prozessor:� hohe Taktfrequenzen

� riesiger Adressraum

18.12.2004 Seite 33 von 44

0xF600

AdresseCP R0

...

R15

Page 34: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

� Memory Management Unit mit Memory Protection

4.4 Grundregeln für effizientes C

4.4.1 Speicherwerte

Speichertypen:

� NVM Flash-ROM Code, Konstanten schreiben langsam + unflexibel, lesen mit fCPU

� VM RAM Variablen schreiben + lesen flexibel mit fCPU

� NVM EEPROM Parameter schreiben langsam aber flexibel

NVM: non volatile memoryVM: volatile memory

Alle 3 Typen können

� on-chip sehr effizienter Zugriff durch mehrere Busse, kurzer Zyklus

� off-chip typischerweise ein Bus für Flash + RAM, zum Teil Daten- und Adressbus gemultiplext ( � langsam)

realisiert werden.

Zeitkritischer Code in's interne Flashhäufig benötigte Variablen in's interne RAM (on-chip RAM)

4.4.2 Operandenverwendung

4.4.2.1 Konstantenb = a + 3;

z.B. 8051 (8-Bit-Architektur) 8-Bit-Konstante 2-Byte-Befehl16-Bit-Konstante 3-Byte-Befehl

C166 (16-Bit-Architektur) 3-Bit-Konstante 2-Byte-Befehl16-Bit-Konstante 4-Byte-Befehl

ARM-7 (32-Bit-Architektur) 8-Bit-Konstante 4-Byte-Befehl

4.4.2.2 Variablen

B = C;

B, C im Registerformat

Register:8051: MOV A, RC

MOR RB, A /2 Byte, 2 BefehlszyklenC166: MOV RB, RC /2 Byte, 1 Befehlszyklus

internes RAM:8051: MOV A, MEMC

MOV MEMB, A /4 Byte, 2 BefehlszyklenC166: MOV Ri, MEMC

MOV MEMB, Ri /8 Byte, 2 Befehlszyklen

externes RAM:8051: MOV DPTR, MEMC

MOV A, @DPTR /8 Byte, 8 Befehlszyklen

18.12.2004 Seite 34 von 44

Page 35: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

C166: Code intern RAM extern 10 CPU-Takte (5 Befehlszyklen)Code extern RAM extern 18 CPU-Takte (9 Befehlszyklen)

Bus gemultiplext

4.4.2.3 Arithmetik

Multiplikation C166 V1

Code intern, Variablen in Registernchar 8 Bit 10 Takteint 16 Bit 10 Taktelong 32 Bit 46 Taktefloat 32 Bit 170 Taktedouble 64 Bit 372 Takte

Sinus C166 V132 Bit 2500 ... 3100 Takte

Multiplikation ARM7 (ohne FPU)char 8 Bit 2 Takteint 16 Bit 2 Taktelong 32 Bit 4 Takte (?)float 414 Takte GNU-C �double 721 Takte GNU-C �

Multiplikation MPC 555 mit FPUfloat 4 Taktedouble 5 Takte

18.12.2004 Seite 35 von 44

Page 36: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

5 Bussysteme

5.1 Grundlagen Busarchitektur

5.1.1 Überblick BusseEbenen im Überblick:� Chipebene: parallele Verbindungen, CPU-ALU-Register

� Baugruppenebene:� parallele Verbindungen

Prozessor/Controller – Programm- und Variablenspeicher� serielle Verbindungen zur Peripheriebausteinen

� Geräteebene:� ISA-Bus� PCI-Bus auf Motherboard (parallel und seriell)� VME (parallel und seriell)

� Anlagenebene

� Feldbusse (Profibus, ASI, Interbus, CAN, Ethernet, ...)

5.1.2 Einteilung BusarchitekturenÜberblick:� von-Neumann-Architektur

� Havard-Architektur

von-Neumann-Architektur

Die Architektur zeichnet sich durch einen linearen Adressraum für Code und Daten aus.

Vorteil:� effektive Speicheraufteilung möglich

� „platzsparend“, nur ein Adressbus und ein Datenbus

Beispiele: von-Neumann-Architektur

C167, Motorola 68HC12, Intel 80x86, ...

Havard-Architektur

Hier sind Adressräume für Code und Daten getrennt. Bussysteme sind mehrfach ausge-führt. Auf Baugruppen-Ebene verbraucht die Architektur viele Leitungen, aber auf Chip-Ebene ist das unkritisch.

Vorteil:� gleichzeitiger Zugriff auf Code- und Datenspeicher möglich (DSPs - „extended“ modified

Havard Architecture mit Mehrfachauslegung der Bussysteme)� unterschiedliche (Bus-)Breiten für Code und Daten möglich der Chip wird billiger,

weil Chipfläche kostet Geld. (PIC-Serie der Firma MICROCHIP).

Nachteil:

18.12.2004 Seite 36 von 44

Page 37: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

� falls die Busse aus dem Controller herausgeführt werden sollen: viele Pins nötig weniger Pins für Steuerfunktionen� Busse werden zusammen gelegt

Beispiel: Havard-Architektur

Intel 8051, AVR, PIC, DSP, ...

5.1.3 (Prinzipieller Bus-Aufbau)8-Bit-Datenbus mit 8-Bit-Speicher:

16-Bit-Datenbus mit 16-Bit-Speicher:

Dabei muss folgendes Beachtet werden:� Der Controller adressiert den Speicher Byte-weise, aber der RAM interpretiert den

Adressbus und damit die Adress-Pins als Word-Adresse!� WRL (Write Lower Byte): Anweisung, nur das Lower-Byte zu schreiben

� WRH (Write Higher Byte): Anweisung, nur das Higher Byte zu schreiben

18.12.2004 Seite 37 von 44

bid irekt ion al

...

...

D0D1

D7

D0D1

D7

A0A1

A15

A0A1

A15

RDWR

Leses ign a lAkt iv Low

Sch reibs ign alAkt iv Low

Contro ller

Spe icher fürVariablen(RAM)

bid irekt ion al

...

D0D1

D15

D0D1

D15

A0A1

A23

A0A1

A22

RDWRL

Leses ign a lAkt iv Low

Sch reibs ign alAkt iv Low

Contro ller

Spe icher fürVariablen(RAM)

Ad ressbu s

......

RD, OE

Leses ign alAkt iv Low

A0

A1

A23

A1

A2

A23

Nam end er Leitu n gen

Pin -Nam e

WRHWRLWRH

Page 38: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

Speicher-Adresse

A2 A1 A0...... 0 0 0 Lower B. ... 0 0 0

... 0 0 1 Higher B. ... 0 0 0

... 0 1 0 Lower B. ... 0 0 1

... 0 1 1 Higher B. ... 0 0 1

Controller-Adresse= Byte-Adresse

Zugriff Controller-PinsA0 WRL WRH

Word schreiben 0 0 0

Byte schreiben 0 0 1�Lower Byte (D0 D7)

Byte schreiben 1 1 0�Higher Byte (D8 D15)

immer geradeByte-Adresse

5.2 Buszyklus� Datenbus (8 Bit, 16, 32, 64, ...)

� Adressbus (16, 24, 32, ...)

� Steuersignale (Lesen, Schreiben)

Unterscheiung:

� synchroner Buszyklus (+ Takt)

� anynchroner Buszyklus

5.2.1 Synchroner Buszyklus

Hinweise zu Folie „K-5.2_Buszyklen.pdf“, Seite 1

Das Timing ist genauer realisiert.

Lese-Zyklus:� Startsignal ist low, Flanke kommt, ich muss die Adresse intern speichern.

� Man benötigt immer zwei Takt-Zyklen: einen für die Adress-Übermittlung, einen fürLesen/Schreiben

18.12.2004 Seite 38 von 44

Page 39: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

Hinweise zu Folie „K-6_Speicherbausteine.pdf“, Seite 3

217�25�222�210�210�22�4 Mbit� GW (Global Write): 32-bit-Zugriff

� 6 Leitungen, die sich mit Schreiben beschäftigen

� OE-Leitung: Lese-Leitung

� ZZ: hochohmiger Zustand in Stand-By-Betrieb versetzen

� CLC (Clock): Synchroner Speicher

� CSx (Chip Select): Auswahl der Baugruppe

Hinweise zu Folie „K-6_Speicherbausteine.pdf“, Seite 4

nicht verstanden ... !

Ein Burse-Zyklus hat nur 4 32-Bit-Wörter. Das ist so festgelegt.

5.2.2 Asynchroner Buszyklus

Hinweise zur Folie „K-5.2_Buszyklen.pdf“, Seite 1

Komponenten:� Adress-Bus: A0, ..., A23

� Master: CPU, Micro-Controller

Vorgehen beim Lese-Zyklus:� Die CPU will Speicher Ax lesen

� beim Read wird ein Aktiv low gelegt

� der Slave ist hier bei uns der Speicher; er lässt sich ein bisschen Zeit, darauf zu ant-worten. � t zwischen aktiv low und Antwort des Speichers.

Vorgehen beim Schreib-Zyklus:� Die CPU will Daten schreiben

� mit der steigenden Flanke von aktive Low auf high ist es das Übernahmesignal für denSpeicher, die Daten vom Bus zu nehmen.

Hinweise zu Folie „K-6_Speicherbausteine.pdf“, Seite 1

SRAM: Statisches RAM: es behält den Inhalt bei, wenn die Spannung anliegt. Das ist beimdynamischen RAM nicht so.

Komponenten:� 128 kB Speicher 17 Adressleitungen notwendig: A0 – A16

� Pin N.C. (not connected): nicht gebrauchter Pin als Reserve für die Zukunft, falls eineAdressleitung Nr. 18 für 256K gebraucht wird.

� I/O-Ports: die Japaner fangen bei 1 das Zählen an.

� CSx (Chip-Select): falls mehrere Bausteine zu einem großen Speicher zusammen ge-koppelt wird, übernimmt jeder einen Teil-Adressraum. Mit dem Chip-Select wird demBauteil mitgeteilt, in welchem Adressraum er zu liegen hat.

18.12.2004 Seite 39 von 44

Page 40: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

Hinweise zu Folie „K-6_Speicherbausteine.pdf“, Seite 2

Lese-Zyklus:� Read-Cycle = Reaktionszeit; hier 70 ns.

� wenn das Lesesignal weggenommen wird, kann es 25 ns dauern, bis der Baustein seineTreiber abgeschalten hat. Es kommt dann eh viel später der Schreib-Zugriff vom Master

Schreib-Zyklus:

wie beim Lese-Zylus.

5.2.3 Multiplex von Adress- und DatenbusBeispiel: 8051-Derivat 80C32

Hinweis zu Folie „K-5.2_Buszyklen.pdf“, Seite 3

Havard-Architektur:� Auf Port 0: AD0 – AD7

� Auf Port 2: A8 – A15

� Das blaue liefert der Code-Speicher

� ALE fallende Flanke: Latch

Hinweis zu Folie „K-5.2_Buszyklen.pdf“, Seite 4

Write-Zyklus:� Der Prozessor geht ins RAM rein

� Er liefert selber das Signal

� PSEN (Program Store Enable): Entweder auf Busspeicher oder auf Code-Speicher zu-greifen

Hinweis zu Folie „K-5.2_Buszyklen.pdf“, Seite 2

Elemente:� BUS (P0): A0 – A15

� Segment (P4): A16 - ...

� RD: Q0 – Q15

� ALE ist verlängerbar um einen Takt (für langsame Speicher)

� BUS (P0) kann er verlängern

Vergleich:� nicht-gemultiplext: 2 Takte

� gemultiplext: 3 Takte

18.12.2004 Seite 40 von 44

Page 41: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

5.2.4 Wort- und Bytezugriffe

18.12.2004 Seite 41 von 44

D0

D15

A0

A23

A0

A17

RD

Wert -ad ressefü rD0 ...D15

C1 66

...

...

A0

A23

Byte-Ad resse

...

D0

D15

DATA

ADR

ADRD0

D15

...D0

D15

DATA

OELB LowerHB High erWE

WEBHE

���� ������� ������ ��� ������ ��� �!��" �� #���� �� �� �� $% ��% $�# $�� &�� &"�� '�����

$(�������!! � ) � � � � &� &�*+����� ���"�� �����������,���������!! � ) � � � � &� &-.��"�� ����������������!! � ) � � � � &/ &�*� ���"�� ���0

A0

A18OE

4 MBit

...

ADR

D0

D15

...D0

D15

DATA

WE

A0

A18

A0

A18OE

4 MBit

...

ADR

D0

D15

...D0

D15

DATA

WE

A0

A18

C1 66

...

RD

WRL

WRH

Page 42: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

5.3 Adressraum-Dekodierung

5.3.1 Minimale Dekodierung<Folie „K-5.3_AdressDekodierung.pdf“, Seite 1>

5.3.2 Maximale Dekodierung<Folie „K-5.3_AdressDekodierung.pdf“, Seite 2>

ODER-Gatter: Nur wenn alle Eingänge auf 0 wird CS aktiviert

�8�" Di wird auf Qi durchgeschaltet�8� letzter Zustand der Qi bleibt gespeichert98�" Qi im Tri-State-Zustand98� interne Qi werden auf die Pins Qi getrieben

Man könnte in C den digitalen Ausgang U6 so ansprechen:

18.12.2004 Seite 42 von 44

Adresse A19 A18 A17 A16 A16 ... A0Adress-BitsROM 0 X X X A15 ... A0RAM 1 X X A16 A15 ... A0

�Signale des Adressbusses

� Bausteine Beinchen

0x10'00000xE'0000 Mirror 30xC'0000 Mirror 2 Größe physikalisch0xA'0000 RAM Mirror 1 0x2'00000x8'0000 RAM 128k

ROM Mirror 7ROM Mirror 6ROM Mirror 5ROM Mirror 4ROM Mirror 3

0x2'0000 ROM Mirror 20x1'0000 ROM Mirror 10x0'0000 ROM Pysikalisch vorhandener Speicher

0x1'000

A19 � 1000

0001 � A16

A2 A1 A0 y0 y1 y2 y3 ...0 0 0 0 1 1 10 1 0 1 1 0 10 1 1 1 1 1 0

Page 43: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

*(( unsigned char volatile xhuge * ) 0x8'0000 )) = 0xaF;

Erklärung:� volatile: teilt dem Compiler mit, dass er nichts optimieren oder wegschmeißen soll.

� xhuge: C167-spezifisches Konstrukt zum Ansprechen des Zeugs

� *((...) 0x8'0000): der Inhalt soll geschrieben werden.

Adressraum:

U1

0x8'0000 U60x6'0000 U5 [+ Mirrors]0x4'0000 U4 [+ Mirrors]0x2'0000 U20x0'0000 U3

18.12.2004 Seite 43 von 44

yx A19 A18 A17 A16 ... A0�y4 y7 ROM U1 1 A18 A17 A16 ... A0y1 RAM U2 0 0 1 A16 ... A0y0 ROM U3 0 0 0 A16 ... A0y2 Dig-In U4 0 1 0 X X Xy3 Dig-In U5 0 1 1 X X Xy4 Dig-Out U6 1 0 0 0 X X

Adressbus �

muss bei 0x0'0000 beginnen

theoretisch gibt das einen Konflikt mit ROM U1;aber: auf U1 wird gelesen, auf U6 geschrieben;sie kommen sich nie in die Quere!

Adresse0x8'0000

0x10'0000

ROM U1

0x8'0000

0X6'0000

0X4'0000

U2 RAM0x2'0000

U3 ROM0x0'0000

READ WRITE

U4 217 Mirrors

U6 217 Mirrors

Page 44: Mitschrift Mikrocomputer - studium.digitalimagecorp.destudium.digitalimagecorp.de/semester_5/Mikrocomputer.pdf · 1.2 Architektur eines Mikrocomputers Derivat: Halbleiter-Hersteller

Mitschrift Mikrocomputer

5.4 Übung 4� Flash ab 0x00'0000 - 0x0F'FFFF

2 * 512 kByte = 1 MByte

� RAM ab 0x08'00002 * 128 kByte = 256 kByte

� Wort- und Bytezugriffe möglich

1�"�� � � � � � 2 000�3��2���� 0 �4�!�� � � � � � 2 000

� � ��3�52���� � � �

��6 � � � � � 2 000�3�/2���� � � � � � 2 000

1�"�� � � � � � 2 000�3��2���� �0 �4�!�� � � � � � 2 000

��7

6 Speichertechnologien

18.12.2004 Seite 44 von 44

,

,:

;898

4

4"%4":4"5

�8

<����

��,

,:

;898

4

4"#4"%

��"���

=4>

��

,

,:

;898

4

4"%4":4"5

�8

��,

,:

;898

4

4"#4"%

��"���

��

, �����,"#

,

,:

,5

,"#

,4�,"#

,5�

,",/, ,7,�,#,:,%

,4�4 �����4�"

�3�&4-����4,=�

4"

4":4"54�

4"?

4"

4":4"54�

4"?

4,= �

4"

4"%4":

4"?

4"

4"%4":

4"?

;=�

;=@

=,

=,

=,

=,

=,