Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 4/01/2024
Public
Document Table of Contents

5.3.6.1. Block Diagram

The following figure shows a high-level block diagram for the NAND Flash controller.

Figure 92. NAND Flash Controller High Level Block Diagram

The following list provides a high-level overview of the NAND Flash controller functional blocks.

  • Low-speed target interface: Provides access to the controller’s status and configuration registers. This implements the AMBA 3 APB specification.
  • High-speed target interface: Receives the incoming data transaction from the initiator interface (that is, the host) and passes them onto the slave DMA module. This path is optimized for data throughput.
  • High-speed initiator interface: Used for two purposes. The command engine unit uses this interface to handle descriptors stored in the system memory. The master DMA uses this interface to transfer data between the core internal buffer and system memory. The master DMA data path is optimized for data throughput.
  • Command engine: The module implements high-level ONFI/toggle protocols functionality and multi-thread logic. The command engine translates high-level commands from the Auto CMD module into a series of low-level commands that are sent to the NAND Flash controller interface. This module has an embedded protocol engine that selects the most appropriate set of features required by the Flash device, which provides relief for the software developer from dealing with NAND Flash protocol details.
  • Master DMA : This module is used to automatically transfer data from the NAND Flash controller internal buffer to the system memory. The master DMA supports transactions (up to 8) and incremental burst (up to 256 beats).
  • Slave DMA : This module provides high performance target interface to the controller’s internal data buffer. The slave DMA supports outstanding transactions (up to 8) and incremental bursts (up to 256 beats).
  • Transmit FIFO (TX FIFO): This is responsible for buffering data to avoid busy cycles on the system interface during data transfer.
  • Configuration registers and interrupts: This module stores control and status registers. Additionally, it is responsible for interrupt handling. The register map is described in the NAND Flash Controller Programming Model section.
  • Auto CMD: This module translates the write operation to the command registers (C0 – C3) into the record write operations to the context memory of the command engine. All of the controller’s operation modes use command registers.
  • MC registers: This module contains registers in the NF_CLK clock domain.
  • Asynchronous FIFOs: The FIFOs are used as a clock domain crossing mechanism between the system clock domain (SYS_CLK) and the Flash controller domain (NF_CLK), as well as between the Flash controller clock domain (NF_CLK) and the BCH engine clock domain (BCH_CLK).
  • BCH engine and BCH buffer: The BCH engine provides error detection and correction (ECC) mechanism in the data path. During write operation, the BCH calculates ECC checksums and places them into the data stream that is written to the NAND Flash device. During read operation, ECC previously written in the flash device are extracted, and the BCH engine checks read data integrity and corrects error if detected.
  • Mini controller: This module gets a command stream from the command engine and translates it into the physical operation on the PHY/NAND Flash interface. Additionally, the mini controller module regulates data flow between the PHY/NAND interface and the system interface.