Hardware Reference
In-Depth Information
when opc_add => tmp := ( '0' &a)+b+F.cy; 8
when opc_inc => tmp := ( '0' &b)+ '1' ;
when opc_sub => tmp := ( '0' &a)-b-F.cy;
when opc_dec => tmp := ( '0' &b)- '1' ;
when opc_neg => tmp := ( not ( '0' &b))+ '1' ;
-- Verschiebe- und Rotationsbefehle
when opc_sll => tmp := b & '0' ;
when opc_srl => tmp := b( 0 ) & '0' & b(b'high downto 1 );
when opc_sra => tmp := b( 0 ) & b(b'high)&b(b'high downto 1 );
when opc_rol => tmp := b & F.cy;
when opc_ror => tmp := b( 0 ) & F.cy & b(b'high downto 1 );
when others
=> tmp := ( others => 'X' );
end case ;
-- Ergebnis- und Flag-Zuweisungen
y.Wert := tmp(tmp'high-1 downto tmp'low);
y.F.cy := tmp(tmp'high);
y.F.s := tmp(tmp'high- 1 );
if tmp(tmp'high-1 downto tmp'low)= x"00" then y.F.z := '1' ;
elsif not is_x(tmp) then y.F.z := '0' ;
else y.F.z := 'X' ;
end if ;
end case ;
return y;
end function ;
)
WEB-Projekt:P5.4/RISC_pack.vhdl
5.4.7 Test des Rechenwerks
Das Funktionsmodell des Rechenwerks ist so umfangreich, dass es einen ei-
genen Testrahmen benötigt. Für einen gründlichen Test empfiehlt sich ein
Pseudo-Zufallstest. Ein Pseudo-Zufallstest wählt die Testbeispiele unvorein-
genommen aus [29]. Der hier entwickelte Testrahmen verwendet die »unreine«
Funktion »rand(...)« aus dem Package »Tuc.Zufallstest«
impure function rand(xVec:std_logic_vector; px: tWeight:= 0.0 )
return std_logic_vector;
für die pseudo-zufällige Auswahl der Eingabewerte für die beiden Operan-
den und den Operationscode. Die Funktion erzeugt einen Bitvektor vom Typ
std_logic_vector mit der Länge des übergebenen Vektors
und be-
schreibt seine einzelnen Bits mit einer Wahrscheinlichkeit p x = 0;003, die
als Aufrufparameter übergeben wird, mit »X« und je mit einer Wahrschein-
lichkeit von (1 p x ) =2 mit »0« bzw. »1«. Der Wert des Übertragsbits wird
mit der Funktion
8 Die hier verwendeten Operatorfunktionen für die Addition und die Subtraktion
mit den Operandentypen std_logic_vector und std_logic sind im Package
P5.4/RISC_pack.vhdl definiert.
x
 
Search WWH ::




Custom Search