Hardware Reference
In-Depth Information
Der unbedingte Sprung mit der Aufbewahrung der Rückkehradresse über-
schreibt die Zuweisung an den Befehlszähler mit dem aus dem Registersatz
gelesenen Wert, übernimmt in das Operandenregister »OReg_A« den inkre-
mentierten Befehlszählerstand und schreibt in das Operationscoderegister den
Spezialoperationscode »für unverändert weiterleiten und Flags nicht verän-
dern« (vgl. Abschnitt 5.4.3):
elsif
pp.Instr(cInstr_jmp'range)=cInstr_jmp
then
pp.PCount <= read(RegSet, pp.Instr(tInstrRB'range));
pp.OReg_A <= pp.PCount+
'1'
;
pp.OpCode <= sopc_mov;
Ein bedingter Sprung überschreibt die Standardzuweisung an den Befehlszäh-
ler nur bei erfüllter Bedingung. Wenn die Sprungbedingung ungültig ist, wird
auch der Wert des Befehlszählers ungültig. Über die Kontrollregister wird an
die RW-Phase der Code »non« für kein Ergebnis schreiben weitergegeben:
elsif
pp.Instr(cInstr_jb'range)=cInstr_jb
then
if
SprungX(pp.Instr(tInstrBed'range), pp.Ergebnis.F)
then
pp.PCount <= (
others
=>
'X'
);
elsif
Sprung(pp.Instr(tInstrBed'range), pp.Ergebnis.F)
then
pp.PCount <= read(RegSet, pp.Instr(tInstrRB'range));
end if
;
pp.Ctrl_EX <= non;
Die parameterfreien Befehle für »keine Operation« sowie für das Setzen, Lö-
schen und Invertieren des Übertragsbits schicken nur ihre Kontrollworte an
die EX- und die RW-Phase weiter. Als Nop-Befehle werden außer dem re-
servierten Befehlswort x"000" auch alle ungenutzten gültigen Befehlscodes
interpretiert:
elsif
pp.Instr=cInstr_set_cy
then
pp.Ctrl_EX <= setc;
elsif
pp.Instr=cInstr_clr_cy
then
pp.Ctrl_EX <= clrc;
elsif
pp.Instr=cInstr_cpl_cy
then
pp.Ctrl_EX <= cplc;
elsif not
is_x(pp.Instr);
then
pp.Ctrl_EX <= non;
Bei einem ungültigen Befehlswort werden alle Registerinhalte, die aus diesem
gebildet werden, ungültig:
else
pp.OReg_A <= (
others
=>
'X'
); pp.OReg_B <= (
others
=>
'X'
);
pp.Opcode <= (
others
=>
'X'
); pp.ARegY1 <= (
others
=>'X');
pp.Ctrl_EX <= XX;
end if
;
Datenfluss in der Ausführungsphase (EX)
In der Ausführungsphase (EX) wird die Zuweisung an das Ergebnisregister
vom Kontrollwert im Register »Ctrl_EX« gesteuert. Für die Kontrollwer-
te zur Manipulation des Übertrags-Flags wird nur dieses verändert. Für den