--========================================================== -- Design units : Arbiter_Cell_2_plus(Entity,Architecture,Configuration) -- -- File name : ArbiterCell2plus.vhd -- -- Purpose : provides arbitration for one host, generates no token! -- -- Limitations : - -- -- Library : IEEE -- -- Dependencies : ELEMpack -- -- Author : Claus-Juergen Thomas, REFT -- -- Simulator : Synopsys V3.2a on SUN SPARCstation 10 -- ----------------------------------------------------------- -- Revision list -- Version Author Date Changes -- -- v1.0 cjt 10.04.96 new --========================================================= LIBRARY IEEE; USE IEEE.std_logic_1164.all; USE work.ELEMpack.all; ENTITY Arbiter_Cell_2_plus IS PORT(req_in : IN std_logic; grant_in : IN std_logic; token_in : IN std_logic; override_in : IN std_logic; clk : IN std_logic; reset : IN std_logic; -- asynchronous reset on active low ack_out : OUT std_logic; grant_out : OUT std_logic; token_out : OUT std_logic; override_out: OUT std_logic); END Arbiter_Cell_2_plus; --============================ARCHITECTURE================== ARCHITECTURE Structure OF Arbiter_Cell_2_plus IS SIGNAL token,wt,int1,int2,int3,int4,int5: std_logic := '0'; BEGIN Gate1: OR_2 PORT MAP(token, wt, int1); Gate2: AND2 PORT MAP(int1, req_in, int2); Gate3: AND2 PORT MAP(wt, token, int3); Gate4: OR_2 PORT MAP(int3, override_in, override_out); Gate5: INV PORT MAP(req_in, int4); Gate6: AND2 PORT MAP(int4, grant_in, grant_out); Gate7: OR_2 PORT MAP(int3, grant_in, int5); Gate8: AND2 PORT MAP(req_in, int5, ack_out); Reg1: DFFsr PORT MAP(token_in, clk, reset, clk, token); Reg2: DFFsr PORT MAP(int2, clk, reset, clk, wt); token_out <= token; END Structure; --============================CONFIGURATION================= CONFIGURATION Arbiter_Cell_Config OF Arbiter_Cell_2_plus IS FOR Structure FOR all: OR_2 USE ENTITY work.or_2(Behavior); END FOR; FOR all: AND2 USE ENTITY work.and2(Behavior); END FOR; FOR Gate5: INV USE ENTITY work.inv(Behavior); END FOR; FOR all : DFFsr USE ENTITY work.DFFsr(Behavior); END FOR; END FOR; END Arbiter_Cell_Config;