--========================================================== -- Design units : MinMaxBehave (Entity,Architecture) -- -- File name : MinMax_Behave.vhd -- -- Purpose : Behavioral description as specification -- of a MinMax-Circuit -- -- Limitations : -- -- Library : WORK -- -- Dependencies : -- -- Author : Claus-Juergen Thomas, REFT -- -- Simulator : Synopsys V3.1a on SUN SPARCstation 10 -- ----------------------------------------------------------- -- Revision list -- Version Author Date Changes -- -- v1.0 cjt 13.12.95 new --========================================================= LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY MinMaxBehave IS GENERIC(M: positive := 4); PORT(DataIn : IN integer; Clear : IN std_logic; Reset : IN std_logic; Enable : IN std_logic; Clk : IN std_logic; DataOut : OUT integer); END MinMaxBehave; --===========================ARCHITECTURE================= ARCHITECTURE Behavior OF MinMaxBehave IS BEGIN main : PROCESS(Clear,Enable,Reset,Clk) VARIABLE Minimum,Maximum,Last,MinMax,TempDataIn,TempDataOut,Sum: INTEGER; BEGIN IF Clear = '1' THEN TempDataOut := 0; ELSE IF Enable = '0' THEN TempDataOut := Last; ELSE IF Reset = '1' THEN TempDataOut := TempDataIn; ELSE TempDataOut := MinMax; END IF; END IF; END IF; IF Reset = '0' AND Reset'event THEN Minimum := 2**16; Maximum := -2**16; END IF; IF Clk = '1' AND Clk'event THEN TempDataIn := DataIn; IF Enable='1' THEN Last := TempDataIn; END IF; IF Reset = '0' AND Clear = '0' AND Enable = '1' THEN IF TempDataIn < Minimum THEN Minimum := TempDataIn; END IF; IF TempDataIn > Maximum THEN Maximum := TempDataIn; END IF; -- Computation of mean value Sum := Minimum + Maximum; MinMax := Sum/2; TempDataOut := MinMax; END IF; END IF; DataOut <= TempDataOut; END PROCESS; END Behavior;