-Four Open Drain Outputs Dedicated
for Keyboard/Mouse Interface
-Asynchronous Access to Two Data
Registers and One Status Register
-Supports Interrupt and Polling Access
-8 Bit Counter Timer
-Port 92 Support
-Fast Gate A20 and KRESET Outputs
• Serial Ports
-Two Full Function Serial Ports
-High Speed NS16C550 Compatible
UARTs with Send/Receive 16-Byte
FIFOs
-Supports 230k and 460k Baud
Programmable Baud Rate Generator
Modem Control Circuitry
-480 Address and 15 IRQ Options
• Infrared Port
-Multiprotocol Infrared Interface
-32-Byte Data FIFO
-IrDA 1.0 Compliant
-Consumer IR
-SHARP ASK IR
-480 Address, Up to 15 IRQ and Three
DMA Options
• Multi-Mode™ Parallel Port with ChiProtect™
-Standard Mode IBM PC/XT®, PC/AT®,
and PS/2™ Compatible Bidirectional
Parallel Port
-Enhanced Parallel Port (EPP)
Compatible - EPP 1.7 and EPP 1.9
(IEEE 1284 Compliant)
-IEEE 1284 Compliant Enhanced
Capabilities Port (ECP)
GENERAL DESCRIPTION
-ChiProtect Circuitry for Protection
-480 Address, Up to 15 IRQ and Three
DMA Options
• LPC Bus (Pin Reduced ISA) Host Interface
-Multiplexed Command, Address and
Data Bus
- Serial IRQ Interface Compatible with
Serialized IRQ Support for PCI Systems
- PME Interface
• 100 Pin QFP Package
The LPC47B27x* is a 3.3V PC98/PC99
compliant Super I/O controller. The LPC47B27x
implements the LPC interface, a pin reduced ISA
bus interface which provides the same or better
performance as the ISA/X-bus with a substantial
savings in pins used. The LPC47B27x provides
fan control through two fan speed control output
pins and two fan tachometer input pins. It also
provides 37 general purpose input/output (GPIO)
pins, a dual game port interface, MPU-401 MIDI
support and ISA IRQ to Serial IRQ conversion.
The LPC47B27x incorporates a keyboard
interface, SMSC's true CMOS 765B floppy disk
controller, advanced digital data separator, two
16C550A compatible UARTs, one Multi-Mode
parallel port which includes ChiProtect circuitry
plus EPP and ECP, on-chip 12 mA AT bus
drivers, one floppy direct drive support, and
Intelligent Power Management including PME
support. The true CMOS 765B core provides
100% compatibility with IBM PC/XT and PC/AT
architectures in addition to providing data
overflow and underflow protection. The SMSC
advanced digital data separator incorporates
SMSC's patented data separator technology,
allowing for ease of testing and use. Both onchip UARTs are compatible with the
NS16C550A. The parallel port is compatible with
IBM PC/AT architecture, as well as IEEE 1284
EPP and ECP. The LPC47B27x incorporates
sophisticated power control circuitry (PCC) which
includes support for keyboard, mouse and
consumer infrared wake-up events. The PCC
supports multiple low power-down modes.
The LPC47B27x supports the ISA Plug-and-Play
Standard (Version 1.0a) and provides the
recommended functionality to support Windows
'95. The I/O Address, DMA Channel and
hardware IRQ of each logical device in the
LPC47B27x may be reprogrammed through the
internal configuration registers. There are 480
I/O address location options, a Serialized IRQ
interface, and three DMA channels.
The LPC47B27x does not require any external
filter components and is therefore easy to use
and offers lower system costs and reduced board
area. The LPC47B27x is software and register
compatible with SMSC's proprietary 82077AA
core.
IBM, PC/XT and PC/AT are registered trademarks and PS/2 is a
trademark of International Business Machines Corporation
SMSC is a registered trademark and Ultra I/O, ChiProtect, and
Multi-Mode are trademarks of Standard Microsystems Corporation
*The “x” in the part number is a designator that changes depending upon the particular BIOS used inside the
specific chip. “2” denotes AMI Keyboard BIOS and “7” denotes Phoenix 42i Keyboard BIOS.
Note:The "n" as the first letter of a signal name indicates an "Active Low" signal.
Note 1: Buffer types per function on multiplexed pins are separated by a slash “/”. Buffer types in
parenthesis represent multiple buffer types for a single pin function.
Note 2: The nLPCPD pin may be tied high. The LPC interface will function properly if the
nPCI_RESET signal follows the protocol defined for the nLRESET signal in the “Low Pin Count
Interface Specification”.
Note 3: If the 32kHz input clock is not used the CLKI32 pin must be grounded. There is a bit in the
configuration register at 0xF0 in Logical Device A that indicates whether or not the 32kHz clock
is connected. This bit determines the clock source for the fan tachometer, LED and “wake on
specific key” logic. Set this bit to ‘1’ if the clock is not connected.
Note 4. The fan control pins (FAN1 and FAN2) come up as outputs and low following a VCC POR and
Hard Reset. These pins revert to their non-inverting GPIO output function when VCC is
removed from the part.
Note 5: The IRTX pins (IRTX2/GP35 and GP53/TXD2(IRTX)) are driven low when the part is powered
by VTR (VCC=0V with VTR=3.3V). The IRTX2/GP35 pin will remain low following a power-up
(VCC POR) until serial port 2 is enabled by setting the activate bit, at which time the pin will
reflect the state of the IR transmit output of the IRCC block. The GP53/TXD2(IRTX) pin will
remain low following a VCC POR until the TXD2 function is selected for the pin and serial port
is enabled by setting the activate bit, at which time the pin will reflect the state of the IR transmit
output of the IRCC block (if IR is enabled).
Note 6: The “activate” bit for the CIrCC is reset by VTR POR only. The VCC power-up default for this pin
is Logic “0” if the IRTX function is programmed on the GPIO.
Note 7: The “activate” bit for Serial Port 2 is reset by VTR POR only. The VCC power-up default for this
pin is Logic “0” if the TXD2 (or IRTX) function is programmed on the GPIO.
Note 8: VTR can be connected to VCC if no wakeup functionality is required.
Note 9: The GP24 /SYSOPT pin requires an external pulldown resistor to put the base IO address for
configuration at 0x02E. An external pullup resistor is required to move the base IO address
for configuration to 0x04E.
10
Note 10: External pullups must be placed on the nKBDRST and A20M pins. These pins are GPIOs
that are inputs after an initial power-up (VTR POR). If the nKBDRST and A20M functions are
to be used, the system must ensure that these pins are high. See Section “Pins That
Require External Pullup Resistor”.
Note 11: The LED pins are powered by VTR so that the LEDs can be controlled when the part is
under VTR power
Buffer Type Descriptions
Note: The buffer type values are specified at VCC=3.3V
IO12Input/Output, 12mA sink, 6mA source.
IS/O12Input with Schmitt Trigger/Output, 12mA sink, 6mA source.
O12Output, 12mA sink, 6mA source.
OD12Open Drain Output, 12mA sink.
O6Output, 6mA sink, 3mA source.
O8Output, 8mA sink, 4mA source.
OD8Open Drain Output, 8mA sink.
IO8Input/Output, 8mA sink, 4mA source.
IS/O8Input with Schmitt Trigger/Output, 8mA sink, 4mA source.
OD14Open Drain Output, 14mA sink.
OP14Output, 14mA sink, 14mA source.
IOP14Input/Output, 14mA sink, 14mA source. Backdrive protected.
IOD16 Input/Output (Open Drain), 16mA sink.
O4Output, 4mA sink, 2mA source.
IInput TTL Compatible.
ISInput with Schmitt Trigger.
PCI_IOInput/Output. These pins meet the PCI 3.3V AC and DC Characteristics. (Note 1)
PCI_OOutput. These pins meet the PCI 3.3V AC and DC Characteristics. (Note 1)
PCI_ODOpen Drain Output. These pins meet the PCI 3.3V AC and DC Characteristics. (Note 1)
PCI_IInput. These pins meet the PCI 3.3V AC and DC Characteristics. (Note 1)
PCI_ICLKClock Input. These pins meet the PCI 3.3V AC and DC Characteristics and timing.
(Note 2)
Note 1. See the PCI Local Bus Specification, Revision 2.1, Section 4.2.2.
Note 2. See the PCI Local Bus Specification, Revision 2.1, Section 4.2.2. and 4.2.3.
Pins That Require External Pullup Resistors
11
The following pins require external pullup resistors:
• KDAT
• KCLK
• MDAT
• MCLK
• GP36/KBDRST if KBDRST function is used
• GP37/A20M if A20M function is used
• GP20/P17 If P17 function is used
• GP21/P16 if P16 function is used
• GP22/P12 if P12 function is used
• GP27/nIO_SMI if nIO_SMI function is used as Open Collector Output
• GP42/nIO_PME if nIO_PME function is used as Open Collector Output
• SER_IRQ
• GP40/DRVDEN0 if DRVDEN0 function is used as Open Collector
• GP41/DRVDEN1 if DRVDEN1 function is used as Open Collector
The LPC47B27x is a 3.3 Volt part. It is intended
solely for 3.3V applications. Non-LPC bus pins
are 5V tolerant; that is, the input voltage is 5.5V
max, and the I/O buffer output pads are
backdrive protected.
The LPC interface pins are 3.3 V only. These
signals meet PCI DC specifications for 3.3V
signaling. These pins are:
• LAD[3:0]
• nLFRAME
• nLDRQ
• nLPCPD
The input voltage for all other pins is 5.5V max.
These pins include all non-LPC Bus pins and the
following pins:
• nPCI_RESET
• PCI_CLK
• SER_IRQ
• nIO_PME
POWER FUNCTIONALITY
The LPC47B27x has three power planes: VCC,
VTR and VREF.
VCC Power
The LPC47B27x is a 3.3 Volt part. The VCC
supply is 3.3 Volts (nominal). See the
Operational Description Section and the
Maximum Current Values sub-section.
VTR Support
The LPC47B27x requires a trickle supply (VTR) to
provide sleep current for the programmable
wake-up events in the PME interface when V
CC
is removed. The VTR supply is 3.3 Volts
(nominal). See the Operational Description
Section. The maximum VTR current that is
required depends on the functions that are used
in the part. See Trickle Power Functionality and
Maximum Current Values sub-sections. If the
LPC47B27x is not intended to provide wake-up
capabilities on standby current, VTR can be
connected to VCC. VTR powers the Consumer IR
receiver, IR interface, the CIR run-time registers,
the PME configuration registers, and the PME
interface. The VTR pin generates a VTR Poweron-Reset signal to initialize these components.
Note: If VTR is to be used for programmable
wake-up events when VCC is removed, VTR must
be at its full minimum potential at least 10 µs
before Vcc begins a power-on cycle. When V
TR
and Vcc are fully powered, the potential
difference between the two supplies must not
exceed 500mV.
Internal PWRGOOD
An internal PWRGOOD logical control is
included to minimize the effects of pin-state
uncertainty in the host interface as Vcc cycles on
and off. When the internal PWRGOOD signal is
“1” (active), Vcc > 2.3V (nominal), and the
LPC47B27x host interface is active. When the
internal PWRGOOD signal is “0” (inactive), Vcc ≤
2.3V (nominal), and the LPC47B27x host
interface is inactive; that is, LPC bus reads and
writes will not be decoded.
The LPC47B27x device pins nIO_PME,
CLOCKI32, KDAT, MDAT, IRRX, nRI1, nRI2,
RXD2 and most GPIOs (as input) are part of the
PME interface and remain active when the
internal PWRGOOD signal has gone inactive,
provided VTR is powered. The IRTX2/GP35,
GP53/TXD2(IRTX), GP60/LED1 and GP61/LED2
pins also remain active when the internal
PWRGOOD signal has gone inactive, provided
VTR is powered. See Trickle Power Functionality
section. The internal PWRGOOD signal is also
used to determine the clock source for the CIrCC
CIR and to disable the IR Half Duplex Timeout.
32.768 kHz Trickle Clock Input
The LPC47B27x utilizes a 32.768 kHz trickle
input to supply a clock signal for the fan
tachometer logic, WDT, LED blink and wake on
specific key function. See the following section
for more information.
14
The LPC47B27x also utilizes the 32.768 kHz
trickle clock input and a clock multiplier (PLL) to
drive the CIrCC block when Vcc has been
removed. The PME Power bit, CR22.7, is used
to enable (power-up) the 32.768 kHz trickle clock
PLL. When the PME Power bit is set to “1”
(active), the 32.768 kHz trickle clock PLL is
running and can replace the 14.318 MHz clock
source for the CIrCC Wake Event, depending
upon the state of the internal PWRGOOD signal.
When the PME Power bit is reset to “0”
(inactive/default), the 32.768 kHz trickle clock
PLL is unpowered. The PME power bit does not
affect the other wakeup events.
LPC47B27x PLL CONTROLS AND SELECTS
PLL
CONTROL
(CR24.1)
PME
POWER
(CR22.7)
INTERNAL
PWRGOODDESCRIPTION
1XXAll PLLs Powered Down
000
00132kHz PLL Unpowered, Not Selected,
14MHz PLL Powered, Selected.
01032kHz PLL Powered, Selected,
14MHz PLL Unpowered, Not Selected.
01132kHz PLL Powered, Not Selected,
14MHz PLL Powered, Selected.
Indication of 32kHz Clock
There is a bit to indicate whether or not the
32kHz clock input is connected to the
LPC47B27x. This bit is located at bit 0 of the
CLOCKI32 register at 0xF0 in Logical Device A.
This register is powered by VTR and reset on a
VTR POR.
Bit[0] (CLK32_PRSN) is defined as follows:
0=32kHz clock is connected to the CLKI32 pin
(default)
1=32kHz clock is not connected to the CLKI32
pin (pin is grounded).
Bit 0 controls the source of the 32kHz (nominal)
clock for the CIR logic, fan tachometer logic,
WDT, the LED blink logic and the “wake on
specific key” logic. When the external 32kHz
clock is connected, that will be the source for the
CIR logic, fan tachometer, LED and “wake on
specific key” logic. When the external 32kHz
clock is not connected, an internal 32kHz clock
source will be derived from the 14MHz clock for
the CIR logic, fan tachometer, WDT, LED and
“wake on specific key” logic.
The following functions will not work under VTR
power (VCC removed) if the external 32kHz
clock is not connected. These functions will work
under VCC power even if the external 32kHz
clock is not connected.
• CIR wakeup
• Wake on specific key
• LED blink
• Fan tachometer
• WDT
Trickle Power Functionality
When the LPC47B27x is running under VTR only
(VCC removed), PME wakeup events are active
and (if enabled) able to assert the nIO_PME pin
active low. The following lists the wakeup
events:
• UART 1 Ring Indicator
• UART 2 Ring Indicator
• Keyboard data
• Mouse data
• CIR
• Wake on Specific Key Logic
• Fan Tachometers (Note)
• GPIOs for wakeup. See below.
15
Note. The Fan Tachometers can generate a
PME when VCC=0. Clear the enable bits for the
fan tachometers before removing fan power.
The following requirements apply to all I/O pins
that are specified to be 5 volt tolerant.
§ I/O buffers that are wake-up event
compatible are powered by VCC. Under
VTR power (VCC=0), these pins may only
be configured as inputs. These pins have
input buffers into the wakeup logic that are
powered by VTR.
§ I/O buffers that may be configured as either
push-pull or open drain under VTR power
(VCC=0), are powered by VTR. This
means, at a minimum, they will source their
specified current from VTR even when VCC
is present.
The GPIOs that are used for PME wakeup as
input are GP10-GP17, GP20-GP22, GP24GP27, GP30-GP34, GP41, GP43, GP50-GP57,
GP60, GP61. These GPIOs function as follows
(with the exception of GP53, GP60 and GP61 see below):
• Buffers are powered by VCC, but in the
absence of VCC they are backdrive
protected (they do not impose a load on any
external VTR powered circuitry). They are
wakeup compatible as inputs under VTR
power. These pins have input buffers into
the wakeup logic that are powered by VTR.
All GPIOs listed above are for PME wakeup as a
GPIO (or alternate function) excluding GP34,
which has the IRRX2 function and is used for
CIR PME wakeup only. Note that GP32 and
GP33 cannot be used for wakeup under VTR
power (VCC=0) since these are the fan control
pins which come up as outputs and low following
a VCC POR and Hard Reset. GP53 cannot be
used for wakeup under VTR power since this is
the IRTX pin which comes up as output and low
following a VTR POR, a VCC POR and Hard
Reset. Also, GP32 and GP33 revert to their noninverting GPIO output function when VCC is
removed from the part. GP43 reverts to the
basic GPIO function when VCC is removed from
the part, but its programmed input/output,
invert/non-invert and output buffer type is
retained.
The other GPIOs function as follows:
GP36, GP37 and GP40:
• Buffers are powered by VCC, but in the
absence of VCC they are backdrive
protected. These pins do not have input
buffers into the wakeup logic that are
powered by VTR.
These pins are not used for wakeup.
GP35, GP42, GP53, GP60 and GP61:
• Buffers powered by VTR.
GP35 and GP53 have IRTX as the alternate
function and their output buffers are powered by
VTR so that the pins are always forced low when
not used.
GP42 is the nIO_PME pin which is active under
VTR.
GP60 and GP61 have LED as the alternate
function and the logic is able to control the pin
under VTR.
The IRTX pins (IRTX2/GP35 and
GP53/TXD2(IRTX)) are powered by VTR so that
they are driven low when VCC = 0V with VTR =
3.3V. The IRTX2/GP35 pin will remain low
following a VCC POR until serial port 2 is
enabled by setting the activate bit, at which time
the pin will reflect the state of the IR transmit
output of the IRCC block. The
GP53/TXD2(IRTX) pin will remain low following a
VCC POR until the IRTX function is selected for
the pin and serial port is enabled by setting the
activate bit, at which time the pin will reflect the
state of the IR transmit output of the IRCC block.
If the TXD2 function is selected for the pin, it will
remain low following a VCC POR until the serial
port is enabled by setting the activate bit, at
which time the pin will reflect the state of the
transmit output of the serial port.
The following list summarizes the blocks,
registers and pins that are powered by VTR.
• PME interface block
• PME runtime register block (includes all
PME, SMI, GPIO, Fan and other
miscellaneous registers)
• CIR block
• CIR runtime registers
• CIR configuration registers
• “Wake on Specific Key” logic
16
• LED control logic
• Fan Tachometers
• Pins for PME Wakeup:
- GP42/nIO_PME (output, buffer powered
by VTR)
- nRI1 (input)
- GP50/nRI2 (input)
- GP52/RXD2 (input)
- KDAT (input)
- IRRX2/GP34 (input)
- GPIOs (GP10-GP17, GP20-GP22,
GP24-GP27, GP30-GP33, GP41,
GP43, GP50-GP57, GP60, GP61) – all
input-only except GP53, GP60, GP61.
See below.
• Other Pins
- IRTX2/GP35 (output, buffer powered by
VTR)
- GP53/TXD2(IRTX) (output, buffer
powered by VTR)
- GP60/LED1 (output, buffer powered by
VTR)
- GP61/LED2 (output, buffer powered by
VTR)
VREF Pin
The LPC47B27x has a reference voltage pin
input on pin 44 of the part. This reference
voltage can be connected to either a 5V supply
or a 3.3V supply. It is used for the game port.
See the “GAME PORT LOGIC” section.
Maximum Current Values
See the “Operational Description” section for the
maximum current values.
The maximum VTR current, ITR, is given with all
outputs open (not loaded). The total maximum
current for the part is the unloaded value PLUS
the maximum current sourced by all pins that are
driven by VTR. The pins that are powered by
VTR are as follows: GP42 / nIO_PME, IRTX2 /
GP35, GP53/TXD2 (IRTX), GP60 / LED1, GP61
/ LED2. These pins, if configured as push-pull
outputs, will source a minimum of 6mA at 2.4V
when driving.
The maximum VCC current, ICC, is given with all
outputs open (not loaded).
The maximum VREF current, I
, is given with
REF
all outputs open (not loaded).
Power Management Events (PME/SCI)
The LPC47B27x offers support for Power
Management Events (PMEs), also referred to as
System Control Interrupt (SCI) events. The terms
PME and SCI are used synonymously
throughout this document to refer to the
indication of an event to the chipset via the
assertion of the nIO_PME output signal on pin
17. See the “PME Support” section.
17
FUNCTIONAL DESCRIPTION
SUPER I/O REGISTERS
The address map, shown below in Table 1, shows
the addresses of the different blocks of the Super
I/O immediately after power up. The base
addresses of the FDC, serial and parallel ports,
PME register block, Game port and configuration
register block can be moved via the configuration
registers. Some addresses are used to access
more than one register.
Table 1 - Super I/O Block Addresses
ADDRESSBLOCK NAME
Base+(0-5) and +(7)Floppy Disk0
Base+(0-7)Serial Port Com 14
Base1+(0-7)
Base2+(0-7)
Base+(0-3)
Base+(0-7)
Base+(0-3), +(400-402)
Base+(0-7), +(400-402)
60, 64KYBD7
Base + 0Game Port9
Base + (0-5F)Runtime RegistersA
Base + (0-1)MPU-401B
Base + (0-1)Configuration
Serial Port Com 25IR Support
Parallel Port
SPP
EPP
ECP
ECP+EPP+SPP
HOST PROCESSOR INTERFACE (LPC)
The host processor communicates with the
LPC47B27x through a series of read/write
registers via the LPC interface. The port
addresses for these registers are shown in Table
1. Register access is accomplished through I/O
cycles or DMA transfers. All registers are 8 bits
wide.
LOGICAL
DEVICENOTES
Consumer IR
3
Note 1: Refer to the configuration register descriptions for setting the base address.
18
LPC INTERFACE
The following sub-sections specify the implementation of the LPC bus.
LPC Interface Signal Definition
The signals required for the LPC bus interface are described in the table below. LPC bus signals use
PCI 33MHz electrical signal characteristics.
SIGNAL NAMETYPEDESCRIPTION
LAD[3:0]I/OLPC address/data bus. Multiplexed command, address and data bus.
nLFRAMEInputFrame signal. Indicates start of new cycle and termination of broken
cycle
nPCI_RESETInputPCI Reset. Used as LPC Interface Reset.
nLDRQOutputEncoded DMA/Bus Master request for the LPC interface.
nIO_PMEODPower Mgt Event signal. Allows the LPC47B27x to request wakeup.
nLPCPDInputPowerdown Signal. Indicates that the LPC47B27x should prepare for
power to be shut on the LPC interface.
SER_IRQI/OSerial IRQ.
PCI_CLKInputPCI Clock.
LPC Cycles
The following cycle types are supported by the LPC protocol.
CYCLE TYPETRANSFER SIZE
I/O Write1 Byte Transfer
I/O Read1 Byte Transfer
DMA Write1 byte
DMA Read1 byte
Peripherals must ignore cycles that they do not support.
19
Field Definitions
The data transfers are based on specific fields
that are used in various combinations, depending
on the cycle type. These fields are driven onto
the LAD[3:0] signal lines to communicate
address, control and data information over the
LPC bus between the host and the LPC47B27x.
See the Low Pin Count (LPC) InterfaceSpecification Revision 1.0 from Intel, Section 4.2
for definition of these fields.
nLFRAME Usage
nLFRAME is used by the host to indicate the
start of cycles and the termination of cycles due
to an abort or time-out condition. This signal is
to be used by the LPC47B27x to know when to
monitor the bus for a cycle.
This signal is used as a general notification that
the LAD[3:0] lines contain information relative to
the start or stop of a cycle, and that the
LPC47B27x monitors the bus to determine
whether the cycle is intended for it. The use of
nLFRAME allows the LPC47B27x to enter a
lower power state internally. There is no need
for the LPC47B27x to monitor the bus when it is
inactive, so it can decouple its state machines
from the bus, and internally gate its clocks.
I/O cycles are initiated by the host for register or
FIFO accesses, and will generally have minimal
Sync times. The minimum number of wait-states
between bytes is 1. EPP cycles will depend on
the speed of the external device, and may have
much longer Sync times.
Data transfers are assumed to be exactly 1-byte.
If the CPU requested a 16 or 32-bit transfer, the
host will break it up into 8-bit transfers.
See the Low Pin Count (LPC) InterfaceSpecification Reference, Section 5.2, for the
sequence of cycles for the I/O Read and Write
cycles.
DMA Read and Write Cycles
DMA read cycles involve the transfer of data
from the host (main memory) to the LPC47B27x.
DMA write cycles involve the transfer of data
from the LPC47B27x to the host (main memory).
Data will be coming from or going to a FIFO and
will have minimal Sync times. Data transfers
to/from the LPC47B27x are 1, 2 or 4 bytes.
See the Low Pin Count (LPC) InterfaceSpecification Reference, Section 6.4, for the field
definitions and the sequence of the DMA Read
and Write cycles.
When the LPC47B27x samples nLFRAME
active, it immediately stops driving the LAD[3:0]
signal lines on the next clock and monitor the
bus for new cycle information.
The nLFRAME signal functions as described in
the Low Pin Count (LPC) Interface SpecificationReference.
I/O Read and Write Cycles
The LPC47B27x is the target for I/O cycles.
DMA Protocol
DMA on the LPC bus is handled through the use
of the nLDRQ lines from the LPC47B27x and
special encodings on LAD[3:0] from the host.
The DMA mechanism for the LPC bus is
described in the Low Pin Count (LPC) InterfaceSpecification Reference.
20
POWER MANAGEMENT
The SYNC value is driven within 3 clocks.
CLOCKRUN Protocol
The nCLKRUN pin is not implemented in the
LPC47B27x. See the Low Pin Count (LPC)Interface Specification Section 8.1.
LPCPD Protocol
See the Low Pin Count (LPC) Interface
Specification Section 8.2.
SYNC Protocol
See the Low Pin Count (LPC) Interface
Specification Section 4.2.1.8 for a table of valid
SYNC values.
Typical Usage
The SYNC pattern is used to add wait states.
For read cycles, the LPC47B27x immediately
drives the SYNC pattern upon recognizing the
cycle. The host immediately drives the sync
pattern for write cycles. If the LPC47B27x needs
to assert wait states, it does so by driving 0101
or 0110 on LAD[3:0] until it is ready, at which
point it will drive 0000 or 1001. The LPC47B27x
will choose to assert 0101 or 0110, but not
switch between the two patterns.
SYNC Timeout
The SYNC value is driven within 3 clocks. If the
host observes 3 consecutive clocks without a
valid SYNC pattern, it will abort the cycle.
The LPC47B27x does not assume any particular
timeout. When the host is driving SYNC, it may
have to insert a very large number of wait states,
depending on PCI latencies and retries.
SYNC Patterns and Maximum Number of
SYNCS
If the SYNC pattern is 0101, then the host
assumes that the maximum number of SYNCs is
8.
If the SYNC pattern is 0110, then no maximum
number of SYNCs is assumed. The LPC47B27x
has protection mechanisms to complete the
cycle. This is used for EPP data transfers and
should utilize the same timeout protection that is
in EPP.
SYNC Error Indication
The LPC47B27x reports errors via the LAD[3:0]
= 1010 SYNC encoding.
The data (or wait state SYNC) will immediately
follow the 0000 or 1001 value.
The SYNC value of 0101 is intended to be used
for normal wait states, wherein the cycle will
complete within a few clocks. The LPC47B27x
uses a SYNC of 0101 for all wait states in a DMA
transfer.
The SYNC value of 0110 is intended to be used
where the number of wait states is large. This is
provided for EPP cycles, where the number of
wait states could be quite large (>1
microsecond). However, the LPC47B27x uses a
SYNC of 0110 for all wait states in an I/O
transfer.
If the host was reading data from the
LPC47B27x, data will still be transferred in the
next two nibbles. This data may be invalid, but it
will be transferred by the LPC47B27x. If the host
was writing data to the LPC47B27x, the data had
already been transferred.
In the case of multiple byte cycles, such as DMA
cycles, an error SYNC terminates the cycle.
Therefore, if the host is transferring 4 bytes from
a device, if the device returns the error SYNC in
the first byte, the other three bytes will not be
transferred.
I/O and DMA START Fields
I/O and DMA cycles use a START field of 0000.
21
Reset Policy
LPC TRANSFERS
The following rules govern the reset policy:
1) When nPCI_RESET goes inactive (high),
the clock is assumed to have been running
for 100usec prior to the removal of the reset
signal, so that everything is stable. This is
the same reset active time after clock is
stable that is used for the PCI bus.
2) When nPCI_RESET goes active (low):
a) The host drives the nLFRAME signal
high, tristates the LAD[3:0] signals, and
ignores the nLDRQ signal.
b) The LPC47B27x must ignore
nLFRAME, tristate the LAD[3:0] pins
and drive the nLDRQ signal inactive
(high).
Wait State Requirements
I/O Transfers
The LPC47B27x inserts three wait states for an
I/O read and two wait states for an I/O write
cycle. A SYNC of 0110 is used for all I/O
transfers. The exception to this is for transfers
where IOCHRDY would normally be deasserted
in an ISA transfer (i.e., EPP or IrCC transfers) in
which case the sync pattern of 0110 is used and
a large number of syncs may be inserted (up to
330 which corresponds to a timeout of 10us).
DMA Transfers
The LPC47B27x inserts three wait states for a
DMA read and four wait states for a DMA write
cycle. A SYNC of 0101 is used for all DMA
transfers.
See the example timing for the LPC cycles in the
“Timing Diagrams” section.
22
FLOPPY DISK CONTROLLER
The Floppy Disk Controller (FDC) provides the
interface between a host microprocessor and the
floppy disk drives. The FDC integrates the
functions of the Formatter/Controller, Digital Data
Separator, Write Precompensation and Data Rate
Selection logic for an IBM XT/AT compatible FDC.
The true CMOS 765B core guarantees 100% IBM
PC XT/AT compatibility in addition to providing
data overflow and underflow protection.
The FDC is compatible to the 82077AA using
Table 2 - Status, Data and Control Registers
(Shown with base addresses of 3F0 and 370)
PRIMARY
ADDRESS
3F0
3F1
3F2
3F3
3F4
3F4
3F5
3F6
3F7
3F7
SECONDARY
ADDRESSR/WREGISTER
370
371
372
373
374
374
375
376
377
377
SMSC's proprietary floppy disk controller core.
FDC INTERNAL REGISTERS
The Floppy Disk Controller contains eight internal
registers which facilitate the interfacing between
the host microprocessor and the disk drive. Table
2 shows the addresses required to access these
registers. Registers other than the ones shown
are not supported. The rest of the description
assumes that the primary addresses have been
selected.
R
R
R/W
R/W
R
W
R/W
R
W
Status Register A (SRA)
Status Register B (SRB)
Digital Output Register (DOR)
Tape Drive Register (TDR)
Main Status Register (MSR)
Data Rate Select Register (DSR)
Data (FIFO)
Reserved
Digital Input Register (DIR)
Configuration Control Register (CCR)
23
STATUS REGISTER A (SRA)
Address 3F0 READ ONLY
This register is read-only and monitors the state of
the internal interrupt signal and several disk
interface
PS/2 Mode
76543210
INT
nDRV2 STEPnTRK0 HDSEL nINDXnWPDIR
PENDING
RESET
010N/A0N/AN/A0
COND.
pins in PS/2 and Model 30 modes. The SRA can
be accessed at any time when in PS/2 mode. In
the PC/AT mode the data bus pins D0 - D7 are
held in a high impedance state for a read of
address 3F0.
BIT 0 DIRECTION
Active high status indicating the direction of head
movement. A logic "1" indicates inward direction;
a logic "0" indicates outward direction.
BIT 1 nWRITE PROTECT
Active low status of the WRITE PROTECT disk
interface input. A logic "0" indicates that the disk is
write protected.
BIT 2 nINDEX
Active low status of the INDEX disk interface
input.
BIT 3 HEAD SELECT
Active high status of the HDSEL disk interface
input. A logic "1" selects side 1 and a logic "0"
selects side 0.
BIT 4 nTRACK 0
Active low status of the TRK0 disk interface input.
BIT 5 STEP
Active high status of the STEP output disk
interface output pin.
BIT 6 nDRV2
This function is not supported. This bit is always
read as “1”.
BIT 7 INTERRUPT PENDING
Active high bit indicating the state of the Floppy
Disk Interrupt output.
24
PS/2 Model 30 Mode
RESET
COND.
76543210
INT
PENDING
000N/A1N/AN/A1
DRQSTEP
F/F
TRK0 nHDSEL INDXWPnDIR
BIT 0 nDIRECTION
Active low status indicating the direction of head
movement. A logic "0" indicates inward direction;
a logic "1" indicates outward direction.
BIT 1 WRITE PROTECT
Active high status of the WRITE PROTECT disk
interface input. A logic "1" indicates that the disk is
write protected.
BIT 2 INDEX
Active high status of the INDEX disk interface
input.
BIT 3 nHEAD SELECT
Active low status of the HDSEL disk interface
input. A logic "0" selects side 1 and a logic "1"
selects side 0.
BIT 4 TRACK 0
Active high status of the TRK0 disk interface input.
BIT 5 STEP
Active high status of the latched STEP disk
interface output pin. This bit is latched with the
STEP output going active, and is cleared with a
read from the DIR register, or with a hardware or
software reset.
BIT 6 DMA REQUEST
Active high status of the DMA request pending.
BIT 7 INTERRUPT PENDING
Active high bit indicating the state of the Floppy
Disk Interrupt.
25
STATUS REGISTER B (SRB)
Address 3F1 READ ONLY
This register is read-only and monitors the state of
several disk interface pins in PS/2 and
PS/2 Mode
76543210
RESET
11DRIVE
SEL0
11000000
WDATA
TOGGLE
COND.
Model 30 modes. The SRB can be accessed at
any time when in PS/2 mode. In the PC/AT mode
the data bus pins D0 - D7 are held in a high
impedance state for a read of address 3F1.
RDATA
TOGGLE
WGATEMOT
EN1
MOT
EN0
BIT 0 MOTOR ENABLE 0
Active high status of the MTR0 disk interface
output pin. This bit is low after a hardware reset
and unaffected by a software reset.
BIT 1 MOTOR ENABLE 1
Active high status of the MTR1 disk interface
output pin. This bit is low after a hardware reset
and unaffected by a software reset.
BIT 2 WRITE GATE
Active high status of the WGATE disk interface
output.
BIT 3 READ DATA TOGGLE
Every inactive edge of the RDATA input causes
this bit to change state.
BIT 4 WRITE DATA TOGGLE
Every inactive edge of the WDATA input causes
this bit to change state.
BIT 5 DRIVE SELECT 0
Reflects the status of the Drive Select 0 bit of the
DOR (address 3F2 bit 0). This bit is cleared after
a hardware reset and it is unaffected by a
software reset.
BIT 6 RESERVED
Always read as a logic "1".
BIT 7 RESERVED
Always read as a logic "1".
26
PS/2 Model 30 Mode
RESET
COND.
76543210
nDRV2 nDS1nDS0WDATA
F/F
N/A1100011
RDATA
F/F
WGATE
F/F
nDS3nDS2
BIT 0 nDRIVE SELECT 2
The DS2 disk interface is not supported.
BIT 1 nDRIVE SELECT 3
The DS3 disk interface is not supported.
BIT 2 WRITE GATE
Active high status of the latched WGATE output
signal. This bit is latched by the active going edge
of WGATE and is cleared by the read of the DIR
register.
BIT 3 READ DATA
Active high status of the latched RDATA output
signal. This bit is latched by the inactive going
edge of RDATA and is cleared by the read of the
DIR register.
BIT 4 WRITE DATA
Active high status of the latched WDATA output
signal. This bit is latched by the inactive going
edge of WDATA and is cleared by the read of the
DIR register. This bit is not gated with WGATE.
BIT 5 nDRIVE SELECT 0
Active low status of the DS0 disk interface output.
BIT 6 nDRIVE SELECT 1
Active low status of the DS1 disk interface output.
BIT 7 nDRV2
Active low status of the DRV2 disk interface input.
Note: This function is not supported.
27
DIGITAL OUTPUT REGISTER (DOR)
Address 3F2 READ/WRITE
The DOR controls the drive select and motor
enables of the disk interface outputs. It
76543210
MOT
EN3
RESET
MOT
EN2
MOT
EN1
00000000
COND.
also contains the enable for the DMA logic and a
software reset bit. The contents of the DOR are
unaffected by a software reset. The DOR can
be written to at any time.
MOT
EN0
DMAEN
nRESET
DRIVE
SEL1
DRIVE
SEL0
BIT 0 and 1 DRIVE SELECT
These two bits are binary encoded for the drive
selects, thereby allowing only one drive to be
selected at one time.
BIT 2 nRESET
A logic "0" written to this bit resets the Floppy disk
controller. This reset will remain active until a
logic "1" is written to this bit. This software reset
does not affect the DSR and CCR registers, nor
does it affect the other bits of the DOR register.
The minimum reset duration required is 100ns,
therefore toggling this bit by consecutive writes to
this register is a valid method of issuing a software
reset.
BIT 3 DMAEN
PC/AT and Model 30 Mode:
Writing this bit to logic "1" will enable the DMA and
interrupt functions. This bit being a logic "0" will
disable the DMA and interrupt functions. This bit
is a logic "0" after a reset and in these modes.
PS/2 Mode: In this mode the DMA and interrupt
functions are always enabled. During a reset, this
bit will be cleared to a logic "0".
BIT 4 MOTOR ENABLE 0
This bit controls the MTR0 disk interface output. A
logic "1" in this bit will cause the output pin to go
active.
DRIVEDOR VALUE
0
1
1CH
2DH
BIT 5 MOTOR ENABLE 1
This bit controls the MTR1 disk interface output. A
logic "1" in this bit will cause the output pin to go
active.
BIT 6 MOTOR ENABLE 2
The MTR2 disk interface output is not supported
in the LPC47B27x.
BIT 7 MOTOR ENABLE 3
The MTR3 disk interface output is not supported
in the LPC47B27x.
The Tape Drive Register (TDR) is included for
82077 software compatibility and allows the user
to assign tape support to a particular drive during
initialization. Any future references to that drive
Table 5 - Tape Select Bits
TAPE SEL1
(TDR.1)
TAPE SEL0
(TDR.0)
0
0
1
1
automatically invokes tape support. The TDR
Tape Select bits TDR.[1:0] determine the tape
drive number. Table 5 illustrates the Tape Select
Bit encoding. Note that drive 0 is the boot device
and cannot be assigned tape support. The
remaining Tape Drive Register bits TDR.[7:2] are
tristated when read. The TDR is unaffected by a
software reset.
DRIVE
SELECTED
0
1
0
1
None
1
2
3
29
Normal Floppy Mode
Normal mode. Register 3F3 contains only bits 0 and 1. When this register is read, bits 2 - 7 are ‘0’.
DB7DB6DB5DB4DB3DB2DB1DB0
REG 3F3000000tape sel1 tape sel0
Enhanced Floppy Mode 2 (OS2)
Register 3F3 for Enhanced Floppy Mode 2 operation.
DB7DB6DB5DB4DB3DB2DB1DB0
REG 3F3 Reserved ReservedDrive Type IDFloppy Boot Drivetape sel1tape sel0
Table 6 - Drive Type ID
DIGITAL OUTPUT REGISTERREGISTER 3F3 - DRIVE TYPE ID
Note:L0-CRF2-Bx = Logical Device 0, Configuration Register F2, Bit x.
30
DATA RATE SELECT REGISTER (DSR)
Address 3F4 WRITE ONLY
This register is write only. It is used to program
the data rate, amount of write precompensation,
76543210
S/W
RESET
RESET
POWER
0PRE-
DOWN
00000010
COND.
power down status, and software reset. The data
rate is programmed using the Configuration
Control Register (CCR) not the DSR, for PC/AT
and PS/2 Model 30.
COMP2
PRE-
COMP1
PRE-
COMP0
DRATE
SEL1
DRATE
SEL0
Other applications can set the data rate in the
DSR. The data rate of the floppy controller is the
most recent write of either the DSR or CCR. The
DSR is unaffected by a software reset. A
hardware reset will set the DSR to 02H, which
corresponds to the default precompensation
setting and 250 Kbps.
BIT 0 and 1 DATA RATE SELECT
These bits control the data rate of the floppy
controller. See Table 8 for the settings
corresponding to the individual data rates. The
data rate select bits are unaffected by a software
reset, and are set to 250 Kbps after a hardware
reset.
BIT 2 through 4 PRECOMPENSATION
SELECT
These three bits select the value of write
precompensation that will be applied to the
WDATA output signal. Table 7 shows the
precompensation values for the combination of
these bits settings. Track 0 is the default starting
track number to start precompensation. this
starting track number can be changed by the
configure command.
BIT 5 UNDEFINED
Should be written as a logic "0".
BIT 6 LOW POWER
A logic "1" written to this bit will put the floppy
controller into manual low power mode. The
floppy controller clock and data separator circuits
will be turned off. The controller will come out of
manual low power mode after a software reset or
access to the Data Register or Main Status
Register.
BIT 7 SOFTWARE RESET
This active high bit has the same function as the
DOR RESET (DOR bit 2) except that this bit is self
clearing.
Note: The DSR is Shadowed in the Floppy Data
Rate Select Shadow Register, located at the offset
0x1F in the runtime register block.
The Main Status Register is a read-only register
and indicates the status of the disk controller. The
Main Status Register can be read at any
76543210
RQMDIO
NON
DMA
CMD
BUSYReserved Reserved
time. The MSR indicates when the disk controller
is ready to receive data via the Data Register. It
should be read before each byte transferring to or
from the data register except in DMA mode. No
delay is required when reading the MSR after a
data transfer.
DRV1
BUSY
DRV0
BUSY
BIT 0 - 1 DRV x BUSY
These bits are set to 1s when a drive is in the
seek portion of a command, including implied and
overlapped seeks and recalibrates.
BIT 4 COMMAND BUSY
This bit is set to a 1 when a command is in
progress. This bit will go active after the
command byte has been accepted and goes
inactive at the end of the results phase. If there is
no result phase (Seek, Recalibrate commands),
this bit is returned to a 0 after the last command
byte.
BIT 5 NON-DMA
This mode is selected in the SPECIFY command
and will be set to a 1 during the execution phase
of a command. This is for polled data transfers
and helps differentiate between the data transfer
phase and the reading of result bytes.
BIT 6 DIO
Indicates the direction of a data transfer once a
RQM is set. A 1 indicates a read and a 0
indicates a write is required.
BIT 7 RQM
Indicates that the host can transfer data if set to a
1. No access is permitted if set to a 0.
34
DATA REGISTER (FIFO)
The data is based upon the following formula:
Address 3F5 READ/WRITE
All command parameter information, disk data
and result status are transferred between the host
processor and the floppy disk controller through
the Data Register.
Data transfers are governed by the RQM and DIO
bits in the Main Status Register.
The Data Register defaults to FIFO disabled
mode after any form of reset. This maintains
PC/AT hardware compatibility. The default values
can be changed through the Configure command
(enable full FIFO operation with threshold control).
The advantage of the FIFO is that it allows the
system a larger DMA latency without causing a
disk error. Table 11 gives several examples of the
delays with a FIFO.
Table 11 - FIFO Service Delay
FIFO THRESHOLD
MAXIMUM DELAY TO SERVICING AT
EXAMPLES
1 byte
2 bytes
8 bytes
15 bytes
FIFO THRESHOLD
1 x 4 µs - 1.5 µs = 2.5 µs
2 x 4 µs - 1.5 µs = 6.5 µs
8 x 4 µs - 1.5 µs = 30.5 µs
15 x 4 µs - 1.5 µs = 58.5 µs
MAXIMUM DELAY TO SERVICING AT
EXAMPLES
1 byte
2 bytes
8 bytes
15 bytes
1 x 8 µs - 1.5 µs = 6.5 µs
2 x 8 µs - 1.5 µs = 14.5 µs
8 x 8 µs - 1.5 µs = 62.5 µs
15 x 8 µs - 1.5 µs = 118.5 µs
Threshold # x1
DATA RATE
x 8
- 1.5 µs = DELAY
At the start of a command, the FIFO action is
always disabled and command parameters must
be sent based upon the RQM and DIO bit
settings. As the command execution phase is
entered, the FIFO is cleared of any data to ensure
that invalid data is not transferred.
An overrun or underrun will terminate the current
command and the transfer of data. Disk writes will
complete the current sector by generating a 00
pattern and valid CRC. Reads require the host to
remove the remaining data so that the result
phase may be entered.
2 Mbps DATA RATE
1 Mbps DATA RATE
FIFO THRESHOLD
EXAMPLES
1 byte
2 bytes
8 bytes
15 bytes
MAXIMUM DELAY TO SERVICING AT
500 Kbps DATA RATE
1 x 16 µs - 1.5 µs = 14.5 µs
2 x 16 µs - 1.5 µs = 30.5 µs
8 x 16 µs - 1.5 µs = 126.5 µs
15 x 16 µs - 1.5 µs = 238.5 µs
35
DIGITAL INPUT REGISTER (DIR)
Address 3F7 READ ONLY
This register is read-only in all modes.
PC-AT Mode
76543210
DSK
0000000
CHG
RESET
N/AN/AN/AN/AN/AN/AN/AN/A
COND.
BIT 0 - 6 UNDEFINED
The data bus outputs D0 - 6 are read as ‘0’.
PS/2 Mode
76543210
DSK
1111DRATE
CHG
RESET
N/AN/AN/AN/AN/AN/AN/A1
COND.
BIT 0 nHIGH DENS
This bit is low whenever the 500 Kbps or 1 Mbps
data rates are selected, and high when 250 Kbps
and 300 Kbps are selected.
BITS 1 - 2 DATA RATE SELECT
These bits control the data rate of the floppy
controller. See Table 8 for the settings
corresponding to the individual data rates. The
data rate select bits are unaffected by a
software reset, and are set to 250 Kbps after a
hardware reset.
BIT 7 DSKCHG
This bit monitors the pin of the same name and
reflects the opposite value seen on the disk cable
or the value programmed in the Force Disk
Change Register (see Runtime Register at offset
0x1E).
SEL1
DRATE
SEL0
nHIGH
nDENS
BITS 3 - 6 UNDEFINED
Always read as a logic "1"
BIT 7 DSKCHG
This bit monitors the pin of the same name and
reflects the opposite value seen on the disk cable
or the value programmed in the Force Disk
Change Register (see Runtime Register at offset
0x1E).
36
Model 30 Mode
RESET
COND.
76543210
DSK
CHG
N/A0000010
000DMAEN NOPREC DRATE
SEL1
DRATE
SEL0
BITS 0 - 1 DATA RATE SELECT
These bits control the data rate of the floppy
controller. See Table 8 for the settings
corresponding to the individual data rates. The
data rate select bits are unaffected by a software
reset, and are set to 250 Kbps after a hardware
reset.
BIT 2 NOPREC
This bit reflects the value of NOPREC bit set in
the CCR register.
BIT 3 DMAEN
This bit reflects the value of DMAEN bit set in the
DOR register bit 3.
BITS 4 - 6 UNDEFINED
Always read as a logic "0"
BIT 7 DSKCHG
This bit monitors the pin of the same name and
reflects the opposite value seen on the disk cable
or the value programmed in the Force Disk
Change Register (see Runtime Register at offset
0x1E).
37
CONFIGURATION CONTROL REGISTER (CCR)
Address 3F7 WRITE ONLY
PC/AT and PS/2 Modes
76543210
000000DRATE
RESET
COND.
N/AN/AN/AN/AN/AN/A10
SEL1
DRATE
SEL0
BIT 0 and 1 DATA RATE SELECT 0 and 1
These bits determine the data rate of the floppy
controller. See Table 8 for the appropriate values.
PS/2 Model 30 Mode
76543210
00000NOPREC DRATE
RESET
COND.
BIT 0 and 1 DATA RATE SELECT 0 and 1
These bits determine the data rate of the floppy
controller. See Table 8 for the appropriate values.
BIT 2 NO PRECOMPENSATION
This bit can be set by software, but it has no
functionality. It can be read by bit 2 of the DSR
when in Model 30 register mode. Unaffected by
software reset.
N/AN/AN/AN/AN/AN/A10
BIT 2 - 7 RESERVED
Should be set to a logical "0"
DRATE
SEL1
BIT 3 - 7 RESERVED
Should be set to a logical "0"
Table 9 shows the state of the DENSEL pin. The
DENSEL pin is set high after a hardware reset
and is unaffected by the DOR and the DSR
resets.
SEL0
38
STATUS REGISTER ENCODING
During the Result Phase of certain commands, the Data Register contains data bytes that give the status
of the command just executed.
Table 12 - Status Register 0
BIT NO.SYMBOLNAMEDESCRIPTION
7,6ICInterrupt Code 00 - Normal termination of command. The specified
command was properly executed and completed without
error.
01 - Abnormal termination of command. Command
execution was started, but was not successfully
completed.
10 - Invalid command. The requested command could
not be executed.
11 - Abnormal termination caused by Polling.
5SESeek EndThe FDC completed a Seek, Relative Seek or
Recalibrate command (used during a Sense Interrupt
Command).
4ECEquipment
Check
3Unused. This bit is always "0".
2HHead Address The current head address.
1,0DS1,0Drive SelectThe current selected drive.
The TRK0 pin failed to become a "1" after:
1. 80 step pulses in the Recalibrate command.
2. The Relative Seek command caused the FDC to
step outward beyond Track 0.
39
Table 13 - Status Register 1
BIT NO.SYMBOLNAMEDESCRIPTION
7ENEnd of
Cylinder
6Unused. This bit is always "0".
5DEData ErrorThe FDC detected a CRC error in either the ID field or
4OROverrun/
Underrun
3Unused. This bit is always "0".
2NDNo DataAny one of the following:
1NWNot Writeable WP pin became a "1" while the FDC is executing a Write
0MAMissing
Address Mark
The FDC tried to access a sector beyond the final sector
of the track (255D). Will be set if TC is not issued after
Read or Write Data command.
the data field of a sector.
Becomes set if the FDC does not receive CPU or DMA
service within the required time interval, resulting in data
overrun or underrun.
1. Read Data, Read Deleted Data command - the FDC
did not find the specified sector.
2. Read ID command - the FDC cannot read the ID field
without an error.
3. Read A Track command - the FDC cannot find the
proper sector sequence.
Data, Write Deleted Data, or Format A Track command.
Any one of the following:
1. The FDC did not detect an ID address mark at the
specified track after encountering the index pulse
from the nINDEX pin twice.
2. The FDC cannot detect a data address mark or a
deleted data address mark on the specified track.
40
Table 14 - Status Register 2
BIT NO.SYMBOLNAMEDESCRIPTION
7Unused. This bit is always "0".
6CMControl MarkAny one of the following:
Read Data command - the FDC encountered a deleted
data address mark.
Read Deleted Data command - the FDC encountered a
data address mark.
5DDData Error in
The FDC detected a CRC error in the data field.
Data Field
4WCWrong
Cylinder
The track address from the sector ID field is different
from the track address maintained inside the FDC.
3Unused. This bit is always "0".
2Unused. This bit is always "0".
1BCBad CylinderThe track address from the sector ID field is different
from the track address maintained inside the FDC and is
equal to FF hex, which indicates a bad track with a hard
error according to the IBM soft-sectored format.
0MDMissing Data
Address Mark
The FDC cannot detect a data address mark or a
deleted data address mark.
Table 15 - Status Register 3
BIT NO.SYMBOLNAMEDESCRIPTION
7Unused. This bit is always "0".
6WPWrite
Indicates the status of the WP pin.
Protected
5Unused. This bit is always "1".
4T0Track 0Indicates the status of the TRK0 pin.
3Unused. This bit is always "1".
2HDHead Address Indicates the status of the HDSEL pin.
1,0DS1,0Drive SelectIndicates the status of the DS1, DS0 pins.
RESET
There are three sources of system reset on the
FDC: the nPCI_RESET pin, a reset generated via
a bit in the DOR, and a reset generated via a bit in
the DSR. At power on, a Power On Reset
initializes the FDC. All resets take the FDC out of
the power down state.
All operations are terminated upon a
nPCI_RESET, and the FDC enters an idle state.
A reset while a disk write is in progress will corrupt
the data and CRC.
On exiting the reset state, various internal
registers are cleared, including the Configure
command information, and the FDC waits for a
new command. Drive polling will start unless
disabled by a new Configure command.
nPCI_RESET Pin (Hardware Reset)
The nPCI_RESET pin is a global reset and clears
all registers except those programmed by the
Specify command. The DOR reset bit is enabled
and must be cleared by the host to exit the reset
state.
41
DOR Reset vs. DSR Reset (Software Reset)
CONTROLLER PHASES
These two resets are functionally the same. Both
will reset the FDC core, which affects drive status
information and the FIFO circuits. The DSR reset
clears itself automatically while the DOR reset
requires the host to manually clear it. DOR reset
has precedence over the DSR reset. The DOR
reset is set automatically upon a pin reset. The
user must manually clear this reset bit in the DOR
to exit the reset state.
MODES OF OPERATION
The FDC has three modes of operation, PC/AT
mode, PS/2 mode and Model 30 mode. These
are determined by the state of the Interface Mode
bits in LD0-CRF0[3,2].
PC/AT mode
The PC/AT register set is enabled, the DMA
enable bit of the DOR becomes valid (controls the
interrupt and DMA functions), and DENSEL is an
active high signal.
PS/2 mode
This mode supports the PS/2 models 50/60/80
configuration and register set. The DMA bit of the
DOR becomes a "don't care". The DMA and
interrupt functions are always enabled, and
DENSEL is active low.
Model 30 mode
This mode supports PS/2 Model 30 configuration
and register set. The DMA enable bit of the DOR
becomes valid (controls the interrupt and DMA
functions), and DENSEL is active low.
DMA TRANSFERS
For simplicity, command handling in the FDC can
be divided into three phases: Command,
Execution, and Result. Each phase is described
in the following sections.
Command Phase
After a reset, the FDC enters the command phase
and is ready to accept a command from the host.
For each of the commands, a defined set of
command code bytes and parameter bytes has to
be written to the FDC before the command phase
is complete. (Please refer to Table 16 for the
command set descriptions). These bytes of data
must be transferred in the order prescribed.
Before writing to the FDC, the host must examine
the RQM and DIO bits of the Main Status
Register. RQM and DIO must be equal to "1" and
"0" respectively before command bytes may be
written. RQM is set false by the FDC after each
write cycle until the received byte is processed.
The FDC asserts RQM again to request each
parameter byte of the command unless an illegal
command condition is detected. After the last
parameter byte is received, RQM remains "0" and
the FDC automatically enters the next phase as
defined by the command definition.
The FIFO is disabled during the command phase
to provide for the proper handling of the "Invalid
Command" condition.
Execution Phase
All data transfers to or from the FDC occur during
the execution phase, which can proceed in DMA
or non-DMA mode as indicated in the Specify
command.
DMA transfers are enabled with the Specify
command and are initiated by the FDC by
activating a DMA request cycle. DMA read, write
and verify cycles are supported. The FDC
supports two DMA transfer modes: Single
Transfer and Burst Transfer. Burst mode is
enabled via Logical Device 0-CRF0-Bit[1] (LD0CRF0[1]).
After a reset, the FIFO is disabled. Each data
byte is transferred by a read/write or DMA cycle
depending on the DMA mode. The Configure
command can enable the FIFO and set the FIFO
threshold value.
The following paragraphs detail the operation of
the FIFO flow control. In these descriptions,
<threshold> is defined as the number of bytes
available to the FDC when service is requested
42
from the host and ranges from 1 to 16. The
parameter FIFOTHR, which the user programs, is
one less and ranges from 0 to 15.
A low threshold value (i.e. 2) results in longer
periods of time between service requests, but
requires faster servicing of the request for both
read and write cases. The host reads (writes)
from (to) the FIFO until empty (full), then the
transfer request goes inactive. The host must be
very responsive to the service request. This is the
desired case for use with a "fast" system.
A high value of threshold (i.e. 12) is used with a
"sluggish" system by affording a long latency
period after a service request, but results in more
frequent service requests.
Non-DMA Mode - Transfers from the FIFO to the
Host
The FDC generates a DMA request cycle when
the FIFO contains (16 - <threshold>) bytes, or the
last byte of a full sector transfer has been placed
in the FIFO. The DMA controller must respond to
the request by reading data from the FIFO. The
FDC will deactivate the DMA request when the
FIFO becomes empty by generating the proper
sync for the data transfer.
DMA Mode - Transfers from the Host to the FIFO.
The FDC generates a DMA request cycle when
entering the execution phase of the data transfer
commands. The DMA controller must respond by
placing data in the FIFO. The DMA request
remains active until the FIFO becomes full. The
DMA request cycle is reasserted when the FIFO
has <threshold> bytes remaining in the FIFO. The
FDC will terminate the DMA cycle after a TC,
indicating that no more data is required.
The interrupt and RQM bits in the Main Status
Register are activated when the FIFO contains
(16-<threshold>) bytes or the last bytes of a full
sector have been placed in the FIFO. The
interrupt can be used for interrupt-driven systems,
and RQM can be used for polled systems. The
host must respond to the request by reading data
from the FIFO. This process is repeated until the
last byte is transferred out of the FIFO. The FDC
will deactivate the interrupt and RQM bit when the
FIFO becomes empty.
Non-DMA Mode - Transfers from the Host to the
FIFO
The interrupt and RQM bit in the Main Status
Register are activated upon entering the execution
phase of data transfer commands. The host must
respond to the request by writing data into the
FIFO. The interrupt and RQM bit remain true until
the FIFO becomes full. They are set true again
when the FIFO has <threshold> bytes remaining
in the FIFO. The FDC enters the result phase after
the last byte is taken by the FDC from the FIFO
(i.e. FIFO empty condition).
DMA Mode - Transfers from the FIFO to the Host
Data Transfer Termination
The FDC supports terminal count explicitly
through the TC pin and implicitly through the
underrun/overrun and end-of-track (EOT)
functions. For full sector transfers, the EOT
parameter can define the last sector to be
transferred in a single or multi-sector transfer.
If the last sector to be transferred is a partial
sector, the host can stop transferring the data in
mid-sector, and the FDC will continue to complete
the sector as if a TC cycle was received. The only
difference between these implicit functions and TC
cycle is that they return "abnormal termination"
result status. Such status indications can be
ignored if they were expected.
Note that when the host is sending data to the
FIFO of the FDC, the internal sector count will be
complete when the FDC reads the last byte from
its side of the FIFO. There may be a delay in the
removal of the transfer request signal of up to the
time taken for the FDC to read the last 16 bytes
from the FIFO. The host must tolerate this delay.
43
Result Phase
The generation of the interrupt determines the
beginning of the result phase. For each of the
commands, a defined set of result bytes has to be
read from the FDC before the result phase is
complete. These bytes of data must be read out
for another command to start.
RQM and DIO must both equal "1" before the
result bytes may be read. After all the result bytes
have been read, the RQM and DIO bits switch to
"1" and "0" respectively, and the CB bit is cleared,
indicating that the FDC is ready to accept the next
command.
44
COMMAND SET/DESCRIPTIONS
Commands can be written whenever the FDC is
in the command phase. Each command has a
unique set of needed parameters and status
results. The FDC checks to see that the first
byte is a valid command and, if valid, proceeds
with the command. If it is invalid, an interrupt is
Table 16 - Description of Command Symbols
SYMBOLNAMEDESCRIPTION
CCylinder AddressThe currently selected address; 0 to 255.
DData PatternThe pattern to be written in each sector data field during formatting.
D0, D1Drive Select 0-1Designates which drives are perpendicular drives on the
Perpendicular Mode Command. A "1" indicates a perpendicular
drive.
DIRDirection ControlIf this bit is 0, then the head will step out from the spindle during a
relative seek. If set to a 1, the head will step in toward the spindle.
DS0, DS1Disk Drive Select DS1 DS0 DRIVE
0 0 Drive 0
0 1 Drive 1
DTLSpecial Sector
Size
ECEnable CountWhen this bit is "1" the "DTL" parameter of the Verify command
EFIFOEnable FIFOThis active low bit when a 0, enables the FIFO. A "1" disables the
EISEnable Implied
Seek
EOTEnd of TrackThe final sector number of the current track.
GAPAlters Gap 2 length when using Perpendicular Mode.
GPLGap LengthThe Gap 3 size. (Gap 3 is the space between sectors excluding the
H/HDSHead AddressSelected head: 0 or 1 (disk side 0 or 1) as encoded in the sector ID
HLTHead Load TimeThe time interval that FDC waits after loading the head and before
HUTHead Unload
Time
By setting N to zero (00), DTL may be used to control the number of
bytes transferred in disk read/write commands. The sector size (N =
0) is set to 128. If the actual sector (on the diskette) is larger than
DTL, the remainder of the actual sector is read but is not passed to
the host during read commands; during write commands, the
remainder of the actual sector is written with all zero bytes. The CRC
check code is calculated with the actual sector. When N is not zero,
DTL has no meaning and should be set to FF HEX.
becomes SC (number of sectors per track).
FIFO (default).
When set, a seek operation will be performed before executing any
read or write command that requires the C parameter in the
command phase. A "0" disables the implied seek.
VCO synchronization field).
field.
initializing a read or write operation. Refer to the Specify command
for actual delays.
The time interval from the end of the execution phase (of a read or
write command) until the head is unloaded. Refer to the Specify
command for actual delays.
issued. The user sends a Sense Interrupt Status
command which returns an invalid command
error. Refer to Table 16 for explanations of the
various symbols used. Table 17 lists the required
parameters and the results associated with each
command that the FDC is capable of performing.
45
Table 16 - Description of Command Symbols
SYMBOLNAMEDESCRIPTION
LOCKLock defines whether EFIFO, FIFOTHR, and PRETRK parameters of
the CONFIGURE COMMAND can be reset to their default values by
a "software Reset". (A reset caused by writing to the appropriate bits
of either the DSR or DOR)
MFMMFM/FM Mode
Selector
MTMulti-Track
Selector
A one selects the double density (MFM) mode. A zero selects single
density (FM) mode.
When set, this flag selects the multi-track operating mode. In this
mode, the FDC treats a complete cylinder under head 0 and 1 as a
single track. The FDC operates as this expanded track started at the
first sector under head 0 and ended at the last sector under head 1.
With this flag set, a multitrack read or write operation will
automatically continue to the first sector under head 1 when the FDC
finishes operating on the last sector under head 0.
NSector Size CodeThis specifies the number of bytes in a sector. If this parameter is
"00", then the sector size is 128 bytes. The number of bytes
transferred is determined by the DTL parameter. Otherwise the
sector size is (2 raised to the "N'th" power) times 128. All values up
to "07" hex are allowable. "07"h would equal a sector size of 16k. It
is the user's responsibility to not select combinations that are not
possible with the drive.
When set to 1, indicates that the FDC is to operate in the non-DMA
mode. In this mode, the host is interrupted for each data transfer.
When set to 0, the FDC operates in DMA mode.
OWOverwriteThe bits D0-D3 of the Perpendicular Mode Command can only be
modified if OW is set to 1. OW id defined in the Lock command.
PCNPresent Cylinder
Number
The current position of the head at the completion of Sense Interrupt
Status command.
POLLPolling DisableWhen set, the internal polling routine is disabled. When clear, polling
is enabled.
PRETRKPrecompensation
Programmable from track 00 to FFH.
Start Track
Number
RSector AddressThe sector number to be read or written. In multi-sector transfers,
this parameter specifies the sector number of the first sector to be
read or written.
RCNRelative Cylinder
Number
Relative cylinder offset from present cylinder as used by the Relative
Seek command.
46
Table 16 - Description of Command Symbols
SYMBOLNAMEDESCRIPTION
SCNumber of
Sectors Per Track
SKSkip FlagWhen set to 1, sectors containing a deleted data address mark will
SRTStep Rate Interval The time interval between step pulses issued by the FDC.
ST0
ST1
ST2
ST3
WGATEWrite GateAlters timing of WE to allow for pre-erase loads in perpendicular
Status 0
Status 1
Status 2
Status 3
The number of sectors per track to be initialized by the Format
command. The number of sectors per track to be verified during a
Verify command when EC is set.
automatically be skipped during the execution of Read Data. If Read
Deleted is executed, only sectors with a deleted address mark will be
accessed. When set to "0", the sector is read or written the same as
the read and write commands.
Programmable from 0.5 to 8 milliseconds in increments of 0.5 ms at
the 1 Mbit data rate. Refer to the SPECIFY command for actual
delays.
Registers within the FDC which store status information after a
command has been executed. This status information is available to
the host during the result phase after command execution.
drives.
47
INSTRUCTION SET
Table 17 - Instruction Set
READ DATA
DATA BUS
PHASER/WD7D6D5D4D3D2D1D0REMARKS
CommandWMT MFM SK00110Command Codes
W00000HDS DS1 DS0
W C Sector ID information prior to
Command execution.
W H
W R
W N
W EOT
W GPL
W DTL
ExecutionData transfer between the
FDD and system.
ResultR ST0 Status information after Com-
mand execution.
R ST1
R ST2
R C Sector ID information after
Command execution.
R H
R R
R N
48
READ DELETED DATA
DATA BUS
PHASER/WD7D6D5D4D3D2D1D0REMARKS
CommandWMT MFM SK01100Command Codes
W00000HDS DS1 DS0
W C Sector ID information prior to
Command execution.
W H
W R
W N
W EOT
W GPL
W DTL
ExecutionData transfer between the
FDD and system.
ResultR ST0 Status information after Com-
mand execution.
R ST1
R ST2
R C Sector ID information after
Command execution.
R H
R R
R N
49
WRITE DATA
DATA BUS
PHASER/WD7D6D5D4D3D2D1D0REMARKS
CommandWMT MFM000101Command Codes
W00000HDS DS1 DS0
W C Sector ID information prior to
Command execution.
W H
W R
W N
W EOT
W GPL
W DTL
ExecutionData transfer between the
FDD and system.
ResultR ST0 Status information after Com-
mand execution.
R ST1
R ST2
R C Sector ID information after
Command execution.
R H
R R
R N
50
WRITE DELETED DATA
DATA BUS
PHASER/WD7D6D5D4D3D2D1D0REMARKS
CommandWMT MFM001001Command Codes
W00000HDSDS1DS0
W C Sector ID information
prior to Command
execution.
W H
W R
W N
W EOT
W GPL
W DTL
ExecutionData transfer between
the FDD and system.
ResultR ST0 Status information after
Command execution.
R ST1
R ST2
R C Sector ID information
after Command
execution.
R H
R R
R N
51
READ A TRACK
DATA BUS
PHASER/WD7D6D5D4D3D2D1D0REMARKS
CommandW0MFM000010Command Codes
W00000HDSDS1DS0
W C Sector ID information
prior to Command
execution.
W H
W R
W N
W EOT
W GPL
W DTL
ExecutionData transfer between
the FDD and system.
FDC reads all of
cylinders' contents from
index hole to EOT.
ResultR ST0 Status information after
Command execution.
R ST1
R ST2
R C Sector ID information
after Command
execution.
R H
R R
R N
52
VERIFY
DATA BUS
PHASER/WD7D6D5D4D3D2D1D0REMARKS
CommandWMT MFM SK10110Command Codes
WEC0000HDSDS1DS0
W C Sector ID information
prior to Command
execution.
W H
W R
W N
W EOT
W GPL
W DTL/SC
ExecutionNo data transfer takes
place.
ResultR ST0 Status information after
Command execution.
R ST1
R ST2
R C Sector ID information
after Command
execution.
R H
R R
R N
SC is returned if the last command that was issued was the Format command. EOT is returned if the last
command was a Read or Write.
Note: These bits are used internally only. They are not reflected in the Drive Select pins. It is the user's
responsibility to maintain correspondence between these bits and the Drive Select pins (DOR).
59
DATA TRANSFER COMMANDS
All of the Read Data, Write Data and Verify type
commands use the same parameter bytes and
return the same results information, the only
difference being the coding of bits 0-4 in the first
byte.
An implied seek will be executed if the feature was
enabled by the Configure command. This seek is
completely transparent to the user. The Drive
Busy bit for the drive will go active in the Main
Status Register during the seek portion of the
command. If the seek portion fails, it is reflected
in the results status normally returned for a
Read/Write Data command. Status Register 0
(ST0) would contain the error code and C would
contain the cylinder on which the seek failed.
Read Data
A set of nine (9) bytes is required to place the
FDC in the Read Data Mode. After the Read Data
command has been issued, the FDC loads the
head (if it is in the unloaded state), waits the
specified head settling time (defined in the Specify
command), and begins reading ID Address Marks
and ID fields. When the sector address read off
the diskette matches with the sector address
specified in the command, the FDC reads the
sector's data field and transfers the data to the
FIFO.
After completion of the read operation from the
current sector, the sector address is incremented
by one and the data from the next logical sector is
read and output via the FIFO. This continuous
read function is called "Multi-Sector Read
Operation". Upon receipt of the TC cycle, or an
implied TC (FIFO overrun/underrun), the FDC
stops sending data but will continue to read data
from the current sector, check the CRC bytes, and
at the end of the sector, terminate the Read Data
Command.
N determines the number of bytes per sector (see
Table 18). If N is set to zero, the sector size is set
to 128. The DTL value determines the number of
bytes to be transferred. If DTL is less than 128,
the FDC transfers the specified number of bytes to
the host. For reads, it continues to read the entire
128-byte sector and checks for CRC errors. For
writes, it completes the 128-byte sector by filling in
zeros. If N is not set to 00 Hex, DTL should be set
to FF Hex and has no impact on the number of
bytes transferred.
Table 18 - Sector Sizes
NSECTOR SIZE
00
01
02
03
..
07
128 bytes
256 bytes
512 bytes
1024 bytes
...
16 Kbytes
The amount of data which can be handled with a
single command to the FDC depends upon MT
(multi-track) and N (number of bytes/sector).
The Multi-Track function (MT) allows the FDC to
read data from both sides of the diskette. For a
particular cylinder, data will be transferred starting
at Sector 1, Side 0 and completing the last sector
of the same track at Side 1.
If the host terminates a read or write operation in
the FDC, the ID information in the result phase is
dependent upon the state of the MT bit and EOT
byte. Refer to Table 19.
At the completion of the Read Data command, the
head is not unloaded until after the Head Unload
Time Interval (specified in the Specify command)
has elapsed. If the host issues another command
before the head unloads, then the head settling
time may be saved between subsequent reads.
If the FDC detects a pulse on the nINDEX pin
twice without finding the specified sector (meaning
that the diskette's index hole passes through
index detect logic in the drive twice), the FDC sets
the IC code in Status Register 0 to "01" indicating
abnormal termination, sets the ND bit in Status
Register 1 to "1" indicating a sector not found, and
terminates the Read Data Command.
After reading the ID and Data Fields in each
sector, the FDC checks the CRC bytes. If a CRC
error occurs in the ID or data field, the FDC sets
60
the IC code in Status Register 0 to "01" indicating
abnormal termination, sets the DE bit flag in
Status Register 1 to "1", sets the DD bit in Status
Register 2 to "1" if CRC is incorrect in the ID field,
and terminates the Read Data Command. Table
Table 19 - Effects of MT and N Bits
MAXIMUM TRANSFER
MTN
0
1
0
1
0
1
1
256 x 26 = 6,656
1
256 x 52 = 13,312
2
512 x 15 = 7,680
2
512 x 30 = 15,360
3
1024 x 8 = 8,192
3
1024 x 16 = 16,384
CAPACITY
Table 20 - Skip Bit vs Read Data Command
DATA ADDRESS
SK BIT
VALUE
MARK TYPE
ENCOUNTERED
SECTOR
READ?
0
Normal Data
0
Deleted Data
1
Normal Data
1
Deleted Data
20 describes the effect of the SK bit on the Read
Data command execution and results. Except
where noted in Table 20, the C or R value of the
sector address is automatically incremented (see
Table 22).
FINAL SECTOR READ
FROM DISK
26 at side 0 or 1
26 at side 1
15 at side 0 or 1
15 at side 1
8 at side 0 or 1
16 at side 1
RESULTS
Yes
CM BIT OF
ST2 SET?
No
DESCRIPTION OF
RESULTS
Normal
termination.
Yes
Yes
Address not
incremented. Next
sector not
searched for.
Yes
No
Normal
termination.
No
Yes
Normal
termination.
Sector not read
("skipped").
61
Read Deleted Data
This command is the same as the Read Data
command, only it operates on sectors that contain
a Deleted Data Address Mark at the beginning of
a Data Field.
Table 21 - Skip Bit vs. Read Deleted Data Command
DATA ADDRESS
SK BIT
VALUE
MARK TYPE
ENCOUNTERED
SECTOR
READ?
0
Normal Data
0
Deleted Data
1
Normal Data
1
Deleted Data
Table 21 describes the effect of the SK bit on the
Read Deleted Data command execution and
results.
Except where noted in Table 21, the C or R value
of the sector address is automatically incremented
(see Table 22).
RESULTS
Yes
CM BIT OF
ST2 SET?
Yes
DESCRIPTION OF
RESULTS
Address not
incremented. Next
sector not
searched for.
Yes
No
Normal
termination.
No
Yes
Normal
termination.
Sector not read
("skipped").
Yes
No
Normal
termination.
Read A Track
This command is similar to the Read Data
command except that the entire data field is read
continuously from each of the sectors of a track.
Immediately after encountering a pulse on the
nINDEX pin, the FDC starts to read all data fields
on the track as continuous blocks of data without
regard to logical sector numbers. If the FDC finds
an error in the ID or DATA CRC check bytes, it
continues to read data from the track and sets the
appropriate error bits at the end of the command.
The FDC compares the ID information read from
each sector with the specified value in the
command and sets the ND flag of Status Register
1 to a “1” if there no comparison. Multi-track or
skip operations are not allowed with this
command. The MT and SK bits (bits D7 and D5 of
the first command byte respectively) should
always be set to "0".
This command terminates when the EOT
specified number of sectors has not been read. If
the FDC does not find an ID Address Mark on the
diskette after the second occurrence of a pulse on
the nINDEX pin, then it sets the IC code in Status
Register 0 to "01" (abnormal termination), sets the
MA bit in Status Register 1 to "1", and terminates
the command.
62
Table 22 - Result Phase
MTHEAD
00Less than EOTNCNCR + 1NC
1Less than EOTNCNCR + 1NC
10Less than EOTNCNCR + 1NC
1Less than EOTNCNCR + 1NC
FINAL SECTOR
TRANSFERRED TOID INFORMATION AT RESULT PHASE
HOSTCHRN
Equal to EOTC + 1NC01NC
Equal to EOTC + 1NC01NC
Equal to EOTNCLSB01NC
Equal to EOTC + 1LSB01NC
NC: No Change, the same value as the one at the beginning of command execution.
LSB: Least Significant Bit, the LSB of H is complemented.
Write Data
After the Write Data command has been issued,
the FDC loads the head (if it is in the unloaded
state), waits the specified head load time if
unloaded (defined in the Specify command), and
begins reading ID fields. When the sector address
read from the diskette matches the sector address
specified in the command, the FDC reads the data
from the host via the FIFO and writes it to the
sector's data field.
After writing data into the current sector, the FDC
computes the CRC value and writes it into the
CRC field at the end of the sector transfer. The
Sector Number stored in "R" is incremented by
one, and the FDC continues writing to the next
data field. The FDC continues this "Multi-Sector
Write Operation". Upon receipt of a terminal count
signal or if a FIFO over/under run occurs while a
data field is being written, then the remainder of
the data field is filled with zeros. The FDC reads
the ID field of each sector and checks the CRC
bytes. If it detects a CRC error in one of the ID
fields, it sets the IC code in Status Register 0 to
"01" (abnormal termination), sets the DE bit of
Status Register 1 to "1", and terminates the Write
Data command.
The Write Data command operates in much the
same manner as the Read Data command. The
following items are the same. Please refer to the
Read Data Command for details:
Transfer Capacity
EN (End of Cylinder) bit
ND (No Data) bit
Head Load, Unload Time Interval
ID information when the host terminates the
command
Definition of DTL when N = 0 and when N does
not = 0
Write Deleted Data
This command is almost the same as the Write
Data command except that a Deleted Data
Address Mark is written at the beginning of the
Data Field instead of the normal Data Address
Mark. This command is typically used to mark a
bad sector containing an error on the floppy disk.
Verify
The Verify command is used to verify the data
stored on a disk. This command acts exactly like
a Read Data command except that no data is
transferred to the host. Data is read from the disk
and CRC is computed and checked against the
previously-stored value.
Because data is not transferred to the host, the
TC cycle cannot be used to terminate this
command. By setting the EC bit to "1", an implicit
TC will be issued to the FDC. This implicit TC
will occur when the SC value has decremented
to 0 (an SC value of 0 will verify 256 sectors). This
command can also be terminated by setting the
EC bit to "0" and the EOT value equal to the final
63
sector to be checked. If EC is set to "0", DTL/SC
should be programmed to 0FFH. Refer to Table
# Sectors Per Side = Number of formatted sectors
per each side of the disk.
22 and Table 23 for information concerning the
values of MT and EC versus SC and EOT value.
Definitions:
# Sectors Remaining = Number of formatted
sectors left which can be read, including side 1 of
the disk if MT is set to "1".
Table 23 - Verify Command Result Phase
MTECSC/EOT VALUETERMINATION RESULT
00SC = DTL
EOT ≤ # Sectors Per Side
00SC = DTL
EOT > # Sectors Per Side
01
SC ≤ # Sectors Remaining AND
EOT ≤ # Sectors Per Side
01SC > # Sectors Remaining OR
EOT > # Sectors Per Side
10SC = DTL
EOT ≤ # Sectors Per Side
10SC = DTL
EOT > # Sectors Per Side
11
SC ≤ # Sectors Remaining AND
EOT ≤ # Sectors Per Side
11SC > # Sectors Remaining OR
EOT > # Sectors Per Side
Success Termination
Result Phase Valid
Unsuccessful Termination
Result Phase Invalid
Successful Termination
Result Phase Valid
Unsuccessful Termination
Result Phase Invalid
Successful Termination
Result Phase Valid
Unsuccessful Termination
Result Phase Invalid
Successful Termination
Result Phase Valid
Unsuccessful Termination
Result Phase Invalid
Note:If MT is set to "1" and the SC value is greater than the number of remaining formatted sectors on
Side 0, verifying will continue on Side 1 of the disk.
64
Format A Track
The Format command allows an entire track to be
formatted. After a pulse from the nINDEX pin is
detected, the FDC starts writing data on the disk
including gaps, address marks, ID fields, and data
fields per the IBM System 34 or 3740 format
(MFM or FM respectively). The particular values
that will be written to the gap and data field are
controlled by the values programmed into N, SC,
GPL, and D which are specified by the host during
the command phase. The data field of the sector
is filled with the data byte specified by D. The ID
field for each sector is supplied by the host; that is,
four data bytes per sector are needed by the FDC
for C, H, R, and N (cylinder, head, sector number
and sector size respectively).
FORMAT FIELDS
After formatting each sector, the host must send
new values for C, H, R and N to the FDC for the
next sector on the track. The R value (sector
number) is the only value that must be changed
by the host after each sector is formatted. This
allows the disk to be formatted with nonsequential
sector addresses (interleaving). This
incrementing and formatting continues for the
whole track until the FDC encounters a pulse on
the nINDEX pin again and it terminates the
command.
Table 24 contains typical values for gap fields
which are dependent upon the size of the sector
and the number of sectors on each track. Actual
values can vary due to drive electronics.
GAP4a
80x
4E
GAP4a
40x
FF
GAP4a
80x
4E
SYSTEM 34 (DOUBLE DENSITY) FORMAT
SYNC
IAMGAP1
12x
00
3xC2FC3xA1FE3xA1FB
50x
4E
SYNC
12x
00
IDAM C
HDS
NOC
Y
E
L
C
GAP2
R
22x
C
4E
SYSTEM 3740 (SINGLE DENSITY) FORMAT
SYNC
IAMGAP1
6x
00
FCFEFB or
26x
FF
SYNC
6x
00
IDAM C
HDS
NOC
Y
E
L
C
GAP2
R
11x
C
FF
PERPENDICULAR FORMAT
SYNC
IAMGAP1
12x
00
3xC2FC3xA1FE3xA1FB
50x
4E
SYNC
12x
00
IDAM C
HDS
NOC
Y
E
L
C
GAP2
R
41x
C
4E
SYNC
12x
00
SYNC
6x
00
SYNC
12x
00
DATA
AM
DATACRCGAP3 GAP 4b
F8
DATA
AM
DATACRCGAP3 GAP 4b
F8
DATA
AM
DATACRCGAP3 GAP 4b
F8
65
Table 24 - Typical Values for Formatting
FORMATSECTOR SIZENSCGPL1GPL2
128
128
512
FM
5.25"
Drives
MFM
3.5"
Drives
GPL1 = suggested GPL values in Read and Write commands to avoid splice point
between data field and ID field of contiguous sections.
GPL2 = suggested GPL value in Format A Track command.
*PC/AT values (typical)
**PS/2 values (typical). Applies with 1.0 MB and 2.0 MB drives.
NOTE: All values except sector size are in hex.
FM
MFM
1024
2048
4096
...
256
256
512*
1024
2048
4096
...
128
256
512
256
512**
1024
00
00
02
03
04
05
...
01
01
02
03
04
05
...
0
1
2
1
2
3
12
10
08
04
02
01
12
10
09
04
02
01
0F
09
05
0F
09
05
07
10
18
46
C8
C8
0A
20
2A
80
C8
C8
07
0F
1B
0E
1B
35
09
19
30
87
FF
FF
0C
32
50
F0
FF
FF
1B
2A
3A
36
54
74
CONTROL COMMANDS
Control commands differ from the other
commands in that no data transfer takes place.
Three commands generate an interrupt when
complete: Read ID, Recalibrate, and Seek. The
other control commands do not generate an
interrupt.
Read ID
The Read ID command is used to find the present
position of the recording heads. The FDC stores
the values from the first ID field it is able to read
into its registers. If the FDC does not find an ID
address mark on the diskette after the second
occurrence of a pulse on the nINDEX pin, it then
sets the IC code in Status Register 0 to "01"
(abnormal termination), sets the MA bit in Status
Register 1 to "1", and terminates the command.
The following commands will generate an interrupt
upon completion. They do not return any result
bytes. It is highly recommended that control
commands be followed by the Sense Interrupt
Status command. Otherwise, valuable interrupt
status information will be lost.
Recalibrate
This command causes the read/write head within
the FDC to retract to the track 0 position. The
FDC clears the contents of the PCN counter and
checks the status of the nTRK0 pin from the FDD.
As long as the nTRK0 pin is low, the DIR pin
remains 0 and step pulses are issued. When the
nTRK0 pin goes high, the SE bit in Status
Register 0 is set to "1" and the command is
terminated. If the nTRK0 pin is still low after 79
step pulses have been issued, the FDC sets the
SE and the EC bits of Status Register 0 to "1" and
terminates the command. Disks capable of
handling more than 80 tracks per side may require
66
more than one Recalibrate command to return the
head back to physical Track 0.
Note that if implied seek is not enabled, the read
and write commands should be preceded by:
The Recalibrate command does not have a result
phase. The Sense Interrupt Status command
must be issued after the Recalibrate command to
effectively terminate it and to provide verification
of the head position (PCN). During the command
phase of the recalibrate operation, the FDC is in
the BUSY state, but during the execution phase it
is in a NON-BUSY state. At this time, another
Recalibrate command may be issued, and in this
manner parallel Recalibrate operations may be
done on up to four drives at once. Upon power up,
the software must issue a Recalibrate command
to properly initialize all drives and the controller.
Seek
The read/write head within the drive is moved
from track to track under the control of the Seek
command. The FDC compares the PCN, which is
the current head position, with the NCN and
performs the following operation if there is a
difference:
PCN < NCN:Direction signal to drive set to
"1" (step in) and issues step pulses.
PCN > NCN:Direction signal to drive set to
"0" (step out) and issues step pulses.
The rate at which step pulses are issued is
controlled by SRT (Stepping Rate Time) in the
Specify command. After each step pulse is
issued, NCN is compared against PCN, and when
NCN = PCN the SE bit in Status Register 0 is set
to "1" and the command is terminated. During the
command phase of the seek or recalibrate
operation, the FDC is in the BUSY state, but
during the execution phase it is in the NON-BUSY
state. At this time, another Seek or Recalibrate
command may be issued, and in this manner,
parallel seek operations may be done on up to
four drives at once.
1) Seek command - Step to the proper track
2) Sense Interrupt Status command - Terminate
the Seek command
3) Read ID - Verify head is on proper track
4) Issue Read/Write command.
The Seek command does not have a result
phase. Therefore, it is highly recommended that
the Sense Interrupt Status command is issued
after the Seek command to terminate it and to
provide verification of the head position (PCN).
The H bit (Head Address) in ST0 will always
return to a "0". When exiting POWERDOWN
mode, the FDC clears the PCN value and the
status information to zero. Prior to issuing the
POWERDOWN command, it is highly
recommended that the user service all pending
interrupts through the Sense Interrupt Status
command.
Sense Interrupt Status
An interrupt signal is generated by the FDC for
one of the following reasons:
1. Upon entering the Result Phase of:
a. Read Data command
b. Read A Track command
c. Read ID command
d. Read Deleted Data command
e. Write Data command
f. Format A Track command
g. Write Deleted Data command
h. Verify command
2. End of Seek, Relative Seek, or Recalibrate
command
3. FDC requires a data transfer during the
execution phase in the non-DMA mode
The Sense Interrupt Status command resets the
interrupt signal and, via the IC code and SE bit of
Status Register 0, identifies the cause of the
interrupt.
67
Table 25 - Interrupt Identification
SEICINTERRUPT DUE TO
0
1
1
The Seek, Relative Seek, and Recalibrate
commands have no result phase. The Sense
Interrupt Status command must be issued
immediately after these commands to terminate
them and to provide verification of the head
position (PCN). The H (Head Address) bit in ST0
will always return a "0". If a Sense Interrupt Status
is not issued, the drive will continue to be BUSY
and may affect the operation of the next
command.
Sense Drive Status
Sense Drive Status obtains drive status
information. It has not execution phase and goes
directly to the result phase from the command
phase. Status Register 3 contains the drive status
information.
Specify
The Specify command sets the initial values for
each of the three internal times. The HUT (Head
11
Polling
00
Normal termination of Seek or
Recalibrate command
01
Abnormal termination of Seek
or Recalibrate command
Unload Time) defines the time from the end of the
execution phase of one of the read/write
commands to the head unload state. The SRT
(Step Rate Time) defines the time interval
between adjacent step pulses. Note that the
spacing between the first and second step pulses
may be shorter than the remaining step pulses.
The HLT (Head Load Time) defines the time
between when the Head Load signal goes high
and the read/write operation starts. The values
change with the data rate speed selection and are
documented in Table 26. The values are the
same for MFM and FM.
The choice of DMA or non-DMA operations is
made by the ND bit. When this bit is "1", the nonDMA mode is selected, and when ND is "0", the
DMA mode is selected. In DMA mode, data
transfers are signaled by the DMA request cycles.
Non-DMA mode uses the RQM bit and the
interrupt to signal data transfers.
Configure
The Configure command is issued to select the
special features of the FDC. A Configure
command need not be issued if the default values
of the FDC meet the system requirements.
Table 26 - Drive Control Delays (ms)
HUTSRT
2M1M500K300K250K2M1M500K300K250K
0
64
00
01
02
7F
7F
128
1
4
..
..
E
56
112
F
60
120
2M1M500K300K250K
64
0.5
1
..
..
63
63.5
256
8
16
..
224
240
426
26.7
..
373
400
128
1
2
..
126
127
512
32
..
..
448
480
68
256
2
4
..
252
254
4
3.75
..
0.5
0.25
HLT
8
7.5
..
1
0.5
16
15
..
2
1
426
3.3
6.7
..
420
423
26.7
25
..
3.33
1.67
32
30
..
4
2
512
4
8
.
504
508
Configure Default Values:
EIS - No Implied Seeks
EFIFO - FIFO Disabled
POLL - Polling Enabled
FIFOTHR - FIFO Threshold Set to 1 Byte
PRETRK - Pre-Compensation Set to Track 0
byte. A "00" selects one byte; "0F" selects 16
bytes.
PRETRK - Pre-Compensation Start Track
Number. Programmable from track 0 to 255.
Defaults to track 0. A "00" selects track 0; "FF"
selects track 255.
EIS - Enable Implied Seek. When set to "1", the
FDC will perform a Seek operation before
executing a read or write command. Defaults to
no implied seek.
EFIFO - A "1" disables the FIFO (default). This
means data transfers are asked for on a byte-bybyte basis. Defaults to "1", FIFO disabled. The
threshold defaults to "1".
POLL - Disable polling of the drives. Defaults to
"0", polling enabled. When enabled, a single
interrupt is generated after a reset. No polling is
performed while the drive head is loaded and the
head unload delay has not expired.
FIFOTHR - The FIFO threshold in the execution
phase of read or write commands. This is
programmable from 1 to 16 bytes. Defaults to one
DIRACTION
01Step Head Out
Step Head In
The Relative Seek command differs from the
Seek command in that it steps the head the
absolute number of tracks specified in the
command instead of making a comparison against
an internal register. The Seek command is good
for drives that support a maximum of 256 tracks.
Relative Seeks cannot be overlapped with other
Relative Seeks. Only one Relative Seek can be
active at a time. Relative Seeks may be
overlapped with Seeks and Recalibrates. Bit 4 of
Status Register 0 (EC) will be set if Relative Seek
attempts to step outward beyond Track 0.
Version
The Version command checks to see if the
controller is an enhanced type or the older type
(765A). A value of 90 H is returned as the result
byte.
Relative Seek
The command is coded the same as for Seek,
except for the MSB of the first byte and the DIR
bit.
DIR Head Step Direction Control
RCN Relative Cylinder Number that determines
how many tracks to step the head in or out
from the current track number.
As an example, assume that a floppy drive has
300 useable tracks. The host needs to read track
300 and the head is on any track (0-255). If a
Seek command is issued, the head will stop at
track 255. If a Relative Seek command is issued,
the FDC will move the head the specified number
of tracks, regardless of the internal cylinder
position register (but will increment the register). If
the head was on track 40 (d), the maximum track
that the FDC could position the head on using
Relative Seek will be 295 (D), the initial track +
255 (D). The maximum count that the head can
be moved with a single Relative Seek command is
255 (D).
69
The internal register, PCN, will overflow as the
cylinder number crosses track 255 and will contain
39 (D). The resulting PCN value is thus (RCN +
PCN) mod 256. Functionally, the FDC starts
counting from 0 again as the track number goes
above 255 (D). It is the user's responsibility to
compensate FDC functions (precompensation
track number) when accessing tracks greater than
255. The FDC does not keep track that it is
working in an "extended track area" (greater than
255). Any command issued will use the current
PCN value except for the Recalibrate command,
which only looks for the TRACK0 signal.
Recalibrate will return an error if the head is
farther than 79 due to its limitation of issuing a
maximum of 80 step pulses. The user simply
needs to issue a second Recalibrate command.
The Seek command and implied seeks will
function correctly within the 44 (D) track (299-255)
area of the "extended track area". It is the user's
responsibility not to issue a new track position that
will exceed the maximum track that is present in
the extended area.
To return to the standard floppy range (0-255) of
tracks, a Relative Seek should be issued to cross
the track 255 boundary.
reset, the FDC will default to the conventional
mode (WGATE = 0, GAP = 0).
Selection of the 500 Kbps and 1 Mbps
perpendicular modes is independent of the actual
data rate selected in the Data Rate Select
Register. The user must ensure that these two
data rates remain consistent.
The Gap2 and VCO timing requirements for
perpendicular recording type drives are dictated
by the design of the read/write head. In the
design of this head, a pre-erase head precedes
the normal read/write head by a distance of 200
micrometers. This works out to about 38 bytes at
a 1 Mbps recording density. Whenever the write
head is enabled by the Write Gate signal, the preerase head is also activated at the same time.
Thus, when the write head is initially turned on,
flux transitions recorded on the media for the first
38 bytes will not be preconditioned with the preerase head since it has not yet been activated. To
accommodate this head activation and
deactivation time, the Gap2 field is expanded to a
length of 41 bytes. The format fields table
illustrates the change in the Gap2 field size for the
perpendicular format.
A Relative Seek can be used instead of the
normal Seek, but the host is required to calculate
the difference between the current head location
and the new (target) head location. This may
require the host to issue a Read ID command to
ensure that the head is physically on the track that
software assumes it to be. Different FDC
commands will return different cylinder results
which may be difficult to keep track of with
software without the Read ID command.
Perpendicular Mode
The Perpendicular Mode command should be
issued prior to executing Read/Write/Format
commands that access a disk drive with
perpendicular recording capability. With this
command, the length of the Gap2 field and VCO
enable timing can be altered to accommodate the
unique requirements of these drives. Table 27
describes the effects of the WGATE and GAP bits
for the Perpendicular Mode command. Upon a
On the read back by the FDC, the controller must
begin synchronization at the beginning of the sync
field. For the conventional mode, the internal PLL
VCO is enabled (VCOEN) approximately 24 bytes
from the start of the Gap2 field. But, when the
controller operates in the 1 Mbps perpendicular
mode (WGATE = 1, GAP = 1), VCOEN goes
active after 43 bytes to accommodate the
increased Gap2 field size. For both cases, and
approximate two-byte cushion is maintained from
the beginning of the sync field for the purposes of
avoiding write splices in the presence of motor
speed variation.
For the Write Data case, the FDC activates Write
Gate at the beginning of the sync field under the
conventional mode. The controller then writes a
new sync field, data address mark, data field, and
CRC. With the pre-erase head of the
perpendicular drive, the write head must be
activated in the Gap2 field to insure a proper write
of the new sync field. For the 1 Mbps
70
perpendicular mode (WGATE = 1, GAP = 1), 38
bytes will be written in the Gap2 space. Since the
bit density is proportional to the data rate, 19
bytes will be written in the Gap2 field for the 500
Kbps perpendicular mode (WGATE = 1, GAP =0).
It should be noted that none of the alterations in
Gap2 size, VCO timing, or Write Gate timing affect
normal program flow. The information provided
here is just for background purposes and is not
needed for normal operation. Once the
Perpendicular Mode command is invoked, FDC
software behavior from the user standpoint is
unchanged.
The perpendicular mode command is enhanced to
allow specific drives to be designated
Perpendicular recording drives. This
enhancement allows data transfers between
Conventional and Perpendicular drives without
having to issue Perpendicular mode commands
between the accesses of the different drive types,
nor having to change write pre-compensation
values.
When both GAP and WGATE bits of the
PERPENDICULAR MODE COMMAND are both
programmed to "0" (Conventional mode), then D0,
D1, D2, D3, and D4 can be programmed
independently to "1" for that drive to be set
automatically to Perpendicular mode. In this
mode the following set of conditions also apply:
1. The GAP2 written to a perpendicular drive
during a write operation will depend upon the
programmed data rate.
2. The write pre-compensation given to a
perpendicular mode drive will be 0ns.
3. For D0-D3 programmed to "0" for conventional
mode drives any data written will be at the
currently programmed write precompensation.
Note: Bits D0-D3 can only be overwritten when
OW is programmed as a "1".If either GAP
or WGATE is a "1" then D0-D3 are
ignored.
Software and hardware resets have the following
effect on the PERPENDICULAR MODE
COMMAND:
1. "Software" resets (via the DOR or DSR
registers) will only clear GAP and WGATE bits
to "0". D0-D3 are unaffected and retain their
previous value.
2. "Hardware" resets will clear all bits
(GAP, WGATE and D0-D3) to "0", i.e all
conventional mode.
71
Table 27 - Effects of WGATE and GAP Bits
WGATEGAPMODE
0
0
0
Conventional
1
Perpendicular
(500 Kbps)
1
0
Reserved
(Conventional)
1
1
Perpendicular
(1 Mbps)
LOCK
In order to protect systems with long DMA
latencies against older application software that
can disable the FIFO the LOCK Command has
been added. This command should only be used
by the FDC routines, and application software
should refrain from using it. If an application calls
for the FIFO to be disabled then the CONFIGURE
command should be used.
The LOCK command defines whether the EFIFO,
FIFOTHR, and PRETRK parameters of the
CONFIGURE command can be RESET by the
DOR and DSR registers. When the LOCK bit is
set to logic "1" all subsequent "software RESETS
by the DOR and DSR registers will not change the
previously set parameters to their default values.
All "hardware" RESET from the nPCI_RESET pin
will set the LOCK bit to logic "0" and return the
EFIFO, FIFOTHR, and PRETRK to their default
values. A status byte is returned immediately
after issuing a LOCK command. This byte reflects
the value of the LOCK bit set by the command
byte.
PORTION OF
GAP 2
LENGTH OF
GAP2 FORMAT
FIELD
22 Bytes
22 Bytes
22 Bytes
41 Bytes
WRITTEN BY
WRITE DATA
OPERATION
0 Bytes
19 Bytes
0 Bytes
38 Bytes
ENHANCED DUMPREG
The DUMPREG command is designed to support
system run-time diagnostics and application
software development and debug. To
accommodate the LOCK command and the
enhanced PERPENDICULAR MODE command
the eighth byte of the DUMPREG command has
been modified to contain the additional data from
these two commands.
COMPATIBILITY
The LPC47B27x was designed with software
compatibility in mind. It is a fully backwardscompatible solution with the older generation
765A/B disk controllers. The FDC also
implements on-board registers for compatibility
with the PS/2, as well as PC/AT and PC/XT,
floppy disk controller subsystems. After a
hardware reset of the FDC, all registers, functions
and enhancements default to a PC/AT, PS/2 or
PS/2 Model 30 compatible operating mode,
depending on how the IDENT and MFM bits are
configured by the system BIOS.
72
SERIAL PORT (UART)
The LPC47B27x incorporates two full function
UARTs. They are compatible with the NS16450,
the 16450 ACE registers and the NS16C550A.
The UARTS perform serial-to-parallel conversion
on received characters and parallel-to-serial
conversion on transmit characters. The data rates
are independently programmable from 460.8K
baud down to 50 baud. The character options are
programmable for 1 start; 1, 1.5 or 2 stop bits;
even, odd, sticky or no parity; and prioritized
interrupts. The UARTs each contain a
programmable baud rate generator that is capable
of dividing the input clock or crystal by a number
from 1 to 65535. The UARTs are also capable of
supporting the MIDI data rate. Refer to the
Configuration Registers for information on
disabling, power down and changing the base
address of the UARTs. The interrupt from a
UART is enabled by programming OUT2 of that
Table 28 - Addressing the Serial Port
DLAB*A2A1A0REGISTER NAME
0000Receive Buffer (read)
0000Transmit Buffer (write)
0001Interrupt Enable (read/write)
X010Interrupt Identification (read)
X010FIFO Control (write)
X011Line Control (read/write)
X100Modem Control (read/write)
X101Line Status (read/write)
X110Modem Status (read/write)
X111Scratchpad (read/write)
1000Divisor LSB (read/write)
1001Divisor MSB (read/write
UART to a logic "1". OUT2 being a logic "0"
disables that UART's interrupt. The second UART
also supports IrDA, HP-SIR, ASK-IR, and
Consumer IR infrared modes of operation.
Note: The UARTs 1 and 2 may be configured to
share an interrupt. Refer to the Configuration
section for more information.
REGISTER DESCRIPTION
Addressing of the accessible registers of the
Serial Port is shown below. The base addresses
of the serial ports are defined by the configuration
registers (see Configuration section). The Serial
Port registers are located at sequentially
increasing addresses above these base
addresses. The LPC47B27x contains two serial
ports, each of which contain a register set as
described below.
*Note: DLAB is Bit 7 of the Line Control Register
73
The following section describes the operation of
the registers.
This register holds the received incoming data
byte. Bit 0 is the least significant bit, which is
transmitted and received first. Received data is
double buffered; this uses an additional shift
register to receive the serial data stream and
convert it to a parallel 8 bit word which is
transferred to the Receive Buffer register. The
shift register is not accessible.
This register contains the data byte to be
transmitted. The transmit buffer is double
buffered, utilizing an additional shift register (not
accessible) to convert the 8 bit data word to a
serial format. This shift register is loaded from the
Transmit Buffer when the transmission of the
previous byte is complete.
The lower four bits of this register control the
enables of the five interrupt sources of the Serial
Port interrupt. It is possible to totally disable the
interrupt system by resetting bits 0 through 3 of
this register. Similarly, setting the appropriate bits
of this register to a high, selected interrupts can
be enabled. Disabling the interrupt system inhibits
the Interrupt Identification Register and disables
any Serial Port interrupt out of the LPC47B27x.
All other system functions operate in their normal
manner, including the Line Status and MODEM
Status Registers. The contents of the Interrupt
Enable Register are described below.
Bit 0
This bit enables the Received Data Available
Interrupt (and timeout interrupts in the FIFO
mode) when set to logic "1".
Bit 1
This bit enables the Transmitter Holding Register
Empty Interrupt when set to logic "1".
Bit 2
This bit enables the Received Line Status
Interrupt when set to logic "1". The error sources
causing the interrupt are Overrun, Parity, Framing
and Break. The Line Status Register must be
read to determine the source.
Bit 3
This bit enables the MODEM Status Interrupt
when set to logic "1". This is caused when one of
the Modem Status Register bits changes state.
This is a write only register at the same location
as the IIR. This register is used to enable and
clear the FIFOs, set the RCVR FIFO trigger level.
Note: DMA is not supported. The UART1 and
UART2 FCR’s are shadowed in the UART1 FIFO
Control Shadow Register (runtime register at
offset 0x20) and UART2 FIFO Control Shadow
Register (runtime register at offset 0x21).
Bit 0
Setting this bit to a logic "1" enables both the
XMIT and RCVR FIFOs. Clearing this bit to a
logic "0" disables both the XMIT and RCVR FIFOs
and clears all bytes from both FIFOs. When
changing from FIFO Mode to non-FIFO (16450)
mode, data is automatically cleared from the
FIFOs. This bit must be a 1 when other bits in this
register are written to or they will not be properly
programmed.
74
Bit 1
Setting this bit to a logic "1" clears all bytes in the
RCVR FIFO and resets its counter logic to 0. The
shift register is not cleared. This bit is selfclearing.
Bit 2
Setting this bit to a logic "1" clears all bytes in the
XMIT FIFO and resets its counter logic to 0. The
shift register is not cleared. This bit is selfclearing.
Bit 3
Writing to this bit has no effect on the operation of
the UART. The RXRDY and TXRDY pins are not
available on this chip.
Bit 4,5
Reserved
Bit 6,7
These bits are used to set the trigger level for the
RCVR FIFO interrupt.
INTERRUPT IDENTIFICATION REGISTER (IIR)
RCVR FIFO
Bit 7 Bit 6
Trigger Level (BYTES)
001
014
108
1114
3.Transmitter Holding Register Empty
4.MODEM Status (lowest priority)
Information indicating that a prioritized interrupt is
pending and the source of that interrupt is stored
in the Interrupt Identification Register (refer to
Interrupt Control Table). When the CPU accesses
the IIR, the Serial Port freezes all interrupts and
indicates the highest priority pending interrupt to
the CPU. During this CPU access, even if the
Serial Port records new interrupts, the current
indication does not change until access is
completed. The contents of the IIR are described
below.
Bit 0
This bit can be used in either a hardwired
prioritized or polled environment to indicate
whether an interrupt is pending. When bit 0 is a
logic "0", an interrupt is pending and the contents
of the IIR may be used as a pointer to the
appropriate internal service routine. When bit 0 is
a logic "1", no interrupt is pending.
Bits 1 and 2
These two bits of the IIR are used to identify the
highest priority interrupt pending as indicated by
the Interrupt Control Table.
Bit 3
In non-FIFO mode, this bit is a logic "0". In FIFO
mode this bit is set along with bit 2 when a timeout
interrupt is pending.
Address Offset = 2H, DLAB = X, READ
By accessing this register, the host CPU can
determine the highest priority interrupt and its
source. Four levels of priority interrupt exist.
They are in descending order of priority:
1.Receiver Line Status (highest priority)
2.Received Data Ready
Bits 4 and 5
These bits of the IIR are always logic "0".
Bits 6 and 7
These two bits are set when the FIFO CONTROL
Register bit 0 equals 1.
75
Table 29 - Interrupt Control
FIFO
MODE
ONLY
BIT 3BIT 2 BIT 1 BIT 0
INTERRUPT
IDENTIFICATION
REGISTERINTERRUPT SET AND RESET FUNCTIONS
PRIORITY
LEVEL
INTERRUPT
TYPE
INTERRUPT
SOURCE
INTERRUPT RESET
0001-NoneNone0110HighestReceiver Line
Status
Overrun Error,
Parity Error,
Reading the Line
Status Register
Framing Error or
Break Interrupt
0100SecondReceived Data
Available
Receiver Data
Available
Read Receiver
Buffer or the FIFO
drops below the
trigger level.
1100SecondCharacter
Timeout
Indication
No Characters
Have Been
Removed From or
Reading the
Receiver Buffer
Register
Input to the RCVR
FIFO during the
last 4 Char times
and there is at
least 1 char in it
during this time
0010ThirdTransmitter
Holding
Register Empty
Transmitter
Holding Register
Empty
Reading the IIR
Register (if Source of
Interrupt) or Writing
the Transmitter
Holding Register
0000FourthMODEM
Status
Clear to Send or
Data Set Ready or
Ring Indicator or
Reading the
MODEM Status
Register
Data Carrier
Detect
CONTROL
76
LINE CONTROL REGISTER (LCR)
Address Offset = 3H, DLAB = 0, READ/WRITE
Start LSB Data 5-8 bits MSB Parity Stop
Serial Data
This register contains the format information of the
serial line. The bit definitions are:
Bits 0 and 1
These two bits specify the number of bits in each
transmitted or received serial character. The
encoding of bits 0 and 1 is as follows:
The Start, Stop and Parity bits are not included in
the word length.
BIT 1BIT 0WORD LENGTH
0
0
1
1
0
1
0
1
5 Bits
6 Bits
7 Bits
8 Bits
Bit 2
This bit specifies the number of stop bits in each
transmitted or received serial character. The
following table summarizes the information.
NUMBER OF
BIT 2WORD LENGTH
STOP BITS
0-1
15 Bits1.5
16 Bits2
17 Bits2
18 Bits2
Note: The receiver will ignore all stop bits beyond
the first, regardless of the number used in
transmitting.
Bit 3
Parity Enable bit. When bit 3 is a logic "1", a
parity bit is generated (transmit data) or checked
(receive data) between the last data word bit and
the first stop bit of the serial data. (The parity bit is
used to generate an even or odd number of 1s
when the data word bits and the parity bit are
summed).
Bit 4
Even Parity Select bit. When bit 3 is a logic "1"
and bit 4 is a logic "0", an odd number of logic
"1"'s is transmitted or checked in the data word
bits and the parity bit. When bit 3 is a logic "1"
and bit 4 is a logic "1" an even number of bits is
transmitted and checked.
Bit 5
Stick Parity bit. When parity is enabled it is used
in conjunction with bit 4 to select Mark or Space
Parity. When LCR bits 3, 4 and 5 are 1 the Parity
bit is transmitted and checked as a 0 (Space
Parity). If bits 3 and 5 are 1 and bit 4 is a 0, then
the Parity bit is transmitted and checked as 1
(Mark Parity). If bit 5 is 0 Stick Parity is disabled.
Bit 6
Set Break Control bit. When bit 6 is a logic "1",
the transmit data output (TXD) is forced to the
Spacing or logic "0" state and remains there (until
reset by a low level bit 6) regardless of other
transmitter activity. This feature enables the
Serial Port to alert a terminal in a communications
system.
Bit 7
Divisor Latch Access bit (DLAB). It must be set
high (logic "1") to access the Divisor Latches of
the Baud Rate Generator during read or write
operations. It must be set low (logic "0") to access
the Receiver Buffer Register, the Transmitter
Holding Register, or the Interrupt Enable Register.
MODEM CONTROL REGISTER (MCR)
Address Offset = 4H, DLAB = X, READ/WRITE
This 8 bit register controls the interface with the
MODEM or data set (or device emulating a
MODEM). The contents of the MODEM control
register are described below.
Bit 0
This bit controls the Data Terminal Ready (nDTR)
output. When bit 0 is set to a logic "1", the nDTR
output is forced to a logic "0". When bit 0 is a logic
"0", the nDTR output is forced to a logic "1".
Bit 1
This bit controls the Request To Send (nRTS)
output. Bit 1 affects the nRTS output in a manner
identical to that described above for bit 0.
77
Bit 2
This bit controls the Output 1 (OUT1) bit. This bit
does not have an output pin and can only be read
or written by the CPU.
Bit 3
Output 2 (OUT2). This bit is used to enable an
UART interrupt. When OUT2 is a logic "0", the
serial port interrupt output is forced to a high
impedance state - disabled. When OUT2 is a
logic "1", the serial port interrupt outputs are
enabled.
Bit 4
This bit provides the loopback feature for
diagnostic testing of the Serial Port. When bit 4 is
set to logic "1", the following occur:
1. The TXD is set to the Marking State(logic
"1").
2. The receiver Serial Input (RXD) is
disconnected.
3. The output of the Transmitter Shift
Register is "looped back" into the Receiver
Shift Register input.
4. All MODEM Control inputs (nCTS, nDSR, nRI
and nDCD) are disconnected.
5. The four MODEM Control outputs (nDTR,
nRTS, OUT1 and OUT2) are internally
connected to the four MODEM Control
inputs (nDSR, nCTS, RI, DCD).
6.The Modem Control output pins are forced
inactive high.
7. Data that is transmitted is immediately
received.
This feature allows the processor to verify the
transmit and receive data paths of the Serial Port.
In the diagnostic mode, the receiver and the
transmitter interrupts are fully operational. The
MODEM Control Interrupts are also operational
but the interrupts' sources are now the lower four
bits of the MODEM Control Register instead of the
MODEM Control inputs. The interrupts are still
controlled by the Interrupt Enable Register.
Bits 5 through 7
These bits are permanently set to logic zero.
LINE STATUS REGISTER (LSR)
Address Offset = 5H, DLAB = X, READ/WRITE
Bit 0
Data Ready (DR). It is set to a logic "1" whenever
a complete incoming character has been received
and transferred into the Receiver Buffer Register
or the FIFO. Bit 0 is reset to a logic "0" by reading
all of the data in the Receive Buffer Register or
the FIFO.
Bit 1
Overrun Error (OE). Bit 1 indicates that data in
the Receiver Buffer Register was not read before
the next character was transferred into the
register, thereby destroying the previous
character. In FIFO mode, an overrun error will
occur only when the FIFO is full and the next
character has been completely received in the
shift register, the character in the shift register is
overwritten but not transferred to the FIFO. The
OE indicator is set to a logic "1" immediately upon
detection of an overrun condition, and reset
whenever the Line Status Register is read.
Bit 2
Parity Error (PE). Bit 2 indicates that the received
data character does not have the correct even or
odd parity, as selected by the even parity select
bit. The PE is set to a logic "1" upon detection of
a parity error and is reset to a logic "0" whenever
the Line Status Register is read. In the FIFO
mode this error is associated with the particular
character in the FIFO it applies to. This error is
indicated when the associated character is at the
top of the FIFO.
Bit 3
Framing Error (FE). Bit 3 indicates that the
received character did not have a valid stop bit.
Bit 3 is set to a logic "1" whenever the stop bit
following the last data bit or parity bit is detected
as a zero bit (Spacing level). The FE is reset to a
logic "0" whenever the Line Status Register is
read. In the FIFO mode this error is associated
with the particular character in the FIFO it applies
to. This error is indicated when the associated
character is at the top of the FIFO. The Serial
Port will try to resynchronize after a framing error.
To do this, it assumes that the framing error was
due to the next start bit, so it samples this 'start' bit
twice and then takes in the 'data'.
78
Bit 4
Break Interrupt (BI). Bit 4 is set to a logic "1"
whenever the received data input is held in the
Spacing state (logic "0") for longer than a full word
transmission time (that is, the total time of the start
bit + data bits + parity bits + stop bits). The BI is
reset after the CPU reads the contents of the Line
Status Register. In the FIFO mode this error is
associated with the particular character in the
FIFO it applies to. This error is indicated when the
associated character is at the top of the FIFO.
When break occurs only one zero character is
loaded into the FIFO. Restarting after a break is
received, requires the serial data (RXD) to be
logic "1" for at least 1/2 bit time.
Note: Bits 1 through 4 are the error conditions
that produce a Receiver Line Status Interrupt
whenever any of the corresponding conditions are
detected and the interrupt is enabled.
Bit 5
Transmitter Holding Register Empty (THRE). Bit 5
indicates that the Serial Port is ready to accept a
new character for transmission. In addition, this
bit causes the Serial Port to issue an interrupt
when the Transmitter Holding Register interrupt
enable is set high. The THRE bit is set to a logic
"1" when a character is transferred from the
Transmitter Holding Register into the Transmitter
Shift Register. The bit is reset to logic "0"
whenever the CPU loads the Transmitter Holding
Register. In the FIFO mode this bit is set when
the XMIT FIFO is empty, it is cleared when at
least 1 byte is written to the XMIT FIFO. Bit 5 is a
read only bit.
Bit 6
Transmitter Empty (TEMT). Bit 6 is set to a logic
"1" whenever the Transmitter Holding Register
(THR) and Transmitter Shift Register (TSR) are
both empty. It is reset to logic "0" whenever either
the THR or TSR contains a data character. Bit 6
is a read only bit. In the FIFO mode this bit is set
whenever the THR and TSR are both empty,
Bit 7
This bit is permanently set to logic "0" in the 450
mode. In the FIFO mode, this bit is set to a logic
"1" when there is at least one parity error, framing
error or break indication in the FIFO. This bit is
cleared when the LSR is read if there are no
subsequent errors in the FIFO.
MODEM STATUS REGISTER (MSR)
Address Offset = 6H, DLAB = X, READ/WRITE
This 8 bit register provides the current state of the
control lines from the MODEM (or peripheral
device). In addition to this current state
information, four bits of the MODEM Status
Register (MSR) provide change information.
These bits are set to logic "1" whenever a control
input from the MODEM changes state. They are
reset to logic "0" whenever the MODEM Status
Register is read.
Bit 0
Delta Clear To Send (DCTS). Bit 0 indicates that
the nCTS input to the chip has changed state
since the last time the MSR was read.
Bit 1
Delta Data Set Ready (DDSR). Bit 1 indicates
that the nDSR input has changed state since the
last time the MSR was read.
Bit 2
Trailing Edge of Ring Indicator (TERI). Bit 2
indicates that the nRI input has changed from
logic "0" to logic "1".
Bit 3
Delta Data Carrier Detect (DDCD). Bit 3 indicates
that the nDCD input to the chip has changed
state.
Note: Whenever bit 0, 1, 2, or 3 is set to a logic
"1", a MODEM Status Interrupt is generated.
Bit 4
This bit is the complement of the Clear To Send
(nCTS) input. If bit 4 of the MCR is set to logic
"1", this bit is equivalent to nRTS in the MCR.
Bit 5
This bit is the complement of the Data Set Ready
(nDSR) input. If bit 4 of the MCR is set to logic
"1", this bit is equivalent to DTR in the MCR.
Bit 6
This bit is the complement of the Ring Indicator
(nRI) input. If bit 4 of the MCR is set to logic "1",
this bit is equivalent to OUT1 in the MCR.
Bit 7
This bit is the complement of the Data Carrier
Detect (nDCD) input. If bit 4 of the MCR is set to
logic "1", this bit is equivalent to OUT2 in the
MCR.
This 8 bit read/write register has no effect on the
operation of the Serial Port. It is intended as a
scratchpad register to be used by the programmer
to hold data temporarily.
The Serial Port contains a programmable Baud
Rate Generator that is capable of dividing the
PLL clock by any divisor from 1 to 65535. The
internal PLL clock is divided down to generate a
1.8462MHz frequency for Baud Rates less than
38.4k, a 1.8432MHz frequency for 115.2k, a
3.6864MHz frequency for 230.4k and a
7.3728MHz frequency for 460.8k. This output
frequency of the Baud Rate Generator is 16x the
Baud rate. Two 8 bit latches store the divisor in
16 bit binary format. These Divisor Latches must
be loaded during initialization in order to insure
desired operation of the Baud Rate Generator.
Upon loading either of the Divisor Latches, a 16
bit Baud counter is immediately loaded. This
prevents long counts on initial load. If a 0 is
loaded into the BRG registers the output divides
the clock by the number 3. If a 1 is loaded the
output is the inverse of the input oscillator. If a
two is loaded the output is a divide by 2 signal
with a 50% duty cycle. If a 3 or greater is loaded
the output is low for 2 bits and high for the
remainder of the count.
Table 30 shows the baud rates.
Effect Of The Reset on Register File
The Reset Function (Table 31) details the effect of
the Reset input on each of the registers of the
Serial Port.
80
FIFO INTERRUPT MODE OPERATION
When the RCVR FIFO and receiver interrupts are
enabled (FCR bit 0 = "1", IER bit 0 = "1"), RCVR
interrupts occur as follows:
A. The receive data available interrupt will be
issued when the FIFO has reached its
programmed trigger level; it is cleared as soon
as the FIFO drops below its programmed
trigger level.
This will cause a maximum character received to
interrupt issued delay of 160 msec at 300 BAUD
with a 12 bit character.
B. Character times are calculated by using the
RCLK input for a clock signal (this makes the
delay proportional to the baudrate).
C. When a timeout interrupt has occurred it is
cleared and the timer reset when the CPU
reads one character from the RCVR FIFO.
B. The IIR receive data available indication also
occurs when the FIFO trigger level is reached.
It is cleared when the FIFO drops below the
trigger level.
C. The receiver line status interrupt (IIR=06H), has
higher priority than the received data available
(IIR=04H) interrupt.
D. The data ready bit (LSR bit 0) is set as soon as
a character is transferred from the shift
register to the RCVR FIFO. It is reset when
the FIFO is empty.
When RCVR FIFO and receiver interrupts are
enabled, RCVR FIFO timeout interrupts occur as
follows:
A. A FIFO timeout interrupt occurs if all the
following conditions exist:
- At least one character is in the FIFO.
- The most recent serial character
received was longer than 4 continuous
character times ago. (If 2 stop bits are
programmed, the second one is included
in this time delay).
- The most recent CPU read of the FIFO
was longer than 4 continuous character
times ago.
D. When a timeout interrupt has not occurred the
timeout timer is reset after a new character is
received or after the CPU reads the RCVR
FIFO.
When the XMIT FIFO and transmitter interrupts
are enabled (FCR bit 0 = "1", IER bit 1 = "1"),
XMIT interrupts occur as follows:
A. The transmitter holding register interrupt (02H)
occurs when the XMIT FIFO is empty; it is
cleared as soon as the transmitter holding
register is written to (1 of 16 characters may
be written to the XMIT FIFO while servicing
this interrupt) or the IIR is read.
B. The transmitter FIFO empty indications will be
delayed 1 character time minus the last stop
bit time whenever the following occurs:
THRE=1 and there have not been at least two
bytes at the same time in the transmitter FIFO
since the last THRE=1. The transmitter
interrupt after changing FCR0 will be
immediate, if it is enabled.
Character timeout and RCVR FIFO trigger level
interrupts have the same priority as the current
received data available interrupt; XMIT FIFO
empty has the same priority as the current
transmitter holding register empty interrupt.
81
FIFO POLLED MODE OPERATION
2
Bits 1 to 4 specify which error(s) have occurred.
Character error status is handled the same way
With FCR bit 0 = "1" resetting IER bits 0, 1, 2 or 3
or all to zero puts the UART in the FIFO Polled
Mode of operation. Since the RCVR and
XMITTER are controlled separately, either one or
both can be in the polled mode of operation. In
this mode, the user's program will check RCVR
and XMITTER status via the LSR. LSR definitions
as when in the interrupt mode, the IIR is not
affected since EIR bit 2=0.
Bit 5 indicates when the XMIT FIFO is empty.
Bit 6 indicates that both the XMIT FIFO and shift
register are empty.
Bit 7 indicates whether there are any errors in the
RCVR FIFO.
for the FIFO Polled Mode are as follows:
There is no trigger level reached or timeout
Bit 0=1 as long as there is one byte in the RCVR
FIFO.
Note1: The percentage error for all baud rates, except where indicated otherwise, is 0.2%.
Note 2: The High Speed bit is located in the Device Configuration Space.
82
Table 31 - Reset Function
REGISTER/SIGNALRESET CONTROLRESET STATE
Interrupt Enable RegisterRESETAll bits low
Interrupt Identification Reg.RESETBit 0 is high; Bits 1 - 7 low
FIFO ControlRESETAll bits low
Line Control Reg.RESETAll bits low
MODEM Control Reg.RESETAll bits low
Line Status Reg.RESETAll bits low except 5, 6 high
MODEM Status Reg.RESETBits 0 - 3 low; Bits 4 - 7 input
TXD1, TXD2RESETHigh
INTRPT (RCVR errs)RESET/Read LSRLow
INTRPT (RCVR Data Ready)RESET/Read RBRLow
INTRPT (THRE)RESET/ReadIIR/Write THRLow
OUT2BRESETHigh
RTSBRESETHigh
DTRBRESETHigh
OUT1BRESETHigh
RCVR FIFORESET/
FCR1*FCR0/_FCR0
XMIT FIFORESET/
FCR1*FCR0/_FCR0
All Bits Low
All Bits Low
83
Table 32 - Register Summary for an Individual UART Channel
*DLAB is Bit 7 of the Line Control Register (ADDR = 3).
Note 1: Bit 0 is the least significant bit. It is the first bit serially transmitted or received.
Note 2: When operating in the XT mode, this bit will be set any time that the transmitter shift register is
empty.
84
Table 32 - Register Summary for an Individual UART Channel (continued)
BIT 2BIT 3BIT 4BIT 5BIT 6BIT 7
Data Bit 2Data Bit 3Data Bit 4Data Bit 5Data Bit 6Data Bit 7
Data Bit 2Data Bit 3Data Bit 4Data Bit 5Data Bit 6Data Bit 7
Enable
Receiver Line
Status
Interrupt
(ELSI)
Interrupt ID Bit Interrupt ID Bit
XMIT FIFO
Reset
Enable
MODEM
Status
Interrupt
(EMSI)
(Note 5)
DMA Mode
Select (Note
0000
00FIFOs
Enabled
(Note 5)
ReservedReservedRCVR Trigger
LSB
FIFOs
Enabled
(Note 5)
RCVR Trigger
MSB
6)
Number of
Stop Bits
(STB)
OUT1
(Note 3)
Parity Error
(PE)
Parity Enable
(PEN)
OUT2
(Note 3)
Framing Error
(FE)
Even Parity
Stick ParitySet BreakDivisor Latch
Select (EPS)
Loop000
Break
Interrupt (BI)
Transmitter
Holding
Register
Transmitter
Empty (TEMT)
(Note 2)
Access Bit
(DLAB)
Error in RCVR
FIFO (Note 5)
(THRE)
Trailing Edge
Ring Indicator
(TERI)
Delta Data
Carrier Detect
(DDCD)
Clear to Send
(CTS)
Data Set
Ready (DSR)
Ring Indicator
(RI)
Data Carrier
Detect (DCD)
Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7
Bit 2Bit 3Bit 4Bit 5Bit 6 Bit 7
Bit 10Bit 11Bit 12Bit 13Bit 14Bit 15
Note 3: This bit no longer has a pin associated with it.
Note 4: When operating in the XT mode, this register is not available.
Note 5: These bits are always zero in the non-FIFO mode.
Note 6: Writing a one to this bit has no effect. DMA modes are not supported in this chip.
Note 7: The UART1 and UART2 FCR’s are shadowed in the UART1 FIFO Control Shadow Register
(runtime register at offset 0x20) and UART2 FIFO Control Shadow Register (runtime register
at offset 0x21).
85
NOTES ON SERIAL PORT OPERATION
FIFO MODE OPERATION:
GENERAL
The RCVR FIFO will hold up to 16 bytes
regardless of which trigger level is selected.
TX AND RX FIFO OPERATION
The Tx portion of the UART transmits data
through TXD as soon as the CPU loads a byte
into the Tx FIFO. The UART will prevent loads
to the Tx FIFO if it currently holds 16
characters. Loading to the Tx FIFO will again be
enabled as soon as the next character is
transferred to the Tx shift register. These
capabilities account for the largely autonomous
operation of the Tx.
active until at least two bytes have the Tx FIFO
empties after this condition, the Tx been
loaded into the FIFO, concurrently. When
interrupt will be activated without a one
character delay.
Rx support functions and operation are quite
different from those described for the transmitter.
The Rx FIFO receives data until the number of
bytes in the FIFO equals the selected interrupt
trigger level. At that time if Rx interrupts are
enabled, the UART will issue an interrupt to the
CPU. The Rx FIFO will continue to store bytes
until it holds 16 of them. It will not accept any
more data when it is full. Any more data entering
the Rx shift register will set the Overrun Error flag.
Normally, the FIFO depth and the programmable
trigger levels will give the CPU ample time to
empty the Rx FIFO before an overrun occurs.
The UART starts the above operations typically
with a Tx interrupt. The chip issues a Tx interrupt
whenever the Tx FIFO is empty and the Tx
interrupt is enabled, except in the following
instance. Assume that the Tx FIFO is empty and
the CPU starts to load it. When the first byte
enters the FIFO the Tx FIFO empty interrupt will
transition from active to inactive. Depending on
the execution speed of the service routine
software, the UART may be able to transfer this
byte from the FIFO to the shift register before the
CPU loads another byte. If this happens, the Tx
FIFO will be empty again and typically the UART's
interrupt line would transition to the active state.
This could cause a system with an interrupt
control unit to record a Tx FIFO empty condition,
even though the CPU is currently servicing that
interrupt. Therefore, after the first byte has
been loaded into the FIFO the UART will wait
one serial character transmission time before
issuing a new Tx FIFO empty interrupt. This
one character Tx interrupt delay will remain
One side-effect of having a Rx FIFO is that the
selected interrupt trigger level may be above the
data level in the FIFO. This could occur when
data at the end of the block contains fewer bytes
than the trigger level. No interrupt would be
issued to the CPU and the data would remain in
the UART. To prevent the software from
having to check for this situation the chip
incorporates a timeout interrupt.
The timeout interrupt is activated when there is a
least one byte in the Rx FIFO, and neither the
CPU nor the Rx shift register has accessed the Rx
FIFO within 4 character times of the last byte.
The timeout interrupt is cleared or reset when the
CPU reads the Rx FIFO or another character
enters it.
These FIFO related features allow optimization of
CPU/UART transactions and are especially useful
given the higher baud rate capability (256 kbaud).
86
INFRARED INTERFACE
The infrared interface provides a two-way wireless
communications port using infrared as a
transmission medium. Several IR implementations
have been provided for the second UART in this
chip (logical device 5), IrDA, Consumer Remote
Control, and Amplitude Shift Keyed IR. The IR
transmission can use the standard UART2 TXD2
and RXD2 pins or optional IRTX2 and IRRX2
pins. These can be selected through the
configuration registers.
IrDA 1.0 allows serial communication at baud
rates up to 115.2 kbps. Each word is sent serially
beginning with a zero value start bit. A zero is
signaled by sending a single IR pulse at the
beginning of the serial bit time. A one is signaled
by sending no IR pulse during the bit time. Please
refer to the AC timing for the parameters of these
pulses and the IrDA waveform.
The consumer remote control interface can
decode NEC PPM remote control frames in
hardware as well provide a general-purpose
synchronous ASK encoder/decoder with
programmable carrier frequency and bit rates to
emulate many other popular remote control
encoding formats; including 38 kHz PPM, PWM
and RC-5. Consult the SMSC CIrCC data sheet
for more details.
The Amplitude Shift Keyed IR allows
asynchronous serial communication at baud rates
up to 19.2K Baud. Each word is sent serially
beginning with a zero value start bit. A zero is
signaled by sending a 500kHz waveform for the
duration of the serial bit time. A one is signaled by
sending no transmission during the bit time.
Please refer to the AC timing for the parameters of
the ASK-IR waveform.
If the Half Duplex option is chosen, there is a timeout when the direction of the transmission is
changed. This time-out starts at the last bit
transferred during a transmission and blocks the
receiver input until the timeout expires. If the
transmit buffer is loaded with more data before the
time-out expires, the timer is restarted after the
new byte is transmitted. If data is loaded into the
transmit buffer while a character is being received,
the transmission will not start until the time-out
expires after the last receive bit has been
received. If the start bit of another character is
received during this time-out, the timer is restarted
after the new character is received. The IR half
duplex time-out is programmable via CRF2 in
Logical Device 5. This register allows the time-out
to be programmed to any value between 0 and
10msec in 100usec increments.
87
IR Transmit Pins
The following description pertains to the IRTX pin
of the LPC47B27x.
Following a VTR POR, the IRTX pin will be
output and low. It will remain low until one of the
following conditions are met:
IRTX2/GP35 Pin. This pin defaults to the IRTX2
function.
1. This pin will remain low following a VCC
POR until serial port 2 is enabled by setting
the activate bit, at which time the pin will
reflect the state of the IR transmit output of
the IRCC block.
2. This pin will remain low following a VCC
POR until the GPIO output function is
selected for the pin, at which time the pin will
reflect the state of the GPIO data bit if it is
configured as an output.
GP53/TXD2/IRTX Pin. This pin defaults to the
GPIO output function.
1. This pin will remain low following a VCC
POR until the IRTX function is selected for
the pin AND serial port 2 is enabled by
setting the activate bit, at which time the pin
will reflect the state of the IR transmit output
of the IRCC block (if IR is enabled throughthe IR Option Register for Serial Port 2).
2. This pin will remain low following a VCC
POR until the TXD2 function is selected for
the pin AND serial port 2 is enabled by
setting the activate bit, at which time the pin
will reflect the state of the transmit output of
serial port 2.
3. This pin will remain low following a VCC
POR until the corresponding GPIO data bit
(GP5 register bit 3) is set or the polarity bit in
the GP53 control register is set.
88
MPU-401 MIDI UART
Overview
Serial Port 3 is used exclusively in the
LPC47B27x as an MPU-401-compatible MIDI
Interface. The LPC47B27x MPU-401 hardware
includes a Host Interface, an MPU-401
command controller, configuration registers, and
a compatible UART (Figure 2).
Each of these components are discussed in
detail, below.
MPU-401
COMMAND
CONTROLLER
SA[15:0]
HOST
SD[7:0]
INTERFACE
nIOW
Only the MPU-401 UART (pass-through) mode is
included in this implementation. MPU-401 UART
mode is supported on the Sound Blaster 16
Series-compatible MIDI hardware. The Sound
Blaster 16 hardware is supported by Microsoft
Windows Operating Systems.
In MPU-401 UART mode, data is transferred
without modification between the host and the
MIDI device (UART). Once UART mode is
entered using the UART MODE command (3Fh),
the only MPU-401 command that the interface
recognizes is RESET (FFh).
UART
TX
RX
MIDI_OUT
MIDI_IN
nIOR
IRQ
CONFIGURATION
REGISTERS
FIGURE 2 - MPU-401 MIDI INTERFACE
NOTE: This figure is for illustration purposes only and is not intended to suggest specific
implementation details.
89
Host Interface
I/O Addresses
The Sound Blaster 16 MPU-401 UART mode
Overview
MIDI interface requires two consecutive I/O
addresses with possible base I/O addresses of
The Host Interface includes two contiguous 8-bit
run-time registers (the Status/Command Port
and the Data Port), and an interrupt. For
illustration purposes, the Host Interface block
shown in Figure 2 uses standard ISA signaling.
300h and 330h. The default is 330h. The
LPC47B27x MPU-401 I/O base address is
programmable on even-byte boundaries
throughout the entire I/O address range (see
Section “Activate and I/O Base address”).
Address decoding and interrupt selection for the
Host Interface are determined by device
configuration registers (see Section “MPU401Configuration Registers”).
Registers (Ports)
The run-time registers in the MPU-401 Host
Interface are shown below in Table 33.
TABLE 33 - MPU-401 HOST INTERFACE REGISTERS
REGISTER
NAMEADDRESSTYPEDESCRIPTION
MIDI DATAMPU-401 I/O Base AddressR/WUsed for MIDI transmit data,
MIDI receive data, and MPU-401
command acknowledge.
STATUSMPU-401 I/O Base Address + 1RUsed to indicate the send/receive
status of the MIDI Data port.
COMMANDMPU-401 I/O Base Address + 1WUsed for MPU-401 Commands.
MIDI Data Port
The MIDI Data port is full-duplex; i.e., the
transmit and receive buffers can be used
The MIDI Data port exchanges MIDI transmit and
simultaneously.
MIDI receive data between the MPU-401 UART
interface and the host. The MIDI Data port is
read/write (Table 34). The MIDI Data port is also
used to return the command acknowledge byte
‘FEh’ following host writes to the COMMAND
port.
An interrupt is generated when either MIDI
receive data or a command acknowledge is
available to the host in the MIDI Data register.
See Section “Bit 7 – MIDI Receive Buffer Empty”
and “Interrupt”
TABLE 34 - MIDI DATA PORT
MPU-401 I/O BASE ADDRESS
D7D6D5D4D3D2D1D0DEFAULT
Status Port
The Status port is used to indicate the state of the transmit and receive buffers in the MIDI Data port.
The Status port is read-only (Table 35). Status port Bit 6 is MIDI Transmit Busy, Bit 7 is MIDI Receive
Buffer Empty. The remaining bits in the Status port are RESERVED.
TABLE 35 - MPU-401 STATUS PORT
MPU-401 I/O BASE ADDRESS+1
D7D6D5D4D3D2D1D0DEFAULT
TYPERRRRRRRR0x80
BIT
NAME
MIDI RX
BUFFE
MIDI TX
BUSY
000000
R
EMPTY
Bit 7 – MIDI Receive Buffer Empty
Bit 7 MIDI Receive Buffer Empty indicates the read state of the MIDI Data port (Table 36). If the MRBE
bit is ‘0’, MIDI Read/Command Acknowledge data is available to the host. If the MRBE bit is ‘1’, MIDI
Read/Command Acknowledge data is NOT available to the host.
The MPU-401 Interrupt output is active ‘1’ when the MIDI Receive Buffer Empty bit is ‘0’. The MPU-401
Interrupt output is inactive ‘0’ when the MIDI Receive Buffer Empty bit is ‘1’. See Section “Interrupt” for
more information.
TABLE 36 - MIDI RECEIVE BUFFER EMPTY STATUS BIT
STATUS PORT
D7DESCRIPTION
0MIDI Read/Command Acknowledge data is
available to the host.
1MIDI Read/Command Acknowledge data is
NOT available to the host.
Bit 6 – MIDI Transmit Busy
Bit 6 MIDI Transmit Busy indicates the send (write) state of the MIDI Data port and Command port
(Table 37).
There are no interrupts associated with MIDI transmit (write) data.
TABLE 37 - MIDI TRANSMIT BUSY STATUS BIT
STATUS PORTDESCRIPTION
D6
0The MPU-401 interface is ready to accept a
data/command byte from the host.
1The MPU-401 interface is NOT ready to
accept a data/command byte from the host.
91
Bits[5:0]
4
2
RESERVED (Reserved bits cannot be written and return ‘0’ when read).
Command Port
The Command port is used to transfer MPU-401 commands to the Command Controller. The
Command port is write-only (Table 38). See Section “MPU-401 Command Controller” below.
TABLE 38 – MPU-401 COMMAND PORT
MPU-401 I/O BASE ADDRESS+1
D7D6D5D4D3D2D1D0DEFAULT
TYPEWWWWWWWWn/a
NAMECOMMAND REGISTER
Interrupt
The MPU-401 IRQ is asserted (‘1’) when either MIDI receive data or a command acknowledge byte is
available to the host in the MIDI Data register (Figure 3). The IRQ is deasserted (‘0’) when the host
reads the MIDI Data port.
NOTE: If, following a host read, data is still available in the Receive FIFO, the IRQ will remain asserted
(‘1’).
The IRQ is enabled when the ‘Activate’ bit in the MPU-401 configuration registers logical device block is
asserted ‘1’. If the Activate bit is deasserted ‘0’, the MPU-401 IRQ cannot be asserted (see Section
“MPU-401 Configuration Registers”).
The MPU-401 IRQ is not affected by MIDI write data, transmit-related functions or Receiver Line Status
interrupts.
The factory default Sound Blaster 16 MPU-401 IRQ is 5.
NOTE: IRQ remains asserted
until read FIFO is empty
MIDI RX CLOCK
DATA READY
IRQ
nREAD
MIDI RX DATA BYTE NMIDI RX DATA BYTE N+1MIDI_IN
1
3
FIGURE 3 - MPU-401 INTERRUPT
NOTE1DATA READY represents the Data Ready bit B0 in the UART Line Status Register.
NOTE2nREAD represents host read operations from the MIDI Data register.
NOTE3IRQ is the MPU-401 Host Interface IRQ shown in Figure 2. The UART Receive FIFO
Threshold = 1.
NOTE4MIDI RX CLOCK is the MIDI bit clock. The MIDI bit clock period is 32µs.
92
MPU-401 Command Controller
Overview
Commands are written by the host to the MPU401 MIDI Interface through the Command
register (Table 38) and are immediately
interpreted by the MPU-401 Command Controller
shown in Figure 3. The MPU-401 Command
Controller in this implementation only responds
to the MPU-401 RESET (FFh) and UART MODE
(3Fh) commands. All other commands are
ignored.
Under certain conditions, the Command
Controller acknowledges MPU-401 commands
with a command acknowledge byte (FEh).
RESET Command
The RESET command is FFh. The RESET
command resets the MPU-401 MIDI Interface.
Reset disables the MPU-401 UART MODE
command, disables the UART, clears the receive
FIFO. The command controller places the
command acknowledge byte ‘FEh’ in the MIDI
Data port read buffer if the interface is not in the
UART mode.
The RESET command is executed but not
acknowledged when the command is received
while the interface is in the UART mode.
When the MPU-401 is reset, receive data from
the MIDI_IN port as well as data written by the
host to the MIDI Data port is ignored.
The MPU-401 MIDI Interface is reset following
the RESET command or POR.
UART MODE Command
The UART MODE command is 3Fh. The UART
MODE command clears the transmit and receive
FIFOs, places the command acknowledge byte
(FEh) in the MIDI Data port receive buffer, and
enables the UART for transmit and receive
operations.
In UART mode, the MPU-401 Interface passes
MIDI read and write data directly between the
host (using the MIDI Data port) and the UART
Transmit and Receive buffers.
The MPU-401 Command Controller ignores the
UART MODE command when the MPU-401
Interface is already in UART mode.
The MPU-401 RESET command is executed but
not acknowledged by the MPU-401 Command
Controller in UART MODE (see Section “RESET
Command”, above).
Command Acknowledge Byte
Under certain conditions, the command controller
acknowledges the RESET and UART MODE
commands with a command acknowledge byte
(FEh).
The command acknowledge byte appears as
read-data in the MIDI Data port.
NOTE: The command acknowledge byte will
appear as the next available data byte in the
receive buffer of the MIDI Data port. For
example if the receive FIFO is not empty when
an MPU-401 RESET command is received, the
command acknowledge will appear first, before
any unread FIFO data. In the examples above,
the receive FIFO is cleared before the command
acknowledge byte is placed in the MIDI Data port
read buffer.
MIDI UART
Overview
The UART is used to transmit and receive MIDI
protocol data from the MIDI Data port in the Host
Interface (see Section “Host Interface”).
The MIDI protocol requires 31.25k Baud (±1%)
and 10 bits total per frame: 1 start bit, 8 data bits,
no parity, and 1 stop bit. For example, there are
320 microseconds per serial MIDI data byte.
MIDI data is transferred LSB first (Figure 4).
The UART is configured in full-duplex mode for
the MPU-401 MIDI Interface, with 16-byte
send/receive FIFOs.
93
1
MIDI RX DATA BYTE (01H)
MIDI RX CLOCK
MIDI_IN
FIGURE 4 - MIDI DATA BYTE EXAMPLE
NOTE1MIDI RX CLOCK is the MIDI bit clock. The MIDI bit clock period is 32µs.
MPU-401 Configuration Registers
The LPC47B27x configuration registers are in
Logical Device B (see Configuration section).
The configuration registers contain the MPU-401
Activate, Base Address and Interrupt select. The
defaults for the Base Address and Interrupt
Select configuration registers match the MPU401 factory defaults.
Activate and I/O Base Address
When the Activate bit D0 is ‘0’, the MPU-401 I/O
base address decoder is disabled, the IRQ
is always deasserted, and the MPU-401
hardware is in a minimum power-consumption
state. When the Activate bit is ‘1’, the MPU-401
I/O base address decoder and the IRQ are
enabled, and the MPU-401 hardware is fully
powered.
Register 0x60 is the MPU-401 I/O Base Address
High Byte, register 0x61 is the MPU-401 I/O
Base Address Low Byte. The MPU-401 I/O base
address is programmable on even-byte
boundaries. The valid MPU-401 I/O base
address range is 0x0100 – 0x0FFE. See Section
“Host Interface”.
94
PARALLEL PORT
The LPC47B27x incorporates an IBM XT/AT
compatible parallel port. This supports the
optional PS/2 type bi-directional parallel port
(SPP), the Enhanced Parallel Port (EPP) and the
The parallel port also incorporates SMSC's
ChiProtect circuitry, which prevents possible
damage to the parallel port due to printer power-
up.
Extended Capabilities Port (ECP) parallel port
modes. Refer to the Configuration Registers for
information on disabling, power down, changing
the base address of the parallel port, and
selecting the mode of operation.
The functionality of the Parallel Port is achieved
through the use of eight addressable ports, with
their associated registers and control gating. The
control and data port are read/write by the CPU,
the status port is read/write in the EPP mode. The
The LPC47B27x also provides a mode for support
address map of the Parallel Port is shown below:
of the floppy disk controller on the parallel port.
DATA PORTBASE ADDRESS + 00H
STATUS PORTBASE ADDRESS + 01H
CONTROL PORTBASE ADDRESS + 02H
EPP ADDR PORTBASE ADDRESS + 03H
EPP DATA PORT 0BASE ADDRESS + 04H
EPP DATA PORT 1BASE ADDRESS + 05H
EPP DATA PORT 2BASE ADDRESS + 06H
EPP DATA PORT 3BASE ADDRESS + 07H
The bit map of these registers is:
DATA PORTPD0PD1PD2PD3PD4PD5PD6PD71
STATUS PORT TMOUT00nERRSLCTPEnACKnBUSY1
CONTROL
PORT
EPP ADDR
PORT
EPP DATA
PORT 0
EPP DATA
PORT 1
EPP DATA
PORT 2
EPP DATA
PORT 3
Note:For the cable interconnection required for ECP support and the Slave Connector pin numbers,
refer to the IEEE 1284 Extended Capabilities Port Protocol and ISA Standard, Rev. 1.14, July 14, 1993.
This document is available from Microsoft.
96
IBM XT/AT COMPATIBLE, BI-DIRECTIONAL
AND EPP MODES
DATA PORT
ADDRESS OFFSET = 00H
BIT 3 nERR - nERROR
The level on the nERROR input is read by the
CPU as bit 3 of the Printer Status Register. A
logic 0 means an error has been detected; a logic
1 means no error has been detected.
The Data Port is located at an offset of '00H' from
the base address. The data register is cleared at
initialization by RESET. During a WRITE
operation, the Data Register latches the contents
of the internal data bus. The contents of this
register are buffered (non inverting) and output
onto the PD0 - PD7 ports. During a READ
operation in SPP mode, PD0 - PD7 ports are
buffered (not latched) and output to the host CPU.
STATUS PORT
ADDRESS OFFSET = 01H
The Status Port is located at an offset of '01H'
from the base address. The contents of this
register are latched for the duration of a read
cycle. The bits of the Status Port are defined as
follows:
BIT 0 TMOUT - TIME OUT
This bit is valid in EPP mode only and indicates
that a 10 usec time out has occurred on the EPP
bus. A logic O means that no time out error has
occurred; a logic 1 means that a time out error has
been detected. This bit is cleared by a RESET.
Writing a one to this bit clears the time out status
bit. On a write, this bit is self clearing and does
not require a write of a zero. Writing a zero to this
bit has no effect.
BITS 1, 2 - are not implemented as register bits,
during a read of the Printer Status Register these
bits are a low level.
BIT 4 SLCT - PRINTER SELECTED STATUS
The level on the SLCT input is read by the CPU
as bit 4 of the Printer Status Register. A logic 1
means the printer is on line; a logic 0 means it is
not selected.
BIT 5 PE - PAPER END
The level on the PE input is read by the CPU as
bit 5 of the Printer Status Register. A logic 1
indicates a paper end; a logic 0 indicates the
presence of paper.
BIT 6 nACK - nACKNOWLEDGE
The level on the nACK input is read by the CPU
as bit 6 of the Printer Status Register. A logic 0
means that the printer has received a character
and can now accept another. A logic 1 means
that it is still processing the last character or has
not received the data.
BIT 7 nBUSY - nBUSY
The complement of the level on the BUSY input is
read by the CPU as bit 7 of the Printer Status
Register. A logic 0 in this bit means that the
printer is busy and cannot accept a new character.
A logic 1 means that it is ready to accept the next
character.
CONTROL PORT
ADDRESS OFFSET = 02H
The Control Port is located at an offset of '02H'
from the base address. The Control Register is
initialized by the RESET input, bits 0 to 5 only
being affected; bits 6 and 7 are hard wired low.
97
BIT 0 STROBE - STROBE
This bit is inverted and output onto the nSTROBE
output.
BIT 1 AUTOFD - AUTOFEED
This bit is inverted and output onto the nAUTOFD
output. A logic 1 causes the printer to generate a
line feed after each line is printed. A logic 0 means
no autofeed.
BIT 2 nINIT - nINITIATE OUTPUT
This bit is output onto the nINIT output without
inversion.
BIT 3 SLCTIN - PRINTER SELECT INPUT
This bit is inverted and output onto the nSLCTIN
output. A logic 1 on this bit selects the printer; a
logic 0 means the printer is not selected.
BIT 4 IRQE - INTERRUPT REQUEST ENABLE
The interrupt request enable bit when set to a high
level may be used to enable interrupt requests
from the Parallel Port to the CPU. An interrupt
request is generated on the IRQ port by a positive
going nACK input. When the IRQE bit is
programmed low the IRQ is disabled.
BIT 5 PCD - PARALLEL CONTROL
DIRECTION
Parallel Control Direction is not valid in printer
mode. In printer mode, the direction is always out
regardless of the state of this bit. In bi-directional,
EPP or ECP mode, a logic 0 means that the
printer port is in output mode (write); a logic 1
means that the printer port is in input mode (read).
Bits 6 and 7 during a read are a low level, and
cannot be written.
EPP ADDRESS PORT
ADDRESS OFFSET = 03H
The EPP Address Port is located at an offset of
'03H' from the base address. The address
register is cleared at initialization by RESET.
During a WRITE operation, the contents of the
internal data bus DB0-DB7 are buffered (non
inverting) and output onto the PD0 - PD7 ports. An
LPC I/O write cycle causes an EPP ADDRESS
WRITE cycle to be performed, during which the
data is latched for the duration of the EPP write
cycle. During a READ operation, PD0 - PD7 ports
are read. An LPC I/O read cycle causes an EPP
ADDRESS READ cycle to be performed and the
data output to the host CPU, the deassertion of
ADDRSTB latches the PData for the duration of
the read cycle. This register is only available in
EPP mode.
EPP DATA PORT 0
ADDRESS OFFSET = 04H
The EPP Data Port 0 is located at an offset of
'04H' from the base address. The data register is
cleared at initialization by RESET. During a
WRITE operation, the contents of the internal data
bus DB0-DB7 are buffered (non inverting) and
output onto the PD0 - PD7 ports. An LPC I/O write
cycle causes an EPP DATA WRITE cycle to be
performed, during which the data is latched for the
duration of the EPP write cycle. During a READ
operation, PD0 - PD7 ports are read. An LPC I/O
read cycle causes an EPP READ cycle to be
performed and the data output to the host CPU,
the deassertion of DATASTB latches the PData
for the duration of the read cycle. This register is
only available in EPP mode.
EPP DATA PORT 1
ADDRESS OFFSET = 05H
The EPP Data Port 1 is located at an offset of
'05H' from the base address. Refer to EPP DATA
PORT 0 for a description of operation. This
register is only available in EPP mode.
EPP DATA PORT 2
ADDRESS OFFSET = 06H
The EPP Data Port 2 is located at an offset of
'06H' from the base address. Refer to EPP DATA
PORT 0 for a description of operation. This
register is only available in EPP mode.
98
EPP DATA PORT 3
ADDRESS OFFSET = 07H
The EPP Data Port 3 is located at an offset of
'07H' from the base address. Refer to EPP DATA
PORT 0 for a description of operation. This
register is only available in EPP mode.
EPP 1.9 OPERATION
When the EPP mode is selected in the
configuration register, the standard and bidirectional modes are also available. If no EPP
Read, Write or Address cycle is currently
executing, then the PDx bus is in the standard or
bi-directional mode, and all output signals
(STROBE, AUTOFD, INIT) are as set by the SPP
Control Port and direction is controlled by PCD of
the Control port.
In EPP mode, the system timing is closely coupled
to the EPP timing. For this reason, a watchdog
timer is required to prevent system lockup. The
timer indicates if more than 10usec have elapsed
from the start of the EPP cycle to nWAIT being
deasserted (after command). If a time-out occurs,
the current EPP cycle is aborted and the time-out
condition is indicated in Status bit 0.
During an EPP cycle, if STROBE is active, it
overrides the EPP write signal forcing the PDx bus
to always be in a write mode and the nWRITE
signal to always be asserted.
Software Constraints
Before an EPP cycle is executed, the software
must ensure that the control register bit PCD is a
logic "0" (i.e., a 04H or 05H should be written to
the Control port). If the user leaves PCD as a
logic "1", and attempts to perform an EPP write,
the chip is unable to perform the write (because
PCD is a logic "1") and will appear to perform an
EPP read on the parallel bus, no error is indicated.
EPP 1.9 Write
The timing for a write operation (address or data)
is shown in timing diagram EPP Write Data or
Address cycle. The chip inserts wait states into
the LPC I/O write cycle until it has been
determined that the write cycle can complete.
The write cycle can complete under the following
circumstances:
1.If the EPP bus is not ready (nWAIT is active
low) when nDATASTB or nADDRSTB goes
active then the write can complete when
nWAIT goes inactive high.
2.If the EPP bus is ready (nWAIT is inactive
high) then the chip must wait for it to go active
low before changing the state of nDATASTB,
nWRITE or nADDRSTB. The write can
complete once nWAIT is determined inactive.
Write Sequence of operation
1.The host initiates an I/O write cycle to the
selected EPP register.
2.If WAIT is not asserted, the chip must wait
until WAIT is asserted.
3.The chip places address or data on PData
bus, clears PDIR, and asserts nWRITE.
4.Chip asserts nDATASTB or nADDRSTRB
indicating that PData bus contains valid
information, and the WRITE signal is valid.
5.Peripheral deasserts nWAIT, indicating that
any setup requirements have been satisfied
and the chip may begin the termination phase
of the cycle.
6.a) The chip deasserts nDATASTB or
nADDRSTRB, this marks the beginning
of the termination phase. If it has not
already done so, the peripheral should
latch the information byte now.
b) The chip latches the data from the
internal data bus for the PData bus and
drives the sync that indicates that no
more wait states are required followed by
the TAR to complete the write cycle.
7.Peripheral asserts nWAIT, indicating to the
host that any hold time requirements have
been satisfied and acknowledging the
termination of the cycle.
8.Chip may modify nWRITE and nPDATA in
preparation for the next cycle.
99
EPP 1.9 Read
The timing for a read operation (data) is shown in
timing diagram EPP Read Data cycle. The chip
inserts wait states into the LPC I/O read cycle until
it has been determined that the read cycle can
complete. The read cycle can complete under the
following circumstances:
1If the EPP bus is not ready (nWAIT is active
low) when nDATASTB goes active then the
read can complete when nWAIT goes
inactive high.
2.If the EPP bus is ready (nWAIT is inactive
high) then the chip must wait for it to go active
low before changing the state of WRITE or
before nDATASTB goes active. The read
can complete once nWAIT is determined
inactive.
EPP 1.7 OPERATION
When the EPP 1.7 mode is selected in the
configuration register, the standard and bidirectional modes are also available. If no EPP
Read, Write or Address cycle is currently
executing, then the PDx bus is in the standard or
bi-directional mode, and all output signals
(STROBE, AUTOFD, INIT) are as set by the SPP
Control Port and direction is controlled by PCD of
the Control port.
In EPP mode, the system timing is closely coupled
to the EPP timing. For this reason, a watchdog
timer is required to prevent system lockup. The
timer indicates if more than 10usec have elapsed
from the start of the EPP cycle to the end of the
cycle. If a time-out occurs, the current EPP cycle
is aborted and the time-out condition is indicated
in Status bit 0.
Read Sequence of Operation
1.The host initiates an I/O read cycle to the
selected EPP register.
2. If WAIT is not asserted, the chip must wait
until WAIT is asserted.
3.The chip tri-states the PData bus and
deasserts nWRITE.
4.Chip asserts nDATASTB or nADDRSTRB
indicating that PData bus is tri-stated, PDIR is
set and the nWRITE signal is valid.
5.Peripheral drives PData bus valid.
6.Peripheral deasserts nWAIT, indicating that
PData is valid and the chip may begin the
termination phase of the cycle.
7. a) The chip latches the data from the PData
bus for the internal data bus and deasserts
nDATASTB or nADDRSTRB. This marks the
beginning of the termination phase.
b) The chip drives the sync that indicates
that no more wait states are required and
drives the valid data onto the LAD[3:0]
signals, followed by the TAR to complete the
read cycle.
8.Peripheral tri-states the PData bus and
asserts nWAIT, indicating to the host that the
PData bus is tri-stated.
9.Chip may modify nWRITE, PDIR and
nPDATA in preparation for the next cycle.
Software Constraints
Before an EPP cycle is executed, the software
must ensure that the control register bits D0, D1
and D3 are set to zero. Also, bit D5 (PCD) is a
logic "0" for an EPP write or a logic "1" for and
EPP read.
EPP 1.7 Write
The timing for a write operation (address or data)
is shown in timing diagram EPP 1.7 Write Data or
Address cycle. The chip inserts wait states into
the I/O write cycle when nWAIT is active low
during the EPP cycle. This can be used to extend
the cycle time. The write cycle can complete
when nWAIT is inactive high.
Write Sequence of Operation
1.The host sets PDIR bit in the control register
to a logic "0". This asserts nWRITE.
2.The host initiates an I/O write cycle to the
selected EPP register.
3.The chip places address or data on PData
bus.
4.Chip asserts nDATASTB or nADDRSTRB
indicating that PData bus contains valid
information, and the WRITE signal is valid.
5.If nWAIT is asserted, the chip inserts wait
states into I/O write cycle until the peripheral
deasserts nWAIT or a time-out occurs.
6. The chip drives the final sync, deasserts
nDATASTB or nADDRSTRB and latches the
100
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.