04.03.2013 Aufrufe

Endterm WS 08/09 Angabe - LRR

Endterm WS 08/09 Angabe - LRR

Endterm WS 08/09 Angabe - LRR

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!