SURF  1.0
AxiWritePathFifo.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : AxiWritePathFifo.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2014-04-25
5 -- Last update: 2014-05-01
6 -------------------------------------------------------------------------------
7 -- Description:
8 -- FIFO for AXI write path transactions.
9 -------------------------------------------------------------------------------
10 -- This file is part of 'SLAC Firmware Standard Library'.
11 -- It is subject to the license terms in the LICENSE.txt file found in the
12 -- top-level directory of this distribution and at:
13 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html.
14 -- No part of 'SLAC Firmware Standard Library', including this file,
15 -- may be copied, modified, propagated, or distributed except according to
16 -- the terms contained in the LICENSE.txt file.
17 -------------------------------------------------------------------------------
18 
19 library ieee;
20 use ieee.std_logic_1164.all;
21 use ieee.std_logic_unsigned.all;
22 use ieee.std_logic_arith.all;
23 
24 use work.StdRtlPkg.all;
25 use work.AxiPkg.all;
26 
27 --! @see entity
28  --! @ingroup axi
30  generic (
31 
32  -- General Configurations
33  TPD_G : time := 1 ns;
34 
35  -- General FIFO configurations
36  XIL_DEVICE_G : string := "7SERIES";
37  USE_BUILT_IN_G : boolean := false;
38  GEN_SYNC_FIFO_G : boolean := false;
39  ALTERA_SYN_G : boolean := false;
40  ALTERA_RAM_G : string := "M9K";
41 
42  -- Bit Optimizations
43  ADDR_LSB_G : natural range 0 to 31 := 0;
44  ID_FIXED_EN_G : boolean := false;
45  SIZE_FIXED_EN_G : boolean := false;
46  BURST_FIXED_EN_G : boolean := false;
47  LEN_FIXED_EN_G : boolean := false;
48  LOCK_FIXED_EN_G : boolean := false;
49  PROT_FIXED_EN_G : boolean := false;
50  CACHE_FIXED_EN_G : boolean := false;
51 
52  -- Address FIFO Config
53  ADDR_BRAM_EN_G : boolean := true;
54  ADDR_CASCADE_SIZE_G : integer range 1 to (2**24) := 1;
55  ADDR_FIFO_ADDR_WIDTH_G : integer range 4 to 48 := 9;
56 
57  -- Data FIFO Config
58  DATA_BRAM_EN_G : boolean := true;
59  DATA_CASCADE_SIZE_G : integer range 1 to (2**24) := 1;
60  DATA_FIFO_ADDR_WIDTH_G : integer range 4 to 48 := 9;
61  DATA_FIFO_PAUSE_THRESH_G : integer range 1 to (2**24) := 500;
62 
63  -- Response FIFO Config
64  RESP_BRAM_EN_G : boolean := true;
65  RESP_CASCADE_SIZE_G : integer range 1 to (2**24) := 1;
66  RESP_FIFO_ADDR_WIDTH_G : integer range 4 to 48 := 9;
67 
68  -- BUS Config
70  );
71  port (
72 
73  -- Slave Port
74  sAxiClk : in sl;
75  sAxiRst : in sl;
79 
80  -- Master Port
81  mAxiClk : in sl;
82  mAxiRst : in sl;
85 end AxiWritePathFifo;
86 
87 architecture rtl of AxiWritePathFifo is
88 
89  constant ADDR_BITS_C : integer := AXI_CONFIG_G.ADDR_WIDTH_C - ADDR_LSB_G;
90  constant ID_BITS_C : integer := ite(ID_FIXED_EN_G,0,AXI_CONFIG_G.ID_BITS_C);
91  constant LEN_BITS_C : integer := ite(LEN_FIXED_EN_G,0,AXI_CONFIG_G.LEN_BITS_C);
92  constant SIZE_BITS_C : integer := ite(SIZE_FIXED_EN_G,0,3);
93  constant BURST_BITS_C : integer := ite(BURST_FIXED_EN_G,0,2);
94  constant LOCK_BITS_C : integer := ite(LOCK_FIXED_EN_G,0,2);
95  constant PROT_BITS_C : integer := ite(PROT_FIXED_EN_G,0,3);
96  constant CACHE_BITS_C : integer := ite(CACHE_FIXED_EN_G,0,4);
97  constant DATA_BITS_C : integer := AXI_CONFIG_G.DATA_BYTES_C*8;
98  constant STRB_BITS_C : integer := AXI_CONFIG_G.DATA_BYTES_C;
99  constant RESP_BITS_C : integer := 2;
100 
101  constant ADDR_FIFO_SIZE_C : integer := ADDR_BITS_C + ID_BITS_C + LEN_BITS_C + SIZE_BITS_C +
102  BURST_BITS_C + LOCK_BITS_C + PROT_BITS_C + CACHE_BITS_C;
103 
104  constant DATA_FIFO_SIZE_C : integer := 1 + DATA_BITS_C + STRB_BITS_C + ID_BITS_C;
105 
106  constant RESP_FIFO_SIZE_C : integer := RESP_BITS_C + ID_BITS_C;
107 
108  -- Convert address record to slv
109  function addrToSlv (din : AxiWriteMasterType) return slv is
110  variable retValue : slv(ADDR_FIFO_SIZE_C-1 downto 0);
111  variable i : integer;
112  begin
113 
114  retValue(ADDR_BITS_C-1 downto 0) := din.awaddr(AXI_CONFIG_G.ADDR_WIDTH_C-1 downto ADDR_LSB_G);
115  i := ADDR_BITS_C;
116 
117  if ID_FIXED_EN_G = false then
118  retValue((ID_BITS_C+i)-1 downto i) := din.awid(ID_BITS_C-1 downto 0);
119  i := i + ID_BITS_C;
120  end if;
121 
122  if LEN_FIXED_EN_G = false then
123  retValue((LEN_BITS_C+i)-1 downto i) := din.awlen(LEN_BITS_C-1 downto 0);
124  i := i + LEN_BITS_C;
125  end if;
126 
127  if SIZE_FIXED_EN_G = false then
128  retValue((SIZE_BITS_C+i)-1 downto i) := din.awsize(SIZE_BITS_C-1 downto 0);
129  i := i + SIZE_BITS_C;
130  end if;
131 
132  if BURST_FIXED_EN_G = false then
133  retValue((BURST_BITS_C+i)-1 downto i) := din.awburst(BURST_BITS_C-1 downto 0);
134  i := i + BURST_BITS_C;
135  end if;
136 
137  if LOCK_FIXED_EN_G = false then
138  retValue((LOCK_BITS_C+i)-1 downto i) := din.awlock(LOCK_BITS_C-1 downto 0);
139  i := i + LOCK_BITS_C;
140  end if;
141 
142  if PROT_FIXED_EN_G = false then
143  retValue((PROT_BITS_C+i)-1 downto i) := din.awprot(PROT_BITS_C-1 downto 0);
144  i := i + PROT_BITS_C;
145  end if;
146 
147  if CACHE_FIXED_EN_G = false then
148  retValue((CACHE_BITS_C+i)-1 downto i) := din.awcache(CACHE_BITS_C-1 downto 0);
149  i := i + CACHE_BITS_C;
150  end if;
151 
152  return(retValue);
153 
154  end function;
155 
156  -- Convert slv to address record
157 - procedure slvToAddr (din : in slv(ADDR_FIFO_SIZE_C1 downto 0);
158  valid : in sl;
159  slave : in AxiWriteMasterType;
160  master : inout AxiWriteMasterType ) is
161  variable i : integer;
162  begin
163 
164  -- Set valid,
165  master.awvalid := valid;
166 
167  master.awaddr := (others=>'0');
168  master.awaddr(AXI_CONFIG_G.ADDR_WIDTH_C-1 downto ADDR_LSB_G) := din(ADDR_BITS_C-1 downto 0);
169  i := ADDR_BITS_C;
170 
171  if ID_FIXED_EN_G then
172  master.awid := slave.awid;
173  else
174  master.awid := (others=>'0');
175  master.awid(ID_BITS_C-1 downto 0) := din((ID_BITS_C+i)-1 downto i);
176  i := i + ID_BITS_C;
177  end if;
178 
179  if LEN_FIXED_EN_G then
180  master.awlen := slave.awlen;
181  else
182  master.awlen := (others=>'0');
183  master.awlen(LEN_BITS_C-1 downto 0) := din((LEN_BITS_C+i)-1 downto i);
184  i := i + LEN_BITS_C;
185  end if;
186 
187  if SIZE_FIXED_EN_G then
188  master.awsize := slave.awsize;
189  else
190  master.awsize := (others=>'0');
191  master.awsize(SIZE_BITS_C-1 downto 0) := din((SIZE_BITS_C+i)-1 downto i);
192  i := i + SIZE_BITS_C;
193  end if;
194 
195  if BURST_FIXED_EN_G then
196  master.awburst := slave.awburst;
197  else
198  master.awburst := (others=>'0');
199  master.awburst(BURST_BITS_C-1 downto 0) := din((BURST_BITS_C+i)-1 downto i);
200  i := i + BURST_BITS_C;
201  end if;
202 
203  if LOCK_FIXED_EN_G then
204  master.awlock := slave.awlock;
205  else
206  master.awlock := (others=>'0');
207  master.awlock(LOCK_BITS_C-1 downto 0) := din((LOCK_BITS_C+i)-1 downto i);
208  i := i + LOCK_BITS_C;
209  end if;
210 
211  if PROT_FIXED_EN_G then
212  master.awprot := (others=>'0');
213  master.awprot := slave.awprot;
214  else
215  master.awprot(PROT_BITS_C-1 downto 0) := din((PROT_BITS_C+i)-1 downto i);
216  i := i + PROT_BITS_C;
217  end if;
218 
219  if CACHE_FIXED_EN_G then
220  master.awcache := (others=>'0');
221  master.awcache := slave.awcache;
222  else
223  master.awcache(CACHE_BITS_C-1 downto 0) := din((CACHE_BITS_C+i)-1 downto i);
224  i := i + CACHE_BITS_C;
225  end if;
226 
227  end procedure;
228 
229  -- Convert data record to slv
230  function dataToSlv (din : AxiWriteMasterType) return slv is
231  variable retValue : slv(DATA_FIFO_SIZE_C-1 downto 0);
232  variable i : integer;
233  begin
234 
235  retValue(0) := din.wlast;
236  i := 1;
237 
238  retValue((DATA_BITS_C+i)-1 downto i) := din.wdata(DATA_BITS_C-1 downto 0);
239  i := i + DATA_BITS_C;
240 
241  retValue((STRB_BITS_C+i)-1 downto i) := din.wstrb(STRB_BITS_C-1 downto 0);
242  i := i + STRB_BITS_C;
243 
244  if ID_FIXED_EN_G = false then
245  retValue((ID_BITS_C+i)-1 downto i) := din.wid(ID_BITS_C-1 downto 0);
246  i := i + ID_BITS_C;
247  end if;
248 
249  return(retValue);
250 
251  end function;
252 
253  -- Convert slv to data record
254 - procedure slvToData (din : in slv(DATA_FIFO_SIZE_C1 downto 0);
255  valid : in sl;
256  slave : in AxiWriteMasterType;
257  master : inout AxiWriteMasterType ) is
258  variable i : integer;
259  begin
260 
261  -- Set valid,
262  master.wvalid := valid;
263  master.wlast := din(0);
264  i := 1;
265 
266  master.wdata := (others=>'0');
267  master.wdata(DATA_BITS_C-1 downto 0) := din((DATA_BITS_C+i)-1 downto i);
268  i := i + DATA_BITS_C;
269 
270  master.wstrb := (others=>'0');
271  master.wstrb(STRB_BITS_C-1 downto 0) := din((STRB_BITS_C+i)-1 downto i);
272  i := i + STRB_BITS_C;
273 
274  if ID_FIXED_EN_G then
275  master.wid := slave.wid;
276  else
277  master.wid := (others=>'0');
278  master.wid(ID_BITS_C-1 downto 0) := din((ID_BITS_C+i)-1 downto i);
279  i := i + ID_BITS_C;
280  end if;
281 
282  end procedure;
283 
284  -- Convert resp record to slv
285  function respToSlv (din : AxiWriteSlaveType) return slv is
286  variable retValue : slv(RESP_FIFO_SIZE_C-1 downto 0);
287  variable i : integer;
288  begin
289 
290  retValue(RESP_BITS_C-1 downto 0) := din.bresp;
291  i := RESP_BITS_C;
292 
293  if ID_FIXED_EN_G = false then
294  retValue((ID_BITS_C+i)-1 downto i) := din.bid(ID_BITS_C-1 downto 0);
295  i := i + ID_BITS_C;
296  end if;
297 
298  return(retValue);
299 
300  end function;
301 
302  -- Convert slv to resp record
303 - procedure slvToResp (din : in slv(RESP_FIFO_SIZE_C1 downto 0);
304  valid : in sl;
305  master : in AxiWriteMasterType;
306  slave : inout AxiWriteSlaveType ) is
307  variable i : integer;
308  begin
309 
310  -- Set valid,
311  slave.bvalid := valid;
312 
313  slave.bresp := din(RESP_BITS_C-1 downto 0);
314  i := RESP_BITS_C;
315 
316  if ID_FIXED_EN_G then
317  slave.bid := master.wid;
318  else
319  slave.bid := (others=>'0');
320  slave.bid(ID_BITS_C-1 downto 0) := din((ID_BITS_C+i)-1 downto i);
321  i := ID_BITS_C;
322  end if;
323 
324  end procedure;
325 
326  signal addrFifoWrite : sl;
327  signal addrFifoDin : slv(ADDR_FIFO_SIZE_C-1 downto 0);
328  signal addrFifoDout : slv(ADDR_FIFO_SIZE_C-1 downto 0);
329  signal addrFifoValid : sl;
330  signal addrFifoAFull : sl;
331  signal addrFifoRead : sl;
332  signal dataFifoWrite : sl;
333  signal dataFifoDin : slv(DATA_FIFO_SIZE_C-1 downto 0);
334  signal dataFifoDout : slv(DATA_FIFO_SIZE_C-1 downto 0);
335  signal dataFifoValid : sl;
336  signal dataFifoAFull : sl;
337  signal dataFifoRead : sl;
338  signal respFifoWrite : sl;
339  signal respFifoDin : slv(RESP_FIFO_SIZE_C-1 downto 0);
340  signal respFifoDout : slv(RESP_FIFO_SIZE_C-1 downto 0);
341  signal respFifoValid : sl;
342  signal respFifoAFull : sl;
343  signal respFifoRead : sl;
344 
345 begin
346 
347  -------------------------
348  -- FIFOs
349  -------------------------
350 
351  U_AddrFifo : entity work.FifoCascade
352  generic map (
353  TPD_G => TPD_G,
355  LAST_STAGE_ASYNC_G => true,
356  RST_POLARITY_G => '1',
357  RST_ASYNC_G => false,
360  FWFT_EN_G => true,
361  USE_DSP48_G => "no",
366  SYNC_STAGES_G => 3,
367  DATA_WIDTH_G => ADDR_FIFO_SIZE_C,
369  INIT_G => "0",
370  FULL_THRES_G => 1,
371  EMPTY_THRES_G => 1
372  )
373  port map (
374  rst => sAxiRst,
375  wr_clk => sAxiClk,
376  wr_en => addrFifoWrite,
377  din => addrFifoDin,
378  wr_data_count => open,
379  wr_ack => open,
380  overflow => open,
381  prog_full => open,
382  almost_full => addrFifoAFull,
383  full => open,
384  not_full => open,
385  rd_clk => mAxiClk,
386  rd_en => addrFifoRead,
387  dout => addrFifoDout,
388  rd_data_count => open,
389  valid => addrFifoValid,
390  underflow => open,
391  prog_empty => open,
392  almost_empty => open,
393  empty => open
394  );
395 
396  U_DataFifo : entity work.FifoCascade
397  generic map (
398  TPD_G => TPD_G,
400  LAST_STAGE_ASYNC_G => true,
401  RST_POLARITY_G => '1',
402  RST_ASYNC_G => false,
405  FWFT_EN_G => true,
406  USE_DSP48_G => "no",
411  SYNC_STAGES_G => 3,
412  DATA_WIDTH_G => DATA_FIFO_SIZE_C,
414  INIT_G => "0",
416  EMPTY_THRES_G => 1
417  )
418  port map (
419  rst => sAxiRst,
420  wr_clk => sAxiClk,
421  wr_en => dataFifoWrite,
422  din => dataFifoDin,
423  wr_data_count => open,
424  wr_ack => open,
425  overflow => sAxiCtrl.overflow,
426  prog_full => sAxiCtrl.pause,
427  almost_full => dataFifoAFull,
428  full => open,
429  not_full => open,
430  rd_clk => mAxiClk,
431  rd_en => dataFifoRead,
432  dout => dataFifoDout,
433  rd_data_count => open,
434  valid => dataFifoValid,
435  underflow => open,
436  prog_empty => open,
437  almost_empty => open,
438  empty => open
439  );
440 
441  U_RespFifo : entity work.FifoCascade
442  generic map (
443  TPD_G => TPD_G,
445  LAST_STAGE_ASYNC_G => true,
446  RST_POLARITY_G => '1',
447  RST_ASYNC_G => false,
450  FWFT_EN_G => true,
451  USE_DSP48_G => "no",
456  SYNC_STAGES_G => 3,
457  DATA_WIDTH_G => RESP_FIFO_SIZE_C,
459  INIT_G => "0",
460  FULL_THRES_G => 1,
461  EMPTY_THRES_G => 1
462  )
463  port map (
464  rst => sAxiRst,
465  wr_clk => mAxiClk,
466  wr_en => respFifoWrite,
467  din => respFifoDin,
468  wr_data_count => open,
469  wr_ack => open,
470  overflow => open,
471  prog_full => open,
472  almost_full => respFifoAFull,
473  full => open,
474  not_full => open,
475  rd_clk => sAxiClk,
476  rd_en => respFifoRead,
477  dout => respFifoDout,
478  rd_data_count => open,
479  valid => respFifoValid,
480  underflow => open,
481  prog_empty => open,
482  almost_empty => open,
483  empty => open
484  );
485 
486 
487  -------------------------
488  -- Fifo Inputs
489  -------------------------
490 
491  addrFifoDin <= addrToSlv(sAxiWriteMaster);
492  addrFifoWrite <= sAxiWriteMaster.awvalid and (not addrFifoAFull);
493 
494  dataFifoDin <= dataToSlv(sAxiWriteMaster);
495  dataFifoWrite <= sAxiWriteMaster.wvalid and (not dataFifoAFull);
496 
497  respFifoDin <= respToSlv(mAxiWriteSlave);
498  respFifoWrite <= mAxiWriteSlave.bvalid and (not respFifoAFull);
499 
500  -------------------------
501  -- Fifo Reads
502  -------------------------
503  addrFifoRead <= mAxiWriteSlave.awready and addrFifoValid;
504  dataFifoRead <= mAxiWriteSlave.wready and dataFifoValid;
505  respFifoRead <= sAxiWriteMaster.bready and respFifoValid;
506 
507  -------------------------
508  -- Fifo Outputs
509  -------------------------
510 
511  process ( sAxiWriteMaster, mAxiWriteSlave,
512  addrFifoDout, addrFifoAFull, addrFifoValid,
513  dataFifoDout, dataFifoAFull, dataFifoValid,
514  respFifoDout, respFifoAFull, respFifoValid ) is
515 
516  variable imAxiWriteMaster : AxiWriteMasterType;
517  variable isAxiWriteSlave : AxiWriteSlaveType;
518 
519  begin
520 
521  imAxiWriteMaster := AXI_WRITE_MASTER_INIT_C;
522  isAxiWriteSlave := AXI_WRITE_SLAVE_INIT_C;
523 
524  slvToAddr(addrFifoDout, addrFifoValid, sAxiWriteMaster, imAxiWriteMaster);
525  slvToData(dataFifoDout, dataFifoValid, sAxiWriteMaster, imAxiWriteMaster);
526  slvToResp(respFifoDout, respFifoValid, sAxiWriteMaster, isAxiWriteSlave);
527 
528  isAxiWriteSlave.awready := not addrFifoAFull;
529  isAxiWriteSlave.wready := not dataFifoAFull;
530  imAxiWriteMaster.bready := not respFifoAFull;
531 
532  sAxiWriteSlave <= isAxiWriteSlave;
533  mAxiWriteMaster <= imAxiWriteMaster;
534 
535  end process;
536 
537 end rtl;
538 
out almost_fullsl
Definition: FifoCascade.vhd:59
AxiWriteSlaveType :=(awready => '0',wready => '0',bresp =>( others => '0'),bvalid => '0',bid =>( others => '0')) AXI_WRITE_SLAVE_INIT_C
Definition: AxiPkg.vhd:182
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
RESP_FIFO_ADDR_WIDTH_Ginteger range 4 to 48:= 9
DATA_BRAM_EN_Gboolean := true
XIL_DEVICE_Gstring := "7SERIES"
Definition: FifoCascade.vhd:40
AxiCtrlType
Definition: AxiPkg.vhd:198
out sAxiWriteSlaveAxiWriteSlaveType
slv( 2 downto 0) awprot
Definition: AxiPkg.vhd:117
RESP_CASCADE_SIZE_Ginteger range 1 to ( 2** 24):= 1
sl wvalid
Definition: AxiPkg.vhd:124
ADDR_CASCADE_SIZE_Ginteger range 1 to ( 2** 24):= 1
RST_ASYNC_Gboolean := false
Definition: FifoCascade.vhd:32
out almost_emptysl
Definition: FifoCascade.vhd:71
slv( 1 downto 0) awlock
Definition: AxiPkg.vhd:116
sl bvalid
Definition: AxiPkg.vhd:178
INIT_Gslv := "0"
Definition: FifoCascade.vhd:45
std_logic sl
Definition: StdRtlPkg.vhd:28
ALTERA_RAM_Gstring := "M9K"
sl wlast
Definition: AxiPkg.vhd:123
slv( 1023 downto 0) wdata
Definition: AxiPkg.vhd:122
slv( 7 downto 0) awlen
Definition: AxiPkg.vhd:113
BRAM_EN_Gboolean := true
Definition: FifoCascade.vhd:34
slv( 2 downto 0) awsize
Definition: AxiPkg.vhd:114
sl awready
Definition: AxiPkg.vhd:173
sl bready
Definition: AxiPkg.vhd:128
in dinslv( DATA_WIDTH_G- 1 downto 0)
Definition: FifoCascade.vhd:54
slv( 127 downto 0) wstrb
Definition: AxiPkg.vhd:126
PROT_FIXED_EN_Gboolean := false
LOCK_FIXED_EN_Gboolean := false
in rd_clksl
Definition: FifoCascade.vhd:64
AXI_CONFIG_GAxiConfigType := AXI_CONFIG_INIT_C
out prog_fullsl
Definition: FifoCascade.vhd:58
slv( 31 downto 0) bid
Definition: AxiPkg.vhd:179
ADDR_BRAM_EN_Gboolean := true
EMPTY_THRES_Ginteger range 1 to ( 2** 24):= 1
Definition: FifoCascade.vhd:47
ALTERA_SYN_Gboolean := false
Definition: FifoCascade.vhd:37
DATA_CASCADE_SIZE_Ginteger range 1 to ( 2** 24):= 1
in rd_ensl := '0'
Definition: FifoCascade.vhd:65
positive range 12 to 64 ADDR_WIDTH_C
Definition: AxiPkg.vhd:214
AxiWriteMasterType
Definition: AxiPkg.vhd:108
out wr_acksl
Definition: FifoCascade.vhd:56
in rstsl := '0'
Definition: FifoCascade.vhd:50
out sAxiCtrlAxiCtrlType
sl wready
Definition: AxiPkg.vhd:175
in wr_clksl
Definition: FifoCascade.vhd:52
out overflowsl
Definition: FifoCascade.vhd:57
_library_ ieeeieee
FULL_THRES_Ginteger range 1 to ( 2** 24):= 1
Definition: FifoCascade.vhd:46
LEN_FIXED_EN_Gboolean := false
SYNC_STAGES_Ginteger range 3 to ( 2** 24):= 3
Definition: FifoCascade.vhd:41
sl awvalid
Definition: AxiPkg.vhd:110
ALTERA_SYN_Gboolean := false
in mAxiWriteSlaveAxiWriteSlaveType
GEN_SYNC_FIFO_Gboolean := false
AxiConfigType
Definition: AxiPkg.vhd:213
in wr_ensl := '0'
Definition: FifoCascade.vhd:53
out fullsl
Definition: FifoCascade.vhd:60
AxiWriteSlaveType
Definition: AxiPkg.vhd:171
ADDR_FIFO_ADDR_WIDTH_Ginteger range 4 to 48:= 9
SIZE_FIXED_EN_Gboolean := false
DATA_FIFO_PAUSE_THRESH_Ginteger range 1 to ( 2** 24):= 500
RESP_BRAM_EN_Gboolean := true
ADDR_LSB_Gnatural range 0 to 31:= 0
slv( 31 downto 0) wid
Definition: AxiPkg.vhd:125
slv( 1 downto 0) awburst
Definition: AxiPkg.vhd:115
GEN_SYNC_FIFO_Gboolean := false
Definition: FifoCascade.vhd:33
slv( 3 downto 0) awcache
Definition: AxiPkg.vhd:118
USE_BUILT_IN_Gboolean := false
TPD_Gtime := 1 ns
Definition: FifoCascade.vhd:28
slv( 63 downto 0) awaddr
Definition: AxiPkg.vhd:111
CACHE_FIXED_EN_Gboolean := false
positive range 1 to 128 DATA_BYTES_C
Definition: AxiPkg.vhd:215
USE_DSP48_Gstring := "no"
Definition: FifoCascade.vhd:36
LAST_STAGE_ASYNC_Gboolean := true
Definition: FifoCascade.vhd:30
ADDR_WIDTH_Ginteger range 4 to 48:= 4
Definition: FifoCascade.vhd:44
XIL_DEVICE_Gstring := "7SERIES"
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
slv( 31 downto 0) awid
Definition: AxiPkg.vhd:112
out emptysl
Definition: FifoCascade.vhd:72
out underflowsl
Definition: FifoCascade.vhd:69
slv( 1 downto 0) bresp
Definition: AxiPkg.vhd:177
CASCADE_SIZE_Ginteger range 1 to ( 2** 24):= 1
Definition: FifoCascade.vhd:29
BURST_FIXED_EN_Gboolean := false
out prog_emptysl
Definition: FifoCascade.vhd:70
AxiConfigType :=axiConfig(ADDR_WIDTH_C => 32,DATA_BYTES_C => 4,ID_BITS_C => 12,LEN_BITS_C => 4) AXI_CONFIG_INIT_C
Definition: AxiPkg.vhd:227
positive range 1 to 32 ID_BITS_C
Definition: AxiPkg.vhd:216
out wr_data_countslv( ADDR_WIDTH_G- 1 downto 0)
Definition: FifoCascade.vhd:55
ID_FIXED_EN_Gboolean := false
AxiWriteMasterType :=(awvalid => '0',awaddr =>( others => '0'),awid =>( others => '0'),awlen =>( others => '0'),awsize =>( others => '0'),awburst =>( others => '0'),awlock =>( others => '0'),awprot =>( others => '0'),awcache =>( others => '0'),awqos =>( others => '0'),awregion =>( others => '0'),wdata =>( others => '0'),wlast => '0',wvalid => '0',wid =>( others => '0'),wstrb =>( others => '0'),bready => '0') AXI_WRITE_MASTER_INIT_C
Definition: AxiPkg.vhd:131
in sAxiWriteMasterAxiWriteMasterType
RST_POLARITY_Gsl := '1'
Definition: FifoCascade.vhd:31
out mAxiWriteMasterAxiWriteMasterType
std_logic_vector slv
Definition: StdRtlPkg.vhd:29
natural range 0 to 8 LEN_BITS_C
Definition: AxiPkg.vhd:217
out rd_data_countslv( ADDR_WIDTH_G- 1 downto 0)
Definition: FifoCascade.vhd:67
DATA_FIFO_ADDR_WIDTH_Ginteger range 4 to 48:= 9