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

unsigned   doorbellAddress ( queueNum: in integer , reply: in integer )

Processes

PROCESS_6  ( clk )
 Process requests.

Procedures

  queueAddress( address: unsigned ,signal ramAddress: out unsigned )
 Given Pcie address calculate RAM address.
  queueAddressStart(
signal queueArray: inout QueuePosArrayType
queueNum: unsigned
signal address: out unsigned
)
 Sets the RAM access address from last queue position and updates queue position.
  queueOutIncrement( signal queueArray: inout QueuePosArrayType , queueNum: unsigned )

Components

Ram  <Entity Ram>
 The data width of the RAM in bits.

Constants

TCQ  time := 1 ns
NUM_QUEUES  integer := 4
RAM_SIZE  integer := NUM_QUEUES* NumQueueEntries * 4
 Only write to request queues are stored.
ADDRESS_WIDTH  integer := log2 ( RAM_SIZE )

Types

QueuePosArrayType ( 0 to NUM_QUEUES- 1 ) QueuePosType
StateType ( STATE_IDLE , STATE_WRITE , STATE_READHEAD1 , STATE_READHEAD2 , STATE_READDATA , STATE_WRITE_QUEUE , STATE_SEND_DOORBELL_HEAD , STATE_SEND_DOORBELL_POS , STATE_REPLY_RDATA , STATE_REPLY_SHEAD , STATE_REPLY_SDATA , STATE_SEND_RDOORBELL_HEAD )

Subtypes

QueueNumRange  integer range 17 downto 16
 The active high reset line.
QueuePosType  unsigned ( log2 ( NumQueueEntries ) - 1 downto 0 )

Signals

state  StateType := STATE_IDLE
ramWriteEnable  std_logic := ' 0 '
ramReadEnable  std_logic := ' 0 '
ramAddressWrite  unsigned ( ADDRESS_WIDTH- 1 downto 0 ) := ( others = > ' 0 ' )
ramAddressRead  unsigned ( ADDRESS_WIDTH- 1 downto 0 ) := ( others = > ' 0 ' )
ramReadData  std_logic_vector ( 127 downto 0 ) := ( others = > ' 0 ' )
data1  std_logic_vector ( 127 downto 0 ) := ( others = > ' 0 ' )
queueIn  integer range 0 to NUM_QUEUES- 1 := 0
queueInArrayPos  QueuePosArrayType := ( others = > ( others = > ' 0 ' ) )
queueOutArrayPos  QueuePosArrayType := ( others = > ( others = > ' 0 ' ) )
requestHead  PcieRequestHeadType
requestHead1  PcieRequestHeadType
replyHead  PcieReplyHeadType
doorbellReqHead  PcieRequestHeadType

Instantiations

queuemem0  Ram <Entity Ram>

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