Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II...

20
Praktikum II: Elektrotechnische Experimente Für Bachelor-Studierende der Studiengänge Elektrotechnik (ET, 3. Semester), Informatik-Ingenieurwesen (IIW, 3. Semester) und Mechatronik (MEC, 5. Semester). Versuch Nr.: 3 Mikrocontroller Ort: SBS 95, Haus E, Raum 3034 Allgemeine Informationen unter: http://www.tet.tu-harburg.de/Praktikum Stand der Versuchsbeschreibung: 30.09.13

Transcript of Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II...

Page 1: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

Praktikum II: Elektrotechnische Experimente

Für Bachelor-Studierende der Studiengänge Elektrotechnik (ET, 3. Semester), Informatik-Ingenieurwesen (IIW, 3. Semester) und Mechatronik (MEC, 5. Semester).

Versuch Nr.: 3

Mikrocontroller

Ort:

SBS 95, Haus E, Raum 3034

Allgemeine Informationen unter:

http://www.tet.tu-harburg.de/Praktikum

Stand der Versuchsbeschreibung: 30.09.13

Page 2: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

1

Praktikum II , Versuch 3 : MikroprozessorSBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

Das Wichtigste in Kürze

Worum geht es?

In diesem Versuch wird der Mikroprozessor als universeller Baustein zur Realisierung von digitalen Funktionen zum Messen, Steuern, Anzeigen, Verarbeiten und Kommunizieren von Daten in elektronischen Geräten vorgestellt.

Was wird gemacht?

Typische Teilfunktionen werden durch kurze Anweisungsfolgen in der Assemblersprache des verwendeten Prozessors realisiert und am Versuchsaufbau getestet.

Welche Apparaturen und Instrumente werden verwendet?

Der Versuchsaufbau enthält zwei separat programmierbare Subsysteme aus je einem Prozessor mit Speicher und Schnittstellen, die zum Teil an Meßbuchsen geführt sind. Die Programmierung und Ansteuerung der beiden Prozessoren erfolgt über einen angekop-pelten PC. Die Vermessung generierter Signale erfolgt mit einem Speicheroszilloskop.

Was lernt man dabei?

Daß dieselben Mikroprozessorelemente neben der Datenverarbeitung diverse Funktionen übernehmen können, angefangen von einfachen logischen Verknüpfungen bis hin zur zeitgenauen Steuerung und Signalgenerierung, und daß der HW- und SW-Aufwand dafür gering ist. Man wiederholt hierbei ihr Funktionsprinzip, und arbeitet mit moderner Technik.

Warum ist das wichtig?

Digitale Verarbeitungsfunktionen sind in nahezu jedem elektronischen Gerät anzutreffen, und der Ingenieur muß mit den Techniken und Bausteinen zu ihrer Realisierung vertraut werden. Die Digitaltechnik hat nicht nur viele ehemals in Analogtechnik realisierte Funktio-nen übernommen, sondern mit neuen Funktionalitäten erheblichen Mehrwert geschaffen.

Was wird von den Studierenden erwartet?

Die Programmierinformation (Befehlssatz des Prozessors) sollte vor der Versuchsdurch-führung studiert und an Beispielen eingeübt worden sein; vorbereitete Lösungsansätze für die Versuchsaufgaben werden hilfreich sein. Man beachte die angegebene Literatur.

Page 3: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

2

Versuch 3 „Mikroprozessor“

Inhaltsverzeichnis

A - Zielsetzung und Versuchsaufbau 3

B - Details zum Versuchsaufbau 5

Die CPU1C 5Schnittstellen 7Das PC-Steuerprogramm 8Programmeingabe 8Oszilloskop 10

C - Kontrollfragen 11

D - Teilversuche 12

Volladdierer 12Serielle Schnittstelle 13Display der Knopfdaten 14Zusatz: Datenübertragung 15Zeitsynchronisation 16PWM-Ausgabe an Analogausgang 17Zusatz: Signalsynthese 18

E - Literatur 19

Page 4: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

3

Zielsetzung und Versuchsaufbau

Dieser Versuch setzt Grundkenntnisse über die Funktionsweise des von-Neumann-Rechners voraus, die neben den Einführungsvorlesungen auch viele Lehrbücher vermitteln; einige Literaturhinweise auf leicht verfügbare Quellen befinden sich am Ende dieser Versuchsbeschreibung. Hier mögen zur Erinnerung einige Bemerkungen genügen. Der von-Neumann-Rechner verwendet als wichtige Komponenten einen adressierbaren Arbeitsspeicher, einen Kontrollteil (Steuerwerk und Adreßwerk) und das Rechenwerk zur Ausführung der eigentlichen Rechenschritte. Über eine anliegende Adresse gibt der Speicher lesenden oder schreibenden Zugriff auf jeweils ein Binärwort, welches Daten oder einen Befehlscode darstellt. Das Steuerwerk verwendet einen Binärzähler PC zur Adreßgenerierung, um schrittweise eine Liste von Befehlscodes auszulesen und sie dem Rechenwerk als Aufträge zu präsentieren. Abhängig von diesen Befehlen werden zusätzlich Speicherzugriffe auf andere Adressen eingeschoben, um Operanden für das Rechenwerk zu laden oder Resultate abzuspeichern. Häufig erfolgt dies sogar durch dedizierte Befehle, die für sich keine Operation des Rechenwerks vorgeben. Weitere Befehlstypen sind Sprungbefehle, die einfach den Programmzähler auf eine andere als die fortlaufende Adresse umsetzen. Der Mikroprozessor ist ein auf einen Chip inte-grierter von-Neumann-Prozessor. Bisweilen paßt sogar der benötigte Speicher mit auf den Chip.

Der Praktikumsversuch „Mikroprozessor“ soll mit dem Mikroprozessor als Bauelement digitaler Systeme bekannt machen. Insbesondere wird gezeigt, wie der programmgesteuerte Prozessor Boole'sche Funktionen implementieren kann, wie er Meßdaten erfassen und anzeigen kann, wie digitale Daten kommuniziert werden, aber auch, wie 'analoge' Signale mit einem größeren Werte-bereich von einem digitalen Prozessor erfaßt und generiert werden können. Bedenkt man, daß der Prozessor seine Daten auch noch nahezu beliebigen Verarbeitungsschritten unterziehen kann, so wird die große Flexibilität des Mikroprozessors als Systemkomponente deutlich.

Da in einem Anwendungssystem häufig mehrere Prozessoren als Komponenten eingesetzt werden, enthält der Versuchsaufbau gleich zwei Prozessoren. Diese sind auf einer Leiterplatte, sogar in nur einem FPGA-Baustein zusammengefasst. FPGAs sind Universalbausteine mit einer anwendungs-spezifisch konfigurierbaren Schaltungsstruktur. Das verwendete FPGA erhält seine Verschaltung zum einem zweifachen Prozessorsystem nach dem Einschalten aus einem Flash-ROM mit den Kon-figurationsdaten. Die Prozessoren können über eine Schnittstelle Daten austauschen. So kann z.B. ein Prozessor Eingabedaten erfassen und sie zur Darstellung auf dem Display an den anderen Pro-zessor übertragen. Die Leiterplatte enthält auch eine RS232-Schnittstelle für die Kommunikation mit dem PC über einen USB-RS232-Adapter. Ansonsten sind die beiden Teilsysteme separat.

Obwohl dies nicht der Gegenstand des Versuchs ist, demonstriert der Versuchsaufbau zugleich die Flexibilität und Attraktivität der Hardware-Implementierungsplattform FPGA. Daß Prozessoren auf einem FPGA implementiert werden, ist eine häufig genutzte Möglichkeit. Unüblich und durch die besondere Zielrichtung des Versuchs begründet ist es, daß die beiden CPUs auf dem FPGA weit-gehend separat arbeiten und nur einige Test- und Hilfsfunktionen teilen. Das verwendete FPGA, ein Spartan XC3S700A von Xilinx, wird durch die implementierten Prozessoren keineswegs ausgelas-tet, sondern beläßt viel Freiraum für zusätzliche Funktionen. Die Flexibilität des FPGAs wird auch bei der Schnittstellenimplementierung deutlich, die genau an den Versuch angepaßt ist. Im vorlie-genden Fall konnten mit dem FPGA-Board die speziellen Hardwareanforderungen des Versuchs ohne die aufwendige Entwicklung einer neuen Leiterplatte erfüllt werden. Prozessoren mit ähn-lichen Leistungsmerkmalen sind aber auch als integrierte Standardbausteine (Chips) erhältlich und dann deutlich preisgünstiger als der FPGA-Baustein.

Page 5: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

4

Der Versuchsaufbau umfasst folgende Teilsysteme.

(1) Prozessor CPU1 mit Speicher und einigen Schnittstellen und einem Display(2) Prozessor CPU2 mit Speicher und einigen Schnittstellen(3) Laptop-Rechner zur Programmeingabe und Versuchssteuerung(4) Netzteil, Oszilloskop

Die CPU1 ist mit den Schnittstellen (Bananenbuchsen) auf der linken Seite der Baugruppe und dem Display verbunden, die CPU2 dagegen mit denen auf der rechten Seite. Beide können den Dreh-knopf abfragen. Über die Schalter können logische Werte an die DI- und DJ-Eingänge beider CPUs und für CPU1 auch an DK angelegt werden. In der Mittelstellung kann die Eingabe über die Bana-nenbuchse erfolgen. Die Ausgabewerte DO und DQ an den Bananenbuchsen werden auch an Leuchtdioden (LDEs) angezeigt. Der Ein-/Ausgangsspannungsbereich ist 0..3.3V.

Mit dem Eingabeschalter DK/CP an CPU1 werden auch die seriellen Ausgänge der CPU2 als seri-elle Eingänge der CPU1 selektiert und stattdessen die Oszilloskopausgänge an die Buchsen Rx (Ch I), RFS (Ch II) und das benachbarte SCK (Trigger) gelegt. Ferner werden an DO und DQ alternativ periodische, pulsweitenmodulierte (PWM-)Signale mit einstellbarem Mittelwert ausgegeben.

Für die Teilversuche werden kurze Assemblerprogramme für die beiden CPUs am PC eingegeben, in Binärcodes übersetzt und über die RS232-Schnittstelle auf das Board geladen und gestartet. Die Programmausführung kann auch im Einzelschrittbetrieb verfolgt werden.

Page 6: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

5

Die CPU1C

Die verwendeten CPUs sind vom Typ der am Institut für Rechnertechnologie entwickelten, auch in einigen Vorlesungen diskutierten CPU1C und zeichnen sich dadurch aus, daß sie modular durch Rechenwerke verschiedener Arten mit eigenen Datenspeichern erweitert werden können. Sie laufen hier mit 50MHz und verfügen über jeweils 1k x 18 bit Programmspeicher. Der Versuch verwendet keine Operationen des Rechenwerks, sondern lediglich den Kontroller-Befehlssatz mit den Befehlen zur Programmkontrolle, zum Speicherzugriff, für Ein- und Ausgabe L und wenigen, einfachen Operationen au 18-bit-Datenworten. Die CPU1C hat neben Programmzähler, Instruktionsregister und Stack und den nicht verwendeten Datenregistern des Rechenwerks folgende Arbeitsregister.

8 18-bit-Pointer-/Indexregister I0-I7 (I0 dient auch als Schleifenzähler)1 1-bit-Flagregister F

Der implementierte Instruktionssatz umfasst folgende Befehle.

jp a 00 00 aaaaaaaaaaaaaa unbedingter Sprung an die Adresse aa..aa (1)

call a 01 00 aaaaaaaaaaaaaa(a..aa < 1..11)

Unterprogrammaufruf an der Adresse aa..aa und Sichern der Rücksprungadresse im Stack (1)

ret 01 00 11111111111111 Rücksprung aus Unterprogramm an die vorher gesicherte Rücksprungadresse (1)

cjf a 10 00 aaaaaaaaaaaaaa bedingter Sprung, falls Flagregister F = 1 (1)

ijnz a 11 00 aaaaaaaaaaaaaa bedingter Sprung falls i0.17 = 1 (1), i0=i0+1it=imem(a) 00 01 11 aaaa 1ttt bbbb it vom Speicher laden, Adresse 111111aaaabbbbimem(a)=it 01 01 11 aaaa 1ttt bbbb it an die Adresse 1111111aaaabbbb abspeichernit=imem(is+o) 10 01 0o oooo mttt 1sss indirekt adressiertes Laden, offset = - moooooimem(is+o)=it 11 01 0o oooo mttt 1sss indirekt adressiertes Abspeichernit=n 10 01 1s nnnn nttt 1nnn lade die vorzeichenerweiterte Konstante

s..ssnnnnnnnn in das Register Nummer tir=it+is 11 01 10 0rrr 0ttt 1sss Addition mod 2^18 (2)

ir=it–is 11 01 10 0rrr 1ttt 1sss Subtraktion mod 2^18 (2)

ir=it&is 11 01 10 1rrr 0ttt 1sss bitweises AND (2)

ir=it 11 01 11 0rrr 0ttt 1000 Inhalt von Indexregister Nummer t wird in Indexregister Nummer r geladen

it=io(a) 11 01 11 aaaa 0ttt 1100 Register von Schnittstelle a einlesenio(a)=it 11 01 11 aaaa 0ttt 1101 Registerinhalt an Schnittstelle a ausgebennop 11 01 11 0000 0000 1000 Alternative Bezeichnung für i0=i0

(1) Aufgrund der Pipelining-Architektur der CPU1C wird nach Sprungbefehlen jeder Art (jp,cjf, call, ret) der nachfolgende Befehl immer mit ausgeführt. Daher sollte nach diesen Befehlen immer ein nop oder eine andere sinnvolle Instruktion stehen, die noch mit ausgeführt werden soll.(2) Die Befehle +,-,& setzen das Flagregister (F = MSB des Resultats)

Page 7: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

6

Besonderheiten der CPU1C:Die 18-bit-Befehlswortbreite ist an die Gegebenheiten des FPGAs angepaßt. Das Laden beliebiger Konstanten in Register muß mit Ladebefehlen aus dem entsprechend belegten Speicher erfolgen. Für die Return-Adressen von Unterprogrammaufrufen wird ein Stack mit 8 Speicherplätzen einge-setzt. Er ist nicht für die Übergabe von Parametern geeignet. Die CPU1C hat weitere Instruktionen, die sich auf die Datenregister des Rechenwerks beziehen und hier nicht verwendet werden müssen.

Arbeitsweise der CPU:Die Programmausführung beginnt an der Programmadresse 0. Wie üblich, wird die Verarbeitung mit einer Clock synchronisiert. In jedem Clockzyklus wird ein Befehl verarbeitet und der nächste gelesen (Pipeline). Der aktuelle Befehlscode steht im Instruktionsregister INSTR. Es wird am Ende des Clockzyklus auf den nächsten Befehlscode aktualisiert. Der Speicherzugriff erfolgt ebenfalls synchron mit der Clock. Die Speicheradresse für den nächsten Lesezugriff wird auf der Clockflanke übernommen. Die Speicheradesse für den nächsten Befehlscode wird also am Anfang des aktuellen Verarbeitungszyklus übernommen (meist aus dem Programmzähler PC). Der Programmzähler enthält danach während des Verarbeitungszyklus bereits die Adresse des übernächsten Befehls. Während eines Sprungbefehls wird ebenfalls der nachfolgende Befehl geladen (und noch unabhän-gig von der Sprungbedingung danach ausgeführt). Erst der übernächste Befehl wird von der Sprung-adresse geladen. Sprungbefehle sind also 'delayed'. Falls der Befehl nach dem Sprungbefehl nicht genutzt werden kann, muß eine nop-Operation eingesetzt werden.

Sprungbefehle:Neben den unbedingten Jump- und Call-/Return-Befehlen gibt es einen bedingten Sprungbefehl mit der Sprungbedingung F=1. F wird durch die +/-Operationen und durch I/O-Eingaben auf Bit 17 des Resultats gesetzt. Ferner gibt es den ijnz-Befehl mit der Sprungbedingung i0.17=1, welcher auch i0 inkrementiert und zur Schleifenkontrolle verwendet werden kann. Eine Programmschleife beginnt mit dem Laden von -k+1 (k= loop count) nach i0 und endet mit dem ijnz-Sprung zum Anfang des Schleifenkörpers und einem nachfolgenden Befehl. Geschachtelte Schleifen erfordern das Sichern von i0 als äußerem Schleifenzähler im Speicher oder in einem anderen Register.

Speicheradressierung:Der Programmzähler ist ein 14-bit-Register und der Instruktionsspeicher ist auf 2^14 Worte be-schränkt, von denen hier allerdings nur 2^10 genutzt werden. Absolut adressierte Schreib- und Lesebefehle für die Adressregister erreichen nur 2^8 Adressen. Die indirekte Adressierung erreicht den gesamten Speicher. Offsets haben die Werte -63 ... 0. Der Offset 0 bewirkt im Befehl zugleich das Autoinkrementieren des Adressregisters. Damit lassen sich z.B. eine Blocktransferfunktion oder ein Stack für Übergabeparameter und Zwischenergebnisse eines Unterprogramms implementieren. Speicherzugriffe für Daten benötigen stets einen Extrazyklus.

logische u. physikalische Adressbereiche des CPUs sind somit

$0000...$3fff $000..$3ff Instruktionen und indirekt adressierte Daten$3f00...$3fef $300..$3ef absolut adressierte Variablen und Konstanten$3ff0...$3fff $3f0...$3ff I/O-Bereich bei absoluter Adressierung

Input und Output:Ein- und Ausgabeschnittstellen werden über spezielle Befehle mit 4-bit-Adressen angesprochen. I/O-Befehle laufen im Gegensatz zu Speicherzugriffen in einem Zykel ab und setzen das F-Bit. I/O-Befehle implizieren einen Handshake und stoppen die CPU bei nicht bereiter Schnittstelle.

Page 8: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

7

Schnittstellen

Die für den Versuch implementierten Schnittstellen werden wie folgt adressiert:

0x0 DI,DO Eingabe DI, Ausgabe DO0x1 DJ,DQ DJ DQ0x2 DK DK (CPU1)0x3 CEN Druckknopf, öffnender Schalter0x4 DSPL Schreibport Display (CPU1)0x5 PWM Schreibport PWM , 7-bit Auflösung, 14400Hz0x5 KNOB Leseport Drehknopfregister0x7 TIME Zeitzähler, Periode ca. 20 sec, Zählrate 14400Hz, Startwert 00xd SRC Empfangsregister synchrone serielle Schnittstelle (CPU1)0xd STX Senderegister synchrone serielle Schnittstelle (CPU2)

Man beachte, daß an denselben Adressen vom demselben Prozessor bei Schreib- und Leseoperatio-nen unterschiedliche Schnittstellen angesprochen werden können. Einzelbit-Leseoperationen der Eingabeschalter/-signale DI, DJ, DK, CEN und des seriellen Schnittstellenstatus laden sowohl in das MSB (most significant bit, resultierende Werte sind $0 oder $20000) des selektierten Registers als auch nach F. Einzelbit-Schreiboperationen (an die Ausgänge DO, DQ) schreiben das MSB des gewählten Registers. Beide CPU's lesen KNOB und TIME, haben aber separate PWM-Ausgänge und Dx-Signale. Das FPGA zählt in KNOB die Quadraturimpulse des Drehknopfes. Die PWM-Ausgaben (Teilversuch 5) erfolgen für nicht negative Schreibwerte an den Buchsen DO/DQ/AQ. Ein negativer Schreibwert an PWM aktiviert wieder die Bitausgabe an DO und DQ.

Die synchrone serielle Schnittstelle sendet von CPU2 und empfängt auf CPU1. Die Bereitschaft der seriellen Schnittstelle kann abgefragt und in einer Warteschleife abgewartet werden. Die Frequenz der Sendeclock und damit Bitrate der Übertragung beträgt 50MHz/27=1.852MHz. Ein 18-bit-Wort wird in 9.72µs übertragen, beginnend mit dem niederwertigsten Bit. Die Empfangsdaten werden auf der positiven Flanke des Taktsignales übernommen, die Sendedaten wechseln auf der negativen. Das Frame-Sync-Signal ist während des ersten Bits der Wortübertragung aktiv (=1). Das Taktsignal ist nur während der Übertragung eines Wortes aktiv und bleibt sonst =0. Die Statusabfrage für die Schnittstelle liefert den Wert 1, solange die Schnittstelle nicht bereit für den Transfer ist. Wird dennoch das Sende- bzw. Empfangsregister angesprochen, so hält der Prozessor an, bis der Zugriff erfolgen kann. Dadurch kann auf die sonst übliche Statusabfrage und Warteschleife vor einem Zugriff auch verzichtet werden. Zwischen Sende- und Empfangsschnittstelle gibt es keinen Handshake. Wenn ein neues Wort gesendet wurde, bevor das vorige empfangsseitig entnommen wurde, wird das vorige Wort überschrieben.

Das Display gehört zu CPU1 und wird nur geschrieben. Bit 8 des Schreibwortes selektiert zwischen Kommando- und Zeichenausgaben. Bits 9-17 des geschriebenen Wortes sind ohne Belang. Schreib-zugriffe erhalten automatisch durch Wartezyklen der CPU 40µs Abstand. Die Schreibposition im Display wird mit dem Kommando $3ffxx gesetzt (erste Zeile xx=$80..$8f, zweite Zeile $c0..$cf), Zeichenausgaben sind $xx (xx = 8-bit-Zeichencode). Bei jeder Zeichenausgabe rückt die Schreib-postion weiter vor. Die Betriebsart des Displays wird durch das PC-Steuerprogramm eingestellt und muss daher in den Praktikumsaufgaben nicht behandelt werden.

Page 9: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

8

Das PC-Steuerprogramm

Das PC-Steuerprogramm ermöglicht das Laden, Starten und Testen der CPU-Pogramme. Es interagiert mit seinem Benutzer über ein DOS-Textfenster. Alle Texteingaben werden mit der Return-Taste abgeschlossen. Folgende Kommandos werden verarbeitet.

1 CPU1 anwählen (Auswahl wird stets in der Kommandozeile angezeigt)2 CPU2 anwählenr aaa 8 Worte aus dem Speicher ab Adresse aaa (hex.) der selektierten CPU lesenw ddddd aaa 1 Wort ddddd (hex.) in Speicher der selektierten CPU schreibeno n Selektion für Oszilloskopausgänge, n=0..7q Quit (Ende)

:xyz Reset beider CPUs, Programme xyz_CPU1.txt, xyz_CPU2.txt ladenReset aufheben, CPUs halten

g starten/resume für beide CPUs (full speed)h starten/anhalten für beide CPUs(ret) 1 Step auf angewählter CPU, Zustand anzeigen (nach 'h')

Mit dem Steuerkommando 'o n' lassen sich verschiedene Signalpaare an die Oszilloskopausgänge selektieren. Für die Ausgabe an das Oszilloskop muß DK=1 sein.

o0: URX, UTX (UART-Signale) Trigger: URX -o1: SCK, TX (serielle Sendesignale von CPU2) TFS +o2: DQ1, DQ2 (PWM-Signale von CPU1/2) DQ1 -

Programmeingabe

CPU1/2.txt sind Textfiles mit den zu ladenden Instuktions- und Datencodes (hexadezimales.Format $abcde, Großbuchstaben A-F nicht zulässig, dezimales Format oder Zeichencodeeingabe 'a' auch möglich) und Origin-Anweisungen der Form @$abc , welche die Startadressen der nachfolgenden Instruktionscodes oder Datenworte im Speicher festlegen (die Voreinstellung dafür ist 0). Ferner können auch Kommentare verwendet werden (beginnend mit '.' bis zum Zeilenende). Die Files CPUx.txt können mit einem parallel geöffneten Editor eingegeben werden. Die Programme für die Teilaufgaben des Versuchs können unter eigenen Namen erstellt werden, etwa 'v1_cpu1.txt' .

Die Ladefunktion lässt auch Assemblerbefehle in der obigen, C-ähnlichen Syntax zu (keine Leerzeichen außer in Sprunganweisungen, Zeichen in den Mnemonics sind Kleinbuchstaben). Nicht direkt mit der Instruktion 'ir=n' ladbare Konstanten werden dennoch verarbeitet und automatisch im Speicher ab Adresse $300 alloziert. 'ir=n' wird dann durch einen Ladebefehl aus dem Speicher ersetzt. Es dürfen symbolische Sprungadressen (Labels) verwendet werden. Labels werden an der aktuellen Adresse durch ein nachgestelltes ':'-Zeichen ausgedrückt (name:). Die Interfaceadressen sind vordefiniert und werden symbolisch eingegeben (DI, DJ, DK, DO, DQ, DSPL, KNOB, PWM, TIME, STX, SRC).

Page 10: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

9

Das folgende Programmbeispiel implementiert eine Boolesche Operation (XOR) mit dem programmierbaren Prozessor, die quasi-kontinuierlich auf zwei Eingagssignale (DI, DJ) angewandt wird. Das Ergebnis erscheint an DO. Das Programm kann für beide CPUs verwendet werden. Auf CPU1 wird es unten im ersten Teilversuch zu einer komplexeren Operation ausgebaut.

Start: i0=DI .. DI leseni1=DJ .. DJ leseni2=i0+i1 .. Addition ergibt hier xor-Verknüpfung der MSBsjp Start .. delayed, vermeidet 'nop' nach Sprung am EndeDO=i2 .. Ausgabe an DO

Die Startadresse eines solchen Programms ist 0, so daß es nach dem Reset ohne weiteres ausgeführt wird. Als Assemblerprogramm enthält es (in symbolischer Form) die Prozessorbefehle in der Reihenfolge, wie sie im Speicher stehen und ausgeführt werden. Entsprechend seiner Position im Programm ordnet die Laderoutine (der Assembler) dem 'Label' 'Start' die Adresse $0 zu, so daß der Befehl 'jp Start' gleichbedeutend mit 'jp $0' ist .

Obwohl das Assemblerprogramm genau die Arbeitsweise des Prozessors widerspiegelt und im Einzelschrittbetrieb verfolgt werden kann, ist das Programmieren in Assembler selbst bei so ein-fachen Prozessoren wie der CPU1C nicht mehr üblich. Die Programmierung komplexer Anwen-dungen erfolgt dann der Einfachheit und Wartbarkeit der Programmierung halber in einer höheren Programmiersprache, meist 'C', auch wenn bei der dann erfolgenden automatischen Umsetzung in Prozessorbefehle durch einen Compiler ein gewisser Effizienzverlust entsteht. In diesem Prakti-kumsversuch sind die zu erstellenden Programme allerdings sehr kurz, und die genaue Arbeitsweise des Prozessors steht im Vordergrund.

Page 11: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

10

Oszilloskop

Zum Versuchsaufbau gehört ein Oszilloskop, mit dem man den Zeitverlauf verschiedener Signale anzeigen und vermessen kann, insbesondere deren Pulsbreite, Periodendauer und Amplitude. Die Vermessung wird durch verschiedene Bedienfunktionen unterstützt (Displaykursor). Die zu mes-senden Signale werden über Tastköpfe oder direkt über die Oszilloskopbuchsen des Versuchsauf-baus abgegriffen, wobei dann vom PC aus zwischen verschiedenen Signalquellen umgeschaltet werden kann. Die digitale Signale werden gleichspannungsgekoppelt, während für die Bestimmung der Restwelligkeit des Signals an AQ in Teilversuch 5 die Wechselspannungskopplung besser geeignet ist, da dann der Wechselspannungsanteil unabhängig von der mitteleren Gleichspannung mit höherere Auflösung abgebildet werden kann.

Das Oszilloskop ist zur kontinuierlichen Darstellung periodischer Signale geeignet, aber auch zur Abbildung einmaliger Vorgänge, die dann einmalig gespeichert werden. Sowohl für periodische als auch für einmalige Signale ist bei der Abbildung und Speicherung eine Synchronisation erforder-lich, die sog. Triggerung.

Für die Triggerung werden eine Signalquelle (Kanal 1/2 oder der extra Triggereingang) sowie ein Triggerpegel ausgewählt. Wenn das Triggersignal den Pegel durchläuft (in wählbarer Richtung), startet der Speichervorgang und Displayaufbau. Wünscht man eine kontinuierliche Beobachtung der Signalpegel, so kann irgendein periodischer Trigger verwendet werden, z.B. mit der Netzfrequenz. Für die Darstellung der seriellen Schnittstellen- und PWM-Signale ist die hieran angepaßte Einstel-lung des Zeitmaßstabs wichtig.

Es ist nützlich, sich zunächst mit der Bedienung des Oszilloskops vertraut zu machen. Zu Vorberei-tung der Versuchsdurchführung werden darum folgende Schritte empfohlen.

1) Oszilloskopieren des Testsignals am Oszilloskop, Bestimmung von Periode und Amplitude

2) Pegelmessung der Digitaleingänge des Versuchsaufbaus (über die Schalter modifizierbar)

3) Einstellung der Triggerschwelle auf etwa 1.7V, Triggern mit dem jeweiligen Eingabesignal.

Als Alternative zum Oszilloskop steht auch eine in das FPGA und das PC-Steuerprogramm inte-grierte, äquivalente Analysefunktion zur Verfügung, die ebenfalls mit 'o'-Kommandos bedient wird. Eine Übersicht der Kommandos kann mit 'o?' abgerufen werden.

oc: gewähltes Signalpaar mit 46/138µs lang vor/ab Trigger mit der Rate 50MHz abtastenod: desgl., 92/276µs mit der Rate 25MHzo8: AQ-Signale 5.5ms mit der Rate 184kHz abtasten (ungetriggert)o9: desgl. 22Ms mit der Raten 46kHz

Die Signalanzeige erfordert separate Kommandos, die nach der Aufzeichnung zu geben sind.

oo: digitale Signaldaten in der Umgebung des Triggerzeitpunktes anzeigen (CH0 oben)op: desgl., komprimierte Darstellung der gesamten Aufzeichnungoi: aufgezeichnete AQ-Signale anzeigen (AQ der CPU1 oben) .

Page 12: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

11

Kontrollfragen

1) Welche Vor- und Nachteile ergeben sich aus der Verwendung des FPGAs für diesen Versuch ?

2) Mit welchem CPU1C-Befehl kann die Konstante $3e8 in das Register i4 geladen werden ?

3) Was ist ein 'delayed branch' ?

4) Wie verhält sich die CPU1 beim Lesen des seriellen Empfangsregisters, wenn noch keine Daten gesendet wurden?

5) Mit welcher Zyklusfrequenz wird obiges Programm für die XOR-Operation ausgeführt ?

6) Wieso berechnet die binäre Addition darin die XOR-Operation ?

7) Skizzieren Sie die drei Signale SCK, Tx, TFS bei einer Wortsendung!

8) Wie entsteht die Textausgabe im Display vor dem Laden eines CPU1-Programmes ?

Page 13: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

12

Teilversuche

Die Teilversuche werden in den Lösungsfeldern dokumentiert und im Versuchskolloquium auf Anfrage demonstriert.

1) Man erweitere das XOR-Beispiel zu einem Volladdierer-Prozeß(ein zyklisch wiederholtes Programm) mit den Eingängen DI, DJ, DK (carry in) und den Ausgängen DQ (sum) und DO (overflow) und teste ihn mit den Schaltereingaben ( DK+DI+DJ = DQ + 2*DO ).

Vorbereitung: Für den Volladdierer sind vor der Programmeingabe die Wertetabelle und ein Algorithmus über AND, XOR aufzustellen!

Das Programm kann kontinuierlich oder im Single-Step-Betrieb durchlaufen werden. Be-rechnen Sie seine Zykluszeit und messen Sie sie mit dem Oszillopkop, indem Sie an DO alternativ in jedem Zyklus einen Impuls erzeugen.

Lösung (Assemblerprogramm, Berechnung der Zykluszeit, Meßergebnis):

Page 14: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

13

2) Schreiben Sie nun für die CPU2 ein Programm, welches ein oder mehrere Worte über die serielle Schnittstelle sendet. Oszillographieren Sie die Signale TX, SCK und TFS der seriellen Sendeschnittstelle beim Senden eines Wortes im Einzelschrittbetrieb. Benutzen Sie dazu das externe Oszilloskop. Die gesendeten Daten können mit der CPU1 empfangen werden. Sie erhält dazu das unten angegebene Programm, welches ein oder mehrere Worte empfängt. Die Ausführung im Einzelschrittbetrieb zeigt die empfangenen Werte. Der Empfang auf CPU1 setzt voraus, daß die Sende- und Empfangssignale verbunden sind (DK=1). Die Verbindung über Kabel ist nur für DK=0 zulässig.

strt1: jp strt1 .. wiederhole nachfolgenden Befehli1=SRC .. Empfangsoperation

Lösung (Sendeprogramm, Liste der Bedienschritte bei der Einzelschrittausführung Oszilloskopeinstellung und Meßergebnis, Tx-Verlauf beim Senden von $175a3, Messung der Bit- und Wortraten):

Page 15: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

14

3) Der Drehknopf liefert Werte zwischen 0 und 127. Unter Verwendung der nachfolgenden Subroutine wird eine Funktion für die CPU1 geschrieben, die den Wert rechtsbündig in einem Feld von 4 Zeichen und ohne führende Nullen ins Display einschreibt. Der Kursor wird dazu durch Schreiben von $3ffc0 in das Displayport auf den Anfang der zweiten Zeile gesetzt. Aus dem Zahlwert werden sodann die Zifferncodes ($30..$39) berechnet und fortlaufend in das Displayport geschrieben. Das Lesen des Knopfes und die Ausgabe an das Display werden zyklisch wiederholt. Bestimmen Sie auch die Laufzeit Ihrer Displayroutine.

Subroutine zur Ausgabe der höchsten Dezimalstelle von i1 (Wertigkeit in i4), kann nachein-ander mit i4=100,10,1 aufgerufen werden und hinterläßt in i1 jew. den Rest mod i4:

digit: i0=-10 .. Schleifenzählerrp: i1=i1-i4

cjf outsnopijnz rpnop

outs: i5=$3ai5=i5+i0i1=i1+i4retDSPL=i5

Lösung (Assemblerprogramm mit Calls der digit-Routine):

Page 16: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

15

Zusatzaufgabe zu 3):

Der Prozess wird auf beide Prozessoren verteilt, indem CPU2 anstelle von CPU1 den Knopf ausliest, den Wert seriell an CPU1 überträgt und diese ihn anzeigt. Vor dem Senden muß jeweils die Bereitschaft des Senderegisters abgewartet werden. Alternativ kann eine Zeit-schleife durchlaufen werden, die die Senderate herabsetzt.

Lösung (Änderungen am CPU1-Programm, Assemblerprogramm für CPU2):

Page 17: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

16

4) Die Zeitvariable TIME wird benutzt, um Delays von 1 sec zu generieren. DO und DQ an CPU1 werden so programmiert, daß im Sekundentakt zyklisch die Wertepaare 00,01,11,10 durchlaufen werden.

i1=TIMEi2=14400

wait1s:i3=TIME .. 1sec-Warteschleifei3=i3-i1i3=i3-i2cjf wait1snop

Lösung (Assemblerprogramm unter Verwendung obiger Delayroutine):

Page 18: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

17

5) Pulsweitenmodulation

Zur verlustarmen Steuerung von Verbrauchern mittels digitaler Signale wird häufig die Pulsweitenmodulation (PWM) eingesetzt. Dazu wird bei gleichbleibender Frequenz einRechtecksignal in seinem Tastverhältnis (Puls/Pausenverhältnis) so eingestellt, dass Pulseein gewünschter zeitlicher Mittelwert entsteht. Wenn dabei die Frequenz hoch genug ist,wird ein angeschlossener Motor oder Lautsprecher durch seine eigene Trägheit die Mittel-wertbildung vornehmen. Ein Vorteil dabei ist auch, dass die Leistungsschalttransistoren immer voll durchgeschaltet oder voll sperrend betrieben werden, wodurch an ihnen nur wenig Verlustleistung abfällt.

Tastverhältnisse 0.25, 0.5 und 0.75 bei gleicher Frequenz

Die PWM-Signale der beiden CPUs (DQ1/2, invertiert an DO1/2) werden auf verschiedene Tastverhältnisse eingestellt und oszillographiert (Schalter DK/CP aktiv). Die über ein RC-Glied gebildeten Signalmittelwerte von DQ an AQ werden ebenfalls oszillographiert, wobei die Restwelligkeit zu bestimmen ist.

Lösung (Oszillopskopeinstellung, Assemblerprogramm, Einzelschitt-Bedienung, Meßergebnisse Frequenz, Tastverhältnis, Restwelligkeit bei 25%,50%,75%):

Page 19: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

18

Zusatzaufgabe:

Der gemittelte PWM-Ausgang AQ an CPU1 soll ein 450Hz-Rechtecksignal ausgeben. Dazu wird nach jeder Halbperiode (16/14400 s) ein neuer Wert an das PWM-Register ausgegeben. Die Amplitude des Signals soll mit dem Drehknopf einstallbar sein. Das Signal an AQ wird wieder mit dem externen Oszilloskop abgebildet und überprüft.

Lösung (Assemblerprogramm, Oszillogrammskizze, Meßergebnisse Frequenz, Welligkeit):

Page 20: Praktikum II: Elektrotechnische Experimentecfe9898/Praktikum-II/PDFs/Versuch3.pdf · 1 Praktikum II , Versuch 3 : Mikroprozessor SBS95, Raum E-3034 Betreuer: Manuel Das, Stefan Just

19

Literatur

F. Mayer-Lindenberg, Konstruktion digitaler Systeme, Skript zur Vorlesung 'Informatik f. Ingen. I'

.. erklärt Funktionsweise des von-Neumann-Rechners und Mikroprozessors

F. Mayer-Lindenberg, Dedicated Digital Processors, John Wiley & Sons, Chichester 2004

.. informiert über Prozessorchips, FPGAs, I/O, CPU- und System-Design

F. Mayer-Lindenberg, Foliensätze/Präsentationen zu den Vorlesungen InfIng-I und DVS, im Netz

.. enthalten weitere Informationen über die CPU1C