Sie sind auf Seite 1von 9

Risc Processor

Teil 1(programmzähler und Instruction


memory)
Einführung :
Hier geht es um die Modellierung eines RISC-Prozessors mittels VHDL und eine
strukturelle Beschreibung. Im folgenden Bild sieht man die verschiedenen Bauteile des
RISC-V-Prozessorkerns (Im code war der Prozessorkern als die Entity Full_prozesor
genannt)

Bild 1: Struktur des Prozesorkerns

Im Bild 1 werden die internen Bauteile des Kerns gegeben wobei die Karkasse Datapath
(im rot markiert) drei weitere Elemente besitzt ,der Addierer der die Befehlsadresse von
Programzaehler bekommt ,um 4 inkrementiert und dann an dem Multiplexer übergibt,
der Multiplexer weil sein Port pc_select auf 1 immer gesetzt ist, leitet die inkrementierte
Adresse an dem Program_zaehler also funktioniert das ganze Ding als Schleife bis der
Controller den Port“ load_pc“ auf 0 setzt.

Im Karkasse von Full_prozesor ist die Entity Data_path integriert ,sie erzeugt die Adresse
von dem zu durchführenden Befehl und der Memory Risc bekommt diese Adresse und
leitet den entsprechenden Befehl an dem Ausgang der Karkasse und an dem Kontroller
der in dem Fall dass der Op_code Null ist, das Port load_pc auf 0 setzt.

Simulation :

Bild 2: Simulation von Full_prozesor (Teil 1)

Bild 3: Simulation von Full_prozesor (Teil 2)

Der Memory RISC hat Folgenden Befehle drin:

Adr. 0: x"00f06213"

Adr. 4: x"00f00093"

Adr. 8: x"00108133"

Adr. 12: x"0020c1b3"

Adr. 16: x"00f06213“

Im Bild 2 oben kriegen die gleichen Adressen hintereinander und synchron mit der steigenden
Flanke von dem Takt, weil der Program_zaehler takt-gesteuert ist!!
Im Bild 3 wird der Port reset aktiviert, daher wird der Inhalt von Program_zaehler auf 0 gebracht
und wir zählen wieder von Anfang an, aus diesem Anlass erhalten wir erneut die gleichen
Adressen wie im Bild 2 (Adressen 0 bis Adresse 8).
Risc Processor
Teil 2(RRR-und RRI Befehle)
Einführung :
Wir behandeln an dieser Stelle die Modellierung des gesamten RISC-Prozessors mittels
VHDL. Im folgenden Bild sehen wir die strukturelle Beschreibung des RISC-V-Prozessor mit
seinem Rechenwerk (Im code ist das als Entity complete genannt).

Bild 4: Struktur von RISC-V-Prozessor mit seinem Rechenwerk

Das Bild zeigt die Entity complete,die die entities Process und inst_memory beinhaltet:
➢ Die Entity Process: besteht aus datapath_zwei,die als das Rechenwerk arbeitet indem
es den Befehl bekommt von Inst_memory,dieser Befehl bestimmt die von der alu zu
verwendenden Registern. Und die Entity controller_allgemein,die auch den Befehl von
inst_memory bekommt und basierend darauf kontrolliert das Rechenwerk um die zu
dem gekriegten Befehl passenden Operation zu realisieren danach wird die
Operationsergebnis in einem Register von dem Memory register _file gespeichert.
➢ Die Entity inst_memory: verfügt über die Befehlsspeicher RISC und program_zaehler ,der
Zähler enthält die Adressen der Befehle die dann von RISC geholt und an der Entity
processor übergeben werden, zwecks die zu dem Befehl entsprechenden Operation zu
realisieren

Simulation :

Bild 5: Simulationserbnis von dem RISC-Prozessor mit Rechenwerk

In der Simulation bezeichnet das Signal Operation_result das Ergebnis von jeder Operation
realisiert in der Alu und symbolisiert das Signal command_adress,die adressen der
durchzuführenden Befehle und diese Befehle sind:

Adr. 0: x"00f06213"

Adr. 4: x"00f00093"

Adr. 8: x"00108133"

Adr. 12: x"0020c1b3"

Adr. 16: x"00f06213"

Adr. 16 bis 31: x"00000000"

▪ Der erste Befehl im Simulation x"00f06213" ist vom Typ RRI und bezeichnet die folgende
Operation: r4 <-15 or r0. Da der momentane Wert von dem Register r0 ist 1 das heißt man
bekommt als Ergebnis die Hexadezimale Zahl F.

▪ Der zweite Befehl im Simulation x"00f00093" ist auch vom Typ RRI und bezeichnet die folgende
Operation: r1 <-15 + r0. Da der momentane Wert von dem Register r0 ist immer noch 1 das
heißt man bekommt als Ergebnis die Hexadezimale Zahl 10.

▪ Der dritte Befehl im Simulation x"00108133" ist vom Typ RRR und bezeichnet die folgende
Operation: r2 <-r1 + r1. Da der Wert von dem Register r1 wegen der vorherigen Operation eine
hexadezimale 10 geworden ist , heißt das dass man bekommt als Ergebnis die Hexadezimale
Zahl 20.
▪ Der vierte Befehl in der Simulation x"0020c1b3"ist vom Typ RRR und bezeichnet die folgende
Operation: r3 <-r2 xor r1. Da der Wert des Registers r1 momentan eine hexadezimale 10
Und der Wert vom Register r2 eine hexadezimale 20 ist, heißt das, dass man als Ergebnis die
Hexadezimale Zahl 30 bekommt.

▪ Der fünfte Befehl in der Simulation ist wieder x"00f06213" vom Typ RRI und bezeichnet die
folgende Operation: r4 <-r0 or 15. Da der Wert von dem Register r0 immer noch 1 ist, heißt
das, dass man als Ergebnis die Hexadezimale Zahl F bekommt.

Das könnte Ihnen auch gefallen