7.5 Programming the LUT

The contents of the Look Up Table (LUT) can be accessed in several ways that might require different configurations of the autoincrement function of the BLK_IDX register.

The following sections provide examples for programming the LUT.

To read the entire contents of the LUT

  1. Set the autoincrement enable bit, CTRL.INC_BLK_IDX, to 0b1.
  2. Read the BLK_MAX register. This register returns the value 0xN, which represents the last address in the LUT.
  3. Write 0x0 to the BLK_IDX register.
  4. Perform 0xN + 1 reads of the BLK_LUT register, to read the entire LUT.

To write the entire contents of the LUT

  1. Set autoincrement enable bit, CTRL.INC_BLK_IDX, to 0b1.
  2. Read the BLK_MAX register. This register returns the value 0xN, which represents the last address in the LUT.
  3. Write 0x0 to the BLK_IDX register.
  4. Perform 0xN + 1 writes to the BLK_LUT register, to fill the entire LUT with your chosen write data. Do not use sparse writes (pstrb != 0xF), otherwise the BLK_IDX does not increment automatically.

To read-modify-write a single location

  1. Set autoincrement enable bit, CTRL.INC_BLK_IDX, to 0b0.
  2. Write the required address to the BLK_IDX register.
  3. Read the BLK_LUT register, to access the current contents of the LUT.
  4. Write to the BLK_LUT register with your chosen write data.

    Byte accesses can be used to update only the required byte of the register without reading the full contents.

Read and write to a 16-block LUT configuration (ADDR_WIDTH - BLK_SIZE = 9)

  1. Read the contents of the BLK_LUT register, present on bits[15:0].
  2. Write the new contents to the BLK_LUT register using bits[15:0] only.

Note:

As the number of blocks is less than 32, software cannot use the CTRL.INC_BLK_IDX bit or the BLK_IDX register.
Non-ConfidentialPDF file icon PDF version101526_0100_02_en
Copyright © 2019 Arm Limited or its affiliates. All rights reserved.