- •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
Static Memory Controller
5.6Byte lane control
The PrimeCell MPMC generates byte lane control signals nMPMCBLSOUT[3:0] according to:
•little or big-endian operation
•AMBA transfer width, indicated by HSIZE[2:0]
•external memory bank databus width, defined within each control register
•the decoded HADDR[1:0] value for write accesses only.
Word transfers are the largest size transfers supported by the MPMC. Any access attempted with a size greater than a word causes an ERROR response to be generated. Each memory chip select can be 8, 16, or 32 bits wide. The type of memory used determines how the nMPMCWEOUT and nMPMCBLSOUT signals are connected to provide byte, halfword and word access. For read accesses, you must control the nMPMCBLSOUT signals by driving them either all HIGH, or all LOW. This is done by programming the Byte Lane State (PB) bit within the MPMCStaticConfig[n] register. Accesses to memory banks constructed from 8-bit or non byte-partitioned memory devices and Accesses to memory banks constructed from 16 or 32-bit memory devices on page 5-24 explain why different connections are required, in respect of nMPMCWEOUT and nMPMCBLSOUT[3:0], for different memory configurations.
5.6.1 Accesses to memory banks constructed from 8-bit or non byte-partitioned memory devices
For memory banks constructed from 8-bit or non byte-partitioned memory devices, it is important that the Byte Lane State (PB) bit is cleared to 0 within the respective memory bank control register. This forces all nMPMCBLSOUT[3:0] lines HIGH during a read access as the byte lane selects are connected to the device write enables.
Figure 5-16 on page 5-24 shows 8-bit memory being used to configure memory banks that are 8, 16, and 32-bits wide. In each of these configurations, the nMPMCBLSOUT[3:0] signals are connected to write enable (nWE) inputs of each 8-bit memory. The nMPMCWEOUT signal from the PrimeCell MPMC is not used. For write transfers, the relevant nMPMCBLSOUT[3:0] byte lane signals are asserted LOW, and steer the data to the addressed bytes. For read transfers, all of the nMPMCBLSOUT[3:0] lines are deasserted HIGH, which enables the external bus to be defined for at least the width of the accessed memory.
ARM DDI 0215A |
Copyright © 2002 ARM Limited. All rights reserved. |
5-23 |
Static Memory Controller
nMPMCSTCSOUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nMPMCOEOUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nCE |
|
|
|
|
|
|
nCE |
|
|
|
|
nCE |
|
|
|
|
|
nCE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
nOE |
|
|
|
|
|
|
nOE |
|
|
|
|
nOE |
|
|
|
|
|
nOE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
nMPMCBLSOUT[3] |
|
nWE |
nMPMCBLSOUT[2] |
|
|
nWE |
|
nMPMCBLSOUT[1] |
|
nWE |
nMPMCBLSOUT[0] |
|
nWE |
||||||||||
|
|
|
|
|
|||||||||||||||||||
MPMCDATA[31:24] |
|
IO[7:0] |
MPMCDATA[23:16] |
|
|
IO[7:0] |
|
MPMCDATA[15:8] |
|
IO[7:0] |
MPMCDATA[7:0] |
|
IO[7:0] |
||||||||||
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32-bit bank consisting of four 8-bit devices |
||||||||
nMPMCSTCSOUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
nMPMCOEOUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
nCE |
|
|
|
|
|
|
nCE |
|
|
|
|
nMPMCSTCSOUT |
|
nCE |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
nOE |
|
|
|
|
|
|
nOE |
|
|
|
|
nMPMCOEOUT |
|
nOE |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
nMPMCBLSOUT[1] |
|
nWE |
nMPMCBLSOUT[0] |
|
|
|
nWE |
|
|
|
|
nMPMCBLSOUT[0] |
|
nWE |
|
||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||
MPMCDATA[15:8] |
|
IO[7:0] |
MPMCDATA[7:0] |
|
|
|
IO[7:0] |
|
|
|
|
MPMCDATA[7:0] |
|
IO[7:0] |
|
||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
16-bit bank consisting of two 8-bit devices |
|
8-bit bank consisting of one 8-bit device |
|
Figure 5-16 Memory banks constructed from 8-bit memory
5.6.2Accesses to memory banks constructed from 16 or 32-bit memory devices
For memory banks constructed from 16 or 32-bit memory devices, it is important that the Byte Lane Select (PB) bit is set to 1 within the respective memory bank control register. This asserts all nMPMCBLSOUT[3:0] lines LOW during a read access as during a read all bytes of the devices must be selected to avoid undriven byte lanes on the read data value. In the case of 16 and 32-bit wide memory devices, byte select signals exist and these must be appropriately controlled, as shown in Figure 5-17 and Figure 5-18 on page 5-25.
nMPMCSTCSOUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
nMPMCOEOUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
nMPMCWEOUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nCE |
|
|
|
|
nCE |
nMPMCSTCSOUT |
|
nCE |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
nOE |
|
|
|
|
nOE |
nMPMCOEOUT |
|
nOE |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
nWE |
|
|
|
|
nWE |
nMPMCWEOUT |
|
nWE |
|
|
|
|
|
|
|
|
|
|
||||
nMPMCBLSOUT[3] |
|
nUB |
nMPMCBLSOUT[1] |
|
nUB |
nMPMCBLSOUT[1] |
|
nUB |
|||||
|
|
|
|||||||||||
nMPMCBLSOUT[2] |
|
nLB |
nMPMCBLSOUT[0] |
|
nLB |
nMPMCBLSOUT[0] |
|
nLB |
|||||
|
|
|
|||||||||||
MPMCDATA[31:16] |
|
IO[15:0] |
MPMCDATA[15:0] |
|
IO[15:0] |
MPMCDATA[15:0] |
|
IO[15:0] |
|||||
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32-bit bank consisting of two 16-bit devices |
16-bit bank consisting of one 16-bit device |
Figure 5-17 Memory banks constructed from 16-bit memory
5-24 |
Copyright © 2002 ARM Limited. All rights reserved. |
ARM DDI 0215A |
Static Memory Controller
nMPMCSTCSOUT nCE
nMPMCOEOUT nOE
nMPMCWEOUT nWE
nMPMCBLSOUT[3] nB3
nMPMCBLSOUT[2] nB2
nMPMCBLSOUT[1] nB1
nMPMCBLSOUT[0] nB0
MPMCDATA[31:0] IO[31:0]
32-bit bank consisting of one 32-bit device
Figure 5-18 Memory bank constructed from 32-bit memory
Figure 5-19 on page 5-26 shows connections for a typical memory system with different data width memory devices.
ARM DDI 0215A |
Copyright © 2002 ARM Limited. All rights reserved. |
5-25 |
Static Memory Controller
MPMCADDR |
|
|
MPMCDATA |
|
OUT[22:2] |
A[20:0] |
Q[31:0] |
OUT[31:0] |
MPMCDATA |
MPMCADDROUT[22:0] |
|
OUT[31:0] |
||
|
|
|
|
|
nMPMCSTCSOUT[0] |
nCE |
|
|
|
nMPMCOEOUT |
nOE |
|
|
|
2Mx32 Burst Mask ROM |
MPMCDATA |
|
||
MPMCADDR |
|
|
|
|
OUT[17:2] |
A[15:0] |
IO[15:0] |
OUT[31:16] |
|
|
|
|
||
nMPMCSTCSOUT[1] |
nCE |
|
|
|
|
nOE |
|
|
|
nMPMCWEOUT |
nWE |
|
|
|
|
nUB |
|
|
|
MPMCADDR |
nLB |
|
MPMCDATA |
|
|
|
|
||
OUT[17:2] |
A[15:0] |
IO[15:0] |
OUT[15:0] |
|
|
|
|
||
|
nCE |
|
|
|
|
nOE |
|
|
|
|
nWE |
|
|
|
|
nUB |
|
|
|
|
nLB |
|
|
|
MPMCADDR |
64Kx16 SRAM, two off |
MPMCDATA |
|
|
|
|
|
||
OUT[18:2] |
A[16:0] |
IO[7:0] |
OUT[31:24] |
|
|
|
|
||
nMPMCSTCSOUT[2] |
nCE |
|
|
|
|
nOE |
|
|
|
nMPMCBLSOUT[3] |
nWE |
|
MPMCDATA |
|
MPMCADDR |
|
|
|
|
OUT[18:2] |
A[16:0] |
IO[7:0] |
OUT[23:16] |
|
|
|
|
||
|
nCE |
|
|
|
|
nOE |
|
|
|
nMPMCBLSOUT[2] |
nWE |
|
MPMCDATA |
|
MPMCADDR |
|
|
|
|
OUT[18:2] |
A[16:0] |
IO[7:0] |
OUT[15:8] |
|
|
|
|
||
|
nCE |
|
|
|
|
nOE |
|
|
|
nMPMCBLSOUT[1] |
nWE |
|
MPMCDATA |
|
MPMCADDR |
|
|
|
|
OUT[18:2] |
A[16:0] |
IO[7:0] |
OUT[7:0] |
|
|
|
|
||
|
nCE |
|
|
|
|
nOE |
|
|
|
nMPMCBLSOUT[0] |
nWE |
|
|
|
128Kx8 SRAM, four off |
|
|
Figure 5-19 Typical memory connection diagram
5-26 |
Copyright © 2002 ARM Limited. All rights reserved. |
ARM DDI 0215A |
Static Memory Controller
5.6.3Elimination of floating bytes on the external interface
The PrimeCell MPMC uses the programmed external memory width of each bank and the endianness to determine which remaining bytes it requires to drive to ensure that the external bus is never floating. The input/output pads for the external write databus lines are controlled by nMPMCDATAOUTEN[3:0] as shown in Table 5-2. Data is driven out on MPMCDATAOUT[31:0] when nMPMCDATAOUTEN is asserted LOW.
Table 5-2 MPMCDATAOUT[31:0] controlled by nMPMCDATAOUTEN[3:0]
nMPMCDATAOUTEN |
MPMCDATAOUT |
|
|
[3] |
[31:24] |
|
|
[2] |
[23:16] |
|
|
[1] |
[15:8] |
|
|
[0] |
[7:0] |
|
|
ARM DDI 0215A |
Copyright © 2002 ARM Limited. All rights reserved. |
5-27 |