1 ------------------------------------------------------------------------------- 2 -- File : FifoCascade.vhd 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2014-04-10 5 -- Last update: 2014-09-23 6 ------------------------------------------------------------------------------- 7 -- Description: Wrapper for cascading FWFT FIFOs together 8 ------------------------------------------------------------------------------- 9 -- This file is part of 'SLAC Firmware Standard Library'. 10 -- It is subject to the license terms in the LICENSE.txt file found in the 11 -- top-level directory of this distribution and at: 12 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. 13 -- No part of 'SLAC Firmware Standard Library', including this file, 14 -- may be copied, modified, propagated, or distributed except according to 15 -- the terms contained in the LICENSE.txt file. 16 ------------------------------------------------------------------------------- 19 use ieee.std_logic_1164.
all;
25 --! @ingroup base_fifo 29 CASCADE_SIZE_G : range 1 to (2**24) := 1;
-- Number of FIFOs to cascade (if set to 1, then no FIFO cascading) 39 USE_BUILT_IN_G : := false;
-- If set to true, this module is only Xilinx compatible only!!! 51 --Write Ports (wr_clk domain) 63 --Read Ports (rd_clk domain) 64 rd_clk : in sl;
--unused if GEN_SYNC_FIFO_G = true 94 ----------------------------------------------------------------- 95 ----------------------------------------------------------------- 96 ----------------------------------------------------------------- 103 Fifo_1xStage :
entity work.
Fifo 126 --Write Ports (wr_clk domain) 137 --Read Ports (rd_clk domain) 150 ----------------------------------------------------------------- 151 ----------------------------------------------------------------- 152 ----------------------------------------------------------------- 159 Fifo_First_Stage :
entity work.
Fifo 182 --Write Ports (wr_clk domain) 193 --Read Ports (rd_clk domain) 205 Fifo_Middle_Stage :
entity work.
Fifo 228 --Write Ports (wr_clk domain) 234 --Read Ports (rd_clk domain) 241 end generate GEN_MULTI_STAGE;
244 Fifo_Last_Stage :
entity work.
Fifo 267 --Write Ports (wr_clk domain) 273 --Read Ports (rd_clk domain) 286 end architecture mapping;
SYNC_STAGES_Ginteger range 3 to ( 2** 24):= 3
in dinslv( DATA_WIDTH_G- 1 downto 0)
ALTERA_RAM_Gstring := "M9K"
out progFullVecslv( CASCADE_SIZE_G- 1 downto 0)
out wr_data_countslv( ADDR_WIDTH_G- 1 downto 0)
out doutslv( DATA_WIDTH_G- 1 downto 0)
XIL_DEVICE_Gstring := "7SERIES"
slv( CASCADE_SIZE_C downto 0) readJump
EMPTY_THRES_Ginteger range 1 to ( 2** 24):= 1
boolean := ite( LAST_STAGE_ASYNC_G, GEN_SYNC_FIFO_G, true) GEN_SYNC_FIFO_LAST_C
XIL_DEVICE_Gstring := "7SERIES"
RST_ASYNC_Gboolean := false
FWFT_EN_Gboolean := false
( CASCADE_SIZE_C downto 0) slv(( DATA_WIDTH_G- 1) downto 0) FifoDataType
FULL_THRES_Ginteger range 1 to ( 2** 24):= 1
in dinslv( DATA_WIDTH_G- 1 downto 0)
RST_ASYNC_Gboolean := false
boolean := ite( LAST_STAGE_ASYNC_G, true, GEN_SYNC_FIFO_G) GEN_SYNC_FIFO_FIRST_C
ALTERA_SYN_Gboolean := false
PIPE_STAGES_Gnatural range 0 to 16:= 0
USE_DSP48_Gstring := "no"
EMPTY_THRES_Ginteger range 1 to ( 2** 24):= 1
slv( CASCADE_SIZE_C downto 0) AFullJump
ALTERA_SYN_Gboolean := false
DATA_WIDTH_Ginteger range 1 to ( 2** 24):= 16
FULL_THRES_Ginteger range 1 to ( 2** 24):= 1
SYNC_STAGES_Ginteger range 3 to ( 2** 24):= 3
integer := ite(( CASCADE_SIZE_G= 1), 0,( CASCADE_SIZE_G- 2)) CASCADE_SIZE_C
ALTERA_RAM_Gstring := "M9K"
GEN_SYNC_FIFO_Gboolean := false
GEN_SYNC_FIFO_Gboolean := false
out doutslv( DATA_WIDTH_G- 1 downto 0)
in rstsl :=not RST_POLARITY_G
PIPE_STAGES_Gnatural range 0 to 16:= 0
USE_DSP48_Gstring := "no"
LAST_STAGE_ASYNC_Gboolean := true
ADDR_WIDTH_Ginteger range 4 to 48:= 4
ADDR_WIDTH_Ginteger range 4 to 48:= 4
USE_BUILT_IN_Gboolean := false
USE_BUILT_IN_Gboolean := false
FWFT_EN_Gboolean := false
DATA_WIDTH_Ginteger range 1 to ( 2** 24):= 16
CASCADE_SIZE_Ginteger range 1 to ( 2** 24):= 1
out wr_data_countslv( ADDR_WIDTH_G- 1 downto 0)
out rd_data_countslv( ADDR_WIDTH_G- 1 downto 0)
slv( CASCADE_SIZE_C downto 0) validJump
out rd_data_countslv( ADDR_WIDTH_G- 1 downto 0)