1 ------------------------------------------------------------------------------- 2 -- File : AxiLiteFifoPush.vhd 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2013-04-02 5 -- Last update: 2016-04-26 6 ------------------------------------------------------------------------------- 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 ------------------------------------------------------------------------------- 21 use ieee.std_logic_1164.
all;
22 use IEEE.STD_LOGIC_UNSIGNED.
ALL;
23 use IEEE.STD_LOGIC_ARITH.
ALL;
70 -- POP FIFO Write Interface 79 -- Push FIFO Read Interface 86 end AxiLiteFifoPushPop;
139 report "RANGE_LSB_G is too small for LOOP_FIFO_COUNT_G" severity failure;
142 report "RANGE_LSB_G is too small for POP_FIFO_COUNT_G" severity failure;
145 report "RANGE_LSB_G is too small for PUSH_FIFO_COUNT_G" severity failure;
147 -----------------------------------------( 151 ----------------------------------------- 206 ----------------------------------------- 208 ----------------------------------------- 274 ----------------------------------------- 276 ----------------------------------------- 333 ----------------------------------------- 335 ----------------------------------------- 340 if (rising_edge(axiClk)) then 419 -- Next register assignment 434 end architecture structure;
POP_BRAM_EN_Gboolean := true
in popFifoDinSlv32Array( POP_FIFO_COUNT_G- 1 downto 0)
ALTERA_RAM_Gstring := "M9K"
out doutslv( DATA_WIDTH_G- 1 downto 0)
LOOP_ADDR_WIDTH_Ginteger range 4 to 48:= 4
XIL_DEVICE_Gstring := "7SERIES"
ALTERA_SYN_Gboolean := false
out popFifoAEmptyslv( POP_FIFO_COUNT_G- 1 downto 0)
array(natural range <> ) of slv( 31 downto 0) Slv32Array
integer := bitSize( LOOP_FIFO_COUNT_G- 1) LOOP_SIZE_C
RST_ASYNC_Gboolean := false
out pushFifoDoutSlv36Array( PUSH_FIFO_COUNT_G- 1 downto 0)
slv( 31 downto 0) iloopFifoDin
slv( LOOP_COUNT_C- 1 downto 0) loopFifoRead
out axiWriteSlaveAxiLiteWriteSlaveType
PUSH_BRAM_EN_Gboolean := false
out popFifoPFullslv( POP_FIFO_COUNT_G- 1 downto 0)
out loopFifoAEmptyslv( LOOP_FIFO_COUNT_G- 1 downto 0)
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
in dinslv( DATA_WIDTH_G- 1 downto 0)
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)
VALID_POLARITY_Gsl := '0'
Slv32Array( POP_COUNT_C- 1 downto 0) ipopFifoDout
EMPTY_THRES_Ginteger range 1 to ( 2** 24):= 1
slv( PUSH_COUNT_C- 1 downto 0) ipushFifoFull
Slv( LOOP_COUNT_C- 1 downto 0) iloopFifoWrite
slv( LOOP_COUNT_C- 1 downto 0) iloopFifoRead
slv( 31 downto 0) loopFifoDin
ALTERA_SYN_Gboolean := false
integer := 2** LOOP_SIZE_C LOOP_COUNT_C
AxiLiteStatusType axiStatus
LOOP_BRAM_EN_Gboolean := true
AxiLiteReadSlaveType axiReadSlave
slv( POP_COUNT_C- 1 downto 0) ipopFifoRead
out pushFifoAFullslv( PUSH_FIFO_COUNT_G- 1 downto 0)
out axiReadSlaveAxiLiteReadSlaveType
XIL_DEVICE_Gstring := "7SERIES"
PUSH_FIFO_COUNT_Gpositive := 1
RANGE_LSB_Ginteger range 0 to 31:= 8
USE_BUILT_IN_Gboolean := false
Slv( 35 downto 0) ipushFifoDin
LOOP_FIFO_COUNT_Gpositive := 1
FULL_THRES_Ginteger range 1 to ( 2** 24):= 1
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
slv( PUSH_COUNT_C- 1 downto 0) ipushFifoAFull
integer := bitSize( POP_FIFO_COUNT_G- 1) POP_SIZE_C
PUSH_SYNC_FIFO_Gboolean := false
in popFifoWriteslv( POP_FIFO_COUNT_G- 1 downto 0)
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
AxiLiteReadSlaveType :=(arready => '0',rdata =>( others => '0'),rresp =>( others => '0'),rvalid => '0') AXI_LITE_READ_SLAVE_INIT_C
in axiWriteMasterAxiLiteWriteMasterType
GEN_SYNC_FIFO_Gboolean := false
VALID_POSITION_Ginteger range 0 to 31:= 0
in pushFifoClkslv( PUSH_FIFO_COUNT_G- 1 downto 0)
integer := 2** PUSH_SIZE_C PUSH_COUNT_C
array(natural range <> ) of slv( 35 downto 0) Slv36Array
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"
slv( POP_COUNT_C- 1 downto 0) popFifoRead
LAST_STAGE_ASYNC_Gboolean := true
ADDR_WIDTH_Ginteger range 4 to 48:= 4
in pushFifoReadslv( PUSH_FIFO_COUNT_G- 1 downto 0)
USE_BUILT_IN_Gboolean := false
FWFT_EN_Gboolean := false
DATA_WIDTH_Ginteger range 1 to ( 2** 24):= 16
POP_FULL_THRES_Ginteger range 1 to ( 2** 24):= 1
LOOP_FIFO_EN_Gboolean := false
POP_FIFO_COUNT_Gpositive := 1
ALTERA_RAM_Gstring := "M9K"
slv( LOOP_COUNT_C- 1 downto 0) iloopFifoValid
CASCADE_SIZE_Ginteger range 1 to ( 2** 24):= 1
out wr_data_countslv( ADDR_WIDTH_G- 1 downto 0)
AxiLiteWriteSlaveType :=(awready => '0',wready => '0',bresp =>( others => '0'),bvalid => '0') AXI_LITE_WRITE_SLAVE_INIT_C
slv( 35 downto 0) pushFifoDin
Slv( LOOP_COUNT_C- 1 downto 0) loopFifoWrite
in axiReadMasterAxiLiteReadMasterType
Slv32Array( LOOP_COUNT_C- 1 downto 0) iloopFifoDout
out rd_data_countslv( ADDR_WIDTH_G- 1 downto 0)
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