Logo
Dune NVMe Storage Support
DuneNvme  1.0.2
This is a simple NVMe test environment that allows experimentation with the low level PCIe NVMe interfaces as available on a Xilinx FPGA environment.
Behavioral Architecture Reference

Functions

std_logic_vector   setHeader (
request: in integer
address: in integer
count: in integer
tag: in integer
)
 Set the fields in the PCIe TLP header.

Processes

PROCESS_5  ( clk )
 Ignore any replies.

Constants

TCQ  time := 1 ns
rom  RomType ( 0 to 34 ) := ( setHeader ( 10 , 16#00004# , 1 , 0 ) , to_stl ( 16#00010006# , 128 ) , setHeader ( 1 , 16#0014# , 1 , 0 ) , to_stl ( x " 00460000 " , 128 ) , setHeader ( 1 , 16#000C# , 1 , 0 ) , to_stl ( x " FFFFFFFF " , 128 ) , setHeader ( 1 , 16#0024# , 1 , 0 ) , zeros ( 96 ) & to_stl ( NvmeQueueNum - 1 , 16 ) & to_stl ( NvmeQueueNum - 1 , 16 ) , setHeader ( 1 , 16#0028# , 1 , 0 ) , to_stl ( x " 02000000 " , 128 ) , setHeader ( 1 , 16#0030# , 1 , 0 ) , to_stl ( x " 02100000 " , 128 ) , setHeader ( 1 , 16#0014# , 1 , 0 ) , to_stl ( x " 00460001 " , 128 ) , setHeader ( 1 , 16#02000000# , 16 , 0 ) , zeros ( 96 ) & x " 03000005 " , zeros ( 32 ) & x " 02110000 " & zeros ( 64 ) , x " 00000001 " & to_stl ( NvmeQueueNum - 1 , 16 ) & x " 0001 " & zeros ( 64 ) , zeros ( 128 ) , setHeader ( 1 , 16#02000000# , 16 , 0 ) , zeros ( 96 ) & x " 03010001 " , zeros ( 32 ) & x " 02010000 " & zeros ( 64 ) , x " 00010001 " & to_stl ( NvmeQueueNum - 1 , 16 ) & x " 0001 " & zeros ( 64 ) , zeros ( 128 ) , setHeader ( 1 , 16#02000000# , 16 , 0 ) , zeros ( 96 ) & x " 03020005 " , zeros ( 32 ) & x " 02120000 " & zeros ( 64 ) , x " 00000001 " & to_stl ( NvmeQueueNum - 1 , 16 ) & x " 0002 " & zeros ( 64 ) , zeros ( 128 ) , setHeader ( 1 , 16#02000000# , 16 , 0 ) , zeros ( 96 ) & x " 03030001 " , zeros ( 32 ) & x " 02020000 " & zeros ( 64 ) , x " 00020001 " & to_stl ( NvmeQueueNum - 1 , 16 ) & x " 0002 " & zeros ( 64 ) , zeros ( 128 ) , ( others = > ' 0 ' ) )

Types

StateType ( STATE_IDLE , STATE_DELAY , STATE_NEXT_ITEM , STATE_NEXT_DATA , STATE_ITEM_COMPLETE )
RomType array ( integer range <> ) of std_logic_vector ( 127 downto 0 )
 The Configuration requests.

Signals

state  StateType := STATE_IDLE
requestHead  PcieRequestHeadType
 The PCIe TLP request header fields.
tag  unsigned ( 7 downto 0 )
count  integer range 0 to rom ' length
 The ROM position pointer.
numWords  unsigned ( 10 downto 0 )
 The number of 32 bit data words left to transfer.
delay  integer
 Delay counter in clock periods.

The documentation for this class was generated from the following file:
  • /src/dune/source/DuneNvme/src/NvmeConfig.vhd