SPRUJ79 November 2024 F29H850TU , F29H859TU-Q1
The buffer module is implemented for each CPU and consists of the following:
Any 16-bit or 32-bit read which misses the dataline buffer initiates a 64-bit access to the EMIF and stalls the CPU until the four 16-bit access completes and refills the buffer (on a 16-bit SDRAM or ASRAM). This means that sequential accesses have better performance.
If the accesses are not sequential memory locations, dual-mapped regions are provided for the software to chosse between the following:
For DR1 and DR2 accesses, the EMIF SDRAM and ASRAM memory regions for each of the CSx are dual-mapped. The EMIF register regions are not dual-mapped and always bypass the buffer. DW accesses to either of the dual memory maps behave identically and always go through the write FIFO.
Table 14-31 is an example of the memory map for EMIF. For actual address range information, see the device data sheet memory map.
Address Range | EMIF Region |
---|---|
A | EMIF SDRAM CS0 (Primary Map) |
B | EMIF ASRAM CS2 (Primary Map) |
C | EMIF ASRAM CS3 (Primary Map) |
E | EMIF ASRAM CS4 (Primary Map) |
E | EMIF Configuration Registers |
F | EMIF SDRAM CS0 (Secondary Map) |
G | EMIF ASRAM CS2 (Secondary Map) |
I | EMIF ASRAM CS3 (Secondary Map) |
J | EMIF ASRAM CS4 (Secondary Map) |
The EMIF module is accessible by initiators other than the CPU. The CPU dataline buffer is updated on CPU reads only, and does not hold the latest data if another initiator updated the same address. For this reason, write accesses from other initiators are tracked locally to the dataline buffer. The dataline buffer is invalidated on the completion of a write access from another initiator if the tag matches the write address. In such a case, the arbitration scheme makes sure the write is performed to memory first to maintain data coherency. The corresponding dataline buffer of a CPU is also invalidated if the CPU enters a fault state. The CPU reads the old data until the time at which the buffer is invalidated.