For all product questions and inquiries contact a Cirrus Logic Sales Representative.
To find the one nearest to you go to www.cirrus.com
Cirrus Logic, Inc. and its sub si di ari es ( “Ci rrus”) believe that the inform at ion contained in this document i s accurate and reliable. However, the information
is subject to change without not ice and is provi ded “AS IS” wi thout warranty of an y kind (exp ress or implied). Customer s are advised to obtain the latest
version of relevant information to verify, before placing orders, that information being relied on is current and complete. All products are sold subject to the
terms and conditions of sale supplied at th e time of order acknowledg ment, includ ing those pert aining to warrant y, patent inf ringement, and limitation of
liability. No respons ibility is assumed by Cirrus f or the use of this information, including use of this information as the basis for manufacture or sale of any
items, or for infringement of patents or other rights of third parties. This document is the property of Cirrus and by furnishing this information, Cirrus grants
no license, express or implied under any patents, mask work rights, copyrights, trademarks, trade secrets or other intellectual property rights. Cirrus owns
the copyrights associated with the information contained herein and gives consent for copies to be made of the information only f o r use wi thi n your organization with respect to Cirrus integr ated circuits or ot her products of Cir rus. This consent does not extend to other copy ing such as copying for ge neral
distribution, advertising or promotional purposes, or for creating any work for resale.
CERTAIN APPLICATIONS USING SEMICO NDUCTOR PRODUCTS MAY INVOLVE POTENTIAL RISKS OF DEATH, PERSONAL INJURY, OR SEVERE
PROPERTY OR ENVIRONMENTAL DAMAGE (“CRITICAL APPLICATIONS”). CIRRUS PRODUCTS ARE NOT DESIGNED, AUTHORIZED OR WARRANTED FOR USE IN AIRCRAFT SYSTEMS, MILITARY APP LICATIONS , PRODUCTS SURGICALLY IMP LANTE D INTO THE BODY, LIFE SUP PORT
PRODUCTS OR OTHER CRITICAL APPLICATIONS (INCLUDING MEDICAL DEVICES, AIRCRAFT SYSTEMS OR COMPONENTS AND PERSONAL
OR AUTOMOTIVE SAFETY OR SECURITY DEVICE S). INCLUSION OF CIRRUS PRODUCTS IN SUCH APPLICATIONS IS UNDERSTOOD T O BE FULLY AT THE CUSTOMER'S RISK AND CIRRUS DISCLAIMS AND MAKES NO WARRANTY, EXPRESS, STATUTORY OR IMPLIED, INCLUDING THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR PARTICULAR PURPOSE, WITH REGARD TO ANY CIRRUS PRODUCT THAT
IS USED IN SUCH A MANNER. IF THE CUSTOMER OR CUSTOM ER'S CUSTOMER USES OR PE RMITS THE USE OF CIRRU S PRODUCTS IN CRITICAL APPLICATIONS, CUSTOMER AGREES, BY SUCH USE , TO FULLY INDEMNIFY CIRRUS, ITS OFFICERS, DIRECTORS, EMPLOYE ES, DISTRIBUTORS AND OTHER AGENTS F ROM ANY AND A LL LIABILITY, INCLUDING ATTORNEYS ' FEES AND COS TS, THAT MAY RESU LT FROM OR ARISE
IN CONNECTION WITH THESE USES.
Cirrus Logic, Cirrus, MaverickCrunch, MaverickKey, and the Cirrus Log ic logo designs are tradema rks of Cirrus Logic, Inc. Al l other brand and pr oduct
names in this document may be trademarks or service marks of their respective owners.
Microsoft, Windows, and Windows CE are registered trademarks of Microsoft Corporation.
Microwire is a trademark of National Semiconductor Corp. National Semiconductor is a registered trademark of National Semiconductor Corp.
Texas Instruments is a registered trademark of Texas Instruments, Inc.
Motorola is a registered trademark of Motorola, Inc.
LINUX is a registered trademark of Linus Torvalds.
ARM and Thumb are registered trademarks of ARM Limited
Intel is a registered trademark of Intel Corporation
Hewlett-Packard is a registered trademark of Hewlett-Packard Corporation.
Compaq is a regis t e red trademark of BV, a private Limited Liability Company in the Netherlands.
Figure 2-3. Main Data Paths .........................................................................................................................2-8
Figure 27-1. IDE Interface Signal Connections ................................................................ ....... ...... ..............27-2
Figure 28-1. System Level GPIO Connectivity............................................................................................28-2
Figure 28-2. Signal Connections Within the Standard GPIO Port Control Logic
(Ports C, D, E, G, H)....................................................................................................................................28-4
Figure 28-3. Signal Connections Within the Enhanced GPIO Port Control Logic
(Ports A, B, F)..............................................................................................................................................28-5
This is the Initial Release of the EP93xx User's Guide. This manual covers all products in the
UM1
September 14,
2007
EP93xx product family. This manual is based on the content of previous User’s Guides for
each of the individual products in the EP93xx family. New content has been added, formatting
improved, and all known documentation errors fixed. Please discard previous User’s Guides
and rely on this manual for your future reference needs.
This EP93xx User’s Guide describes the architecture, hardwar e, and operation of the Cirrus
Logic EP9301, EP9302, EP9307, EP9312, and EP931 5 pr ocessors. It is i ntended t o be used
in conjunction with the respective EP93xx Data Sheets, which contain the full electrical
specifications for the EP93xx processors.
The EP9301, EP9302, EP9307, EP9312 processors are functional subsets of the EP9315
processor. All chapters in this Guide apply to the EP9315 processor. Most, but not all,
chapters apply to the EP9301, EP9302, EP9307, EP9312 processors. Table P-1 shows the
maximum core frequency and the maximum high-speed bus frequency as well as number of
package balls and package type for the EP93xx processors. Table P-2 shows chapter
numbers and function, and which EP93xx processors include the function (or not).
Ta ble P-1. F r eque ncy, Package, Applicable EP93xx Processor
EP9301 EP9302EP9307EP9312EP9315
Chapter P
17Preface
Maximum Core
Frequency - MHz
Maximum High-Speed
Bus Frequency - MHz
Package Type
Table P-2. Chapter Number and Function, Applicable EP93xx Processor
Chapter Number and FunctionApplicable EP93xx Processor
0: Preface
1: Introduction
2: ARM920T Core and Advanced High-Speed Bus
3: MaverickCrunch Co-processor
4: Boot ROM
5: System ControllerXXXXX
166200200200200
66100100100100
208 LQFP208 LQFP272 TFBGA352 PBGA352 PBGA
EP9301 EP9302EP9307 EP9312 EP9315
X X XXX
X X XXX
X X XXX
- X XXX
X X XXX
DS785UM1P-1
Copyright 2007 Cirrus Logic
Preface
P
P
P
EP93xx User’s Guide
Table P-2. Chapter Number and Function, Applicable EP93xx Processor (Continued)
Chapter Number and FunctionApplicable EP93xx Processor
EP9301 EP9302EP9307 EP9312 EP9315
6: Vectored Interrupt ControllerXXXXX
7: Raster Engine with Analog and LCD Integrated
Timing and I nterface
8: Graphics Accelerator--X-X
9: 1/10/100 Mbps Ethernet LAN ControllerXXXXX
10: DMA ControllerXXXXX
11: Universal Serial Bus Host Controllers22333
12: Static Memory Controller
Static Memory Controller with PCMCIA
13: SDRAM, SyncROM, SyncFLASH ControllersXXXXX
14: UART1 with Modem Control Signals and HDLCXXXXX
15: UART2 with IrDAXXXXX
16: UART3 with HDLC--XXX
17: IrDAXXXXX
18: Timers44444
19: Watchdog TimerXXXXX
--XXX
X
-
X
-
X
-
X
-
-
X
20: Real Time Clock with Softw a re TrimXXXXX
2
21: I
S Controller
22: AC’97 Controller11111
23: Synchronous Serial Port11111
24: Pulse Width Modulators22122
25: Analog Touch Screen Interface/ADC5-ADC5-ADC8-Wire TS 8-Wire TS 8-Wire TS
26: Keypad Interface--XXX
27: IDE Interface---2 Devices 2 Devices
28: GPIO Interface
29: Security
30: Glossary
P-2DS785UM1
Copyright 2007 Cirrus Logic
3 3 333
X X XXX
X X XXX
X X XXX
P
P
P
Note:“X” means Function is included; “-” means Function is not included
P.2 Related Documents from Cir rus Logic
1. EP9301 Data Sheet, Document Number - DS636PP5
2. EP9302 Data Sheet, Document Number - DS653PP3
3. EP9307 Data Sheet, Document Number - DS667PP4
4. EP9312 Data Sheet, Document Number - DS515PP7
5. EP9315 Data Sheet, Document Number - DS638PP1
P.3 Reference Documents
1. ARM®920T Technical Reference Manual, ARM Limited
2. AMBA Specification (Rev. 2.0), ARM IHI 0011A, ARM Limited
3. AHB Example AMBA System (Addendum 01), ARM DDI 0170A, ARM Limited
Preface
EP93xx User’s Guide
4. The co-processor instruction assembler notation can be referenced from ARM
programming manuals or the Quick Reference Card, document number ARM QRC
0001D, ARM Limited
5. The MAC engine is compliant with the requirement s of IS O/IEC 8802-3 (1993), Sections 3
and 4
6. OpenHCI - Open Host Controller interface Specification for USB, Release 1.0a;
®
Compaq
7. ARM Co-processor Quick Reference Card, document number ARM QRC 0001D, ARM
Limited
8. Information Technology, AT Attachment with Packet Interface - 5 (ATA/ATAPI-5) ANSI
NCITS document T13 1321D, Revision 3, 29 February 2000
9. ARM PrimeCell PL190-Rel1v1 Revision 1.7 Technical Reference Manual DDI0181C,
ARM Limited
10.Audio Codec ‘97, Revision 2.3, April 2002, Intel
, Microsoft®, National Semiconductor
P.4 Notational Conventions
This document uses the following conventions :
®
®
Corporation
• Internal and external Signal Names, and Pin Names use mixed upper and lower case
alphanumeric, and are shown in bold font, for example, RDLED
• Register Bit Fields are named using upper and lower case alphanumeric: for example,
SBOOT, LCSn1
DS785UM1P-3
Copyright 2007 Cirrus Logic
Preface
P
P
P
EP93xx User’s Guide
• Registers are named using mixed upper and lower case alphanumeric, for example,
SysCfg or PxDDR. Where there are multiple registers with the same names, a lower case
“x” is used as a place holder. For example, in the PxDDR registers, x represents a let ter
from A to H, indicating the specific port being discussed
CAUTION:In the Internal Register Map in “Internal Register Map” on page 2-17 some
(An example register description is shown below. This description is used for the following
examples.)
A specific bit may be specified in one of three ways:
1. Register name[bit number], for example, SysCfg[29]
2. Register name.bit field[bit number], for example, SysCfg.REV[1]
3. Register name.bit field[bit name], for example, SysCfg.SBOOT
Hexidecimal numbers are referred to as 0x0000_0000.
memory locations are listed as Reserved. These memory locations should not
be used. Reading from these memory locations will yield invalid data. Writing to
these memory locations may cause unpredictable results.
Binary numbers are referred to as 0000_0000b.
P.5 Register Example
Note:This is only an example. For actual SysCfg register information, see “SysCfg” on page 5-
The EP93xx processors are highly integrated systems-on-a-chip that pave the way for a
multitude of next-generation consumer and industrial electronic pr oducts. Designers of digit al
media servers and jukeboxes, telematic cont rol systems, thin clients, set -top boxes, point-ofsale terminals, industrial controls, biometric security systems, and GPS devices will benefit
from the EP93x processors’ integrated architecture and advanced features. In fact, with
amazingly agile performance provided by a 166 or 200 MHz ARM920T Core, and featuring
an incredibly wide breadth of peripheral interfaces, the EP93xx processors are well suited to
an even broader range of high volume app lications. Furthermore, by ena bling or disabli ng the
EP93xx processor’s peripherals and their interf aces, designers can throttle power
consumption and reduce development costs and accelerate time-to-market by creating a
single platform that can be easily modified to deliver a variety of differentiated end products.
1.2 EP93xx Features
Chapter 1
1Introduction
Maximum clock rates plus package types and number of balls for EP93xx processors are
shown in Table 1-1.
Table 1-1. EP93xx Maximum Clock Rates, Package Type and Number of Balls
ProcessorMax Core Clock Rate
EP9301
EP9302
EP9307
EP9312
EP9315
Features of the EP93xx process ors are summarized in Table 1-2. Block diagrams are shown
in Figure 1-1 EP9301, Figure 1-2 EP9302, Figure 1-3 EP9307, Figure 1-4 EP9312, and
Figure 1-5 EP9315.
166 MHz66 MHz208 LQFP
200 MHz100 MHz208 LQFP
200 MHz100 MHz272 TFBGA
200 MHz100 MHz352 PBGA
200 MHz100 MHz352 PBGA
Max High-Speed Bus
Clock Rate
Package
DS785UM11-1
Copyright 2007 Cirrus Logic
Introduction
1
1
1
EP93xx User’s Guide
Table 1-2. EP93xx Features Summary
Processor
EP9301X----X-225-ADC37-
EP9302X-X--X-225-ADC37-
EP9307-XXXXX-33
EP9312-XXX-X133
EP9315-XXXXX133
16-Bit
External
Bus
32-Bit
External
Bus
Math Co-
Processor
Raster
Analog /
LCD
2-D
Graphics
Accelerator
Ethernet
MAC
IDE
USB 2.0
Host
UART
Touch
Screen
/ ADC
8-Wire/
12-
ADC
8-Wire/
12-
ADC
8-Wire/
12-
ADC
GPIO
48-
47-
55X
Note:“X” means that the function is included; “-” means that the function is not included.
UART2 with IrDA
UART1 with HDLC
System Control –
2 PLLs
PC
Card
SDRAM
SRAM, FLASH,
ROM
12 Channel DMA
1/10/100 Ethernet
MAC
JTAG
2 USB 2.0 FS Host
Boot ROM
Vectored
Inerrupts
ARM920T
I-Cache
16 KB
Memory Management Unit
High-Speed Bus (AHB)
AHB/APB Bridge
Figure 1-1. EP9301 Block Diagram
D-Cache
16 KB
Peripheral Bus (APB)
5-Channel ADC
2 PWM
Enhanced GPIO,
2-wire, 2 LED
I2S
SPI
AC’97
RTC with SW Trim
Watchdog Timer
4 Timers
1-2DS785UM1
Copyright 2007 Cirrus Logic
Introduction
1
1
1
EP93xx User’s Guide
SDRAM
SRAM, FLASH,
ROM
12 Channel DMA
1/10/100 Ethernet
MAC
JTAG
2 USB 2.0 FS Host
Boot ROM
Vectored
Inerrupts
UART2 with IrDA
MaverickCrunchTM Coprocessor
ARM920T
I-Cache
16 KB
Memory Manageme nt U nit
High-Speed Bus (AHB)
AHB/APB Bridge
D-Cache
16 KB
Peripheral Bus (APB)
Figure 1-2. EP9302 Block Diagram
UART1 with HDLC
System Control –
2 PLLs
5-Channel ADC
2 PWMs
Enhanced GPIO,
2-wire, 2 LED
I2S
SPI
AC’97
RTC with SW Trim
Watchdog Timer
4 Timers
2D Graphics
18-bit Raster LCD
plus CCITT656
Video
SDRAM
SRAM, FLASH,
ROM
12 Channel DMA
1/10/100 Etherne t
MAC
JTAG
3 USB 2.0 FS Host
Boot ROM
Vectored
Inerrupts
UART2 with IrDA
UART3 with HDLC
MaverickCrunchTM Coprocessor
ARM920T
I-Cache
16 KB
Memory Management Unit
High-Speed Bus (AHB)
AHB/APB Bridge
D-Cache
16 KB
Peripheral Bus (A PB )
Figure 1-3. EP9307 Block Diagram
UART1 with HDLC
System Control –
2 PLLs
8-Wire
Touchscreen ADC
8x8 Matrix Keypad
1 PWM
Enhanced GPIO
EEPROM, 2 LED
I2S
SPI
AC’97
RTC with SW Trim
Watchdog Timer
4 Timers
DS785UM11-3
Copyright 2007 Cirrus Logic
Introduction
1
1
1
EP93xx User’s Guide
18-bit Raster LCD
plus CCITT656
Video
SDRAM
SRAM, FLA SH,
ROM
12 Channel DMA
1/10/100 Ethern et
MAC
JTAG
3 USB 2.0 FS Host
IDE
Boot ROM
Vectored
Inerrupts
UART2 with IrDA
UART3 with HDLC
MaverickCrunchTM Coprocess or
ARM920T
I-Cache
16 KB
Memory Management Unit
High-Speed Bus (AHB)
AHB/APB Bridge
D-Cache
16 KB
Peripheral Bus (APB)
Figure 1-4. EP9312 Block Diagram
UART1 with HDLC
System Contr o l –
2 PLLs
8-Wire
Touchscreen ADC
8x8 Matrix Keypad
2 PWMs
Enhanced GPIO,
2-wire, 2 LED
I2S
SPI
AC’97
RTC with SW Trim
Watchdog Timer
4 Timers
2D Graphics
18-bit Raster LCD
plus CCITT656
Video
SDRAM
SRAM, FLASH,
ROM, PCMCIA
12 Channel DMA
1/10/100 Ethernet
MAC
JTAG
3 USB 2.0 FS Host
2 IDE
Boot ROM
Vectored
Inerrupts
UART2 with IrDA
UART3 with HDLC
MaverickCrunchTM Coprocessor
ARM920T
I-Cache
16 KB
Memory Management Unit
High-Speed Bus (AHB)
AHB/APB Bridge
D-Cache
16 KB
Peripheral Bus (APB)
Figure 1-5. EP9315 Block Diagram
UART1 with HDLC
System Control –
2 PLLs
8-Wire
Touchscreen ADC
8x8 Matrix Keypad
2 PWMs
Enhanced GPIO,
2-wire, 2 LED
I2S
SPI
AC’97
RTC with SW Trim
Watchdog Timer
4 Timers
1-4DS785UM1
Copyright 2007 Cirrus Logic
Introduction
1
1
1
EP93xx User’s Guide
Features of the EP93xx processors are:
• ARM920T Core:
•200 MHz maximum run frequency and 100 MHz maximum high-speed bus frequency
for EP9302, 9307, 9312, and 9315 only
•166 MHz maximum run frequency and 66 MHz maximum high-speed bus frequency for
EP9301 only
•16 KByte instruction cache and 16 KByte data cache
•Memory Management Unit (MMU) with 64-entry Translation-Lookaside-Buffers (TLBs)
®
enable Linux
• MaverickCrunch™ Co-processor in EP9302, 9307, 9312, and 9315 only:
•Floating point, integer and signal processing instructions
•Optimized for digital mu sic compression algorithms
•Hardware interlocks allow in-line coding
and Windows® CE
®
™
• MaverickKey
•32-bit unique ID
•128-bit random ID
• Integrated Peripherals and Interfaces:
•EIDE, up to 2 devices in EP9312 and 9315 only
•1/10/100 Mbps Ethernet MAC
•Two-port USB 2.0 Full Speed host (OHCI) in EP9301 and 9302 only
•Three-port USB 2.0 Full Speed host (OHCI) in EP9307, 9312, and 9315 only
•IrDA controller, slow and fast mode
•Two UARTs (16550 Type) in EP9301 and 9302 only:
•- UART1 (optionally supports on- chip handling of HDLC)
•- UART2 (optionally provides interface for IrDA controller)
•Three UARTs (16550 Type) in EP9307, 9312, and 9315 only:
- UART1 and UART3 (optionally suppo rt on-chip handling of HDLC)
- UART2 (optionally provides interface for IrDA controller)
IDs for Digital Rights Management or Design IP Security:
- UART3 implements both a UART and an HDLC interface identical to that of UART1;
•LCD and Analog Raster Interface in EP9307, 9312, and 9315 only
•2D Graphics Accelerator in EP9307and 9315 only
- Line Draw
DS785UM11-5
Copyright 2007 Cirrus Logic
Introduction
1
1
1
EP93xx User’s Guide
- Block Copy
- Block Fill
•Touch Screen interface
- 5-ADC in EP9301 and 9302 only
- 8-Wire Touch Screen/ADC in EP9307, 9312, and 9315 only
•SPI port
•AC ‘97 interface
2
S interface with up to 6 channels
•I
•8x8 Matrix keypad scanner (in EP9307, EP9312, and EP9315 only)
•PCMCIA Interface supporting 8-bi t or 16-bit PCMCIA (PC Card) devices in EP9315 only
• External Memory Options
•16-bit SDRAM interface (up to 4 banks) in EP9301 and 9302 only
•32-bit SDRAM interface (up to 4 banks) in EP9307, 9312, and 9315 only
•16/8-bit SRAM/Flash/ROM interface in EP9301 and 9302 only
•32/16/8-bit SRAM/Flash/ROM interface in EP9307, 9312, and 9315 only
•Serial Flash interface
• Internal Peripherals
•Real-Time cl ock with software trim
•12 DMA channels for data transfer to maximize system performance
•Boot ROM
•Dual PLLs
•Watchdog timer
•Two general purpose 16-bit timers
•General purpose 32-bit timer
•40-bit debug timer
• Standard General-Pur pose I/Os (GPI Os ), no interrupts:
•18 in EP9301 and 9302 only
•30 in EP9307 only
•31 in EP9312 and 9315 only
• Enhanced General-Purpose I/Os (EGPIOs) plus Port F GPIOs can generate interrupts:
•19 in EP9301, 9302 only
•18 in EP9307 only
1-6DS785UM1
Copyright 2007 Cirrus Logic
1
1
1
•16 in EP9312 only
•24 in EP9315 only
1.3 EP93xx Processor Applications
The EP93xx processors can be used in a variety of applications, such as:
• Digital media servers
• Integrated home media gateways
• Digital audio jukeboxes
• Streaming audio/video players
• Telematic control systems
• Set-top boxes
• Point-of -s a le terminals
• Thin clients
Introduction
EP93xx User’s Guide
• Internet TVs
• Biometric security systems
• Industrial controls
• GPS & fleet management systems
• Educational toys
• Voti ng ma chines
• Medical equipment
1.4 EP93xx Processor Highlights
1.4.1 High-Performance ARM920T Core
The EP93xx Processors feature an advanced ARM920T Core design with an MMU that
supports Linux
ARM920T’s 32-bit microc ontrol ler ar chitec tur e, wit h a five- st age pi pelin e, d eliver s i mpres sive
performance at very low power. The included 16 KByte instruction cache and 16 KByte data
cache provide zero-cycle latency to th e current program and data, or can be locked to
provide guaranteed no-latency access to cr itical instructions and data . For applications with
instruction memory size restrictions, the ARM920T’s compressed Thumb
provides a space-eff icient design that maximizes external instru ction memory usage.
®
, Windows® CE®, and many other embedded operating systems. The
®
instruction set
1.4.2 MaverickCrunch™ Co-processor for Ultra-Fast Math Processing
The EP9302, EP9307, EP9312, and EP9315 processors include an advanced
MaverickCrunch co-processor that pr ovides mixed-mode math functions to greatl y accelerate
the floating-point processing capabilities of the ARM920T Core. The MaverickCrunch co-
DS785UM11-7
Copyright 2007 Cirrus Logic
Introduction
1
1
1
EP93xx User’s Guide
processor simplifies the end-user’s programming task by using predefined co-processor
instructions, utilizing standard ARM compiler tools, and by requiring just one debugger
session for the entire system. Furthermore, the integrated design provides a single
instruction stream and t he advantage of zero latenc y for cached instructions. To emulate this
capability, competitors’ solutions add a DSP to the system, which requires separate
compiler/linker/debugger tool sets. This additional DSP requires programmers to write two
separate programs and debug them simult aneously, which can result in frustration and costly
delays.
1.4.3 MaverickKey™ Unique ID Secures Digital Content in OEM Designs
The EP93xx processors include Mav erickKey uni que hardware pr ogrammed IDs that pr ovide
an excellent solution to the growing concern over secure Web content and commerce. With
Internet security playing an impor tant role in the delivery of digital media such as books or
music, traditional software methods are quickly becoming unreli able. The MaverickKey
unique IDs provide OEMs with a method of utilizing specific hardware IDs for DRM (Digital
Rights Management) and other authentication mechanisms.
MaverickKey uses a specific 32-bit ID and a 128-bit random ID that are programmed into the
EP93xx processors through the use of l aser pr obing technology. These IDs can then be used
to match secure copyrighted content with the ID of the tar get device that the EP93xx
processor is powering, and then deliver the copyright ed information over a secure
connection. In addition, secure transac tions can benefit by matching device IDs to server IDs.
MaverickKey IDs can also be used by OEMs and design houses to protect against design
piracy by presetting ranges for unique IDs . For more i nformation on securing your design
using MaverickKey, please contact your Cirrus Logic sales representat ive.
1.4.4 Integrated Multi-Port USB 2.0 Full Speed Hosts with Transceivers
The EP9307, EP9312, and EP9315 processors integrate three USB 2.0 Full Speed Host
ports while the EP9301 and EP9302 integrate two of the ports. Fully compliant to the OHCI
USB 2.0 Full Speed specification (12 Mbps), the host por ts can be used to provide
connections to a number of external devices including mass storage devices, external
portable devices suc h as audio p layers or camera s, printers , or USB hubs. Naturally, the USB
host ports support the USB 2.0 Low Speed standard as well. This prov ides the oppor tun ity to
create a wide array of flexible system configurations.
1-8DS785UM1
Copyright 2007 Cirrus Logic
1
1
1
1.4.5 Integrated Ethernet MAC Reduces BOM Costs
The EP93xx processors integrate a 1/10/ 100 Mbps Ethernet Media Acc ess Controller ( MAC).
With a simple connection to MII-based external PHYs (such as the Cirrus Logic CS8952 PHY
Transceiver) , an EP93xx processor-based sys tem has easy , hi gh-performance, cost-e ffective
Internet capability.
1.4.6 8x8 Keypad Interface Reduces BOM Costs
The EP9307, 9312, and 9315 processors include a matrix keypad control ler that scans an
8x8 array of 64 normally open, single pole switches. Any one or two keys depressed will be
de-bounced and decoded. An interrupt i s generated whenever a stable set of depressed key s
is detected. If the keypad is not utilized, the 16 column/row pins may be used as generalpurpose I/Os.
The EP93xx processors include a 16 KByte Boot ROM to set up st andard configur ations. The
Boot ROM controls booting from either FLASH memory, the SPI serial interface, or a UART.
This boot flexibility makes it easy to desi gn user-controlled, field-upgradable systems. See
Chapter 4 on page 4-1, for additional details. The EP93xx processors can also boot directly
from CSn0, bypassing the Boot ROM.
Introduction
EP93xx User’s Guide
1.4.8 Abundant General Purpose I/Os Build Flexible Systems
The EP93xx processors include both enhanced and standard general-purpose I/O pins
(GPIOs). The enhanced GPIOs may individually be configured as inputs, outputs, or
interrupt-enabled input s. Ni neteen enhanc ed GPIOs ar e in EP9301 and 9302 processor s, 18
are in the EP9307 processor, and 16 are in EP9312 processor, and 24 are in the EP9315
processor.
The standard GPIOs may individually be used as inputs, outputs, or (in some cases) opendrain pins. The standard GPIOs are multiplexed with peripheral function pins, so the number
available depends on the utilization of peripherals. Eighteen standard GPIOs are in EP9301
and 9302 processors, 30 are in the EP9307 processor, 31 are in the EP9312 and EP9315
processors.
Together, the enhanced and standard GPIOs facili tate easy system design with external
peripherals not integrated on the EP93xx processors.
The EP93xx processors feature a unified memory address model in which all memory
devices are accessed over a common address/data bus. In the EP9301 and 9302
processors, the common address/data bus is 16-bits wide, the Static Memory Controller
(SMC) supports 8-bit and 16-bit devices and the SDRAM, SyncROM, and SyncFLASH
synchronous memory controller supports 16-bit devices. In the EP9307, EP9312, and
EP9315 processors, the common address/data bus is programmable to either 16-bits or 32-
DS785UM11-9
Copyright 2007 Cirrus Logic
Introduction
1
1
1
EP93xx User’s Guide
bits wide, the SMC supports 8-bit, 16-bit, and 32-bit devices, and the SDRAM, SyncROM,
and SyncFLASH synchronous memory controller supports 16-bit and 32-bit devices. In the
EP9307, EP9312, and EP9315 processors, a separate internal bus to the dynamic memory
controller is dedicated to the read-only Raster/Display refresh engine.
1.4.10 12-Bit Analog-to-Digital Converter (ADC) Provides an Integrated
Touch-Screen Interface or General ADC Functionality
The EP9301 and EP9302 processors include a 5-channel ADC. The EP9307, EP9212, and
EP9315 processors include a 12-bit ADC, which can be utilized eit her as an 8-wire touchscreen interface or for general ADC functionality. The touch-screen interface performs all
sampling, averaging, ADC range checking, and control for a wide variety of analog-resistive
touch screens. To improve system performance, the controller only interrupts the ARM Core
when a meaningful change occurs. The touch screen hardware may be disabled , and the
switch matrix and ADC controlled directly for general ADC usage if desired.
1.4.11 Raster Analog / LCD Controller
The EP9307, EP9312, and EP9315 processors include a raster/LCD controller that features
fully programmable video interface timing for either non-interlaced or dual scan color and
grayscale flat panel displa ys. Resoluti ons up to 1024 x768 pixels are suppor ted from a uni fied
SDRAM-based frame buffer with pixel depths of 4, 8, 16, or 18 bits. A 256x18 color lookup
table, a hardware blinking cursor with up to 64x64 pixels, and an interface to smart panel
displays is also included.
1.4.12 Graphics Accelerator
The EP9307 and EP9315 processors include a hardware graphics acceleration engine that
improves graphic performance by handling block copy, block fill and hardware line draw
operations. The graphics accele rator is used to off load graphics operations from the ARM
Core.
1.4.13 PCMCIA Interface
The EP9315 processor (only) provides a PCMCIA interface that supports 8-bit or 16-bit
PCMCIA PC Cards. These PCMCIA cards are credit card si zed peripherals that add memory,
mass storage and I/O capabilities to compute r syst ems, and can be u sed to further broaden
the options of a designer’s platform.
1-10DS785UM1
Copyright 2007 Cirrus Logic
2
2
2
Chapter 2
2ARM920T Core and Advanced High-Speed Bus (AHB)
2.1 Introduction
This chapter describes the ARM920T Core and the Advanced High-Speed Bus (AHB).
2.2 Overview: ARM920T Core
The ARM920T is a Harvard architecture core with separate 16 kbyte instruction and data
caches with an 8-word line length. The ARM Core utilizes a five-stage pipeline consisting of
fetch, decode, execute, data me mory access, and write stages.
2.2.1 Features
Key features include:
• ARM V4T (32-bit) and Thumb (16-bit compressed) instruction sets
• 32-bit Advanced Micro-Controller Bus Architecture (AMBA)
• 16 kbyte Instruction Cache with lockdown
• 16 kbyte Data Cache (programmable write-through or write-back) wit h lockdown
• Write Buffer
• MMU for Microsoft Windows CE and Linux operating systems
• Translation Look-aside Buffers (TLB) with 64 Data and 64 Instruction Entries
• Programmable Page Sizes of 64 kbyte, 4 kbyte, and 1 kbyte
• Independent lockdown of TLB Entries
• JTAG Interface for Debug Control
• Co-processor Interface
DS785UM12-1
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
2.2.2 Block Diagram
External
Co-Proc
Interface
JTAG
Instruction
cache
R13
ARM9TDMI
Processor core
(Integral
EmbeddedICE)
R13
Data cacheData MMU
Instruction
MMU
CP15
Write
Buffer
Write Back
PA TAG
RAM
AMBA
Bus
Int.
APB
Figure 2-1. ARM920T Block Diagram
2.2.3 Operations
The ARM920T core follows a Harvard architecture and consists of an ARM9TDMI core,
MMU, instruction and data cache. The core supports both the 32-bit ARM and 16-bit Thumb
instruction sets.
The internal bus structure (AMBA) inclu des both a high speed and l ow speed bu s. The high
speed bus AHB (Advanced High-performance Bus) contains a high speed i nternal bus clock
to synchronize co-processor, MMU, cache, DMA controller, and memory modules. AMBA
includes a AHB/APB bridge to the lower speed APB (Advanced Peripheral Bus). The APB
bus connects to lower speed peripher al devices such as UARTs and GPIOs.
The MMU provides memory address translation for all memory and peripherals designed to
remap memory devices and peripheral address locations. Sections, large, small and tiny
pages are programmable to map memory in 1 Mbyte, 64 kbyte, 4 kbyte, 1 kbyte size blocks.
To increase system performance, a 64-entry translation look-aside buffer will cache 64
address locations before a TLB miss occurs.
2-2DS785UM1
Copyright 2007 Cirrus Logic
2
2
2
A 16 kbyte instruction and a 16 kbyte data cache are included to increase performance for
cache-enabled memory regions. The 64-way associative cache also has lock-down
capability. A 16-word Write Buffer all ows cached ins tructions to be fetched and decoded while
the Write Buffer send s data to external memory.
The ARM920T Core supports a number of co-processors, including the MaverickCrunch coprocessor by means of a specific pipeline architecture interface.
2.2.3.1 ARM9TDMI Core
ARM9TDMI core is responsible fo r execut ing both 32- bit ARM and 16-bi t Thumb inst ructions.
Each provides a unique advantage to a system design. Internally, the instructions enter a 5stage pipeline. These stages are:
• Instruction Fetch
• Instruction Decode
• Execute
• Data Memory Access
ARM920T Core and Advanced High-Speed Bus (AHB)
EP93xx User’s Guide
• Register Write
All instructions are fully interlocked. This mechanism will delay the execution st age of a
instruction if dat a in that i nstruction comes from a previ ous instruction that is no t available y et.
This simply insures that software will function identically across different implementations.
For memory access instructions, t he base register used for the access wil l be restor ed by the
ARM Core in the event of an Abort exception. The base register will be restored to the value
contained in it immediately before execution of the instruction.
The ARM9TDMI core memory interface includes a separate inst ruction and data interface to
allow concurrent access of instructions and data to reduce the number of CPI (cycles per
instruction). Both inter faces use pipeline addressing. The core can operate in big and li ttle
endian mode. Endianess affects both the address and the data interfaces.
The memory interface executes four types of memory transfers: sequential, non-sequential,
internal, and co-processor. It will also support uni- and bi-directional transfer modes.
The core provides a debug interface called JTAG (Joint T esting Act ion Group). This inter face
provides debug capability with five external control signals:
• TDO - Test Data Out
• TDI - Test Data In
• TMS - Test Mode Select
• TCK - Test Clock
• nTRST - Te st Reset
There are six scan chains (0 through 5) in the ARM9TDMI controlled by the JTAG Test
Access Port (TAP) controller. Details on the individual scan chain function and bit order can
be found in the ARM920T Technical Reference Manual.
DS785UM12-3
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
2.2.3.2 Memory Management Unit
The MMU provides the translat ion an d acc ess permissi ons for t he address and dat a po rt s f or
the ARM9TDMI core. The MMU is controlled by page tabl es stor ed in system memory and
accessed using the CP15 register 1. The main features of the MMU are as follows:
• Address Translation
• Access Permissions and Domains
• MMU Cache and Write Buffer Access
2.2.3.2.1 Address Translation
The virtual address from the ARM920T c ore is modified by R13 internally to create a modified
virtual address. The MMU then tr anslates th e modifi ed vir tual add ress from R13 by the CP15
register 3 into a phys ical addres s t o access exte rnal memory or a de vice. The MMU l ooks for
the physical address from the Translation Table Base (TTB) in system memory. It will also
update the TLB cache.
The TLB is two 64-entry caches, one for data and one for instruction. If the physical address
for the current virtual addr ess is not found in the TLB (miss) , the ARM Core wi ll go to ext ernal
memory and look for the TTB in system memory. The internal translation table walks
hardware steps thro ugh the p age t able s etup in exte rnal memory for the appro pri ate physical
address.
When the physical address is acquired, the TLB is updated. Whe n the address is found in the
TLB, system performance will increase s ince additi onal cycl es to access memory and update
the TLB are avoided.
Translation of system memory is done by breaking up the memory into different size blocks
called sections, lar ge p ages, small p ages, and tiny p ages. Syst em memory and regi ster s ca n
be remapped by the MMU. The block sizes are as follows:
• Section - 1 Mbyte
• Large Page - 64 kbyte
• Small Page - 16 kbyte
• Tiny Page - 1 kbyte
2.2.3.2.2 Access Permission and Domains
Access to any section or page of memory is dependent on it s domain. The page table in
external memory also contains access permissions for all sub-divisions of external memory.
Access to specific instructi ons or data has three possible states:
• Client: Access permissions based on the section or page table descriptor
• Manager: Ignore access permissions in the section or p age table descriptor
• No access: any attempted access generates a domain fault
2-4DS785UM1
Copyright 2007 Cirrus Logic
2
2
2
2.2.3.2.3 MMU Enable
Enabling the MMU allows system memory control, but is also required if the Dat a Ca che and
the Write Buf fer are to be used. Feat ures are enabled f or specific memory r egions, as defined
in the system page tabl e. MMU enablemen t is done via CP15 re gis ter 1. The pr ocedu re is as
follows:
1. Program the Translation Table Base (TTB) and domain access control registers
2. Create level 1 and level 2 pages for the system, and enable the Data Cache and the
Write Buffer
3. Enable the MMU via bit 0 of CP15 register 1.
2.2.3.3 Cache and Write Buffer
Cache configuration i s 64-way se t assoc iative. The re i s a 16 k byte inst ruction cache and a 16
kbyte data cache. The caches have the following characteristics:
• 8 words per line, with 1 valid bit and 2 dirty bits per line to allow half-line write-backs
ARM920T Core and Advanced High-Speed Bus (AHB)
EP93xx User’s Guide
• Write-through or write-back capability, selectable per memory region defined by the
MMU
• Pseudo random or round robin replacement algorithms for cache misses. This is
determined by the RR bit (bit 14 ) in CP15 register 1. On a cache miss (i nstructi on or dat a
not in the respective cache), an 8-word line is fetched from memory and loaded into the
cache
• Independent cache lock-down with granularity of 1/64th of total cache size or 256 bytes
for both instructions and data. Lock-down of the cache will prevent an eight-word cache
line fill into that region of the cache
• For compatibility with Windows CE and to reduce latency, physical addresses for data
cache entries are stored in the PA TAG RAM, which is used for cache line write-back
operations without need of the MMU. This prevents a possible TLB miss that would
degrade performance
• The Write Buffer has a depth of 16 data words. If enabled, writes are sent to the Write
Buffer directly from the Data Cache or from the CPU (in the event of a cache miss or if
the cache is not enabled).
2.2.3.3.1 Instruction Cache Enab le
• At reset, the Instruction Cache is disabled
• A write to bit 12 of CP15 register 1 will enable or disable the Instruction Cache. If the
Instruction Cache (I-Cache) is enabled without the MMU enabled, all accesses are
treated as cacheable
• If the I-Cache is disabled, current contents are ignored. If re-enabled before a reset,
contents will be unchanged, but may not be coherent with eternal memory. If so,
contents must be flushed before re-enabling.
DS785UM12-5
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
2.2.3.3.2 Data Cache Enable
• A write to bit 2 of CP15 register 1 will enable or di sable the Data Cache (D-Cache)/Write
Buffer
• The D-Cache may only be enabled when the MMU is enabled. All data accesses are
subject to MMU and permission checks
• If disabled, current contents are ignored. If re-enabled before a reset, contents will be
unchanged, but may not be coherent with external memory. Depending on system
software, a clean and invalidate action may be required before re-enabling.
2.2.3.3.3 Write Buffer Enable
• The Write Buffer is enabled via the page table entries in the MMU. The Write buffer
cannot be enabled unless the MMU is enabled.
2.2.4 Co-processor Interface
The MaverickCrunch co-processor is explained in detail in Chapter 3 on page 3-1. The
relationship between the ARM co-processor instructions and MaverickCrunch co-processor
is also explained in Chapter 3.
The ARM co-processor instruction set includes:
• LDC - Load co-processor from memory
• STC - Store co-processor register from memory
• MRC - Move to ARM register from co-processor register
• MCR - Move to co-processor register from ARM register
The ARM co-processor has sixteen (C0 through C15) 64-bit reg ist ers for data transfer and
data manipulation. See Chapter 3, Section 3.2 on page 3-8 for a code example.
2.2.5 AMBA AHB Bus Interface Overview
The AHB (Advanced High-Performance Bus) is the high-per fo rmance syste m backbone bus .
Figure 2-2 on page 2-7 shows a typical AMBA AHB System.
The AHB connects devices that require high bandwi dth, such as DMA controllers, external
memory, and co-processors. The AHB supports:
• Burst Transactions
• Split Transactions
• Bus Master hand-over to devices such as the MaverickCrunch co-processor or DMA
controller
• Single clock edge operations
The APB (Advanced Peripheral Bus) is a lower bandwidth, but lower power, bus that
provides:
2-6DS785UM1
Copyright 2007 Cirrus Logic
2
2
2
• Latched address and control
• A simple Interface to on-chip peripherals such as UARTs and AC’97.
ARM9TD MI
External
Memory
Interf ac e
Figure 2-2. Typical AMBA AHB System
2.2.6 AHB Implementation Details
ARM920T Core and Advanced High-Speed Bus (AHB)
EP93xx User’s Guide
Co-
Processo
USB
r
AHBAPB
DMA
Controller
AHB/
APB
B
r
i
d
g
e
UARTSPI
GPIO
AC97
Peripherals or the external memory interface that have high bandwidth and low latency
requirements are connected to the CPU using the AHB bus. The peripherals include the
Vectored Interrupt Controllers (VIC1, VIC2), DMA, LCD/Raster registers, USB host, IDE,
Ethernet MAC and the bridge to the APB interface. The AHB/APB Bridge transparently
converts the AHB accesses into the slower speed APB accesses. All of the control registers
for the APB peripherals are programmed using the AHB/APB bridge interface. The main AHB
data and address lines are configure d using a multiplexed bus. This removes the need for
three state buffers and bus holders, and simplifies bus arbitration. Figure 2-3 on page 2-8
shows the main data paths in the processor’s AHB implementation.
DS785UM12-7
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
Ethernet
ARM920T
VIC2
VIC1
APB
18 Bit Raster
LCD I/F
SDRAM
Controller
E
B
I
Static
Memory/
PCMCIA
IDE
USB
Host
AHB
Maverick
Crunch
Boot ROM
DMA
UARTs
Timers
AHB/APB
bridge
RTC
Watchdog
Test
Support
Touchscreen
8x8 Key Mtx
GPIOs
PWM
SPI
I2S
IrDA
PLL1PLL2
Clock & State
Control
AC97
Figure 2-3. Main Data Paths
Before an AMBA-to-AHB transfer can commence, the bus ma ster must be gran ted access t o
the bus. This process is started by the master asserting a request signal to the Arbiter. The
Arbiter then indicates when the master will be granted use of the bus. A granted bus master
starts an AMBA-to-AHB transf er by driving the address and control signals. These signals
provide information on the address, direction and width of the transfer, as well as indicating
whether the transfer is part of a burst.
Two different forms of burst transfers are al lowed:
• Incrementing bursts, which do not wrap at address boundaries
• Wrapping bursts, which wrap at particular address boundaries.
2-8DS785UM1
Copyright 2007 Cirrus Logic
2
2
2
A write data bus is used to move data from the master to a slave, while a read data bus is
used to move data from a slave to the master. Every transfer consists of:
• An address and control cycle
• One or more cycles for the data.
In normal operation a master is allowed to complete all the transfers in a particular burst
before the arbiter grants another master access to the bus. However, in order to avoid
excessive arbitration latencies, it is possible for the arbiter to break up a burst, and, in such
cases, the master must re- arbit rate for the bus i n order t o complete the remaini ng tr ansfers i n
the burst.
2.2.7 Memory and Bus Access Errors
There are several possible sources of access errors:
• Reads to reserved or undefined register memory addresses will return indeterminate
data. Writes to reserved or undefined memory addresses are generally ignored, but this
behavior is not guaranteed. Many register addresses are not fully decoded, so aliasing
may occur. Addresses and memory ranges listed as Reserved should not be accessed;
access behavior to these regions is not defined
ARM920T Core and Advanced High-Speed Bus (AHB)
EP93xx User’s Guide
• Access to non-existent registers or memory may result in a bus error
• Any access to the APB control register space will complete normally, as these devices
have no means of signaling an error
• Access to non-existent AHB or APB registers may result i n a bus error, depending on the
device and nature of the error. Device specific access rules are defined in the device
descriptions
• External memory access is controlled by the Static Memory Controller (SMC) or the
Synchronous Dynamic RAM (SDRAM) controller. In general, access to non-existent
external memory will complete normally, with reads returning random false data.
2.2.8 Bus Arbitration
The arbitration mechanism is used to ensure t hat only o ne maste r has access to t he bus that
it controls at any one time. The Arbiter performs this function by observing a number of
different requests to use the bus, and then deciding which is currently the highest priority
master requesting the bus.
The arbitration scheme can be broken down into three main areas:
• The main AHB system bus Arbiter
• The SDRAM slave interface Arbiter
• The EBI bus Arbiter
DS785UM12-9
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
2.2.8.1 Main AHB Bus Arbiter
This Main AHB Bus Arbiter controls bus master arbitration for the AHB bus. The AHB bus has
eight master interfaces:
• ARM920T
• DMA controller
• USB hosts (USB1, 2, 3)
• Ethernet MAC
• LCD/Raster
• Raster Hardware Cursor.
These interfaces have an order of priority that is linked closely with the power saving modes
Halt and Standby. These power saving modes force the Arbiter to gr ant the default bus
master , in this case, the ARM920T.
The order of priority of the bus masters, from highest to lowest, is shown in Table 2-1.
The priority of the arbiter may be programmed via the BusMstrArb register in the Clock and
St ate Control ler. The arbiter can also be programmed to degrant one of these masters: DMA,
USB Host or Ethernet MAC if an interrupt (IRQ or FIQ) is pending or bei ng serviced. This
prevents one of these masters from blocking important interrupt service routines. These
masters are thereby prevented from accessing the bus, that is, their bus requests are
masked until the IRQ/FIQ is removed (by the Interrupt Service Routine). After the IRQ/FIQ is
removed, their bus requests wi ll again be r ecognize d. The default is to progr am the arbiter so
that it does not degrant any of these masters.
In normal operation, when the ARM920T is grant ed the bus and a request to enter Hal t mode
is received, the ARM920T is de-granted from the AHB bus. Any other master reque sting the
bus during Halt mode (according to it’ s priority) will be granted the bus. In the case of entry
into Standby mode, the dummy master will be granted the bus, which simply performs IDLE
transfers. In this way, all the masters except the ARM920T can be used during Halt mode, but
are shutdown upon entry into Standby mode.
PRIORITY 00
(Reset value)
PRIORITY 01PRIORITY 10PRIORITY 11
2-10DS785UM1
Copyright 2007 Cirrus Logic
2
2
2
2.2.8.2 SDRAM Slave Arbiter
The SDRAM Slave Arbiter prioritizes between accesses from the AHB bus and the Raster
DMA bus. If an access request from the AHB arrives at the same time as an access request
from the Raster DMA, the Raster DMA will be given access while the AHB request is queued.
2.2.8.3 EBI Bus Arbiter
The EBI Bus Arbiter is used to arbitrate between accesses from the SDRAM controller and
the Static Memory controller, where priority is given to accesses from the SDRAM controller.
2.3 AHB Decoder
The AHB Decoder contains t he device memory map f or all of the AHB mast ers/slaves and for
the APB bridge. When a particular address range is sel ected, the appropriate signal is
generated as defined in Table 2-2.
(For additional information, see 17, “Reference Documents” on page P-3.
Note: Due to decoding optimization, the AHB peripheral registers are aliased throughout each
peripherals register bank. Do not attempt to access an unspecified register within the
bank.
2.3.1 AHB Slave
An AHB Slave responds to transfers initiated by bus masters. The slave uses signals from
the decoder to determine when it should respond to a bus transfer. All other signals required
for the transfer, such as the address and control information, are generated by the bus
master.
DS785UM12-11
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
2.3.2 AHB-to-APB Bridge
The AHB-to-APB Bridge is an AHB slave that provides an interface between the high-speed
AHB and the low-power APB. Read and write transfers on the AHB are converted into
equivalent transfers on the APB. As the APB is not pipelined. Wait states are added during
transfers to and from the APB when the AHB is required to wait for the APB.
The main sections of this bridge are:
• AHB slave bus interface
• APB transfer state machine, which is independent of the device memory map
• APB output signal generation.
2.3.2.1 Function and Operation of the AHB-to-APB Bridge
The AHB-to-APB Bridge responds to access requests from the currently granted AHB
master. The AHB accesses are then converted into APB accesses.
If an undefined location is accessed, operati on of the system continues as normal, but no
peripherals are selected. The APB bridge acts as the only master on the APB.
Note: Due to decoding optimization, the APB peripheral registers are aliased throughout each
peripherals register bank. Do not attemp to access an unspecified register within the bank.
2.3.3 APB Slave
An APB Slave responds to accesses initiated by bus masters. The slave uses signals from
the decoder to determine when it should respond to a bus access. All other signals required
for the access, such as the address and control info rmation, are generated by the AHB-toAPB Bridge.
2.3.4 Register Definitions
The ARM920T Core has thirty seven 32-bit internal regist ers, where some are modal and
some are banked. If operating in Thumb instructions state, the ARM Core must switch to
ARM instructions state before t aking an exception. The return instruct ion will res tore the ARM
Core to the Thumb state. Most tasks are executed out of User mode. The ARM920T Core’s
operating modes are shown in Table 2-4.
ARM920T Core and Advanced High-Speed Bus (AHB)
EP93xx User’s Guide
Table 2-4. ARM920T Cor e Operating Modes
ModeDescription
UserUnprivileged normal operating mode
FIQ
IRQ
Supervisor
Abort:
UndefUndefined instructions mode
System
Table 2-5 illustrates the use of all registers for the ARM920T Core’s operating modes. Each
will bank or store a specific number of registers. Banked register information is not shared
between modes. FIQs bank the largest number of registers, and increase performance by
reducing the need to push/pop registers from th e stack.
Fast interrupt (high priority) mode when FIQ is
asserted
Interrupt request (normal) mode when IRQ is
asserted
Software interrupt instruction (SWI) or reset will
cause entry into this mode.
Memory access violation will cause entry into this
mode.
User mode in Thumb state limits access to the low registers r0-r7. To access to the high
registers, the ARM Core must first revert to the ARM st ate. The high registers are:
• r0-r12: General purpose read/write 32-bit regi sters
• r13 (sp): Stack Pointer
• r14 (lr): Link Register
• r15 (pc): Program Counter
• cpsr: Current Program Status Register containing condition codes and operating modes
2-14DS785UM1
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
• spsr: Saved Program Status Register contains CPSR after occurrence of an exception
CP15 has 16 registers that control the core as described in Table 2-6.
Table 2-6. CP15 ARM920T Register Description
RegisterDescription
ID Code: (Read/Only) This register returns a 32-bit device ID code. ID Code data includes
the core type, revision, part number etc. Access to this register is via the instructio n
0
1
2
MRC p15 0, Rd, c0, c0, 0.
Cache Code: This register will return cache type, size and length of both I-Cache and D-
Cache, and associativity. Access to this register is via the instruction
MRC p15 0, Rd, c0, c0, 1.
Control Register: (Read/Write) This register is used to enable: MMU, instruction and data
cache, round robin replacement ‘RR’-bit, system protection, ROM protection, and clocking
mode. Read/Write Instructions are:
MRC p15, 0, Rd, c1, c0, 0 - Read control register - value stored in Rd
MCR p15, 0, Rd, c1, c0, 0 - Write control register - value first loaded into Rd
Translation Base Table: (Read/Write) This register contains the start address of the first
level translation table. The upper 18 bits represent the pointer to the table base. The lower
14 bits should be all zeroes for a write, unpredictable if read.
MRC p15, 0, Rd, c2, c0, 0 - Read TTB
MCR p15, 0, Rd, c2, c0, 0 - Write TTB
Domain Access Control: (Read/Write) This register specifies permissions for each of the
Reserved: Do not access. Unpredictable behavior may result.
Fault Status: (Read/Write) This register indicates the type of fault and the domain of the
most recent data abort. Read/Write Instructions are:
MRC p15, 0, Rd, c5, c0, 0 - read data FSR value
MCR p15, 0, Rd, c5, c0, 0 - write data FSR value
Fault Address: (Read/Write) This register contains the address of the last data access
abort. Read/Write Instructions are:
MRC p15, 0, Rd, c6, c0, 0 - read FAR data
MCR p15, 0, Rd, c6, c0, 0 - write FAR data
Cache Operation: (Write/Only) This register configures, or performs a clean (flush) of, the
cache and write buffer when written to. Example:
MRC p15, 0, Rd, c7, c7, 0 - Invalidate I/D-cache
MRC p15, 0, Rd, c7, c5, 0 - Invalidate I-Cache
TLB Operation: (Write/Only) This register configures, or performs a clean (flush) of, the
TLB when written to. Example:
MRC p15, 0, Rd, c8, c7, 0 - Invalidate TLB
Cache Lockdown: (Read/Write) This register prevents certain existing cache-lines from
being overwritten (locked) during a new cache-line fill. Examples:
MRC p15, 0, Rd, c9, c0, 1- Write lockdown base pointer for D-Cache
MRC p15, 0, Rd, c9, c0, 1 - Write lockdown base pointer for I-Cache
TLB Lockdown: (Read/Write) This register prevents existing TLB entries from being
10
DS785UM12-15
erased during a table walk. Examples:
MRC p15, 0, Rd, c10, c0, 1- Write lockdown base pointer for data TLB entry
MRC p15, 0, Rd, c10, c0, 1 - Write lockdown base pointer for instruction TLB entry
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
T a ble 2-6. CP15 ARM92 0T Regist er Descriptio n (Continued)
RegisterDescription
11,12,14
2.3.5 Memory Map
The memory map for Synchronous Memory Boot and Asynchronous Memory Boot is shown
in Table 2-7.
If internal Boot Mode is sel ected an d th e reg ister BootMod eClr has been wr itte n, t he a ddress
range 0x0000_0000 -> 0x0000_FFFF is occupied by the internal Boot ROM until the internal
Boot Code is completed. After boot completion, either Synchronous or Asynchronous
memory is re-mapped to occupy this address space.
NOTE: Some memory locations are listed as Reserved. These memory locations should not
be used. Reading from these memory locations will yield invalid data. Writing to these
memory locations may cause unpredictable results.
Reserved
FCSE PID Register: (Read/Write) ARM9TDMI core addresses ranging from 0 to 32MB are
13
15
Address RangeSync Memory BootAsync Memory Boot
translated by this register to A + FCSE*32MB and then sent to the MMU. If turned off,
straight addresses are sent to the MMU.
Test Register Only: Reads or writes will cause unpredictable behavior.
Table 2-7. Global Memory Map for the Two Boot Modes
Note: The shaded memory areas are dedicated to system registers. Details of these registers
are in Table 2-8.
2.3.6 Internal Register Map
Table 2-8 on page 2-17 shows the memory map for internal registers. Registers are set to
their default sta te by the
registers are reset only by the
specified.
2.3.6.1 Memory Access Rules
Any memory address not specifically assigned to a register should be avoided. Reads to
register memory addresses labelled Reserved, Unused or Undefined will return
indeterminate data. Writes to register memory addresses labelled Reserved, Unused or
Undefined are generally ignored, but this behavior is not guaranteed. Many register
addresses are not fully decoded, so aliasing may occur. Addresses and memory ranges
listed as Reserved (RSVD) should not be accessed; behavio r resulting from accesses to
these regions is not defined.
RSTOn pin input or by the PRSTn pin input. Some state conserving
ARM920T Core and Advanced High-Speed Bus (AHB)
EP93xx User’s Guide
PRSTnpin.All registers are read/write unless otherwise
The SW Lock field identifies registers with a software lock. A software lock prevents the
register from being written (unless an unlock operation is performed immediately prior to the
write). Any register whose accidental alteration could cause system damage may be
controlled with a software lock. Each peripheral with software lock capability has its own
software lock register.
Within a register definition, a reserved bit indicated by the name RSVD, means the bit is not
accessible. Software shou ld mask t he RSVD bit s when doi ng bit reads. RSVD bi ts wi ll ignor e
writes, that is writing a zero or a one has no affect.
Register bits identifi ed as NC are functionally alive but have an undocumented or a “don’t
care” operating function. Bits identified as NC must be treated in a specific manner for reads
and writes. The register descriptions will provide information on how to handle NC bits.
Unless specified otherwise, all registers can be accessed as a byte, half-word, or word.
CAUTION: Some memory locations are listed as Reserved. Th ese memory locations
should not be accessed. Reading from these memory locations will yield invalid data.
Writing to these memory locations may cause unpredictable results.
0x8001_xxxx
0x8001_0000RXCtlMAC Receiver Control RegisterN
0x8001_0004TXCtlMAC Transmitter Control RegisterN
0x8001_0008TestCtlMAC Test Control RegisterN
0x8001_0010MIICmdMAC MII Command RegisterN
0x8001_0014MIIDataMAC MII Data RegisterN
0x8001_0018MIIStsMAC MII Status RegisterN
0x8001_0020SelfCtlMAC Self Control RegisterN
0x8001_0024IntEnMAC Interrupt Enable RegisterN
0x8001_0028IntStsPMAC Interrupt Status Preserve RegisterN
0x8001_002CIntStsCMAC Interrupt Status Clear RegisterN
0x8001_0030 - 0x8001_0034Reserved
0x8001_0038DiagAdMAC Diagnostic Address RegisterN
0x8001_003CDiagDaMAC Diagnostic Data RegisterN
0x8001_0040GTMAC General Timer RegisterN
0x8001_0044F CTMAC Flow Control Timer RegisterN
0x8001_0048FCFMAC Flow Control Format RegisterN
0x8001_004CAFPMAC Address Filter Pointer RegisterN
0x8001_0050 - 0x8001_0055IndAd
0x8001_0050 - 0x8001_0057HashTblMAC Hash Table Register, (shares address space with IndAd)N
0x8001_0060G lIntStsMAC Global Interrupt Status RegisterN
0x8001_0064GlIntMskMAC Global Interrupt Mask RegisterN
0x8001_0068G lIntROStsMAC Global Interrupt Read Only Status RegisterN
0x8001_006CGlIntFrcMAC Global Interrupt Force RegisterN
0x8001_0070T XCollCntMAC Transmit Collision Count RegisterN
0x8001_0074RXMissCntMAC Receive Miss Count RegisterN
0x8001_0078RXRuntCntMAC Receive Runt Count RegisterN
0x8001_0080BMCtlMAC Bus Master Control RegisterN
0x8001_0084BMStsMAC Bus Master Status RegisterN
0x8001_0088RXBCAMAC Receive Buffer Current Address RegisterN
Ethernet MACEthernet MAC Control Registers
MAC Individual Address Register, (shares address space with
HashTbl)
SW
Lock
N
2-18DS785UM1
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
Table 2-8. Internal Register Map (Continued)
EP93xx User’s Guide
AddressRegister NameRegister Description
0x8001_0090RXDQBAddMAC Receive Descriptor Queue Base Address RegisterN
0x8001_0094RXDQBLenMAC Receive Descriptor Queue Base Length RegisterN
0x8001_0096RXDQCurLenMAC Receive Descriptor Queue Current Length RegisterN
0x8001_0098RXDCurAddMAC Receive Descriptor Current Address RegisterN
0x8001_009CRXDEnqMAC Receive Descriptor Enqueue RegisterN
0x8001_00A0RXStsQBAddMAC Receive Status Queue Base Address RegisterN
0x8001_00A4RXStsQBLenMAC Receive Status Queue Base Length RegisterN
0x8001_00A6RXStsQCurLenMAC Receive Status Queue Current Length RegisterN
0x8001_00A8RXStsQCurAddMAC Receive Status Queue Current Address RegisterN
0x8001_00ACRXStsEnqMAC Receive Status Enqueue RegisterN
0x8001_00B0TXDQBAddMAC Transmit Descriptor Queue Base Address RegisterN
0x8001_00B4TXDQBLenMAC Transmit Descriptor Queue Base Length RegisterN
0x8001_00B6TXDQCurLenMAC Transmit Descriptor Queue Current Length RegisterN
0x8001_00B8TXDQCurAddMAC Transmit Descriptor Current Address RegisterN
0x8001_00BCTXDEnqMAC Transmit Descriptor Enqueue RegisterN
0x8001_00C0TXStsQBAddMAC Transmit Status Queue Base Address RegisterN
0x8001_00C4TXStsQBLenMAC Transmit Status Queue Base Length RegisterN
0x8001_00C6TXStsQCurLenMAC Transmit Status Queue Current Length RegisterN
0x8001_00C8TXStsQCurAddMAC Transmit Status Queue Current Address RegisterN
0x8001_00D0RXBufThrshldMAC Receive Buffer Threshold RegisterN
0x8001_00D4TXBufThrshldMAC Transmit Buffer Threshold RegisterN
0x8001_00D8RXStsThrshldMAC Receive Status Threshold RegisterN
0x8001_00DCTXStsThrshldMAC Transmit Status Threshold RegisterN
0x8001_00E0RXDThrshldMAC Receive Descriptor Threshold RegisterN
0x8001_00E4TXDThrshldMAC Transmit Descriptor Threshold RegisterN
0x8001_00E8MaxFrmLenMAC Maximum Frame Length RegisterN
0x8001_00ECRXHdrLenMAC Receive Header Length RegisterN
0x8001_0100 - 0x8001_010CReserved
0x8001_4000 - 0x8001_50FFMACFIFOMAC FIFO RAMN
SW
Lock
0x8002_xxxx
0x8002_0000HcRevision USB Host Controller RevisionN
0x8002_0004HcControl USB Host Controller ControlN
0x8002_0008HcCommandStatus USB Host Controller Command StatusN
0x8002_000CHcInterruptStatus USB Host Controller Interrupt StatusN
0x8002_0010HcInterruptEnable USB Host Controller Interrupt EnableN
0x8002_0014HcInterruptDisable USB Host Controller Interrupt DisableN
0x8002_0018HcHCCA USB Host Controller HCCAN
0x8002_001CHcPeriodCurrentED USB Host Controller Period CurrentEDN
0x8002_0020HcControlHeadED USB Host Controller Control HeadEDN
0x8002_0024HcControlCurrentED USB Host Controller Control CurrentEDN
0x8002_0028HcBulkHeadED USB Host Controller Bulk HeadEDN
0x8002_002CHcBulkCurrentED USB Host Controller Bulk CurrentEDN
DS785UM12-19
USBUSB Registers
Copyright 2007 Cirrus Logic
N
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
Table 2-8. Internal Register Map (Continued)
AddressRegister NameRegister Description
0x8002_0030HcDoneHead USB Host Controller Done HeadN
0x8002_0034HcFmInterval USB Host Controller Fm IntervalN
0x8002_0038HcFmRemaining USB Host Controller Fm RemainingN
0x8002_003CHcFmNumber USB Host Controller Fm NumberN
0x8002_0040HcPeriodicStart USB Host Controller Periodic StartN
0x8002_0044HcLSThreshold USB Host Controller LS ThresholdN
0x8002_0048HcRhDescriptorA USB Host Controller Root Hub Descriptor AN
0x8002_004CHcRhDescriptorBUSB Host Controller Root Hub Descriptor BN
0x8002_0050HcRhStatus USB Host Controller Root Hub StatusN
0x8002_0054HcRhPortStatus[1]USB Host Controller Root Hub Port Status 1N
0x8002_0058HcRhPortStatus[2]USB Host Controller Root Hub Port Status 2N
0x8002_005CHcRhPortStatus[3]USB Host Controller Root Hub Port Status 3N
0x8002_0080USBCtrlUSB Configuration ControlN
0x8002_0084USBHCIUSB Host Controller Interface StatusN
0x8003_xxxx
0x8003_0000VLinesTotalT ot al Number of vertical frame linesY
0x8003_0004VSyncStrtS topVertical sync pulse setupY
0x8003_0008VActiveStrtStopVertical blanking setupY
0x8003_000CVClkStrtStopVertical clock active frameY
0x8003_0010HClkTotalT ot al Number of horizontal line clocksY
0x8003_0014HSyncStrtStopHorizontal sync pulse setupY
0x8003_0018HActiveStrtStopHorizontal blanking setupY
0x8003_001CHClkStrtStopHorizontal clock active frameY
0x8003_0020BrightnessPWM brightness controlN
0x8003_0024VideoAttribsVideo state machine parametersY
0x8003_0028VidScrnPageStarting address of video screenN
0x8003_002CVidScrnHPageStarting address of video screen half pageN
0x8003_0030ScrnLinesNumber of active lines scanned to the screenN
0x8003_0034LineLengt hLength in words of data for linesN
0x8003_0038VLineStepMemory step for each lineN
0x8003_003CLineCarryHorizontal/vertical offset parameterY
0x8003_0040BlinkRateBlink counter setupN
0x8003_0044BlinkMaskLogic mask applied to pixel to perform blink operationN
0x8003_0048BlinkPattrnCompare value for determining blinking pixels N
0x8003_004CPattrnMaskMask to limit pattern N
0x8003_0050BkgrndOffsetBac kground color or blink offset value N
0x8003_0054PixelModePixel mode definition setup Register N
0x8003_0058ParllIfOutParallel interface write/control Register N
0x8003_005CParllIfInParallel interface read/setup Register N
0x8003_0060CursorAdrStartWord location of the top left corner of cursor to be displayed N
0x8003_0064CursorAdrResetLocation of first word of cursor to be scanned after last line N
0x8003_0068CursorSizeCursor height, width, and step size Register N
RASTERRaster Control Registers
SW
Lock
2-20DS785UM1
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
Table 2-8. Internal Register Map (Continued)
EP93xx User’s Guide
AddressRegister NameRegister Description
0x8003_006CCursorColor1Cursor color overlaid when cursor value is 10 N
0x8003_0070CursorColor2Cursor color overlaid when cursor value is 11 N
0x8003_0074CursorXYLocCursor X and Y location RegisterN
0x8003_0078CursorDScanLHYLocCursor dual scan lower half Y location RegisterN
0x8003_007CRasterSWLock
0x8003_0080 - 0x8003_00FC GrySclLUTRGrayscale Look Up TableN
0x8003_0200VidSigRsltValVideo signature result value N
0x8003_0204VidSigCtrlVideo signature Control Register N
0x8003_0208VSigStrtStopVertical signature bounds setupN
0x8003_020CHSi gStrtStopHorizontal signature bounds setupN
0x8003_0210SigClrStrSignature clear and store locationN
0x8003_0214ACRateLCD AC voltage bias control counter setupN
0x8003_0218LUTSwCtrlLUT switching control Register N
0x8003_021CCursorBlinkColor1Cursor Blink color 1N
0x8003_0220CursorBlinkColor2Cursor Blink color 2N
0x8003_0224CursorBlinkRateCtrlCursor Blink rate control RegisterN
0x8003_0228VBlankStrtStopVertical Blank signal Start/Stop RegisterN
0x8003_022CHBlankStrtStopHorizontal Blank signal Start/Stop Register N
0x8003_0230E OLOffsetEnd Of Line Offset value N
0x8003_0234FIFOLevelFIFO refill level RegisterN
0x8003_0280 - 0x8003_02FC GrySclLUTGGrayscale Look Up TableN
0x8003_0300 - 0x8003_037CGrySclLUTBGrayscale Look Up TableN
0x8003_0400 - 0x8003_07FC ColorLUTColor Look Up TableN
Software Lock Register. Register used to unlock registers that
have SWLOCK
SW
Lock
N
0x8004_xxxx - 0x8005_xxxxReserved
0x8006_xxxx
0x8006_0000Reserved
0x8006_0004GlConfigControl and status bits used in configurationN
0x8006_0008RefrshTimrSet the period between refresh cyclesN
0x8006_000CBootStsReflect the state of the boot mode option pinsN
0x8006_0010SDRAMDevCfg0Device configuration 0N
0x8006_0014SDRAMDevCfg1Device configuration 1N
0x8006_0018SDRAMDevCfg2Device configuration 2N
0x8006_001CSDRAMDevCfg3Device configuration 3N
0x8008_xxxx
0x8008_0000SMCBCR0
0x8008_0004SMCBCR1
DS785UM12-21
SDRAMSDRAM Registers
SMCSMC and PCMCIA Control Registers
Bank config Register 0 (used to program characteristics of the
SRAM/ROM memory)
Bank config Register 1 (used to program characteristics of the
SRAM/ROM memory)
0x800C_022CVIC2VectCntl11Vector control 11 RegisterN
0x800C_0230VIC2VectCntl12Vector control 12 RegisterN
0x800C_0234VIC2VectCntl13Vector control 13 RegisterN
0x800C_0238VIC2VectCntl14Vector control 14 RegisterN
0x800C_023CVIC2VectCntl15Vector control 15 RegisterN
0x800C_0FE0VIC2PeriphID0VIC Identification Register bits 7:0N
0x800C_0FE4VIC2PeriphID1VIC Identification Register bits 15:8N
0x800C_0FE8VIC2PeriphID2VIC Identification Register bits 23:16N
0x800C_0FECVIC2PeriphID3VIC Identification Register bits 31:24N
0x800C_0FF0 - 0x800C_0FFCReservedN
0x8081_xxxx
0x8081_0000Timer1LoadContains the initial value of the timerN
0x8081_0004Timer1ValueGives the current value of the timerN
0x8081_0008Timer1ControlProvides enable/disable and mode configurations for the timerN
0x8081_000CTimer1ClearClears an interrupt generated by the timerN
0x8081_0020Timer2LoadContains the initial value of the timerN
0x8081_0024Timer2ValueGives the current value of the timerN
0x8081_0028Timer2ControlProvides enable/disable and mode configurations for the timerN
0x8081_002CTimer2ClearClears an interrupt generated by the timerN
0x8081_0060 - 0x8081_0064Reserved
0x8081_0080Timer3LoadContains the initial value of the timerN
0x8081_0084Timer3ValueGives the current value of the timerN
0x8081_0088Timer3ControlProvides enable/disable and mode configurations for the timerN
0x8081_008CTimer3ClearClears an interrupt generated by the timerN
TIMERTimer Registers
SW
Lock
0x8082_xxxx
0x8082_0000I2STXClkCfgTransmitter clock configuration Register N
0x8082_0004I2SRXClkCfgReceiver clock configuration RegisterN
0x8082_0008I2SGlSts
0x8082_000CI2SGlCtrlI2S Global Control Register N
0x8082_0010I2STX0LftLeft Transmit data Register for channel 0N
0x8082_0014I2STX0RtRight Transmit data Register for channel 0N
0x8082_0018I2STX1LftLeft Transmit data Register for channel 1N
0x8082_001CI2STX1RtRight Transmit data Register for channel 1N
0x8082_0020I2STX2LftLeft Transmit data Register for channel 2N
0x8082_0024I2STX2RtRight Transmit data Register for channel 2N
0x8082_0028I 2STXLinCt rlDataTransmit Line Control RegisterN
0x8082_002CI2STXCtrlTransmit Control RegisterN
0x8082_0030I2STXWrdLenTransmit Word LengthN
0x8082_0034I 2STX0E nTX0 Channel EnableN
0x8082_0038I 2STX1E nTX1 Channel EnableN
DS785UM12-25
I2SI2S Registers
I2S Global Status Register. This reflects the status of the 3 RX
FIFOs and the 3 TX FIFOs
Copyright 2007 Cirrus Logic
N
N
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
Table 2-8. Internal Register Map (Continued)
AddressRegister NameRegister Description
0x8082_003CI2STX2EnTX2 Channel EnableN
0x8082_0040I2SRX0LftLeft Receive data Register for channel 0N
0x8082_0044I2SRX0RtRight Receive data Register for channel 0N
0x8082_0048I2SRX1LftLeft Receive data Register for channel 1N
0x8082_004CI2SRX1RtRight Receive data Register for channel 1N
0x8082_0050I2SRX2LftLeft Receive data Register for channel 2N
0x8082_0054I2SRX2RtRight Receive data Register for channel 2N
0x8082_0058I 2SRX LinCtrlDataReceive Line Control RegisterN
0x8082_005CI2SRXCtrlReceive Control RegisterN
0x8082_0060I2SRXWrdLenReceive Word LengthN
0x8082_0064I2SRX0EnRX0 Channel EnableN
0x8082_0068I2SRX1EnRX1 Channel EnableN
0x8082_006CI2SRX2EnRX2 Channel EnableN
0x8083_xxxx
0x8083_2714ExtensionIDContains the Part ID for EP93XX devicesN
Contact Cirrus Logic for details regarding implementation of device Security measures.
0x8084_xxxx
0x8084_0000PADRGPIO Port A Data RegisterN
0x8084_0004PBDRGPIO Port B Data RegisterN
0x8084_0008PCDRGPIO Port C Data RegisterN
0x8084_000CPDDRGPIO Port D Data RegisterN
0x8084_0010PADDRGPIO Port A Data Direction RegisterN
0x8084_0014PBDDRGPIO Port B Data Direction RegisterN
0x8084_0018PCDDRGPIO Port C Data Direction RegisterN
0x8084_001CPDDDRGPIO Port D Data Direction RegisterN
0x8084_0020PEDRGPIO Port E Data RegisterN
0x8084_0024PEDDRGPIO Port E Data Direction RegisterN
0x8084_0028 - 0x8084_002CReserved
0x8084_0030PFDRGPIO Port F Data RegisterN
0x8084_0034PFDDRGPIO Port F Data Direction RegisterN
0x8084_0038PGDRGPIO Port G Data RegisterN
0x8084_003CPGDDRGPIO Port G Data Direction RegisterN
0x8084_0040PHDRGPIO Port H Data RegisterN
0x8084_0044PHDDRGPIO Port H Data Direction RegisterN
0x8084_0048 Reserved
0x8084_004CGPIOFIntType1
0x8084_0050GPIOFIntType2
0x8084_0054GPIOFEOIGPIO Port F End Of Interrupt RegisterN
0x8084_0058 GPIOFIntEnInterrupt Enable for Port FN
SECURITYSecurity Registers
GPIOGPIO Control Registers
Register controlling type, level or edge, of interrupt generated by
the pins of Port F
Register controlling polarity, high/low or rising/falling, of interrupt
generated by Port F
SW
Lock
N
N
2-26DS785UM1
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
Table 2-8. Internal Register Map (Continued)
EP93xx User’s Guide
AddressRegister NameRegister Description
0x8084_005C IntStsF
0x8084_0060 RawIntStsF
0x8084_0064 GPIOFDBGPIO F Debounce RegisterN
0x8084_0094 GPIOAIntType2
0x8084_0098 GPIOAEOIGPIO Port A End Of Interrupt RegisterN
0x8084_009C GPIOAIntEnControlling the generation of interrupts by the pins of Port AN
0x8084_00A0 IntStsA
0x8084_00A4 RawIntStsA
0x8084_00A8 GPIOADBGPIO A Debounce RegisterN
0x8084_00AC GPIOBIntType1
0x8084_00B0 GPIOBIntType2
0x8084_00B4 GPIOBEOIGPIO Port B End Of Interrupt RegisterN
0x8084_00B8 GPIOBIntEnControlling the generation of interrupts by the pins of Port BN
0x8084_00BC IntStsB
0x8084_00C0 RawIntStsB
0x8084_00C4 GPIOBDBGPIO B Debounce RegisterN
0x8084_00C8 EEDrive
GPIO Interrupt Status Register. Contains status of Port F
interrupts after masking.
Raw Interrupt Status Register. Contains raw interrupt status of
Port F before masking.
Register controlling type, level or edge, of interrupt generated by
the pins of Port A
Register controlling polarity, high/low or rising/falling, of interrupt
generated by Port A
GPIO Interrupt Status Register. Contains status of Port A
interrupts after masking.
Raw Interrupt Status Register. Contains raw interrupt status of
Port A before masking.
Register controlling type, level or edge, of interrupt generated by
the pins of Port B
Register controlling polarity, high/low or rising/falling, of interrupt
generated by Port B
GPIO Interrupt Status Register. Contains status of Port B
interrupts after masking.
Raw Interrupt Status Register. Contains raw interrupt status of
Port B before masking.
EEPROM pin drive type control. Defines the driver type for the
EECLK and EEDAT pins
SW
Lock
N
N
N
N
N
N
N
N
N
N
N
0x8088_xxxx
0x8088_0000AC97DR1Data read or written from/to FIFO1N
0x8088_0004AC97RXCR1Control Register for receiveN
0x8088_0008AC97TXCR1Control Register for transmitN
0x8088_000CAC97SR1Status RegisterN
0x8088_0010AC97RISR1 Raw interrupt status RegisterN
0x8088_0014AC97ISR1 Interrupt StatusN
0x8088_0018AC97IE1 Interrupt EnableN
0x8088_001CReserved
0x8088_0020AC97DR2Data read or written from/to FIFO2N
0x8088_0024AC97RXCR2 Control Register for receiveN
0x8088_0028AC97TXCR2 Control Register for transmitN
0x8088_002CAC97SR2 Status RegisterN
0x8088_0030AC97RISR2 Raw interrupt status RegisterN
DS785UM12-27
AC’97AC’97 Control Registers
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
Table 2-8. Internal Register Map (Continued)
AddressRegister NameRegister Description
0x8088_0034AC97ISR2 Interrupt StatusN
0x8088_0038AC97IE2 Interrupt EnableN
0x8088_003CReserved
0x8088_0040AC97DR3 Data read or written from/to FIFO3 N
0x8088_0044AC97RXCR3 Control Register for receiveN
0x8088_0048AC97TXCR3 Control Register for transmitN
0x8088_004CAC97SR3Status Register N
0x8088_0050AC97RISR3Raw interrupt status RegisterN
0x8088_0054AC97ISR3 Interrupt Status N
0x8088_0058AC97IE3 Interrupt Enable N
0x8088_005CReserved
0x8088_0060AC97DR4 Data read or written from/to FIFO4 N
0x8088_0064AC97RXCR4 Control Register for receive N
0x8088_0068AC97TXCR4 Control Register for transmit N
0x8088_006CAC97SR4Status Register N
0x8088_0070AC97RISR4Raw interrupt status Register N
0x8088_0074AC97ISR4 Interrupt Status N
0x8088_0078AC97IE4 Interrupt Enable N
0x8088_007CReserved
0x8088_0080AC97S1DataData received/transmitted on SLOT1N
0x8088_0084AC97S2Data Data received/transmitted on SLOT2N
0x8088_0088AC97S12Data Data received/transmitted on SLOT12 N
0x8088_008CAC97RGIS Raw Global interrupt status Register N
0x8088_0090AC97GIS Global interrupt status Register N
0x8088_0094AC97IM Interrupt mask Register N
0x8088_0098AC97EOI End Of Interrupt RegisterN
0x8088_009CAC97GCR Main Control Register N
0x8088_00A0AC97Reset RESET control Register N
0x8088_00A4AC97SYNC SYNC control Register N
0x8088_00A8AC97GCIS Global channel FIFO interrupt status Register N
SW
Lock
0x808A_xxxx
0x808A_0000SSP1 CR0SPI1 Control Register 0N
0x808A_0004SSP1 CR1SPI1 Control Register 1N
0x808A_0008SSP1 DRSPI1 Data RegisterN
0x808A_000CSSP1SRSPI1 Status RegisterN
0x808A_0010SSP1 CPS RSPI1 Clock Prescale RegisterN
0x808A_0014SSP1 IIRSPI1 Interrupt/Interrupt Clear RegisterN
0x808B_0008IrAdr MatchValIrDA Address Match Value RegisterN
0x808B_000CIrFlagIrDA Flag RegisterN
0x808B_0010IrDataIr DA Transmit and Receive FIFOsN
0x808B_0014IrDataTailIrDA Data Tail RegisterN
0x808B_0018 - 0x808B_001CReserved
0x808B_0020IrRIBIrDA Receive Information BufferN
0x808B_0024IrTR0IrDA Test Register, Received byte countN
0x808B_0088MIIRIrDA MIR Interrupt RegisterN
0x808B_008C - 0x808B_018CReserved
0x808C_xxxx
0x808C_0000UART1DataUART1 Data RegisterN
0x808C_0004UART1RXStsUART1 Receive Status RegisterN
0x808C_0008UART1LinCtrlHighUART1 Line Control Register - High ByteN
0x808C_000CUART1LinCtrlMidUART1 Line Control Register - Middle ByteN
0x808C_0010UART1LinCtrlLowUART1 Line Control Register - Low ByteN
0x808C_0014UART1CtrlUART1 Control RegisterN
0x808C_0018UART1FlagUART1 Flag RegisterN
0x808C_001CUART1IntIDIntClrUART1 Interrupt ID and Interrupt Clear RegisterN
0x808C_0020Reserved
0x808C_0028UART1DMACtrlUART1 DMA Control RegisterN
0x808C_0100UART1ModemCtrlUART1 Modem Control RegisterN
0x808C_0104UART1ModemStsUART1 Modem Status RegisterN
0x808C_0114 - 0x808C_0208Reserved
0x808C_020CUART1HDLCCtrlUART1 HDLC Control RegisterN
0x808C_0210UART1HDLCAddMtchValUART1 HDLC Address Match ValueN
0x808C_0214UART1HDLCAddMaskUART1 HDLC Address MaskN
0x808C_0218UART1HDLCRXInfoBufUART1 HDLC Receive Information BufferN
0x808C_021CUART1HDLCStsUART1 HDLC Status RegisterN
UART1UART1 Control Registers
SW
Lock
0x808D_xxxx
0x808D_0000UART2DataUART2 Data RegisterN
0x808D_0004UART2RXStsUART2 Receive Status RegisterN
0x808D_0008UART2LinCtrlHighUART2 Line Control Register - High ByteN
0x808D_000CUART2LinCtrlMidUART2 Line Control Register - Middle ByteN
0x808D_0010UART2LinCtrlLowUART2 Line Control Register - Low ByteN
0x808D_0014UART2CtrlUART2 Control RegisterN
0x808D_0018UART2FlagUART2 Flag RegisterN
0x808D_001CUART2IntIDIntClrUART2 Interrupt ID and Interrupt Clear RegisterN
0x808D_0020UART2IrLowPwrCntrUART2 IrDA Low-power Counter RegisterN
0x808D_0028UART2DMACtrlUART2 DMA Control RegisterN
DS785UM12-29
UART2UART2 Control Registers
Copyright 2007 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2
2
2
EP93xx User’s Guide
Table 2-8. Internal Register Map (Continued)
AddressRegister NameRegister Description
0x808E_xxxx
0x808E_0000UART3DataUART3 Data RegisterN
0x808E_0004UART3RXStsUART3 Receive Status RegisterN
0x808E_0008UART3LinCtrlHighUART3 Line Control Register - High ByteN
0x808E_000CUART3LinCtrlMidUART3 Line Control Register - Middle ByteN
0x808E_0010UART3LinCtrlLowUART3 Line Control Register - Low ByteN
0x808E_0014UART3CtrlUART3 Control RegisterN
0x808E_0018UART3FlagUART3 Flag RegisterN
0x808E_001CUART3IntIDIntClrUART3 Interrupt ID and Interrupt Clear RegisterN
0x808E_0020UART3IrLowPwrCntrUART3 IrDA Low-power Counter RegisterN
0x808E_0028UART3DMACtrlUART3 DMA Control RegisterN
0x808E_0100UART3ModemCtrlUART3 Modem Control RegisterN
0x808E_0104UART3ModemStsUART3 Modem Status RegisterN
0x808E_0108UART3ModemTstCtrlUART3 Modem Support Test Control RegisterN
0x808E_0114 - 0x808E_0208Reserved
0x808E_020CUART3HDLCCtrlUART3 HDLC Control RegisterN
0x808E_0210UART3HDLCAddMtchValUART3 HDLC Address Match ValueN
0x808E_0214UART3HDLCAddMaskUART3 HDLC Address MaskN
0x808E_0218UART3HDLCRXInfoBufUART3 HDLC Receive Information BufferN
0x808E_021CUART3HDLCStsUART3 HDLC Status RegisterN
UART3UART3 Control Registers
SW
Lock
0x808F_xxxx
0x808F_0000KeyScanInitKey Matrix Scan Initialize N
0x808F_0004KeyDiagnosticKey Matrix DiagnosticN
0x808F_0008KeyRegisterKey Matrix Key Register N
0x8090_0004TSXYMaxMinTouchscreen X/Y Max Min RegisterN
0x8090_0008TSXYResultTouchscreen X/Y Result RegisterN
0x8090_000CTSDischargeTouchscreen Switch Matrix Discharge Control RegisterY
0x8090_0010T SX SampleTouchscreen Switch Matrix X-Sample Control RegisterY
0x8090_0014T SY SampleTouchscreen Switch Matrix Y-Sample Control RegisterY
0x8090_0018TSDirectTouchscreen Switch Matrix Direct Control RegisterY
0x8090_001CTSDetectTouchscreen Direct Control Touch Detect RegisterN
0x8090_0020TSSWLockTouchscreen Software Lock RegisterN
0x8090_0024TSSetup2Touchscreen Setup Register 2N
Note:This chapter applies only to the EP9302, EP9307, EP9312, and EP9315 processors.
The MaverickCrunch co-processor accelerates IEEE-754 floating point arithmetic and 32-bit
and 64-bit fixed point ar ithmetic ope ration s. It prov ides an integ er multipl y-accumul ate (MAC)
that is considerably faster than the native MAC implementation in the ARM920T. The
MaverickCrunch co-processor signi ficantly accelerates the arithmetic processing required to
encode/decode digital audio formats.
The MaverickCrunch co-processor uses the st andard ARM920T co-processor interface,
sharing its memory interface and instruction stream. All MaverickCrunch oper ations are
simply ARM920T co-processor instructions. The co-processor handles all internal interinstruction dependencies by using internal data forwarding and inserting wait states.
Chapter 3
3MaverickCrunch Co-Processor
3.1.1 Features
Key features include:
• IEEE-754 single and double precision floating point
• 32/64-bit integer
• Add/multiply/compare
• Integer Multiply-Accumulate (MAC) 32-bit input wit h 72-bi t accumulate
• Integer Shifts
• Floating point to/from integer conversi on
• Sixteen 64-bit registers
• Four 72-bit accumulators
3.1.2 Operational Overview
The MaverickCrunch co-processor is a true ARM920T co-processor . It communicates with
the ARM920T via the co-processor bus and shares the instruction stream and memory
interface of the ARM920T. It runs at the ARM920T core clock frequency (either FCLK or
BCLK).
The co-processor supports four primary data formats:
DS785UM13-1
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
• IEEE-754 single precision floating point (24-bit signed significand and 8-bit biased
exponent)
• IEEE-754 double precision floating point (53-bit signed significand and 11-bit biased
exponent)
• 32-bit integer
• 64-bit integer
The co-processor performs the following standard operations on all four supported data
formats:
• addition
• subtraction
• multiplication
• absolute value
• negation
• logical left/right shift
• comparison
In addition, for 32-bit integers, the co-processor provides:
• multiply-accumulate (MAC)
• multiply-subtract (MSB)
Any of the four data formats may be converted to another of the formats. All four dat a types
may be loaded directly from and stored directly to memory via the ARM920T co-processor
interface. They may also be moved to or from ARM920T registers.
The MaverickCrunch co-processor also provides a 72-bit extended precision integer format
that is used only in the accumulators. The accumulators may also be used in MAC and MSB
operations.
IEEE-754 rounding and exceptions are also provi ded. Four roun ding modes for flo ating poi nt
operations are:
• round to nearest
• round toward
• round toward -∞
• round toward 0
Exceptions include:
+∞
• Invalid operator
• Overflow
• Underflow
3-2DS785UM1
Copyright 2007 Cirrus Logic
3
3
3
• Inexact
Note that the division by zero exception is not supported as the MaverickCrunch coprocessor does not provide division or square root .
3.1.3 Pipelines and Latency
There are two primary pipelines within the Maveri ckCrunch co-processor. One handles all
communication with the ARM920T, while the other, the “data path” pipeline, handles all
arithmetic operations (this one actuall y operates at one half the MaverickCrunch coprocessor clock frequency).
The data path pipeline may run synchronously or asynchronously with respect to the ARM
instruction pipeline. If run asynchronously, data path computation is decoupled fr om the ARM,
allowing high throughput, though ari thmetic exceptions are not synchronous. If run
synchronously, exceptions are synchronous, but throughput suffers.
Assuming no inter-instructi on dependencies causing pipeline stalls , arithmetic instructions
can produce a new result every two ARM920T clocks, which is a max imum throughput of one
data path instructi on per eight ARM920T clocks. The only exception is 64-bit multiplies
(CFMULD or CFMUL64), which require six extra ARM920T clocks to produce their result,
which is maximum throughput of eight ARM920T clocks per instruction.
MaverickCrunch Co-Proce sso r
EP93xx User’s Guide
The normal latency for an arithmetic inst ru ction i s approximat ely nine ARM920T clocks, from
initial decode to the time the result is written to the register file. A 64-bit multiply requires 15
clocks.
3.1.4 Data Registers
The MaverickCrunch co-processor contains these registers:
• Sixteen 64-bit general purpose registers, c0 through c15
• Four 72-bit accumulators, a0 through a3
• One status and control register, DSPSC
A single precision floating point value is stored in the upper 32 bits of a 64-bit register and
must be explicitly promoted to double precision to be used in double precision calculations:
Opcode
63625532 310
Sign ExponentSignificandnot used
DS785UM13-3
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
A double precision value requires all 64 bits:
Opcode
636252 510
Sign ExponentSignificand
A 32-bit integer is stored in the lower 32 bits of a 64-bit register and sign-extended when
written, provided the UI bit in the DSPSC is clear:
Opcode
6332 31300
Hence, 32-bit integers may be used directly in calculations with 64-bit integers, which are
stored as:
Sign ExtensionSignData
Opcode
63620
Sign Data
3.1.5 Integer Saturation Arithmetic
By default, the co-processor treats all 32-bit and 64-bit integers as signed values and
automatically saturates the results of most integer operations and all conversions from
floating-point to integer format. Instructions that may saturate their results are:
• CFADD32 and CFADD64
• CFSUB32 and CFSUB64
• CFMUL32 and CFMUL64
• CFMAC32 and CFMSC32
• CFCVTS32 and CFCVTD32
• CFTRUNCS32 and CFTRUNCD32
This behavior, however, can be altered by setting the UI bit and the ISAT bit in the DSPSC.
With the UI bit clear (the default), 32-bit and 64-bit integer operations are treated as signed
with respect to overflow and underflow detecti on and saturation as well as compare
operations. Setting the UI bit causes the MaverickCrunch co-processor to treat all 32-bit and
64-bit integer operations as unsigned with respect to overflow, underflow, saturation, and
comparison.
3-4DS785UM1
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Proce sso r
3
3
3
EP93xx User’s Guide
With saturation enabled (the default), the maximum representable value is retur ned on
overflow and the minimum representable value is ret urned on underflow. The maximum and
minimum values depends on the operand size and whether the UI bit in the DSPSC is set, as
shown in Table 3-1.
Table 3-1. Saturation for Non-accumulator Instructions
Signed
Overflow
Unsigned
Signed
Underflow
Unsigned
To disable saturation on overflow and underflow, set the ISAT bit in the DSPSC.
Normally, arithmetic instructions that write to an accumulator do not saturate their results on
overflow or underflow. These instructions are:
• CFMADD32 and CFMSUB32
• CFMADDA32 and CFMSUBA32
However , the SAT[1:0] bits in the DSPSC may be set to select one of several kinds of
saturation to occur on the results of these instructions before they are wri tten to an
accumulator.
Note:This action does not affect the operation of instructions that do not write their result to an
accumulator.
Enabling saturation also modifies the representation of data stored in the accumulator. The
three supported bit formats and their maximum and minimum saturation values are shown in
The bit format x.yy represents x bi nary bits before the decimal point and yy fract ion bi ts after
the decimal point, as for example, when the bit format 2.62 has two binary bits and sixty-two
fraction bits. Though these formats utilize either 32- or 64-bit integers, the accumulators are
DS785UM13-5
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
72 bits wide. If the accumulator saturation mode is disabled (the default), the accumulator bit
fields are assigned as below for a 2’s complement integer.
Opcode
71700
SignData
If the saturation mode 1.63 is selected, the bit field assignments are:
Opcode
7164 63620
Sign Extension SignD ata
If the saturation mode 1.31 is selected, the bit field assignments are:
Opcode
7164 636232 310
Sign Extension SignDataUnused
If the saturation mode 2.62 is selected, the bit field assignments are:
Opcode
7163 62610
Sign ExtensionS ignData
3.1.6 Comparisons
The Crunch co-processor provides four compare operations:
• CFCMP32 - 32-bit integer
• CFCMP64 - 64-bit integer
• CFCMPS - single floating point
• CFCMPD - double floating point
The DSPSC register bit UINT affects the operation of integer comparisons. If clear, integers
are treated as signed values, and if set, they are treated as unsigned. DSPSC.UINT has no
effect on floating point comparisons.
All compare operations update both the FCC[1 :0] bits in the DSPSC register and an ARM
register. Though any of the ARM general purpose registers r0 through r14 may be specified
as the destination, specifyin g r15 actually updates the CPSR flag bi ts NZCV. This permits the
3-6DS785UM1
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Proce sso r
3
3
3
AB=
AB
AB
AB=
AB
AB
AB
AB
A B
EP93xx User’s Guide
condition code field of any subsequent ARM instruction to gate the execution of that
instruction based on the result of a Crunch compar e operation.
Table 3-3 illustrates the legal relationships and, for each one, the values written to the FCC
bits and the NZCV flags. The FCC bits and the NZCV flags provi de the same informati on, but
in different ways and in different places. Their values depend only on the relationship
between the operands, regardless of whether the operands are considered signed integer,
unsigned integer, or flo ating p oint . The unorde red relat ionship can only app ly to float ing poi nt
operands.
Table 3-3. Comparison Relationships and Their Results
RelationshipFCC[1:0]NCZV
000100
<
>
Unordered110000
The NZCV flags are not computed exactly as with integer comparisons using the ARM CMP
instruction. Hence, when examining the result of Crunch comparisons, the condition cod es
field of ARM instructions should be interpreted differently, as shown in Table 3-4. The same
six condition codes should be used whether the comparison operands were signed integers,
unsigned integers, or floating point. No other condition codes are meaningful.
Ta ble 3-4. A RM® Condition Codes and Crunch Compare Results
Condition Code
Opcode[31:28] Mnemonic
0000EQEqualEqual
0001NENot EqualNot Equal
1010GESigned Greater Than or Equal Greater Than or Equal
1011LTSigned Less ThanLess Than
1100GTSigned Greater ThanGreater Than
1101LESigned Less Than or EqualLess Than or Equal
The following function performs an FIR filter on the given input stream. The variable “data”
points to an array of floating poi nt values t o be filt ered, “ n” is the number of s amples for whi ch
the filter should be appli ed, “ fil ter” is the FI R fil ter to be applied, and “ m” i s the number of taps
in the FIR filter. The “data” arra y mus t be “n + m - 1” samples in length, and “n” samples will
be produced.
3.2.2.1 C Code
void
ComputeFIR(float *data, int n, float *filter, int m)
{
int i, j;
float sum;
MaverickCrunch Co-Proce sso r
EP93xx User’s Guide
for(i = 0; i < n; i++)
{
sum = 0;
for(j = 0; j < m; j++)
{
sum += data[i + j] * filter[j];
}
data[i] = sum;
}
}
3.2.2.2 MaverickCrunch Assembly Language Instructions
MaverickCrunch Status and Control Register. Accessed only via the
MaverickCrunch instruction set. All bits, including status bits, are both
readable and writable. This register should generally be written only using a
read-modify-write sequence.
Bit Descriptions:
RSVD:Reserved. Unknown During Read.
INST: Exception Instruction. Whenever an unmasked exception
occurs, these 32 bits are loaded with the instruction that
caused the exception. Henc e, this con tains the instruction
that caused the most recent unmasked exception.
3-10DS785UM1
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Proce sso r
3
3
3
EP93xx User’s Guide
DAID: MaverickCrunch Architecture ID. This read-only value is
incremented for each revision of the overall
MaverickCrunch co-processor architecture. These bits are
“000” for this revision.
HVID: Hardware Version ID. This read-only value is incremented
each time the hardware implementation of the architecture
named by DAID[2:0] is changed, typically done in
response to bugs. These bits are “000” for this version.
ISAT:Integer Saturate Enable. This bit controls whether non-
accumulator integer operations, both signed and
unsigned, will saturate on overfl ow or underflow:
0 = Saturation enabled
1 = Saturation disabled
UI:Unsigned Integer Enable. This bit controls whether non-
accumulator integer operations treat their operands as
signed or unsigned. It also determines the saturation value
if the ISAT bit is clear:
0 = Signed integers
1 = Unsigned integers
INT:MaverickCrunch Interrupt. This bit indicates whether an
interrupt has occurred. This bit is identical to the external
interrupt signal:
0 = No interrupt signaled
1 = Interrupt signaled
AEXC:Asynchronous Exception Enable. This bit determines
whether exceptions generated by the co-processor are
signaled synchronously or asyn chronously to the
ARM920T. Synchronous exceptions force all data path
instructions to be serialized and to stall the ARM920T. If
exceptions are asynchronous, they are signalled by
assertion of the DSPINT output of the co-processor, which
may interrupt the ARM920T via the interrupt controller.
Enabling asynchronous exceptions does provide a
performance improvement, but makes it difficult for an
interrupt handler to determine the co-processor instruction
that caused the exception be cause the address of th e
instruction is not p reserved. Exceptions may be
individually enabled by other bit s in th is regis ter (IXE, UFE,
OFE, and IOE). This bit has no effect if no exceptions are
enabled:
0 = Exceptions are synchronous
1 = Exceptions are asynchronous
DS785UM13-11
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
SAT[1:0]:Accumulator saturation mode select. These bits are set to
FCC[1:0]:FCC flags out of comparator:
V:Overflow Flag. Indicates the overflow status of the
FWDEN:Forwarding Enable. This bit determines whether data path
select the saturatio n mode or to disable sa turation for
accumulator operations:
0X = Saturation disabled for accumulator operations
10 = Accumulator saturation enabled, bit formats 1.63 and
1.31
11 = Accumulator saturation enabled, bit format 2.62
00 = Operand A equals operand B
01 = Operand A less than operand B
10 = Operand A greater than operand B
11 = Operands are unordered (at least one is NaN)
previous integer operation:
0 = No overflow
1 = Overflow
writeback results are forwarded to the data path operand
fetch stage and to the STC/MRC execute stage. When
pipeline interlocks occur due to dependencies of data
path, STC, and MRC instru ction s ource ope rands on d ata
path results, setting this bit will improve instruction
throughput:
0 = Forwarding not enabled
1 = Forwarding enabled
Invalid:0 = No invalid operations detected
1 = An invalid operation was performed
Denorm: 0 = No denormalized numbers have been supplied as
instruction operands
1 = A denormalized number h as been supplied as an
instruction operand
trapping for IEEE 754 invalid operator exc eptions:
0 = Disable software trapping for invalid operator
exceptions
1 = Enable software trappin g for invalid operator
exceptions
IX:Inexact. Set when an IEEE 754 inexact exception occurs,
regardless of whether or not software trapping for inexact
exceptions is enabled. Writing a “0” to this position clears
the status bit.
0 = No inexact exception detected
1 = Inexact exception detected
UF:Underflow. Set when an IEEE 754 underflow exception
occurs, regardless of whethe r or not softwar e trappin g for
underflow exceptions is enabled. Writing a “0” to this
position clears the status bit.
0 = No underflow exception detected
1 = Underflow exception detected
OF:Overflow. Set when an IEEE 754 overflow exception
occurs, regardless of whethe r or not softwar e trappin g for
overflow exception s is enabled. Writing a “0” to this
position clears the status bit.
0 = No overflow exception detected
1 = Overflow exception detected
IO:Invalid Operator. Set when an IEEE 754 invalid operator
exception occurs, regardless of whether or not software
trapping for invalid operator exceptions is enabled. Writing
a “0” to this position clears the sta tus bi t.
0 = No invalid operator exception detected
1 = Invalid operator exception detected
DS785UM13-13
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
3.4 ARM Co-Processor Instruction Format
The ARM V4T architecture defines five ARM co-processor in structions:
• CDP - Co-processor Data Processing
• LDC - Load Co-processor
• STC - Store Co-processor
• MCR - Move to Co-processor Register from ARM Register
• MRC - Move to ARM Register from Co-processor Register
The co-processor instruction assembler notation is found in the ARM programming manuals
or the Quick Reference Card. (For additional information, see Preface, “Reference
Documents” on page P-3) Formats for the above instructions and variants of these
instructions are detailed below.
CDP (Co-Processor Data Processing) Instruction Format
3128 2724 2320 1916 1512 118 75430
cond111 0opcode1CRnCRdcp numopcode20CRm
LDC (Load Co-Processor) Instruction Format
3128 2725 24 23 22 21 20 1916 1512 118 70
cond110PU N W 1RnCRdcp numoffset
STC (Store Co-Processor) Instruction Format
3128 2725 24 23 22 21 20 1916 1512 118 70
cond110PU N W 0RnCRdcp numoffset
MCR (Move to Co-Processor from ARM Register) Instruction Format
3128 2724 2321 20 1916 1512 118 75430
cond111 0opcode10CRnRdcp numopcode21CRm
MRC (Move to ARM Register from Co-Processor) Instruction Format
3128 2724 2321 20 1916 1512 118 75430
cond111 0opcode11CRnRdcp numopcode21CRm
3-14DS785UM1
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Proce sso r
3
3
3
EP93xx User’s Guide
Table 3-5 shows the condition codes, which are bits [31:28] for each instruction format.
Table 3-5. Condition Code Definitions
Cond
[31:28]
0000EQEqualZ set
0001NENot EqualZ clear
0010CS/HSCarry Set/Unsigned Higher or SameC set
0011CC/LOCarry Clear/U nsigned LowerC clear
0100MIMinus/NegativeN set
0101PLPlus/Positive or ZeroN clear
0110VSOverflowV set
0111VCNo OverflowV clear
1000HIUnsigned HigherC set and Z clear
1001LSUnsigned Lower or SameC clear or Z set
1010GESigned Greater Than or EqualN set and V set, or N clear and V clear (N = V)
1011LTSigned Less ThanN set and V clear, or N clear and V set (N ! = V)
1100GTSigned Greater ThanZ clear, and either N set and V set, or N clear and V clear (Z = 0, N = V)
1101LESigned Less Than or EqualZ set, or N set and V clear, or N clear and V set (Z = 1, N ! = V)
1110ALAlways (unconditional)-
Mnemonic
Extension
1111NVNever-
MeaningStatus Flag Sta te
The remaining bits in the instr u ction formats are interpret ed as follows:
• Rn: Specifies an ARM base address register. These bits are ignored by the
MaverickCrunch co-processor.
• Rd: Specifies a source or destination ARM register
• cp_num: Co-proces s o r number
• P: Pre-indexing (P=1) or post-indexing (P=0) addressing. This bit is ignored by the
MaverickCrunch co-processor.
• U: Specifies whether the supplied 8-bit offset is added to a base register (U=1) or
subtracted from a base register (U=0). This bit is igno red by the MaverickCrunch coprocessor.
• N: Specifi es the width of a data type involved in a move operation . The MaverickCrunch
DS785UM13-15
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
co-processor uses this bit to distinguish between single precision floating point/32-bit
integer numbers (N=0) and double preci sion floating point/64-bit integer numbers (N=1).
• W: S pecifi es whether o r n ot a calcul ated addr ess is wr itten back to a b ase regi ste r (W=1)
or not (W=0). This bit is ignored by the MaverickCrunch co-processor.
• offset: An 8-bit word offset used in address calculat ions. These bit s are ignored by the
MaverickCrunch co-processor.
Table 3-6, Table 3-7, Table 3-8, and Table 3-9, define the bit values for opcode2, opcode1,
and cp_num for all of the MaverickCrunch instructions.
• CRd, CRn, and CRm each refer to any of the 16 general purpose MaverickCrunch
registers unless otherwise specified
• CRa refers to any of the Mave rickCrunch a c cu mulators
• Rd and Rn refer to any of the 16 general purpose ARM920T registers
• <imm> refers to a seven-bit immediate value
The remainder of this section describes in det a il each of the individual MaverickCrunch
instructions. The fields in the opcode for each Mave rickCrunch instruction are shown. When
specific bit values are requir ed for the in stru ction , they are shown as either '1' or '0'. Any field
whose value may vary, such as a register index, is named as in the ARM programming
manuals, and its function described below.
DS785UM13-17
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
Fields that are ignored by the co-processor are shaded. Dark shading implies that a field is
processed by the ARM itself and can have any value, while light shading indicates that the
field, though ignored by both the ARM and the co-processor, should have the value shown.
Table 3-10. MaverickCrunch Instruction Set
Maverick
Crunch
Co-
Processor
Instruction
Type
LoadsLDC
StoresSTC
Moves to co-
processor
Moves from co-
processor
Moves to
accumulator
ARM
Co-
Processor
Instruction
Type
MCR
MRC
CDP
InstructionDescription
cfldrs CRd, [Rn]Load CRd with single stored at address in Rn
cfldrd CRd, [Rn]Load CRd with double stored at address in Rn
cfldr32 CRd, [Rn]
cfldr64 CRd, [Rn]Load CRd with 64-bit integer stored at address in Rn
cfstrs CRd, [Rn]Store single in CRd at address in Rn
cfstrd CRd, [Rn]Store double in CRd at address in Rn
cflstr32 CRd, [Rn]Store 32-bit integer in CRd at address in Rn
cfstr64 CRd, [Rn]Store 64-bit integer in CRd at address in Rn
cfmvsr CRn, RdMove single from Rd to CRn[63:32]
cfmvdlr CRn, RdMove lower half of double from Rd to CRn[31:0]
cfmvdhr CRn, RdMove upper half of double from Rd to CRn[63:32]
cfmv64lr CRn, Rd
cfmv64hr CRn, RdMove upper half of 64-bit integer from Rd to CRn[63:32]
cfmvsr Rd, CRnMove single from CRn[63:32] to Rd
cfmvrdl Rd, CRnMove lower half of double from CRn[31:0] to Rd
cfmvrdh Rd, CRnMove upper half of double from CRn[63:32] to Rd
cfmvr64l Rd, CRnMove lower half of 64-bit integer from CRn[31:0] to Rd
cfmvr64h Rd, CRnMove upper half of 64-bit integer from CRn[63:32] to Rd
cfmval32 CRd, CRnMove 32-bit integer from CRn [31:0] to accumulator CRd[31:0]
cfmvam32 CRd, CRnMove 32-bit integer from CRn [31:0] to accumulator CRd[63:32]
cfmvah32 CRd, CRn
cfmva32 CRd, CRn
cfmva64 CRd, CRn
Load CRd with 32-bit integer stored at address in Rn, sign extend through
bit 63
Move lower half of 64-bit integer from Rd to CRn[31:0], sign extend bit 31
through bits [63:31]
Move lower 8 bits of 32-bit integer from CRn [7:0] to accumulator
CRd[71:64]
Move 32-bit integer from CRn[31:0] to accumulator CRd[31:0] and sign
extend through bit 71
Move 64-bit integer from CRn to accumulator CRd[63:0] and sign extend
through bit 71
3-18DS785UM1
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Proce sso r
3
3
3
Table 3-10. MaverickCrunch Instruction Set (Continued)
EP93xx User’s Guide
Maverick
Crunch
Co-
Processor
Instruction
Type
Moves from
accumulator
Move to
DSPSC
Move from
DSPSC
Conversions
and copies
Shifts
ARM
Co-
Processor
Instruction
Type
CDP
CDP
CDP
MCR
CDP
InstructionDescription
cfmv32al CRd, CRnMove accumulator CRn[31:0] to 32-bit integer CRd[31:0]
cfmv32am CRd, CRnMove accumulator CRn[63:32] to 32-bit integer CRd[31:0]
cfmv32ah CRd, CRnMove accumulator CRn[71:64] to lower 8 bits of 32-bit integer CRd[31:0]
cfmv32a CRd, CRn
cfmv64a CRd, CRn
cfmvsc32 CRd, CRnMove CRd to DSPSC; CRn is ignored
cfmv32sc CRd, CRnMoves DSPSC to CRd; CRn is ignored
cfcpys CRd, CRnCopy a single from CRn to CRd
cfcpyd CRd, CRnCopy a double from CRn to CRd
cfcvtsd CRd, CRnConvert a single in CRn to a double in CRd
cfcvtds CRd, CRnConvert a double in CRn to a single in CRd
cfcvt32s CRd, CRnConvert a 32-bit integer in CRn to a single in CRd
cfcvt32d CRd, CRnConvert a 32-bit integer in CRn to a double in CRd
cfcvt64s CRd, CRnConvert a 64-bit integer in CRn to a single in CRd
cfcvt64d CRd, CRnConvert a 64-bit integer in CRn to a double in CRd
cfcvts32 CRd, CRnConvert a single in CRn to a 32-bit integer in CRd
cfcvtd32 CRd, CRnConvert a double in CRn to a 32-bit integer in CRd
cftruncs32 CRd, CRnTruncate a single in CRn to a 32-bit integer in CRd
cftruncd32 CRd, CRnTruncate a double in CRn to a 32-bit integer in CRd
cfrshl32 CRm, CRn, RdShift 32-bit integer in CRn by two’s complement value in Rd and store in
cfrshl64 CRm, CRn, RdShift 64-bit integer in CRn by two’s complement value in Rd and store in
cfsh32 CRd, CRn,
<imm>
cfsh64 CRd, CRn,
<imm>
Saturate to 32-bit integer and move accumulator CRn[31:0] to 32-bit
integer CRd[31:0]
Saturate to 64-bit integer and move accumulator CRn[63:0] to 64-bit
integer CRd
CRm
CRm
Shift 32-bit integer in CRn by <imm> bits and store in CRd, where <imm>
is between -32 and 31, inclusive
Shift 64-bit integer in CRn by <imm> bits and store in CRd, where <imm>
is between -32 and 31, inclusive
DS785UM13-19
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
Table 3-10. MaverickCrunch Instruction Set (Continued)
Maverick
Crunch
Co-
Processor
Instruction
Type
ComparisonsMRC
Floating point
arithmetic,
single precision
Floating point
arithmetic,
double
precision
32-bit integer
arithmetic
ARM
Co-
Processor
Instruction
Type
CDP
CDP
CDP
InstructionDescription
cfcmps Rd, CRn, CRm Compare singles in CRn to CRm, result in Rd, or CPSR if Rd == R15
cfcmpd Rd, CRn, CRm Compare doubles in CRn to CRm, result in Rd, or CPSR if Rd == R15
cfcmp32 Rd, CRn,
CRm
cfcmp64 Rd, CRn,
CRm
cfabss CRd, CRnCRd gets absolute value of CRn
cfnegs CRd, CRnCRd gets negation of CRn
cfadds CRd, CRn,
CRm
cfsubs CRd, CRn,
CRm
cfmuls CRd, CRn,
CRm
cfabsd CRd, CRnCRd gets absolute value of CRn
cfnegd CRd, CRnCRd gets negation of CRn
cfaddd CRd, CRn,
CRm
cfsubd CRd, CRn,
CRm
cfmuld CRd, CRn,
CRm
cfabs32 CRd, CRnCRd gets absolute value of CRn
cfneg32 CRd, CRnCRd gets negation of CRn
cfadd32 CRd, CRn,
CRm
cfsub32 CRd, CRn,
CRm
cfmul32 CRd, CRn,
CRm
cfmac32 CRd, CRn,
CRm
cfmsc32 CRD, CRn,
CRm
Compare 32-bit integers in CRn to CRm, result in Rd, or CPSR if Rd ==
R15
Compare 64-bit integers in CRn to CRm, result in Rd, or CPSR if Rd ==
R15
CRd gets sum of CRn and CRm
CRd gets CRn minus CRm
CRd gets the product of CRn and CRm
CRd gets sum of CRn and CRm
CRd gets CRn minus CRm
CRd gets the product of CRn and CRm
CRd gets sum of CRn and CRm
CRd gets CRn minus CRm
CRd gets the product of CRn and CRm
CRd gets sum of CRd and the product of CRn and CRm
CRd gets CRd minus the product of CRn and CRm
3-20DS785UM1
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Proce sso r
3
3
3
Table 3-10. MaverickCrunch Instruction Set (Continued)
EP93xx User’s Guide
Maverick
Crunch
Co-
Processor
Instruction
Type
64-bit integer
arithmetic
Accumulator
arithmetic
ARM
Co-
Processor
Instruction
Type
CDP
CDP
InstructionDescription
cfabs64 CRd, CRnCRd gets absolute value of CRn
cfneg64 CRd, CRnCRd gets negation of CRn
cfadd64 CRd, CRn,
CRm
cfsub64 CRd, CRn,
CRm
cfmul64 CRd, CRn,
CRm
cfmadd32 CRa, CRd,
CRn, CRm
cfmsub32 CRa, CRd,
CRn, CRm
cfmadda32 CRa, CRd,
CRn, CRm
cfmsuba32 CRa, CRd,
CRn, CRm
CRd gets sum of CRn and CRm
CRd gets CRn minus CRm
CRd gets the product of CRn and CRm
Accumulator CRa gets sum of CRd and the product of CRn and CRm
Accumulator CRa gets CRd minus the product of CRn and CRm
Accumulator CRa gets sum of accumulator CRd and the product of CRn
and CRm
Accumulator CRa gets accumulator CRd minus the product of CRn and
CRm
3.5.1 Load and Store Instructions
Loading Floating Point Value from Memory
31:2827:25242322212019:1615:1211:87:0
cond1 1 0PUNW1 RnCRd0 1 0 08_bit_word_offset
Description:
Loads a single or double precision floating point value from memory into
MaverickCrunch register.
Table 3-11. Mnemonic Codes for Loading Floating Point Value from Memory
N: Integer width - 0 for 32-bit integer, 1 for 64-bit integer
Rn: Base register in ARM
CRd: Source register.
DS785UM13-23
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
3.5.2 Move Instructions
Move Single Precision Floating Point from ARM to MaverickCrunch
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 000CRnRd0 1 0 00 1 01CRm
Description:
Moves a single precision floating point number from an ARM register into the
upper half of a MaverickCrunch register.
Mnemonic:
CFMVSR<cond> CRn, Rd
Bit Definitions:
Rd: Source ARM register
CRn: Destination register
Move Single Precision Floating Point from MaverickCrunch to ARM
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 001CRnRd0 1 0 00 1 01CRm
Description:
Moves a single precision floating point number from the upper half of a
MaverickCrunch register to an ARM register.
Mnemonic:
CFMVRS<cond> Rd, CRn
Bit Definitions:
Rd: Destination ARM register
CRn: Source register
Move Lower Half Double Precision Float from ARM to MaverickCrunch
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 000CRnRd0 1 0 00 0 01CRm
Description:
Moves the lower half of a double precision floating point value from an ARM
register into the lower half of a MaverickCrunch register.
Mnemonic:
CFMVDLR<cond> CRn, Rd
Bit Definitions:
CRn: Destination register
Rd: Source ARM register
3-24DS785UM1
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Proce sso r
3
3
3
EP93xx User’s Guide
Move Lower Half Double Precision Float from MaverickCrunch to ARM
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 001CRnRd0 1 0 00 0 01CRm
Description:
Moves the lower half of a double precision floating point value stored in a
MaverickCrunch register into an ARM register.
Mnemonic:
CFMVRDL<cond> Rd, CRn
Bit Definitions:
Rd: Destination ARM register
CRn: Source register
Move Upper Half Double Precision Float from ARM to MaverickCrunch
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 000CRnRd0 1 0 00 0 11CRm
Description:
Moves the upper h alf of a d ouble prec ision floating point value from an A RM
register into the upper half of a MaverickCrunch register.
Mnemonic:
CFMVDHR<cond> CRn, Rd
Bit Definitions:
CRn: Destination register
Rd: Source ARM register
Move Upper Half Double Precision Float from MaverickCrunch to ARM
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 001CRnRd0 1 0 00 0 11CRm
Description:
Moves the upper half of a double precision floating point value stored in a
MaverickCrunch register into an ARM register.
Mnemonic:
CFMVRDH<cond> Rd, CRn
Bit Definitions:
Rd: Destination ARM register
CRn: Source register
DS785UM13-25
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
Move Lower Half 64-bit Integer from ARM to MaverickCrunch
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 000CRnRd0 1 0 10 0 01CRm
Description:
Moves the lower half of a 64-bit integer from an ARM register into the lower
half of a MaverickCrunch register and sign extend it.
Mnemonic:
CFMV64LR<cond> CRn, Rd
Bit Definitions:
CRn: Destination register
Rd: Source ARM register
Move Lower Half 64-bit Integer from MaverickCrunch to ARM
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 001CRnRd0 1 0 10 0 01CRm
Description:
Moves the lower half of a 64-bit integer stored in a MaverickCrunch register
into an ARM register.
Mnemonic:
CFMVR64L<cond> Rd, CRn
Bit Definitions:
Rd: Destination ARM register
CRn: Source register
Move Upper Half 64-bit Integer from ARM to MaverickCrunch
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 000CRnRd0 1 0 10 0 11CRm
Description:
Moves the upper half of a 64-bit integer from an ARM register into the upper
half of a MaverickCrunch register.
Mnemonic:
CFMV64HR<cond> CRn, Rd
Bit Definitions:
CRn: Destination register
Rd: Source ARM register
3-26DS785UM1
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Proce sso r
3
3
3
EP93xx User’s Guide
Move Upper Half 64-bit Integer from MaverickCrunch to ARM
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 001CRnRd0 1 0 10 0 11CRm
Description:
Moves the upper half of a 64-bit integer stored in a MaverickCrunch register
into an ARM register.
Mnemonic:
CFMVR64H<cond> Rd, CRn
Bit Definitions:
Rd: Destination ARM register
CRn: Source register
3.5.3 Accumulator and DSPSC Move Instructions
Move MaverickCrunch Register to Lower Accumulator
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 01 0CRnCRd0 1 0 00 1 00CRm
Description:
Moves the low 32 bits of a MaverickCrunch register to the lowest 32 bits of an
accumulator (31:0).
Mnemonic:
CFMVAL32<cond> CRd, CRn
Bit Definitions:
CRd: Destination accumulator
CRn: Source register
Move Lower Accumulator to MaverickCrunch Register
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 00 1CRnCRd0 1 0 00 1 00CRm
Description:
Moves the lowest 32 bits of an accumulator (31:0) to the low 32 bits of a
MaverickCrunch register.
Mnemonic:
CFMV32AL<cond> CRd, CRn
Bit Definitions:
CRd: Destination register
CRn: Source accumulator
DS785UM13-27
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
Move MaverickCrunch Register to Middle Accumulator
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 01 0CRnCRd0 1 0 00 1 10CRm
Description:
Moves the low 32 bits of a MaverickCrunch register to the middle 32 bits of an
accumulator (63:32).
Mnemonic:
CFMVAM32<cond> CRd, CRn
Bit Definitions:
CRd: Destination accumulator
CRn: Source register
Move Middle Accumulator to MaverickCrunch Register
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 00 1CRnCRd0 1 0 00 1 10CRm
Description:
Moves the middle 32 bits of an accumulator (63:32) to the low 32 bits of a
MaverickCrunch register.
Mnemonic:
CFMV32AM<cond> CRd, CRn
Bit Definitions:
CRd: Destination register
CRn: Source accumulator
Move MaverickCrunch Register to High Accumulator
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 01 0CRnCRd0 1 0 01 0 00CRm
Description:
Moves the lowest 8 bit s ( 7:0 ) of a Mave ri ckCrunch regi ster to the hi ghes t 8 bi t s
of an accumulator (71:64).
Mnemonic:
CFMVAH32<cond> CRd, CRn
Bit Definitions:
CRd: Destination accumulator
CRn: Source register
3-28DS785UM1
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Proce sso r
3
3
3
EP93xx User’s Guide
Move High Accumulator to MaverickCrunch Register
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 00 1CRnCRd0 1 0 01 0 00CRm
Description:
Moves the highest 8 bits of an accumulator (71:64) to the lowest 8 bits of a
MaverickCrunch register (7:0).
Mnemonic:
CFMV32AH<cond> CRd, CRn
Bit Definitions:
CRd: Destination register
CRn: Source accumulator
Move 32-bit Integer from Accumulator
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 00 1CRnCRd0 1 0 01 0 10CRm
Description:
Saturates and rounds an accumulator value to 32 bits and moves the result to
the low 32 bits of a MaverickCrunch register.
Mnemonic:
CFMV32A<cond> CRd, CRn
Bit Definitions:
CRd: Destination register
CRn: Source accumulator
Move 32-bit Integer to Accumulator
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 01 0CRnCRd0 1 0 01 0 10CRm
Description:
Moves a 32-bit value from a MaverickCrunch register to an accumulator and
sign extend to 72 bits.
Mnemonic:
CFMVA32<cond> CRd, CRn
Bit Definitions:
CRd: Destination accumulator
CRn: Source register
DS785UM13-29
Copyright 2007 Cirrus Logic
MaverickCrunch Co-Processor
3
3
3
EP93xx User’s Guide
Move 64-bit Integer from Accumulator
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 00 1CRnCRd0 1 0 01 1 00CRm
Description:
Saturates and rounds an accumulator value to 64 bits and moves the result to
a MaverickCrunch register.
Mnemonic:
CFMV64A<cond> CRd, CRn
Bit Definitions:
CRd: Destination register
CRn: Source accumulator
Move 64-bit Integer to Accumulator
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 01 0CRnCRd0 1 0 01 1 00CRm
Description:
Moves a 64-bit value from a MaverickCrunch register to an accumulator and
sign extend to 72 bits.
Mnemonic:
CFMVA64<cond> CRd, CRn
Bit Definitions:
CRd: Destination accumulator
CRn: Source register
Move from MaverickCrunch Register to Control/Status Register
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 01 0CRnCRd0 1 0 01 1 10CRm
Description:
Moves a 64-bit value from a Mav erickCrunch register to the MaverickC runch
Status/Control register, DSPSC. All DSPSC bits are writable. CRn is ignored.
Mnemonic:
CFMVSC32<cond> CRd, CRn
Bit Definitions:
CRd: Source register
3-30DS785UM1
Copyright 2007 Cirrus Logic
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.