1 ------------------------------------------------------------------------------- 2 -- File : AxiLiteFifoPop.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_ARITH.
ALL;
23 use IEEE.STD_LOGIC_UNSIGNED.
ALL;
52 -- AXI Interface (axiClk) 65 -- POP FIFO Write Interface (popFifoClk) 117 report "RANGE_LSB_G is too small for POP_FIFO_COUNT_G" severity failure;
120 report "RANGE_LSB_G is too small for LOOP_FIFO_COUNT_G" severity failure;
122 ----------------------------------------- 124 ----------------------------------------- 179 ----------------------------------------- 181 ----------------------------------------- 246 ----------------------------------------- 248 ----------------------------------------- 253 if (rising_edge(axiClk)) then 320 -- Next register assignment 333 end architecture structure;
in axiReadMasterAxiLiteReadMasterType
ALTERA_RAM_Gstring := "M9K"
out doutslv( DATA_WIDTH_G- 1 downto 0)
XIL_DEVICE_Gstring := "7SERIES"
Slv( LOOP_COUNT_C- 1 downto 0) loopFifoWrite
slv( 31 downto 0) loopFifoDin
array(natural range <> ) of slv( 31 downto 0) Slv32Array
POP_ADDR_WIDTH_Ginteger range 4 to 48:= 4
ALTERA_RAM_Gstring := "M9K"
out popFifoPFullslv( POP_FIFO_COUNT_G- 1 downto 0)
slv( POP_COUNT_C- 1 downto 0) ipopFifoRead
VALID_POLARITY_Gsl := '0'
out popFifoFullslv( POP_FIFO_COUNT_G- 1 downto 0)
RST_ASYNC_Gboolean := false
POP_BRAM_EN_Gboolean := true
in popFifoRstslv( POP_FIFO_COUNT_G- 1 downto 0)
AxiLiteWriteSlaveType axiWriteSlave
in dinslv( DATA_WIDTH_G- 1 downto 0)
out popFifoAEmptyslv( POP_FIFO_COUNT_G- 1 downto 0)
AxiLiteReadSlaveType axiReadSlave
Slv32Array( POP_COUNT_C- 1 downto 0) ipopFifoDout
slv( POP_COUNT_C- 1 downto 0) ipopFifoValid
ALTERA_SYN_Gboolean := false
out axiReadSlaveAxiLiteReadSlaveType
EMPTY_THRES_Ginteger range 1 to ( 2** 24):= 1
in popFifoWriteslv( POP_FIFO_COUNT_G- 1 downto 0)
USE_BUILT_IN_Gboolean := false
ALTERA_SYN_Gboolean := false
AxiLiteStatusType axiStatus
Slv( LOOP_COUNT_C- 1 downto 0) iloopFifoWrite
slv( LOOP_COUNT_C- 1 downto 0) iloopFifoValid
LOOP_BRAM_EN_Gboolean := true
RANGE_LSB_Ginteger range 0 to 31:= 8
integer := bitSize( POP_FIFO_COUNT_G- 1) POP_SIZE_C
RegType :=(loopFifoDin =>( others => '0'),loopFifoWrite =>( others => '0'),loopFifoRead =>( others => '0'),popFifoRead =>( others => '0'),axiReadSlave => AXI_LITE_READ_SLAVE_INIT_C,axiWriteSlave => AXI_LITE_WRITE_SLAVE_INIT_C) REG_INIT_C
FULL_THRES_Ginteger range 1 to ( 2** 24):= 1
out loopFifoValidslv( LOOP_FIFO_COUNT_G- 1 downto 0)
SYNC_STAGES_Ginteger range 3 to ( 2** 24):= 3
POP_FULL_THRES_Ginteger range 1 to ( 2** 24):= 1
Slv32Array( LOOP_COUNT_C- 1 downto 0) iloopFifoDout
AxiLiteReadSlaveType :=(arready => '0',rdata =>( others => '0'),rresp =>( others => '0'),rvalid => '0') AXI_LITE_READ_SLAVE_INIT_C
LOOP_FIFO_EN_Gboolean := false
POP_FIFO_COUNT_Gpositive := 1
VALID_POSITION_Ginteger range 0 to 31:= 0
integer := 2** LOOP_SIZE_C LOOP_COUNT_C
in popFifoClkslv( POP_FIFO_COUNT_G- 1 downto 0)
out loopFifoAEmptyslv( LOOP_FIFO_COUNT_G- 1 downto 0)
GEN_SYNC_FIFO_Gboolean := false
slv( 31 downto 0) iloopFifoDin
out loopFifoAFullslv( LOOP_FIFO_COUNT_G- 1 downto 0)
POP_SYNC_FIFO_Gboolean := false
in axiWriteMasterAxiLiteWriteMasterType := AXI_LITE_WRITE_MASTER_INIT_C
AxiLiteWriteMasterType :=(awaddr =>( others => '0'),awprot =>( others => '0'),awvalid => '0',wdata =>( others => '0'),wstrb =>( others => '1'),wvalid => '0',bready => '1') AXI_LITE_WRITE_MASTER_INIT_C
USE_DSP48_Gstring := "no"
LAST_STAGE_ASYNC_Gboolean := true
ADDR_WIDTH_Ginteger range 4 to 48:= 4
USE_BUILT_IN_Gboolean := false
out popFifoAFullslv( POP_FIFO_COUNT_G- 1 downto 0)
FWFT_EN_Gboolean := false
DATA_WIDTH_Ginteger range 1 to ( 2** 24):= 16
slv( LOOP_COUNT_C- 1 downto 0) iloopFifoRead
XIL_DEVICE_Gstring := "7SERIES"
integer := bitSize( LOOP_FIFO_COUNT_G- 1) LOOP_SIZE_C
LOOP_FIFO_COUNT_Gpositive := 1
CASCADE_SIZE_Ginteger range 1 to ( 2** 24):= 1
slv( POP_COUNT_C- 1 downto 0) popFifoRead
out wr_data_countslv( ADDR_WIDTH_G- 1 downto 0)
LOOP_ADDR_WIDTH_Ginteger range 4 to 48:= 4
AxiLiteWriteSlaveType :=(awready => '0',wready => '0',bresp =>( others => '0'),bvalid => '0') AXI_LITE_WRITE_SLAVE_INIT_C
out popFifoValidslv( POP_FIFO_COUNT_G- 1 downto 0)
out axiWriteSlaveAxiLiteWriteSlaveType
in popFifoDinSlv32Array( POP_FIFO_COUNT_G- 1 downto 0)
out rd_data_countslv( ADDR_WIDTH_G- 1 downto 0)
integer := 2** POP_SIZE_C POP_COUNT_C
slv( LOOP_COUNT_C- 1 downto 0) loopFifoRead