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
Generated by 1.8.15