Laboraufgabenblatt 1 - Beuth Hochschule für Technik Berlin
Laboraufgabenblatt 1 - Beuth Hochschule für Technik Berlin
Laboraufgabenblatt 1 - Beuth Hochschule für Technik Berlin
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />
FB VI, Labor <strong>für</strong> Digitaltechnik<br />
MOP: Laborübung 1<br />
Abnahme (bitte vom Betreuer per Unterschrift bestätigen lassen)<br />
Aufgabe 1 Aufgabe 2 Aufgabe 3 Aufgabe 4 Aufgabe 5<br />
Einführung ins Labor<br />
Jede Gruppe besteht aus maximal zwei Teilnehmern und ist <strong>für</strong> das gesamte<br />
Semester einem festen Arbeitsplatz im Labor zugeordnet. Die Einteilung findet am<br />
ersten Labortermin statt. Tragen Sie sich dazu bitte in die ausgelegte Belegtabelle<br />
ein. Wählen Sie einen Gruppennamen und notieren Sie sich das Passwort.<br />
Von jeder Gruppe ist pro Laborübung ein Laborbericht anzufertigen und pünktlich<br />
zu Beginn des nächsten Labortermins abzugeben. Die Laborberichte müssen alle<br />
im jeweiligen Übungsblatt aufgeführten Fragen behandeln. Erfassen und<br />
kommentieren Sie zudem alle Beobachtungen und Ergebnisse. Achten Sie bei<br />
Rechenaufgaben darauf, den Lösungweg kenntlich zu machen.<br />
Zusätzlich zur Abgabe des Berichts findet nach Fertigstellung der Aufgabe eine<br />
persönliche Rücksprache zur durchgeführten Übung mit beiden<br />
Gruppenmitgliedern statt. Lassen Sie sich dazu Ihre Anwesenheit, sowie die<br />
erfolgreiche praktische Abnahme auf dem jeweils aktuellen Aufgabenblatt<br />
quittieren. Drucken Sie dieses dazu aus und heften Sie es als Deckblatt zu Ihrem<br />
Laborbericht.<br />
Kennenlernen des Laborarbeitsplatzes und der Simulationsumgebung<br />
Obwohl heute Microcontroller häufig in der Hochsprache C programmiert werden,<br />
beschäftigen wir uns im Rahmen dieser Veranstaltung bewusst mit<br />
Assemblerprogrammierung. Erst zum Ende der Veranstaltung wird es einen kurzen<br />
Ausflug zum Thema C-Programmierung geben. Dies hat vor allem folgende Gründe:<br />
• bei der Assemblerprogrammierung muss direkt hardwarebezogen gearbeitet<br />
werden<br />
• dadurch wird die Architektur des Systems besser kennengelernt<br />
• Hardwarezugriffe lassen sich mit Assemblercode direkter programmieren<br />
• guter Assemblercode erzeugt zudem effizientere (schnellere) Programme<br />
Richten Sie sich Ihren Laborarbeitsplatz ein und machen Sie sich mit diesem<br />
vertraut. Bevor wir mit der praktischen Arbeit auf realer Mikrocontroller-Hardware<br />
anfangen (STC 8051 Professional Kit), steht <strong>für</strong> die ersten Labortermine die<br />
MOP_Laboruebung_1.doc Seite 1 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />
16.10.2013 Prof. Dr. Sven-Hendrik Voß
Verwendung eines Simulators im Vordergrund, der die Original Intel 8051 Plattform<br />
nachbildet.<br />
Der in dieser Veranstaltung verwendete Simulator ist EdSim51. Dies ist ein<br />
kostenloser auf Java basierender Simulator, der unter http://www.edsim51.com zu<br />
beziehen ist. Sie finden im Internet umfangreiches Material, sowohl zum Simulator,<br />
wie auch zum 8051. EdSim51 bietet zunächst <strong>für</strong> das Labor alle Möglichkeiten, um<br />
eigene Programme in Assembler zu schreiben und testen zu können.<br />
Zudem umfasst er eine Anzahl virtueller Peripheriekomponenten, wie 8 LEDs, 8<br />
Schalter, 4x3 Keypad, 4 gemultiplexte 7-Segment Anzeigen, eine UART, etc., die<br />
interaktiv genutzt werden können, um mit dem 8051 zu kommunizieren. Somit ist es<br />
möglich, das Verhalten und den Zustand einzelner Register, des Speichers und der<br />
Port-Pins anhand ihrer virtuellen grafischen Darstellung während des Code-<br />
Debuggens zu beobachten und nachzuvollziehen.<br />
In den folgenden Laborterminen werden wir uns dann der realen Mikrocontroller-<br />
Hardware zuwenden. Dabei arbeiten wir mit dem 90C516RD+ von STC<br />
Semiconductor, einem modernen 8051 Derivat.<br />
So wird es möglich sein, die entstandenen Programme auch real in Betrieb zu<br />
nehmen, zu testen und auszuführen. Dabei ist zu beachten, dass die Programme<br />
gemäß der Auslegung und des Aufbaus der Entwicklungssysteme nicht 1:1 aus der<br />
Edsim-Umgebung übernommen, sondern mitunter noch modifiziert werden müssen<br />
(z.B. hinsichtlich der Belegung der I/O Ports). Dies verstärkt zusätzlich den<br />
Lerneffekt.<br />
Abbildung 1: Edsim51 Oberfläche<br />
MOP_Laboruebung_1.doc Seite 2 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />
16.10.2013 Prof. Dr. Sven-Hendrik Voß
Abbildung 2: Peripherie-Anschlußbelegung des EdSim51<br />
Aufgaben<br />
1. Machen Sie sich mit der Simulationsumgebung Edsim51 vertraut. Eine<br />
umfassende Funktionsbeschreibung ist den Dokumentationen unter<br />
http://www.edsim51.com/simInstructions.html zu entnehmen. Machen Sie sich<br />
insbesondere mit der Adressierung der Peripheriebausteine, sowie mit der<br />
Ansteuerung der I/Os vertraut (siehe dazu auch Abbildung 2).<br />
Da wir die genaue Assembler-Syntax noch nicht kennengelernt haben, seien hier<br />
zunächst als Vorgriff auf Späteres drei wesentliche Bitmanipulations-Befehle<br />
(siehe auch MOP_Labor_8051Befehlsliste.pdf) gegeben:<br />
CLR: Löschen eines Pins<br />
SETB: Setzen eines Pins<br />
CPL: Komplementieren eines Pins<br />
Einzelne Pins (Bits) werden im Befehl als Parameter hinzugefügt, z.B. SETB P1.7<br />
(setzt Pin 7 von Port 1 auf '1'). Experimentieren Sie mit diesen Befehlen und den<br />
Anschlüssen in der Simulationsumgebung Edsim51. Nach dieser Aufgabe sollten<br />
Sie in der Lage sein, einzelne Pins des simulierten 8051 Bausteins einzulesen<br />
(z.B. Switchbank), auszugeben (z.B. LEDs), sowie einen Überblick über den<br />
Gesamtaufbau gewonnen haben. Hinweis: Beachten Sie insbesondere die aktiven<br />
Pegel (high / low-Pegel)<br />
MOP_Laboruebung_1.doc Seite 3 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />
16.10.2013 Prof. Dr. Sven-Hendrik Voß
2. In der Grundeinstellung wird EdSim51 mit einem Systemtakt von 12 MHz versorgt.<br />
a. Wie lange dauert eine Periode des Taktes in Nanosekunden (ns)?<br />
______________________________________________________________<br />
b. Die Pulsweite (Duty Cycle) ist definiert als Quotient der High-Pegel-Dauer /<br />
Periodendauer in Prozent. Diese sei zunächst angenommen als 40%. Wie<br />
lange dauert der High-Pegel des Taktes? Nehmen wir nun jeweils Werte von<br />
35% und 55% an. Wie lange dauert der High-Pegel des Taktes dann?<br />
______________________________________________________________<br />
______________________________________________________________<br />
c. Angenommen der 8051 Mikroprozessor benötige 6 Takte zur Abarbeitung eines<br />
Maschinenzyklus. Wie lange dauert ein Maschinenzyklus? Beachte: ein<br />
Maschinenzyklus ist häufig ungleich der Zeitspanne zur Ausführung eines<br />
Befehls. Ein Befehl benötigt typischerweise zwischen 1 und 3 Maschinenzyklen.<br />
______________________________________________________________<br />
______________________________________________________________<br />
d. Welche Frequenz besitzt ein Signal mit einer High-Pegel-Dauer von 2ms und<br />
einer Low-Pegel-Dauer von 400µs?<br />
______________________________________________________________<br />
3. Frischen Sie Ihre Kenntnisse in Binörcodierung, Zahlen- und Zeichendarstellung<br />
(siehe GDS) auf.<br />
a. Stellen Sie die Zahl (51234) 10 im Binärformat und im Hexadezimalformat dar.<br />
______________________________________________________________<br />
______________________________________________________________<br />
b. Die 8-Bit Variable x besitzt den dezimalen Wert x=158. Wie ist die Belegung der<br />
einzlenen Bits dieser Variable x?<br />
Bit 7 0<br />
c. Wie ist die Belegung einer 16-Bit Variablen y mit dezimalem Wert y=157?<br />
Bit 16 0<br />
MOP_Laboruebung_1.doc Seite 4 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />
16.10.2013 Prof. Dr. Sven-Hendrik Voß
d. Stellen Sie die Variable x=158/2 als Binärzahl dar. Was beobachten Sie bei<br />
einer Division durch 2?<br />
Bit 7 0<br />
______________________________________________________________<br />
______________________________________________________________<br />
e. Stellen Sie die Variable x=158/4 als Binärzahl dar, sowie die Variable z=158%4<br />
(%: Modulo-Operation).<br />
Bit 7 0<br />
Bit 7 0<br />
f. Welchem Buchstaben entspricht die Bitkombination 0x53 bei der Interpretation<br />
als ASCII-Zeichen?<br />
______________________________________________________________<br />
4. Im seminaristischen Unterricht wurden die Grundlagen zur Rechnerarchitektur<br />
vermittelt. Beantworten Sie folgende Fragen:<br />
a. Worin besteht der grundlegende Unterschied zwischen der von-Neumann- und<br />
der Harvard-Architektur? Welche grundlegende Gemeinsamkeit besteht<br />
zwischen beiden?<br />
______________________________________________________________<br />
______________________________________________________________<br />
b. In welche typischen Arbeitsschritte ist die Befehlsabarbeitung beim von-<br />
Neumann-Rechner üblicherweise gegliedert?<br />
______________________________________________________________<br />
______________________________________________________________<br />
5. Erstellen Sie Ihr erstes Programm in Pseudocode. Das Programm soll die Summe<br />
von zwei Dreiecksflächen berechnen. Die Grundseite und die darauf senkrecht<br />
stehende Höhe der beiden Dreiecke seien jeweils bekannt. Stellen Sie die<br />
mathematische Formel <strong>für</strong> die Berechnung auf und bilden Sie diese daraufhin in<br />
Pseudocode nach.<br />
MOP_Laboruebung_1.doc Seite 5 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />
16.10.2013 Prof. Dr. Sven-Hendrik Voß
Denken Sie inbesondere auch an das Allozieren von Speicherplätzen. Im Speicher<br />
muss Platz reserviert werden <strong>für</strong> alle Daten, mit denen gerechnet wird. Machen<br />
Sie sich vorab Gedanken wo<strong>für</strong> und wieviel Speicherplatz <strong>für</strong> wieviel Eingabewerte<br />
und Ergebniswerte Sie benötigen.<br />
Die Rechenaufgaben in Pseudocode einem hypothetischen Rechner<br />
(Akkumulatormaschine) übertragen zu können, setzt Kenntnis über den<br />
Befehlsvorrat voraus. Im Folgenden finden Sie eine Auflistung aller relevanten<br />
Befehle.<br />
ADD<br />
addiert den in der Eingabe der ALU<br />
enthaltenen Wert zum Wert des Akkumulators.<br />
Das Ergebnis steht im Akkumulator<br />
CLEAR<br />
setzt den Wert der ALU, insbesondere des<br />
Akkumulators, auf 0 (Null)<br />
LADE Speicheradresse<br />
MULT<br />
MULT*K Wert<br />
holt den in der angegebenen Speicheradresse<br />
gespeicherten Wert in die (in das<br />
Eingaberegister der) ALU<br />
multipliziert den in der Eingabe der ALU<br />
enthaltenen Wert mit dem Wert des<br />
Akkumulators. Das Ergebnis steht im<br />
Akkumulator<br />
multipliziert den im Akkumulator enthaltenen<br />
Wert mit dem im Befehl angegebenen Wert.<br />
Das Ergebnis wird anschließend wieder in den<br />
Akkumulator geschrieben<br />
S[Index]<br />
reserviert Speicher an Adresse [Index]<br />
SPEICHERE Speicheradresse<br />
speichert den von der ALU berechneten im<br />
Akkumulator abgelegten Wert in die<br />
angegebene Speicheradresse<br />
STOP<br />
beendet das Programm<br />
MOP_Laboruebung_1.doc Seite 6 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />
16.10.2013 Prof. Dr. Sven-Hendrik Voß