Digi, Digi International, the Digi logo, the Making Device Networking Easy logo, NetSilicon, a Digi
International Company, NET+, NET+OS and NET+Works are trademarks or registered trademarks of Digi
International, Inc. in the United States and other countries worldwide. All other trademarks are the
property of their respective owners.
Information in this document is subject to change without notice and does not represent a committment
on the part of Digi International.
Digi provides this document “as is,” without warranty of any kind, either expressed or implied, including,
but not limited to, the implied warranties of, fitness or merchantability for a particular purpose. Digi may
make improvements and/or changes in this manual or in the product(s) and/or the program(s) described
in this manual at any time.
This product could include technical inaccuracies or typographical errors. Changes are made periodically
to the information herein; these changes may be incorporated in new editions of the publication.
Digi International
11001 Bren Road East
Minnetonka, MN 55343 U.S.A.
United St ates: +1 877 912-3444
Other locations: +1 952 912-3444
www.digiembedded.com
Contents
Chapter 1: About NS9750 .......................................................................... .....................1
NS9750 Features ......................................................................... 2
Active Interrupt Level Status register .......................................163
Timer 0–15 Control registers..................................................163
System Memory Chip Select 0 Dynamic Memory Base and Mask registers..
165
System Memory Chip Select 1 Dynamic Memory Base and Mask registers..
166
System Memory Chip Select 2 Dynamic Memory Base and Mask registers..
167
System Memory Chip Select 3 Dynamic Memory Base and Mask registers..
168
System Memory Chip Select 0 Static Memory Base and Mask registers.169
System Memory Chip Select 1 Static Memory Base and Mask registers.170
System Memory Chip Select 2 Static Memory Base and Mask registers.171
System Memory Chip Select 3 Static Memory Base and Mask registers.172
Gen ID register ..................................................................173
External Interrupt 0–3 Control register......................................175
Review this section for basic information about the gui de you are using, as
well as general support and contact information. This printed version of the
NS9750 Hardware Reference, Rev. E includes two volumes (90000622_E and
90000623_E). A single PDF (90000624_E) is included on your documentation CD.
About this guide
This guide provides information about the Digi NS9750, a single chip 0.13μm
CMOS network-attached processor. The NS9750 is part of the Digi NET+ARM
family of devices.
The NET+ARM family is part of the NET+Works integrated product family, which
includes the NET+OS network software suite.
Who should read this guide
This guide is for hardware developers, system software developers, and
applications programmers who want to use the NS9750 for development.
To complete the tasks described in this guide, you must:
Understand the basics of hardware and software design, operating
systems, and microprocessor design.
Understand the NS9750 architecture.
xix
What’s in this guide
This table shows where you can find specific information in the printed guides.
To read aboutSeeVol
NS9750 key featuresChapter 1, “About the NS97501
NS9750 ball grid array assignmentsChapter 2, “NS9750 Pinout”1
NS9750 CPU Chapter 3, “Working with the CPU”1
System functionalityChapter 4, “System Control Module”1
How the NS9750 works with the Multiport Memory
Controller, an AMBA-compliant SoC peripheral
How the NS9750 works with Ethernet MAC and
Ethernet front-end module
PCI-to-AHB bus functionality, which connects PCI-
based devices to the NS9750 AHB bus
Digi proprietary BBusChapter 8, “BBus Bridge2
NS9750 BBus DMA controller subsystemC hapter 9, “BBus DMA Controller”2
Chip-level support for low-speed peripheralsChapter 10, “BBus Utility”2
Interface between the ARM CPU and the I2C busChapter 11, “I2C Master/Slave Interface”2
LCD controllerChapter 12, “LCD Controller”2
UART mode serial controllerChapter 13, “Serial Control Module:
SPI mode serial controllerChapter 14, “Serial Control Module: SPI”2
IEEE 1284 peripheral portChapter 15, “IEEE 1284 Peripheral
USB 2.0Chapter 16, “USB Controller Module”2
NS9750 electrical characteristics and timing diagrams
This table describes the typographic conventions used in this guide:
This conventionIs used for
italictypeEmphasis, new terms, variables, and document titles.
monospaced type
_ (underscore)Defines a signal as being active low.
‘bIndicates that the number following this indicator is in binary radix
‘dIndicates that the number following this indicator is in decimal radix
‘hIndicates that the number following this indicator is in hexadecimal
RW1TCIndicates Read/Write 1 to clear.
Related documentation
NS9750 Jumpers and Components provides a hardware description of the
NS9750 development board, and includes information about jumpers,
components, switches, and configuration.
NS9750 Sample Driver Configurations provides sample configurations that
you can use to develop your drivers.
Review the documentation CD-ROM that came with your development kit for
information on third-party products and other components.
Filenames, pathnames, and code examples.
radix
See the NET+OS software documentation for information appropriate to the chi p you
are using.
Documentation updates
Digi occasionally provides documentation updates on the Web site.
www.digiembedded.com
xxi
Be aware that if you see differences between the documentation you received in your
package and the documentation on the Web site, the Web site content is the latest
version.
Customer support
To get help with a question or technical problem with this product, or to make
comments and recommendations about our products or documentation, use the
contact information listed in this table:
ForContact information
Technical supportUnited States: +1 877 912-3444
Other locations: +1 952 912-3444
www.digiembedded.com
xxii
NS9750 Hardware Reference
About NS9750
CHAPTER 1
The Digi NS9750 is a single chip 0.13μm CMOS network-attached processor. This
chapter provides an overview of the NS9750, which is based on the standard
architecture in the NET+ARM family of devices.
1
NS9750 Features
NS9750 Features
The NS9750 uses an ARM926EJ-S core as its CPU, with MMU, DSP extensions, Jazelle
Java accelerator, and 8 kB of instruction cache and 4 kB of data cache in a Harvard
architecture. The NS9750 runs up to 200 MHz, with a 100 MHz system and memory bus
and 50 MHz peripheral bus. The NS9750 offers an extensive set of I/O interfaces and
Ethernet high-speed performance and processing capacity. The NS9750 is designed
specifically for use in high-performance intelligent networked devices and Internet
appliances including high-performance, low-latency remote I/O, int elligent
networked information displays, and streaming and surveillance cameras.
32-bit ARM926EJ-S RISC processor
125 to 200 MHz
5-stage pipe line with interlocking
Harvard architecture
8 kB instruction cache and 4 kB data cache
32-bit ARM and 16-bit Thumb instruction sets. Can be mixed for
performance/code density tradeoffs.
2
MMU to support virtual memory-based OSs, such as Linux, VxWorks, others
DSP instruction extensions, improved divide, single cycle MAC
ARM Jazelle, 1200CM (coffee marks) Java accelerator
EmbeddedICE-RT debug unit
JTAG boundary scan, BSDL support
External system bus interface
32-bit data, 32-bit internal address bus, 28-bit external address bus
Glueless interface to SDRAM, SRAM, EEPROM, buffered DIMM, Flash
4 static and 4 dynamic memory chip selects
1-32 wait states per chip select
A shared Static Extended Wait register allows transfers to have up to 16368
wait states that can be externally terminated
Self-refre sh during system sleep mode
Automatic dynamic bus sizing to 8 bits, 16 bits, 32 bits
NS9750 Hardware Reference
About NS9750
Burst mode support with automatic data width adjustment
Two external DMA channels for external peripheral support
System Boot
High-speed boot from 8-bit, 16-bit, or 32-bit ROM or Flash
Hardware-supported low cost boot from serial EEPROM through SPI port
(patent pending)
High performance 10/100 Ethernet MAC
10/100 Mbps MII/RMII PHY interfaces
Full-duplex or half-duplex
Station, broadcast, or multicast address filtering
2 kB RX FIFO
256-byte TX FIFO with on-chip buffer descriptor ring
–Eliminates underruns and decreases bus traffic
Separate TX and RX DMA channels
Intelligent receive-side buffer size selection
Full statistics gathering support
External CAM filtering support
PCI/CardBus port
PCI v2.2, 32-bit bus, up to 33 MHz bus speed
Programmable to:
–PCI device mode
–PCI host mode:
Supports up to 3 external PCI devices
Embedded PCI arbiter or external arbiter
CardBus host mode
www.digiembedded.com
3
NS9750 Features
Flexible LCD controller
Supports most commercially available displays:
Formats image data and generates timing control signals
Internal programmable palette LUT and grayscaler support different color
Programmable panel-clock frequency
USB ports
USB v.2.0 full speed (12 Mbps) and low speed (1.5 Mbps)
Configurable to device or OHCI host
–Active Matrix color TFT displays:
Up to 24bpp direct 8:8:8 RGB; 16 colors
–Single and dual panel color STN displays:
Up to 16bpp 4:4:4 RGB; 3375 colors
–Single and dual panel monochrome STN displays:
1, 2, 4bpp palettized gray scale
techniques
–USB host is bus master
–USB device supports one bidirectional control endpoint and 11
unidirectional endpoints
4
All endp oints supported by a dedicated DMA channel; 13 channels total
20 byte RX FIFO and 20 byte TX FIFO
Serial ports
4 serial modules, each independently configurable to UART mode, SPI
master mode, or SPI slave mode
Bit rates from 75 bps to 921.6 kbps: asynchronous x16 mode
Bit rates from 1.2 kbps to 6.25 Mbps: synchronous mode
UART provides:
–High-performance hardware and software flow control
–Odd, even, or no parity
–5, 6, 7, or 8 bits
–1 or 2 stop bits
–Receive-side character and buffer gap timers
NS9750 Hardware Reference
About NS9750
Inte rnal or external clock support, digital PLL for RX clock extraction
4 receive-side data match detectors
2 dedicated DMA channels per module, 8 channels total
32 byte TX FIFO and 32 byte RX FIFO per module
I2C port
2
I
Bit rates: fast (400 kHz) or normal (100 kHz) with clock stretching
7-bit and 10-bit address modes
Supports I
C v.1.0 configurable to master or slave mode
2
C bus arbitration
1284 parallel peripheral port
All standard modes: ECP, byte, nibble, compatibility (also known as SPP or
“Centronix”)
RLE (run length encoding) decoding of compressed data in ECP mode
Operating clock from 100 kHz to 2 MHz
High performance multiple-master/distributed DMA system
Intelligent bus bandwidth allocation (patent pending)
Syste m bus and perip he ral bus
System bus
Every system bus peripheral is a bus master with a dedicated DMA engine
Peripheral bus
One 13-channel DMA engine supports USB device
–2 DMA channels support control endpoint
–11 DMA channels support 11 endpoints
One 12-channel DMA engine supports:
–4 serial modules (8 DMA channels)
–1284 parallel port (4 DMA channels)
Al l DMA channels support fly-by mode
External peripheral
One 2-channel DMA engine supports external peripheral connected to
Can be concatenated
Resolution to measure minute-range events
Source clock selectable: internal clock or external pulse event
Each can be individually enabled/disabled
System timers
Watchdog timer
System bus monitor timer
System bus arbiter timer
Peripheral bus monitor timer
General purpose I/O
50 programmable GPIO pins (muxed with other functions)
Software-readable powerup status registers for every pin for customer-
defined bootstrapping
NS9750 Hardware Reference
External interrupts
4 external programmable interrupts
–Rising or falling edge-sens itive
–Low level- or high level-sensitive
Clock generator
Low cost external crystal
On-chip phase locked loop (PLL)
Software programmable PLL parameters
Optional external oscillator
Separate PLL for USB
Figure 1 shows the NS9750 system-level interfaces.
8
Figure 1: System-level hardware interfaces
Ethe rnet MII/RMII interface to external PHY
System memory interface
–Glueless connection to SDRAM
–Glueless connection to buffered PC100 DIMM
–Glueless connection to SRAM
–Glueless connection to Flash memory or ROM
PCI muxed with CardBus interface
USB host or device interface
2
I
C interface
50 GPIO pins muxed with:
–Four 8-pin-each serial ports, each programmable to UART or SPI
NS9750 Hardware Reference
About NS9750
–1284 port
–Up to 24-bit TFT or STN color and monochrome LCD controller
–Two external DMA channels
–Four external interrupt pins programmed to rising or falling edge, or to high
or low level
–Sixteen 16-bit or 32-bit programmable timers or counters
–Two control signals to support USB host
JTAG development interface
Cl ock interfaces for crystal or external oscillator
–System clock
–USB clock
Clock interface for optional LCD external oscillator
Power and ground
www.digiembedded.com
9
System boot
NS9750
Memory
CTL
External
System
Memory
Flash or
ROM
Memory Bus
Peripheral Bus to AHB Bus Bridge
AHB
Serial
EEPROM
SPI
System boot
There are two ways to boot the NS9750 system (see Figure 2):
From a fast Flash over the system memory bus
From an inexp ensive, but slower, serial EEPROM through SPI port B.
Both boot methods are glueless. The bootstrap pin,
RESET_DONE, indicates where to
boot on a system powerup. Flash boot can be done from 8-bit, 16-bit, or 32-bit ROM
or Flash.
Serial EEPROM boot is supported by NS9750 hardware. A configuration header in the
EEPROM specifies total number of words to be fetched from EEPROM, as well as a
system memory configuration and a memory controller configuration. The boot
engine configures the memory controller and system memory, fetches data from lowcost serial EEPROM, and writes the data to externa l system memory, holding the CPU
in reset.
Reset
10
Figure 2: Two methods of booting NS9750 system
Master reset using an external reset pin resets NS9750. Only the AHB bus error status
registers retain their values; software read resets these error status registers. The
NS9750 Hardware Reference
input reset pin can be driven by a system reset circuit or a simple power-on reset
circuit.
RESET_DONE as an input
Used at bootup only:
When set to 0, the system boots from SDRAM through the serial SPI EEPROM.
When set to 1, the system boots from Flash/ROM. This is the default.
RESET_DONE as an output
Sets to 1, per Step 6 in the boot sequence.
If the system is booting from serial EEPROM through the SPI port, the boot program
must be loaded into the SDRAM before the CPU is released from reset. The memory
controller is powered up with dy_cs_n[0] enabled with a default set of SDRAM
configurations. The default address range for
chip selects are disabled.
About NS9750
dy_cs_n[0] is from 0x0000 0000. The other
Boot sequence
1When the system reset turns to inactive, the reset signal to the CPU is still held
active.
2An I/O module on the peripheral bus (BBus) reads from a serial ROM device that
contains the memory controller settings and the boot program.
3The BBus-to-AHB bridge requests and gets the system bus.
4The memory controller settings are read from the serial EEPROM and used to
initialize the memory controller.
5The BBus-to-AHB bridge loads the boot program into the SDRAM, starting at
address 0.
6The reset signal going to the CPU is released once the boot program is loaded.
RESET_DONE is now set to 1.
7The CPU begins to execute code from addres s 0x0000 0000.
www.digiembedded.com
11
Reset
C14 100nF
Adding R5 will enable BOOT from Serial EE memory
connected to SPI port B to SDRAM located on dy_cs_n[0].
RESET_DONE remains “LOW” until BOOT is completed.
RESET_DONE = 1 indicates that the CPU is ready.
Otherwise, BOOT is from parallel ROM/FLASH connected to
st_cs_n[1].
RESET_
NS9750
RESET_DONE
RESETn
RESET delay required following valid
power applied to the NS9750 to allow
clock circuits to stabilize.
RST-
VCC
GND
U6
MAX809S_SOT23D
2
3
1
R5
2R4K
3R3V
RESET_DONE
Figure 3 shows a sample reset circuit.
Figure 3: Sample reset circuit
You can use one of five software resets to reset the NS9750. Select the reset by
setting the appropriate bit in the appropriate register.
Watchdog timer can issue reset upon watchdog timer expiration (see
AHB bus arbiter can issue reset upon AHB bus arbiter timer expiration.
AH B bus monit o r can issue reset upon AHB bus monitor timer expiration.
Software reset can reset individual internal modules or all modules except
The system is reset whenever software sets the PLL SW change bit to 1 (see
12
"Software Watchdog Timer register" on page 293).
memory and CPU (see "Reset and Sleep Control register" on page 295).
"PLL Configuration register" on page 299).
NS9750 Hardware Reference
Hardware reset duration is 4 ms for PLL to stabilize. Software duration depends on
speed grade, as shown in Table 1.
The minimum reset pulse width is 10 crystal clocks.
System clock
The system clock is provided to the NS9750 by either a crystal or an external
oscillator. Table 2 shows sample clock frequency settings for each chip speed grade.
Table 2: Sample clock frequency settings with 29.4912 MHz crystal
If an oscillator is used, it must be connected to the
x1_sys_osc input (C8 pin) on the
NS9750. If a crystal is used, it must be connected with a circuit such as the one shown
in Figure 4.
www.digiembedded.com
13
System clock
C19
10pF
S_PLL_BP_
GPIO19_PLL_BP
C20
10pF
X2
20-40MHz
X1_SYS
X2_XTAL
X1_SYS_OSC is qualified for an external LVTTL clock up to
400 MHz in PLL bypass mode. The system PLL is bypassed
by pulling down GPIO19. In PLL bypass mode, the ARM9
CPU is ½ the frequency of X!_SYS_OSC.
When the PLL is enabled, the clock input range is 20 - 40
MHz.
X1_SYS_OSC
Add R10 to bypass SYS PLL
R12
1M
R11
100
X2_SYS
R10
2R4K
R13
330 OHM
NS9750
X2_SYS_OSC
Figure 4: System clock
The PLL parameters are initialized on powerup reset, and can be changed by
software from f
200 MHZ to 100 MHz, the AHB system bus may change from 100 MHz to 50 MHz, and
the peripheral BBus may change from 50 MHz to 25 MHz. If changed by software, the
system resets automatically after the PLL stabilizes (approximately 4 ms).
The system clock provides clocks for CPU, AHB system bus, peripheral BBus, PCI/
CardBus, LCD, timers, memory controller, and BBus modules (serial modules and 1284
parallel port).
The Ethernet MAC uses external clocks from a MII PHY or a RMII PHY. For a MII PHY,
these clocks are input signals:
transmit clock. For a RMII, there is only one clock, and it connects to the
T3. In this case, the transmit clock,
PCI/CardBus, LCD controller, serial modules (UART, SPI), and 1284 port can optionally
use external clock signals.
14
max
to 1/2 f
. For a 200 MHz grade, then, the CPU may change from
max
rx_clk on pin T3 for receive clock and tx_clk on pin V3 for
tx_clk, should be tied low.
NS9750 Hardware Reference
rx_clk on pin
USB clock
Y1_PWR
**
**
Y1_OUT
**
TANK_LC
3R3V
C17
10pF
**
3412
X1
48.0000MHz
C16
100pF_5%
NS9750
L4
1uH_5%
TANK_RC
X2_USB_OSC
Y1
EC2600_TTS_48M
4
2
13
VCC
GND
TESTOUT
R7
68R1
NOTE: ** = OPTIONAL
Crystal circuit
C15
10pF
X1_IN
X1_USB_OSC
R81.5M
Tank Circuit
X1_USB
**
**
C9
100nF
R9
100 OHM
**
X2_USB
R6
100
TB1
BEAD_0805_601
**
X1 is a 48-MHz 3rd harmonic crystal. It has
the same physical characteristics as a 16
MHz crystal. The circuit may have a tendency
to oscillate at 16 MHz unless precautions are
taken. A LC-tank circuit is added to provide a
“low impedance” for the 16 MHz oscillation to
ground.
About NS9750
USB is clocked by a separate PLL driven by an external 48 MHz crystal, or it can be
driven directly by an external 48 MHz oscillator.
Figure 5: USB clock
www.digiembedded.com
15
NS9750 Pinout
CHAPTER 2
The NS9750 offers a connection to an external bus expansion module, as well as a
glueless connection to SDRAM, PC100 DIMM, flash, EEPROM, and SRAM memories, and
an external bus expansion module. It includes a versatile embedded LCD controller, a
PCI/CardBus port, a USB port, and four multi-function serial ports. The NS9750
provides up to 50 general purpose I/O (GPIO) pins and configurable power
management with sleep mode.
17
Pinout and signal descriptions
Pinout and signal descriptions
Each pinout table applies to a specific interface, and contains the following
information:
HeadingDescription
Pin #Pin number assignment for a specific I/O signal
SignalPin name for each I/O signal. Some signals have multiple funct ion modes and are
identified accordingly. The mode is configured through firmware using one or more
configuration registers.
_n in the signal name indicates that this signal is active low.
U/DU or D indicates whether the pin is a pullup resistor or a pulldown resistor:
U — Pullup (input current source)
D — Pulldown (input current sink)
If no value appears, that pin is neither a pullup nor pulldown resistor.
I/OThe type of signal: input, output, or input/output.
OD (mA)The output drive of an output buffer. NS9750 uses one of three drivers:
2 mA
4 mA
8 mA
More detailed signal descriptions are provided for selected modules.
System Memory interface
Pin #Signal NameU/D
A21addr[0]8OAddress bus signal
B20addr[1]8OAddress bus signal
C19addr[2]8OAddress bus signal
A20addr[3]8OAddress bus signal
B19addr[4]8OAddress bus signal
Table 3: System Memory interface pinout
18
NS9750 Hardware Reference
OD
(mA)I/ODescription
OD
Pin #Signal NameU/D
(mA)
I/ODescription
C18addr[5]8OAddress bus signal
A19addr[6]8OAddress bus signal
A17addr[7]8OAddress bus signal
C16addr[8]8OAddress bus signal
B16addr[9]8OAddress bus signal
A16addr[10]8OAddress bus signal
D15addr[11]8OAddress bus signal
C15addr[12]8OAddress bus signal
B15addr[13]8OAddress bus signal
A15addr[14]8OAddress bus signal
C14addr[15]8OAddress bus signal
B14addr[16]8OAddress bus signal
A14addr[17]8OAddress bus signal
NS9750 Pinout
A13addr[18]8OAddress bus signal
B13addr[19]8OAddress bus signal
C13addr[20]8OAddress bus signal
A12addr[21]8OAddress bus signal
B12addr[22]8OAddress bus signal
C12addr[23]8OAddress bus signal
D12addr[24]8OAddress bus signal
A11addr[25]8OAddress bus signal
B11addr[26]8OAddress bus signal
C11addr[27]8OAddress bus signal
G2clk_en[0]8OSDRAM clock enable
H3clk_en[1]8OSDRAM clock enable
G1clk_en[2]8OSDRAM clock enable
Table 3: System Memory interface pinout
www.digiembedded.com
19
Pinout and signal descriptions
Pin #Signal NameU/D
H2clk_en[3]8OSDRAM clock enable
A10clk_out[0]8OSDRAM reference clock. Connect to clk_in[0]
A9clk_out[1]8OSDRAM clock
A5clk_out[2]8OSDRAM clock
A4clk_out[3]8OSDRAM clock
G26data[0]8I/OData bus signal
H24data[1]8I/OData bus signal
G25data[2]8I/OData bus signal
F26data[3]8I/OData bus signal
G24data[4]8I/OData bus signal
F25data[5]8I/OData bus signal
E26data[6]8I/OData bus signal
OD
(mA)
I/ODescription
using series termination.
20
F24data[7]8I/OData bus signal
E25data[8]8I/OData bus signal
D26data[9]8I/OData bus signal
F23data[10]8I/OData bus signal
E24data[11]8I/OData bus signal
D25data[12]8I/OData bus signal
C26data[13]8I/OData bus signal
E23data[14]8I/OData bus signal
D24data[15]8I/OData bus signal
C25data[16]8I/OData bus signal
B26data[17]8I/OData bus signal
D22data[18]8I/OData bus signal
C23data[19]8I/OData bus signal
B24data[20]8I/OData bus signal
Table 3: System Memory interface pinout
NS9750 Hardware Reference
OD
Pin #Signal NameU/D
(mA)
I/ODescription
A25data[21]8I/OData bus signal
C22data[22]8I/OData bus signal
D21data[23]8I/OData bus signal
B23data[24]8I/OData bus signal
A24data[25]8I/OData bus signal
A23data[26]8I/OData bus signal
B22data[27]8I/OData bus signal
C21data[28]8I/OData bus signal
A22data[29]8I/OData bus signal
B21data[30]8I/OData bus signal
C20data[31]8I/OData bus signal
E1data_mask[0]8OSDRAM data mask signal
F2data_mask[1]8OSDRAM data mask signal
NS9750 Pinout
G3data_mask[2]8OSDRAM data mask signal
F1data_mask[3]8OSDRAM data mask signal
C5clk_in[0]ISDRAM feedback clock. Connect to clk_out[0].
D2clk_in[1]IConnect to GND
E3clk_in[2]IConnect to GND
E2clk_in[3]IConnect to GND
B4byte_lane_sel_n[0]8OStatic memory byte_lane_enable[0] or
write_enable_n[0] for byte-wide device signals
F4byte_lane_sel_n[1]8OStatic memory byte_lane_enable[1] or
write_enable_n[1] for byte-wide device signals
D1byte_lane_sel_n[2]8OStatic memory byte_lane_enable[2] or
write_enable_n[2] for byte-wide device signals
F3byte_lane_sel_n[3]8OStatic memory byte_lane_enable[3] or
write_enable_n[3] for byte-wide device signals
B5cas_n8OSDRAM column address strobe
Table 3: System Memory interface pinout
www.digiembedded.com
21
Pinout and signal descriptions
Pin #Signal NameU/D
A8dy_cs_n[0]8OSDRAM chip select signal
B8dy_cs_n[1]8OSDRAM chip select signal
A6dy_cs_n[2]8OSDRAM chip select signal
C7dy_cs_n[3]8OSDRAM chip select signal
C6st_oe_n8OStatic memory output enable
D6ras_n8OSDRAM row address strobe
H1dy_pwr_n8OSyncFlash power down
B10st_cs_n[0]8OStatic memory chip select signal
C10st_cs_n[1]8OStatic memory chip select signal
B9st_cs_n[2]8OStatic memory chip select signal
C9st_cs_n[3]8OStatic memory chip select signal
B6we_n8OSDRAM write enable. Used for static and
OD
(mA)
I/ODescription
SDRAM devices.
J3ta_strbUISlow peripheral transfer acknowledge
Table 3: System Memory interface pinout
System Memory interface signals
Table 4 describes System Memory interface signals in more detail. All signals are
internal to the chip.
NameI/ODescription
addr[27:0]OAddress output. Used for both static and SDRAM devices. SDRAM
Table 4: System Memory interface signal descriptions
22
NS9750 Hardware Reference
memories use bits [14:0]; static memories use bits [25:0].
NS9750 Pinout
NameI/ODescription
clk_en[3:0]OSDRAM clock enable. Used for SDRAM devices.
Note:The clk_en signals are associated with the dy_cs_n signals.
Connect SDRAM clock enables directly to a 3.3V or pullup resistor to
avoid an SDRAM lockup condition during a manual or brownout
condition reset.
As an alternative, you can use an analog switch to connect the clock
enables to the SDRAM devices to a pullup resistor until the NS9750 device
reset is complete, as indicated by a high level on the reset_done output. See
the sample circuit shown in Figure 7, "NS9750 clock enable
configuration," on page 25.
clk_out[3:1]OSDRAM clocks. Used for SDRAM devices.
clk_out[0]OSDRAM clk_out[0] is connected to clk_in[0].
data[31:0]I/ORead data from memory. Used for the static memory controller and the
dynamic memory controller.
data_mask[3:0]OData mask output to SDRAMs. Used for SDRAM devices.
clk_in[3:1]IFeedback clocks. Used for SDRAM devices.
clk_in[0]IFeedback clock [0]. Always connects to clk_out[0].
byte_lane_sel_n[3:0]OStatic memory byte_lane_select, active low, or write_enable_n for byte-
wide devices.
cas_nOColumn address strobe. Used for SDRAM devices.
dy_cs_n[3:0]OSDRAM chip selects. Used for SDRAM devices.
st_oe_nOOutput enable for static memories. Used for static memory devices.
ras_nORow address strobe. Used for SDRAM devices.
st_cs_n[3:0]OStatic memory chip selects. Default active low. Used for static memory
devices.
we_nOWrite enable. Used for SDRAM and static memories.
ta_strbISlow peripheral transfer acknowledge can be used to terminate static
memory cycles sooner than the number of wait states programmed in the
chip select setup register.
Table 4: System Memory interface signal descriptions
www.digiembedded.com
23
Pinout and signal descriptions
C3
clk_in[0]
clk_out[0]
C4
Always GND
Always GND
NS9750
clk_in[1]
Unused clk_out's are
terminated only
All series termination resistors
must be placed close to driver
Always connect clk_out [0]
to clk_in[0] using series
termination. Must not
drive any SDRAM loads.
Data in from SDRAMs is
sampled on the rising
edge of this clock.
Always GND
clk_in[2]
clk_out[3]
Address. Data, & Commands
are sampled by SDRAMs on
the rising edge of these
clocks.
clk_out[2]
CLK_IN[0]
SDRAM Bank B
SDRAM Banks have AC
Termination placed
at end of traces
clk_in[3]
SDRAM Bank A
UNUSED_CLK
clk_out[1]
SDRAM_CLK[3]
R3
R1
SDRAM_CLK[2]
This trace can be a loop 2 to 3 inches in length.
Read Data clock will be delayed 180pS/per inch.
Figure 6 shows NS9750 SDRAM clock termination.
24
Figure 6: SDRAM clock termination
NS9750 Hardware Reference
Figure 7: NS9750 clock enable configuration
3.3V
reset_done
clk_en[n]
SDRAMNS9750
0 = B0 TO A
NC7SB3157
U1
4
3
1
2
5
6
A
B0
B1
GND
V+
S
2.4K
ohm
CKE
3.3V
Ethernet interface
NS9750 Pinout
Signal name
Pin #
U/D
OD
(mA)I/O
Description
MIIRMIIMIIRMII
AB1colN/CICollisionPull low external to
NS9750
AA2crscrs_dvICarrier senseCarrier sense
AC1enet_phy_i
nt_n
AA3mdcmdc4OMII management
enet_phy_i
nt_n
UIEthernet PHY
interrupt
interface clock
Ethernet PHY
interrupt
MII management
interface clock
AB2mdiomdioU2I/OMII management dataMII management data
T3rx_clkref_clkIReceive clockReference clock
V2rx_dvN/CIReceive data validPull low external to
used
V1rxd[0]rxd[0]IReceive data bit 0Receive data bit 0
Table 5: Ethernet interface pinout
www.digiembedded.com
25
Pinout and signal descriptions
Signal name
Pin #
U3rxd[1]rxd[1]IReceive data bit 1Receive data bit 1
U2rxd[2]N/CIReceive data bit 2Pull low external to
U1rxd[3]N/CIReceive data bit 3Pull low external to
V3tx_clkN/CITransmit clockPull low external to
AA1tx_entx_en2OTransmit enableTransmit enable
Y3tx_erN/C2OTransmit errorN/A
Y2txd[0]txd[0]2OTransmit data bit 0Transmit data bit 0
W3txd[1]txd[1]2OTransmit data bit 1Transmit data bit 1
Y1txd[2]N/C2OTransmit data bit 2N/A
W2txd[3]N/C2OTransmit data bit 3N/A
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OPCI time-multiplexed address/data bus
N/AI/OCommand/byte enable
N/AI/OCommand/byte enable
N/AI/OCommand/byte enable
N/AI/OCommand/byte enable
N/AI/ODevice select
N/AI/OCycle frame
is determined by the PCI device number
assigned to the NS9750.
For CardBus applications, connect to the
external pullup resistor.
Do not allow input to float in any
application.
N/AI/OInitiator ready
N/AI/OParity signal
N/AI/OParity error
N/AI/OSystem error
pci_central_resource_n = 0
Input:
Output: pci_central_resource_n = 1
N/AI/OStop signal
N/AI/OTarget ready
6
6
6
2
2
2
N/AOPCI channel 1 grant
N/AOPCI channel 2 grant
N/AOPCI channel 3 grant
N/AIPCI channel 1 request
N/AIPCI channel 2 request
N/AIPCI channel 3 request
30
AF23
AF25pci_int_a_n
AF24pci_int_b_n
AE23pci_int_c_n
pci_central_resource_n
2
2
2
Table 8: PCI interface pinout
NS9750 Hardware Reference
DN/AIPCI internal central resource enable
N/AI/OPCI interrupt request A, output if external
central resource used
N/AI/OPCI interrupt request B, CCLKRUN# for
CardBus applications
N/AIPCI interrupt request C
NS9750 Pinout
OD
Pin #Signal nameU/D
AD22pci_int_d_n
AE26pci_reset_n
2
3
(mA)
N/AIPCI interrupt request D
N/AI/OPCI reset, output if internal central resource
I/ODescription
enabled
AB24pci_clk_inUN/AIPCI clock in. (Connected to pci_clk_out or an
externally generated PCI reference clock.)
AA23pci_clk_outN/AOPCI clock out
Table 8: PCI interface pinout
PCI/CardBus signals
Most of the CardBus signals are the same as the PCI signals. Other CardBus signals are
unique and multiplexed with PCI signals for the NS9750. Table 9 shows these unique
signals. Figure 8 illustrates how to terminate an unused PCI.
PCI signalCardBus signalCardBus typeDescription
INTA#CINT#
4
InputCardBus interrupt pin. The INTA2PCI pin in the
PCI Miscellaneous Support register must be set
to 0.
INTB#CCLKRUN#
4
BidirCardBus pin used to negotiate with the external
CardBus device before stopping the clock.
Allows external CardBus device to request that
the clock be restarted.
INTC#CSTSCHG
GNT1#CGNT#
4
5
InputCardBus status change interrupt signal.
OutputGrant to external CardBus device from
NS9750’s internal arbiter.
Table 9: CardBus IO multiplexed signals
www.digiembedded.com
31
Pinout and signal descriptions
PCI signalCardBus signalCardBus typeDescription
GNT2#CVS1OutputVoltage sense pin. Normally driven low by
GNT3#CVS2OutputVoltage sense pin. Normally driven low by
REQ1#CREQ#
REQ2#CCD1
REQ3#CCD2
4
4
NS9750, but toggled during the interrogation of
the external CardBus device to find voltage
requirements.
Note:Do not connect directly to the
CardBus connector. See the diagram
"CardBus system connections to
NS9750" on page 462 for a suggested
connection scheme.
NS9750, but toggled during the interrogation of
the external CardBus device to find voltage
requirements.
4
InputRequest from external CardBus device to
NS9750’s internal arbiter.
InputCard detect pin. Pulled up when the socket is
empty and pulled low when the external
CardBus device is in the socket.
InputCard detect pin. Pulled up when the socket is
empty and pulled low when the external
CardBus device is in the socket.
32
Table 9: CardBus IO multiplexed signals
Notes:
1Add external pulldown resistor only if the PCI interface is not being used. See the discussion of PCI
bridge configuration in Sample Driver Configurations for information about eliminating the pulldown
resistor.
2Add external pullup resistors regardless of whether the PCI interface is being used.
3Add external pullup resistor only if the PCI interface is not being used.
4Add external pullup resistor in CardBus mode.
5Add external pulldown resistor in CardBus mode.
6Add external pullup only if the PCI interface is being used and this signal is also being used.
INTA* in if rsc_in =0
INTB* in if PCI mode
INTC* in
INTD* in
RESET*
CLKIN pulled up CLKOUT
PERR*
PAR
SERR* in if rsc_in =0
STOP*
RSC_IN* pulled down
R1
47-56
R3 10K
Notes:
1. Startup code needs to put the PCI bridge
into reset.
2. PCI Mode: Boot_strap[1].N3 = default; no
pulldown.
3. NS9750 is current PCI bus master.
Signals that it can drive should have
individual pullups.
TRDY-
R5 10K
PCI_VB
Figure 8: NS9750 unused PCI termination
www.digiembedded.com
33
Pinout and signal descriptions
GPIO MUX
The BBus utility contains the control pins for each GPIO MUX bit. Each pin
can be selected individually; that is, you can select any option (00, 01, 02,
03) for any pin, by setting the appropriate bit in the appropriate register.
Some signals are muxed to two different GPIO pins, to maximize the number
of possible applications. These duplicate signals are marked as such in the
Descriptions column in the table. Selecting the primary GPIO pin and the
duplicate GPIO pin for the same function is not recommended. If both the
primary GPIO pin and the duplicate GPIO pin are programmed for the same
function, however, the primary GPIO pin has precedence and will be used.
The 00 option for the serial ports (B, A, C, and D) is configured for UAR T and
SPI mode, respectively; that is, the UART option is shown first, followed by
the SPI option if there is one. If only one value appears, it is the UART
value. SPI options all begin with SPI.
Signal
Pin #
AF19gpio[0]
AE18gpio[1]U2I/O00Ser port B RxData / SPI port B din
1This pin is used for bootstrap initialization (see Table 168, “Configuration pins — Bootstrap
initialization,” on page 273). Note that the GPIO pins used as bootstrap pins have a defined
powerup state that is required for the appropriate NS9750 configuration. If these GPIO pins are
also used to control external devices (for example, power switch enable), the powerup state for the
external device should be compatible with the boostrap state. If the powerup state is not
compatible with the bootstrap state, either select a different GPIO pin to control the external
device or add additional circuitry to reach the proper powerup state to the external device.
Table 10: GPIO MUX pinout
NS9750 Hardware Reference
NS9750 Pinout
O
USB Power
Controller
2.4K
NS97xx
INV
GPIO[xy]
Rpull-up
RC filte r = 50 0u S
Cfilter
Rfilter
NAND2
ENABLE_n
OVERCUR_n
3.3V
This circuit is required to prevent USB
power being enabled before code has set
GPIO[17] to mode 00. Pulling down
GPIO[17] effects CPU speed.
USB_PWR,
GPIO[ 17],
BOOTST_ND4
USB_OVR
GPIO[16]
O
Pin #
Signal
name
U/D
OD
(mA)
I/ODescription (4 options: 00, 01, 02, 03)
2gpio[17] is used as both a bootstrap input pin for PLL_ND and an output that controls a power switch for
USB Host power. If the power switch needs to powerup in the inactive state, the enable to the power
switch must be the same value as the bootstrap value for PLL_ND; for example, if PLL_ND requires
high on gpio[17], a high true power switch must be selected. gpio[16] is used for USB_OVR and should
have a noise filter to prevent false indications of overcurrent, unless the USB power IC has this filter
built in. See "Example: Implementing gpio[16] and gpio[17]" on page 41 for an illustration.
3The nFault signal GPIO6 or GPIO16 can be used as a code-controlled direction pin for the transceiver.
The polarity cannot be altered inside the NS9750; an inverter will be required.
Table 10: GPIO MUX pinout
Example: Implementing gpio[16] and gpio[17]
www.digiembedded.com
41
Pinout and signal descriptions
LCD module signals
The LCD module signals are multiplexed with GPIO pins. They include seven control
signals and up to 24 data signals. Table 11 describes the control signals.
CLCPOutputLCD panel clock
CLFPOutputFrame pulse (STN) / vertical synchronization pulse (TFT)
CLACOutputSTN AC bias drive or TFT data enable output
CLD[23:0]OutputLCD panel data
CLLEOutputLine end signal
Table 11: LCD module signal descriptions
The CLD[23:0] signal has eight modes o f operation:
(TFT)
42
TFT 24-bit interface 4-bit mono STN single panel
TFT 18-bit interface 4-bit mono STN dual panel
Color STN single panel 8-bit mono STN single panel
Color STN dual panel 8-bit mono STN dual panel
See the discussion of LCD panel signal multiplexing details for information about the
CLD signals used with STN and TFT displays.
NS9750 Hardware Reference
I2C interface
Table 12: I2C interface pinout
USB interface
Notes:
If not using the USB interface, these pins should be pulled down to ground
All out put drivers for USB meet the standard USB driver specification.
NS9750 Pinout
OD
BitsSignal nameU/D
AC15iic_scl4I/OI
AF16iic_sda4I/OI2C serial data line. Add a 10K resistor to
(mA)I/ODescription
2
C serial clock line. Add a 10K resistor to
VDDA(3.3V) if not used.
VDDA(3.3V) if not used.
through a 15K ohm resistor.
OD
BitsSignal nameU/D
AB4usb_dmI/OUSB data AC3usb_dpI/OUSB data +
(mA)
Table 13: USB interface pinout
JTAG interface for ARM core/boundary scan
Note:
BitsSignal nameU/D
AE20tckITest clock
AD18tdiUITest data in
Table 14: JTAG interface/boundary scan pinout
trst_n must be pulsed low to initialize JTAG when a debugger is not
attached. See Figure 9, "JTAG interface," on page 44.
OD
(mA)I/ODescription
I/ODescription
www.digiembedded.com
43
Pinout and signal descriptions
TRSTn
R15 0
**
**
R4
33
R13
10K
PD_PIN19
TCK
**
3.3V
3.3V
RTCK
##
TDI
U2
NC7SZ08_SOT23
1
2
3
5
4
A
B
GND
VCC
Y
RSTn
JSRST
R9 2.4K
##
R7 10K
RESET monitor
Trip = 2.97V
R14
10K
JP1
R10 2.4K
R3
1.0K
##
JTDO
C3
.1
R2
10K
R16
0
R12
2.4K
JTAG 20
PIN
HEADER..
##
R5
33
TMS
3.3V
PD_PIN17
P1
HEADER 10X2.1SP
12
34
56
78
910
1112
1314
1516
1718
1920
R17
2.4K
SW1
SW_PB
SYSTEM CONTROL
JTAG
NS9750_BGA352
H25AC21
AE20
AD18
AC18
AE19
AF20AD19
AF21
AD20
AE21
RESET*RESET_DONE
TCK
TDI
TMS
TDO
TRST*RTCK
PLLTEST*
BISTEN*
SCANEN*
R6 10K
Should be
positioned on
PCB with pin 1
facing toward
board edge.
R8
2.4K
3.3V
RESETn
RESETn
JRTCK
U3
MAX811S_SOT143
1
2
4
3
GND
RST
+V
MR
**
R11 0
##
MRn
**
nTRST
TDO
**
C1
.001
R1
2.4K
JP1 recommended
instead of R9
during development
3.3V
phase,
NS9750
Notes
R8
out: Boot from flash/ROM/S_CS1n
in: Boot from SDRAM/CS0n using SPI_B
EEPROM on GPIO pins
R12
out: Internal PCI arbiter
in: External PCI arbiter bus
Debug
Load all except JP1/R9, R15, R16; R8 and R12
depend on board options
Disable blank or unprogrammed boot memory
Production with debug possibility
Omit parts with **
Production without debug possibility
Omit parts with ** and ##, as well as parts with **
When halting the CPU in debug mode, the
JSRST line must be pulsed low only one time.
BitsSignal nameU/D
AE19tdo2OTest data out
AC18tmsUITest mode select
AF20trst_nUITest mode reset
AD19rtckU2I/OReturned test clock, ARM core only
Table 14: JTAG interface/boundary scan pinout
OD
(mA)
I/ODescription
44
Figure 9: JTAG interface
NS9750 Hardware Reference
Reserved
NS9750 Pinout
Pin#Description
J1Tie to ground directly
K3Tie to ground directly
K2Tie to ground directly
K1Tie to ground directly
R1Tie to ground directly
R2Tie to ground directly
R3Tie to ground directly
T1Tie to ground directly
AF6Tie to ground directly
AE3Tie to ground directly
AC5Tie to ground directly
AD4Tie to 1.5V core power
AF2Tie to 3.3V I/O power
AE7No connect
L3No connect
L2No connect
L1No connect
M3No connect
M2Tie to ground directly
M1Tie to ground directly
N1Tie to ground directly
N2Tie to ground directly
AF22No connect
AD21No connect
AE22No connect
The NS9750 core is based on the ARM926EJ-S processor. The ARM926EJ-S processor
belongs to the ARM9 family of general-purpose microprocessors. The ARM926EJ-S
processor is targeted at multi-tasking applications in which full memory
management, high performance, low die size, and low power are important.
47
About the processor
About the processor
The ARM926EJ-S processor supports the 32-bit ARM and 16-bit Thumb instructions
sets, allowing you to trade off between high performance and high code density. The
processor includes features for efficient execution of Java byte codes, providing Java
performance similar to JIT but without the assoc iated overhead.
The ARM926EJ-S supports the ARM debug architecture, and includes logic to assist in
both hardware and software debug. The processor has a Harvard-cached architecture
and provides a complete high-performance processor subsystem, including:
ARM926EJ-S integer core
Memory Management Unit (MMU) (see "Memory Management Unit (MMU),"
beginning on page 78, for information)
Separate instruction and data AMBA AHB bus interfaces
48
NS9750 Hardware Reference
Figure 10 shows the main blocks in the ARM926EJ-S processor.
DEXT
Write buffer
DCACHE
Cache
PA
TAGRAM
writeback
write
buffer
MMU
TLB
ARM926EJ-S
IROUTE
DROUTE
FCSE
WDATA RDATA
INSTR
ICACHE
IEXT
Bus
interface
unit
Data
AHB
interface
Instruction
AHB
interface
AHB
AHB
DA
IA
DMVA
IMVA
Working with the CPU
Figure 10: ARM926EJ-S processor block diagram
Instruction sets
The processor executes three instruction sets:
32-bit ARM instruction set
16-bit Thumb instruction set
8-bit Java instruction set
www.digiembedded.com
49
Instruction sets
ARM instruction set
The ARM instruction set allows a program to achieve maximum performance with the
minimum number of instructions. The majority of instructions are executed in a
single cycle.
Thumb instruction set
The Thumb instruction set is simpler than the ARM instruction set, and offers
increased code density for code that does not require maximum performance. Code
can switch between ARM and Thumb instruction sets on any procedure call.
Java instruction set
In Java state, the processor core executes a majority of Java bytecodes naturally.
Bytecodes are decoded in two states, compared to a single decode stage when in
ARM/Thumb mode. See "Jazelle (Java)" on page 77 for more information about Java.
50
NS9750 Hardware Reference
System control processor (CP15) registers
The system control processor (CP15) registers configure and control most of the
options in the ARM926EJ-S processor. Access the CP15 registers using only the MRC
and MCR instructions in a privileged mode; the instructions are provided in the
explanation of each applicable register. Using other instructions, or MRC and MCR in
unprivileged mode, results in an UNDEFINED instruction exception.
ARM926EJ-S system addresses
The ARM926EJ-S has three distinct types of addresses:
In the ARM926EJ-S domain: Virtual address (VA)
In the Cache and MMU domain: Modified virtual address (MVA)
In the AMBA domain: Physical address (PA)
Example
Working with the CPU
This is an example of the address manipulation that occurs when the ARM926EJ-S
core requests an instruction:
1The ARM926EJ-S core issues the virtual address of the instruction.
2The virtual address is translated using the FCSE PID (fast context switch
extension process ID) value to the modified virtual address. The instruction
cache (ICache) and memory management unit (MMU) find the modified virtual
address (see "R13: Process ID register" on page 75).
3If the protection check carried out by the MMU on the modified virtual address
does not abort and the modified virtual address tag is in the ICache, the
instruction data is returned to the ARM926EJ-S core.
If the protection check carried out by the MMU on the modified virtual
address does not abort but the cache misses (the MVA tag is not in the
cache), the MMU translates the modified virtual address to produce the
physical address. This address is given to the AMBA bus interface to perform
an external access.
If you try to read from a write-only register or write to a read-only register, you will
UNPREDICTABLE results. In all instructions that access CP15:
have
The opcode_1 field SHOULD BE ZER O, except when the values specified are used
to select the operations you want. Using other values results in
unpredictable behavior.
The opcode_2 and CRm fields SHOULD BE ZERO, except when the values
specified are used to select the behavior you want. Using other values
results in unpredictable behavior.
Terms and abbreviations
Table 17 lists the terms and abbreviations used in the CP15 registers and
explanations.
TermAbbreviationDescription
UNPREDICTABLEUNPFor reads:
Table 17: CP15 terms and abbreviations
52
NS9750 Hardware Reference
The data returned when reading from this location is
unpredictable, and can have any value.
For writes:
Writing to this location causes unpredictable
behavior, or an unpredictable change in device
configuration.
Working with the CPU
TermAbbreviationDescription
UNDEFINEDUNDAn instruction that accesses CP15 in the manner
indicated takes the UNDEFINED instruction exception.
SHOULD BE ZEROSBZWhen writing to this field, all bits of the field SHOULD
BE ZERO
SHOULD BE ONESBOWhen writing to this location, all bits in this field
SHOULD BE ONE.
.
SHOULD BE ZERO or
PRESERVED
Table 17: CP15 terms and abbreviations
Note:
Register summary
CP15 uses 16 registers.
Register locations 0, 5, and 13 each provide access to more than one
register. The register accessed depends on the value of the
the CP15
Register location 9 provides access to more than one register. The register
accessed depends on the value of the
registers" on page 52).
SBZPWhen writing to this location, all bits of this field
SHOULD BE ZERO or PRESERVED by writing the
same value that has been read previously from the
same field.
In all cases, reading from or writing any data values to any CP15 registers,
including those fields specified as
SHOULD BE ZERO, does not cause any physical damage to the chip.
MRC/MCR instructions (see "Accessing CP15 registers" on page 52).
UNPREDICTABLE, SHOULD BE ONE, or
opcode_2 field in
CRm field (see "Accessing CP15
RegisterReadsWrites
0ID code (based on
0Cache type (based on opcode_2 value)Unpredictable
1Control Control
2Translation table baseTranslation table base
3Domain access controlDomain access control
opcode_2 value)Unpredictable
Table 18: CP15 register summary
www.digiembedded.com
53
System control processor (CP15) registers
RegisterReadsWrites
4ReservedReserved
5Data fault status (based on opcode_2 value)Data fault status (based on opcode_2 value)
6Instruction fault status (based on opcode_2
value)
Instruction fault status (based on opcode_2
value)
7Cache operationsCache operations
8UnpredictableTLB
9Cache lockdown (based on
CRm value)Cache lockdown
10TLB lockdownTLB lockdown
11 and 12ReservedReserved
13FCSE PID (based on
FCSE = Fast context switch extension
PID = Process identifier
13Context ID (based on
opcode_2 value)
FCSE PID (based on
opcode_2 value)
FCSE = Fast context switch extension
PID = Process identifier
opcode_2 value)Context ID (based on opcode_2 value)
All CP15 register bits that are defined and contain state are set to 0 by reset, with
these exceptions:
The V bit is set to 0 at reset if the VINITHI signal is low, and set to 1 if the
VINITHI signal is high.
54
The B bit is set to 0 at reset if the BIGENDINIT signal is low, and set to 1 if the
BIGENDINIT signal is high.
NS9750 Hardware Reference
R0: ID code and cache type status registers
Register R0 access the ID register, and cache type register. Reading from R0 returns
the device ID, and the cache type, depending on the
opcode_2=0ID value
opcode_2=1instruction and data cache type
The
CRm field SHOULD BE ZERO when reading from these registers. Table 19 shows the
instructions you can use to read register R0.
FunctionInstruction
Working with the CPU
opcode_2 value:
Read ID code
Read cache type
MRC p15,0,Rd,c0,c0,{0, 3-7}
MRC p15,0,Rd,c0,c0,1
Table 19: Reading from register R0
Writing to register R0 is
UNPREDICTABLE.
R0: ID code
R0: ID code is a read-only register that returns the 32-bit device ID code. You can
access the ID code register by reading CP15 register R0 with the
opcode_2 field set to
any value other than 1 or 2. Note this example:
MRC p15, 0, Rd, c0, c0, {0, 3-7}; returns ID
Table 20 shows the contents of the ID code register.
BitsFunctionValue
[31:24]ASCII code of implementer trademark0x41
[23:20]Specification revision0x0
[19:16]Architecture (ARMv5TEJ)0x6
[15:4]Part number 0x926
[3:0]Layout revision0x0
Table 20: R0: ID code
www.digiembedded.com
55
System control processor (CP15) registers
Ctype
0S
Dsize
312825 24 2312
00
Isize
R0: Cache type register
R0: Cache type is a read-only register that contains information about the size and
architecture of the instruction cache (ICache) and data cache (DCache) enabling
operating systems to establish how to perform operations such as cache cleaning and
lockdown. See "Cache features" on page 105 for more information about cache.
You can access the cache type register by reading CP1 5 register R0 with the
opcode_2
field set to 1. Note this example:
MRC p15, 0, Rd, c0, c0, 1; returns cache details
Figure 12 shows the format of the cache type register. Table 21 describes the fields in
the register.
Figure 12: Cache type register format
FieldDescription
CtypeDetermines the cache type, and specifies whether the cache supports lockdown and how it is
cleaned. Ctype encoding is shown below; all unused values are reserved.
Value: 0b1110
Method: Writeback
Cache cleaning: Register 7 operations (see "R7: Cache Operations register" on page 64)
Cache lockdown: Format C (see "R9: Cache Lockdown register" on page 69)
S bitSpecifies whether the cache is a unified cache (S=0) or separate ICache and DCache (S=1).
Will always report separate ICache and DCache for NS9750.
DsizeSpecifies the size, line length, and associativity of the DCache.
IsizeSpecies the size, length and associativity of the ICache.
Table 21: Cache type register field definition
56
NS9750 Hardware Reference
Working with the CPU
11 10 96 53 2 10
00 SizeMAssocLen
Dsize and Isize fields
The Dsize and Isize fields in the cache type register have the same format, as shown:
The field contains these bits:
FieldDescription
SizeDetermines the cache size in conjunction with the M bit.
The M bit is 0 for DCache and ICache.
The size field is bits [21:18] for the DCache and bits [9:6] for the ICache.
The minimum size of each cache is 4 KB; the maximum size is 128 KB.
Cache size encoding with M=0:
Size fieldCache size
0b00114 KB
0b01008 KB
Note:The NS9750 always reports 4KB for DCache and 8KB for ICache.
AssocDetermines the cache associativity in conjunction with the M bit.
The M bit is 0 for both DCache and ICache.
The assoc field is bits [17:15 for the DCache and bits [5:3] for the ICache.
Cache associativity with encoding:
Assoc fieldAssociativity
0b0104-way
Other valuesReserved
M bitMultiplie r bit. Determines the cache size and cache associativity values in conjunction with the
size and assoc fields.
Note:This field must be set to 0 for the ARM926EJ-S processor.
LenDetermines the line length of the cache.
The len field is bits [13:12] for the DCache and bits [1:0] for the ICache.
Line length encoding:
Len fieldCache line length
108 words (32 bytes)
Other valuesReserved
www.digiembedded.com
57
System control processor (CP15) registers
1311916 1512 11 10 9 8 730218 1714 136
S
B
Z
SBZ
S
B
O
S
B
O
L4R
R
VI
SBZ
RSB
SBO
CAM
R1: Control register
Register R1 is the control register for the ARM926EJ-S processor. This register
specifies the configuration used to enable and disable the caches and MMU (memory
management unit). It is recommended that you access this register using a readmodify-write sequence.
The M, C, I, and RR bits directly affect ICache and DCache behavior, as shown:
CacheMMUBehavior
ICache disabledEnabled or disabledAll instruction fetches are from external memory (AHB).
ICache enabledDisabledAll instruction fetches are cachable, with no protection
ICache enabledEnabledInstruction fetches are cachable or noncachable, and
0Disabled
1Enabled
checking. All addresses are flat-mapped; that is:
VA=MVA=PA.
protection checks are performed. All addresses are
remapped from VA to PA, depending on the MMU page
table entry; that is, VA translated to MVA, MVA
remapped to PA.
60
DCache disabledEnabled or disabledAll data accesses are to external memory (AHB).
DCache enabledDisabledAll data accesses are noncachable nonbufferable. All
addresses are flat-mapped; that is, VA=MVA=PA.
DCache enabledEnabledAll data accesses are cachable or noncachable, and
protection checks are performed. All addresses are
remapped from VA to PA, depending on the MMU page
table entry; that is, VA translated to MVA, MVA
remapped to PA.
Table 23: Effects of Control register on caches
If either the DCache or ICache is disabled, the contents of that cache are not
accessed. If the cache subsequently is re-enabled, the contents will not have
changed. To guarantee that memory coherency is maintained, the DCache must be
cleaned of dirty data before it is disabled.
The CRm and opcode_2 fields SHOULD BE ZERO when writing to R2.
Figure 14 shows the format of the Translation Table Base register.
Figure 14: R2: Translation Table Base register
Working with the CPU
UNPREDICTABLE value in bits [13:0].
SHOULD BE ZERO.
R3: Domain Access Control register
Register R3 is the Domain Access Control register and consists of 16 two-bit fields, as
shown in Figure 15.
Figure 15: R3: Domain Access Control register
Reading from R3 returns the value of the Domain Access Control register.
Writing to R3 writes the value of the Domain Access Control register.
www.digiembedded.com
61
System control processor (CP15) registers
Each two-bit field defines the access permissions for one of the 16 domains (D15–D0):
00No access: Any access generates a domain fault
01Client: Accesses are checked against the access permission bits in the section or page descriptor
10Reserved: Currently behaves like no access mode (00)
11Manager: Accesses are not checked against the access permission bits, so a permission fault
cannot be generated.
Use these instructions to access the Domain Access Control register:
Accessing (reading or writing) this register causes UNPREDICTABLE behavior.
R5: Fault Status registers
Register R5 accesses the Fault Status registers (FSRs). The Fault Status registers
contain the source of the last instruction or data fault. The instruction-side FSR is
intended for debug purposes only.
62
The FSR is updated for alignment faults and for external aborts that occur while the
MMU is disabled. The FSR accessed is determined by the
opcode_2=0Data Fault Status register (DFSR)
opcode_2=1Instruction Fault Status register (IFSR)
opcode_2 value:
See "Memory Management Unit (MMU)," beginning on page 78, for the fault type
encoding.
Figure 16 shows the format of the Fault Status registers. Table 24 describes the Fault
Status register bits.
Figure 16: Fault Status registers format
BitsDescription
[31:9]
UNPREDICTABLE/SHOULD BE ZERO
[8]Always reads as zero. Writes are ignored.
[7:4]Specifies which of the 16 domains (D15–D0) was being accessed when a data
fault occurred.
[3:0]Type of fault generated. (See "Memory Management Unit (MMU)," beginning
on page 78.)
Table 24: Fault Status register bit description
Table 25 shows the encodings used for the status field in the Fault Status register, and
indicates whether the domain field contains valid information. See "MMU faults and
CPU aborts" on page 95 for information about MMU aborts in Fault Address and Fault
Status registers.
PrioritySourceSizeStatusDomain
HighestAlignmentN/A
External abort on translationFirst level
Second level
TranslationSection page
0b00x1
0b1100
0b1110
0b0101
0b0111
Invalid
Invalid
Valid
Invalid
Valid
DomainSection page
PermissionSection page
Table 25: Fault Status register status field encoding
www.digiembedded.com
0b1001
0b1011
0b1101
0b1111
Valid
Valid
Valid
Valid
63
System control processor (CP15) registers
PrioritySourceSizeStatusDomain
LowestExternal abortSection page
Table 25: Fault Status register status field encoding
R6: Fault Address register
Register R6 accesses the Fault Address register (FAR). The Fault Address register
contains the modified virtual address of the access attempted when a data abort
occurred. This register is updated only for data aborts, not for prefetch aborts; it is
updated also for alignment faults and external aborts that occur while the MMU is
disabled.
Use these instructions to access the Fault Address register:
MRC p15, 0, Rd, c6, c0, 0 ; read FAR
MCR p15, 0, Rd, c6, c0, 0 ; write FAR
Writing R6 sets the Fault Address register to the value of the data written. This is
useful for debugging, to restore the value of a Fault Address register to a previous
state.
CRm and opcode_2 fields SHOULD BE ZERO when reading or writing R6.
The
0b1000
0b1010
Valid
Valid
R7: Cache Operations register
Register R7 controls the caches and write buffer. The function of each cache
operation is selected by the
to CP15 R7. Writing other
Reading from R7 is UNPREDICTABLE, with the exception of the two test and clean
operations (see Table 27, “R7: Cache operations,” on page 66 and "Test and clean
operations" on page 67).
Use this instruction to write to the Cache Operations register:
MCR p15, opcode_1, Rd, CRn, CRm, opcode_2
Table 26 describes the cache functions provided by register R7. Table 27 lists the
cache operation functions and associated data and instruction formats for R7.
64
NS9750 Hardware Reference
opcode_2 and CRm fields in the MCR instruction that writes
opcode_2 or CRm values is UNPREDICTABLE.
Working with the CPU
FunctionDescription
Invalidate cacheInvalidates all cache data, including any dirty data.
Invalidate single entry using either index or
Invalidates a single cache line, discarding any dirty data.
modified virtual address
Clean single data entry using either index or
modified virtual address
Writes the specified DCache line to main memory if the
line is marked valid and dirty. The line is marked as not
dirty, and the valid bit is unchanged.
Clean and invalidate single data entry using
wither index or modified virtual address.
Writes the specified DCache line to main memory if the
line is marked valid and dirty. The line is marked not valid.
Test and clean DCacheTests a number of cache lines, and cleans one of them if any
are dirty. Returns the overall dirty state of the cache in bit
30. (See "Test and clean operations" on page 67).
Test, clean, and invalidate DCacheTests a number of cache lines, and cleans one of them if any
are dirty. When the entire cache has been tested and
cleaned, it is invalidated. (See "Test and clean operations"
on page 67).
Prefetch ICache linePerforms an ICache lookup of the specified modified
virtual address. If the cache misses and the region is
cachable, a linefill is performed.
Drain write bufferActs as an explicit memory barrier. This instruction drains
the contents of the write buffers of all memory stores
occurring in program order before the instruction is
completed. No instructions occurring in program order
after this instruction are executed until the instruction
completes.
Use this instruction when timing of specific stores to the
level two memory system has to be controlled (for
example, when a store to an interrupt acknowledge location
has to complete before interrupts are enabled).
Table 26: Cache Operations register function descriptions
www.digiembedded.com
65
System control processor (CP15) registers
FunctionDescription
Wait for interruptDrains the contents of the write buffers, puts the processor
Table 26: Cache Operations register function descriptions
Function/operationData formatInstruction
into low-power state, and stops the processor from
executing further instructions until an interrupt (or debug
request) occurs. When an interrupt does occur, the
MCR
instruction completes, and the IRQ or FIRQ handler is
entered as normal.
The return link in
MCR instruction plus eight, so the typical instruction
the
R14_irq or R14_fiq contains the address of
used for interrupt return (SUBS PC,R14,#4) returns to the
instruction following the
MCR.
Invalidate ICache and DCacheSBZ
Invalidate ICacheSBZ
Invalidate ICache single entry (MVA)MVA
Invalidate ICache single entry (set/way)Set/Way
Prefetch ICache line (MVA)MVA
Invalidate DCacheSBZ
Invalidate DCache single entry (MVA)MVA
Invalidate DCache single entry (set/way)Set/Way
Clean DCache single entry (MVA)MVA
Clean DCache single entry (set/way)Set/Way
Test and clean DCachen/a
Clean and invalidate DCache entry (MVA)MVA
Clean and invalidate DCache entry (set/way)Set/Way
Test, clean, and invalidate DCachen/a
Drain write bufferSBZ
Wait for interruptSBZ
MCR p15, 0, Rd, c7, c7, 0
MCR p15, 0, Rd, c7, c5, 0
MCR p15, 0, Rd, c7, c5, 1
MCR p15, 0, Rd, c7, c5, 2
MCR p15, 0, Rd, c7, c13, 1
MCR p15, 0, Rd, c7, c6, 0
MCR p15, 0, Rd, c7, c6, 1
MCR p15, 0, Rd, c7, c6, 2
MCR p15, 0, Rd, c7, c10, 1
MCR p15, 0, Rd, c7, C10, 2
MRC p15, 0, Rd, c7, c10, 3
MCR p15, 0, Rd, c7, c14, 1
MCR p15, 0, Rd, c7, c14, 2
MRC p15, 0, Rd, c7, c14, 3
MCR p15, 0, Rd, c7, c10, 4
MCR p15, 0, Rd, c7, c0, 4
66
Table 27: R7: Cache operations
NS9750 Hardware Reference
Working with the CPU
310S+44
SBZSet(=index)Word
Tag
215S+5
310S+44
SBZSet(=index)Word
SBZ
215S+5
Way
32-A 31-A
Figure 17 shows the modified virtual address format for Rd for the CP15 R7 MCR
operations.
The tag, set, and word fields define the MVA.
For all cache operations, the word field SHOULD BE ZERO.
Figure 17: R7: MVA format
Figure 18 shows the Set/Way format for Rd for the CP15 R7 MCR operations.
A and S are the base-two logarithms of the associativity and the number of
sets.
The set, way, and word files define the format.
For all of the cache operations, word SHOULD BE ZERO.
For example, a 16 KB cache, 4-way set associative, 8-word line results in the
following:
A = log
S = log
associativity = log24 = 2
2
NSETS where
2
NSETS = cache size in bytes/associativity/line length in bytes:
NSETS = 16384/4/32 = 128
Result: S = log
128 = 7
2
Figure 18: R7: Set/Way format
Test and clean operations
Test and clean DCache instruction
The test and clean DCache instruction provides an efficient way to clean the entire
DCache, using a simple loop. The test and clean DCache instruction tests a number of
lines in the DCache to determine whether any of them are dirty. If any dirty lines are
www.digiembedded.com
67
System control processor (CP15) registers
found, one of those lines is cleaned. The test and clean DCache instruction also
returns the status of the entire DCache in bit 30.
Note:
The test and clean DCache ins t ruction MRC p15, 0, r15, c7, c10, 3 is a special
encoding that uses
using this instruction, however. This
condition code flags.
If the cache contains any dirty lines, bit 30 is set to 0. If the cache contains no dirty
lines, bit 30 is set to 1. Use the following loop to clean the entire cache:
tc_loop:MRC p15, 0, r15, c7, c10, 3 ; test and clean
Test, clean, and invalidate DCache instruction
The test, clean, and invalidate DCache instruction is the same as the test and clean
DCache instruction except that when the entire cache has been cleaned, it is
invalidated. Use the following loop to test, clean, and invalidate the entire DCache:
tci_loop:MRC p15, 0, r15, c7, c14, 3 ; test clean and invalidate
R8:TLB Operations register
Register R8 is a write-only register that controls the translation lookaside buffer
(TLB). There is a single TLB used to hold entries for both data and instructions. The
TLB is divided into two parts:
r15 as a destination operand. The PC is not changed by
MRC instruction also sets the
BNE tc_loop
BNE tci_loop
68
Set-associative
Fully-associative
The fully-associative part (also referred to as the lockdown part of the TLB) stores
entries to be locked down. Entries held in the lockdown part of the register are
preserved during an invalidate-TLB operation. Entries can be removed from the
lockdown TLB using an invalidate TLB single entry operation.
There are six TLB operations; the function to be performed is selected by the
CRm fields in the MCR instruction used to write register R8. Writing other opcode_2
and
CRm values is UNPREDICTABLE. Reading from this register is UNPREDICTABLE.
or
opcode_2
Use the instruction shown in Table 28 to perform TLB operations.
NS9750 Hardware Reference
OperationDataInstruction
3109
SBZ
Modified virtual address
10
Working with the CPU
Invalidate set-associative TLBSBZ
Invalidate single entrySBZ
Invalidate set-associative TLBSBZ
Invalidate single entryMVA
Invalidate set-associative TLBSBZ
Invalidate single entryMVA
The invalidate TLB operations invalidate all the unpreserved entries in the
TLB.
The invalidate TLB single entry operations invalidate any TLB entry
corresponding to the modified virtual address given in
Rd, regardless of its
preserved state. See "R10: TLB Lockdown register," beginning on page 73,
for an explanation of how to preserve TLB entries.
Figure 19 shows the modified virtual address format used for invalid TLB single entry
operations.
Figure 19: R8: TLB Operations, MVA format
Note:
If either small or large pages are used, and these pages contain subpage
access permissions that are different, you must use four invalidate TLB
single entry operations, with the MVA set to each subpage, to invalidate
all information related to that page held in a TLB.
R9: Cache Lockdown register
Register R9 access the cache lockdown registers. Access this register using CRm = 0.
The Cache Lockdown register uses a cache-way-based locking scheme (format C) that
allows you to control each cache way independently.
www.digiembedded.com
69
System control processor (CP15) registers
These registers allow you to control which cache-ways of the four-way cache are used
for the allocation on a linefill. When the registers are defined, subsequent linefills
are placed only in the specified target cache way. This gives you some control over
the cache pollution cause by particular applications, and provides a traditional
lockdown operation for locking critical code into the cache.
A locking bit for each cache way determines wheth er the normal cache allocation is
allowed to access that cache way (see Table 30, “Cache Lockdown register L bits,” on
page 71). A maximum of three cache ways of the four-way associative cache can be
locked, ensuring that normal cache line replacement is performed.
Note:
If no cache ways have the L bit set to 0, cache way 3 is used for all
linefills.
The first four bits of this register determine the L bit for the associated cache way.
The opcode_2 field of the MRC or MCR instruction determines whether the instruction
or data lockdown register is accessed:
opcode_2=0Selects the DCache Lockdown register, or the Unified
Cache Lockdown register if a unified cache is
implemented. The ARM926EJ-S processor has separate
DCache and ICache.
opcode_2=1Selects the ICache Lockdown register.
Use the instructions shown in Table 29 to access the CacheLockdown register.
This sequence sets the L bit to 1 for way 0 of the ICache. Figure 20 shows the format
for the Cache Lockdown register.
Figure 20: R9: Cache Lockdown register format
Table 30 shows the format of the Cache Lockdown register L bits. All cache ways are
available for allocation from reset.
Bits4-way associativeNotes
[31:16]UNP/SBZReserved
[15:4]0xFFFSBO
[3]L bit for way 3Bits [3:0] are the L bits for each cache way:
[2]L bit for way 2
[1]L bit for way 1
0Allocation to the cache way is determined by the standard
replacement algorithm (reset state)
1No allocation is performed to this way
[0]L bit for way 0
Table 30: Cache Lockdown register L bits
Use one of these procedures to lockdown and unlock cache:
Specific loading of addresses into a cache way
Cac he unlock procedure
www.digiembedded.com
71
System control processor (CP15) registers
Specific loading of addresses into a cache-way
The procedure to lock down code and data into way i of cache, with N ways, using
format C, makes it impossible to allocate to any cache way other than the target
cache way:
1Be sure that no processor exceptions can occur during the execution of this
procedure; for example, disable interrupts. If this is not possible, all code and
data used by any exception handlers must be treated as code and data as in
Steps 2 and 3.
2If an ICache way is being locked down, be sure that all the code executed by the
lockdown procedure is in an uncachable area of memory or in an already locked
cache way.
3If a DCache way is being locked down, be sure that all data used by the lockdown
procedure is in an uncachable area of memory or is in an already locked cache
way.
4Ensure that the data/instructions that are to be locked down are in a cachable
area of memory.
5Be sure that the data/instructions that are to be locked down are not already in
the cache. Use the Cache Operations register (R7) clean and/or invalidate
functions to ensure this.
72
6Write these settings to the Cache Lockdown register (R9), to enable allocation to
the target cache way:
CRm = 0
Set L == 0 for bit i
Set L == 1 for all other bits
7For each of the cache lines to be locked down in cache way i:
–If a DCache is being locked down, use an LDR instruction to load a word
from the memory cache line to ensure that the memory cache line is loaded
into the cache.
–If an ICache is being locked down, use the Cache Operations register (R7)
MCR prefetch ICache line (<CRm>==c13, <opcode2>==1) to fetch the memory
cache line into the cache.
8Write <CRm>==0 to Cache Lockdown register (R9), setting L==1 for bit i and
restoring all other bits to the values they had before the lockdown routine was
started.
NS9750 Hardware Reference
Cache unlock procedure
VictimSBZ/UNP
31282529260
SBZP
To unlock the locked down portion of the cache, write to Cache Lockdown register
(R9) setting
L==0 for the appropriate bit. The following sequence, for example, sets
the L bit to 0 for way 0 of the ICache, unlocking way 0:
The TLB Lockdown register controls where hardware page table walks place the TLB
entry — in the set associative region or the lockdown region of the TLB. If the TLB
entry is put in the lockdown region, the register indicates which entry is written. The
TLB lockdown region contains eight entries (see the discussion of the TLB structure in
"TLB structure," beginning on page 104, for more information).
Figure 21 shows the TLB lockdown format.
Working with the CPU
Figure 21: TLB Lockdown register format
When writing the TLB Lockdown register, the value in the P bit (D0) determines in
which region the TLB entry is placed:
P=0Subsequent hardware page table walks place the TLNB entry in the set associative region
of the TLB.
P=1Subsequent hardware page table walks place the TLB entry in the lockdown region at the
entry specified by the victim, in the range 0–7.
TLB entries in the lockdown region are preserved so invalidate-TLB operations only
invalidate the unpreserved entries in the TLB; that is, those entries in the setassociative region. Invalidate-TLB single entry operations invalidate any TLB entry
corresponding to the modified virtual address given in
Rd, regardless of the entry’s
preserved state; that is, whether they are in lockdown or set-associative TLB regions.
www.digiembedded.com
73
System control processor (CP15) registers
See "R8:TLB Operations register" on page 68 for a description of the TLB-invalidate
operations.
Use these instructions to program the TLB Lockdown register:
FunctionInstruction
Read data TLB lockdown victim
Write data TLB lockdown victim
MRC p15, 0, Rd, c10, c0, 0
MCR p15, 0, Rd, c10, c0, 0
The victim automatically increments after any table walk that results in an entry
being written into the lockdown part of the TLB.
Note:
It is not possible for a lockdown entry to map entirely either small or large
pages, unless all subpage access permissions are the same. Entries can
still be written into the lockdown region, but the address range that is
mapped covers only the subpage corresponding to the address that was
used to perform the page table walk.
Sample code sequence
This example shows the code sequence that locks down an entry to the current
victim.
ADR r1,LockAddr;set R1 to the value of the address to be locked
down
MCR p15,0,r1,c8,c7,1;invalidate TLB single entry to ensure that
LockAddr is not already in the TLB
MRC p15,0,r0,c10,c0,0;read the lockdown register
ORR r0,r0,#1;set the preserve bit
MCR p15,0,r0,c10,c0,0;write to the lockdown register
LDR r1,[r1];TLB will miss, and entry will be loaded
MRC p15,0,r0,c10,c0,0;read the lockdown register (victim will have
;incremented
BIC r0,r0,#1;clear preserve bit
MCR p15,0,r0,c10,c0,0; write to the lockdown register
R11 and R12 registers
Accessing (reading or writing) these registers causes UNPREDICTABLE behavior.
74
NS9750 Hardware Reference
R13: Process ID register
The Process ID register accesses the process identifier registers. The register
accessed depends on the value on the
opcode_2=0Selects the Fast Context Switch Extension (FCSE) Process Identifier (PID)
opcode_2=1Selects the context ID register.
Use the Process ID register to determine the process that is currently running. The
process identifier is set to 0 at reset.
FCSE PID register
Addresses issued by the ARM926EJ-S core, in the range 0 to 32 MB, are translated
according to the value contained in the FCSE PID register. Address A becomes
A + (FCSE PID x 32 MB); it is this modified address that the MMU and caches see.
Addresses above 32 MB are not modified. The FCSE PID is a 7-bit field, which allows
128 x 32 MB processes to be mapped.
Working with the CPU
opcode_2 field:
register.
If the FCSE PID is 0, there is a flat mapping between the virtual addresses output by
the ARM926EJ-S core and the modified virtual addresses used by the caches and MMU.
The FCSE PID is set to 0 at system reset.
If the MMU is disabled, there is no FCSE address translation.
FCSE translation is not applied for addresses used for entry-based cache or TLB
maintenance operations. For these operations,
VA=MVA.
Use these instructions to access the FCSE PID register:
FunctionDataARM instruction
Read FCSE PIDFCSE PID
Write FCSE PIDFCSE PID
MRC p15,0,Rd,c13,c0,0
MCR p15,0,Rd,c13,c0,0
www.digiembedded.com
75
System control processor (CP15) registers
3125 240
SBZ
FCSE PID
Figure 22 shows the format of the FCSE PID register.
Figure 22: Process ID register format
Performing a fast context switch
You can perform a fast context switch by writing to the Process ID register (R13) with
opcode_2 set to 0. The contents of the caches and the TLB do not have to be flushed
after a fast context switch because they still hold address tags. The two instructions
after the FCSE PID has been written have been fetched with the old FCSE PID, as
shown in this code example:
{FCSE PID = 0}
MOV r0, #1:SHL:25;Fetched with FCSE PID = 0
MCR p15,0,r0,c13,c0,0;Fetched with FCSE PID = 0
A1;Fetched with FCSE PID = 0
A2;Fetched with FCSE PID = 0
A3;Fetched with FCSE PID = 1
76
A1, A2, and A3 are the three instructions following the fast context switch.
Context ID register
The Context ID register provides a mechanism that allows real-time trace tools to
identify the currently executing process in multi-tasking environments.
Use these instructions to access the Context ID register:
FunctionDataARM instruction
Read context IDContext ID
Write context IDContext ID
NS9750 Hardware Reference
MRC p15,0,Rd,c13,c0,1
MCR p15,0,Rd,c13,c0,1
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.