SURF  1.0
AxiLiteFifoPushPop.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : AxiLiteFifoPush.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2013-04-02
5 -- Last update: 2016-04-26
6 -------------------------------------------------------------------------------
7 -- Description:
8 -- Supports reading of general purpose FIFOs from the AxiLite bus.
9 -- One address location per FIFO.
10 -------------------------------------------------------------------------------
11 -- This file is part of 'SLAC Firmware Standard Library'.
12 -- It is subject to the license terms in the LICENSE.txt file found in the
13 -- top-level directory of this distribution and at:
14 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html.
15 -- No part of 'SLAC Firmware Standard Library', including this file,
16 -- may be copied, modified, propagated, or distributed except according to
17 -- the terms contained in the LICENSE.txt file.
18 -------------------------------------------------------------------------------
19 
20 library ieee;
21 use ieee.std_logic_1164.all;
22 use IEEE.STD_LOGIC_UNSIGNED.ALL;
23 use IEEE.STD_LOGIC_ARITH.ALL;
24 
25 use work.StdRtlPkg.all;
26 use work.AxiLitePkg.all;
27 
28 --! @see entity
29  --! @ingroup axi
31  generic (
32  TPD_G : time := 1 ns;
33  POP_FIFO_COUNT_G : positive := 1;
34  POP_SYNC_FIFO_G : boolean := false;
35  POP_BRAM_EN_G : boolean := true;
36  POP_ADDR_WIDTH_G : integer range 4 to 48 := 4;
37  POP_FULL_THRES_G : integer range 1 to (2**24) := 1;
38  LOOP_FIFO_EN_G : boolean := false;
39  LOOP_FIFO_COUNT_G : positive := 1;
40  LOOP_BRAM_EN_G : boolean := true;
41  LOOP_ADDR_WIDTH_G : integer range 4 to 48 := 4;
42  PUSH_FIFO_COUNT_G : positive := 1;
43  PUSH_SYNC_FIFO_G : boolean := false;
44  PUSH_BRAM_EN_G : boolean := false;
45  PUSH_ADDR_WIDTH_G : integer range 4 to 48 := 4;
46  RANGE_LSB_G : integer range 0 to 31 := 8;
47  VALID_POSITION_G : integer range 0 to 31 := 0;
48  VALID_POLARITY_G : sl := '0';
49  ALTERA_SYN_G : boolean := false;
50  ALTERA_RAM_G : string := "M9K";
51  USE_BUILT_IN_G : boolean := false;
52  XIL_DEVICE_G : string := "7SERIES"
53  );
54  port (
55 
56  -- AXI Interface
57  axiClk : in sl;
58  axiClkRst : in sl;
63  popFifoValid : out slv(POP_FIFO_COUNT_G-1 downto 0);
64  popFifoAEmpty : out slv(POP_FIFO_COUNT_G-1 downto 0);
65  loopFifoValid : out slv(LOOP_FIFO_COUNT_G-1 downto 0);
67  loopFifoAFull : out slv(LOOP_FIFO_COUNT_G-1 downto 0);
68  pushFifoAFull : out slv(PUSH_FIFO_COUNT_G-1 downto 0);
69 
70  -- POP FIFO Write Interface
71  popFifoClk : in slv(POP_FIFO_COUNT_G-1 downto 0);
72  popFifoRst : in slv(POP_FIFO_COUNT_G-1 downto 0);
73  popFifoWrite : in slv(POP_FIFO_COUNT_G-1 downto 0);
75  popFifoFull : out slv(POP_FIFO_COUNT_G-1 downto 0);
76  popFifoAFull : out slv(POP_FIFO_COUNT_G-1 downto 0);
77  popFifoPFull : out slv(POP_FIFO_COUNT_G-1 downto 0);
78 
79  -- Push FIFO Read Interface
80  pushFifoClk : in slv(PUSH_FIFO_COUNT_G-1 downto 0);
81  pushFifoRst : in slv(PUSH_FIFO_COUNT_G-1 downto 0);
82  pushFifoValid : out slv(PUSH_FIFO_COUNT_G-1 downto 0);
84  pushFifoRead : in slv(PUSH_FIFO_COUNT_G-1 downto 0)
85  );
86 end AxiLiteFifoPushPop;
87 
88 architecture structure of AxiLiteFifoPushPop is
89 
90  constant POP_SIZE_C : integer := bitSize(POP_FIFO_COUNT_G-1);
91  constant POP_COUNT_C : integer := 2**POP_SIZE_C;
92  constant PUSH_SIZE_C : integer := bitSize(PUSH_FIFO_COUNT_G-1);
93  constant PUSH_COUNT_C : integer := 2**PUSH_SIZE_C;
94  constant LOOP_SIZE_C : integer := bitSize(LOOP_FIFO_COUNT_G-1);
95  constant LOOP_COUNT_C : integer := 2**LOOP_SIZE_C;
96 
97  -- Local Signals
98  signal ipopFifoValid : slv(POP_COUNT_C-1 downto 0);
99  signal ipopFifoDout : Slv32Array(POP_COUNT_C-1 downto 0);
100  signal ipopFifoRead : slv(POP_COUNT_C-1 downto 0);
101  signal iloopFifoDin : slv(31 downto 0);
102  signal iloopFifoWrite : Slv(LOOP_COUNT_C-1 downto 0);
103  signal iloopFifoValid : slv(LOOP_COUNT_C-1 downto 0);
104  signal iloopFifoDout : Slv32Array(LOOP_COUNT_C-1 downto 0);
105  signal iloopFifoRead : slv(LOOP_COUNT_C-1 downto 0);
106  signal ipushFifoFull : slv(PUSH_COUNT_C-1 downto 0);
107  signal ipushFifoAFull : slv(PUSH_COUNT_C-1 downto 0);
108  signal ipushFifoDin : Slv(35 downto 0);
109  signal ipushFifoWrite : slv(PUSH_COUNT_C-1 downto 0);
110 
111  type RegType is record
112  loopFifoDin : slv(31 downto 0);
113  loopFifoWrite : Slv(LOOP_COUNT_C-1 downto 0);
115  popFifoRead : slv(POP_COUNT_C-1 downto 0);
117  pushFifoDin : slv(35 downto 0);
120  end record RegType;
121 
122  constant REG_INIT_C : RegType := (
123  loopFifoDin => (others => '0'),
124  loopFifoWrite => (others => '0'),
125  loopFifoRead => (others => '0'),
126  popFifoRead => (others => '0'),
127  pushFifoWrite => (others => '0'),
128  pushFifoDin => (others => '0'),
131  );
132 
133  signal r : RegType := REG_INIT_C;
134  signal rin : RegType;
135 
136 begin
137 
138  assert RANGE_LSB_G > (LOOP_SIZE_C +2)
139  report "RANGE_LSB_G is too small for LOOP_FIFO_COUNT_G" severity failure;
140 
141  assert RANGE_LSB_G > (POP_SIZE_C +2)
142  report "RANGE_LSB_G is too small for POP_FIFO_COUNT_G" severity failure;
143 
144  assert RANGE_LSB_G > (PUSH_SIZE_C +2)
145  report "RANGE_LSB_G is too small for PUSH_FIFO_COUNT_G" severity failure;
146 
147  -----------------------------------------(
148 
149 
150  -- pop FIFOs
151  -----------------------------------------
152  U_PopFifo : for i in 0 to POP_FIFO_COUNT_G-1 generate
153  U_FIfo : entity work.FifoCascade
154  generic map (
155  TPD_G => TPD_G,
156  CASCADE_SIZE_G => 1,
157  LAST_STAGE_ASYNC_G => true,
158  RST_POLARITY_G => '1',
159  RST_ASYNC_G => true,
162  FWFT_EN_G => true,
163  USE_DSP48_G => "no",
168  SYNC_STAGES_G => 3,
169  DATA_WIDTH_G => 32,
171  INIT_G => "0",
173  EMPTY_THRES_G => 1
174  ) port map (
175  rst => popFifoRst(i),
176  wr_clk => popFifoClk(i),
177  wr_en => popFifoWrite(i),
178  din => popFifoDin(i),
179  wr_data_count => open,
180  wr_ack => open,
181  overflow => open,
182  prog_full => popFifoPFull(i),
184  full => popFifoFull(i),
185  not_full => open,
186  rd_clk => axiClk,
187  rd_en => ipopFifoRead(i),
188  dout => ipopFifoDout(i),
189  rd_data_count => open,
190  valid => ipopFifoValid(i),
191  underflow => open,
192  prog_empty => open,
194  empty => open
195  );
196 
197  popFifoValid(i) <= ipopFifoValid(i);
198  end generate;
199 
200  U_PopUnused : if POP_FIFO_COUNT_G /= POP_COUNT_C generate
201  ipopFifoValid(POP_COUNT_C-1 downto POP_FIFO_COUNT_G) <= (others=>'0');
202  ipopFifoDout(POP_COUNT_C-1 downto POP_FIFO_COUNT_G) <= (others=>(others=>'0'));
203  end generate;
204 
205 
206  -----------------------------------------
207  -- Loop FIFOs
208  -----------------------------------------
209  U_LoopFifoEn : if LOOP_FIFO_EN_G generate
210  U_LoopFifo : for i in 0 to LOOP_FIFO_COUNT_G-1 generate
211  U_FIfo : entity work.FifoCascade
212  generic map (
213  TPD_G => TPD_G,
214  CASCADE_SIZE_G => 1,
215  LAST_STAGE_ASYNC_G => true,
216  RST_POLARITY_G => '1',
217  RST_ASYNC_G => true,
218  GEN_SYNC_FIFO_G => true,
220  FWFT_EN_G => true,
221  USE_DSP48_G => "no",
226  SYNC_STAGES_G => 3,
227  DATA_WIDTH_G => 32,
229  INIT_G => "0",
230  FULL_THRES_G => 1,
231  EMPTY_THRES_G => 1
232  ) port map (
233  rst => axiClkRst,
234  wr_clk => axiClk,
235  wr_en => iloopFifoWrite(i),
236  din => iloopFifoDin,
237  wr_data_count => open,
238  wr_ack => open,
239  overflow => open,
240  prog_full => open,
242  full => open,
243  not_full => open,
244  rd_clk => axiClk,
245  rd_en => iloopFifoRead(i),
246  dout => iloopFifoDout(i),
247  rd_data_count => open,
248  valid => iloopFifoValid(i),
249  underflow => open,
250  prog_empty => open,
252  empty => open
253  );
254 
255  loopFifoValid(i) <= iloopFifoValid(i);
256 
257  end generate;
258  end generate;
259 
260  U_LoopDis : if LOOP_FIFO_EN_G = false generate
261  loopFifoAFull(LOOP_FIFO_COUNT_G-1 downto 0) <= (others=>'0');
262  iloopFifoDout(LOOP_FIFO_COUNT_G-1 downto 0) <= (others=>(others=>'0'));
263  iloopFifoValid(LOOP_FIFO_COUNT_G-1 downto 0) <= (others=>'0');
264  loopFifoValid(LOOP_FIFO_COUNT_G-1 downto 0) <= (others=>'0');
265  loopFifoAEmpty(LOOP_FIFO_COUNT_G-1 downto 0) <= (others=>'0');
266  end generate;
267 
268  U_LoopUnused : if LOOP_FIFO_COUNT_G /= LOOP_COUNT_C generate
269  iloopFifoValid(LOOP_COUNT_C-1 downto LOOP_FIFO_COUNT_G) <= (others=>'0');
270  iloopFifoDout(LOOP_COUNT_C-1 downto LOOP_FIFO_COUNT_G) <= (others=>(others=>'0'));
271  end generate;
272 
273 
274  -----------------------------------------
275  -- push FIFOs
276  -----------------------------------------
277  U_PushFifo : for i in 0 to PUSH_FIFO_COUNT_G-1 generate
278  U_FIfo : entity work.FifoCascade
279  generic map (
280  TPD_G => TPD_G,
281  CASCADE_SIZE_G => 1,
282  LAST_STAGE_ASYNC_G => true,
283  RST_POLARITY_G => '1',
284  RST_ASYNC_G => true,
287  FWFT_EN_G => true,
288  USE_DSP48_G => "no",
293  SYNC_STAGES_G => 3,
294  DATA_WIDTH_G => 36,
296  INIT_G => "0",
297  FULL_THRES_G => 1,
298  EMPTY_THRES_G => 1
299  ) port map (
300  rst => pushFifoRst(i),
301  wr_clk => axiClk,
302  wr_en => ipushFifoWrite(i),
303  din => ipushFifoDin,
304  wr_data_count => open,
305  wr_ack => open,
306  overflow => open,
307  prog_full => open,
309  full => ipushFifoFull(i),
310  not_full => open,
311  rd_clk => pushFifoClk(i),
312  rd_en => pushFifoRead(i),
313  dout => pushFifoDout(i),
314  rd_data_count => open,
315  valid => pushFifoValid(i),
316  underflow => open,
317  prog_empty => open,
318  almost_empty => open,
319  empty => open
320  );
321 
322  end generate;
323 
324  U_PushUnused : if PUSH_FIFO_COUNT_G /= PUSH_COUNT_C generate
325  ipushFifoAFull(PUSH_COUNT_C-1 downto PUSH_FIFO_COUNT_G) <= (others=>'0');
326  pushFifoAFull(PUSH_COUNT_C-1 downto PUSH_FIFO_COUNT_G) <= (others=>'0');
327  ipushFifoFull(PUSH_COUNT_C-1 downto PUSH_FIFO_COUNT_G) <= (others=>'0');
328  end generate;
329 
331 
332 
333  -----------------------------------------
334  -- AXI Lite
335  -----------------------------------------
336 
337  -- Sync
338  process (axiClk) is
339  begin
340  if (rising_edge(axiClk)) then
341  r <= rin after TPD_G;
342  end if;
343  end process;
344 
345  -- Async
348  variable v : RegType;
349  variable axiStatus : AxiLiteStatusType;
350  begin
351  v := r;
352 
353  v.popFifoRead := (others=>'0');
354  v.loopFifoRead := (others=>'0');
355  v.loopFifoWrite := (others=>'0');
356  v.pushFifoWrite := (others=>'0');
357 
359 
360  -- Write
361  if (axiStatus.writeEnable = '1') then
362 
363  -- Loop Fifo Space
364  if axiWriteMaster.awaddr(RANGE_LSB_G+1 downto RANGE_LSB_G) = 1 then
366  v.loopFifoWrite(conv_integer(axiWriteMaster.awaddr(LOOP_SIZE_C+1 downto 2))) := '1';
367 
368  -- Write FIFO Space
369  elsif axiWriteMaster.awaddr(RANGE_LSB_G+1 downto RANGE_LSB_G) = 2 then
370  v.pushFifoDin(31 downto 0) := axiWriteMaster.wdata;
371  v.pushFifoDin(35 downto 32) := axiWriteMaster.awaddr(5 downto 2);
372 
373  v.pushFifoWrite(conv_integer(axiWriteMaster.awaddr(PUSH_SIZE_C+5 downto 6))) := '1';
374 
375  end if;
376 
377  axiSlaveWriteResponse(v.axiWriteSlave);
378  end if;
379 
380  -- Read
381  if (axiStatus.readEnable = '1') then
382  if axiReadMaster.araddr(RANGE_LSB_G+1 downto RANGE_LSB_G) = 0 then
383  v.axiReadSlave.rdata := ipopFifoDout(conv_integer(axiReadMaster.araddr(POP_SIZE_C+1 downto 2)));
384 
386  VALID_POLARITY_G xor (not ipopFifoValid(conv_integer(axiReadMaster.araddr(POP_SIZE_C+1 downto 2))));
387 
388  v.popFifoRead(conv_integer(axiReadMaster.araddr(POP_SIZE_C+1 downto 2))) :=
389  ipopFifoValid(conv_integer(axiReadMaster.araddr(POP_SIZE_C+1 downto 2)));
390 
391  -- Loop Fifo Space
392  elsif axiReadMaster.araddr(RANGE_LSB_G+1 downto RANGE_LSB_G) = 1 then
393  v.axiReadSlave.rdata := iloopFifoDout(conv_integer(axiReadMaster.araddr(LOOP_SIZE_C+1 downto 2)));
394 
396  VALID_POLARITY_G xor (not iloopFifoValid(conv_integer(axiReadMaster.araddr(LOOP_SIZE_C+1 downto 2))));
397 
398  v.loopFifoRead(conv_integer(axiReadMaster.araddr(LOOP_SIZE_C+1 downto 2))) :=
399  iloopFifoValid(conv_integer(axiReadMaster.araddr(LOOP_SIZE_C+1 downto 2)));
400 
401  -- Write FIFO Space
402  elsif axiReadMaster.araddr(RANGE_LSB_G+1 downto RANGE_LSB_G) = 2 then
403  v.axiReadSlave.rdata := (others=>'0');
404  v.axiReadSlave.rdata(0) := ipushFifoFull(conv_integer(axiReadMaster.araddr(PUSH_SIZE_C+5 downto 6)));
405  v.axiReadSlave.rdata(1) := ipushFifoAFull(conv_integer(axiReadMaster.araddr(PUSH_SIZE_C+5 downto 6)));
406 
407  end if;
408 
409  -- Send Axi Response
410  axiSlaveReadResponse(v.axiReadSlave);
411 
412  end if;
413 
414  -- Reset
415  if (axiClkRst = '1') then
416  v := REG_INIT_C;
417  end if;
418 
419  -- Next register assignment
420  rin <= v;
421 
422  -- Outputs
431 
432  end process;
433 
434 end architecture structure;
435 
out almost_fullsl
Definition: FifoCascade.vhd:59
POP_BRAM_EN_Gboolean := true
in popFifoDinSlv32Array( POP_FIFO_COUNT_G- 1 downto 0)
ALTERA_RAM_Gstring := "M9K"
Definition: FifoCascade.vhd:38
out validsl
Definition: FifoCascade.vhd:68
out doutslv( DATA_WIDTH_G- 1 downto 0)
Definition: FifoCascade.vhd:66
LOOP_ADDR_WIDTH_Ginteger range 4 to 48:= 4
XIL_DEVICE_Gstring := "7SERIES"
Definition: FifoCascade.vhd:40
ALTERA_SYN_Gboolean := false
out popFifoAEmptyslv( POP_FIFO_COUNT_G- 1 downto 0)
array(natural range <> ) of slv( 31 downto 0) Slv32Array
Definition: StdRtlPkg.vhd:379
integer := bitSize( LOOP_FIFO_COUNT_G- 1) LOOP_SIZE_C
_library_ ieeeieee
RST_ASYNC_Gboolean := false
Definition: FifoCascade.vhd:32
out pushFifoDoutSlv36Array( PUSH_FIFO_COUNT_G- 1 downto 0)
out almost_emptysl
Definition: FifoCascade.vhd:71
slv( LOOP_COUNT_C- 1 downto 0) loopFifoRead
out axiWriteSlaveAxiLiteWriteSlaveType
AxiLiteWriteMasterType
Definition: AxiLitePkg.vhd:111
INIT_Gslv := "0"
Definition: FifoCascade.vhd:45
std_logic sl
Definition: StdRtlPkg.vhd:28
PUSH_BRAM_EN_Gboolean := false
out popFifoPFullslv( POP_FIFO_COUNT_G- 1 downto 0)
_library_ IEEEIEEE
Definition: StdRtlPkg.vhd:18
out loopFifoAEmptyslv( LOOP_FIFO_COUNT_G- 1 downto 0)
BRAM_EN_Gboolean := true
Definition: FifoCascade.vhd:34
out pushFifoValidslv( PUSH_FIFO_COUNT_G- 1 downto 0)
POP_SYNC_FIFO_Gboolean := false
out popFifoAFullslv( POP_FIFO_COUNT_G- 1 downto 0)
POP_ADDR_WIDTH_Ginteger range 4 to 48:= 4
slv( 31 downto 0) rdata
Definition: AxiLitePkg.vhd:89
in dinslv( DATA_WIDTH_G- 1 downto 0)
Definition: FifoCascade.vhd:54
integer := bitSize( PUSH_FIFO_COUNT_G- 1) PUSH_SIZE_C
PUSH_ADDR_WIDTH_Ginteger range 4 to 48:= 4
in popFifoRstslv( POP_FIFO_COUNT_G- 1 downto 0)
out loopFifoAFullslv( LOOP_FIFO_COUNT_G- 1 downto 0)
Slv32Array( POP_COUNT_C- 1 downto 0) ipopFifoDout
in rd_clksl
Definition: FifoCascade.vhd:64
out prog_fullsl
Definition: FifoCascade.vhd:58
EMPTY_THRES_Ginteger range 1 to ( 2** 24):= 1
Definition: FifoCascade.vhd:47
slv( PUSH_COUNT_C- 1 downto 0) ipushFifoFull
Slv( LOOP_COUNT_C- 1 downto 0) iloopFifoWrite
slv( LOOP_COUNT_C- 1 downto 0) iloopFifoRead
ALTERA_SYN_Gboolean := false
Definition: FifoCascade.vhd:37
integer := 2** LOOP_SIZE_C LOOP_COUNT_C
slv( 31 downto 0) wdata
Definition: AxiLitePkg.vhd:117
in rd_ensl := '0'
Definition: FifoCascade.vhd:65
AxiLiteStatusType axiStatus
Definition: AxiLitePkg.vhd:183
out wr_acksl
Definition: FifoCascade.vhd:56
LOOP_BRAM_EN_Gboolean := true
in rstsl := '0'
Definition: FifoCascade.vhd:50
AxiLiteReadSlaveType axiReadSlave
slv( POP_COUNT_C- 1 downto 0) ipopFifoRead
out pushFifoAFullslv( PUSH_FIFO_COUNT_G- 1 downto 0)
out axiReadSlaveAxiLiteReadSlaveType
in wr_clksl
Definition: FifoCascade.vhd:52
XIL_DEVICE_Gstring := "7SERIES"
out overflowsl
Definition: FifoCascade.vhd:57
PUSH_FIFO_COUNT_Gpositive := 1
RANGE_LSB_Ginteger range 0 to 31:= 8
USE_BUILT_IN_Gboolean := false
LOOP_FIFO_COUNT_Gpositive := 1
FULL_THRES_Ginteger range 1 to ( 2** 24):= 1
Definition: FifoCascade.vhd:46
out loopFifoValidslv( LOOP_FIFO_COUNT_G- 1 downto 0)
slv( PUSH_COUNT_C- 1 downto 0) ipushFifoWrite
SYNC_STAGES_Ginteger range 3 to ( 2** 24):= 3
Definition: FifoCascade.vhd:41
slv( PUSH_COUNT_C- 1 downto 0) ipushFifoAFull
integer := bitSize( POP_FIFO_COUNT_G- 1) POP_SIZE_C
PUSH_SYNC_FIFO_Gboolean := false
AxiLiteReadMasterType
Definition: AxiLitePkg.vhd:59
in popFifoWriteslv( POP_FIFO_COUNT_G- 1 downto 0)
slv( 31 downto 0) awaddr
Definition: AxiLitePkg.vhd:113
RegType :=(loopFifoDin =>( others => '0'),loopFifoWrite =>( others => '0'),loopFifoRead =>( others => '0'),popFifoRead =>( others => '0'),pushFifoWrite =>( others => '0'),pushFifoDin =>( others => '0'),axiReadSlave => AXI_LITE_READ_SLAVE_INIT_C,axiWriteSlave => AXI_LITE_WRITE_SLAVE_INIT_C) REG_INIT_C
in wr_ensl := '0'
Definition: FifoCascade.vhd:53
AxiLiteReadSlaveType :=(arready => '0',rdata =>( others => '0'),rresp =>( others => '0'),rvalid => '0') AXI_LITE_READ_SLAVE_INIT_C
Definition: AxiLitePkg.vhd:95
in axiWriteMasterAxiLiteWriteMasterType
out fullsl
Definition: FifoCascade.vhd:60
GEN_SYNC_FIFO_Gboolean := false
Definition: FifoCascade.vhd:33
VALID_POSITION_Ginteger range 0 to 31:= 0
in pushFifoClkslv( PUSH_FIFO_COUNT_G- 1 downto 0)
TPD_Gtime := 1 ns
Definition: FifoCascade.vhd:28
integer := 2** PUSH_SIZE_C PUSH_COUNT_C
AxiLiteReadSlaveType
Definition: AxiLitePkg.vhd:85
array(natural range <> ) of slv( 35 downto 0) Slv36Array
Definition: StdRtlPkg.vhd:375
slv( POP_COUNT_C- 1 downto 0) ipopFifoValid
out popFifoValidslv( POP_FIFO_COUNT_G- 1 downto 0)
in popFifoClkslv( POP_FIFO_COUNT_G- 1 downto 0)
in pushFifoRstslv( PUSH_FIFO_COUNT_G- 1 downto 0)
AxiLiteWriteSlaveType axiWriteSlave
USE_DSP48_Gstring := "no"
Definition: FifoCascade.vhd:36
slv( POP_COUNT_C- 1 downto 0) popFifoRead
LAST_STAGE_ASYNC_Gboolean := true
Definition: FifoCascade.vhd:30
ADDR_WIDTH_Ginteger range 4 to 48:= 4
Definition: FifoCascade.vhd:44
in pushFifoReadslv( PUSH_FIFO_COUNT_G- 1 downto 0)
slv( 31 downto 0) araddr
Definition: AxiLitePkg.vhd:61
USE_BUILT_IN_Gboolean := false
Definition: FifoCascade.vhd:39
FWFT_EN_Gboolean := false
Definition: FifoCascade.vhd:35
out not_fullsl
Definition: FifoCascade.vhd:61
DATA_WIDTH_Ginteger range 1 to ( 2** 24):= 16
Definition: FifoCascade.vhd:43
POP_FULL_THRES_Ginteger range 1 to ( 2** 24):= 1
LOOP_FIFO_EN_Gboolean := false
out emptysl
Definition: FifoCascade.vhd:72
POP_FIFO_COUNT_Gpositive := 1
out underflowsl
Definition: FifoCascade.vhd:69
ALTERA_RAM_Gstring := "M9K"
slv( LOOP_COUNT_C- 1 downto 0) iloopFifoValid
CASCADE_SIZE_Ginteger range 1 to ( 2** 24):= 1
Definition: FifoCascade.vhd:29
out prog_emptysl
Definition: FifoCascade.vhd:70
out wr_data_countslv( ADDR_WIDTH_G- 1 downto 0)
Definition: FifoCascade.vhd:55
AxiLiteWriteSlaveType :=(awready => '0',wready => '0',bresp =>( others => '0'),bvalid => '0') AXI_LITE_WRITE_SLAVE_INIT_C
Definition: AxiLitePkg.vhd:156
Slv( LOOP_COUNT_C- 1 downto 0) loopFifoWrite
in axiReadMasterAxiLiteReadMasterType
RST_POLARITY_Gsl := '1'
Definition: FifoCascade.vhd:31
std_logic_vector slv
Definition: StdRtlPkg.vhd:29
Slv32Array( LOOP_COUNT_C- 1 downto 0) iloopFifoDout
out rd_data_countslv( ADDR_WIDTH_G- 1 downto 0)
Definition: FifoCascade.vhd:67
out popFifoFullslv( POP_FIFO_COUNT_G- 1 downto 0)
slv( PUSH_COUNT_C- 1 downto 0) pushFifoWrite
integer := 2** POP_SIZE_C POP_COUNT_C