Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

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

5.3.6.3.1. NAND Flash Addressing

Any data byte in a NAND Flash device can be addressed through two NAND parameters: column address and row address. The column address is used to access individual bytes or words inside of a NAND page and this is byte-aligned. The column address allows addressing up to 64 KB. The row address allow to identify a page inside of the flash device and is composed of the following parts:

  • Page address: Used to select a single page in a block of pages in the NAND Flash device.
  • Block and plane address: Allows for selection of a single block in the NAND Flash device. It is common that data blocks are divided into groups called planes and assigned separate data registers to each plane so it is possible to improve data throughput executing parallel operations in different planes. Planes are selected by the low significant bits (LSB) of the block address.
  • LUN address: Used to select the logical unit (LUN) inside the NAND Flash device. Logical unit is the separate target device that can execute commands and report status. The logical units share NAND Flash devices IO ports.

The following figure shows the NAND Flash addressing.

Figure 93. NAND Flash Addressing

In the NAND Flash controller, the column address is set using the offset field in the transfer_cfg_0 (0x0400) register. The row address is provided as part of the command to be sent to the NAND Flash device. It is important to note that the software should never perform NAND transactions outside of the physical boundaries of the NAND flash target (Device/LUN). When this occurs, the controller will proceed with the operation but it will try to access a non-existent memory location.