Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 11/27/2024
Public
Document Table of Contents

5.3.6.4.1. Command Engine Architecture

The NAND controller can operate in three different modes:

  • Command DMA (CDMA) work mode. This is dedicated for high-performance applications where very low software overhead is required. In this mode, the command engine is programmed by the series of linked descriptors stored in system memory.These descriptors provide commands to execute and store status information for finished commands.
  • PIO work mode. This is dedicated for single operations where constructing a linked list of descriptors would require too much effort. This mode is also used for special commands like set NAND Flash device work mode.
  • Generic work mode. This is a special work mode that can be used if the first two modes are not sufficient. In this mode, the software passes commands directly to the NAND Flash interface. This allows software to control what exactly is sent to the NAND Flash interface.

The switch from one operation mode to another must be performed only when all the operations have been completed in the initial working mode.

The following diagram shows the architecture of the command engine.

Figure 99. Command Engine Architecture

The descriptor fetch module is only used in the CDMA operation mode, and it is responsible for fetching descriptors from the system memory and places it in the selected row of the context RAM.

The scheduler logic controls the execution sequencing of descriptors on each thread in the command DMA work mode handling the time slicing assigned to each thread. This also coordinates the operations of other functional blocks such as the protocol engine.

The sync logic handles the synchronization functionality associated with each descriptor. This only is enabled in CDMA work mode.

The system interface handles the requests from the system controlling the data flow.

The context RAM stores operation records for selected thread. Each record occupies a single memory row.

The protocol engine decodes the NAND device operation from the descriptor and issues the command to the mini-controller unit, captures interrupt and updates the status field in the descriptor after completion of the operation.