SURF  1.0
AxiStreamDma.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : AxiStreamDma.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2014-04-25
5 -- Last update: 2017-05-03
6 -------------------------------------------------------------------------------
7 -- Description:
8 -- Generic AXI Stream DMA block for frame at a time transfers.
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_arith.all;
22 use ieee.std_logic_unsigned.all;
23 
24 use work.StdRtlPkg.all;
25 use work.AxiStreamPkg.all;
26 use work.AxiLitePkg.all;
27 use work.AxiPkg.all;
28 use work.AxiDmaPkg.all;
29 
30 --! @see entity
31  --! @ingroup axi
32 entity AxiStreamDma is
33  generic (
34  TPD_G : time := 1 ns;
35  FREE_ADDR_WIDTH_G : integer := 9;
36  AXIL_COUNT_G : integer range 1 to 2 := 1;
37  AXIL_BASE_ADDR_G : slv(31 downto 0) := x"00000000";
38  AXI_READY_EN_G : boolean := false;
39  AXIS_READY_EN_G : boolean := false;
42  AXI_BURST_G : slv(1 downto 0) := "01";
43  AXI_CACHE_G : slv(3 downto 0) := "1111";
44  PEND_THRESH_G : natural := 0;
45  BYP_SHIFT_G : boolean := false);
46  port (
47  -- Clock/Reset
48  axiClk : in sl;
49  axiRst : in sl;
50  -- Register Access & Interrupt
55  interrupt : out sl;
56  online : out sl;
57  acknowledge : out sl;
58  -- AXI Stream Interface
64  -- AXI Interface
70 end AxiStreamDma;
71 
72 architecture structure of AxiStreamDma is
73 
74  constant PUSH_ADDR_WIDTH_C : integer := FREE_ADDR_WIDTH_G;
75  constant POP_ADDR_WIDTH_C : integer := FREE_ADDR_WIDTH_G;
76 
77  constant POP_FIFO_PFULL_C : integer := (2**POP_ADDR_WIDTH_C) - 10;
78 
79  constant POP_FIFO_COUNT_C : integer := 2;
80  constant PUSH_FIFO_COUNT_C : integer := 2;
81 
82  constant IB_FIFO_C : integer := 0;
83  constant OB_FIFO_C : integer := 1;
84 
85  constant CROSSBAR_CONN_C : slv(15 downto 0) := x"FFFF";
86 
87  constant LOC_INDEX_C : natural := 0;
88  constant LOC_BASE_ADDR_C : slv(31 downto 0) := AXIL_BASE_ADDR_G(31 downto 12) & x"000";
89  constant LOC_NUM_BITS_C : natural := 10;
90 
91  constant FIFO_INDEX_C : natural := 1;
92  constant FIFO_BASE_ADDR_C : slv(31 downto 0) := AXIL_BASE_ADDR_G(31 downto 12) & x"400";
93  constant FIFO_NUM_BITS_C : natural := 10;
94 
96  LOC_INDEX_C => (
100  FIFO_INDEX_C => (
104 
105  type StateType is (
106  IDLE_S,
107  WAIT_S,
108  FIFO_0_S,
109  FIFO_1_S);
110 
111  type RegType is record
112  maxRxSize : slv(23 downto 0);
121  swCache : slv(3 downto 0);
124  end record RegType;
125 
126  constant REG_INIT_C : RegType := (
127  maxRxSize => (others => '0'),
128  interrupt => '0',
129  intEnable => '0',
130  intAck => '0',
131  acknowledge => '0',
132  online => '0',
133  rxEnable => '0',
134  txEnable => '0',
135  fifoClear => '1',
136  swCache => AXI_CACHE_G,
139 
140  signal r : RegType := REG_INIT_C;
141  signal rin : RegType;
142 
143  type IbType is record
148  popFifoDin : slv(31 downto 0);
150  end record IbType;
151 
152  constant IB_INIT_C : IbType := (
153  state => IDLE_S,
154  intPending => '0',
156  popFifoWrite => '0',
157  popFifoDin => (others => '0'),
158  pushFifoRead => '0');
159 
160  signal ib : IbType := IB_INIT_C;
161  signal ibin : IbType;
162 
163  type ObType is record
164  state : StateType;
165  intPending : sl;
167  popFifoWrite : sl;
168  popFifoDin : slv(31 downto 0);
169  pushFifoRead : sl;
170  end record ObType;
171 
172  constant OB_INIT_C : ObType := (
173  state => IDLE_S,
174  intPending => '0',
176  popFifoWrite => '0',
177  popFifoDin => (others => '0'),
178  pushFifoRead => '0');
179 
180  signal ob : ObType := OB_INIT_C;
181  signal obin : ObType;
182 
184  signal intReadSlaves : AxiLiteReadSlaveArray(1 downto 0);
187 
188  signal popFifoClk : slv(POP_FIFO_COUNT_C-1 downto 0);
189  signal popFifoRst : slv(POP_FIFO_COUNT_C-1 downto 0);
190  signal popFifoValid : slv(POP_FIFO_COUNT_C-1 downto 0);
191  signal popFifoWrite : slv(POP_FIFO_COUNT_C-1 downto 0);
192  signal popFifoPFull : slv(POP_FIFO_COUNT_C-1 downto 0);
193  signal popFifoDin : Slv32Array(POP_FIFO_COUNT_C-1 downto 0);
194  signal pushFifoClk : slv(POP_FIFO_COUNT_C-1 downto 0);
195  signal pushFifoRst : slv(POP_FIFO_COUNT_C-1 downto 0);
196  signal pushFifoValid : slv(PUSH_FIFO_COUNT_C-1 downto 0);
198  signal pushFifoRead : slv(PUSH_FIFO_COUNT_C-1 downto 0);
199 
201  signal obReq : AxiReadDmaReqType;
203  signal ibReq : AxiWriteDmaReqType;
204 
205  -- attribute dont_touch : string;
206  -- attribute dont_touch of ob : signal is "true";
207  -- attribute dont_touch of obAck : signal is "true";
208  -- attribute dont_touch of obReq : signal is "true";
209  -- attribute dont_touch of ib : signal is "true";
210  -- attribute dont_touch of ibAck : signal is "true";
211  -- attribute dont_touch of ibReq : signal is "true";
212 
213 begin
214 
215  process (axiClk) is
216  begin
217  if rising_edge(axiClk) then
218  r <= rin after TPD_G;
219  ib <= ibin after TPD_G;
220  ob <= obin after TPD_G;
221  end if;
222  end process;
223 
224  U_CrossEnGen : if AXIL_COUNT_G = 1 generate
225  U_AxiCrossbar : entity work.AxiLiteCrossbar
226  generic map (
227  TPD_G => TPD_G,
228  NUM_SLAVE_SLOTS_G => 1,
229  NUM_MASTER_SLOTS_G => 2,
232  port map (
233  axiClk => axiClk,
234  axiClkRst => axiRst,
243  end generate;
244 
245  U_CrossDisGen : if AXIL_COUNT_G = 2 generate
250  end generate;
251 
252  U_SwFifos : entity work.AxiLiteFifoPushPop
253  generic map (
254  TPD_G => TPD_G,
255  POP_FIFO_COUNT_G => 2,
256  POP_SYNC_FIFO_G => true,
257  POP_BRAM_EN_G => true,
260  LOOP_FIFO_EN_G => false,
261  LOOP_FIFO_COUNT_G => 1,
262  LOOP_BRAM_EN_G => false,
263  LOOP_ADDR_WIDTH_G => 9,
264  PUSH_FIFO_COUNT_G => 2,
265  PUSH_SYNC_FIFO_G => true,
266  PUSH_BRAM_EN_G => true,
268  RANGE_LSB_G => 8,
269  VALID_POSITION_G => 31,
270  VALID_POLARITY_G => '1',
271  ALTERA_SYN_G => false,
272  ALTERA_RAM_G => "M9K",
273  USE_BUILT_IN_G => false,
274  XIL_DEVICE_G => "7SERIES")
275  port map (
276  axiClk => axiClk,
277  axiClkRst => axiRst,
287  popFifoFull => open,
288  popFifoAFull => open,
295 
296  U_ClkRstGen : for i in 0 to 1 generate
297  popFifoClk(i) <= axiClk;
298  popFifoRst(i) <= r.fifoClear;
299  pushFifoClk(i) <= axiClk;
300  pushFifoRst(i) <= r.fifoClear;
301  end generate;
302 
303  -------------------------------------
304  -- Local Register Space
305  -------------------------------------
307  variable v : RegType;
308  variable axiStatus : AxiLiteStatusType;
309  begin
310  v := r;
311 
312  v.intAck := '0';
313 
314  axiSlaveWaitTxn(intWriteMasters(0), intReadMasters(0), v.axiWriteSlave, v.axiReadSlave, axiStatus);
315 
316  -- Write
317  if (axiStatus.writeEnable = '1') then
318 
319  case intWriteMasters(0).awaddr(7 downto 0) is
320  when x"00" =>
321  v.rxEnable := intWriteMasters(0).wdata(0);
322  when x"04" =>
323  v.txEnable := intWriteMasters(0).wdata(0);
324  when x"08" =>
325  v.fifoClear := intWriteMasters(0).wdata(0);
326  when x"0C" =>
327  v.intEnable := intWriteMasters(0).wdata(0);
328  when x"14" =>
329  v.maxRxSize := intWriteMasters(0).wdata(23 downto 0);
330  when x"18" =>
331  v.online := intWriteMasters(0).wdata(0);
332  v.acknowledge := intWriteMasters(0).wdata(1);
333  when x"1C" =>
334  v.intAck := intWriteMasters(0).wdata(0);
335  when x"20" =>
336  v.swCache := intWriteMasters(0).wdata(3 downto 0);
337  when others =>
338  null;
339  end case;
340 
341  axiSlaveWriteResponse(v.axiWriteSlave);
342  end if;
343 
344  -- Read
345  if (axiStatus.readEnable = '1') then
346  v.axiReadSlave.rdata := (others => '0');
347 
348  case intReadMasters(0).araddr(7 downto 0) is
349  when x"00" =>
350  v.axiReadSlave.rdata(0) := r.rxEnable;
351  when x"04" =>
352  v.axiReadSlave.rdata(0) := r.txEnable;
353  when x"08" =>
354  v.axiReadSlave.rdata(0) := r.fifoClear;
355  when x"0C" =>
356  v.axiReadSlave.rdata(0) := r.intEnable;
357  when x"10" =>
360  when x"14" =>
361  v.axiReadSlave.rdata(23 downto 0) := r.maxRxSize;
362  when x"18" =>
363  v.axiReadSlave.rdata(0) := r.online;
365  when x"1C" =>
368  when x"20" =>
369  v.axiReadSlave.rdata(3 downto 0) := r.swCache;
370  when others =>
371  null;
372  end case;
373 
374  -- Send Axi Response
375  axiSlaveReadResponse(v.axiReadSlave);
376 
377  end if;
378 
380 
381  -- Reset
382  if (axiRst = '1') then
383  v := REG_INIT_C;
384  end if;
385 
386  -- Next register assignment
387  rin <= v;
388 
389  -- Outputs
390  interrupt <= r.interrupt;
392  online <= r.online;
395 
396  end process;
397 
398  -------------------------------------
399  -- Inbound Controller
400  -------------------------------------
401  U_IbDma : entity work.AxiStreamDmaWrite
402  generic map (
403  TPD_G => TPD_G,
409  SW_CACHE_EN_G => true,
411  port map (
412  axiClk => axiClk,
413  axiRst => axiRst,
414  dmaReq => ibReq,
415  dmaAck => ibAck,
416  swCache => r.swCache,
422 
424  variable v : IbType;
425  begin
426  v := ib;
427 
428  v.pushFifoRead := '0';
429  v.popFifoWrite := '0';
430 
431  case ib.state is
432 
433  when IDLE_S =>
434  v.ibReq.address(31 downto 0) := pushFifoDout(IB_FIFO_C)(31 downto 0);
435  v.ibReq.maxSize := x"00" & r.maxRxSize;
436 
437  if pushFifoValid(IB_FIFO_C) = '1' and popFifoPFull(IB_FIFO_C) = '0' then
438  v.ibReq.request := '1';
439  v.pushFifoRead := '1';
440  v.state := WAIT_S;
441  end if;
442 
443  when WAIT_S =>
444  v.popFifoDin := "1" & ib.ibReq.address(30 downto 0);
445 
446  if ibAck.done = '1' then
447  v.popFifoWrite := '1';
448  v.state := FIFO_0_S;
449  end if;
450 
451  when FIFO_0_S =>
452  v.popFifoDin(31 downto 24) := x"E0";
453  v.popFifoDin(23 downto 0) := ibAck.size(23 downto 0);
454  v.popFifoWrite := '1';
455  v.state := FIFO_1_S;
456 
457  when FIFO_1_S =>
458  v.popFifoDin(31 downto 26) := x"F" & "00";
459  v.popFifoDin(25) := ibAck.overflow;
460  v.popFifoDin(24) := ibAck.writeError;
461  v.popFifoDin(23 downto 16) := ibAck.lastUser;
462  v.popFifoDin(15 downto 8) := ibAck.firstUser;
463  v.popFifoDin(7 downto 0) := ibAck.dest;
464  v.popFifoWrite := '1';
465  v.ibReq.request := '0';
466  v.intPending := '1';
467  v.state := IDLE_S;
468 
469  end case;
470 
471  -- Interrupt Ack
472  if r.intAck = '1' then
473  v.intPending := '0';
474  end if;
475 
476  -- Reset
477  if axiRst = '1' or r.rxEnable = '0' then
478  v := IB_INIT_C;
479  end if;
480 
481  -- Next register assignment
482  ibin <= v;
483 
484  -- Outputs
485  ibReq <= ib.ibReq;
489 
490  end process;
491 
492  -------------------------------------
493  -- Outbound Controller
494  -------------------------------------
495  U_ObDma : entity work.AxiStreamDmaRead
496  generic map (
497  TPD_G => TPD_G,
503  SW_CACHE_EN_G => true,
506  port map (
507  axiClk => axiClk,
508  axiRst => axiRst,
509  dmaReq => obReq,
510  dmaAck => obAck,
511  swCache => r.swCache,
514  axisCtrl => mAxisCtrl,
517 
519  variable v : ObType;
520  begin
521  v := ob;
522 
523  v.pushFifoRead := '0';
524  v.popFifoWrite := '0';
525 
526  case ob.state is
527 
528  when IDLE_S =>
529  v.obReq.address(31 downto 0) := pushFifoDout(OB_FIFO_C)(31 downto 0);
530 
531  if pushFifoValid(OB_FIFO_C) = '1' then
532  v.pushFifoRead := '1';
533 
534  if pushFifoDout(OB_FIFO_C)(35 downto 32) = 3 then
535  v.popFifoDin := "1" & pushFifoDout(OB_FIFO_C)(30 downto 0);
536  v.popFifoWrite := '1';
537 
538  elsif pushFifoDout(OB_FIFO_C)(35 downto 32) = 0 then
539  v.state := FIFO_0_S;
540  end if;
541  end if;
542 
543  when FIFO_0_S =>
544  v.obReq.size := x"00" & pushFifoDout(OB_FIFO_C)(23 downto 0);
545 
546  if pushFifoValid(OB_FIFO_C) = '1' then
547  v.pushFifoRead := '1';
548 
549  if pushFifoDout(OB_FIFO_C)(35 downto 32) /= 1 then
550  v.state := IDLE_S;
551  else
552  v.state := FIFO_1_S;
553  end if;
554  end if;
555 
556  when FIFO_1_S =>
557  v.obReq.lastUser := pushFifoDout(OB_FIFO_C)(23 downto 16);
558  v.obReq.firstUser := pushFifoDout(OB_FIFO_C)(15 downto 8);
559  v.obReq.dest := pushFifoDout(OB_FIFO_C)(7 downto 0);
560  v.obReq.id := (others => '0');
561 
562  if pushFifoValid(OB_FIFO_C) = '1' then
563  v.pushFifoRead := '1';
564 
565  if pushFifoDout(OB_FIFO_C)(35 downto 32) /= 2 then
566  v.state := IDLE_S;
567  else
568  v.obReq.request := '1';
569  v.state := WAIT_S;
570  end if;
571  end if;
572 
573  when WAIT_S =>
574  if obAck.done = '1' then
575  v.obReq.request := '0';
576  v.popFifoDin := "1" & ob.obReq.address(30 downto 0);
577  v.popFifoWrite := '1';
578  v.intPending := '1';
579  v.state := IDLE_S;
580  end if;
581 
582  end case;
583 
584  -- Interrupt Ack
585  if r.intAck = '1' then
586  v.intPending := '0';
587  end if;
588 
589  -- Reset
590  if axiRst = '1' or r.txEnable = '0' then
591  v := OB_INIT_C;
592  end if;
593 
594  -- Next register assignment
595  obin <= v;
596 
597  -- Outputs
598  obReq <= ob.obReq;
602 
603  end process;
604 
605 end structure;
POP_BRAM_EN_Gboolean := true
slv( POP_FIFO_COUNT_C- 1 downto 0) popFifoRst
AXI_READY_EN_Gboolean := false
BYP_SHIFT_Gboolean := false
in dmaReqAxiWriteDmaReqType
in popFifoDinSlv32Array( POP_FIFO_COUNT_G- 1 downto 0)
out dmaAckAxiWriteDmaAckType
RegType := REG_INIT_C r
slv( 63 downto 0) address
Definition: AxiDmaPkg.vhd:49
in mAxiWriteSlavesAxiLiteWriteSlaveArray( NUM_MASTER_SLOTS_G- 1 downto 0)
LOOP_ADDR_WIDTH_Ginteger range 4 to 48:= 4
in axilWriteMasterAxiLiteWriteMasterArray( AXIL_COUNT_G- 1 downto 0)
ALTERA_SYN_Gboolean := false
array(natural range <> ) of slv( 31 downto 0) Slv32Array
Definition: StdRtlPkg.vhd:379
integer := FREE_ADDR_WIDTH_G POP_ADDR_WIDTH_C
AxiLiteReadSlaveType axiReadSlave
slv( 15 downto 0) connectivity
Definition: AxiLitePkg.vhd:199
AxiCtrlType
Definition: AxiPkg.vhd:198
ObType := OB_INIT_C ob
slv( 7 downto 0) dest
Definition: AxiDmaPkg.vhd:78
AXIS_CONFIG_GAxiStreamConfigType := AXI_STREAM_CONFIG_INIT_C
out axiWriteMasterAxiWriteMasterType
out axiReadMasterAxiReadMasterType
array(natural range <> ) of AxiLiteWriteSlaveType AxiLiteWriteSlaveArray
Definition: AxiLitePkg.vhd:164
slv( 15 downto 0) := x"FFFF" CROSSBAR_CONN_C
AXI_CACHE_Gslv( 3 downto 0) := "1111"
in mAxiReadSlavesAxiLiteReadSlaveArray( NUM_MASTER_SLOTS_G- 1 downto 0)
out pushFifoDoutSlv36Array( PUSH_FIFO_COUNT_G- 1 downto 0)
in axiReadSlaveAxiReadSlaveType
AxiWriteDmaReqType ibReq
slv( 7 downto 0) firstUser
Definition: AxiDmaPkg.vhd:76
TPD_Gtime := 1 ns
integer := 2 POP_FIFO_COUNT_C
out axiWriteSlaveAxiLiteWriteSlaveType
slv( POP_FIFO_COUNT_C- 1 downto 0) pushFifoClk
IbType :=(state => IDLE_S,intPending => '0',ibReq => AXI_WRITE_DMA_REQ_INIT_C,popFifoWrite => '0',popFifoDin =>( others => '0'),pushFifoRead => '0') IB_INIT_C
std_logic sl
Definition: StdRtlPkg.vhd:28
AxiReadDmaAckType obAck
NUM_SLAVE_SLOTS_Gnatural range 1 to 16:= 4
PUSH_BRAM_EN_Gboolean := false
AxiReadDmaReqType obReq
out popFifoPFullslv( POP_FIFO_COUNT_G- 1 downto 0)
in axiWriteCtrlAxiCtrlType := AXI_CTRL_UNUSED_C
in dmaReqAxiReadDmaReqType
out pushFifoValidslv( PUSH_FIFO_COUNT_G- 1 downto 0)
POP_SYNC_FIFO_Gboolean := false
out popFifoAFullslv( POP_FIFO_COUNT_G- 1 downto 0)
slv( 7 downto 0) id
Definition: AxiDmaPkg.vhd:79
PEND_THRESH_Gnatural := 0
POP_ADDR_WIDTH_Ginteger range 4 to 48:= 4
slv( 31 downto 0) rdata
Definition: AxiLitePkg.vhd:89
in sAxiWriteMastersAxiLiteWriteMasterArray( NUM_SLAVE_SLOTS_G- 1 downto 0)
PUSH_ADDR_WIDTH_Ginteger range 4 to 48:= 4
in popFifoRstslv( POP_FIFO_COUNT_G- 1 downto 0)
array(natural range <> ) of AxiLiteReadMasterType AxiLiteReadMasterArray
Definition: AxiLitePkg.vhd:77
sl writeError
Definition: AxiDmaPkg.vhd:74
AxiLiteWriteSlaveType axiWriteSlave
slv( 31 downto 0) baseAddr
Definition: AxiLitePkg.vhd:197
AxiLiteWriteSlaveArray( 1 downto 0) intWriteSlaves
in swCacheslv( 3 downto 0) := "0000"
RegType :=(maxRxSize =>( others => '0'),interrupt => '0',intEnable => '0',intAck => '0',acknowledge => '0',online => '0',rxEnable => '0',txEnable => '0',fifoClear => '1',swCache => AXI_CACHE_G,axiReadSlave => AXI_LITE_READ_SLAVE_INIT_C,axiWriteSlave => AXI_LITE_WRITE_SLAVE_INIT_C) REG_INIT_C
out axiReadMasterAxiReadMasterType
in sAxisMasterAxiStreamMasterType
AxiWriteDmaAckType
Definition: AxiDmaPkg.vhd:69
slv( 31 downto 0) wdata
Definition: AxiLitePkg.vhd:117
in sAxiReadMastersAxiLiteReadMasterArray( NUM_SLAVE_SLOTS_G- 1 downto 0)
natural := 0 LOC_INDEX_C
AxiLiteStatusType axiStatus
Definition: AxiLitePkg.vhd:183
natural := 10 FIFO_NUM_BITS_C
AxiReadSlaveType
Definition: AxiPkg.vhd:79
AxiWriteMasterType
Definition: AxiPkg.vhd:108
AXI_CONFIG_GAxiConfigType := AXI_CONFIG_INIT_C
in axiReadSlaveAxiReadSlaveType
AxiLiteReadSlaveArray( 1 downto 0) intReadSlaves
SW_CACHE_EN_Gboolean := false
slv( 7 downto 0) lastUser
Definition: AxiDmaPkg.vhd:77
LOOP_BRAM_EN_Gboolean := true
array(natural range <> ) of AxiLiteCrossbarMasterConfigType AxiLiteCrossbarMasterConfigArray
Definition: AxiLitePkg.vhd:202
AXI_BURST_Gslv( 1 downto 0) := "01"
in mAxisCtrlAxiStreamCtrlType
out dmaAckAxiReadDmaAckType
slv( POP_FIFO_COUNT_C- 1 downto 0) popFifoValid
AXIS_READY_EN_Gboolean := false
MASTERS_CONFIG_GAxiLiteCrossbarMasterConfigArray := AXIL_XBAR_CFG_DEFAULT_C
slv( POP_FIFO_COUNT_C- 1 downto 0) popFifoPFull
DEC_ERROR_RESP_Gslv( 1 downto 0) := AXI_RESP_DECERR_C
out axiReadSlaveAxiLiteReadSlaveType
out sAxisSlaveAxiStreamSlaveType
XIL_DEVICE_Gstring := "7SERIES"
in axisCtrlAxiStreamCtrlType
in mAxisSlaveAxiStreamSlaveType
PUSH_FIFO_COUNT_Gpositive := 1
RANGE_LSB_Ginteger range 0 to 31:= 8
USE_BUILT_IN_Gboolean := false
Slv36Array( PUSH_FIFO_COUNT_C- 1 downto 0) pushFifoDout
LOOP_FIFO_COUNT_Gpositive := 1
natural addrBits
Definition: AxiLitePkg.vhd:198
BYP_SHIFT_Gboolean := false
integer :=( 2** POP_ADDR_WIDTH_C)- 10 POP_FIFO_PFULL_C
slv( POP_FIFO_COUNT_C- 1 downto 0) pushFifoRst
AXIL_COUNT_Ginteger range 1 to 2:= 1
AXI_CACHE_Gslv( 3 downto 0) := "1111"
slv( 23 downto 0) maxRxSize
SW_CACHE_EN_Gboolean := false
PUSH_SYNC_FIFO_Gboolean := false
FREE_ADDR_WIDTH_Ginteger := 9
in axiWriteCtrlAxiCtrlType
in popFifoWriteslv( POP_FIFO_COUNT_G- 1 downto 0)
out axiWriteMasterAxiWriteMasterType
slv( 31 downto 0) awaddr
Definition: AxiLitePkg.vhd:113
AxiWriteDmaReqType
Definition: AxiDmaPkg.vhd:46
PEND_THRESH_Gnatural := 0
out mAxiReadMastersAxiLiteReadMasterArray( NUM_MASTER_SLOTS_G- 1 downto 0)
AxiConfigType
Definition: AxiPkg.vhd:213
AxiReadDmaReqType :=(request => '0',address =>( others => '0'),size =>( others => '0'),firstUser =>( others => '0'),lastUser =>( others => '0'),dest =>( others => '0'),id =>( others => '0')) AXI_READ_DMA_REQ_INIT_C
Definition: AxiDmaPkg.vhd:115
out acknowledgesl
AXIS_READY_EN_Gboolean := false
AxiLiteReadSlaveType :=(arready => '0',rdata =>( others => '0'),rresp =>( others => '0'),rvalid => '0') AXI_LITE_READ_SLAVE_INIT_C
Definition: AxiLitePkg.vhd:95
in axiWriteMasterAxiLiteWriteMasterType
TPD_Gtime := 1 ns
in axiWriteSlaveAxiWriteSlaveType
AxiWriteSlaveType
Definition: AxiPkg.vhd:171
out interruptsl
natural := 1 FIFO_INDEX_C
AXI_BURST_Gslv( 1 downto 0) := "01"
NUM_MASTER_SLOTS_Gnatural range 1 to 64:= 4
integer := FREE_ADDR_WIDTH_G PUSH_ADDR_WIDTH_C
in axisMasterAxiStreamMasterType
VALID_POSITION_Ginteger range 0 to 31:= 0
integer := 0 IB_FIFO_C
in axisSlaveAxiStreamSlaveType
AxiStreamConfigType :=(TSTRB_EN_C => false,TDATA_BYTES_C => 16,TDEST_BITS_C => 4,TID_BITS_C => 0,TKEEP_MODE_C => TKEEP_NORMAL_C,TUSER_BITS_C => 4,TUSER_MODE_C => TUSER_NORMAL_C) AXI_STREAM_CONFIG_INIT_C
in pushFifoClkslv( PUSH_FIFO_COUNT_G- 1 downto 0)
AXI_CACHE_Gslv( 3 downto 0) := "1111"
ObType :=(state => IDLE_S,intPending => '0',obReq => AXI_READ_DMA_REQ_INIT_C,popFifoWrite => '0',popFifoDin =>( others => '0'),pushFifoRead => '0') OB_INIT_C
AxiLiteReadSlaveType
Definition: AxiLitePkg.vhd:85
(IDLE_S,WAIT_S,FIFO_0_S,FIFO_1_S) StateType
array(natural range <> ) of slv( 35 downto 0) Slv36Array
Definition: StdRtlPkg.vhd:375
array(natural range <> ) of AxiLiteWriteMasterType AxiLiteWriteMasterArray
Definition: AxiLitePkg.vhd:136
out mAxisMasterAxiStreamMasterType
slv( 31 downto 0) size
Definition: AxiDmaPkg.vhd:72
out popFifoValidslv( POP_FIFO_COUNT_G- 1 downto 0)
in popFifoClkslv( POP_FIFO_COUNT_G- 1 downto 0)
slv( 3 downto 0) swCache
out sAxiReadSlavesAxiLiteReadSlaveArray( NUM_SLAVE_SLOTS_G- 1 downto 0)
slv( 31 downto 0) maxSize
Definition: AxiDmaPkg.vhd:50
in pushFifoRstslv( PUSH_FIFO_COUNT_G- 1 downto 0)
in swCacheslv( 3 downto 0) := "0000"
AxiLiteWriteMasterArray( 1 downto 0) intWriteMasters
integer := 1 OB_FIFO_C
slv( 1 downto 0) := "00" AXI_RESP_OK_C
Definition: AxiLitePkg.vhd:31
slv( POP_FIFO_COUNT_C- 1 downto 0) popFifoClk
in pushFifoReadslv( PUSH_FIFO_COUNT_G- 1 downto 0)
AXIL_BASE_ADDR_Gslv( 31 downto 0) := x"00000000"
BYP_SHIFT_Gboolean := false
natural := 10 LOC_NUM_BITS_C
slv( 31 downto 0) araddr
Definition: AxiLitePkg.vhd:61
POP_FULL_THRES_Ginteger range 1 to ( 2** 24):= 1
AxiLiteCrossbarMasterConfigArray( 1 downto 0) :=(LOC_INDEX_C =>(baseAddr => LOC_BASE_ADDR_C,addrBits => LOC_NUM_BITS_C,connectivity => CROSSBAR_CONN_C),FIFO_INDEX_C =>(baseAddr => FIFO_BASE_ADDR_C,addrBits => FIFO_NUM_BITS_C,connectivity => CROSSBAR_CONN_C)) AXI_CROSSBAR_MASTERS_CONFIG_C
LOOP_FIFO_EN_Gboolean := false
AXIS_CONFIG_GAxiStreamConfigType := AXI_STREAM_CONFIG_INIT_C
array(natural range <> ) of AxiLiteReadSlaveType AxiLiteReadSlaveArray
Definition: AxiLitePkg.vhd:103
out mAxiWriteMastersAxiLiteWriteMasterArray( NUM_MASTER_SLOTS_G- 1 downto 0)
in axiWriteSlaveAxiWriteSlaveType
POP_FIFO_COUNT_Gpositive := 1
AXI_BURST_Gslv( 1 downto 0) := "01"
out axilWriteSlaveAxiLiteWriteSlaveArray( AXIL_COUNT_G- 1 downto 0)
sl request
Definition: AxiDmaPkg.vhd:47
ALTERA_RAM_Gstring := "M9K"
out axilReadSlaveAxiLiteReadSlaveArray( AXIL_COUNT_G- 1 downto 0)
AXIS_CONFIG_GAxiStreamConfigType := AXI_STREAM_CONFIG_INIT_C
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
slv( 31 downto 0) := AXIL_BASE_ADDR_G( 31 downto 12)& x"400" FIFO_BASE_ADDR_C
AXI_CONFIG_GAxiConfigType := AXI_CONFIG_INIT_C
IbType := IB_INIT_C ib
AxiLiteWriteSlaveType :=(awready => '0',wready => '0',bresp =>( others => '0'),bvalid => '0') AXI_LITE_WRITE_SLAVE_INIT_C
Definition: AxiLitePkg.vhd:156
slv( 31 downto 0) := AXIL_BASE_ADDR_G( 31 downto 12)& x"000" LOC_BASE_ADDR_C
out sAxiWriteSlavesAxiLiteWriteSlaveArray( NUM_SLAVE_SLOTS_G- 1 downto 0)
AxiReadMasterType
Definition: AxiPkg.vhd:32
integer := 2 PUSH_FIFO_COUNT_C
slv( 31 downto 0) popFifoDin
in axiReadMasterAxiLiteReadMasterType
AxiWriteDmaAckType ibAck
in axilReadMasterAxiLiteReadMasterArray( AXIL_COUNT_G- 1 downto 0)
out axisSlaveAxiStreamSlaveType
AXI_READY_EN_Gboolean := false
std_logic_vector slv
Definition: StdRtlPkg.vhd:29
out axisMasterAxiStreamMasterType
slv( PUSH_FIFO_COUNT_C- 1 downto 0) pushFifoValid
out popFifoFullslv( POP_FIFO_COUNT_G- 1 downto 0)
AxiLiteReadMasterArray( 1 downto 0) intReadMasters
AXI_CONFIG_GAxiConfigType := AXI_CONFIG_INIT_C
AxiWriteDmaReqType :=(request => '0',drop => '0',address =>( others => '0'),maxSize =>( others => '0')) AXI_WRITE_DMA_REQ_INIT_C
Definition: AxiDmaPkg.vhd:54