VU Technische Grundlagen der Informatik Übung 5: ikroprozessor (icro16) 183.579, 2014W Übungsgruppen: o., 01.12. i., 03.12.2014 Aufgabe 1: Schaltwerksentwicklung Hexapod / Teil 2 a) Befüllen Sie die untenstehende Tabelle für Übergangs- und Ausgangsfunktion des ealy-automaten aus Aufgabe 8 a) von Übung 4. Verwenden Sie für die Zustände nebenstehende dichte Zustandscodierung! Die Tabelle soll in weiterer Folge als Basis für die Programmierung eines O-Bausteins dienen. Lösen Sie daher Don t Cares auf und geben Sie in der Zeile O an, wie Sie die Signalleitungen den O-Anschlüssen zuordnen! Zustand Z Bereit 0 Fehler 1 O Z G F Z V D L 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 b) Zeichnen Sie die Gesamtschaltung des Hexapods! Übergangs- und Ausgangsfunktion sollen mit einem O-Baustein realisiert werden. Für die Zustandsspeicherung und Taktung (ein Wechsel zwischen Zuständen soll nur zum Takt möglich sein) ist ein Flip-Flop zu verwenden. Vergessen Sie nicht, sämtliche Signale bzw. Leitungen Ihrer Schaltung entsprechend zu beschriften!
Aufgabe 2: icro16 Architektur Wahr oder falsch? Welche Aussagen treffen zu? Begründen Sie Ihre Antwort! (1) Bei der icro16 Architektur sind Datenwörter zwei Byte lang. (2) Bei der icro16 Architektur werden ikroinstruktionen durch eine 4 Bit Adresse adressiert. (3) Alle 16 egister des egister File können zum Zwischenspeichern von Daten verwendet werden. (4) Ein Zugriff auf den externen Datenspeicher benötigt genau zwei Takte. (5) Über den mit dem emory Buffer egister (B) verbundenen Adress-Bus kann ein A-Speicher angeschlossen werden. (6) Die icro Sequencing Logic kann bedingte und unbedingte Sprünge ausführen, indem Sie den Folgewert des icro Instruction Counters bestimmt. (7) Bei einem schreibenden Zugriff auf den Speicher muss die Leitung read/write für mindestens 2 Takte im Zustand logisch 1 gehalten werden. (8) Am Ausgang C der ALU liegt genau dann logisch 1 an, wenn bei einer arithmetischen Operation ein Übertrag entsteht. (9) Bei der Operation right shift werden alle Bits des Datenwortes um eine Stelle nach rechts verschoben, an der Stelle des SB steht danach logisch 0. (10) Die Control-Unit teilt den Takt in 4 Phasen und steuert damit die Ausführung der ikroinstruktionen. Aufgabe 3: icro16 Korrektheit von Instruktionen Analysieren Sie die nachfolgenden icro16-instruktionen. Sofern Labels verwendet werden, gehen Sie davon aus, dass diese in gleicher Form definiert wurden. Kreuzen Sie korrekte Instruktionen an und begründen Sie Ihre Antwort! (1) 7 rsh(5+6) (2) 5 6+ 7 (3) 8 lsh( (-1)) (4) 9 FFF1 (5) 0 1+1+2 (6) PC 2+(-1) (7) 3 4*5 (8) goto.4 (9) (3 2); if C goto.zeile128 (10) (B); if Z goto 999 (11) B 1; 5 0+1 (12) A 1; B 0+1; 2 0+1; wr
Allgemeiner Hinweis: Speziell für diese Aufgabe und die nachfolgenden Implementierungsaufgaben steht Ihnen optional ein icro16-simulator im TUWEL-Kurs zur Verfügung. Details zur Handhabung entnehmen Sie bitte den Dokumenten im TUWEL-Abschnitt icro16. Für die Implementierungsaufgaben (Aufgaben 6 bis 8) gibt es eine zusätzliche TUWEL-Aktivität Hochladen icro16-code, in der bei Verwendung des Simulators bis zu zwei Zusatzpunkte erreicht werden können (für Details siehe Aktivität). Sämtliche Aufgaben können aber auch ohne Verwendung des Simulators gelöst werden! Aufgabe 4: icro16 ultiplikation Entnehmen Sie Ihrer atrikelnummer die beiden Zahlen x und y wie folgt: x entspricht der 2., 4. und 6. Stelle, y der 5. und 7. Stelle Ihrer atrikelnummer. Beispiel: Für die atrikelnummer 1234567 ist somit x = 246 und y = 57. a) Wandeln Sie die Zahlen x und y ins Binärsystem um! b) Stellen Sie die beiden Zahlen in Zweierkomplementdarstellung dar! Verwenden Sie dabei die Datenwortlänge des icro16. c) Konstruieren Sie die beiden Zweierkomplement-Zahlen durch möglichst wenige icro16-instruktionen und legen Sie diese in egister 5 (x) bzw. 6 (y) ab! Sie können auf die Konstanten 0, +1, 1 direkt zugreifen. Geben Sie Ihre Instruktionen in symbolischer Notation an: 5 lsh(1+1) # lege (+4) 10 in 5 ab 5 lsh(5+1) # überschreibe 5 mit (+10) 10 d) Führen Sie anschließend den nachfolgenden Programmcode mit Ihren Werten für 5 und 6 aus. Geben Sie die Inhalte der egister 5 und 6 immer zum Zeitpunkt von loop: (2. Programmzeile) in Binärdarstellung in untenstehender Tabelle an! Sobald das Programm terminiert, lassen Sie nachfolgende Zeilen leer. Hinweis: Im TUWEL-Kurs steht der Programmcode als ultiplikation UE.txt zur Verfügung. 7 0 # loop: (6 1); if Z goto zero # 7 7+5 # zero: 6 rsh(6) # (6); if Z goto end # 5 lsh(5) # goto loop end: loop egister 5 egister 6 1 2 3 4 5 6 7 e) Überlegen Sie sich die Funktionsweise dieses ultiplikationsalgorithmus und ergänzen Sie entsprechende Kommentare in obigem Programmcode nach den #-Symbolen!
Aufgabe 5: icro16 Analyse von Hex-Code Gegeben ist der folgende icro16-code in hexadezimaler Notation: 04 1D 02 00 18 1D 0D 00 10 1C DE 00 02 1E 0E 00 40 00 0C 06 08 1E 1E 00 a) Übersetzen Sie die Instruktionen in binären icro16-code! A U X CO ND ALU SH B A D/ W S E N S S- B- A- AD b) Geben Sie die Instruktionen in symbolischer Notation (vgl. Aufgabe 4) an! Die Adressierung der egister und der Konstanten erfolgt in Anlehnung an die Architektur der Vorlesung wie folgt: egister Adresse 0 0000 +1 0001-1 0010 0 0100 1 0101...... 10 1110 c) Welche Funktion wird durch Ausführung dieser ikroinstruktionen realisiert? Aufgabe 6: icro16 Implementierung einer Bit-Sortierung Schreiben Sie ein icro16-programm, das eine in egister 0 abgelegte Bitfolge wie folgt sortiert: Alle enthaltenen Nullen sollen rechts angeordnet werden, alle enthaltenen Einsen links. Beispiel: 0 vor Programmausführung: 00100101 00001100 0 nach Programmausführung: 11111000 00000000
Aufgabe 7: icro16 Implementierung Nichtinvertierender ingzähler Entwerfen Sie ein icro16-programm für einen rechtslaufenden, nichtinvertierenden ingzähler. Bei dieser Form eines Schieberegisters wird der ursprüngliche Wert des niederwertigsten Bits (lsb) eines egisters auf das höchstwertige Bit (msb) desselben egisters übertragen, nachdem alle anderen Bits dieses egisters um eine Stelle nach rechts verschoben wurden. Beispiel: Ist die Bitfolge 10000000 00000011, so lautet das Ergebnis nach einem Schritt 11000000 00000001. 1 1 Die zu schiebende Bitfolge liegt in egister 0. Die Anzahl auszuführender Schiebeoperationen ist in egister 1 abgelegt. Nach jedem Schiebeschritt soll außerdem der aktuelle egisterinhalt auf die Speicheradresse (7F F F ) 16 geschrieben werden.. Aufgabe 8: icro16 Implementierung eines ealy-automaten Gegeben ist der folgende Automat mit 1 Bit Eingabe und 2 Bit Ausgabe: Start 1/00 0/10 Z 0 BZ 10 1/11 1/10 0/10 Notation: BZ 30 1/11 BZ 20 0/01 Z i e/a 1 a 2 0/01 Entwerfen Sie ein icro16-programm, das dieselbe Funktion wie der gegebene Automat ausführt. Das Programm soll eine 16 Bit lange Eingabefolge aus dem egister 0 von links (msb) nach rechts (lsb) lesen. Die Ausgabe soll jeweils von rechts (lsb) nach links (msb) in die egister 1 (Bit a 1 ) und 2 (Bit a 2 ) nachgeschoben werden. Beispiel: 0: 10001011 01011111 1: 01101010 11010000 2: 00011100 01100000