Mikrooperationen < Technische Inform. < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Aufgabe | Gegeben ist der folgende Datenpfad (schwarz gedruckt):
[Dateianhang nicht öffentlich]
R0 bis R7 sind positiv flankengesteuerte 8-Bit Register. Jedes dieser Register besitzt ein load-Signal, das in dem Bild jedoch nur grau angedeutet ist (load-Signale). Ist dieses load-Signal für ein Register eins, dann speichert das entsprechende Register bei einer steigenden Taktflanke den am Eingang anliegenden Wert. Die ALU ist eine kombinatorische Logik, die für zwei 8 Bit Eingangswerte x und y am Ausgang den Wert x + y erzeugt, falls das Signal alu = 0 ist, oder den Wert x + y + 1, falls das Signal alu = 1 ist. Dadurch sind in diesem Datenpfad die Mikrooperationen Ra <= Rb + Rc und Ra <= Rb + Rc + 1 für a, b, c ∈ {0,…,7} zulässig. Tritt bei der Addition zweier 8-Bit-Werte in der ALU ein Übertrag auf, so wird dieser in einem 1-Bit-Statusregister gespeichert. Der Wert dieses Statusregisters wird der Steuerlogik über das Signal carry bereitgestellt.
(a) Geben Sie eine Mikroprogrammsequenz zur Addition zweier 32-Bit-Werte an, die in 4 Takten abgearbeitet werden kann. Die zu addierenden Werte sind in den Registern R0 bis R3 und R4 bis R7 gespeichert, wobei die niederwertigsten 8 Bit in den Registern R0 bzw. R4 stehen und die höchstwertigen 8 Bit in den Registern R3 bzw. R7. Das Ergebnis soll in den Registern R0 bis R3 gespeichert werden. |
Hallo!
Könnte mir jemand die ersten eins, zwei Schritte erklären, wie ich da ran gehen kann?
Vielen Dank schonmal.
glg
Kalia
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:23 Di 20.09.2011 | Autor: | geograf |
Hallo Kalia!
Mit dieser Infrastruktur kann die Addition in vier hintereinanderliegenden Schritten erledigt werden:
1.) Berechne R0+R4 und speichere in R0
2a) Falls Übertrag (carry) gleich 0, berechne R1+R5 und speichere in R1
2b) Falls Übertrag gleich 1, berechne R1+R5+1 und speichere in R1
3a,3b,4a,4b wie oben.
Die Mikroprogrammsequenz ist dann die Übersetzung dieses Algorithmus in Ausgangssignale der Steuerlogik (mux1, mux2,load0 bis load3, alu) in Abhängigkeit von den Eingangssignalen (Taktzähler, carry). Sie wird letztlich in einem ROM oder FPGA abgebildet.
Gruß,
Geograf
|
|
|
|
|
Hallo und Danke dir schonmal. =)
Ich habe trotzdem dazu noch ein paar Fragen.^^ ...bzw die Bitte um Korrektur...
Also ich habe das jetzt erstmal folgendermaßen verstanden:
T1: R0 <= R0+R4
T2: IF (carry=0) THEN (R1 <= R1+R5) ELSE (R1 <= R1+R5+1)
T3: IF (carry=0) THEN (R1 <= R2+R6) ELSE (R1 <= R2+R6+1)
T4: IF (carry=0) THEN (R1 <= R3+R7) ELSE (R1 <= R3+R7+1)
Ist das erstmal so korrekt?
..wenn ja, wie müsste ich dann mit den Ein- bzw. Ausgangssignalen vorfahren?
Etwa so?
load0 alu mux1 mux2 T1: R0 <= R0+R4
load1 alu mux1 mux2 T2: IF (carry=0) THEN (R1 <= R1+R5) ELSE (R1 <= R1+R5+1)
load2 alu mux1 mux2 T3: IF (carry=0) THEN (R1 <= R2+R6) ELSE (R1 <= R2+R6+1)
load3 alu mux1 mux2 T4: IF (carry=0) THEN (R1 <= R3+R7) ELSE (R1 <= R3+R7+1)
Danke dir nochmal, dass du dich so mit mir rumquälst.^^
glg
Kalia
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:20 Sa 24.09.2011 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|