Endterm WS 08/09 Angabe - LRR
Endterm WS 08/09 Angabe - LRR
Endterm WS 08/09 Angabe - LRR
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Ausschnitte aus der <strong>Endterm</strong>-Klausur<br />
Einführung in die Technische Informatik<br />
Prof. Dr. Arndt Bode<br />
Wintersemester 20<strong>08</strong>/20<strong>09</strong><br />
11. Februar 20<strong>09</strong><br />
<strong>Angabe</strong>n ohne Gewähr<br />
Aufgabe 2 Mikroprogrammierung<br />
In der Anlage finden Sie die Beschreibung einer mikroprogrammierbaren Maschine, in<br />
der sie alle zur Lösung der Aufgabe notwendigen <strong>Angabe</strong>n, wie die Beschreibung des<br />
Mikroinstruktionsformates und die Funktionstabellen der Bausteine, finden.<br />
Für diese mikroprogrammierbare Maschine ist ein kurzes Maschinenprogramm zu analysieren<br />
und einige Mikroprogramme zu entwickeln. Die Mikroprogramme implementieren<br />
die Maschinenbefehle, die im Maschinenprogramm verwendet werden.<br />
Das Mikroprogramm IFETCH, das den nächsten Maschinenbefehl in das Instruktionsregister<br />
holt, den Befehlszähler inkrementiert und entsprechend dem Befehls-Opcode das zugehörige<br />
Mikroprogramm anspringt, kann als gegeben betrachtet werden.<br />
Alle Mikroprogramme müssen am Ende wieder zum Anfang des Mikroprogramms IFETCH<br />
zurückspringen. Dieses sei ab Adresse 0x000 im Mikroprogrammspeicher abgelegt.<br />
Hexadezimale Zahlen werden in Java- bzw. C-Schreibweise dargestellt und beginnen mit der<br />
Buchstabenkombination 0x, z.B: 0x1234, 0x011A oder 0xBEEF.<br />
1
2.1 Gegeben seien folgende Maschinenbefehle:<br />
OpcoMaschinen- Beschreibung<br />
debefehl 0x01 MOV RA, Kopiert das Register RA in eine Hauptspeicherzelle. Die<br />
[RB] Adresse der Hauptspeicherzelle ist im Register RB gespeichert.<br />
0x02 MOV [RA], Kopiert den Wert einer Hauptspeicherzelle in das Regis-<br />
RB<br />
ter RB. Die Adresse der Hauptspeicherzelle ist im Register<br />
RA gespeichert.<br />
0x10 JE adr Bedingter Sprung nach adr.<br />
Bedingung: das Zero Flag im Maschinenstatusregister ist<br />
gesetzt.<br />
0x11 JNE adr Bedingter Sprung nach adr.<br />
Bedingung: das Zero Flag im Maschinenstatusregister ist<br />
nicht gesetzt.<br />
0x20 INC RB Inkrementiert RB um 1 (RB = RB + 1). Die Flags des<br />
Maschinenstatusregisters werden entsprechend des<br />
Ergebnisses gesetzt.<br />
0x30 DEC RB Dekrementiert RB um 1 (RB = RB - 1). Die Flags des<br />
Maschinenstatusregisters werden entsprechend des<br />
Ergebnisses gesetzt.<br />
0x40 ADD RA, RB Addiert die Register RA und RB und speichert das Ergebnis<br />
in RB. Die Flags des Maschinenstatusregisters<br />
werden entsprechend des Ergebnisses gesetzt.<br />
Wichtig: Die Bezeichnung "RA" (bzw. "RB") steht hier abkürzend für "das durch<br />
das A-Registeradressfeld (bzw. B-Registeradressfeld) des Maschinenbefehlswortes<br />
adressierte Register".<br />
2.1 Welche oben angegebenen Befehle belegen<br />
a) 16 Bit ________________________<br />
b) 32 Bit ________________________<br />
im Hauptspeicher? Bitte die jeweiligen Opcodes angeben!<br />
2.2 Gegeben ist weiterhin folgendes Maschinenprogramm, as einen Speicherbereich<br />
kopiert. Es wird angenommen, dass<br />
• r0 die Anfangsadresse des Speicherbereichs enthält, der kopiert werden soll,<br />
• r1 die Länge dieses Speicherbereichs (Anzahl der Speicherzellen) enthält, und<br />
• r2 die Anfangsadresse des Speicherbereichs enthält, der überschrieben werden<br />
soll.<br />
start: INC r1<br />
DEC r1<br />
JE fertig<br />
2
schleife: MOV [r0], r3<br />
MOV r3, [r2]<br />
INC r0<br />
INC r2<br />
DEC r1<br />
JNE schleife:<br />
fertig:<br />
2.2.1 Was bewirken die ersten drei Zeilen des Programms?<br />
________________________________________________________________<br />
2.2.2 Mit welchen Werten müssen die Register belegt sein, damit das Programm korrekt<br />
funktioniert bzw. wie dürfen die Register nicht vorbelegt werden?<br />
________________________________________________________________<br />
________________________________________________________________<br />
2.2.3 Wie viele Zugriffe auf den Hauptspeicher finden bei der Abarbeitung des Programms<br />
insgesamt (in Abhängigkeit von der Anfangsbelegung von r1) statt?<br />
________________________________________________________________<br />
2.3 Tragen Sie in folgende Tabelle ein, wie das ursprüngliche Assemblerprogramm<br />
aus Aufgabe 2.2. binär kodiert im Speicher abgelegt ist. Verwenden Sie dazu die<br />
Informationen aus Aufgabe 2.1.<br />
Sie können annehmen, dass das Programm ab Adresse 0x0200 im Speicher liegt.<br />
Adresse Inhalt Assemblerprogramm<br />
start: INC r1<br />
DEC r1<br />
JE fertig<br />
schleife: MOV [r0], r3<br />
3
Adresse Inhalt Assemblerprogramm<br />
fertig:<br />
MOV r3, [r2]<br />
INC r0<br />
INC r2<br />
DEC r1<br />
JNE schleife:<br />
4
Zum besseren Arbeiten nochmals die Maschinenbefehle von 2.1:<br />
OpcoMaschinendebefehl 0x01 MOV<br />
[RB]<br />
RA,<br />
0x02 MOV [RA],<br />
RB<br />
Beschreibung<br />
Kopiert das Register RA in eine Hauptspeicherzelle. Die<br />
Adresse der Hauptspeicherzelle ist im Register RB ge-<br />
speichert.<br />
Kopiert den Wert einer Hauptspeicherzelle in das Register<br />
RB. Die Adresse der Hauptspeicherzelle ist im Register<br />
RA gespeichert.<br />
0x10 JE adr Bedingter Sprung nach adr.<br />
Bedingung: das Zero Flag im Maschinenstatusregister ist<br />
gesetzt.<br />
0x11 JNE adr Bedingter Sprung nach adr.<br />
Bedingung: das Zero Flag im Maschinenstatusregister ist<br />
nicht gesetzt.<br />
0x20 INC RB Inkrementiert RB um 1 (RB = RB + 1). Die Flags des<br />
Maschinenstatusregisters werden entsprechend des<br />
Ergebnisses gesetzt.<br />
0x30 DEC RB Dekrementiert RB um 1 (RB = RB - 1). Die Flags des<br />
Maschinenstatusregisters werden entsprechend des<br />
Ergebnisses gesetzt.<br />
0x40 ADD RA, RB Addiert die Register RA und RB und speichert das Ergebnis<br />
in RB. Die Flags des Maschinenstatusregisters<br />
werden entsprechend des Ergebnisses gesetzt.<br />
2.4 Es soll nun ein Mikroprogramm entwickelt werden, das den Befehl<br />
MEMCPY RA, RB, r7<br />
mit Opcode 0x0F implementiert. Dieser implementiert das Maschinenprogramm<br />
aus Aufgabe 4.2. innerhalb eines einzigen Mikroprogramms. Vor Aufruf des Befehls<br />
muss das Register r7 mit der Länge des Speicherbereichs initialisiert werden.<br />
Die Anfangsadressen der Speicherbereiche werden in den Registern RA<br />
(Quellbereich) und RB (Zielbereich) angegeben.<br />
2.4.1 Wie viele Zugriffe auf den Hauptspeicher werden bei der Abarbeitung des Befehls<br />
MEMCPY durchgeführt?<br />
_______________________________________________________________<br />
2.4.2 Implementieren Sie den Maschinenbefehl, indem Sie dazu die Tabellen auf den<br />
Seiten 9 und 10 vervollständigen.<br />
Hinweise: o Bitte streichen Sie falsche Lösungen deutlich durch!<br />
o Bitte keine binären Werte eintragen, sondern die Abkürzungen aus<br />
Anlage II verwenden.<br />
5
Lösung Aufgabe 2.2<br />
79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39<br />
IE<br />
I3<br />
I2<br />
I1<br />
I0<br />
KMUX<br />
K15<br />
K14<br />
K13<br />
K12<br />
K11<br />
K10<br />
K9<br />
K8<br />
K7<br />
K6<br />
K5<br />
K4<br />
K3<br />
K2<br />
K1<br />
K0<br />
I2<br />
I1<br />
MEMCPY RA, RB, r7<br />
6<br />
I0<br />
I5<br />
Falls r7==0, Rücksprung nach IFETCH<br />
0F0 X X<br />
X<br />
DIS<br />
0F1 X X<br />
X<br />
DIS<br />
Kopiere RA nach r14<br />
0F2 X X<br />
X<br />
DIS<br />
Kopiere [r14], r15<br />
0F3 X X<br />
X<br />
DIS<br />
0F4 X X<br />
X<br />
DIS<br />
Kopiere r15 nach [RB]<br />
0F5 X X<br />
X<br />
DIS<br />
0F6 X X<br />
X<br />
DIS<br />
I4<br />
I3<br />
inkrementiere r14 und RB; dekrementiere r7<br />
0F7 X X<br />
X<br />
DIS<br />
0F8 X X<br />
X<br />
DIS<br />
0F9 X X<br />
X<br />
DIS<br />
Falls r7 nicht 0, springe nach 0x0F3<br />
DIS<br />
I8<br />
I7<br />
I6<br />
A3<br />
A2<br />
A1<br />
A0<br />
ASEL<br />
B3<br />
B2<br />
B1<br />
B0<br />
BSEL<br />
0FA X X X X X X X X X<br />
Rücksprung zu IFETCH<br />
0FB X X X X X X X X X<br />
DIS<br />
Interrupt Konstante Src Func<br />
Dest RA Addr RB Addr
Fortsetzung Lösung Aufgabe 2.2<br />
38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0<br />
ABUS*<br />
DBUS*<br />
I12<br />
I11<br />
I9<br />
I8<br />
I7<br />
I6<br />
CEMUE*<br />
CEM*<br />
I5<br />
I4<br />
I3<br />
I2<br />
I1<br />
I0<br />
CCEN*<br />
I3<br />
I2<br />
I1<br />
I0<br />
D11<br />
Y-<br />
CIN Schiebe- Statusregister AM2910<br />
MUX MUX steuerung Test Befehle<br />
X<br />
X<br />
X X<br />
X X<br />
7<br />
D10<br />
D9<br />
D8<br />
D7<br />
D6<br />
D5<br />
D4<br />
D3<br />
D2<br />
D1<br />
D0<br />
BZ_LD*<br />
BZ_ED*<br />
BZ_INC*<br />
BZ_EA*<br />
IR_LD*<br />
MWE*<br />
HHHHH<br />
HHHHH<br />
X CONT X<br />
HHHHH<br />
X X X CONT<br />
X<br />
HHHHH<br />
X X X CONT X<br />
HHHHH<br />
X X X CONT<br />
X<br />
HHHHH<br />
X X X CONT X<br />
HHHHH<br />
X X X CONT<br />
X<br />
HHHHH<br />
X X X CONT X<br />
HHHHH<br />
X X CONT<br />
X<br />
HHHHH<br />
P<br />
X X X CJP<br />
S<br />
Direktdaten<br />
IFETCH<br />
HHHHH<br />
HHHHH
Aufgabe 3 Rechnerunterstützter Schaltungsentwurf<br />
Achtung: Die beiden Aufgaben 3.1 und 3.2 können unabhängig gelöst werden!<br />
1) Für einen fiktiven Mikroprozessor wird eine Komponente benötigt, die bedingte<br />
Sprünge ermöglicht.<br />
Gegeben:<br />
Die ALU des Prozessors erzeugt nach jeder Berechnung folgende Ausgangssignale:<br />
- ZF (Zero): 1 wenn Ergebnis gleich 0, ansonsten 0<br />
- SF (Sign): 1 wenn Ergebnis negativ, ansonsten 0<br />
- CF (Carry): 1 wenn Übertrag aus der obersten Stelle=1, ansonsten 0<br />
- OF (Overflow): 1 wenn ein Überlauf aufgetreten ist, ansonsten 0<br />
Im Instruktionsword des bedingten Sprungs sind 3 Bit für die Bedingung (CC)<br />
enthalten. Diese sind wie folgt definiert:<br />
CC2 CC1 CC0 Kürzel Sprung wenn<br />
0 0 0 E (equal) ZF = 1<br />
0 0 1 NE (not equal) ZF = 0<br />
0 1 0 L (less) SF = 0<br />
0 1 1 LE (less or equal) ZF = 1 oder SF = 0<br />
1 0 0 C (carry) CF = 1<br />
1 0 1 NC (no carry) CF = 0<br />
1 1 0 O (overflow) OF = 1<br />
1 1 1 NO (no overflow) OF = 0<br />
(Hinweis: Das Kürzel ist nur zur Vergleichbarkeit mit anderen rozessoren und<br />
für die eigentliche Aufgabenstellung nicht relevant.)<br />
Um festzulegen, wann überhaupt ein gültiger Bedingungscode CC an-liegt, ist<br />
noch ein zusätzliches Signal CC_VALID vorhanden.<br />
Es soll nun eine Schaltung "CHECK_CC" entwickelt werden, die anhand der<br />
Flags und des Bedingungscodes ein Ausgangssignal CC_JUMP er-zeugt, das<br />
nur dann 1 wird, wenn der Sprung ausgeführt werden soll und CC_VALID den<br />
Wert 1 hat.<br />
Ansonsten soll CC_JUMP den Wert 0 haben.<br />
8
3.1.1 Beschreiben Sie die Anschlüsse dieser Schaltung als VHDL-Entity. Benutzen<br />
Sie bitte nur die vorgegebenen Signalnamen.<br />
Lösung:<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
3.1.2 Erstellen Sie die VHDL-Architecture von CHECK_CC mit Concurrent Statements.<br />
Lösung:<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
9
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
3.2 Im folgenden soll eine vereinfachte Ablaufsteuerung für einen Kaffeeautomaten<br />
entwickelt werden. Der Automat kann je nach gewünschter Kaffeestärke zwei<br />
verschiedene Mengen Kaffeepulver mahlen, brüht diesen Kaffee und gibt und<br />
anschließend auf Wunsch aufgeschäumte Milch hinzu.<br />
Alle Vorgänge im Automat werden aus einem gleichmäßigen Takt CLK mit der<br />
Periode t gesteuert.<br />
Der Automat besitzt folgende Eingabesignale:<br />
START: Startet mit '1' den Zubereitungsvorgang<br />
STRONG: '0' normale Kaffepulvermenge, mit '1' doppelte Pulvermenge<br />
MILK: '1' zusätzlich Milchschaum<br />
START wird nur kurzzeitig '1', die beiden anderen Signale sind danach<br />
während des gesamten Vorgangs stabil.<br />
Zur Steuerung der Aktoren gibt es folgende Ausgänge:<br />
GRIND: '1' Kaffemühle läuft, '0' aus<br />
BREW: '1' Heisses Wasser durch das Kaffepulver pumpen, '0' aus<br />
10
STEAM: '1' Milch mit Wasserdampf aufschäumen, '0' aus.<br />
Gefordertes Zeitverhalten:<br />
Das Mahlen des Kaffeepulvers dauert je nach gewählter Stärke 1*t oder 2*t,<br />
das Aufbrühen immer 2*t, der wählbare Milchschaum immer t.<br />
3.2.1 Zeichnen Sie das Zustandsübergangsdiagramm des Kaffeeautomaten. Kennzeichnen<br />
Sie alle Übergänge und alle von '0' abweichenden Ausgangssignale!<br />
3.2.2 Erstellen Sie die VHDL-Entity dieses Automaten.<br />
Lösung:<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
11
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
3.2.3 Erstellen die VHDL Architecture dieses Automaten.<br />
Lösung:<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
12
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
13
______________________________________________________________<br />
Aufgabe 4 Schaltungslogik<br />
Gegeben ist die in Abbildung 4.1 dargestellte Schaltung mit den Eingängen E1, E2<br />
und E3. Die Ausgänge sind F1, F2 und F3.<br />
E1<br />
E2<br />
E3<br />
Abbildung 4.1<br />
>1 >1<br />
&<br />
&<br />
&<br />
&<br />
4.1 Ermitteln Sie F3 als Funktion von E1, E2 und E3<br />
Lösung:<br />
&<br />
1<br />
___________________________________________________________________<br />
___________________________________________________________________<br />
14<br />
>1 >1<br />
4.2 Ermitteln Sie F1 als Funktion von E1, E2, E3, F2 und F3<br />
Lösung:<br />
&<br />
&<br />
F1<br />
F2<br />
F3
________________________________________________________________<br />
___<br />
___________________________________________________________________<br />
___________________________________________________________________<br />
___________________________________________________________________<br />
4.3 Ergänzen Sie die zur Schaltung gehörende Wertetabelle. Sie können, soweit<br />
möglich, hierfür Ihre Ergebnisse aus den beiden vorherigen Teilaufgaben ver-<br />
E1 0 1 0 1 0 1 0 1<br />
E2 0 0 1 1 0 0 1 1<br />
E3 0 0 0 0 1 1 1 1<br />
F1<br />
F2<br />
F3<br />
wenden.<br />
4.4 Ermitteln Sie für F1 die konjunktive Normalform<br />
Lösung:<br />
F1 = ______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
4.5 Ermitteln Sie für F2 die disjunktive Normalform<br />
Lösung:<br />
15
F2 =<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
4.6 E1, E2 und E3 zeigen Fehler in einem System an.<br />
Hierbei gilt: Ei (iX1,2,3) = 1: Fehler liegt vor.<br />
F1, F2 und F3 zeigen die Anzahl der Fehler an.<br />
Tragen Sie die richtigen Werte (0 oder 1) in die Tabelle ein.<br />
0 Fehler<br />
1 Fehler<br />
2 Fehler<br />
3 Fehler<br />
F1 F2 F3<br />
4.7 Die Schaltung soll durch einen Ausgang F0 ergänzt werden. Erstellen Sie die<br />
Funktionalität für die Größe F0 als Funktion von E1, E2 und E3. Hierzu darf nur<br />
ein Gatter mit einer der Grundfunktionen UND, ODER, NAND oder NOR mit<br />
drei Eingängen und einem Ausgang verwendet werden.<br />
Lösung:<br />
F0 = ______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
______________________________________________________________<br />
16
______________________________________________________________<br />
17