
- •Contents
- •List of Tables
- •List of Figures
- •Preface
- •About this document
- •Feedback
- •Introduction
- •1.1 About the ARM PrimeCell MultiPort Memory Controller (PL172)
- •1.2 Supported dynamic memory devices
- •1.3 Supported static memory devices
- •Functional Overview
- •2.1 PrimeCell MPMC functional description
- •2.2 Overview of a PrimeCell MPMC, ASIC, or ASSP system
- •2.3 Low power operation
- •2.4 Lock and semaphores
- •2.5 Arbitration
- •2.6 Memory bank select
- •2.7 Memory map
- •Programmer’s Model
- •3.1 About the programmer’s model
- •3.2 Register descriptions
- •Programmer’s Model for Test
- •4.1 PrimeCell MPMC test harness overview
- •4.2 Scan testing
- •4.3 Test registers
- •Static Memory Controller
- •5.1 Static memory device selection
- •5.2 Write-protection
- •5.3 Extended wait transfers
- •5.4 Memory mapped peripherals
- •5.5 Static memory initialization
- •5.6 Byte lane control
- •5.7 Byte lane control and databus steering for little and big-endian configurations
- •Dynamic Memory Controller
- •6.1 Write-protection
- •6.2 Access sequencing and memory width
- •6.3 Address mapping
- •6.4 Dynamic memory controller command descriptions
- •6.5 Generic SDRAM initialization example
- •6.6 Micron MT48LC4M16A2 SDRAM initialization example
- •6.8 Micron MT28F4M16S2 SyncFlash initialization example
- •6.9 Micron SyncFlash commands
- •Common Memory Transactions
- •7.1 Static and dynamic memory transaction latency
- •Test Interface Controller
- •8.1 About TIC
- •8.2 Sequence of events leading to entry into TIC test mode
- •System Connectivity
- •9.2 Self-refresh entry
- •9.3 Example system
- •Off-chip Connectivity
- •10.2 Pin count reduction by reducing databus width
- •10.3 Pin count reduction by removing functionality
- •10.4 Address pin reduction
- •10.5 Chip select pin reduction
- •10.6 Device support
- •10.7 Multiplexing static and dynamic memory pins
- •10.8 Reducing pin count by multiplexing MPMC pins
- •10.9 About MPMC timing
- •10.10 On-chip timing path
- •10.11 Off-chip timing path
- •10.12 Clock strategy
- •10.13 Clock ratios
- •10.14 Memory clock and fed-back clock strategy
- •Pad Interface Timing
- •A.1 Overview
- •A.2 Signal delay
- •A.3 Method to reduce delay
- •A.4 Methods to reduce skew
- •A.5 Methods to minimize the effects of delay and skew
- •A.6 Example SDRAM memory timing diagram
- •A.7 SDRAM memory timing paths
- •Troubleshooting
- •B.1 Troubleshooting
- •C.1 AHB register signals
- •C.2 AHB memory signals
- •C.3 Miscellaneous and clock signals
- •C.4 Pad interface and control signals
- •C.5 Test Interface Controller (TIC) signals
- •C.6 Scan test signals

Functional Overview
2.5Arbitration
The memory controller re-arbitrates after every quad-word transfer. AHB port 0 has the highest priority and AHB interface 3 has the lowest priority. To stop a single AHB port from consuming all the memory bandwidth, after a quad-word transfer the priority of the currently active AHB port is reduced for a single cycle. This enables other AHB ports to perform transactions.
ARM DDI 0215A |
Copyright © 2002 ARM Limited. All rights reserved. |
2-13 |

Functional Overview
2.6Memory bank select
Eight independently configurable memory chip selects are supported, with a separate AMBA AHB select, HELMPMCxCS[7:0] to select the appropriate chip select. HELMPMCxCS selects 0 to 3 are used to select static memory devices, and HELMPMCxCS selects 4 to 7 are used to select dynamic memory devices.
Table 2-1 indicates the relationship between the AHB select, HELMPMCxCS[7:0] and the memory chip selects. In the table an x refers to the AHB port number.
Table 2-1 Memory bank selection
Select |
Chip |
Device |
Chip select |
|
select |
||||
|
|
|
||
|
|
|
|
|
HSELMPMCxCS0 |
0 |
Static Mem 0 |
nMPMCSTCSOUT[0] |
|
|
|
|
|
|
HSELMPMCxCS1 |
1 |
Static Mem 1 |
nMPMCSTCSOUT[1] |
|
|
|
|
|
|
HSELMPMCxCS2 |
2 |
Static Mem 2 |
nMPMCSTCSOUT[2] |
|
|
|
|
|
|
HSELMPMCxCS3 |
3 |
Static Mem 3 |
nMPMCSTCSOUT[3] |
|
|
|
|
|
|
HSELMPMCxCS4 |
4 |
Dynamic Mem 0 |
nMPMCDYCSOUT[0] |
|
|
|
|
|
|
HSELMPMCxCS5 |
5 |
Dynamic Mem 1 |
nMPMCDYCSOUT[1] |
|
|
|
|
|
|
HSELMPMCxCS6 |
6 |
Dynamic Mem 2 |
nMPMCDYCSOUT[2] |
|
|
|
|
|
|
HSELMPMCxCS7 |
7 |
Dynamic Mem 3 |
nMPMCDYCSOUT[3] |
|
|
|
|
|
The address range allocated to a chip select is determined by the AHB decoder.
The largest amount of memory usable for a single chip select is 256MB.
2-14 |
Copyright © 2002 ARM Limited. All rights reserved. |
ARM DDI 0215A |

Functional Overview
2.7Memory map
The MPMC provides hardware support for booting from external non-volatile memory. During boot the non-volatile memory must be located at address 0x00000000 in memory. When the system is booted, the SRAM or SDRAM memory can be remapped to address 0x00000000 using software.
2.7.1Power-on-reset memory map
On power-on reset, memory chip select 1 is mirrored onto memory chip select 0 and chip select 4. Therefore, any transactions to memory chip select 0 or chip select 4 (or chip select 1) access memory chip select 1. Clearing the address mirror bit (M) in the MPMCControl register disables address mirroring, and the memory chip select 0, chip select 4, and memory chip select 1 can then be accessed as normal.
2.7.2Chip select 1 memory configuration
The memory width and chip select polarity of static memory chip select 1 can be configured by using a number of input signals. This enables you to boot from chip select 1.
The configuration signals are MPMCCS1MW[1:0], memory width select, and
MPMCCS1POL, chip select polarity.
2.7.3Boot from flash, SRAM remapped after boot
The system set up is:
•Chip select 1 is connected to the boot flash device
•Chip select 0 is connected to the SDRAM to be remapped to 0x00000000 after boot.
The boot sequence is as follows:
1.At power on the reset chip select 1 is mirrored into chip select 0 (and chip select 4). The MPMCCS1MW and MPMCCS1POL (and MPMCCS0POL,
MPMCCS2POL, MPMCCS3POL) signals are configured so that the non-volatile memory device can be accessed.
2.When the power-on-reset (nPOR) and AHB reset (HRESETn) go inactive, the processor starts booting from 0x00000000 in memory. Therefore, the processor starts booting from flash memory because of the chip select mirroring.
3.The software programs the optimum delay values in the flash memory so that the boot code can run at full speed.
ARM DDI 0215A |
Copyright © 2002 ARM Limited. All rights reserved. |
2-15 |

Functional Overview
4.The code branches to chip select 1 so that the code can continue executing from the non-remapped memory location.
5.The appropriate values are programmed into the MPMC to configure chip select 0.
6.The address mirroring is disabled by clearing the MPMCControl register, Address Mirror (M) field.
7.The ARM reset and interrupt vectors are copied from flash memory to SRAM which can then be accessed at address 0x00000000.
8.Further boot, initialization, or application code is executed.
2.7.4Example of a boot from flash, SDRAM remapped after boot
The system set up is:
•Chip select 1 is connected to the boot flash device
•Chip select 4 is connected to the SRAM to be remapped to 0x00000000 after boot.
The boot sequence is as follows:
1.At power on the reset chip select 1 is mirrored into chip select 4 (and chip select 0). The MPMCCS1MW and MPMCCS1POL (and MPMCCS0POL,
MPMCCS2POL, MPMCCS3POL) signals are configured so that the non-volatile memory device can be accessed.
2.When the power-on-reset (nPOR) and AHB reset (HRESETn) go inactive, the processor starts booting from 0x00000000 in memory. Therefore, the processor starts booting from flash memory because of the chip select mirroring.
3.The software programs the optimum delay values in the flash memory so that the boot code can run at full speed.
4.The code branches to chip select 1 so that the code can continue executing from the non-remapped memory location.
5.The appropriate values are programmed into the MPMC to configure chip select 4 and the memory device is initialized.
6.The address mirroring is disabled by clearing the MPMCControl register, Address Mirror (M) field.
7.The ARM reset and interrupt vectors are copied from flash memory to SRAM which can then be accessed at address 0x00000000.
8.Further boot, initialization, or application code is executed.
2-16 |
Copyright © 2002 ARM Limited. All rights reserved. |
ARM DDI 0215A |

Functional Overview
2.7.5Memory aliasing
Memory aliasing is not recommended. This is because internally the memory controller uses a 28-bit address (enabling up to 256Mb of memory per chip select). The chip select or MPMC buffer is only selected when the appropriate AHB HSELMPMCxCS[7:0] signal goes active. If the region of memory region provided by the AHB decoder is larger than the memory connected to the chip select, the memory is aliased many times in the memory region. However, because the memory controller buffers always use a 28-bit address, this can cause coherency issues if aliased addressing is used.
2.7.6AHB port address map
It is recommended that the addresses for accessing the memory for each of the AHB ports are similar. As the memory controller uses a 28-bit address internally, the buffers use the full 28-bit address to determine which area of memory is accessed. If the addresses are not similar coherency issues might occur.
Note
Tying off the high order address bits appropriately can be used to get around the coherency issues.
2.7.7Unused AHB HADDRx address bits
If some of the HADDRx address bits are not required, you can tie off the upper address bits.
ARM DDI 0215A |
Copyright © 2002 ARM Limited. All rights reserved. |
2-17 |

Functional Overview
2-18 |
Copyright © 2002 ARM Limited. All rights reserved. |
ARM DDI 0215A |