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;
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;
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
---------------------------------------------------------------------
---------------------------------------------------------------------
STAT_DEBUG <= (others => '0');
-end architecture;
\ No newline at end of file
+end architecture;
generic(\r
PORT_NUMBER : integer range 1 to c_BUS_HANDLER_MAX_PORTS := 3;\r
PORT_ADDRESSES : c_BUS_HANDLER_ADDR_t := (others => (others => '0'));\r
- PORT_ADDR_MASK : c_BUS_HANDLER_WIDTH_t := (others => 0)\r
+ PORT_ADDR_MASK : c_BUS_HANDLER_WIDTH_t := (others => 0);\r
+ PORT_MASK_ENABLE : integer range 0 to 1\r
);\r
port(\r
CLK : in std_logic;\r