From: Ludwig Maier Date: Sat, 13 Jul 2013 21:00:56 +0000 (+0200) Subject: added generic PORT_MASK_ENABLE trb_net16_regio_bus_handler, default is 0 for backward... X-Git-Tag: oldGBE^0 X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=159e6b147008d01e8a5425b924fd7819dbbdd834;p=trbnet.git added generic PORT_MASK_ENABLE trb_net16_regio_bus_handler, default is 0 for backward compatibility --- diff --git a/trb_net16_regio_bus_handler.vhd b/trb_net16_regio_bus_handler.vhd index 47919d0..c596f52 100644 --- a/trb_net16_regio_bus_handler.vhd +++ b/trb_net16_regio_bus_handler.vhd @@ -11,7 +11,8 @@ entity trb_net16_regio_bus_handler is generic( PORT_NUMBER : integer range 1 to c_BUS_HANDLER_MAX_PORTS := 3; PORT_ADDRESSES : c_BUS_HANDLER_ADDR_t := (others => (others => '0')); - PORT_ADDR_MASK : c_BUS_HANDLER_WIDTH_t := (others => 0) + PORT_ADDR_MASK : c_BUS_HANDLER_WIDTH_t := (others => 0); + PORT_MASK_ENABLE : integer range 0 to 1 := 0 ); port( CLK : in std_logic; @@ -82,7 +83,8 @@ begin begin next_port_select_int <= PORT_NUMBER; gen_port_select : for i in 0 to PORT_NUMBER-1 loop - if (PORT_ADDR_MASK(i) = 16 or (DAT_ADDR_IN(15 downto PORT_ADDR_MASK(i)) = PORT_ADDRESSES(i)(15 downto PORT_ADDR_MASK(i)))) then + if (PORT_ADDR_MASK(i) = 16 or + (DAT_ADDR_IN(15 downto PORT_ADDR_MASK(i)) = PORT_ADDRESSES(i)(15 downto PORT_ADDR_MASK(i)))) then next_port_select_int <= i; end if; end loop; @@ -125,11 +127,17 @@ begin BUS_WRITE_ENABLE_OUT<= buf_BUS_WRITE_OUT(PORT_NUMBER-1 downto 0); gen_bus_outputs : for i in 0 to PORT_NUMBER-1 generate BUS_DATA_OUT(i*32+31 downto i*32) <= buf_BUS_DATA_OUT; - BUS_ADDR_OUT(i*16+15 downto i*16) <= buf_BUS_ADDR_OUT; + port_mask_disabled : if PORT_MASK_ENABLE = 0 generate + BUS_ADDR_OUT(i*16+15 downto i*16) <= buf_BUS_ADDR_OUT; + end generate; + port_mask_enabled : if PORT_MASK_ENABLE = 1 generate + BUS_ADDR_OUT(i*16+15 downto i*16+PORT_ADDR_MASK(i)) <= (others => '0'); + BUS_ADDR_OUT(i*16+PORT_ADDR_MASK(i)-1 downto i*16) + <= buf_BUS_ADDR_OUT(PORT_ADDR_MASK(i)-1 downto 0); + end generate; BUS_TIMEOUT_OUT(i) <= DAT_TIMEOUT_IN; end generate; - --------------------------------------------------------------------- --Pack Data Inputs and Dummy Input --------------------------------------------------------------------- @@ -166,4 +174,4 @@ begin --------------------------------------------------------------------- STAT_DEBUG <= (others => '0'); -end architecture; \ No newline at end of file +end architecture; diff --git a/trb_net_components.vhd b/trb_net_components.vhd index 95b433e..7507d1f 100644 --- a/trb_net_components.vhd +++ b/trb_net_components.vhd @@ -2633,7 +2633,8 @@ package trb_net_components is generic( PORT_NUMBER : integer range 1 to c_BUS_HANDLER_MAX_PORTS := 3; PORT_ADDRESSES : c_BUS_HANDLER_ADDR_t := (others => (others => '0')); - PORT_ADDR_MASK : c_BUS_HANDLER_WIDTH_t := (others => 0) + PORT_ADDR_MASK : c_BUS_HANDLER_WIDTH_t := (others => 0); + PORT_MASK_ENABLE : integer range 0 to 1 ); port( CLK : in std_logic;