--========================================================== -- Design units : MATRIXbehave -- (entity, architecture and configuration) -- -- File name : MATRIXbehave.vhd -- -- Purpose : specification of the 2 dim systolic benchmark -- -- Limitations : n > 30 integer range -- -- Library : WORK -- -- Dependencies : IEEE -- -- Author : Hans-Peter Eich, REFT -- -- Simulator : Synopsys V3.1a on SUN SPARCstation 10 -- ----------------------------------------------------------- -- Revision list -- Version Author Date Changes -- -- V1.0 hpe 03.04.95 ESA standard -- V2.0 cjt 31.08.95 1-dimensional Arrays --========================================================= LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE work.MATRIXpack.all; ENTITY MATRIXbehave IS GENERIC(E: Positive := 4); -- E matrix length PORT(A : IN INT_vector (E*E-1 DOWNTO 0); -- Input Matrix A B : IN INT_vector (E*E-1 DOWNTO 0); -- Input Matrix B P : OUT INT_vector (E*E-1 DOWNTO 0));-- Output Matrix P END MATRIXbehave; --============================ARCHITECTURE================== ARCHITECTURE Behavior OF MATRIXbehave IS BEGIN main : PROCESS (A,B) VARIABLE C: INT_vector (E*E-1 DOWNTO 0); VARIABLE I,J,K: NATURAL; BEGIN I := 0; Loop0: WHILE I < E LOOP J := 0; Loop1: WHILE J < E LOOP C(I*E+J) := 0; K := 0; Loop2: WHILE K < E LOOP C(I*E+J) := C(I*E+J) + A(I*E+K) * B(K*E+J); K := K + 1; END LOOP Loop2; J := J + 1; END LOOP Loop1; I := I + 1; END LOOP Loop0; P <= C; END PROCESS; END Behavior; --============================CONFIGURATION================= CONFIGURATION MATRIXbehave_DefaultConfig OF MATRIXbehave IS FOR Behavior END FOR; END MATRIXbehave_DefaultConfig;