International Business Machines Corporation 1999, 2000.
Printed in the United States of America, March 2000. All Rights reserved.
IBM Microelectronics, PowerPC, PowerPC 603e, RISCWatch, and AIX are trademarks of the IBM corpora-
tion. IBM and the IBM logo are registered trademarks of the IBM corporation. Other company names and
product identifiers are trademarks of the respective companies.
This document contains information which is subject to change by IBM without notice. IBM assumes no
responsibility or liability for any use of the information contained herein. Nothing in this document shall
operate as an express or implied license or indemnity under the intellectual property rights of IBM or third
parties. The products described in this document are not intended for use in implantation or other direct
life-support applications where malfunction may result in physical harm or injury to persons. NO WARRANTIES OF ANY KIND, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE OFFERED IN THIS DOCUMENT.
The CPC700 Memory Controller and PCI Bridge (CPC700) contains a bridge from the PowerPC processor
to the PCI bus, as well as a high-speed memory controller, internal peripherals, and control for external
ROM and external peripherals. The CPC700 is meant to be a general purpose solution to the problem of
interfacing a high performance, superscalar, PowerPC 603e, 740, and 750 microprocessors to any PCI
bus. These microprocessors feature multiple, independent execution units and large onboard instruction
and data caches.
The CPC700 adds the following features:
• PowerPC 60x/7xx bus with operation to 66 MHz (CPC700-66) or to 83 MHz (CPC700-83).
• Synchronous DRAM interface operating at the processor bus speed.
- 64-bit interface for non-ECC applications.
- 72-bit interface (64 bits of data plus 8 checkbits) for ECC applications.
- ECC protection applied to address as well as data.
• ROM/SRAM/External Peripheral Controller.
- Flash ROM/Boot ROM interface.
- Direct support for 8-, 16-, 32-, or 64-bit SRAM or external peripherals.
- PCI Bus Interface may be configured to operate synchronously or asynchronously to the processor
bus (synchronous clock is limited to 33 MHz PCI bus operation).
- Internal PCI Bus Arbiter for up to six external devices at PCI bus speeds up to 33 MHz.
• Interrupt Controller supports interrupts from a variety of sources.
- Internal Peripherals (UARTs, IICs, Timers).
- External Peripherals.
- ECC correctable error.
- PCI writes to PCI Command Register.
- PCI writes to a specific memory address range.
• Programmable Timers.
• Two 2-wire 8-bit Serial Ports (16550 compatible UART).
• Two IIC interfaces.
• Supports JTAG for board level testing.
• Byte swapping supported for bi-endian operation.
With versions that support processor bus speeds up to 66 MHz and 83 MHz, the CPC700 allows the PowerPC to realize its full potential. To complement this operation, the CPC700 memory subsystem keeps up
with the processor by providing an optimized memory controller. The memory architecture focuses on performance, cost, and board space. Support is provided for 16-bit wide SDRAMs, reducing the number of
memory devices that are needed to support the 64-bit PowerPC bus size. The device will support four
banks of SDRAM, with up to 512 Mbytes per bank.
CPC700 User’s Manual—Preliminary1-1
For mission critical, zero down time operations , the CPC700 incorporates Error Correction Code (ECC) circuitry with the ability to correct data errors as well as detect address errors. The device also supports the
processor’s address and data parity scheme. If processor data parity is not required, the unused pins can
be configured to provide PCI arbitration.
A complement of internal peripherals are available, including an interrupt controller, programmable timers,
dual UARTs, and two independent IIC ports. If the design requires additional functionality, an integrated
peripheral bus supports 8-, 16-, 32-, or 64-bit device operations for external peripherals. This bus also supports the Boot ROM. Additional chip selects are provided to eliminate the need for external glue logic. A
total of five chip selects are provided that may be programmed to support ROM banks, SDRAM banks, or
peripherals, providing a very flexible system environment.
Critical to intelligent embedded applications, the PCI interface offers features that allow the CPC700 to
operate in a host role, as an intelligent add-in card, or in stand-alone operating modes. The following diagram shows the CPC700 in a typical system configuration.
1-2CPC700 User’s Manual—Preliminary
PowerPC
60x/7xx
Processor
Interrupts
60x/7xx Bus
CPC700
Timers
2 UARTs
2
C
2 I
ROM/SRAM
External
Peripheral
PCI Devices
PCI arbiter
PCI Bus
SDRAM
Figure 1. System Block Diagram
CPC700 User’s Manual—Preliminary1-3
1.2 CPC700 Block Diagram
8
Parity
or
Arbiter
66MHz Processor Bus
119
Processor
Interface
Data
Parity
PCI
Arb
PCI
Interface
104
SDRAM
ROM
Peripherals
ECC
66MHz Processor Local Bus (PLB)
DCR Bus
JTAG
Misc.
(interrupts)
UIC
5
System
&
PLL
1/2X
OPB
Bridge
CPC700 ASIC
UART
UART
2
I
I2C
33MHz On Chip Peripheral Bus (OPB)
GPT
(Timers)
2
2
C
2
2
52
25 to 66MHz PCI Bus
1219
Figure 2. Functional Block Diagram
The block diagram illustrates the internal and external bus frequencies of the CPC700, given a 66MHz processor bus. Each of the blocks in the diagram represents a core from the IBM Blue Logic core library. The
architecture is based on two primary busses, the Processor Local Bus (PLB) and the On Chip Peripheral
Bus (OPB). The PLB operates at the same frequency as the local processor bus. The OPB operates at half
of the frequency of the PLB.
1-4CPC700 User’s Manual—Preliminary
Processor to PLB Interface
The CPC700 provides an interface to attach a 60x or 7xx processor to the internal PLB and to provide the
processor with a low latency access path to local memory. Through this interface, the processor may
access the PCI bus, local memory, external peripherals, and internal peripherals (UARTs, I2Cs, Timers,
and interrupt controller).
Processor interface features:
• Supports PowerPC 603e, 740, and 750 families.
• One level processor address pipelining.
• Support for processor “no-DR
• Processor bus arbiter arbitrates between local processor and internal snoop engine.
• L1 cache coherency support during PCI access to local memory.
• 32-byte write buffer to memory.
• 32-byte write buffer to PLB.
• lwarx/stwx. support (reservation cancelling snoops).
• Address only cycle support.
• External MCP_REQ input may be programmed to drive MCP to processor.
• Error tracking/status for processor transactions.
• Provides low latency access path to local memory.
Address Map Support
The CPC700 incorporates a simple fixed processor address map that serves the PowerPC family of processors. The address map has provisions for ROM, RAM, and I/O. Mapping does not require flexibility
because the CPC700 has the ability to map primary and secondary resources independently. This mapping can be performed solely from the processor side or from a combination of the processor and the PCI
side. This mechanism lets the same fixed secondary resources become flexible to the primary side, while
providing local processor operating space stability.
TRY” mode.
Through the use of “Mapping Port Windows,” either the PowerPC or PCI can gain access to the other
side’s resources. There are three local windows available to the PowerPC to access PCI memory. These
windows can be programmed to powers of 2 boundaries, are variable in size, and may be used to access
any location in a 64-bit PCI address space yet are invisible to the PCI bus.
PCI to local processor memory access “Port Windows” are handled in the PCI standard method, through
the programming of the Base Address Registers (BARs) in PCI configuration space. These registers are
defined to allow the PowerPC processor to request allocation of resources on the PCI side. There are
some fundamental differences though, that differentiate the CPC700 from other embedded solutions. The
first of these differences is that the PowerPC can program the size of the allocation as well as the type: I/O
or Memory. The second difference is that the actual location allocated by the host is translated to the PowerPC space via secondary registers allowing the PowerPC to maintain its local allocation independent of
PCI mappings.
There are two BARs available in the CPC700 for this function.
CPC700 User’s Manual—Preliminary1-5
Table 1. Address Map
Start
FunctionSub Function
Local Memory/Peripherals
PCI Core Space
Device Configuration
Register (DCR) Space
Internal Peripherals
Local Memory/Peripherals
Boot ROMFFE0 0000FFFF FFFF2MB
1. The Local Memory/Peripheral areas of the memory map may be configured for SDRAM, ROM, or Peripherals.
The PLB to PCI interface core provides a mechanism for connecting PCI devices to the local PowerPC
processor and local memory. This interface is compliant with version 2.1 of the PCI Specification. Features
of this core include:
• 32-bit PCI address bus
• PCI bus clock frequency from 25 to 66MHz
• Supports processor access to all PCI address spaces:
- Single-beat PCI I/O reads and writes
- PCI memory single-beat and prefetch-burst reads and single-beat writes.
- Single-beat PCI configuration reads and writes (type 0 and type 1)
- PCI interrupt acknowledge
- PCI special cycle
• Buffering between PLB and PCI:
- PCI target 32-byte write post buffer
- PCI target 32-byte read prefetch buffer
- PCI master 32-byte write post buffer
1-6CPC700 User’s Manual—Preliminary
- PCI master 64 byte read prefetch buffer
• Error tracking/status
• Internal PCI bus arbiter for up to six external devices at PCI bus speeds up to 33MHz. Internal arbiter
use is optional and may be disabled for systems which employ an external arbiter.
• Support for synchronous and asynchronous clocking between Processor and PCI busses. Support for
synchronous clocking is limited to a 33MHz PCI bus operation.
Memory Controller
The CPC700 Memory Controller provides the local PowerPC processor with a low latency access path to
local memory and external peripherals. In addition, it supports hardware coherent accesses to the processor’s local memory from the PCI bus. Coherency is maintained on PCI accesses to local memory by
snooping the processor’s L1 cache and posted write buffers before allowing the PCI interface to complete
the requested access.
Industry standard 72-pin and 168-pin modules are supported, allowing for a variety of system memory configurations. The memory controller supports up to five banks (five Chip Select outputs). Bank 0 is dedicated to Boot ROM, while banks 1-4 may be programmed to support either SDRAM, ROM, SRAM, or
external peripherals. Up to 512 MBytes per bank, are supported up to a maximum of 2 GBytes. Memory
timings, starting and ending address ranges, and memory addressing modes are programmable. During
reset, Bank 0 defaults to ROM and is enabled while all other banks are disabled.
Synchronous DRAM:
• Up to 4 banks (Bank 0 defaults to ROM).
• 11x9 to 13x11 addressing for SDRAM (2 and 4 bank internal SDRAM chip architecture supported).
• 8 MByte to 512 MByte per bank.
• Programmable timings and address mapping.
• CAS before RAS refresh w/programmable refresh timer.
• Supports hardware coherency.
• Page mode accesses.
• Sync DRAM configuration via mode set command.
• Memory bus operates at same frequency as processor bus.
• 64-bit and 32-bit memory interface options (72-bit or 40-bit if implementing ECC).
• Support for auto-precharge.
• Support for SRAM self-refresh mode (bank 4 only).
ROM/Peripheral:
• ROM, EPROM, SRAM, and Peripherals supported.
• Burst and Non-Burst devices.
• 1-5 banks (shared with SDRAM).
• 8-, 16-, 32-, and 64-bit data bus widths supported.
CPC700 User’s Manual—Preliminary1-7
• Programmable timing per bank.
• Shared address/data/control with SDRAM interface.
• External latch control for shared address bus support.
• Programmable address mapping.
• Peripheral Device pacing with external “Ready”.
ECC
The CPC700 generates, checks, and corrects ECC bits on their way to and from the memory controller.
Write cycles to memory that are less than a word in width require the ECC controller to generate a read
cycle to fetch the appropriate word, modify that word, generate the ECC bits, and write the word back out
to memory.
The ECC controller implements a 64-bit, single-error-correct, double-error-detect, over data and address.
ECC data is 8 bits wide.
• Corrects single-bit data errors.
• Detects double-bit data errors.
• Detects single-bit address errors.
• Detects concurrent single-bit address and single-bit data errors.
• Detects any errors within an aligned nibble.
• Eight check bits support 32- or 64-bit data bus widths.
• Support for mixing ECC and non-ECC DIMMs in the same system.
• ECC checking may be disabled.
UART
The CPC700 contains two UARTs that provide two wire, full duplex serial interfaces to support communications with serial peripheral devices. Each UART is compatible with the NS 16550 and includes a 16-byte
send and a 16-byte receive FIFO. Features of the UART include:
• Compatible with the NS 16550.
• 16-byte send FIFO, 16-byte receive FIFO.
• Full duplex operation.
• Programmable baud rate generator.
• Supports 5- to 8-bit word size, 1/2 stop bits, even/odd/no parity.
• Two wire transmit/receive external interface.
The UARTs perform serial-to-parallel conversion on data characters received from a peripheral device and
parallel-to-serial conversion on data characters received from the processor. The processor can read the
complete status of the UARTs at any time during the functional operation. Status information reported
includes the type and condition of the transfer operations being performed by the UARTs, as well as any
error conditions, such as parity, overrun, framing and break interrupt.
1-8CPC700 User’s Manual—Preliminary
The CPC700 UARTs are functionally identical to NS16450 in character mode (on power up they will be in
this mode). The UARTs can be put into FIFO mode to relieve the processor of excessive software overhead. Here internal FIFOs are activated, allowing 16 bytes (plus three bits per byte of error data in the
RCVR FIFO) to be stored in both receive and transmit modes. The timing reference clock is the CPC700
SYS_CLOCK input divided by 4. This will generally be 8.333MHz in a typical application (PowerPC local
processor operating with a 66MHz bus frequency).
The UARTs include a programmable baud rate generator capable of dividing the timing reference clock by
a divisor of 1 to (2
16
-1), and they produce a 16x clock for driving the internal transmitter logic. This 16x
clock can also be used to drive the receiver logic.
The UARTs have a processor interrupt system. Interrupts can be programmed to the user’s requirements,
minimizing the computing required to handle the communications link.
IIC Bus Interface
The CPC700 provides two fully independent IIC bus interfaces. The IIC bus is a two wire, bidirectional,
open-drain, low speed serial interface. Both the serial clock (SCL) and the serial data (SDA) lines are bidirectional to support multiple bus masters and to mix “fast“ and “slow” devices on the same bus. The
CPC700 IIC interfaces support the following standard and/or enhanced features of the Philips
ductors I
2
C Specification, dated 1995:
• 100 or 400 kHz operation.
• 8-bit data.
• 10- or 7-bit address.
• Slave transmitter and receiver.
• Master transmitter and receiver.
• Multiple bus masters.
®
Semicon-
• Two independent 4x1 byte data buffers.
• 12 memory mapped and fully programmable configuration registers.
• One programmable interrupt request signal.
• Provides full management of all IIC bus protocol
.
General Purpose Timers (GPT)
The General Purpose Timer (GPT) provides a separate time base counter and system timers for the
CPC700. Five capture timers and five compare timers are implemented in the GPT macro. Features of the
GPT core include:
• 32-bit time base.
- Updated once every CPC700 SYS_CLOCK.
• Five capture event timers.
• Five compare timers.
• 10 interrupt outputs, one for each capture and compare timer.
CPC700 User’s Manual—Preliminary1-9
Universal Interrupt Controller (UIC)
The Universal Interrupt Controller (UIC) provides the control, status, and communications necessary
between the various sources of interrupts and the local PowerPC processor. Features of the UIC include
the following:
• Status registers provide both of the following for interrupts.
- Current state of interrupts.
- Current state of all enabled interrupts (masked with Enable register).
Phase Locked Loop (PLL)
Table 2. PLL Usage
PLLInput FrequencyOutput FrequencyUsage
PLL 0 33MHz
PLL 125MHz to 66MHzSame as inputAsync PCI Interface
The CPC700 clocking is controlled by two PLLs that minimize clock skew between the internal latches of
the CPC700 and the external devices in the system. PLL1 is only used when the PCI interface is used in
asynchronous mode. When in synchronous mode, PLL1 is placed in bypass mode via pin strappings, and
the PCI clock input pin must be pulled to ground.
33MHzUART, IIC, and Timers
66MHzAll Other Cores
1-10CPC700 User’s Manual—Preliminary
JTAG
The IEEE 11.49.1 (JTAG) Boundary scan is included to facilitate tester requirements as well as for the
support of board level testing and debug.
The following JTAG commands are supported by the CPC700 JTAG TAP controller:
1.EXTEST
2.SAMPLE/PRELOAD
3.BYPASS
4.CLAMP
5.IDCODE
6.USERCODE
The CPC700 IDCODE value is 14940049. The CPC700 USERCODE value is 0.
Refer to IEEE 1149.1 specification for details on JTAG operation.
CPC700 User’s Manual—Preliminary1-11
1-12CPC700 User’s Manual—Preliminary
Chapter 2. Signal Descriptions
2.1 Processor Interface Signals
Active
Signal Name
LevelI / ODescription
DH[0:31]HighI/O
DL[0:31]HighI/O
DP[0:3] /
REQ[2:5]_N
DP[4:7] /
GNT[2:5]_N
- / LowI/O
- / LowI/O
Data Bus High: Processor Data bus - High 32 bits. The correspondence
of the processor data paths to byte lanes is as follows:
[DH0 - DH7] - Byte Lane 0
[DH8 - DH15] - Byte Lane 1
[DH16 - DH23] - Byte Lane 2
[DH24 - DH31] - Byte Lane 3
Data Bus Low: Processor Data bus - Low 32 bits. The correspondence
of the processor data paths to byte lanes is as follows:
[DL0 - DL7] - Byte Lane 4
[DL8 - DL15] - Byte Lane 5
[DL16 - DL23] - Byte Lane 6
[DL24 - DL31] - Byte Lane 7
Data Parity[0-3] / Request[2-5]: When the internal PCI arbiter is
disabled these signals carry the Processor Data Parity bits [0-3]. Odd
Parity is driven / received on the processor bus. The correspondence of
the Data parity pin to processor data paths is as follows:
DP0 - [DH0 - DH7]
DP2 - [DH8 - DH15]
DP3 - [DH16 - DH23]
DP4 - [DH24 - DH31]
If the internal PCI arbiter is enabled these signals carry the PCI Request
inputs [2-5] providing for a total of 6 PCI Request inputs.
Data Parity[4-7] / Grant[2-5]: When the internal PCI arbiter is disabled
these signals carry the Processor Data Parity bits [4-7]. The
correspondence of the Data parity pin to processor data paths is as
follows:
DP4 - [DL0 - DL7]
DP5 - [DL8 - DL15]
DP6 - [DL16 - DL23]
DP7 - [DL24 - DL31]
If the internal PCI arbiter is enabled these signals carry the PCI Grant
outputs [2-5] providing for a total of 6 PCI Grant outputs.
AP[0:3]-I/O
A[0:31]HighI/O
Address Parity: Odd parity for each of the four bytes of the address
bus. The correspondence of the Address parity pins to processor
address bytes is as follows:
AP0 - [A0 - A7]
AP1 - [A8 - A15]
AP2 - [A16 - A23]
AP3 - [A24 - A31]
Address Bus:
Input: Represents the physical address of the data to be transferred.
Output: Represents the physical address of a snoop operation.
CPC700 User’s Manual—Preliminary2-1
Signal Name
Active
LevelI / ODescription
TT[0:4]HighI/O
TSIZ[0:2]HighI/O
ARTRY_N LowI/O
TBST_NLowI/O
GBL_NLowI/O
TS_NLowI/O
BR_N LowI
BG_N LowO
TA_NLowO
AACK_N LowO
T ransfer Type: Indicates the type of the transfer currently in progress.
Transfer Size: Indicates the data transfer size for the current operation.
Address Retry: This signal is asserted by either the processor or the
CPC700 to indicate that the current address tenure needs to be rerun at
a later time.
T ransfer Bur st: Indicates a burst transfer of f our 64-bit double-words on
the processor bus.
Global: This signal is asserted during snoop operations to indicate to
the processor that it must snoop the transaction.
Transfer Start: Asserted low for one clock cycle to signal a valid
address on the A[0:31] lines. This signal is an input when the local
processor initiates a cycle on the bus and acts as an output when the
CPC700 initiates a snoop cycle on behalf of a PCI master access to
local memory.
Bus Request: Processor bus request from the local processor.
Bus Grant: Grant output indicating that the local processor may assume
mastership of the processor bus.
Transfer Acknowledge: Indicates that a single-beat data transfer has
completed or that a data beat in a burst transfer completed successfully.
Address Acknowledge: Indicates that the address phase of a
transaction has completed.
DBG_N LowOData Bus Grant: Indicates that the local processor may assume
mastership of the processor data bus.
MCP_N LowOMachine Check Pin: Indicates that an error condition has occurred and
that a machine check exception should be taken.
MCP_REQ HighIMachine Check Interrupt Request: Input which may be used by an
external device to signal a machine check to the processor through the
MCP_N signal.
2-2Signal Descriptions
2.2 PCI Bus Interface Signals
Active
Signal Name
AD[31:0]HighI/OAddress/Data Bus: Address and data are multiplexed onto the same
C/BE_N[3:0] LowI/OBus command and Byte Enables: Command and Byte Enables are
PARHighI/OParity: Even parity across AD[0:31] and C/BE_N[0:3]. Parity is stable
FRAME_NLowI/OFrame: Driven by the current master to identify the beginning and
IRDY_NLowI/OInitiator Ready: Indicates the initiating agent’s ability to complete the
TRDY_N LowI/OTarget Ready: Indicates the Target agent’s ability to complete the
STOP_NLowI/OSTOP: Indicates the current target is requesting the master to stop the
LevelI / ODescription
PCI pins. A bus transaction consists of an address phase followed by
one or more data phases.
multiplexed on the same pins. During the address phase of a
transaction, C/BE[0:3] define the bus command and during the data
phase they carry the bus byte enables.
and valid one clock after the address phase.
duration of an access.
current data phase of the transaction.
current data phase of the transaction.
current transaction.
DEVSEL_NLowI/ODevice Select: When actively driven, indicates the driving device has
decoded its address as the target of the current access.
IDSELHighIInitialization Device Select: Used as a chip select during configuration
read and write transactions
SERR_NLowI/OSystem Error: May be used for reporting address parity errors, data
parity errors on special cycle commands, or other error where the result
will be catastrophic.
PERR_NLowI/OParity Error: Data parity error.
PCI_CLK --IAsynchronous PCI Clock: Clock input required for use when the PCI
bus is run asynchronously from the processor bus. When operating in
synchronous mode, this pin is not used and should be tied low.
RST_N LowOPCI RESET: This output ma y be used as the reset to PCI b us slots when
the CPC700 is used as the primary host bridge. This signal will be
asserted during three scenarios:
1.Power on Reset: Following the deasertion of SYS_RESET_N,
RST_N will remain active for a period of 500us while the internal
PLLs lock after which, this signal will be deaserted.
2.Software Control: Setting PCI Bridge Options 2 register bit 12 high
will cause RST_N to assert. Resetting bit 12 to zero will deassert
RST_N.
3.PLL Tuning Bits Change: If the PLL tuning bits are changed under
software control, the CPC700 will enter the reset state similar to a
power on reset sequence. RST_N will remain asserted for 500us.
CPC700 User’s Manual—Preliminary2-3
Signal Name
Active
LevelI / ODescription
REQ0_N/
GNT_N
REQ1_NLowIRequest[1]: When the internal PCI arbiter is enabled, this signal
GNT0_N/
REQ_N
LowIRequest[0] / Grant: When the internal PCI arbiter is enabled, this signal
functions as the Request[0] input from another PCI master device.
When the internal PCI arbiter is disabled and an external arbiter is
employed, this signal is the Grant input f or the CPC700 from the e xternal
arbiter.
functions as the Request[1] input from another PCI master device. If the
PCI internal arbiter is not used, this signal is not used and should be
pulled high.
The internal PCI arbiter provides arbitration for 6 PCI master devices.
Request inputs [2-5] are multiplexed with the processor Data Parity
signals. If processor data parity is enabled, the internal PCI arbiter will
be disabled.
LowOGrant[0] / Request: When the internal PCI arbiter is enabled, this signal
functions as the Grant[0] output to another PCI master device.
When the internal PCI arbiter is disabled and an external arbiter is
employed, this signal is the Request output for the CPC700 to request
the use of the PCI bus.
The internal PCI arbiter provides arbitration for 6 PCI master devices.
Grant outputs [2-5] are multiplexed with the processor Data Parity
signals. If processor data parity is enabled then the internal PCI arbiter
will be disabled.
GNT1_NLowOGrant[1]: When the internal PCI arbiter is enabled, this signal functions
as the Grant[1] output from the CPC700 to another PCI master device. If
the PCI internal arbiter is not used, this signal is not used.
PCI_66_STRAP HighI66MHz Operation Strap: This signal is used to indicate to the CPC700
that the PCI bus is operating at higher than 33MHz.
2-4Signal Descriptions
2.3 Memory Interface Signals
Active
Signal Name
M_DATA[0:63]HighI/OMemory Data: 64-bit memory data bus. If configured for a 32-bit memory
ECC[0]HighI/OError Correction Code Data[0]: Bit [0] of the 8-bit Error correction code
DQM[0]HighOSDRAM Data Mask[0]: Data byte mask bus bit 0. This bit is connected to all
ECC/DQM[1:7]HighI/OECC[1:7] / DQM[1:7]: Multiplexed ECC and DQM bit [1:7]. The use of either
MA[12:0]HighOMemory Address[12:0]: Memory address bus. Memory address bit 10 also
LevelI/ODescription
interface, M_DATA[0:31] are used.
data bus. Bits [1:7] are multiplexed with the DQM bus bits [1:7]. If ECC is
enabled a single DQM (bit 0) is connected to all DQM inputs on all DIMMs.
DQM inputs of all DIMMs if ECC is used in the system. If ECC is not used,
then ECC/DQM[1:7] lines make up the remainder of the 8-bit DQM bus.
DQM[0] corresponds to Memory Data Lane 0. During reads, the CPC700
asserts DQM high to cause the SDRAM to tristate the SDRAM output. If
DQM is low, the SDRAM drives the data onto the output.
During writes, DQM high commands the SDRAM to mask the data. The input
data is ignored and the previous contents of the SDRAM are retained. When
DQM is low during a write, the SDRAM data is updated as usual.
ECC or the additional DQM lines are governed by a pin strapping option.
DQM7 corresponds to Memory Data Lane 7
functions as the auto-precharge bit. Signal range is in little endian notation.
ROM_OE_NLowOROM Output Enable: Output enable for ROM / Peripheral devices.
ROM_WE_NLowOROM Write Enable: Write enable for ROM / Peripheral devices.
ROM_RD_NLowOROM Read: Read signal for ROM / Peripheral devices.
ROM_WR_NLowOROM Write: Write signal for ROM / Peripheral devices.
ROM_RNW HighOROM Read-Not-Write: The ROM_RNW signal may be used as a direction
LowOMemory Bank Select[0:4]: Five Banks are supported with bank 0 required
to contain the boot ROM device. The remaining 4 banks ma y be programmed
for SDRAM, ROM/Flash, SRAM, or peripheral devices.
one of up to 4 internal banks within an SDRAM chip. Signal range is in little
endian notation.
indicator for external data bus transceivers in the event that the system
designer chooses to isolate the ROM / Peripheral bus from the SDRAM data
bus.
CPC700 User’s Manual—Preliminary2-5
ROM_ALEHighOROM Address Latch Enable: When accessing a bank which is programmed
for ROM, SRAM, or peripheral devices, the 24-bit memory address bus is
provided in two cycles. The 12-bit address on pins MA[12,11,9:0] bus must
be latched on the first cycle in order capture and hold the higher order
address bits of the ROM / peripheral address. The ROM_ALE signal may be
used as a latch enable for an external address bus latch to capture those
signals.
ROM_READYHighIROM Ready: External ready indicator from a device paced peripheral.
IIC1_SCLHighI/OIIC1 Clock
IIC1_SDA HighI/OIIC1 Data
2-6Signal Descriptions
2.5 System Interface Signals
Active
Signal Name
SYS_CLOCK —ISystem Clock Input: The system clock input must be one half the
SYS_RESET_NLowISystem Reset Input: Resets the CPC700 to its initial default state. The
RESET_OUT_NLowOReset Output: RESET_OUT_N follows the internal reset and will be
IRQ[0:11]HighIInterrupt Input [0:11]: Twelve external interrupts may be attached and
IRQ_OUT_N LowOInterrupt Output: Interrupt output to the local processor.
LevelI / ODescription
frequency and in phase with the local processor and SDRAM clocks.
internal reset will remain active for 500us after the SYS_RESET_N
signal is deasserted.
driven for 500us after the SYS_RESET_N signal is deasserted.
RESET_OUT_N will also be driven in the event that the PLL tuning bit
register is written so that the internal PLLs may re-lock with the new
configuration. After RESET_OUT_N is deasserted, the CPC700 will be
in its initial default state. The RESET_OUT_N signal should drive into
the processor’s hard reset logic.
allowed to interrupt the processor. These interrupt inputs are
asynchronous and may be programmed to cause an interrupt on either
the rising or falling edge.
SYSPLL_VDDAHighISystem Clock PLL Analog Voltage Pin: The analog voltage pin for the
System PLL must be connected to a quiet voltage. Typically this voltage
should be isolated from the system digital voltage plane.
PCIPLL_VDDAHighIAsync PCI Clock PLL Analog Voltage Pin: The analog voltage pin for
the asynchronous PCI PLL must be connected to a quiet voltage.
Typically this voltage should be isolated from the system digital voltage
plane.
2.6 Test Interface Signals
Active
Signal Name
TDI HighIJTAG Test Data Input
TMSHighIJTAG Test Mode Select
TDO HighOJTAG Test Data Output
TCK HighIJTAG Test Clock
TRST_NLowIJTAG Test Reset: Reset for JTAG controller. Must be activated during
LevelI / ODescription
system reset or tied low during operation.
1
1
1
2
TEST_ENABLEHighILSSD Test Mode Enable: The test enable pin is only used during
manufacturing test and must be low during operation. There is an
internal 13K Ω pull-down on this signal. Either leave this pin floating, or
connect it to a 10K Ω pull-down.
3
CPC700 User’s Manual—Preliminary2-7
RI_NLowIReceiver Inhibit: The receiver inhibit pin is only used during
manufacturing test. This signal has no internal pull-up. Pull up this signal
to 3.3V with a 10K Ω resistor.
3
DI1_NLowIDriver Inhibit 1: The driver inhibit 1 pin is only used during manuf acturing
test and must be high during functional operation. There is an internal
20K Ω pull-up to 3.3V on this signal. Either leave this pin floating, or pull
it up to 3.3V with a 22K Ω resistor.
3
DI2_NLowIDriver Inhibit 2:The driver inhibit 2 pin is only used during manufacturing
test and must be high during functional operation. There is an internal
20K Ω pull-up to 3.3V on this signal. Either leave this pin floating, or pull
it up to 3.3V with a 22K Ω resistor.
3
Notes:
1.We recomment attaching a 10K Ω pullup to 3.3V to this signal.
2.One way to assert TRST_N whenever RESET_N is active, is to set TRST_N=RESET_N And TRST (from
JTAG probe).
3.Because the boundary scan function of the JTAG port does not work in dd 1.1 of the CPC700, we strongly
recommend that this signal be brought out from the solder ball to at least a via, so that a board tester can
drive the signal.
2-8Signal Descriptions
Chapter 3. Processor Interface
The processor interface is the portion of the CPC700 that attaches a PowerPC 60x or 7xx processor to the
internal PLB and the local memory controller. Through this interface, the processor may access the PCI
bus, local memory, and the CPC700’s internal peripherals (UARTs, I2C ports, timers, and interrupt controller).
Processor interface registers are accessed through an indirect method employing a configuration address
register, PIFCFGADR, and a configuration data register, PIFCFGDATA. To access one of the processor
interface registers, write the appropriate index to register PIFCFGADR, then read the data from or write the
data to register PIFCFGDATA. All configuration accesses from the processor must be 4 Byte aligned, otherwise an error will be generated and the cycle not performed.
Table 3. Processor Interface Register Addressing
RegisterAddressR/WDescription
PIFCFGADRFF50_0000R/WProcessor Interface Configuration Address Register
PIFCFGDATAFF50_0004R/WProcessor Interface Configuration Data Register
Table 4 lists the offsets for the various configuration registers located within the processor interface.
Table 4. Offsets for Processor Interface Registers
Table 4. Offsets for Processor Interface Registers (Continued)
RegisterOffsetR/WDescription
PLBMTLEA124R/WProcessor-PLB Master Byte Swap Region 1 Ending Address
PLBMTLSA228R/WProcessor-PLB Master Byte Swap Region 2 Starting Address
PLBMTLEA22CR/WProcessor-PLB Master Byte Swap Region 2 Ending Address
PLBMTLSA330R/WProcessor-PLB Master Byte Swap Region 3 Starting Address
PLBMTLEA334R/WProcessor-PLB Master Byte Swap Region 3 Ending Address
PLBSNSSA038R/WPLB Slave No Snoop Region Starting Address
PLBSNSEA03CR/WPLB Slave No Snoop Region Ending Address
BESR40R/WPLB Bus Error Syndrome Register
BESRSET44WPLB Bus Error Syndrome Register Set (for test/verification
use)
Reserved48
BEAR4CR/WPLB Bus Master Error Address Register
Reserved50
Reserved54
PLBSWRINT80R/WWrite Interrupt Region Base Address
Detailed information regarding the processor interface registers can be found in Section 3.16, “Processor
Interface Register Description”.
3.4 Processor Interface to Memory, PCI, and Peripherals
The CPC700 supports 1 full level of addressing pipelining on the processor bus and decodes the target of
processor accesses based on the address range of the transfer. All of the processor accesses are decoded
as one of the following:
•System memory read (SDRAM/ROM)
•System memory write (SDRAM/ROM)
•DCR configuration read
•DCR configuration write
•PLB read (PCI or internal peripherals)
•PLB write (PCI or internal peripherals)
The range of addresses that define the above accesses are defined by the address map detailed in the following tables.
* Accesses to this region are affected by the following configuration registers:
• PLBMIFOPT
• PLBMTLSA1
• PLBMTLEA1
• PLBMTLSA2
• PLBMTLEA2
• PLBMTLSA3
• PLBMTLEA3
hFF500000
hFF5FFFFF
hFF600000
hFF7FFFFF
hFF800000
hFFDFFFFF
hFFE00000
hFFFFFFFF
DCR - Configuration Address/Data
Internal PeripheralshFF600000
System Memory
Typically reserved for ROM/External Peripherals
System Boot ROM
hFF7FFFFF
Table 6. CPC700 Address Map - PCI View
PLB Address RangeDescription
0 to
2G-1
2G to
4G-2M-1
4G-2M to
4G-1
h00000000
h7FFFFFFF
h80000000
hFFDFFFFF
hFFE00000
hFFFFFFFF
System Memory
PCI accesses to this range will target system
memory and be snooped. Snooping can be disabled for a particular region using the PRIFOPT1,
PLBSNSSA0, PLBSNSEA0 registers.
Reserved
The processor interface does not respond to accesses in this range.
System Memory (Boot ROM)
PCI accesses to this range will target system
memory and be snooped. Snooping can be disabled for a particular region using the PRIFOPT1,
PLBSNSSA0, PLBSNSEA0 registers.
Processor
Address
h00000000
h7FFFFFFF
hFFE00000
hFFFFFFFF
3-4Processor Interface
3.5 Supported Processor Transfer Types
Based on signals TT[0:3] (see Table 7), the CPC700 responds to processor initiated transfers by generating a read transaction, a write transaction, or an address-only response. The CPC700 ignores TT[4] when
evaluating processor initiated transfers.
The CPC700 supports all processor to memory/PLB bursts and all single-beat transfer sizes and alignments
that do not cross a 4-byte boundary. The following table lists all supported processor transfer types and the
corresponding response from the CPC700.
NOTE: In Table 7, SBR is single-beat read and SBW is single-beat write.
Table 7. Supported Processor Transfer Type Encodings/Response
Processor
TT[0:3]
0000Clean block or lwarxAddress onlyAssert AACK_N, No other response, No PLB
0001Write with flushSBW or burstMemory writePLB write
0010Flush block or stwcxAddress onlyAssert AACK_N, No other response, No PLB
0011Write with killSBW or burstMemory writePLB write
0100sync or tlbsyncAddress onlyAssert AACK_N, No other response
0101Read or read with no
0110Kill block or icbiAddress onlyAssert AACK_N, No other response, No PLB
0111Read with intent to
1000eieioAddress onlyAssert AACK_N, No other response
Operation
intent to cache
modify
Proc Bus
Transaction
SBR or burstMemory readPLB read
BurstMemory readPLB read
CPC700 Response for
Proc to Memory
transaction
transaction
transaction
CPC700 Response for
Proc to PLB
1001Write with flush
atomic, stwcx
1010ecowxSBWReserved
1011ReservedReserved
CPC700 User’s Manual—Preliminary 3-5
SBWMemory writePLB write
Assert AACK_N and TA_N. MCP_N asserted if
MCP_N assertion is enabled.
Assert AACK_N and TA_N. MCP_N asserted if
MCP_N assertion is enabled.
Table 7. Supported Processor Transfer Type Encodings/Response (Continued)
Processor
TT[0:3]
1100TLB invalidateAddress onlyAssert AACK_N, No other response, No PLB
1101Read atomic, lwarxSBR or burstMemory readPLB read
1110External control in,
1111Read with intent to
Please refer to the processor’s user’s manual for additional information on transfer type encodings.
Operation
eciwx
modify atomic, stwcx
Proc Bus
Transaction
SBRReserved
BurstMemory readPLB read
CPC700 Response for
Proc to Memory
transaction
Assert AACK_N and TA_N. All 1’s returned on
60x Data Bus. MCP_N asserted if MCP_N assertion is enabled.
CPC700 Response for
Proc to PLB
3.6 Processor to Memory
The processor interface contains a single 32 byte write buffer and a single 8 byte read buffer for processor
accesses to system memory. Once the processor has gained access to memory for a given transfer, the
memory is unavailable for PCI to memory transfers or subsequent processor to memory transfers until the
address tenure of the current access completes.
Reads: Processor to memory read (single beat and burst) data is buffered in the 8 byte read buffer which
captures the data directly from the memory bus and drives the data onto the processor bus in the next
clock cycle. All processor to memory read cycles execute as connected data tenures between the processor bus and the memory bus.
Writes: All processor write (burst or single beat) cycles are posted. All processor memory read cycles (single beat and burst) which hit in the posted write buffer, flush the write buffer contents to memory. All single
beat write cycles flush the posted write buffer (if allocated) before completing. Prior to allowing a PCI
access to system memory, the 32 byte posted write buffer is snooped in addition to the processor’s L1
cache.
Write Buffer: Once data is posted in the processor to memory write buffer it is flushed to memory at the
earliest available opportunity. In general, the posted write buffer has the lowest priority for access to system memory; however, the low priority write buffer flush may transition to a high priority write buffer flush
under the following circumstances:
1.Processor to memory read hit in write buffer
2.Any processor to memory write
3.PCI to memory read hit/write hit in write buffer or processor L1
4.Processor read/write to PLB or DCR configuration space
5.If no memory controller requests from the processor and PCI, and memory controller interface is
idle.
6.Snoop push detected.
Note: The processor to memory write buffer is not flushed to system memory until a high priority write
buffer flush request is generated.
3-6Processor Interface
3.6.1 CPC700 Response for Processor to System Memory
Accesses
The following table corresponds to the state of the processor address bus for a given cycle (which may or
may not be pipelined) and the corresponding response from CPC700. NOTE: For any of the transactions
listed, the internal memory controller interface may be idle or busy (servicing a processor to memory write
buffer flush or finishing the data tenure of a previous PCI or processor access to system memory). If the
internal memory controller interface (MCIF) is busy, the address for the processor to memory access is
placed on the MCIF as soon as possible. The data tenure for the requested access will execute on the
MCIF following the completion of the in progress data tenure.
Once the processor request is accepted, as indicated by the assertion of AACK_N to the processor, data
will be transferred at the earliest available opportunity.
Note: In Table 8., the state of the processor to PLB write buffer is a “don’t care.”
Table 8. CPC700 Response for processor to System Memory Transactions
Proc-Mem
Proc
Mem RdDeallocatedAACK_N CPU and return data from system memory
W.B.Response
Mem RdAllocated,
Miss
Mem RdAllocated,
Hit
Mem WrDeallocated
Mem WrAllocated,
Miss
Mem WrAllocated,
Hit
Bypass processor-Mem W.B., AACK_N CPU and return data from system memory
ARTRY_N CPU, High Priority write for processor-Mem W.B. flush
Post write in
ARTRY_N CPU, High Priority write for processor-Mem W.B. flush
ARTRY_N CPU, High Priority write for processor-Mem W.B. flush
processor-Mem W.B.
Table 9. lists the corresponding memory controller interface requests generated in response to processor
requests to/from system memory.
Table 9. Processor to Memory Cycle Translation
Processor to MEM Transfer (Rd or Wr)Memory Controller I/F Request
Single BeatDoubleword with byte enables
Burst(32 byte)Quad Doubleword (wrap within cache line)
CPC700 User’s Manual—Preliminary 3-7
3.7 Processor to PLB Master (PCI or Internal Peripherals)
The CPC700 supports single beat (8 bytes or less) and burst (32 byte cache line) read and write accesses
to the PLB. Processor requests that target PLB space are forwarded to the PLB Master interface which initiates a request on the PLB bus for the associated cycle. The PLB master interface contains a single 32
byte write buffer, a single 8 byte write interface buffer, and a single 32 byte read buffer for processor
accesses to the PLB.
Reads:
Processor to PLB read (single beat and burst) data is buffered in a 32 byte read buffer which captures the
data directly from the PLB bus. All processor to PLB read cycles execute as connected data tenures
between the processor bus and the PLB bus. The processor address tenure remains open until the targeted PLB Slave commits to returning the requested data via the assertion of PLB_AddrAck.
Writes:
All processor to PLB write (burst and single beat) cycles are posted and executed on the PLB at the earli-
est available opportunity. The CPC700’s processor interface contains an 8 byte write interface buffer to
expedite de-allocation of the primary 32 byte write buffer which allows the processor to post a maximum of
two single beat write cycles for transfer to the PLB . All processor to PLB read cycles (single beat and burst)
and write cycles flush the primary 32 byte write buffer and 8 byte write interface buffer (if allocated) contents to the PLB before completing. For more information, see Table 10.
Table 10. PLB Master Cycles
64-Bit Processor InterfacePCI Interface
Single Beat (1-4 Bytes)1 (Single Beat)
5-8 Bytes2 Single Beats
32 Byte1 Eight Word Line
3.7.1 CPC700 Response for Processor to PLB Accesses
The following table corresponds to the state of the processor address bus for a given cycle (which may or
may not be pipelined) and the corresponding response from CPC700.
Once the processor request is accepted, as indicated by the assertion of AACK_N to the processor, data
will be transferred at the earliest available opportunity.
Note: In Table 11., the status of the processor to memory write buffer is a “don’t care.”
.
Table 11. CPC700 Response to Processor Transactions to the PLB
Proc
I/F
Proc-PLB
Read
Buffer
Proc-PLB
Write
Buffer
PLB
Slave
(Snoop)Response
PLB RdDeallocatedDeallocatedIdleRequest PLB for read, AACK_N CPU when PLB AdrACK_
3-8Processor Interface
and transfer data, or ARTRY_N CPU if PLB Rearbitrate
Table 11. CPC700 Response to Processor Transactions to the PLB (Continued)
Proc-PLB
Proc
I/F
PLB RdDeallocatedDeallocatedSnoop
PLB RdDeallocatedAllocatedIdleContinue to attempt write on PLB, Hold 60x read and ini-
PLB RdDeallocatedAllocatedSnoop
PLB RdAllocatedDeallocatedIdleRequest PLB for read, AACK_N CPU when PLB AdrACK_
PLB RdAllocatedDeallocatedSnoop
PLB RdAllocatedAllocatedIdleContinue to attempt write on PLB, initiate read on PLB
PLB RdAllocatedAllocatedSnoop
PLB WrD.C.DeallocatedD.C.AACK_N CPU, post write data in 60x-PLB W.B., initiate
PLB WrD.C.AllocatedIdleContinue to attempt posted write on PLB, hold pending
Read
Buffer
Proc-PLB
Write
Buffer
PLB
Slave
(Snoop)Response
Pending
Pending
Pending
Pending
ABORT PLB read cycle, ARTRY_N CPU, grant to snooper
tiate on PLB once PLB write completes.
ARTRY_N CPU, grant to snooper, continue to attempt
write on PLB
and transfer data, or ARTRY_N CPU if PLB Rearbitrate
ABORT_ PLB read cycle, ARTRY_N CPU, grant to snoop-
er
when write completes
ARTRY_N CPU, grant to snooper, continue to attempt
write on PLB
write on PLB at earliest available opportunity.
60x-PLB write address tenure open until write buffer deallocates (post pending write data) or snoop pending
(ARTRY_N pending cpu write)
PLB WrD.C.AllocatedSnoop
Pending
D.C. - Don’t Care
ARTRY_N CPU, grant to snooper, continue to attempt
posted write on PLB
CPC700 User’s Manual—Preliminary 3-9
Table 12. lists the corresponding PLB Master interface requests generated in response to processor requests which target the PLB.
Table 12. Processor to PLB Cycle Translation
Processor to PLB TransferPLB Transfer
32-bit Slave Responds
Read 1-4 Bytes
Word Address 0
CPU_A(29:31)=000
Read 1-4 Bytes
Word Address 1
CPU_A(29:31)=100
Read 2-8 Bytes
Crossing Word Boundary
Read 32 Bytes
(8 Word Line)
Write 1-4 Bytes
Word Address 0
Write 1-4 Bytes
Word Address 1
Write 2-8 Bytes
Crossing Word Boundary
1-4 byte read w/byte enables,
Read data transferred to CPU_DATA[0:31]
1-4 byte read w/byte enables,
Read data transferred to CPU_DATA[32:63]
2-8 byte read w/byte enables,
Request W0 Read data, transfer to CPU_DATA[0:31]
Request W1 Read data, transfer to CPU_DATA[32:63]
8 word line read consisting of 8 PLB data phases,
Read data transferred to CPU_DATA[0:63]; indicate word being transferred. Only 1 word transferred per PLB data phase
Not applicable to PCI
1-4 byte write w/byte enables,
Write data transferred from CPU_DATA[0:31]
1-4 byte write w/byte enables and data replicated on Word Lane 0,
Write data transferred from CPU_DATA[32:63]
2-8 byte write w/byte enables,
Request W0 Write, transfer data from CPU_DATA[0:31]; queue PLB
write for W1; request PLB; request W1 Write, transfer data from
CPU_DATA[32:63]
Write 32 Bytes
(8 Word Line)
8 word line write consisting of 8 PLB data phases,
Write data transferred from CPU_DATA[0:31] for Word 0 and from
CPU_DATA[32:63] for Word 1.Only 1 word transferred per PLB data
phase
Not applicable to PCI
3.8 Processor - Address Only Cycles
The CPC700 supports all processor generated Address Only cycles. In response to a processor Address
Only cycle, CPC700 acknowledges the cycle and takes no other action. As a result, CPC700 does not propagate any Address Only cycles beyond the processor bus interface.
3-10Processor Interface
.
Table 13. CPC700 Response to Processor Address Only Cycles
Proc
Cycle
Addr OnlyD.C.D.C.D.C.AACK_N CPU immediately, no other ac-
D.C. - Don’t Care
Proc-Mem
WriteBuffer
Proc-PLB
WriteBuffer
PLB Slave
(Snoop)Response
tion
3.9 Processor Bus Arbiter
The CPC700’s processor interface logic contains the processor bus arbiter which controls access to the
local processor bus. It arbitrates between processor requests and the internal snoop engine (PCI to memory) requests.
Arbitration for the bus for processor requests or the internal snoop engine is based on a rotating priority
scheme to ensure fairness and guarantee that each requesting device is given an equal opportunity to
access the bus in the event of simultaneous requests from multiple devices as viewed by the arbiter. The
bus arbiter implements bus parking for the processor in that it continuously asserts bus grant to the processor during the periods when there are no requests from either the PCI or processor bus. In this case the
arbitration fav ors the processor in that it ma y begin a bus tr ansaction without e xplicitly requesting access to
the bus. The bus arbiter recognizes the instances when the processor initiates a bus transaction while
parked as an implicit bus request which was granted and maintains the rotating priority accordingly.
In general the priority is controlled by a rotating token which tracks the least recently granted device. Following Power-on Reset, the token defaults to the processor and attempts to park the processor address
bus. If the PCI/Snooper requests access to system memory, the arbiter removes the CPU bus grant, waits
to see if the processor begins an access and simultaneously rearbitrates to grant the bus to the PCI/
Snooper. The following table details the arbiter response for the request/grant scenarios.
Table 14. Processor Address Bus Arbitration
Least Recently
Request
CPU OnlyD.C.CPUMay be parked.
PCI/Snooper
Only
CPU and PCI/
Snooper
CPU and PCI/
Snooper
NoneD.C.CPUBus Parked on CPU
D.C. - Don’t Care
CPC700 User’s Manual—Preliminary 3-11
GrantedGrantedComment
D.C.PCI/SnooperIf processor bus parked, remove CPU grant,
grant to PCI/Snooper
PCI/SnooperPCI/Snooper
CPUCPU
Requests from the processor are treated as implied requests for access to system memory. As such, arbitration of processor and PCI requests indicates that the associated device receiving the grant is guaranteed
the next access to system memory once any in-progress access completes. For PCI accesses to system
memory, the PCI/Snooper, once granted the processor address bus, retains ownership of the address bus
for the duration of the PCI to memory transfer. Specifically, this applies to PCI Burst accesses, during which
the processor address bus ownership is required to allow snooping of burst accesses which attempt to cross
a cache line boundary.
3.10 Broadcast Snoop Cycles
The CPC700 supports PCI accesses to system memory via the PLB Slave interface. Memory coherency is
maintained by the internal snoop engine. PCI requests which address system memory are accepted and
snooped in the processor's L1 cache before allowing the access. Snoop cycles to the processor are generated on behalf of the PCI interface by the internal snooper. The following table lists the corresponding snoop
transfer type for PCI accesses to system memory.
Table 15. Processor Snoop Transfer Types
PLB Bus CycleProcessor Bus Snoop CycleProcessor Snoop TType[0:4]
Memory ReadSingle-Beat Read01010
Memory WriteSingle-Beat Write
with Flush
To perform a snoop cycle to the processor, the snoop engine must arbitrate for the processor bus. Once
access has been granted and the address bus is available, the snoop engine will proceed with the snoop
cycle. If a processor access to system memory is in progress, the transfer is allowed to complete. If a processor access to the PLB is in progress and a PLB Slave device has not acknowledged the start of the PLB
cycle, the PLB Master interface of the processor interface will abort the PLB cycle and the processor interface will ARTRY_N the processor to gain control of the processor address bus to perform the pending snoop
cycle.
00010
3-12Processor Interface
3.11 Byte Swapping
CPC700 includes support which is designed to ease the use of a Big Endian processor operating in a
Little-Endian system. This support includes the ability to swap bytes during read and write accesses to the
internal PLB bus from the processor. This mechanism can be used when accessing the PCI bus from the
processor. In addition CPC700 provides byte lane swapping from the PCI to/from memory in a fashion that
makes the otherwise Big-Endian memory look like Little-Endian memory from the PCI. Both of these
translations are disabled by default and may be enabled by programming the appropriate register bits.
Note: All accesses from the processor to system memory are handled as Big-Endian. No swapping mechanism is available for this data path.
3.11.1 Processor to PLB (PCI) Byte Swapping
Byte swapping can occur on the processor to PLB data path for both read and write cycles initiated by the
processor. With appropriate software/firmware support, and when enabled, this process allows the use of
a PowerPC processor in Big-Endian mode in a Little-Endian system. Up to three regions may be configured
to perform byte swapping by setting up the appropriate processor interface configuration registers (see Section 3.16, “Processor Interface Register Description”):
• Starting Address(SA) per region (PLBMTLSAx registers)
• Ending Address (EA) per region (PLBMTLEAx registers)
• Enable bit per region (PLBMIFOPT register)
Byte swapping is performed between internal buffers in the processor interface as shown in Figure 4.
Processor
64
•
32B
Byte
Swapper
8B
32
PLB
8B
Byte
Swapper
32B
32
Figure 4. Processor to PLB Interface Translation Mechanism
CPC700 User’s Manual—Preliminary 3-13
1-, 2-, 4-, 8-, and 32-byte aligned 64-bit transfers are available as shown in Figure 5.
1 Byte Aligned (Default-No Swap)
Processor
PLB Byte
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
Lanes
PLB
0 1 2 3
4, 8, or 32 Byte Aligned
Processor
PLB Byte
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
Lanes
2 Byte Aligned
Processor
PLB Byte
Lanes
PLB
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3
PLB
0 1 2 3
Figure 5. Processor to PLB Big-Endian to Little-Endian Byte Swapping
3-14Processor Interface
3.11.2 PCI to Memory Byte Swapping
Two modes are available for transfers from the PCI bus to local memory. The default method preserves
byte lanes and the alternate method swaps byte lanes. A bit in the PLBMIFOPT register controls which
mode is in effect for all PCI to memory transf ers . See Section 3.16.6, “PLBMIFOPT - PLB Master Interf ace
Options” for information.
3.11.2.1 Byte Lane Preservation
Preserving byte lanes is the default method for handling memory access from the PCI bus. In this method
PCI_BYTE0 corresponds to CPU/MEM_BYTE0 and is true for all PCI to local memory transfers regardless
of the number of bytes transferred. No address manipulation occurs, so addresses correspond directly to
PCI addresses. Bit ordering within bytes is preserved such that:
PCI_BYTE0[7:0] corresponds to CPU/MEM_BYTE0[0:7].
For example, if PCI_BYTE0[7:0] = 22 then CPU/MEM_BYTE0[0:7] = 22.
The following figure illustrates the byte preservation method of PCI to local memory accesses.
[32:39] [40:47] [48:55] [56:63]
Processor
(Big-Endian;
msb is bit 0)
PLB Byte Lanes
PCI
(Little-Endian;
msb is bit 31)
[0:7][8:15][16:23] [24:31]
123 45670
0123 4576
0123
[7:0][15:8][23:16] [31:24]
Figure 6. Default Byte Preservation Method
3.11.2.2 Byte Lane Swapping - Value Preservation
In the alternative method of memory access from PCI, the byte lanes are swapped such that PCI_BYTE0
corresponds to CPU/MEM_BYTE3, PCI_BYTE1 corresponds to CPU/MEM_BYTE2, etc. Byte lane swapping is intended to preserve the value of 32-bit data as seen from both the P owerPC processor and the PCI
bus.
As in the default method, bit ordering within bytes is preserved:
PCI_BYTE3[31:24] corresponds to CPU/MEM_BYTE0[0:7] and PCI[31:0] = CPU/MEM[0:31]
CPC700 User’s Manual—Preliminary 3-15
No address manipulation occurs. As an example, a byte access to memory shared between the local processor and the PCI at MEM_BYTE0 must be accessed as Byte 0 by the processor and as Byte 3 by the
PCI device.
When enabled, this swapping will occur on all accesses from the PCI to local memory, independent of the
size of the transfer (1, 2, 3, or 4 bytes).
[0:7][8:15][16:23] [24:31]
Processor
(Big-Endian;
msb is bit 0)
PLB Byte Lanes
PCI
(Little-Endian;
msb is bit 31)
Note: As indicated, this s wapping occurs only on PCI to local memory accesses. Even if this byte s wapping
mechanism is enabled, PCI accesses to CPC700 internal PCI configuration registers are not affected.
0123 4576
3210
123 45670
[7:0][15:8][23:16][31:24]
Figure 7. Alternative Byte Swapping Method
[32:39] [40:47] [48:55] [56:63]
3.11.2.3 PCI to Memory Byte Swapping Examples
To illustrate the two methods of byte s wapping which ma y be used f or local memory accesses from the PCI
bus, assume the local processor has written a 32-bit value of x’12345678’ to local memory. Byte ‘12’ is the
MSB and ‘78’ is the LSB as seen from the local processor.
Using the default “b yte lane preservation” method, when the PCI accesses the same memory location, the
value will appear on the PCI bus as x’78563412’, where byte ‘78’ is on the PCI bus MSB and ‘12’ is on the
LSB.
Using the alternative “byte lane s wapping” method the value on the PCI bus will be x’12345678’ where byte
‘12’ is on the PCI MSB and ‘78’ on the LSB. Since the value is the same as seen from both the local processor and the PCI bus, this method can be thought of as a “value preservation” method of byte swapping.
Note: The v alue preservation only preserves v alues of 32-bit data quantities. This method of b yte s wapping
should not be used for data quantities less than 32-bits. The default byte lane preservation method should
be used for transfer sizes other than 32-bit.
3-16Processor Interface
3.12 PLB Slave Interface to Memory (PCI to Memory)
The processor interface’s PLB Slave interface allows the PCI bus to access system memory. The PLB Slave
interface contains a single 32 byte write buffer for PCI to memory write cycles and a single 32 byte read
buffer for PCI to memory read cycles. Once the PCI has gained access to memory (via the internal memory
controller interface) for a given transfer, the memory is unavailable for subsequent PCI to memory transfers
or processor to memory transfers until the address tenure of the current access completes. In particular, a
PCI to memory burst transfer will not be interrupted for the sole purpose of servicing a pending processor
to memory read request.
Reads:
PCI to memory reads generate various sizes/types of doubleword requests to the memory controller. As a
result, the memory controller always returns a minimum of a full doubleword to the PLB Slave interface
which stores the data in the 32 byte read buffer for transfer onto the PLB bus. The PLB Slave interface performs the necessary unpacking of data for byte, halfword, and word burst PLB transfers thus increasing the
available memory bandwidth for pending processor accesses.
Writes:
Write data from the PCI to memory is buffered in a 32 byte write buffer and, when possible, packed into 8
byte, doubleword aligned, transfers before being written to memory. PCI to memory write cycles are buffered, not posted, thus eliminating the need to snoop the PCI to memory write buffer prior to processor accesses to system memory.
The 32 byte processor to memory posted write buffer is snooped, in addition to the processor's L1 cache,
prior to allowing the PCI bus to access system memory. PCI to memory burst transfers which cross a processor cache line boundary will be delayed until the snoop response is known for the cache line being accessed. If the access hits in the L1 cache or the 60x to memory write buffer, the burst cycle will be terminated
and the processor/write buffer will be granted the bus to allow for the cast out. For register information, see
Sections 3.16.13, 3.16.14, and 3.16.17 in Section 3.16, ”Processor Interface Register Description”.
The following table lists the corresponding memory controller interface requests generated in response to
PCI requests (Read or Write) with the indicated size.
W BurstDW(s) and/or Quad DW(s)1 per 32 byte boundary crossed
W - Word, DW - Double Word
CPC700 User’s Manual—Preliminary 3-17
3.13 CPC700 Response for PCI to Memory Accesses
The following table corresponds to the state of the PLB Address bus as it relates to the associated snoop
cycle on the processor address bus for a given cycle (which may or may not be pipelined) and the corresponding processor interface response. NOTE: for any of the transactions listed, the internal memory controller interface may be idle or busy (servicing a processor-Mem write buffer flush or finishing the data
tenure of a PCI or processor to memory access). If the internal memory controller interface(MCIF) is busy,
the address for the PCI to memory access is placed on the MCIF as soon as possible. The data tenure for
the requested access will execute on the MCIF following the completion of the in progress data tenure.
Once the PCI request is accepted by the processor interface, data will be transferred at the earliest available opportunity within the guidelines of the PLB specification. For burst cycles crossing a cache line
boundary, it is necessary to snoop early enough to perform burst terminate on PLB should it be necessary.
Table 17. Processor Interface Response to PLB Transactions
PLB
(Snooper)
Mem R/WMiss, EmptyCleanAdrAck PLB when memory controller acknowledges, buffer
Mem R/WMiss, AllocatedCleanAdrAck PLB when memory controller acknowledges, buffer
Mem R/WHitD.C.Rearbitrate PLB, High Priority write for processor-Mem W.B.
Mem R/WMiss, EmptyArtry_Rearbitrate PLB, grant to processor if requesting.
Mem R/WMiss, AllocatedArtry_Rearbitrate PLB, High Priority write for processor-Mem W.B.
Mem R/W
Burst - Crossing cache line
Mem R/W
Burst - Crossing cache line
Mem R/W
Burst - Crossing cache line
Proc-Mem
Write Buffer
HitD.C.Burst Terminate PLB, High Priority write for processor-Mem
Miss, EmptyArtry_Burst Terminate PLB, grant to processor if requesting.
Miss, AllocatedArtry_Burst Terminate PLB, High Priority write for 60x-Mem W.B.
Processor
L1Response
data to/from Memory for transfer to/from PLB.
data to/from Memory for transfer to/from PLB.
flush.
flush, grant to processor if requesting.
W.B. flush.
Snoop processor L1 in advance to ensure PLB burst terminated at end of cache line.
flush, grant to processor if requesting.
Snoop processor L1 in advance to ensure PLB burst terminated at end of cache line.
3.14 Processor to DCR/Configuration Space
Access to the CPC700 processor interface and the memory controller is through a dedicated on chip bus
called the Device Configuration Register Bus (DCR Bus). DCR access uses an indirect addressing method
whereby a configuration address register and a configuration data register are used to address all of the
configuration registers in the processor interface and the memory controller. Addresses used for access to
these registers are listed in Table 18.
Processor Interface Config address registerxFF50_0000
Processor Interface Config data registerxFF50_0004
Memory Controller Config address registerxFF50_0008
Memory Controller Config data registerxFF50_000C
DCR configuration bus cycles unpipeline the processor bus interface and trigger the flushing of all CPC700
processor interface write buffers (Processor-PLB and Processor-Memory) before completing. Furthermore,
DCR configuration cycles are required to be 4 byte, aligned accesses.
.
Table 19. CPC700 Response to Processor Interface Configuration Transactions
Proc-Mem
Write
Proc
Conf RdDeallocatedDeallocatedD.C.Read configuration register
Conf RdDeallocatedAllocatedD.C.ARTRY_N CPU, Flush ALL allocated Write buffers
Conf RdAllocatedDeallocatedD.C.ARTRY_N CPU, Flush ALL allocated Write buffers
Conf RdAllocatedAllocatedD.C.ARTRY_N CPU, Flush ALL allocated Write buffers
Conf WrDeallocatedDeallocatedD.C.Write configuration register#
Conf WrDeallocatedAllocatedD.C.ARTRY_N CPU, Flush ALL allocated Write Buffers
Conf WrAllocatedDeallocatedD.C.ARTRY_N CPU, Flush ALL allocated Write Buffers
Conf WrAllocatedAllocatedD.C.ARTRY_N CPU, Flush ALL allocated Write Buffers
Buffer
Proc-PLB
Write
Buffer
PLB
SLV
(Snoop)Response
D.C. - Don’t Care
CPC700 User’s Manual—Preliminary 3-19
3.15 Error Handling and Reporting
3.15.1 Processor transfer type errors
The processor interface may be enabled to detect and report processor transfer attribute errors.
On a processor read, if a transfer attribute error is detected, the processor interface will complete the
access and return all 1’s (that is, each bit in the processor data bus will be set to 1) with the transfer
acknowledge assertion.
On a processor write, if a transfer attribute error is detected, the processor interface will complete the
access and discard the write data.
On a processor Address Only cycle, the transfer siz e and transfer burst signals are ignored for error detection.
If detection is enabled via ERREN1[0], the error will be logged by setting ERRDET1[0], the associated processor address will be logged in CPUERAD[0:31], the associated processor transfer attributes will be
logged in CPUERAT[0:7], and if enabled via PRIFOPT1[1], the machine check output (MCP_N) will be
asserted for a minimum of two clock cycles.
All subsequent error logging is disabled until the current error condition is cleared. Errors can be cleared by
writing a 1 to ERRDET1[0].
The following constitute processor transfer attribute errors:
• Any processor read or write with TT[0:3] 1010 or 1110. This includes ecowx, eciwx, and reserved
transfer type encodings TT[0:4] = 10101, 11101, 1011x
• Any processor read or write with an invalid address and transfer size alignment. All valid combina-
tions of processor address (A[29:31]), transfer size (TSIZ), and transfer bursts (TBST_N) are
listed below. Any processor accesses aligned to any other boundaries will be detected as an error.
Table 20. Valid Address, TBST_N, and TSIZ Combinations
• Any processor read or write to DCR address space which is not 4 bytes and aligned to a 4 byte boundary.
• Any processor read or write to DCR address space for which no DCR slav e responds . This is basically
a configuration read or write which times out on the internal DCR bus. DCR time-out occurs when no
DCR slave responds within 16 clocks from the time the DCR access was initiated on the internal DCR
bus.
3-20Processor Interface
3.15.2 Memory Select Error - Processor Access
The processor interface may be enabled to detect and report memory select errors for processor to memory read and write transfers. A memory select error will be generated for any access which attempts to
address memory which is not valid. This includes addresses out of range, and writes to ROM/Peripheral
space when configured as read only.
On a processor read, if a memory select error is detected, the processor interface will complete the access
and return all 1’s (that is each bit the processor data bus will be set to 1) with the TA_N assertion.
On a processor write, if a memory select error is detected, the processor interface will complete the access
and discard the write data.
If detection is enabled via ERREN1[1], the error will be logged by setting ERRDET1[1], the associated processor address will be logged in CPUERAD[0:31], the associated processor transfer attributes will be
logged in CPUERAT[0:7], and if enabled via PRIFOPT1[1], MCP_N will be asserted for a minimum of two
clock cycles.
All subsequent error logging is disabled until the current error condition is cleared. Errors can be cleared by
writing a 1 to ERRDET1[1].
NOTE: ERREN1[1] only enables the detection of memory select errors for processor to memory accesses.
3.15.3 Flash Write Errors
The processor interface may be enabled to detect and report flash write errors for processor to memory
write transfers which target the ROM/Peripheral controller as well as banks for which flash writes are not
enabled. This event will also trigger a memory select error if ERREN1[1] is set.
On a processor write, if a flash write error is detected, the processor interface will complete the access and
discard the write data.
If detection is enabled via ERREN1[5], the error will be logged by setting ERRDET1[4], the associated processor address will be logged in CPUERAD[0:31], the associated processor transfer attributes will be
logged in CPUERAT[0:7], and if enabled via PRIFOPT1[1], MCP_N will be asserted for a minimum of two
clock cycles.
All subsequent error logging is disabled until the current error condition is cleared. Errors can be cleared by
writing a 1 to ERRDET1[4].
NOTE: ERREN1[4] only enables the detection of flash write errors for processor to memory accesses.
3.15.4 Address Parity Errors
The processor interface may be enab led to detect and report processor address parity errors. Address parity checking is based on odd parity. Odd parity means that an odd number of bits, including the parity bit,
are driven high.
For processor read, write, and address only cycles, the requested transfer will proceed normally with the
error condition being detected and logged if enabled.
If detection is enabled via ERREN1[6], the error will be logged by setting ERRDET1[5], the associated processor address and transfer attributes will not be logged, and if enab led via PRIFOPT1[1], MCP_N will be
asserted for a minimum of two clock cycles.
CPC700 User’s Manual—Preliminary 3-21
All subsequent error logging is disabled until the current error condition is cleared. Errors can be cleared by
writing a 1 to ERRDET1[5].
3.15.5 Data Parity Errors
The processor interface may be enabled to detect and report processor data parity errors for processor
write cycle only. Data parity checking is based on odd parity. Odd parity means that an odd number of bits,
including the parity bit, are driven high.
For processor write cycles, the requested transfer will proceed normally with the error condition being
detected and logged if enabled.
If detection is enabled via ERREN1[7], the error will be logged by setting ERRDET1[6], the associated processor address and transfer attributes will not be logged, and if enab led via PRIFOPT1[1], MCP_N will be
asserted for a minimum of two clock cycles.
All subsequent error logging is disabled until the current error condition is cleared. Errors can be cleared by
writing a 1 to ERRDET1[6].
3.15.6 PLB Master Error
This section concerns response of CPU interface to a CPU-to-PCI transaction with a target alert.
The processor interface may be enab led to detect and report the assertion of PLB_MErr into the processor
interface’s PLB master. In this document, the processor interface’s PLB master is also referred to as the
60x-PLB master.
PLB_MErr will be asserted into the 60x-PLB master (by the targeted PLB slave) on any 60x-PLB transfer
for which the responding PLB slave encounters an error. In the CPC700, the only PLB slave targets that
could assert PLB_MErr into the 60x-PLB master are the PCI interface and the OPB.
If detection is enabled via ERREN1[2], the error will be logged by setting ERRDET1[2], the associated processor address and transfer attributes will not be logged, and if enab led via PRIFOPT1[1], MCP_N will be
asserted for a minimum of two clock cycles.
All subsequent error logging is disabled until the current error condition is cleared. Errors can be cleared by
writing a 1 to ERRDET1[2].
Error address and attributes will be captured in the PLB slave’s error registers (SEAR0 and SESR for the
PCI interface; GESR and GEAR0 f or the OPB). If the trapped error status is to be held by the PLB sla v e f or
software observation, ERREN1[3] should be set (once) prior to initiating any processor to PLB accesses.
This bit enables the assertion of the 60x-PLB master’s lockErr output which signals the PLB slave to trap
and hold the error status information in the event an error is encountered.
3.15.7 PLB Slave Error (From PCI Master)
The processor interface detects memory select errors on a write to memory through the PLB slave interface (writes from the PCI bus) and logs the error status and address information in the BESR and BEAR
registers. Memory select errors are not detected on memory reads from the PCI.
3-22Processor Interface
3.15.7.1 PCI Writes to Local Memory
An error associated with the PCI interface will be logged into the processor interface’s BESR and BEAR
registers. The information associated with the error will be held and locked if the requesting PCI interf ace’s
lockErr signal is asserted with the request. If the error status is locked, subsequent errors detected by the
60x-PLB slave will not update BESR and BEAR as long as the BESR and BEAR lock bits are set. Software
may clear these bits to enable subsequent error status logging. If the error status is not locked, subsequent
errors detected by the 60x-PLB slave will update (and overwrite) BESR and BEAR.
Memory select error on writes will set M1ET to b’101’ (non-configured bank error), M1RWS to 0, M1FL and
M1AL will be set to 1 (all in the BESR register) if the PCI interface’s lockErr signal is asserted with the
request.
3.15.7.2 PCI Reads From Local Memory
The processor interface does not respond on the PLB for read accesses that target it’s global decode of
<2Gig and result in a memory select error. Specifically, the 60x-PLB slave interface will decode the access
to be below 2Gig, assert PLB_Wait, and forward the request to the memory controller. If the memory controller responds with a memory select error (indicating that physical memory does not exist at the
requested address), the 60x-PLB slave interf ace will deassert PLB_Wait, allowing the requested transf er to
time-out on the PLB. In this case the PLB arbiter will complete the necessary handshaking to the PCI Interface and assert MErr to it. The PCI interface may respond to this error condition in v arious wa ys depending
on how it is programmed. See Section 5.10.3.7, “PLB Master PLB_MErr Detection” for details.
If ECC is enabled and an uncorrectable error is encountered for a PCI read from memory, PLB_MErr will
be asserted for the associated transfer. BESR and BEAR will not be updated. ECC error status will be
updated in the ECC error register.
To enable the processor interface’s PLB slave interface to assert PLB_MErr in response to the above,
ERREN1[4] must be set to 1. Error logging occurs only if ERREN1[4] is set to 1. Default value for
ERREN1[4] is 1 (PLB_MErr assertion enabled).
3.15.8 MCP_REQ ERROR
The MCP_REQ (Machine Check Interrupt) input to the CPC700, when asserted, triggers the assertion of
MCP_N (if MCP_N assertion is enabled via PRIFOPT1[1]) to the local processor. Following are some characteristics of this input:
The MCP_REQ input is double-latched in the processor interface and may be asserted asynchronously.
• There are no internal registers associated with MCP_REQ. The external logic that asserts MCP_REQ
to CPC700 must provide mask and status information.
• The MCP_REQ input contains no edge detection logic. The CPC700 has no memory of any previous
state of MCP_REQ.
• In general, the assertion of MCP_REQ has no effect on any other processes in the CPC700.
MCP_N is generally asserted continuously while MCP_REQ is sampled valid; however, If an error was
detected before the MCP_REQ was detected, then the error handling logic will not sample the MCP_REQ
input (and thus not detect it) until the previous error is cleared using the appropriate register.
• If MCP_REQ is deasserted before the previous error is cleared, the MCP_REQ will be lost.
• if MCP_REQ is still asserted when the previous error is cleared, then MCP_REQ will be sampled
asserted and MCP_N will begin to be asserted.
CPC700 User’s Manual—Preliminary 3-23
• CPC700 will not assert MCP_N while MCP_REQ is active unless MCP_N assertion is enabled. If
MCP_REQ is active when MCP_N assertion is enabled, then MCP_N will be asserted.
• Unlike other processor bus related error sources, when CPC700 samples MCP_REQ asserted, it does
NOT disable further error detection.
3.15.9 ECC Errors
When an uncorrectable ECC error occurs, MCP_ N will be asserted for a minimum of two clock cycles if bit
1 (MCP enable bit) of the PRIFOPT1 register is set.
Correctable ECC errors will be reported to the CPC700’s interrupt controller via IRQ 0. System software
may separately program the interrupt controller to generate an interrupt to the processor based on this
condition or not. See Section Chapter 10., “Interrupt Controller” for more information
3.16 Processor Interface Register Description
Processor interface registers are accessed through the PIFCFGADR and PIFCFGDATA registers. To
access one of the processor interface configuration registers, write the appropriate index to register
PIFCFGADR, then read the data from or write the data to register PIFCFGDATA. All configuration
accesses from the processor must be 4 Byte aligned, otherwise an error will be generated and the cycle
not performed.
RegisterAddressR/WDescription
PIFCFGADRFF50_0000R/WProcessor Interface Configuration Address Register
PIFCFGDATAFF50_0004R/WProcessor Interface Configuration Data Register
Note: In the tables of register field descriptions throughout this specification, some bits are shown shaded.
Those bits are reserved in the CPC700. Reading of reserved bits will produce unpredictable values. Software must use appropriate masks to extract the desired bits. Writes must preserve the values of reserved
bit positions by first reading the register, merging the new values, and writing the result back.
0603_MODE0Enable support for 603 in 1:1 or 3:2 mode.
1MCP_EN0MCP_ enable:
2SNP60x_DIS0Disable snoop cycles on processor bus.
Description
0 - Disable
1 - Enable
When in 1:1 or 3:2 mode, the 603 processor ARTRY response
window is 1 cycle later than when the 603 is not in either of these
modes. This bit must be set if the 603 processor is placed in 1:1
or 3:2 mode so that ARTRY may be sampled at the correct time
when snooping the processor.
0 - Disable
1 - Enable
0 - All PLB accesses to system memory are snooped
1 - All PLB accesses to system memory are snooped except
those that fall within the range defined by PLBSNSSA0 and
PLBSNSSE0
If set to 0, PLB accesses to system memory generate a snoop
cycle on the processor bus for the corresponding address.
If set to 1, PLB accesses to the system memory range defined
by PLBSNSSA0 and PLBSNSSE0 do not generate a snoop cycle on the processor bus for the corresponding address.
This field indicates the PLB request priority associated with 60x
to PLB transfers.
This field is currently hardcoded to b’11’ indicating the highest
priority and is read only.
CPC700 User’s Manual—Preliminary 3-25
6WR_INT_EN0PLB Slave write region interrupt enable.
0 - Disable
1 - Enable
Enables use of PLBSWRINT region. When the PLB address
falls within the 16KB region as programmed into the PLBSWRINT register, an interrupt will be generated to the CPC700
interrupt controller. System software may separately program
the interrupt controller to generate an interrupt to the processor
based on this condition or not.
See Section 3.16.17, “PLBSWRINT - PLB Slave Write Interrupt”
for information programming the PLB Slave Write Interrupt region.
The following register is used to enable the detection and corresponding reporting mechanism for the associated error.
BitNameReset
Value
0C_TT_ER_EN0CPU Transfer Type Error Enable
1M_SEL_ER_EN0Memory Select Error Enable
2PLB_M_ER_EN0PLB Master Error Detection Enable
3PLBM_LEN0PLB Master Lock Error Enable
Description
0 - Detection Disabled
1 - Detection Enabled
0 - Detection Disabled
1 - Detection Enabled
0 - Detection Disabled
1 - Detection Enabled
This bit enables the detection of PLB Slave errors associated
with transfers initiated by the 60x PLB Master.
Errors are asserted by a slave via the Merr signal.
0 - Disable PLB Master LockErr Signal Assertion
1 - Enable PLB Master LockErr Signal Assertion
This bit enables the assertion of the 60x PLB master’s
M_lockErr signal, telling the slave to trap and hold error status
information when an error occurs. The M_lockErr signal remains asserted as long as this bit is enabled.
4PLB_S_ER_EN1PLB Slave Error Generation Enable
0 - Detection Disabled
1 - Detection Enabled
This bit enables the detection of memory select errors associated with a PLB Master access to system memory.
It enables the assertion of Merr by a PLB slave, and the trapping of address information in the BESR and BEAR registers.
This register contains the processor address of any errors associated with processor to memory transfer or
processor transfers that generate an unsupported transfer type error.
This register contains the processor transfer attributes for any errors associated with processor to memory
transfers or processor transfers that generate an unsupported transfer type error.
BitNameReset
Value
0:4CPUERTT0sProcessor Error Transfer Type[0:4]
5:7CPUERTS0sProcessor Error Transfer Size[0:2]
Description
8:310sReserved
3-28Processor Interface
3.16.6 PLBMIFOPT - PLB Master Interface Options
This register is used to enable or disable any of the three endian conversion byte swapping translation
regions in the processor interface. Refer to Section 3.11, “Byte Swapping” for a description of endian conversion.
Programming Note: In order to enable byte swapping the following steps must be taken:
1.Write to Byte Swapping Region Starting Address register
2.Write to Byte Swapping Region Ending Address register
3.Enable swapping region by writing to the PLB Master Interface Options register.
Note that the addressing granularity is 16K bytes and the starting and ending addresses must lie on 16KB
boundaries. The ending addresses are inclusive of the entire 16KB region programmed into the ending
address register.
Example: To program the internal PCI registers using a byte swapping region from xFEC0_0000 through
FF40_3FFF, program the following registers:
PLBMTLEA1 contains the ending address of byte swapping region 1. This ending address identifies the
ending of a byte swapping translation region with a 16KB granularity.
PLBMTLEA2 contains the ending address of byte swapping region 2. This ending address identifies the
ending of a byte swapping translation region with a 16KB granularity.
PLBMTLEA3 contains the ending address of byte swapping region 3. This ending address identifies the
ending of a byte swapping translation region with a 16KB granularity.
0:17XLR_3_EA0sProcessor-PLB Byte Swap Region 3 Ending Address
Description
18:310sReserved
3-32Processor Interface
3.16.13 PLBSNSSA0 - PLB Slave No Snoop Region Start Address
PLB master accesses to the system memory range defined by PLBSNSSA0 and PLBSNSEA0 do not generate a snoop cycle on the processor bus when the SNP60x_DIS bit in PRIFOPT1 register is set.
PLBSNSSA0 identifies the starting address of the no-snooping region with a 16KB granularity.
3.16.14 PLBSNSEA0 - PLB Slave No Snoop Region End Address
PLBSNSEA0 identifies the ending address of the no-snooping region with a 16KB granularity. Reserved
bits are "don’t cares" for address decoding purposes.
Write x40:Clear
Read x40:Read
Write x44:Sets bits based on mask that is written.
(This feature is typically only used for system verification)
This register is logically part of the PLB Slave interface within the processor interface and tracks errors encountered during PCI accesses to system memory. Only Master 1 which corresponds to the PCI interface
is used in the CPC700. Master 0 corresponds to the processor interface o itself which will never access its
own slave port through the PLB.
This register can be accessed at offset x40 for the purpose of reading or clearing error status bits. Offset
x44 is available for test purposes only and allows error bits to be set. A write access to x40 should provide
a 32-bit mask where each 1 in the mask will clear the corresponding bit in the BESR. A write access to x44
should provide a 32-bit mask where each 1 in the mask will set the corresponding bit in the BESR.
Note: Errors are not logged during read accesses. This bit will
remain at the default zero indefinitely. It can only be set to a one
by an access to offset x44, which is available only for test purposes
This register is logically part of the PLB Slave interface within the processor interface and contains the address associated with any errors encountered during PLB Master accesses to system memory. In the
CPC700 the only PLB Master which accesses the system memory via the PLB is the PCI interface.
BitNameReset
Value
0:31BEAR0sError Address register for PLB Master (PCI Interface) related er-
Description
rors.
3.16.17 PLBSWRINT - PLB Slave Write Interrupt
This register defines a 16KB region of system memory. When the WR_INT_EN bit of the PRIFOPT1 register is set, a PCI to memory access hit in this 16KB region will generate an interrupt pulse (one cycle in
duration) to the CPC700 interrupt controller. This interrupt is assigned IRQ 1 within the interrupt controller .
System software may separately program the interrupt controller to generate an interrupt to the processor
based on this condition or not. See Section Chapter 10., “Interrupt Controller” for more information.
The CPC700 Memory Controller provides the local PowerPC processor with a low latency access path to
local memory and external peripherals. In addition it supports hardware coherent accesses to the processor’s local memory from the PCI bus. Coherency is maintained on PCI accesses to local memory by
snooping the processor’s L1 cache before allowing the PCI interface to complete the requested access.
Industry standard 72-pin and 168-pin modules are supported allowing for a variety of system memory configurations. The memory controller supports up to 5 banks (5 Chip Select outputs). Bank 0 is dedicated to
Boot ROM while banks 1-4 may be programmed to support either SDRAM, ROM, SRAM, or external
peripherals. A maximum of 512MBytes per bank is supported with an overall maximum of 2GB for all
banks combined. Memory timings, bank starting and ending addresses, and memory addressing mode are
all programmable. During reset, Bank 0 defaults to ROM and is enabled while all other banks are disab led.
Bank 0 is typically used for the boot ROM.
4.1 Features
Synchronous DRAM:
• Memory bus operates at the same frequency as the processor bus (up to 66 MHz with CPC700-66 or
up to 83 MHz with CPC700-83)
• Up to 4 banks (Bank 0 defaults to ROM)
• 11x9 to 13x11 addressing for SDRAM (2 or 4 internal banks)
• 8 MByte to 512 MByte per bank
• Programmable timings and address mapping
• CAS before RAS refresh w/programmable refresh timer
• Supports hardware coherency
• Page Mode Accesses
• Sync DRAM configuration via mode set command
• 64-bit and 32-bit memory interface options (72-bit or 40-bit if implementing ECC)
• SDRAM Self-Refresh mode support (bank 4 only)
ROM/Peripheral:
• ROM, EPROM, SRAM, and Peripherals supported
• Burst and Non-Burst devices
• 1-5 banks (shared with SDRAM)
• 8, 16, 32, and 64-bit data bus widths supported
• Programmable timing per bank
• Shared address/data/control with DRAM interface
• External latch control for shared address bus support
CPC700 User’s Manual—Preliminary 4-1
• Programmable address mapping
• Peripheral Device pacing with external “Ready”
ECC:
• Single-bit error correct and double-bit error detect on memory reads
• Aligned nibble error detect
• Single bit address error detect
• 8 check bits support 32 or 64-bit data bus widths
• Support for mixing ECC and Non-ECC DIMMs in the same system
• ECC checking may be disabled
4.2 Memory Controller Block Diagram
A block diagram of the CPC700 memory controller is shown in Figure 8.
DCR Bus
Control
Address
Control
Read
data path
ECC
Write
Memory Controller Interface
data path
Configuration Registers
ROM
SRAM
Peripherals
Read Data Path
Write Data Path
SDRAM
data-path
control signals
register
outputs
RAS/CAS,
OE/WE/ALE,
bank enables,
etc.
MEM read
data path
MEM write
data path
External Memory/Peripheral Interface
Figure 8. Memory Controller Block Diagram
4-2Memory Controller
4.3 Memory Controller Registers
The memory controller registers are accessed through an indirect method employing a configuration
address register, MEMCFGADR, and a configuration data register, MEMCFGDATA. To access one of the
memory controller registers, write the appropriate index to register MEMCFGADR, then read the data from
or write the data to register MEMCFGDATA. All configuration accesses from the processor must be 4 Byte
aligned, otherwise an error will be generated and the cycle not performed.
Table 21. Memory Controller Register Addressing
RegisterAddressR/WDescription
MEMCFGADRFF50_0008R/WMemory Controller Configuration Address Register
MEMCFGDATAFF50_000CR/WMemory Controller Configuration Data Register
Table 22 lists the offsets for the various configuration registers located within the memory controller.
Table 22. Offsets for Memory Controller Registers
RegisterOffsetR/WDescription
MCOPT120R/WMemory Controller Options 1
MBEN24R/WMemory Bank Enable
MEMTYPE28R/WInstalled Memory Type
RWD2CR/WBank Active Watchdog Timer
RTR30R/WRefresh Timer Register
DAM34R/WDRAM Addressing Mode
MB0SA38R/WMemory Bank 0 Starting Address
MB1SA3CR/WMemory Bank 1 Starting Address
MB2SA40R/WMemory Bank 2 Starting Address
MB3SA44R/WMemory Bank 3 Starting Address
MB4SA48R/WMemory Bank 4 Starting Address
MB0EA58R/WMemory Bank 0 Ending Address
MB1EA5CR/WMemory Bank 1 Ending Address
MB2EA60R/WMemory Bank 2 Ending Address
MB3EA64R/WMemory Bank 3 Ending Address
MB4EA68R/WMemory Bank 4 Ending Address
SDTR180R/WSDRAM Timing register 1
RBW88R/WROM Bank Width
FWEN90R/WFlash Write Enable
ECCCF94R/WECC Configuration
CPC700 User’s Manual—Preliminary 4-3
Table 22. Offsets for Memory Controller Registers (Continued)
RegisterOffsetR/WDescription
ECCERR98R/WECC Error
RPB0PE0R/WROM / Peripheral Bank 0 Parameters
RPB1PE4R/WROM / Peripheral Bank 1 Parameters
RPB2PE8R/WROM / Peripheral Bank 2 Parameters
RPB3PECR/WROM / Peripheral Bank 3 Parameters
RPB4PF0R/WROM / Peripheral Bank 4 Parameters
Detailed information regarding the memory controller registers can be found in Section 4.9, “Memory Controller Register Description”.
4.4 Memory Access Arbiter
All accesses to main memory from the processor interface or the PCI interface are dispatched to the
SDRAM/ROM controller via the internal memory controller interface. The memory controller interface supports 1 full level of address pipelining for accesses to system memory which originate from single or multiple sources. The possible sources for memory access requests which are broadcast onto the memory
controller interface are processor to memory, PCI to memory, and processor to memory write buffer. The
priority of the access request is determined by the processor interface bus arbiter and high priority write
buffer (W.B.) flush mechanism and is in descending order of priority: High Priority W.B. Flush, processor,
and PCI. The specific priority associated with processor and PCI requests is governed by a rotating token
associated with processor and PCI accesses. It is this priority that determines which transaction will be
broadcast onto the memory controller interface following the completion of the current access (if any is in
progress). A simple conceptual view of the priority associated with the routing of requests to the memory
controller interface is shown in Figure 9.
Arbiter
High Priority
W.B. Flush
Processor - Mem
PCI - Mem
Processor - Mem W.B.
Figure 9. Routing of Memory Access Requests
All access requests are initiated to the memory controller as single doubleword, or double/quad doubleword (wrap address increment). For quad doubleword wrap address increment accesses, the doubleword
aligned address is incremented linearly to the end of the 32 byte aligned address boundary and wraps to
the beginning of the 32 byte aligned address transferring a four doubleword line.
Memory
Controller
Interface
4.5 SDRAM
The CPC700 memory controller supports both dual and quad internal bank SDRAMs in 32-bit and 64-bit
configurations (40-bit and 72-bit if using ECC) with fully programmable timing parameters. Both standard
and pipelined architecture SDRAMs are supported and the memory controller provides a mechanism to
enable/disable read and write with auto-precharge.
4-4Memory Controller
4.5.1 Initialization Sequence
The SDRAM must be initialized prior to being accessed. This is accomplished through a combination of
System and SDRAM Controller actions as follows:
System:
1.After Reset is deactivated, pause the amount of time indicated in the SDRAM specification.
- Example: IBM 16MB SDRAM requires 100us pause and 64MB SDRAM requires 200us.
2.Configure SDRAM related configuration registers (may occur during pause period).
3.Set DC_EN = 1 in the MCOPT1 register to enable the SDRAM controller
Step 3 automatically causes the SDRAM Controller to:
1.Issue Precharge command to all banks.
2.Wait minimum defined by SD_PTA bits in the SDTR1 register.
The SDRAM page size for all supported addressing modes is 2K for 32-bit (40-bit ECC) memories (1K for
mode-4), and 4K for 64-bit (72-bit ECC) memories (2K for mode-4). Pipelined accesses to system memory
from the local processor or PCI which address the same page within a given memory bank are treated as
page hits provided that the addressed bank is active when the pipelined access request is f orwarded to the
SDRAM controller.
Accesses which Page Miss/Bank Miss take advantage of the precharge state of the newly selected bank
by driving the ROW address and activating the new bank. The previously accessed bank is precharged.
SDRAM memory subsystem implementations contain banks and sub-banks. A bank corresponds to a
SDRAM chip select while the sub-banks correspond to SDRAM bank addresses. Within the context of the
above discussion, Bank Miss may be either a bank or sub-bank miss.
Note: Page size is independent of the actual vendor SDRAM column address geometry. This can be seen
by examining the Memory Mapping tables in the f ollowing sections . Notice that there are only 9 contiguous
column address bits for modes 1-3, and 8 for mode 4. Table 23. summarizes the factors that control the
actual page size:
Programmable memory timing support is provided to allow for greater flexibility at the system level. As a
result, memory timing parameters may be adjusted to support faster SDRAM technologies as they become
available as well as to maximize the performance of the SDRAM memory subsystem. The timing parameters listed in Table 24. are set via the SDTR1 register. See Section 4.9.2.1, “SDTR1 - SDRAM Timing Register 1” for more information.
Table 24. SDRAM Memory Timing Parameters
NameFunctionDescription
SD_RCDActivate to
Read/Write
Command
SD_RFTARefresh to Acti-
vate
Minimum number of clock cycles from an Activate Command to a
Read or Write Command. Corresponds to DRAM RAS_ to CAS_
assertion delay.
Minimum number of clock cycles from a CBR Refresh Command
to the next Activate Command.
SD_RTPRead to Pre-
charge
SD_WTPWrite to Pre-
charge
SD_PTAPrecharge to
Active
SD_SREXSelf-Refresh
Exit delay
SD_RRDBank A Acti-
vate to Bank B
Activate
Non Auto-Precharge Mode.
The value programmed in this field should be determined empirically based upon the expected pattern of memory acceses. If
consecutive accesses typically are within the same page, a larger
value will provide improved memory subsystem performance. If
consecutive accesses are typically to different pages, a smaller
value is recommended. The programmed value sets the number
of clock cycles from a Read Command to the SDRAM Controller
issuing a Precharge Command.
Auto Precharge Mode.
Page Hits are not possible if the SDRAM uses Auto Precharge
mode. When using this mode, this register location should be programmed with the number of clock cycles from a Read with AutoPrecharge Command to the beginning of Auto-Precharge.
Same description as SD_RTP field
Minimum number of clock cycles required to wait following a Precharge Command to issuing the next Activate Command.
Number of clock cycles until first access allowed following self-refresh exit.
Module Bank-to-Bank Activate Delay.
Hardcoded to 2 clock cycles. Pertains to sub-banks only.
4-6Memory Controller
Table 24. SDRAM Memory Timing Parameters
SD_APGEAuto-Pre-
charge Enable
SD_CASLCAS_ LatencyProgrammable access latency.
Auto-Precharge enable. When enabled, all SDRAM Read/Write
accesses will be performed as Read w/Auto-Precharge or Write
w/Auto-Precharge.
CPC700 User’s Manual—Preliminary 4-7
4.5.4 SDRAM Configuration Registers
The SDRAM configuration registers are listed in Table 25.
Table 25. SDRAM Configuration Registers
Register
SymbolRegister Name
MCOPT1Memory Controller Options 1
MEMTYPEMemory T ype
MBENMemory Bank Enable
MBSA0 -
MBSA4
MBEA0 -
MBEA4
SDTR1SDRAM Memory Timing Register 1
DAMDRAM Addressing Mode
RWDBank Active Watchdog Timer
RTRRefresh Timer Register
ECCCFECC Configuration Register (bit 4, SD_WDTH, sets SDRAM bus width to 32 or
Detailed descriptions of these registers can be found in Section 4.9, “Memory Controller Register Description”.
Memory Bank Starting Addresses
Memory Bank Ending Addresses
64-bit)
4.5.5 Physical Address to Memory Mapping
The tables below show the mapping of the processor’s physical address to the memory address for all local
processor and PCI to memory accesses when using SDRAM. This mapping of the processor’s physical address to the CPC700’s Bank Address (BA[1:0]) and Memory Address (MA[12:0]) pins is done by the
CPC700 on a per bank basis based on the mode settings in the DRAM Addressing Mode (DAM) registers.
4.5.5.1 32-Bit Memory Mapping
The following tables specify the organization of the SDRAM as follows: ROW x COLUMN (INTERNAL
BANKS).
AP = 1 if Auto-Precharge is enabled, AP = 0 if Auto-Precharge is disabled. This bit field corresponds
directly to SD_APGE from the SDTR1 configuration register.
All shaded entries are "don’t care" for the particular addressing mode, but will be driven with the value indicated to minimize internal muxing of individual address bits for the addressing modes supported.
SDRAM address pins names (BA[1:0] and MA[12:0]) are shown using little endian nomenclature.
4-8Memory Controller
Mode 1
11 x 9 (2)
BA1BA0MA12MA
11
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
0
Row
Column
Mode 1
A7A9A7A9A10A11A12A13A14A15A16A17A18A19A20
A7A9A7A4APA8A21A22A23A24A25A26A27A28%
BA1BA0MA12MA
11 x 10 (2)
Row
Column
Note:
A7A9A7A9A10A11A12A13A14A15A16A17A18A19A20
A7A9A7A4APA8A21A22A23A24A25A26A27A28%
Mode 2
12 x 9 (4)
BA1BA0MA12MA
13 x 9 (2)
Row
Column
A7A8A7*A9A10A11A12A13A14A15A16A17A18A19A20
A7A8A7*A4APA6A21A22A23A24A25A26A27A28%
*Enables support of 13 x 9 (2).
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
0
0
Mode 2
12 x 10 (4)
BA1BA0MA12MA
13 x 10 (2)
Row
Column
A7A8A7**A9A10A11A12A13A14A15A16A17A18A19A20
A7A8A7**A4APA6A21A22A23A24A25A26A27A28%
**Enables support of 13 x 10 (2)
Mode 3
13 x 9 (4)
Row
Column
BA1BA0MA12MA
A6A7A8A9A10A11A12A13A14A15A16A17A18A19A20
A6A7A7A4APA5A21A22A23A24A25A26A27A28%
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
0
0
CPC700 User’s Manual—Preliminary 4-9
Mode 3
13 x 10 (4)
BA1BA0MA12MA
11
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
0
Row
Column
Mode 3
13 x 11 (4)
Row
Column
A6A7A8A9A10A11A12A13A14A15A16A17A18A19A20
A6A7A7A4APA5A21A22A23A24A25A26A27A28%
MA
BA1BA0MA12MA
A6A7A8A9A10A11A12A13A14A15A16A17A18A19A20
A6A7A7A4#APA5A21A22A23A24A25A26A27A28%
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
# Column address bit 10 sent out on M11 for 13 x 11 (4) parts.
%
This bit is driven by the SDRAM controller.
Mode 4
12 x 8 (2)
13 x 8 (2)
12 x 8 (2)
Row
BA1BA0MA12MA
A8A21A8A9A10A11A12A13A14A15A16A17A18A19A20
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
0
0
Column
A8A21A8A4APA6A21A22A23A24A25A26A27A28%
4.5.5.2 64-Bit Memory Mapping
The following tables specify the organization of the SDRAM as follows: ROW x COLUMN (INTERNAL
BANKS).
AP = 1 if Auto-Precharge is enabled, AP = 0 if Auto-Precharge is disabled. This bit field corresponds
directly to SD_APGE from the SDTR1 configuration register.
All shaded entries are "don’t care" for the particular addressing mode, but will be driven with the value indicated to minimize internal muxing of individual address bits for the addressing modes supported.
MA
Mode 1
11 x 9 (2)
Row
Column
BA1BA0MA12MA
A6A8A6A8A9A10A11A12A13A14A15A16A17A18A19
A6A8A6A3APA7A20A21A22A23A24A25A26A27A28
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
0
4-10Memory Controller
Mode 1
11 x 10 (2)
BA1BA0MA12MA
11
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
0
Row
Column
A6A8A6A8A9A10A11A12A13A14A15A16A17A18A19
A6A8A6A3APA7A20A21A22A23A24A25A26A27A28
Mode 2
12 x 9 (4)
BA1BA0MA12MA
13 x 9 (2)
Row
Column
A6A7A6*A8A9A10A11A12A13A14A15A16A17A18A19
A6A7A6*A3APA5A20A21A22A23A24A25A26A27A28
*Enables support of 13 x 9 (2).
Mode 2
12 x 10 (4)
13 x 10 (2)
Row
Column
BA1BA0MA12MA
A6A7A6**A8A9A10A11A12A13A14A15A16A17A18A19
A6A7A6**A3APA5A20A21A22A23A24A25A26A27A28
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
0
0
**Enables support of 13 x 10 (2)
MA
Mode 3
13 x 9 (4)
Row
Column
BA1BA0MA12MA
A5A6A7A8A9A10A11A12A13A14A15A16A17A18A19
A5A6A6A3APA4A20A21A22A23A24A25A26A27A28
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
0
MA
Mode 3
13 x 10 (4)
Row
Column
BA1BA0MA12MA
A5A6A7A8A9A10A11A12A13A14A15A16A17A18A19
A5A6A6A3APA4A20A21A22A23A24A25A26A27A28
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
0
CPC700 User’s Manual—Preliminary 4-11
Mode 3
13 x 11 (4)
BA1BA0MA12MA
11
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
0
Row
Column
A5A6A7A8A9A10A11A12A13A14A15A16A17A18A19
A5A6A6A3#APA4A20A21A22A23A24A25A26A27A28
# Column address bit 10 sent out on M11 for 13 x 11 (4) parts.
Mode 4
12 x 8 (4)
13 x 8 (2)
12 x 8 (4)
Row
Column
BA1BA0MA12MA
A7A20A7A8A9A10A11A12A13A14A15A16A17A18A19
A7A20A7A3APA5A20A21A22A23A24A25A26A27A28
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
0
4.5.6 Precharge Command
Issuing the Precharge Command instructs the SDRAM to precharge all banks and is generated by the
SDRAM controller as needed when Auto-Precharge is disabled as configured by register bit SD_APGE.
The memory address bus contains the command associated with the precharge cycle and is formatted as
follows:
Addressing
Mode
Mode 1,2,3
(ALL)
Prechargeb’1’
BA1BA0MA12MA
MA
10/APMA9MA8MA7MA6MA5MA4MA3MA2MA1MA
11
0
Note: Shaded entries are “don’t care” and will be driven with a stable value for every clock cycle.
4.5.7 Refresh
Refresh of odd memory banks is staggered from the refresh of even memory banks. Only banks enabled in
the Memory Bank Enable register will be initialized following reset and refreshed during normal operation.
Refresh requests are generated internally when the refresh timer expires. The Refresh interval is programmable via the RTR register in the Global Memory Timing Registers. During refresh, all SDRAM and ROM
accesses are delayed until the current or pending refresh cycle completes.
Note: During refresh, MA(12:0) are not required and will contain the last address driven to memory.
4-12Memory Controller
4.5.7.1 Self-Refresh operation
The SDRAM Controller supports self-refresh operation for applications desiring lower power . Note that only
the SDRAM memory is affected by self-refresh operation, the SDRAM controller itself does not enter any
specific power saving mode. Self-refresh operation is only available on bank 4.
In order for the SDRAM controller to place the SDRAM in self-refresh mode, the SDRAM controller must
first be enabled (DC_EN set to 1 in the MCOPT1 register), with the appropriate bank’s MEMTYP set to
b’10’ (SDRAM).
Once enabled, the SDRAM controller may be placed in self-refresh mode anytime following the memory
initialization sequence. To guarantee that the initialization sequence has completed, a minimum wait of 400
processor bus clock cycles following the setting of the DC_EN bit must be observed before enabling selfrefresh. After initialization has completed, self-refresh can be enabled by setting the PM_EN and
SLFREFEN bits to 1 in the MCOPT1 register.
Upon entering self-refresh the SDRAM controller will clear the SLFREFEN bit. The SDRAM controller will
maintain the SDRAM in self-refresh (CKE low) until an access (read/write) to the SDRAM is requested by
the system. Resetting the PM_EN bit or SLFREFEN bit will not cause the SDRAM controller to exit selfrefresh. Upon receiving the request, the SDRAM controller will exit self-refresh and wait a minimum of 12
clock cycles (SD_SREX field of SDTR1 register) before performing the access.
Once the SDRAM controller has exited self-refresh mode, it will not re-enter self-refresh until SLFREFEN
is set again.
As indicated above, it is not necessary to clear the SLFREFEN as the SDRAM controller will clear this bit
upon entering self-refresh.
4.5.8 Mode Register Write Command
The Mode Register Write command is issued during the Initialization Sequence to configure the SDRAM
operating mode. Once the SDRAM operating mode has been configured, normal memory accesses are allowed to proceed.
The Mode Set command vector is placed on the external memory address bus during the Mode Register
Write Command window. The Mode Set command vector consists of four fields: Options - MA(11:7), CAS_
Latency - MA(6:4), Wrap Type - MA(3), and Burst Length - MA(2:0). For the SDRAM controller, the Options
field is hardcoded to b’00000’ to enable the Mode Register Set Command, the CAS_ Latency field is configurable via the SD_CASL bits in the SDTR1 register allowing for a CAS_ latency of 2 or 3 to be selected,
the Wrap Type field is hardcoded to a b’0’ to select sequential wrap addressing, and the Burst Length field
is generated based on whether the memory is configured for 32 or 64-bit width (as set via the SD_WDTH
bit in the ECCCF register) and configures the SDRAM for burst of 8 or burst of 4 respectively.