Hardware Reference
In-Depth Information
( (1) - wie opc_srl, nur dass das führende Bit, das in der Zweierkomplementdar-
stellung das Vorzeichen beschreibt, seinen Wert behält, vgl. Abschnitt 2.6.7).
Die Basisoperationen zur Nachbildung aller logischen Operationen sind die be-
reits definierten Verschiebeoperatoren zur Verdopplung und Halbierung, das
bitweise UND, das bitweise ODER, die bitweise Invertierung und das bitweise
EXOR:
constant opc_not:tOpcode:= "1010" ; -- Invert. R(A):=not(R(B))
constant opc_and:tOpcode:= "1011" ; -- UND R(A):=R(A) and R(B)
constant opc_or: tOpcode:= "1100" ; -- ODER R(A):=R(A) or R(B)
constant opc_xor:tOpcode:= "1101" ; -- EXOR R(A):=R(A) xor R(B)
Die beiden verbleibenden freien Codes werden für die Operationen benötigt,
die das Rechenwerk bei den Nicht-Verarbeitungsbefehlen ausführen soll. Zum
Laden einer Konstanten und zum Speichern der Rücksprungadresse ist der
Wert aus dem Operandenregister »OReg_A« in der Ausführungsphase un-
verändert an das Ergebnisregister weiterzureichen, ohne Flags zu verändern.
Dafür wird folgender Operationscode vereinbart:
constant sopc_mov:tOpcode:= "1110" ;
Für die Lade- und Speicherbefehle sind in der Ausführungsphase die Werte
der Operandenregister zu addieren, ohne die Flags zu verändern. Dafür wird
folgender Operationscode vereinbart:
constant sopc_add:tOpcode:= "1111" ;
Die Bitanzahl der Operanden und des Ergebnisses ist mit acht festgelegt und
hat den Typ »tDaten«. Zur Verkettung arithmetischer Operationen und zur
Auswertung als Sprungbedingungen soll unser Prozessor folgende Flags erhal-
ten:
• ein Übertrags-Flag »cy« (carry) für die Addition und Subtraktion vorzei-
chenfreier Zahlen,
• ein Vorzeichen-Flag »s« (
ign) für vorzeichenbehaftete Ergebnisse und
• das Zero-Flag »z«, das gesetzt wird, wenn das Ergebnis null ist.
s
Das Vorzeichen- und das Zero-Flag beschreiben zusammen, ob das vorherige
Ergebnis größer, größer gleich, gleich etc. null war. Alle drei Flags bilden einen
Verbund:
type tFlags is record
cy:std_logic; -- Uebertrags- (carry-) Flag
z: std_logic; -- Zero-Flag
s: std_logic; -- Vorzeichen- (sign-) Flag
end record ;
Das Operationsergebnis, das aus den Flags und dem Ergebnisbyte besteht, ist
gleichfalls ein Verbund:
Search WWH ::




Custom Search