Rabbit Semiconductor was formed expressly to design a better microprocessor for use in small- and
medium-scale, single-board computers. The first microprocessors were the Rabbit 2000, Rabbit 3000, Rab-bit 4000, and the Rabbit 5000. The latest microprocessor is the Rabbit 6000. Rabbit microprocessor
designers have had years of experience using Z80, Z180, and HD64180 microprocessors in small singleboard computers. The Rabbit microprocessors share a similar architecture and a high degree of compatibility with these microprocessors, but represent a vast improvement.
The Rabbit 6000 is a high-performance microprocessor with low electromagnetic interference (EMI), and
is designed specifically for embedded control, communications, and network connectivity. Extensive integrated features and glueless architecture facilitate rapid hardware design, while a C-friendly instruction set
promotes efficient development of even the most complex applications.
The Rabbit 6000 is the second Rabbit microprocessor to have a full 16-bit internal bus architecture, providing significant performance improvements when used with external 16-bit memory devices. It also has
the ability to support both 8-bit and 16-bit external memory devices.
The Rabbit 6000 is also the fastest microprocessor from Rabbit, now a Digi International brand, running at
up to 200 MHz, with compact code and support for up to 16 MB of memory. Operating with a 1.2 V core
and 3.3 V I/O, the Rabbit 6000 boasts 16 channels of DMA, six serial ports with IrDA, 64+ digital I/O,
quadrature decoder, PWM outputs, I
tures a battery-backable real-time clock, glueless memory and I/O interfacing, and ultra-low power modes.
Four levels of interrupt priority allow fast response to real-time events. Its compact instruction set and high
clock speeds give the Rabbit 6000 exceptionally fast math, logic, and I/O performance.
2
C port, and pulse capture and measurement capabilities. It also fea-
The Rabbit 6000 contains 1MB of internal high-speed 16-bit RAM, which can be used for both code and
data. It also contains 32 KB of battery-backable 16-bit SRAM (also high speed) for applications where
data retention is critical. It is capable of booting off of a standard serial flash, so a microcontroller application with no external parallel memory is possible.
The Rabbit 6000 provides two options for network connectivity — a full 10/100Base-T Ethernet MAC and
PHY built into the device, and a wireless 802.11a/b/g MAC compatible with several standard Wi-Fi transceivers. Both network interfaces can be active at the same time. The Rabbit 6000 also contains a USB 2.0compatible full-speed USB host MAC and PHY.
The Rabbit 6000 also features two “flexible interface modules,” or FIMs. These two modules can be
loaded with customized designs to support a variety of interfaces, including serial ports and CAN-bus
interfaces.
Rabbit 6000 User’s Manualdigi.com8
1.2 Features
The Rabbit 6000 contains an internal phase-locked loop (PLL) that is fully controlled by software and provides up to a 200 MHz clock from a 25 MHz input. Other clock options are available as well, including the
clock doubler and divider features present in earlier Rabbit devices.
The Rabbit 6000 has several powerful design features that practically eliminate EMI problems, which is
essential for OEMs who need to pass CE and regulatory radio-frequency emissions tests. The amplitude of
any electromagnetic radiation is reduced by the internal spectrum spreader, by gated clocks (which prevent
unnecessary clocking of unused registers), and by separate power planes for the processor core and I/O
pins (which reduce noise crosstalk). An external I/O bus can be used by designers to enable separate buses
for I/O and memory, or to limit loading the memory bus to reduce EMI and ground bounce problems when
interfacing external peripherals to the processor. The external I/O bus accomplishes this by duplicating the
Rabbit's data bus on Parallel Port A, and uses Parallel Port B to provide the processor's six or eight least
significant address lines for interfacing with external peripherals.
The high-performance instruction set offers both greater efficiency and execution speed of compiler-generated C code. Instructions include numerous single-byte opcodes that execute in two clock cycles, 16-bit and
32-bit loads and stores, 16-bit and 32-bit logical and arithmetic operations, 16 × 16 multiply (executes in
12 clocks), long jumps and returns for accessing a full 16 MB of memory, and one-byte prefixes to turn
memory-access instructions into internal and external I/O instructions. Hardware-supported breakpoints
ease debugging by trapping on code execution or data reads and writes.
The Rabbit 6000 requires no external memory driver or interface logic. Its 24-bit address bus, 8-bit or 16bit data bus, three chip-select lines, two output-enable lines, and two write-enable lines can be interfaced
directly with up to six memory devices. Up to 1 MB of code memory and 15 MB of data memory can be
accessed directly via the Dynamic C development software. The Rabbit 6000 also contains 1 MB of internal high-speed 16-bit RAM and 32 KB of battery-backed SRAM, which can be used instead of or in addition to any external memory devices.
A built-in slave port allows the Rabbit 6000 to be used as master or slave in multi-processor systems, permitting separate tasks to be assigned to dedicated processors. An 8-line data port and five control signals
simplify the exchange of data between devices. A remote cold boot enables startup and programming via a
serial port, a slave port, or from a standard external serial flash device.
The Rabbit 6000 features eight 8-bit parallel ports, yielding a total of 64 digital I/O. Six CMOS-compatible serial ports are available. All six are configurable as asynchronous (including output pulses in IrDA
format), while four are configurable as clocked serial (SPI) and two are configurable as SDLC/HDLC. The
various internal peripherals share the parallel port’s I/O pins. Drive strength, slew rate, and pullup/pulldown resistors can be controlled on all of the parallel ports.
The Rabbit 6000 also offers many specialized peripherals. Two input-capture channels each have a 16-bit
counter, clocked by the output of an internal timer, that can be used to capture and measure pulses. These
measurements can be extended to a variety of functions such as measuring pulse widths or for baud-rate
auto detection. Two Quadrature Decoder channels each have two inputs, as well as an 8-bit or 10-bit up/
down counter. Each Quadrature Decoder channel provides a direct interface to quadrature encoder units.
Four independent pulse-width modulator (PWM) outputs, each based on a 1024-pulse frame, are driven by
the output of a programmable internal timer. The PWM outputs can be filtered to create a 10-bit D/A converter or they can be used directly to drive devices such as motors or solenoids. The Rabbit 6000 has eight
Rabbit 6000 User’s Manualdigi.com9
external interrupt vectors, two of which can each multiplex inputs from up to three external pins. A new
2
addition to the Rabbit 6000 is a fully featured I
C port capable of up to 400 kbits/s and 10-bit addressing.
The Rabbit 6000 has three timer systems. Timer A consists of twelve 8-bit counters, each of which has a programmed time constant. Six of them can be cascaded from the primary Timer A counter. Timer B contains a
10-bit counter, two match registers, and two step registers. An interrupt can be generated or an output pin
can be updated when the counter reaches a match value, and the match value can then be incremented automatically by the step value. Timer C is a 16-bit counter that counts up to a programmable limit. It contains
eight match registers so that up to four PWM (both synchronous and variable-phase) or quadrature signals
for motor-control applications can be created.
The Rabbit 6000 also provides support for protected operating systems. Support for two levels of operation, known as system and user modes, allow application-critical code to operate in safety while user code
is prevented from inadvertently disturbing the setup of the processor. Memory blocks as small as 4 KB can
be write-protected against accidental writes by user code, and stack over/underflows can be trapped by
high-priority interrupts.
Security features are also available in the Rabbit 6000. New instructions were added to the existing
encryption support to increase encryption algorithm speeds dramatically, and 32 bytes of battery-backed
RAM can store an encryption key away from prying eyes.
The Rabbit 6000 supports sixteen channels of DMA access to internal or external memory, internal I/O
addresses, and the external I/O bus. Directing a DMA channel to or from an internal peripheral such as a
serial port or the Ethernet port automatically connects DMA enable signals. Burst size, priority, and guaranteed cycles for the processor are all under program control. DMA operations to/from the internal memory and peripherals can operate simultaneously with code fetches, so no performance hit occurs. When
accessing external memory, DMA operations will alternate between DMA and code fetches as in previous
Rabbit designs.
The Rabbit 6000 contains an 802.11a/b/g wireless MAC peripheral, also designed to operate with the DMA
peripheral. It includes support for all standard Wi-Fi features, including infrastructure and ad-hoc modes.
The high-speed internal A/D converter and D/A converter and clocked-serial control port provide a
generic interface to several common Wi-Fi transceivers. A low-speed A/D converter is also available to
monitor the transmit signal strength if desired. The two A/D converters and single D/A converter are available for customer use when the Wi-Fi peripheral is disabled.
The Rabbit 6000 also contains a full-featured 10/100Base-T Ethernet MAC peripheral and PHY. Designed
to operate with the DMA peripheral, the Ethernet peripheral is fully compliant with the 802.3 Ethernet
standard, including support for auto-negotiation, link detection, multicast filtering, and broadcast
addresses.
The Rabbit 6000 provides an Open Host Controller Interface (OHCI) USB device MAC and PHY. Fully
supported by the DMA peripheral, the MAC and PHY are USB 2.0 compliant, full-speed (12 Mbit/s)
devices.
Another new feature of the Rabbit 6000 is a 12-bit, 8-channel A/D converter. This A/D converter can run
at up to 1 megasample per second, based on either the internal clock or an external clock input. The A/D
converter is muxed across eight channels which can be sampled individually or continuously across all
channels.
Rabbit 6000 User’s Manualdigi.com10
1.3 Block Diagram
Figure 1.1 Rabbit 6000 Block Diagram
Rabbit 6000 User’s Manualdigi.com11
1.4 Basic Specifications
Two versions of the Rabbit 6000 are available—the standard 292-ball BGA and a smaller 233-ball BGA
for specialty Wi-Fi applications. The larger package is intended for most Rabbit applications; the smaller
package has no address or data bus, and is intended for particular applications. If you need further information, please contact your Rabbit sales representative.
Table 1-1. Rabbit 6000 Specifications and Features
Package292-ball BGA233-ball BGA
Package Size
Operating Voltage
Operating Current (typ)
Operating Temp.
Maximum Clock Speed
Digital I/O
Network Interfaces
Serial Ports
Baud Rate
2
I
C Ports
Address Bus
Data Bus
Timers
17 mm × 17 mm × 1.3 mm15 mm × 15 mm × 1.3 mm
1.2 V DC core, 3.3 V DC I/O ring
372 A/MHz @ 1.2 V/3.3 V, 25-200 MHz
(Wi-Fi and Ethernet disabled)
-40°C to +85°C
200 MHz
64+ (arranged in
eight 8-bit ports)
10/100Base-T
802.11b/g Wi-Fi
6 CMOS-compatible2 CMOS-compatible
Clock speed/8 max. asynchronous
11
24-bitNone
8/16-bitNone
Twelve 8-bit, one 10-bit with 2 match registers,
and one 16-bit with 8 match registers
Real-Time Clock
RTC Oscillator Circuitry
Watchdog Timer/Supervisor
Clock Modes
Power-Down Modes
External I/O Bus
A/D Converters
D/A Converters
* Limitations on the use of the 1MB internal RAM are present when running in lower CPU frequency or
sleepy modes. See Section 5.3.1, “Internal RAM”.
Rabbit 6000 User’s Manualdigi.com12
8 data, 8 address linesNo
10-bit, 2 synchronous channels, up to 40 megasamples/s
10-bit, single channel, up to 1 megasamples/s
12-bit, eight multiplexed channels, up to 1 megasamples/s
10-bit, 2 synchronous channels, up to 80 megasamples/s
Yes, battery-backable
External
Ye s
1×, 2×, /2, /3, /4, /6, /8
Sleepy (32 kHz)
Ultra-Sleepy (16, 8, 4, 2 kHz)
*
*
1.5 Comparing Rabbit Microprocessors
The Rabbit 2000, Rabbit 3000, Rabbit 4000, Rabbit 5000, and Rabbit 6000 features are compared below.
* Limitations on the use of the 1MB internal RAM are present when running in lower CPU frequency or
sleepy modes. See Section 5.3.1, “Internal RAM”.
8NoneNoneNoneNone
33NoneNoneNone
22NoneNoneNone
Rabbit 6000 User’s Manualdigi.com15
2. CLOCKS
2.1 Overview
The Rabbit 6000 supports up to five separate clocks at once—the main clock, the 32 kHz clock, the 20
MHz Wi-Fi clock, the 25 MHz Ethernet clock, and the 48 MHz USB clock. The main clock is used to
drive the processor clock and the peripheral clock inside the processor. The 32 kHz clock is used to drive
the asynchronous serial bootstrap, the real-time clock, the periodic interrupt, and the watchdog timers.
The 32 kHz clock input requires an external clock signal; the remaining clock inputs have internal oscillators that can be driven with just an external crystal. If desired, each of the remaining clock inputs can also
be used with an external clock as well, bypassing the internal oscillator.
The Ethernet peripheral can be driven from the main clock instead of the PHY clock input, removing the
need for separate main and Ethernet clocks. When this feature is enabled, the main clock must be 25 MHz
for proper Ethernet operation.
The main clock can be fed into a phase-locked loop (PLL), generating CPU and peripheral clocks in the
range of 150–200 MHz, depending on the input clock and PLL settings. This clock can be further adjusted
by the clock divider if desired. Dividers exist for most peripherals to scale their clocks over a wide range
of frequencies.
The Rabbit 6000 has a spectrum spreader on the main clock that shortens and lengthens clock cycles. This
has the net effect of reducing the peak energy of clock harmonics by spreading the spectral energy into
nearby frequencies, which reduces EMI and facilitates government-mandated EMI testing. Gated clocks
are used whenever possible to avoid clocking unused portions of the processor, and separate power-supply
pins for the core and I/O ring further reduce EMI from the Rabbit 6000. Note that the spectrum spreader is
not usable at main clock frequencies above 115 MHz because of the short period.
The main clock can be doubled or divided by 2, 4, 6, or 8 to reduce EMI and power consumption. The 32
kHz clock (which can be divided by 2, 4, 8, or 16) can be used instead of the main clock to generate processor and peripheral clocks as low as 2 kHz for significant power savings. Note that dividing the 32 kHz
clock only affects the processor and peripheral clocks; the full 32 kHz signal is still provided to the realtime clock and watchdog timer peripherals that use it directly. The periodic interrupt is disabled automatically since there is not enough time to process it when it is running off the 32 kHz clock. Also, note that
the internal RAM content will not be maintained at CPU frequencies below 12MHz.
There is also a 25 MHz Ethernet oscillator that connects directly to the Ethernet PHY if you are using the
Ethernet option, but want a different main clock frequency. See Chapter 25 for more details on the Ethernet clock.
The Wi-Fi peripheral requires a 20 MHz clock input, which goes to a dedicated PLL to produce the
required clocks for the 802.11a/b/g peripheral. The USB peripheral requires a 48 MHz clock for proper
operation.
Rabbit 6000 User’s Manualdigi.com16
2.1.1 Block Diagram
2.1.2 Registers
Register NameMnemonicI/O AddressR/WReset
Global Control/Status RegisterGCSR0x0000R/W11000000
Global Clock Modulator 0 RegisterGCM0R0x000AW00000000
Global Clock Modulation 1 RegisterGCM1R0x000BW00000000
Global Clock Double RegisterGCDR0x000FR/W00000000
Master System Configuration RegisterMSCR0x0434R/W00000000
Master System Status RegisterMSSR0x0435R/W00000x00
Rabbit 6000 User’s Manualdigi.com17
2.2 Dependencies
2.2.1 I/O Pins
The main, Wi-Fi, Ethernet, and USB clocks contain a bypassable internal oscillator, so either a crystal or an
external clock input can be used. The selection of a crystal or an external signal for the main oscillator is
determined by the state of the CFG pins on startup, and by the Master System Status Register (MSSR). The
Ethernet clock source (main clock or PHY oscillator) is selected in the Master System Configuration Register (MSCR). Table 2-1 lists the pins assigned to each clock and how they are controlled.
Table 2-1. Clock Pin Assignments
ClockFrequencyCrystal Pins
External Clock
Signal Pins
Crystal/External
Clock Selection by
24 –42 MHz
Main Clock
(crystal)
20–200 MHz
(external
CLK_HSI
CLK_HSO
CLK_HSO
CFG pins
(see chapter 3)
clock)
W-Fi Clock20 MHz
Ethernet Clock25 MHz
USB Clock48 MHz
XTL_20MI
XTL_20MO
XTL_25MI
XTL_25MO
XTL_48MI
XTL_48MO
XTL_20MOMSSR
XTL_25MO—
XTL_48MOMSSR
32 kHz Clock32 kHz—CLK_32K—
The 32 kHz clock input is on the CLK_32K pin. There is an internal Schmitt trigger on this pin to reduce
sensitivity to noise.
The peripheral clock or peripheral clock divided by 2 may be optionally output on the CLK pin by
enabling it via bits 7–6 in GOCR.
Rabbit 6000 User’s Manualdigi.com18
2.2.2 Other Registers
RegisterFunction
GOCRUsed to set up the CLK output pin.
Used to:
MSCR
- select clock input or PLL output for CPU clock
- select main clock or external 25 MHz clock for Ethernet
- select CPU clock or PLL output for Flexible Interface Modules
MSSR
Used to select crystal or external oscillator for Wi-Fi and USB clocks,
and read main and Wi-Fi PLL status.
GCM0R, GCM1RUsed to select the main PLL loop and pre-divider values.
GCDRUsed to enable the main PLL.
ENPRUsed to enable the Wi-Fi PLL (automatic when Wi-Fi is enabled).
Rabbit 6000 User’s Manualdigi.com19
2.3 Operation
2.3.1 Main Clock
The main clock is based on the main oscillator output, which in turn is driven by the CLK_HSI and
CLK_HSO pins. This output serves as the input for the main PLL, which can be programmed for various
frequencies or bypassed completely. There is an option for the resulting output to then be sent through the
spectrum spreader and then the clock doubler, which are described later. This resulting clock is the main
clock.
Different main clock modes may be selected via the GCSR, as shown in Table 2-2. Note that one GCSR
setting slows the processor clock while the peripheral clock operates at full speed; this allows some power
reduction while keeping settings like serial baud rates and the PWM at their desired values.
Table 2-2. Clock Modes
GCSR SettingProcessor ClockPeripheral Clock
xxx010xxMain clockMain clock
xxx011xxMain clock / 2Main clock / 2
xxx110xxMain clock / 4Main clock / 4
xxx111xxMain clock / 6Main clock / 6
xxx000xxMain clock / 8Main clock / 8 (default on startup)
xxx001xxMain clock / 8Main clock
xxx100xx32 kHz clock (possibly divided)
32 kHz clock (possibly divided);
xxx101xx
When the 32 kHz clock is enabled in GCSR, it can be further divided by 2, 4, 8, or 16 to generate even
lower frequencies by enabling those modes in bits 0–2 of GPSCR. See Table 2-6 for more details.
main clock disabled via CLKIEN output
signal
32 kHz clock (possibly divided via
GPSCR)
32 kHz clock (possibly divided via
GPSCR)
Rabbit 6000 User’s Manualdigi.com20
2.3.2 Main PLL
The main PLL is optimally tuned for a 25 MHz clock input and to produce a 400 MHz output, which can
be fed directly to the Flexible Interface Modules (FIMs), and is divided by two to 200 MHz for processor
and peripheral operation. Note that the main PLL can be bypassed if lower frequencies are desired.
The main PLL is enabled in GCDR, but is not selected as the main clock until enabled in MSCR. If the 32
kHz clock is present, then the switchover to the PLL output for the main clock will not occur until 200 µs
after the bit is enabled in MSCR to allow the PLL output to stabilize. The status of the main PLL (stable
output or not) can be read in bit 0 of MSSR.
The main PLL input clock is restricted to 20–200 MHz, and the output frequency range is limited to 300–
400 MHz. There are further restrictions on the internal frequency
The main PLL divider values are located in GCM0R and GCM1R. These should be set to a nonzero value
before enabling the PLL. Some suggested PLL settings are described in Table 2-3, chosen to match other
clock requirements in the design to allow clock sharing. If other PLL settings are desired, please contact
your sales representative at Digi International.
Table 2-3. Suggested PLL Modes
Input Clock
Main Clock
(max)
FIM Clock
(max)
GCM0R
Setting
GCM1R
Setting
20 MHz150 MHz300 MHzxxx10000xxxx0001
20 MHz200 MHz400 MHzxxx10100xxxx0001
25 MHz150 MHz300 MHzxxx01100xxxx0001
25 MHz200 MHz400 MHzxxx10000xxxx0001
48 MHz156 MHz312 MHzxxx01101xxxx0010
48 MHz192 MHz384 MHzxxx10000xxxx0010
Note that if the PLL is enabled, restrictions may exist for the use of the spectrum spreader and clock doubler. The following sections provide more details.
Rabbit 6000 User’s Manualdigi.com21
2.3.3 Spectrum Spreader
When enabled, the spectrum spreader stretches and compresses the main clock in a complex pattern that
spreads the energy of the clock harmonics over a wider range of frequencies. Note that the spectrum
spreader cannot operate at frequencies above 115 MHz as it uses up too much of the available clock
period, so care must be exercised when using the main PLL.
Figure 2.1 Effects of Spectrum Spreader
There are three settings that correspond to normal and strong spreading in the 0–50 MHz and >50 MHz
main clock range. Each setting will affect the clock cycle differently; the maximum cycle shortening (at
1.8 V and 25°C) is shown in Table 2-4 below.
Table 2-4. Spectrum Spreader Settings
0–50 MHz50 - 150 MHz
—Normal01xxxxxx
GCM0R
Value
Description
Normal spreading of frequencies
over 50 MHz
Max. Cycle
Shortening
2.3 ns
Normal spreading of frequencies
NormalStrong00xxxxxx
up to 50 MHz; strong spreading of
3 ns
frequencies over 50 MHz
Strong spreading of frequencies up
Strong—10xxxxxx
to 50 MHz; normal spreading of
4.5 ns
frequencies over 50 MHz
Rabbit 6000 User’s Manualdigi.com22
The spectrum spreader either stretches or shrinks the low plateau of the clock by a maximum of 3 ns for the
15
10
5
10050200150250
350
300
Normal Spreading
Strong Spreading
Frequency (MHz)
Harmonics (dB)
normal spreading and up to 4.5 ns for the strong spreading. If the clock doubler is used, this will cause an
additional asymmetry between alternate clock cycles.
Both normal and strong modes reduce clock harmonics by approximately 15 dB for frequencies above 100
MHz; for lower frequencies the strong setting has a greater effect in reducing the peak spectral strength as
shown in Figure 2.2.
Figure 2.2 Peak Spectral Amplitude Reduction by Spectrum Spreader
Two registers control the clock spectrum spreader. These registers must be loaded in a specific manner
with proper time delays. GCM0R is only read by the spectrum spreader at the moment when the spectrum
spreader is enabled by setting bit 7 of GCM1R. If bit 7 of GCM1R is cleared (when disabling the spectrum
spreader), there is up to a 500-clock delay before the spectrum spreader is actually disabled. The proper
procedure is to clear GCM1R, wait for 500 clocks, set GCM0R, and then enable the spreader by writing a
1 to bit 7 of GCM1R.
The spectrum spreader is applied to the main clock before the clock doubler, so if both are enabled there
will be additional asymmetry between alternate clock cycles.If the clock doubler is used, the spectrum
spreader affects every other cycle and reduces the clock high time. If the doubler is not used, then the
spreader affects every clock cycle, and the clock low time is reduced.
Rabbit 6000 User’s Manualdigi.com23
2.3.4 Clock Doubler
The clock doubler allows a lower frequency crystal to be used for the main oscillator and to provide an
added range over which the clock frequency can be adjusted. The clock doubler is controlled via the
Global Clock Double Register (GCDR).
The clock doubler uses an on-chip delay circuit that must be programmed by the user at startup if there is a
need to double the clock. Table 2-5 lists the recommended delays in GCDR for various oscillator or crystal
frequencies.
Table 2-5. Recommended Delays Set In GCDR for Clock Doubler
Recommended GCDR ValueFrequency Range
0x0F7.3728 MHz
0x0B7.3728–11.0592 MHz
0x0911.0592–16.5888 MHz
0x0616.5888–20.2752 MHz
0x0320.2752–52.8384 MHz
0x0152.8384–77.4144 MHz
0x00>77.4144 MHz
Rabbit 6000 User’s Manualdigi.com24
When the clock doubler is used and there is no subsequent division of the clock, the output clock will be
asymmetric, as shown in Figure 2.3.
Figure 2.3 Effect of Clock Doubler
The doubled-clock low time is subject to wide (50%) variation since it depends on process parameters,
temperature, and voltage. The times given above are for a core supply voltage of 1.8 V and a temperature
of 25°C. The values increase or decrease by 1% for each 5°C increase or decrease in temperature. The
doubled clock is created by xor’ing the delayed and inverted clock with itself. If the original clock does
not have a 50-50 duty cycle, then alternate clocks will have a slightly different length. Since the duty cycle
of the built-in oscillator can be as asymmetric as 52%/48%, the clock generated by the clock doubler will
exhibit up to a 4% variation in period on alternate clocks. The memory access time is not affected because
the memory bus cycle is 2 clocks long and includes both a long and a short clock, resulting in no net change
due to asymmetry. However, if an odd number of wait states is used, then the memory access time will be
affected slightly.
Rabbit 6000 User’s Manualdigi.com25
The maximum allowed clock speed must be reduced slightly if the clock is supplied via the clock doubler.
The only signals clocked on the falling edge of the clock are the memory and I/O write pulses, and the
early option memory output enable. See Chapter 5 for more information on the early output enable and
write enable options.
The power consumption is proportional to the clock frequency, and for this reason power can be reduced
by slowing the clock when less computing activity is taking place. The clock doubler provides a convenient method of temporarily speeding up or slowing down the clock as part of a power management
scheme.
2.3.5 32 kHz Clock
The 32.768 kHz clock is used to drive the asynchronous serial bootstrap, the real-time clock, the periodic
interrupt, and the watchdog timers; see Section 4.3 for detailed descriptions of these features. If these features are not used in a design, the use of the 32 kHz clock is optional.
A self-contained external oscillator is the recommended oscillator circuit for the Rabbit 6000, but a tunable
oscillator circuit such as the one shown below may be used. The values of resistors and capacitors may
need to be adjusted for various frequencies and crystal load capacitances. Rabbit’s Technical Note TN235,
External 32.768 kHz Oscillator Circuits, is available on the Rabbit Web site and goes into this circuit
in detail.
Figure 2.4 Basic 32.768 kHz Oscillator Circuit
Rabbit 6000 User’s Manualdigi.com26
The 32.768 kHz circuit consumes microampere-level currents and has a very high impedance, making it
susceptible to noise, moisture, and environmental contaminants. It is strongly recommended to conformally coat this circuit to limit the effects of humidity and dust on the oscillation frequency. Details about
this requirement are available in Technical Note TN303, “Conformal Coating”, from the Rabbit Web site.
The need for a conformal coating can be avoided by using a single external clock chip.
The 32.768 kHz oscillator is slow to start oscillating after power-on. The startup delay may be as much as
5 seconds. For this reason, a wait loop in the BIOS waits until this oscillator is oscillating regularly before
continuing the startup procedure. If the clock is battery-backed, there will be no startup delay since the
oscillator is already oscillating. Crystals with low series resistance (R < 35 k) will start faster.
The 32 kHz oscillator can be used to drive the processor and the peripheral clock to provide significant
power savings in “ultra-sleepy” modes. The 32 kHz oscillator can be divided by 2, 4, 8, or 16 to provide
clock speeds as low as 2.048 kHz, although there are limitations on use of the 1MB internal RAM at those
low clock speeds (See Section 5.3.1, “Internal RAM”). Special self-timed chip selects are available to keep
the memory devices enabled for as short a time as possible when an ultra-sleepy mode is enabled; see
Chapter 36 for more details on reducing power consumption.
Table 2-6. Ultra-Sleepy Clock Modes
GPSCR
Setting
Processor and
Peripheral Clock
xxxxx00032.768 kHz
xxxxx10016.384 kHz
xxxxx1018.192 kHz
xxxxx1104.096 kHz
xxxxx1112.048 kHz
When the 32 kHz clock is enabled as the CPU clock, the periodic interrupt is disabled automatically. The
real-time clock and watchdog timers keep running, and use the full 32 kHz clock speed even when the processor and peripheral clocks use a divider on the 32 kHz clock.
Rabbit 6000 User’s Manualdigi.com27
2.4 Register Descriptions
Global Control/Status Register(GCSR)(Address = 0x0000)
Bit(s)ValueDescription
7:5000No reset or watchdog timer timeout since the last read.
(rd-only)010
110
111
5
(write)
0No effect on the Periodic interrupt.
1Force a Periodic interrupt to be pending.
4:2000
001
010
011
100
The watchdog timer timed out. These bits will be cleared by reading the
register.
Hardware reset occurred. These bits will be cleared by reading the
register.
Power-on reset occurred. These bits will be cleared by reading the
register.
Processor clock from the main clock, divided by 8.
Peripheral clock from the main clock, divided by 8.
Processor clock from the main clock, divided by 8.
Peripheral clock from the main clock.
Processor clock from the main clock.
Peripheral clock from the main clock.
Processor clock from the main clock, divided by 2.
Peripheral clock from the main clock, divided by 2.
Processor clock from the 32 kHz clock, optionally divided via GPSCR.
Peripheral clock from the 32 kHz clock, optionally divided via GPSCR.
Processor clock from the 32 kHz clock, optionally divided via GPSCR.
101
Peripheral clock from the 32 kHz clock, optionally divided via GPSCR.
The main clock is disabled.
110
111
Processor clock from the main clock, divided by 4.
Peripheral clock from the main clock, divided by 4.
Processor clock from the main clock, divided by 6.
Peripheral clock from the main clock, divided by 6.
1:000Periodic interrupts are disabled.
01Periodic interrupts use Interrupt Priority 1.
10Periodic interrupts use Interrupt Priority 2.
11Periodic interrupts use Interrupt Priority 3.
Rabbit 6000 User’s Manualdigi.com28
Global Clock Modulator 0 Register(GCM0R)(Address = 0x000A)
Bit(s)ValueDescription
7:600
Clock dither in 1 ns steps, from 0 ns to 26 ns. Do not modify while the
dither function is enabled.
01Clock dither in 0.5 ns steps, from 0 ns to 13 ns.
10Clock dither in 2 ns steps, from 0 ns to 52 ns.
11This bit combination is reserved and must not be used.
5:4These bits are reserved and should be written with zeros.
System PLL loop divider value. All zeros is not a valid value for the PLL
loop divider. The PLL output frequency is the input frequency divided by
4:0
the value of the PLL pre-divider, and multiplied by the value of the PLL
loop divider. Neither divider value should not be modified while the PLL
is supplying the clock to the system.
Global Clock Modulator 1 Register(GCM1R)(Address = 0x000B)
Bit(s)ValueDescription
70
Disable the clock dither function. The disable does not take effect until
the dither pattern has returned to the 0 ns base delay value.
1Enable the clock dither function.
6:5These bits are reserved and should be written with zeros.
System PLL pre-divider value. All zeros is not a valid value for the PLL
3:0
pre-divider. Neither divider value should not be modified while the PLL
is supplying the clock to the system.
Rabbit 6000 User’s Manualdigi.com29
Global Clock Double Register(GCDR)(Address = 0x000F)
Bit(s)ValueDescription
70Disable system PLL.
1
Enable system PLL. Setting this bit does not select the system PLL as the clock
source.
6:5These bits are reserved and should always be written with zeros.
4:000000The clock doubler circuit is disabled.
000019 nS nominal Low time.
0001010.5 nS nominal Low time.
0001112 nS nominal Low time.
0010013.5 nS nominal Low time.
0010115 nS nominal Low time.
0011016.5 nS nominal Low time.
0011118 nS nominal Low time.
0100019.5 nS nominal Low time.
0100121 ns nominal Low time.
0101022.5 ns nominal Low time.
0101124 ns nominal Low time.
0110025.5 ns nominal Low time.
0110127 ns nominal Low time.
0111028.5 ns nominal Low time.
0111130 ns nominal Low time.
100014.5 nS nominal Low time.
100106 nS nominal Low time.
Rabbit 6000 User’s Manualdigi.com30
Global Output Control Register(GOCR)(Address = 0x000E)
Bit(s)ValueDescription
7:600CLK pin is driven with peripheral clock.
01CLK pin is driven with peripheral clock divided by 2.
10CLK pin is low.
11CLK pin is high.
5:400STATUS pin is active (low) during a first opcode byte fetch.
01STATUS pin is active (low) during an interrupt acknowledge.
10STATUS pin is low.
11STATUS pin is high.
3:200/WDTOUT pin functions normally.
01Enable /WDTOUT for test mode. Reserved for internal use only.
10/WDTOUT pin is low (1 cycle min, 2 cycles max, of 32 kHz).
11This bit combination is reserved and should not be used.
1:000/BUFEN pin is active (low) during external I/O cycles.
01/BUFEN pin is active (low) during data memory accesses.
10/BUFEN pin is low.
11/BUFEN pin is high.
Rabbit 6000 User’s Manualdigi.com31
Master System Configuration Register(MSCR)(Address = 0x0434)
Bit(s)ValueDescription
70CPU clock direct from oscillator.
CPU clock from system PLL output (divided by two). Response to this
1
setting may be delayed until the PLL output is stable (roughly 200 µs
after enabling the system PLL, uses 32 kHz clock to generate delay).
6This bit is reserved and should be written as zero.
50Clock on-chip 10/100 PHY from system oscillator.
Enable embedded oscillator in the internal 10-100 PHY. If using this
1
option, the oscillator must be enabled at least 500 ns before the PHY is
enabled in ENPR. This delay must be created in software.
40No reset of the internal 10/100 PHY. Reads always return zero.
(Write-
only)
1
Reset the internal 10/100 PHY hardware. This command must not be
issued until at least 600 ms after the internal PHY has been enabled in
ENPR. This delay must be created in software.
3:200FIMB clock is disabled.
01FIMB clock is identical to the CPU clock.
10This bit combination is reserved and should not be used.
FIMB clock from system PLL output. Response to this setting may be
11
delayed until the PLL output is stable (roughly 200 us after enabling the
system PLL, uses 32 kHz clock to generate delay).
1:000FIMA clock is disabled.
01FIMA clock is identical to the CPU clock.
10This bit combination is reserved and should not be used.
FIMA clock from system PLL output. Response to this setting may be
11
delayed until the PLL output is stable (roughly 200 µs after enabling the
system PLL, uses 32 kHz clock to generate delay).
Rabbit 6000 User’s Manualdigi.com32
Master System Status Register(MSSR)(Address = 0x0435)
Bit(s)ValueDescription
7:6These bits are reserved and should be written with zeros.
50Direct Wi-Fi clock input.
1Enable Wi-Fi crystal oscillator.
40Direct USB clock input.
1Enable USB crystal oscillator.
30Normal operation.
(Read-
only)
1Small package address and data bus option enabled (TEST = 0xF or 0xC).
20Large package.
(Read-
only)
1Small package.
10Wi-Fi PLL not enabled or output not stable.
(Read-
only)
1Wi-Fi PLL is enabled, with stable output.
00System PLL not enabled or output not stable.
(Read-
only)
1System PLL is enabled, with stable output.
Rabbit 6000 User’s Manualdigi.com33
Enable Network Port Register(ENPR)(Address = 0x0430)
Bit(s)ValueDescription
70Disable Network Port C (the Wi-Fi port).
1Enable Network Port C (the Wi-Fi port).
60Disable Network Port B (the 10/100Base-T Ethernet port).
1Enable Network Port B (the 10/100Base-T Ethernet port).
50Disable Network Port D (the USB port).
1Enable Network Port D (the USB port).
40
Internal 10/100 PHY. This bit is ignored unless bit 6 of this register is also
set, at which point the internal PHY is powered up.
1External 10/100 PHY.
3:200Network Port D interrupts are disabled.
01Network Port D interrupts use Interrupt Priority 1.
10Network Port D interrupts use Interrupt Priority 2.
11Network Port D interrupts use Interrupt Priority 3.
1:000Network Port C interrupts are disabled.
01Network Port C interrupts use Interrupt Priority 1.
10Network Port C interrupts use Interrupt Priority 2.
11Network Port C interrupts use Interrupt Priority 3.
Rabbit 6000 User’s Manualdigi.com34
3. RESETAND BOOTSTRAP
3.1 Overview
The Rabbit 6000’s /RESET pin initializes everything in the processor except for the real-time clock registers, the contents of the battery-backed onchip-encryption RAM and the 32K battery-backed SRAM. If a
write cycle is in progress, it waits until the write cycle is completed to avoid potential memory corruption.
After reset, the Rabbit 6000 checks the state of the SMODE and SYSCFG pins. Depending on the state of
the SMODE pins, it either begins normal operation by fetching instruction bytes from memory bank zero,
which is mapped to either /CS0 or /CS3 depending on the state of the SYSCFG pin, or it enters a special
bootstrap mode where it fetches bytes from either Serial Port A or the slave port. In this mode, bytes can
be written to internal registers to set up the Rabbit 6000 for a particular configuration, or to memory to
load a program. The processor can begin normal operation once the bootstrap operation is completed.
Rabbit 6000 User’s Manualdigi.com35
3.1.1 Block Diagram
3.1.2 Registers
Register NameMnemonicI/O AddressR/WReset
Slave Port Control RegisterSPCR0x0024R/W0xx00000
Rabbit 6000 User’s Manualdigi.com36
3.2 Dependencies
3.2.1 I/O Pins
SMODE0, SMODE1 — When the Rabbit 6000 is first powered up or when it is reset, the state of the
SMODE0 and SMODE1 pins controls its operation.
SYSCFG — When the Rabbit 6000 is first powered up or when it is reset, the state of this pin controls
whether memory bank zero is mapped to /CS0 or the internal SRAM (/CS3).
/RESET — Pulling the /RESET pin low will initialize everything in the Rabbit 6000 except for the realtime clock registers, the 32K battery-backed RAM and the onchip-encryption RAM.
/CS1 — During reset the impedance of the /CS1 pin is high, and all other memory and I/O control signals
are held high. The special behavior of /CS1 allows an external RAM to be powered by the same source as
the VBATIO pin (which powers /CS1). In this case, a pullup resistor is required on /CS1 to keep the RAM
deselected during powerdown.
RESOUT — The RESOUT pin, which is powered by the backup battery, is high during reset and powerdown as long as VBAT and VBATIO are present, but low at all other times, and can be used to control an
external power switch to disconnect VDDIO from VBATIO when the main power source is removed.
3.2.2 Clocks
The processor requires a 32 kHz clock input to generate the 2400 bps internal clock required for asynchronous serial bootstrap, which is used when booting via Dynamic C and the Rabbit Field Utility. No 32 kHz
clock is required for either clocked serial or slave port bootstrap.
When the processor comes out of reset, the CPU clock and peripheral clocks are both in divide-by-8 mode.
3.2.3 Other Registers
RegisterFunction
SPCR
Enable/disable processor monitoring of SMODE
pins; read current state of SMODE pins.
3.2.4 Interrupts
There are no interrupts associated with reset or bootstrap.
Rabbit 6000 User’s Manualdigi.com37
3.3 Operation
Pulling the /RESET pin low will initialize everything in the Rabbit 6000 except for the real-time clock registers, the 32K battery-backed RAM and the onchip-encryption RAM. The reset of the Rabbit 6000 is
delayed until any write cycles in progress are completed; the reset takes effect as soon as no write cycles
are occurring. The reset sequence requires a minimum of 128 cycles of the main clock to complete in
either case.
During reset, the impedance of the /CS1 pin is high and all other memory and I/O control signals are held
high. The special behavior of /CS1 allows an external RAM to be powered by the same source as the
VBATIO pin (which powers /CS1). In this case, a pullup resistor is required on /CS1 to keep the RAM
deselected during powerdown. The RESOUT pin, which is powered by the backup battery, is high during
reset and powerdown as long as VBAT and VBATIO are present, but low at all other times, and can be
used to control an external power switch to disconnect VDDIO from VBATIO when the main power
source is removed.
Table 3-1 lists the condition of the processor after reset takes place. The state of all registers after reset is
provided in the chapter describing the specific peripheral.
Table 3-1. Rabbit 6000 Condition After Reset
FunctionOperation After Reset
CPU Clock,
Peripheral Clock
Clock Doubler,
Clock Dither
Memory Bank 0
Control Register
Memory Advanced
Control Register
Divide-by-8 mode
Disabled
/CS0, /OE0, write-protected,
4 wait states
8-bit interface
CPU Registers:
PC, SP, IIR, EIR,
0x0000
HTR
Interrupt Priority
(IP Register)
0xFF (Priority 3)
Watchdog TimerEnabled (2 seconds)
Secondary
Watchdog Timer
Disabled
Rabbit 6000 User’s Manualdigi.com38
The processor checks the SMODE and SYSCFG pins after the /RESET signal is inactive. Table 3-2 summarizes what happens.
Table 3-2. SMODE Pin Settings
SMODE Pins [1,0]SYSCFGOperation
No bootstrap; code is fetched from address 0x0000
000
on /CS0, /OE0.The internal SRAM is enabled as a
16-bit memory device.
No bootstrap; code is fetched from address 0x0000
001
on /CS3, /OE0. The internal SRAM is enabled as a
16-bit memory device.
01xBootstrap from the slave port.
10xBootstrap from Serial Port A, serial flash mode.
11xBootstrap from Serial Port A, asynchronous mode.
If both SMODE pins are zero, the Rabbit 6000 begins fetching instructions from the memory device
mapped into memory bank 0. When SYSCFG is low, memory bank 0 is set to /CS0 and /OE0. If SYSCFG
is high, memory bank 0 is set to /CS3 and /OE0. In both cases, the internal SRAM is selected in 16-bit
mode. If a 16-bit memory is used in memory bank 0, the first section of code must immediately select the
16-bit bus mode. Chapter 5 provides a short sample program to do this.
If either of the SMODE pins is high, the processor will enter the bootstrap mode and accept triplets from
Serial Port A, the serial flash bootstrap port, or the slave port, depending on the SMODE pin selection. It is
good practice to place pulldown resistors on the SMODE pins to ensure the proper operation of your
design.
In the bootstrap mode, the processor inhibits the normal memory fetch, and instead fetches instructions
from a small internal boot ROM. This program reads triplets of three bytes from the selected peripheral.
The first byte is the most-significant byte of a 16-bit address, the second byte is the least-significant byte
of the address, and the third byte is the data to be written. If the uppermost bit of the address is 1, then the
address is assumed to be an internal register address instead of a memory address, and the data are written
to the appropriate register instead. For example, a triplet of (0x04, 0x34, 0x5A) will write 0x5A to logical
memory address 0x0434, while a triplet of (0x80, 0x34, 0x5A) will write 0x5A to processor register 0x34.
Processor registers with addresses above 0xFF are not accessible in the bootstrap mode.
The boot ROM program waits for data to be available; each byte received automatically resets the watchdog timer with a 2-second timeout. Bytes must be received quickly enough to prevent timeout (or the
watchdog must be disabled).
The device checks the state of the SMODE pins each time it jumps back to the start of the ROM program
and responds according to the current state. In addition, by setting bit 7 of the Slave Port Control Register
(SPCR) high, the processor can be told to ignore the state of the SMODE pins and continue normal operation.
Rabbit 6000 User’s Manualdigi.com39
Note that the processor can be told to re-enter bootstrap mode at any time by setting bit 7 of SPCR low;
once this occurs and the least significant four bits of the current PC address are zero, the processor will
sample the state of the SMODE pins and respond accordingly. This feature allows in-line downloading
from the selected bootstrap port; once the download is complete, bit 7 of SPCR can be set high and the
processor will continue operating from where it left off.
As a security feature, any attempt to enter the bootstrap mode from either the SMODE pins or by writing
to bit 7 of the SPCR will erase the data stored in the onchip-encryption RAM. This prevents loading a
small program in memory to read out the data.
3.3.1 Asynchronous Serial Bootstrap
When the asynchronous serial bootstrap mode is selected by the SMODE pins, the Rabbit 6000 will begin
accepting triplets at 2400 bps on Serial Port A. The baud rate is generated from the 32 kHz clock input, so
a 32 kHz clock is required for this mode.
3.3.2 Serial Flash Bootstrap
When the serial flash bootstrap mode is selected by the SMODE pins, the Rabbit 6000 will enable the SPI
serial flash bootstrap port on pins PD4, PD5, PD6, and PB0; the pins’ functionality is listed in Table 3-3
below. Note that these pins can be used for Serial Port B in normal operation, so the serial flash may be
accessed with that serial port during normal operation.
Table 3-3. Serial Flash Bootstrap Pin Functions
PinSPI SignalOperation
PD4MOSIRabbit data transmit (to serial flash)
PD5MISORabbit data receive (from serial flash)
PD6CSChip select (to serial flash)
PB0SCKSerial clock (output to serial flash)
The Rabbit 6000 divides the main clock by 64 to provide the SPI clock for the serial flash bootstrap. Once
this mode is entered, the Rabbit 6000 will send the byte sequence “0x03 0x00 0x00 0x00”, which is an
industry-standard command that enables continuous read mode starting at serial flash address 0x0.
Figure 3.1 provides a sample timing diagram. The Rabbit 6000 will then read triplets out of the serial flash
until the bootstrap mode is exited.
Figure 3.1 SPI Timing Diagram for Serial Flash Bootstrap Mode
Rabbit 6000 User’s Manualdigi.com40
3.3.3 Parallel Bootstrap
When the parallel bootstrap mode is selected by the SMODE pins, the Rabbit 6000 will enable the parallel
slave port interface on Parallel Ports A and B, and will wait for triplets to be sent to that interface. See
Chapter 21 for more details on the operation of the slave port.
3.4 Register Descriptions
Slave Port Control Register(SPCR)(Address = 0x0024)
Bit(s)ValueDescription
70Program fetch as a function of the SMODE pins.
1Ignore the SMODE pins program fetch function.
6:5ReadThese bits report the state of the SMODE pins.
WriteThese bits are ignored and should be written with zero.
4:2000Disable the slave port. Parallel Port A is a byte-wide input port.
001Disable the slave port. Parallel Port A is a byte-wide output port.
010Enable the slave port, with /SCS from Parallel Port E bit 7.
011
Enable the external I/O bus. Parallel Port A is used for the data bus and
Parallel Port B[7:2] is used for the address bus.
100This bit combination is reserved and should not be used.
101This bit combination is reserved and should not be used.
110Enable the slave port, with /SCS from Parallel Port B bit 6.
111
Enable the external I/O bus. Parallel Port A is used for the data bus and
Parallel Port B[7:0] is used for the address bus.
1:000Slave port interrupts are disabled.
01Slave port interrupts use Interrupt Priority 1.
10Slave port interrupts use Interrupt Priority 2.
11Slave port interrupts use Interrupt Priority 3.
Rabbit 6000 User’s Manualdigi.com41
4. SYSTEM MANAGEMENT
4.1 Overview
There are a number of basic system peripherals in the Rabbit 6000 processor, some of which are covered in
later chapters. The peripherals covered in this chapter are the periodic interrupt, the real-time clock, the
watchdog timers, the battery-backed onchip-encryption RAM, and some of the miscellaneous output pins
and their control and processor registers that provide the processor ID and revision numbers.
The periodic interrupt, when enabled, is generated every 16 clocks of the 32 kHz clock (every 488 µs, or
2.048 kHz). This interrupt can be used to perform periodic tasks.
The real-time clock (RTC) consists of a 48-bit counter that is clocked by the 32 kHz clock. It is powered
by the VBAT pin, and so can be battery-backed. The value in the counter is not affected by reset, and can
only be set to zero by writing to the RTC control register. The 48-bit width provides a 272-year span before
rollover occurs.
There are two watchdog timers in the Rabbit 6000, both clocked by the 32 kHz clock. The main watchdog
timer can be set to time out from 250 ms to 2 seconds, and resets the processor if not reloaded within that
time. Its purpose is to restart the processor when it detects that a program gets stuck or disabled.
The secondary watchdog timer can time out from 30.5 µs up to 7.8 ms, and generates a Priority 3 secondary watchdog interrupt when it is not reset within that time. The primary use for the secondary watchdog is
to act as a safety net for the periodic interrupt — if the secondary watchdog is reloaded in the periodic
interrupt, it will count down to zero if the periodic interrupt stops occurring. In addition, it can be used as a
periodic interrupt on its own.
The battery-backed onchip-encryption RAM consists of 32 bytes of memory that are powered by the
VBAT pin (note that this RAM is separate from the battery-backed 32 KB SRAM). Their values are not
affected by a reset, but are erased if the state of the SMODE pins changes. These 32 bytes are intended for
storing sensitive data (such as an encryption key) somewhere other than an external memory device. The
“tamper-protection” erase feature erases these bytes if an attempt is made to load a program into the
onchip RAM to read out the bytes.
A feature new to the Rabbit 6000 is a 14-bit CPU clock cycle counter. This counter counts the number of
CPU cycles that occur during one 32 kHz clock period. This is useful for determining the frequency of the
main CPU oscillator which can be used in baud rate calculations as well as other CPU clock dependant
features.
The following other registers are also described in this chapter.
• Global Output Control Register (GOCR), which controls the behavior of the CLK, STATUS, /WDT,
and /BUFEN pins
• Global CPU Register (GCPU), which holds the identification number of the processor.
• Global Revision Register (GREV), which hold the revision number of the processor.
Rabbit 6000 User’s Manualdigi.com42
4.1.1 Block Diagram
Rabbit 6000 User’s Manualdigi.com43
4.1.2 Registers
Register NameMnemonicI/O AddressR/WReset
Global Control/Status RegisterGCSR0x0000R/W11000000
Real-Time Clock Control RegisterRTCCR0x0001W00000000
Global Output Control RegisterGOCR0x000ER/W00000000
Global ROM Configuration RegisterGROM0x002CR0xx00000
Global RAM Configuration RegisterGRAM0x002DR0xx00000
Global CPU Configuration RegisterGCPU0x002ER0xx00010
Global Revision RegisterGREV0x002FR0xx00000
Battery-Backed Onchip-Encryption RAM
Bytes 00–1F
Master System Configuration RegisterMSCR0x0434R/W00000000
Master System Status RegisterMSSR0x0435R/W00000x00
VRAM00–
VRAM1F
0x0600–
0x061F
R/Wxxxxxxxx
Rabbit 6000 User’s Manualdigi.com44
4.2 Dependencies
4.2.1 I/O Pins
The CLK, STATUS, /WDTOUT, and /BUFEN pins are controlled by GOCR. Each of these pins can be
used as general-purpose outputs by driving them high or low.
• The CLK pin can output the peripheral clock, the peripheral clock divided by two, or be driven high or
low.
• The STATUS pin can be active low during the first byte of each opcode fetch, active low during an
interrupt acknowledge, or driven high or low.
• The /WDTOUT pin can be active low whenever the watchdog timer resets the device or driven low.
• The /BUFEN pin can be active low during external I/O cycles, active low during data memory cycles,
or driven high or low.
The values in the battery-backed onchip-encryption RAM bytes are cleared if the signal on the SMODE
pins changes state.
4.2.2 Clocks
The periodic interrupt, real-time clock, watchdog timer, and secondary watchdog timer require the 32 kHz
clock.
4.2.3 Interrupts
The periodic interrupt is enabled in GCSR, and will occur every 488 µs. It is cleared by reading GCSR. It
can operate at Priority 1, 2, or 3.
The secondary watchdog interrupt will occur whenever the secondary watchdog is enabled and allowed to
count down to zero. It is cleared by restarting the secondary watchdog by writing 0x5F to WDTCR or writing a new timeout value to SWDTR. The secondary watchdog interrupt always occurs at Priority 3.
Rabbit 6000 User’s Manualdigi.com45
4.3 Operation
4.3.1 Periodic Interrupt
The following steps explain how a periodic interrupt is used.
1. Write the vector to the interrupt service routine to the internal interrupt table.
2. Enable the periodic interrupt by writing to GCSR.
3. The interrupt request is cleared by reading from GCSR.
A sample interrupt handler is shown below.
periodic_isr::
push af
ioi ld a, (GCSR) ; clear the interrupt request and get status
; handle any periodic tasks here
pop af
ipres
ret
4.3.2 Real-Time Clock
The real-time clock consists of six 8-bit registers that together comprise a 48-bit value. The real-time clock
is not synchronized to the read operation, so the least-significant byte should be read twice and checked for
matching values; if the two reads do not match, then the real-time clock may have been updating during
the read and should be read again.
Writing to RTC0R latches the current real-time clock value into the RTCxR holding registers, so the following sequence should be used to read the real-time clock.
1. Write any value to RTC0R and then read back a value from RTC0R.
2. Write a value to RTC0R again, and again read back a value from RTC0R.
3. If the two values do not match, repeat Step 2 until the last two readings are identical.
4. At this point, registers RTC1R through RTC6R can also be read and used.
Note that the periodic interrupt and the real-time clock are clocked by the same edge of the 32 kHz clock;
if read from the periodic interrupt, the count is guaranteed to be stable and only needs to be read once
(assuming it occurs within one clock of the 32 kHz clock).
The real-time clock can be reset by writing the sequence 0x40 – 0x80 to RTCCR. It can be reset and left in
the byte increment mode by writing 0x40 – 0xC0 to RTCCR and then writing bytes repeatedly to RTCCR
to increment the appropriate bytes of the real-time clock. The byte increment mode is disabled by writing
0x00 to RTCCR.
Rabbit 6000 User’s Manualdigi.com46
4.3.3 Watchdog Timer
The watchdog timer is enabled on reset with a 2-second timeout. Unless specific data are written to
WDTCR before that time expires, the processor will be reset. The watchdog timer can be disabled by writing a sequence of two bytes to WDTTR as described in the register description.
Table 4-1. Watchdog Timer Settings
WDTCR ValueEffect
0x5ARestart watchdog timer with 2-second timeout.
0x57Restart watchdog timer with 1-second timeout.
0x59Restart watchdog timer with 500-millisecond timeout.
0x53Restart watchdog timer with 250-millisecond timeout.
0x5FRestart the secondary watchdog timer.
The watchdog timer also contains a special test mode that speeds up the timeout period by clocking it with
the peripheral clock instead of the 32 kHz clock. This mode can be enabled by writing to WDTTR.
4.3.4 Secondary Watchdog Timer
The secondary watchdog timer is disabled on reset. The following steps explain how to use the secondary
watchdog timer.
1. Write the vector to the interrupt service routine to the internal interrupt table.
2. Write the desired timeout period to SWDTR. This also enables the secondary watchdog timer.
3. Restart the secondary watchdog timer by either writing the timeout period to SWDTR or writing
0x5F to WDTCR.
If the secondary watchdog timer counts down to zero, a Priority 3 secondary watchdog interrupt will occur.
This interrupt request is cleared by writing a new timeout value to SWDTR. A sample interrupt handler is
shown below.
secwd_isr::
push af
; determine why the interrupt occurred and take appropriate
action
ld a, 0x40 ; timeout period of 0x40/32kHz = 1.95ms
ioi ld (SWDTR), a ; clear the interrupt request
pop af
ipres
ret
4.3.5 CPU Clock Cycle Counter
This counter counts the number of CPU cycles that occur during one 32 kHz clock period. The least significant 8 bits of this 14-bit counter are accessed by reading WDTCR, and the upper 6 bits are accessed by
reading WDTTR. This value is updated continually, so be careful to not change the main clock frequency
between reading the two registers.
Rabbit 6000 User’s Manualdigi.com47
4.4 Register Descriptions
Global Control/Status Register(GCSR)(Address = 0x0000)
Bit(s)ValueDescription
7:5000No reset or watchdog timer timeout since the last read.
(rd-only)010
110
111
5
(write)
0No effect on the Periodic interrupt.
1Force a Periodic interrupt to be pending.
4:2000
001
010
011
100
The watchdog timer timed out. These bits will be cleared by reading the
register.
Hardware reset occurred. These bits will be cleared by reading the
register.
Power-on reset occurred. These bits will be cleared by reading the
register.
Processor clock from the main clock, divided by 8.
Peripheral clock from the main clock, divided by 8.
Processor clock from the main clock, divided by 8.
Peripheral clock from the main clock.
Processor clock from the main clock.
Peripheral clock from the main clock.
Processor clock from the main clock, divided by 2.
Peripheral clock from the main clock, divided by 2.
Processor clock from the 32 kHz clock, optionally divided via GPSCR.
Peripheral clock from the 32 kHz clock, optionally divided via GPSCR.
Processor clock from the 32 kHz clock, optionally divided via GPSCR.
101
Peripheral clock from the 32 kHz clock, optionally divided via GPSCR.
The main clock is disabled.
110
111
Processor clock from the main clock, divided by 4.
Peripheral clock from the main clock, divided by 4.
Processor clock from the main clock, divided by 6.
Peripheral clock from the main clock, divided by 6.
1:000Periodic interrupts are disabled.
01Periodic interrupts use Interrupt Priority 1.
10Periodic interrupts use Interrupt Priority 2.
11Periodic interrupts use Interrupt Priority 3.
Rabbit 6000 User’s Manualdigi.com48
Real-Time Clock Control Register(RTCCR)(Address = 0x0001)
Bit(s)ValueDescription
7:00x00
No effect on the real-time clock counter, or disable the byte increment
function, or cancel the real-time clock reset command.
Arm the real-time clock for reset or byte increment. This command must
0x40
be written prior to either the real-time clock reset command or the first
byte increment write.
0x80
0xC0
Reset all six bytes of the real-time clock counter to 0x00. The reset must
be preceded by writing 0x40 to arm the reset function.
Reset all six bytes of the real-time clock counter to 0x00, and remain in
byte-increment mode in preparation for setting the time.
7:601This bit combination must be used with every byte-increment write.
5:00No effect on the real-time clock counter.
1Increment the corresponding byte of the real-time clock counter.
Real-Time Clock x Register
(RTC0R)(Address = 0x0002)
7:0ReadThe current value of the 48-bit real-time clock counter is returned.
Write
Rabbit 6000 User’s Manualdigi.com49
Writing to RTC0R transfers the current count of the real-time clock to a
holding register while the real-time clock continues counting.
Watchdog Timer Control Register(WDTCR)(Address = 0x0008)
Bit(s)ValueDescription
7:00x5ARestart the watchdog timer with a 2-second timeout period.
0x57Restart the watchdog timer with a 1-second timeout period.
0x59Restart the watchdog timer with a 500 ms timeout period.
0x53Restart the watchdog timer with a 250 ms timeout period.
0x5FRestart the secondary watchdog timer.
otherNo effect on watchdog timer or secondary watchdog timer.
readReturn the least-significant 8bits of the CPU clock cycle counter.
Watchdog Timer Test Register(WDTTR)(Address = 0x0009)
Bit(s)ValueDescription
7:00x51
0x52
0x53
Clock the least significant byte of the watchdog timer from the peripheral
clock.
Clock the most significant byte of the watchdog timer from the peripheral
clock.
Clock both bytes of the watchdog timer, in parallel, from the peripheral
clock.
Disable the watchdog timer. This value, by itself, does not disable the
watchdog timer. Only a sequence of two writes, where the first write is
0x54
0x51, 0x52, or 0x53, followed by a write of 0x54, actually disables the
watchdog timer. The watchdog timer will be re-enabled by any other
write to this register.
otherNormal clocking (32 kHz clock) for the watchdog timer.
5:0readReturn the most-significant 6 bits of the CPU clock cycle counter.
The time constant for the secondary watchdog timer is stored. This time
constant will take effect the next time that the secondary watchdog
7:0
counter counts down to zero. The timer counts modulo n + 1, where n is
the programmed time constant. The secondary watchdog timer can be
disabled by writing the sequence 0x5A – 0x52 – 0x44 to this register.
Global ROM Configuration Register(GROM)(Address = 0x002C)
Bit(s)ValueDescription
70Program fetch as a function of the SMODE pins.
(Read-
only)
1Ignore the SMODE pins program fetch function.
6:5ReadThese bits report the state of the SMODE pins.
4:000000ROM identifier for this version of the chip.
Global RAM Configuration Register(GRAM)(Address = 0x002D)
Bit(s)ValueDescription
70Program fetch as a function of the SMODE pins.
(Read-
only)
1Ignore the SMODE pins program fetch function.
6:5ReadThese bits report the state of the SMODE pins.
4:000010RAM identifier for this version of the chip.
Rabbit 6000 User’s Manualdigi.com51
Global Output Control Register(GOCR)(Address = 0x000E)
Bit(s)ValueDescription
7:600CLK pin is driven with peripheral clock.
01CLK pin is driven with peripheral clock divided by 2.
10CLK pin is low.
11CLK pin is high.
5:400STATUS pin is active (low) during a first opcode byte fetch.
01STATUS pin is active (low) during an interrupt acknowledge.
10STATUS pin is low.
11STATUS pin is high.
3:200/WDTOUT pin functions normally.
01Enable /WDTOUT for test mode. Reserved for internal use only.
10/WDTOUT pin is low (1 cycle min, 2 cycles max, of 32 kHz).
11This bit combination is reserved and should not be used.
1:000/BUFEN pin is active (low) during external I/O cycles.
01/BUFEN pin is active (low) during data memory accesses.
10/BUFEN pin is low.
11/BUFEN pin is high.
Global CPU Register(GCPU)(Address = 0x002E)
Bit(s)ValueDescription
70Program fetch as a function of the SMODE pins.
(Read-
only)
1Ignore the SMODE pins program fetch function.
6:5ReadThese bits report the state of the SMODE pins.
4:000100CPU identifier for this version of the chip.
Rabbit 6000 User’s Manualdigi.com52
Global Revision Register(GREV)(Address = 0x002F)
Bit(s)ValueDescription
70Program fetch as a function of the SMODE pins.
(Read-
only)
1Ignore the SMODE pins program fetch function.
6:5ReadThese bits report the state of the SMODE pins.
4:000000CPU identifier for this version of the chip.
7:0General-purpose RAM locations. Cleared by Intrusion Detect conditions.
Rabbit 6000 User’s Manualdigi.com53
5. MEMORY MANAGEMENT
5.1 Overview
The Rabbit 6000 supports both 8-bit and 16-bit external flash and SRAM devices; three chip selects, and
two read/write-enable strobes allow up to six external devices to be attached at once. The 8-bit mode
allows 0, 1, 2, or 4 wait states to be specified for each device, and the 16-bit mode allows 0 to 7 wait states
depending on the settings. Both 8-bit and 16-bit page-mode devices are also supported.
In addition, the Rabbit 6000 contains 1 MB of internal high-speed RAM and 32 KB of battery-backed
SRAM (also high speed) that reside on their own chip select signal. They can both be enabled in either the
8-bit or the 16-bit mode.
The Rabbit 6000’s physical memory space contains four consecutive banks, each of which can be set for
equal sizes ranging from 128 KB up to 4 MB, providing a total physical memory range from 512 KB up to
16 MB. Each bank can be mapped to an individual chip-select/enable strobe pair for a memory device. In
addition, each bank can be divided into two equal-sized low and high sub banks with separate chip-select/
enable strobe mapping. Figure 5.1 shows a sample configuration.
Rabbit 6000 User’s Manualdigi.com54
Figure 5.1 Mapping Rabbit 6000 Physical Memory Space
Either one or both of the two most significant address bits (which are used to select the quadrant) can be
inverted, providing the ability to bank-switch other pages from a larger memory device into the same
memory bank.
Code is executed in the 64 KB logical memory space, which is divided into four segments: root, data,
stack, and XMEM. The root segment is mapped directly to physical address 0x000000, while the data and
stack segments can be mapped to 4 KB boundaries anywhere in the physical space. The boundaries
between the root and data segments and the data and stack segments can be adjusted in 4 KB blocks as
well.
The XMEM segment is a fixed 8 KB, and points to a physical memory address block specified in the
LXPC register. It is possible to run code in the XMEM window, providing an easy means of storing and
executing code beyond the 64 KB logical memory space. Special call and return instructions to physical
addresses are provided that automatically update the LXPC register as necessary.
Rabbit 6000 User’s Manualdigi.com55
Figure 5.2 Logical and Physical Memory Mapping
The Rabbit 2000 and 3000 had numerous instructions for reading and writing data to logical addresses, but
only had limited support for reading and writing data to a physical memory address. In the Rabbit 4000, a
wide range of instructions was provided to read and write to physical addresses. The same instructions can
be used to write to logical addresses. All of these instructions are available in the Rabbit 6000, as well as
new instructions for more operations using physical addresses.
The 64 KB logical memory space limitation can also be expanded by using the separate instruction and
data space mode. When this mode is enabled, address bit A16 is inverted for all data accesses in the root
and/or data segments, and the most-significant bit of the bank select bits is inverted for all data accesses in
the root and/or data segments before bank selection (physical device) occurs. These two features allow
both code and data to access separate 64 KB logical spaces instead of sharing a single space.
It is possible to protect memory in the Rabbit 6000 at three different levels—each of the memory banks
can be made read-only, physical memory can be write-protected in 64 KB blocks, and two of those 64 KB
blocks can be protected with a granularity of 4 KB. A Priority 3 interrupt will occur if a write is attempted
in one of the protected 64 KB or 4 KB blocks. In addition, it is possible to place limits around the code execution stack and generate an interrupt if a stack-related write occurs within 16 bytes of those limits.
The drive strength and slew rate can be controlled for the address bus, data bus, and memory strobes (other
than /CS1, which has fixed functionality). In addition, a 75 k pullup or pulldown resistor can be enabled
on the data bus.
Memory Bank 0 Control RegisterMB0CR0x0014R/W00001000
Memory Bank 1 Control RegisterMB1CR0x0015R/Wxxxxxxxx
Memory Bank 2 Control RegisterMB2CR0x0016R/Wxxxxxxxx
Memory Bank 3 Control RegisterMB3CR0x0017R/Wxxxxxxxx
MMU Expanded Code RegisterMECR0x0018R/W00000000
Memory Timing Control RegisterMTCR0x0019R/W00000000
Memory Alternate Control RegisterMACR0x001DR/W00000000
Memory Bank 0 Low Control RegisterMB0LCR0x0400R/W00001000
Memory Bank 0 High Control RegisterMB0HCR0x0401R/W00001000
Memory Bank 1 Low Control RegisterMB1LCR0x0402R/W00001000
Memory Bank 1 High Control RegisterMB1HCR0x0403R/W00001000
Memory Bank 2 Low Control RegisterMB2LCR0x0404R/W00001000
Memory Bank 2 High Control RegisterMB2HCR0x0405R/W00001000
Memory Bank 3 Low Control RegisterMB3LCR0x0406R/W00001000
Memory Bank 3 High Control RegisterMB3HCR0x0407R/W00001000
Advanced /CS0 Control RegisterACS0CR0x0410R/W00000000
Advanced /CS1 Control RegisterACS1CR0x0411R/W00000000
Advanced /CS2 Control RegisterACS2CR0x0412R/W00000000
RAM Segment RegisterRAMSR0x0448R/W00000000
Write-Protect n Register (n = 0–31)WPnR0x460 + nW00000000
Rabbit 6000 User’s Manualdigi.com58
Register NameMnemonicI/O AddressR/WReset
Write-Protect Segment A RegisterWPSAR0x0480W00000000
Write-Protect Segment A Low RegisterWPSALR0x0481W00000000
Write-Protect Segment A High RegisterWPSAHR0x0482W00000000
Write-Protect Segment B RegisterWPSBR0x0484W00000000
Write-Protect Segment B Low RegisterWPSBLR0x0485W00000000
Write-Protect Segment B High RegisterWPSBHR0x0486W00000000
Stack Limit Control RegisterSTKCR0x0444R/W00000000
Stack Low Limit RegisterSTKLLR0x0445Wxxxxxxxx
Stack High Limit RegisterSTKHLR0x0446Wxxxxxxxx
Address Bus Pin Control RegisterADPCR0x04A0Wxxx00000
Data Bus Pin Control RegisterDBPCR0x04A1Wxxx00000
Control Pin Control RegisterCPCR0x04A2Wxxx00000
Rabbit 6000 User’s Manualdigi.com59
5.2 Dependencies
5.2.1 I/O Pins
There are three chip select pins, /CS0, /CS1, and /CS2; two read strobes, /OE0 and /OE1; and two write
strobes, /WE0 and /WE1. /CS3 is available to the internal SRAMs only and does not come out to a pin.
There are 16 dedicated data bus pins, D0 through D15, and 25 dedicated address pins, A0 through A23,
and /A0 to allow byte access to 16 bit devices.
If the SYSCFG pin is held high on startup, the Memory Bank 0 Control Register and Memory Bank 0 Low
Control Register are set to a particular value that maps to the internal SRAM. See Section 5.3.1 for more
details.
The drive strength and slew rate are selectable for the address and data bus pins and for the memory strobe
pins (except /CS1) via ADPCR, DBPCR, and CPCR. /CS1 has a fixed setting of 8 mA drive and fast slew.
Internal pullup and/or pulldown resistors are also selectable on the data bus.
5.2.2 Clocks
All memory operations are clocked by the processor clock.
5.2.3 Interrupts
When a write is attempted to a write-protected 64 KB or 4 KB block, a write-protection violation interrupt
is generated. The interrupt request is cleared when it is handled. The write-protection violation interrupt
vector is in the IIR at offset 0x090. It is always set to Priority 3.
When a stack-related write is attempted to a region outside that set by the stack limit registers, a stack limit
violation occurs. The interrupt request is cleared when it is handled. The stack limit violation interrupt vector is in the IIR at offset 0x1B0. It is always set to Priority 3.
Rabbit 6000 User’s Manualdigi.com60
5.3 Operation
5.3.1 Internal RAM
There are two internal RAM devices in the Rabbit 6000. A 1 MB RAM is located on /CS3, /OE0, /WE0,
and a 32 KB battery-backed SRAM is located on /CS3, /OE1, /WE1. Both of them can be run at speeds up
to 200 MHz with no additional wait states.
The 1 MB RAM is a pipelined device, meaning that the DMA peripheral can access it between code
fetches and data read/writes, providing a significant performance improvement for applications that use
DMA such as networking. However, there are some restrictions in the use of the 1 MB RAM:
1. If the 32 kHz clock is not present, its performance will be halved. This will not be noticeable unless
DMA is also operational.
2. The data contents will only be preserved if the main clock is greater than 12 MHz.
The internal 32 KB SRAM is powered by the VBAT pin. Its contents will be preserved as long as 1.2 V is
kept on VBAT.
5.3.2 Memory Management Unit (MMU)
Code execution takes place in the 64 KB logical memory space, which is divided into four segments: root,
data, stack, and extended (XMEM). The root segment is always mapped starting at physical address
0x000000, but the other segments can be remapped to start at any physical 4 KB block boundary.
The data and stack segment mappings are set by writing to the appropriate register, as shown in Table 5-1.
The DATASEG and STACKSEG registers provide backwards compatibility to the Rabbit 2000 and 3000
processors; these registers map directly to DATASEGL and STACKSEGL, but the contents of
DATASEGH and STACKSEGH are set to zero.
Table 5-1. Memory Management Registers
RegisterSegmentSizeComments
DATASEGData8 bits
DATASEGLData8 bits—
DATASEGHData4 bits—
STACKSEGStack8 bits
STACKSEGLStack8 bits—
STACKSEGHStack4 bits—
XPCXMEM8 bits
Maps to DATASEGL;
DATASEGH set to 0x00
Maps to STACKSEGL;
STACKSEGH set to 0x00
Loaded via instructions
LD XPC,A and LD A,XPC
LXPCXMEM12 bits
Rabbit 6000 User’s Manualdigi.com61
Loaded via instructions:
LD LXPC,HL and LD HL,LXPC
Each of these registers provides a multiple-of-4 KB offset that is added to the logical address to provide a
physical address as shown in Figure 5.3.
Figure 5.3 MMU Operation
5.3.3 Memory Bank Operation
On startup the Rabbit 6000 checks the status of the SYSCFG pin. To provide support for external memory,
the SYSCFG pin should be set low and Memory Bank 0 enabled to use /CS0, /OE0, and /WE0 in 8-bit
mode with four wait states and write protection enabled. It is expected that an external flash device containing startup code is attached to those strobes. The other memory banks come up undefined and their
controls should be set via the appropriate MBxCR register to a valid setting before use.
If SYSCFG is high, Memory Bank 0 is enabled to use /CS3, /OE0, and /WE0 in 16-bit mode. This allows
the processor to start operation directly out of the internal 1 MB RAM.
The size of the memory banks is defined in the MECR register. The default size is 256 KB (the bank selection looks at the two most significant address bits), but this value can be adjusted down to 128 KB or up to
4 MB per bank.
Each bank can be further subdivided into two equal-sized sub banks by configuring them in MBxLCR and
MBxHCR. Each sub bank can be mapped to a separate chip-select/enable combination, allowing up to
eight separate devices to be mapped in simultaneously.
The two address bits used to select the bank can be inverted in MBxCR/MBxLCR/MBxHCR, which
enables mapping different sections of a memory device larger than the current memory bank into memory.
Figure 5.4 shows an example of this feature.
Rabbit 6000 User’s Manualdigi.com62
Figure 5.4 Mapping Different Sections of a Memory Device
Larger Than the Current Memory Bank
It is possible to extend the timing of the /OE and/or /WE strobes by one half of a clock. This provides
slightly longer strobes for slower memories; see the timing diagrams in Chapter 37. These options are
available in MTCR.
It is possible to force /CS1 to be always active in MMIDR; enabling this will cause conflicts only if a device
shares a /OE or /WE strobe with another device. This option allows faster access to particular memory
devices.
Rabbit 6000 User’s Manualdigi.com63
5.3.4 Memory Modes
The Rabbit 6000 supports both 8-bit and 16-bit memories on all chip selects, including both internal
RAMs. It also provides support for page-mode devices. The mode for each chip select is set in MACR; 8bit mode is the default for all chip selects.
When in basic 8-bit mode, the wait states are selected in the memory bank registers, MBxCR; the options
are 0, 1, 2, or 4 wait states. Note that this may put an upper bound on the processor clock speed, depending
on the access time of your 8-bit memory device. When in 16-bit or page-mode (either 8- or 16-bit), the
wait states are selected by both the MBxCR and the advanced chip select registers, ACSxCR.
Table 5-2. Memory Modes
Mode
Byte
Writes?
Word
Reads?
Word
Writes?
Wait State
Register
Wait State
Options
8-bitYesNoNoMBxCR0, 1, 2, 4
16-bitSelectableYesYes
8-bit Page ModeYesNoNo
16-bit Page ModeSelectableYesYes
MBxCR
ACSxCR
MBxCR
ACSxCR
MBxCR
ACSxCR
0–19
0–19 first access,
0–11 page
accesses
0–19 first access,
0–11 page
accesses
A 16-bit memory device may or may not support byte writes, so there is an option to select between these
two cases in ACSxCR. With the default option any byte writes or unaligned word writes to a 16-bit memory will be suppressed (i.e., the /WE will not be asserted). Any aligned word reads or writes are recognized
internally and are combined into just one write transaction on the external bus. The other option for the 16bit bus does not inhibit byte writes or unaligned word writes, and replicates the byte data on both halves of
the data bus in these cases. In this mode the A0 and /A0 signals must be used by the memory to enable the
individual bytes.
Table 5-3. A0 and /A0 Signals for Various Transaction Types
Transaction TypeA0/A0
Word Read (prefetch only)LowLow
Word WriteLowLow
Byte Read or Write — Even
Address
LowHigh
Byte Read or Write — Odd AddressHighLow
Rabbit 6000 User’s Manualdigi.com64
All of the power-saving modes in Chapter 36 can be used with the 16-bit mode.
The second advanced bus mode is the Page Mode. This mode also can be enabled for any external chip
select, and can be used with either 8-bit or 16-bit memories connected to these chip selects. Page-Mode
memories provide for a faster access time if the requested data are in the same page as the previous data. In
the Rabbit 6000 (and most memory devices) a page can be selected as either 8 or 16 bytes. Thus, if an
address is identical to the previous address except in the lower four bits, the access time is assumed to be
faster. These wait-state options are also controlled in the ACSxCR.
In Page Mode the chip select and /OE remain active from one page access to the next, and only the three or
four least-significant bits of the address change to request the new data. This obviously interferes with a
number of the power-saving modes and will take precedence over them for chip select accesses, as appropriate. The power-saving modes will still apply to the other chip select and output-enable signals. The
logic recognizes which /OE is being used with each chip select in the Page Mode.
As mentioned previously, the ACSxCR registers each contain three fields to control the generation of wait
states in the advanced bus modes. These settings are in addition to the wait-state setting in MBxCR when
an advanced bus mode is enabled. When the 16-bit bus is enabled, one to fifteen automatic wait states for
memory read bus cycles can be enabled in addition to the zero to four wait states in MBxCR. This setting
is also used for the first access when the Page Mode is enabled; a second setting selects the number of wait
states for all subsequent reads in the Page Mode, allowing from zero to three automatic wait states for the
same-page accesses in the Page Mode. The choices available for the advanced bus wait states are sufficient
to allow interfacing to a variety of standard memories for any Rabbit 6000 speed grade.
When a 16-bit memory is connected to /CS0, the first few instructions must program the device to operate
in 16-bit mode. This code is shown below. This code should be the first thing executed by your device.
Because the processor is fetching bytes from a 16-bit memory device that is not connected to A0, only
one-byte instructions can be used, and they must occur in pairs.
Rabbit 6000 User’s Manualdigi.com65
ORG0000h
XORA; a <= 00000000
XORA
LDH, A; h <= 00000000
LDH, A
SCF
SCF
RLA; a <= 00000001
RLA; a <= 00000010
LDB, A; b <= 00000010
LDB, A
SCF
SCF
ADCA, B; a <= 00000101
ADCA, B ; a <= 00000111
ADDA, A ; a <= 00001110
ADDA, A; a <= 00011100
SCF
SCF
ADCA, H; a <= 00011101
ADCA, H
LDL, A; l <= 00011101
LDL, A
IOI; two IOIs same as one
IOI
LD(HL), B; MACR <= 00000010
LD(HL), B; dummy memory write (no /WE
NOP; required delay to start
NOP; up the 16-bit bus
5.3.5 Separate Instruction and Data Space
To make better use of the 64 KB of logical space, an option is provided to map code and data accesses in
the same address space to separate devices. This is accomplished by enabling the inversion of A16 and the
most-significant bit of the bank select bits for accesses in the root and data segments. Careful use of these
features allows both code and data to separately use up to 64 KB of logical memory.
The RAM segment register (RAMSR) provides a shortcut for updating code by accessing it as data. It provides a “window” that uses the instruction address decoding when read or written as data. This mapping
will only occur when the RAMSR is within the root or data segments; the RAMSR will be ignored if it is
mapped to the stack segment or XPC window.
Rabbit 6000 User’s Manualdigi.com66
5.3.6 Memory Protection
Memory blocks may be protected at three separate granularities, as shown in Table 5-4. Writes can be prevented to any memory bank by writing to MBxCR. Writes can be prevented and trapped at a resolution of
64 KB by enabling protection for that block in the appropriate WPxR register. For further control, two of
those 64 KB blocks can be further subdivided into 4 KB blocks by selecting them as the write protect segments A or B.
When a write is attempted to a block protected in WPxR, WPSxLR, or WPSxHR, a Priority 3 write-protect
interrupt occurs. This feature is automatically enabled by writing to the block protection registers; to disable it, set all the write-protect block registers to zero.
The Rabbit 6000 provides stack overflow and underflow protection. Low and high logical address limits
can be set in STKLLR and STKHLR; a Priority 3 stack-violation interrupt occurs when a stack-based
write occurs within the 16 bytes below the upper limit or within the 16 bytes above the lower limit. Note
that the writes will still occur even if they are within the 16 bytes surrounding the limits, but the interrupt
can serve as a warning to the application that the stack is in danger of being over or underrun.
The stack checking can be enabled or disabled by writing to STKCR.
Internal I/O addresses are decoded using only the lower eight bits of the
70
1
6This bit is reserved an must be written with zero.
internal I/O address bus. This restricts internal I/O addresses to the range
0x0000–0x00FF.
Internal I/O addresses are decoded using all 15 bits of the address internal
I/O address bus. This option must be selected to access internal I/O
addresses of 0x0100 and higher.
50
1
Enable A16 and bank select address MSB inversion independent of
instruction/data.
Enable A16 and bank select address MSB inversion for data accesses
only. This enables the instruction/data split.
40Normal /CS1 operation.
Force /CS1 always active. This will not cause any conflicts as long as the
1
memory using /CS1 does not also share an output enable or write enable
with another memory.
30Normal operation.
1
For a data segment access, invert bank select address MSB before
MBxCR decision.
20Normal operation.
1For a data segment access, invert A16
10Normal operation.
1
For a root segment access, invert bank select address MSB before
MBxCR decision.
Lower limit for stack-limit checking. If a stack operation or stack-relative
7:0
memory access is attempted at an address less than {STKLLR, 0x10}, a
stack-limit violation interrupt is generated.
Stack High Limit Register(STKHLR)(Address = 0x0446)
Bit(s)ValueDescription
Upper limit for stack-limit checking. If a stack operation or stack-relative
7:0
memory access is attempted at an address greater than {STKHLR, 0xEF},
a stack-limit violation interrupt is generated.
Address Bus Pin Control Register(ADPCR)(Address = 0x04A0)
Bit(s)ValueDescription
7:5These bits are reserved and should be written with zeros.
40Fast output slew rate.
1Slow output slew rate.
3:2004 mA output drive capability.
018 mA output drive capability.
1010 mA output drive capability.
1114 mA output drive capability.
1:0These bits are reserved and should be written with zeros.
Rabbit 6000 User’s Manualdigi.com80
Data Bus Pin Control Register(DBPCR)(Address = 0x04A1)
Bit(s)ValueDescription
7:5These bits are reserved and should be written with zeros.
40Fast output slew rate.
1Slow output slew rate.
3:2004 mA output drive capability.
018 mA output drive capability.
1010 mA output drive capability.
1114 mA output drive capability.
1:000No pullup or pulldown resistors.
0175 k pullup resistor.
1075 k pulldown resistor.
1175 k keeper.
Rabbit 6000 User’s Manualdigi.com81
Control Pin Control Register(CPCR)(Address = 0x04A2)
Bit(s)ValueDescription
7:5These bits are reserved and should be written with zeros.
40Fast output slew rate.
1Slow output slew rate.
3:2004 mA output drive capability.
018 mA output drive capability.
1010 mA output drive capability.
1114 mA output drive capability.
1:0These bits are reserved and should be written with zeros.
Rabbit 6000 User’s Manualdigi.com82
6. INTERRUPTS
6.1 Overview
The Rabbit 6000 can operate at one of four priority levels, 0–3, with Priority 0 being the expected standard
operating level. The current priority and up to three previous priority levels are kept in the processor’s 8bit IP register, where bits 0–1 contain the current priority. Every time an interrupt is handled or an IPSET
instruction occurs, the value in the register is shifted left by two bits, and the new priority placed in bits 0–
1. When an IPRES or IRET instruction occurs, the value in IP is shifted right by two bits (bits 0–1 are
shifted into bits 6–7). On reset, the processor starts at Priority 3.
Most interrupts can be set to be Priority 1–3. A pending interrupt will be handled only if its interrupt priority is greater than the current processor priority. This means that even a Priority 3 interrupt can be blocked
if the processor is currently at Priority 3. The System Mode Violation, Stack Limit Violation, Write Protection Violation, secondary watchdog, and breakpoint interrupts are always enabled at Priority 3. In addition,
when the System/User Mode is enabled and the processor is in the User Mode, the processor will not actually enter Priority 3; any attempt to enter Priority 3 will actually be requested as Priority 2.
When an interrupt is handled, a call is executed to a fixed location in the interrupt vector tables. This operation requires 11 clocks, the minimum interrupt latency for the Rabbit 6000. There are two vector tables,
the internal and the external interrupt vector tables, that can be located anywhere in logical memory by setting the processor’s IIR and EIR registers. The IIR and EIR registers hold the upper byte of each table’s
address. For example, if IIR is loaded with 0xC4, then the internal interrupt vector table will start at the
logical memory address 0xC400.
Both the internal and external interrupt vector table occupy 512 bytes. Since the RST and SYSCALL vectors use all eight bits of the IIR for addressing, the lowermost bit of IIR should always be set to zero so to
keep some vectors from inadvertently overlapping.
Each interrupt’s vector begins on a 16-byte boundary inside the vector tables. It may be possible to fit a
small routine into that space, but it is typical to place a call to a separate routine in that location.
Some Rabbit 6000 instructions are “chained atomic,” which means that an interrupt cannot occur between
that instruction and the following instruction. These instructions are useful for doing things like exiting
interrupt handlers properly or updating semaphores.
Rabbit 6000 User’s Manualdigi.com83
6.2 Operation
NEW
NEW
NEW
NEW
NEW
NEW
To ensure proper operation, all interrupt handler routines should be written according to the following
guidelines.
• Push all registers to be used by the routine onto the stack before use, and pop them off the stack before
returning from the ISR.
• Keep the ISR as short and fast as possible. The use of assembly code is strongly recommended.
• If the ISR will run for some time, lower the interrupt priority as soon as possible within the ISR to allow
other interrupts to occur.
• A number of special rules apply to interrupts when operating in the system/user mode; please see the
appropriate chapter for more details.
6.3 Interrupt Tables
Table 6-1 shows the structure of the internal interrupt vector table. The first column is the vector address
offset within the table. The second column shows the vectors in the first 256 bytes of the table, and the
third column shows the vectors in the second 256 bytes. Interrupts that are new to the Rabbit 6000 are
highlighted as such.
Note that the breakpoint interrupt moved from its location in previous Rabbit processors to make room for
the new external interrupt vectors.
Rabbit 6000 User’s Manualdigi.com85
There is a priority among interrupts if multiple requests are pending, as shown in Table 6-3. Interrupts
marked as “cleared automatically” have their requests cleared when the interrupt is first handled.
Table 6-3. Interrupt Priorities
PriorityInterrupt SourceAction Required to Clear the Interrupt
Highest BreakpointRead the status from BDCR.
System Mode ViolationCleared automatically by interrupt acknowledge cycle.
Stack Limit ViolationCleared automatically by interrupt acknowledge cycle.
Write Protection ViolationCleared automatically by interrupt acknowledge cycle.
Secondary WatchdogRestart secondary watchdog by writing to WDTCR.
External Interrupt 7–0Cleared automatically by interrupt acknowledge cycle.
Periodic Interrupt (2 kHz)Read the status from GCSR.
Quadrature DecoderRead the status from QDCSR.
Timer BRead the status from TBCSR.
Timer ARead the status from TACSR.
Input CaptureRead the status from ICCSR.
PWMWrite any PWM register.
Timer CRead the status from TCCSR.
Slave Port
Rd: Read from SPD0R, SPD1R or SPD2R.
Wr: Write to SPD0R, SPD1R, SPD2R or dummy write to SPSR.
DMA 15–0Cleared automatically by interrupt acknowledge cycle.
Network Port BRead interrupt status from NBCSR.
Network Port CRead interrupt status from NCCSR.
Network Port DRemove the interrupting condition.
Flexible Interface Module A
Flexible Interface Module B
A/D ConverterRead from ADCLR.
Serial Port E
Serial Port F
Serial Port G (I
Serial Port A
Serial Port B
Serial Port C
LowestSerial Port D
Write a 1 to bit 7 of FAIIR, wait for FIMA to clear the interrupt
code in FAOIR, and then clear bit 7 of FAIIR.
Write a 1 to bit 7 of FBIIR, wait for FIMB to clear the interrupt
code in FBOIR, and then clear bit 7 of FBIIR.
Rx: Read from SEDR or SEAR.
Tx: Write to SEDR, SEAR, SELR or dummy write to SESR.
Rx: Read from SFDR or SFAR.
Tx: Write to SFDR, SFAR, SFLR or dummy write to SFSR.
2
C)
Remove the interrupting condition.
Rx: Read from SADR or SAAR.
Tx: Write to SADR, SAAR, SALR or dummy write to SASR.
Rx: Read from SBDR or SBAR.
Tx: Write to SBDR, SBAR, SBLR or dummy write to SBSR.
Rx: Read from SCDR or SCAR.
Tx: Write to SCDR, SCAR, SCLR or dummy write to SCSR.
Rx: Read from SDDR or SDAR.
Tx: Write to SDDR, SDAR, SDLR or dummy write to SDSR.
Rabbit 6000 User’s Manualdigi.com86
7. EXTERNAL INTERRUPTS
7.1 Overview
The Rabbit 6000 has eight external interrupt vectors. Interrupts 0 and 1 can share up to three pins each, and
interrupts 2–7 each only have one pin, providing a total of up to 12 external interrupt inputs out of 22 possible pins. In the case of multiple interrupts sharing an interrupt vector for interrupts 0 or 1, the data register corresponding to the parallel port(s) being used can be read. Each interrupt vector can be set to trigger
on a rising edge, a falling edge, or both edges.
The signal on the external interrupt pin must be present for at least three peripheral clock cycles to be
detected. In addition, the Rabbit 6000 has a minimum latency of 11 clocks to respond to an interrupt, so
the minimum external interrupt response time is three peripheral clock cycles plus 11 processor clock
cycles. Note that this just gets the program to the ISR jump table. An additional 5 or 7 clocks is required
for the jp (jump) instruction plus whatever remaining clocks need to executed in the “current” instruction.
Rabbit 6000 User’s Manualdigi.com87
7.2 Block Diagram
Rabbit 6000 User’s Manualdigi.com88
7.2.1 Registers
Register NameMnemonicI/O AddressR/WReset
Interrupt 0 Control RegisterI0CR0x0098R/W00000000
Interrupt 1 Control RegisterI1CR0x0099R/W00000000
Interrupt 2 Control RegisterI2CR0x009AR/Wxx000000
Interrupt 3 Control RegisterI3CR0x009BR/Wxx000000
Interrupt 4 Control RegisterI4CR0x009CR/Wxx000000
Interrupt 5 Control RegisterI5CR0x009DR/Wxx000000
Interrupt 6 Control RegisterI6CR0x009ER/Wxx000000
Interrupt 7 Control RegisterI7CR0x009FR/Wxx000000
Rabbit 6000 User’s Manualdigi.com89
7.3 Dependencies
7.3.1 I/O Pins
External interrupts 0 and 1 can be enabled on pins PD0, PD1, PE0, PE1, PE4, and PE5. The remaining
interrupts can be enabled on any pin of Parallel Ports F or G. Each pin is associated with a particular interrupt vector as shown in Table 7-1 below.
Table 7-1. Rabbit 6000 Interrupt Vectors
VectorRegisterPins
Interrupt 0I0CRPD0, PE0, PE4
Interrupt 1I1CRPD1, PE1, PE5
Interrupt 2I2CRPF0–PF7, PG0–PG7
Interrupt 3I3CRPF0–PF7, PG0–PG7
Interrupt 4I4CRPF0–PF7, PG0–PG7
Interrupt 5I5CRPF0–PF7, PG0–PG7
Interrupt 6I6CRPF0–PF7, PG0–PG7
Interrupt 6I7CRPF0–PF7, PG0–PG7
7.3.2 Clocks
The external interrupts are controlled by the peripheral clock. A pulse must be present for at least three
peripheral clock cycles to trigger an interrupt.
7.3.3 Interrupts
An external interrupt is generated whenever the selected edge occurs on an enabled pin. The interrupt
request is automatically cleared when the interrupt is handled.
The external interrupt vectors are in the EIR at offsets 0x000
in the appropriate IxCR.
–0x070. They can be set as Priority 1, 2, or 3
Rabbit 6000 User’s Manualdigi.com90
7.4 Operation
The following steps must be taken to enable the external interrupts.
1. Write the vector(s) to the interrupt service routine to the external interrupt table.
2. Configure IxCR to select which pins are enabled for external interrupts, what edges are detected on
each pin, and the interrupt priority.
3. When an interrupt occurs for interrupt 0 or 1, read PDDR and/or PEDR to determine which pin has
a signal if more than one pin is enabled for a given external interrupt. Interrupts 2-7 allow only a
single input at any one time.
7.4.1 Example ISR
A sample interrupt handler is shown below.
extInt_isr::
; respond to external interrupt here
; interrupt is automatically cleared by interrupt acknowledge
ipres
ret
Rabbit 6000 User’s Manualdigi.com91
7.5 Register Descriptions
Interrupt x Control Register
(I0CR)(Address = 0x0098)
(I1CR)(Address = 0x0099)
Bit(s)ValueDescription
7:600Parallel Port D low nibble interrupt disabled.
01Parallel Port D low nibble interrupt on falling edge.
10Parallel Port D low nibble interrupt on rising edge.
11Parallel Port D low nibble interrupt on both edges.
5:400Parallel Port E high nibble interrupt disabled.
01Parallel Port E high nibble interrupt on falling edge.
10Parallel Port E high nibble interrupt on rising edge.
11Parallel Port E high nibble interrupt on both edges.
3:200Parallel Port E low nibble interrupt disabled.
01Parallel Port E low nibble interrupt on falling edge.
10Parallel Port E low nibble interrupt on rising edge.
11Parallel Port E low nibble interrupt on both edges.
Parallel Port A is a byte-wide port that can be used as an input or an output port. Parallel Port A is also
used as the data bus for the slave port and external I/O bus. The Slave Port Control Register (SPCR) is
used to configure how Parallel Port A is used. Parallel Port A is an input after reset. If the SMODE pins
have selected the slave port bootstrap mode, Parallel Port A will be the slave port data bus until disabled by
the processor. Parallel Port A can also be used as an external I/O data bus to isolate external I/O from the
main data bus.
The drive strength and slew rate can be individually controlled for each Parallel Port A pin. In addition, a
75 k pullup or pulldown resistor can be enabled on each pin.
Note that it is possible for either Flexible Interface Module to use any of the parallel ports. See Chapter 33
for more information.
Table 8-1. Parallel Port A Pin Alternate Output Functions
Pin Name
PA[7:0]SD[7:0]ID[7:0]
After reset, the default condition for Parallel Port A is all inputs. When PADR is read, the actual voltage on
the pins is returned, whether the port is set as an input or an output.
Slave Port
Data Bus
External I/O
Bus
Rabbit 6000 User’s Manualdigi.com94
8.1.1 Block Diagram
8.1.2 Registers
Register NameMnemonicI/O AddressR/WReset
Port A Data RegisterPADR0x0030R/Wxxxxxxxx
Port Ax Control Register (x = 0-7)PAxCR0x04B0 + xWxxx00000
Rabbit 6000 User’s Manualdigi.com95
8.2 Dependencies
8.2.1 I/O Pins
Parallel Port A uses pins PA0 through PA7. These pins can be used as follows.
• General-purpose 8-bit data input (write 0x080 to SPCR)
• General-purpose 8-bit data output (write 0x084 to SPCR)
• Slave port data bus (write 0x088 to SPCR)
• External I/O data bus (write 0x08C to SPCR)
All Parallel Port A bits are inputs at startup or reset.
Drive strength, slew rate, and the pullup/down resistor status are selectable via PAxCR.
See the associated peripheral chapters for details on how they use Parallel Port A.
8.2.2 Clocks
Any outputs on Parallel Port A are clocked by the peripheral clock.
8.2.3 Other Registers
RegisterFunction
SPCRUsed to set up Parallel Port A.
8.2.4 Interrupts
There are no interrupts associated with Parallel Port A, except when the slave port is being used.
Rabbit 6000 User’s Manualdigi.com96
8.3 Operation
The following steps explain how to set up Parallel Port A.
1. Select the desired mode using SPCR.
2. If a particular drive strength, slew rate, or pullup/down resistor status is desired for a Parallel Port A
pin, set that in the appropriate PAxCR.
3. If the slave port or external I/O bus is selected, refer to the chapters for those peripherals for further
setup.
Once Parallel Port A is set up, data can be read or written by accessing PADR. Note that Parallel Port A is
not available for general-purpose I/O while the slave port or the external I/O bus is selected, or when it is
being used by one of the Flexible Interface Modules. Selecting the slave port or external I/O bus options for
Parallel Port A affects Parallel Port B as well because Parallel Port B is then used for address and control
signals.
If one of the Flexible Interface Modules has been enabled to use Parallel Port A, writing to PADR will no
longer change the state of the pins. The other Parallel Port A registers are still valid. Refer to Chapter 33
for more details.
Rabbit 6000 User’s Manualdigi.com97
8.4 Register Descriptions
Parallel Port A Data Register(PADR)(Address = 0x0030)
Bit(s)ValueDescription
7:0ReadThe current state of Parallel Port A pins PA7–PA0 is reported.
The Parallel Port A buffer is written with this value for transfer to the
Write
Parallel Port Ax Control Register
(PA0CR)(Address = 0x04B0)
Parallel Port A output register on the next rising edge of the peripheral
clock.
Bit(s)ValueDescription
7:5These bits are reserved and should be written with zeros.
40Fast output slew rate.
1Slow output slew rate.
3:2004 mA output drive capability.
018 mA output drive capability.
1010 mA output drive capability.
1114 mA output drive capability.
1:000No pullup or pulldown resistor.
0175 k pullup resistor.
1075 k pulldown resistor.
1175 k keeper.
Rabbit 6000 User’s Manualdigi.com98
Slave Port Control Register(SPCR)(Address = 0x0024)
Bit(s)ValueDescription
70Program fetch as a function of the SMODE pins.
1Ignore the SMODE pins program fetch function.
6:5readThese bits report the state of the SMODE pins.
writeThese bits are ignored and should be written with zero.
4:2000Disable the slave port. Parallel Port A is a byte-wide input port.
001Disable the slave port. Parallel Port A is a byte-wide output port.
010Enable the slave port, with /SCS from Parallel Port E bit 7.
011
Enable the external I/O bus. Parallel Port A is used for the data bus and
Parallel Port B[7:2] is used for the address bus.
100This bit combination is reserved and should not be used.
101This bit combination is reserved and should not be used.
110Enable the slave port, with /SCS from Parallel Port B bit 6.
111
Enable the external I/O bus. Parallel Port A is used for the data bus and
Parallel Port B[7:0] is used for the address bus.
1:000Slave port interrupts are disabled.
01Slave port interrupts use Interrupt Priority 1.
10Slave port interrupts use Interrupt Priority 2.
11Slave port interrupts use Interrupt Priority 3.
Rabbit 6000 User’s Manualdigi.com99
9. PARALLEL PORT B
9.1 Overview
Parallel Port B is a byte-wide port with each bit programmable for direction. The Parallel Port B pins are
also used to access other peripherals on the chip—the slave port, the auxiliary I/O address bus, and clock
I/O for clocked serial mode option for Serial Ports A and B. The Slave Port Control Register (SPCR) is
used to configure how Parallel Port B is used when selecting the slave port or the external I/O bus modes.
When the slave port is enabled, either under program control or during parallel bootstrap, Parallel Port B
pins carry the Slave Attention output signal, and the Slave Read strobe, Slave Write strobe, and Slave
Address inputs. The Slave Chip Select can also be programmed to come from a Parallel Port B pin.
When the external I/O bus option is enabled, either six or eight pins carry the external I/O address signals
selected in SPCR.
Two pins are used for the clocks for Serial Ports A and B when they are configured for the clocked serial
mode. These two inputs can be used as clock outputs for these ports if selected in the respective serial port
control registers. Note that when enabled, the clocked serial output overrides all other programming for the
two relevant Parallel Port B pins.
The drive strength and slew rate can be individually controlled for each Parallel Port B pin. In addition, a
75 k pullup or pulldown resistor can be enabled on each pin.
Note that it is possible for either Flexible Interface Module to use any of the parallel ports. See Chapter 33
for more information.
Table 9-1. Parallel Port B Pin Alternate Output Functions
Pin Name
PB7—IA5
PB6—IA4
PB5—IA3
PB4—IA2
PB3—IA1
PB2—IA0
PB1SCLKAIA7
PB0SCLKBIA6
Serial Ports
A–D
External I/O
Bus
Rabbit 6000 User’s Manualdigi.com100
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.