123 September 2001Initial Release
22 February 2004
Update d ChipID and S y sCfg regist er in for m a tion.
Added ExtensionID information to the Security section.
Contacting Cirrus Logic Support
For all product questions and inquiries contact a Cirrus Logic Sales Representative.
To find one nearest you go to www.cirrus.com
IMPORTANT NOTICE
Cirrus Logic, Inc. and its subsidiaries ( “Cirrus ”) believe that the information contained in this document is accurate and reliable. Howev er, t he inf or mati on i
subject to change without notice and is provided “AS IS” without warranty of any kind (express or implied). Customers 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 the t ime of order acknowledgment, including those pertaining to warranty, patent infri ngeme nt, and l imitation of liability. No re
sponsibility is assumed by Cirrus for the use of this information, including use of this infor mation as t he basis for manufacture or sale of any items, or fo r in
fringement of patents or other rights of third parties. This document is the property of Cirrus and by furnishing this information, Cirrus grants no license, expres
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 t o be mad e of the i nformation only for use within your organization with respect to Cirru
integrated circuits or other products of Cirrus. This consent does not extend to other copying such as copying for general distribution, advertising or promotiona
purposes, or for creating any work for resale.
An export permit needs t o be obta ined f r om the competent aut hor it i es of the Japan ese Gover nment i f any of th e product s or t echnologies described in th i
material and controlled under the “Foreign Exchange and Foreign Trade Law” is to be exported or taken out of Japan. An export license and/or quota needs to
be obtained from the competent authorities of the Chinese Government if any of the products or technologies described in this material is subject to the PRC
Foreign Trade Law and is to be exported or taken out of the PRC.
CERTAIN APPL I CAT I ON S USING SEMI CON DUCTOR PRODUCT S MAY I NVO LVE POTE NTI A L RI SK S OF DEAT H, PE RSO NAL I N J URY, O R SE VERE
PROPERTY OR ENVIRONMENTAL DAMAGE (“CRITICAL APPLICATIONS”). CIRRUS PRODUCTS ARE NOT DESIGNED, AUTHORIZED OR WARRANT
ED FOR USE IN AIRCRAFT SYSTEMS, MILIT ARY APPLICAT I ONS, PRODUCTS SURGICALLY I MPLANTED INT O THE BODY, LIF E SUPPORT PROD
UCTS OR OTHER CRITICAL APPLICATIONS ( INCLUDING MEDICAL DEVICES, AIRCRAFT SYSTEMS OR COMPONENTS AND PERSONAL OR
AUTOMOTIVE SAFETY OR SECURITY DEVICES). INCLUSION OF CIRRUS PRODUCTS IN SUCH APPLICATIONS IS UNDERSTOOD TO BE FULLY AT
THE CUSTOMER’ S R I S K AN D CI RRUS DI SCL A I MS AN D MAKES N O WARRA NTY , EX PRES S, S TATUT ORY OR I MPLIED, I N CLUD I NG THE IMPLI E D
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR PARTI CULAR PURPOSE, WITH REGARD TO ANY CIRRUS PRODUCT THAT IS USED IN
SUCH A MANNER. IF THE CUSTOMER OR CUSTOMER’S CUSTOMER USES OR PERMITS THE USE OF CIRRUS PRODUCTS IN CRITICAL APPLICA
TIONS, CUSTOMER AGREES, BY SUCH USE, TO FULLY INDEMNIFY CIRRUS, ITS OFFICERS, DIRECTORS, EMPLOYEES, DISTRIBUTORS AND OTH
ER AGENTS FROM A NY AND ALL LIABILITY, I N CLUDING ATTORNEYS’ FEES AND COSTS, THAT MAY RESULT FROM OR A R ISE IN CONNECTION
WITH THESE USES.
Cirrus Logic, Cirrus, MaverickCrunch, MaverickKey, and the Cirrus Logic logo designs are trademarks of Cirrus Logic, Inc. All other brand and product name
in this document may be trademarks or service marks of their respective owners.
Microsoft and Windows are registered trademarks of Microsoft Corporation.
Microwire is a trademar k of National S emiconduc tor Corp. National Sem i conductor i s a registered trademark of Nation al S emiconductor Corp.
Texas Instru m ents is a regist ered trademark of Texas Instruments, I nc.
Motorola i s a registered trademark of Motorola, Inc.
LINUX is a registered trademark of Linus Torvalds.
2EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
About the EP9312 User’s Guide
This Gui de describes the archit ecture, ha rdware, and operation of the Cirru s
Logic EP9312. It is intended to be used in conjunction with the EP9312
Datasheet, which contains the full electrical specifications for the device.
How to Use this Guide
Subject MatterLocation
AC’97Chapter 21 - AC’97 Controlle r
ARM920T Processor
Boot ROM, Hardware and SoftwareChapter 4- Boot ROM
Booting From SROM or SyncFlashChapter 12 - SDRAM, SyncR O M, and SyncFLASH Contro ller
S
IDEChapter 26 - IDE Interface
Infra- Red Int erfaceChapter 16 - IrDA
Interr upt Regi stersChapter 6- Vectored Interrupt Controller
Interr uptsChapter 6- Vectored Interrupt Controll er
IrDAChapter 16 - IrDA
Key Pad MatrixChapter 25 - Keypad Interface
LCD Interface
MACChapter 8- 1/10/100 Mbp s Ethernet LAN Co ntroller
Memory MapChapter 1 - Introduction
Chapter 2 - ARM920T Core and Advanced High-Speed Bus
(AHB)
Chapter 2 - ARM920T Core and Advanced High-Speed Bus
(AHB)
Chapter 2 - ARM920T Core and Advanced High-Speed Bus
(AHB)
Chapter 13 - UART1 With HDLC and Modem Control Signals
Chapter 15 - UART3 With HDLC Encoder
Chapter 20 - I2S Controller
Chapter 7 - Raster Engine With Analog/LCD Integrated Timing
and Interface
Preface
EP9312 User’s Manual - DS515UM23
Copyright 2004 Cirrus Logi c
Subject MatterLocation
ModemChapter 13 - UART1 With HDLC and Modem Control Signals
Power ManagementChapter 5- System Controller
Programming ClocksChapter 5- System Controller
PWMChapter 23 - Pulse Width Modulator
Raster Graphics
Real Time ClockChapter 19 - Real Time Clock With Software T rim
Register ListChapter 1 - Introduction
RTCChapter 19 - Real Time Clock With Software T rim
SDRAMChapter 12 - SDRAM, Syn c ROM, and SyncFLASH Controller
SecurityChapter 28 - Security
SMCChapter 11- Static Memory Controll er
SSPChapter 22 - Synchronous Serial Port
Static Memory ControllerChapter 11 - Static Memory Controller
System Co nfigurationChapter 5- Syst em Controller
System RegistersChapter 5- Syst em Controller
TimersChapter 17 - Timers
Touc h ScreenChapter 24 - Analog Touch Screen Interface
Chapter 7 - Raster Engine With Analog/LCD Integrated Timing
and Interface
Chapter 13 - UART1 With HDLC and Modem Control Signals
Chapter 14 - UART2
Chapter 15 - UART3 With HDLC Encoder
Related Documents from Cirrus Logic
1.EP9312 Rev is ion D Data She et , Do c um ent Numb er - D S515PP4
Reference Document s
1.ARM920T Technic al R eference M anual
2.AMBA Specification (Rev. 2.0), ARM IHI 001 1A, ARM Limited.
3.AHB Example AMBA System (Addendum 01), ARM DDI 0170A, ARM
Limited.
4EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
4.The coprocess or instruction assembler notation can be referenc ed from
ARM programming manuals or the Quick Reference Card, document
number AR M QRC 0001D .
5.The MAC engine is compliant with the requirements of ISO/IEC 8802-3
(1993), Sections 3 an d 4.
6.OpenHCI - Open Host Controller interface Specification for USB, Release
1.0a; Com paq, Microsoft, National Sem iconduct or.
7.ARM Coproces sor Quick Ref erence Card, document number ARM QRC
0001D.
8.Information Technology, AT Attachment with Packet Interface - 5
(ATA/ATAPI-5) ANSI NCITS document T13 1321D, Revision 3, 29
February 2000
9.OpenHCI - Open Host Controller Interface Specification for USB,
Release : 1 .0 a, R eleased - 09 /1 4/ 99 2:33 PM
10. ARM PrimeCell PL190-Rel1v1 Revision 1.7 Technical Reference Manual
DDI0181C
11. Audio Codec ‘97, Revision 2.3, April 2002, Intel Corporation
Notational Conventions
This docum ent uses the following convent ions:
• Internal and e xternal Sig nal Nam es, and P in Name s use mixe d uppe r and
lower case alphanumeric, and are sho w n in bold fo nt: RDLED .
• Register Bit Fie lds are named u sing upper and lo wer case alphan umeric:
that is, SBO OT, LC Sn1.
• Registers are named using mixed upper and lower case alphanumeric:
that is, SysCfg or PxDDR. (Where there are multiple registers with similar
names, a lower case “x” is used as a place holder. For example, in the
PxDDR registers, x represents a letter between A and H, indicating the
specific port being discussed.)
Caution: In the Internal Register Map in Table 2-7 on page 7-51, some
memory locations are listed as Reserved. These memory
locations should not be used. Reading from these memory
locatio ns will yield inva lid data. Writing to these mem ory location s
may caus e unpredictable results.
(An exam ple reg ister descript ion is sh own b elow. This de scriptio n is use d for
the following examples.)
A specific bit m ay be specified in one of two way s :
EP9312 User’s Manual - DS515UM25
Copyright 2004 Cirrus Logi c
By register name[bit number] : SysCfg[29],
or by register name.bit f ield[bit num ber] : SysCfg.REV[1]
Both of thes e represen tations refer to th e s am e bit.
The following:
SysCfg[8], or
SysCfg.SBOOT
also refer to the same bit.
Hexi decimal number s are referred to as 0x0000_0000.
Binary num bers are re fe rred to as 0000_0000b.
Register Example
Note: This is only and example. For actual SysCfg register information, see “SysCfg”
7.4 Functional Det a il s.............. ..................................................................................... .....................1 88
7.4.1 VILOSATI (Video Image Line Output Scanner and Transfer Interface) ............................188
7.4.2 Video FIFO ........................................................................................................................190
7.4.3 Video Pixel MUX................................................................................................................190
7.4.4 Blink Function ....................................................................................................................190
7.4.5 Color Look-Up-Tables .......................................................................................................191
7.4.6 Color RGB Mux .................................................................................................................1 92
Table 28-1: Security Register List .................................................................................774
26EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
NN
)
C
1.1 Introduction
The EP93 12 is a highly integr ated system-on -chip processor th at paves the
way for a multitude of next-generation consumer and industrial electronic
products. De signers of digital m edia se rvers and jukebo xes, te lematic control
systems, thin client s, set-top boxes, point-of -sal e ter minals, industrial control s,
biometric security systems, and GPS devices will benefit f rom the EP93 12’s
integrated architecture and advanced features. In fact, with amazingly agile
performance provided by a 200 MHz ARM920T processor, and featuring an
incredibly wide breadth of perip heral interface s, the EP9312 is well suited to
an even bro ade r rang e of hig h volu me a pp licatio ns. Furthe rmo re, by enab ling
or disabling the EP9312’s peripheral interfaces, designers can reduce
development costs and accelerate time-to-market by creating a single platform
that can be easily mod if ied to deliver a v ariety of differe nt iated end p roducts.
Figure 1-1. EP9312 Block Diagram
Chapter 1
1Introduction
1
18-bit Raster LCD
SDRAM
SRAM/
FLASH/ROM
12 Channel DMA
Engine
1/10/100 Ethernet
MAC
JTAG
USB Host, 3 Ports
IDE
Boot ROM
UART1 w/ HDLC
UART3 w/ HDLC
MaverickCrunch
Coprocessor
ARM920T
I-Cache
AMBA High-Speed Bus (AHB)
Vectored Interrupt
Controllers (2)
D-Cache
16KB
AHB/APB
16KB
MMU
Bridge
UART2 w/ IrDA
System Ctrl - PLLs (2
Touch Screen AD
TM
8x8 Key Scan
PWM
2
S (IIS)
I
AMBA Peripheral Bu s (APB)
Enhanced GPIO
EEPROM, LED (2)
SPI
AC’97
RTC with Trim
Watchdog Timer
Timers
EP9312 User’s Manual - DS515UM227
Copyright 2004 Cirrus Logi c
Introduction
11.2 EP9312 Features
The EP9312 system-on-chip processor has the following features:
• 200 MHz ARM920T Processor
• 16 KByte data cache and 16 KByte instruction cache
•MMU enabling Linux
• 100 MHz system bus
•MaverickCrunch
•Floating point, intege r and signal p roc essing ins tr uc t ions
• Optimized for digital music compression algorith ms
•Hardwar e interlocks allow in-lin e c oding
• MaverickKey
•32-bit unique ID
• 128-bit random ID
•Integrated Peripheral Interfa c es
• EIDE, up to 2 devices
•1/10/10 0 M bps Et hernet MAC
• Three-port USB 2.0 Full Speed host (OHCI)
™
™
IDs for Digital Rights Management or Design IP Security
®
and Windows® CE
Coprocessor
–
•Three UA RTs (16550 Type)
• IrDA interface, slow and fast mode
• LCD interface
• Touch screen interface
•SPI port
•AC ‘97 inte rf ac e
• I2S interface, up to 6 channels
• 8x8 keypad scanner
•External Memory Options
• 32-bit SDRAM interface, up to four banks
• 32/16/8-bit SRAM/Flash/ROM interface (I/F)
•Serial EE PR OM interfa c e
•Internal P eripherals
• Real-Time clock with software trim
28EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
Introduction
NN
• 12 DMA channels for data transfer that maximizes syste m
performance
•Boot ROM
•Dual PLLs c ont rol all clock dom ains
•Watchdog timer
• Two general purpose 16-bit timers
• General pu rpose 32-bit t im er
•40-bit debug timer
• General-Purpose I/Os
• 16 enhanced GPIOs inc luding inte rrupt capability
• 31 additional optional GPIOs multiplexed on peripherals
•Available in 352-pin PBGA package
1.3 EP9312 Applications
The EP9312 can be used in a variety of applications, such as:
•Digital media servers
1
• Integrated home media gateways
•Digital audi o juk eboxes
• Portable audio/video players
•Streaming audio / v ideo players
• Telematic control syste ms
• Set-top boxes
• Point-of-sale terminals
• Thin clients
•Internet T Vs
• Biometric security systems
•Industrial controls
• GPS & fleet management systems
• Educational toys
•Voting machines
•Medical e quipment
EP9312 User’s Manual - DS515UM229
Copyright 2004 Cirrus Logi c
Introduction
11.4 Overview of EP9312 Features
1.4.1 High-Performance ARM920T Processor Core
The EP9312 features an advanced ARM920T processor design with an MMU
that supports Linux®, Windows® CE, and many other embedded operating
systems . T he ARM920T’s 32-bit m ic rocontroller arch ite c tu re, with a f iv e-stage
pipeline , del ivers impr ess ive perfo rma nce at ve ry lo w po wer. The in clud ed 16
KByte instruction cache and 16 KByte data cache provide zero-cycle latency
to the cu rrent pr ogram and d ata, or c an be lo cked to pro vide gu arantee d nolatency access to critical instructions and data. For applications with
instruction memory size restrictions, the ARM920T’s compressed Thumb
instruction set provides a space-efficient design that maximizes external
instruction memory usage.
1.4.2 MaverickCrunch™ Coprocessor for Ultra-Fast Math Processing
The MaverickCrunch coprocessor is an advanced, mixed-mode math
coprocessor that greatly accelerates the single and double-precision integer
and floating-point processing capabilities of the ARM920T processor core.
The engi ne simplifies th e end-user ’s programmin g task by using predefin ed
coprocessor instructions, by utilizing standard ARM compiler tools, and by
requiring just one debugger session for the entire system. Furthermore, the
integrate d design provides a single instructio n stream and the ad vantage of
zero latency for cached instructions. To emulate this capability, competitors’
solutions add a DSP to the system, which requires separate
compiler /l ink er/debug ger tool sets. Th is additional D SP requires program m ers
to write two separate programs and debug them simultaneously, which can
result in frus t ration and cos t ly delays.
®
The single-cycle integer multiply-accumulate instruction in the
MaverickCrunch coprocessor allows the EP9312 to offer unique speed and
performa nce whi le enco ding d igital aud io and v ideo f ormats, pr ocessin g data
via Ethernet, and performing other math-intensive computing and dataprocessing functio ns in c onsumer and industrial electronics.
1.4.3 MaverickKey™ Unique I D Secures Di gital Content and OEM
Designs
Maverick Key uni que hardw are prog ramm ed IDs pro vide an ex cellen t solution
to the growing concern over secure Web content and commerce. With Internet
security playing an important role in the delivery of digital media such as books
or music, traditiona l software method s are quickly beco ming unreliable. T he
MaverickKey unique IDs provide OEMs with a method of utilizing specific
hardware IDs for DRM (D igital Rights Ma nagemen t) me c hanisms.
30EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
Introduction
NN
MaverickKey uses a specific 32-bit ID and a 128-bit random ID that are
programmed into the EP9312 through the use of laser probing technology.
These IDs can then be used to match secure copyrighted content with the ID
of the target device that the EP9312 is powering, and then deliver the
copyrighted information over a secure connection. In addition, secure
transactions can benefit by matching d evice 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
information on securing your design using MaverickKey, please contact your
Cirrus Log ic s ales representative.
1.4.4 Integrated Three-port USB 2.0 Full Speed Host with Transceivers
The EP931 2 integrat es three US B 2.0 Full Speed host po rts. Fully comp liant
to the OHCI USB 2.0 Full Speed specification (12 Mbps), the host ports can be
used to provide connections to a number of external devices including mass
storage d evice s, ext erna l po rtable d evice s su ch as au dio play ers o r came ras,
printers, or USB hubs. Naturally, the three-port USB host also supports the
USB 2.0 L ow Speed standa rd. This provide s the oppo rtunity t o create a wide
array of flexible system configurations.
1.4.5 Integrated Ethernet MAC Reduces BOM Costs
1
The EP9312 integrates a 1/10/100 Mbps Ethernet Media Access Controller
(MAC) on the device. With a simple connection to an MII-based external PHY,
an EP9312-based system has easy, high-performance, cost-effective Internet
capability.
1.4.6 8x8 Keypad Interface Reduces BOM Costs
The keypad circuitry scans an 8x8 array of 64 normally open, single pole
switches. Any one o r two keys d epressed w ill be de-boun ced and dec oded.
An interrupt is generated whenever a stable set of depressed keys is detected.
If the k eypad is not utilize d, t he 1 6 colum n/row pi ns m a y b e us ed a s ge ne ralpurpose I /O s .
The processor includes a 16 KByte boot ROM to set up standard
configurations. Optionally, the processor may be booted from FLASH memory,
over the SPI serial interface, or through the UART. This boot flexibility makes it
easy to design user-controlled, field-upgrad able systems. See Chapter 4 on
page 119, for additi onal details.
EP9312 User’s Manual - DS515UM231
Copyright 2004 Cirrus Logi c
Introduction
1
1.4.8 Abundant General Purpose I/Os Build Flexible Systems
The EP93 12 includes both enha nced and sta ndard gene ral-purpo se I/O pins
(GPIOs) . The 16 differ ent e nhanc ed G PIOs ma y ind ividu ally b e con figu red as
inputs, outputs, or interrupt-enabled inputs. There are an additional 31
standard GPIOs that may individually be used as inputs, outputs, or opendrain pin s. T he s tanda rd G PIOs are mu ltiple xed wit h pe riph eral func tion pins ,
so the nu mber available de pends on the u tilizatio n of peripherals. Toge ther,
the enhanced and standard GPIOs facilitate easy system design with external
peripher als not integrat ed on the EP 9312.
1.4.9 General-Purpose Memory Interface (SDRAM, SRAM, ROM and
FLASH)
The EP9 312 feature s a unified m emory addre ss model in which all memory
devices a re access ed over a common address/d ata bus. A sepa rate inte rnal
bus is ded ic at ed to the read-only R as t er/ D is play refres h engine, w hile the rest
of the memory accesses are performed via the high-speed processor bus. The
SRAM memory controller supports 8, 16 and 32-bit devices and
accommodates an internal boot ROM concurrently with a 32-bit SDRAM
memory.
1.4.10 12-Bit Analog-to-Digital Converter (ADC) Provides an Integrated
Touch-Screen Interf ace or General ADC Functionality
The EP9312 includes a 12-bit ADC, which can be utilized either as a touchscreen inter face or for general ADC functionalit y. The touch-screen int erface
performs all sampling, averaging, ADC range checking, and control for a wide
variety of ana log-re sis tive to uchsc reen s. To improve system perfor man ce, the
controller only interrupts the processor when a meaningful change occurs.
The touch -sc reen har dwa re m ay b e di sab led, a nd t he s witch ma trix an d A DC
controlle d directly for general AD C us age if desired.
32EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
Chapter 2
OO
2ARM920T Core and Advanced High-Sp eed Bus (AHB)
2.1 Introduction
This section discus s es t he ARM920T proces s or core an d t he Advan c ed HighSpeed Bus (AHB ).
2.2 Overview: ARM920T Processor Core
The ARM920T is a Harvard architecture processor core with separate
16 kb yte instruction and data caches wit h an 8-word line l ength used in the
EP9312 . The process or core utilize s a five-stage pip eline consis ting of fetch,
decode, execute, data memory acces s , and write stages.
2.2.1 Features
Key fea t ures include:
•ARM V4T (32-bit) an d T humb (16-b it co m pressed) ins t ruction sets
•32-bit Adv anced Micr o-C ontrolle r Bus Archite c tu re (AMBA)
2
• 16 kbyte Instructio n Cache with lockdown
•16 kbyte Data Cache (programmable write-through or write-back) with
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 lockd ow n of TLB Ent ries
• JTAG Interface for Debug Control
• Coprocessor Interface
EP9312 User’s Manual - DS515UM233
Copyright 2004 Cirrus Logi c
2
ARM920T Core and Advanced High-Speed Bus (AHB)
2.2.2 Block Diagram
Figure 2-1. ARM920T 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
2.2.3 Operations
The ARM920T core follows a Harvard architecture and consists of an
ARM9TD MI core, MMU , instruction and data ca che. The core supports both
the 32-bit AR M and 16-bit Thumb inst ruc t ion sets.
The inte rnal bus struct ure (AMBA) i ncludes both an internal hi gh speed and
external low speed bus. The high speed bus AHB (Advanced Highperformance Bus) contains a high speed internal bus clock to synchronize
coprocessor, 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 peripheral devices such as
UARTs a nd 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 syst em
34EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
performance, a 64-entry translation look-aside buffer will cache 64 address
locations before a TLB miss occurs.
OO
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 a lso has l ock-do wn capab ility. Cached ins tructio ns and data also have
access to a 16 -word data an d 4-word instr uction write bu ffer to allow cach ed
instructions to be fetched and decoded while the write buffer sends the
information to the ex te rnal bus.
The ARM920T core supports a number of coprocessors, including the
MaverickCrunch coprocessor by means of a specific pipeline architecture
interface.
2.2.3.1 ARM9TDMI Core
ARM9TDMI core is responsible for executing both 32-bit ARM and 16-bit
Thumb instructions. Each provides a unique advantage to a system design.
Internally, the instructions enter a 5-stage pipeline. These stages are:
• Instruction Fetch
•Instruction Decode
• Execute
• Data Memory Access
•Register Wr ite
2
All instruct ions are fully interlocke d. This mec hanism will d elay the exec ution
stage of a instruction if data in that instruction comes from a previous
instruction that is not available yet. This simply insures that software will
function identically across different implementations.
For memor y ac cess instru ctio ns, th e bas e regis te r used for the acces s will be
restored by the processor in the event of an Abort exception. The base
register will be restored to the v alue contained in th e processor regis t er before
exec ut ion of the instruction.
The ARM9TDMI core memory interface includes a separate instruction and
data interfac e to allow concurr ent access of inst ructions and data t o reduce
the number of CPI (cycles per instruction). Both interfaces use pipeline
addressing. The core can operate in big and little endian mode. End ianess
affects both the address and the data int erf ac es.
The memory interface executes four types of memory transfers: sequential,
non-sequential, internal, and coprocessor. It will also support uni- and bidirection al t ransfer mo des.
The core provides a debug interface called JTAG (Joint Testing Action Group).
This interf ac e provides debug capa bility with five ex t ernal control signals:
EP9312 User’s Manual - DS515UM235
Copyright 2004 Cirrus Logi c
ARM920T Core and Advanced High-Speed Bus (AHB)
•TDO - Test Data Out
•TDI - Test Data In
2
•TMS - Test Mode Select
•TCK - Test Clo c k
•nTRST - Test Reset
There are s ix scan chains (0 through 5) in th e 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.
2.2.3.2 Memory Management Unit
The MMU provides the translation and access permissions for the address
and data ports for the ARM9TDMI core. The MMU is controlled by page tables
stored in system memory and accessed using the CP15 register 1. The main
features of t he M M U are as follow s:
• Address Translation
•Access P erm issions an d D omains
• MMU Cache and Write Buffer Access
2.2.3.2.1 Address Translation
The virtual address from the ARM920T core is modified by R13 internally to
create a modified virtual address. The MMU then translates the modified
virtual address from R13 by the CP15 register 3 into a physical address to
access external memory or a device. The MMU loo ks for the physical address
from the Translati on Table Base (TTB ) in system memory. It will also update
the TLB cac he.
The TLB is two 64-entry caches, one for data and one for in struction. If the
physical address f or the current virtu al address is not found in the TLB (miss ),
the processor will go to external memory and look for the TTB in system
memory. The internal translation table walks hardware steps through the page
table setup in external memory for the appropriate physical address.
When the physical address is acquired, the TLB is updated. When the address
is found in the TLB, system performance will increase since it will take
additional cycles to access memory and update the TLB.
Translation of system memory is done by breaking up the memory into
different si ze bl ocks cal l ed sect i ons, l arg e pa ges, sma l l p ages, an d t iny p a ges.
System memory and registers can be remapped by the MMU. The block sizes
are as follo w s :
• Section - 1 Mbyte
36EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
•Large Pa ge - 64 kby t e
•Small Page - 16 kbyte
ARM920T Core and Advanced High-Speed Bus (AHB)
OO
• Tiny Page - 1 kbyte
2.2.3.2.2 Access Permission and Domains
Access to any s ection or page of memory is dep endent on its do main. The
page table in exte rnal memory als o contains access permissions fo r all subdivisions of e xternal memory. Access to specific instructions or data h as three
possible states, assuming access is permitted:
•Client: Access permissions based on the section or page table descriptor
•Manager: Ignore access permissions in the section or page table
descriptor
•No access: any attempted access generates a domain fault
2.2.3.2.3 MMU Enable
Enabling the MMU all ows for system mem ory control, but is also r equired if
the data cache and the write buffer are to be used. These features are
enabled for specific memory regions, as defined in the system page table.
MMU enable is done via C P15 register 1. The proc edure is as fol low s :
1. Program the Translation Table Base (TTB) and domain access control
registers.
2
2. Create level 1 and level 2 pages for the system and enable the cache and
the write buffer.
3. Enab le M M U - bit 0 of CP15 register 1.
2.2.3.3 Cache and Write Buffer
Cache configuration is 64-way set associative. There is a separate 16 kbyte
instruction and data cache. The cache has the following characteristics:
•8 words per lin e with 1 val id bit a nd 2 di rty bi ts per line for al lowing halfline write- backs.
•Write-through and write-back capable, selectable per memory region
defined by th e M M U .
•Pseudo random or round robin replacement alg orit hms for c ac he miss es .
This is determi ned by the R R bit (bit 14 in CP15 register 1). An 8-word line
is reloaded on a cache m is s .
•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 of that region of cache.
•For compatibility with Windows CE and to reduce latency, physical
EP9312 User’s Manual - DS515UM237
Copyright 2004 Cirrus Logi c
2
ARM920T Core and Advanced High-Speed Bus (AHB)
address es stored for data c ac he entries are stored in th e PA TAG RAM to
be used fo r cache line write-b ack operations with out need of the MMU ,
which pre v ent s a pos s ible TLB mis s th at w ould degrade performance.
•Write Buffer is a 4-word instruction x 16-word data buffer. If enabled,
writes are s ent to b uffer dire ctly f rom cach e o r from t he C PU in the eve nt
of a cache m is s or c ac he not ena bled.
2.2.3.3.1 Instruction Cache Enable
•At reset, the cache is di sa bled.
•A write to CP15 register 1, bit 12, will enable or disable the Instruction
Cache. If the Instruction Cache (I-Cache) is enabled without the MMU
enabled , a ll ac c es s es are treat ed as cachea ble.
•If disabled, current contents are ignored. If re-enabled before a reset,
contents will be unchange d but m ay not be c oherent with main memory. If
so, contents must be flushed before re-enabling.
2.2.3.3.2 Data Cache Enable
•A write to CP15 register 1, bit 0, will enable or disable the Data Cache (DCache)/Write Buffer.
•D-Cache must only be enabled when the MMU is enabled. All data
accesses are subject to MMU and permission che cks.
•If disabled, current contents are ignored. If re-enabled before a reset,
contents will be unchanged but may not be coherent with main memory.
Depending on system software, a clean and invalidate action may be
requ ired before re- enabling.
2.2.3.3.3 Write Buffer Enable
•The Write b ugger is enabled by the page table ent ries in the MMU. T he
Write buffer is not enabled unless MMU is enabled .
2.2.4 Coprocessor Interface
The MaverickCrunch coprocessor is explained in detail in Chapter 3. The
relations hip between the ARM coprocessor ins tructions and Ma verickCrunch
coproce s so r is als o explaine d in Chapter 3.
The ARM c oprocesso r ins t ruction se t in cl udes the follo w ing:
•LDC - Load co processo r fr om m emory
•STC - Store coprocessor regis t er from memory
• MRC - Move to ARM register from coprocessor register
• MCR - Move to coprocessor register fr om ARM register
38EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
• Access to sixteen (C0 through C15) 64-bit registers to access the
coproce ssor for d ata transfer and da ta manipulat ion to b e used wi th the
above instructions. See Chapter 3, Section 3.2 on page 73 for a code
example.
2.2.5 AMBA AHB Bus Interface Overview
The AMBA AHB is designed for use with high-performance, high clock
frequency system modules. The AHB acts as the high-performance system
backbon e bus. AHB su pports the efficie nt connection of processo rs, on-chip
memorie s and off-chip e xternal m emory inte rfaces with low-pow er periphera l
functions. AHB is also specified to ensure ease of use in an efficient design
flow using synthesis and automated test techniques. Figure 2-2 shows a
typical AM BA AHB Sys t em .
AHB (Advanced High-Performance Bus) connects with devices that require
greater bandwidth, such as DMA controllers, external system memory, and
coprocessors. The AMBA AHB bus has the following characteristics:
OO
2
• Burst Transactions
•Split Transactions
•Bus Mast er hand-ove r t o devices, th at is , DSP or DMA c ont roller
•Single cloc k edge operat ions
APB (Advanced Peripheral Bus) is a lower bandwidth lower power bus which
provides the following:
•Low Power Operations
• Latched address and control
•Simple Interface
Figure 2-2. Typical AMBA AHB System
External
Memory
Inte r fac e
ARM9TDMI
Co-
Processo
USB
r
AHBAPB
DMA
Controller
AHB/
APB
B
r
i
d
g
e
UARTSPI
GPIO
AC97
EP9312 User’s Manual - DS515UM239
Copyright 2004 Cirrus Logi c
2
ARM920T Core and Advanced High-Speed Bus (AHB)
2.2.6 EP9312 AHB Implementation Details
Periphe rals that ha ve high ban dwidth or late ncy requirem ents are c onnected
to the EP9312 processor using the AHB bus. These include the external
memory interface, Vectored Interrupt Controllers (VIC1, VIC2), DMA,
LCD/Raster registers, USB host, IDE, Ethernet MAC and the bridge to the
APB interf ace. The AHB/A PB Bridge transpare ntly converts the AH B access
into the slower sp eed APB ac cesses. All of the c ontrol re gisters for t he APB
peripherals are programmed using the AHB/APB bridge interface. The main
AHB data and address lines are configured using a multiplexed bus. This
removes t he need for three s tate buffers and bus hold ers and simplif ies bus
arbitration. Figure 2-3 shows the main data paths in the EP9312 AHB
implementation.
Figure 2-3. EP9312 Main Data Paths
VIC2
VIC1
Ethernet
ARM920T
18 Bit Raster
LCD I/ F
SDRAM
Controller
E
B
I
Static
Memory
Controller
IDE
USB
Host
AHB
Maverick
Crunch
Boot ROM
DMA
UARTs
Timers
AHB/APB
bridge
RTC
Watchdog
Test
Support
APB
Touchscreen
8x8 Key Mtx
GPIOs
PWM
SPI
I2S
IrDA
PLL1PLL2
Clock & State
Control
AC97
40EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
Before an AMBA-to-AHB transfer can commence, the bus master must be
granted ac cess to th e bus. This pro cess is star ted by the ma ster asser ting a
requ es t signal to t he arbiter. Then the arbiter i ndicates when the master will be
gran t ed use of the bus. A granted bus master starts an AMBA-to- AH B transfer
by drivin g the ad dress and contr ol signa ls. These signals provid e inform ation
on the address, direction and width of the transfer, as well as indicating
whether th e tr ansfer forms part of a burst.
Two different forms of burst transf ers are allowed:
•Incrementing bursts, w hic h do not wrap at address boundaries
•Wrapping bursts, which w rap at particul ar address boundaries .
A write data bus is us ed to move da ta from the mast er t o a s lav e, 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.
OO
2
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 orde r t o av oid exces s iv e arbitration latencies, it is pos s ible for the
arbiter to break up a bu rst , and , i n such cases, th e master must re - arbitr a te for
the bus in order to complete the remaining transfers in 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
indeterm inate data. Writes to re served or undefin ed memory addre sses
are gene rally ig nored, but this behav ior is no t guara nteed. M any re gister
addresses are not fully decoded, so aliasing may occur. A ddresses and
memory ranges listed as Reserved should not be accessed; access
behavior to these regions is not defined.
•Access to non-exist ent register s or m em ory may re s ult in a bus error.
•Any acce ss in the APB co ntrol regi ster space w ill com plete norm ally, as
thes e devices have no mea ns of sign aling an error.
•Access to non-existent AHB/APB registers may result in a bus error,
dependi ng on the de vice and nat ure of the erro r. Devic e specific ac cess
rules are def ined in the d ev ic e descripti ons.
•External memory access is controlled by the Static Memory Controller
(SMC) and the Synchronous Dynamic RAM (SDRAM) controller. In
general, a ccess to non-exis tent externa l memor y will comp lete norm ally,
with reads returning random false data.
EP9312 User’s Manual - DS515UM241
Copyright 2004 Cirrus Logi c
2
ARM920T Core and Advanced High-Speed Bus (AHB)
2.2.8 Bus Arbitration
The arbitration mechanism is used to ensure that only one master has access
to the bus it controls at any one time. The arbiter performs this function by
observing a number of different requests to use the bus and deciding which is
currently t he highest priority mast er 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
2.2.8.1 Main AHB Bus Arbiter
This arb it er controls t he bus master arbitration f or the A H B bus. Th e AHB b us
has eight Ma s te r interfaces, t hes e are:
•ARM920T
•DMA controller
• USB host (USB1, 2, 3)
• Ethernet MAC
• LCD/Raster and Raster Hardware Cursor.
These inte rfac es ha ve an order of priori ty tha t is lin ked clo sely with t he pow er
saving mod es. The po wer saving m ode s of H alt an d Standby force t he arbit er
to grant the default bus master, in this case, the ARM920T.
In summa ry, the order of priority of the bus m aste rs, from highe st to lowes t, is
shown in Table 2-1.
The priority of the Arbiter can be programmed in the BusMstrArb register in
the Clock and State Controller. The Arbiter can also be programmed to
degrant one of the following master s : DMA, USB Host o r Etherne t MAC, if an
interrupt (IRQ or FIQ) is pending or being serviced. This prevents one of these
masters fr om blocking important int errupt s erv ic e routine s . These mas t ers are
42EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
prevente d from acces sing the bus , and their bus requests are masked, un til
the IRQ/FIQ is removed (by the Interrupt Service Routine), at which point their
bus requests will be recognized. The default is to program the Arbiter so that it
does not degrant any of thes e m asters.
In norma l operat ion, whe n the AR M920 T is gran ted th e bus an d a requ est to
enter H alt mode is received, the ARM 920T is d e-granted from the AHB bus .
Any othe r master request ing the bus in Ha lt mode (accordin g to the priority )
will be granted the bus. In the case of the entry into Standby, 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 during an entry into Standby.
2.2.8.2 SDRAM Slave Arbiter
The SDR AM controller ha s a slave inter face fo r the main AHB bus and the
Raster controller DMA bus. In order to control the accesses to these memory
systems, the SDRAM controller has an arbiter that prioritizes between the
AHB and t he Rast er DMA bu s. In th is case the Raster contro ller bus is given
priority. If an access from the AHB is requested at the same tim e as a Raster
DMA, the Ra s te r w ill be given acc ess while the AHB requ es t is queued.
ARM920T Core and Advanced High-Speed Bus (AHB)
OO
2
2.2.8.3 EBI Bus Arbiter
This arbiter is used to arbitrat e bet wee n acces ses f rom the SD RA M cont rolle r
and the Static Mem ory controller. The prio rity is given to acc esses from the
SDRAM controller.
2.3 AHB Decoder
The AHB decoder contains the memory map for all the AHB masters/slaves
and the APB bridge. When a particular address range is selected, the
appropr iat e s ignal is gene rated. It is de fin ed in Tab le 2-2.
(For additional information, see “Reference Documents”, on Page 4.)
EP9312 User’s Manual - DS515UM243
Copyright 2004 Cirrus Logi c
0x80 07 _0 000 - 0x800 7_ FF F F--Reser ve d
0x8006_0000 - 0x8006_FFFF32AHBSDRAM Controller
0x80 05 _0 000 - 0x800 5_ FF F F--Reser ve d
0x80 04 _0 000 - 0x800 4_ FF F F--Reser ve d
0x8003_0000 - 0x8003_FFFF32AHBRaster
0x8002_0000 - 0x8002_FFFF32AHBUSB Host
0x8001_0000 - 0x8001_FFFF32AHBEthernet MAC
0x80 00 _0 000 - 0x800 0_ FFFF3 2AHBDMA
Note: Due to decoding optimization, the AHB peripheral registers are aliased
throughout each peripherals register bank. Do not program access to an
unspecified register within the bank.
Boot ROM physical
address
2.3.1 AHB Bus Slave
An AHB slave responds to transfers initiated by bus masters within the
system. The slave uses signals from the decoder to determine when it should
respond to a bus transfer. All ot her signa ls require d for the transfer, such as
the addres s and control informatio n, are generat ed by the bus master.
2.3.2 AHB to APB Bridge
The AH B to AP B bridge is an AHB s lave, pr oviding an in terface between the
high-speed AHB and the low-power APB. Read and write transfers on the
AHB are co nverted into equivale nt transfers on the A PB. As the APB is not
pipelined. Wait states are added during transfers to and from the APB when
the AHB is required to wa it fo r th e APB.
The main se c tio ns of t his m odule are:
•AHB slave bus interfa c e
• APB transfer state machine, which is independent of the device memory
map
• APB output signal generation.
44EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
2.3.2.1 Function and Operation of APB Bridge
The APB bridge responds to transaction requests from the currently granted
AHB master. The AHB transactions are then converted into APB transactions.
If an undefined location is accessed, operation 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 program access to an
unspecified register within the bank.
2.3.3 APB Bus Slave
An APB slave responds to transfers initiated by bus masters within the
system. The slave uses signals from the decoder to determine when it should
respond to a bus transfer. All ot her signa ls require d for the transfer, such a s
the addres s and control informatio n, are generat ed by the APB bridge.
EP9312 User’s Manual - DS515UM245
Copyright 2004 Cirrus Logi c
2
ARM920T Core and Advanced High-Speed Bus (AHB)
2.3.4 Register Definitions
ARM has thirty seven 32-bit internal registers, some are modal, some are
banked. If operating in Thumb mode, the processor must switch to ARM mode
before taking an exception. The return instruction will restore the processor to
Thumb state. Most tasks are execu ted out of User mode.
User: Unprivileged norma l operating mode
FIQ:Fas t int errupt (hig h priority) mo de w hen FIQ is a s se rt ed
IRQ:Interrupt request (normal) mode when IRQ is asserted
Supervisor:Software interrupt instruction (SWI) or reset will cause entry
into this mode
Abort:Memory ac c ess violation will caus e entry into this m ode
Undef:Undefined instructions
System:Privileged mode. Uses sam e regis t ers as user mode
Table 2-4 illustrates the use of all registers for the following ARM920T
operating modes. Each will bank or store a specific number of registers.
Banked register information is not shared between modes. FIQs bank the
fewest number of registers which increases performance.
User mode in Thumb state generally limits access to r0-r7. There are six
inst ructions that allow ac c ess to the high registers. For these 6 exceptions, the
processor must revert to ARM state. These exceptions are:
• r0-r12: General purpos e read/writ e 32-bit regist ers
• r13 (sp): Stack Pointer
• r14 (lr): Link Register
• r15 (pc): Prog ram C ounter
• cpsr: Current Program Status Register (contains condition codes and
operating modes)
• spsr: Saved Program Status R egister (saves CPSR when exception
EP9312 User’s Manual - DS515UM247
Copyright 2004 Cirrus Logi c
2
ARM920T Core and Advanced High-Speed Bus (AHB)
occurs)
The ARM920T core has 16 coprocessor registers for control ove r the core.
Updates t o the coprocess or registers ar e written using th e CP15 instruct ion.
Table 2-5 describes the CP15 ARM920T registers.
Table 2-5: CP15 ARM920T Register Description
RegisterDescription
ID Code: (Read/Only) This register returns a 32-bit device code. ID Code data represents
the core type, revision, part number etc. Access to this register is done with the following
instruction:
0
1
MRC p15 0, Rd, c0 , c0 , 0
Cache Code: This will also return cache type, size and length of both I-Cache and D-
Cache, size, and associativity. This is accessed with:
MRC p15 0, Rd, c0 , c0 , 1
Control Register: (Read/Wri te) Use this register to enable MM U, instruction and data
cache, round ro bin replacement ‘RR’-bi t, system p rotection, ROM protection, clocking
mode. Read/Write Instructions:
MRC p15 , 0, Rd, c1, c 0, 0 - Read control re gister - value stored in Rd
MCR p15, 0, Rd, c1, c0, 0 - Write control register - value first loaded into Rd
Translation Base Table: (Read/Write) Thi s register contains the start address of the firs t
level translation table. Upper18 bits represent the pointer to table base. Lower 14 bits
2
3
4
5
6
7
8
should be 0 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 sp ec ifies pe rmi ssions f or all 16
Reserved: Do not access. Unpredictable behavior may result.
Fault Status: (Read/Write) This regist er indicates type of fault and doma in of last data
abort.
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/Wr ite) This regist er contains address of the last data access abort.
MRC p15, 0, Rd, c6, c0, 0 - read data FAR data
MCR p15, 0, Rd, c6, c0, 0 - write data FAR data
Cache Operation: (Write/Only) This register will configure or perform a clean (flush) of the
cache and write buffer when written to. An example:
MRC p 1 5, 0, Rd, c7, c7, 0 - Inva lidate I/D- c ache
MRC p 1 5, 0, Rd, c7, c5, 0 - Inva lidate I-Cache
TLB Operatio n: (Write/Only) This register can configure or clean (flu sh) when written to:
MRC p15, 0, Rd, c8, c7, 0 - Invalidate TLB
Cache Lockdown: (Read/Write) Prevents certain cache-line fills from being overwritten
9
(locked).
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
The overall memory map for the device is shown in Table 2-6.
If internal Boot Mode is selected and the register BootModeClr has been
written, the address range 0x00 00_0000 -> 0x0000_FFFF is occupied by the
internal Boot ROM until the internal Boot Code is completed and then the map
reverts back to either Synchronous or Asynchronous memory in this address
space.
NOTE: Some memory locations are listed as Reserved. These memory
location s shou ld not b e us ed. Re ad ing f rom these mem ory loc atio ns will yield
invalid data. Writing to these memory locations may cause unpredictable
results.
10
13
15
TLB Lockdown: (Read/Write) Prevents TLB entries from being erased during a table walk.
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
Reserved
FCSE PID Register: (Read/Write) Addresses by the ARM9TDMI core in a range from 0 to
32MB are translated by this register to A + FCSE*32MB and remapped. If turned off,
straight address map to the MMU result.
Test Register O nly: Reads or writ es will ca use unpredictable behavior.
2
T able 2-6: Global Memory Map for the Two Boot Modes
EP9312 User’s Manual - DS515UM249
Copyright 2004 Cirrus Logi c
ARM920T Core and Advanced High-Speed Bus (AHB)
T able 2-6: Global Memory Map for the Two Boot Modes (Continued)
Address RangeSync Memory BootAsync Memory Boot
2
0x00 00 _0 000 - 0x000 0_ FFFF
Note: The shaded areas are the memory areas dedicated t o system registers. Details
of these registers are in Table 2-7.
2.3.6 Internal Register Map
Registers are set to their default s tate by the RSTOn pin an d by t he PRSTn pin
inputs. Som e state conser ving registers ar e reset only by the PRSTn pin.All
registers are read/write unless s pec if ied otherwise.
2.3.6.1 Memory Access Rules
Any memory address not specifically assigned to a register should be
avoided. Read s to regis ter me mory addres ses labe lled Re serve d, Unus ed 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; access behavior to these regions is not
defined.
ASD0 Pin = 1ASD0 Pi n = 0
Sync memory (nSDCE3)
or
Internal Boot ROM
if INTBOOT selected
Async memory (nCS0)
Internal Boot ROM
if INTBOOT selected
or
The SW Lock field identifies registers with a software lock. The software lock
prevents t he register from be ing written unle ss a proper unlo ck operation is
performe d imme diately prior t o writin g the ta rget re gister. Any reg ister whose
accidental alteration could cause system damage is 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 the name RSVD, means
the bit is n ot a cce ssible . So ftware sho uld ma sk th e R SVD bits w hen d oin g bit
reads. RSV D bits will ignore write s, that is writing a zero or a o ne does not
matter.
Register bits identified as NC must be treated in a specific manner for reads
and writes; see the register description for each register for information on
how to re ad and writ e reg ist er bits ide ntif ied as NC. Re gister bits id ent ified as
NC are functionally alive but have an undocumented or a “don’t care”
operating fun cti on. The regis ter des crip tion wil l prov ide info rmat ion on how to
handle NC bit s .
Unless specified otherwise, all registers can be accessed as a byte, half-word,
or word.
50EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
CAUTION: Some memory locations are listed as Reserved. These memory
location s shou ld not b e us ed. Re ad ing f rom these mem ory loc atio ns will yield
invalid data. Writing to these memory locations may cause unpredictable
results.
T able 2-7: Internal Registe r Map
ARM920T Core and Advanced High-Speed Bus (AHB)
OO
2
AddressRegister NameRegister Description
0x8000_xxxx
0x8000_0000 - 0x8000_003C M2P C hannel 0 Registers (Tx) Memory -to-Peripheral Channel 0 Regis ters (Tx)N
0x8001_xxxx
0x8001_0000RXCtlMAC Rec eiver Control RegisterN
0x8001_0004TXCtlMAC Transmitter Control Reg isterN
0x8001_0008TestCtlMAC Test Contr ol RegisterN
0x8001_0010MIICmdMAC MII Command RegisterN
0x8001_0014MIIDataMAC MI I Data RegisterN
0x8001_0018MIIStsMAC MI I St atus RegisterN
0x8001_0020SelfCtlMAC Self Control RegisterN
0x8001_0024IntEnMAC Interru pt Enable RegisterN
0x8001_0028IntStsPMAC Interrupt Status P reserve RegisterN
0x8001_002CIntStsCMAC Interrupt Status Clear RegisterN
0x8001_0030 - 0x 8001_0034Re served
0x8001_0038DiagAdMAC Diagnostic Address R egisterN
0x8001_003CDiagDaMAC Diagnostic Data RegisterN
0x8001_0040GTMAC Gen eral Timer RegisterN
0x8001_0044FCTMAC Flow Control Timer Regist erN
0x8001_0048FCFMAC Flow Control Format RegisterN
0x8001_004CAFPMA C Address Filter Pointer RegisterN
0x8001_0050 - 0x 8001_0055IndAd
DMADMA Control Registers
Ethernet MACEthernet MAC Control Registers
MAC Ind ividual Address Re gister, (shares address space with
HashTbl)
SW
Lock
N
EP9312 User’s Manual - DS515UM251
Copyright 2004 Cirrus Logi c
ARM920T Core and Advanced High-Speed Bus (AHB)
T able 2-7: Internal Register Map (Continued)
2
AddressRegister NameRegister Description
0x8001_0050 - 0x8001_0057HashTblMAC Hash Table Register, ( s hares address space with IndAd)N
0x8001_0060GlIntStsMAC Gl obal Interrupt Status RegisterN
0x8001_0064GlIntMskMAC Global Interrup t Mask RegisterN
0x8001_0068GlIntROStsMAC Global Interr upt Read Only Status RegisterN
0x8001_006CGlIntFrcMAC Global Interr upt Force RegisterN
0x8001_0070TXCollCntMAC T ransmit Collision Coun t R egisterN
0x8001_0074RXMissCntMAC Receive Miss Count RegisterN
0x8001_0078RXRuntCntMAC Receive Runt Cou nt RegisterN
0x8001_0080BMCtlMAC Bus Master Control Re gisterN
0x8001_0084BMStsMAC Bus Ma ster Status RegisterN
0x8001_0088RXBCAMAC Receive Buffer Current Address RegisterN
0x8001_0090RXDQBAddMAC Receive Descriptor Queue Base Address RegisterN
0x8001_0094RXDQBLenMAC Receive De scriptor Queue Base Length RegisterN
0x8001_0096RXDQCurLenMAC Receive Descriptor Queue Current Length RegisterN
0x8001_0098RXDCurAddMAC Rec eive Descriptor Current Address RegisterN
0x8001_009CRXDEnqMAC Receive Descr iptor Enqueue R egisterN
0x8001_00A0RXStsQBAddMAC Receive Status Queue Base Address RegisterN
0x8001_00A4RXStsQBLenMAC Rec eive Status Q ueue Base Length RegisterN
0x8001_00A6RXStsQCurLenMAC Receive Status Queue Current Length RegisterN
0x8001_00A8RXStsQCurAddMAC Receive Status Queue Current Address RegisterN
0x8001_00ACRXStsEnqMAC Rec eive Statu s Enqueue RegisterN
0x8001_00B0TXDQBAddMAC Transmit Descri ptor Queue Base Address RegisterN
0x8001_00B4TXDQBLenMAC Tr ansmit Descriptor Queue Base Length RegisterN
0x8001_00B6TXDQCurLenMAC Transmit Descriptor Queue Cur rent Length Regi sterN
0x8001_ 00B8TXDQCurAddMAC Transm it Descriptor Current Add ress RegisterN
0x8001_ 00BCTXDEnqMAC Transmit Descript or Enqueue RegisterN
0x8001_ 00C0TXStsQBAddMAC Transmit Status Queue Base Address RegisterN
0x8001_ 00C4TXStsQBLenMAC Tran sm it Status Queue Base Length RegisterN
0x8001_00C6TXStsQCurLenMAC Tr ansmit Status Queue Current Length RegisterN
0x8001_ 00C8TXStsQCurAddMAC Transmit Status Queue Current Address RegisterN
0x8001_00D0RXBufThr shldMAC Receive Buffer Threshold RegisterN
0x8001_00D4TXBufThrshldMAC Transmit Buffer Threshold RegisterN
0x8001_00D8RXStsThrshldMAC Receive Status Threshold Regist erN
0x8001_00DCTXSt sThrshldMAC Transmit Status Threshold RegisterN
0x8001_00E0RXDThrshldMAC Receive Descriptor Threshold RegisterN
0x8001_00E4TXDThrshldMAC Transmit Descriptor Threshol d RegisterN
0x8001_00E8MaxFrmLenMAC Maximum Fr ame Length RegisterN
0x8001_00ECRXHdrLenMAC Receiv e Header Length RegisterN
0x8001_0100 - 0x 8001_010CReserved
0x8001_4000 - 0x 8001_50FF MACFIFOMAC FIFO RAMN
SW
Lock
0x8002_xxxx
0x8002_0000HcRevision USB Host Controller RevisionN
USBUSB RegistersN
52EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
T able 2-7: Internal Register Map (Continued)
ARM920T Core and Advanced High-Speed Bus (AHB)
OO
AddressRegister NameRegister Description
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_001CHcPeri odCurrentED USB Host Con tr oller Period Cu rrentEDN
0x8002_0020HcControlHeadED USB Host Controller Control HeadEDN
0x8002_0024HcControlCurrentED USB Host Controller Control Curr entEDN
0x8002_0028HcBulkHeadED USB Ho st Controller Bulk HeadEDN
0x8002_002CHcBulkC urrentED USB Host Controller Bulk CurrentEDN
0x8002_0030HcDoneHead USB Host Con tr oller Done HeadN
0x8002_0034HcFmInterva l USB Ho st Controller Fm IntervalN
0x8002_0038HcFmRemaining USB Host Controller Fm RemainingN
0x8002_003CHcFmNumber USB Host Controller Fm NumberN
0x8002_0040HcPeri odicStart USB Host Con tr oller 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 Hu b StatusN
0x8002_0054HcRhPortStatus[1]USB Host Contro ller Root Hub Port Status 1N
0x8002_0058HcRhPortStatus[2]USB Host Contro ller Root Hub Port Status 2N
0x8002_005CHcRhPo rtStatus[3]USB Host Controller Root Hub Port Status 3N
0x8002_0080USBCtrlUSB Configuration ControlN
0x8002_0084USBHCIUSB Host Contr oller Interface StatusN
SW
Lock
2
0x8003_xxxx
0x8003_0000VLines TotalTotal Numbe r of vertical frame linesY
0x8003_ 0004VSyncStrtStopVertical sync pulse setupY
0x8003_0008VActiveStrtStopVertical blan king setupY
0x8003_000CVClkStrtStopVertical clock act ive frameY
0x8003_0010HClkTotalTotal Number of horizontal lin e clocksY
0x8003_0014HSyncStrtStopHorizo ntal sync puls e setupY
0x800 3 _0 018HAct iv eStrtSto pHorizontal blanki ng setu pY
0x8003_001CHClkStrtStopHorizontal clock active frameY
0x8003_0020BrightnessPWM brightness controlN
0x8003_0024VideoAttribsVideo state machine paramet ersY
0x8003_0028VidScrnPageStarting address of video screenN
0x800 3 _0 02CVidScrnHPageStarti ng address of vi de o sc r ee n half pageN
0x8003_0030ScrnLinesNumber of active lines scanned to the screenN
0x8003_0034LineLengthLength in w ords of da ta for linesN
0x8003_0038VLineStepMemo ry step for each lineN
0x8003_003CLineCar ryHorizontal/vertical offset parameterY
EP9312 User’s Manual - DS515UM253
Copyright 2004 Cirrus Logi c
RASTERRaster Control Registers
ARM920T Core and Advanced High-Speed Bus (AHB)
T able 2-7: Internal Register Map (Continued)
2
AddressRegister NameRegister Description
0x8003_0040BlinkRateBlink counte r 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_0050BkgrndOffsetBackground color or bl ink offset value N
0x8003_0054PixelModePixel mode definition setup Register N
0x8003_0058ParllIfOutParallel interface write/control Register N
0x8003_005CParllI fInParallel interface read/setup Register N
0x8003_0060CursorAdrStartWord locat ion of the top left corner of cursor to be displayed N
0x8003_0064CursorAdrResetL ocation of first word of cursor to be scanned after last line N
0x8003_0068CursorSizeCursor height, width, and step size Register N
0x8003_006CCursor Color1Cursor color overlaid when cursor value is 10 N
0x8003_0070CursorColor 2Curs or color overlaid when cursor value is 11 N
0x8003_0074CursorXYLocCursor X and Y location RegisterN
0x8003_0078CursorDScanLHYLocCursor dual scan lower half Y lo cation RegisterN
0x8003_007CRasterSWLock
0x8003_0080 - 0x8003_00FC GrySclLUTRGraysc ale Look Up TableN
0x8003_0200VidSigRsltValVideo signature result value N
0x8003_0204VidSigCtrlVi deo signature Control Register N
0x8003_0208VSigStrtStopV ertical signat ure bounds setupN
0x8003_020CHSigStrtStopHorizontal signat ure bounds setupN
0x8003_0210SigClrSt rSignature clear and store locationN
0x8003_0214ACRateLCD AC voltage bias control coun ter 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 Bla nk signal Sta rt/Stop RegisterN
0x8003_022CHBlankStrtStopHorizontal Blank signal Start/Stop Register N
0x8003_0230EOLOffsetEnd Of Line Offset value N
0x8003_0234FIFOLevelFIFO refill level RegisterN
0x8003_0280 - 0x8003_02FC GrySclLUTGGrayscale Look Up TableN
0x8003_0300 - 0x8003_037C GrySclLUTBGrayscale Look Up TableN
0x8003_0400 - 0x 8003_07FC ColorLUTColor Look U p 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 bit s used in configurationN
0x8006_0008RefrshTimrSet the pe riod between refresh cyclesN
0x8006_000CBootStsReflec t the state of the boot mode option pinsN
Bank config Register 0 (used to program characteristics of th e
SRAM/ROM memory)
Bank config Register 1 (used to program characteristics of th e
SRAM/ROM memory)
Bank config Register 2 (used to program characteristics of th e
SRAM/ROM memory)
Bank config Register 3 (used to program characteristics of th e
SRAM/ROM memory)
Bank config Register 6 (used to program characteristics of th e
SRAM/ROM memory)
Bank config Register 7 (used to program characteristics of th e
SRAM/ROM memory)
Boot ROMBoot ROM Memory Locations
SW
Lock
2
N
N
N
N
N
N
0x800A_xxxx
0x800A_0000IDECtrlIDE Control RegisterN
0x800A_0004IDECfgIDE Configuration RegisterN
0x800A_0008IDEMDMAOpIDE MDMA Operation RegisterN
0x800A_000CI DEUDMAOpIDE UDMA Operation RegisterN
0x800A_0010IDEDataOutIDE PIO Dat a Output RegisterN
0x800A_0014IDEDataInIDE PIO Data Input RegisterN
0x800A_0018IDEMDMADataOutIDE MDMA Data Output RegisterN
0x800A_00 1CIDEMD MAD ataInIDE MDMA Data Input Regi sterN
0x800A _0020IDEUDMADataOutIDE UDMA Dat a O utput RegisterN
0x800A_0024IDEUDMADataInIDE UDMA Data Input RegisterN
0x800A_0028IDEUDMAStsIDE UDMA Status RegisterN
0x800A_002CIDEUDMADebugIDE UDMA Debug Registe rN
0x800A _0030IDEUDMAWrBufStsIDE UDMA Write Buffer Status RegisterN
0x800A_0034IDEUDMARdBufStsIDE UDMA Read Buffer Status RegisterN
0x800B_xxxx
0x800B_0000VIC1IRQStatusIRQ status R egisterN
EP9312 User’s Manual - DS515UM255
Copyright 2004 Cirrus Logi c
IDEIDE Control Registers
VIC1Vectored Interrupt Controller 1 Registers
ARM920T Core and Advanced High-Speed Bus (AHB)
T able 2-7: Internal Register Map (Continued)
2
AddressRegister NameRegister Description
0x800B_0004VIC1FIQStatusFIQ status RegisterN
0x800B_0008VIC1RawInt rRaw interrupt status RegisterN
0x800B_000CVIC1In tS electInterrupt select RegisterN
0x800B _0010VIC1IntEn ableInterr upt enable Regi sterN
0x800B _0014VIC1IntEn ClearInterrupt enable clear RegisterN
0x800B _0018VIC1Soft IntSoftwa re interrupt RegisterN
0x800B _001CVIC1SoftIntClearSoftware interr upt clear Regis terN
0x800B_0020VIC1ProtectionProtection enable RegisterN
0x800B_0030VIC1VectAddrVect or address RegisterN
0x800B_0034VIC1DefVectAddrDefault ve ctor address RegisterN
0x800B_0100VIC1VectAddr0Vector address 0 RegisterN
0x800B_0104VIC1VectAddr1Vector address 1 RegisterN
0x800B_0108VIC1VectAddr2Vector address 2 RegisterN
0x800B_010CVIC1VectAddr3Vector address 3 RegisterN
0x800B_0110VIC1VectAddr4Vector address 4 RegisterN
0x800B_0114VIC1VectAddr5Vector address 5 RegisterN
0x800B_0118VIC1VectAddr6Vector address 6 RegisterN
0x800B_011CVIC1VectAddr7Vecto r address 7 RegisterN
0x800B_0120VIC1VectAddr8Vector address 8 RegisterN
0x800B_0124VIC1VectAddr9Vector address 9 RegisterN
0x800B_0128VIC1VectAddr10Vector address 10 RegisterN
0x800B_012CVIC1VectAddr11Vector address 11 RegisterN
0x800B_0130VIC1VectAddr12Vector address 12 RegisterN
0x800B_0134VIC1VectAddr13Vector address 13 RegisterN
0x800B_0138VIC1VectAddr14Vector address 14 RegisterN
0x800B_013CV IC1VectA ddr15Vector address 15 RegisterN
0x800B_0200VIC1VectCntl0Vector control 0 RegisterN
0x800B_0204VIC1VectCntl1Vector control 1 RegisterN
0x800B_0208VIC1VectCntl2Vector control 2 RegisterN
0x800B_020CV IC1VectCntl3Vector control3 RegisterN
0x800B_0210VIC1VectCntl4Vector control 4 RegisterN
0x800B_0214VIC1VectCntl5Vector control 5 RegisterN
0x800B_0218VIC1VectCntl6Vector control 6 RegisterN
0x800B_021CV IC1VectCntl7Vector control 7 RegisterN
0x800B_0220VIC1VectCntl8Vector control 8 RegisterN
0x800B_0224VIC1VectCntl9Vector control 9 RegisterN
0x800B _0228VIC1VectCntl10Vector control 10 RegisterN
0x800B_022CV IC1VectCntl11Vector control 11 RegisterN
0x800B _0230VIC1VectCntl12Vector control 12 RegisterN
0x800B _0234VIC1VectCntl13Vector control 13 RegisterN
0x800B _0238VIC1VectCntl14Vector control 14 RegisterN
0x800B _023CVIC1VectCntl15Vector control 15 RegisterN
0x800B _0FE0VIC1PeriphID 0Peripheral identification Register bits 7:0N
0x800C_xxxx
0x800C_0000VIC2IR Q StatusIRQ sta tus RegisterN
0x800C_0004VIC2FIQStatusFIQ status RegisterN
0x800C_0008VIC2Ra wIntrRaw interrupt status R egisterN
0x800C_000CVIC2IntSelectInte rrupt select RegisterN
0x800C_0010VIC2IntEnableInterrupt enable Regist erN
0x800C_0014VIC2IntEnClearInt errupt enable clear RegisterN
0x800C_0018VIC2SoftIntSoftware i nterrupt RegisterN
0x800C_001CVIC2SoftIntClearSof tw are interrupt c lear RegisterN
0x800C_0020VIC2Pr otectionProtection enable RegisterN
0x800C_0030VIC2VectAddrVector address RegisterN
0x800C_0034VIC2DefVectAddrDefault vector address RegisterN
0x800C_0100VIC2VectAddr0Vector address 0 RegisterN
0x800C_0104VIC2VectAddr1Vector address 1 RegisterN
0x800C_0108VIC2VectAddr2Vector address 2 RegisterN
0x800C_010CVIC2VectAddr3Vector address 3 RegisterN
0x800C_0110VIC2VectAddr4Vector address 4 RegisterN
0x800C_0114VIC2VectAddr5Vector address 5 RegisterN
0x800C_0118VIC2VectAddr6Vector address 6 RegisterN
0x800C_011CVIC2VectAddr7Vector address 7 RegisterN
0x800C_0120VIC2VectAddr8Vector address 8 RegisterN
0x800C_0124VIC2VectAddr9Vector address 9 RegisterN
0x800C_0128VIC2VectAddr10Vector address 10 RegisterN
0x800C_012CVIC2VectAddr1 1Vector address 11 Registe rN
0x800C_0130VIC2VectAddr12Vector address 12 RegisterN
0x800C_0134VIC2VectAddr13Vector address 13 RegisterN
0x800C_0138VIC2VectAddr14Vector address 14 RegisterN
0x800C_013CVIC2VectAddr15Vector address 15 RegisterN
0x800C_0200VIC2VectCntl0Vector control 0 RegisterN
0x800C_0204VIC2VectCntl1Vector control 1 RegisterN
0x800C_0208VIC2VectCntl2Vector control 2 RegisterN
0x800C_020CVIC2VectCntl3Vector control3 RegisterN
0x800C_0210VIC2VectCntl4Vector control 4 RegisterN
0x800C_0214VIC2VectCntl5Vector control 5 RegisterN
0x800C_0218VIC2VectCntl6Vector control 6 RegisterN
0x800C_021CVIC2VectCntl7Vector control 7 RegisterN
0x800C_0220VIC2VectCntl8Vector control 8 RegisterN
0x800C_0224VIC2VectCntl9Vector control 9 RegisterN
VIC2Vectored Interrupt Controller 2 Registers
SW
Lock
2
EP9312 User’s Manual - DS515UM257
Copyright 2004 Cirrus Logi c
ARM920T Core and Advanced High-Speed Bus (AHB)
T able 2-7: Internal Register Map (Continued)
2
AddressRegister NameRegister Description
0x800C_0228VIC2VectCntl10Vector control 10 RegisterN
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_0FE0VIC2PeriphID0Peripheral ident ification Regist er bits 7:0N
0x800C_0FE4VIC2PeriphID1Peripheral ident ification Regist er bits 15:8N
0x800C_0FE8VIC2PeriphID2Peripheral ident ification Regist er bits 23:16N
0x800C_0FECVIC2Perip hID3Peripheral identification Register bits 31:24N
0x800C_0FF0 - 0x800C_0FFCReservedN
0x8081_xxxx
0x8081_0000Timer1LoadContains the initial value of the timerN
0x8081_0004Time r1ValueGives the cur rent value of th e timerN
0x8081_0008Timer1ControlProvides enable/disable and mode configurations for the timerN
0x8081_000CTime r1ClearClears an interrupt ge nerated by the timerN
0x8081_0020Timer2LoadContains the initial value of the timerN
0x8081_0024Time r2ValueGives the cur rent value of th e timerN
0x8081_0028Timer2ControlProvides enable/disable and mode configurations for the timerN
0x8081_002CTime r2ClearClears an interrupt ge nerated by the timerN
0x8081_0060 - 0x 8081_0064Re served
0x8081_0080Timer3LoadContains the initial value of the timerN
0x8081_0084Time r3ValueGives the cur rent value of th e timerN
0x8081_0088Timer3ControlProvides enable/disable and mode configurations for the timerN
0x8081_008CTime r3ClearClears an interrupt ge nerated 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 ch annel 0N
0x8082_0014I2STX0RtRight Transmit data Registe r for channel 0N
0x8082_0018I2STX1LftLeft Transmit data Register for ch annel 1N
0x8082_001CI2STX1RtRight Transmit data Register fo r channel 1N
0x8082_0020I2STX2LftLeft Transmit data Register for ch annel 2N
0x8082_0024I2STX2RtRight Transmit data Registe r for channel 2N
0x8082_0028I2STXLinCtrlDataTransmit Line Contr ol RegisterN
0x8082_002CI2STXCtrlTransmit Control R egisterN
0x8082_0030I2STXWrdLenTransm it Word LengthN
0x8082_0034I2STX0EnTX0 Channel En ableN
I2SI2S Registers
I2S Global Status Registe r. This refle c ts the status of the 3 RX
FIFOs and the 3 TX FIFOs
N
N
58EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
T able 2-7: Internal Register Map (Continued)
ARM920T Core and Advanced High-Speed Bus (AHB)
OO
AddressRegister NameRegister Description
0x8082_0038I2STX1EnTX1 Channel En ableN
0x8082_003CI2STX2E nTX2 Channel En ableN
0x8082_0040I2SRX0LftLeft Receive data Register for channel 0N
0x8082_0044I2SRX0RtRight R eceive data Register for chann el 0N
0x8082_0048I2SRX1LftLeft Receive data Register for channel 1N
0x8082_004CI2SRX1RtRight Re ceive data Register for c hannel 1N
0x8082_0050I2SRX2LftLeft Receive data Register for channel 2N
0x8082_0054I2SRX2RtRight R eceive data Register for chann el 2N
0x8082_0058I2SRXLinCtrlDat aReceive Line Control Registe rN
0x8082_005CI2SRXCt rlReceive Contro l RegisterN
0x8082_0060I2SRXWrdLenReceive Word LengthN
0x8082_0064I2SRX0EnRX0 Channel EnableN
0x8082_0068I2SRX1EnRX1 Channel EnableN
0x8082_006CI2SRX2EnRX2 Channel EnableN
0x8083_xxxx
0x8083_2714ExtensionIDContains the Par t ID for EP93XX devicesN
Contact Cirrus Logic f or details regar ding implementation of device Security measures.
0x8084_xxxx
0x8084_0000PADRGPIO Port A Data RegisterN
0x8084_0004PBDRGPIO Port B Data RegisterN
0x8084_0008PCDRGPIO Por t C Data RegisterN
0x8084_000CPDDRGPIO Port D Data RegisterN
0x8084_0010PADDRGPIO Port A Data Dir ection RegisterN
0x8084_0014PBDDRGPIO Port B D ata Direction Registe rN
0x8084_0018PCDDRGPIO Port C Data Direction RegisterN
0x8084_001CPDDDRGPIO Port D Data Direction RegisterN
0x8084_0020PEDRGPIO Port E Data RegisterN
0x8084_0024PEDDRGPIO Port E D ata Direction Registe rN
0x8084_0028 - 0x 8084_002CReserved
0x8084_0030PFDRGPIO Po rt F Data RegisterN
0x8084_0034PFDDRGPIO Port F Data Direction RegisterN
0x8084_0038PGDRGPIO Port G Data RegisterN
0x8084_003CPGDDRGPIO Port G D ata Direction RegisterN
0x8084_0040PHDRGPIO Por t H Data RegisterN
0x8084_0044PHDDRGPIO Port H Data Direction RegisterN
0x8084_0048 Reserved
0x8084_004CGPIOFIntType1
0x8084_0050GPIOFIntType2
0x8084_0054GPIOFEOIGPIO Port F En d Of Inter rupt RegisterN
SECURITYSecurity Registers
GPIOGPIO Control Registers
Regist er co nt rol l ing t yp e, le ve l o r ed ge , of i nte r rupt g ener ate d by
the pins of Port F
Register controlling polarity, high/low or rising/falling, of interrupt
generated by Port F
SW
Lock
2
N
N
EP9312 User’s Manual - DS515UM259
Copyright 2004 Cirrus Logi c
ARM920T Core and Advanced High-Speed Bus (AHB)
T able 2-7: Internal Register Map (Continued)
2
AddressRegister NameRegister Description
0x8084_0058 GPIOFI ntEnInterrupt Enable for Port FN
0x8084_005C IntStsF
0x8084_0060 RawIntStsF
0x8084_0064 GPIOFDBGPIO F Debounce RegisterN
0x8084_0094 GPIOAIntType2
0x8084_0098 GPIOAEO IGPIO 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 Regist erN
0x8084_00B8 GPIOBIntEnControlling the generation of interrupts by the pins of Por t BN
0x8084_00BC IntStsB
0x8084_00C0 RawIntStsB
0x8084_00C4 GPIOBDBGPIO B Debounce Regist erN
0x8084_00C8 EEDrive
GPIO Interrupt Status Register. Contains status of Port F
interrupts afte r mask ing .
Raw Interrupt Status Register. Contains raw interrupt status of
Port F before masking.
Regist er co nt rol l ing t yp e, le ve l o r ed ge , of i nte r rupt g ener ate d 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 afte r mask ing .
Raw Interrupt Status Register. Contains raw interrupt status of
Port A before masking.
Regist er co nt rol l ing t yp e, le ve l o r ed ge , of i nte r rupt g ener ate d 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 afte r mask ing .
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 pi ns
SW
Lock
N
N
N
N
N
N
N
N
N
N
N
0x8088_xxxx
0x8088_0000AC97DR1Data read or writt en from/to FIFO1N
0x8088_0004AC97RXCR1Control Register for receiveN
0x8088_0008AC97TXCR1Control Register for transmitN
0x8088_000CAC97SR1Status RegisterN
0x8088_0010AC97RISR1 Raw interrupt status R egisterN
0x8088_0014AC97ISR1 Interrupt StatusN
0x8088_0018AC97IE1 Interrupt EnableN
0x8088_001CReserved
0x8088_0020AC97DR2Data read or writt en from/to FIFO2N
0x8088_0024AC97RXCR2 Control Register for receiveN
0x8088_0028AC97TXCR2 Control Register for transmitN
0x8088_002CAC97SR2 Status RegisterN
AC’97AC’97 Control Register s
60EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
T able 2-7: Internal Register Map (Continued)
ARM920T Core and Advanced High-Speed Bus (AHB)
OO
AddressRegister NameRegister Description
0x8088_0030AC97RISR2 Raw interrupt status R egisterN
0x8088_0034AC97ISR2 Interrupt StatusN
0x8088_0038AC97IE2 Interrupt EnableN
0x8088_003CReserved
0x8088_0040AC97DR3 Data read or writt en from/to FIFO3 N
0x8088_0044AC97RXCR3 Control Register for receiveN
0x8088_0048AC97TXCR3 Control Register for transmitN
0x8088_004CAC97SR3Status Register N
0x8088_0050AC97RISR3Raw interrupt status Regist erN
0x8088_0054AC97ISR3 Interrupt Status N
0x8088_0058AC97IE3 Interrupt Enable N
0x8088_005CReserved
0x8088_0060AC97DR4 Data read or writt en 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 Regist er N
0x8088_0074AC97ISR4 Interrupt Status N
0x8088_0078AC97IE4 Interrupt Enable N
0x8088_007CReserved
0x8088_0080AC97S1DataData received/transmitted on SLOT1N
0x8088_0084AC97S2Data Data received/transm itted on SLOT2N
0x8088_0088AC97S12Data Data received/trans mitted on SLOT12 N
0x8088_008CAC97RGIS Raw Global interrupt status Register N
0x8088_0090AC97GIS Global interrupt status Registe r N
0x8088_0094AC97IM Interrupt mask Register N
0x8088_0098AC97EOI End Of Interrupt RegisterN
0x8088_009CAC97GCR Main Control R egister N
0x8088_00A0AC97Reset RESET control Register N
0x8088_00A4AC97SYNC SYNC control Register N
0x8088_00A8AC97GCIS Global channel FIFO interrupt status Register N
SW
Lock
2
0x808A_xxxx
0x808A _0000SSP1CR0SPI1 Contr ol Register 0N
0x808A _0004SSP1CR1SPI1 Contr ol Register 1N
0x808A_0008SSP1DRSPI1 Dat a RegisterN
0x808A_000CSSP1SRSPI1 Status RegisterN
0x808A_0010SSP1CPSRSPI1 Clock Prescale RegisterN
0x808A_0014SSP1IIRSPI1 Interrupt/Interrupt C lear RegisterN
EP9312 User’s Manual - DS515UM261
Copyright 2004 Cirrus Logi c
SPISPI Control Registers
IrDAIrDA Control Registers
ARM920T Core and Advanced High-Speed Bus (AHB)
T able 2-7: Internal Register Map (Continued)
2
AddressRegister NameRegister Description
0x808B_0004IrCtrlIrDA Control RegisterN
0x808B _0008IrAdrMatchValIrDA Address Match Value RegisterN
0x808B_000CI rFlagIrDA Flag RegisterN
0x808B _0010IrDataIrDA Transmit and Receive FIFOsN
0x808B _0014IrDataTailIrDA Data Tail RegisterN
0x808B _0018 - 0x808B_00 1CReserved
0x808B_0020IrRIBIrDA Receive Information BufferN
0x808B_0024IrTR0IrDA Test Register, Received byte countN
0x808B_0088MIIRIrDA MIR Inter rupt RegisterN
0x808B_008C - 0x808B_018CReserved
0x808C_xxxx
0x808C_0000UART1DataUART1 Data RegisterN
0x808C_0004UART1 RXStsUAR T1 Receive Status RegisterN
0x808C_0008UART1LinCtrlHighUART1 Line Control Register - High Byt eN
0x808C_000CUART1LinCtrlMidUART1 Line Control Register - Middle ByteN
0x808C_0010UART1LinCtr lLowUART1 Line Control Register - Low ByteN
0x808C_0014UART1CtrlUART1 Control RegisterN
0x808C_0018UART1FlagUART1 Flag RegisterN
0x808C_001CUART1IntIDInt Cl rUART1 Interrupt ID and Inte rrupt Clear Regi sterN
0x808C_0020Reserved
0x808C_0028UART1DMACtrlUART1 DMA Control RegisterN
0x808C_0100UART1ModemCtrlUART1 Modem Contr ol RegisterN
0x808C_0104UART1ModemStsUART1 Modem Status RegisterN
0x808C_0114 - 0x808C_0208Reserved
0x808C_020CUART1HDLCCtrlUART1 HDLC Control RegisterN
0x808C_0210UART1HDLCAddMtchValUART1 HDLC Address Match ValueN
0x808C_0214U ART1HDLCAddMaskUART1 HDLC Address MaskN
0x808C_0218U ART1HDLCRXInfoBufUART1 HDLC Receive Information BufferN
0x808C_021CUART1HDLCStsUART1 HDLC Status RegisterN
UART1UART1 Control Registers
SW
Lock
0x808D_xxxx
0x808D_0000UART2DataUART2 Data RegisterN
0x808D_0004UART2 RXStsUAR T2 Receive Status RegisterN
0x808D_0008UART2LinCtrlHighUART2 Line Control Register - High Byt eN
0x808D_000CUART2LinCtrlMidUART2 Line Control Register - Middle ByteN
0x808D_0010UART2LinCtr lLowUART2 Line Control Register - Low ByteN
0x808D_0014UART2CtrlUART2 Control RegisterN
0x808D_0018UART2FlagUART2 Flag RegisterN
0x808D_001CUART2IntIDInt Cl rUART2 Interrupt ID and Inte rrupt Clear Regi sterN
0x808D_0020UART2IrLowPwrCntrUART2 IrDA Low-power Counter RegisterN
0x808D_0028UART2DMACtrlUART2 DMA Control RegisterN
UART2UART2 Control Registers
62EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
T able 2-7: Internal Register Map (Continued)
ARM920T Core and Advanced High-Speed Bus (AHB)
OO
AddressRegister NameRegister Description
0x808E_xxxx
0x808E_0000UART3DataUART3 Data RegisterN
0x808E_0004UART3RXStsUART3 Receive Status Regi sterN
0x808E _0008UART3LinCtrlHighUART3 Line Control Register - High By teN
0x808E _000CUART3LinCtr lMidUART3 Line Contr ol Regist er - Middle ByteN
0x808E _0010UART3LinCtrlLowUART3 Line C ontrol Register - Low ByteN
0x808E_0014UART3CtrlUART3 Control RegisterN
0x808E_0018UART3FlagUART3 Flag RegisterN
0x808E _001CUART3IntIDIntClrUART3 Interrupt ID and Interrup t C lear RegisterN
0x808E_0020UART3IrLowPwrCntrUART3 IrDA Low-power Counter RegisterN
0x808E_0028UART3DMACtrlUART3 DMA Control RegisterN
0x808E_0100UART3ModemCtrlUART3 Modem Contr ol RegisterN
0x808E_0104UART3ModemStsUART3 Modem Status RegisterN
0x808E_0108UART3ModemTstC trlUART3 Modem Support Test Control Reg isterN
0x808E_0114 - 0x808E_0208Reserved
0x808E_020CUA RT3HDLCCtrlUART3 HDLC Control RegisterN
0x808E_0210UART3HDLCAddMtchValUART3 HDLC Address Match ValueN
0x808E_0214UART3HDLCAddMaskUART3 HDLC Address MaskN
0x808E_0218UART3HDLCRXInfoBufUART3 HDLC Receive Information BufferN
0x808E_021CUA RT3HDLCStsUART3 HDLC Status RegisterN
UART3UART3 Control Registers
SW
Lock
2
0x808F_xxxx
0x808F_0000KeyScanInitKey Matrix Scan Initialize N
0x808F_0004KeyDiagnosticKey Matrix DiagnosticN
0x808F _0008KeyRegisterKey Mat rix Key Register N
0x8090_0004TSXYMaxMinTouchscreen X/Y Max Min RegisterN
0x8090_0008TSXYResultTouchscreen X/Y Result RegisterN
0x8090_000CTSDisch argeTouchscreen Switch Matrix Dis c harge Control RegisterY
0x8090_0010TSXSampleTouchscreen Switch Matrix X-Sample Control RegisterY
0x8090_0014TSYSampleTouchscreen Switch Matrix Y-Sample Control RegisterY
0x8090_0018TSDirectTouchscreen Sw itch Matrix Direct Control RegisterY
0x8090_001CTSDetectTouchscreen Direct Contr ol Touch Detect RegisterN
0x8090_0020TSSWLockTouchscreen Softwar e Lock RegisterN
0x8090_0024TSSetup2Touchscree n Setup Register 2N
EP9312 User’s Manual - DS515UM265
Copyright 2004 Cirrus Logi c
2
ARM920T Core and Advanced High-Speed Bus (AHB)
This page intentionally blank.
66EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
3.1 Introduction
The MaverickCrunch coprocessor accelerates IEEE-754 floating point
arithmetic and 32-bit and 64-bit fi xed point arithmetic op erations. It provide s
an integer multiply-accumulate (MAC) that is considerably faster than the
native MAC implementation in the ARM920T. The MaverickCrunch
coprocessor significantly accelerates the arithmetic processing required to
encode/decode digital audio formats.
The Maveri ckCrunch coproc essor uses the standa rd ARM920T copr ocessor
interface, sharing its memory interface and instruction stream. All
MaverickCrunch operations are simply ARM920T coprocessor instructions.
The copr ocessor hand les all internal int er-instruction d ependencies by using
internal data forwarding and inserting wait states.
PP
Chapter 3
3MaverickCru nch Co proces sor
3
3.1.1 Features
Key fea t ures include:
•IEEE-754 single an d double prec is ion floating point
• 32/64-bit integer
• Add/multiply/compare
•Integer Multiply-Ac c um ulate (MAC ) 32-bit inpu t wi th 72-bit accumulate
•Integer S hifts
• Floating point to/from integer conversion
• Sixteen 64-bit registers
•Four 72-bit ac c umulators
3.1.2 Operational Overview
The MaverickCrunch coprocessor is a true ARM920T coprocessor. It
communicates with the ARM920T via the coprocessor 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 copro c es s or supports four primary data formats:
EP9312 User’s Manual - DS515UM267
Copyright 2004 Cirrus Logi c
MaverickCrunch Coprocessor
•IEEE-754 single prec ision floatin g point (24-b it signed sig nificand and 8 -
• IEEE-754 double precision floating point (53-bit signed significand and
bit biased ex ponent)
11-bit bias ed exponen t )
3
• 32-bit inte ger
• 64-bit inte ger
The coprocessor performs the following standard operations on all four
supporte d data formats:
•addition
•subtraction
•multiplication
• absolute value
• negation
•logical left/right shift
•comparison
In addition, for 32-bit integers, the coprocessor provides:
• multiply-accumulate (MAC)
• multiply-subtract (MSB)
Any of the four data fo rmats may b e conver ted to anot her of the f ormats. All
four data types may be loaded directly from and stored directly to memory via
the ARM920T coprocessor interface. They may also be moved to or from
ARM920T registers.
The MaverickCrunch coprocessor also provides a 72-bit extended precision
integer f ormat that is used only in the accum ulators. The accumulato rs may
also be use d in MAC and M SB operat ions.
IEEE-754 rounding and except ions are also provided. Four round ing modes
for floating point ope rat ions are:
• round to nearest
•round tow ard
•round tow ard -∞
•round tow ard 0
Exceptions include:
•Invalid op erator
•Overflow
68EP9312 User’s Manual - DS515UM2
+∞
Copyright 2004 Cirrus Logic
•Underflow
•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 tw o prim ary pipe line s wit hin t he M ave rickC runc h c opr ocess or. One
handles all c omm uni cation with the ARM 920 T, while the othe r, the “data path”
pipeline , handles all a rithmetic operation s (this one actually op erates at one
half the MaverickCrunch coprocessor clock frequency).
The data path pipeline may run synchro nously or asynchrono us ly w it h res pect
to the ARM instructio n pipe line. If run asynch ronousl y, data path com putation
is decoupled from the ARM, allowing high throughput, though arithmetic
exceptions are not synchronous. If run synchronously, exceptions are
synchronous, but throughput s uffers.
MaverickCrunch Coprocessor
PP
3
Assuming no inter-instruction dependencies causing pipeline stalls, arithmetic
instructions can produce a new result every two A RM920T clocks which is a
maximum throughput of one data path instruction per eight ARM920T clocks.
The only exc ept ion is 64 -bit mul tiplie s (CFM UL D or CF MUL6 4) , which require
six extra ARM920T clocks to produce their result, which is maximum
throughput of eight ARM920T clocks per instruction.
The normal latency for an arithmetic instruction is approximately nine
ARM920T clocks, from initial decode to the time the result is written to the
register file. A 64-bit m ult iply requires 15 c locks.
3.1.4 Data Registers
The MaverickCrunch coprocessor contains the following registers:
•16 64-bit general purpose regist ers, c0 through c15
• 4 72-bit accumulators, a0 through a 3
• 1 status and control register, DSPSC
A single pre cis ion f loati ng poi nt v alue is store d in the u pper 3 2 b its of a 6 4-bit
register and must be explicitly promoted to double precision to be used in
double pr ec is ion calculat ions:
63625532 310
Sign ExponentSignificand
EP9312 User’s Manual - DS515UM269
Copyright 2004 Cirrus Logi c
not used
MaverickCrunch Coprocessor
A double p rec is ion value re quires all 64 bits:
636252 510
Sign ExponentSignificand
3
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:
6332 31300
Sign ExtensionSignData
Hence, 32-bit integers may be used directly in calculations with 64-bit
integers , which are sto red as show n:
63620
Sign Data
3.1.5 Integer Saturation Arithmetic
By default, the coprocessor treats all 32-bit and 64-bit integers as signed
values and auto mat ical ly sa tura tes the res ults o f m ost integ er ope ratio ns a nd
all conversions from floating-point to integer format. Instructions that may
saturate their results are:
• CFADD32 and CFADD64
•CFSUB32 and CFSU B64
• CFMUL32 and CFMUL64
• CFMAC32 and CFMSC32
• CFCVTS32 and CFCVTD32
• CFTRUNCS 32 and CFTRUNCD32
This beha v ior, howev er, can be alt ered by set ti ng 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
detection and saturation as well as compare operations. Setting the UI bit
causes th e MaverickCrun ch coprocesso r to treat all 32-bit and 64 -bit integer
operations as unsigned with respect to overflow, underflow, saturation, and
comparison.
With saturation enabled (the default), the maximum representable value is
returned on overflow and the minimum representable value is returned on
70EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
underflow. The maxim um a nd min imum value s dep ends o n the operand size
and whet her the UI bit in th e D SPSC is se t, as shown in Table 3-1.
T able 3-1: Saturation for Non-accum ulator Instructi ons
Signed
Overflow
Unsigned
Signed
Underflow
Unsigned
To disable saturation on overflow and underflow, set the ISAT bit in the
DSPSC.
Normally, arithme tic instruc tions that write to a n accumu lator do n ot satura te
their resu lts on overflow or underflow. These in structions a re:
However, the SAT[1:0] bits in the DSPSC may be set to select one of several
kinds of sa tu ration to occur on the re su lts of t hes e instructions before they are
written to an accumulator.
Note: This action does not affect the operation of instructions that do not write their
result to an accumul ator.
Enabling saturation also modifies the representation of data stored in the
accumulator. The three supported bit formats and their maximum and
minimum s at uration values are shown in Table 3-2 on page 71.
Table 3-2: Accumulator Bit Formats fo r Satur a tion
Bit FormatMaximum Value (hex)Minimum Value (hex)
2.6264 bits - 0x3F F F FFFF FFFF FF FF64 bits - 0xC000 00 00 000 0 0000
The bit form at x.yy represents x bi nary bits before the deci mal point and yy
fraction bits after decimal point, as for example, when the bit format 2.62 has
two bin ary bits and si xty-two fractio n bits. Th ough these f ormats utilize e ither
32- or 64-bit integers , the accum ulators are 72 bits wide. If the acc umulator
saturation mode is disabled (the default), the accumulator bit fields are
assigne d as below for a 2’s com plement int eger.
71700
SignData
EP9312 User’s Manual - DS515UM271
Copyright 2004 Cirrus Logi c
MaverickCrunch Coprocessor
If the saturation mode 1.63 is selected, the bit field assignments are:
7164 63620
Sign Extension SignData
3
If the saturation mode 1.31 is selected, the bit field assignments are:
7164 636232 310
Sign Extension SignDataUnused
If the saturation mode 2.62 is selected, the bit field assignments are:
7163 62610
Sign ExtensionSignData
3.1.6 Comparisons
The Crun ch c oprocesso r provides fo ur c om pare operat ions:
•CFCMP 32 - 32-bit integer
•CFCMP 64 - 64-bit integer
•CFCMP S - s ingle floating point
• CFCMPD - double floating point
The DSP SC re gister bit UINT a ffects the operat ion of i nteger comparis ons. If
clear, integers are treated as signed values, and if set, they are treated as
unsigned. DSPSC .UI N T has no effect on fl oat ing point c om parisons.
All compar e operatio ns update b oth the FC C[1:0] bits in the DSP SC registe r
and an ARM register. Though any of the ARM general purpose registers r0
through r14 may be specified as the destination, specifying r15 actually
updates th e C PSR flag bits N Z C V. This permits the co ndition code field of any
subsequent ARM instruction to gate the execution of that instruction based on
the result of a C runch com pare operatio n.
Table 3 -3 on page 73 illustrat es the leg al rela tionships and, for ea ch one , the
values written to the FCC bits and the NZCV flags. The FCC bits and the
NZCV f lags provide the same in f or m ation, but i n different ways and in different
places. T heir values depe nd only on the re lationship bet ween the operan ds,
regardle ss of whet her the ope rands are considered signed int eger, unsigned
integer, or floating p oint. The unordered relat ionship can only apply to floating
point operands.
72EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
T able 3-3: Comparison Relationships and Their Results
AB=
AB
AB
AB=
AB
AB
AB
AB
A B
MaverickCrunch Coprocessor
RelationshipFCC[1:0]NCZV
000100
PP
The NZC V flags are not com puted ex actly as with in teger com parison s using
the ARM CMP instruction. Hence, when examining the result of Crunch
comparisons, the condition codes field of ARM instructions should be
interpreted differently, as shown in Table 3-4 on page 73. The same six
condition codes should be used whether the comparison operands were
signed integers, unsigned integers, or floating point . N o other c ondition c odes
are meaningful.
T able 3-4: ARM Condition Codes and Crunch Compare Results
Condition Code
Opcode[31:28] Mnemonic
0000EQEqualEqual
0001NENot Equ alNot Equal
1010GESigned Greater Than or Equal Greater Than or Equal
1011LTSigned Less ThanLess Than
RelationshipARM MeaningCrunch Meaning
≠
≥
<
<
>
Unordered110000
011000
101001
3
1100GTSigned Greater ThanGreater Than
1101LESigned Less Than or EqualLess Than or Equal
The examples below show two algorithms, each implemented using the
standard programming languages and the MaverickCrunch instruction set.
3.2.1 Example 1
Sections 3.2. 1.2 , 3.2 .1.3 , an d 3. 2.1 .4, s how thr ee c oding sa m ples perf orm ing
the same operation. S ection 3.2.1. 1 on page 74 shows commo n setup code
used by all three samples. Section 3.2.1.2 on page 74 shows the program
implemented in C code. Section 3.2.1.3 on page 74 uses ARM assembly
language, accessing the MaverickCru nch with ARM coprocessor instructions.
EP9312 User’s Manual - DS515UM273
Copyright 2004 Cirrus Logi c
3
MaverickCrunch Coprocessor
Section 3.2.1.4 on page 74 uses MaverickCrunch assembly language
instructions.
3.2.1.1 Setup Code
ldr r0, =80930000 ; Syscon base address
mov r1, #0xaa ; SW lock key
str r1, [r0, #0xc0] ; unlock by writing key to SysSW Lock register
ldr r1, [r0, #0x80] ; Turn on CPENA bit in DEVCFG register to
orr r1, r1, #0x00800000 ; enable MaverickCrunch coprocessor
str r1, [r0, #0x80] ;
3.2.1.2 C Code
int num = 0;
for(num=0; num < 10; num++)
num = num * 5;
3.2.1.3 Accessing MaverickCrunch with ARM Coprocessor Instructions
ldc p5, c0, [r0, #0 x0] ; data section preloaded with 0x0 (“num”)
ldc p5, c1, [r0, #0 x4] ; data section preloaded with 0xa
ldc p5, c2, [r0, #0 x8] ; data section preloaded with 0x1
ldc p5, c3, [r0, #0 xc] ; data section preloaded with 0x5
loop
cdp p5, 1, c0, c0, c3, 0 ; c0 <= c0 * 5
cdp p5, 3, c0, c0, c2, 6 ; c0 <= c0 - 1
mrc p5, 0, r15 c0, c1, 4 ; c0 < 10 ?
blt loop ; yes
stc p5, c0, [r0, #0x0] ; no, store result
3.2.1.4 MaverickCrunch Assembly Language Instructions
cfldr32 c0, [r0, #0x0] ; data section pr eloaded with 0x0 (“num”)
cfldr32 c1, [r0, #0x4] ; data section pr eloaded with 0xa
cfldr32 c2, [r0, #0x8] ; data section pr eloaded with 0x1
cfldr32 c3, [r0, #0xc] ; data section preloaded with 0x5
loop
cfmul32 c0, c0, c3 ; c0 <= c0 * 5
cfsub32 c0, c0, c2 ; c0 <= c0 - 1
cfcmp32 r15, c0, c1 ; c0 < 10 ?
blt loop ; yes
cfstr32 c0, [r0, #0x0] ; no, store result
3.2.2 Example 2
The followin g function perform s an FIR filter on the give n input stream. The
variable “data” points to an array of floating point values to be filtered, “n” is the
number of samples for which the filter should be applied, “filter” is the FIR filter
74EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
3.2.2.1 C Code
MaverickCrunch Coprocessor
to be applied , and “m” is the numb er of taps in the FIR filter. The “data” array
must be “n + m - 1” samples in length, and “n” sam ples will be produced .
void
Compute F IR ( float *data, int n, flo at *fi lte r, int m )
{
int i, j;
float sum;
for(i = 0; i < n; i++)
{
sum = 0;
for(j = 0; j < m; j++)
{
sum += data[i + j] * filter[j];
}
PP
3
data[i] = sum;
}
}
3.2.2.2 MaverickCrunch Assembly Language Instructions
ComputeFIR
mov r1, r1, lsl #2 ; n *= 4
mov r3, r3, lsl #2 ; m *= 4
outer_loop
mov r12, r3 ; j = m * 4
cfsub64 c0, c0, c0 ; int_sum = 0;
cfcvt32s c0, c0 ; sum = float(int_sum);
inner_loop
cfldrs c2, [r0], #4 ; c2 = *data++;
cfldrs c3, [r2], #4 ; c3 = *filter++;
cfmuls c1, c2, c3 ; c1 = c2 * c3;
cfadds c0, c0, c1 ; sum += c1;
subs r12, r12, #4 ; j -= 4;
bne inner_loop ; branch if j != 0
sub r0, r3 ; data -= m * 4;
cfstrs c0, [r0], #4 ; *data++ = sum;
sub r2, r3 ; filter -= m * 4;
subs r1, r1, #4 ; n -= 4;
bne outer_loop ; branch if n != 0
mov pc, lr ; return to caller
EP9312 User’s Manual - DS515UM275
Copyright 2004 Cirrus Logi c
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 w ritten only using a
read-modify-write sequence.
RSVD:Reserved. Unknown During Read.
INST: Exception Instruction. Whenever an unmasked exception
occurs, thes e 32 b its are loaded with the in struction that
caused the exception. Hence, this contains the instruction
that caus ed t he most recent unmas k ed exceptio n.
DAID: MaverickCrunch Architecture ID. This read-only value is
incremented for each revision of the overall
MaverickCrunch coprocessor architecture. These bits are
“000” for this revision.
HVID: H ardwa re Version ID. This re ad-on ly value is increme nted
each time the h ardware im plementati on of the architec t ure
named by DAID[2:0] is chan ged, typically don e in
response to bugs. These bits are “000” for this version.
76EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
MaverickCrunch Coprocessor
ISAT:Integer Saturate Enable. This bit controls whether non-
accumulator integer operations, both signed and
unsigned, will saturat e on overflow or underflow.
0 = Saturation enabled.
1 = Saturation disable d.
PP
UI:Unsigned Integer Enable. This bit controls whether non-
accumulator integer operations treat their operands as
signed or unsigned. It als o determines the saturation value
if the ISAT bit is clear.
0 = Signed int egers.
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 inter rupt signaled.
1 = Interrupt s ignaled.
AEXC:Asynchronous Exception Enable. This bit determines
whether exceptions generated by the coproces sor are
signaled synchronously or asynchronously to the
ARM920T. Synchronous exceptions force all data path
instruction s to be seri alized an d to stall the AR M920 T. If
exceptions are asynchron ous, they are s ignalled by
assertion of the DSPINT output of the coprocessor, which
may interrupt the ARM920T via the interrupt controller.
Enabling asynchronous exceptions does provide a
performance improvement, but m akes it difficult for an
interrupt handler to determine the coprocessor instruction
that caused the exception b ecause the address of the
instruction is not preserved. Exceptions may be
individually enabled by other bits in this register (IXE, UFE,
OFE, and IOE). This bit has no effect if no exceptions are
enabled.
0 = Exceptions are synchronous.
1 = Exceptions are asy nchrono us
3
SAT[1:0]:Accumulator saturation mode select. These bits are set to
select the saturation mode or to disable the saturation for
accumulator opera t ions.
0X = Satura t ion disabled fo r ac c umulator operation s
10 = Ac c umulator saturation e nabled, bit formats 1.63 a nd
1.31
11 = Accumulator saturation enabled, bit format 2.62
EP9312 User’s Manual - DS515UM277
Copyright 2004 Cirrus Logi c
MaverickCrunch Coprocessor
FCC[1:0] :FCC flags out of comparator.
00 = Operand A equals operand B.
01 = Operand A less than operand B.
10 = Operand A grea te r th an operand B.
11 = Operands are unordered (at least one is NaN).
3
V:Overflow Flag. Indicates the overflow status of the
previous integer operation.
0 = No over fl ow.
1 = Overfl ow.
FWDEN :Forward ing E nab le. This b it de term ines w heth er da ta path
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 instruction source operands on data
path results, setting this bit will improve instruction
throughput.
0 = Forwarding not enabled.
1 = Forwarding enabled.
Invalid:0 = No invalid o perations det ected
1 = An invalid operation was perform ed.
Denorm: 0 = No denormalized numbers have been supplied as
instructi on operands
1 = a denorm alized number has been supplied as an
instructi on operand.
for IEEE 75 4 inexact exc eptions.
0 = Disabl e s oftw are trappin g f or inexact exc eptions.
1 = Enable s oftw are trappin g f or inexact exc eptions.
trapping for IEEE 754 underflow exceptions.
0 = Disabl e s oftw are trappin g f or underflo w ex c ept ions.
1 = Enable s oftw are trappin g f or underflow exceptio ns .
OFE:Ove rflow Trap Enab le. Enab les/di sables software tra pping
for IEEE 75 4 overflow ex ce pt ions.
0 = Disabl e s oftw are trappin g f or overflow ex c ept ions.
1 = Enable s oftw are trappin g f or ov erflow e x ce pt ions.
trapping f or I EEE 754 inv alid operato r ex c eptions.
0 = Disable softw are trapping for invalid ope rator
exceptions.
1 = Enable software trapping for invalid operator
exceptions.
IX:Inexac t. Set when an IEEE 754 ine xact excep tion occ urs,
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 excep tio n detected .
1 = Inexact exception detected.
UF:Underflow. Set when an IEEE 754 underflow exception
occurs, regardless of whether or not software trapping for
underflow exceptions is enabled. Writing a “0” to this
position clears the status bit.
0 = No underflow exception detected.
1 = Underflow exceptio n detected.
PP
3
OF:Overflow. Set when an IEEE 754 overflow exception
occurs, regardless of whether or not software trapping for
overflow excep tions is enabled. Writing a “0” to this
position clears the status bit.
0 = No over fl ow ex c eption detected.
1 = Overflow exception detected.
IO:Invalid Operator. Set when an IEEE 754 invalid operator
exceptio n occur s, rega rdl ess o f w het her or not so ftware
trapping for in v alid operator e xceptions is ena bled. Writ ing
a “0” to this pos it ion clears t he s ta tu s bit .
0 = No invalid operator exceptio n detected .
1 = Inval id operator exc eption detec t ed.
3.4 ARM Coprocessor Instruction Format
The ARM V4T architecture defines five ARM coprocessor instructions:
• CDP - Coprocessor Data Processing
•LDC - Load C oprocesso r
• STC - Store Coprocessor
•MCR - Move to Coproc es s or Registe r fr om AR M Register
• MRC - Move to ARM Register from Coprocessor Register
The coprocessor instruction assembler notation is found in the ARM
programming manuals or the Quick Reference Card. (For additional
EP9312 User’s Manual - DS515UM279
Copyright 2004 Cirrus Logi c
MaverickCrunch Coprocessor
informatio n, see “Referen ce Do cuments”, item 4, o n page 5.) Formats for t he
above ins tr uc t ions and variants of these ins t ruc t ions are detailed below.
CDP (Coprocessor Data Processing) Instruction Form at
3128 2724 2320 1916 1512 118 75 4 30
3
cond1110opcode1CRnCRdcp numopcode20CRm
LDC (Load Coprocessor) Instruction Format
3128 2725 24 23 22 21 20 1916 1512 118 70
cond110P U N W 1RnCRdcp numoffset
STC (Store Coprocessor) Instruction Format
3128 2725 24 23 22 21 20 1916 1512 118 70
cond110P U N W 0RnCRdcp numoffset
MCR (Move to Coprocessor from ARM Register) Instruction Format
3128 2724 2321 20 1916 1512 118 75 4 30
cond1110opcode10CRnRdcp numopcode21CRm
MRC (Move to ARM Register from Coprocessor) Instruction Format
3128 2724 2321 20 1916 1512 118 75 4 30
cond1110opcode11CRnRdcp numopcode21CRm
80EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
Table 3-5 shows the condition codes, which are bits [31:28] for each
instruction format.
Table 3-5: Condition Code Definition s
MaverickCrunch Coprocessor
PP
Cond
[31:28]
0000EQEqualZ set
0001NENot EqualZ clear
0010CS/HSCarry Set/Unsigned Higher or SameC set
0011CC/LOCarry Clear/Unsigned LowerC clear
0100MIMinus/NegativeN set
0101PLPlus/Positive or ZeroN clear
0110VSOverflowV set
01 11VCNo 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 Th anN set and V clear, or N clear an d V set (N ! = V)
1 100GTSigned Greater ThanZ clear, and either N set and V set , or N clear and V clear (Z = 0, N = V)
1 101LESigned Less Than or EqualZ set, or N set and V clear, or N clear and V set (Z = 1, N ! = V)
1 110ALAlways (un conditional)-
Mnemonic
Extension
1111NVNever-
MeaningStat us Flag State
3
The rema ining bits in the in s tr uc t ion formats are interpreted as follow s :
•opcode1: Maveric k C runch coproc essor-def ined opco de.
•opcode2: Maveric k C runch coproc essor-def ined opco de.
•Rn: Specifies an ARM bas e address re gister. These bits ar e ignored b y
the Maveric k C runch coprocesso r.
•Rd: Specifies a source or destination ARM register.
•cp_num: Coproces s or number.
•P: Pre-indexing (P=1) or post-indexing (P=0) addressing. This bit is
ignored by the MaverickCrunch coprocessor.
•U: Specifies whether the supplied 8-bit offset is added to a base register
EP9312 User’s Manual - DS515UM281
Copyright 2004 Cirrus Logi c
3
MaverickCrunch Coprocessor
(U=1) or subtra ct ed fr om a b ase reg is ter ( U=0). Th is bit i s ign ore d by the
MaverickCrunch coprocessor.
•N: Specifies the width of a data type involved in a mo ve operation. The
Maverick Crunch coproces sor uses this bit to dist inguish between s ingle
precision floating point/32-bit integer numbers (N=0) and double precision
floating point/64-bit integer numbers (N=1).
•W: Specifies whether or not a calculated address is written back to a base
register (W=1) or not (W= 0). This bit is ign ored by the Ma verickCrunch
coprocessor.
•offset: An 8-bit word offs et us ed in addres s ca lc ulations. These bits are
ignored by the MaverickCrunch coprocessor.
Table 3-6, below, and Table 3-7, Table 3 -8, and Table 3-9 o n page 83, d efine
the bit values for opcode2, opcode1, and cp_num for all of the
MaverickCrunch instructions.
EP9312 User’s Manual - DS515UM283
Copyright 2004 Cirrus Logi c
3
MaverickCrunch Coprocessor
3.5 Instruction Set for the MaverickCr unch Coprocessor
Table 3-10 summarizes the MaverickCrunch coprocessor instruction set.
Plea s e note that:
•CRd, CRn, and CRm each refer to any 16 general purpose
MaverickCrunch registers unless otherwise specifie d
• CRa refers to any of the MaverickCr unch accumulators
• Rd and Rn re fe r t o any of the ARM 920T gen eral purpos e registers
• <imm> refers to a seven-bit immediate value
The remainder of this section describes in detail each of the individual
MaverickCrunch instructions. The fields in the opcode for each
Maverick Crunch instru ction are show n. Whe n spec ific bit values a re re quired
for the instru ction, they are shown a s either '1' or '0'. Any field who se value
may vary, such as a register index, is named as in the ARM programming
manuals, and its fu nc tion descri be d below.
Fields tha t are ig nored by the coproc essor a re sha ded. D ark sha ding i mplies
that a field is p roce ssed by the A RM itself and ca n ha ve an y value , whi le light
shading indicates that the field, though ignored by both the ARM and the
coproce s so r, should have the valu e s hown.
T able 3-10: MaverickCrunch Instruction Set .
Maverick
Crunch
Coprocessor
Instruction
Type
LoadsLDC
StoresSTC
Move s t o
coprocessor
ARM
Coprocessor
Instruction
Type
MCR
InstructionDescription
cfldrs C Rd, [Rn]Load CRd with single stored at address in Rn
cfldrd C Rd, [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 CR d, [Rn]Store single in C Rd 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 ]Sto re 64 - bi t int eger in CRd at ad dr e ss in R n
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]
Load CRd with 32-bit integer stored at address in Rn, sign extend th rough
bit 63
Move low er half of 64-bit integer from Rd to CRn[31:0], sign extend bit 31
through bits [63 :31]
84EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
T able 3-10: MaverickCrunch Instruction Set (Continued).
MaverickCrunch Coprocessor
PP
Maverick
Crunch
Coprocessor
Instruction
Type
Moves from
coprocessor
Moves to
accumulator
Moves fr om
accumulator
Move to
DSPSC
Move from
DSPSC
ARM
Coprocessor
Instruction
Type
MRC
CDP
CDP
CDP
InstructionDescription
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 dou ble 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 f rom CRn [31:0] to accumulator CRd[63:32]
cfmvah32 CRd, CRn
cfmva32 CRd, CRn
cfmva64 CRd, CRn
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
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 accu m ulator CRd[31:0] and sig n
extend through b it 71
Move 64-bit in teg e r from CRn to acc um ulat or CR d[6 3: 0] and si gn extend
through bit 71
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
3
EP9312 User’s Manual - DS515UM285
Copyright 2004 Cirrus Logi c
MaverickCrunch Coprocessor
T able 3-10: MaverickCrunch Instruction Set (Continued).
3
Maverick
Crunch
Coprocessor
Instruction
Type
Conversions
and copies
Shifts
ComparisonsMRC
Floa ting point
arithmetic,
single precision
ARM
Coprocessor
Instruction
Type
CDP
MCR
CDP
CDP
InstructionDescription
cfcpys CRd, CRnCopy a single from CRn to CRd
cfcpyd CRd, CRnCopy a double from CRn to CRd
cfcvtsd C Rd, CRnConvert a single in CRn to a double in CRd
cfcvtds C Rd, 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 C Rd, CRnConvert a 32-bit integer i n CRn to a double in CRd
cfcvt64s CRd, CRnConvert a 64-bit integer in CRn to a single in CRd
cfcvt64d C Rd, CRnConvert a 64-bit integer i n 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-bi t 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 an d store in
cfrshl64 CRm, CRn, RdShift 64-bit integer in CRn by two’s complement value in Rd an d store in
cfsh32 CRd, CRn,
<imm>
cfsh64 CRd, CRn,
<imm>
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 get s absolute value of CRn
cfnegs CRd, CRnCRd gets negation of CRn
cfadds CRd, CRn,
CRm
cfsubs CRd, CRn,
CRm
cfmuls CRd, CRn,
CRm
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
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
86EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
T able 3-10: MaverickCrunch Instruction Set (Continued).
MaverickCrunch Coprocessor
PP
Maverick
Crunch
Coprocessor
Instruction
Type
Floa ting point
arithmetic,
double
precision
32-b it integer
arithmetic
64-b it integer
arithmetic
Accumulator
arithmetic
ARM
Coprocessor
Instruction
Type
CDP
CDP
CDP
CDP
InstructionDescription
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 absolu te 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
cfabs64 CRd, CRnCRd gets absolu te 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
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 pr oduct of CRn and CRm
CRd gets CRd minus the prod uct of CRn and 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
Accumul ator CRa gets acc um ulator CRd minus the product of CRn and
CRm
3
EP9312 User’s Manual - DS515UM287
Copyright 2004 Cirrus Logi c
MaverickCrunch Coprocessor
3.5.1 Load and Store Instructions
Loading Floating Point V alue from Memory
31:2827:25242322212019:1615:1211:87:0
cond1 1 0PUNW1 RnCRd0 1 0 08_bit_word_offset
3
Description:
Loads a single or double precision floating point value from memory into
MaverickCrunch register.
N: I nt eger width - 0 for 32-bit integer, 1 for 64-bit integer
Rn: Base register in ARM
CRd: Source register.
EP9312 User’s Manual - DS515UM291
Copyright 2004 Cirrus Logi c
MaverickCrunch Coprocessor
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
3
Description:
Moves a single precision floating point number from an ARM register into the
upper hal f o f a MaverickCrunch reg is te r.
Mnemonic:
CFMVSR<cond> CRn, Rd
Bit Definitions:
Rd: Source ARM regis t er
CRn: Destination register
Move Single Precision Floating Point from Maverick Crunch to ARM
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 001CRnRd0 1 0 00 1 01CRm
Description:
Moves a sing le precision floating point numbe r from the upper h alf of a
MaverickCrunch register to an ARM registe r.
Mnemonic:
CFM VRS<co n d> 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 in to th e lower half of a M av erickCru nc h register.
Mnemonic:
CFM VDLR<cond> CRn, Rd
Bit Definitions:
CRn: Destination register
Rd: Source ARM regis t er
92EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
MaverickCrunch Coprocessor
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
Maverick C runch regist er into an ARM register.
Mnemonic:
CFM VRDL<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
PP
3
Description:
Moves the upper half of a double precision floating point value from an ARM
register in to th e upper half of a M av erickCrun c h register.
Mnemonic:
CFMVDHR<cond> CRn, Rd
Bit Definitions:
CRn: Destination register
Rd: Source ARM regis t er
Move Upper Half Double Precision Float from Maverick Crunch to ARM
31:2827:2423:22212019:1615:1211:87:543:0
cond1 1 1 00 001CRnRd0 1 0 00 0 11CRm
Description:
Moves th e upper half of a double precis ion floa ting po int value s tored in a
Maverick C runch regist er into an ARM register.
Mnemonic:
CFMVRDH<cond> Rd, CRn
Bit Definitions:
Rd: Destination ARM register
CRn: Source register
EP9312 User’s Manual - DS515UM293
Copyright 2004 Cirrus Logi c
3
MaverickCrunch Coprocessor
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 Mav erickCrun c h register and s ign extend it .
Mnemonic:
CFMV64LR<cond> CRn, Rd
Bit Definitions:
CRn: Destination register
Rd: Source ARM regis t er
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 regis ter.
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 regis t er
94EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
MaverickCrunch Coprocessor
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 regis ter.
Mnemonic:
CFMVR64H<cond> Rd, CRn
Bit Definitions:
Rd: Destination ARM register
CRn: Source register
PP
3
EP9312 User’s Manual - DS515UM295
Copyright 2004 Cirrus Logi c
MaverickCrunch Coprocessor
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
3
Description:
Moves th e low 32 b its of a Mav eric k C runch re gis t er to the lowest 32 bits of an
accumulator (31:0).
Mnemonic:
CFMVAL32<cond> CRd, CRn
Bit Definitions:
CRd: Destination accumulator
CRn: Source register
Move Low er Accum u la to r to M averickC run ch 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
Move MaverickCrunch Register t o 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 th e low 32 bits of a M av erickCru nc h registe r to th e m iddle 32 bits of an
accumulator (63:32).
Mnemonic:
CFMVA M32<cond> CRd, CRn
Bit Definitions:
CRd: Destination accumulator
CRn: Source register
96EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
MaverickCrunch Coprocessor
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 th e middle 32 bits of an accum ulator (6 3:32) to t he 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
PP
3
Description:
Moves the lowest 8 bits (7:0) of a MaverickCrunch register to the highest 8 bits
of an accumulator (71:64).
Mnemonic:
CFMVA H32<cond> CRd, CRn
Bit Definitions:
CRd: Destination accumulator
CRn: Source register
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:6 4) to the low est 8 b its of a
Maverick C runch regist er (7:0).
Mnemonic:
CFMV32AH<cond> CRd, CRn
Bit Definitions:
CRd: Destination register
CRn: Source accumulator
EP9312 User’s Manual - DS515UM297
Copyright 2004 Cirrus Logi c
3
MaverickCrunch Coprocessor
Move 32- b it Integer from A ccumula to r
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 00 1CRnCRd0 1 0 01 0 10CRm
Description:
Saturate s and rounds an accum ulator value t o 32 bits and moves the result to
the low 32 b its of a M av erickCrun c h 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:
CFMVA 32<cond> CRd, CRn
Bit Definitions:
CRd: Destination accumulator
CRn: Source register
Move 64- b it Integer from A ccumula to r
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 00 1CRnCRd0 1 0 01 1 00CRm
Description:
Saturate s and rounds an accum ulator value t o 64 bits and moves the result to
a Maverick C runch regi s te r.
Mnemonic:
CFMV64A<cond> CRd, CRn
Bit Definitions:
CRd: Destination register
CRn: Source accumulator
98EP9312 User’s Manual - DS515UM2
Copyright 2004 Cirrus Logic
MaverickCrunch Coprocessor
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:
CFMVA 64<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
PP
3
Description:
Moves a 64-bit val ue from a MaverickCr unch re gister to the MaverickCr unch
Status/Control register, DSPSC. All DSPSC bits are writable. CRn is ignored.
Mnemonic:
CFMVSC32<cond> CRd, CRn
Bit Definitions:
CRd: Source register
Move from Control/Status Register to MaverickCrunch Register
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 00 1CRnCRd0 1 0 01 1 10CRm
Description:
Moves a 64-bit value from the MaverickCrunch Status/Control register,
DSPSC, to a MaverickCrunch register. CRn is ignored.
Mnemonic:
CFMV32SC<cond> CRd, CRn
Bit Definitions:
CRd: Destination register
EP9312 User’s Manual - DS515UM299
Copyright 2004 Cirrus Logi c
MaverickCrunch Coprocessor
3.5.4 Copy and Conversion Instructions
Copy Single Precision Floating Point
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 00 0CRnCRd0 1 0 00 0 00CRm
3
Description:
Copies a single precision floating point value from one register to another.
Mnemonic:
CFCPYS<cond> CRd, CRn
Bit Definitions:
CRd: Destination register
CRn: Source register
Copy Double Precision Floating Point
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 00 0CRnCRd0 1 0 00 0 10CRm
Description:
Copies a d ouble preci si on f loating poi nt value from one register to another.
Mnemonic:
CFCPYD<cond> CRd, CRn
Bit Definitions:
CRd: Destination register
CRn: Source register
Convert Single Precision Floating Point to Double Precision Floating Point
31:2827:2423:2221:2019:1615:1211:87:543:0
cond1 1 1 00 00 0CRnCRd0 1 0 00 1 10CRm
Description:
Converts a single precision floating point value to a double precision floating
point valu e.
Mnemonic:
CFCVTSD<cond> CRd, CRn
Bit Definitions
CRd: Destination register
CRn: Source register
100EP9312 User’s Manual - DS515UM2
Copyright 2004 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.