DATA_BUFFER_FULL_THRESH : integer range 0 to 2**15-1 := 2**12-256;
TRG_RELEASE_AFTER_DATA : integer range 0 to 1 := c_YES;
HEADER_BUFFER_DEPTH : integer range 8 to 15 := 9;
- HEADER_BUFFER_FULL_THRESH : integer range 0 to 2**15-1 := 2**9-128
+ HEADER_BUFFER_FULL_THRESH : integer range 0 to 2**15-1 := 2**9-128;
+ RDO_SKIP_FIRST_BUFFER : integer range 0 to 1 := c_NO
);
port(
CLOCK : in std_logic;
---------------------------------------------------------------------------
-- Data Fifo(s)
---------------------------------------------------------------------------
- gen_fifos : for i in 0 to DATA_INTERFACE_NUMBER-1 generate
+ gen_fifos : for i in RDO_SKIP_FIRST_BUFFER to DATA_INTERFACE_NUMBER-1 generate
data_buffer_write(i) <= FEE_DATA_WRITE_IN(i) and not fee_write_overflow(i) and not BUFFER_DISABLE_IN(i) when current_buffer_state(i) = BUSY else '0';
end generate;
-
+ gen_skip_first : if RDO_SKIP_FIRST_BUFFER = 1 generate
+ data_buffer_data_out(35 downto 0) <= (others => '0');
+ data_buffer_filllevel(DATA_BUFFER_DEPTH downto 0) <= (others => '0');
+ data_buffer_empty(0) <= '1';
+ data_buffer_full(0) <= '0';
+ data_buffer_almost_full(0) <= '0';
+ fee_write_overflow(0) <= '0';
+
+ length_buffer_almost_full(0) <= '0';
+ length_buffer_full(0) <= '0';
+ length_buffer_data_out(17 downto 0) <= (others => '0');
+ length_buffer_empty(0) <= '0';
+ IPU_DATA_LENGTH_OUT(15 downto 0) <= (others => '0');
+ end generate;
+
---------------------------------------------------------------------------
-- Header Fifo
---------------------------------------------------------------------------
---------------------------------------------------------------------------
-- Length FIFO
---------------------------------------------------------------------------
- gen_length_fifo : for i in 0 to DATA_INTERFACE_NUMBER-1 generate
+ gen_length_fifo : for i in RDO_SKIP_FIRST_BUFFER to DATA_INTERFACE_NUMBER-1 generate
THE_LENGTH_FIFO : fifo_var_oreg
generic map(
FIFO_WIDTH => 18,
TRG_RELEASE_AFTER_DATA : integer range 0 to 1 := c_YES;
DATA_0_IS_STATUS : integer range 0 to 1 := c_NO;
HEADER_BUFFER_DEPTH : integer range 9 to 14 := 9;
- HEADER_BUFFER_FULL_THRESH : integer range 2**8 to 2**14-1 := 2**8
+ HEADER_BUFFER_FULL_THRESH : integer range 2**8 to 2**14-1 := 2**8;
+ RDO_SKIP_FIRST_BUFFER : integer range 0 to 1 := c_NO
);
port(
CLOCK : in std_logic;
DATA_BUFFER_FULL_THRESH => DATA_BUFFER_FULL_THRESH,
TRG_RELEASE_AFTER_DATA => TRG_RELEASE_AFTER_DATA,
HEADER_BUFFER_DEPTH => HEADER_BUFFER_DEPTH,
- HEADER_BUFFER_FULL_THRESH => HEADER_BUFFER_FULL_THRESH
+ HEADER_BUFFER_FULL_THRESH => HEADER_BUFFER_FULL_THRESH,
+ RDO_SKIP_FIRST_BUFFER => RDO_SKIP_FIRST_BUFFER
)
port map(
CLOCK => CLOCK,
RDO_DATA_BUFFER_FULL_THRESH : integer range 0 to 2**14-2 := 384;
RDO_HEADER_BUFFER_DEPTH : integer range 9 to 14 := 9;
RDO_HEADER_BUFFER_FULL_THRESH : integer range 2**8 to 2**14-2 := 500;
+ RDO_SKIP_FIRST_BUFFER : integer range 0 to 1 := c_NO;
--media interfaces & hub ports
MII_NUMBER : integer range 1 to c_MAX_MII_PER_HUB := 5;
MII_IS_UPLINK : hub_mii_config_t := (0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0);
RDO_DATA_BUFFER_FULL_THRESH : integer range 0 to 2**14-2 := 2**8;
RDO_HEADER_BUFFER_DEPTH : integer range 9 to 14 := 9;
RDO_HEADER_BUFFER_FULL_THRESH : integer range 2**8 to 2**14-2 := 2**8;
+ RDO_SKIP_FIRST_BUFFER : integer range 0 to 1 := c_NO;
--media interfaces & hub ports
MII_NUMBER : integer range 1 to c_MAX_MII_PER_HUB := 5;
MII_IS_UPLINK : hub_mii_config_t := (0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0);
DATA_BUFFER_FULL_THRESH => RDO_DATA_BUFFER_FULL_THRESH,
TRG_RELEASE_AFTER_DATA => c_YES,
HEADER_BUFFER_DEPTH => RDO_HEADER_BUFFER_DEPTH,
- HEADER_BUFFER_FULL_THRESH => RDO_HEADER_BUFFER_FULL_THRESH
+ HEADER_BUFFER_FULL_THRESH => RDO_HEADER_BUFFER_FULL_THRESH,
+ RDO_SKIP_FIRST_BUFFER => RDO_SKIP_FIRST_BUFFER
)
port map(
CLOCK => CLK,
UP_DOWN_MODE : integer range 0 to 1 := 0;\r
UP_DOWN_LIMIT : integer range 0 to 16777215 := 0;\r
FIXED_DELAY : integer range 0 to 16777215 := 16777215;\r
+ SLOWCTRL_BUFFER_SIZE : integer range 1 to 2 := 2;\r
NUMBER_OF_GBE_LINKS : integer range 1 to 4 := 4;\r
LINKS_ACTIVE : std_logic_vector(3 downto 0) := "1111";\r
LINK_HAS_PING : std_logic_vector(3 downto 0) := "1111";\r
DATA_BUFFER_FULL_THRESH : integer range 0 to 2**14-1 := 2**8;\r
TRG_RELEASE_AFTER_DATA : integer range 0 to 1 := c_YES;\r
HEADER_BUFFER_DEPTH : integer range 9 to 14 := 9;\r
- HEADER_BUFFER_FULL_THRESH : integer range 2**8 to 2**14-1 := 2**8\r
+ HEADER_BUFFER_FULL_THRESH : integer range 2**8 to 2**14-1 := 2**8;\r
+ RDO_SKIP_FIRST_BUFFER : integer range 0 to 1 := c_NO \r
);\r
port(\r
CLOCK : in std_logic;\r
DATA_BUFFER_FULL_THRESH : integer range 0 to 2**15-1 := 2**8;\r
TRG_RELEASE_AFTER_DATA : integer range 0 to 1 := c_YES;\r
HEADER_BUFFER_DEPTH : integer range 9 to 14 := 9;\r
- HEADER_BUFFER_FULL_THRESH : integer range 2**8 to 2**14-1 := 2**8\r
+ HEADER_BUFFER_FULL_THRESH : integer range 2**8 to 2**14-1 := 2**8;\r
+ RDO_SKIP_FIRST_BUFFER : integer range 0 to 1 := c_NO\r
);\r
port(\r
CLOCK : in std_logic;\r