| 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 
