2 use ieee.std_logic_1164.all;
5 use work.wishbone_types.all;
7 entity wishbone_arbiter is
12 wb1_in : in wishbone_master_out;
13 wb1_out : out wishbone_slave_out;
15 wb2_in : in wishbone_master_out;
16 wb2_out : out wishbone_slave_out;
18 wb_out : out wishbone_master_out;
19 wb_in : in wishbone_slave_out
23 architecture behave of wishbone_arbiter is
24 type wishbone_arbiter_state_t is (IDLE, WB1_BUSY, WB2_BUSY);
25 signal state : wishbone_arbiter_state_t := IDLE;
27 wb1_out <= wb_in when state = WB1_BUSY else wishbone_slave_out_init;
28 wb2_out <= wb_in when state = WB2_BUSY else wishbone_slave_out_init;
30 wb_out <= wb1_in when state = WB1_BUSY else wb2_in when state = WB2_BUSY else wishbone_master_out_init;
32 wishbone_arbiter_process: process(clk)
34 if rising_edge(clk) then
40 if wb1_in.cyc = '1' then
42 elsif wb2_in.cyc = '1' then
46 if wb1_in.cyc = '0' then
50 if wb2_in.cyc = '0' then