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.
std_logic_vector   pcieAddress ( blocknum: in unsigned )
unsigned   numTrimBlocksNvme ( total: in unsigned , current: in unsigned )
 Pcie packets to this module The number of blocks to trim based on how many 4k blocks left to trim.
unsigned   numTrimBlocks ( total: in unsigned , current: in unsigned )
PcieRequestHeadType   sendBlockHeader ( headIn: in PcieRequestHeadType )

Processes

PROCESS_7  ( clk )
PROCESS_8  ( clk )
 Need to wait here.
PROCESS_9  ( clk )
 Need to wait here.
PROCESS_10  ( clk )
PROCESS_11  ( clk )

Components

Fifo  <Entity Fifo>
 Simulation.

Constants

TCQ  time := 1 ns
SendFullBlock  boolean := True
 Collate the smallish PCIe packets into a full NvmeStorage block packet.
NvmeBlocks  integer := BlockSize / NvmeBlockSize
 The number of Nvme blocks per NvmeStorage system block.
TrimNum  integer := ( 32768 / NvmeBlocks )
 The number of 4k blocks trimmed in one trim instructions.

Types

StateType ( STATE_IDLE , STATE_INIT , STATE_RUN , STATE_COMPLETE , STATE_QUEUE_HEAD , STATE_QUEUE_0 , STATE_QUEUE_1 , STATE_QUEUE_2 , STATE_QUEUE_3 , STATE_WAIT_REPLY , STATE_TQUEUE_HEAD , STATE_TQUEUE_0 , STATE_TQUEUE_1 , STATE_TQUEUE_2 , STATE_TQUEUE_3 )
ReplyStateType ( REPSTATE_IDLE , REPSTATE_INIT , REPSTATE_COMPLETE , REPSTATE_QUEUE_REPLY1 , REPSTATE_QUEUE_REPLY2 )
MemStateType ( MEMSTATE_IDLE , MEMSTATE_NEXT , MEMSTATE_WRITE )
SendStateType ( SENDSTATE_IDLE , SENDSTATE_WRITE )
 Send blocks state.

Subtypes

RegisterType  unsigned ( 31 downto 0 )
 The output data.

Signals

state  StateType := STATE_IDLE
replyState  ReplyStateType := REPSTATE_QUEUE_REPLY1
nvmeReplyHead  NvmeReplyHeadType
control  RegisterType := ( others = > ' 0 ' )
 Control register.
status  RegisterType := ( others = > ' 0 ' )
 Status register.
dataStart  RegisterType := ( others = > ' 0 ' )
 The data chunk start position in blocks.
dataSize  RegisterType := ( others = > ' 0 ' )
 The data chunk size in blocks.
error  RegisterType := ( others = > ' 0 ' )
 The system errors status.
enabled  std_logic := ' 0 '
 Read is enabled.
performTrim  std_logic := ' 0 '
 Perform a trim operation.
complete  std_logic := ' 0 '
 Read is complete.
numBlocksProc  unsigned ( 31 downto 0 ) := ( others = > ' 0 ' )
 Number of block write requests sent.
numBlocksTrim  unsigned ( 31 downto 0 ) := ( others = > ' 0 ' )
 Number of blocks trimmed in once operation.
numBlocksDone  unsigned ( 31 downto 0 ) := ( others = > ' 0 ' )
 Number of block write completions received.
memState  MemStateType := MEMSTATE_IDLE
memPacketCount  unsigned ( 7 downto 0 )
memRequestHead  PcieRequestHeadType
fifoReset  std_logic
fifoNearFull  std_logic
fifoInReady  std_logic
fifoInValid  std_logic
fifoInData  std_logic_vector ( 127 downto 0 )
fifoOutValid  std_logic
fifoOutReady  std_logic
fifoOutData  std_logic_vector ( 127 downto 0 )
sendState  SendStateType := SENDSTATE_IDLE
sendCount  unsigned ( 8 downto 0 )
 Send block word count.

Instantiations

fifo0  Fifo <Entity Fifo>

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