Updated ChipID, SysCfg and DeviceCfg register information.
Added ExtensionID register 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 i ts subsidiaries (“Ci rrus”) beli eve that the informati on contai ned in this document is accurate and reli able. However, the information is
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 ti me of order acknowledgment, including those pertaini ng to warranty, patent infringement, and limitation of li ability. No responsibility i s assumed by Cirrus for the use of this information, incl uding use of this informati on as the basis for manufacture or sale of any items, or for i nfringement of patents or other rights of third parties. This document is the property of Cirrus and by furnishing this information, Cirrus grants no license, express
or implied under any patents, mask work rights , copyrights, trademarks, trade secret s or other int ellectual pr operty right s. Cirrus owns the copyrights associated
with the informati on contained herein and gives consent for copies to be made of the information only for use within your organi zation with respect to Cirrus
integrated circui ts or other products of Cirrus. This consent does not extend to other copying such as copying for general distribution, adverti sing or promotional
purposes, or for creating any work for resale.
CERTAIN APPLICATIONS USI NG SEMI CONDUCTOR PRODUCTS MAY INVOLVE POTENTIAL RISKS OF DEATH, PERSONAL INJURY, OR SEVERE
PROPERTY OR ENVIRONMENTAL DAMAGE (“CRITICAL APPLICATIONS”). CIRRUS PRODUCTS ARE NOT DESIGNED, AUTHORIZED OR WARRANTED FOR USE IN AIRCRAFT SYSTEMS, MILITARY APPLICATIONS, PRODUCTS SURGICALLY IMPLANTED INTO THE BODY, LIFE SUPPORT PRODUCTS OR OTHER CRITICAL APPLICATIONS ( INCLUDING MEDICAL DEVICES, AIRCRAFT SYSTEMS OR COMPONENTS AND PERSONAL OR
AUTOMOTIVE SAFETY OR SECURITY DEVICES). I NCLUSION OF CIRRUS PRODUCTS IN SUCH APPLICATIONS IS UNDERSTOOD TO BE FULLY AT
THE CUSTOMER’ S RISK AND CIRRUS DISCLAIMS AND MAKES NO WARRANTY, EXPRESS, STATUTORY OR IMPLIED, I NCLUDI NG THE I MPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR PARTICULAR PURPOSE, WITH REGARD TO ANY CIRRUS PRODUCT THAT IS USED IN
SUCH A MANNER. IF THE CUSTOMER OR CUSTOMER’S CUSTOMER USES OR PERMITS THE USE OF CIRRUS PRODUCTS IN CRITICAL APPLICATIONS, CUSTOMER AGREES, BY SUCH USE, TO FULLY INDEMNIFY CIRRUS, ITS OFFICERS, DIRECTORS, EMPLOYEES, DISTRIBUTORS AND OTHER AGENTS FROM ANY AND ALL LIABILITY, INCLUDING ATTORNEYS’ FEES AND COSTS, THAT MAY RESULT FROM OR ARISE IN CONNECTION
WITH THESE USES.
Cirrus Logi c, Cirrus, MaverickKey, and the Cirrus Logic logo de signs are trademarks of Cirrus Logic, I nc. All other brand and product names in thi s document
may be trademarks or service marks of their respective owners.
Microsoft and Windows are registered trademarks of Microsoft Corporation.
Microwire is a trademark of National Semiconductor Corp. National Semiconductor is a registered trad emark of National Semiconductor Corp.
Texas Instruments is a registered trademark of Texas Instruments, Inc.
Motorola is a registered trademark of Motorola, Inc.
LINUX is a registered trademark of Linus Torval ds.
2EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
About the EP9301 User’s Guide
This Guide describes the architecture, hardware and operation of the Cirrus
Logic EP9301. It is intended to be used in conjunction with the EP9301
Datasheet, which contains the full electrical specifications for the device.
How to Use this Guide
Subject MatterLocation
AC’97Chapter 18 - AC’97 Controller
ARM920T Processor
Boot ROM, Hardware and SoftwareChapter 3 - Boot ROM
Booting From SROM or SyncFlashChapter 10 - SDRAM, SyncROM, and SyncFLASH Controller
Buses - AMBA, AHB, APB
DMA ControllerChapter 7 - DMA Controller
EP9301 Block Diagram
EthernetChapter 6 - 1/10/100 Mbps Ethernet LAN Controller
GPIOChapter 21 - GPIO Interface
HDLCChapter 11 - UART1 With HDLC and Modem Control Signals
Chapter 11 - UART1 With HDLC and Modem Control Signals
Chapter 12 - UART2
Related Documents from Cirrus Logic
1.EP9301 Datasheet, document number - DS636PP1
Reference Documents
1.ARM920T Technical Reference Manual
2.AMBA Specification (Rev. 2.0), ARM IHI 0011A, ARM Limited.
3.AHB Example AMBA System (Addendum 01), ARM DDI 0170A, ARM
Limited.
4.The coprocessor instruction assembler notation can be referenced from
ARM programming manuals or the Quick Reference Card, document
number ARM QRC 0001D.
5.The MAC engine is compliant with the requirements of ISO/IEC 8802-3
(1993), Sections 3 and 4.
6.OpenHCI - Open Host Controller interface Specification for USB, Release
1.0a; Compaq, Microsoft, National Semiconductor.
7.ARM Coprocessor Quick Reference Card, document number ARM QRC
0001D.
4EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
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.0a, Released - 09/14/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 document uses the following conventions:
• Internal and external Signal Names, and Pin Names use mixed upper and
lower case alphanumeric, and are shown in bold font: RDLED.
• Register Bit Fields are named using upper and lower case alphanumeric:
that is, SBOOT, LCSn1.
• 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-47, some
memory locations are listed as Reserved. These memory
locations should not be used. Reading from these memory
locations will yield invalid data. Writing to these memory locations
may cause unpredictable results.
(An example register description is shown below. This description is used for
the following examples.)
A specific bit may be specified in one of two ways:
The EP9301 is a highly integrated system-on-chip processor that paves the
way for a multitude of next-generation consumer and industrial electronic
products. Designers of digital media servers and jukeboxes, telematic control
systems, thin clients, set-top boxes, point-of-sale terminals, industrial controls,
biometric security systems, and GPS devices will benefit from the EP9301’s
integrated architecture and advanced features. In fact, with amazingly agile
performance provided by a 166 MHz ARM920T processor, and featuring an
incredibly wide breadth of peripheral interfaces, the EP9301 is well suited to
an even broader range of high volume applications. Furthermore, by enabling
or disabling the EP9301’s peripheral interfaces, designers can reduce
development costs and accelerate time-to-market by creating a single platform
that can be easily modified to deliver a variety of differentiated end products.
Figure 1-1. EP9301 Block Diagram
Chapter 1
1Introduction
1
Vectored
Interrupt
Controllers (2)
Boot ROM
SDRAM
SRAM/
FLASH/ROM
12 Channel DMA
Engine
1/10/100 Ethernet
MAC
JTAG
USB Host, 2 Ports
1.2 EP9301 Features
The EP9301 system-on-chip processor has the following features:
•16 KByte data cache and 16 KByte instruction cache
•MMU enabling Linux
•66 MHz system bus
™
•MaverickKey
•32-bit unique ID
•128-bit random ID
Integrated Peripheral Interfaces
•1/10/100 Mbps Ethernet MAC
•Two-port USB 2.0 Full Speed host (OHCI)
•Two UARTs (16550 Type)
•IrDA interface, slow and fast mode
•Analog-to-Digital Converter (ADC)
•Serial Peripheral Interface (SPI) port
•AC ‘97 interface
IDs for Digital Rights Management or Design IP Security
®
and Windows® CE
•I2S interface, up to 2 channels
•External Memory Options
•16-bit SDRAM interface, up to four banks
•16/8-bit SRAM/Flash/ROM interface (I/F)
•Serial EEPROM interface
Internal Peripherals
•Real-Time clock with software trim
•12 DMA channels for data transfer that maximizes system
performance
•Boot ROM
•Dual PLLs control all clock domains
•Watchdog timer
•Two general purpose 16-bit timers
•General purpose 32-bit timer
•40-bit debug timer
•General-Purpose I/Os
•16 enhanced GPIOs including interrupt capability
24EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
Introduction
NN
•31 additional optional GPIOs multiplexed on peripherals
•Available in 208-pin LQFP package
1.3 EP9301 Applications
The EP9301 can be used in a variety of applications, such as:
•Digital media servers
•Integrated home media gateways
•Digital audio jukeboxes
•Portable audio/video players
•Streaming audio/video players
•Telematic control systems
•Set-top boxes
•Point-of-sale terminals
•Thin clients
•Internet TVs
•Biometric security systems
1
•Industrial controls
•GPS & fleet management systems
•Educational toys
•Voting machines
•Medical equipment
1.4 Overview of EP9301 Features
1.4.1 High-Performance ARM920T Processor Core
The EP9301 features an advanced ARM920T processor design with an MMU
that supports Linux®, Windows® CE, and many other embedded operating
systems. The ARM920T’s 32-bit microcontroller architecture, with a five-stage
pipeline, delivers impressive performance at very low power. The included 16
KByte instruction cache and 16 KByte data cache provide zero-cycle latency
to the current program and data, or can be locked to provide guaranteed 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 MaverickKey™ Unique ID Secures Digital Content and OEM
Designs
MaverickKey unique hardware programmed IDs provide an excellent 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, traditional software methods are quickly becoming unreliable. The
MaverickKey unique IDs provide OEMs with a method of utilizing specific
hardware IDs for DRM (Digital Rights Management) mechanisms.
MaverickKey uses a specific 32-bit ID and a 128-bit random ID that are
programmed into the EP9301 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 EP9301 is powering, and then deliver the
copyrighted information over a secure connection. In addition, secure
transactions can benefit by matching device IDs to server IDs.
MaverickKey IDs can also be used by OEMs and design houses to protect
against design piracy by presetting ranges for unique IDs. For more
information on securing your design using MaverickKey, please contact your
Cirrus Logic sales representative.
1.4.3 Integrated Two-port USB 2.0 Full Speed Host with Transceivers
The EP9301 integrates two USB 2.0 Full Speed host ports. Fully compliant 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 devices, external portable devices such as audio players or cameras,
printers, or USB hubs. Naturally, the two-port USB host also supports the USB
2.0 Low Speed standard. This provides the opportunity to create a wide array
of flexible system configurations.
1.4.4 Integrated Ethernet MAC Reduces BOM Costs
The EP9301 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 EP9301-based system has easy, high-performance, cost-effective Internet
capability.
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-upgradable systems. See Chapter 3 on
page 59, for additional details.
26EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
Introduction
NN
1.4.6 Abundant General Purpose I/Os Build Flexible Systems
The EP9301 includes both enhanced and standard general-purpose I/O pins
(GPIOs). The 16 different enhanced GPIOs may individually be configured as
inputs, outputs, or interrupt-enabled inputs. There are an additional 31
standard GPIOs that may individually be used as inputs, outputs, or opendrain pins. The standard GPIOs are multiplexed with peripheral function pins,
so the number available depends on the utilization of peripherals. Together,
the enhanced and standard GPIOs facilitate easy system design with external
peripherals not integrated on the EP9301.
1.4.7 General-Purpose Memory Interface (SDRAM, SRAM, ROM and
FLASH)
The EP9301 features a unified memory address model in which all memory
devices are accessed over a common address/data bus. Memory accesses
are performed via the high-speed processor bus. The SRAM memory
controller supports 8 and 16-bit devices and accommodates an internal boot
ROM concurrently with a 16-bit SDRAM memory.
The EP9301 includes a 12-bit ADC, which can be used for general ADC
functionality. The interface performs all sampling, averaging, ADC range
checking, and control for a wide variety of applications. To improve system
performance, the converter only interrupts the processor when a meaningful
change occurs.
This section discusses the ARM920T processor core and the Advanced HighSpeed Bus (AHB).
2.2 Overview: ARM920T Processor Core
The ARM920T is a Harvard architecture processor core with separate
16 kbyte instruction and data caches with an 8-word line length used in the
EP9301. The processor core utilizes a five-stage pipeline consisting of fetch,
decode, execute, data memory access, and write stages.
2.2.1 Features
Key features include:
•ARM V4T (32-bit) and Thumb (16-bit compressed) instruction sets
•32-bit Advanced Micro-Controller Bus Architecture (AMBA)
2
•16 kbyte Instruction 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
The ARM920T core follows a Harvard architecture and consists of an
ARM9TDMI core, MMU, instruction and data cache. The core supports both
the 32-bit ARM and 16-bit Thumb instruction sets.
The internal bus structure (AMBA) includes both an internal high 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 and GPIOs.
The MMU provides memory address translation for all memory and
peripherals designed to remap memory devices and peripheral address
locations. Sections, large, small and tiny pages are programmable to map
memory in 1 Mbyte, 64 kbyte, 4 kbyte, 1 kbyte size blocks. To increase system
30EP9301 User’s Manual - DS636UM2
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 also has lock-down capability. Cached instructions and data also have
access to a 16-word data and 4-word instruction write buffer to allow cached
instructions to be fetched and decoded while the write buffer sends the
information to the external bus.
The ARM920T core supports a number of coprocessors 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 Write
All instructions are fully interlocked. This mechanism will delay the execution
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.
2
For memory access instructions, the base register used for the access will be
restored by the processor in the event of an Abort exception. The base
register will be restored to the value contained in the processor register before
execution of the instruction.
The ARM9TDMI core memory interface includes a separate instruction and
data interface to allow concurrent access of instructions and data to reduce
the number of CPI (cycles per instruction). Both interfaces use pipeline
addressing. The core can operate in big and little endian mode. Endianess
affects both the address and the data interfaces.
The memory interface executes four types of memory transfers: sequential,
non-sequential, internal, and coprocessor. It will also support uni- and bidirectional transfer modes.
The core provides a debug interface called JTAG (Joint Testing Action Group).
This interface provides debug capability with five external control signals:
There are six scan chains (0 through 5) in the ARM9TDMI controlled by the
JTAG Test Access Port (TAP) controller. Details on the individual scan chain
function and bit order can be found in the ARM920T Technical Reference
Manual.
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 the MMU are as follows:
•Address Translation
•Access Permissions and Domains
•MMU Cache and Write Buffer Access
2.2.3.2.1 Address Translation
The virtual address from the ARM920T 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 looks for the physical address
from the Translation Table Base (TTB) in system memory. It will also update
the TLB cache.
The TLB is two 64-entry caches, one for data and one for instruction. If the
physical address for the current virtual 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 size blocks called sections, large pages, small pages, and tiny pages.
System memory and registers can be remapped by the MMU. The block sizes
are as follows:
•Section - 1 Mbyte
•Large Page - 64 kbyte
32EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
•Small Page - 16 kbyte
•Tiny Page - 1 kbyte
ARM920T Core and Advanced High-Speed Bus (AHB)
OO
2.2.3.2.2 Access Permission and Domains
Access to any section or page of memory is dependent on its domain. The
page table in external memory also contains access permissions for all subdivisions of external memory. Access to specific instructions or data has three
possible states, assuming access is permitted:
•
Client
: Access permissions based on the section or page table descriptor
•
•
2.2.3.2.3 MMU Enable
Enabling the MMU allows for system memory control, but is also required 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 CP15 register 1. The procedure is as follows:
1. Program the Translation Table Base (TTB) and domain access control
2. Create level 1 and level 2 pages for the system and enable the cache and
Manager
descriptor
No access
registers.
the write buffer.
: Ignore access permissions in the section or page table
: any attempted access generates a domain fault
2
3. Enable MMU - 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 line with 1 valid bit and 2 dirty bits per line for allowing halfline write-backs.
•Write-through and write-back capable, selectable per memory region
defined by the MMU.
•Pseudo random or round robin replacement algorithms for cache misses.
This is determined by the RR bit (bit 14 in CP15 register 1). An 8-word line
is reloaded on a cache miss.
•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
addresses stored for data cache entries are stored in the PA TAG RAM to
be used for cache line write-back operations without need of the MMU,
which prevents a possible TLB miss that would degrade performance.
2
•Write Buffer is a 4-word instruction x 16-word data buffer. If enabled,
writes are sent to buffer directly from cache or from the CPU in the event
of a cache miss or cache not enabled.
2.2.3.3.1 Instruction Cache Enable
•At reset, the cache is disabled.
•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, all accesses are treated as cacheable.
•If disabled, current contents are ignored. If re-enabled before a reset,
contents will be unchanged but may not be coherent 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 checks.
•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
required before re-enabling.
2.2.3.3.3 Write Buffer Enable
•The Write bugger is enabled by the page table entries in the MMU. The
Write buffer is not enabled unless MMU is enabled.
2.2.4 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
backbone bus. AHB supports the efficient connection of processors, on-chip
memories and off-chip external memory interfaces with low-power peripheral
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 AMBA AHB System.
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:
•Burst Transactions
34EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
•Split Transactions
•Bus Master hand-over to devices, that is, DSP or DMA controller
OO
•Single clock edge operations
APB (Advanced Peripheral Bus) is a lower bandwidth lower power bus which
provides the following:
Peripherals that have high bandwidth or latency requirements are connected
to the EP9301 processor using the AHB bus. These include the external
memory interface, Vectored Interrupt Controllers (VIC1, VIC2), DMA, USB
host, Ethernet MAC and the bridge to the APB interface. The AHB/APB Bridge
transparently converts the AHB access into the slower speed APB accesses.
All of the control registers for the APB peripherals are programmed using the
AHB/APB bridge interface. The main AHB data and address lines are
configured using a multiplexed bus. This removes the need for three state
buffers and bus holders and simplifies bus arbitration. Figure 2-3 shows the
main data paths in the EP9301 AHB implementation.
Figure 2-3. EP9301 Main Data Paths
AHB
AHB/APB Bridge
SDRAM
Controller
E
B
I
Static
Memory
Controller
Ethernet
USB
Host
Boot ROM
VIC2
VIC1
ARM920T
DMA
UARTs
Timers
RTC
Watchdog
Test
Support
APB
GPIOs
SPI
I2S
IrDA
PLL1PLL2
Clock & State
Control
AC97
Before an AMBA-to-AHB transfer can commence, the bus master must be
granted access to the bus. This process is started by the master asserting a
request signal to the arbiter. Then the arbiter indicates when the master will be
granted use of the bus. A granted bus master starts an AMBA-to-AHB transfer
by driving the address and control signals. These signals provide information
on the address, direction and width of the transfer, as well as indicating
whether the transfer forms part of a burst.
36EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
Two different forms of burst transfers are allowed:
•Incrementing bursts, which do not wrap at address boundaries
OO
•Wrapping bursts, which wrap at particular address boundaries.
A write data bus is used to move data from the master to a slave, while a read
data bus is used to move data from a slave to the master. Every transfer
consists of:
•An address and control cycle
•One or more cycles for the data.
In normal operation a master is allowed to complete all the transfers in a
particular burst before the arbiter grants another master access to the bus.
However, in order to avoid excessive arbitration latencies, it is possible for the
arbiter to break up a burst, and, in such cases, the master must re-arbitrate for
the bus in order to complete the remaining transfers in the burst.
2.2.6 Memory and Bus Access Errors
There are several possible sources of access errors.
•Reads to reserved or undefined register memory addresses will return
indeterminate data. Writes to reserved or undefined memory addresses
are generally ignored, but this behavior is not guaranteed. Many register
addresses are not fully decoded, so aliasing may occur. Addresses and
memory ranges listed as Reserved should not be accessed; access
behavior to these regions is not defined.
2
•Access to non-existent registers or memory may result in a bus error.
•Any access in the APB control register space will complete normally, as
these devices have no means of signaling an error.
•Access to non-existent AHB/APB registers may result in a bus error,
depending on the device and nature of the error. Device specific access
rules are defined in the device descriptions.
•External memory access is controlled by the Static Memory Controller
(SMC) and the Synchronous Dynamic RAM (SDRAM) controller. In
general, access to non-existent external memory will complete normally,
with reads returning random false data.
2.2.7 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 the highest priority master requesting the bus.
The arbitration scheme can be broken down into three main areas:
•The main AHB system bus arbiter
2
•The SDRAM slave interface arbiter
•The EBI bus arbiter
2.2.7.1 Main AHB Bus Arbiter
This arbiter controls the bus master arbitration for the AHB bus. The AHB bus
has several Master interfaces. These are:
•ARM920T
•DMA controller
•USB host (USB1, 2)
•Ethernet MAC
These interfaces have an order of priority that is linked closely with the power
saving modes. The power saving modes of Halt and Standby force the arbiter
to grant the default bus master, in this case, the ARM920T.
In summary, the order of priority of the bus masters, from highest to lowest, is
shown in Table 2-1.
Table 2-1: AHB Arbiter Priority Scheme
Priority Number
1MACMACDMADMA
2USBUSBUSBMAC
3DMAARM920T MACUSB
4ARM920TDMAARM920TARM920T
PRIOR 00
(Reset value)
PRIOR 01PRIOR 10PRIOR 11
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 masters: DMA, USB Host or Ethernet MAC, if an
interrupt (IRQ or FIQ) is pending or being serviced. This prevents one of these
masters from blocking important interrupt service routines. These masters are
prevented from accessing the bus, and their bus requests are masked, until
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
not
does
degrant any of these masters.
In normal operation, when the ARM920T is granted the bus and a request to
enter Halt mode is received, the ARM920T is de-granted from the AHB bus.
Any other master requesting the bus in Halt mode (according 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
38EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
ARM920T Core and Advanced High-Speed Bus (AHB)
way, all the masters except the ARM920T can be used during Halt mode, but
are shutdown during an entry into Standby.
OO
2.2.7.2 EBI Bus Arbiter
This arbiter is used to arbitrate between accesses from the SDRAM controller
and the Static Memory controller. The priority is given to accesses 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
appropriate signal is generated. It is defined in Table 2-2.
(For additional information, see “Reference Documents”, on Page 4.)
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 other signals required for the transfer, such as
the address and control information, are generated by the bus master.
2.3.2 AHB to APB Bridge
The AHB to APB bridge is an AHB slave, providing an interface between the
high-speed AHB and the low-power APB. Read and write transfers on the
AHB are converted into equivalent transfers on the APB. As the APB is not
pipelined. Wait states are added during transfers to and from the APB when
the AHB is required to wait for the APB.
The main sections of this module are:
•AHB slave bus interface
•APB transfer state machine, which is independent of the device memory
map
•APB output signal generation.
40EP9301 User’s Manual - DS636UM2
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.
The APB memory map is shown in Table 2-3.
Table 2-3: APB Peripheral Address Range
OO
2
Address Range
0x8095_0000 - 0x9000_FFFF--Reserved
0x8094_0000 - 0x8094_FFFF16APBWatchdog Timer
0x8093_0000 - 0x8093_FFFF32APBSyscon
0x8092_0000 - 0x8092_FFFF32APBReal time clock
0x8091_0000 - 0x8091_FFFF--Reserved
0x8090_0000 - 0x8090_FFFF--Reserved
0x808F_0000 - 0x808F_FFFF--Reserved
0x808E_0000 - 0x808E_FFFF--Reserved
0x808D_0000 - 0x808D_FFFF8APBUART2
0x808C_0000 - 0x808C_FFFF32APBUART1
0x808B_0000 - 0x808B_FFFF32APBIrDA
0x808A_0000 - 0x808A_FFFF16APBSPI
0x8089_0000 - 0x8089_FFFF--Reserved
0x8088_0000 - 0x8088_FFFF32APBAAC
0x8087_0000 - 0x8087_FFFF--Reserved
0x8086_0000 - 0x8086_FFFF--Reserved
0x8085_0000 - 0x8085_FFFF--Reserved
0x8084_0000 - 0x8084_FFFF16APBGPIO
0x8083_0000 - 0x8083_FFFF32APBSecurity
0x8082_0000 - 0x8082_FFFF32APBI2S
0x8081_0000 - 0x8081_FFFF32APBTimers
0x8080_0000 - 0x8080_FFFF--Reserved
0x8010_0000 - 0x807F_FFFF--Reserved
Register
Width
Peripheral
Type
Peripheral
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 other signals required for the transfer, such as
the address and control information, are generated by the APB bridge.
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 executed out of User mode.
User: Unprivileged normal operating mode
FIQ:Fast interrupt (high priority) mode when FIQ is asserted
IRQ:Interrupt request (normal) mode when IRQ is asserted
Supervisor:Software interrupt instruction (SWI) or reset will cause entry
into this mode
Abort:Memory access violation will cause entry into this mode
Undef:Undefined instructions
System:Privileged mode. Uses same registers 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.
42EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
Table 2-4: Register Organization Summary
UserSystemSupervisorAbortUndefinedIRQFIQ
r0r0r0r0r0r0r0
r1r1r1r1r1r1r1
r2r2r2r2r2r2r2
r3r3r3r3r3r3r3
r4r4r4r4r4r4r4
r5r5r5r5r5r5r5
r6r6r6r6r6r6r6
r7r7r7r7r7r7r7
r8r8r8r8r8r8
r9r9r9r9r9r9
r10r10r10r10r10r10
r11r11r11r11r11r11
r12r12r12r12r12r12
r13(sp)r13
r14(lr)r14
r15(pc)pcpcpcpcpcpc
ARM920T Core and Advanced High-Speed Bus (AHB)
Privileged Modes
Exception Modes
r8_fiq
r9_fiq
r10_fiq
r11_fiq
r12_fiq
r13_svcr13_abtr13_undr13_irqr13_fiq
r14_svcr14_abtr14_undr14_irqr14_fiq
OO
2
Thumb
state low
registers
Thumb
state high
registers
cpsrcpsrcpsrcpsrcpsrcpsrcpsr
spsr_svcspsr_abtspsr_undspsr_irqspsr_fiq
Note: Colored areas represent banked registers.
User mode in Thumb state generally limits access to r0-r7. There are six
instructions that allow access to the high registers. For these 6 exceptions, the
processor must revert to ARM state. These exceptions are:
• r0-r12: General purpose read/write 32-bit registers
• r13 (sp): Stack Pointer
• r14 (lr): Link Register
• r15 (pc): Program Counter
• cpsr: Current Program Status Register (contains condition codes and
operating modes)
• spsr: Saved Program Status Register (saves CPSR when exception
The ARM920T core has 16 coprocessor registers for control over the core.
Updates to the coprocessor registers are written using the CP15 instruction.
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/Write) Use this register to enable MMU, instruction and data
cache, round robin replacement ‘RR’-bit, system protection, ROM protection, clocking
mode. Read/Write Instructions:
MRC p15, 0, Rd, c1, c0, 0 - Read control register - value stored in Rd
MCR p15, 0, Rd, c1, c0, 0 - Write control register - value first loaded into Rd
Translation Base Table: (Read/Write) This register contains the start address of the first
level translation table. Upper18 bits represent the pointer to table base. Lower 14 bits
2
3
4
5
6
7
8
should be 0 for a write, unpr edictable if read.
MRC p15, 0, Rd, c2, c0, 0 - Read TTB
MCR p15, 0, Rd, c2, c0, 0 - Write TTB
Domain Access Control: (Read/Write) This register specifies permissions for all 16
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 0x0000_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
locations should not be used. Reading from these memory locations 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
32 MB are translated by this register to A + FCSE*32MB and remapped. If turned off,
straight address map to the MMU results.
Test Register Only: Reads or writes will cause unpredictable behavior.
2
Table 2-6: Global Memory Map for the Two Boot Modes
Table 2-6: Global Memory Map for the Two Boot Modes (Continued)
Address RangeSync Memory BootAsync Memory Boot
2
0x0000_0000 - 0x0000_FFFF
Note: The shaded areas are the memory areas dedicated to system registers. Details
of these registers are in Table 2-7.
2.3.6 Internal Register Map
Registers are set to their default state by the RSTOn pin and by the PRSTn pin
inputs. Some state conserving registers are reset only by the PRSTn pin.All
registers are read/write unless specified otherwise.
2.3.6.1 Memory Access Rules
Any memory address not specifically assigned to a register should be
avoided. Reads to register memory addresses labelled Reserved, Unused or
Undefined will return indeterminate data. Writes to register memory addresses
labelled Reserved, Unused or Undefined are generally ignored, but this
behavior is not guaranteed. Many register addresses are not fully decoded, so
aliasing may occur. Addresses and memory ranges listed as Reserved
(RSVD) should not be accessed; access behavior to these regions is not
defined.
ASD0 Pin = 1ASD0 Pin = 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 the register from being written unless a proper unlock operation is
performed immediately prior to writing the target register. Any register 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 not accessible. Software should mask the RSVD bits when doing bit
reads. RSVD bits will ignore writes, that is writing a zero or a one 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 read and write register bits identified as NC. Register bits identified as
NC are functionally alive but have an undocumented or a “don’t care”
operating function. The register description will provide information on how to
handle NC bits.
Unless specified otherwise, all registers can be accessed as a byte, half-word,
or word.
46EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
CAUTION: Some memory locations are listed as Reserved. These memory
locations should not be used. Reading from these memory locations will yield
invalid data. Writing to these memory locations may cause unpredictable
results.
The Boot ROM allows a program or OS to boot from the following devices:
•SPI EEPROM
•FLASH/SyncFLASH or SROM
•Serial port
3.1.1 Boot ROM Hardware Operational Overview
PP
Chapter 3
3Boot ROM
3
The Boot ROM is an AHB slave device containing a 16 kbyte maskprogrammed ROM. The AHB slave always operates with one wait state, so all
data reads from the ROM use 2 HCLK cycles.
The ROM contains 3 code sections. The lower 8 kbytes contain the system
boot code. The next 4 kbytes contain the first secure code block, and the top
4 kbytes contain the second secure code block. In non-secure boot, the lower
8 kbytes are accessible. In secure boot, one of the two secure code blocks is
accessible. See Chapter 22, “Security,” for details.
On system reset, the ARM920T begins executing code at address zero. The
system follows the Hardware Configuration controls to select the boot device
that appears at address zero. If Internal Boot is selected, the Boot ROM is
mapped to address zero and the ARM920T will execute the Boot ROM code.
3.1.1.1 Memory Map
The Boot ROM base address (ROM base) is fixed in the EP9301 at
0x8009_0000. It will alias on 16 kbyte intervals. When internal boot is active,
the Boot ROM is double decoded and appears at its normal address space
and at address zero. (The Boot ROM writes the BootModeClr in order to remap
address 0x0 to be external memory while the Boot ROM code continues execution at
0x8009_0000.
)
3.1.2 Boot ROM Software Operational Overview
The Boot ROM is a 16 kbyte mask-programmed ROM that controls the source
of the first off-chip code executed by the EP9301. The code within the Boot
ROM supports the following sources for the EP9301 initialization program:
•UART1: Code is downloaded through UART1 into an on chip buffer and
executed.
•SPI Serial ROM: Code is copied from an SPI Serial ROM into an on-chip
buffer and executed.
3
•FLASH: Code present in FLASH memory is executed directly.
Note that the code retrieved via UART1 and the SPI Serial ROM is not
intended to be a complete operating system image. It is intended to be a small
(up to 2 kbyte) loader that will, in turn, retrieve a complete operating system
image. This small loader can retrieve this complete image through UART1 or
the SPI Serial ROM (just as the Boot ROM did) or it can be more sophisticated
and retrieve it through the IrDA, USB, or Ethernet interfaces.
The Boot ROM code disables the ARM920T’s MMU, so any loader program
that is downloaded sees physical addresses. The loader is free to initialize the
page tables and start the MMU and caches if needed.
The Boot ROM code also does not enable interrupts or timers, so that the
system delivered to the user is in a known safe state and is ready for an
operating system or for user code to be loaded.
3.1.2.1 Image Header
One of ASCII strings, “CRUS” or “SURC” must be present as a HeaderID
prefixed to an executable image. This HeaderID must be present in images
copied from the SPI serial ROM and from images programmed into FLASH.
3.1.2.2 Boot Algorithm
Following are the steps in the software boot process:
1.Remap memory.
2.Turn the green LED off and the red LED on.
3.Disable the watchdog.
4.Read the Boot State
5.Set up the Clocks to run from external clocks
6.Based on the Boot State memory width, do the following:
A. initialize the SDRAM and FLASH memory interfaces for slow
(maximum compatibility) operation.
B. Initialize SRAM interfaces for slow operation as well.
C. Perform minimal memory tests.
7.Based on the contents of the SysCfg register, start serial download.
A. Initialize UART1 to 9600 baud, 8 bits, no parity, 1 stop bit.
60EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
Boot ROM
B. Output a “<” character.
C. Read 2048 (decimal count) characters from UART1 and store these
in the internal Boot buffer (alias for the Ethernet Mac buffer)
D. Output a “>” to signify 2048 characters have been read.
PP
E. Turn on Green LED
F. Jump to the start of the internal Boot Buffer.
8.If it is not Serial Download, attempt to read from SPI serial ROM, and then
do the following:
A. Check if the first 4 bytes from the serial ROM are equal to “CRUS” or
to “SURC” in ASCII, verifying the HeaderID.
B. Read the next 2048 (decimal count) bytes into the Internal Boot
Buffer.
C. Turn on Green LED
D. Jump to the start of the Internal Boot Buffer.
9.Attempt to read the “CRUS” or “SURC” in ASCII in FLASH memory at
(FLASH Base + 0x0000), verifying the HeaderID. This is read in for each
FLASH Chip select, then do the following:
A. Turn on Green LED
B. Jump to the start of FLASH memory plus four bytes.
10. Attempt to read the “CRUS” or “SURC” in ASCII in FLASH memory at
(FLASH Base + 0x1000), verifying the HeaderID. This is read in for each
FLASH Chip select, and then do the following:
3
A. Turn on Green LED
B. Jump to the start of FLASH memory.
11. Attempt to read the “CRUS” or “SURC” HeaderID in ASCII in memory at
0xC000_0000 and 0xF000_0000, verifying the HeaderID. This is read in
for SDRAM or SyncFLASH boot.
A. Turn on Green LED
B. Jump to memory location 0xC000_0004 or 0xF000_0004.
12. Attempt to read the “CRUS” or “SURC” HeaderID in ASCII in memory at
0xC000_1000 and 0xF000_1000, verifying the HeaderID. This is read in
for SDRAM or SyncFLASH boot.
A. Turn on Green LED
B. Jump to memory location 0xC000_0000 or 0xF000_0000 .
External boot from Sync memory space selected by
DevCfg3 through the SDRAM Controller. The media
type must be either SROM or SyncFLASH. The
selection of the SRAM width is determined by latched
CSn[7:6] value:
16-bit SFLASH
16-bit SROM
External boot from Async memory space selected by
nCS0 through Synchronous Memory Controller. The
selection of the SRAM width is determined by latched
CSn[7:6] value:
8-bit SRAM
16-bit SRAM
Internal boot from on-chip R OM. The selection of the
ROM width is determined by latched
16-bit
16-bit
CSn[7:6] value:
PP
3
11 0 00
3.2.1 UART Boot
Make sure that the test pins are configured for internal boot mode. EEDAT
and LBOOT0 should be pulled high and LBOOT1 should be pulled low as
shown in Table 4-1 on page 69. UART 1 is configured at 9600 bps, 8-bits, No
Parity, No flow control. The code performs the following steps:
1.A single “<“ is output by UART 1.
2.The “CRUS” or “SURC” signature is read.
3.2048 characters are received by UART 1 and copied to the Ethernet
4.The processor will jump to 0x8001_4000. The processor will be in ARM
3.2.2 SPI Boot
To boot from an SPI memory device, make sure that the test pins are
configured for internal boot mode. EEDAT should be pulled high and LBOOT1
and LBOOT0 should be pulled low as shown in Table 4-1 on page 69.
0 0
0 1
buffer at address 0x8001_4000.
SVC mode when the jump occurs.
Internal boot from on-chip R OM. The selection of the
ROM width is determined by latched
8-bit
16-bit
To boot from FLASH, put the “CRUS” or “SURC” signature at the first location
in the SPI memory. The code will be copied from the SPI memory to the
Ethernet buffer at address 0x8001_1000 with a length of 2048 bytes. Code
execution will start at 0x8001_4000 (Mac base + 0x4000). Processor will be in
ARM SVC mode. At this point the user can use the code in the MAC RAM to
load the rest of the SPI memory data.
3.2.3 FLASH Boot
To enable FLASH boot, make sure that the pins are configured for normal boot
mode, as shown in Table 3-1. Also make sure that the FLASH word size is
correct as shown in Table 3-1.
To boot from FLASH, put the “CRUS” or “SURC” HeaderID at one of the
following locations (this location will be referred to as FLASH base + 0x0):
Code execution will start at address (FLASH base + 0x4). Processor will be in
ARM SVC mode.
Alternatively, to boot from FLASH put the “CRUS” or “SURC” HeaderID at one
of the following locations (this location will be referred to as FLASH base +
0x1000):
Code execution will start at address (FLASH base + 0x0). The processor will
be in ARM SVC mode.
3.2.4 SDRAM or SyncFLASH Boot
To enable SDRAM or SyncFLASH boot, make sure that the pins are
configured for normal boot mode, as shown in Table 3-1. If booting with
SyncFLASH, make sure the SDRAM or SyncFLASH word size is correct, as
shown in Table 3-1. If booting with a 16-bit SDRAM device, follow the
suggested software sequence of commands, as shown in Figure 3-2.
64EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
Figure 3-2. Flow chart of Boot Sequence for 16-bit SDRAM Devices
Boot Internally with Asynchronous Device
Re-configure SDRAM for 16-bit access
Branch to desired SDRAM memory
To boot from SDRAM or SyncFLASH, put the “CRUS” or “SURC” HeaderID at
one of the following locations (this is Base + 0x0):
0xC000_0000
0xF000_0000
Code execution will start at address (Base + 0x4). Processor will be in ARM
SVC mode.
Alternatively, to boot from SDRAM or SyncFLASH, put the “CRUS” or “SURC”
HeaderID at one of the following locations (this is Base + 0x1000):
Boot ROM
PP
3
0xC000_1000
0xF000_1000
Code execution will start at address (Base + 0x0). The processor will be in
ARM SVC mode.
3.2.5 Synchronous Memory Operation
If running from Synchronous memory, before issuing a software reset, perform
the following procedure:
1.Run from SDRAM.
2.Perform a software reset (because of the SWRST bit in DEVCFG).
The System Controller (Syscon) provides the EP9301 central clock and
control resources. These central resources are:
•Clock control
•Power management
•System configuration management.
These resources are controlled by a set of software-locked registers which
can be used to prevent accidental accesses. Syscon generates the various
bus and peripheral clocks as well as controls the system startup configuration.
4.1.1 System Startup
System startup begins with the assertion of a reset signal. There are five
different categories of reset events in the device. In order of decreasing effect,
the reset events are:
•PRSTn (external pin for power-on reset)
•RSTOn (external pin for user reset)
•Three-key reset (externally generated, behaves like user reset)
4
•Watchdog reset (internally generated)
•Software reset (internally generated)
During the time that any reset is active, the system is halted until it exits the
reset state.
When the device starts with an external PRSTn or RSTOn, certain hardware
configurations are determined, and some system configuration information will
be recorded so that software can access it. See the details in “System Reset”
on page 67 and “Hardware Configuration Control” on page 68.
4.1.2 System Reset
The device system reset consists of several events and signals. It has four
levels of reset control. They are:
•Power-on-reset, controlled by PRSTn pin. It resets the entire chip with no
exceptions.
•User reset, controlled by RSTOn pin. While active, it resets the entire
chip, except certain system variables such as RTC, SDRAM refresh
control/global configuration, and the registers in the Syscon.
Note: If PLLs are enabled, user reset does NOT disable or reset the PLLs. They retain
their frequency settings.
4
•Three-key reset. When F2, F4, and F7 are pressed, a user reset (above)
occurs.
•Software reset and watchdog reset. They perform the functions of the
user reset (above), but are under software control.
Watchdog and PwrSts registers contain the information regarding which reset
event occurred. Note that only the Watchdog timer contains information about
a user-generated 3-key reset.
4.1.3 Hardware Configuration Control
The Hardware Configuration controls provide a mechanism to place the
system into various boot configurations. In addition, one of several external
boot memory options can be selected at system wake up.
The Hardware Configuration controls are defined by a set of device pins that
are latched into configuration control bits on the assertion of chip reset on the
rising edge of the PRSTn or RSTOn pin. The different hardware configuration
bits define watchdog behavior, boot mode (internal or external), boot
synchronicity, and external boot width. The latched pins are:
CSn[1]- Disable Watchdog reset timer
CSn[2]- Disable Watchdog reset duration
CSn[3]- Should be pulled up to “1”
EECLK- Select internal or external boot
EEDAT- Should be pulled up to “1”
BOOT[1:0]- Select boot mode
ASDO- Select synchronous or asynchronous boot
CSn[7:6]- Select external boot width
The latched version of these signals have an “L” prefix, and are readable by
software in the SysCfg register.
The Hardware Control configurations are as show in Table 4-1.
The normal boot function is described in Chapter 3, Boot ROM.
Serial boot is functionally identical to normal boot except that the SBoot bit in
the SysCfg register is set. This mode is available for a software configuration
option that is readable by the boot code.
68EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
In either normal boot or serial boot mode, once the chip starts up, it will begin
to execute the instruction at logical address 0x0000_0000. Various
configuration options are provided to select the different memory elements for
booting from location 0. The options are listed in Table 4-1.
External boot from Sync memory space selected by
DevCfg3 through the SDRAM Controller. The media
type must be either SROM or SyncFLASH. The
01 0 01
0 0
0 1
01 0 00
0 0
0 1
1101x0116-bit serial boot
11 0 01
11 0 00
0 0
0 1
0 0
0 1
selection of the SRAM width is determined by latched
CSn[7:6] value:
16-bit SFLASH
16-bit SROM
External boot from Async memory space selected by
nCS0 through Synchronous Memory Controller. The
selection of the SRAM width is determined by latched
CSn[7:6] value:
8-bit SRAM
16-bit SRAM
Internal boot from on-chip R OM. The selection of the
ROM width is determined by latched
16-bit
16-bit
Internal boot from on-chip R OM. The selection of the
ROM width is determined by latched
8-bit
16-bit
4.1.4 Software System Configuration Options
4
CSn[7:6] value:
CSn[7:6] value:
There are several system configuration options selectable by the DeviceCfg
and SysCfg registers. These registers provide the selection of several pin
multiplexing options and also provide software access to the system reset
configuration options. Please refer to the descriptions of the registers,
“DeviceCfg” on page 91 and “SysCfg” on page 97, for a detailed explanation.
4.1.5 Clock Control
The device uses a flexible system to generate the required clocks. The goal of
the clock system is to generate as many as 20 independent clock frequencies,
some with very tight accuracy requirements, all from a single external lowfrequency crystal or other external clock source. The system was designed so
that once it has been configured, the processor speed and bus speeds can be
set to a number of different speeds without affecting the speeds of the other
clocks in the system.
The device has an interface to two external crystal oscillators with the
frequency of 32 kHz and 14.7456 MHz. To generate the required highfrequency clocks, the system uses two phase-locked-loops (PLLs) to multiply
the incoming 14.7456 MHz low frequency signal to much higher frequencies
(up to about 400 MHz) that are then divided down by programmable dividers
to produce the needed clocks. The PLLs operate independently of one
another.
The system is split into two “trunks”, each of which is driven by one of the
PLLs. The processor and bus clocks are derived from trunk 1 (PLL1). The
USB and FIR clocks are derived from trunk 2 (PLL2). Other low-frequency
clocks are divided from the original crystal frequency. The MIR and audio
clocks can be independently sourced from either trunk. Figure 4-1, below,
shows the PLL1 structure used in the EP9301. Since PLL2 is identical to
PLL1, wherever the phrase of “PLL1” is used in the figure, it applies to PLL2
as well.
Figure 4-1. Phase Locked Loop (PLL) Structure
14.7456
MHz
PLL1_X1
Feedback Divider
PLL1_X1FBD
Both PLLs are software programmable (each value is defined in ClkSet1 and
ClkSet2 registers respectively). The frequency of output clock Fout shows in
the next equation:
Fout14.7456M Hz
Here PLL1_X1FBD, PLL1_X2FBD, PLL1_X2IPD and PLL1_PS are the bit
fields in ClkSet1 register. The user must be aware of the requirements of PLL
operation. They are:
Figure 4-3 shows the flow of generated system bus clocks, including the ARM
processor clock (FCLK), the AHB bus clock (HCLK), and the APB bus clock
(PCLK).
Figure 4-3. Bus Clock Generation
PLL1External Clock
4
MAX = 66 MHz
HCLK
Div
MAX = 528 MHz
MAX = 166 MHz
For 2nd stage dividers:
FCLK
Div
FCLK Divide = 1, 2, 4, 8, 16
HCLK Divide = 1, 2, 4, 5, 6,
8, 16, 32
FCLK
HCLK
PCLK
Div
PCLK Divide = 1, 2, 4, 8
72EP9301 User’s Manual - DS636UM2
MAX = 50 MHz
Copyright 2004 Cirrus Logic
PCLK
System Controller
There are some limitations of each clock. FCLK must be <=166 MHz,
HCLK<=66 MHz and PCLK<=50 MHz and FCLK >= HCLK > PCLK. Refer to
register, “ClkSet1” on page 84, for the detailed configuration information
regarding the divider bit fields.
It also must be pointed out that even though FCLK is the ARM processor
clock, the ARM Processor has the option to run the CPU using HCLK. The
ARM9 Processor supports three different clocking modes:
QQ
•Async mode
•Sync mode
•Fast Bus mode
Both Async mode and Sync mode use FCLK and potentially FCLK can be
faster than HCLK which would yield higher CPU performance. Async mode
and Sync mode have different clock skew requirements between FCLK and
HCLK, associated with different throughput penalties due to the clock
synchronization. Fast Bus mode bypasses FCLK, and the ARM runs from
HCLK. In this mode, the ARM potentially has lower performance than the
other two modes. When the device starts up, it defaults to Fast Bus mode.
(The selection of ARM clocking modes is determined by the iA and nF bits in
the ARM co-processor 15 register 1.)
4.1.5.2.2 Peripheral Clock Generation
The MCLK and MIR_CLK generators are identical blocks. Each block contains
a pre-divider of 2, 2.5 and 3 followed by a 7-bit programmer divider. The audio
clocks SCLK and LRCLK are further divided down from MCLK. The registers,
“MIRClkDiv” on page 93 and “I2SClkDiv” on page 94, show the details.
USB uses a 48 MHz clock generated by PLL2. USBDIV, in register ClkSet2, is
used to divide the frequency down from the PLL2 output.
4
Table 4-2 on page 74 describes the speeds and sources for the various clocks
on the EP9301.
SSP7.3728 MHzDivided by 2 from 14.7456 MHz external oscillator.
UART1
UART2
AAC 2.9491 MHzDivided-by-5 from the 14.7456MHz external oscillator.
Time rs
Watchdog 256 HzTap from the 32 kHz RTC clock.
14.7456 MHz
7.3728 MHz
508.4689 KHz
1.9939 KHz
983 KHz
4.1.5.3 Steps for Clock Configuration
The following is a step-by-step procedure for configuring the clocks. The boot
ROM contains code which performs the following steps for a 14.7456 MHz
crystal. (For details, refer to Boot ROM, Chapter 3 on page 59.) The actual
register values should be taken from the register descriptions for the desired
clock setup.
Both are derived from 14.7456 MHz external oscillator.
All divided by the 14.7456 MHz external oscillator.
1. After power up, the reset state of all clock control registers (all bits zero) will
ensure that FCLK and HCLK are running at the crystal oscillator frequency
(14.7456 MHz).
2. Configure PLL1 to multiply by the desired value, set HCLK and FCLK rates,
and power it up. To do this: write the proper value (taken from the register
table) to ClkSet1 immediately followed by 5 NOP instructions to flush the
ARM920T instruction pipeline. The system will go into Standby while PLL1
stabilizes, then return to normal operation at the new clock rates.
3. Configure PLL2 to multiply by the desired value. To do this, write the proper
value to ClkSet2.
4. Wait for PLL2 to stabilize (at least 1 ms).
Note: The PWRSts register can be checked to confirm the PLLs are locked.
5. Program all other clock dividers to the desired values and enable them.
The clocks won’t actually begin running until the trunks which feed them
are enabled later. Write to the following registers:
•MIRClkDiv
•I2SClkDiv
•ADCClkDiv
6. All peripherals are now running from divided PLL outputs. Once the clocks
have been configured, the frequency of any peripheral clock can be
changed on-the-fly. To do this, perform a write to the clock register with the
74EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
new divisor value and then set the appropriate enable bit. This ensures a
problem-free change of the clock.
4.1.6 Power Management
The device follows a power-saving design plan. Power management is done
by either altering the PLLs or the clock system frequency or by shutting off
clocks to unused blocks. Also, there are several system power states to which
the device can transition in order to save power. Care must be taken to ensure
the clock system is not put into a non-operational state and that clock system
dependencies are observed.
4.1.6.1 Clock Gatings
The list of peripherals with PCLK gating is shown Table 4-3. One should refer
to the appropriate chapters in this User’s Manual to find detailed information
about clock gatings for that peripheral.
Table 4-3: Peripherals with PCLK gating
System Controller
QQ
4
Peripheral
UART1x--
UART2
IRDA
SEC
I2S
Watchdog--
AACx--
SSP
RTC--
GPIO-x-
The HCLK going to USB Host can be gated off as well to further save the
power. The USH_EN bit in PwrCnt register serves the purpose.
4.1.6.2 System Power States
The device has three power states:
•Run mode: Normal operation mode.
•Halt: ARM9 Processor stops executing.
Peripheral/PCLK
on with Enable or
Register Access
x--
x--
x--
x--
x--
PCLK on with
Register Access
Only
PCLK Continuous
x
x
•Standby: Power is on. Only SDRAM self-refresh and RTC run.
Figure 4-4 illustrates the transitions among those states.
During power-on-reset, the chip automatically transition into the run mode.
4.1.6.2.2 Run Standby Mode
Once in the running mode, it is possible to move to the Standby state under
the following conditions:
•A read from the Standby register when SHena bit in register DeviceCfg is
set to 1. This triggers the system to enter STANDBY mode.
•A write to the ClkSet1 register.
When the SHena bit is set to 1 and the user tries to read from the Standby
location, the device is forced into the Standby state. After this transition the
state controller will hold the Standby state before re-loading and allowing the
transition to the operating state.
Read Standby register &
SHena = 1
Write to
ClkSet1 register
Interrupt (if enabled) or
return from ClkSet1
Any Enabled Interrupt
Read Halt register
& SHena = 1
A write to the ClkSet1 register will also trigger the system to go into Standby
mode. However, the system will automatically come back to normal operation
after new clock settings take effect. The amount of time EP9301 remains in
the Standby state depends on whether the PLL is enabled, or if EP9301 is
using the external clock. If the PLL is enabled, EP9301 will remain in Standby
until the PLL is locked. If EP9301 is in PLL bypass mode (nBYP1 = 1), then
EP9301 will remain in the Standby state for 1-2 of the 16.384 kHz clock
cycles. This is to ensure a minimum 'off' time. The 16.384 kHz clock, derived
from the 32 kHz divide chain times how long the system, remains in the
Standby state.
When the device normally enters Standby mode, the SDRAM controller puts
the SDRAM into self-refresh before disabling the clocks. This condition is only
76EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
true if the refresh enable bit (RFSHEN) in the SDRAM controller is set. One
example of this is when a power-on-reset is applied and this register bit is
cleared. This means that this bit will not be set on bootup and will have to be
set to maintain the memory image for when the device re-enters Standby
mode.
4.1.6.2.3 RUN HALT mode
A transition from Run mode to Halt mode is caused by reading the Halt
location with the SHena bit set to 1. This has the effect of gating the processor
clock (FCLK) bus interface, with the APB/AHB system clock, and
Memory/DMA system remaining enabled.
4.1.6.2.4 STANDBY RUN mode
There are normally several conditions in which the device can move from
Standby mode to Run mode.
These conditions are:
System Controller
QQ
4
•A falling edge on Nirq - Global IRQ interrupt
•A falling edge on Nfiq - Global FIQ interrupt
•An exit from a ClkSet1 write
•PRSTn
•RSTOn
The chip comes out of Standby if an interrupt occurs or when an exit from a
ClkSet1 write occurs. If a write is performed to the ClkSet1 register, the
EP9301 will enter Standby and then will automatically come out of Standby
and back into the Run state.
4.1.6.2.5 HALT RUN mode
The transition from the Halt state to the running state is caused by:
•a falling edge on Nirq - Global IRQ interrupt
•a falling edge on Nfiq - Global FIQ interrupt
•RSTOn
4.1.7 Interrupt Generation
The Syscon block generates two interrupts: TICK interrupt and Watchdog
Expired interrupt.
The block generates the TICK interrupt based upon the 64 Hz clock which is
derived from the 32 kHz oscillator. The interrupt becomes active on every
rising edge of the internal 64 Hz clock signal. It can be cleared by writing to the
TEOI location.
Watchdog Expired interrupt becomes active on a rising edge of the 64 Hz
TICK clock, if the TICK interrupt is still active. In other words, if a TICK
interrupt has not been served for a complete TICK period, a watchdog expired
interrupt is generated. It can be cleared by writing to the TEOI location as well.
78EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
4.2 Registers
This section contains the detailed register descriptions for registers in the
Syscon block. Table 4-4 shows the address map for the registers in this block,
followed by a detailed listing for each register.
Table 4-4: Syscon Register List
AddressNameSW LockedTypeSizeDescription
System Controller
QQ
0x8093_0000PwrStsNoR32Power/state control state
0x8093_0004PwrCntNoR/W32Clock/Debug control status
0x8093_0008HaltNoR32Reading this location enters Halt mode.
0x8093_000CStandbyNoR32Reading this location enters Standby mode.
The PwrSts system control register is the Power/State control register.
Bit Descriptions:
RSVD:Reserved. Unknown During Read.
RTCDIV:The 6-bit RTCDIV shows the number of 64-seconds which
have elapsed. It is the output of the divide-by-64 chain that
divides the 64 Hz TICK clock down to 1 Hz though
showing an incrementing count. The MSB is the 1 Hz
output; the LSB is the 32 Hz output. It is reset by poweron-reset to 000000b.
PLL1_LOCK:PLL1 lock. This signal goes high when PLL1 is locked and
it is at the correct frequency.
PLL1_LOCK_REG:Registered PLL1 lock. This is a one-shot registered signal
of the PLL1_LOCK signal. It is only cleared on a poweron-reset, when EP9301 enters the Standby state or when
PLL1 is powered down.
PLL2_LOCK:PLL2 lock. This signal goes high when PLL2 is locked, and
it is at the correct frequency.
PLL2_LOCK_REG:Registered PLL2 lock. This is a one-shot registered signal
of the PLL2_LOCK signal. It is only cleared on a poweron-reset, when ClkSet2 is written, EP9301 enters the
Standby state, or PLL2 is powered down.
SW_RESET:Software reset flag. This bit is set if the software reset has
been activated. It is cleared by writing to the STFClr
location. On power-on-reset, it is reset to 0b.
80EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
System Controller
RSTFLG:Reset flag. This bit is set if the user reset button has been
pressed; forcing the RSTOn input low. It is cleared by
writing to the STFClr location. On power-on-reset, it is
reset to 0b.
TEST_RESET:Test reset flag. This bit is set if the test reset has been
activated; it is cleared by writing to the STFClr location. On
power-on-reset, it is reset to 0b.
QQ
CLDFLG:Cold start flag. This bit is set if EP9301 has been reset
with a power-on-reset; it is cleared by writing to the STFClr
location. On power-on-reset, it is set to 1b.
WDTFLG:Watchdog Timer flag. This bit is set if the Watchdog timer
resets the system. It is cleared by writing to the STFClr
location. It is reset to 0.
CHIPID:Chip ID bits. This 8-bit register determines the Chip
Identification for EP9301. For EP9301, this value is 0x20.
CHIPMAN:This 8-bit register determines the Chip Manufacturer ID for
EP9301. For EP9301, this value is 0x43.
PwrCnt
31302928272625242322212019181716
FIR_ENRSVDUART
1514131211109876543210
BAUD
USH_ENDMA
M2M
CH1
DMA
M2M
CH0
DMA
M2P
CH8
DMA
M2P
CH9
RSVD
DMA
M2P
CH6
DMA
M2P
CH7
DMA
M2P
CH4
DMA
M2P
CH5
DMA
M2P
CH2
DMA
M2P
CH3
DMA
M2P
CH0
DMA
M2P
CH1
4
Address:
0x8093_0004 - Read / Write
Definition:
The PwrCnt system control register is the Clock/Debug control status register.
DMA M2M/P CHx: These bits enable the clocks to the DMA controller
channels. Note that a channels-enable bit MUST be
asserted before any register within the DMA controller can
be read or written. At least one ARM instruction cycle must
occur between writing to this register to enable the DMA
Controller channel and actually accessing it. The number
of cycles will depend on the setting of HCLK and PCLK
division in the ClkSetx register. To save power, ensure that
all these bits are disabled (low) if the DMA controller is not
being used. On a system reset, the register will be reset to
zero.
USH_EN: This bit is used to gate the HCLK to the USB Host block in
order to save power. It is reset to zero, thus gating off the
HCLK. It can be set to one to turn on the HCLK to the USB
Host. This bit must be set before any register within the
USB Host can be accessed. At least one ARM instruction
cycle must occur between writing to this register bit and
actually accessing the USB Host. The number of cycles
will depend on the setting of HCLK and PCLK division in
the ClkSetx register.
This bit is also used to gate the 48 MHz and 12 MHz
clocks to the USB Host block in order to save power. It is
reset to zero, thus gating off the USB Host clocks. By
setting this to one, the USB Host clocks are enabled. At
least one ARM instruction cycle must occur between
writing to this register bit and actually accessing the USB
Host. The number of cycles will depend on the wake-up
time for PLL2. To find out if PLL2 has locked on to its
frequency, the PLL2_LOCK bit in the PwrSts register can
be read.
UARTBAUD:This bit controls the clock input to the UARTs. When
cleared, the UARTs are driven by the 14.7456 MHz clock
divided by 2 (7.3728 MHz). This gives a maximum baudrate of 230 Kbps. When set, the UARTs are driven by the
14.7456 MHz clock directly, giving an increased maximum
baud rate of 460 Kbps. This bit is 0 on reset.
FIR_EN: This bit is used to gate the FIRCLK to the IrDA block in
order to save power. It is reset to zero, thus gating off the
FIRCLK. Setting this bit to one will turn on the 48 MHz
clock to the IrDA.
82EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
System Controller
Standby and Halt
31302928272625242322212019181716
RSVD
1514131211109876543210
RSVD
Address:
Standby - 0x8093_000C - Read Only
Halt - 0x8093_0008 - Read Only
Definition:
The Standby and Halt registers allow entry into the power saving modes. A
read to the Halt location will initiate a request for the system to enter Halt
mode, if the SHena bit is set in the DeviceCfg register in Syscon. Likewise a
read to Standby will request entry into Standby only when the SHena bit is set.
QQ
4
Note: When a read is performed to the Standby location, it must be immediately
followed by 5 NOP instructions. This is needed to flush the instruction pipeline in
the ARM920T core. Writes to these locations have no effect.
Bit Descriptions:
RSVD:There are no readable bits in this register.
TEOI
31302928272625242322212019181716
RSVD
1514131211109876543210
RSVD
Address:
0x8093_0018 - Write
Definition:
Writing to the TEOI location will clear the periodic Watchdog expired interrupt
(WEINT) and the 64 Hz TICK interrupt (TINT). Any data written to the register
triggers the clearing.
Writing to the STFClr location will clear the CLDFLG, WDTFLG and RSTFLG
in the register, “PwrSts” on page 80. Any data written to the register triggers
the clearing.
Bit Descriptions:
RSVD:There are no readable bits in this register.
ClkSet1
31302928272625242322212019181716
RSVDFCLK DIVSMC ROM nBYP1HCLK DIVPCLK DIVPLL1_PS
1514131211109 8 76543210
PLL1 X1FBD1PLL1 X2FBD2PLL1 X2IPD
Address:
0x8093_0020 - Read/Write
Definition:
The ClkSet1 system control register is one of two register that control clock
speeds.
Note: When a write is performed to the ClkSet1 location, it must be immediately
followed by 5 NOP instructions. This is needed to flush the instruction pipeline in
the ARM920T core. Writing to this register will cause the EP9301 to enter
Standby for between 8 ms to 16 ms. Reading from this register will not cause an
entry into Standby mode.
Bit Descriptions:
RSVD:Reserved. Unknown During Read.
PLL1_X2IPD:These 5 register bits set the input divider for PLL1
operation. On power-on-reset the value is set to 00111b (7
decimal).
84EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
System Controller
Note: The value in the register is the actual coefficient minus one.
PLL1_X2FBD2:These 6 register bits set the first feedback divider bits for
PLL1. On power-on-reset the value is set to 000111b (7
decimal).
Note: The value in the register is the actual coefficient minus one.
PLL1_X1FBD1:These 5 register bits set the second feedback divider bits
for PLL1. On power-on-reset the value is set to 10011b (19
decimal).
Note: The value in the register is the actual coefficient minus one.
PLL1_PS:These two bits determine the final divide on the VCO clock
signal in PLL1.
00 - Divide by 1
01 - Divide by 2
10 - Divide by 4
11 - Divide by 8
QQ
4
On power-on-reset these bits are reset to 11b (3 decimal).
Note: This means that PLL1 FOUT is programmed to be 36,864,000 Hz on startup.
Note: The value in the register is the actual coefficient minus one.
PCLKDIV:These two bits set the divide ratio between the HCLK AHB
clock and the APB clock (PCLK)
00 - Divide by 1
01 - Divide by 2
10 - Divide by 4
11 - Divide by 8
On power-on-reset the value is set to 00b.
Note: Care must be taken to make the correct selection of PCLK divide for the HCLK
frequency used, so that the required minimum ratio between PCLK and the
peripheral clock is not violated
HCLKDIV:These three bits set the divide ratio between the VCO
output and the bus clock (HCLK)
000 - Divide by 1 100 - Divide by 6
001 - Divide by 2 101 - Divide by 8
010 - Divide by 4 110 - Divide by 16
011 - Divide by 5 111 - Divide by 32
nBYP1: This bit selects the clock source for the processor clock
dividers. With this bit clear, the system wakes up and
boots with the PLL bypassed and uses an external clock
source. With nBYP1 set, the system runs with the PLL
generated clock. The default for this bit is to boot/run from
external clock source.
SMCROM:If set, this bit will gate off the HCLK to the Static Memory
Controller when in Halt mode and therefore save power.
When in Halt mode, there are no Instruction Code fetches
occurring and therefore if there are no DMA operations in
progress that may require the SMC, there will be no
accesses to this controller. It may therefore be safely
disabled when in Halt mode. This bit is 0b on reset.
FCLKDIV:These three bits set the divide ratio between the VCO
output and processor clock. On power-on-reset the value
is set to 000b.
000 - Divide by 1 011 - Divide by 8
001 - Divide by 2 100 - Divide by 16
010 - Divide by 4
For FCLKDIV values equal to 1xxb (except for 100b), the
divide ratio will be divide by 1.
ClkSet2
31302928272625242322212019181716
USB DIVRSVDnBYP2 PLL2_ENPLL2_PS
1514131211109876543210
PLL2 X1FBD1PLL2 X2FBD2PLL2 X2IPD
Address:
0x8093_0024 - Read/Write
Definition:
The ClkSet2 register is used for setting the dividers internally to PLL2 and to
the USB Host divider. The reset setting for PLL2 creates a frequency of
48 MHz. The default divider for USB_DIV is divide by 1, which will produce the
USB host clock frequency and FIR clock frequency of 48 MHz.
Bit Descriptions:
PLL2_X2IPD:These 5 register bits set the input divider for PLL2
operation. On power-on-reset the value is set to 10111b
(23 decimal).
Note: The value in the register is the actual coefficient minus one.
86EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
System Controller
PLL2_X2FBD2:These 6 register bits set the first feedback divider bits for
PLL2. On power-on-reset the value is set to 11000b (24
decimal).
Note: The value in the register is the actual coefficient minus one.
PLL2_X1FBD1:These 5 register bits set the second feedback divider bits
for PLL2. On power-on-reset the value is set to 11000b (24
decimal).
Note: The value in the register is the actual coefficient minus one.
PLL2_PS:These two bits determine the final divide function on the
VCO clock signal in PLL2.
00 - Divide by 1
01 - Divide by 2
10 - Divide by 4
11 - Divide by 8
On power-on-reset these bits are reset to 11b (3 decimal).
QQ
4
Note: This means that PLL2 FOUT is programmed to be 48,000,000 Hz on startup.
Note: The value in the register is the actual coefficient minus one.
PLL2_EN:This bit enables PLL2. If set, PLL2 is enabled. If this bit is
zero, PLL2 is disabled. On power-on-reset the value is set
to 0b.
nBYP2:This bit selects the clock source for the processor clock
dividers. If set, PLL2 is the clock source. If this bit is set to
zero, the external clock is the clock source. On power-onreset, this bit defaults to 0b.
USBDIV:These four bits set the divide ratio between the PLL2
output and the USB clock.
0000 - Divide by 1 1000 - Divide by 9
0001 - Divide by 2 1001 - Divide by 10
0010 - Divide by 3 1010 - Divide by 11
0011 - Divide by 4 1011 - Divide by 12
0100 - Divide by 5 1100 - Divide by 13
0101 - Divide by 6 1101 - Divide by 14
0110 - Divide by 7 1110 - Divide by 15
0111 - Divide b y 8 1111 - Divide by 1
Each of these locations provide a 32-bit read/write scratch register, that can be
used as a general purpose storage. These registers are reset to zero only on a
power-on-reset. A System Reset will have no effect.
Bit Descriptions:
Value:This is a 32-bit read/write location.
APBWait
31302928272625242322212019181716
RSVD
1514131211109876543210
RSVDNO_WRITE_WAIT
Address:
0x8093_0050, Read/Write
Definition:
The APBWait register controls the insertion of wait states for APB peripherals.
Bit Descriptions:
RSVD:Reserved. Unknown During Read.
NO_WRITE_WAIT:Used in the AHB/APB bridge to not insert an AHB wait
during writes, if set. If reset, a wait state is added by
forcing HREADY = 0 during ST_WRITE. This bit resets to
0x0001.
88EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
System Controller
BusMstrArb
31302928272625242322212019181716
RSVD
1514131211109876543210
QQ
RSVDRSVDMAC
Address:
Definition:
Bit Descriptions:
ENFIQ
MAC
ENIRQ
USH
ENFIQ
USH
ENIRQ
DMA_
ENFIQ
DMA_
ENIRQ
PRI
CORE
RSVDPRI_ORD
0x8093_0054 - Read/Write
The Bus Master arbitration register (BusMstrArb) is used to configure the AHB
master priority order.
RSVD:Reserved. Unknown During Read.
PRI_ORD: Used to set the priority of the AHB arbiter. The priority
order is shown below. This field resets to 00.
Priority Number
1MACMACDMADMA
2USBUSBUSBMAC
3DMAARM920T MACUSB
4ARM920TDMAARM920TARM920T
PRIOR 00
(Reset value)
PRIOR 01PRIOR 10PRIOR 11
PRI_CORE: When this bit is set the Core will become highest priority
following a grant to one of the following: MAC, USB and
DMA. If the Core then requests the bus, it is then placed in
the priority order selected by PRI_ORD after it is granted,
until one of the above masters is granted the bus, and is
placed on top of the priority scheme.
4
DMA_ENIRQ:When set the arbiter will degrant DMA from the AHB bus
and will ignore subsequent requests from DMA if an IRQ is
active. When IRQ is cleared the DMA request is allowed
again. There is no impact on other masters. Reset to 0.
DMA_ENFIQ:When set the arbiter will degrant DMA from the AHB bus
and will ignore subsequent requests from DMA if an FIQ is
active. When FIQ is cleared the DMA request is allowed
again. There is no impact on other masters. Reset to 0.
USH_ENIRQ:When set the arbiter will degrant USB host from the AHB
bus and will ignore subsequent requests from the USB
Host if an IRQ is active. When IRQ is cleared, the USB
Host request is allowed again. There is no impact on other
masters. Reset to 0.
USH_ENFIQ:When set the arbiter will degrant USB Host from the AHB
bus and will ignore subsequent requests from USB Host if
an FIQ is active. When FIQ is cleared, the USB Host
request is allowed again. There is no impact on other
masters. Reset to 0.
MAC_ENIRQ:When set the arbiter will degrant Ethernet MAC from the
AHB bus and will ignore subsequent requests from the
MAC if an IRQ is active. When IRQ is cleared, the MAC
request is allowed again. There is no impact on other
masters. Reset to 0.
MAC_ENFIQ:When set the arbiter will degrant the Ethernet MAC from
the AHB bus and will ignore subsequent requests from the
MAC if an FIQ is active. When FIQ is cleared, the MAC
request is allowed again. There is no impact on other
masters. Reset to 0.
BootModeClr
31302928272625242322212019181716
RSVD
1514131211109876543210
RSVD
Address:
0x8093_0058 - Write Only
Definition:
The BootModeClr register is a write-to-clear register. Reset activates the boot
ROM remap function causing the internal boot ROM to map to address zero, if
internal boot is selected. Writing BootModeClr removes the internal ROM
address remap, restoring normal address space.
Syscon Software Lock Register. Provides software control port for all Syscon
locked registers. Writing the LOCK field to 0xAA opens the lock. Reading the
register will return 0x0000_0001 when the lock is open, and all zeros when the
lock is closed (locked).
Bit Descriptions:
RSVD:Reserved. Unknown During Read.
LOCK:Lock code value. This field must be written to a value of
0xAA to open the software lock. Reads 0x01 when the
lock is open, 0x00 when the lock is closed.
98EP9301 User’s Manual - DS636UM2
Copyright 2004 Cirrus Logic
5.1 Introduction
The EP9301 contains two cascade Vectored Interrupt Controllers (VIC). A
Vectored Interrupt has improved latency compared with a simple interrupt
controller, since it provides direct information about where the interrupt’s
service routine is located and eliminates levels of software arbitration.
Each individual Vectored Interrupt Controller can handle up to 32 interrupts,
but there are more than 32 interrupts in this design. Therefore two VICs are
connected in a daisy-chain, which allows the system to handle up to 64
interrupt sources.
R
Chapter 5
5Vectored Interrupt Controller
5
There are up to 16 vectored interrupts and 16 non-vectored interrupts
available on each VIC. Vectored interrupts can only generate an IRQ interrupt.
The vectored and nonvectored Interrupt Requests (IRQ) provide an address
for an Interrupt Service Routine (ISR). Reading from the vector interrupt
address register, VICxVectAddr, provides the address of the ISR, and updates
the interrupt priority hardware that masks out the current and any lower priority
interrupt requests. Writing to the VICxVectAddr register indicates to the
interrupt priority hardware that the current interrupt is serviced, allowing lower
priority interrupts to go active.
Registers in the VIC use a bit position for each different interrupt source. The
bit position is fixed but the handling of each interrupt is configurable by the
VIC. Software can control each request line to generate software interrupts.
The VIC provides a software interface to the interrupt system. In this system,
two levels of interrupt are available:
• Fast Interrupt Request (FIQ) for fast, low latency interrupt handling.
• Interrupt Request (IRQ) for more general interrupts.
All interrupt inputs to the VIC are presented as active-high level sensitive
signals. Any conditioning needed to achieve this is performed by the block
generating the interrupt request. In the case of the external interrupts, the
GPIO block takes care of the conditioning.
The FIQ interrupt has the highest priority (because the ARM9 core will always
treat FIQ as higher priority), followed by vectored interrupt 0 to vectored
interrupt 15. Non-vectored IRQ interrupts have the lowest priority. Any of the
non-vectored Interrupts can be either FIQ or IRQ (the interrupt type is
determined by programming the appropriate register, “VIC2IntSelect” on
page 111). Any 16 of the 32 interrupts (per VIC) can be programmed to be
vectored or not by programming the Vector address registers, “VICxVectAddr0
through VICxVectAddr15” on page 116 and the Vector Control registers,
“VICxVectCntl0 through VICxVectCntl15” on page 117.
100EP9301 User’s Manual - DS636UM2
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.