Hardware Reference
In-Depth Information
und eine Konstante für die Tabellenüberschrift definiert, mit denen zusammen
eine Ausgabe in der folgenden Form erzeugt werden kann:
|PC|| Instr ||ORA|ORB|ORY1|OpCode|CtrlEX||Ergebnis|CtrlRW|ORY2||r0r1r2r3r4r5r6r7|
|00||ungueltig ||XX|XX|XX| XX| xx||XX:cUsUzU| xx|XX||XXXXXXXXXXXXXXXX|
|01||initr0,23 ||XX|XX|XX| XX| xx||XX:cXsXzX| xx|XX||XXXXXXXXXXXXXXXX|
|02||initr1,34 ||23|XX|r0|smov| wr||XX:cXsXzX| xx|XX||XXXXXXXXXXXXXXXX|
|03||initr2,45 ||34|XX|r1|smov| wr||23:cXsXzX| wr|r0||XXXXXXXXXXXXXXXX|
|04||initr3,56 ||45|XX|r2|smov| wr||34:cXsXzX| wr|r1||23XXXXXXXXXXXXXX|
|05||initr4,67 ||56|XX|r3|smov| wr||45:cXsXzX| wr|r2||2334XXXXXXXXXXXX|
|06||initr5,78 ||67|XX|r4|smov| wr||56:cXsXzX| wr|r3||233445XXXXXXXXXX|
|07||initr6,89 ||78|23|r5|smov| wr||67:cXsXzX| wr|r4||23344556XXXXXXXX|
|08||initr7,a0 ||89|34|r6|smov| wr||78:cXsXzX| wr|r5||2334455667XXXXXX|
||a0|23|r7|smov| wr||89:cXsXzX| wr|r6||233445566778XXXX|
|09||clrcy
|0a||addr1,r0 ||45|23|r2| add|clrc||a0:cXsXzX| wr|r7||23344556677889XX|
|0b||subr2,r3 ||34|23|r1| add| wr||a0:c0sXzX|clrc|r2||23344556677889a0|
|0c||subr1,r1 ||45|56|r2| sub| wr||57:c0s0z0| wr|r1||23344556677889a0|
|0d||nop ||34|34|r1| sub| wr||ef:c1s1z0| wr|r2||23574556677889a0|
|0e||nop ||23|23|r0| add|non||ff:c1s1z0| wr|r1||2357ef56677889a0|
|0f||incr2,r1 ||23|23|r0| add|non||ff:c1s1z0|non|r0||23ffef56677889a0|
|10||nop ||ef|ff|r2| inc| wr||ff:c1s1z0|non|r0||23ffef56677889a0|
|11||nop ||23|23|r0| add|non||00:c1s0z1| wr|r2||23ffef56677889a0|
|12||st@(r2+0),r0||23|23|r0| add|non||00:c1s0z1|non|r0||23ff0056677889a0|
|13||st@(r2+1),r1||00|00|r0|sadd| st||00:c1s0z1|non|r0||23ff0056677889a0|
|14||st@(r2+2),r2||01|00|r1|sadd| st||00:c1s0z1| st|r0||23ff0056677889a0|
|15||st@(r2+3),r3||02|00|r2|sadd| st||01:c1s0z1| st|r1||23ff0056677889a0|
|16||jmpr3,r2 ||03|00|r3|sadd| st||02:c1s0z1| st|r2||23ff0056677889a0|
|00||nop ||17|00|r3|smov| wr||03:c1s0z1| st|r3||23ff0056677889a0|
|01||initr0,23 ||23|23|r0| add|non||17:c1s0z1| wr|r3||23ff0056677889a0|
|02||initr1,34 ||23|56|r0|smov| wr||17:c1s0z1|non|r0||23ff0017677889a0|
|03||initr2,45 ||34|67|r1|smov| wr||23:c1s0z1| wr|r0||23ff0017677889a0|
Der eigentliche Testrahmen für die Übergangsfunktion ist relativ einfach auf-
gebaut. Er definiert eine Konstante T P für die Dauer eines Pipeline-Schritts,
je eine Konstante für den Befehlsspeicher und den Konstantenspeicher und
je ein Signal für das Pipeline-Objekt, den Registersatz und den Datenspei-
cher. Aus der Zeitkonstanten wird in den nachfolgenden Entwurfsschritten
die Taktperiode. Der Befehlsspeicher wird mit einer Befehlsfolge initialisiert
und der Konstantenspeicher mit Beispielkonstanten. Der Pipeline-Zustand,
der Inhalt des Registersatzes und der Inhalt des Datenspeichers sind zum
Simulationsbeginn bis zu ihrer Initialisierung ungültig:
constant tp:delay_length:= 10ns ;
signal pp: tPipeline;
signal RegSet: tDatMem( 0 to 7 );
constant InstrMem: tInstrMem( 0 to 30 ):=(
0 => '1' & x"23" & "000" , -- init r0,23
...);
signal DatMem: tDatMem( 0 to 30 );
constant KonstMem: tDatMem( 0 to 30 ):= ( 0 => x"1a" , others => x"00" );
Der Prozess des Testrahmens initialisiert den Befehlszähler des Pipeline-
Objekts mit dem Wert null und ruft in einer Schleife die Prozedur mit der
Übergangsfunktion des Prozessors immer wieder auf. Vor der Schleife wird
einmal der Text mit der Tabellenüberschrift und nach jedem Prozeduraufruf
eine Tabellenzeile ausgegeben. Die Warteanweisungen für eine Taktperiode
 
Search WWH ::




Custom Search