– DSP Instruction Extensions, ARM Jazelle
– 16 Kbyte Data Cache, 16 Kbyte Instruction Cache, Write Buffer
– 220 MIPS at 200 MHz
– Memory Management Unit
– EmbeddedICE
™
In-circuit Emulation, Debug Communication Channel Support
• Additional Embedded Memories
– One 32 Kbyte Internal ROM, Single-cycle Access at Maximum Matrix Speed
– One 32 Kbyte Internal SRAM, Single-cycle Access at Maximum Matrix Speed
• External Bus Interface (EBI)
– EBI Supports Mobile DDR, SDRAM, Low Power SDRAM, Static Memory,
Synchronous CellularRAM, ECC-enabled NAND Flash and CompactFlash
• Metal Programmable (MP) Block
– 500,000 Gates/250,000 Gates Metal Programmable Logic (through 5 Metal Layers)
for AT91CAP9S500A/AT91CAP9S250A Respectively
– Ten 512 x 36-bit Dual Port RAMs
– Eight 512 x 72-bit Single Port RAMs
– High Connectivity for Up to Three AHB Masters and Four AHB Slaves
– Up to Seven AIC Interrupt Inputs
– Up to Four DMA Hardware Handshake Interfaces
– Delay Lines for Double Data Rate Interface
– UTMI+ Full Connection
– Up to 77 Dedicated I/Os
• LCD Controller
– Supports Passive or Active Displays
– Up to 24 Bits per Pixel in TFT Mode, Up to 16 Bits per Pixel in STN Color Mode
– Up to 16M Colors in TFT Mode, Resolution Up to 2048x2048, Supports Wider
Screen Buffers
• Image Sensor Interface
– ITU-R BT. 601/656 External Interface, Programmable Frame Capture Rate
– 12-bit Data Interface for Support of High Sensibility Sensors
– SAV and EAV Synchronization, Preview Path with Scaler, YCbCr Format
• USB 2.0 Full Speed (12 Mbits per second) OHCI Host Double Port
– Media Independent Interface (MII) or Reduced Media Independent Interface (RMII)
– 28-byte FIFOs and Dedicated DMA Channels for Receive and Transmit
• Multi-Layer Bus Matrix
– Twelve 32-bit-layer Matrix, Allowing a Maximum of 38.4 Gbps of On-chip Bus
Bandwidth at Maximum 100 MHz System Clock Speed
– Boot Mode Select Option, Remap Command
• Fully-featured System Controller, Including
– Reset Controller, Shutdown Controller
™
ARM® Thumb® Processor
®
Technology for Java® Acceleration
Customizable
Microcontroller
™
Processor
AT91CAP9S500A
AT91CAP9S250A
Preliminary
6264A–CAP–21-May-07
– Four 32-bit Battery Backup Registers for a Total of 16 Bytes
– Clock Generator and Power Management Controller
– Advanced Interrupt Controller and Debug Unit
– Periodic Interval Timer, Watchdog Timer and Real-Time Timer
• Reset Controller (RSTC)
– Based on Two Power-on Reset Cells, Reset Source Identification and Reset Output Control
• Shutdown Controller (SHDC)
– Programmable Shutdown Pin Control and Wake-up Circuitry
• Clock Generator (CKGR)
– 32,768 Hz Low-power Oscillator on Battery Backup Power Supply, Providing a Permanent
Slow Clock
– 8 to 16 MHz On-chip Oscillator
– Two PLLs up to 240 MHz
– One USB 480 MHz PLL
• Power Management Controller (PMC)
– Very Slow Clock Operating Mode, Software Programmable Power Optimization Capabilities
– Four Programmable External Clock Signals
• Advanced Interrupt Controller (AIC)
– Individually Maskable, Eight-level Priority, Vectored Interrupt Sources
– Two External Interrupt Sources and One Fast Interrupt Source, Spurious Interrupt Protected
• Debug Unit (DBGU)
– 2-wire UART and Support for Debug Communication Channel, Programmable ICE Access
Prevention
• Periodic Interval Timer (PIT)
– 20-bit Interval Timer plus 12-bit Interval Counter
• Watchdog Timer (WDT)
– Key-protected, Programmable Only Once, Windowed 16-bit Counter Running at Slow Clock
• Real-Time Timer (RTT)
– 32-bit Free-running Backup Counter Running at Slow Clock with 16-bit Prescaler
• Four 32-bit Parallel Input/Output Controllers (PIOA, PIOB, PIOC and PIOE)
– 128 Programmable I/O Lines Multiplexed with up to Two Peripheral I/Os
– Input Change Interrupt Capability on Each I/O Line
– Individually Programmable Open-drain, Pull-up Resistor and Synchronous Output
• DMA Controller (DMAC)
– Acts as one Bus Matrix Master
– Embeds 4 Unidirectional Channels with Programmable Priority, Address Generation, Channel
Buffering and Control
– Supports Four External DMA Requests and Four Internal DMA Requests from the Metal
– 16 Fully-programmable Message Object Mailboxes, 16-bit Time Stamp Counter
• Two Multimedia Card Interfaces (MCI)
™
– SDCard/SDIO and MultiMedia
– Automatic Protocol Control and Fast Automatic Data Transfers with PDC
Card 3.31 Compliant
• Two Synchronous Serial Controllers (SSC)
– Independent Clock and Frame Sync Signals for Each Receiver and Transmitter
– I²S Analog Interface Support, Time Division Multiplex Support
– High-speed Continuous Data Stream Capabilities with 32-bit Data Transfer
2
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
AT91CAP9S500A/AT91CAP9S250A
• One AC97 Controller (AC97C)
– 6-channel Single AC97 Analog Front End Interface, Slot Assigner
• Three Universal Synchronous/Asynchronous Receiver Transmitters (USART)
– Individual Baud Rate Generator, IrDA
Encoding/Decoding
– Support for ISO7816 T0/T1 Smart Card, Hardware Handshaking, RS485 Support
• Two Master/Slave Serial Peripheral Interface (SPI)
– 8- to 16-bit Programmable Data Length, Four External Peripheral Chip Selects
– Synchronous Communications at Up to 90 Mbits/sec
• One Three-channel 16-bit Timer/Counters (TC)
– Three External Clock Inputs, Two Multi-purpose I/O Pins per Channel
– Double PWM Generation, Capture/Waveform Mode, Up/Down Capability
• One Four-channel 16-bit PWM Controller (PWMC)
• One Two-wire Interface (TWI)
– Master and Slave Mode Support, All Two-wire Atmel EEPROMs Supported
®
• IEEE
1149.1 JTAG Boundary Scan on All Digital Pins
• Required Power Supplies:
– 1.08V to 1.32V for VDDCORE and VDDBU
– 3.0V to 3.6V for VDDOSC, VDDPLL and VDDIOP0 (Peripheral I/Os)
– Programmable 1.65V to 1.95V or 3.0V to 3.6V for VDDIOP1 (Peripheral I/Os) and for VDDIOM
(Memory I/Os) and VDDIOMPP/VDDIOMP (MP Block I/Os)
• Available in 324- and 400-ball LFBGA RoHS-compliant Packages
®
Infrared Modulation/Demodulation, Manchester
1.Description
The AT91CAP9S500A/AT91CAP9S250A family is based on the integration of an ARM926EJ-S
processor with fast ROM and SRAM memories, and a wide range of peripherals. By providing up
to 500K gates of metal programmable logic, AT91CAP9S500A/AT91CAP9S250A is the ideal
platform for creating custom designs.
The AT91CAP9S500A/AT91CAP9S250A embeds a USB High-speed Device, a 2-port USB
OHCI Host, an LCD Controller, a 4-channel DMA Controller, and one Image Sensor Interface. It
also integrates several standard peripherals, such as USART, SPI, TWI, Timer Counters, PWM
generators, Multimedia Card interface, and one CAN Controller.
The AT91CAP9S500A/AT91CAP9S250A is architectured on a 12-layer matrix, allowing a maximum internal bandwidth of twelve 32-bit buses. It also features one external memory bus (EBI)
capable of interfacing with a wide range of memory devices.
The initial release of the AT91CAP9S500A/AT91CAP9S250A is packaged in a 400-ball LFBGA
RoHS-compliant package. A future release will also be available in a 324-ball LFBGA RoHScompliant package.
Table 4-1.AT91CAP9S500A/AT91CAP9S250A Pinout for 400-ball BGA Package
PinSignal NamePinSignal NamePinSignal NamePinSignal Name
A1PC5F1PA3L1PA22T1PD22
A2PC3F2PA4L2PA25T2PD23
A3PC2F3PA8L3PA29T3PD30
A4PC1F4PA5L4PA31T4VDDCORE
A5PC0F5PA6L5PD6T5SDDRCS
A6BMSF6VDDIOML6GNDIOT6DQS0
A7NRSTF7VDDIOP0L7GNDCORET7D4
A8GNDCOREF8PC24L8PA18T8D11
A9PB18F9NCL9GNDTHERMALT9D14
A10PB17F10VDDCOREL10GNDTHERMALT10SDA10
A11PB14F11GNDIOL11GNDTHERMALT11VDDCORE
A12PB15F12PB23L12GNDTHERMALT12MPIOA0
A13GNDANAF13PB6L13GNDCORET13MPIOA9
A14PB26F14NCL14GNDIOT14GNDIO
A15VDDIOP0F15NCL15VDDCORET15MPIOA25
A16GNDIOF16NCL16MPIOB28T16MPIOA24
A17FSDPF17GNDPLLL17MPIOB32T17MPIOA29
A18FSDMF18WKUP0L18MPIOB34T18MPIOB3
A19HSDPF19SHDWL19MPIOB31T19MPIOB17
A20HSDMF20PLLRCAL20MPIOB29T20MPIOB18
B1PC17G1PA7M1PA26U1PD25
B2PC16G2PA10M2PA30U2PD31
B3PC14G3PA11M3PD11U3BCCLK
B4PC11G4PA9M4PD12U4A0
B5PC10G5PA12M5PD13U5D0
B6PC9G6PD10M6PD15U6D1
B7TDOG7GNDIOM7GNDCOREU7NWR1
B8TCKG8GNDCOREM8PA28U8DQS1
B9PB20G9VDDIOP0M9GNDTHERMALU9A7
B10PB19G10PC8M10GNDTHERMALU10A13
B11PB13G11PB25M11GNDTHERMALU11A20
B12ADVREFG12PB21M12GNDTHERMALU12GNDIO
B13PB16G13PB8M13NRDU13MPIOA4
B14PB27G14PB0M14MPIOB26U14MPIOA11
B15PB24G15PB2M15GNDIOU15MPIOA16
B16HDMAG16NCM16MPIOB16U16VDDMPIOA
B17VDDIOP0G17VDDPLLM17GNDCOREU17MPIOA23
6264A–CAP–21-May-07
11
Table 4-1.AT91CAP9S500A/AT91CAP9S250A Pinout for 400-ball BGA Package (Continued)
PinSignal NamePinSignal NamePinSignal NamePinSignal Name
B18GNDIOG18GNDCOREM18MPIOB27U18MPIOA28
B19VDDUTMIIG19TSTM19MPIOB25U19MPIOB6
B20GNDUTMIIG20PLLRCBM20MPIOB24U20MPIOB9
C1PC23H1PA13N1PD7V1PD26
C2PC22H2PA14N2PD8V2RAS
C3PC21H3PD0N3PD16V3SDCKE
C4PC20H4PA15N4PD19V4D3
C5PC18H5PD1N5PD20V5VDDIOM
C6PC15H6VDDIOP1N6PD29V6D5
C7PC12H7VDDCOREN7GNDIOV7D9
C8PC6H8GNDION8VDDIOMV8D15
C9NTRSTH9GNDION9NCS1V9A11
C10TDIH10PB10N10VDDCOREV10GNDCORE
C11VDDANAH11PB4N11A3V11A22
C12PB12H12VDDMPIOBN12A6V12MPIOA1
C13PB29H13JTAGSELN13VDDCOREV13MPIOA6
C14PB9H14GNDCOREN14MPIOB11V14MPIOA10
C15PB7H15GNDPLLN15MPIOB13V15MPIOA13
C16HDPAH16NCN16MPIOB12V16MPIOA17
C17HDPBH17VDDCOREN17MPIOB14V17MPIOA20
C18VDDUPLLH18MPIOB44N18MPIOB15V18MPIOA27
C19VDDUTMICH19XOUT32N19MPIOB22V19MPIOB5
C20VBGH20XIN32N20MPIOB23V20VDDMPIOB
D1PC29J1PD3P1PD9W1SDWE
D2PC28J2PD2P2PD14W2OWAIT
D3PC27J3PD5P3PD18W3NANDWE
D4PC26J4PA17P4PD27W4GNDIO
D5PC25J5PA19P5PD28W5D6
D6PC19J6VDDIOP0P6VDDIOMW6A2
D7NANDOEJ7PA16P7NWR3W7A5
D8PC7J8GNDCOREP8D8W8A14
D9GNDIOJ9GNDTHERMALP9D10W9A17
D10TMSJ10GNDTHERMALP10GNDIOW10A19
D11NCJ11GNDTHERMALP11A9W11NWR0
D12PB31J12GNDTHERMALP12A12W12MPIOA2
D13PB22J13GNDIOP13NCW13MPIOA5
D14VDDCOREJ14GNDBUP14MPIOB8W14MPIOA8
D15PB3J15GNDBUP15MPIOB0W15MPIOA12
12
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
AT91CAP9S500A/AT91CAP9S250A
Table 4-1.AT91CAP9S500A/AT91CAP9S250A Pinout for 400-ball BGA Package (Continued)
PinSignal NamePinSignal NamePinSignal NamePinSignal Name
D16PB1J16MPIOB42P16MPIOB1W16MPIOA15
D17HDMBJ17MPIOB39P17MPIOB7W17MPIOA21
D18PLLRCUJ18MPIOB43P18MPIOB10W18MPIOA22
D19GNDUTMICJ19MPIOB41P19MPIOB21W19GNDIO
D20GNDUPLLJ20GNDIOP20VDDMPIOBW20VDDCORE
E1PC30K1PD4R1PD21Y1SDCK
E2PA2K2PA21R2PD17Y2SDCKN
E3PA1K3PA24R3PD24Y3A1
E4PA0K4PA27R4CASY4GNDCORE
E5PC31K5PA23R5VDDCOREY5A4
E6GNDIOK6GNDIOR6D2Y6A8
E7VDDCOREK7PA20R7D7Y7A10
E8PC13K8VDDCORER8VDDIOMY8A15
E9PC4K9GNDTHERMALR9D13Y9A18
E10RTCKK10GNDTHERMALR10D12Y10A21
E11VDDIOP0K11GNDTHERMALR11VDDIOMY11NCS0
E12PB30K12GNDTHERMALR12A16Y12MPIOA3
E13PB28K13GNDCORER13VDDIOMY13MPIOA7
E14PB11K14MPIOB33R14NCY14VDDMPIOA
E15PB5K15MPIOB30R15NCY15MPIOA14
E16NCK16MPIOB35R16NCY16MPIOA18
E17VDDPLLK17MPIOB38R17MPIOB2Y17MPIOA19
E18VDDBUK18MPIOB40R18MPIOB4Y18MPIOA26
E19XINK19MPIOB37R19MPIOB19Y19MPIOA30
E20XOUTK20MPIOB36R20MPIOB20Y20MPIOA31
5.Power Considerations
5.1Power Supplies
The AT91CAP9S500A/AT91CAP9S250A has several types of power supply pins:
• VDDCORE pins: Power the core, including the processor, the embedded memories and the
peripherals; voltage range between1.08V and 1.32V, 1.2V nominal.
• VDDIOM pins: Power the External Bus Interface; voltage ranges between 1.65V and 1.95V
(1.8V nominal) or between 3.0V and 3.6V (3.3V nominal).
• VDDIOP0 pins: Power the Peripherals I/O lines and the USB transceivers; voltage range
between 3.0V and 3.6V, 3.3V nominal.
• VDDIOP1 pins: Power the Peripherals I/O lines involving the Image Sensor Interface; voltage
ranges from 1.65V to 3.6V, 1.8V, 2.5V, 3V or 3.3V nominal.
6264A–CAP–21-May-07
13
• VDDIOMPA pins: Power the MP Block I/O A lines; voltage ranges from 1.65V to 3.6V, 1.8V,
2.5V, 3V or 3.3V nominal.
• VDDIOMPB pins: Power the dedicated MP Block I/O B lines; voltage ranges from 1.65V to
3.6V, 1.8V, 2.5V, 3V or 3.3V nominal.
• VDDBU pin: Powers the Slow Clock oscillator and a part of the System Controller; voltage
range between1.08V and 1.32V, 1.2V nominal.
• VDDPLL pin: Powers the PLL cells; voltage ranges between 3.0V to 3.6V, 3.3V nominal.
• VDDUTMII pin: Powers the UTMI+ interface; voltage ranges from 3.0V to 3.6V, 3.3V nominal.
• VDDUTMIC pin: Powers the UTMI+ core; voltage ranges between 1.08V and 1.32V, 1.2V
nominal.
• VDDUPLL pin: Powers the USB PLL cell; voltage ranges between 1.08V and 1.32V, 1.2V
nominal.
• VDDANA pin: Powers the ADC cell; voltage ranges between 3.0V and 3.6V, 3.3V nominal.
The power supplies VDDIOM, VDDIOP0 and VDDIOP1 are identified in the pinout table and the
multiplexing tables. These supplies enable the user to power the device differently for interfacing
with memories and for interfacing with peripherals.
Ground pins GNDIO are common to VDDIOM, VDDIOP0, VDDIOP1, VDDIOMPA and VDDIOMPB pin power supplies. Separated ground pins are provided for VDDCORE, VDDBU,
VDDPLL, VDDUTMII, VDDUTMIC, VDDUPLL and VDDANA. These ground pins are, respectively, GNDBU, GNDOSC, GNDPLL, GNDUTMII, GNDUTMIC, GNDUPLL and GNDANA.
Special GNDTHERMAL ground balls are thermally coupled with package substrate.
5.2Power Consumption
The AT91CAP9S500A/AT91CAP9S250A consumes about 700 µA (TBC) of static current on
VDDCORE at 25°C. This static current may go up to 7 mA (TBC) if the temperature increases to
85°C.
On VDDBU, the current does not exceed 3 µA(TBC) @25°C, but can rise at up to 20 µA(TBC)
@85°C.
For dynamic power consumption, the AT91CAP9S500A/AT91CAP9S250A consumes a maximum of 90 mA (TBC) on VDDCORE at typical conditions (1.2V, 25°C, processor running fullperformance algorithm).
5.3Programmable I/O Lines Power Supplies
The power supply pins VDDIOM, VDDMPIOA and VDDMPIOB accept two voltage ranges. This
allows the device to reach its maximum speed either out of 1.8V or 3.3V external memories.
The target maximum speed is 100 MHz on the pin DDR/SDR and MPIOA or MPIOB pins loaded
with 30 pF for power supply at 1.8V and 50 pF for power supply at 3.3V. The other signals (control, address and data signals) do not go over 50 MHz.
The voltage ranges are determined by programming registers in the Chip Configuration registers
located in the Matrix User Interface.
14
At reset, the selected voltage defaults to 3.3V nominal and power supply pins can accept either
1.8V or 3.3V. Obviously, the device cannot reach its maximum speed if the voltage supplied to
the pins is 1.8V only. The user must make sure to program the EBI voltage range before getting
the device out of its Slow Clock Mode.
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
6.I/O Line Considerations
6.1JTAG Port Pins
TMS, TDI and TCK are Schmitt trigger inputs and have no pull-up resistors.
TDO and RTCK are outputs, driven at up to VDDIOP0, and have no pull-up resistors.
The JTAGSEL pin is used to select the JTAG boundary scan when asserted at a high level. It
integrates a permanent pull-down resistor of about 15 kΩ to GNDBU so that it can be left uncon-
nected for normal operations.
The NTRST signal is described in Section 6.3 ”Reset Pins” on page 15.
All the JTAG signals are supplied with VDDIOP0.
6.2Test Pin
The TST pin is used for manufacturing test purposes when asserted high. It integrates a permanent pull-down resistor of about 15 kΩ to GNDBU so that it can be left unconnected for normal
operations. Driving this line at a high level leads to unpredictable results.
This pin is supplied with VDDBU.
AT91CAP9S500A/AT91CAP9S250A
6.3Reset Pins
NRST is an open-drain output integrating a non-programmable pull-up resistor. It can be driven
with voltage at up to VDDIOP0.
NTRST is an input which allows reset of the JTAG Test Access port. It has no action on the
processor.
As the product integrates power-on reset cells that manage the processor and the JTAG reset,
the NRST and NTRST pins can be left unconnected.
The NRST and NTRST pins both integrate a permanent pull-up resistor of 90 kΩ minimum to
VDDIOP0.
The NRST signal is inserted in the Boundary Scan.
6.4PIO Controllers
All the I/O lines which are managed by the PIO Controllers integrate a programmable pull-up
resistor of 90 kΩ minimum. Programming of this pull-up resistor is performed independently for
each I/O line through the PIO Controllers.
After reset, all the I/O lines default as inputs with pull-up resistors enabled, except those multiplexed with the External Bus Interface signals that must be enabled as Peripheral at reset. This
is indicated in the column “Reset State” of the PIO Controller multiplexing tables.
6.5Shutdown Logic Pins
The SHDN pin is an output only, which is driven by the Shutdown Controller only at low level. It
can be tied high with an external pull-up resistor at VDDBU only.
6264A–CAP–21-May-07
The pin WKUP is an input-only. It can accept voltages only between 0V and VDDBU.
15
7.Processor and Architecture
7.1ARM926EJ-S Processor
• RISC Processor based on ARM v5TEJ Architecture with Jazelle technology for Java
acceleration
• Two Instruction Sets
– ARM High-performance 32-bit Instruction Set
– Thumb High Code Density 16-bit Instruction Set
– Virtually-addressed 4-way Associative Cache
– Eight words per line
– Write-through and Write-back Operation
– Pseudo-random or Round-robin Replacement
• Write Buffer
– Main Write Buffer with 16-word Data Buffer and 4-address Buffer
– DCache Write-back Buffer with 8-word Entries and a Single Address Entry
– Software Control Drain
• Standard ARM v4 and v5 Memory Management Unit (MMU)
– Access Permission for Sections
– Access Permission for large pages and small pages can be specified separately for
each quarter of the page
– 16 embedded domains
• Bus Interface Unit (BIU)
– Arbitrates and Schedules AHB Requests
– Separate Masters for both instruction and data access providing complete Matrix
system flexibility
– Separate Address and Data Buses for both the 32-bit instruction interface and the
32-bit data interface
– On Address and Data Buses, data can be 8-bit (Bytes), 16-bit (Half-words) or 32-bit
(Words)
Decode (D)
7.2Bus Matrix
16
AT91CAP9S500A/AT91CAP9S250A
• 12-layer Matrix, handling requests from 12 masters
• Programmable Arbitration strategy
– Fixed-priority Arbitration
6264A–CAP–21-May-07
7.3Matrix Masters
AT91CAP9S500A/AT91CAP9S250A
– Round-Robin Arbitration, either with no default master, last accessed default master
or fixed default master
• Burst Management
– Breaking with Slot Cycle Limit Support
– Undefined Burst Length Support
• One Address Decoder provided per Master
– Three different slaves may be assigned to each decoded memory area: one for
internal boot, one for external boot, one after remap
• Boot Mode Select
– Non-volatile Boot Memory can be internal or external
– Selection is made by BMS pin sampled at reset
• Remap Command
– Allows Remapping of an Internal SRAM in Place of the Boot Non-Volatile Memory
– Allows Handling of Dynamic Exception Vectors
The Bus Matrix of the AT91CAP9S500A/AT91CAP9S250A manages twelve Masters and thus
each master can perform an access concurrently with the others, assuming that the slave it
accesses is available.
7.4Matrix Slaves
Each Master has its own decoder, which is defined specifically for each master. In order to simplify the addressing, all the masters have the same decoding.
Table 7-1.List of Bus Matrix Masters
Master 0ARM926™ Instruction
Master 1ARM926 Data
Master 2Peripheral DMA Controller
Master 3LCD Controller
Master 4USB High Speed Device Controller
Master 5Image Sensor Interface
Master 6DMA Controller
Master 7Ethernet MAC
Master 8OHCI USB Host Controller
Master 9MP Block Master 0
Master 10MP Block Master 1
Master 11MP Block Master 2
The Bus Matrix of the AT91CAP9S500A/AT91CAP9S250A manages ten Slaves. Each Slave
has its own arbiter, thus permitting a different arbitration per Slave to be programmed.
6264A–CAP–21-May-07
17
The LCD Controller, the DMA Controller, the USB Host and the USB OTG have a user interface
mapped as a Slave of the Matrix. They share the same layer, as programming them does not
require a high bandwidth.
All the Masters can normally access all the Slaves. However, some paths do not make sense,
such as allowing access from the Ethernet MAC to the Internal Peripherals. Thus, these paths
are forbidden or simply not wired, and shown “-” in Table 7-3,
“AT91CAP9S500A/AT91CAP9S250A Masters to Slaves Access,” on page 19.
18
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
AT91CAP9S500A/AT91CAP9S250A
Table 7-3.AT91CAP9S500A/AT91CAP9S250A Masters to Slaves Access
Master0 12345678910 11
Slave
ARM926 Instruction
LCDCtrl
ARM926 Data
Peripheral DMA Ctrl
Device Ctrl
USB High Speed
Image Sensor Interface
DMA Ctrl
Ethernet MAC
OHCI USB Host Ctrl
MP Block Master 0
MP Block Master 1
MP Block Master 2
Internal SRAM
0
32 Kbytes
MP Block
1
Slave 0
XXXX X XXXXXXX
XXXX X XXXXXXX
Internal ROMXXXXXXXXXXXX
LCD
Controller
XX-- - ----XXX
User Interface
2
USB High
Speed Device
XX - - - - X - - X X X
Interface
OHCI USB
Host Interface
MPBlock
3
Slave 1
External Bus
4
Interface
XX-- - ----XXX
XXXX X XXXXXXX
XXXX X XXXXXXX
-
-DDR Port 0X-----------
5DDR Port 1-X----------
6DDR Port 2X
DDR Port 3X
7
8
9
MPBlock
Slave 2
MPBlock
Slave 3
Internal
Peripherals
XXXX X XXXXXXX
XXXX X XXXXXXX
XX X - - - X - - X X X
(1)
(1)
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
(1)
X
Note:1. DDR Port 2 or Port 3 is selectable for each master through the Matrix Remap Control Register.
6264A–CAP–21-May-07
19
7.6Peripheral DMA Controller
• Acting as one Matrix Master
• Allows data transfers from/to peripheral to/from any memory space without any intervention
of the processor.
• Next Pointer Support, forbids strong real-time constraints on buffer management.
• Twenty-two Channels
– Two for each USART
– Two for the Debug Unit
– One for the TWI
– One for the ADC Controller
– Two for the AC97 Controller
– Two for each Serial Synchronous Controller
– Two for each Serial Peripheral Interface
– One for the each Multimedia Card Interface
The Peripheral DMA Controller handles transfer requests from the channel according to the following priorities (Low to High priorities):
• Embeds 4 unidirectional channels with programmable priority
• Address Generation
– Source / destination address programming
– Address increment, decrement or no change
– DMA chaining support for multiple non-contiguous data blocks through use of linked
lists
– Scatter support for placing fields into a system memory area from a contiguous
transfer. Writing a stream of data into non-contiguous fields in system memory
– Gather support for extracting fields from a system memory area into a contiguous
transfer
– User enabled auto-reloading of source, destination and control registers from initially
programmed values at the end of a block transfer
– Auto-loading of source, destination and control registers from system memory at end
of block transfer in block chaining mode
– Unaligned system address to data transfer width supported in hardware
• Channel Buffering
– 8-word FIFO
– Automatic packing/unpacking of data to fit FIFO width
• Channel Control
– Programmable multiple transaction size for each channel
– Support for cleanly disabling a channel without data loss
– Suspend DMA operation
– Programmable DMA lock transfer support
• Transfer Initiation
– Support four External DMA Requests and four Internal DMA request from the MP
Block
– Support for Software handshaking interface. Memory mapped registers can be used
to control the flow of a DMA transfer in place of a hardware handshaking interface
• Interrupt
– Programmable Interrupt generation on DMA Transfer completion Block Transfer
completion, Single/Multiple transaction completion or Error condition
7.8Debug and Test Features
• ARM926 Real-time In-circuit Emulator
– Two real-time Watchpoint Units
– Two Independent Registers: Debug Control Register and Debug Status Register
– Test Access Port Accessible through JTAG Protocol
– Debug Communications Channel
• Debug Unit
–Two-pin UART
– Debug Communication Channel Interrupt Handling
– Chip ID Register
• IEEE1149.1 JTAG Boundary-scan on All Digital Pins
A first level of address decoding is performed by the Bus Matrix, i.e., the implementation of the
Advanced High-performance Bus (AHB) for its Master and Slave interfaces with additional
features.
Decoding breaks up the 4G bytes of address space into 16 banks of 256M bytes. The banks 1 to
7 are directed to the EBI that associates these banks to the external chip selects EBI_NCS0 to
EBI_NCS5 and EBI_SDDRCS. The bank 0 is reserved for the addressing of the internal memories, and a second level of decoding provides 1M byte of internal memory area. The banks 8 to
11 are directed to MP Block (Slave 2) and may be used to address external memories. The bank
15 is split into three parts, one reserved for the peripherals that provides access to the Advanced
Peripheral Bus (APB), the two others are directed to MP Block (Slave 3) and may provide
access to the MP Block APB or to other AHB peripherals.
Other areas are unused and performing an access within them provides an abort to the master
requesting such an access.
Each Master has its own bus and its own decoder, thus allowing a different memory mapping
per Master. However, in order to simplify the mappings, all the masters have a similar address
decoding.
Regarding Master 0 and Master 1 (ARM926 Instruction and Data), three different Slaves are
assigned to the memory space decoded at address 0x0: one for internal boot, one for external
boot and one after remap. Refer to Table 8-1, “Internal Memory Mapping,” on page 23 for
details.
8.1Embedded Memories
• 32 Kbyte ROM
– Single Cycle Access at full matrix speed
• 32 Kbyte Fast SRAM
– Single Cycle Access at full matrix speed
• 20 Kbyte MP Block Fast Dual Port RAM (ten 512x36 DPR instances)
– Used as Dual Port RAM completely managed by MP Block
• 32 Kbyte MP Block Fast Single Port RAM (eight 512x72 SPR instances)
– Used as Single Port RAM completely managed by MP Block
8.1.1Internal Memory Mapping
Table 8-1 summarizes the Internal Memory Mapping, depending on the Remap status and the
BMS state at reset.
Table 8-1.Internal Memory Mapping
0x0000 0000ROMEBI_NCS0SRAM
0x0010 0000SRAM
0x0020 0000MP Block Slave 0 (hsel[0])
0x0030 0000MP Block Slave 0 (hsel[1])
0x0040 0000ROM
Address
REMAP = 0REMAP = 1
BMS = 0BMS = 1
6264A–CAP–21-May-07
23
Table 8-1.Internal Memory Mapping (Continued)
0x0050 0000LCD Controller User Interface
0x0060 0000USB High Speed Device Interface
0x0070 0000OHCI USB Host User Interface
0x0080 0000MP Block Slave 1 (hsel[0])
0x0090 0000MP Block Slave 1 (hsel[1])
0x00A0 0000MP Block Slave 1 (hsel[2])
0x00B0 0000MP Block Slave 1 (hsel[3])
8.1.1.1Internal 32 Kbyte Fast SRAM
The AT91CAP9S500A/AT91CAP9S250A integrates a 32 Kbyte SRAM, mapped at address
0x0010 0000,which is accessible from the AHB bus. This SRAM is single cycle accessible at full
matrix speed.
8.1.1.2Boot Memory
The AT91CAP9S500A/AT91CAP9S250A Matrix manages a boot memory which depends on
the level on the pin BMS at reset. The internal memory area mapped between address 0x0 and
0x000F FFFF is reserved at this effect.
If BMS is detected at 1, the boot memory is the memory connected on the Chip Select 0 of the
External Bus Interface. The default configuration for the Static Memory Controller, byte select
mode, 16-bit data bus, Read/Write controlled by Chip Select, allows to boot on a 16-bit non-volatile memory.
If BMS is detected at 0, the boot memory is the embedded ROM.
8.1.2Boot Program
• Downloads and runs an application from external storage media into internal SRAM
• Downloaded code size depends on embedded SRAM size
• Automatic detection of valid application
• Bootloader on a non-volatile memory
• Boot Uploader in case no valid program is detected in external NVM and supporting several
communication media
The external memories are accessed through the External Bus Interface. Each Chip Select lines
has a 256 Mbyte memory area assigned.
8.2External Memories
The external memories are accessed through the External Bus Interfaces. Each Chip Select line
has a 256 Mbyte memory area assigned.
Refer to Figure 8-1 on page 22.
– SPI DataFlash
®
connected on NPCS0 of the SPI0
– Serial communication on a DBGU
– USB Bulk Device Port
– External Memories Mapping
24
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
8.2.1External Bus Interface
The AT91CAP9S500A/AT91CAP9S250A features one External Bus Interface to offer high
bandwidth to the system and to prevent any bottleneck while accessing the external memories.
• Up to 26-bit Address Bus (up to 64 Mbytes linear per chip select)
• Up to 6 chips selects, Configurable Assignment:
– Static Memory Controller on NCS0
– Burst/CellularRAM Controller or Static Memory Controller on NCS1
– Static Memory Controller on NCS2
– Static Memory Controller on NCS3, Optional NAND Flash support
– Static Memory Controller on NCS4 - NCS5, Optional CompactFlash support
• One dedicated chip select:
– DDR/SDRAM Controller on NCS6
AT91CAP9S500A/AT91CAP9S250A
and CompactFlash
8.2.2Static Memory Controller
• 8-, 16- or 32-bit Data Bus
• Multiple Access Modes supported
– Byte Write or Byte Select Lines
– Asynchronous read in Page Mode supported (4- up to 32-byte page size)
• Multiple device adaptability
– Compliant with LCD Module
– Control signals programmable setup, pulse and hold time for each Memory Bank
• Multiple Wait State Management
– Programmable Wait State Generation
– External Wait Request
– Programmable Data Float Time
• Slow Clock mode supported
8.2.3DDR/SDRAM Controller
• Supported devices:
– Standard and Low Power SDRAM (Mobile SDRAM)
– Mobile DDR
• Numerous configurations supported
– 2K, 4K, 8K Row Address Memory Parts
– SDRAM with two or four Internal Banks
6264A–CAP–21-May-07
25
– SDRAM with 16- or 32-bit Data Path
– Mobile DDR with four Internal Banks
– Mobile DDR with 16-bit Data Path
• Programming facilities
– Word, half-word, byte access
– Automatic page break when Memory Boundary has been reached
– Multibank Ping-pong Access
– Timing parameters specified by software
– Automatic refresh operation, refresh rate is programmable
– Multiport (4 Ports)
• Energy-saving capabilities
– Self-refresh, power down and deep power down modes supported
• Error detection
– Refresh Error Interrupt
• DDR/SDRAM Power-up Initialization by software
• SDRAM CAS Latency of 1, 2 and 3 supported
• DDR CAS latency of 3 supported
• Auto Precharge Command not used
8.2.4Burst Cellular RAM Controller
• Supported devices:
– Synchronous Cellular RAM version 1.0, 1.5 and 2.0
• Numerous configurations supported
– 64K, 128K, 256K, 512K Row Address Memory Parts
– Cellular RAM with 16- or 32-bit Data Path
• Programming facilities
– Word, half-word, byte access
– Automatic page break when Memory Boundary has been reached
– Timing parameters specified by software
– Only Continuous read or write burst supported
• Energy-saving capabilities
– Standby and Deep Power Down (DPD) modes supported
– Low Power features (PASR/TCSR) supported
• Cellular RAM Power-up Initialization by hardware
• Cellular RAM CAS latency of 2 and 3 supported (Version 1.0)
• Cellular RAM CAS latency of 2, 3, 4, 5 and 6 supported (Version 1.5 and 2.0)
• Cellular RAM variable or fixed latency supported (Version 1.5 and 2.0)
• Multiplexed address/data bus supported (Version 2.0)
• Asynchronous and Page mode not supported.
26
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
8.2.5Error Corrected Code Controller
• Tracking the accesses to a NAND Flash device by trigging on the corresponding chip select
• Single bit error correction and 2-bit Random detection.
• Automatic Hamming Code Calculation while writing
– ECC value available in a register
• Automatic Hamming Code Calculation while reading
– Error Report, including error flag, correctable error flag and word address being
detected erroneous
– Support 8- or 16-bit NAND Flash devices with 512-, 1024-, 2048- or 4096-byte
pages
9.System Controller
The System Controller is a set of peripherals, which allow handling of key elements of the system, such as power, resets, clocks, time, interrupts, watchdog, etc.
The System Controller User Interface also embeds the registers that allow configuration of the
Matrix and a set of registers for the chip configuration. The chip configuration registers are used
to configure:
AT91CAP9S500A/AT91CAP9S250A
– EBI chip select assignment and voltage range for external memories
– MP Block
The System Controller peripherals are all mapped within the highest 16 Kbytes of address
space, between addresses 0xFFFF C000 and 0xFFFF FFFF.
However, all the registers of System Controller are mapped on the top of the address space.
This allows all the registers of the System Controller to be addressed from a single pointer by
using the standard ARM instruction set, as the Load/Store instructions have an indexing mode of
± 4 Kbytes.
Figure 9-1 on page 28 shows the System Controller block diagram.
Figure 8-1 on page 22 shows the mapping of the User Interfaces of the System Controller
peripherals.
6264A–CAP–21-May-07
27
9.1System Controller Block Diagram
Figure 9-1.AT91CAP9S500A/AT91CAP9S250A System Controller Block Diagram
NRST
SHDN
WKUP
XIN32
XOUT32
XIN
XOUT
PLLRCA
PLLRCB
PA0-PA31
PB0-PB31
PC0-PC31
PD0-PD31
periph_irq[2..29]
pit_irq
rtt_irq
wdt_irq
dbgu_irq
pmc_irq
rstc_irq
periph_nreset
dbgu_rxd
periph_nreset
proc_nreset
VDDCORE
POR
VDDBU
POR
backup_nreset
SLOW
CLOCK
OSC
UTMI PLL
MAIN
OSC
PLLA
PLLB
periph_nreset
periph_nreset
periph_clk[2]
dbgu_rxd
irq0-irq1
fiq
MCK
MCK
debug
SLCK
debug
idle
SLCK
SLCK
SLCK
backup_nreset
SLCK
int
UDPHSCK
por_ntrst
jtag_nreset
rtt_alarm
MAINCK
PLLACK
PLLBCK
System Controller
Advanced
Interrupt
Controller
Debug
Unit
Periodic
Interval
Timer
Watchdog
Timer
wdt_fault
WDRPROC
Reset
Controller
Real-Time
Timer
Shut-Down
Controller
Power
Management
Controller
PIO
Controllers
VDDCORE Powered
int
dbgu_irq
dbgu_txd
pit_irq
wdt_irq
rstc_irq
periph_nreset
proc_nreset
backup_nreset
VDDBU Powered
rtt_irq
rtt_alarm
Voltage
Controller
battery_save
4 General-purpose
Backup Registers
periph_clk[2..31]
pck[0-3]
PCK
UHPCK
MCK
pmc_irq
idle
periph_irq[2]
irq0-irq1
fiq
dbgu_txd
por_ntrst
nirq
nfiq
ntrst
proc_nreset
PCK
debug
jtag_nreset
MCK
periph_nreset
UDPHSCK
periph_clk[28]
periph_nreset
periph_irq[28]
UHPCK
periph_clk[29]
periph_nreset
periph_irq[29]
periph_clk[7..31]
periph_nreset
periph_irq[7..27]
in
out
enable
ARM926EJ-S
Boundary Scan
TAP Controller
Bus Matrix
USB High-speed
Device Port
USB Host
Por t
Embedded
Peripherals
28
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
9.2Reset Controller
• Based on two Power-on-Reset cells
– One on VDDBU and one on VDDCORE
• Status of the last reset
– Either general reset (VDDBU rising), wake-up reset (VDDCORE rising), software
• Controls the internal resets and the NRST pin output
– Allows shaping a reset signal for the external devices
9.3Shutdown Controller
• Shutdown and Wake-Up logic
– Software programmable assertion of the SHDN pin
– Deassertion Programmable on a WKUP pin level change or on alarm
9.4Clock Generator
• Embeds the low power 32,768 Hz Slow Clock Oscillator
– Provides the permanent Slow Clock SLCK to the system
• Embeds the Main Oscillator
– Oscillator bypass feature
– Supports 8 to 16 MHz crystals
– 12 MHz crystal is required for USB High-Speed Device
• Embeds 2 PLLs
– Output 80 to 200 MHz clocks
– Integrates an input divider to increase output accuracy
– 1 MHz minimum input frequency
AT91CAP9S500A/AT91CAP9S250A
reset, user reset or watchdog reset
Figure 9-2.Clock Generator Block Diagram
XIN32
XOUT32
XIN
XOUT
PLLRCA
PLLRCB
6264A–CAP–21-May-07
Clock Generator
Slow Clock
Oscillator
Main
Oscillator
PLL and
Divider A
PLL and
Divider B
Power
Management
Controller
Slow Clock
SLCK
Main Clock
MAINCK
PLLA Clock
PLLACK
PLLB Clock
PLLBCK
ControlStatus
29
9.5Power Management Controller
•Provides:
– the Processor Clock PCK
– the Master Clock MCK, in particular to the Matrix and the memory interfaces
– the USB High-speed Device Clock UDPHSCK
– the USB Host Clock UHPCK
– independent peripheral clocks, typically at the frequency of MCK
– four programmable clock outputs: PCK0 to PCK3
• Five flexible operating modes:
– Normal Mode, processor and peripherals running at a programmable frequency
– Idle Mode, processor stopped waiting for an interrupt
– Slow Clock Mode, processor and peripherals running at low frequency
– Standby Mode, mix of Idle and Backup Mode, peripheral running at low frequency,
processor stopped waiting for an interrupt
– Backup Mode, Main Power Supplies off, VDDBU powered by a battery
Figure 9-3.AT91CAP9S500A/AT91CAP9S250A Power Management Controller Block Diagram
Processor
SLCK
MAINCK
PLLACK
PLLBCK
Master Clock Controller
Prescaler
/1,/2,/4,...,/64
Clock
Controller
Idle Mode
Divider
/1,/2,/4
Peripherals
Clock Controller
ON/OFF
Programmable Clock Controller
PCK
int
MCK
periph_clk[..]
DDRCK
9.6Periodic Interval Timer
• Includes a 20-bit Periodic Counter, with less than 1 µs accuracy
• Includes a 12-bit Interval Overlay Counter
• Real-time OS or Linux/WinCE compliant tick generator
• Windowed, prevents the processor to be in a dead-lock on the watchdog access
9.8Real-time Timer
• Two Real-time Timers, allowing backup of time with different accuracies
– 32-bit Free-running back-up Counter
– Integrates a 16-bit programmable prescaler running on the embedded 32,768 Hz
oscillator
– Alarm Register to generate a wake-up of the system through the Shutdown
Controller
9.9General-Purpose Backed-up Registers
• Four 32-bit backup general-purpose registers
9.10Advanced Interrupt Controller
• Controls the interrupt lines (nIRQ and nFIQ) of the ARM Processor
• Thirty-two individually maskable and vectored interrupt sources
– Source 0 is reserved for the Fast Interrupt Input (FIQ)
– Source 1 is reserved for system peripherals (PIT, RTT, PMC, DBGU, etc.)
– Programmable Edge-triggered or Level-sensitive Internal Sources
– Programmable Positive/Negative Edge-triggered or High/Low Level-sensitive
• Four External Sources plus the Fast Interrupt signal
• 8-level Priority Controller
– Drives the Normal Interrupt of the processor
– Handles priority of the interrupt sources 1 to 31
– Higher priority interrupts can be served during service of lower priority interrupt
• Vectoring
– Optimizes Interrupt Service Routine Branch and Execution
– One 32-bit Vector Register per interrupt source
– Interrupt Vector Register reads the corresponding current Interrupt Vector
•Protect Mode
– Easy debugging by preventing automatic operations when protect models are
enabled
•Fast Forcing
– Permits redirecting any normal interrupt source on the Fast Interrupt of the
processor
9.11Debug Unit
6264A–CAP–21-May-07
• Composed of two functions
–Two-pin UART
– Debug Communication Channel (DCC) support
31
•Two-pin UART
• Debug Communication Channel Support
9.12Chip Identification
• Chip ID: 0x039A03A0
• JTAG ID: 0x05B1B03F
• ARM926 TAP ID: 0x0792603F
9.13PIO Controllers
• 4 PIO Controllers, PIOA to PIOD, controlling a total of 128 I/O Lines
• Each PIO Controller controls up to 32 programmable I/O Lines
• Fully programmable through Set/Clear Registers
• Multiplexing of two peripheral functions per I/O Line
• For each I/O Line (whether assigned to a peripheral or used as general purpose I/O)
• Synchronous output, provides Set and Clear of several I/O lines in a single write
– Implemented features are 100% compatible with the standard Atmel USART
– Independent receiver and transmitter with a common programmable Baud Rate
Generator
– Even, Odd, Mark or Space Parity Generation
– Parity, Framing and Overrun Error Detection
– Automatic Echo, Local Loopback and Remote Loopback Channel Modes
– Support for two PDC channels with connection to receiver and transmitter
– Offers visibility of and interrupt trigger from COMMRX and COMMTX signals from
the ARM Processor’s ICE Interface
– PIOA has 32 I/O Lines
– PIOB has 32 I/O Lines
– PIOC has 32 I/O Lines
– PIOD has 32 I/O Lines
– Input change interrupt
– Glitch filter
– Multi-drive option enables driving in open drain
– Programmable pull up on each I/O line
– Pin data status register, supplies visibility of the level on the pin at any time
32
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
10. Peripherals
10.1User Interface
10.2Identifiers
AT91CAP9S500A/AT91CAP9S250A
The peripherals are mapped in the upper 256 Mbytes of the address space between the
addresses 0xFFFA 0000 and 0xFFFC FFFF. Each user peripheral is allocated 16 Kbytes of
address space.
A complete memory map is presented in Figure 8-1 on page 22.
The AT91CAP9S500A/AT91CAP9S250A embeds a wide range of peripherals. Table 10-1
defines the Peripheral Identifiers of the AT91CAP9S500A/AT91CAP9S250A. A peripheral identifier is required for the control of the peripheral interrupt with the Advanced Interrupt Controller
and for the control of the peripheral clock with the Power Management Controller.
The System Interrupt in Source 1 is the wired-OR of the interrupt signals coming from:
• the DDR/SDRAM Controller
• the BCRAM Controller
• the Debug Unit
• the Periodic Interval Timer
• the Real-Time Timer
• the Watchdog Timer
• the Reset Controller
• the Power Management Controller
• the MP Block
The clock of these peripherals cannot be deactivated and Peripheral ID 1 can only be used
within the Advanced Interrupt Controller.
External
Interrupt
10.2.1.2External Interrupts
All external interrupt signals, i.e., the Fast Interrupt signal FIQ or the Interrupt signals IRQ0 to
IRQ1, use a dedicated Peripheral ID. However, there is no clock control associated with these
peripheral IDs.
10.2.1.3Timer Counter Interrupts
The three Timer Counter channels interrupt signals are OR-wired together to provide the interrupt source 19 of the Advanced Interrupt Controller. This forces the programmer to read all
Timer Counter status registers before branching the right Interrupt Service Routine.
The Timer Counter channels clocks cannot be deactivated independently. Switching off the
clock of the Peripheral 19 disables the clock of the 3 channels.
34
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
AT91CAP9S500A/AT91CAP9S250A
10.3Peripherals Signals Multiplexing on I/O Lines
The AT91CAP9S500A/AT91CAP9S250A features 4 PIO controllers, PIOA, PIOB, PIOC and
PIOD, that multiplex the I/O lines of the peripheral set.
Each PIO Controller controls up to 32 lines. Each line can be assigned to one of two peripheral
functions, A or B. The multiplexing tables in the following paragraphs define how the I/O lines of
the peripherals A and B are multiplexed on the PIO Controllers. The two columns “Function” and
“Comments” have been inserted in this table for the user’s own comments; they may be used to
track how pins are defined in an application.
Note that some peripheral functions which are output only may be duplicated within both tables.
The column “Reset State” indicates whether the PIO Line resets in I/O mode or in peripheral
mode. If I/O is mentioned, the PIO Line resets in input with the pull-up enabled, so that the
device is maintained in a static state as soon as the reset is released. As a result, the bit corresponding to the PIO Line in the register PIO_PSR (Peripheral Status Register) resets low.
If a signal name is mentioned in the “Reset State” column, the PIO Line is assigned to this function and the corresponding bit in PIO_PSR resets high. This is the case of pins controlling
memories, in particular the address lines, which require the pin to be driven as soon as the reset
is released. Note that the pull-up resistor is also enabled in this case.
6264A–CAP–21-May-07
35
10.3.1PIO Controller A Multiplexing
Table 10-2.Multiplexing on PIO Controller A
PIO Controller AApplication Usage
Reset
I/O LinePeripheral APeripheral BComments
PA0MCI0_D0SPI0_MISOI/OVDDIOP0
PA1MCI0_CDSPI0_MOSII/OVDDIOP0
PA2MCI0_CKSPI0_SPCKI/OVDDIOP0
PA3MCI0_D1SPI0_NPCS1I/OVDDIOP0
PA4MCI0_D2SPI0_NPCS2I/OVDDIOP0
PA5MCI0_D3SPI0_NPCS0I/OVDDIOP0
PA6AC97FSI/OVDDIOP0
PA7AC97CKI/OVDDIOP0
PA8AC97TXI/OVDDIOP0
PA9AC97RXI/OVDDIOP0
PA10IRQ0PWM1I/OVDDIOP0
PA11DMARQ0PWM3I/OVDDIOP0
PA12CANTXPCK0I/OVDDIOP0
PA13CANRXI/OVDDIOP0
PA14TCLK2IRQ1I/OVDDIOP0
PA15DMARQ3PCK2I/OVDDIOP0
PA16MCI1_CKISI_D0I/OVDDIOP1
PA17MCI1_CDISI_D1I/OVDDIOP1
State
Power
SupplyFunctionComments
PA18MCI1_D0ISI_D2I/OVDDIOP1
PA19MCI1_D1ISI_D3I/OVDDIOP1
PA20MCI1_D2ISI_D4I/OVDDIOP1
PA21MCI1_D3ISI_D5I/OVDDIOP1
PA22TXD0ISI_D6I/OVDDIOP1
PA23RXD0ISI_D7I/OVDDIOP1
PA24RTS0ISI_PCKI/OVDDIOP1
PA25CTS0ISI_HSYNCI/OVDDIOP1
PA26SCK0ISI_VSYNCI/OVDDIOP1
PA27PCK1ISI_MCKI/OVDDIOP1
PA28SPI0_NPCS3ISI_D8I/OVDDIOP1
PA29TIOA0ISI_D9I/OVDDIOP1
PA30TIOB0ISI_D10I/OVDDIOP1
PA31DMARQ1ISI_D11I/OVDDIOP1
36
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
10.3.2PIO Controller B Multiplexing
Table 10-3.Multiplexing on PIO Controller B
PIO Controller BApplication Usage
AT91CAP9S500A/AT91CAP9S250A
Reset
I/O LinePeripheral APeripheral BComments
PB0TF0I/OVDDIOP0
PB1TK0I/OVDDIOP0
PB2TD0I/OVDDIOP0
PB3RD0I/OVDDIOP0
PB4RK0TWDI/OVDDIOP0
PB5RF0TWCKI/OVDDIOP0
PB6TF1TIOA1I/OVDDIOP0
PB7TK1TIOB1I/OVDDIOP0
PB8TD1PWM2I/OVDDIOP0
PB9RD1LCDCCI/OVDDIOP0
PB10RK1PCK1I/OVDDIOP0
PB11RF1I/OVDDIOP0
PB12SPI1_MISOI/OVDDIOP0
PB13SPI1_MOSIAD0I/OVDDIOP0
PB14SPI1_SPCKAD1I/OVDDIOP0
PB15SPI1_NPCS0AD2I/OVDDIOP0
PB16SPI1_NPCS1AD3I/OVDDIOP0
PB17SPI1_NPCS2AD4I/OVDDIOP0
State
Power
SupplyFunctionComments
PB18SPI1_NPCS3AD5I/OVDDIOP0
PB19PWM0AD6I/OVDDIOP0
PB20PWM1AD7I/OVDDIOP0
PB21ETXCK/EREFCKTIOA2I/OVDDIOP0
PB22ERXDVTIOB2I/OVDDIOP0
PB23ETX0PCK3I/OVDDIOP0
PB24ETX1I/OVDDIOP0
PB25ERX0I/OVDDIOP0
PB26ERX1I/OVDDIOP0
PB27ERXERI/OVDDIOP0
PB28ETXENTCLK0I/OVDDIOP0
PB29EMDCPWM3I/OVDDIOP0
PB30EMDIOI/OVDDIOP0
PB31ADTRIGEF100I/OVDDIOP0
6264A–CAP–21-May-07
37
10.3.3PIO Controller C Multiplexing
Table 10-4.Multiplexing on PIO Controller C
PIO Controller CApplication Usage
Reset
I/O LinePeripheral APeripheral BComments
PC0LCDVSYNCI/OVDDIOP0
PC1LCDHSYNCI/OVDDIOP0
PC2LCDDOTCKI/OVDDIOP0
PC3LCDDENPWM1I/OVDDIOP0
PC4LCDD0LCDD3I/OVDDIOP0
PC5LCDD1LCDD4I/OVDDIOP0
PC6LCDD2LCDD5I/OVDDIOP0
PC7LCDD3LCDD6I/OVDDIOP0
PC8LCDD4LCDD7I/OVDDIOP0
PC9LCDD5LCDD10I/OVDDIOP0
PC10LCDD6LCDD11I/OVDDIOP0
PC11LCDD7LCDD12I/OVDDIOP0
PC12LCDD8LCDD13I/OVDDIOP0
PC13LCDD9LCDD14I/OVDDIOP0
PC14LCDD10LCDD15I/OVDDIOP0
PC15LCDD11LCDD19I/OVDDIOP0
PC16LCDD12LCDD20I/OVDDIOP0
PC17LCDD13LCDD21I/OVDDIOP0
State
Power
SupplyFunctionComments
PC18LCDD14LCDD22I/OVDDIOP0
PC19LCDD15LCDD23I/OVDDIOP0
PC20LCDD16ETX2I/OVDDIOP0
PC21LCDD17ETX3I/OVDDIOP0
PC22LCDD18ERX2I/OVDDIOP0
PC23LCDD19ERX3I/OVDDIOP0
PC24LCDD20ETXERI/OVDDIOP0
PC25LCDD21ECRSI/OVDDIOP0
PC26LCDD22ECOLI/OVDDIOP0
PC27LCDD23ERXCKI/OVDDIOP0
PC28PWM0TCLK1I/OVDDIOP0
PC29PCK0PWM2I/OVDDIOP0
PC30DRXDI/OVDDIOP0
PC31DTXDI/OVDDIOP0
38
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
10.3.4PIO Controller D Multiplexing
Table 10-5.Multiplexing on PIO Controller D
PIO Controller DApplication Usage
AT91CAP9S500A/AT91CAP9S250A
Reset
I/O LinePeripheral APeripheral BComments
PD0TXD1SPI0_NPCS2I/OVDDIOP0
PD1RXD1SPI0_NPCS3I/OVDDIOP0
PD2TXD2SPI1_NPCS2I/OVDDIOP0
PD3RXD2SPI1_NPCS3I/OVDDIOP0
PD4FIQI/OVDDIOP0
PD5DMARQ2RTS2I/OVDDIOP0
PD6NWAITCTS2I/OVDDIOM
PD7NCS4/CFCS0RTS1I/OVDDIOM
PD8NCS5/CFCS1CTS1I/OVDDIOM
PD9CFCE1SCK2I/OVDDIOM
PD10CFCE2SCK1I/OVDDIOM
PD11NCS2I/OVDDIOM
PD12A23A23VDDIOM
PD13A24A24VDDIOM
PD14A25/CFRNWA25VDDIOM
PD15NCS3/NANDCSI/OVDDIOM
PD16D16I/OVDDIOM
PD17D17I/OVDDIOM
State
Power
SupplyFunctionComments
PD18D18I/OVDDIOM
PD19D19I/OVDDIOM
PD20D20I/OVDDIOM
PD21D21I/OVDDIOM
PD22D22I/OVDDIOM
PD23D23I/OVDDIOM
PD24D24I/OVDDIOM
PD25D25I/OVDDIOM
PD26D26I/OVDDIOM
PD27D27I/OVDDIOM
PD28D28I/OVDDIOM
PD29D29I/OVDDIOM
PD30D30I/OVDDIOM
PD31D31I/OVDDIOM
6264A–CAP–21-May-07
39
10.4Embedded Peripherals
10.4.1Serial Peripheral Interface
• Supports communication with serial external devices
– Four chip selects with external decoder support allow communication with up to 15
peripherals
– Serial memories, such as DataFlash and 3-wire EEPROMs
– Serial peripherals, such as ADCs, DACs, LCD Controllers, CAN Controllers and
Sensors
– External co-processors
• Master or slave serial peripheral bus interface
– 8- to 16-bit programmable data length per chip select
– Programmable phase and polarity per chip select
– Programmable transfer delays between consecutive transfers and between clock
and data per chip select
– Programmable delay between consecutive transfers
– Selectable mode fault detection
• Very fast transfers supported
– Transfers with baud rates up to MCK
– The chip select line may be left active to speed up transfers on the same device
10.4.2Two-wire Interface
• Compatibility with standard two-wire serial memory
• One, two or three bytes for slave address
• Sequential read/write operations
10.4.3USART
• Programmable Baud Rate Generator
• 5- to 9-bit full-duplex synchronous or asynchronous serial communications
• RS485 with driver control signal
• ISO7816, T = 0 or T = 1 Protocols for interfacing with smart cards
– 1, 1.5 or 2 stop bits in Asynchronous Mode or 1 or 2 stop bits in Synchronous Mode
– Parity generation and error detection
– Framing error detection, overrun error detection
– MSB- or LSB-first
– Optional break generation and detection
– By 8 or by-16 over-sampling receiver frequency
– Hardware handshaking RTS-CTS
– Receiver time-out and transmitter timeguard
– Optional Multi-drop Mode with address generation and detection
– Optional Manchester Encoding
– NACK handling, error counter with repetition and iteration limit
40
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
• IrDA modulation and demodulation
– Communication at up to 115.2 Kbps
• Test Modes
– Remote Loopback, Local Loopback, Automatic Echo
10.4.4Synchronous Serial Controller
• Provides serial synchronous communication links used in audio and telecom applications
(with CODECs in Master or Slave Modes, I
• Contains an independent receiver and transmitter and a common clock divider
• Offers a configurable frame sync and data length
• Receiver and transmitter can be programmed to start automatically or on detection of
different event on the frame sync signal
• Receiver and transmitter include a data signal, a clock signal and a frame synchronization
signal
10.4.5AC97 Controller
• Compatible with AC97 Component Specification V2.2
• Capable to Interface with a Single Analog Front end
• Three independent RX Channels and three independent TX Channels
– One RX and one TX channel dedicated to the AC97 Analog Front end control
– One RX and one TX channel for data transfers, associated with a PDC
– One RX and one TX channel for data transfers with no PDC
• Time Slot Assigner allowing to assign up to 12 time slots to a channel
• Channels support mono or stereo up to 20 bit sample length
– Variable sampling rate AC97 Codec Interface (48KHz and below)
AT91CAP9S500A/AT91CAP9S250A
2
S, TDM Buses, Magnetic Card Reader, etc.)
10.4.6Timer Counter
6264A–CAP–21-May-07
• Three 16-bit Timer Counter Channels
• Wide range of functions including:
– Frequency Measurement
– Event Counting
– Interval Measurement
– Pulse Generation
–Delay Timing
– Pulse Width Modulation
– Up/down Capabilities
• Each channel is user-configurable and contains:
– Three external clock inputs
– Five internal clock inputs
– Two multi-purpose input/output signals
• Two global registers that act on all three TC Channels
41
10.4.7Pulse Width Modulation Controller
• 4 channels, one 16-bit counter per channel
• Common clock generator, providing Thirteen Different Clocks
– A Modulo n counter providing eleven clocks
– Two independent Linear Dividers working on modulo n counter outputs
• Independent channel programming
– Independent Enable Disable Commands
– Independent Clock Selection
– Independent Period and Duty Cycle, with Double Bufferization
– Programmable selection of the output waveform polarity
– Programmable center or left aligned output waveform
• Compatibility with MultiMedia Card Specification Version 3.31
• Compatibility with SD Memory Card Specification Version 1.0
• Compatibility with SDIO Specification Version V1.0.
• Cards clock rate up to Master Clock divided by 2
• Embedded power management to slow down clock rate when not used
• Each MCI has one slot supporting
– One MultiMediaCard bus (up to 30 cards) or
– One SD Memory Card
– One SDIO Card
• Support for stream, block and multi-block data read and write
10.4.9CAN Controller
42
AT91CAP9S500A/AT91CAP9S250A
• Fully compliant with 16-mailbox CAN 2.0A and 2.0B CAN Controllers
• Bit rates up to 1Mbit/s.
• Object-oriented mailboxes, each with the following properties:
– CAN Specification 2.0 Part A or 2.0 Part B Programmable for Each Message
– Object Configurable as receive (with overwrite or not) or transmit
– Local Tag and Mask Filters up to 29-bit Identifier/Channel
– 32 bits access to Data registers for each mailbox data object
– Uses a 16-bit time stamp on receive and transmit message
– Hardware concatenation of ID unmasked bitfields to speedup family ID processing
– 16-bit internal timer for Time Stamping and Network synchronization
– Programmable reception buffer length up to 16 mailbox object
– Priority Management between transmission mailboxes
– Autobaud and listening mode
– Low power mode and programmable wake-up on bus activity or by the application
– Data, Remote, Error and Overload Frame handling
6264A–CAP–21-May-07
10.4.10USB Host Port
• Compliance with OHCI Rev 1.0 Specification
• Compliance with USB V2.0 Full-speed and Low-speed Specification
• Supports both Low-speed 1.5 Mbps and Full-speed 12 Mbps devices
• Root hub integrated with two downstream USB ports
• Two embedded USB transceivers
• Supports power management
• Operates as a master on the Matrix
• Internal DMA Controller, operating as a Master on Bus Matrix
10.4.11USB High Speed Device Port
• USB V2.0 high-speed compliant, 480 MBits per second
• Embedded USB V2.0 UTMI+ high-speed transceiver
• Embedded 4K-byte dual-port RAM for endpoints
• Embedded 6 channels DMA controller
• Suspend/Resume logic
• Up to 2 or 3 banks for isochronous and bulk endpoints
• Single and Dual scan color and monochrome passive STN LCD panels supported
• Single scan active TFT LCD panels supported
• 4-bit single scan, 8-bit single or dual scan, 16-bit dual scan STN interfaces supported
• Up to 24-bit single scan TFT interfaces supported
• Up to 16 gray levels for mono STN and up to 4096 colors for color STN displays
• 1, 2 bits per pixel (palletized), 4 bits per pixel (non-palletized) for mono STN
• 1, 2, 4, 8 bits per pixel (palletized), 16 bits per pixel (non-palletized) for color STN
• 1, 2, 4, 8 bits per pixel (palletized), 16, 24 bits per pixel (non-palletized) for TFT
• Single clock domain architecture
• Resolution supported up to 2048x2048
• 2D-DMA Controller for management of virtual Frame Buffer
• Automatic resynchronization of the frame buffer pointer to prevent flickering
10.4.13Ethernet 10/100 MAC
• Compatibility with IEEE Standard 802.3
• 10 and 100 MBits per second data throughput capability
– Allows management of frame buffer larger than the screen size and moving the view
over this virtual frame buffer
6264A–CAP–21-May-07
43
• Full- and half-duplex operations
• MII or RMII interface to the physical layer
• Register Interface to address, data, status and control registers
• Internal DMA Controller, operating as a Master on Bus Matrix
• Interrupt generation to signal receive and transmit completion
• 28-byte transmit and 28-byte receive FIFOs
• Automatic pad and CRC generation on transmitted frames
• Address checking logic to recognize four 48-bit addresses
• Support promiscuous mode where all valid frames are copied to memory
• Support physical layer management through MDIO interface control of alarm and update
time/calendar data in
10.4.14Image Sensor Interface
• ITU-R BT. 601/656 8-bit mode external interface support
• Support for ITU-R BT.656-4 SAV and EAV synchronization
• Vertical and horizontal resolutions up to 2048 x 2048
• Preview Path up to 640*480
• Support for packed data formatting for YCbCr 4:2:2 formats
• Preview scaler to generate smaller size image
• Programmable frame capture rate
• Internal DMA Controller, operating as a Master on Bus Matrix
44
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
11. Metal Programmable Block
The Metal Programmable Block (MPBlock) is connected to internal resources as the AHB bus or
interrupts and to external resources as dedicated I/O pads or UTMI+ core.
The MPBlock may be used to implement the Advanced High-speed Bus (AHB) or Advanced
Peripheral Bus (APB) custom peripherals. The MPBlock adds approximately 500K or 250K
gates of standard cell custom logic to the AT91CAP9S500A/AT91CAP9S250A base design.
Figure 11-1 shows the MPBlock and its connections to internal or external resources.
Figure 11-1. MPBlock Connectivity
DMAITs
CLOCKS
CAN,
MACB, OHCI
ENABLE
AT91CAP9S500A/AT91CAP9S250A
AHB MASTERSAHB SLAVES
MPBlock Test Wrapper
MPBLOCK
500K Gates (CAP9500)
250K Gates (CAP9250)
DPR
512x36
10x
8x
CHIP ID
JTAG ID
11.1Internal Connectivity
In order to connect the MPBlock custom peripheral to the AT91CAP9S500A/AT91CAP9S250A
base design, the following connections are made.
11.1.1Clocks
The MPBlock receives the following clocks:
• 32,768 Hz Slow Clock
• 8 to 16 MHz Main Oscillator Clock
• PLLA Clock
• PLLB Clock
• 48 MHz USB Clock
• 12 MHz USB Clock
UTMI+
PHY
Chip Boundary Scan
MPIOA[31:0]
SPR
512x72
MPIOB[44:0]
6264A–CAP–21-May-07
45
• 30 or 60 MHz UTMI+ USB Clock
• MCK System Clock
• DDRCK Dual Rate System Clock
• PCK Processor Clock
• 5 Gated Peripherals Clock (for AHB and/or APB peripherals) corresponding to Peripheral ID
11.1.2AHB Master Buses
The MPBlock may implement up to three AHB masters, each having a dedicated AHB master
bus connected to the Bus Matrix.
11.1.3AHB Slave Buses
The MPBlock receives four different AHB slave buses coming from the Bus Matrix. Each bus
has two or four select signals that can implement up to 12 AHB slaves.
11.1.4Interrupts
The MPBlock is connected to 5 dedicated interrupt lines corresponding to Peripheral ID 3 to 9.
It is also connected to two other interrupt lines (through OR gate) corresponding to Peripheral ID
1 and 2
11.1.5DMA Channels
The MPBlock is connected to 4 DMA hardware handshaking interfaces, allowing it to implement
up to 4 DMA enabled peripherals.
3 to 7
11.1.6Peripheral DMA Channels
The MPBlock is not connected to the Peripheral DMA Controller. In order to implement Peripheral DMA Controller (PDC) enabled APB peripherals, a PDC and an AHB-to-APB Bridge must
be integrated into the MPBlock using one AHB master and one AHB slave bus.
11.1.7MPBlock Single Port RAMs
The MPBlock is connected to eight instances of 512x72 High-Speed Single Port RAMs.
The MPBlock has control over all memory connections.
11.1.8MPBlock Dual Port RAMs
The MPBlock is connected to ten instances of 512x36 High-Speed Dual Port RAMs.
The MPBlock has control over all memory connections.
11.1.9Optional Peripherals Enable
The MPBlock drives the enable of the optional peripherals, and so can enable or disable any of
the optional peripherals.
46
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
11.2External Connectivity
The MPBlock is connected to the following external resources.
11.2.1Dedicated I/O Lines
The MPBlock is directly connected to 77 (32 MPIOA and 45 MPIOB lines) dedicated I/O Pads
with the following features:
• Supply/Drive control pin (needed for high-speed or low voltage interfaces)
• Pull-up control pin
• Supported logic levels include:
– LVCMOS33 at 100 MHz maximum frequency
– LVCMOS25 at 50 MHz maximum frequency
– LVCMOS18 at 100 MHz maximum frequency
Only 32 dedicated I/O pins are available in the TFBGA324 package.
11.2.2UTMI+ Transceiver
The MPBlock may be connected to the UTMI+ transceiver. As only one UTMI+ transceiver is
available, the USB High-speed Device and the MPBlock do not have access to the UTMI+ at the
same time. However, a dual role Master-Slave USB High-Speed may be implemented by using
the USB High-speed Device and integrating a High-speed Host in the MPBlock as the switching
between both is generated inside the MPBlock.
AT91CAP9S500A/AT91CAP9S250A
11.3Prototyping Solution
In order to prototype the final custom design, a Prototyping Platform version of the
AT91CAP9S500A/AT91CAP9S250A design has been created. The platform maps APB and
AHB masters or slaves into the FPGA located outside the chip with the following features and
restrictions:
• AT91CAP9S500A/AT91CAP9S250A to FPGA interface is provided to prototype AHB masters
and slave into the external FPGA exactly as if it were in MPBlock.
• Prototyped AHB Masters
– Prototyped AHB Masters have access to AT91CAP9S500A/AT91CAP9S250A slave
– Prototyped AHB Masters have access to MPBlock (FPGA) slave resources.
• Prototyped AHB Slaves
– Prototyped AHB Slaves may be accessed from AT91CAP9S500A/AT91CAP9S250A
– Prototyped AHB Slaves may be accessed from MPBlock (FPGA) resources.
• Prototyped APB Slaves
– APB bus must be created locally in the FPGA by implementing AHB to APB bridge.
Figure 11-2 shows a typical prototyping solution.
resources.
master resources.
Peripheral DMA controller may also be necessary to implement locally in the FPGA
in order to prototype PDC enabled APB peripherals.
6264A–CAP–21-May-07
47
Figure 11-2. Typical Prototyping Solution
MASTERSARM926EJ-S
AT91CAP9S500A/AT91CAP9S250A
CAP9500
CAP9250
EBI
Bus Matrix
AHB 2 APB
BRIDGE
DPR
APB
SLAVE
4-channel
DMA
CAP9500/CAP9250 FPGA Interface
Local AHB Matrix
PDC
SLAVE
RAM
APB
APB
Metal Programmable Block
500K Gates (CAP9500)
250K Gates (CAP9250)
FPGA Interface
MPIOA[31:0]MPIOB[44:0]
AHB
MASTER
DPR
AHB
SLAVE
Emulation Area
FPGA
AHB
MASTER
DPR
MPBlock
6264A–CAP–21-May-07
48
12. ARM926EJ-S Processor Overview
12.1Overview
The ARM926EJ-S processor is a member of the ARM9™ family of general-purpose microprocessors. The ARM926EJ-S implements ARM architecture version 5TEJ and is targeted at multitasking applications where full memory management, high performance, low die size and low
power are all important features.
The ARM926EJ-S processor supports the 32-bit ARM and 16-bit Thumb instruction sets,
enabling the user to trade off between high performance and high code density. It also supports
8-bit Java instruction set and includes features for efficient execution of Java bytecode, providing a Java performance similar to a JIT (Just-In-Time compilers), for the next generation of Javapowered wireless and embedded devices. It includes an enhanced multiplier design for
improved DSP performance.
The ARM926EJ-S processor supports the ARM debug architecture and includes logic to assist
in both hardware and software debug.
The ARM926EJ-S provides a complete high performance processor subsystem, including:
In Jazelle state, all instruction Fetches are in words.
12.3.2Switching State
The operating state of the ARM9EJ-S core can be switched between:
• ARM state and Thumb state using the BX and BLX instructions, and loads to the PC
50
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
• ARM state and Jazelle state using the BXJ instruction
All exceptions are entered, handled and exited in ARM state. If an exception occurs in Thumb or
Jazelle states, the processor reverts to ARM state. The transition back to Thumb or Jazelle
states occurs automatically on return from the exception handler.
12.3.3Instruction Pipelines
The ARM9EJ-S core uses two kinds of pipelines to increase the speed of the flow of instructions
to the processor.
A five-stage (five clock cycles) pipeline is used for ARM and Thumb states. It consists of Fetch,
Decode, Execute, Memory and Writeback stages.
A six-stage (six clock cycles) pipeline is used for Jazelle state It consists of Fetch,
Jazelle/Decode (two clock cycles), Execute, Memory and Writeback stages.
12.3.4Memory Access
The ARM9EJ-S core supports byte (8-bit), half-word (16-bit) and word (32-bit) access. Words
must be aligned to four-byte boundaries, half-words must be aligned to two-byte boundaries and
bytes can be placed on any byte boundary.
Because of the nature of the pipelines, it is possible for a value to be required for use before it
has been placed in the register bank by the actions of an earlier instruction. The ARM9EJ-S control logic automatically detects these cases and stalls the core or forward data.
AT91CAP9S500A/AT91CAP9S250A
12.3.5Jazelle Technology
The Jazelle technology enables direct and efficient execution of Java byte codes on ARM processors, providing high performance for the next generation of Java-powered wireless and
embedded devices.
The new Java feature of ARM9EJ-S can be described as a hardware emulation of a JVM (Java
Virtual Machine). Java mode will appear as another state: instead of executing ARM or Thumb
instructions, it executes Java byte codes. The Java byte code decoder logic implemented in
ARM9EJ-S decodes 95% of executed byte codes and turns them into ARM instructions without
any overhead, while less frequently used byte codes are broken down into optimized sequences
of ARM instructions. The hardware/software split is invisible to the programmer, invisible to the
application and invisible to the operating system. All existing ARM registers are re-used in
Jazelle state and all registers then have particular functions in this mode.
Minimum interrupt latency is maintained across both ARM state and Java state. Since byte
codes execution can be restarted, an interrupt automatically triggers the core to switch from
Java state to ARM state for the execution of the interrupt handler. This means that no special
provision has to be made for handling interrupts while executing byte codes, whether in hardware or in software.
12.3.6ARM9EJ-S Operating Modes
In all states, there are seven operation modes:
• User mode is the usual ARM program execution state. It is used for executing most
application programs
• Fast Interrupt (FIQ) mode is used for handling fast interrupts. It is suitable for high-speed data
transfer or channel process
• Interrupt (IRQ) mode is used for general-purpose interrupt handling
6264A–CAP–21-May-07
51
• Supervisor mode is a protected mode for the operating system
• Abort mode is entered after a data or instruction prefetch abort
• System mode is a privileged user mode for the operating system
• Undefined mode is entered when an undefined instruction exception occurs
Mode changes may be made under software control, or may be brought about by external interrupts or exception processing. Most application programs execute in User Mode. The non-user
modes, known as privileged modes, are entered in order to service interrupts or exceptions or to
access protected resources.
12.3.7ARM9EJ-S Registers
The ARM9EJ-S core has a total of 37 registers:
• 31 general-purpose 32-bit registers
• 6 32-bit status registers
Table 12-1 shows all the registers in all modes.
Table 12-1.ARM9TDMI
User and
System Mode
R0R0R0R0R0R0
R1R1R1R1R1R1
R2R2R2R2R2R2
R3R3R3R3R3R3
R4R4R4R4R4R4
R5R5R5R5R5R5
R6R6R6R6R6R6
R7R7R7R7R7R7
R8R8R8R8R8
R9R9R9R9R9
R10R10R10R10R10
R11R11R11R11R11
R12R12R12R12R12
R13R13_SVCR13_ABORTR13_UNDEFR13_IRQR13_FIQ
R14R14_SVCR14_ABORTR14_UNDEFR14_IRQR14_FIQ
PCPCPCPCPCPC
Supervisor
®
Modes and Registers Layout
ModeAbort Mode
Undefined
ModeInterrupt Mode
Fast Interrupt
Mode
R8_FIQ
R9_FIQ
R10_FIQ
R11_FIQ
R12_FIQ
52
CPSRCPSRCPSRCPSRCPSRCPSR
SPSR_SVCSPSR_ABORTSPSR_UNDEFSPSR_IRQSPSR_FIQ
Mode-specific banked registers
The ARM state register set contains 16 directly-accessible registers, r0 to r15, and an additional
register, the Current Program Status Register (CPSR). Registers r0 to r13 are general-purpose
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
AT91CAP9S500A/AT91CAP9S250A
registers used to hold either data or address values. Register r14 is used as a Link register that
holds a value (return address) of r15 when BL or BLX is executed. Register r15 is used as a program counter (PC), whereas the Current Program Status Register (CPSR) contains condition
code flags and the current mode bits.
In privileged modes (FIQ, Supervisor, Abort, IRQ, Undefined), mode-specific banked registers
(r8 to r14 in FIQ mode or r13 to r14 in the other modes) become available. The corresponding
banked registers r14_fiq, r14_svc, r14_abt, r14_irq, r14_und are similarly used to hold the values (return address for each mode) of r15 (PC) when interrupts and exceptions arise, or when
BL or BLX instructions are executed within interrupt or exception routines. There is another register called Saved Program Status Register (SPSR) that becomes available in privileged modes
instead of CPSR. This register contains condition code flags and the current mode bits saved as
a result of the exception that caused entry to the current (privileged) mode.
In all modes and due to a software agreement, register r13 is used as stack pointer.
The use and the function of all the registers described above should obey ARM Procedure Call
Standard (APCS) which defines:
• constraints on the use of registers
• stack conventions
• argument passing and result return
The Thumb state register set is a subset of the ARM state set. The programmer has direct
access to:
• Eight general-purpose registers r0-r7
• Stack pointer, SP
• Link register, LR (ARM r14)
•PC
• CPSR
There are banked registers SPs, LRs and SPSRs for each privileged mode (for more details see
the ARM9EJ-S Technical Reference Manual, ref. DDI0222B,
12.3.7.1Status Registers
The ARM9EJ-S core contains one CPSR, and five SPSRs for exception handlers to use. The
program status registers:
• hold information about the most recently performed ALU operation
• control the enabling and disabling of interrupts
• set the processor operation mode
revision r1p2 page 2-12).
6264A–CAP–21-May-07
53
Figure 12-2. Status Register Format
31 30 2928 27247 6 50
NZCV QJIFT
Reserved
Jazelle state bit
Reserved
Sticky Overflow
Overflow
Carry/Borrow/Extend
Zero
Negative/Less than
Mode
Mode bits
Thumb state bit
FIQ disable
IRQ disable
Figure 12-2 shows the status register format, where:
• N: Negative, Z: Zero, C: Carry, and V: Overflow are the four ALU flags
• The Sticky Overflow (Q) flag can be set by certain multiply and fractional arithmetic
instructions like QADD, QDADD, QSUB, QDSUB, SMLAxy, and SMLAWy needed to achieve
DSP operations.
The Q flag is sticky in that, when set by an instruction, it remains set until explicitly cleared by
an MSR instruction writing to the CPSR. Instructions cannot execute conditionally on the
status of the Q flag.
• The J bit in the CPSR indicates when the ARM9EJ-S core is in Jazelle state, where:
– J = 0: The processor is in ARM or Thumb state, depending on the T bit
– J = 1: The processor is in Jazelle state.
• Mode: five bits to encode the current processor mode
12.3.7.2Exceptions
Exception Types and Priorities
The ARM9EJ-S supports five types of exceptions. Each type drives the ARM9EJ-S in a privi-
leged mode. The types of exceptions are:
• Fast interrupt (FIQ)
• Normal interrupt (IRQ)
• Data and Prefetched aborts (Abort)
• Undefined instruction (Undefined)
• Software interrupt and Reset (Supervisor)
When an exception occurs, the banked version of R14 and the SPSR for the exception mode
are used to save the state.
More than one exception can happen at a time, therefore the ARM9EJ-S takes the arisen exceptions according to the following priority order:
• Reset (highest priority)
• Data Abort
•FIQ
•IRQ
•Prefetch Abort
• BKPT, Undefined instruction, and Software Interrupt (SWI) (Lowest priority)
54
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
The BKPT, or Undefined instruction, and SWI exceptions are mutually exclusive.
There is one exception in the priority scheme though, when FIQs are enabled and a Data Abort
occurs at the same time as an FIQ, the ARM9EJ-S core enters the Data Abort handler, and proceeds immediately to FIQ vector. A normal return from the FIQ causes the Data Abort handler to
resume execution. Data Aborts must have higher priority than FIQs to ensure that the transfer
error does not escape detection.
Exception Modes and Handling
Exceptions arise whenever the normal flow of a program must be halted temporarily, for example, to service an interrupt from a peripheral.
When handling an ARM exception, the ARM9EJ-S core performs the following operations:
1. Preserves the address of the next instruction in the appropriate Link Register that corresponds to the new mode that has been entered. When the exception entry is from:
– ARM and Jazelle states, the ARM9EJ-S copies the address of the next instruction
– THUMB state, the ARM9EJ-S writes the value of the PC into LR, offset by a value
2. Copies the CPSR into the appropriate SPSR.
3. Forces the CPSR mode bits to a value that depends on the exception.
4. Forces the PC to fetch the next instruction from the relevant exception vector.
The register r13 is also banked across exception modes to provide each exception handler with
private stack pointer.
AT91CAP9S500A/AT91CAP9S250A
into LR (current PC(r15) + 4 or PC + 8 depending on the exception).
(current PC + 2, PC + 4 or PC + 8 depending on the exception) that causes the
program to resume from the correct place on return.
The ARM9EJ-S can also set the interrupt disable flags to prevent otherwise unmanageable
nesting of exceptions.
When an exception has completed, the exception handler must move both the return value in
the banked LR minus an offset to the PC and the SPSR to the CPSR. The offset value varies
according to the type of exception. This action restores both PC and the CPSR.
The fast interrupt mode has seven private registers r8 to r14 (banked registers) to reduce or
remove the requirement for register saving which minimizes the overhead of context switching.
The Prefetch Abort is one of the aborts that indicates that the current memory access cannot be
completed. When a Prefetch Abort occurs, the ARM9EJ-S marks the prefetched instruction as
invalid, but does not take the exception until the instruction reaches the Execute stage in the
pipeline. If the instruction is not executed, for example because a branch occurs while it is in the
pipeline, the abort does not take place.
The breakpoint (BKPT) instruction is a new feature of ARM9EJ-S that is destined to solve the
problem of the Prefetch Abort. A breakpoint instruction operates as though the instruction
caused a Prefetch Abort.
A breakpoint instruction does not cause the ARM9EJ-S to take the Prefetch Abort exception until
the instruction reaches the Execute stage of the pipeline. If the instruction is not executed, for
example because a branch occurs while it is in the pipeline, the breakpoint does not take place.
12.3.8ARM Instruction Set Overview
The ARM instruction set is divided into:
6264A–CAP–21-May-07
• Branch instructions
55
• Data processing instructions
• Status register transfer instructions
• Load and Store instructions
• Coprocessor instructions
• Exception-generating instructions
ARM instructions can be executed conditionally. Every instruction contains a 4-bit condition
code field (bits[31:28]).
Table 12-2 gives the ARM instruction mnemonic list.
Table 12-2.ARM Instruction Mnemonic List
MnemonicOperationMnemonicOperation
MOVMoveMVNMove Not
ADDAddADCAdd with Carry
SUBSubtractSBCSubtract with Carry
RSBReverse SubtractRSCReverse Subtract with Carry
CMPCompareCMNCompare Negated
TSTTestTEQTest Equivalence
ANDLogical ANDBICBit Clear
EORLogical Exclusive ORORRLogical (inclusive) OR
MULMultiplyMLAMultiply Accumulate
SMULLSign Long MultiplyUMULLUnsigned Long Multiply
SMLAL
MSRMove to Status RegisterMRSMove From Status Register
B BranchBLBranch and Link
BXBranch and ExchangeSWISoftware Interrupt
LDRLoad WordSTRStore Word
LDRSHLoad Signed Halfword
LDRSBLoad Signed Byte
LDRHLoad Half WordSTRHStore Half Word
LDRBLoad ByteSTRBStore Byte
LDRBT
LDRTLoad Register with TranslationSTRTStore Register with Translation
LDMLoad MultipleSTMStore Multiple
SWPSwap WordSWPBSwap Byte
MCRMove To CoprocessorMRCMove From Coprocessor
LDCLoad To CoprocessorSTCStore From Coprocessor
CDPCoprocessor Data Processing
Signed Long Multiply
Accumulate
Load Register Byte with
Translation
UMLAL
STRBT
Unsigned Long Multiply
Accumulate
Store Register Byte with
Translation
56
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
12.3.9New ARM Instruction Set
.
Table 12-3.New ARM Instruction Mnemonic List
MnemonicOperationMnemonicOperation
BXJBranch and exchange to JavaMRRCMove double from coprocessor
(1)
BLX
SMLAxy
SMLAL
SMLAWy
SMULxySigned Multiply 16 * 16 bitPLD
SMULWySigned Multiply 32 * 16 bitSTRDStore Double
QADDSaturated AddSTC2
QDADDSaturated Add with DoubleLDRDLoad Double
QSUBSaturated subtractLDC2
QDSUBSaturated Subtract with doubleCLZCount Leading Zeroes
AT91CAP9S500A/AT91CAP9S250A
Branch, Link and exchangeMCR2
Signed Multiply Accumulate 16 *
16 bit
Signed Multiply Accumulate
Long
Signed Multiply Accumulate 32 *
16 bit
MCRRMove double to coprocessor
CDP2
BKPTBreakpoint
Alternative move of ARM reg to
coprocessor
Alternative Coprocessor Data
Processing
Soft Preload, Memory prepare to
load from address
Alternative Store from
Coprocessor
Alternative Load to
Coprocessor
Notes: 1. A Thumb BLX contains two consecutive Thumb instructions, and takes four cycles.
12.3.10Thumb Instruction Set Overview
The Thumb instruction set is a re-encoded subset of the ARM instruction set.
The Thumb instruction set is divided into:
• Branch instructions
• Data processing instructions
• Load and Store instructions
• Load and Store multiple instructions
• Exception-generating instruction
Table 5 shows the Thumb instruction set. Table 12-4 gives the Thumb instruction mnemonic list.
Table 12-4.Thumb Instruction Mnemonic List
MnemonicOperationMnemonicOperation
MOVMoveMVNMove Not
ADDAddADCAdd with Carry
SUBSubtractSBCSubtract with Carry
CMPCompareCMNCompare Negated
TSTTestNEGNegate
ANDLogical ANDBICBit Clear
EORLogical Exclusive ORORRLogical (inclusive) OR
6264A–CAP–21-May-07
57
Table 12-4.Thumb Instruction Mnemonic List (Continued)
MnemonicOperationMnemonicOperation
LSLLogical Shift LeftLSRLogical Shift Right
ASRArithmetic Shift RightRORRotate Right
MULMultiplyBLXBranch, Link, and Exchange
B BranchBLBranch and Link
BXBranch and ExchangeSWISoftware Interrupt
LDRLoad WordSTRStore Word
LDRHLoad Half WordSTRHStore Half Word
LDRBLoad ByteSTRBStore Byte
LDRSHLoad Signed HalfwordLDRSBLoad Signed Byte
LDMIALoad MultipleSTMIAStore Multiple
PUSHPush Register to stackPOPPop Register from stack
BCCConditional BranchBKPTBreakpoint
12.4CP15 Coprocessor
Coprocessor 15, or System Control Coprocessor CP15, is used to configure and control all the
items in the list below:
• ARM9EJ-S
• Caches (ICache, DCache and write buffer)
•TCM
•MMU
• Other system options
To control these features, CP15 provides 16 additional registers. See Table 12-5.
58
Table 12-5.CP15 Registers
RegisterName Read/Write
0ID Code
0Cache type
0TCM status
(1)
(1)
(1)
1ControlRead/write
2Translation Table BaseRead/write
3 Domain Access ControlRead/write
4 ReservedNone
5Data fault Status
5Instruction fault status
(1)
(1)
6Fault AddressRead/write
7Cache OperationsRead/Write
8TLB operations Unpredictable/Write
AT91CAP9S500A/AT91CAP9S250A
Read/Unpredictable
Read/Unpredictable
Read/Unpredictable
Read/write
Read/write
6264A–CAP–21-May-07
AT91CAP9S500A/AT91CAP9S250A
Table 12-5.CP15 Registers
RegisterName Read/Write
9cache lockdown
9TCM regionRead/write
10TLB lockdownRead/write
11ReservedNone
12ReservedNone
13FCSE PID
13Context ID
14 ReservedNone
15 Test configurationRead/Write
Notes: 1. Register locations 0,5, and 13 each provide access to more than one register. The register
accessed depends on the value of the opcode_2 field.
2. Register location 9 provides access to more than one register. The register accessed depends
on the value of the CRm field.
(2)
(1)
(1)
Read/write
Read/write
Read/Write
6264A–CAP–21-May-07
59
12.4.1CP15 Registers Access
CP15 registers can only be accessed in privileged mode by:
• MCR (Move to Coprocessor from ARM Register) instruction is used to write an ARM register
to CP15.
• MRC (Move to ARM Register from Coprocessor) instruction is used to read the value of
CP15 to an ARM register.
Other instructions like CDP, LDC, STC can cause an undefined instruction exception.
The MCR, MRC instructions bit pattern is shown below:
3130292827262524
cond1110
2322212019181716
opcode_1LCRn
15141312111098
Rd1111
76543210
opcode_21CRm
• CRm[3:0]: Specified Coprocessor Action
Determines specific coprocessor action. Its value is dependent on the CP15 register used. For details, refer to CP15 specific register behavior.
• opcode_2[7:5]
Determines specific coprocessor operation code. By default, set to 0.
• Rd[15:12]: ARM Register
Defines the ARM register whose value is transferred to the coprocessor. If R15 is chosen, the result is unpredictable.
• CRn[19:16]: Coprocessor Register
Determines the destination coprocessor register.
• L: Instruction Bit
0 = MCR instruction
1 = MRC instruction
• opcode_1[23:20]: Coprocessor Code
Defines the coprocessor specific code. Value is c15 for CP15.
• cond [31:28]: Condition
For more details, see Chapter 2 in ARM926EJ-S TRM, ref. DDI0198B.
60
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
12.5Memory Management Unit (MMU)
The ARM926EJ-S processor implements an enhanced ARM architecture v5 MMU to provide virtual memory features required by operating systems like Symbian
®
Linux
. These virtual memory features are memory access permission controls and virtual to
physical address translations.
The Virtual Address generated by the CPU core is converted to a Modified Virtual Address
(MVA) by the FCSE (Fast Context Switch Extension) using the value in CP15 register13. The
MMU translates modified virtual addresses to physical addresses by using a single, two-level
page table set stored in physical memory. Each entry in the set contains the access permissions
and the physical address that correspond to the virtual address.
The first level translation tables contain 4096 entries indexed by bits [31:20] of the MVA. These
entries contain a pointer to either a 1 MB section of physical memory along with attribute information (access permissions, domain, etc.) or an entry in the second level translation tables;
coarse table and fine table.
The second level translation tables contain two subtables, coarse table and fine table. An entry
in the coarse table contains a pointer to both large pages and small pages along with access
permissions. An entry in the fine table contains a pointer to large, small and tiny pages.
Table 7 shows the different attributes of each page in the physical memory.
The access control logic controls access information for every entry in the translation table. The
access control logic checks two pieces of access information: domain and access permissions.
The domain is the primary access control mechanism for a memory region; there are 16 of them.
It defines the conditions necessary for an access to proceed. The domain determines whether
the access permissions are used to qualify the access or whether they should be ignored.
The second access control mechanism is access permissions that are defined for sections and
for large, small and tiny pages. Sections and tiny pages have a single set of access permissions
whereas large and small pages can be associated with 4 sets of access permissions, one for
each subpage (quarter of a page).
6264A–CAP–21-May-07
61
12.5.2Translation Look-aside Buffer (TLB)
The Translation Look-aside Buffer (TLB) caches translated entries and thus avoids going
through the translation process every time. When the TLB contains an entry for the MVA (Modified Virtual Address), the access control logic determines if the access is permitted and outputs
the appropriate physical address corresponding to the MVA. If access is not permitted, the MMU
signals the CPU core to abort.
If the TLB does not contain an entry for the MVA, the translation table walk hardware is invoked
to retrieve the translation information from the translation table in physical memory.
12.5.3Translation Table Walk Hardware
The translation table walk hardware is a logic that traverses the translation tables located in
physical memory, gets the physical address and access permissions and updates the TLB.
The number of stages in the hardware table walking is one or two depending whether the
address is marked as a section-mapped access or a page-mapped access.
There are three sizes of page-mapped accesses and one size of section-mapped access. Pagemapped accesses are for large pages, small pages and tiny pages. The translation process
always begins with a level one fetch. A section-mapped access requires only a level one fetch,
but a page-mapped access requires an additional level two fetch. For further details on the
MMU, please refer to chapter 3 in ARM926EJ-S Technical Reference Manual, ref. DDI0198B.
12.5.4MMU Faults
The MMU generates an abort on the following types of faults:
• Alignment faults (for data accesses only)
• Translation faults
• Domain faults
• Permission faults
The access control mechanism of the MMU detects the conditions that produce these faults. If
the fault is a result of memory access, the MMU aborts the access and signals the fault to the
CPU core.The MMU retains status and address information about faults generated by the data
accesses in the data fault status register and fault address register. It also retains the status of
faults generated by instruction fetches in the instruction fault status register.
The fault status register (register 5 in CP15) indicates the cause of a data or prefetch abort, and
the domain number of the aborted access when it happens. The fault address register (register 6
in CP15) holds the MVA associated with the access that caused the Data Abort. For further
details on MMU faults, please refer to chapter 3 in ARM926EJ-S Technical Reference Manual,
ref. DDI0198B.
12.6Caches and Write Buffer
The ARM926EJ-S contains a 16 KB Instruction Cache (ICache), a 16 KB Data Cache (DCache),
and a write buffer. Although the ICache and DCache share common features, each still has
some specific mechanisms.
The caches (ICache and DCache) are four-way set associative, addressed, indexed and tagged
using the Modified Virtual Address (MVA), with a cache line length of eight words with two dirty
bits for the DCache. The ICache and DCache provide mechanisms for cache lockdown, cache
pollution control, and line replacement.
62
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
A new feature is now supported by ARM926EJ-S caches called allocate on read-miss commonly
known as wrapping. This feature enables the caches to perform critical word first cache refilling.
This means that when a request for a word causes a read-miss, the cache performs an AHB
access. Instead of loading the whole line (eight words), the cache loads the critical word first, so
the processor can reach it quickly, and then the remaining words, no matter where the word is
located in the line.
The caches and the write buffer are controlled by the CP15 register 1 (Control), CP15 register 7
(cache operations) and CP15 register 9 (cache lockdown).
12.6.1Instruction Cache (ICache)
The ICache caches fetched instructions to be executed by the processor. The ICache can be
enabled by writing 1 to I bit of the CP15 Register 1 and disabled by writing 0 to this same bit.
When the MMU is enabled, all instruction fetches are subject to translation and permission
checks. If the MMU is disabled, all instructions fetches are cachable, no protection checks are
made and the physical address is flat-mapped to the modified virtual address. With the MVA use
disabled, context switching incurs ICache cleaning and/or invalidating.
When the ICache is disabled, all instruction fetches appear on external memory (AHB) (see
Tables 4-1 and 4-2 in page 4-4 in ARM926EJ-S TRM, ref. DDI0198B).
AT91CAP9S500A/AT91CAP9S250A
On reset, the ICache entries are invalidated and the ICache is disabled. For best performance,
ICache should be enabled as soon as possible after reset.
12.6.2Data Cache (DCache) and Write Buffer
ARM926EJ-S includes a DCache and a write buffer to reduce the effect of main memory bandwidth and latency on data access performance. The operations of DCache and write buffer are
closely connected.
12.6.2.1DCache
The DCache needs the MMU to be enabled. All data accesses are subject to MMU permission
and translation checks. Data accesses that are aborted by the MMU do not cause linefills or data
accesses to appear on the AMBA ASB interface. If the MMU is disabled, all data accesses are
noncachable, nonbufferable, with no protection checks, and appear on the AHB bus. All
addresses are flat-mapped, VA = MVA = PA, which incurs DCache cleaning and/or invalidating
every time a context switch occurs.
The DCache stores the Physical Address Tag (PA Tag) from which every line was loaded and
uses it when writing modified lines back to external memory. This means that the MMU is not
involved in write-back operations.
Each line (8 words) in the DCache has two dirty bits, one for the first four words and the other
one for the second four words. These bits, if set, mark the associated half-lines as dirty. If the
cache line is replaced due to a linefill or a cache clean operation, the dirty bits are used to decide
whether all, half or none is written back to memory.
6264A–CAP–21-May-07
DCache can be enabled or disabled by writing either 1 or 0 to bit C in register 1 of CP15 (see
Tables 4-3 and 4-4 on page 4-5 in ARM926EJ-S TRM, ref. DDI0222B).
The DCache supports write-through and write-back cache operations, selected by memory
region using the C and B bits in the MMU translation tables.
63
12.6.2.2Write Buffer
Write-though Operation
The DCache contains an eight data word entry, single address entry write-back buffer used to
hold write-back data for cache line eviction or cleaning of dirty cache lines.
The Write Buffer can hold up to 16 words of data and four separate addresses. DCache and
Write Buffer operations are closely connected as their configuration is set in each section by the
page descriptor in the MMU translation table.
The ARM926EJ-S contains a write buffer that has a 16-word data buffer and a four- address
buffer. The write buffer is used for all writes to a bufferable region, write-through region and
write-back region. It also allows to avoid stalling the processor when writes to external memory
are performed. When a store occurs, data is written to the write buffer at core speed (high
speed). The write buffer then completes the store to external memory at bus speed (typically
slower than the core speed). During this time, the ARM9EJ-S processor can preform other
tasks.
DCache and Write Buffer support write-back and write-through memory regions, controlled by C
and B bits in each section and page descriptor within the MMU translation tables.
When a cache write hit occurs, the DCache line is updated. The updated data is then written to
the write buffer which transfers it to external memory.
When a cache write miss occurs, a line, chosen by round robin or another algorithm, is stored in
the write buffer which transfers it to external memory.
Write-back Operation
When a cache write hit occurs, the cache line or half line is marked as dirty, meaning that its
contents are not up-to-date with those in the external memory.
When a cache write miss occurs, a line, chosen by round robin or another algorithm, is stored in
the write buffer which transfers it to external memory.
12.7Tightly-Coupled Memory Interface
12.7.1TCM Description
The ARM926EJ-S processor features a Tightly-Coupled Memory (TCM) interface, which
enables separate instruction and data TCMs (ITCM and DTCM) to be directly reached by the
processor. TCMs are used to store real-time and performance critical code, they also provide a
DMA support mechanism. Unlike AHB accesses to external memories, accesses to TCMs are
fast and deterministic and do not incur bus penalties.
The user has the possibility to independently configure each TCM size with values within the following ranges, [0KB, 0 KB] for ITCM size and [0KB, 0 KB] for DTCM size.
TCMs can be configured by two means: HMATRIX TCM register and TCM region register (register 9) in CP15 and both steps should be performed. HMATRIX TCM register sets TCM size
whereas TCM region register (register 9) in CP15 maps TCMs and enables them.
The data side of the ARM9EJ-S core is able to access the ITCM. This is necessary to enable
code to be loaded into the ITCM, for SWI and emulated instruction handlers, and for accesses to
PC-relative literal pools.
64
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
12.7.2Enabling and Disabling TCMs
Prior to any enabling step, the user should configure the TCM sizes in HMATRIX TCM register.
Then enabling TCMs is performed by using TCM region register (register 9) in CP15. The user
should use the same sizes as those put in HMATRIX TCM register. For further details and programming tips, please refer to chapter 2.3 in ARM926EJ-S TRM, ref. DDI0222B.
12.7.3TCM Mapping
The TCMs can be located anywhere in the memory map, with a single region available for ITCM
and a separate region available for DTCM. The TCMs are physically addressed and can be
placed anywhere in physical address space. However, the base address of a TCM must be
aligned to its size, and the DTCM and ITCM regions must not overlap. TCM mapping is performed by using TCM region register (register 9) in CP15. The user should input the right
mapping address for TCMs.
12.8Bus Interface Unit
The ARM926EJ-S features a Bus Interface Unit (BIU) that arbitrates and schedules AHB
requests. The BIU implements a multi-layer AHB, based on the AHB-Lite protocol, that enables
parallel access paths between multiple AHB masters and slaves in a system. This is achieved by
using a more complex interconnection matrix and gives the benefit of increased overall bus
bandwidth, and a more flexible system architecture.
AT91CAP9S500A/AT91CAP9S250A
The multi-master bus architecture has a number of benefits:
• It allows the development of multi-master systems with an increased bus bandwidth and a
flexible architecture.
• Each AHB layer becomes simple because it only has one master, so no arbitration or masterto-slave muxing is required. AHB layers, implementing AHB-Lite protocol, do not have to
support request and grant, nor do they have to support retry and split transactions.
• The arbitration becomes effective when more than one master wants to access the same
slave simultaneously.
12.8.1Supported Transfers
The ARM926EJ-S processor performs all AHB accesses as single word, bursts of four words, or
bursts of eight words. Any ARM9EJ-S core request that is not 1, 4, 8 words in size is split into
packets of these sizes. Note that the Atmel bus is AHB-Lite protocol compliant, hence it does not
support split and retry requests.
6264A–CAP–21-May-07
65
Table 8 gives an overview of the supported transfers and different kinds of transactions they are
used for.
Table 12-7.Supported Transfers
HBurst[2:0]Description
SINGLESingle transfer
Single transfer of word, half word, or byte:
• data write (NCNB, NCB, WT, or WB that has missed in DCache)
• data read (NCNB or NCB)
• NC instruction fetch (prefetched and non-prefetched)
Half-line cache write-back, Instruction prefetch, if enabled. Four-word burst NCNB,
NCB, WT, or WB write.
12.8.2Thumb Instruction Fetches
All instructions fetches, regardless of the state of ARM9EJ-S core, are made as 32-bit accesses
on the AHB. If the ARM9EJ-S is in Thumb state, then two instructions can be fetched at a time.
12.8.3Address Alignment
The ARM926EJ-S BIU performs address alignment checking and aligns AHB addresses to the
necessary boundary. 16-bit accesses are aligned to halfword boundaries, and 32-bit accesses
are aligned to word boundaries.
66
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
13. Debug and Test
13.1Description
AT91CAP9S500A/AT91CAP9S250A
The AT91CAP9 features a number of complementary debug and test capabilities. A common
JTAG/ICE (In-Circuit Emulator) port is used for standard debugging functions, such as downloading code and single-stepping through programs. The Debug Unit provides a two-pin UART
that can be used to upload an application into internal SRAM. It manages the interrupt handling of the internal COMMTX and COMMRX signals that trace the activity of the Debug
Communication Channel.
A set of dedicated debug and test input/output pins gives direct access to these capabilities
from a PC-based test environment.
6264A–CAP–21-May-07
67
13.2Block Diagram
Figure 13-1. Debug and Test Block Diagram
TMS
TCK
TDI
NTRST
Boundary
Port
ARM9EJ-S
ICE-RT
ICE/JTAG
TAP
DBGU
Reset
and
Test
PIO
JTAGSEL
TDO
RTCK
POR
TST
DTXD
DRXD
68
ARM926EJ-S
TAP: Test Access Port
PDC
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
AT91CAP9S500A/AT91CAP9S250A
13.3Application Examples
13.3.1Debug Environment
Figure 13-2 on page 69 shows a complete debug environment example. The ICE/JTAG inter-
face is used for standard debugging functions, such as downloading code and single-stepping
through the program.
Figure 13-2. Application Debug and Trace Environment Example
ICE/JTAG
Interface
ICE/JTAG
Connector
Host Debugger
AT91CAP9
AT91CAP9-based Application
13.3.2Test Environment
Figure 13-3 on page 69 shows a test environment example. Test vectors are sent and inter-
preted by the tester. In this example, the “board in test” is designed using a number of JTAGcompliant devices. These devices can be connected to form a single scan chain.
Figure 13-3. Application Test Environment Example
JTAG
Interface
ICE/JTAG
Connector
AT91CAP9
RS232
Connector
Test Adaptor
Terminal
Tester
Chip 2Chip n
Chip 1
6264A–CAP–21-May-07
AT91CAP9-based Application Board In Test
69
13.4Debug and Test Pin Description
Table 13-1.Debug and Test Pin List
Pin NameFunctionTypeActive Level
NRSTMicrocontroller ResetInput/OutputLow
TSTTest Mode SelectInputHigh
TCKTest ClockInput
TDITest Data InInput
TDOTest Data OutOutput
TMSTest Mode SelectInput
RTCKReturned Test ClockOutput
NTRSTTest ResetInputLow
JTAGSELJTAG SelectionInput
AT91CAP9S500A/AT91CAP9S250A
Reset/Test
ICE and JTAG
Debug Unit
DRXDDebug Receive DataInput
DTXDDebug Transmit DataOutput
13.5Functional Description
13.5.1Test Pin
One dedicated pin, TST, is used to define the device operating mode. The user must make
sure that this pin is tied at low level to ensure normal operating conditions. Other values associated with this pin are reserved for manufacturing test.
13.5.2Embedded In-circuit Emulator
The ARM9EJ-S Embedded In-Circuit Emulator-RT is supported via the ICE/JTAG port. It is
connected to a host computer via an ICE interface. Debug support is implemented using an
ARM9EJ-S core embedded within the ARM926EJ-S. The internal state of the ARM926EJ-S is
examined through an ICE/JTAG port which allows instructions to be serially inserted into the
pipeline of the core without using the external data bus. Therefore, when in debug state, a
store-multiple (STM) can be inserted into the instruction pipeline. This exports the contents of
the ARM9EJ-S registers. This data can be serially shifted out without affecting the rest of the
system.
There are two scan chains inside the ARM9EJ-S processor which support testing, debugging,
and programming of the EmbeddedICE-RT
port.
™
. The scan chains are controlled by the ICE/JTAG
6264A–CAP–21-May-07
EmbeddedICE mode is selected when JTAGSEL is low. It is not possible to switch directly
between ICE and JTAG operations. A chip reset must be performed after JTAGSEL is
changed.
For further details on the Embedded In-Circuit-Emulator-RT, see the ARM document:
70
ARM9EJ-S Technical Reference Manual (DDI 0222A).
13.5.3JTAG Signal Description
• TMS is the Test Mode Select input which controls the transitions of the test interface state
machine.
• TDI is the Test Data Input line which supplies the data to the JTAG registers (Boundary
Scan Register, Instruction Register, or other data registers).
• TDO is the Test Data Output line which is used to serially output the data from the JTAG
registers to the equipment controlling the test. It carries the sampled values from the
boundary scan chain (or other JTAG registers) and propagates them to the next chip in the
serial test circuit.
• NTRST (optional in IEEE Standard 1149.1) is a Test-ReSeT input which is mandatory in
ARM cores and used to reset the debug logic. On Atmel ARM926EJ-S-based cores,
NTRST is a Power On Reset output. It is asserted on power on. If necessary, the user can
also reset the debug logic with the NTRST pin assertion during 2.5 MCK periods.
• TCK is the Test Clock input which enables the test interface. TCK is pulsed by the
equipment controlling the test and not by the tested device. It can be pulsed at any
frequency. Note the maximum JTAG clock rate on ARM926EJ-S cores is 1/6th the clock of
the CPU. This gives 5.45 kHz maximum initial JTAG clock rate for an ARM9E running from
the 32.768 kHz slow clock.
• RTCK is the Return Test Clock. Not an IEEE Standard 1149.1 signal added for a better
clock handling by emulators. From some ICE Interface probes, this return signal can be
used to synchronize the TCK clock and take not care about the given ratio between the ICE
Interface clock and system clock equal to 1/6th. This signal is only available in JTAG ICE
Mode and not in boundary scan mode.
AT91CAP9S500A/AT91CAP9S250A
13.5.4Debug Unit
The Debug Unit provides a two-pin (DXRD and TXRD) USART that can be used for several
debug and trace purposes and offers an ideal means for in-situ programming solutions and
debug monitor communication. Moreover, the association with two peripheral data controller
channels permits packet handling of these tasks with processor time reduced to a minimum.
The Debug Unit also manages the interrupt handling of the COMMTX and COMMRX signals
that come from the ICE and that trace the activity of the Debug Communication Channel.The
Debug Unit allows blockage of access to the system through the ICE interface.
A specific register, the Debug Unit Chip ID Register, gives information about the product version and its internal configuration.
The AT91CAP9 Debug Unit Chip ID value is 0x039A 03A0on 32-bit width.
For further details on the Debug Unit, see the section “Debug Unit”.
13.5.5IEEE 1149.1 JTAG Boundary Scan
IEEE 1149.1 JTAG Boundary Scan allows pin-level access independent of the device packaging technology.
IEEE 1149.1 JTAG Boundary Scan is enabled when JTAGSEL is high. The SAMPLE,
EXTEST and BYPASS functions are implemented. In ICE debug mode, the ARM processor
responds with a non-JTAG chip ID that identifies the processor to the ICE system. This is not
IEEE 1149.1 JTAG-compliant.
6264A–CAP–21-May-07
71
AT91CAP9S500A/AT91CAP9S250A
It is not possible to switch directly between JTAG and ICE operations. A chip reset must be
performed after JTAGSEL is changed.
A Boundary-scan Descriptor Language (BSDL) file is provided to set up test.
13.5.6ID Code Register
Access: Read-only
3130292827262524
VERSIONPART NUMBER
2322212019181716
PART NUMBER
15141312111098
PART NUMBERMANUFACTURER IDENTITY
76543210
MANUFACTURER IDENTITY1
• MANUFACTURER IDENTITY[11:1]
Set to 0x01F.
Bit[0] Required by IEEE Std. 1149.1.
Set to 0x1.
JTAG ID Code value is 0x05B1_B03F.
• PART NUMBER[27:12]: Product Part Number
Product part Number is 0x5B1B
• VERSION[31:28]: Product Version Number
Set to 0x0.
6264A–CAP–21-May-07
72
14. Boot Program
14.1Description
AT91CAP9S500A/AT91CAP9S250A
The Boot Program integrates different programs that manage download and/or upload into the
different memories of the product.
First, it initializes the Debug Unit serial port (DBGU) and the USB Device Port.
Then the DataFlash Boot program is executed. It looks for a sequence of seven valid ARM
exception vectors in a DataFlash connected to the SPI. All these vectors must be B-branch or
LDR load register instructions except for the sixth vector. This vector is used to store the size
of the image to download.
If a valid sequence is found, code is downloaded into the internal SRAM. This is followed by a
remap and a jump to the first address of the SRAM.
If no valid ARM vector sequence is found, NANDFlash Boot program is then executed. First, it
looks for a boot.bin file in the root directory or in the FIRMWARE directory of a FAT12/16 formatted NANDFlash. If such a file is found, code is downloaded into the internal SRAM. This is
followed by a remap and a jump to the first address of the SRAM.
If the NANDFlash is not formatted, the NANDFlash Boot program looks for a sequence of
seven valid ARM exception vectors. If such a sequence is found, code is downloaded into the
internal SRAM. This is followed by a remap and a jump to the first address of the SRAM.
If no valid ARM vector sequence is found, SAM-BA
actions either on the USB device, or on the DBGU serial port.
™
Boot is then executed. It waits for trans-
14.2Flow Diagram
The Boot Program implements the algorithm in Figure 14-1.
6264A–CAP–21-May-07
73
Figure 14-1. Boot Program Algorithm Flow Diagram
Device
Setup
SPI DataFlash Boot
No
NandFlash Boot
No
Timeout < 1 s
Timeout 1 s Typ.
Yes
Yes
USB Enumeration
Successful ?
YesYes
Run SAM-BA Boot
Download from
DataFlash (NPCS0)
Download from
NandFlash
No
Run
Run
No
Character(s) received
on DBGU ?
Run SAM-BA Boot
DataFlash Boot
NandFlash Boot
SAM-BA Boot
74
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
14.3Device Initialization
Initialization follows the steps described below:
1. Stack setup for ARM supervisor mode
2. Main Oscillator Frequency Detection
3. C variable initialization
4. PLL setup: PLLB is initialized to generate a 48 MHz clock necessary to use the USB
Table 14-1 defines the crystals supported by the Boot Program.
Table 14-1.Crystals Supported by Software Auto-Detection (MHz)
3.03.27683.68643.844.0
4.433619 4.608 4.9152 5.0 5.24288
6.06.144 6.4 6.5536 7.159090
7.37287.864320 8.0 9.8304 10.0
11.0592012.0 12.288 13.56 14.31818
14.745616.0 17.734470 18.432 20.0
AT91CAP9S500A/AT91CAP9S250A
Device. A register located in the Power Management Controller (PMC) determines
the frequency of the main oscillator and thus the correct factor for the PLLB.
5. Initialization of the DBGU serial port (115200 bauds, 8, N, 1)
6. Enable the user reset
7. Jump to DataFlash Boot sequence through NPCS0. If DataFlash Boot succeeds, per-
form a remap and jump to 0x0.
8. Jump to NANDFlash Boot sequence. If NANDFlash Boot succeeds, perform a remap
and jump to 0x0.
9. Activation of the Instruction Cache
10. Jump to SAM-BA Boot sequence
11. Disable the Watchdog
12. Initialization of the USB Device Port
Figure 14-2. Remap Action after Download Completion
0x0000_0000
Internal
ROM
0x0010_0000
Internal
SRAM
0x0000_0000
Internal
SRAM
REMAP
0x0040_0000
Internal
ROM
6264A–CAP–21-May-07
75
14.4DataFlash Boot
The DataFlash Boot program searches for a valid application in the SPI DataFlash memory. If
a valid application is found, this application is loaded into internal SRAM and executed by
branching at address 0x0000_0000 after remap. This application may be the application code
or a second-level bootloader.
All the calls to functions are PC relative and do not use absolute addresses.
After reset, the code in internal ROM is mapped at both addresses 0x0000_0000 and
0x0040_0000:
14.4.1Valid Image Detection
The DataFlash Boot software looks for a valid application by analyzing the first 28 bytes corresponding to the ARM exception vectors. These bytes must implement ARM instructions for
either branch or load PC with PC relative addressing.
The sixth vector, at offset 0x14, contains the size of the image to download. The user must
replace this vector with his own vector (see ”Structure of ARM Vector 6” on page 76).
Figure 14-3. LDR Opcode
3128 2724 2320 1916 1512 110
111011IPU1W0RnRd
Figure 14-4. B Opcode
3128 2724 230
1 1 10 1 01 0Offset (24 bits)
Unconditional instruction: 0xE for bits 31 to 28
Load PC with PC relative addressing instruction:
– Rn = Rd = PC = 0xF
–I==1
–P==1
– U offset added (U==1) or subtracted (U==0)
–W==1
14.4.2Structure of ARM Vector 6
The ARM exception vector 6 is used to store information needed by the DataFlash boot program. This information is described below.
The size of the image to load into SRAM is contained in the location of the sixth ARM vector.
Thus the user must replace this vector by the correct vector for his application.
14.4.3DataFlash Boot Sequence
The DataFlash Boot program performs device initialization followed by the download
procedure.
AT91CAP9S500A/AT91CAP9S250A
Size of the code to download in bytes
<- Code size = 4660 bytes
The DataFlash Boot program supports all Atmel DataFlash devices. Table 14-2 summarizes
the parameters to include in the ARM vector 6 for all devices.
Table 14-2.DataFlash Device
DeviceDensityPage Size (bytes)Number of Pages
AT45DB011B1 Mbit264512
AT45DB021B2 Mbits2641024
AT45DB041B4 Mbits2642048
AT45DB081B8 Mbits2644096
AT45DB161B16 Mbits5284096
AT45DB321B32 Mbits5288192
AT45DB64264 Mbits10568192
The DataFlash has a Status Register that determines all the parameters required to access
the device. The DataFlash Boot is configured to be compatible with the future design of the
DataFlash.
6264A–CAP–21-May-07
77
Figure 14-6. Serial DataFlash Download
Send status command
AT91CAP9S500A/AT91CAP9S250A
Start
Is status OK ?
Yes
Read the first 7 instructions (28 bytes).
Decode the sixth ARM vector
7 vectors
(except vector 6) are LDR
or Branch instruction
Yes
Read the DataFlash into the internal SRAM.
(code size to read in vector 6)
Restore the reset value for the peripherals.
Set the PC to 0 and perform the REMAP
to jump to the downloaded application
No
No
Jump to next boot
solution
14.5NANDFlash Boot
6264A–CAP–21-May-07
End
The NANDFlash Boot program searches for a valid application in the NANDFlash memory.
First, it looks for a boot.bin file in the root directory or in the FIRMWARE directory of a
FAT12/16 formatted NANDFlash. If a valid file is found, this application is loaded into internal
SRAM and executed by branching at address 0x0000_0000 after remap. This application may
be the application code or a second-level bootloader.
If NANDFlash is not formatted, the NANDFlash Boot program searches for a valid application
in the NANDFlash memory. If a valid application is found, this application is loaded into internal
SRAM and executed by branching at address 0x0000_0000 after remap. See ”DataFlash
Boot” on page 76 for more information on Valid Image Detection.
78
14.5.1Supported NANDFlash Devices
Any 8 or 16-bit NANDFlash Devices from 1 Mbit to 16 Gbit density.
Table 14-3.Supported NANDFlash Manufacturers
ManufacturerIdentifier
Toshiba
Samsung
Fujitsu0x04
National Semiconductor
Renesas0x07
STMicroelectronics0x20
Micron
®
®
®
14.6SAM-BA Boot
If no valid DataFlash device has been found during the DataFlash boot sequence, the SAMBA boot program is performed.
The SAM-BA boot principle is to:
AT91CAP9S500A/AT91CAP9S250A
0x98
0xEC
®
0x8F
0x2C
– Check if USB Device enumeration has occured.
– Check if characters have been received on the DBGU.
– Once the communication interface is identified, the application runs in an infinite
loop waiting for different commands as in Table 14-4.
Table 14-4.Commands Available through the SAM-BA Boot
CommandActionArgument(s)Example
Owrite a byteAddress, Value#O200001,CA#
oread a byteAddress,#o200001,#
Hwrite a half wordAddress, Value#H200002,CAFE#
hread a half wordAddress,#h200002,#
Wwrite a wordAddress, Value#W200000,CAFEDECA#
wread a wordAddress,#w200000,#
Ssend a fileAddress,#S200000,#
Rreceive a fileAddress, NbOfBytes#R200000,1234#
GgoAddress#G200200#
Vdisplay versionNo argumentV#
• Write commands: Write a byte (O), a halfword (H) or a word (W) to the target.
– Address: Address in hexadecimal.
– Value: Byte, halfword or word to write in hexadecimal.
– Output: ‘>’.
• Read commands: Read a byte (o), a halfword (h) or a word (w) from the target.
– Address: Address in hexadecimal
6264A–CAP–21-May-07
79
14.6.1DBGU Serial Port
AT91CAP9S500A/AT91CAP9S250A
– Output: The byte, halfword or word read in hexadecimal following by ‘>’
• Send a file (S): Send a file to a specified address
– Address: Address in hexadecimal
– Output: ‘>’.
Note:There is a time-out on this command which is reached when the prompt ‘>’ appears before the
end of the command execution.
• Receive a file (R): Receive data into a file from a specified address
– Address: Address in hexadecimal
–
NbOfBytes: Number of bytes in hexadecimal to receive
– Output: ‘>’
•Go (G): Jump to a specified address and execute the code
– Address: Address to jump in hexadecimal
– Output: ‘>’
• Get Version (V): Return the SAM-BA boot version
– Output: ‘>’
Communication is performed through the DBGU serial port initialized to 115200 Baud, 8, n, 1.
14.6.2Xmodem Protocol
The Send and Receive File commands use the Xmodem protocol to communicate. Any terminal performing this protocol can be used to send the application file to the target. The size of
the binary file to send depends on the SRAM size embedded in the product. In all cases, the
size of the binary file must be lower than the SRAM size because the Xmodem protocol
requires some SRAM memory to work.
The Xmodem protocol supported is the 128-byte length block. This protocol uses a two-character CRC-16 to guarantee detection of a maximum bit error.
Xmodem protocol with CRC is accurate provided both sender and receiver report successful
transmission. Each block of the transfer looks like:
<SOH><blk #><255-blk #><--128 data bytes--><checksum> in which:
– <SOH> = 01 hex
– <blk #> = binary number, starts at 01, increments by 1, and wraps 0FFH to 00H
(not to 01)
– <255-blk #> = 1’s complement of the blk#.
– <checksum> = 2 bytes CRC16
Figure 14-7 shows a transmission using this protocol.
6264A–CAP–21-May-07
80
Figure 14-7. Xmodem Transfer Example
HostDevice
14.6.3USB Device Port
A 48 MHz USB clock is necessary to use the USB Device port. It has been programmed earlier in the device initialization procedure with PLLB configuration.
AT91CAP9S500A/AT91CAP9S250A
C
SOH 01 FE Data[128] CRC CRC
ACK
SOH 02 FD Data[128] CRC CRC
ACK
SOH 03 FC Data[100] CRC CRC
ACK
EOT
ACK
The device uses the USB communication device class (CDC) drivers to take advantage of the
installed PC RS-232 software to talk over the USB. The CDC class is implemented in all
releases of Windows
www.usb.org, describes a way to implement devices such as ISDN modems and virtual COM
ports.
The Vendor ID is Atmel’s vendor ID 0x03EB. The product ID is 0x6124. These references are
used by the host operating system to mount the correct driver. On Windows systems, the INF
files contain the correspondence between vendor ID and product ID.
14.6.3.1Enumeration Process
The USB protocol is a master/slave protocol. This is the host that starts the enumeration sending requests to the device through the control endpoint. The device handles standard requests
as defined in the USB Specification.
Table 14-5.Handled Standard Requests
RequestDefinition
GET_DESCRIPTORReturns the current device configuration value.
SET_ADDRESSSets the device address for all future device access.
SET_CONFIGURATIONSets the device configuration.
GET_CONFIGURATIONReturns the current device configuration value.
GET_STATUSReturns status for the specified recipient.
SET_FEATUREUsed to set or enable a specific feature.
CLEAR_FEATUREUsed to clear or disable a specific feature.
®
, from Windows 98SE to Windows XP. The CDC document, available at
6264A–CAP–21-May-07
81
AT91CAP9S500A/AT91CAP9S250A
The device also handles some class requests defined in the CDC class.
Table 14-6.Handled Class Requests
RequestDefinition
SET_LINE_CODING
GET_LINE_CODING
SET_CONTROL_LINE_STATE
Unhandled requests are STALLed.
14.6.3.2Communication Endpoints
There are two communication endpoints and endpoint 0 is used for the enumeration process.
Endpoint 1 is a 64-byte Bulk OUT endpoint and endpoint 2 is a 64-byte Bulk IN endpoint.
SAM-BA Boot commands are sent by the host through the endpoint 1. If required, the message is split by the host into several data payloads by the host driver.
If the command requires a response, the host can send IN transactions to pick up the
response.
14.7Hardware and Software Constraints
• The DataFlash and NANDFlash downloaded code size must be inferior to 28 Kbytes.
• The code is always downloaded from the device address 0x0000_0000 to the address
0x0000_0000 of the internal SRAM (after remap).
• The downloaded code must be position-independent or linked at address 0x0000_0000.
• The DataFlash must be connected to NPCS0 of the SPI.
The SPI and NANDFlash drivers use several PIOs in alternate functions to communicate with
devices. Care must be taken when these PIOs are used by the application. The devices connected could be unintentionally driven at boot time, and electrical conflicts between SPI output
pins and the connected devices may appear.
Configures DTE rate, stop bits, parity and number of
character bits.
Requests current DTE rate, stop bits, parity and number
of character bits.
RS-232 signal used to tell the DCE device the DTE
device is now present.
6264A–CAP–21-May-07
To assure correct functionality, it is recommended to plug in critical devices to other pins.
Table 14-7 contains a list of pins that are driven during the boot program execution. These
pins are driven during the boot sequence for a period of less than 1 second if no correct boot
program is found.
For the DataFlash driven by the SPCK signal at 8 MHz, the time to download 28 Kbytes is
reduced to 200 ms.
82
AT91CAP9S500A/AT91CAP9S250A
Before performing the jump to the application in internal SRAM, all the PIOs and peripherals
used in the boot program are set to their reset state.
Table 14-7.Pins Driven during Boot Program Execution
PeripheralPinPIO Line
SPI0MOSI PIOA1
SPI0MISOPIOA0
SPI0SPCKPIOA2
SPI0NPCS0PIOA5
PIODNANDCSPIOD15
Address BusNAND ALEA21
Address BusNAND CLEA22
DBGUDRXDPIOC30
DBGUDTXDPIOC31
6264A–CAP–21-May-07
83
84
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
15. Reset Controller (RSTC)
15.1Description
The Reset Controller (RSTC), based on power-on reset cells, handles all the resets of the system without any external components. It reports which reset occurred last.
The Reset Controller also drives independently or simultaneously the external reset and the
peripheral and processor resets.
15.2Block Diagram
Figure 15-1. Reset Controller Block Diagram
AT91CAP9S500A/AT91CAP9S250A
Main Supply
POR
Backup Supply
POR
NRST
WDRPROC
wd_fault
15.3Functional Description
Reset Controller
Startup
Counter
NRST
nrst_out
Manager
rstc_irq
Reset
State
Manager
proc_nreset
user_reset
periph_nreset
exter_nreset
backup_neset
SLCK
15.3.1Reset Controller Overview
The Reset Controller is made up of an NRST Manager, a Startup Counter and a Reset State
Manager. It runs at Slow Clock and generates the following reset signals:
• proc_nreset: Processor reset line. It also resets the Watchdog Timer.
• backup_nreset: Affects all the peripherals powered by VDDBU.
• periph_nreset: Affects the whole set of embedded peripherals.
• nrst_out: Drives the NRST pin.
These reset signals are asserted by the Reset Controller, either on external events or on software action. The Reset State Manager controls the generation of reset signals and provides a
signal to the NRST Manager when an assertion of the NRST pin is required.
The NRST Manager shapes the NRST assertion during a programmable time, thus controlling
external device resets.
6264A–CAP–21-May-07
85
The startup counter waits for the complete crystal oscillator startup. The wait delay is given by
the crystal oscillator startup time maximum value that can be found in the section Crystal Oscillator Characteristics in the Electrical Characteristics section of the product documentation.
The Reset Controller Mode Register (RSTC_MR), allowing the configuration of the Reset Controller, is powered with VDDBU, so that its configuration is saved as long as VDDBU is on.
15.3.2NRST Manager
The NRST Manager samples the NRST input pin and drives this pin low when required by the
Reset State Manager. Figure 15-2 shows the block diagram of the NRST Manager.
Figure 15-2. NRST Manager
RSTC_SR
URSTS
NRSTL
RSTC_MR
URSTEN
RSTC_MR
URSTIEN
rstc_irq
Other
interrupt
sources
NRST
15.3.2.1NRST Signal or Interrupt
The NRST Manager samples the NRST pin at Slow Clock speed. When the line is detected low,
a User Reset is reported to the Reset State Manager.
However, the NRST Manager can be programmed to not trigger a reset when an assertion of
NRST occurs. Writing the bit URSTEN at 0 in RSTC_MR disables the User Reset trigger.
The level of the pin NRST can be read at any time in the bit NRSTL (NRST level) in RSTC_SR.
As soon as the pin NRST is asserted, the bit URSTS in RSTC_SR is set. This bit clears only
when RSTC_SR is read.
The Reset Controller can also be programmed to generate an interrupt instead of generating a
reset. To do so, the bit URSTIEN in RSTC_MR must be written at 1.
15.3.2.2NRST External Reset Control
The Reset State Manager asserts the signal ext_nreset to assert the NRST pin. When this
occurs, the “nrst_out” signal is driven low by the NRST Manager for a time programmed by the
field ERSTL in RSTC_MR. This assertion duration, named EXTERNAL_RESET_LENGTH, lasts
(ERSTL+1)
2
Slow Clock cycles. This gives the approximate duration of an assertion between 60 µs
and 2 seconds. Note that ERSTL at 0 defines a two-cycle duration for the NRST pulse.
nrst_out
RSTC_MR
ERSTL
External Reset Timer
user_reset
exter_nreset
86
This feature allows the Reset Controller to shape the NRST pin level, and thus to guarantee that
the NRST line is driven low for a time compliant with potential external devices connected on the
system reset.
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
As the field is within RSTC_MR, which is backed-up, this field can be used to shape the system
power-up reset for devices requiring a longer startup time than the Slow Clock Oscillator.
15.3.3BMS Sampling
The product matrix manages a boot memory that depends on the level on the BMS pin at reset.
The BMS signal is sampled three slow clock cycles after the Core Power-On-Reset output rising
edge.
Figure 15-3. BMS Sampling
SLCK
Core Supply
POR output
AT91CAP9S500A/AT91CAP9S250A
BMS Signal
proc_nreset
15.3.4Reset States
The Reset State Manager handles the different reset sources and generates the internal reset
signals. It reports the reset status in the field RSTTYP of the Status Register (RSTC_SR). The
update of the field RSTTYP is performed when the processor reset is released.
15.3.4.1General Reset
A general reset occurs when VDDBU and VDDCORE are powered on. The backup supply POR
cell output rises and is filtered with a Startup Counter, which operates at Slow Clock. The purpose of this counter is to make sure the Slow Clock oscillator is stable before starting up the
device. The length of startup time is hardcoded to comply with the Slow Clock Oscillator startup
time.
After this time, the processor clock is released at Slow Clock and all the other signals remain
valid for Y cycles for proper processor and logic reset. Then, all the reset signals are released
and the field RSTTYP in RSTC_SR reports a General Reset. As the RSTC_MR is reset, the
NRST line rises 2 cycles after the backup_nreset, as ERSTL defaults at value 0x0.
XXXH or L
BMS sampling delay
= 3 cycles
6264A–CAP–21-May-07
When VDDBU is detected low by the Backup Supply POR Cell, all resets signals are immediately asserted, even if the Main Supply POR Cell does not report a Main Supply shutdown.
VDDBU only activates the backup_nreset signal.
The backup_nreset must be released so that any other reset can be generated by VDDCORE
(Main Supply POR output).
Figure 15-4 shows how the General Reset affects the reset signals.
87
Figure 15-4. General Reset State
SLCK
MCK
Backup Supply
POR output
Main Supply
POR output
backup_nreset
proc_nreset
RSTTYP
periph_nreset
NRST
(nrst_out)
Startup Time
Processor Startup
= 2 cycles
XXX0x0 = General Reset
EXTERNAL RESET LENGTH
= 2 cycles
BMS Sampling
Any
Freq.
XXX
88
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
15.3.4.2Wake-up Reset
The Wake-up Reset occurs when the Main Supply is down. When the Main Supply POR output
is active, all the reset signals are asserted except backup_nreset. When the Main Supply powers up, the POR output is resynchronized on Slow Clock. The processor clock is then re-enabled
during Y Slow Clock cycles, depending on the requirements of the ARM processor.
At the end of this delay, the processor and other reset signals rise. The field RSTTYP in
RSTC_SR is updated to report a Wake-up Reset.
The “nrst_out” remains asserted for EXTERNAL_RESET_LENGTH cycles. As RSTC_MR is
backed-up, the programmed number of cycles is applicable.
When the Main Supply is detected falling, the reset signals are immediately asserted. This transition is synchronous with the output of the Main Supply POR.
Figure 15-5. Wake-up State
SLCK
AT91CAP9S500A/AT91CAP9S250A
MCK
Main Supply
POR output
backup_nreset
proc_nreset
RSTTYP
periph_nreset
NRST
(nrst_out)
Resynch.
2 cycles
Processor Startup
= 2 cycles
XXX0x1 = WakeUp Reset
EXTERNAL RESET LENGTH
= 4 cycles (ERSTL = 1)
Any
Freq.
XXX
6264A–CAP–21-May-07
89
15.3.4.3User Reset
The User Reset is entered when a low level is detected on the NRST pin and the bit URSTEN in
RSTC_MR is at 1. The NRST input signal is resynchronized with SLCK to insure proper behavior of the system.
The User Reset is entered as soon as a low level is detected on NRST. The Processor Reset
and the Peripheral Reset are asserted.
The User Reset is left when NRST rises, after a two-cycle resynchronization time and a Y-cycle
processor startup. The processor clock is re-enabled as soon as NRST is confirmed high.
When the processor reset signal is released, the RSTTYP field of the Status Register
(RSTC_SR) is loaded with the value 0x4, indicating a User Reset.
The NRST Manager guarantees that the NRST line is asserted for
EXTERNAL_RESET_LENGTH Slow Clock cycles, as programmed in the field ERSTL. However, if NRST does not rise after EXTERNAL_RESET_LENGTH because it is driven low
externally, the internal reset lines remain asserted until NRST actually rises.
Figure 15-6. User Reset State
SLCK
MCK
NRST
proc_nreset
RSTTYP
periph_nreset
NRST
(nrst_out)
Any
Freq.
Resynch.
2 cycles
AnyXXX
>= EXTERNAL RESET LENGTH
Resynch.
2 cycles
Processor Startup
= 2 cycles
0x4 = User Reset
90
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
15.3.4.4Software Reset
The Reset Controller offers several commands used to assert the different reset signals. These
commands are performed by writing the Control Register (RSTC_CR) with the following bits at
1:
The software reset is entered if at least one of these bits is set by the software. All these commands can be performed independently or simultaneously. The software reset lasts Y Slow
Clock cycles.
The internal reset signals are asserted as soon as the register write is performed. This is
detected on the Master Clock (MCK). They are released when the software reset is left, i.e.; synchronously to SLCK.
If EXTRST is set, the nrst_out signal is asserted depending on the programming of the field
ERSTL. However, the resulting falling edge on NRST does not lead to a User Reset.
AT91CAP9S500A/AT91CAP9S250A
• PROCRST: Writing PROCRST at 1 resets the processor and the watchdog timer.
• PERRST: Writing PERRST at 1 resets all the embedded peripherals, including the memory
system, and, in particular, the Remap Command. The Peripheral Reset is generally used for
debug purposes.
• EXTRST: Writing EXTRST at 1 asserts low the NRST pin during a time defined by the field
ERSTL in the Mode Register (RSTC_MR).
If and only if the PROCRST bit is set, the Reset Controller reports the software status in the field
RSTTYP of the Status Register (RSTC_SR). Other Software Resets are not reported in
RSTTYP.
As soon as a software operation is detected, the bit SRCMP (Software Reset Command in
Progress) is set in the Status Register (RSTC_SR). It is cleared as soon as the software reset is
left. No other software reset can be performed while the SRCMP bit is set, and writing any value
in RSTC_CR has no effect.
6264A–CAP–21-May-07
91
Figure 15-7. Software Reset
SLCK
MCK
Write RSTC_CR
proc_nreset
if PROCRST=1
RSTTYP
periph_nreset
if PERRST=1
NRST
(nrst_out)
if EXTRST=1
SRCMP in RSTC_SR
Any
Freq.
Any
Resynch.
1 cycle
Processor Startup
= 2 cycles
XXX
0x3 = Software Reset
EXTERNAL RESET LENGTH
8 cycles (ERSTL=2)
92
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
15.3.4.5Watchdog Reset
The Watchdog Reset is entered when a watchdog fault occurs. This state lasts YSlow Clock
cycles.
When in Watchdog Reset, assertion of the reset signals depends on the WDRPROC bit in
WDT_MR:
• If WDRPROC is 0, the Processor Reset and the Peripheral Reset are asserted. The NRST
• If WDRPROC = 1, only the processor reset is asserted.
The Watchdog Timer is reset by the proc_nreset signal. As the watchdog fault always causes a
processor reset if WDRSTEN is set, the Watchdog Timer is always reset after a Watchdog
Reset, and the Watchdog is enabled by default and with a period set to a maximum.
When the WDRSTEN in WDT_MR bit is reset, the watchdog fault has no impact on the reset
controller.
Figure 15-8. Watchdog Reset
AT91CAP9S500A/AT91CAP9S250A
line is also asserted, depending on the programming of the field ERSTL. However, the
resulting low level on NRST does not result in a User Reset state.
SLCK
MCK
wd_fault
proc_nreset
RSTTYP
periph_nreset
Only if
WDRPROC = 0
NRST
(nrst_out)
15.3.5Reset State Priorities
The Reset State Manager manages the following priorities between the different reset sources,
given in descending order:
Any
Freq.
Any
Processor Startup
= 2 cycles
XXX
0x2 = Watchdog Reset
EXTERNAL RESET LENGTH
8 cycles (ERSTL=2)
6264A–CAP–21-May-07
• Backup Reset
• Wake-up Reset
• Watchdog Reset
• Software Reset
• User Reset
Particular cases are listed below:
93
• When in User Reset:
– A watchdog event is impossible because the Watchdog Timer is being reset by the
proc_nreset signal.
– A software reset is impossible, since the processor reset is being activated.
• When in Software Reset:
– A watchdog event has priority over the current state.
– The NRST has no effect.
• When in Watchdog Reset:
– The processor reset is active and so a Software Reset cannot be programmed.
– A User Reset cannot be entered.
15.3.6Reset Controller Status Register
The Reset Controller status register (RSTC_SR) provides several status fields:
• RSTTYP field: This field gives the type of the last reset, as explained in previous sections.
• SRCMP bit: This field indicates that a Software Reset Command is in progress and that no
further software reset should be performed until the end of the current one. This bit is
automatically cleared at the end of the current software reset.
• NRSTL bit: The NRSTL bit of the Status Register gives the level of the NRST pin sampled on
each MCK rising edge.
• URSTS bit: A high-to-low transition of the NRST pin sets the URSTS bit of the RSTC_SR
register. This transition is also detected on the Master Clock (MCK) rising edge (see Figure
15-9). If the User Reset is disabled (URSTEN = 0) and if the interruption is enabled by the
URSTIEN bit in the RSTC_MR register, the URSTS bit triggers an interrupt. Reading the
RSTC_SR status register resets the URSTS bit and clears the interrupt.
Figure 15-9. Reset Controller Status and Interrupt
0 = The detection of a low level on the pin NRST does not generate a User Reset.
1 = The detection of a low level on the pin NRST triggers a User Reset.
• URSTIEN: User Reset Interrupt Enable
0 = USRTS bit in RSTC_SR at 1 has no effect on rstc_irq.
1 = USRTS bit in RSTC_SR at 1 asserts rstc_irq if URSTEN = 0.
• ERSTL: External Reset Length
This field defines the external reset length. The external reset is asserted during a time of 2
(ERSTL+1)
allows assertion duration to be programmed between 60 µs and 2 seconds.
•KEY: Password
Should be written at value 0xA5. Writing any other value in this field aborts the write operation.
Slow Clock cycles. This
98
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
16. Real-time Timer (RTT)
16.1Overview
The Real-time Timer is built around a 32-bit counter and used to count elapsed seconds. It
generates a periodic interrupt and/or triggers an alarm on a programmed value.
16.2Block Diagram
Figure 16-1. Real-time Timer
AT91CAP9S500A/AT91CAP9S250A
SLCK
RTT_MR
RTTRST
reload
16-bit
Divider
RTT_MR
RTPRES
RTT_MR
RTTRST
RTT_VR
RTT_AR
0
10
32-bit
Counter
CRTV
ALMV
RTT_SR
RTT_SR
RTT_SR
=
read
set
RTTINC
reset
reset
set
RTT_MR
RTTINCIEN
rtt_int
RTT_MR
ALMIEN
ALMS
rtt_alarm
16.3Functional Description
The Real-time Timer is used to count elapsed seconds. It is built around a 32-bit counter fed
by Slow Clock divided by a programmable 16-bit value. The value can be programmed in the
field RTPRES of the Real-time Mode Register (RTT_MR).
ProgrammingRTPRESat 0x00008000 corresponds to feeding the real-time counter with a 1
Hz signal (if the Slow Clock is 32.768 Hz). The 32-bit counter can count up to 2
corresponding to more than 136 years, then roll over to 0.
The Real-time Timer can also be used as a free-running timer with a lower time-base. The
best accuracy is achieved by writing RTPRES to 3. Programming RTPRES to 1 or 2 is possible, but may result in losing status events because the status register is cleared two Slow
Clock cycles after read. Thus if the RTT is configured to trigger an interrupt, the interrupt
occurs during 2 Slow Clock cycles after reading RTT_SR. To prevent several executions of
the interrupt handler, the interrupt must be disabled in the interrupt handler and re-enabled
when the status register is clear.
6264A–CAP–21-May-07
32
seconds,
99
The Real-time Timer value (CRTV) can be read at any time in the register RTT_VR (Real-time
Value Register). As this value can be updated asynchronously from the Master Clock, it is
advisable to read this register twice at the same value to improve accuracy of the returned
value.
The current value of the counter is compared with the value written in the alarm register
RTT_AR (Real-time Alarm Register). If the counter value matches the alarm, the bit ALMS in
RTT_SR is set. The alarm register is set to its maximum value, corresponding to
0xFFFF_FFFF, after a reset.
The bit RTTINC in RTT_SR is set each time the Real-time Timer counter is incremented. This
bit can be used to start a periodic interrupt, the period being one second when the RTPRES is
programmed with 0x8000 and Slow Clock equal to 32.768 Hz.
Reading the RTT_SR status register resets the RTTINC and ALMS fields.
Writing the bit RTTRST in RTT_MR immediately reloads and restarts the clock divider with the
new programmed value. This also resets the 32-bit counter.
Note:Because of the asynchronism between the Slow Clock (SCLK) and the System Clock (MCK):
1) The restart of the counter and the reset of the RTT_VR current value register is effective only
2 slow clock cycles after the write of the RTTRST bit in the RTT_MR register.
2) The status register flags reset is taken into account only 2 slow clock cycles after the read of
the RTT_SR (Status Register).
Figure 16-2. RTT Counting
MCK
RTPRES - 1
Prescaler
RTT
RTTINC (RTT_SR)
ALMS (RTT_SR)
APB Interface
APB cycle
0
...
ALMVALMV-10ALMV+1
read RTT_SR
ALMV+2ALMV+3
APB cycle
100
AT91CAP9S500A/AT91CAP9S250A
6264A–CAP–21-May-07
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.