Ubung 7

Werbung
Rechnerarchitektur 1
DI Alwin Zulehner
19. Mai 2016
Johannes Kepler Universität
Übung 7
Abgabe bis Donnerstag, 2. Juni 10:00 via EPIIC: http://ep.iic.jku.at.
SystemVerilog Dateien müssen vor der Abgabe in EPIIC ausgeführt werden. Dateien, die
nicht kompilieren können nicht abgegeben werden.
1. ALU Implementierung (4 Punkte)
Die in der Vorlesung vorgestellte ALU (siehe Abbildung 1) muss leicht angepasst werden, damit sie in der MIPS Architektur verwendet werden kann:
• Das Eingangscarry c soll aus dem select Signal berechnet werden (0 bei Addition
und 1 bei Subtraktion) und kein eigener Eingang sein.
• Ein zusätzlicher Ausgang zero wird benötigt, der 1 ist wenn das Resultat der
Berechnung 0 ist.
• Das MSB (most significant bit) des Ausgangs wird nicht benötig.
Vervollständige das Modul ALU in der Datei building blocks.sv um die modifizierte
ALU in SystemVerilog zu implementieren. Mit Ausnahme des enthaltenen Addierers
ist eine strukturelle Beschreibung des Moduls erforderlich.
Abbildung 1: Arithmetic Logic Unit (ALU)
2
Übung 7
2. (12 Punkte)
Ziel dieser Aufgabe ist es den MIPS Prozesor aus Abbildung 2 in SystemVerilog zu implementieren. Implementierungen der Komponenten des Datenpfades (mit Ausnahme
der ALU) sind in der Datei building blocks vorhanden und sollen im Modul mips (in
der Datei mips.sv ) zusammengefügt werden. Dazu ist auch das Modul control unit zu
vervollständigen, das die Signale zur Steuerung des Datenpfades generiert. Folgende
Instruktionen müssen unterstützt werden:
Tabelle 1: Unterstützte Instruktionen
(a) MIPS Instruktionen
OP-code
000000
000010
000100
001000
100011
101011
Name
R-Typ
j
beq
addi
lw
sw
Beschreibung
R-Typ Instruktionen
jump
Branch if equal
add immediate
load word
store word
(b) R-Typ Instruktionen
Funktionscode
100000
100010
100100
100101
100110
Name
add
sub
and
or
xor
Verwende das Modul testbench aus der Datei test sum.sv um die Implementierung zu
testen. Das Modul führt das Programm sum.s, das die Summe der ungeraden Zahlen
in einem Array addiert, auf dem MIPS Prozessor aus. Bei der Simulation wird auch
die Datei sum.dat benötigt. Diese Datei enthält das Array und dessen Länge.
3. Erweiterung des MIPS Prozessors (8 Punkte)
Erweitere den MIPS Prozessor in Abbildung 2 um die Befehle jal und jr um Funktionsaufrufe zu ermöglichen. Die beiden Befehle haben folgende Semantik:
• jal ist eine J-Typ Instruktion (OP-code = 000011) die PC+4 in Register $ra (31)
schreibt und PC auf {(PC+4)[31:28], target, 2’b0} (identisch zum Befehl j)
setzt.
• jr ist eine R-Typ Instruktion (funct = 001000) mit der Semantik PC = [rs].
Füge die Erweiterungen auch der Implementierung aus Aufgabe 2 hinzu und teste
den erweiterten Prozessor mit dem Modul testbench aus der Datei test ackermann.
Das Modul führt das Programm ackermann.s, das die Ackermann Funktion für die
Parameter 3 und 2 berechnet (siehe Übung 2), aus und überprüft das Resultat.
27:0
0
Abbildung 2: MIPS Prozessor
31:28
PCJump
1
0
1
PC’
4
PC
CLK
RD
+
PCPlus4
Instruction
Memory
A
Instr
25:0
WE3
<<2
15:0
RD2
RD1
Sign Extend
1
SignImm
RegWrite
RegDst
ALUSrc
WD3 Register
File
A3
A2
A1
CLK
Funct
WriteReg 4:0
15:11
20:16
20:16
25:21
5:0
Op
0
31:26
1
SrcB
SrcA
<<2
0
MemtoReg
Control MemtoWrite
Unit
Branch
ALUControl 2:0
ALU
+ PCBranch
Writedata
ALUResult
Zero
WE
WD
RD
Data
Memory
A
CLK
PCSrc
ReadData
Result
1
0
Jump
Übung 7
3
Zugehörige Unterlagen
Herunterladen