SMSC FDC37N972

FDC37N972
ADVANCE INFORMATION
Advanced Notebook I/O Controller with Enhanced
Keyboard Control and System Management
FEATURES
!" 3.3V Operation With 5V Tolerant Buffers
!" ACPI 1.0 and PC99 Compliant
!" Three Power Planes
!" ACPI Embedded Controller Interface
!" Low Standby Current in Sleep Mode
!" Configuration Register Set Compatible With
ISA Plug-and-Play Standard (Version 1.0a)
!" Serial IRQ Interface Compatible With
Serialized IRQ Support for PCI Systems
!" Floppy Disk Interface on Parallel Port
!" 8051 Controller uses Parallel Port to
Reprogram the Flash ROM
!" Advanced Infrared Communications
Controller (IrCC 2.0)
- IrDA V1.1 (4Mbps), HPSIR, ASKIR,
Consumer IR Support
- Two IR Ports
- Relocatable Base I/O Address
!" 512k Byte Flash ROM Interface
- 8051/Host CPU Multiplexed Interface
- Sixteen 32K Pages - 8051 Keyboard
BIOS
- Eight 64K Pages - Host System BIOS
- Embedded Controller uses Parallel Port
to Reprogram Flash ROM
!" ISA Host Interface With Clock Run Support
and ACPI SCI Interface
- 16 Bit Address Qualification
- 8 Bit Data Bus
- Zero Wait-State I/O Register Access
- Shadowed Write Only registers
- IOCHRDY for ECP, IRCC 2.0 and Flash
Cycles
- 15 Direct IRQs Including nSMI
- Four 8 Bit DMA Channels
- XNOR Test Chain
!"High-Performance Embedded 8051
Keyboard and System Controller
- Provides System Power Management
- System Watch Dog Timer (WDT)
- 8042 Style Host Interface
- Asynchronous Access to Two Data
Registers and One Status Register
- Supports Interrupt and Polling Access
- 2K Internal ROM, nEA Pin Select
- 32K Bank Switchable External Flash
ROM Interface
- 256 Bytes Data RAM
- On-Chip Control Registers Available via
MOVX External Data Access Commands
- Access to RTC and CMOS Registers
- Up to 16x8 Keyboard Scan Matrix
- Three 16 Bit Timer/Counters
- Integrated TX/RX Serial Interface
- Eleven 8051 Interrupt Sources
- Thirty-Two 8 Bit, Host/8051 Mailbox
Registers
- Thirty Maskable Hardware Wake-Up
Events Supported
- Fast GATEA20
- Fast CPU_RESET
- Multiple Clock Sources and Frequencies
- IDLE and SLEEP Modes
- Fail-Safe Ring Oscillator
!"Real Time Clock
- MC146818 and DS1287 Compatible
- 256 Bytes of Battery Backed CMOS in
Two 128-Byte Banks
- 128 Bytes of CMOS RAM Lockable in
4x32 Byte Blocks
- 12 and 24 Hour Time Format
- Binary and BCD Format
-
100% IBM Compatibility
Detects All Overrun and Underrun
Conditions
- 12 mA Drivers and Schmitt Trigger Inputs
- DMA Enable Logic
- Data Rate and Drive Control Registers
!" Enhanced Digital Data Separator
- Low Cost Implementation
- No Filter Components Required
- 2 Mbps, 1 Mbps, 500 Kbps, 300 Kbps,
250 Kbps Data Rates
- Programmable Precompensation Modes
!"Multi-Mode Parallel Port with ChiProtect
- Standard Mode IBM PC/XT, PC/AT, and
PS/2 Compatible Bi-directional Parallel
Port
- Enhanced Parallel Port EPP 1.7 and EPP
1.9 Compatible (IEEE 1284 Compliant)
IEEE 1284 Compliant Enhanced
Capabilities Port (ECP)
- ChiProtect Circuitry to Prevent Printer
Power-On Damage
- Relocatable to 480 Different Base I/O
Addresses
- 15 IRQ Options
- 4 DMA Options
- Microsoft and HP compatible High Speed
Mode
- 12 mA Output Drivers
!" Serial Port
- High-Speed NS16550A-Compatible
UART with 16-Byte Send/Receive FIFOs
- Programmable Baud Rate Generator
Modem Control Circuitry Including 230k
and 460k Baud
- Relocatable to 480 Different Base I/O
Addresses
- 15 IRQ Options
!" 208 Pin TQFP Package Options
!" 208 Pin FBGA Package Options
- <2!A Standby Current (typ)
!" Two 8584-Style ACCESS.bus Controllers
!" Four independent Hardware Driven PS/2
Ports
!" General Purpose I/O
- 22 I/O Pins
- 12 Out Pins
- Eight In Pins
!" Two Programmable Pulse-Width Modulator
Outputs
- Independent Clock Rates
- 6 Bit Duty Cycle Granularity
- VCC1 and VCC2 operation mode
!" Intelligent Auto Power Management
!" 2.88MB Super I/O Floppy Disk Controller
- Relocatable to 480 Different Base I/O
Addresses
- 15 IRQ Options
- Four DMA Options
- Open-Drain/Push-Pull Configurable
Output Drivers
- Licensed CMOS 765B Floppy Disk
Controller
- Advanced Digital Data Separator
- Software and Register Compatible With
SMSC's Proprietary 82077AA Compatible
Core
- Low Power CMOS Design with
Sophisticated Power Control Circuitry
(PCC) Including Multiple Powerdown
Modes for Reduced Power Consumption
- Supports Two Floppy Drives on the FDD
Interface and Two Floppy Drives on the
Parallel Port Interface
- 12 mA FDD Interface Cable Drivers With
Schmitt Trigger Inputs
!" Licensed CMOS 765B Floppy Disk Controller
Core
- Supports Vertical Recording Format
- 16-Byte Data FIFO
2
GENERAL DESCRIPTION
8051 controller can also take control of the
parallel port interface to provide remote
diagnostics or “Flashing” of the Flash memory.
The FDC37N972 is a 208-pin 3.3V ISA Host
ACPI 1.0 and PC98 (/PC99)-compliant Ultra I/O
Controller with Fast Infrared for mobile
applications.
The FDC37N972 has three separate power
planes to provide “instant on” and system power
management functions.
Additionally, the
FDC37N972 incorporates sophisticated power
control circuitry (PCC).
The PCC supports
multiple low power down modes. Wake-up
events and ACPI-related functions are supported
through the SCI Interface.
The
FDC37N972
incorporates
a
highperformance 8051-based keyboard controller; a
512k byte Flash ROM interface; four PS/2 ports;
a real-time clock; SMSC's true CMOS 765B
floppy disk controller with advanced digital data
separator and 16-byte data FIFO; an
NS16C550A-compatible
UART,
SMSC’s
advanced Infrared Communications Controller
(IrCC 2.0) with a UART and a Synchronous
Communications Engine to provide IrDA v1.1
(Fast IR) capabilities; one Multi-Mode parallel
port with ChiProtect circuitry plus EPP and ECP
support; two 8584-style Access Bus controllers;
a Serial IRQ peripheral agent interface; an ACPI
Embedded
Controller
Interface;
General
Purpose
I/O
pins;
two
independently
programmable pulse width modulators; twofloppy direct drive support; and maskable
hardware wake-up events.
The FDC37N972’s configuration register set is
compatible with the ISA Plug-and-Play Standard
(Version 1.0a) and provides the functionality to
support Windows '95. Through internal
configuration
registers,
each
of
the
FDC37N972's logical device's I/O address, DMA
channel and IRQ channel may be programmed.
There are 480 I/O address location options, 15
IRQ options, and four DMA channel options for
each logical device.
The FDC37N972 does not require any external
filter components and is, therefore, easy to use
and offers lower system cost and reduced board
area. The FDC37N972 is software and register
compatible with SMSC's proprietary 82077AA
core.
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.
The parallel port is compatible with IBM PC/AT
architecture, as well as EPP and ECP. The
3
TABLE OF CONTENTS
FEATURES ....................................................................................................................................... 1
GENERAL DESCRIPTION ................................................................................................................ 3
PIN CONFIGURATION...................................................................................................................... 9
DESCRIPTION OF PIN FUNCTIONS .............................................................................................. 11
FUNCTIONAL DESCRIPTION......................................................................................................... 28
FLOPPY DISK CONTROLLER........................................................................................................ 30
FDC INTERNAL REGISTERS ...................................................................................................... 30
STATUS REGISTER ENCODING ................................................................................................ 44
FDC RESET................................................................................................................................. 46
FDC MODES OF OPERATION .................................................................................................... 47
DMA TRANSFERS....................................................................................................................... 47
CONTROLLER PHASES................................................................................................................. 47
FDC INSTRUCTION SET............................................................................................................. 53
FDC DATA TRANSFER COMMANDS .......................................................................................... 64
ACPI EMBEDDED CONTROLLER.................................................................................................. 82
ECI CONFIGURATION REGISTERS............................................................................................ 83
SERIAL PORT (UART).................................................................................................................... 86
FIFO INTERRUPT MODE OPERATION ....................................................................................... 97
FIFO POLLED MODE OPERATION ............................................................................................. 97
INFRARED COMMUNICATIONS CONTROLLER (IRCC 2.0) .........................................................102
OVERVIEW ................................................................................................................................103
IRRX/IRTX PIN ENABLE.............................................................................................................104
IR REGISTERS - LOGICAL DEVICE 5 ........................................................................................104
IR DMA CHANNELS ...................................................................................................................105
IR IRQS.......................................................................................................................................105
IR HALF DUPLEX TIMEOUT.......................................................................................................106
IRTX OUTPUT PINS DEFAULT...................................................................................................106
PARALLEL PORT .......................................................................................................................106
THE PARALLEL PORT PHYSICAL INTERFACE (PPPI)..............................................................128
PARALLEL PORT FDC INTERFACE...........................................................................................129
AUTO POWER MANAGEMENT.....................................................................................................131
SYSTEM POWER MANAGEMENT .............................................................................................131
DSR FROM POWERDOWN .......................................................................................................132
WAKE UP FROM AUTO POWERDOWN ....................................................................................132
REGISTER BEHAVIOR...............................................................................................................132
PIN BEHAVIOR...........................................................................................................................132
SYSTEM INTERFACE PINS........................................................................................................133
4
FDD INTERFACE PINS...............................................................................................................134
UART POWER MANAGEMENT ..................................................................................................135
PARALLEL PORT POWER MANAGEMENT................................................................................135
8051 EMBEDDED CONTROLLER .................................................................................................136
8051 FUNCTIONAL OVERVIEW.................................................................................................136
POWERING UP OR RESETTING THE 8051...............................................................................137
CPU RESET SEQUENCE ...........................................................................................................140
8051 CLOCK CONTROLS ..........................................................................................................142
8051 RING OSCILLATOR FAIL-SAFE CONTROLS ....................................................................144
8051 MEMORY MAP...................................................................................................................145
FLASH ROM INTERFACE...........................................................................................................152
8051 CONTROL REGISTERS.....................................................................................................153
8051 CONFIGURATION/CONTROL MEMORY MAPPED REGISTERS .........................................162
8051 INTERRUPTS.....................................................................................................................165
WATCH DOG TIMER .....................................................................................................................183
WDT OPERATION......................................................................................................................183
WDT ACTION .............................................................................................................................183
WDT ACTIVATION .....................................................................................................................183
WDT RESET MECHANISM.........................................................................................................183
WDT MEMORY MAPPED REGISTERS ......................................................................................184
SHARED FLASH INTERFACE .......................................................................................................185
FLASH INTERFACE DIAGRAM...................................................................................................185
SYSTEM MEMORY MAP ............................................................................................................186
KEYBOARD BIOS (KMEM) .........................................................................................................187
SYSTEM BIOS (HMEM) ..............................................................................................................189
HOST FLASH ACCESS ..............................................................................................................189
IDLE MODE ................................................................................................................................195
SLEEP MODE.............................................................................................................................197
WAKE-UP EVENTS ....................................................................................................................201
8042 STYLE HOST INTERFACE.................................................................................................204
KEYBOARD DATA WRITE..........................................................................................................204
8051- TO- HOST KEYBOARD COMMUNICATION ......................................................................205
HOST-TO 8051 KEYBOARD COMMUNICATION ........................................................................206
GATEA20 HARDWARE SPEED-UP ............................................................................................208
SMSC PS/2 LOGIC OVERVIEW .................................................................................................217
SMSC PS/2 MEMORY MAPPED CONTROL REGISTERS ..........................................................218
DEVIL LOGIC OVERVIEW..........................................................................................................225
THE DEVIL PS/2 LOGIC COMMANDS........................................................................................225
DEVIL PS/2 MEMORY MAPPED CONTROL REGISTERS ..........................................................227
5
ACCESS.BUS ................................................................................................................................233
BACKGROUND ..........................................................................................................................233
REGISTER DESCRIPTION .........................................................................................................234
ACCESS.BUS INTERFACE DESCRIPTION ................................................................................238
MEMORY MAPPED CONTROL REGISTERS..............................................................................239
SECOND I2C BUS INTERFACE .....................................................................................................241
MEMORY MAPPED CONTROL REGISTERS..............................................................................241
I2C CLOCK DIVIDER BIT ............................................................................................................243
OVERVIEW ................................................................................................................................244
MAILBOX REGISTERS INTERFACE BASE ADDRESS ...............................................................246
MAILBOX REGISTERS ...............................................................................................................247
THE SYSTEM/8051 INTERFACE REGISTERS` ..........................................................................247
LED CONTROLS ........................................................................................................................249
PULSE WIDTH MODULATORS ..................................................................................................250
OPERATION REGISTERS ..........................................................................................................257
GENERAL PURPOSE I/O (GPIO) ..................................................................................................260
OVERVIEW ................................................................................................................................266
MULTIPLEXING_1 REGISTER ...................................................................................................266
MULTIPLEXING_2 REGISTER ...................................................................................................270
MULTIPLEXING_3 REGISTER ...................................................................................................272
ACPI PM1 BLOCK .........................................................................................................................276
ACPI PM1 BLOCK OVERVIEW...................................................................................................276
ACPI PM1 BLOCK SCI EVENT-GENERATING FUNCTIONS ......................................................276
ACPI PM1 BLOCK BASE ADDRESS...........................................................................................277
ACPI PM1 BLOCK ......................................................................................................................278
REGISTERS ...............................................................................................................................278
REAL TIME CLOCK.......................................................................................................................283
GENERAL DESCRIPTION ..........................................................................................................283
CONFIGURATION REGISTERS .................................................................................................283
ISA HOST I/O INTERFACE.........................................................................................................284
INTERNAL REGISTERS .............................................................................................................285
TIME CALENDAR AND ALARM ..................................................................................................286
UPDATE CYCLE.........................................................................................................................287
CONTROL AND STATUS REGISTERS.......................................................................................288
INTERRUPTS .............................................................................................................................292
FREQUENCY DIVIDER...............................................................................................................292
32KHZ CLOCK INPUT .................................................................................................................295
POWER MANAGEMENT ............................................................................................................295
6
PCI CLOCK RUN SUPPORT..........................................................................................................295
OVERVIEW ................................................................................................................................295
SERIAL INTERRUPTS ...................................................................................................................298
SERIRQ MODE BIT FUNCTION .................................................................................................299
FDC37N972 CONFIGURATION ....................................................................................................303
OVERVIEW ................................................................................................................................303
CONFIGURATION REGISTER ACCESS.....................................................................................303
CHIP LEVEL (GLOBAL) CONTROL/CONFIGURATION REGISTERS [0X00-0X2F] .....................308
LOGICAL DEVICE CONFIGURATION/CONTROL REGISTERS [0X30-0XFF] .............................311
I/O BASE ADDRESS CONFIGURATION REGISTER DESCRIPTION..........................................313
INTERRUPT SELECT CONFIGURATION REGISTER DESCRIPTION ........................................315
DMA CHANNEL SELECT CONFIGURATION REGISTER DESCRIPTION ...................................316
IRQ AND DMA ENABLE AND DISABLE ......................................................................................317
SMSC DEFINED LOGICAL DEVICE CONFIGURATION REGISTERS.........................................318
ELECTRICAL SPECIFICATIONS ...................................................................................................327
MAXIMUM GUARANTEED RATINGS* ........................................................................................327
DC SPECIFICATIONS ................................................................................................................328
AC SPECIFICATIONS.................................................................................................................332
TIMING DIAGRAMS ......................................................................................................................333
LOAD CAPACITANCE ................................................................................................................333
FAST GATEA20 IOW TIMING.....................................................................................................334
ISA IO WRITE ............................................................................................................................335
ISA IO READ CYCLE ..................................................................................................................336
DMA TIMING (BURST TRANSFER MODE).................................................................................340
FLOPPY DISK DRIVE TIMING (AT MODE) .................................................................................341
SERIAL PORT TIMING ...............................................................................................................342
PARALLEL PORT TIMING ..........................................................................................................343
EPP 1.9 DATA OR ADDRESS WRITE CYCLE ............................................................................344
EPP 1.9 DATA OR ADDRESS READ CYCLE..............................................................................346
EPP 1.7 DATA OR ADDRESS WRITE CYCLE ............................................................................348
EPP 1.7 DATA OR ADDRESS READ CYCLE..............................................................................350
ECP PARALLEL PORT TIMING ..................................................................................................351
ACCESS.BUS TIMING ................................................................................................................355
HOST FLASH READ TIMING ......................................................................................................356
HOST FLASH READ/WRITE.......................................................................................................358
ZERO WAIT STATE (NOWS) TIMING ........................................................................................360
FLASH PROGRAM FETCH TIMING............................................................................................361
8051 FLASH READ TIMING........................................................................................................362
8051 FLASH WRITE TIMING ......................................................................................................363
7
EPP 1.7 DATA OR ADDRESS READ CYCLE.............................................................................353
ECP PARALLEL PORT TIMING..................................................................................................354
ACCESS.BUS TIMING..................................................................................................................358
HOST FLASH READ TIMING......................................................................................................359
HOST FLASH READ/WRITE .......................................................................................................361
ZERO WAIT STATE (NOWS) TIMING.......................................................................................363
FLASH PROGRAM FETCH TIMING...........................................................................................364
8051 FLASH READ TIMING ........................................................................................................365
8051 FLASH WRITE TIMING ......................................................................................................366
PS/2 CHANNEL RECEIVE TIMING DIAGRAM ........................................................................367
PS/2 CHANNEL TRANSMIT TIMING DIAGRAM.....................................................................369
PS/2 CHANNEL “BIT-BANG” TIMING ......................................................................................371
IN CIRCUIT TEST (ICT)
................................................................................................................ 373
APPENDIX A................................................................................................................................... 377
HIGH-PERFORMANCE 8051 CYCLE TIMING AND INSTRUCTION SET.............................377
APPENDIX B................................................................................................................................... 382
HIGH PERFORMANCE 8051 EXTENDED INTERRUPT UNIT................................................382
8
PIN CONFIGURATION
24MHz_OUT
nEC_SCI
VSS
32kHz_OUT
VCC1_PWRGD
nPWR_LED
PWRGD
SLCT
PE
BUSY
nACK
PD7
PD6
PD5
PD4
VCC2
PD3
PD2
PD1
PD0
nSLCTIN
nINIT
nERROR
nALF
nSTROBE
RXD
TXD
VSS
nDSR
nRTS
nCTS
nDTR
nDCD
nRI
GPIO15
GPIO14
GPIO8
GPIO9
VCC1
FA18
GPIO10
GPIO11
GPIO12
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
VCC0
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
FDC37N972
208 PIN TQFP
104
103
102
101
100
99
98
97
96
95
94
93
92
91
90
89
88
87
86
85
84
83
82
81
80
79
78
77
76
75
74
73
72
71
70
69
68
67
66
65
64
63
62
61
60
59
58
57
56
55
54
53
VCC2
CLOCKI
nRESET_OUT
SER_IRQ
nCLKRUN
PCI_CLK
nMEMWR
nMEMRD
nROMCS
IOCHRDY
TC
DRQ1
nDACK1
DRQ0
nDACK0
VSS
SD7
SD6
SD5
SD4
SD3
VCC2
SD2
SD1
SD0
AEN
nIOW
nIOR
nNOWS
OUT4
OUT3
VSS
OUT2
nIRQ8
OUT0
SA15
SA14
SA13
SA12
SA11
SA10
SA9
SA8
SA7
SA6
SA5
SA4
SA3
SA2
SA1
SA0
EMDAT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
VSS
OUT5
OUT6
DRVDEN0
DRVDEN1
nMTR0
VSS
nDS0
nDIR
nSTEP
nWDATA
nWGATE
nHDSEL
nINDEX
nTRK0
nWRTPRT
nRDATA
nDSKCHG
FPD
IRTX
IRRX
KSO13
KSO12
KSO11
KSO10
KSO9
KSO8
KSO7
VCC1
KSO6
KSO5
KSO4
KSO3
KSO2
KSO1
KSO0
KSI7
KSI6
KSI5
KSI4
KSI3
KSI2
KSI1
KSI0
GPIO20
GPIO21
IMCLK
IMDAT
VSS
KCLK
KDAT
EMCLK
XOSEL
XTAL1
XTAL2
AGND
FAD0
FAD1
FAD2
FAD3
FAD4
FAD5
VSS
FAD6
FAD7
FA8
FA9
FA10
FA11
FA12
FA13
VCC1
FA14
FA15
FA16
FA17
FALE
nFRD
nFWR
nFCS
GPIO1
GPIO2
GPIO3
GPIO4
GPIO5
GPIO6
GPIO7
VSS
nEA
MODE
AB1_DATA
AB1_CLK
nBAT_LED
nFDD_LED
OUT11
OUT10
OUT9
OUT8
OUT7
GPIO16
VCC2
GPIO17
GPIO18
GPIO19
FIGURE 1 - FDC37N972 PIN CONFIGURATION
For FBGA BALL PAD Configuration refer to FIGURE 81 on Page 372.
9
nIOR
nIOW
nMEMRD
nMEMWR
nROMCS
AEN
SA[0:15]
SD[0:7]
DRQ[0:1]
DRQ[2:3]*
nDACK[0:1]
TC
nDACK[2:3]*
nNOWS
IOCHRDY
nIRQ8*
nSMI*
SER_IRQ
nCLKRUN
PCI_CLK
MODE
nEA
VCC1_PWRGD
PWRGD
32KHz_OUT
24MHz_OUT
CLOCKI
(14.318 MHz)
HOST
CPU
INTERFACE
TXD, nRTS, nDTR
16C550
COMPATIBLE
SERIAL PORT 1
RXD, nCTS, nDSR, nDCD
nRI
nDSKCHG, nWRTPRT,
nTRK0, nINDEX, FPD, nTRK0
nWGATE, nHDSEL, nDIR,
nSTEP, nDS0, nDS1*, nMTR0,
nMTR1*, DRVDEN0, DRVDEN1*,
FPD
POWER
MANAGEMENT
CONFIGURATION REGISTERS
IRRX*
IRRX2
IRMODE / IRRX3A, IRMODE / IRRX3B
IRTX*
IRTX2
INFRARED
PD[0:7]
MULTI-MODE
PARALLEL
PORT / FDC
MUX
BUSY, SLCT, PE, nERROR, nACK
nSLCTIN, nINIT, nALF, nSTROBE
IN
GENERAL
OUT
PURPOSE I/O
I/O
INTERFACE
I/O
INTERRUPTS
CONTROL
INPUTS
PLL CLOCK
GENERATOR
XTAL2
2 x 128 BYTE
BANKS OF
CMOS RAM
BANK
1
LED
DRIVER
CONTROL, ADDRESS, DATA
nEC_SCI
XOSEL
AGND
nRDATA
SMSC
PROPRIETARY
82077 COMPATIBLE
VERTICAL FLOPPY DISK
CONTROLLER CORE
RTC
XTAL1
VCC0
MDATA
SYSTEM
RESET
RDATA
nRESET_OUT
nWDATA
RCLOCK
VCC1(3)
VCC2(4)
VSS(9)
MCLOCK
DIGITAL DATA
SEPARATOR
WITH WRITE
PRECOMPENSATION
8051
MAILBOX
REGISTERS
256B Direct
RAM
8051
SUB-BLOCK
EXTERNAL
CONTROL
REGISTERS
ACPI
EMBEDDED
CONTROLLER
PM1
BLOCK
256B
EXTERNAL
8051 RAM
Ring
Oscillator
w/ FAIL SAFE
16 x 8
KEYBOARD
INTERFACE
PS/2
PORTS
GPIO 0-15
nBAT_LED, nPWR_LED, nFDD_LED
KSI[0:7]
KS0[0:13], KS0[14:15]*
KCLK, EMCLK, IMCLK, PS2CLK
KDAT, EMDAT, IMDAT, PS2DAT
ACCESS
BUS2
AB2_DATA *, AB2_CLK *
VCC2 POWERED
* -- ALTERNATE FUNCITON
VCC1 POWERED
FIGURE 2 - FDC37N972 BLOCK DIAGRAM
10
GPIO 16-21
AB_DATA, AB_CLK
FLASH
INTERFACE
BANK
2
OUT0-11
ACCESS
BUS
PWM
WDT
IN0-7
PWM0*, PWM1*
FAD[0:7]
FA[8:18], nFRD, nFWR, FALE
nFCS
FDC37N97x
(TIKKI)
DESCRIPTION OF PIN FUNCTIONS
TABLE 1 - FDC37N972 PIN CONFIGURATION
TQFP
PIN#
FGBA
PIN#
TQFP
PIN#
FGBA
PIN#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
A1
C2
D4
B1
C1
D2
D3
E4
D1
E2
E3
F4
E1
F2
F3
G4
F1
G2
VSS
OUT5
OUT6
DRVDEN0
DRVDEN1
nMTR0
VSS
nDS0
nDIR
nSTEP
nWDATA
nWGATE
nHDSEL
nINDEX
nTRK0
nWRTPRT
nRDATA
nDSKCHG
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
M3
N4
M1
N2
N3
N1
P1
P2
P3
R1
T1
R2
R3
T2
U1
T3
P4
U2
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
G3
H4
G1
H2
H3
J4
H1
J2
J3
K4
J1
K2
K3
L4
K1
FPD
IRTX
IRRX
KSO13
KSO12
KSO11
KSO10
KSO9
KSO8
KSO7
VCC1
KSO6
KSO5
KSO4
KSO3
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
34
35
36
37
L2
L3
M4
L1
KSO2
KSO1
KSO0
KSI7
38
M2
KSI6
NAME
TQFP
PIN#
FGBA
PIN#
KSI5
KSI4
KSI3
KSI2
KSI1
KSI0
GPIO20
GPIO21
IMCLK
IMDAT
VSS
KCLK
KDAT
EMCLK
EMDAT
SA0
SA1
SA2
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
U8
T9
R9
P10
U9
T10
R10
P11
U10
T11
R11
P12
U11
T12
R12
P13
U12
T13
nIOR
nIOW
AEN
SD0
SD1
SD2
VCC2
SD3
SD4
SD5
SD6
SD7
VSS
nDACK0
DRQ0
nDACK1
DRQ1
TC
U3
T4
R4
P5
U4
T5
R5
P6
U5
T6
R6
P7
U6
T7
R7
SA3
SA4
SA5
SA6
SA7
SA8
SA9
SA10
SA11
SA12
SA13
SA14
SA15
OUT0
OUT1
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
R13
U13
U14
T14
R14
U15
U16
T15
R15
T16
U17
R16
P14
T17
R17
72
73
74
75
P8
U7
T8
R8
OUT2
VSS
OUT3
OUT4
110
111
112
113
P16
P15
N14
P17
IOCHRDY
nROMCS
nMEMRD
nMEMWR
PCI_CLK
nCLKRUN
SER_IRQ
nRESET_OUT
CLOCKI
VCC2
24MHz_OUT
nEC_SCI
VSS
32kHz_OUT
VCC1_
PWRGD
nPWR_LED
PWRGD
SLCT
PE
76
P9
11
nNOWS
114
N16
BUSY
NAME
NAME
TQFP
PIN#
FGBA
PIN#
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
N15
M14
N17
M16
M15
L14
M17
L16
L15
K14
L17
K16
K15
J14
K17
J16
J15
H14
J17
H16
H15
G14
H17
G16
G15
F14
G17
F16
F15
E14
F17
E16
NAME
nACK
PD7
PD6
PD5
PD4
VCC2
PD3
PD2
PD1
PD0
NSLCTIN
nINIT
nERROR
nALF
nSTROBE
RXD
TXD
VSS
nDSR
nRTS
nCTS
nDTR
nDCD
nRI
GPIO15
GPIO14
GPIO8
GPIO9
VCC1
FA18
GPIO10
GPIO11
VCC2
TQFP
PIN#
FGBA
PIN#
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
E15
E17
D17
D16
D15
C17
B17
C16
C15
B16
A17
B15
D14
A16
A15
B14
C14
D13
A14
B13
C13
D12
A13
B12
C12
D11
A12
B11
C11
D10
A11
B10
VCC1
12
NAME
GPIO12
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
VCC0
XOSEL
XTAL1
XTAL2
AGND
FAD0
FAD1
FAD2
FAD3
FAD4
FAD5
VSS
FAD6
FAD7
FA8
FA9
FA10
FA11
FA12
FA13
VCC1
FA14
FA15
TQFP
PIN#
FGBA
PIN#
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
C10
D9
A10
B9
C9
D8
A9
B8
C8
D7
A8
B7
C7
D6
A7
B6
C6
D5
A6
B5
C5
A5
A4
B4
C4
A3
A2
B3
C3
B2
VCC0
NAME
FA16
FA17
FALE
nFRD
nFWR
nFCS
GPIO1
GPIO2
GPIO3
GPIO4
GPIO5
GPIO6
GPIO7
VSS
nEA
MODE
AB1_DATA
AB1_CLK
nBAT_LED
nFDD_LED
OUT11
OUT10
OUT9
OUT8
OUT7
GPIO16
VCC2
GPIO17
GPIO18
GPIO19
The pins and descriptions in Table 2 are
organized by primary pin function. For example,
the PS2 Serial Clock and PS2 Serial Data pins
are technically part of the KEYBOARD AND
MOUSE INTERFACE but are listed in the
GENERAL PURPOSE I/O INTERFACE because
the GPIO function of these pins is the default.
Device functions per pin are shown in TABLE 2.
Buffer Modes symbols in TABLE 2 are described
in Table 3. Multifunction pins are summarized
in Table 4, including a multiplex controls
reference.
TABLE 2 - PIN FUNCTION DESCRIPTION
TQFP
POWER
BUFFER
PIN#
NOTES
NAME
DESCRIPTION
PLANE
MODES2
FDD INTERFACE (15)
The following FDC output pins can be configured as either Open Drain outputs capable of sinking 12mA
(OD12) or as push-pull outputs capable of driving 6mA and sinking 12mA (O12). The FDC output pins
must tristate when the FDC is in powerdown mode (The board designer must provide external pull-up
resistors on these output pins).
4
DRVDEN0
Drive Density Select 0
VCC2
(O12/OD12)
5
DRVDEN1
Drive Density Select 1
VCC2
(O12/OD12)
6
nMTR0
Motor On 0
VCC2
(O12/OD12)
8
nDS0
Drive Select 0
VCC2
(O12/OD12)
9
nDIR
Step Direction
VCC2
(O12/OD12)
10
nSTEP
Step Pulse
VCC2
(O12/OD12)
11
nWDATA
Write Disk Data
VCC2
(O12/OD12)
12
nWGATE
Write Gate
VCC2
(O12/OD12)
13
nHDSEL
Head Select
VCC2
(O12/OD12)
14
nINDEX
Index Pulse Input
VCC2
IS
15
nTRK0
Track 0
VCC2
IS
16
nWRTPRT
Write Protected
VCC2
IS
17
nRDATA
Read Disk Data
VCC2
IS
18
nDSKCHG
Disk Change
VCC2
IS
19
FPD
Floppy Power Down Output Control
VCC2
O8
PCI POWER MANAGEMENT AND SIRQ INTERFACE (4)
106
7
nEC_SCI
Power Management Event
VCC1
PCI_OD
99
PCI_CLK
PCI Clock
VCC2
PCI_ICLK
101
SER_IRQ
Serial IRQ
VCC2
PCI_IO
100
nCLKRUN
PCI Clock Control
VCC2
PCI_OD
ISA HOST INTERFACE (37)
80: 82,
SD[7:0]
System Data Bus
VCC2
IO12
84: 88
54: 69
SA[15:0]
System Address Bus
VCC2
I
96
nROMCS
ROM Chip Select
VCC2
I
79
AEN
Address Enable
VCC2
I
95
IOCHRDY
I/O Channel Ready
VCC2
OD12
91, 93
DRQ[1:0]
DMA Requests
VCC2
O12
13
TQFP
PIN#
NOTES
NAME
DESCRIPTION
90, 92
NDACK[1:0]
DMA Acknowledge
94
TC
Terminal Count
77
nIOR
I/O Read
78
nIOW
I/O Write
97
nMEMRD
Memory Read
98
nMEMWR
Memory Write
76
nNOWS
No Wait State
FLASH ROM INTERFACE (23)
FAD[7:0]
Flash Address/Data[7:0] Bus
161:
166,
168,
169
FA[8:17]
Flash Address[17:8]
170:
175,
NOTE: Upper Address bit FA18 is
177:
multiplexed on GPIO13
180
Flash Address 18
144
5
FA18/
General Purpose I/O
GPIO13
(WK_SE17)
182
nFRD
Flash Memory Read
183
nFWR
Flash Memory Write
181
FALE
Flash Address Latch Enable
184
5
nFCS/
Flash ROM Chip Select
GPIO0
General Purpose I/O
(WK_SE02)
KEYBOARD AND MOUSE INTERFACE (29)
30: 36,
KSO[0:11]
Keyboard Scan Outputs (14 × 8).
24:
NOTE: GPIO4 and GPIO5 can be
28
configured as KSO14 and KSO15
(16 × 8).
23
3
KSO12/
Keyboard Scan Output
OUT8/
General Purpose Output
KBRST
CPU_RESET
22
11
KSO13/
Keyboard Scan Output
GPIO18
General Purpose I/O
37:44
KSI[0:7]
Keyboard Scan Inputs
193
nEA
External Access for 2k ROM
52
EMCLK
EM Serial Clock
53
EMDAT
EM Serial Data
47
IMCLK
IM Serial Clock
48
IMDAT
IM Serial Data
51
KDAT
Keyboard Data
14
POWER
PLANE
VCC2
VCC2
VCC2
VCC2
VCC2
VCC2
VCC2
BUFFER
MODES2
I
I
I
I
I
I
OD12
VCC1
IO8
VCC1
O8
VCC1
O8/IO8
VCC1
VCC1
VCC1
VCC1
O8
O8
O8
O8/IO8
VCC1
OD4
VCC1
OD4/OD4/
OD4
VCC1
OD4/IOD4
VCC1
VCC1
VCC2
VCC2
VCC2
VCC2
VCC2
ISP
I
IOD16
IOD16
IOD16
IOD16
IOD16
TQFP
PIN#
NOTES
NAME
DESCRIPTION
50
KCLK
Keyboard Clock
GENERAL PURPOSE I/O INTERFACE (40)
70
7,8
OUT0 (SCI)
General Purpose Output (SCI)
71
3
OUT1/
General Purpose Output/
nIRQ8
Active Low RTC IRQ
72
OUT2
General Purpose Output
74
OUT3/
General Purpose Output
FRW
Inverted Flash ROM Memory Write
75
OUT4
General Purpose Output
General Purpose Output
2
3
OUT5/
FDD Drive Select 13
nDS1/
KBRST
CPU_RESET3
3
3
OUT6/
General Purpose Output
nMTR1
FDD Motor On 1
203
3
OUT7/
General Purpose Output
nSMI
SMI Output
General Purpose Output
202
3
OUT8/
DMA Request
DRQ2/
CPU_RESET
KBRST
201
3
OUT9/
General Purpose Output
DRQ3
DMA Request
200
OUT10/
General Purpose Output
PWM0
Pulse Width Modulator Output
199
OUT11/
General Purpose Output
PWM1
Pulse Width Modulator Output
148
4
IN0
General Purpose Input
(WK_EE4)
149
4
IN1
General Purpose Input
(WK_EE2)
150
4
IN2
General Purpose Input
(WK_EE3)
151
IN3
General Purpose Input (General
(nGPWKUP)
Purpose Wake Up)
152
5
IN4
General Purpose Input
(WK_SE00)
153
5
IN5
General Purpose Input
(WK_SE01)
154
5
IN6
General Purpose Input
(WK_SE05)
155
4
IN7
General Purpose Input
(WK_EE1)
185
5
GPIO1
General Purpose I/O
(WK_SE03)
15
POWER
PLANE
VCC2
BUFFER
MODES2
IOD16
VCC1
VCC1
(O12/OD12)
O12/O12
VCC1
VCC1
O12
O12/O12
VCC1
VCC1
O12
O12/(O12/
OD12)/O12
VCC1
O12/(O12/
OD12)
O12/OD12
VCC1
VCC1
O12/O12/
O12
VCC1
O12/O12
VCC1
O12/O12
VCC1
O12/O12
VCC1
I
VCC1
I
VCC1
I
VCC1
I
VCC1
I
VCC1
I
VCC1
I
VCC1
I
VCC1
IO8
TQFP
PIN#
186
NOTES
5
187
6
188
5
189
5
190
5
191
5, 8
141
5
142
1,
5
145
5
146
5
147
5
140
5
139
5
204
5
206
3,
5
NAME
GPIO2
(WK_SE04)
GPIO3
(TRIGGER)
GPIO4
(WK_SE07)/
KSO14
GPIO5
(WK_SE10)/
KSO15
GPIO6
(WK_SE11)/
IRMODE/IRR
X3A
GPIO7
(WK_SE06)5
GPIO8
(WK_SE12)/
IRRX2
GPIO9
(WK_SE13)/
IRTX2
GPIO10
(WK_SE14)/
IRMODE/IRR
X3B
GPIO11
(WK_SE15)/
AB2_DATA
GPIO12
(WK_SE16)/
AB2_CLK
GPIO14
(WK_SE20)
GPIO15
(WK_SE21)
GPIO16
(WK_SE22)5
GPIO17
(WK_SE23)/
GATEA20
POWER
PLANE
VCC1
BUFFER
MODES2
IO8
General Purpose I/O (Interrupt 1
Event)
General Purpose I/O
Keyboard Scan Output
VCC1
IO8
VCC1
IO8/OD8
General Purpose I/O
Keyboard Scan Output
VCC1
IO8/OD8
General Purpose I/O
FIR Mode Output or 2nd Receive
Input
VCC1
IO8/(O8/I)
General Purpose I/O
VCC1
(IO8/IOD8)8
General Purpose I/O
IR Receive Input
VCC1
IO8/I
General Purpose I/O
IR Transmit Output
VCC1
IO12/O12
General Purpose I/O
FIR Mode Output or 2nd Receive
Input
VCC1
IO8/O8/
(O8/I)
General Purpose I/O
ACCESS.bus 2 Serial Data
VCC1
IO12/IOD12
General Purpose I/O
ACCESS.bus 2 Clock
VCC1
IO12/IOD12
General Purpose I/O
VCC1
IO8
General Purpose I/O
VCC1
IO8
General Purpose I/O
VCC1
IO8
General Purpose I/O
KBD GATEA20 Output
VCC1
IO8/O8
DESCRIPTION
General Purpose I/O
16
TQFP
PIN#
207
NOTES
5
NAME
GPIO18
(WK_SE27)/
nDACK2
208
5
GPIO19
(WK_SE24)/
nDACK3
45
3,
GPIO20
5
(WK_SE25)/
PS2CLK/
8051RX/
46
3,5
GPIO21
(WK_SE26)/
PS2DAT/
8051TX
INFRARED INTERFACE (2)
21
IRRX
20
1
IRTX
PARALLEL PORT INTERFACE (17)
126
nINIT/
nDIR
125
nSLCTIN/
nSTEP
124
PD0/
nINDEX
123
PD1/
nTRK0
122
PD2/
nWRTPRT
121
PD3/
nRDATA
119
PD4/
nDSKCHG
118
PD5
117
PD6/
nMTR0
116
PD7
112
SLCT/
nWGATE
113
PE/
nWDATA
114
BUSY/
nMTR1
POWER
PLANE
VCC1
BUFFER
MODES2
IO8/I
General Purpose I/O/
DMA Acknowledge
VCC1
IO8/I
General Purpose I/O
PS2 Serial Clock
8051 RX Input
VCC1
IOD16/
IOD16/I
General Purpose I/O
PS2 Serial Data
8051 TX Input
VCC1
IOD16/
IOD16/
OD16
IR Receive Input
IR Transmit Output
VCC1
VCC2
I
O12
Initiate Output
FDC Direction Control
Printer Select Input
FDC Step Pulse
Port Data 0
FDC Index
Port Data 1
FDC Track 0
Port Data 2
FDC Write Protected
Port Data 3
FDC Read Disk Data
Port Data 4
FDC Disk Change
Port Data 5
Port Data 6
FDC Motor On 0
Port Data 7
Printer Selected Status
FDC Write Gate
Paper End
FDC Write Data
Busy
FDC Motor On 1
VCC2
VCC2
(OD14/
OP14)/OD14
(OD14/
OP14)/OD14
IOP14/I
VCC2
IOP14/I
VCC2
IOP14/I
VCC2
IOP14/I
VCC2
IOP14/I
VCC2
VCC2
IOP14
IOP14/OD14
VCC2
VCC2
IOP14
I/OD12
VCC2
I/OD12
VCC2
I/OD12
DESCRIPTION
General Purpose I/O/
DMA Acknowledge
17
VCC2
TQFP
PIN#
115
NOTES
NAME
nACK/
nDS1
127
nERROR/
nHDSEL
128
nALF/
DRVDEN0
129
nSTROBE/
nDS0
SERIAL PORT INTERFACE (8)
130
RXD
131
TXD
133
nDSR
134
nRTS
135
nCTS
136
nDTR
138
nRI
137
nDCD
MISCELLANEOUS (11)
108
32kHz_OUT
105
24MHz_OUT
103
194
CLOCKI
MODE
157
10
XOSEL
DESCRIPTION
Acknowledge
FDC Drive Select 1
Error
FDC Head Select
Autofeed Output
FDC Density Select 0
Strobe Output
FDC Drive Select 0
POWER
PLANE
VCC2
BUFFER
MODES2
I/OD12
VCC2
I/OD12
VCC2
(OD14/OP14)/
OD14
(OD14/OP14)/
OD14
VCC2
Receive Data
Transmit Data
Data Set Ready
Request to Send
Clear to Send
Data Terminal Ready
Ring Indicator
Data Carrier Detect
VCC2
VCC2
VCC2
VCC2
VCC2
VCC2
VCC1
VCC2
I
O12
I
O8
I
O8
I
I
32.768kHz Output Clock --The 32
KHz output is enabled / disabled by
setting / clearing bit-0 of the Output
Enable 8051 memory mapped
register. When disabled the 32
KHz_OUT pin is driven low. The 32
KHz_OUT pin defaults to the
disabled state on VCC1 POR.
24MHz Clock Output
Programmable Clock Output.
1.8432 MHz (default = 24 MHz/13)
14.318 MHz
16 MHz
24 MHz
48 MHz
14.318MHz Clock Input
Configuration Ports Base Address
Select
External 32kHz Clock Enable Input
VCC1
O8
VCC2
O24
VCC2
VCC1
ICLK
I
VCC0
I
18
TQFP
PIN#
109
102
197
110
198
NOTES
9
NAME
VCC1_PWR
GD
nRESET_OUT
nBAT_LED
nPWR_LED
nFDD_LED
111
9
PWRGD
ACCESS BUS INTERFACE (2)
195
AB1_DATA
196
AB1_CLK
REAL TIME CLOCK INTERFACE (2)
158
XTAL1
159
10
XTAL2
POWER PLANES
156
VCC0
29,
VCC1
143,
176,
83,
VCC2
104,
120,
205
160
AGND
1,7,49,
VSS
73, 89,
107,
132,
167,
192
POWER
PLANE
VCC1
BUFFER
MODES2
IP
VCC2
VCC1
VCC1
VCC1
O8
OD12
OD12
OD12
VCC1
I
ACCESS.bus 1 Serial Data
ACCESS.bus 1 Clock
VCC1
VCC1
IOD12
IOD12
32.768kHz Crystal Input
32.768kHz Crystal Output
VCC0
VCC0
ICLK2
(OCLK2/I)
DESCRIPTION
VCC1 Power Good Input. The
trailing edge of VCC1 POR is
released 20ms from the assertion of
this pin. If this pin is pulled low
while VCC1 is valid, then VCC1
POR will be asserted and held until
20ms from re-assertion of this pin.
This pin has an internal weak
(90µA) pull-up to VCC1.
System Reset
Battery LED (0 = ON)
Power LED (0 = ON)
Floppy LED (0 = ON). This pin is
asserted whenever either DRVSEL1
or DRVSEL0 is asserted or
controlled by the 8051.
VCC2 Power Good Input
RTC (VBAT) Supply Voltage
+3.3V ± 5% Main Battery Supply
+3.3V ± 5% Switched AC/Main
Battery Supply
Analog Ground
Digital Ground
19
NOTE 1:
NOTE 2:
NOTE 3:
NOTE 4:
NOTE 5:
NOTE 6:
NOTE 7:
NOTE 8:
NOTE 9:
NOTE 10:
These pins default to “output”, “low” to prevent infrared transceiver damage (see
Section IRTX Output Pins DEFAULT).
Buffer Modes per function on multiplexed pins are separated by a slash “/”; e.g., a
pin with two multiplexed functions where the primary function is an input and the
secondary function is an 8mA bidirectional driver is represented as “I/IO8”. Buffer
Modes in parenthesis represent multiple buffer modes for a single pin function.
This pin is tristated when PWRGD is inactive and the pin is configured as a VCC2powered alternate function.
These devices can generate wake-up events on either edge of the signal that is
applied when the pin is configured as an input. The interrupts are masked by the
Wake-up Mask Register bits.
These devices can generate wake-up events on selectable edges of the signal that is
applied when the pin is configured as an input. The interrupts are masked by the
Wake-up Mask Registers and selected edges are programmed via the Edge Select
registers (see section 8051 Internal PARALLEL on page 170).
This interrupt is masked by INT1 Mask Register bit 3. GPIO3 is the only GPIO pin
which does not generate a wakeup event.
The nEC_SCI pin can be controlled by hardware and 8051 software. The nEC_SCI
pin can drive either the ACPI Run-time GPE Chipset input or the Wake GPE Chipset
input (FIGURE 7). Depending how the nEC_SCI pin is used, other ACPI-related SCI
functions may be best supplied by FDC37N972 general purpose output OUT0.
OUT0 and GPIO7 are suitable as an SCI output pin because the buffer type can be
configured as a push-pull or open-drain output (see a description of the MISC21 and
MISC23 bits in Multiplexing_3 Register on page 278).
Input levels for the PWRGD and VCC1_PWRGD pins are rail-to-rail ±400mV; e.g.,
PWRGD VIL = .4V max, PWRGD VIH = 2.7V min. @ VCC1 min.
The function of these pins are described in Section 32kHz Clock Input
The FDC37N972 uses the XOSEL pin to select either a 32.768kHz input clock or a
32.768kHz crystal to drive the Real Time Clock Interface (Table 2 - PIN FUNCTION
DESCRIPTION).
When XOSEL = ‘0’, the RTC uses a 32.768kHz crystal connected between the
XTAL1 and XTAL2 pins. When XOSEL = ‘1’, the RTC is driven by a 32.768kHz
single-ended clock source connected to THE XTAL2 PIN.
NOTE 11:
NOTE: ICC0 ≥ 10µA for time-keeping operations under VCC0 using a single-ended
clock source. ICC1 = 30µA under VCC1 using a single-ended clock source.
The GPIO18 alternate function of the KS013 pin has no wake-up capability (see note
following).
20
BUFFER SYMBOL
I
IO12
IO8
IOD16
IOD8
IOP14
IP
IS
ISP
O12
O8
OD12
OD14
OD16
OD4
OD8
OP14
PCI_ICLK
PCI_IO
PCI_OD
ICLK
ICLK2
OCLK2
O24
TABLE 3 - BUFFER MODE LEGEND
DESCRIPTION
Input
Bidirectional – 12mA sink, 6mA source
Bidirectional – 8mA, 4mA source
Input, open drain output – 16mA sink
Input, open drain output – 8mA sink
Bidirectional – 14mA sink, 14mA source, backdrive
protected
Input with pullup
Schmitt trigger input
Schmitt trigger input with pullup
Output – 12mA, 6mA source
Output – 8mA, 4mA source
Open drain – 12mA sink
Open drain – 14mA sink
Open drain – 16mA sink
Open drain – 4mA sink
Open drain – 8mA sink
Output – 14mA sink, 14mA source, backdrive protected
PCI clock input
PCI bidirectional
PCI open drain
Clock input
Clock input 2
Clock output 2
Output – 12mA, 6mA source
21
DEFAULT
FUNCTION2
OUT1
VCC1
OUT3
VCC1
TABLE 4 - ALTERNATE FUNCTION PINS
ALTERNATE
ALTERNATE
FUNCTION #1
FUNCTION #2
nIRQ83
VCC2
FWR
VCC1
-
OUT5
OUT6
OUT7
OUT8
VCC1
VCC1
VCC1
VCC1
nDS13
nMTR13
nSMI3
DRQ23
VCC2
VCC2
VCC2
VCC2
KBRST3
KBRST3
OUT9
OUT10
OUT11
nFCS
GPIO4
GPIO5
GPIO6
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
VCC2
VCC1
VCC1
VCC1
VCC1
VCC1
VCC2
-
GPIO8
GPIO9
GPIO10
VCC1
VCC1
VCC1
VCC1
VCC2
VCC2
-
GPIO11
GPIO12
FA18
GPIO17
GPIO18
GPIO19
GPIO20
GPIO21
KSO12
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
DRQ33
PWM0
PWM1
GPIO0
KSO14
KSO15
IRMODE/IR
RX3A3
IRRX
IRTX4
IRMODE/IR
RX3B3
AB2_DATA
AB2_CLK
GPIO13
GATEA203
nDACK2
nDACK3
PS2CLK3
PS2DAT3
OUT8
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
VCC2
VCC2
VCC1
8051RX
8051TX
KBRST3
KSO13
VCC1
GPIO18
VCC1
-
22
VCC2
VCC2
MULTIPLEX
CONTROLS
MISC0
ALT WRITE
SELECT6
MISC[5, 22]5
MISC5
MISC181
MISC[17,10,
6]
MISC11
MISC4
MISC121
MISC191
MISC9
MISC[14:13]
MISC[2,7]
MISC[16:15]
MISC20
VCC1
VCC1
VCC2
MISC81
MISC6
MISC17
MISC11
MISC[3, 1]
MISC[17, 10,
6]
MISC17
DEFAULT
FUNCTION2
nINIT
VCC2
nSLCTIN
VCC2
PD0
VCC2
PD1
VCC2
PD2
VCC2
PD3
VCC2
PD4
VCC2
PD6
VCC2
SLCT
VCC2
PE
VCC2
BUSY
VCC2
nACK
VCC2
nERROR
VCC2
nALF
VCC2
nSTROBE VCC2
NOTE 1:
NOTE 2:
NOTE 3:
NOTE 4:
NOTE 5:
NOTE 6:
ALTERNATE
FUNCTION #1
nDIR
VCC2
nSTEP
VCC2
nINDEX
VCC2
nTRK0
VCC2
nWRTPRT
VCC2
nRDATA
VCC2
nDSKCHG
VCC2
nMTR0
VCC2
nWGATE
VCC2
nWDATA
VCC2
nMTR1
VCC2
NDS1
VCC2
NHDSEL
VCC2
DRVDEN0
VCC2
NDS0
VCC2
ALTERNATE
FUNCTION #2
-
MULTIPLEX
CONTROLS
CR25[4:3]
See a description in Section MULTIFUNCTION PIN on page 271.
The FDC37N972 pins are identified by primary pin function (see
DESCRIPTION OF PIN FUNCTIONS on page 11). Note that some functions are
available on more than one pin; e.g., OUT8, GPIO18 and KBRST.
When this pin is configured as an alternate function output and PWRGD is inactive,
i.e. VCC2 is 0v, the pin will tri-state to prevent back-biasing of external circuitry (see
Section General Purpose I/O (GPIO) on page 265).
This pin defaults to “output”, “low” for both the default (GPIO) function and the
alternate (IRTX) function, regardless of the state of PWRGD (see Section General
Purpose I/O (GPIO) on page 265).
MISC5 must be inactive for MISC22 to enable KBRST.
The ALT WRITE SELECT bit is in the Flash Configuration Register (see Section
ALT WRITE SELECT Bit, D3 on page 197).
23
TYPE 1 devices do not require a VCC0 battery
connection. Power supply requirements for
TYPE 1 devices are as follows: VCC0 is tied to
VSS, VCC1 is connected to the main battery
supply, and VCC2 is switched from either the
main battery or AC power if available. In this
configuration all internal components which
utilize VCC0 power plane are switched internally
to the VCC1 upon POR according to
VCC1_PWRGD.
There are three power planes in the FDC37N972
VCC0, VCC1, and VCC2 with the following power
sequencing requirement:
1. VCC2
shall
have
power
applied
simultaneously with or after VCC1.
2. VCC1
shall
have
power
applied
simultaneously with or after VCC0.
All internal components which utilize VCC0 power
plane are switched internally between the VCC1
and VCC0 pins according to VCC1_PWRGD
TYPE 2 devices require a VCC0 battery
connection. Power supply requirements for
TYPE 2 devices are as follows: VCC0 is
connected to a backup battery (VBAT), VCC1 is
connected to the main battery supply, and VCC2
is switched from either the main battery or AC
power if available. In this configuration all
internal components which utilize VCC0 power
plane only when VCC1 is absent. Normally (when
VCC1_PWRGD is asserted) they are switched
internally to the VCC1 power plane.
See Table 5 for power consumption in various
states.
Two FDC37N972 power supply configurations
can be utilized.
These power supply
configuration types fundamentally differ upon
the need for a backup battery (VBAT) connection
to VCC0.
24
VCC2
(VDC)
3.3
3.3
3.3
3.3
0
0
0
0
0
0
Note:
TABLE 5 - POWER COMSUMPTION IN VARIOUS STATES
8051
CLOCK
STATE
STATE
SYM
TYP
MAX
COMMENTS
Run
24 MHz
ICC2
15 ma
20 ma
FLOPPY @ 1 Meg Data Rate
ICC1
24 ma
30 ma
I2C @ 24 MHz
3.3
Run
12 MHz
ICC2
13 ma
15 ma
Floppy @ 500K Data Rate
ICC1
12 ma
18 ma
I2C @ 12 MHz
3.3
Run
Ring
ICC2
>1ma
2 ma
PLL On
OSC
ICC1
8 ma
10 ma
I2C Off
3.3
Idle
Ring
ICC2
>1ma
2 ma
PLL Off
OSC
ICC1
5 ma
7 ma
3.3
Run
Ring
ICC2
PLL Off
OSC
ICC1
8 ma
10 ma
I2C Off
3.3
Idle
Ring
ICC2
PLL Off
OSC
ICC1
6 ma
8 ma
I2C Off
3.3
Sleep
Stop
ICC1
160 µa
XOSEL=1
3.3
Sleep
Stop
ICC1
5 µa
10 µa
XOSEL=0
0
ICC0
40 µa
60 µa
2.4 < Vcc0 < 4 VDC,
XOSEL=1,
0
ICC0
0.4 µa
1.5 µa
2.4 < Vcc0 < 4 VDC,
XOSEL = 0
When a single-ended 32.768kHz clock source is selected (see Section 32kHz Clock Input).
The FDC37N972 uses the XOSEL pin to select either a 32.768kHz input clock or a
32.768kHz crystal to drive the Real Time Clock Interface (Table 2 - PIN FUNCTION
DESCRIPTION). When XOSEL = ‘0’, The RTC uses a 32.768kHz crystal connected between
the XTAL1 and XTAL2 pins. When XOSEL = ‘1’, the RTC is driven by a 32.768kHz singleended clock source connected to the XTAL2 pin.
VCC1
(VDC)
3.3
25
TABLE 7 - POWER PIN LIST
BIAS PINS
156
29, 143, 176
VCC0
VCC1
83, 104, 120, 205
VCC2
160
1, 7, 49, 73, 89,
107, 132, 167, 192
AGND
VSS
Note:
AB
CI
WDT
MR
CR
PM
AB2
FI
RTC (VBAT)Supply Voltage 2.7-3.3V ibat<2ma
8051 + AB + CI + RTC+ ACPI + PM1 + WDT + MR + CR
+ PM + AB2 + FI + PWM + KI + GPIO + LED + IR + 3.3V
+/-5% Supply Voltage (Note)
SR + PCG + FDC + DDS + UART + PP + PS/2 + Core
+3.3V +/-5%Supply Voltage
Analog Ground for VCC0.
Digital Ground
KI
GPIO
IR
SR
PCG
FDC
DDS
PP
= ACCESS.bus
= Control Inputs
= Watch Dog Timer
= Mailbox Registers
= Control Registers
= Power Management
= ACCESS.BUS2
= Flash Interface
= Keyboard Interface
= General Purpose I/O Interface
= Infrared
= System Reset
= PLL Clock Generator
= Floppy Disk Controller
= Digital Data Seperator
= Multi-Mode Parallel Port
PWRGD and VCC1_PWRGD timing is illustrated in FIGURE 3 through FIGURE 5.
26
10µ s
min.
PWRGD
3V
VCC2
CLOCKI
FIGURE 3 – POWER-FAIL EVENT
10µs
min.
PWRGD
3V
VCC2
CLOCKI
FIGURE 4 - VCC2 POWER-UP TIMING
1µs
min.
1µs
min.
VCC1_PWRGD
VCC1
3V
3V
FIGURE 5 - VCC1_PWRGD TIMING
These figures also appear in the “Timing Diagrams” section of this spec.
27
FUNCTIONAL DESCRIPTION
FDC37N972 OPERATING REGISTERS
HOST PROCESSOR INTERFACE
The address map, shown below in TABLE 8,
shows the set of operating registers and
addresses for each of the logical blocks of the
FDC37N972 Ultra I/O controller. The base
addresses of the FDC, Parallel, Serial 1 and
Infrared ports can be moved via the
configuration registers.
The host processor communicates with the
FDC37N972 through a series of read/write
registers. The range of base I/O port addresses
for these registers is shown in TABLE 8.
Register access is accomplished through
programmed I/O or DMA transfers. All registers
are 8 bits. Most of the registers support zero
wait-state access (NOWS). All host interface
output buffers are capable of sinking a minimum
of 6 mA.
LOGICAL
DEVICE
NUMBER
0x00
0x03
TABLE 8 - FDC37N972 OPERATING REGISTER ADDRESSES
BASE I/O
RANGE
FIXED
LOGICAL
(NOTE3)
BASE OFFSETS
DEVICE
FDC
[0x100:0x0FF8]
+0 : SRA
+1 : SRB
+2 : DOR
ON 8 BYTE
+3 : TSR
BOUNDARIES
+4 : MSR/DSR
+5 : FIFO
+7 : DIR/CCR
Parallel
[0x100:0x0FFC]
+0 : Data / ecpAfifo
Port
ON 4 BYTE
+1 : Status
BOUNDARIES
+2 : Control
(EPP Not supported) +400h : cfifo / ecpDfifo
or
tfifo / cnfgA
[0x100:0x0FF8]
+401h : cnfgB
ON 8 BYTE
+402h : ecr
BOUNDARIES
(all modes
supported,
EPP is only available
when the base
address is on an 8byte boundary)
28
ISA
CYCLE
TYPE
NOWS
Std. ISA I/O
LOGICAL
DEVICE
NUMBER
0x04
LOGICAL
DEVICE
Serial
Port 1
BASE I/O
RANGE
(NOTE3)
[0x100:0x0FF8]
FIXED
BASE OFFSETS
+0 : RB/TB  LSB div
+1 : IER  MSB div
+2 : IIR/FCR
+3 : LCR
+4 : MCR
+5 : LSR
+6 : MSR
+7 : SCR
+0 : RB/TB  LSB div
+1 : IER  MSB div
+2 : IIR/FCR
+3 : LCR
+4 : MCR
+5 : LSR
+6 : MSR
+7 : SCR
ON 8 BYTE
BOUNDARIES
0x05
Infrared
Port
[0x100:0x0FF8]
ON 8 BYTE
BOUNDARIES
0x62,
0x63
[0x100:0x0FF8]
ON 8 BYTE
BOUNDARIES
0x06
RTC
Not Relocatable
Fixed Base Address
0x07
KYBD
Not Relocatable
Fixed Base
Address
+0 : Register Block N,
address 0
+1 : Register Block N,
address 1
+2 : Register Block N,
address 2
+3 : Register Block N,
address 3
+4 : Register Block N,
address 4
+5 : Register Block N,
address 5
+6 : Register Block N,
address 6
+7 : SCE Master Control
Reg.
0x70, 0x74 : Address
Register
0x71, 0x76 : Data Register
0x60 : Data Register
0x64 : Command/Status
Reg.
ISA
CYCLE
TYPE
NOWS
NOWS
NOWS
Std. ISA I/O
NOWS
Note 1: Refer to the configuration register descriptions for setting the base address
Note 2: This chip uses all ISA address bits to decode the base address of each of its logical devices.
29
FLOPPY DISK CONTROLLER
The FDC is compatible to the 82077AA using
SMSC's proprietary FDC core.
The Floppy Disk Controller (FDC) provides the
interface between a host microprocessor and
the Floppy Disk Drives (FDD).
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.
FDC INTERNAL REGISTERS
The FDC contains eight internal registers, which
facilitate the interfacing between the host
microprocessor and the disk drive TABLE 9
shows the addresses required toaccess these
registers. Registers other than the ones shown
are not supported.
TABLE 9 - STATUS, DATA AND CONTROL REGISTERS
FDC PRIMARY BASE I/O
ADDRESS OFFSET
R/W
REGISTER
0
R
Status Register A (SRA)
1
R
Status Register B (SRB)
2
R/W
Digital Output Register (DOR)
3
R/W
Tape Drive Register (TDR)
4
R
Main Status Register (MSR)
4
W
Data Rate Select Register (DSR)
5
R/W
Data (FIFO)
6
Reserved
7
R
Digital Input Register (DIR)
7
W
Configuration Control Register (CCR)
STATUS REGISTER A (SRA)
FDC I/O BASE ADDRESS + 0x00
(READ ONLY)
This register is read-only and monitors the state of the FDC Interrupt pin and several disk
interface 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
SRA.
30
RESET
COND.
TABLE 10 - SRB - PS/2 MODEL 30 MODE
7
6
5
4
3
2
INT
nDRV2 STEP nTRK0 HDSEL nINDX
PENDING
0
N/A
0
N/A
0
N/A
1
nWP
0
DIR
N/A
0
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
Active low status of the DRV2 disk interface input pin, indicating that a second drive has been
installed.
BIT 7 INTERRUPT PENDING
Active high bit indicating the state of the Floppy Disk Interrupt output.
31
RESET
COND.
TABLE 11 - SRA - PS/2 MODEL 30 MODE
7
6
5
4
3
2
INT
DRQ STEP TRK0 NHDSE INDX
PENDING
F/F
L
0
0
0
N/A
1
N/A
1
WP
0
nDIR
N/A
1
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 FDC’s DRQ output pin.
BIT 7 INTERRUPT PENDING
Active high bit indicating the state of the Floppy Disk Interrupt output.
32
DIGITAL OUTPUT REGISTER (DOR)
FDC I/O BASE ADDRESS + 0X02 (READ/WRITE)
The DOR controls the drive select and motor enables of the disk interface outputs. It 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.
7
MOT
EN3
0
6
MOT
EN2
0
TABLE 12 - FDC DOR
5
4
3
2
MOT
MOT DMAEN nRESE
EN1
EN0
T
0
0
0
0
1
0
DRIVE DRIVE
SEL1 SEL0
0
0
RESET
COND.
BIT 0 and 1 DRIVE SELECT
These two bits are binary encoded for the two drive selects output pins nds0 and nds1, thereby
allowing only one drive to be selected at one time.
BIT 2 nreset
A logic “0” written to this bit resets the FDC. 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 FDC’s ndack and TC inputs and
enable the FDC’s DRQ and Interrupt outputs. This bit being a logic “0” will disable the FDC’s ndack
and TC inputs, and hold the FDC’s DRQ and Interrupt outputs in a high impedance state. This bit is a
logic “0” after a reset.
PS/2 Mode: In this mode the TC and the FDC’s DRQ, ndack, and Interrupt pins are always enabled.
During a reset, the DRQ, ndack, TC, and Interrupt pins will remain enabled, but this bit will be cleared
to a logic “0”.
BIT 4 MOTOR ENABLE 0
This bit controls the nmtr0 disk interface output. A logic “1” in this bit will cause the output pin to
assert.
BIT 5 MOTOR ENABLE 1
This bit controls the nmtr1 disk interface output. A logic “1” in this bit will cause the output pin to
assert.
BIT 6 MOTOR ENABLE 2
This bit controls the nmtr2 disk interface output. A logic “1” in this bit will cause the output pin to
assert.
BIT 7 MOTOR ENABLE 3
This bit controls the nmtr3 disk interface output. A logic “1” in this bit will cause the output pin to
assert.
33
RESET
COND.
RESET
COND.
TABLE 13 – FDC SRB – PS/2 MODEL 30 MODE
7
6
5
4
3
2
1
0
nDRV2 nDS1 nDS0 WDATA RDATA WGATE nDS3 nDS2
F/F
F/F
F/F
N/A
1
1
0
0
0
1
1
7
MOT
EN3
0
6
MOT
EN2
0
TABLE 14 - FDC DOR
5
4
3
2
MOT
MOT
DMAEN nRESET
EN1
EN0
0
0
0
0
1
DRIVE
SEL1
0
0
DRIVE
SEL0
0
BIT 0 and 1 DRIVE SELECT
These two bits are binary encoded for the two drive selects output pins nds0 and nds1, thereby
allowing only one drive to be selected at one time.
BIT 2 nRESET
A logic “0” written to this bit resets the FDC. 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 FDC’s nDACK and TC inputs and enable the FDC’s DRQ
and Interrupt outputs. This bit being a logic “0” will disable the FDC’s nDACK and TC inputs, and hold
the FDC’s DRQ and Interrupt outputs in a high impedance state. This bit is a logic “0” after a reset.
PS/2 Mode: In this mode the TC and the FDC’s DRQ, and Interrupt pins are always enabled. During
a reset, the DRQ, TC, and Interrupt pins will remain enabled, but this bit will be cleared to a logic “0”.
BIT 4 MOTOR ENABLE 0
This bit controls the disk interface output. A logic “1” in this bit will cause the output pin to assert.
BIT 5 MOTOR ENABLE 1
This bit controls the nMTR1 disk interface output. A logic “1” in this bit will cause the output pin to
assert.
BIT 6 MOTOR ENABLE 2
This bit controls the nMTR2 disk interface output. A logic “1” in this bit will cause the output pin to
assert.
BIT 7 MOTOR ENABLE 3
This bit controls the nMTR3 disk interface output. A logic “1” in this bit will cause the output pin to
assert.
34
TABLE 13 – FDC INTERNAL 2 DRIVE DECODE – DRIVES 0 AND 1 SWAPPED
MOTOR ON OUTPUTS
DRIVE SELECT
DIGITAL OUTPUT REGISTER
(ACTIVE LOW)
OUTPUTS (ACTIVE
LOW)
Bit 7 Bit 6 Bit 5 Bit 4 Bit1 Bit 0
Nds1
Nds0
Nmtr1
Nmtr0
X
X
X
1
0
0
0
1
Nbit 4
Nbit 5
X
X
1
X
0
1
1
0
Nbit 4
Nbit 5
X
1
X
X
1
0
1
1
Nbit 4
Nbit 5
1
X
X
X
1
1
1
1
Nbit 4
Nbit 5
0
0
0
0
X
X
1
1
Nbit 4
Nbit 5
TAPE DRIVE REGISTER (TDR)
NORMAL FLOPPY MODE
FDC I/O BASE ADDRESS + 0x03
(READ/WRITE)
Normal mode. The TDR allows the user to
assign tape support to a particular drive during
initialization. Any future references to that drive
number automatically invokes tape support.
The Tape Select bits are TDR[1:0]. The TDR
Register contains only bits 0 and 1. When this
register is read, bits 2 – 7 are a high impedance.
This register is included for 82077 software
compatability. The TDR is unaffected by a
software reset. The improved data separator
incorporates tape drive support and requires the
Tape Select bits in the FDC Tape Drive register
to identify which drive has been assigned to
receive this support (see the following section).
DB7
REG 3F3 Tri-state
TABLE 14 - FDC TDR NORMAL FLOPPY MODE
DB6
DB5
DB4
DB3
DB2
Tri-state Tri-state Tri-state Tri-state Tri-state
TAPE SEL1
(TDR.1)
0
0
1
1
TAPE SEL2
(TDR.0)
0
1
0
1
35
DRIVE
SELECTED
None
1
2
3
DB1
tape sel 1
DB0
tape sel 0
ENHANCED FLOPPY MODE 2 (OS2)
The TDR Register for Enhanced Floppy Mode 2 operation.
REG 3F3
DB7
1
TABLE 15 - FDC TDR ENHANCED FLOPPY MODE 2 (OS2)
DB6
DB5
DB4
DB3
DB2
DB1
DB0
1
Drive Type ID
Floppy Boot Drive
tape sel1 tape sel0
BIT 7 This bit is always set active high
BIT 6 This bit is always set active high
BITS 5 and 4 Drive Type ID
These bits reflect two of the bits of L0-CRF1 (Logical Device 0 – Configuration Register 0xF1).
Which two bits these are depends on the last drive selected in the Digital Output Register. (See
TABLE 20)
BITS 3 and 2 Floppy Boot Drive
These bits reflect two of the bits of L0-CRF1. Bit 3 = L0-CRF1-B7. Bit 2 = L0-CRF1-B6.
BIT 1 and 0 – Tape Drive Select (READ/WRITE)
Same as in Normal and Enhanced Floppy Mode 2.
TABLE 16 – DRIVE TYPE ID
DIGITAL OUTPUT REGISTER
TDR REGISTER – DRIVE TYPE ID
Bit 1
Bit 0
Bit 5
Bit 4
0
0
L0-CRF2 – B1
L0-CRF2 – B0
0
1
L0-CRF2 – B3
L0-CRF2 – B2
1
0
L0-CRF2 – B5
L0-CRF2 – B4
1
1
L0-CRF2 – B7
L0-CRF2 – B6
Note:
L0-CRF2-Bx = Logical Device 0, Configuration Register F2, Bit x.
MID[1:0] FDD INTERFACE PINS
The FDC Media ID pins are not supported in the FDC37N972. The MID[1:0] inputs to the FDC core
are strapped so that the Media ID bits the TDR are always “high”.
36
DATA RATE SELECT REGISTER (DSR)
Microchannel applications. 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.
FDC I/O BASE ADDRESS + 0x04 (WRITE
ONLY)
This register is write only. It is used to program
the data rate, amount of write precompensation,
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 and
RESET
COND.
7
6
S/W POWER
RESET DOWN
0
0
TABLE 17 - FDC DSR
5
4
3
0
PREPRECOMP2 COMP1
0
0
0
2
1
0
PRE- DRATE DRATE
COMP0 SEL1
SEL0
0
1
0
BITS 0 - 1 DATA RATE SELECT
These bits control the data rate of the floppy controller. See TABLE 19 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.
BITS 2 - 4 PRECOMPENSATION SELECT
These three bits select the value of write precompensation that will be applied to the WDATA output
signal. TABLE 18 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.
37
TABLE 18 - FDC PRECOMPENSATION DELAYS
PRECOMPENSATION
PRECOMP 432
DELAY (nsec)
<2Mbps
2Mbps
0
0.00
111
20.8
41.67
001
41.7
83.34
010
62.5
125.00
011
83.3
166.67
100
104.2
208.33
101
125
250.00
110
Default
Default
000
Default: See TABLE 16
DRIVE RATE
DRT1
DRT0
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
1
0
1
0
1
0
1
0
TABLE 19 – FDC DATA RATES
DATA RATE
DATA RATE
SEL1
SEL0
MFM
FM
1
1
1Meg
--0
0
500
250
0
1
300
150
1
0
250
125
1
1
1Meg
--0
0
500
250
0
1
500
250
1
0
250
125
1
1
1Meg
--0
0
500
250
0
1
2Meg
--1
0
250
125
DENSEL
1
1
0
0
1
1
0
0
1
1
0
0
DRATE(1)
1
0
1
1
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1
0
0
0
1
1
0
Drive Rate Table (Recommended) 00 = 360K, 1.2M, 720K, 1.44M and 2.88M Vertical Format
01 = 3-Mode Drive
10 = 2 Meg Tape
Note 1: The DRATE and DENSEL values are mapped onto the DRIVEDEN pins.
38
DT1
0
DT0
0
1
0
1
0
1
1
TABLE 20 - FDC DRVDEN MAPPING
DRVDEN1 (1)
DRVDEN0 (1)
DRIVE TYPE
DRATE0
DENSEL
4/2/1 MB 3.5"
2/1 MB 5.25" FDDS
2/1.6/1 MB 3.5" (3-MODE)
DRATE0
DRATE1
DRATE0
nDENSEL
PS/2
DRATE1
DRATE0
TABLE 21 - FDC DEFAULT PRECOMPENSATION DELAYS
PRECOMPENSATION
DATA RATE
DELAYS
20.8 ns
2 Mbps
41.67 ns
1 Mbps
125 ns
500 Kbps
125 ns
300 Kbps
125 ns
250 Kbps
39
MAIN STATUS REGISTER
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.
FDC I/O BASE ADDRESS + 0x04
(READ ONLY)
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
7
RQM
6
DIO
5
NON
DMA
TABLE 22 - FDC MSR
4
3
2
CMD
DRV3
DRV2
BUSY
BUSY
BUSY
1
DRV1
BUSY
0
DRV0
BUSY
BIT 0 - 3 DRVx 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”.
40
DATA REGISTER (FIFO)
FDC
I/O
BASE
(READ/WRITE)
ADDRESS
+
TABLE 31 gives several examples of the delays
with a FIFO. The data is based upon the
following formula:
0x05
All command parameter information, disk data
and result status are transferred between the
host processor and the FDC through the Data
Register. Data transfers are governed by the
RQM and DIO bits in the Main Status Register.
Threshold # x [8/DATA RATE] - 1.5ms = 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.
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.
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.
TABLE 23
FIFO THRESHOLD
EXAMPLES
1 byte
2 bytes
8 bytes
15 bytes
- FIFO SERVICE DELAY
MAXIMUM DELAY TO SERVICING
AT 2 Mbps* DATA RATE
1 x 4 ms - 1.5 ms = 2.5 ms
2 x 4 ms - 1.5 ms = 6.5 ms
8 x 4 ms - 1.5 ms = 30.5 ms
15 x 4 ms - 1.5 ms = 58.5 ms
FIFO THRESHOLD
EXAMPLES
1 byte
2 bytes
8 bytes
15 bytes
MAXIMUM DELAY TO SERVICING
AT 1 Mbps DATA RATE
1 x 8 ms - 1.5 ms = 6.5 ms
2 x 8 ms - 1.5 ms = 14.5 ms
8 x 8 ms - 1.5 ms = 62.5 ms
15 x 8 ms - 1.5 ms = 118.5 ms
FIFO THRESHOLD
EXAMPLES
1 byte
2 bytes
8 bytes
15 bytes
MAXIMUM DELAY TO SERVICING
AT 500 Kbps DATA RATE
1 x 16 ms - 1.5 ms = 14.5 ms
2 x 16 ms - 1.5 ms = 30.5 ms
8 x 16 ms - 1.5 ms = 126.5 ms
15 x 16 ms - 1.5 ms = 238.5 ms
41
DIGITAL INPUT REGISTER (DIR)
FDC I/O BASE ADDRESS + 0X07 (READ ONLY)
This register is read-only in all modes.
DIR - PC-AT Mode
RESET
COND.
7
DSK
CHG
N/A
TABLE 24 - FDC DIR ALL MODES
6
5
4
3
2
N/A
N/A
N/A
N/A
N/A
1
0
N/A
N/A
BIT 0 – 6 UNDEFINED
The data bus outputs D0 – 6 will remain in a high impedance state during a read of this register.
BIT 7 DSKCHG
This bit monitors the pin of the same name and reflects the opposite value seen on the disk cable.
DIR – PS/2 MODE
RESET
COND.
7
DSK CHG
N/A
6
1
N/A
TABLE 25 - FDC DIR PS/2 MODE
5
4
3
2
1
0
1
1
1 DRATE SEL1 DRATE SEL0 nHIGH DENS
N/A N/A N/A
N/A
N/A
1
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 19for 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.
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.
42
DIR – MODEL 30 MODE
RESET
COND.
7
DSK
CHG
N/A
TABLE 26 - FDC DIR MODEL 30 MODE
6
5
4
3
2
1
0
0
0
0
DMAEN nOPREC DRATE DRATE
SEL1
SEL0
0
0
0
0
0
1
0
BITS 0 and 1 DATA RATE SELECT
These bits control the data rate of the floppy controller. See TABLE 19 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 pin.
CONFIGURATION CONTROL REGISTER (CCR)
FDC I/O BASE ADDRESS + 0x07
(WRITE ONLY)
TABLE 27 - FDC CCR PC/AT AND PS/2 MODE
6
5
4
3
2
1
0
DRATE DRATE
SEL1
SEL0
N/A
N/A
N/A
N/A
N/A
N/A
1
0
7
RESET
COND.
BIT 0 and 1 DATA RATE SELECT 0 and 1
These bits determine the data rate of the floppy controller. See TABLE 19 for the appropriate values.
BIT 2 - 7 RESERVED
Should be set to a logical "0"
43
TABLE 28 - FDC CCR - PS/2 MODEL 30 MODE
6
5
4
3
2
1
0
NOPREC DRATE DRATE
SEL1
SEL0
N/A
N/A
N/A
N/A
N/A
N/A
1
0
7
RESET
COND.
BIT 0 and 1 DATA RATE SELECT 0 and 1
These bits determine the data rate of the floppy controller. See TABLE 19 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.
BIT 3 - 7 RESERVED
Should be set to a logical "0". TABLE 19 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.
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.
BIT NO.
7,6
SYMBOL
IC
5
SE
4
EC
3
2
1,0
H
DS1,0
TABLE 29 - FDC STATUS REGISTER 0
NAME
DESCRIPTION
Interrupt 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.
Seek End
The FDC completed a Seek, Relative Seek or
Recalibrate command (used during a Sense Interrupt
Command).
Equipment
The TRK0 pin failed to become a "1" after:
Check
Step pulses in the Recalibrate command.
The Relative Seek command caused the FDC to step
outward beyond Track 0.
Unused. This bit is always "0".
Head Address The current head address.
Drive Select
The current selected drive.
44
TABLE 30 - FDC STATUS REGISTER 1
BIT NO. SYMBOL
NAME
DESCRIPTION
7
EN
End of Cylinder 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.
6
Unused. This bit is always "0".
5
DE
Data Error
The FDC detected a CRC error in either the ID field or the
data field of a sector.
4
OR
Overrun/
Becomes set if the FDC does not receive CPU or DMA
Underrun
service within the required time interval, resulting in data
overrun or underrun.
3
Unused. This bit is always "0".
2
ND
No Data
Any one of the following:
Read Data, Read Deleted Data command - the FDC did not
find the specified sector.
Read ID command - the FDC cannot read the ID field
without an error.
Read A Track command - the FDC cannot find the proper
sector sequence.
1
NW
Not Writable
WP pin became a "1" while the FDC is executing a Write
Data, Write Deleted Data, or Format A Track command.
0
MA
Missing Address Any one of the following:
Mark
The FDC did not detect an ID address mark at the specified
track after encountering the index pulse from the IDX pin
twice.
The FDC cannot detect a data address mark or a deleted
data address mark on the specified track.
45
TABLE 31 - FDC STATUS REGISTER 2
NAME
DESCRIPTION
Unused. This bit is always "0".
Control Mark
Any 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.
Data Error in
The FDC detected a CRC error in the data field.
Data Field
Wrong
The track address from the sector ID field is different
Cylinder
from the track address maintained inside the FDC.
Unused. This bit is always "0".
Unused. This bit is always "0".
Bad Cylinder
The 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.
Missing Data
The FDC cannot detect a data address mark or a
Address Mark
deleted data address mark.
BIT NO.
7
6
SYMBOL
5
DD
4
WC
3
2
1
BC
0
MD
BIT NO.
7
6
5
4
3
2
1,0
SYMBOL
CM
WP
T0
HD
DS1,0
TABLE 32 - FDC STATUS REGISTER 3
NAME
DESCRIPTION
UNUSED. THIS BIT IS ALWAYS "0".
Write Protected Indicates the status of the WP pin.
Unused. This bit is always "1".
Track 0
Indicates the status of the TRK0 pin.
Unused. This bit is always "1".
Head Address
Indicates the status of the HDSEL pin.
Drive Select
Indicates the status of the nDS1, nDS0 pins.
All operations are terminated upon a RESET,
and the Floppy Disk Controller enters an idle
state. A reset while a disk write is in progress
will corrupt the data and CRC.
FDC RESET
There are three sources of system reset on the
FDC: the nRESET_OUT bit of the 8051’s Output
enable
Register
(which
controls
the
nRESET_OUT pin of the FDC37N972); a reset
generated via a bit in the DOR; and a reset
generated via a bit in the DSR. At VCC2 power
on, a VCC2 Power On Reset initializes the FDC.
All resets take the FDC out of the power down
state.
On exiting the reset state, various internal
registers are cleared, including the Configure
command information, and the Floppy Disk
Controller waits for a new command. Drive
polling will start unless disabled by a new
Configure command.
46
and DRQ can be hi-Z), TC is active high and
DENSEL is active low.
DMA TRANSFERS
nRESET_OUT PIN (HARDWARE RESET)
The nRESET_OUT 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.
DMA transfers are enabled with the Specify
command and are initiated by the FDC by
activating its DRQ pin during a data transfer
command. The FIFO is enabled directly by
asserting nDACK and addresses need not be
valid.
DOR RESET VS. DSR RESET (SOFTWARE
RESET)
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
nRESET_OUT pin reset.
The user must
manually clear this reset bit in the DOR to exit
the reset state.
Note that if the DMA controller (i.e. 8237A) is
programmed to function in verify mode, a
pseudo read is performed by the FDC based
only on nDACK. This mode is only available
when the FDC has been configured into byte
mode (FIFO disabled) and is programmed to do
a read. With the FIFO enabled, the FDC can
perform the above operation by using the Verify
command; no DMA operation is needed.
FDC MODES OF OPERATION
CONTROLLER PHASES
The FDC has three modes of operation, PC/AT
mode, PS/2 mode and Model 30 mode. These
are determined by the state of IDENT and MFM,
bits[3] and [2] respectively of L0-CRF0.
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.
PC/AT MODE - (IDENT high, MFM a "don't
care")
The PC/AT register set is enabled, the DMA
enable bit of the DOR becomes valid (The
FDC’s IRQ and DRQ can be hi-Z), and TC and
DENSEL become active high signals.
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 33 for the command set descriptions).
These bytes of data must be transferred in the
order prescribed.
PS/2 MODE - (IDENT low, MFM high)
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 FDC’s
IRQ and DRQ are always valid), TC and
DENSEL become active low.
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
MODEL 30 MODE - (IDENT low, MFM low)
This mode supports PS/2 Model 30
configuration and register set. The DMA enable
bit of the DOR becomes valid (The FDC’s IRQ
47
Non-DMA Mode - Transfers from the FIFO to
the Host
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 FDC’s IRQ pin 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 FDC’s IRQ pin can be used for interruptdriven 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 FDC’s IRQ pin and RQM bit when
the FIFO becomes empty.
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.
Non-DMA Mode - Transfers from the Host to the
FIFO
The FDC’s IRQ pin 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 FDC’s IRQ pin 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’s IRQ pin will also be deactivated if TC and
nDACK both go inactive. The FDC enters the
result phase after the last byte is taken by the
FDC from the FIFO (i.e. FIFO empty condition).
After a reset, the FIFO is disabled. Each data
byte is transferred by an FDC IRQ or DRQ
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
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.
DMA Mode - Transfers from the FIFO to the
Host
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.
The FDC activates the FDC’s DRQ pin 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 FDC’s DRQ
pin when the FIFO becomes empty. FDC’s
DRQ goes inactive after nDACK goes active for
the last byte of a data transfer (or on the active
edge of nIOR, on the last byte, if no edge is
present on nDACK). A data underrun may
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.
48
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.
occur if the FDC’s DRQ is not removed in time
to prevent an unwanted cycle.
DMA Mode - Transfers from the Host to the
FIFO
The FDC activates the FDC’s DRQ pin when
entering the execution phase of the data transfer
commands. The DMA controller must respond
by activating the nDACK and nIOW pins placing
data in the FIFO.
The FDC’s DRQ remains
active until the FIFO becomes full. The FDC’s
DRQ is again set true when the FIFO has
<threshold> bytes remaining in the FIFO. The
FDC will also deactivate the FDC’s DRQ pin
when TC becomes true (qualified by nDACK),
indicating that no more data is required. The
FDC’s DRQ goes inactive after nDACK goes
active for the last byte of a data transfer (or on
the active edge of nIOW of the last byte, if no
edge is present on nDACK). A data overrun
may occur if the FDC’s DRQ is not removed in
time to prevent an unwanted cycle.
Data Transfer Termination
RESULT PHASE
The generation of the FDC’s IRQ 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.
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.
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
withthe command. If it is invalid, an interrupt is
issued. The user sends a Sense Interrupt
Status command which returns an invalid
command error.
Refer to Table 33 for
explanations of the various symbols used.
TABLE 34 lists the required parameters and the
results associated with each command that the
FDC is capable of performing.
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 hardware TC was
received. The only difference between these
implicit functions and TC is that they return
"abnormal termination" result status.
Such
status indications can be ignored if they were
expected.
49
TABLE 33 - DESCRIPTION OF THE FDC COMMAND SYMBOLS
NAME
DESCRIPTION
Cylinder Address The currently selected address; 0 to 255.
Data Pattern
The pattern to be written in each sector data field during
formatting.
D0, D1, D2, Drive Select 0-3
Designates which drives are perpendicular drives on the
D3
Perpendicular Mode Command. A "1" indicates a perpendicular
drive.
DIR
Direction Control If 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, DS1 Disk Drive Select
DS1
DS0
DRIVE
SYMBOL
C
D
0
1
0
1
0
0
1
1
DTL
Special Sector
Size
EC
Enable Count
EFIFO
Enable FIFO
EIS
Enable Implied
Seek
EOT
GAP
GPL
End of Track
H/HDS
Head Address
HLT
Gap Length
Head Load Time
drive 0
drive 1
drive 2
drive 3
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.
When this bit is "1" the "DTL" parameter of the Verify command
becomes SC (number of sectors per track).
This active low bit when a 0, enables the FIFO. A "1" disables the
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.
The final sector number of the current track.
Alters Gap 2 length when using Perpendicular Mode.
The Gap 3 size. (Gap 3 is the space between sectors excluding
the VCO synchronization field).
Selected head: 0 or 1 (disk side 0 or 1) as encoded in the sector
ID field.
The time interval that the FDC waits after loading the head and
before initializing a read or write operation. Refer to the Specify
command for actual delays.
50
SYMBOL
HUT
NAME
Head Unload
Time
LOCK
MFM
MT
N
NCN
ND
MFM/FM Mode
Selector
Multi-Track
Selector
Sector Size Code
New Cylinder
Number
Non-DMA Mode
Flag
OW
Overwrite
PCN
Present Cylinder
Number
Polling Disable
POLL
DESCRIPTION
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.
Lock 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 tha DSR or DOR)
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.
This 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.
N
SECTOR SIZE
128 bytes
256 bytes
512 bytes
1024 bytes
...
...
07
16 Kbytes
The desired cylinder number.
When set to 1, indicates that the FDC is to operate in the nonDMA mode. In this mode, the host is interrupted for each data
transfer. When set to 0, the FDC operates in DMA mode,
interfacing to a DMA controller by means of the DRQ and nDACK
signals.
The 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.
The current position of the head at the completion of Sense
Interrupt Status command.
When set, the internal polling routine is disabled. When clear,
polling is enabled.
51
SYMBOL
PRETRK
R
RCN
SC
SK
SRT
ST0
ST1
ST2
ST3
WGATE
NAME
Precompensation
Start Track
Number
Sector Address
DESCRIPTION
Programmable from track 00 to FFH.
The 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.
Relative Cylinder Relative cylinder offset from present cylinder as used by the
Number
Relative Seek command.
Number of
The number of sectors per track to be initialized by the Format
Sectors Per Track command. The number of sectors per track to be verified during a
Verify command when EC is set.
Skip Flag
When set to 1, sectors containing a deleted data address mark will
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.
Step Rate Interval The time interval between step pulses issued by the FDC.
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.
Status 0
Registers within the FDC which store status information after a
Status 1
command has been executed. This status information is available
Status 2
to the host during the result phase after command execution.
Status 3
Write Gate
Alters timing of WE to allow for pre-erase loads in perpendicular
drives.
52
FDC INSTRUCTION SET
PHASE
Command
R/W
W
W
W
W
W
W
W
W
W
Execution
Result
R
R
R
R
R
R
R
TABLE 34 - FDC INSTRUCTION SET
READ DATA
DATA BUS
D7
D6
D5 D4 D3 D2 D1 D0
REMARKS
MT MFM SK
0
0
1
1
0 Command Codes
0
0
0
0
0 HDS DS1 DS0
-------- C -------Sector ID information prior
to Command execution.
-------- H --------------- R --------------- N -------------- EOT ------------- GPL ------------- DTL ------Data transfer between the
FDD and system.
------- ST0 ------Status information after
Command execution.
------- ST1 ------------- ST2 -------------- C -------Sector ID information after
Command execution.
-------- H --------------- R --------------- N --------
53
PHASE
Command
R/W
W
W
W
D7
MT
0
W
W
W
W
W
W
Execution
PHASE
R/W
R
R
R
R
R
D7
READ DELETED DATA
DATA BUS
D6
D5 D4 D3 D2 D1 D0
REMARKS
MFM SK
0
1
1
0
0 Command Codes
0
0
0
0 HDS DS1 DS0
-------- C -------Sector ID information prior to
Command execution.
-------- H --------------- R --------------- N -------------- EOT ------------- GPL ------------- DTL ------Data transfer between the
FDD and system.
DATA BUS
D6 D5 D4 D3 D2 D1 D0 REMARKS
------- ST2 -------------- C -------Sector ID information after
Command execution.
-------- H --------------- R --------------- N --------
54
PHASE
Command
R/W
W
W
W
W
W
W
W
W
W
Execution
Result
R
R
R
R
R
R
R
D7
MT
0
D6
MFM
0
WRITE DATA
DATA BUS
D5 D4 D3 D2 D1 D0
REMARKS
0
0
0
1
0
1 Command Codes
0
0
0 HDS DS1 DS0
-------- C -------Sector ID information prior to
Command execution.
-------- H --------------- R --------------- N -------------- EOT ------------- GPL ------------- DTL ------Data transfer between the
FDD and system.
------- ST0 ------Status information after
Command execution.
------- ST1 ------------- ST2 -------------- C -------Sector ID information after
Command execution.
-------- H --------------- R --------------- N --------
55
PHASE
Command
R/W
W
W
W
W
W
W
W
W
W
WRITE DELETED DATA
DATA BUS
D7
D6
D5 D4 D3
D2
D1
MT MFM 0
0
1
0
0
0
0
0
0
0
HDS DS1
-------- C --------
REMARKS
Command Codes
Sector ID information
prior to Command
execution.
-------- H --------------- R --------------- N -------------- EOT ------------- GPL ------------- DTL -------
Execution
Result
D0
1
DS0
R
------- ST0 -------
R
R
R
------- ST1 ------------- ST2 -------------- C --------
R
R
R
-------- H --------------- R --------------- N --------
56
Data transfer between
the FDD and system.
Status information after
Command execution.
Sector ID information
after Command
execution.
PHASE
Command
R/W
W
W
W
D7
0
0
D6
MFM
0
W
W
W
W
W
W
PHASE
R/W
R
R
R
R
R
R
D7
D6
READ A TRACK
DATA BUS
D5 D4 D3
D2
0
0
0
0
0
0
0
HDS
-------- C --------
-------- H --------------- R --------------- N -------------- EOT ------------- GPL ------------- DTL ------DATA BUS
D5
D4
D3
D2
------- ST1 ------------- ST2 -------------- C --------
-------- H --------------- R --------------- N --------
57
D1
1
DS1
D0
0
DS0
REMARKS
Command Codes
Sector ID information
prior to Command
execution.
D1
D0
REMARKS
Sector ID information
after Command
execution.
PHASE
Command
R/W
W
W
W
W
W
W
W
W
W
D7
D6
MT MFM
EC
0
VERIFY
DATA BUS
D5 D4 D3
D2
SK
1
0
1
0
0
0
HDS
-------- C --------
D0
0
DS0
REMARKS
Command Codes
Sector ID information
prior to Command
execution.
-------- H --------------- R --------------- N -------------- EOT ------------- GPL ------------ DTL/SC ------
Execution
Result
D1
1
DS1
R
------- ST0 -------
R
R
R
------- ST1 ------------- ST2 -------------- C --------
R
R
R
-------- H --------------- R --------------- N --------
58
No data transfer takes
place.
Status information after
Command execution.
Sector ID information
after Command
execution.
PHASE
Command
Result
R/W
W
R
D7
0
1
D6
0
0
PHASE
Command
R/W
W
W
W
W
W
W
D7
0
0
D6
MFM
0
Execution for
Each Sector
Repeat:
Result
VERSION
DATA BUS
D5 D4 D3
D2
D1
0
1
0
0
0
0
1
0
0
0
FORMAT A TRACK
DATA BUS
D5 D4 D3
D2
D1
0
0
1
1
0
0
0
0
HDS DS1
-------- N --------------- SC -------------- GPL -------------- D --------
W
-------- C --------
W
W
W
-------- H --------------- R --------------- N --------
R
------- ST0 -------
R
R
R
R
R
R
------- ST1 ------------- ST2 ------------ Undefined ----------- Undefined ----------- Undefined ----------- Undefined ------
59
D0
0
0
D0
1
DS0
REMARKS
Command Code
Enhanced Controller
REMARKS
Command Codes
Bytes/Sector
Sectors/Cylinder
Gap 3
Filler Byte
Input Sector
Parameters
FDC formats an entire
cylinder
Status information after
Command execution
PHASE
Command
R/W
W
W
D7
0
0
D6
0
0
D5
0
0
RECALIBRATE
DATA BUS
D4 D3 D2
D1
0
0
1
1
0
0
0
DS1
D0
1
DS0
Execution
PHASE
Command
Result
Head retracted to Track 0
Interrupt.
R/W
W
R
D7
0
SENSE INTERRUPT STATUS
DATA BUS
D6 D5 D4 D3 D2 D1 D0
0
0
0
1
0
0
0
------- ST0 -------
R
PHASE
Command
PHASE
Command
Result
PHASE
Command
REMARKS
Command Codes
R/W
W
W
W
R/W
W
W
R
R/W
W
W
W
REMARKS
Command Codes
Status information at the end
of each seek operation.
------- PCN ------SPECIFY
DATA BUS
D7 D6 D5 D4 D3 D2 D1 D0
REMARKS
0
0
0
0
0
0
1
1 Command Codes
--- SRT ----- HUT -------- HLT -----ND
D7
0
0
D7
0
0
D6
0
0
D6
0
0
SENSE DRIVE STATUS
DATA BUS
D5 D4 D3
D2
D1
0
0
0
1
0
0
0
0
HDS DS1
------- ST3 -------
SEEK
DATA BUS
D5 D4 D3
D2
0
0
1
1
0
0
0
HDS
------- NCN -------
Execution
D1
1
DS1
D0
0
DS0
REMARKS
Command Codes
Status information about
FDD
D0
1
DS0
REMARKS
Command Codes
Head positioned over
proper cylinder on
diskette.
60
PHASE
Command
R/W
W
D7
0
0
0
Execution
W
W
W
PHASE
Command
PHASE
Command
Execution
Result
R/W
W
W
W
R/W
W
R
R
R
R
R
R
R
R
R
R
D7
1
0
D6
0
D5
0
CONFIGURE
DATA BUS
D4
D3
1
0
D2
0
D1
1
D0
1
REMARKS
Configure
Information
0
0
0
0
0
0
0
EIS EFIFO POLL
--- FIFOTHR ----------- PRETRK ---------
D6
DIR
0
D7
0
LOCK
0
RELATIVE SEEK
DATA BUS
D5 D4 D3
D2
D1
0
0
1
1
1
0
0
0
HDS DS1
------- RCN -------
D6
0
DUMPREG
DATA BUS
D5
D4
D3 D2
0
0
1
1
D0
1
DS0
D1
1
REMARKS
D0
0
------ PCN-Drive 0 ------------ PCN-Drive 1 ------------ PCN-Drive 2 ------------ PCN-Drive 3 ---------- SRT ------ HUT --------- HLT ------ND
------- SC/EOT ------0
D3
D2
D1 D0
GAP WGATE
EIS EFIFO POLL
-- FIFOTHR --------- PRETRK --------
61
REMARKS
*Note:
Registers
placed in
FIFO
PHASE
Command
R/W
W
W
D7
0
0
D6
MFM
0
D5
0
0
READ ID
DATA BUS
D4 D3
D2
0
1
0
0
0
HDS
D1
1
DS1
Execution
Result
R
-------- ST0 --------
D0
0
DS0
REMARKS
Commands
The first correct ID
information on the
Cylinder is stored in
Data Register
Status information after
Command execution.
Disk status after the
Command has
completed
R
R
R
R
R
R
PHASE
Command
R/W
W
-------- ST1 --------------- ST2 --------------- C --------------- H --------------- R --------------- N --------
D7
0
OW
PERPENDICULAR MODE
DATA BUS
D6 D5 D4 D3 D2
D1
0
0
1
0
0
1
0
D3 D2 D1 D0
GAP
62
D0
0
WGATE
REMARKS
Command Codes
PHASE
Command
R/W
W
Result
R
PHASE
Command
Result
R/W
W
R
D7
INVALID CODES
DATA BUS
D6 D5 D4 D3 D2 D1
----- Invalid Codes -----
D0
REMARKS
Invalid Command Codes
(NoOp - FDC goes into
Standby State)
ST0 = 80H
------- ST0 -------
D7
LOCK
0
D6
0
0
LOCK
DATA BUS
D5
D4
D3
0
1
0
0
LOCK
0
D2
1
0
D1
0
0
D0
0
0
REMARKS
Command Codes
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).
63
FDC DATA TRANSFER COMMANDS
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 will be
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.
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
TABLE 35 - FDC SECTOR SIZES
N
SECTOR SIZE
128 bytes
00
256 bytes
01
512 bytes
02
1024 bytes
03
...
..
16 Kbytes
07
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.
N determines the number of bytes per sector
(see TABLE 35 above). 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.
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 "MultiSector Read Operation". Upon receipt of TC, 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.
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.
64
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.
Ifa CRC error occurs in the ID or data field, the
FDC sets 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.
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.
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.
TABLE 40 - VERIFY COMMAND RESULT
PHASE TABLE describes the effect of the SK
bit on the Read Data command execution and
results. Except where noted in TABLE 36, the C
or R value of the sector address is automatically
incremented (see TABLE 42).
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
MT
0
1
0
1
0
1
SK BIT
VALUE
0
1
N
1
1
2
2
3
3
TABLE 36 - EFFECTS OF MT AND N BITS
MAXIMUM TRANSFER
FINAL SECTOR READ
CAPACITY
FROM DISK
256 x 26 = 6,656
26 at side 0 or 1
256 x 52 = 13,312
26 at side 1
512 x 15 = 7,680
15 at side 0 or 1
512 x 30 = 15,360
15 at side 1
1024 x 8 = 8,192
8 at side 0 or 1
1024 x 16 = 16,384
16 at side 1
TABLE 37 - SKIP BIT VS READ DATA COMMAND
DATA ADDRESS
MARK TYPE
ENCOUNTERED
RESULTS
SECTOR CM BIT OF
DESCRIPTION OF
READ?
ST2 SET?
RESULTS
Normal Data
Yes
No
Normal termination
Deleted Data
No
Yes
Normal termination.
Sector not read
("skipped")
65
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 41 describes the effect of the SK bit on
the Read Deleted Data command execution and
results. Except where noted in TABLE 41, the C
or R value of the sector address is automatically
incremented (seeTABLE 42).
TABLE 38 - SKIP BIT VS. READ DELETED DATA COMMAND
DATA ADDRESS
SK BIT
MARK TYPE
VALUE
ENCOUNTERED
RESULTS
SECTOR CM BIT OF
DESCRIPTION
READ?
ST2 SET?
OF RESULTS
0
Normal Data
Yes
Yes
Address not
incremented.
Next sector not
searched for
0
Deleted Data
Yes
No
Normal
termination
1
Normal Data
No
Yes
Normal
termination.
Sector not read
("skipped")
1
Deleted Data
Yes
No
Normal
termination
66
READ A TRACK
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 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 is
MT
HEAD
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 IDX 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.
TABLE 39 - RESULT PHASE TABLE
FINAL SECTOR
TRANSFERRED TO
HOST
ID INFORMATION AT RESULT PHASE
C
H
R
N
Less than EOT
NC
NC
R+1
NC
0
0
Equal to EOT
Less than EOT
C+1
NC
NC
NC
01
R+1
NC
NC
Equal to EOT
Less than EOT
C+1
NC
NC
NC
01
R+1
NC
NC
Equal to EOT
Less than EOT
NC
NC
LSB
NC
01
R+1
NC
NC
C+1
LSB
01
NC
1
0
1
1
Equal to EOT
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.
67
WRITE DATA
Transfer Capacity
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.
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.
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:
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, TC
(pin 94) 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 sector to be checked. If EC is set to "0",
DTL/SC should be programmed to 0FFH. Refer
to TABLE 42 and TABLE 43 for information
concerning the values of MT and EC versus SC
and EOT value.
68
Definitions:
# Sectors Per Side = Number of formatted sectors per each side of the disk.
# Sectors Remaining = Number of formatted sectors left which can be read, including side 1 of the
disk if MT is set to "1".
MT
0
0
0
0
1
1
1
1
TABLE 40 - VERIFY COMMAND RESULT PHASE TABLE
EC
SC/EOT VALUE
TERMINATION RESULT
0
SC = DTL
Success Termination
Result Phase Valid
EOT ≤ # Sectors Per Side
0
SC = DTL
Unsuccessful Termination
EOT > # Sectors Per Side
Result Phase Invalid
1
Successful Termination
SC ≤ # Sectors Remaining AND
Result Phase Valid
EOT ≤ # Sectors Per Side
1
SC > # Sectors Remaining OR
Unsuccessful Termination
EOT > # Sectors Per Side
Result Phase Invalid
0
SC = DTL
Successful Termination
Result Phase Valid
EOT ≤ # Sectors Per Side
0
SC = DTL
Unsuccessful Termination
EOT > # Sectors Per Side
Result Phase Invalid
1
Successful Termination
SC ≤ # Sectors Remaining AND
Result Phase Valid
EOT ≤ # Sectors Per Side
1
SC > # Sectors Remaining OR
Unsuccessful Termination
EOT > # Sectors Per Side
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.
FORMAT A TRACK
The Format command allows an entire track to
be formatted. After a pulse from the IDX 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).
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 IDX pin again and it terminates the
command.
69
and the number of sectors on each track.
Actual values can vary due to drive electronics.
TABLE 45 contains typical values for gap fields
which are dependent upon the size of the sector
TABLE 41 - DISKETTE FORMAT FIELDS
SYSTEM 34 (DOUBLE DENSITY) FORMAT
GAP4a
80x
4E
SYNC
12x
00
IAM
GAP1 SYNC
12x
50x
00
4E
3x FC
C2
IDAM
C
Y
L
H
D
S
E
C
N
O
C
R
C
GAP2 SYNC
12x
22x
00
4E
3x FE
A1
DATA
AM
DATA
C
R
C
GAP3 GAP 4b
DATA
C
R
C
GAP3 GAP 4b
DATA
C
R
C
GAP3 GAP 4b
3x FB
A1 F8
SYSTEM 3740 (SINGLE DENSITY) FORMAT
GAP4a
40x
FF
SYNC
6x
00
IAM
GAP1 SYNC
6x
26x
00
FF
FC
IDAM
C
Y
L
H
D
S
E
C
N
O
C
R
C
GAP2 SYNC
6x
11x
00
FF
FE
DATA
AM
FB or
F8
PERPENDICULAR FORMAT
GAP4a
80x
4E
SYNC
12x
00
IAM
3x FC
C2
GAP1 SYNC
12x
50x
00
4E
IDAM
C
Y
L
H
D
S
E
C
3x FE
A1
N
O
C
R
C
GAP2 SYNC
12x
41x
00
4E
DATA
AM
3x FB
A1 F8
70
5.25"
Drives
3.5"
Drives
TABLE 42 - TYPICAL VALUES FOR FORMATTING
FORMAT SECTOR SIZE
N
SC
GPL1
07
12
00
128
10
10
00
128
18
08
02
512
46
04
03
1024
FM
C8
02
04
2048
C8
01
05
4096
0A
12
01
256
20
10
01
256
2A
09
02
512*
80
04
03
1024
MFM
C8
02
04
2048
C8
01
05
4096
07
0F
0
128
0F
09
1
FM
256
1B
05
2
512
0E
0F
1
256
1B
09
2
MFM
512**
35
05
3
1024
GPL2
09
19
30
87
FF
FF
0C
32
50
F0
FF
FF
1B
2A
3A
36
54
74
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.
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.
FDC 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.
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.
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
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
71
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.
and checks the status of the nTR0 pin from the
FDD. As long as the nTR0 pin is low, the DIR
pin remains 0 and step pulses are issued.
When the nTR0 pin goes high, the SE bit in
Status Register 0 is set to "1" and the command
is terminated. If the nTR0 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 more than one Recalibrate command to
return the head back to physical Track 0.
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. 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.
Seek command - Step to the proper track
Sense Interrupt Status command - Terminate
the Seek command
Read ID - Verify head is on proper track
Issue Read/Write command.
Upon power up, the software must issue a
Recalibrate command to properly initialize all
drives and the controller.
The Seek command does not have a result
phase. Therefore, it is highly recommended that
the Sense Interrupt Status command be 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.
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:
72
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 INTERRUPT STATUS
An interrupt signal on the FDC’s IRQ pin is
generated by the FDC for one of the following
reasons:
Upon entering the Result Phase of:
Read Data command
Read A Track command
Read ID command
Read Deleted Data command
Write Data command
Format A Track command
Write Deleted Data command
Verify command
End of Seek, Relative Seek, or Recalibrate
command
SENSE DRIVE STATUS
Sense Drive Status obtains drive status
information. It has no execution phase and
goes directly to the result phase from the
command phase. Status Register 3 contains
the drive status information.
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.
TABLE 43
SE
0
1
1
SPECIFY
The Specify command sets the initial values for
each of the three internal times. The HUT
(Head 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 44 Drive Control Delays (ms). The values are the
same for MFM and FM.
- INTERRUPT IDENTIFICATION
IC
INTERRUPT DUE TO
11
Polling
00
Normal termination of
Seek or Recalibrate
01
command
Abnormal termination of
Seek or Recalibrate
command
The Seek, Relative Seek, and Recalibrate
commands have no result phase. The Sense
73
0
1
..
E
F
2M
64
4
..
56
60
TABLE 44 - DRIVE CONTROL DELAYS(MS)
HUT
SRT
1M
500K 300K 250K
2M
1M
500K 300K
26.7
16
8
4
512
426
256
128
25
15
7.5
3.75
32
26.7
16
8
..
..
..
..
..
..
..
..
3.33
2
1
0.5
448
373
224
112
1.67
1
0.5
0.25
480
400
240
120
250K
32
30
..
4
2
HLT
00
01
02
..
7F
7F
2M
64
0.5
1
..
63
63.5
1M
128
1
2
..
126
127
500K
256
2
4
..
252
254
300K
426
3.3
6.7
..
420
423
250K
512
4
8
.
504
508
FDC will perform a Seek operation before
executing a read or write command. Defaults to
no implied seek.
The choice of DMA or non-DMA operations is
made by the ND bit. When this bit is "1", the
non-DMA mode is selected, and when ND is "0",
the DMA mode is selected. In DMA mode, data
transfers are signalled by the FDC’s DRQ pin.
Non-DMA mode uses the RQM bit and the
FDC’s IRQ pin to signal data transfers.
EFIFO - A "1" disables the FIFO (default). This
means data transfers are asked for on a byteby-byte basis. Defaults to "1", FIFO disabled.
The threshold defaults to "1".
CONFIGURE
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.
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.
FIFOTHR - The FIFO threshold in the execution
phase of read or write commands. This is
programmable from 1 to 16 bytes. Defaults to
one byte. A "00" selects one byte; "0F" selects
16 bytes.
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
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
74
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).
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.
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.
RELATIVE SEEK
The command is coded the same as for Seek,
except for the MSB of the first byte and the DIR
bit.
DIR
0
1
DIR
ACTION
Step Head Out
Step Head In
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. 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.
To return to the standard floppy range (0-255) of
tracks, a Relative Seek should be issued to
cross the track 255 boundary.
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.
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
75
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.
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
54 describes the effects of the WGATE and
GAP bits for the Perpendicular Mode command.
Upon a reset, the FDC will default to the
conventional mode (WGATE = 0, GAP = 0).
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
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.
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 pre-erase 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 pre-erase 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
field illustrates the change in the Gap2 field size
for the perpendicular format.
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 precompensation 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:
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,
76
1.
2.
3.
The GAP2 written to a perpendicular drive
during a write operation will depend upon
the programmed data rate.
The write pre-compensation given to a
perpendicular mode drive will be 0ns.
For D0-D3 programmed to "0" for
conventional mode drives any data written
will be at the currently programmed write
pre-compensation.
Software and hardware
following effect on the
MODE COMMAND:
1.
2.
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.
WGATE
0
0
1
1
resets have the
PERPENDICULAR
"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.
"Hardware" resets will clear all bits (GAP,
WGATE and D0-D3) to "0", i.e all
conventional mode.
TABLE 45 - EFFECTS OF WGATE AND GAP BITS
LENGTH OF GAP2
PORTION OF GAP 2 WRITTEN
GAP
MODE
FORMAT FIELD
BY WRITE DATA OPERATION
22 Bytes
0 Bytes
0
Conventional
22 Bytes
19 Bytes
1
Perpendicular
(500 Kbps)
22 Bytes
0 Bytes
Reserved
0
(Conventional)
41 Bytes
38 Bytes
Perpendicular
1
(1 Mbps)
77
LOCK
COMPATIBILITY
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
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 a LOCK command.
This byte reflects the value of the LOCK bit set
by the command byte.
The FDC37N972 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,
FDC 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.
PARALLEL PORT FDC
Refer to the Parallel Port Section for details.
HOT SWAPPABLE FDD CAPABILITY
The FDC output pins will tri-state whenever the
FDC Logical Device is powered-down or not
activated. In addition setting bit 7 of the FDD
Mode Configuration register (LD0_CRF0) will tristate the FDC output pins. Bit 7 only affects the
standard FDC interface, it has no effect on the
Parallel Port Floppy Interface.
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 contains the data from
these two commands.
The following table illustrates the state of the
FDC and Parallel Port FDC pins for
combinations of 1) the FDC Output Control bit;
2) the Activate bit; and 3) the FDC powerdown
state.
TABLE - 46 FDC HOT SWAPPING STATE OF THE FDC AND PARALLEL PORT FDC PINS
FDD MODE
ACTIVATE
FDC IN POWER
PARALLEL PORT
REGISTER, BIT[7]
BIT
DOWN
FDC PINS
FDC PINS
X
0
X
Hi-Z
Hi-Z
X
1
Y
Hi-Z
Hi-Z
0
1
N
Active
Active
1
1
N
Hi-Z
Active
78
When the FDC is disabled, powered down or inactive the FDC output pins will tri-state allowing ‘hotswapping’ of the Floppy Disk Drive. The following table lists the five control/configuration
mechanisms that power down or deactivate the FDC logical device.
TABLE 47 - FDC HOT SWAPPING MECHANISMS
MECHANISM
FDC OUTPUT PINS STATE
TriTri-State
State
Tri-State
Tri-State
(Note 1)
0
X
1
1
FDC Logical Dev Activate bit
=0: FDC LD deactivated
=1: FDC LD activated
Refer to the description of the
FDC Logical Device
Configuration register 0x30 in
the Configuration section of the
FDC37N972 Specification.
VALID
VALID
INVALID
FDC Logical Dev Base Address X
BASE
BASE
BASE
0x100 < Base < 0x0FF8:
ADDRESS
ADDRESS ADDRESS
FDC LD Base Address Valid.
0xFFF < Base < 0x100:
FDC LD Base Address Invalid.
Refer to the description of the
FDC Base I/O Address
registers in the Configuration
section of the FDC37N972
Specification.
GCR 0x22 bit-0 (FDC Power)
=0: Power Off
=1: Power On
Refer to the description of the
Global Config Register 0x22 in
the Configuration section of the
FDC37N972 Specification.
DSR, bit-6 (pwr down)
=0: Normal Run
=1: Manual Pwr down
Refer to the description of the
DSR in the FDC section of any
SMSC Super or Ultra I/O data
sheet.
Tri-State
(Note 2)
1
VALID
BASE
ADDRESS
X
X
0
1
1
X
X
X
1
0
79
MECHANISM
GCR 0x23 bit-0 (FDC auto
power management)
=1: Pwr Mngnt on
=0: Pwr Mngnt off
Refer to the description of the
Global Config Register 0x23 in
the Configuration section of the
FDC37N972 Specification.
X
FDC OUTPUT PINS STATE
X
X
X
Note:
1
FDC Output pins = nWDATA, DRVDEN0, nHDSELm nWGATE, nDIR, nSTEP, nDS1, nDS0,
nMTR0, nMTR1.
Note1: DSR pwr down overrides auto pwr down.
Note 2: Outputs tri-state only if all of the required auto power down conditions are met, otherwise
outputs are active. See Auto Power Management Section of the FDC37C93x Data Sheet.
80
FDC FORCE WRITE PROTECT
The FDC37N972 includes a Force Write Protect
function for the floppy disk controller. Force
Write Protect asserts the internal nWRTPRT
input to the controller (TABLE 48 and FIGURE
6).
nWRTPRT
nWRTPRT
FDC
nDS0
nDS0
nDS1
nDS1
FORCE
WRTPRT
FIGURE 6 - FORCE WRITE PROTECT FUNCTION
NOTE: This figure is for illustration purposes only and is not intended to suggest specific
implementation details.
The FORCE WRTPRT bit is D0 in the Disable
register (see Section Disable REGISTER on
page 166). The FORCE WRTPRT bit is activehigh and set to “0” by default. The Force Write
nWRTPRT
(FDD PIN)
0
FORCE
WRTPRT
X
1
1
1
1
1
0
1
1
Protect function applies to the nWRTPRT input
from the FDD Interface as well as the
nWRTPRT input from the Parallel Port FDC.
TABLE 48 - FORCE WRTPRT FUNCTION
nWRTPRT
DESCRIPTION
nDS0 nDS1
(FDC)
X
X
0
Active nWRTPRT pin function is
always enabled.
1
1
1
nWRTPRT function inactive.
1
1
1
0
1
0
Enabled FORCE WRTPRT function
overrides an inactive nWRTPRT pin.
1
0
0
81
ACPI EMBEDDED CONTROLLER
Overview
ACPI defines a standard hardware and software
communications interface between the OS and
an embedded controller. This interface allows
the OS to support a standard driver that can
directly communicate with the embedded
controller, allowing other drivers within the
system to communicate with and use the EC
resources; for example, Smart Battery and AML
code.
(wake)
(run-time)
(run-time)
(wake & run-time)
Ring
Thermal
Dock
Battery
The FDC37N972 contains an Embedded
Controller Interface (ECI) to handle SCI Wake
and Run-time event processing (FIGURE 8).
The ECI is configured in Logical Device Number
8 in the FDC37N972 configuration register map
and presents an 8042-style interface to the ISA
host.
Run-Time
EC
(Arbitrates Wake and
Run-time SCI Events)
GPEx
Wake
GPEy
CHIPSET
FIGURE 7 – EMBEDDED CONTROL (EC) ILLUSTRATION
EC Input
Buffer
Data Read
EC Output
Buffer
Status Read
EC Status
Register
SCI
Interface
Code
Main
Firmware
(8051)
I/O
Wake
Data Write
Run-Time
ACPI Interface
Command Write
SCI Interface
FIGURE 8 – GENERIC ACPI EC BLOCK DIAGRAM
82
ECI CONFIGURATION REGISTERS
Register 0x60 is the ECI Primary Base Address
High Byte, register 0x61 is the ECI Primary
Base Address Low Byte.
The three device configuration registers in LDN8
provide ECI activation control and the base
address for the ECI run-time registers (TABLE
49). Register 0x30 is the Activate register. The
Activate register qualifies address decoding for
the ECI; e.g., if the Activate bit D0 in the
Activate register is “0”, ECI addresses will not
be decoded; if the Activate bit is “1”, ECI
addresses will be decoded depending on the
values programmed in the ECI Primary Base
Address registers. Registers 0x60 and 0x61 are
the ECI Primary Base Address registers.
NOTE: Bits D0 and D2 in the ECI Primary Base
Address Low Byte must be “0”. For example,
0x62 is a valid ECI Base Address, while 0x66 is
not a valid ECI Base Address. The valid ECI
Primary Base Address range is 0x0000 –
0x0FFA.
TABLE 49 - ECI CONFIGURATION REGISTERS (LDN8)
INDEX
TYPE
HARD
RESET
SOFT
RESET
VCC2
POR
VCC1&
VCC0
POR
D7
0x30
R/W
0x00
0x00
0x00
-
0x60
R/W
0x00
0x00
0x00
-
0x61
R/W
0x62
0x62
0x62
-
D6
D5
DESCRIPTION
D4
D3
D2
D1
D0
ACTIVATE
Activate
Reserved
ECI PRIMARY BASE ADDRESS HIGH
BYTE
ECI PRIMARY BASE ADDRESS LOW
BYTE1
A7
A6
A5
A4
A3
“0”
A1
“0”
NOTE1 Bits D0 and D2 of the ECI Base Address Low Byte must be “0”.
An ACPI-compliant ECI contains three registers:
EC_COMMAND, EC_STATUS, and EC_DATA.
The ECI registers occupy two addresses in the
Host I/O space (TABLE 50).
8051. The CMD bit in the EC_STATUS register
is used by the 8051 to discriminate commands
from data written by the host to the ECI. CMD
is controlled by hardware: host writes to the
EC_DATA register set CMD = “0”; host writes to
the EC_COMMAND register set CMD = “1”.
The EC_DATA and EC_COMMAND registers
appear as a single 8-bit data register in the
Descriptions of these registers follow in the
sections below.
ECI RUNTIME REGISTERS
83
TABLE 50 - ECI RUN-TIME REGISTERS
ISA HOST
INTERFACE
REGISTER
NAME
EC_DATA
EC_COMMAND
EC_STATUS
HOST INDEX
ECI Base
Address
ECI Base
Address + 4
ECI Base
Address + 4
HOST
TYPE
R/W
8051 INTERFACE
8051
INDEX
8051
1
CMD
(7F00+)
TYPE
0
0x53
R/W
POWER
PLANE
VCC1
VCC1
POR
-
VCC2
POR
-
W
1
0x53
R
VCC1
-
-
R
-
0x54
R/W
VCC1
0x00
-
NOTE1 CMD is bit D3 in the EC_STATUS register.
the EC_STATUS register is read-only. To the
8051, some bits in the EC_STATUS register are
read-only (TABLE 51). These bits are controlled
by hardware. The 8051 software controlled bits
in the EC_STATUS register are read/write.
EC_STATUS REGISTER
The EC_STATUS register indicates the state of
the Embedded Controller Interface. To the host,
HOST TYPE
8051 TYPE
NAME
D7
R
R/W
UD1
TABLE 51 – EC_STATUS REGISTER
D6
D5
D4
D3
R
R
R
R
R/W
R/W
R/W
R
SMI_EVT SCI_EVT BURST
CMD
D2
R
R/W
UD1
D1
R
R
IBF
D0
R
R
OBF
NOTE1 The UD bits are User-Defined. UD bits are maintained by 8051 software, only.
The EC_OBF interrupt is routed to bit 3 in the
INT0 SRC register (FIGURE 19). The EC_OBF
interrupt mask is bit 4 in the INT1 Mask register.
OBF Bit – D0
The Output Buffer Full (OBF) flag is set when
the 8051 writes a byte of data into the data port
(EC_DATA), but the host has not yet read it.
Once the host reads the status byte and sees
the OBF flag set, the host reads the data port to
get the byte of data that the 8051 has written.
IBF Bit – D1
The Input Buffer Full (IBF) flag is set when the
host has written a byte of data to the command
or data port, but the 8051 has not yet read it.
Once the host reads the data, the OBF flag is
automatically cleared by hardware. An EC_OBF
interrupt signals the 8051 that the data has been
read by the host and the 8051 is free to write
more data to the EC_DATA register.
An EC_IBF interrupt signals the 8051 that there
is data available. Once the 8051 reads the
status byte and sees the IBF flag set, the 8051
reads the data port to get the byte of data that
the host has written.
The EC_OBF interrupt is generated whenever
the OBF bit in the EC_STATUS register is reset.
Once the 8051 reads the data, the IBF flag is
automatically cleared by hardware. The 8051
must then generate a software interrupt (SCI) to
84
The SCI_EVT bit is an 8051-maintained
software flag that is set when the embedded
controller has detected an internal event that
requires operating system attention. The EC
sets SCI_EVT before generating an SCI to the
OS.
alert the host that the data has been read and
that the host is free to write more data to the
ECI as needed.
An EC_IBF interrupt is generated whenever the
IBF bit in the EC_STATUS register is set. The
EC_IBF interrupt is routed to bit 4 in the INT0
SRC register. The EC_IBF interrupt mask is bit
5 in the INT1 Mask register.
CMD Bit – D3
The CMD bit is “1” when the EC_DATA register
contains a command byte; the CMD bit is “0”
when the EC_DATA register contains a data
byte.
SMI_EVT Bit – D6
The SMI Event flag SMI_EVT is “1” when an
SMI event is pending; i.e., the 8051 is
requesting an SMI query; SMI_EVT is “0” when
no SMI events are pending.
The SMI_EVT bit is an 8051-maintained
software flag that is set when the embedded
controller has detected an internal event that
requires system management interrupt handler
attention.
The EC sets SMI_EVT before
generating an SMI.
The CMD bit is controlled by hardware: host
writes to the EC_DATA register set CMD = “0”;
host writes to the EC_COMMAND register set
CMD = “1”.
The CMD bit allows the embedded controller to
differentiate the start of a command sequence
from a data byte write operation.
BURST Bit – D4
The BURST bit is “1” when the EC is in Burst
Mode for polled command processing; the
BURST bit is “0” when the EC is in Normal
Mode for interrupt-driven command processing.
EC_COMMAND Register
The EC_COMMAND register is a write-only
register that allows the host to issue commands
to the embedded controller.
Writes to the EC_COMMAND register are
latched in the 8051 data register and the input
buffer full flag is set in the EC_STATUS register.
Writes to the EC_COMMAND register also
cause the CMD bit to be set to “1” in the
EC_STATUS register.
The BURST bit is an 8051-maintained software
flag that indicates the embedded controller has
received the Burst Enable command from the
host, has halted normal processing, and is
waiting for a series of commands to be sent
from the host. Burst Mode allows the OS or
system management handler to quickly read
and write several bytes of data at a time without
the overhead of SCIs between commands.
EC_DATA Register
The EC_DATA register is a read/write register
that allows the host to issue command
arguments to the embedded controller and
allows the OS to read data returned by the
embedded controller.
SCI_EVT Bit – D5
The SCI Event flag SCI_EVT is “1” when an SCI
event is pending; i.e., the 8051 is requesting an
SCI query; SCI_EVT is “0” when no SCI events
are pending.
Host writes to the EC_DATA register are latched
in the 8051 data register and the input buffer full
flag is set in the EC_STATUS register. Host
writes to the EC_DATA register also cause the
85
generator that is capable of dividing the input
clock or crystal by a number from 1 to 65535.
The UART is 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
UART. The interrupt from a UART is enabled by
programming OUT2 of the UART to a logic "1".
OUT2 being a logic "0" disables that UART's
interrupt.
CMD bit to be reset to “0” in the EC_STATUS
register.
Host reads from the EC_DATA register return
data from the 8051 data register and clear the
output buffer full flag in the EC_STATUS
register.
SERIAL PORT (UART)
The FDC37N972 incorporates one full function
UART.
The UART is compatible with the
NS16450, the 16450 ACE registers and the
NSC16550A. The UART performs serial-toparallel 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
UART contains a programmable baud rate
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 FDC37N972 contains a
serial port, which contains a register set as
described below.
86
DLAB*
0
0
0
X
X
X
X
X
X
X
1
1
TABLE 52 - ADDRESSING THE SERIAL PORT
A2
A1
A0
REGISTER NAME
0
0
0
Receive Buffer (read)
0
0
0
Transmit Buffer (write)
0
0
1
Interrupt Enable (read/write)
0
1
0
Interrupt Identification (read)
0
1
0
FIFO Control (write)
0
1
1
Line Control (read/write)
1
0
0
Modem Control (read/write)
1
0
1
Line Status (read/write)
1
1
0
Modem Status (read/write)
1
1
1
Scratchpad (read/write)
0
0
0
Divisor LSB (read/write)
0
0
1
Divisor MSB (read/write)
Note: DLAB is Bit 7 of the Line Control Register
The following section describes the operation of the registers.
the Transmit Buffer when the transmission of
the previous byte is complete.
RECEIVE BUFFER REGISTER (RB)
Address Offset = 0H, DLAB = 0, READ ONLY
INTERRUPT ENABLE REGISTER (IER)
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.
Address Offset = 1H, DLAB = 0, READ/WRITE
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
FDC37N972 .
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.
TRANSMIT BUFFER REGISTER (TB)
Address Offset = 0H, DLAB = 0, WRITE ONLY
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
87
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.
BITS 4 - 7
These bits are always logic "0".
FIFO CONTROL REGISTER (FCR)
Address Offset = 2H, DLAB = X, WRITE
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.
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.
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 self-clearing.
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 self-clearing.
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.
88
BITS 4 and 5
Reserved
BITS 6 and 7
These bits are used to set the trigger level for the RCVR FIFO interrupt.
BIT 7
0
0
1
1
BIT 6
0
1
0
1
RCVR FIFO
TRIGGER LEVEL (BYTES)
1
4
8
14
INTERRUPT IDENTIFICATION REGISTER (IIR)
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
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.
89
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.
FIFO
MODE
ONLY
BIT 3
0
0
0
1
0
0
TABLE 53 - INTERRUPT CONTROL TABLE
INTERRUPT
IDENTIFICATION
REGISTER
INTERRUPT SET AND RESET FUNCTIONS
PRIORITY
INTERRUPT
INTERRUPT
INTERRUPT
BIT 2 BIT 1 BIT 0
LEVEL
TYPE
SOURCE
RESET CONTROL
0
0
1
None
None
Reading the Line
1
1
0
Highest
Receiver Line
Overrun Error,
Status Register
Status
Parity Error,
Framing Error
or Break
Interrupt
1
0
0
Second
Received Data
Receiver Data
Read Receiver
Available
Available
Buffer or the FIFO
drops below the
trigger level.
1
0
0
Second
Character
No Characters
Reading the
Timeout
Have Been
Receiver Buffer
Indication
Removed From Register
or Input to the
RCVR FIFO
during the last 4
Char times and
there is at least
1 char in it
during this time
0
1
0
Third
Transmitter
Transmitter
Reading the IIR
Holding Register Holding Register Register (if Source
Empty
Empty
of Interrupt) or
Writing the
Transmitter
Holding Register
0
0
0
Fourth
MODEM Status Clear to Send or Reading the
Data Set Ready MODEM Status
or Ring Indicator Register
or Data Carrier
Detect
90
LINE CONTROL REGISTER (LCR)
Address Offset = 3H, DLAB = 0, READ/WRITE
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.
encoding of bits 0 and 1 is as follows:
BIT 1
0
0
1
1
BIT 0
0
1
0
1
The
WORD LENGTH
5 Bits
6 Bits
7 Bits
8 Bits
The Start, Stop and Parity bits are not included in the word length.
BIT 2
This bit specifies the number of stop bits in each transmitted or received serial character.
following table summarizes the information.
BIT 2
0
1
1
1
1
WORD LENGTH
-5 bits
6 bits
7 bits
8 bits
The
NUMBER OF
STOP BITS
1
1.5
2
2
2
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 bit 3 is a logic "1" and bit 5 is a logic "1", the parity bit is transmitted and then
detected by the receiver in the opposite state indicated by bit 4.
91
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.
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.
92
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 - 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'.
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
93
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.
94
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.
SCRATCHPAD REGISTER (SCR)
Address Offset =7H, DLAB =X, READ/WRITE
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.
95
PROGRAMMABLE BAUD RATE GENERATOR
(AND DIVISOR LATCHES DLH, DLL)
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. The input clock to
the BRG is the 24 MHz crystal divided by 13,
giving a 1.8462 MHz clock.
The Serial Port contains a programmable Baud
Rate Generator that is capable of taking any
clock input (DC to 3 MHz) and dividing it by any
divisor from 1 to 65535. 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
TABLE 54 shows the baud rates possible with a 1.8462 MHz crystal.
TABLE 54 - UART BAUD RATES
DESIRED
BAUD RATE
50
75
110
134.5
150
300
600
1200
1800
2000
2400
3600
4800
7200
9600
19200
38400
57600
115200
230400
460800
DIVISOR USED TO
GENERATE 16X CLOCK
2304
1536
1047
857
768
384
192
96
64
58
48
32
24
16
12
6
3
2
1
32770
32769
PERCENT ERROR DIFFERENCE BETWEEN
1
DESIRED AND ACTUAL
0.001
0.004
0.005
0.030
0.16
0.16
0.16
0.16
HIGH SPEED
2
BIT
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
1
1
Note1: The percentage error for all baud rates, except where indicated otherwise, is 0.2%.
Note2: The High Speed bit is located in the Device Configuration Space.
Using 1.8462 MHz Clock for <=38.4;
Using 1.843 MHz Clock for 115.2k;
Using 3.6864 MHz Clock for 230.4k;
Using 7.3728 MHz Clock for 460.8k
96
C. When a timeout interrupt has occurred it is
cleared and the timer reset when the CPU reads
one character from the RCVR FIFO.
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.
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.
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 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.
When RCVR FIFO and receiver interrupts are
enabled, RCVR FIFO timeout interrupts occur
as follows:
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.
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.
FIFO POLLED MODE OPERATION
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 for the FIFO Polled Mode are as
follows:
Bit 0=1 as long as there is one byte in the RCVR
FIFO.
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).
97
There is no trigger level reached or timeout
condition indicated in the FIFO Polled Mode,
however, the RCVR and XMIT FIFOs are still
fully capable of holding characters.
Bits 1 to 4 specify which error(s) have occurred.
Character error status is handled the same
way 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.
EFFECT OF THE RESET ON REGISTER FILE
The Reset Function Table (TABLE 55) details
the effect of Vcc2 POR or nRESET_OUT on
each of the registers of the Serial Port.
TABLE 55 - RESET FUNCTION TABLE
REGISTER/SIGNAL
RESET CONTROL
RESET STATE
Interrupt Enable Register
RESET
All bits low
Interrupt Identification Reg.
RESET
Bit 0 is high; Bits 1 - 7 low
FIFO Control
RESET
All bits low
Line Control Reg.
RESET
All bits low
MODEM Control Reg.
RESET
All bits low
Line Status Reg.
RESET
All bits low except 5, 6 high
MODEM Status Reg.
RESET
Bits 0 - 3 low; Bits 4 - 7 input
TXD1, TXD2
RESET
High
INTRPT (RCVR errs)
RESET/Read LSR
Low
INTRPT (RCVR Data Ready) RESET/Read RBR
Low
INTRPT (THRE)
RESET/ReadIIR/Write THR
Low
OUT2B
RESET
High
RTSB
RESET
High
DTRB
RESET
High
OUT1B
RESET
High
RCVR FIFO
RESET/
All Bits Low
FCR1*FCR0/_FCR0
XMIT FIFO
RESET/
All Bits Low
FCR1*FCR0/_FCR0
98
TABLE 56 - REGISTER SUMMARY FOR AN INDIVIDUAL UART CHANNEL
REGISTER
REGISTER
ADDRESS*
REGISTER NAME
SYMBOL
BIT 0
BIT 1
ADDR = 0
Receive Buffer Register (Read RBR
Data Bit 0 (Note 1) Data Bit 1
DLAB = 0
Only)
ADDR = 0
Transmitter Holding Register
THR
Data Bit 0
Data Bit 1
DLAB = 0
(Write Only)
Enable
ADDR = 1
Interrupt Enable Register
IER
Enable Received
Transmitter
DLAB = 0
Data Available
Interrupt (ERDAI) Holding
Register
Empty
Interrupt
(ETHREI)
ADDR = 2
Interrupt Ident. Register (Read IIR
"0" if Interrupt
Interrupt ID
Only)
Pending
Bit
ADDR = 2
FIFO Control Register (Write
FCR
FIFO Enable
RCVR
Only)
FIFO Reset
ADDR = 3
Line Control Register
LCR
Word Length
Word
Select Bit 0
Length
(WLS0)
Select Bit 1
(WLS1)
ADDR = 4
MODEM Control Register
MCR
Data Terminal
Request to
Ready (DTR)
Send
(RTS)
ADDR = 5
Line Status Register
LSR
Data Ready (DR)
Overrun
Error (OE)
ADDR = 6
MODEM Status Register
MSR
Delta Clear to
Delta Data
Send (DCTS)
Set Ready
(DDSR)
ADDR = 7
Scratch Register (Note 4)
SCR
Bit 0
Bit 1
ADDR = 0
Divisor Latch (LS)
DDL
Bit 0
Bit 1
DLAB = 1
ADDR = 1
Divisor Latch (MS)
DLM
Bit 8
Bit 9
DLAB = 1
*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.
99
TABLE 56 - REGISTER SUMMARY FOR AN INDIVIDUAL UART CHANNEL (CONTINUED)
BIT 2
BIT 3
BIT 4
BIT 5
BIT 6
BIT 7
Data Bit 2
Data Bit 3
Data Bit 4
Data Bit 5
Data Bit 6
Data Bit 7
Data Bit 2
Data Bit 3
Data Bit 4
Data Bit 5
Data Bit 6
Data Bit 7
0
0
0
0
Enable
Enable
MODEM
Receiver
Line Status Status
Interrupt
Interrupt
(EMSI)
(ELSI)
FIFOs
Interrupt ID Interrupt ID 0
0
FIFOs
Enabled
Bit
Bit (Note 5)
Enabled
(Note 5)
(Note 5)
Reserved
RCVR
RCVR
XMIT FIFO DMA Mode Reserved
Trigger LSB Trigger MSB
Reset
Select
(Note 6)
Divisor
Even Parity Stick Parity Set Break
Parity
Number of
Latch
Select
Enable
Stop Bits
Access Bit
(EPS)
(PEN)
(STB)
(DLAB)
OUT1
OUT2
Loop
0
0
0
(Note 3)
(Note 3)
Parity Error Framing
Break
Transmitter Transmitter Error in
(PE)
Error (FE)
Interrupt
Holding
Empty
RCVR FIFO
(BI)
Register
(TEMT)
(Note 5)
(THRE)
(Note 2)
Trailing
Delta Data Clear to
Data Set
Ring
Data Carrier
Edge Ring
Carrier
Send (CTS) Ready
Indicator
Detect
Indicator
Detect
(DSR)
(RI)
(DCD)
(TERI)
(DDCD)
Bit 2
Bit 3
Bit 4
Bit 5
Bit 6
Bit 7
Bit 2
Bit 3
Bit 4
Bit 5
Bit 6
Bit 7
Bit 10
Bit 11
Bit 12
Bit 13
Bit 14
Bit 15
Note 3:
Note 4:
Note 5:
Note 6:
This bit no longer has a pin associated with it.
When operating in the XT mode, this register is not available.
These bits are always zero in the non-FIFO mode.
Writing a one to this bit has no effect. DMA modes are not supported in this chip.
100
UART REGISTER SUMMARY NOTES:
*DLAB is Bit 7 of the Line Control Register (ADDR = 3).
Note 1:
Note 2:
empty.
Note 3:
Note 4:
Note 5:
Note 6:
Bit 0 is the least significant bit. It is the first bit serially transmitted or received.
When operating in the XT mode, this bit will be set any time that the transmitter shift register is
This bit no longer has a pin associated with it.
When operating in the XT mode, this register is not available.
These bits are always zero in the non-FIFO mode.
Writing a one to this bit has no effect. DMA modes are not supported in this chip.
NOTES ON SERIAL PORT 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.
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 active until at least two bytes have been loaded into the FIFO,
concurrently. When the Tx FIFO empties after this condition, the Tx 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.
101
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).
INFRARED COMMUNICATIONS CONTROLLER (IRCC 2.0)
The Infrared Communications Controller is fully compliant to the IrDA Specification Version 1.1 which
includes data rates up to 4 Mbps to support IrDA-SIRA, IrDA-SIRB, IrDA-HDLC and IrDA-FIR modes.
In addition the IRCC 2.0 provides support for ASK-IR, Consumer (TV remote) IR, and RAW-IR (Host
controller has direct access to the IR bit stream from/to the transceiver module). It is important to
note that the IRCC 2.0 block is a superset of a 16C550A UART. The IRCC 2.0 includes an
Asynchronous Communications Engine (ACE) and a separate Synchronous Communications Engine
(SCE) to provide the full set of IR modes as well as the standard UART Com mode. The IRCC 2.0
block details are fully described in SMSC’s specification titled “Infrared Communications Controller”.
The information in this section of the specification will provide details on the integration of the FIR
logic block into the FDC37N972 .
The infrared interface provides a two-way wireless communications port using infrared as a
transmission medium. The IR transmission can use the standard IRTX and IRRX pins or optional
IRTX2 and IRRX2 pins. These can be selected through the configuration registers. The IRTX2 and
IRRX2 pins are alternate function pins.
IrDA-SIR allows serial communication at baud rates up to 115K Baud. Each word is sent serially
beginning with a “0” value start bit. A “0” is signaled by sending a single IR pulse at the beginning of
the serial bit time. A “1” 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 Amplitude Shift Keyed IR
allows serial communication at baud rates up to 19.2K Baud. Each word is sent serially beginning
with a “0” value start bit. A “0” is signaled by sending a 500 kHz waveform for the duration of the
serial bit time. A “1” is signaled by sending no transmission 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 time-out 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 time-out 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 timeout, the timer is restarted after the new character is received. The time-out is four character times. A
character time is defined as 10 bit times regardless of the actual word length being used.
102
IrCC 2.0 Block
RAW
TV
GPIO9_IN
GPIO9_OUT
IRTX2
COM IRRX2
ASK OUT IR
MUX
IrDA
1
0
GPIO8_OUT
1
MISC7
IRTX
IRRX
“FRx”
COM
G.P. Data
FAST_BIT
IR Data Reg bit-0
0
IRTX
1
0
IR Data Reg bit-1
1
0
GPIO8
MISC2
0
1
TX
AUX RX
FIR
GPIO9
0
1
GPIO6_OUT
0
IRRX
GPIO6
1
FRX_SEL
GPIO10_OUT
00
“IR_MODE”
GPIO10
01
11
FAST
HP_MODE
MISC[14:13]
MISC[16:15]
FIGURE 9 - INTEGRATION OF IRCC 2.0 LOGIC INTO THE FDC37N972
HP_MODE = (MISC[14:13] == [1:0]) | (MISC[16:15] == [1:0])
FRX_SEL = (MISC[14:13] == [1:0])
OVERVIEW
1.
2.
The FDC37N972 requires additional configuration register support to accommodate the IrCC 2.0
core.
NOTE: The IrCC 2.0 is configured in Logical Device Number 5. LD5 is still technically considered
the Serial Port 2 block, even though UART2 is not included in the FDC37N97.
103
IRRX/IRTX PIN ENABLE
When MISC2=0 the IRRX and IRTX pins are enabled as when IrCC 2.0 (LD5) is activated or enabled
and the IRCC 2.0 Output Mux is set to use the IR Port, otherwise the IRTX pin is tri-stated. When
MISC2=1, the IRRX and IRTX pins are always enabled as they can be bit banged through the IR Data
Register, bits 1 and 0 respectively.
Therefore, if the IR interface is on IRRX (pin 21) and IRTX (pin 20), then MISC2 allows the IR interface
to be switched between the IRCC 2.0 block and the IR Data Register. The IR Data Register is only
available from the host, and is located at index register 98. This register is available through the
Mailbox Register Interface.
IR REGISTERS - LOGICAL DEVICE 5
CONFIGURATION REGISTERS OVERVIEW
In order to support the Infrared Communications Controller ten configuration registers are included in
Logical Device 5. Refer to the Configuration section of this specification for details.
BASE I/O ADDRESSES
550 UART
TABLE 57 - ASYNCHRONOUS COMMUNICATIONS ENGINE (UART) REGISTER
REGISTER
FIXED REGISTER BASE
INDEX
BASE I/O RANGE
OFFSETS
0x60, 0x61
[0x100:0x0FF8]
+0 : RB/TB  LSB div
+1 : IER  MSB div
ON 8 BYTE BOUNDARIES
+2 : IIR/FCR
+3 : LCR
+4 : MCR
+5 : LSR
+6 : MSR
+7 : SCR
Register 0x60 stores the MSB and 0x61 the LSB of the 550-UART’s 16 bit Base Address.
104
FAST IR/SCE
TABLE 58 - SYNCHRONOUS COMMUNICATIONS ENGINE (SCE) REGISTERS
REGISTER
FIXED REGISTER BASE
INDEX
BASE I/O RANGE
OFFSETS
0x62, 0x63
[0x100:0x0FF8]
+0 : Register Block, address 0
+1 : Register Block, address 1
+2 : Register Block, address 2
ON 8 BYTE BOUNDARIES
+3 : Register Block, address 3
+4 : Register Block, address 4
+5 : Register Block, address 5
+6 : Register Block, address 6
+7 : SCE Master Control Register
Register 0x60 stores the MSB and 0x61 the LSB of the 550-UART’s 16 bit Base Address.
Note:
Refer to the Infrared Communications Controller (IRCC 2.0) Specification for register details.
Note:
If Base I/O Address is set below 0x100 then no decode will occur.
Select A & B registers in SCE Register Block
Three.
IR DMA CHANNELS
DMA channel 0, 1, 2 or 3 may be selected for
use with the IRCC 2.0 logic through the
configuration registers of Logical Device 5.
Refer to the Configuration section of this
specification for further details on setting the
DMA channel and to the IRCC 2.0 specification
for details on IR DMA transfers.
The FDC37N972 Software Select A register is
LD5:CRF7, the FDC37N972 Software Select B
register is LD5:CRF8. These registers are R/W.
Writing to LD5:CRF7 is the only way to revise
the contents of the Software Select A register in
the IrCC 2.0. Writing the contents of the
Software Select A register can only be done in
the configuration state and only after the LDN
has been set to “5” and the CSR has been
initialized to “F7H”. The default value of this
register after power up is 00H (TABLE 59).
IR IRQs
The interrupt (IRQ) for the IRCC 2.0 logic is
selectable through the configuration registers for
logical device 5. Refer to the Configuration
section of this specification for further details on
setting the IRQ and to the IRCC 2.0
specification for details on IR IRQ events.
Software Select Registers A and B
Writing to LD5:CRF8 is the only way to revise
the contents of the Software Select B register in
the IrCC 2.0. Writing the contents of the
Software Select B register can only be done in
the configuration state and only after the LDN
has been set to “5” and the CSR has been
initialized to “F8H”. The default value of this
register after power up is 00H (TABLE 59).
The Software Select A and Software Select B
registers in the FDC37N972 configuration space
in Logical Device Number 5 are directly
connected to the read-only IrCC 2.0 Software
105
LD5:CRF7
LD5:CRF8
TABLE 59 - FDC37N972 SOFTWARE SELECT A&B REGISTERS
D7
D6
D5
D4
D3
D2
D1
D0
R/W
Software Select A
R/W
Software Select B
DEFAULT
0x00
0x00
IR HALF DUPLEX TIMEOUT
changes in the IrCC 2.0. The IR Half Duplex
Time-Out is started as each IR message data
bit is transferred and prevents direction mode
changes until the time-out expires. The timer is
restarted whenever new data is transferred in
the current direction mode.
LD5:CRF2 is the FDC37N972 IR Half Duplex
Time-Out register (TABLE 60).
In the
FDC37N972, this register is linked to the IrCC
2.0 IR Half Duplex Time-Out register.
In the FDC37N972, these two registers must
behave like the other IrCC 2.0 legacy controls
where either source uniformly updates the value
of both registers registers when either register is
explicitly written using IOW or following a
device-level POR. IrCC 2.0 software resets do
not affect these registers.
The IR Half Duplex Time-Out is programmable
from 0 to 25.5ms in 100µs increments, as
follows:
IR HALF DUPLEX TIME-OUT = (CRF2) x
100µ
µs
The IR Half Duplex Time-Out constrains the
timing of transmit/receive direction mode
LD5:CRF2
TABLE 60 - IR HALF DUPLEX TIME-OUT REGISTER
D7
D6
D5
D4
D3
D2
D1
R/W
IR HALF DUPLEX TIME-OUT
D0
Default
0x03
Registers for information on disabling, power
down, changing the base address of the parallel
port, and selecting the mode of operation.
IRTX OUTPUT PINS DEFAULT
The IRCC 2.0 IRTX pins default at power-up to
“output”, “low” to prevent infrared transceiver
damage. This default behavior applies to both
the dedicated IRTX2 pin and to GPIO9 (see
General Purpose I/O (GPIO) on page 265).
The parallel port also incorporates SMSC's
ChiProtect circuitry, which prevents possible
damage to the parallel port due to printer powerup. 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
address map of the Parallel Port is shown
below:
PARALLEL PORT
The FDC37N972 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 Extended Capabilities Port (ECP) parallel
port modes.
Refer to the Configuration
106
TABLE 61 - ADDRESS MAP FOR PARALLEL PORT
REGISTER NAME
ADDRESS
DATA PORT
BASE ADDRESS + 00H
STATUS PORT
BASE ADDRESS + 01H
CONTROL PORT
BASE ADDRESS + 02H
EPP ADDR PORT
BASE ADDRESS + 03H
EPP DATA PORT 0
BASE ADDRESS + 04H
EPP DATA PORT 1
BASE ADDRESS + 05H
EPP DATA PORT 2
BASE ADDRESS + 06H
EPP DATA PORT 3
BASE ADDRESS + 07H
TABLE 62 - THE BIT MAP OF THESE REGISTERS IS:
D0
D1
D2
D3
D4
D5
D6
D7
NOTE
PD0
PD1
PD2
PD3
PD4
PD5 PD6
PD7
1
TMOUT
0
0
nERR
SLCT
PE nACK nBUSY
1
DATA PORT
STATUS
PORT
CONTROL
STROBE
PORT
EPP ADDR
PD0
PORT
EPP DATA
PD0
PORT 0
EPP DATA
PD0
PORT 1
EPP DATA
PD0
PORT 2
EPP DATA
PD0
PORT 3
ALF
nINIT
SLC
IRQE
PCD
0
0
1
PD1
PD2
PD3
PD4
PD5
PD6
AD7
2,3
PD1
PD2
PD3
PD4
PD5
PD6
PD7
2,3
PD1
PD2
PD3
PD4
PD5
PD6
PD7
2,3
PD1
PD2
PD3
PD4
PD5
PD6
PD7
2,3
PD1
PD2
PD3
PD4
PD5
PD6
PD7
2,3
Note 1: These registers are available in all modes.
Note 2: These registers are only available in EPP mode.
Note 3 : For EPP mode, IOCHRDY must be connected to the ISA bus.
107
TABLE 63 - PARALLEL PORT CONNECTOR PIN MAP
HOST
CONNECTOR PIN NUMBER STANDARD
EPP
ECP
1
129
nSTROBE
nWrite
nSTROBE
2-9
124-121,
PData<0:7> PData<0:7>
PData<0:7>
119-116
10
115
nAck
Intr
nAck
11
114
Busy
nWait
Busy, PeriphAck(3)
12
113
PE
(NU)
PError,
nAckReverse(3)
13
112
Select
(NU)
Select
14
128
Nalf
nDatastb
nALF,
HostAck(3)
15
127
NError
(NU)
nFault(1)
nPeriphRequest(3)
16
126
NInit
(NU)
nInit(1)
nReverseRqst(3)
17
125
NSelectin
nAddrstrb
nSelectIn(1,3)
(1)= Compatible Mode
(3)= High Speed Mode
Note:
For the cable interconnection required for ECP support and the Slave Connector pin
numbers, refer to the IEEE P1284 D2.0 Standard, “Standard Signaling Method for a Bi-directional
Parallel Peripheral Interface for Personal Computers”, September 10, 1993. This document is
available from the IEEE.
IBM XT/AT COMPATIBLE, BI-DIRECTIONAL
AND EPP MODES
STATUS PORT
ADDRESS OFFSET = 01H
DATA PORT
ADDRESS OFFSET = 00H
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 an nIOR
read cycle. The bits of the Status Port are
defined as follows:
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 data bus with the rising edge of
the nIOW input. 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.
BIT 0 TMOUT - TIME OUT
This bit is valid in EPP mode only and indicates
that a 10 µsec time out has occured on the EPP
bus. A logic “0” means that no time out error
has occured; 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 “0”. Writing a
“0” to this bit has no effect.
108
initialized by the RESET input, bits 0 to 5 only
being affected; bits 6 and 7 are hard wired low.
BITS 1, 2 - are not implemented as register bits,
during a read of the Printer Status Register
these bits are a low level.
BIT 0 STROBE - STROBE
This bit is inverted and output onto the
nSTROBE output.
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.
BIT 1 ALF - AUTOFEED
This bit is inverted and output onto the nALF
output.
A logic “1” causes the printer to
generate a line feed after each line is printed. A
logic “0” means no autofeed.
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 2 nINIT - nINITIATE OUTPUT
This bit is output onto the nINIT output without
inversion.
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 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 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 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 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.
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 bidirectional, 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).
CONTROL PORT
ADDRESS OFFSET = 02H
Bits 6 and 7 during a read are a low level, and
cannot be written
The Control Port is located at an offset of '02H'
from the base address. The Control Register is
109
EPP ADDRESS PORT
ADDRESS OFFSET = 03H
EPP DATA PORT 1
ADDRESS OFFSET = 05H
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 DB0DB7 are buffered (non inverting) and output onto
the PD0 - PD7 ports, the leading edge of nIOW
causes an EPP ADDRESS WRITE cycle to be
performed, the trailing edge of IOW latches the
data for the duration of the EPP write cycle.
During a READ operation, PD0-PD7 ports are
read, the leading edge of IOR 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 IOR cycle. This register is only available in
EPP mode.
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.
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 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 DB0-DB7 are
buffered (non inverting) and output onto the
PD0-PD7 ports, the leading edge of nIOW
causes an EPP DATA WRITE cycle to be
performed, the trailing edge of IOW latches the
data for the duration of the EPP write cycle.
During a READ operation, PD0 - PD7 ports are
read, the leading edge of IOR 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 IOR cycle. 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, ALF, 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 10µsec
have elapsed from the start of the EPP cycle
(nIOR or nIOW asserted) 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.
110
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.
4.
SOFTWARE CONSTRAINTS
6.
5.
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.
7.
EPP 1.9 WRITE
8.
The timing for a write operation (address or
data) is shown in timing diagram EPP Write
Data or Address cycle. IOCHRDY is driven
active low at the start of each EPP write and is
released when it has been determined that the
write cycle can complete. The write cycle can
complete under the following circumstances:
9.
The chip places address or data on PData
bus, clears PDIR, and asserts nWRITE.
Chip asserts nDATASTB or nADDRSTRB
indicating that PData bus contains valid
information, and the WRITE signal is valid.
Peripheral deasserts nWAIT, indicating that
any setup requirements have been satisfied
and the chip may begin the termination
phase of the cycle.
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 SData
bus for the PData bus and asserts
(releases) IOCHRDY allowing the host to
complete the write cycle.
Peripheral asserts nWAIT, indicating to the
host that any hold time requirements have
been satisfied and acknowledging the
termination of the cycle.
Chip may modify nWRITE and nPDATA in
preparation for the next cycle.
EPP 1.9 READ
The timing for a read operation (data) is shown
in timing diagram EPP Read Data cycle.
IOCHRDY is driven active low at the start of
each EPP read and is released when it has been
determined that the read cycle can complete.
The read 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.
1.If the EPP bus is not ready (nWAIT is active
low) when nDATASTB goes active then the
read can complete when nWAIT goes inactive
high.
Write Sequence of operation
1. The host selects an EPP register, places
data on the SData bus and drives nIOW
active.
2. The chip drives IOCHRDY inactive (low).
3. If WAIT is not asserted, the chip must wait
until WAIT is asserted.
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.
111
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 10µsec
have elapsed from the start of the EPP cycle
(nIOR or nIOW asserted) to the end of the cycle
nIOR or nIOW deasserted).
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 selects an EPP register and drives
nIOR active.
2. The chip drives IOCHRDY inactive (low).
3. If WAIT is not asserted, the chip must wait
until WAIT is asserted.
4. The chip tri-states the PData bus and
deasserts nWRITE.
5. Chip asserts nDATASTB or nADDRSTRB
indicating that PData bus is tri-stated, PDIR
is set and the nWRITE signal is valid.
6. Peripheral drives PData bus valid.
7. Peripheral deasserts nWAIT, indicating that
PData is valid and the chip may begin the
termination phase of the cycle.
8. a)The chip latches the data from the PData
bus for the SData bus and deasserts
nDATASTB or nADDRSTRB. This marks
the beginning of the termination phase.
b)The chip drives the valid data onto the
SData bus and asserts (releases)
IOCHRDY allowing the host to complete the
read cycle.
9. Peripheral tri-states the PData bus and
asserts nWAIT, indicating to the host that
the PData bus is tri-stated.
10. Chip may modify nWRITE, PDIR and
nPDATA in preparation for the next
cycle.Peripheral
deasserts
nWAIT,
indicating that PData is valid and the chip
may begin the termination phase of the
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. IOCHRDY is driven
active low 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
The host sets PDIR bit in the control register to
a logic "0". This asserts nWRITE.
The host selects an EPP register, places data
on the SData bus and drives nIOW active.
The chip places address or data on PData bus.
Chip asserts nDATASTB or nADDRSTRB
indicating that PData bus contains valid
information, and the WRITE signal is valid.
If nWAIT is asserted, IOCHRDY is deasserted
until the peripheral deasserts nWAIT or a timeout occurs.
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, ALF, INIT) are as set by the SPP
Control Port and direction is controlled by PCD
of the Control port.
When the host deasserts nIOW the chip
deasserts nDATASTB or nADDRSTRB and
latches the data from the SData bus for the
PData bus.
112
3.
Chip may modify nWRITE, PDIR and nPDATA
in preparation of the next cycle.
EPP 1.7 READ
4.
The timing for a read operation (data) is shown
in timing diagram EPP 1.7 Read Data cycle.
IOCHRDY is driven active low when nWAIT is
active low during the EPP cycle. This can be
used to extend the cycle time. The read cycle
can complete when nWAIT is inactive high.
5.
6.
7.
Read Sequence of Operation
1.
The host sets PDIR bit in the control
register to a logic "1". This deasserts
nWRITE and tri-states the PData bus.
2.
The host selects an EPP register and
drives nIOR active.
8.
9.
Chip
asserts
nDATASTB
or
nADDRSTRB indicating that PData bus
is tri-stated, PDIR is set and the
nWRITE signal is valid.
If nWAIT is asserted, IOCHRDY is
deasserted
until
the
peripheral
deasserts nWAIT or a time-out occurs.
The Peripheral drives PData bus valid.
The Peripheral deasserts nWAIT,
indicating that PData is valid and the
chip may begin the termination phase
of the cycle.
When the host deasserts nIOR the chip
deasserts nDATASTB or nADDRSTRB.
Peripheral tri-states the PData bus.
Chip may modify nWRITE, PDIR and
nPDATA reparation of the next cycle.
TABLE 64 - EPP PIN DESCRIPTIONS
EPP
SIGNAL
nWRITE
PD<0:7>
INTR
WAIT
DATASTB
RESET
ADDRSTB
PE
SLCT
nERR
EPP NAME
nWrite
Address/Data
Interrupt
TYPE
O
I/O
I
I
I
EPP DESCRIPTION
This signal is active low. It denotes a write operation.
Bi-directional EPP byte wide address and data bus.
This signal is active high and positive edge triggered. (Pass
through with no inversion, Same as SPP).
This signal is active low. It is driven inactive as a positive
acknowledgement from the device that the transfer of data is
completed. It is driven active as an indication that the device
is ready for the next transfer.
This signal is active low. It is used to denote data read or
write operation.
This signal is active low. When driven active, the EPP
device is reset to its initial operational mode.
This signal is active low. It is used to denote address read
or write operation.
Same as SPP mode.
Same as SPP mode.
nWait
I
nData Strobe
O
nReset
O
nAddress
Strobe
Paper End
Printer
Selected Status
Error
O
I
Same as SPP mode.
113
EPP
SIGNAL
PDIR
EPP NAME
Parallel Port
Direction
TYPE
O
EPP DESCRIPTION
This output shows the direction of the data transfer on the
parallel port bus. A low means an output/write condition and
a high means an input/read condition. This signal is normally
a low (output/write) unless PCD of the control register is set
or if an EPP read cycle is in progress.
Note 1: SPP and EPP can use 1 common register.
Note 2: nWrite is the only EPP output that can be over-ridden by SPP control port during an EPP
cycle. For correct EPP read cycles, PCD is required to be a low.
EXTENDED CAPABILITIES PARALLEL PORT
ECP provides a number of advantages, some of which are listed below. The individual features are
explained in greater detail in the remainder of this section.
High performance half-duplex forward and reverse channel
Interlocked handshake, for fast reliable transfer
Optional single byte RLE compression for improved throughput (64:1)
Channel addressing for low-cost peripherals
Maintains link and data layer separation
Permits the use of active output drivers
Permits the use of adaptive signal timing
Peer-to-peer capability
VOCABULARY
The following terms are used in this document:
assert: When a signal asserts it transitions to a "true" state, when a signal deasserts it transitions to
a "false" state.
forward: Host to Peripheral communication.
reverse: Peripheral to Host communication.
PWord: A port word; equal in size to the width of the ISA interface. For this implementation, PWord is
always 8 bits.
1:
A high level.
0:
A low level.
These terms may be considered synonymous:
PeriphClk, nAck
HostAck, nALF
PeriphAck, Busy
nPeriphRequest, nFault
nReverseRequest, nInit
114
nAckReverse, PError
Xflag, Select
ECPMode, nSelectln
HostClk, nSTROBE
Reference Document
IEEE 1284 Extended Capabilities Port Protocol and ISA Interface Standard, Rev 1.14, July 14, 1993.
This document is available from Microsoft.
TABLE 65 - BIT MAP OF THE EXTENDED PARALLEL PORT REGISTERS
D7
D6
D5
D4
D3
D2
D1
D0
data
PD7
PD6
PD5
PD4
PD3
PD2
PD1 PD0
ecpAFifo Addr/RL
Address or RLE field
E
dsr
nBusy
nAck
PError
Select
nFault
0
0
0
dcr
0
0
Direction ackIntEn SelectIn
nInit
alf
strobe
cFifo
Parallel Port Data FIFO
ecpDFifo
ECP Data FIFO
tFifo
Test FIFO
cnfgA
0
0
0
1
0
0
0
0
cnfgB
compres intrValue
0
0
0
0
0
0
s
nErrIntrEn dmaEn serviceIntr full
ecr
MODE
empty
Note 1: These registers are available in all modes.
Note 2: All FIFOs use one common 16 byte FIFO.
115
NOTE
2
1
1
2
2
2
it provides an automatic high burst-bandwidth
channel that supports DMA for ECP in both the
forward and reverse directions.
ISA IMPLEMENTATION STANDARD
This specification describes the standard ISA
interface to the Extended Capabilities Port
(ECP). All ISA devices supporting ECP must
meet the requirements contained in this section
or the port will not be supported by Microsoft.
For a description of the ECP Protocol, please
refer to the IEEE 1284 Extended Capabilities
Port Protocol and ISA Interface Standard, Rev.
1.14, July 14, 1993. This document is available
from Microsoft.
Small FIFOs are employed in both forward and
reverse directions to smooth data flow and
improve the maximum bandwidth requirement.
The size of the FIFO is 16 bytes deep. The port
supports an automatic handshake for the
standard parallel port to improve compatibility
mode transfer speed.
The port also supports run length encoded
(RLE) decompression (required) in hardware.
Compression is accomplished by counting
identical bytes and transmitting an RLE byte
that indicates how many times the next byte is
to be repeated. Decompression simply
intercepts the RLE byte and repeats the
following byte the specified number of times.
Hardware support for compression is optional.
DESCRIPTION
The port is software and hardware compatible
with existing parallel ports so that it may be
used as a standard LPT port if ECP is not
required. The port is designed to be simple and
requires a small number of gates to implement.
It does not do any "protocol" negotiation, rather
NAME
nSTROBE
PData 7:0
nAck
PeriphAck (Busy)
PError
(nAckReverse)
Select
TABLE 66 - ECP PIN DESCRIPTIONS
TYPE
DESCRIPTION
O
During write operations nSTROBE registers data or address into the
slave on the asserting edge (handshakes with Busy).
I/O
Contains address or data or RLE data.
I
Indicates valid data driven by the peripheral when asserted. This signal
handshakes with nALF in reverse.
I
This signal deasserts to indicate that the peripheral can accept data.
This signal handshakes with nSTROBE in the forward direction. In the
reverse direction this signal indicates whether the data lines contain
ECP command information or data. The peripheral uses this signal to
flow control in the forward direction. It is an "interlocked" handshake
with nSTROBE. PeriphAck also provides command information in the
reverse direction.
I
Used to acknowledge a change in the direction the transfer (asserted =
forward). The peripheral drives this signal low to acknowledge
nReverseRequest. It is an "interlocked" handshake with
nReverseRequest. The host relies upon nAckReverse to determine
when it is permitted to drive the data bus.
I
Indicates printer on line.
116
NAME
nALF
(HostAck)
nFault
(nPeriphRequest)
nInit
nSelectIn
TYPE
DESCRIPTION
O
Requests a byte of data from the peripheral when asserted,
handshaking with nAck in the reverse direction. In the forward direction
this signal indicates whether the data lines contain ECP address or
data. The host drives this signal to flow control in the reverse direction.
It is an "interlocked" handshake with nAck. HostAck also provides
command information in the forward phase.
I
Generates an error interrupt when asserted. This signal provides a
mechanism for peer-to-peer communication. This signal is valid only in
the forward direction. During ECP Mode the peripheral is permitted
(but not required) to drive this pin low to request a reverse transfer. The
request is merely a "hint" to the host; the host has ultimate control over
the transfer direction. This signal would be typically used to generate
an interrupt to the host CPU.
O
Sets the transfer direction (asserted = reverse, deasserted = forward).
This pin is driven low to place the channel in the reverse direction. The
peripheral is only allowed to drive the bi-directional data bus while in
ECP Mode and HostAck is low and nSelectIn is high.
O
Always deasserted in ECP mode.
port is equivalent to a generic parallel port
interface and may be operated in that mode.
The port registers vary depending on the mode
field in the ecr. The table below lists these
dependencies. Operation of the devices in
modes other that those specified is undefined.
REGISTER DEFINITIONS
The register definitions are based on the
standard IBM addresses for LPT. All of the
standard printer ports are supported.
The
additional registers attach to an upper bit
decode of the standard LPT port definition to
avoid conflict with standard ISA devices. The
NAME
data
ecpAFifo
dsr
dcr
cFifo
ecpDFifo
tFifo
cnfgA
cnfgB
ecr
TABLE 67 - ECP REGISTER DEFINITIONS
ADDRESS (Note 1) ECP MODES FUNCTION
+000h R/W
000-001
Data Register
+000h R/W
011
ECP FIFO (Address)
+001h R/W
All
Status Register
+002h R/W
All
Control Register
+400h R/W
010
Parallel Port Data FIFO
+400h R/W
011
ECP FIFO (DATA)
+400h R/W
110
Test FIFO
+400h R
111
Configuration Register A
+401h R/W
111
Configuration Register B
+402h R/W
All
Extended Control Register
Note 1: These addresses are added to the parallel port base address as selected by configuration
register or jumpers.
Note 2: All addresses are qualified with AEN. Refer to the AEN pin definition.
117
TABLE 68 - EXTENDED CONTROL REGISTER MODE DESCRIPTIONS
MODE
DESCRIPTION*
000
SPP mode
001
PS/2 Parallel Port mde
010
Parallel Port Data FIFO mode
011
ECP Parallel Port mode
100
EPP mode (If this option is enabled in the configuration registers)
101
(Reserved)
110
Test mode
111
Configuration mode
*Refer to ECR Register Description
DATA AND ECPAFIFO PORT
ADDRESS OFFSET = 00H
Modes 000 and 001 (Data Port)
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 data
bus on the rising edge of the nIOW input. The contents of this register are buffered (non inverting)
and output onto the PD0 - PD7 ports. During a READ operation, PD0 - PD7 ports are read and output
to the host CPU.
Mode 011 (ECP FIFO - Address/RLE)
A data byte written to this address is placed in the FIFO and tagged as an ECP Address/RLE. The
hardware at the ECP port transmitts this byte to the peripheral automatically. The operation of this
register is ony defined for the forward direction (direction is 0). Refer to the ECP Parallel Port Forward
Timing Diagram, located in the Timing Diagrams section of this data sheet .
DEVICE STATUS REGISTER (DSR)
ADDRESS OFFSET = 01H
The Status Port is located at an offset of '01H' from the base address. Bits 0-2 are not implemented
as register bits, during a read of the Printer Status Register these bits are a low level. The bits of the
Status Port are defined as follows:
BIT 3 nFault
The level on the nFault input is read by the CPU as bit 3 of the Device Status Register.
BIT 4 Select
The level on the Select input is read by the CPU as bit 4 of the Device Status Register.
118
BIT 5 PError
The level on the PError input is read by the CPU as bit 5 of the Device Status Register. Printer Status
Register.
BIT 6 nAck
The level on the nAck input is read by the CPU as bit 6 of the Device Status Register.
BIT 7 nBusy
The complement of the level on the BUSY input is read by the CPU as bit 7 of the Device Status
Register.
DEVICE CONTROL REGISTER (DCR)
ADDRESS OFFSET = 02H
The Control Register is located at an offset of '02H' from the base address. The Control Register is
initialized to zero by the RESET input, bits 0 to 5 only being affected; bits 6 and 7 are hard wired low.
BIT 0 STROBE - STROBE
This bit is inverted and output onto the nSTROBE output.
BIT 1 ALF - AUTOFEED
This bit is inverted and output onto the nALF 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 SELECTIN
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 ackIntEn - 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 due to a low to high transition on the nACK input. Refer to the
description of the interrupt under Operation, Interrupts.
BIT 5 DIRECTION
If mode=000 or mode=010, this bit has no effect and the direction is always out regardless of the state
of this bit. In all other modes, Direction is valid and 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.
119
the tFIFO. If an attempt is made to read data
from an empty tFIFO, the last data byte is reread again. The full and empty bits must
always keep track of the correct FIFO state.
The tFIFO will transfer data at the maximum
ISA rate so that software may generate
performance metrics.
The FIFO size and
interrupt threshold can be determined by writing
bytes to the FIFO and checking the full and
serviceIntr bits.
CFIFO (PARALLEL PORT DATA FIFO)
ADDRESS OFFSET = 400H
Mode = 010
Bytes written or DMAed from the system to this
FIFO are transmitted by a hardware handshake
to the peripheral using the standard parallel port
protocol.
Transfers to the FIFO are byte
aligned. This mode is only defined for the
forward direction.
The writeIntrThreshold can be derermined by
starting with a full tFIFO, setting the direction bit
to “0” and emptying it a byte at a time until
serviceIntr is set. This may generate a spurious
interrupt, but will indicate that the threshold has
been reached.
ECPDFIFO (ECP DATA FIFO)
ADDRESS OFFSET = 400H
Mode = 011
Bytes written or DMAed from the system to this
FIFO, when the direction bit is “0”, are
transmitted by a hardware handshake to the
peripheral using the ECP parallel port protocol.
Transfers to the FIFO are byte aligned.
The readIntrThreshold can be derermined by
setting the direction bit to “1” and filling the
empty tFIFO a byte at a time until serviceIntr is
set. This may generate a spurious interrupt, but
will indicate that the threshold has been
reached.
Data bytes from the peripheral are read under
automatic hardware handshake from ECP into
this FIFO when the direction bit is “1”. Reads or
DMAs from the FIFO will return bytes of ECP
data to the system.
Data bytes are always read from the head of
tFIFO regardless of the value of the direction bit.
For example if 44h, 33h, 22h is written to the
FIFO, then reading the tFIFO will return 44h,
33h, 22h in the same order as was written.
TFIFO (TEST FIFO MODE)
ADDRESS OFFSET = 400H
CNFGA (CONFIGURATION REGISTER A)
ADDRESS OFFSET = 400H
Mode = 110
Mode = 111
Data bytes may be read, written or DMAed to or
from the system to this FIFO in any direction.
Data in the tFIFO will not be transmitted to the
to the parallel port lines using a hardware
protocol handshake.
However, data in the
tFIFO may be displayed on the parallel port data
lines.
This register is a read only register. When read,
10H is returned. This indicates to the system
that this is an 8-bit implementation. (PWord = 1
byte)
cnfgB (Configuration Register B)
ADDRESS OFFSET = 401H
The tFIFO will not stall when overwritten or
underrun. If an attempt is made to write data to
a full tFIFO, the new data is not accepted into
Mode = 111
120
BIT 7 compress
This bit is read only. During a read it is a low
level. This means that this chip does not
support hardware RLE compression. It does
support hardware de-compression!
BIT 3 dmaEn
Read/Write
1:
Enables DMA (DMA starts
serviceIntr is 0).
0:
Disables DMA unconditionally.
BIT 6 intrvalue
Returns the value on the ISA iRq line to
determine possible conflicts.
BIT 2 serviceIntr
Read/Write
1:
Disables DMA and all of the service
interrupts.
0:
Enables one of the following 3 cases of
interrupts. Once one of the 3 service interrupts
has occurred serviceIntr bit shall be set to a 1 by
hardware. It must be reset to 0 to re-enable the
interrupts. Writing this bit to a 1 will not cause
an interrupt.
case dmaEn=1:
During DMA (this bit is set to a “1” when
terminal count is reached).
case dmaEn=0 direction=0:
BITS 5:0 Reserved
During a read are a low level. These bits cannot
be written.
ecr (Extended Control Register)
ADDRESS OFFSET = 402H
Mode = all
This register controls the extended ECP parallel
port functions.
BITS 7 - 5
These bits are Read/Write and select the Mode.
when
This bit shall be set to 1 whenever there are
writeIntrThreshold or more bytes free in the
FIFO.
case dmaEn=0 direction=1:
This bit shall be set to 1 whenever there are
readIntrThreshold or more valid bytes to be read
from the FIFO.
BIT 4 nErrIntrEn
Read/Write (Valid only in ECP Mode)
1:
Disables the interrupt generated on the
asserting edge of nFault.
0:
Enables an interrupt pulse on the high
to low edge of nFault. Note that an interrupt will
be generated if nFault is asserted (interrupting)
and this bit is written from a 1 to a 0. This
prevents interrupts from being lost in the time
between the read of the ecr and the write of the
ecr.
BIT 1 full
Read only
1:
The FIFO cannot accept another byte
or the FIFO is completely full.
0:
The FIFO has at least 1 free byte.
BIT 0 empty
Read only
1:
The FIFO is completely empty.
0:
The FIFO contains at least 1 byte of
data.
121
R/W
000:
001:
010:
011:
100:
101:
R/W
110:
111:
TABLE 69 - EXTENDED CONTROL REGISTER
MODE
Standard Parallel Port Mode . In this mode the FIFO is reset and common collector drivers
are used on the control lines (nSTROBE, nALF, nInit and nSelectIn). Setting the direction bit
will not tri-state the output drivers in this mode.
PS/2 Parallel Port Mode. Same as above except that direction may be used to tri-state the
data lines and reading the data register returns the value on the data lines and not the value
in the data register. All drivers have active pull-ups (push-pull).
Parallel Port FIFO Mode. This is the same as 000 except that bytes are written or DMAed to
the FIFO. FIFO data is automatically transmitted using the standard parallel port protocol.
Note that this mode is only useful when direction is 0. All drivers have active pull-ups
(push-pull).
ECP Parallel Port Mode. In the forward direction (direction is 0) bytes placed into the
ecpDFifo and bytes written to the ecpAFifo are placed in a single FIFO and transmitted
automatically to the peripheral using ECP Protocol. In the reverse direction (direction is 1)
bytes are moved from the ECP parallel port and packed into bytes in the ecpDFifo. All
drivers have active pull-ups (push-pull).
Selects EPP Mode: In this mode, EPP is selected if the EPP supported option is selected in
configuration register L3-CRF0. All drivers have active pull-ups (push-pull).
Reserved
MODE
Test Mode. In this mode the FIFO may be written and read, but the data will not be
transmitted on the parallel port. All drivers have active pull-ups (push-pull).
Configuration Mode. In this mode the confgA, confgB registers are accessible at 0x400 and
0x401. All drivers have active pull-ups (push-pull).
122
OPERATION
After negotiation, it is necessary to initialize
some of the port bits. The following are required:
MODE SWITCHING/SOFTWARE CONTROL
Software will execute P1284 negotiation and all
operation prior to a data transfer phase under
programmed I/O control (mode 000 or 001).
Hardware provides an automatic control line
handshake, moving data between the FIFO and
the ECP port only in the data transfer phase
(modes 011 or 010).
Set Direction = 0, enabling the drivers.
Set strobe = 0, causing the nSTROBE signal to
default to the deasserted state.
Set alf= 0, causing the nALF signal to default to
the deasserted state.
Set mode = 011 (ECP Mode)
ECP address/RLE bytes or data bytes may be
sent automatically by writing the ecpAFifo or
ecpDFifo respectively.
Setting the mode to 011 or 010 will cause the
hardware to initiate data transfer.
If the port is in mode 000 or 001 it may switch to
any other mode. If the port is not in mode 000
or 001 it can only be switched into mode 000 or
001. The direction can only be changed in
mode 001.
Note that all FIFO data transfers are byte wide
and byte aligned. Address/RLE transfers are
byte-wide and only allowed in the forward
direction.
The host may switch directions by first switching
to mode = 001, negotiating for the forward or
reverse channel, setting direction to “1” or “0”,
then setting mode = 011. When direction is 1
the hardware shall handshake for each ECP
read data byte and attempt to fill the FIFO.
Bytes may then be read from the ecpDFifo as
long as it is not empty.
Once in an extended forward mode the software
should wait for the FIFO to be empty before
switching back to mode 000 or 001. In this case
all control signals will be deasserted before the
mode switch. In an ecp reverse mode the
software waits for all the data to be read from
the FIFO before changing back to mode 000 or
001.
Since the automatic hardware
ecp
reverse handshake only cares about the state of
the FIFO it may have acquired extra data which
will be discarded. It may in fact be in the middle
of a transfer when the mode is changed back to
000 or 001. In this case the port will deassert
nALF independent of the state of the transfer.
The design shall not cause glitches on the
handshake signals if the software meets the
constraints above.
ECP transfers may also be accomplished (albeit
slowly) by handshaking individual bytes under
program control in mode = 001, or 000.
TERMINATION FROM ECP MODE
Termination from ECP Mode is similar to the
termination from Nibble/Byte Modes. The host is
permitted to terminate from ECP Mode only in
specific well-defined states. The termination can
only be executed while the bus is in the forward
direction. To terminate while the channel is in
the reverse direction, it must first be transitioned
into the forward direction.
ECP OPERATION
Prior to ECP operation the Host must negotiate
on the parallel port to determine if the peripheral
supports the ECP protocol. This is a somewhat
complex negotiation carried out under program
control in mode 000.
123
The most significant bit of the command
indicates whether it is a run-length count (for
compression) or a channel address.
COMMAND/DATA
ECP Mode supports two advanced features to
improve the effectiveness of the protocol for
some
applications.
The
features
are
implemented by allowing the transfer of normal
8 bit data or 8 bit commands.
When in the reverse direction, normal data is
transferred when PeriphAck is high and an 8 bit
command is transferred when PeriphAck is low.
The most significant bit of the command is
always “0”. Reverse channel addresses are
seldom used and may not be supported in
hardware.
When in the forward direction, normal data is
transferred when HostAck is high and an 8 bit
command is transferred when HostAck is low.
TABLE 70 - FORWARD CHANNEL COMMANDS (HOSTACK LOW) &
REVERSE CHANNEL COMMANDS (PERIPACK LOW)
D7
D[6:0]
0
Run-Length Count (0-127)
(mode 0011 0X00 only)
1
Channel Address (0-127)
DATA COMPRESSION
PIN DEFINITION
The ECP port supports run length encoded
(RLE) decompression in hardware and can
transfer compressed data to a peripheral. Run
length encoded (RLE) compression in hardware
is not supported. To transfer compressed data
in ECP mode, the compression count is written
to the ecpAFifo and the data byte is written to
the ecpDFifo.
The drivers for nSTROBE, nALF, nInit and
nSelectIn are open-collector in mode 000 and
are push-pull in all other modes.
ISA CONNECTIONS
The interface can never stall causing the host to
hang. The width of data transfers is strictly
controlled on an I/O address basis per this
specification. All FIFO-DMA transfers are byte
wide, byte aligned and end on a byte boundary.
(The PWord value can be obtained by reading
Configuration Register A, cnfgA, described in
the next section.) Single byte wide transfers
are always possible with standard or PS/2
mode using program control of the control
signals.
Compression is accomplished by counting
identical bytes and transmitting an RLE byte
that indicates how many times the next byte is
to be repeated.
Decompression simply
intercepts the RLE byte and repeats the
following byte the specified number of times.
When a run-length count is received from a
peripheral, the subsequent data byte is
replicated the specified number of times. A
run-length count of zero specifies that only one
byte of data is represented by the next data
byte, whereas a
run-length count of 127
indicates that the next byte should be expanded
to 128 bytes. To prevent data expansion,
however, run-length counts of zero should be
avoided.
INTERRUPTS
The interrupts are enabled by serviceIntr in the
ecr register.
serviceIntr = 1
Disables the DMA and all of
the service interrupts.
124
Programmed I/O cycle or PDRQ depending on
the selection of DMA or Programmed I/O mode.
serviceIntr = 0
Enables the selected interrupt
condition. If the interrupting condition is valid,
then the interrupt is generated immediately
when this bit is changed from a 1 to a 0. This
can occur during Programmed I/O if the number
of bytes removed or added from/to the FIFO
does not cross the threshold.
The following paragraphs detail the operation of
the FIFO flow control. In these descriptions,
<threshold> ranges from 1 to 16.
The
parameter FIFOTHR, which the user programs,
is one less and ranges from 0 to 15.
The interrupt generated is ISA friendly in that it
must pulse the interrupt line low, allowing for
interrupt sharing.
After a brief pulse low
following the interrupt event, the interrupt line is
tri-stated so that other interrupts may assert.
An interrupt is generated when:
1. For DMA transfers: When serviceIntr is “0”,
dmaEn is 1 and the DMA TC is received.
2. For Programmed I/O:
a.
When serviceIntr is 0, dmaEn is 0,
direction is “0” and there are writeIntrThreshold
or more free bytes in the FIFO. Also, an
interrupt is generated when serviceIntr is cleared
to 0 whenever there are writeIntrThreshold or
more free bytes in the FIFO.
b.
(1) When serviceIntr is “0”, dmaEn is 0,
direction is “1” and there are readIntrThreshold
or more bytes in the FIFO. (2) An interrupt is
also generated when serviceIntr is cleared to “0”
whenever there are readIntrThreshold or more
bytes in the FIFO.
3.
When nErrIntrEn is 0 and nFault
transitions from high to low or when nErrIntrEn
is set from “1” to “0” and nFault is asserted.
4.
When ackIntEn is “1” and the nAck
signal transitions from a low to a high.
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 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.
DMA TRANSFERS
DMA transfers are always to or from the
ecpDFifo, tFifo or CFifo. DMA utilizes the
standard PC DMA services. To use the DMA
transfers, the host first sets up the direction and
state as in the programmed I/O case. Then it
programs the DMA controller in the host with the
desired count and memory address. Lastly it
sets dmaEn to “1” and serviceIntr to 0. The
ECP requests DMA transfers from the host by
activating the PDRQ pin. The DMA will empty
or fill the FIFO using the appropriate direction
and mode. When the terminal count in the DMA
controller is reached, an interrupt is generated
and serviceIntr is asserted, disabling DMA. In
order to prevent possible blocking of refresh
requests dReq shall not be asserted for more
than 32 DMA cycles in a row. The FIFO is
enabled directly by asserting nPDACK and
addresses need not be valid.
PINTR is
generated when a TC is received. PDRQ must
not be asserted for more than 32 DMA cycles in
a row. After the 32nd cycle, PDRQ must be
kept unasserted until nPDACK is deasserted for
FIFO OPERATION
The FIFO threshold is set in the chip
configuration registers. All data transfers to or
from the parallel port can proceed in DMA or
Programmed I/O (non-DMA) mode as indicated
by the selected mode. The FIFO is used by
selecting the Parallel Port FIFO mode or ECP
Parallel Port Mode. (FIFO test mode will be
addressed separately.) After a reset, the FIFO
is disabled. Each data byte is transferred by a
125
a minimum of 350nsec. (Note: The only way to
properly terminate DMA transfers is with a TC.)
PROGRAMMED I/O MODE OR NON-DMA
MODE
DMA may be disabled in the middle of a transfer
by first disabling the host DMA controller. Then
setting serviceIntr to 1, followed by setting
dmaEn to “0”, and waiting for the FIFO to
become empty or full. Restarting the DMA is
accomplished by enabling DMA in the host,
setting dmaEn to “1”, followed by setting
serviceIntr to 0.
The ECP or parallel port FIFOs may also be
operated using interrupt driven programmed I/O.
Software can determine the writeIntrThreshold,
readIntrThreshold, and FIFO depth by accessing
the FIFO in Test Mode. Programmed I/O
transfers are to the ecpDFifo at 400H and
ecpAFifo at 000H or from the ecpDFifo located
at 400H, or to/from the tFifo at 400H. To use
the programmed I/O transfers, the host first sets
up the direction and state, sets dmaEn to 0 and
serviceIntr to 0. The ECP requests programmed
I/O transfers from the host by activating the
PINTR pin. The programmed I/O will empty or
fill the FIFO using the appropriate direction and
mode.
DMA MODE - TRANSFERS FROM THE FIFO
TO THE HOST
(Note: In the reverse mode, the peripheral may
not continue to fill the FIFO if it runs out of data
to transfer, even if the chip continues to request
more data from the peripheral.)
Note: A threshold of 16 is equivalent to a
threshold of 15. These two cases are treated
the same.
The ECP activates the PDRQ pin whenever
there is data in the FIFO. The DMA controller
must respond to the request by reading data
from the FIFO. The ECP will deactivate the
PDRQ pin when the FIFO becomes empty or
when the TC becomes true (qualified by
nPDACK), indicating that no more data is
required. PDRQ goes inactive after nPDACK
goes active for the last byte of a data transfer
(or on the active edge of nIOR, on the last byte,
if no edge is present on nPDACK). If PDRQ
goes inactive due to the FIFO going empty, then
PDRQ is active again as soon as there is one
byte in the FIFO. If PDRQ goes inactive due to
the TC, then PDRQ is active again when there
is one byte in the FIFO, and serviceIntr has
been re-enabled. (Note: A data underrun may
occur if PDRQ is not removed in time to prevent
an unwanted cycle).
PROGRAMMED I/O - TRANSFERS FROM
THE FIFO TO THE HOST
In the reverse direction an interrupt occurs when
serviceIntr is 0 and readIntrThreshold bytes are
available in the FIFO. If at this time the FIFO is
full it can be emptied completely in a single
burst, otherwise readIntrThreshold bytes may
be read from the FIFO in a single burst.
readIntrThreshold = (16-<threshold>) data bytes
in FIFO
An interrupt is generated when serviceIntr is 0
and the number of bytes in the FIFO is greater
than or equal to (16-<threshold>). (If the
threshold = 12, then the interrupt is set
whenever there are 4-16 bytes in the FIFO.)
The PINT pin can be used for interrupt-driven
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. If at this time the FIFO is full, it can
126
writeIntrThreshold = (16-<threshold>) free bytes
in FIFO
be completely emptied in a single burst,
otherwise a minimum of (16-<threshold>) bytes
may be read from the FIFO in a single burst.
An interrupt is generated when serviceIntr is 0
and the number of bytes in the FIFO is less than
or equal to <threshold>. (If the threshold = 12,
then the interrupt is set whenever there are 12 or
less bytes of data in the FIFO.) The PINT pin
can be used for interrupt-driven systems. The
host must respond to the request by writing data
to the FIFO. If at this time the FIFO is empty, it
can be completely filled in a single burst,
otherwise a minimum of (16-<threshold>) bytes
may be written to the FIFO in a single burst.
This process is repeated until the last byte is
transferred into theFIFO.
PROGRAMMED I/O - TRANSFERS FROM
THE HOST TO THE FIFO
In the forward direction an interrupt occurs when
serviceIntr is 0 and there are writeIntrThreshold
or more bytes free in the FIFO. At this time if
the FIFO is empty it can be filled with a single
burst before the empty bit needs to be re-read.
Otherwise
it
may
be
filled
with
writeIntrThreshold bytes.
127
PARALLEL PORT INTERFACE MULTIPLEXOR
THE PARALLEL PORT PHYSICAL INTERFACE (PPPI)
The Parallel Port Physical Interface (PPPI) may be owned and controlled by any of threesources. The
sources are detailed as follows:
PPPI
CONTROLLING
SOURCE
DEVICE
8051
FDC
Host
TABLE 71 - PARALLEL PORT MULTIPLEXING OPTIONS
CONFIG
REGISTER
0X25
BITS[4:3]
DESCRIPTION
[X:X]
The parallel port physical interface is configured
as a SPP mode bi-directional parallel port
controlled directly by the 8051 through a set of
memory mapped external RAM registers.
[1:0]
The parallel port physical interface is configured
or
as a standard Floppy Disk Drive interface. All
[0:1]
configuration and control bits pertaining to the
FDC logical device apply to the PPPI in this
mode
The parallel port physical interface is configured
[0:0]
as the legacy parallel port which supports
or
Compatible, SPP, EPP and ECP modes of
[1:1]
operation. All configuration and control bits
pertaining to the parallel port logical device apply
to the PPPI in this mode.
When the Host (Parallel Port logical device)
owns/controls the parallel port interface, its state
(i.e., pwrdown) determines the states of the
pins. When the FDC (FDC logical device)
owns/controls the Parallel Port interface, its
state (i.e., powerdown) determines the state of
the pins. When the 8051 controls/owns the
parallel port interface, it has direct control of the
Parallel Port Physical Interface pins. Under
8051 control the Parallel Port Output pins are
always enabled or driven and only tri-state when
VCC2 is removed (powergood=0).
PP_HA
0
1
1
activate the DRQ and IRQ of the Parallel Port
Logical Device by either setting its DMA
Channel Select Configuration Register to 0x04
and its Interrupt Select Configuration Regsiter to
0x00 or by clearing the Parallel Port Logical
Device’s Activate bit. Also, if the Host does not
have control of the PPPI, then the following
parallel port logical device registers are read as
follows.
Data Register (read) = last Data Register
(write).
Control Register (read): read as “cable not
connected” [STROBE, LF, and SLC = 0 and
nINIT = 1.
Status Register (read): nBUSY, PE, SLCT = 0,
nACK, nERR = 1.
If the Host does not have control of the Parallel
Port Physical Interface (PPPI), then it is left as a
function of the software driver or BIOS to de128
Note: Bit D7 of the 8051 memory mapped
DISABLE register (parallel port enable bit) has
no effect on the parallel port physical interface
pins when the port is owned by any source other
than the the Host (parallel port logical device).
PARALLEL PORT FDC INTERFACE
In this mode, the floppy disk control signals are
available on the parallel port pins. When this
mode is selected, the parallel port is not
available to the Host.
HOST (LEGACY) PARALLEL PORT
INTERFACE (FDC37N972 STANDARD)
PARALLEL PORT FDC PIN OUT
The FDC signals are muxed onto the ‘Parallel
Port pins as shown in the following table.
Outputs are OD14, Open Drain which sink
14ma.
In this mode, the parallel port pins are controlled
by the host through the parallel port logical
device. Refer to the Configuration section and
the Parallel Port section for information on the
configuration and control registers respectively.
TABLE 72 - PARALLEL PORT FLOPPY PIN OUT
CONNECTOR
PIN #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PARALLEL PORT SPP MODE
PIN
SIGNAL NAME
DIRECTION
nSTROBE
I/O
PD0
I/O
PD1
I/O
PD2
I/O
PD3
I/O
PD4
I/O
PD5
I/O
PD6
I/O
PD7
I/O
NACK
I
BUSY
I
PE
I
SLCT
I
nALF
I/O
nERR
I
nINIT
I/O
nSLCTIN
I/O
FDC MODE
SIGNAL
PIN
NAME
DIRECTION
nDS0
(O)*
nINDEX
I
nTRK0
I
nWP
I
nRDATA
I
nDSKCHG
I
nMTR0
(O)*
nDS1
(O)*
nMTR1
(O)*
nWDATA
O
nWGATE
O
DRVDEN0
O
nHDSEL
O
nDIR
O
nSTEP
O
*These pins are outputs in mode PPFD2; in mode PPFD1 only one pair, depending on Drive Swap bit,
is active and should be connected to the FDD, the inactive pair should not be connected to the FDD.
129
PARALLEL PORT FDC CONTROL
There are two modes of operation, PPFD1 and
PPFD2. These modes can be selected in
Global Configuration Register 0x25 (Device
Mode), bits 3 and 4. PPFD1 mode has only
drive 1 on the parallel port pins; PPFD2 mode
has drive 0 and 1 on the parallel port pins. Note:
The Drive Swap bit, FDD Mode Configuration
Register bit-4 (LD0_CRF0), can be used to swap
the motor and drive select outputs on of the
Parallel Port FDC.
TABLE 73 - PARALLEL PORT FDC MODES OF OPERATION
PPFD1: Drive 0 is on the FDC pins.
Drive Swap bit = 0
Drive 1 is on the parallel port pins.
Drive 1 is on the FDC pins.
Drive Swap bit = 1
Drive 0 is on the parallel port pins.
PPFD2: Drive 0 is on the parallel port pins.
Drive 1 is on the parallel port pins.
The following FDC output pins are Open Drain 14mA outputs when the Parallel Port FDC is selected
by the drive select register. Reminder, it is up to the designer to provide pull-up resistors on these
FDC output pins.
nWDATA, DRVDEN0, nHDSELm nWGATE, nDIR, nSTEP, nDS1, nDS0, nMTR0,
nMTR1.
130
the PAR PORT CONTROL, and the PAR PORT
DATA registers. In this mode, the parallel port
pins are not controlled by the parallel port
logical device. Refer to the 8051 section of this
specification for information on these control
registers.
PARALLEL PORT - 8051 CONTROL
In this mode, the parallel port pins are controlled
by the 8051 through a set of three on-chip
memory mapped registers. The memory
mapped registers are the PAR PORT STATUS,
FDC Parallel
Port Mode
CR25 Bits
[4:3]
01 or 10
01 or 10
01 or 10
00 or 11
00
00
00
TABLE 74 - FDC ON PARALLEL PORT ACTIVATION CONTROL
FDC in Parallel Parallel
Port In
Port
Power
Power
Parallel Port Pins
Active
Down
FDC Active Bit
Down
PP_ HA
(Mode) State
Bit
L0-CR30-Bit0
0
x
x
x
1
(FDC) Inactive
1
N
x
x
1
(FDC) Active
1
Y
x
x
1
(FDC) Inactive
X
x
0
x
1
(Parallel Port) Inactive
X
x
1
N
1
(Parallel Port) Active
X
x
1
Y
1
(Parallel Port) Inactive
X
x
x
x
0
(8051 Mode) Active
INACTIVE = HI-Z ON PINS
Active = OD14/O14 as per selected mode.
The FDD pins that are multiplexed onto the
Parallel Port function independently of the state
of the Parallel Port logical device. This affects
the pins when CR25 bits [4:3] are 01 or 10.
(Note: FDC Mode Bits L0-CRF0-B[7:6] have no
effect on the parallel port Pins).
FDC POWER MANAGEMENT
Direct power management is controlled through
Global Configuration Register 22 (CR22). Refer
to CR22 in the Configuration section for more
information.
Auto Power Management is enabled through bit0 of CR23. When set, this bit allows the FDC to
enter powerdown when all of the following
conditions have been met:
AUTO POWER MANAGEMENT
Auto Power Management (APM) capabilities are
provided for the following logical devices: Floppy
Disk, UART, Infrared and the Parallel Port. For
each logical device, two types of power
management are provided; direct powerdown
and auto powerdown.
1.The motor enable pins of the FDC’s DOR
register are inactive (zero).
2.The FDC37N972 must be idle; the MSR
register = 80h and the FDC’s INTerrupt = 0 (INT
may be high even if MSR = 80H due to polling
interrupts).
3.The head unload timer must have expired.
4.The Auto powerdown timer (10msec) must
have timed out.
SYSTEM POWER MANAGEMENT
See the “8051 System Power Management”
section for details.
An internal timer is initiated as soon as the auto
powerdown command is enabled. The
131
FDC37N972 is then powered down when all the
conditions are met.
REGISTER BEHAVIOR
TABLE 75 shows the AT and PS/2 (including
Model 30) configuration registers available. It
also shows the type of access permitted. In
order to maintain software transparency, access
to all the registers is maintained. As TABLE 75
shows, two sets of registers are distinguished
based on whether their access results in the
FDC37N972 remaining in powerdown state or
exiting it.
Disabling the auto powerdown mode cancels the
timer and holds the FDC block out of auto
powerdown.
DSR FROM POWERDOWN
Bit 6 of the FDC’s DSR register is another FDC
powerdown bit. If DSR powerdown is used
when the FDC37N972 is in auto powerdown, the
DSR powerdown will override the auto
powerdown. However, when the FDC37N972 is
awakened from DSR powerdown, the auto
powerdown will once again become effective.
Access to all other registers is possible without
awakening the FDC37N972. These registers
can be accessed during powerdown without
changing the status of the FDC37N972. A read
from these registers will reflect the true status as
shown in the register description in the FDC
section. Writes to these registers will result in
the FDC37N972 retaining the data and
subsequently reflecting it when the FDC37N972
awakens. Accessing the FDC37N972 during
powerdown may cause an increase in the power
consumption by the FDC37N972.
The
FDC37N972 will revert back to its low power
mode when the access has been completed.
WAKE UP FROM AUTO POWERDOWN
If the FDC37N972 enters the Powerdown State
through the auto powerdown mode, then the
FDC37N972 can be awakened by reset or by
appropriate access to certain registers.
If a hardware or software reset is used then the
FDC37N972 will go through the normal reset
sequence. If the access is through the selected
registers, then the FDC resumes operation as
though it was never in powerdown. Besides
activating the nRESET_OUT pin or one of the
software reset bits in the DOR or DSR registers,
the following register accesses will wake up the
FDC37N972:
1.
2.
3.
PIN BEHAVIOR
The FDC37N972 is specifically designed for
portable PC systems in which power
conservation is a primary concern. This makes
the behavior of the pins during powerdown very
important.
Seting any one of the motor enable bits in
the DOR register (reading the DOR does
not awaken the FDC37N972).
A read from the MSR register.
A read from or a write to the Data register.
The pins which interface to the floppy disk drive
are disabled so that no power will be drawn
through the FDC37N972 as a result of any
voltage applied to the pin within the VCC2
power supply range. Most of the pins that
interface to the system are left active to monitor
system accesses that may wake up the
FDC37N972.
Once awake, the FDC will reinitiate the auto
powerdown timer for 10 ms. The FDC37N972
will powerdown again when all the powerdown
conditions are satisfied.
132
the powerdown are labeled "Unchanged". Input
pins are "Disabled" to prevent them from
causing currents internal to the FDC37N972
when they have indeterminate input values.
SYSTEM INTERFACE PINS
Table 76 gives the state of the system interface
pins in the powerdown state. Pins unaffected by
TABLE 75 - PC/AT AND PS/2 AVAILABLE REGISTERS
BASE + ADDRESS
AVAILABLE REGISTERS
ACCESS PERMITTED
PC/AT
PS/2 (Model 30)
Access to these registers DOES NOT wake up the FDC37N972
00H
---SRA
R
01H
---SRB
R
02H
DOR (1)
DOR (1)
R/W
03H
------04H
DSR (1)
DSR (1)
W
06H
------07H
DIR
DIR
R
07H
CCR
CCR
W
Access to these registers wakes up the FDC37N972
04H
MSR
MSR
R
05H
Data
Data
R/W
Note 1: Writing to the DOR or DSR does not wake up the FDC37N972, however, writing any of the
motor enable bits or doing a software reset (via DOR or DSR reset bits) will wake up the FDC37N972.
TABLE 76 - STATE OF SYSTEM PINS IN FDC AUTO POWERDOWN
SYSTEM PINS
STATE IN AUTO POWERDOWN
Input Pins
nIOR
Unchanged
nIOW
Unchanged
AEN
Unchanged
nMEMRD
Unchanged
nMEMWR
Unchanged
SA[15:0]
Unchanged
SD[7:0]
Unchanged
nNOWS
Unchanged(hi-Z)
nDACKx
Unchanged
TC
Unchanged
nROMCS
Unchanged
Output Pins
nRESET_OUT
Unchanged
IRQx
Unchanged(low)
DB[0:7]
Unchanged
DRQx
Unchanged(low)
IOCHRDY
Unchange(n/a)
133
FDC. Whenever the FDC Shutdown bit is set
(see FDD Mode Register, bit-5 in the
Configuration Register Section) the FPD pin
goes high. If the FDC Shutdown bit is not set
then the FPD pin will go high whenever the FDC
bit (see bit 0 of the Power Mgmt Register in the
Configuration Section) is set and the FDC has
entered an auto powerdown state as described
above. If neither the FDC Shutdown bit nor the
FDC bit are set then the FPD pin goes active
“high” when the Power- down bit is set (see bit 6
of the Data Rate Select Register [DSR]) and
“low” when the Powerdown bit is cleared. Refer
to Table 78 - FDD POWER DOWN PIN
BEHAVIOR.
FDD INTERFACE PINS
All pins in the FDD interface, which can be
connected directly to the floppy disk drive itself,
are either DISABLED or TRISTATED. Pins
used for local logic control or part programming
are unaffected. Table 77 depicts the state of the
floppy disk drive interface pins in the
Powerdown State.
FDD POWER DOWN PIN (FPD) BEHAVIOR
The FPD pin can be used to automatically shut
off power to the floppy disk drive when it is not
required. The FPD pin is an active high output
signal that is driven based on the states of the
TABLE 77 - STATE OF FLOPPY DISK DRIVE INTERFACE PINS IN FDC POWERDOWN
STATE IN FDC AUTO
FDD PINS
POWERDOWN
Input Pins
nRDATA
Input
nWPROT
Input
nTRK0
Input
nINDEX
Input
nDSKCHG
Input
Output Pins
nMTR[1:0]
Tristated
nDS[1:0]
Tristated
nDIR
Active
nSTEP
Active
nWDATA
Tristated
WGATE
Tristated
nHDSEL
Active
DRVDEN[1:0]
Active
FPD
Active
134
Table 78 - FDD POWER DOWN PIN BEHAVIOR
POWER DOWN BIT, FDC BIT, GCR23 BIT-0
FDC SHUTDOWN BIT,
DSR, BIT-6
AUTO POWER DOWN
FDD MODE REGISTER
0
0
0
POWER DOWN BIT, FDC BIT, GCR23 BIT-0
FDC SHUTDOWN BIT,
DSR, BIT-6
AUTO POWER DOWN
FDD MODE REGISTER
1
0
0
X
1
0
X
X
1
Note:
FPD PIN
STATE
0
FPD PIN
STATE
1
1 (Note)
1
The FPD pin will go active when the FDC auto powers down. Refer to the
FDC auto power management section for more details.
UART POWER MANAGEMENT
PARALLEL PORT POWER MANAGEMENT
Direct power management is controlled by
CR22. Refer to CR22 in the Configuration
Section for more information.
Direct power management is controlled by
CR22. Refer to CR22 in the Configuration
Section for more information.
Auto power management is enabled by CR23 bit
4 and bit 5. When set, these bits allow the
following auto power management operations:
1.The transmitter enters auto powerdown when
the transmit buffer and shift register are empty.
2.The receiver enters powerdown when the
following conditions are all met:
A. Receive FIFO is empty
B. The receiver is waiting for a start bit
Auto power management is enabled by CR23 bit
3. When set, this bit allows the ECP or EPP
logical parallel port blocks to be placed into
powerdown when not being used.
The EPP logic is in powerdown under any of the
following conditions:
EPP is not enabled in the configuration
registers.
EPP is not selected through ecr while in ECP
mode.
Note:
While in powerdown the Ring Indicator
interrupt is still valid.
The ECP logic is in powerdown under any of the
following conditions:
EXIT AUTO POWERDOWN
ECP is not enabled in the configuration
registers.
SPP, PS/2 Parallel port or EPP mode is
selected through ecr while in ECP mode.
The transmitter exits powerdown on a write to
the transmit buffer. The receiver exits auto
powerdown when RXD changes state.
XIT AUTO POWERDOWN
The parallel port logic can change powerdown
modes when the ECP mode is changed through
the ecr register or when the parallel port mode is
changed through the configuration registers.
135
8051 EMBEDDED CONTROLLER
the Hardware Description of the 8051, 8052,
and 80C51 and the 80C51BH-1/80C51BH-2
CHMOS Single-Chip 8 Bit Microcomputer data
sheets in the 8 Bit Embedded Controller
Handbook.
8051 FUNCTIONAL OVERVIEW
The
High-Performance
8051
embedded
controller is a fully static CMOS core compatible
with
the
industrystandard
80C51
microcontroller. The high-performance 8051
features include:
FEATURES
2.5X average instruction execution speed
improvement over the entire instruction set; i.e.,
typical 4-clock instruction cycle in highperformance 8051 vs. 12-clock instruction cycle
in standard 8051.
Faster clock speed: 24MHz or higher vs. 16MHz
in standard 8051.
Dual Data Pointers
More Interrupts: Power-Fail, External Interrupt 2,
External Interrupt 3, etc.
16x32K External ROM
256 Byte Internal Scratch ROM
256 Bytes Internal RAM
256 Bytes of External RAM
256 Byte External Memory/Mapped Control
Register Area
128 Byte Special Function Register Area
Access to 256 Byte RTC CMOS RAM
8042 style Keyboard Controller Host Interface
Eleven Interrupt Sources
Watch Dog Timer (WDT)
Ring Oscillator with Fail Safe Control
A set of External Memory/Mapped Control
Registers provides the 80C51 core with the
ability to directly control many functional blocks
of the FDC37N972.
High-Performance
Features
This section concentrates on the FDC37N972
enhancements to the 80C51. For Non-Standard
Special Function Registers, interrupt processing
and Timer 2 functions see Appendix B. For
general information about the 80C51, refer to
8051
Implemented
There are five significant features implemented
in the high-performance 8051 core. These
features, summarized in TABLE 79, are
described more fully in the sub-sections that
follow.
TABLE 79 - HIGH-PERFORMANCE 8051 IMPLEMENTED FEATURES
FEATURE
VALUE
DESCRIPTION
Internal RAM Size
256 (bytes)
The internal RAM size is 256 bytes to maintain
compatibility with existing implementations.
Internal Timers (Note)
3
There are three internal Timers (T0, T1 & T2).
Internal ROM Size
2048 (bytes) The internal ROM size is 2048 bytes to maintain
compatibility with existing implementations.
Serial Ports
1
There is one Serial Port.
Interrupts
11
The high-performance 8051 interrupt unit provides
11 interrupt sources (see TABLE 92).
Note:
The external inputs for Timer/Counter T0, T1, and T2, as well as the Timer/Counter 2
capture/reload trigger T2EX are not supported in the FDC37N972.
136
INSTRUCTION SET on page 380 for number of
cycles on individaul instruction requries.
FUNCTIONAL BLOCKS
Below are the functional blocks that the 8051
core has control of through its on-chip
memory/mapped external registers.
POWERING UP OR RESETTING THE 8051
DEFAULT RESET CONDITIONS
8042 Style Keyboard Controller Interface
Extended Interrupts
Power Management Functions
Direct Keyboard Scan Matrix (up to 128 keys)
Four channel PS/2 Interface
Dual Access Bus Interface
LED controls
Two Pulse Width Modulators
RTC CMOS RAM Access
8051 Control of the Parallel Port Interface
42 General Purpose I/O (GPIO) pins
ACPI Embedded Controller
PM1 Block
The FDC37N972 has two sources of reset: a
VCC1 Power On Reset (VCC1 POR) or a VCC2
POR. An FDC37N972 reset from any of these
sources will cause the hardware response
shown in TABLE 86, 8051 On-Chip External
Memory Mapped Registers.
Note that the
values shown are those prior to any resident
firmware control. Refer to TABLE 86 for the
effect of each type of reset on each of the onchip registers.
POWER-UP SEQUENCE
HIGH-PERFORMANCE 8051 CYCLE TIMING
AND INSTRUCTION SET
When the 8051 first powers up by VCC1, the
ring oscillator is started, once this has
stabilized, the 8051 starts executing from
program address 00. Once running, the 8051
can access all of the registers that are on VCC1
and if VCC2 is at 3.3V it can access all of the
registers on VCC2. For on-chip registers
powered by VCC1 which are reset upon VCC2
Power On Reset (VCC2 POR), it is important
that 8051 firmware not initialize or write to any
of these registers until 1ms following VCC2 =
3.3V AND PWRGD = 1 (See TABLE 86.)
The high-performance 8051 processor offers
increased performance by executing instructions
in a 4-clock cycle, as opposed to the standard
8051. The shortened bus timing improves the
instruction execution rate for most instructions
by a factor of three over the standard 8051
architectutres.
Some instructions require a different number of
instruction cycles on the high-performance
8051than they do on the standard 8051. In the
standard 8051, all instructions except for MUL
and DIV take one or two instruction cycles to
complete.
In the high-performance 8051
architecture, instructions can take between one
and five instructions to complete. The average
speed improvement for the entire instruction set
is approximately 2.5X. See TABLE 253 - 8051
Note: In order to guarantee that the external
Flash device has powered up and is ready to
operate before the 8051 attempts to access it,
the internal VCC1 POR pulse has been
extended to 20ms. The internal VCC1 POR
signal is asserted upon VCC1 reaching a valid
level and will remain asserted for a period of
20ms
following
the
assertion
of
the
VCC1_PWRGD pin.
137
No power to system
(VCC0, VCC1, VCC2 off)
VCC0, VCC1 on; VCC2 off
VCC1 powered registers
are reset to their VCC1
POR values. IRESET_OUT
bit forced high and latched
by the FDC37N972
hardware
Ring oscillator is started
Once the ring oscillator has
stabilized, the 8051 is held in
reset for the required number
of clock cycles and then
released.
N
The 8051 begins executing
from program address 00h.
nEA = 0 ?
Y
The 8051 begins executing
code at address 8000h.
FIGURE 10 - SYSTEM POWER UP SEQUENCE
138
SYSTEM RESET SEQUENCE
System is running
(VCC2 on, VCC1 on)
8051 executing
keyboard firmware.
Somehow a reset event is
conveyed to the 8051.
Note1: IRESET_OUT being reset to 0
(Toggling from 1 to 0)
1) sets 8051STP_CLK[0]=1
command from host and/or directly
2) sets HMEM[7:0]=03h
from a GPI/O type pin transition?
and
3) causes the StopClock Counter to start counting down
Note 2: In order to leave idle mode the 8051 must receive
an interrupt; typically a software timer interrupt will be used.
8051 asserts iRESET_OUT
nRESET_OUT pin
8051 programs the
Stop Clock Counter
STP_CNT[3:0] <- X
nRESET_OUT de-asserted
nRESET_OUT pin
8051 releases the system
reset (iRESET_OUT
register bit is reset)
(Note 1)
nRESET_OUT = high &
8051STP_CLK = 1 cause
8051 clock to stop
8051 goes into idle mode
Host now owns Flash
Interface,
shadows Flash to RAM
Y
N
Stop-clock cnt
=0?
Host resets
8051STP_CLK bit
N
8051 Timer
IRQ ?
Y
(Note 2)
8051 wakes up from idle
mode and starts executing
from where it left off
FIGURE 11 - TYPICAL SYSTEM RESET SEQUENCE
139
CPU RESET SEQUENCE
emulated CPU instructions that cause the CPU
to jump to its shadowed Boot vector address at
(1MB - 16B).
Often the Host CPU (x486 or Pentium) is reset
by the hardware signal, CPU_RESET, which is
issued by software to switch the Processor from
Protected, or “Virtual 86”, mode back to Real
mode. CPU_RESET can be generated from the
FDC37N972 8051 core or it may be generated
from other logic on the PC motherboard.
CPU_RESET is meant only to reset the CPU;
the rest of the system continues to run normally,
including the keyboard BIOS in the 8051.
If the host does not have control of the Flash
when
nROMCS
and
nMEMRD
are
simultaneously asserted, the FDC37N972
decodes the lower three System Address bits,
SA[2:0] and presents the Host with 0xEA on the
System Data Bus SD[7:0] when SA[2:0] = 0, or
0xF0 otherwise (FIGURE 12). This results in an
opcode that instructs the Host CPU to perform
an absolute jump to address 0xFFFF0, where
the BIOS is shadowed.
Reacting to the CPU_RESET, the CPU performs
a code fetch to a reset vector address that is
located 16 bytes below the top address of
memory (4GB - 16B). This generates an active
nROMCS to the FDC37N972 along with
memory RD strobes, but since the 8051 has not
passed control of the Flash interface to the Host
CPU the FDC37N972 must supply a set of
NOTE: The FDC37N972 CPU reset sequence
described above is independent of the Bonding
Option.
140
System Vcc
SD7
SD6
SD5
SD4
A2
SD3
A1
A0
SD2
SD1
SD0
System Data Bus SD[7:0]
nROMCS
nMEMRD
HSTFL
FIGURE 12 - SYSTEM RESET BOOT VECTOR
141
8051 CLOCK CONTROLS
CLOCK SOURCES
Frequency Controls
EXTERNAL CLOCK SIGNAL
The 8051 system clock frequencies are selected
by the KBDCLK[1:0] control bits in the KSTP_CLK
register.
The KSTP_CLK register is MMCR
0x7F27.
The external clock source is from a
14.318MHz TTL compatible clock.
VCC2
must be powered in order for this to occur.
In the KSTP_CLK register, the STP_CNT[3:0] bits
are moved from the KSTP_CLK register to the
STOP_COUNT register, the KBDCLK ENABLE bit
and a RESERVED bit (possibly to control the
14.318 MHz PLL Power-Down function) are added
to the KSTP_CLK register.
INTERNAL CLOCK SIGNAL
The 8051 may program it self to run off of an
internal ring oscillator having a frequency
range between 4 and 12MHz. This is not a
precise clock, but is meant to provide the 8051
with a clock source when VCC2 is shut down
in the system.
To “stop” the 8051 clock, use the KBDCLK
ENABLE bit D0 in the KSTP_CLK register (TABLE
81).
TABLE 80 - STOP_COUNT REGISTER
HOST ADDRESS
-
HOST TYPE
8051 TYPE
BIT NAME
D7
R
8051 ADDRESS
0x7F2F
D6
D5
R
R
RESERVED
D4
R
POWER
PLANE
VCC1
DEFAULT
0x00
D3
D2
D1
R/W
R/W
R/W
STP_CNT[3:0]
D0
R/W
until the external nRESET_OUT pin goes
inactive high (deasserts). The STP_CNT[3:0]
bits are D0 – D3 in the FDC37N972 KSTP_CLK
Register.
STP_CNT[X]
This defines the number of machine cycles from
when the internal IRESET_OUT bit is cleared
142
HOST ADDRESS
-
HOST
TYPE
8051
TYPE
BIT
NAME
TABLE 81 - KSTP_CLK REGISTER
POWER
8051 ADDRESS
PLANE
0x7F27
VCC1
DEFAULT
0x10
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R/W
R/W
R/W
R/W
R
R
R/W
R/W
KBCLK/ROSC
ROSCEN
PLL_STOP
KBDCLK
ENABLE
1
KBDCLK[1:0]
RESERVED
KBDCLK/ENABLE
ROSCEN
When the KBDCLK ENABLE bit is “0”, the 8051
PLL clock is stopped, like when the
KBDCLK[1:0] = 0,0 in the FDC37C95X. When
KBDCLK ENABLE is “1”, the 8051 PLL clock is
running.
This bit reflects the state of the ring oscillator
clock at all times. The 8051 can write this bit to
start or stop the ring oscillator. Other hardware
events can also start or stop this clock.
= 1 turn on ring oscillator
= 0 turn off ring oscillator
This bit is reset when the 8051 goes into
“SLEEP” mode and is set when the 8051 first
wakes up from “SLEEP” mode.
PLL_STOP
The PLL_STOP bit D1 is used to control the
power state of the 14.318MHz PLL. When the
PLL_STOP bit is “1” the PLL and all of the
internal clocks except for the RTC and Ring
Oscillator are stopped. When the PLL_STOP
bit is “0” the PLL and all of the internal clocks
are running. When VCC2 is active and the
PLL_STOP bit changes from “1” to “0”, there is
a delay of 100µs max. before the PLL clocks are
stable.
KBCLK/ROSC
This bit is used to control the clock source for
the 8051.
1 = 8051 clock source is KBCLK
0 = 8051 clock source is ring oscillator.
This bit is reset when the 8051 just wakes up
from the “SLEEP” mode
KBDCLK[1:0]
These 2 bits control the 8051 system clock
frequencies.
143
TABLE 82 - KBDCLK CONTROL BIT ENCODING
KBDCLK[1:0] CONTROL BITS
KSTP_CLK REGISTER
KBD CLOCK FREQUENCIES
D7
D6
FDC37N972
0
0
12MHz
0
1
16MHz
1
0
24MHz
1
1
RESERVED
8051 RING OSCILLATOR FAIL-SAFE CONTROLS
A fail-safe control for the 8051 ring oscillator is
in the FDC37N972 as protection against
unpredicted VCC2 power failures.
3.
The 8051 system clock is switched to the ring
oscillator.
NOTE: following a power fail
event, VCC2 must be ≥ 3V and the
14.318MHz input clock CLOCKI must remain
stable for 10µs min. (FIGURE 4 - VCC2
POWER-UP TIMING).
4.
An 8051power-fail interrupt (pfi) is generated
to inform the 8051 of the power fail event.
The fail-safe ring oscillator sequence occurs
as follows:
1.
A VCC2 power-fail event is detected when
the PWRGD pin changes from “1” to “0”
(FIGURE 3 – POWER-FAIL EVENT).
2.
The power-fail event sequence starts the
8051 Ring Oscillator. The Ring Oscillator
frequency range is the same as the
FDC37C95X; i.e., 4MHz to 12MHz.
There are four functional power-fail event
scenarios.
The actions taken for each are
described in TABLE 83.
144
1
2
3
4
8051 STATE
SLEEPING
ON RING
OSC.
RUNNING ON
RING OSC.
RUNNING ON
PLL
STOPPED ON
PLL
NOTE 1:
NOTE 2:
TABLE 83 - POWER-FAIL EVENT ACTIONS
ACTIONS
ASSERT
ASSERT
8051
ASSERT
RING
FLASH
DESCRIPTION
PGI1
OSC.2
ACCESS
3
NO FAIL-SAFE ACTIONS TAKEN
3
-
-
3
3
-
3
3
3
NO FAIL-SAFE ACTIONS TAKEN;
8051 CAN RESPOND TO PFI IF
NEEDED.
INTERNAL PWRGD IS DELAYED
UNTIL RING OSC. IS ASSERTED.
INTERNAL PWRGD IS DELAYED
UNTIL RING OSC. IS ASSERTED
AND THE 8051 CONTROLS THE
FLASH.
PGI is the Powergood Interrupt bit D0 in the PWRGD_INT register (see Power Fail
IRQ on page 184).
The 8051 is switched to the Ring Oscillator after a delay.
(See PWRGD and VCC1_PWRGD timing is illustrated in FIGURE 3 – POWER-FAIL EVENT through
FIGURE 5 - VCC1_PWRGD TIMING)
FFFFh by the 8051. This 32K can be mapped
to any of the sixteen 32K memory block in the
512K external ROM by the KMEM register.
8051 MEMORY MAP
The FDC37N972 has two modes of ROM
support based on the Bondout Option.
Under SMSC Bondout, the 8051 can address
256B of internal Scratch ROM and 32K of
external ROM. The nEA pin is used to enable
access to the 256B of internal Scratch ROM or
External program ROM. The FDC37N972 also
contains 256 bytes of internal on-chip RAM.
Under ALT Bondout, the 8051 can address 2KB
of internal ROM, 256B of internal Scratch ROM,
and up to 32K of external ROM. When high, the
nEA pin is used to enable fetches to the 2K +
256B of internal ROM and when low the nEA pin
diables fetches to internal ROM access by
routing them to external ROM. The FDC37N972
also contains 256 bytes of internal on-chip RAM.
Under SMSC Bondout with nEA=0, all the ROM
is addressed as the external ROM. It can
support up to 32K bytes of external code
memory addressed as 00h to 7FFFh (the
addresses from 8000h to FFFFh wrap to the
same addresses as 00h to 7FFFh). This 32K
can be mapped to any of the sixteen 32K
memory blocks in the 512K external ROM by the
For ALT Bondout with nEA=1, the internal ROM
is addressed from 0-7FF, all ROM access from
800h-7FFFh are invalid address locations. It
can support up to 32K bytes of additional
external code memory addressed as 8000h to
145
Memory Map Configuration Control Bit
KMEM register. At initial power-up (VCC1 POR)
the chip will execute from the block selected by
the default value of the KMEM register.
The Configuration Register 0, an 8051 memory
mapped register at address 7FF4h includes a bit
called the Memory Map Control bit (MMC). The
MMC bit is bit-3 of this register and defaults to
zero on VCC1 POR. When MMC=0 the 8051
memory map will contain an additional 256
bytes of external scratch RAM in the address
range 7D00h through 7DFFh. When MMC=1
the scratch ram at 7D00h-7DFFh becomes
scratch ROM at 00h-0FFh (for an SMSC Bond
Out device) or scratch ROM at 800h-8FFh (for
an ALT Bond Out device).
The 8051 can access up to 32K bytes of
external RAM addressed from 0-7FFFh. Refer to
TABLE 86 for a list of the implemented on-chip
memory mapped registers. External memory
addressed from 8000h-FFFFh will access the
32K bytes of program memory (8000-FFFFh)
selected by the KMEM register.
The 256 bytes of RAM from 7E00h-7EFFh as
well as the 256 bytes of Scratch RAM from
7D00h-7DFFh are powered by VCC1. These
are general purpose Read/Write registers
available to the 8051. The Scratch RAM may be
converted into scratch ROM by setting the MMC
bit.
The Configuration Register 0 register is
described in the 8051 Control Register Section
of this specification.
SMSC/ALT Bond Option [nEA=0]
Regardless of the bonding option, if nEA is held
low the 8051 memory map for both options is
the same as shown in the figure below.
146
FFFFh
Same
0000h External
8000h
7FFFh
7F00h
7 E0 0 h
7D00h
M/M
RAM
Scratch
Indirect
FFh
SFR (Direct
FFh
80h
80h
00h
Direct and
External
Program
Internal
Data
S M S C / A L T Bondout, n EA = 0 , M M C
FIGURE 13 - 8051 MEMORY MAP FOR ANY BOND OPTION WITH NEA LOW
Instructions to access memory
MOV
: Internal RAM/Registers.
MOVC : Program ROM from 0000h through FFFFh
MOVX : External RAM from 7D00h through 7FFFh -ANDExternal ROM from 8000h through FFFFh. (allows flashing of ROM).
SMSC Bond Option [nEA=1]
147
This section describes the 8051 memory map for an SMSC bonded part where the nEA pin is high.
The MMC bit determines the configuration of the 8051’s memory map. When nEA=1 an additional
256 of re-writable ROM space can be added to the 8051’s internal ROM space to allow patch code
upgrades. In order to take advantage of this extra 256 bytes of scratch RAM/ROM certain design
considerations must be met as outlined in the following Programmers notes.
MMC bit = 0
When the MMC bit is low (VCC1 POR default) a hard coded long jump LJMP to 8000h is encoded at
addresses 00h through 02h and a 256 byte scratch RAM is located at external addresses 7D00-7DFF.
The encoding for the hard coded Long Jump is shown in the following table.
HARD CODED LJMP TO 8000H.
8051 Address
Encoding
00h
02h
01h
80h
02h
00h
FFFFh
32K
External
8000h
7FFFh
7F00h
7E00h
7D00h
M/M Registers
RAM
Scratch RAM
FFh
Indirect Only
SFR (Direct Only)
FFh
80h
80h
02h
00h
Hard Coded Internal
00h
Direct and Indirect
External
Program Memory
Internal
Data Memory
SMC Bondout, nEA = 1, Reg MMC bit = 0
FIGURE 14 - 8051 MEMORY MAP FOR SMC BOND OPTION WITH NEA=1, MMC=0
148
Instructions to access memory
MOV
: Internal RAM/Registers.
MOVC : Program ROM from 8000h through FFFFh
MOVX : External RAM from 7D00h through 7FFFh -ANDExternal ROM from 8000h through FFFFh. (allows flashing of ROM).
MMC bit = 1
When the MMC bit is high the scratch RAM at 7D00h-7DFFh is disabled and now becomes the
executable internal scratch ROM at address locations 00h-0FFh. The hard coded LJMP to 8000h is
overrided by the scratch ROM.
FFFFh
32K
External
8000h
7FFFh
7F00h
7 E0 0 h
M/M
RAM
7D00h
Indirect
FFh
FFh
00h
SFR (Direct
FFh
80h
80h
Scratch
Internal
00h
Direct and
External
Program
Internal
Data
S M S C B o n d o u t , nEA = 1 , M M C b i t = 1
FIGURE 15 - 8051 MEMORY MAP FOR SMC BOND OPTION WITH nEA=1, MMC=1
Instructions to access memory
MOV
: Internal RAM/Registers.
MOVC : Program ROM from 8000h through FFFFh called from 00h-0FFh or from 8000h-0FFFFh.
Program ROM from 00h through 0FFh called from 00h-0FFh only.
MOVX : External RAM from 7E00h through 7FFFh -ANDExternal ROM from 8000h through FFFFh. (allows flashing of ROM).
149
ALT Bond Option [nEA=1]
This section describes the 8051 memory map for an ALT bonded part where the nEA pin is high. The
MMC bit determines the configuration of the 8051’s memory map.
MMC bit = 0
When the MMC bit is low (VCC1 POR default) an additional 256 bytes of Scratch RAM are added to
the 8051’s memory map at addresses 7D00h though 7DFFh.
FFFFh
32K
External
8000h
7FFFh
7F00h
7E00h
7D00h
M/M Registers
RAM
Scratch RAM
FFh
7FFh
2K
Internal Mask ROM
Indirect Only
SFR (Direct Only)
FFh
80h
80h
00h
00h
Direct and Indirect
External
Program Memory
Internal
Data Memory
ALT Bondout, nEA = 1, MMC bit = 0
FIGURE 16 - 8051 MEMORY MAP FOR ALT BOND OPTION WITH NEA=1, MMC=0
Instructions to access memory
MOV
: Internal RAM/Registers.
MOVC : Program ROM from 8000h through FFFFh called from 00h-7FFh or from 8000h-0FFFFh.
Program ROM from 00h through 7FFh called from 00h-7FFh only.
MOVX : External RAM from 7D00h through 7FFFh -ANDExternal ROM from 8000h through FFFFh. (allows flashing of ROM).
150
MMC bit = 1
When the MMC bit is high an additional 256 bytes of executable ROM space between address 800h
and 8FFh is added to the 8051’s internal ROM space to allow patch code upgrades.
FFFFh
32K
External
8000h
7FFFh
1000h
8FFh
800h
7FFh
RESERVED
Scratch ROM
Internal
7F00h
M/M Registers
7E00h
RAM
7D00h
FFh
2K
Internal Mask ROM
Indirect Only
SFR (Direct Only)
FFh
80h
80h
00h
00h
Direct and Indirect
External
Program Memory
Internal
Data Memory
ALT Bondout, nEA = 1, MMC bit = 1
FIGURE 17 - 8051 MEMORY MAP FOR ALT BOND OPTION WITH nEA=1, MMC=1
Instructions to access memory
MOV
: Internal RAM/Registers.
MOVC : Program ROM from 8000h through FFFFh called from 00h-8FFh or from 8000h-0FFFFh.
Program ROM from 00h through 8FFh called from 00h-8FFh only.
MOVX : External RAM from 7E00h through 7FFFh -ANDExternal ROM from 8000h through FFFFh. (allows flashing of ROM).
151
A chip enable output nFCS for the Flash ROM
interface is ‘1’ when the 8051 is sleeping with
control of the Flash or can optionally be
configured
to
follow
nFRD
(see
PROGRAMMABLE FLASH CHIP SELECT on
page 196). The external Flash ROM interface
timing for the high-performance 8051 core is
shown below in FIGURE 18. The preliminary
Flash ROM Address read-access times are
shown in TABLE 84.
(NOTE: THESE
SPECIFICATIONS
ARE
SUBJECT
TO
CHANGE)
FLASH ROM INTERFACE
OVERVIEW
The FDC37N972 supports a 512k Byte Flash
ROM interface (see HOST BOOT BLOCK
SELECT on page 195.) A high-order address
bit FA18 is added to the FDC37N972 on
GPIO13 (see TABLE 4 for a description of the
Alternate Function pins and MULTIFUNCTION
PIN on page 271).
TABLE 84 - FLASH ADDRESS ACCESS TIMES
8051 CLOCK
FLASH ADDRESS
(MHz)
ACCESS TIME (ns)
24
65
16
115
12
165
cycle
c1
c2
c3
c4
clock
FALE
Taddress access
nFRD
FAD[7:0]
FA[8:18]
ADDRESS
A0 – A7 OUT
INSTRUCTION IN
ADDRESS A8 – A18 OUT
FIGURE 18 - 8051 PROGRAM READ FLASH ROM INTERFACE TIMING
152
8051 CONTROL REGISTERS
SPECIAL FUNCTION REGISTERS (SFRS)
The high-performance 8051 includes SFRs to support the extended interrupt unit and timer 2 (TABLE
85). The high-performance 8051 does not support the MISZ register.
TABLE 85 - 8051 CONTROL REGISTERS
REGISTER
NAME
STARTING
ADDRESS
D7
SP
DPLO
DPHO
DPL1(1)
DPH1(1)
DPS(1)
PCON
81H
82H
83H
84H
85H
86H
87H
TCON
TMOD
TL0
TL1
TH0
TH1
SCON*
88H
89H
8AH
8BH
8CH
8DH
8EH
91H
92H
98H
SBUF
IE
IP*
T2CON
99H
A8H
B8H
C8H
RCAP2L
RCAP2H
TL2
TH2
PSW
EICON(1)
CAH
CBH
CCH
CDH
D0H
D8H
ACC
E0H
CKCON(1,3)
EXIF(1)
MPAGE(1,2)
REGISTER
RESET
VALUE
FIX BIT REGISTERS
D6
D5
D4
D3
D2
D1
D0
7H
0
SMO
D0
TF1
GATE
0
-
0
1
0
1
0
GF1
0
GF0
0
STO
P
IE0
M1
SEL
IDLE
TR1
C/T
TF0
M1
TR0
M0
IE1
GATE
IT1
C/T
IE5
IE4
T2M
IE3
T1M
IE2
T0M
1
MD2
MD1
0
MD0
0
SM0_
0
SM1
_0
SM2
_0
REN
_0
TB8_
0
RB8
_0
TI_0
RI_0
EA
1
TF2
ES1
PS1
ET2
PT2
ES0
PS0
ET1
PT1
EX1
PX1
TCLK
EXEN2
TR2
ET0
PT0
C/T2
EX0
PX0
CP/
RL2
EXF2
RCLK
CY
SMO
D1
AC
1
F0
EPFI
RS1
PFI
RS0
WDTI
OV
0
F1
0
P
0
153
0
30H
IT0
M0
1H
8H
00H
40H
REGISTER
NAME
STARTING
ADDRESS
D7
REGISTER
RESET
VALUE
FIX BIT REGISTERS
EIE(1)
E8H
1
D6
1
B
EIP(1)
F0H
F8H
1
1
D5
1
D4
EW
DI
D3
EX5
D2
EX4
D1
EX3
D0
EX2
E0H
1
PW
DI
PX5
PX4
PX3
PX2
E0H
(1) Not part of standard 8051 architecture. See Appendix B.
(2) The MPAGE special function register provides a means of 16-bit addressing without using the
data pointer. During MOVX A, @Ri and MOVX @Ri, A instructions, the 8051 places the contents
of the MPAGE register on the upper 8 address bits. The MPAGE register default is ‘00H’.
(3) The TM2 bit in the CKCON register is available, but not used, when Timer 2 is not implemented
(timer =0).
*=Bit-addressable register
MEMORY MAPPED CONTROL REGISTERS (MMCRS)
PM1 Block Interface (PM1). These addresses
are described in Column #2 (SYSTEM
ADDRESS) in TABLE 86.
MMCR SUMMARY
The Memory Mapped Control Registers are onchip memory-mapped registers that can be
accessed by the 8051 but are external to the
8051 core (TABLE 86). The 8051 can access
all of the Memory Mapped Control Registers.
The 8051 MMCR addresses are described in
Column #4 (8051 ADDR) in TABLE 86.
These Memory Mapped Control Registers can
be accessed by the following types of 8051
instructions.
movx
A,@DPTR
movx
@DPTR,A
mov
MPAGE,#7FH
movx
A,@Rx (R0 or R1 only)
mov
MPAGE,#7FH
movx
@Rx,A (R0 or R1 only)
Some MMCRs can also be accessed through
the ISA Host interface (ISAxxh), the Mailbox
Registers interface (MBXxxh), the Embedded
Controller Interface (ECI BASE), and the ACPI
154
TABLE 86 - 8051 ON-CHIP EXTERNAL MEMORY MAPPED REGISTERS
Y
REF.
PAGE#
205
N
O
T
E
S
7
1,7
-
Y
205
7
VCC1
00h
Y
205
2,7
-
VCC1
00h
-
13
-
-
VCC1
VCC1
00h
-
13
13
R/W
R
F3h
F4h
F5h
F6h
F7h
F8h
F9h
FAh
R/W
R/W
R/W
R/W
R/W
R/W
R/W
W
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
00h
00h
80h
00h
00
00h
00h
-
13
Y
177
163
293
294
294
294
294
205
3,7
-
-
FBh
FCh
R/W
R/W
VCC1
VCC1
01h
00h
-
210
193
17
-
-
FDh
FEh
FFh
00h
R/W
W
W
R/WC
VCC1
VCC1
VCC1
VCC1
00h
00h
206
210
210
168
-
-
01h
R/W
VCC1
00h
170
SYSTEM
REGISTER
NAME
Reserved
Host I/F Data
Reg
[KBD
Data/Command
Write Reg.]
Host I/F Data
Reg
[KBD Data
Read Reg.]
Host I/F Status
Reg
[KBD Status
Reg.]
RTC Address
1
RTC Data 1
RTC Address
2
RTC Data 2
HTIMER
Config Reg 0
RTCCNTRL
RTCADDRL
RTCDATAL
RTCADDRH
RTCDATAH
Aux Host Data
Reg
[KBD Data
Read Reg.]
GATEA20
FLASH
CONFIG.
PCOBF
SETGA20L
RSTGA20L
Interrupt 0
source register
Interrupt 0
mask register
W
8051
ADDR.
(7F00+)
F0h
F1h
8051
TYPE
W
R
POWER
PLANE
VCC1
VCC1
VCC1
POR
-
ISA 60h
R
F1h
W
VCC1
ISA 64h
R
F2h
R/W
R/W
-
R/W
R/W
ISA 60h
SYSTEM
ADDRESS
ISA 60h
ISA 64h
ADDR.
TYPE
155
VCC2
POR
-
ZERO
WAIT
STATE
(8)
6
SYSTEM
REGISTER
NAME
Interrupt 1
source register
Interrupt 1
mask register
Keyboard Scan
out
Keyboard Scan
in
Device Rev
register
Device ID
register
(SMSC
BONDOUT)
Device ID
register
(ALT
BONDOUT)
System-to8051
Mailbox
register 0
8051-tosystem
Mailbox
register 1
Mailbox
register [2-F]
GPIO
Direction
register A
GPIO Output
register A
GPIO Input
register A
GPIO
Direction
register B
GPIO Output
register B
GPIO Input
register B
SYSTEM
ADDRESS
-
ADDR.
TYPE
8051
ADDR.
(7F00+)
8051
TYPE
-
02h
-
-
-
N
O
T
E
S
VCC1
POR
R/WC
POWER
PLANE
VCC1
00h
REF.
PAGE#
170
03h
R/W
VCC1
00h
171
-
04h
W
VCC1
20h
215
-
-
04h
R
VCC1
-
215
-
-
05h
06h
R
VCC1
00h
-
-
07h
R
VCC1
0Bh
163
-
-
07h
R
VCC1
0Ah
163
MBX 82h
R/W
08h
RC
VCC1
00
Y
248
4
MBX 83h
RC
09h
R/W
VCC1
00
Y
249
5
MBX
84h-91h
-
R/W
0A-17h
R/W
VCC1
00h
Y
244
-
18h
R/W
VCC1
00h
262
-
-
19h
R/W
VCC1
00h
262
-
-
1Ah
R
VCC1
-
262
-
-
1Bh
R/W
VCC1
02h
263
-
-
1Ch
R/W
VCC1
00h
263
-
-
1Dh
R
VCC1
-
263
156
VCC2
POR
ZERO
WAIT
STATE
(8)
-
-
162
-
SYSTEM
REGISTER
NAME
GPIO
Direction
register C
GPIO Output
register C
GPIO Input
register C
LED register
OUT register
D
OUT register E
IN register F
PWM0 register
PWM1 register
KSTP_CLK
Fan Control
Register
KMEM
WAKEUP
Source 1
WAKEUP
Source 2
WAKEUP
mask 1
WAKEUP
mask 2
KSTP_CLK_2
Multiplexing 3
register
ACCESS.BUS
Control reg
ACCESS.BUS
Status reg
ACCESS.BUS
Own Address
reg
ACCESS.BUS
Data reg
ACCESS.BUS
Clock
-
SYSTEM
ADDRESS
-
ADDR.
TYPE
8051
ADDR.
(7F00+)
8051
TYPE
-
1Eh
-
-
-
VCC1
POR
R/W
POWER
PLANE
VCC1
00h
REF.
PAGE#
264
1Fh
R/W
VCC1
00h
264
-
20h
R
VCC1
-
264
-
-
21h
22h
R/W
R/W
VCC1
VCC1
00h
00h
249
265
MBX 92h
MBX 93h
MBX 9D
R/W
R/W
R/W
23h
24h
25h
26h
27h
28h
R/W
R
R/W
R/W
R/W
R/W
VCC1
VCC1
VCC1
VCC1
VCC1
VCC1
00h
00h
00h
10h
30h
265
265
252
252
143
253
-
-
29h
2Ah
R/W
R/WC
VCC1
VCC1
00h
00h
188
172
-
-
2Bh
R/WC
VCC1
00h
173
-
-
2Ch
R/W
VCC1
00h
175
-
-
2Dh
R/W
VCC1
00h
175
-
-
2Eh
2Fh
30h
R/W
R/W
VCC1
VCC1
00h
00h
-
-
31h
W
VCC1
00h
239
-
-
31h
R
VCC1
81h
239
-
-
32h
R/W
VCC1
00h
239
-
-
33h
R/W
VCC1
00h
240
-
-
34h
R/W
VCC1
00h
240
-
-
35h
-
-
-
-
157
VCC2
POR
ZERO
WAIT
STATE
(8)
Y
Y
Y
-
-
142
272
N
O
T
E
S
-
SYSTEM
REGISTER
NAME
WDT
Control/Status
WDT Timer
PP Status Reg
PP Control
Reg
PP Data Reg
Multiplexing 1
register
Output Enable
register
DISABLE
register
Multiplexing 2
register
PS/2 Port1
Control/
PS/2 Chan A
Tx/Rx
PS/2 Port1
Status/
PS/2 Chan A
Control
PS/2 Port1
Error/
PS/2 Chan A
Status
PS/2 Port1
Transmit
PS/2 Port1
Receive/
PS/2 Chan B
Tx/Rx
PS/2 Chan B
Control
PS/2 Chan B
Status
PS/2_
STATUS_2
SYSTEM
ADDRESS
-
ADDR.
TYPE
8051
ADDR.
(7F00+)
8051
TYPE
-
36h
37h
-
-
-
-
VCC1
POR
R/W
POWER
PLANE
VCC1
38h
39h
3Ah
3Bh
R/W
R/W
R/W
VCC1
VCC2
VCC2
FFh
-
3Ch
3Dh
R/W
R/W
VCC2
VCC1
3Eh
R/W
VCC1
VCC2
POR
ZERO
WAIT
STATE
(8)
00h
00h
00h
-
REF.
PAGE#
184
184
257
258
00h
258
266
see
note
164
00h
N
O
T
E
S
9
-
-
3Fh
R/W
VCC1
see
note
00h
-
-
40h
R/W
VCC1
00h
-
-
41h
R/W
VCC2
-
00h
227
7
-
-
42h
R
R/W
VCC2
-
40h
229
7
-
-
43h
R
VCC2
-
00h
231
7
-
-
44h
W
VCC2
-
00h
232
-
-
45h
R
R/W
VCC2
-
00h
232
-
-
46h
R/W
VCC2
-
40h
220
-
-
47h
R
VCC2
-
00h
222
-
-
48h
R
VCC2
-
00h
158
11
162
270
-
224
7
SYSTEM
REGISTER
NAME
PS/2 Port2
Control/
PS/2 Chan C
Tx/Rx
PS/2 Port2
Status/
PS/2 Chan C
Control
PS/2 Port2
Error/
PS/2 Chan C
Status
PS/2 Port2
Transmit
PS/2 Port2
Receive/
PS/2 Chan D
Tx/Rx
PS/2 Chan D
Control
PS/2 Chan D
Status
8051_SIRQ
EC_DATA
EC_
COMMAND
EC_STATUS
Edge Select
4A
Edge Select
4B
Wake up SRC
4
Wake Up
Mask 4
-
00h
REF.
PAGE#
227
N
O
T
E
S
7
-
40h
229
7
VCC2
-
00h
231
7
W
VCC2
-
00h
232
4Dh
R
R/W
VCC2
-
00h
232
4Eh
R/W
VCC2
-
40h
4Fh
R
VCC2
-
00h
-
-
-
-
-
-
R/W
R/W
R/W
VCC1
VCC1
VCC1
00h
00h
00h
-
Y
Y
181
84
84
12
12
Y
84
12
-
178
-
SYSTEM
ADDRESS
-
ADDR.
TYPE
8051
ADDR.
(7F00+)
8051
TYPE
-
49h
R/W
-
-
4Ah
-
-
-
POWER
PLANE
VCC2
VCC1
POR
VCC2
POR
-
R
R/W
VCC2
4Bh
R
-
4Ch
-
-
-
-
ZERO
WAIT
STATE
(8)
-
220
222
-
-
ECI BASE
ECI
BASE+4
R/W
W
50h51h
52h
53h
53h
ECI
BASE+4
-
R
54h
R/W
VCC1
00h
-
55h
56h
57h
R/W
VCC1
00h
58h
R/W
VCC1
00h
178
59h
R/WC
VCC1
00h
173
5Ah
R/W
VCC1
00h
176
5Bh
-
-
-
-
-
159
-
-
7
-
-
-
SYSTEM
REGISTER
NAME
Edge Select
5A
Edge Select
5B
Wake up SRC
5
Wake Up
Mask 5
Edge Select
6A
Edge Select
6B
Wake up SRC
6
Wake Up
Mask 6
ACCESS.BUS
2 Control reg
ACCESS.BUS
2 Status reg
ACCESS.BUS
2 Own
Address reg
ACCESS.BUS
2 Data reg
ACCESS.BUS
2 Clock
Mailbox
registers[101F]
PM1_STS2
PM1_EN2
PM1_CNTRL2
8051_PM_
STS
PWRGD_INT
SYSTEM
ADDRESS
-
-
ADDR.
TYPE
-
-
8051
ADDR.
(7F00+)
8051
TYPE
5Ch
VCC2
POR
ZERO
WAIT
STATE
(8)
VCC1
POR
R/W
POWER
PLANE
VCC1
00h
REF.
PAGE#
178
5Dh
R/W
VCC1
00h
179
5Eh
R/WC
VCC1
00h
174
5Fh
R/W
VCC1
00h
176
60h
61h
R/W
VCC1
00h
62h
R/W
VCC1
00h
180
63h
R/WC
VCC1
00h
174
64h65h
66h
-
-
-
-
R/W
VCC1
00h
177
-
-
179
-
-
67h
W
VCC1
00h
241
-
-
67h
R
VCC1
81h
241
-
-
68h
R/W
VCC1
00h
242
-
-
69h
R/W
VCC1
00h
242
-
-
6Ah
R/W
VCC1
00h
242
-
-
-
-
-
MBX
A0-AF
R/W
6Bh –
6Fh
70h7Fh
R/W
VCC1
PM1+1
PM1+3
PM1+5
-
R/WC
R/W
R/W
-
80h
81h
82h
83h
R/W
R
R
R/W
-
-
84h
R/WC
160
-
N
O
T
E
S
-
-
-
-
00
Y
244
VCC1
VCC1
VCC1
VCC1
00
00
00
00
-
Y
Y
Y
-
279
280
281
282
-
VCC1
00
-
-
180
15
SYSTEM
SYSTEM
ADDRESS
-
ADDR.
TYPE
Test Register
-
-
-
-
-
256 bytes of
RAM
-
-
REGISTER
NAME
-
-
8051
ADDR.
(7F00+)
85h8Dh
8Eh8Fh
90hEFh
7E007EFFh
-
REF.
PAGE#
-
N
O
T
E
S
-
-
-
-
-
-
-
-
-
VCC1
POR
VCC2
POR
-
POWER
PLANE
-
ZERO
WAIT
STATE
(8)
-
-
-
-
-
-
-
-
R/W
VCC1
8051
TYPE
146
Notes:
1. Although the Input and Output Data registers are physically separate, they share address 7FF1.
2. The 8051 CPU cannot write to some bits of the Status register.
3. Writing to the Auxiliary Output Data Register, loads the Output data register and can set the
AUXOBF1 output if enabled. This does not set the PCOBF output.
4. Interrupt is cleared when read by the 8051.
5. Interrupt is cleared when read by the host.
6. See RTC control Register Definition.
7. These addresses are shared between the PS/2 Devil Logic and the SMSC PS/2 Hardware
Channels A – D (see PS/2 DEVICE INTERFACE section on page 221).
8. When accessed for a read or write by the System the registers marked with a “Y” will drive the
Zero wait state pin active.
9. Bit 0 is the only writable or resetable bit in this register.
10. When IRESET_OUT is cleared (written from “1” to”0”) 8051STP_CLK bit D0 as well as HMEM
bits D1 and D0 are all set to “1”.
11. VCC1 POR = 00000X10b, VCC2 POR = 00000X1Xb where X is not affected by VCC2 POR, but
is left at the current value.
12. These registers have the same structure as the keyboard interface registers.
13. The ISA RTC registers are relocatoable and accessed by the 8051 through MMCRs 0x7FF5 –
0x7FF9.
14. See Section General Purpose I/O (GPIO) on page 265.
15. See Power Fail IRQ on page 184.
16. See FLASH CONFIGURATION REGISTER on page 197.
17. SMSC PS/2 Status_2 REGISTERS section on page 229.
161
8051 CONFIGURATION/CONTROL MEMORY MAPPED REGISTERS
DISABLE REGISTER
TABLE 87 - DISABLE REGISTER
HOST
ADDRESS
-
HOST
TYPE
8051
TYPE
BIT
NAME
8051 ADDRESS
0x7F3F
POWER PLANE
VCC1
DEFAULT
0x00
D7
D6
D5
D4
D3
D2
D1
D0
-
-
-
-
-
-
-
-
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
SYSTEM
FLASH
Interface
1=Enable
0= DISABLE
Reserved
FORCE
2
WRTPRT
Parallel
Port 1 =
Enable
0=
Disable
Serial
Port
1=
Enable
0=
Disable
IR Port
1=
Enable
0=
Disable
Floppy
Port 1 =
Enable
0=
Disable
UD
1
NOTE1 The UD bits are User-Defined. UD bits are maintained by 8051 software, only.
NOTE2 See Section FDC FORCE WRITE PROTECTION page 84 for a description of the FORCE
WRTPRT Bit function.
DEVICE REV REGISTER
By reading this register, 8051 firmware can confirm the device revision that it is running on.
TABLE 88 - DEVICE REV REGISTER
Host
N/A
8051
0x7F06 (R)
Power
VCC1
Default
0x00
8051 R
Bit Description
D7
R
D6
R
D5
D4
D3
R
R
R
Current Revision
This register is hardwired.
162
D2
R
D1
R
D0
R
1
DEVICE ID REGISTER
By reading this register, 8051 firmware can determine which device it is running on.
TABLE 89 - DEVICE ID REGISTER
Host
N/A
8051
0x7F07 (R)
Power
VCC1
Default
0x0A
8051 R
Bit description
D7
R
0
D6
R
0
D5
R
0
D4
R
0
D3
R
0
D2
R
1
D1
R
1
D0
R
1
CONFIGURATION REGISTER
TABLE 90 - CONFIGURATION REGISTER 0
Host
N/A
8051
0x7FF4
Power
VCC1
Default
0x00
D7
AUXH
D6
0
D5
OBFEN
D4
PS2_SEL
D3
MMC
D2
PCOBFEN
D1
SAEN
D0
SLEEPFLAG
AUXH
Aux in Hardware; When high, AUXOBF of the status register is set in hardware by a write to 7FFAh.
When low, AUXOBF of the status register is a user defined bit (UD) and R/W.
OBFEN
When set PCOBF is gated onto KIRQ and AUXOBF1 is gated onto MIRQ. When low, KIRQ and
MIRQ are driven low. Software should not change this bit when OBF of the status register is equal to
1.
MMC
Memory Map Control Bit : When MMC=0, a 256 Byte Scratch RAM area at 7D00h is available to the
8051. When MMC=1 the Scratch RAM at 7D00h-7DFFh becomes scratch ROM at 00h--FFh.
PCOBFEN
When high, PCOBF reflects whatever value was written to the PCOBF firmware latch assigned to
7FFDH. When low, PCOBF reflects the status of writes to 7FF1H (the output data register).
163
PS2_SEL
If PS2_SEL=0 (default) then the PS2 Device Interface Logic (DEVIL) is enabled and if PS2_SEL=1
then the SMSC PS2 Interface (SPS2) is enabled. The following table illustrates this:
PS2_SEL
0
1
Internal active PS/2 Logic Block
PS2 Device Interface Logic (DEVIL)
SMSC PS2 Interface Logic (SPS2)
SAEN
Software-assist enable. When set to “1” SAEN allows control of the GATEA20 signal via firmware. If
SAEN is reset to ‘0’, GATEA20 corresponds to either the last host-initiated control of GATEA20 or the
firmware write to 7FFEh or 7FFFh.
SLEEPFLAG
If SLEEPFLAG=“0” when PCON bit-0 is set, the 8051 enters “IDLE” mode, whereas if
SLEEPFLAG=“1” when PCON bit 0 is set the 8051enters “SLEEP” mode. This bit is cleared by the
occurrence of any wake-up events and on VCC1 POR.
OUTPUT ENABLE REGISTER
Table 91 - Output Enable Register
Host
N/A
8051
0x7F3E
Power
VCC1
Default
00000X10b on VCC1 POR
00000X1Xb on VCC2 POR
Output Enable Register VCC1 POR = 0x00000X10, VCC2 POR = 00000X1Xb where X means the bit
holds its setting preceding VCC2 POR.
D7-D4
R/W
Reserved
0
AR= Access Rights
8051 AR
D3
R/W
iRESET_
OVRD
D2
R
Power_Good
iRESET_OUT
D0
R/W
32kHz Output
When POWERGOOD=0, iRESET_OUT is
forced high (within 100nsec) and latched. The
nRESET_OUT pin is not driven until VCC2 is
applied. iRESET_OUT cannot be cleared by the
8051 until POWERGOOD=1.
iRESET_OUT
When POWERGOOD=1,
controlled by the 8051.
D1
R/W
iRESET_OUT
is
164
The above sequence provides a means for the
8051 to directly control the state of the Super
I/O block’s internal reset. The FDC37N972
provides a means for the 8051 to drive low or
toggle the chip’s internal reset without stopping
the 8051 clock or giving the Flash interface to
the host.
POWER_GOOD
The Power_Good bit D2 reflects the state of the
FDC37N972 VCC2 Power Good pin PWRGD.
The Power_Good bit is read-only.
iRESET_OVRD
iRESET Override - when cleared the
iRESET_OUT bit functions as described above.
When set, iRESET_OUT is given direct control
over the internal reset and nRESET_OUT pins
without requiring the STOP_CLK counter or
affecting the 8051STP_CLK bit or the HMEM
register.
In the override mode, setting
iRESET_OUT drives nRESET_OUT low and
clearing iRESET_OUT drives nRESET_OUT
high.
32kHz OUTPUT
The RESET_OUT Override function allows the
8051 to take the rest of the FDC37N972 chip
(SIO) out of reset without giving up control (i.e.,
without stopping its clock and giving the flash
interface to the Host).
8051 INTERRUPTS
The 32kHz Output bit D0 controls the
FDC37N972
32kHz
Output
Clock
pin
32kHz_OUT. When 32kHz Output is ‘0’, the
32kHz Output Clock is disabled and the
32kHz_OUT pin is driven low. When 32kHz
Output is ‘1’, the 32kHz Output Clock is
enabled. The 32kHz Output bit is R/W and
disabled by default following VCC1 POR.
8051
INTERRUPT
FEATURES
ARCHITECHTURE
The eleven 8051 core interrupts are shown
described in TABLE 92 - 8051 INTERRUPTS.
The 8051 has the following run time sources:
int0, int1, int2, int3 and int4.
On the current FDC37N972, nRESET_OUT is
driven high by this sequence of events.
Sets STP_CNT to a non-zero value
Clears iRESET_OUT bit, causing
8051STP_CLK bit 0 to get set
HMEM[7:0] to get set to 0x07
and STOP Counter to start decrementing
The Interrupt sources of Int5_n create 8051
Wakeup Events which are used to monitor and
altar the power management state. There are
three type of source triggers for wakeup event:
Nonprogrammable (fixed edge), Selectable
Edge (SE), Either Edge (EE).
When STP_CNT reaches 0 the nRESET_OUT
pin deasserts (goes high) at which point the
8051’s clock stops and the Host owns the Flash
Interface.
The 8051 core has three interrupt priority levels:
PFI, high and low. The PFI interrupt, if enabled,
has priority over all other interrupts.
165
8051 INTERNAL PARALLEL INTERRUPTS
INT2
INT3
INT4
GRP2
0
1
2
3
GRP1
0
1
2
3
4
5
6
7
IN2
IN1
IN0
WK_EE3 STAT
WK_EE2 STAT
WK_EE4 STAT
ACCBUS2 STAT
PS2_A/PS2 P1 STAT
PS2_B/PS2 P2 STAT
PS2_C STAT
PS2_D STAT
0
1
2
3
4
5
6
7
IN7
RTC_ALRM STA
WK_EE1 STAT
IR_RX STAT
AB_DAT2 STA
AB_DAT 1 STA
PM1_STS_2 STA
PM1_EN 2 STA
PM1_CTL 2 STA
Wake Up Src 1 (0x7F2A)
0
1
2
3
4
5
6
7
IN3
IN2
IN1
IN0
nGPWKUP STAT
WK_ANYKEY ST
HTIMER STAT
WK_EE3 STAT
WK_EE2 STAT
WK_EE4 STAT
UART_RI1 STAT
RESERVED
Wake Up Src 2 (0x7F2B)
0
1
2
3
4
5
6
7
External Interrupt
Enable SFR
WK_EE3 MSK
WK_EE2 MSK
WK_EE4 MSK
ACCBUS2 MSK
PS2_A/PS2 P1 MSK
PS2_B/PS2 P2 MSK
PS2_C MSK
PS2_D MSK
POWER-FAIL EVENT
0
RTC_ALRM MK
WK_EE1 MK
IR_RX MK
AB_DAT 2 MK
AB_DAT 1 MK
PM1_STS_2 MK
PM1_EN 2 MK
PM1_CTL 2 MK
0
1
2
3
4
5
6
7
GRP1
nGPWKUP MK
WKANYKEY MK
HTIMER_MK
WK_EE3_MK
WK_EE2_MK
WK_EE4_MK
UART_RI1_MK
RESERVED
Wake Up MSK 2 (0x7F2D)
0
1
2
3
4
5
6
7
ANY WUP STAT
SYS-MBOX STA
ACCBUS1 STA
GPIO3 STAT
EC_OBF STAT
EC_IBF STAT
KBD SCAN STAT
IBF STAT
INT1 SRC (0x7F02)
0
1
2
3
4
5
6
7
ANY WUP_MK
SYS-MBOX_MK
ACCBUS1_MK
GPIO3_MK
EC_OBF_MK
EC_IBF_MK
KBD SCAN_MK
IBF_MK
INT1 MASK (0x7F03)
Note : WK_EE[2:4] are found at Wake Up register 2 and INT0 register.
5/20/98
INT0_EN
TF0_EN
INT1_EN
TF1_EN
RI + TI_EN
TF2_EN
RESERVED
RESERVED
Interrupt Enable
SFR
Wake Up MSK 1 (0x7F2C)
0
1
2
3
4
5
6
7
PGI
PWRGD_INT
(0x7F84)
INT0 MASK (0x7F01)
INT0 SRC (0x7F00)
0
1
2
3
4
5
6
7
INT2
INT3_n
INT4
INT5_n
8051 INTERRUPTS
FIGURE 19 - 8051 INTERRUPTS
166
PFI
EICON SFR
0
1
2
3
4
5
6
7
INT0 POL
TF0 POL
INT1 POL
TF1 POL
RI + TI POL
TF2 POL
RESERVED
RESERVED
Interrupt Polarity
SFR
IN4
IN5
GPIO0
GPIO1
GPIO2
IN6
GPIO7
GPIO4
0,1
WK_SE00_SEL
0
WK_SE00_SRC
0
WK_SE00_MK
2,3
WK_SE01_SEL
1
WK_SE01_SRC
1
WK_SE01_MK
4,5
WK_SE02_SEL
2
WK_SE02_SRC
2
WK_SE02_MK
6,7
WK_SE03_SEL
3
WK_SE03_SRC
3
WK_SE03_MK
0,1
WK_SE04_SEL
4
WK_SE04_SRC
4
WK_SE04_MK
2,3
WK_SE05_SEL
5
WK_SE05_SRC
5
WK_SE05_MK
4,5
WK_SE06_SEL
6
WK_SE06_SRC
6
WK_SE06_MK
6,7
WK_SE07_SEL
7
WK_SE07_SRC
7
WK_SE07_MK
Edge Select 4 (0x____)
GPIO5
GPIO6
GPIO8
GPIO9
GPIO10
GPIO11
GPIO12
GPIO13
Wake Up MSK 4 (0x____)
0,1
WK_SE10_SEL
0
WK_SE10_SRC
0
WK_SE10_MK
2,3
WK_SE11_SEL
1
WK_SE11_SRC
1
WK_SE11_MK
4,5
WK_SE12_SEL
2
WK_SE12_SRC
2
WK_SE12_MK
6,7
WK_SE13_SEL
3
WK_SE13_SRC
3
WK_SE13_MK
0,1
WK_SE14_SEL
4
WK_SE14_SRC
4
WK_SE14_MK
2,3
WK_SE15_SEL
5
WK_SE15_SRC
5
WK_SE15_MK
4,5
WK_SE16_SEL
6
WK_SE16_SRC
6
WK_SE16_MK
6,7
WK_SE17_SEL
7
WK_SE17_SRC
7
WK_SE17_MK
Edge Select 5 (0x____)
GPIO14
GPIO15
GPIO16
GPIO17
GPIO19
GPIO20
GPIO21
GPIO18
Wake Up SRC 4 (0x____)
Wake Up SRC 5 (0x____)
Wake Up MSK 5 (0x____)
0,1
WK_SE20_SEL
0
WK_SE20_SRC
0
WK_SE20_MK
2,3
WK_SE21_SEL
1
WK_SE21_SRC
1
WK_SE21_MK
4,5
WK_SE22_SEL
2
WK_SE22_SRC
2
WK_SE22_MK
6,7
WK_SE23_SEL
3
WK_SE23_SRC
3
WK_SE23_MK
0,1
WK_SE24_SEL
4
WK_SE24_SRC
4
WK_SE24_MK
2,3
WK_SE25_SEL
5
WK_SE25_SRC
5
WK_SE25_MK
4,5
WK_SE26_SEL
6
WK_SE26_SRC
6
WK_SE26_MK
6,7
WK_SE27_SEL
7
WK_SE27_SRC
7
WK_SE27_MK
Edge Select 6 (0x____)
Wake Up SRC 6 (0x____)
INT2
GRP2
INT3
INT4
Wake Up MSK 6 (0x____)
FIGURE 20 - EXTENDED INTERRUPTS & WAKE EVENTS
the WK_SE12 event can be used for IR wakeup.
See Section 8051 System Power
MANAGEMENT on page 198.
NOTE: Wake events apply per pin and are
available to all functions of that pin.
For
example, if the IRRX function is selected as an
alternate function of the GPIO8 pin (MISC7 = 1),
167
TABLE 92 - 8051 INTERRUPTS
INTERRUPT
pfi
int0_n
TF0
int1_n
TF1
TI_0 or
RI_0
TF2 or
EXF2
int2
int3_n
(1)
int4
int5_n
NATURAL
PRIORITY
0
1
2
3
4
5
INTERRUPT
VECTOR
0x33
0x03
0x0B
0x13
0x1B
0x23
6
0x2B
RESERVED
External Interrupt 2
External Interrupt 3
7
8
9
External Interrupt 4
External Interrupt 5
RESERVED
10
11
12
DESCRIPTION
Power Fail Interrupt
External Interrupt 0
Timer 0 Interrupt
External Interrupt 1
Timer 1 Interrupt
Serial Port 0 Transmit
or Receive
Timer 2 Interrupt
ENABLE
EICON.5
IE.0
IE.1
IE.2
IE.3
IE.4
PRIORITY
CONTROL
n/a
IP.0
IP.1
IP.2
IP.3
IP.4
IE.5
IP.5
0x3B
0x43
0x4B
FLAG
EICON.4
TCON.1
TCON.5
TCON.3
TCON.7
SCON0.0 (RI_0),
SCON0.1 (RI_0)
T2CON.7 (TF2),
T2CON.6 (EXF2)
RESERVED
EXIF.4
EXIF.5
IE.6
EIE.0
EIE.1
IP.6
EIP.0
EIP.1
0x53
0x5B
0x63
EXIF.6
EXIF.7
EICON.3
EIE.2
EIE.3
EIE.4
EIP.2
EIP.3
EIP.4
NOTE: The int5_n interrupt is used to restart the 8051 from sleep mode. This interrupt includes the
interrupt WAKE UP sources from GRP1 and GRP2 on FIGURE 19 and FIGURE 20.
8051 INT0 SOURCE REGISTER
The eight interrupts in the INT0 Source register (TABLE 93) are logically ‘OR’ed to drive the 8051
external interrupt 0 input, int0_n (FIGURE 19). When any bit in the INT0 Source register is ‘1’, an
interrupt has occurred and, assuming the interrupt is enabled, the 8051 int0_n input is asserted.
The bits in the INT0 Source register are cleared by a writing a “1” to the bit.
TABLE 93 - 8051 INT0 SOURCE REGISTER
n/a
HOST ADDRESS
0x7F00
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R/WC
R/WC
R/WC
R/WC
R/WC
R/WC
R/WC
R/WC
PS2_D
PS2_C
PS2_B/
PS2 P2
PS2_A/
PS2 P1
ACCESS
BUS 2
WK_EE4
WK_EE2
WK_EE3
168
SMSC PS/2 C & D Interrupts – D[7:6]
Access Bus 2 Interrupt – D3
INT0 Source register bit D7 is the SMSC PS/2
Channel D interrupt; INT0 Source register bit D6
is the SMSC PS/2 Channel C interrupt. These
interrupts are active when the PS2_SEL Control
bit D4 in Configuration Register 0 (0x7FF4) is
‘1.’
“1” Indicates an ACCESS.bus 2 interrupt is
active.
WK_EE[4:2]
ACCESS Bus 2 wake events can be generated.
AB_DAT ACCESS BUS 2 bit in Wake Sources
(Register 1.)
8051 INT0 Mask Register
When the SMSC PS/2 channels are active the
PS2_D interrupt is associated with the PS2CLK
and PS2DAT alternate functions of the GPIO20
and GPIO21 pins; PS2_C is associated with the
IMCLK and IMDATA pins.
Dual-Mode SMSC/DEVIL Interrupts – D[5:4]
The eight interrupts in the INT0 Source register
(TABLE 93) are enabled by bits of the same
name in the INT0 Mask register (TABLE 94).
INT0 Source register bits D5 and D4 are
multiplexed between the SMSC PS/2 Channels
A and B and the Devil Logic Ports P1 and P2.
When any bit in the INT0 Mask register is ‘0’,
the interrupt is enabled. When any bit in the
INT0 Mask register is ‘1, the interrupt is masked.
When masked interrupts are asserted, the
interrupt will be visible in the interrupt source
register but will not assert an interrupt to the
8051.
When the PS2_SEL Control bit D4 in
Configuration Register 0 (0x7FF4) is ‘1,’ the
SMSC PS/2 Interrupt Channels A and B are
selected; when PS2_SEL = ‘0,’ the Devil Logic
Ports P1 and P2 are selected.
The bits in the INT0 Mask register are
read/write. The INT0 interrupts are enabled by
default.
When the SMSC PS/2 channels are active the
PS2_B interrupt is associated with the KCLK
and KDAT pins; PS2_A is associated with the
EMCLK and EMDATA pins.
169
8051 INT0 MASK REGISTER
TABLE 94 - 8051 INT0 MASK REGISTER
n/a
HOST ADDRESS
0x7F01
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
PS2_D
PS2_C
PS2_B/
PS2 P2
PS2_A/
PS2 P1
ACCESS
BUS 2
WK_EE4
WK_EE2
WK_EE3
8051 INT1 Source Register
The eight interrupts in the INT1 Source register (TABLE 95) are logically ‘OR’ed to drive the 8051
external interrupt 1 input, int1_n (FIGURE 19).
When any bit in the INT1 Source register is ‘1’, an interrupt has occurred and, assuming the interrupt
is enabled, the 8051 int1_n input is asserted.
Bits D0 and D2 – D6 in the INT1 Source register are cleared by a writing a “1” to the bit.
TABLE 95 - 8051 INT1 SOURCE REGISTER
N/a
HOST ADDRESS
0x7F02
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R
R/WC
R/WC
R/WC
R/WC
R/WC
R
R/WC
IBF1
KBD
SCAN
EC_IBF2
EC_OBF3
GPIO3
ACCESS
BUS 1
SYS-MBOX4
ANY
WUP
170
ACCESS BUS 1 [D2]
When ACCESS BUS 1 bit is equal to 1 an Access Bus IRQ is active.
IBF [D7]
IBF interrupt bit D7 is set when the host writes to the KBD Data/Command Write register and is
cleared when the 8051 reads from that register.
EC_IBF [D5]
EC_IBF interrupt bit D5 is set when the host writes to the EC Command or Data port (see IBF Bit – D1
on page 88).
EC_OBF [D4]
EC_OBF interrupt bit D4 is asserted when the OBF bit in the EC Status register has been cleared (see
OBF Bit – D0 on page 88).
SYS-MBOX [D1]
SYS-MBOX interrupt bit D1 is set when the host writes to mailbox register 0. The bit is cleared when
mailbox register 0 is read (see The SYSTEM/8051 Interface Registers on page 252).
8051 INT1 Mask Register
The eight interrupts in the INT1 Source register (TABLE 95) are enabled by bits of the same name in
the INT1 Mask register (TABLE 96).
When any bit in the INT1 Mask register is ‘0’, the interrupt is enabled. When any bit in the INT1 Mask
register is ‘1’, the interrupt is masked. When masked interrupts are asserted, the interrupt will be
visible in the interrupt source register but will not assert an interrupt to the 8051.
The bits in the INT1 Mask register are read/write. The INT1 interrupts are enabled by default.
8051 INT1 MASK REGISTER
TABLE 96 - 8051 INT1 MASK REGISTER
n/a
HOST ADDRESS
0x7F03
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
IBF
KBD SCAN
EC_IBF
EC_OBF
GPIO3
ACCESS
BUS 1
SYS-MBOX
ANY
WUP
171
8051 WAKEUP SOURCE REGISTERS
TABLE 97 - WAKEUP SOURCE REGISTER 1
N/A
HOST ADDRESS
0x7F2A
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST
TYPE
8051 R/W
BIT NAME
AND
DESCRIPTION
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
R/WC
R/WC
R/WC
R/WC
1=
PM1
CTL 2
1=
PM1
EN 2
1=
PM1
STS 2
1=
AB_DAT
ACCESS.
BUS
interrupt
asserted
D0
-
R/WC
R/WC
R/WC
R/WC
1=
AB_DAT
ACCESS.
BUS 2
interrupt
asserted
1 = IRRX
(Note 3)
1=
WK_
EE1
change
d
(Note
1)
1 = RTC_
ALRM
asserted
(Note 2)
Res = Reserved. Read returns 0, writes are ignored.
Note 1: Input is going from low to high or from high to low (read the GPIO register to find out the
value of pin)
AB_DAT1 and AB_DAT2 -- When ACCESS.BUS=1, a start condition or other event was detected on
the ACCESS.BUS bus. When ACCESS.BUS 2=1, a start condition or other event was detected on the
ACCESS.BUS 2 bus
PM1_STS2, PM1 EN2, PM1CTL2 interrupts: These are set when the corresponding PM1 register has
been written by the host.
Note 2: The RTC_ALRM Wake-up is an internally generated Low-to-High edge, produced when the
RTC time updates to match the Time Of Day (TOD) alarm setting. This edge will set bit D0 of Wakeup Source 1 Register. Bit D0 will remain set and will only be reset on a read of Wake-up Source 1
Register. If the Wake-up source register is read before the clock has updated (i.e., RTC still equals
the TOD alarm) bit D0 is reset and stays reset until the next occurrence of a RTC_ALRM Wake-up
event.
Note 3: Wake event is asserted when only when both VCC2 is active and IRRX input changes from
high to low.
Note 4: The interrupt source bits in this register are cleared by a writing a “1” to the bit.
172
TABLE 98 - WAKEUP SOURCE REGISTER 2
N/A
HOST ADDRESS
0x7F2B
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST
TYPE
8051 R/W
BIT NAME
AND DESCRIPTION
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R
R/WC
1=
UART
_RI1
assert
ed
R/WC
1=
WK_
EE4
R/WC
1=
WK_
EE2
transiti
on
(both
edges)
R/WC
1=
WK_
EE3
transiti
on
(both
edges)
R/WC
1=
HTIM
ER
timeout
s
R/WC
1=
WK_
ANYKEY
is
asserted
R/WC
1=
nGPWK
UP is
asserted
RES
HTIMER Interrupt When HTIMER=1, the hibernation timer counted down to zero.
Note 1: Anykey Wake-up (WK_ANYKE– -- When unmasked, the WK_ANYKEY will wake the 8051
from the “SLEEP” state when any of the Keyboard Scan In (KSI) pins goes low. The Boolean equation
below defines the WK_ANYKEY function.
WK_ANYKEY = !(KSI0 & KSI1 & KSI2 & KSI3 & KSI4 & KSI5 & KSI6 & KSI7)
NOTE: The interrupt source bits in this register are cleared by a writing a “1” to the bit.
TABLE 99 - WAKEUP SOURCE REGISTER 4
N/A
HOST ADDRESS
0x7F59
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME
AND DESCRIPTION
D7
R/WC
1=
WK_
SE07
assert
ed
D6
R/WC
1=
WK_
SE06
assert
ed
D5
R/WC
1=
WK_
SE05
assert
ed
D4
R/WC
1=
WK_
SE04
assert
ed
D3
R/WC
1=
WK_
SE03
assert
ed
D2
R/WC
1=
WK_
SE02
assert
ed
D1
R/WC
1=
WK_
SE01
assert
ed
D0
R/WC
1=
WK_
SE00
assert
ed
Note : The bits in this register are cleared on a WRITE OF “1” TO THE CORRESPONDING BIT.
173
TABLE 100 - WAKEUP SOURCE REGISTER 5
Host address
N/A
0x7F5E
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME AND
DESCRIPTION
D7
R/WC
1=
WK_
SE17
assert
ed
D6
R/WC
1=
WK_
SE16
assert
ed
D5
R/WC
1=
WK_
SE15
assert
ed
D4
R/WC
1=
WK_
SE14
assert
ed
D3
R/WC
1=
WK_
SE13
assert
ed
D2
R/WC
1=
WK_
SE12
assert
ed
D1
R/WC
1=
WK_
SE11
assert
ed
D0
R/WC
1=
WK_
SE10
assert
ed
Note : the bits in this register are cleared on a WRITE OF “1” TO THE CORRESPONDING BIT.
TABLE 101 - WAKEUP SOURCE REGISTER 6
Host address
N/A
0x7F63
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME AND
DESCRIPTION
D7
R/WC
1=
WK_
SE27
assert
ed
D6
R/WC
1=
WK_
SE26
assert
ed
D5
R/WC
1=
WK_
SE25
assert
ed
D4
R/WC
1=
WK_
SE24
assert
ed
D3
R/WC
1=
WK_
SE23
assert
ed
D2
R/WC
1=
WK_
SE22
assert
ed
D1
R/WC
1=
WK_
SE21
assert
ed
D0
R/WC
1=
WK_
SE20
assert
ed
Note : The bits in this register are cleared on a WRITE OF “1” TO THE CORRESPONDING BIT.
174
TABLE 102 - WAKEUP MASK REGISTER 1
N/A
HOST ADDRESS
0x7F2C
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME AND
DESCRIPTION
D7
R/W
D6
R/W
D5
R/W
D4
R/W
D3
R/W
D2
R/W
D1
R/W
D0
R/W
1=
Mask
PM1
CTL2
1=
Mask
PM1
EN2
1=
mask
PM1
STS2
1=
mask
AB_D
ATA
ACCE
SS
BUS 1
1=
mask
AB_D
ATA
ACCE
SS.
BUS 2
1=
MASK
IRRX
1=Ma
sk
WK_
EE1
1 = Mask
RTC_
ALARM
TABLE 103 - WAKEUP MASK REGISTER 2
Host address
N/A
0x7F2D
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME AND
DESCRIPTION
D7
R
RE
SE
RV
ED
D6
R/W
D5
R/W
D4
R/W
D3
R/W
D2
R/W
D1
R/W
D0
R/W
1=mask
UART_
RI1
1=Mask
WK_EE
4
1=
Mask
WK_
EE2
1=
Mask
WK_
EE3
1=
Mask
HTIM
ER
1=
Mask
WK_
ANY
KEY
1= mask
nGPWK
UP
175
TABLE 104 - WAKEUP MASK REGISTER 4
N/A
HOST ADDRESS
0x7F5A
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME
AND
DESCRIPTION
D7
R/W
1=
mask
WK_
SE07
D6
R/W
1=
mask
WK_
SE06
D5
R/W
1=
mask
WK_
SE05
D4
R/W
1=
mask
WK_
SE04
D3
R/W
1=
mask
WK_
SE03
D2
R/W
1=
mask
WK_
SE02
D1
R/W
1=
mask
WK_
SE01
D0
R/W
1=
mask
WK_
SE00
D1
R/W
1=
mask
WK_
SE11
D0
R/W
1=
mask
WK_
SE10
TABLE 105 - WAKEUP MASK REGISTER 5
N/A
HOST ADDRESS
0x7F5F
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME
AND
DESCRIPTION
D7
R/W
1=
mask
WK_S
E17
D6
R/W
1=
mask
WK_
SE16
D5
R/W
1=
mask
WK_
SE15
176
D4
R/W
1=
mask
WK_
SE14
D3
R/W
1=
mask
WK_
SE13
D2
R/W
1=
mask
WK_
SE12
TABLE 106 - WAKEUP MASK REGISTER 6
N/A
HOST ADDRESS
0x7F66
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME AND
DESCRIPTION
D7
D6
D5
D4
R/W
1=
mask
WK_
SE27
R/W
1=
mask
WK_
SE26
R/W
1=
mask
WK_
SE25
R/W
1=
mask
WK_
SE24
D3
R/W
1=
mask
WK_
SE23
D2
R/W
1=
mask
WK_
SE22
D1
R/W
1=
mask
WK_S
E21
D0
R/W
1=
mask
WK_SE
20
8051 HIBERNATION TIMER REGISTER
TABLE 107 - HTIMER REGISTER
Host
N/A
8051
0x7FF3
Power
VCC1
Default
0x00
Hibernation Timer - This 8 bit binary count-down timer can be programmed for from 30 seconds to
128 minutes in 30 second increments. When it expires (reaches “0”), it stops (remains at “0”) and
causes a hardware event that will wake up the 8051. This timer is clocked by the 32 KHz clock and is
powered by VCC1. Writing a non-zero value to this register starts the counter from that value.
8051 EDGE SELECT REGISTERS
Selectable Edge interrupts
Selectable interrupts SE00-SE07 are on External INT2.
Selectable interrupts SE10-SE17 are on External INT3.
Selectable interrupts SE20-SE27 are on External INT4.
177
TABLE 108 - EDGE SELECT 4A
N/A
HOST ADDRESS
0x7F57
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME
AND
DESCRIPTION
D7:6
R/W
D5:4
R/W
D3:2
R/W
D1:0
-
SE03 Select
SE02 Select
SE01 Select
SE00 Select
TABLE 109 - EDGE SELECTION
D7:6
D5:4
D3:2
D1:0
Edge Selection Table
EDGE High to low
00
Edge Low to High
01
Either Edge
10
Reserved
11
TABLE 110 - EDGE SELECT 4B
N/A
HOST ADDRESS
0x7F58
8051ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME AND
DESCRIPTION
D7:6
R/W
D5:4
R/W
D3:2
R/W
D1:0
-
SE07 Select
SE06 Select
SE05 Select
SE04 Select
Refer to TABLE 109 - EDGE SELECTION for the edge
selection table
TABLE 111 - EDGE SELECT 5A
N/A
HOST ADDRESS
0x7F5C
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
178
HOST TYPE
8051 R/W
BIT NAME AND
DESCRIPTION
D7:6
R/W
D5:4
R/W
D3:2
R/W
D1:0
-
SE13 Select
SE12 Select
SE11 Select
SE10 Select
Refer to TABLE 109 for the edge selection table.
TABLE 112 - EDGE SELECT 5B
N/A
HOST ADDRESS
0x7F5D
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME AND
DESCRIPTION
D7:6
R/W
D5:4
R/W
D3:2
R/W
D1:0
-
SE17 Select
SE16 Select
SE15 Select
SE14 Select
Refer to TABLE 109 for the edge selection table.
TABLE 113 - EDGE SELECT 6A
N/A
HOST ADDRESS
0x7F61
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME AND
DESCRIPTION
D7:6
R/W
D5:4
R/W
D3:2
R/W
D1:0
-
SE23 Select
SE22 Select
SE21 Select
SE20 Select
Refer to TABLE 109 for the edge selection table.
179
TABLE 114 - EDGE SELECT 6B
N/A
HOST ADDRESS
0x7F62
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST TYPE
8051 R/W
BIT NAME AND
DESCRIPTION
D7:6
R/W
D5:4
R/W
D3:2
R/W
D1:0
-
SE27 Select
SE26 Select
SE25 Select
SE24 Select
Refer to TABLE 109 for the edge selection table.
POWER FAIL IRQ
The PWRGD_INT register (TABLE 115) contains the Power Good Interrupt (PGI) bit, D0. When PGI
= ‘1’, the (VCC2) PWRGD input has been deasserted; otherwise, PGI = ‘0’. NOTE: PGI is not
asserted when PWRGD is asserted.
The PGI bit is the source for the high-performance 8051 Power Fail Interrupt (pfi) input (FIGURE 19).
The VCC2 power fail detect function is implemented as described in 8051 RING OSCILLATOR FAILSAFE CONTROLS on page 147.
The PGI bit is readable and is cleared by writing a ‘1’ to D0 in the PWRGD_INT register.
TABLE 115 - POWER GOOD INTERRUPT REGISTER (PWRGD_INT)
HOST ADDRESS 8051 ADDRESS
POWER PLANE
DEFAULT
0x7F84
VCC1
0x00
HOST TYPE
8051 TYPE
BIT NAME
D7
R
D6
R
D5
-
D4
-
R
R
RESERVED
180
D3
R
D2
R
D1
R
D0
R/WC
PGI
8051 External Serial IRQ Generation
The 8051 can assert an interrupt on the serial IRQ stream to support software-generated SCI, SMI, or
PME events (FIGURE 21).
FIGURE 21
NOTE: The 8051 External Serial IRQ is generated and cleared by software.
The 8051 External Serial IRQ interface is controlled by the 8051_SIRQ register (TABLE 116).
Serial
IRQ
8051_IRQ SELECT
8051_IRQ
IRQ Mapping
logic
FIGURE 21 - 8051 EXTERNAL SERIAL IRQ BLOCK DIAGRAM
TABLE 116 - 8051_SIRQ REGISTER
HOST ADDRESS 8051 ADDRESS
POWER PLANE
0x7F52
VCC1
HOST TYPE
8051 TYPE
BIT NAME
D7
D6
D5
R/W
R/W
R/W
8051_IRQ SELECT
D4
R/W
D3
R/W
8051_IRQ
ENABLE
D2
R/W
8051_IRQ
DEFAULT
0x00
D1 D0
R
R
RESERVED
8051_IRQ SELECT
Four bits that selects which IRQ is utilized when an interrupt occurs. See TABLE 117 - 8051 IRQ
MAPPING CONTROL BITS
8051_IRQ ENABLE
This bit must be set to one in order for an interrupt to occur.
181
8051 IRQ
This bit must set to one in order for the 8051 to assert the mapped interrupt request corresponding to
the 8051_IRQ SELECT bits. The defualt state for a disabled IRQ is asserted.
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
TABLE 117 - 8051 IRQ MAPPING CONTROL BITS
8051_IRQ
8051_IRQ
ENABLE
SELECT
DESCRIPTION
XXXX
DISABLED
0000
NO INTERRUPT
0001
MAP TO IRQ1
0010
MAP TO IRQ2
0011
MAP TO IRQ3
0100
MAP TO IRQ4
0101
MAP TO IRQ5
0110
MAP TO IRQ6
0111
MAP TO IRQ7
1000
MAP TO IRQ8
1001
MAP TO IRQ9
1010
MAP TO IRQ10
1011
MAP TO IRQ11
1100
MAP TO IRQ12
1101
MAP TO IRQ13
1110
MAP TO IRQ14
1111
MAP TO IRQ15
182
WATCH DOG TIMER
D1) is set by 8051 firmware. The WDT may be
disabled under software control through a
specific sequence. Software can clear the SDT
enable bit by:
Setting the WLE-WDT Load enable bit in the
WDT Control/Status Register.
Writing 00h to the WDT Timer Register (this
causes the WDT Enable and the WLE_WDT
Load Enable bits to each reset to 0).
WDT OPERATION
When enabled, the Watch Dog Timer (WDT)
circuit will generate a system reset if the user
program fails to reload the watchdog timer
(WDT) within a specified length of time known
as the ‘watchdog interval’.
The WDT consists of an 8-bit timer (WDT) with
a 9-bit prescaler. The prescaler is fed with 32
kHz which always runs, even if the 8051 is in
SLEEP state.
The 8 bit WDT timer is
decremented every (1/32KHz) *512 seconds or
16.0 ms.
Thus, the watchdog interval is
programmable between 16ms and 4.08 seconds
on 16ms intervals.
Once the WDT has been activated, this
sequence must be executed in order to disable
watchdog operation via software control. Note:
Since a VCC1 POR will reset the WDT enable
bit, the WDT must be re-enabled after each
occurrence.
WDT RESET MECHANISM
WDT ACTION
The watchdog timer (WDT) must be reloaded
within periods that are shorter than the
programmed watchdog interval; otherwise the
WDT will underflow and a VCC1 POR will be
generated. It is the responsibility of the user
program to continually execute sections of code
which reload the 8 bit timer (WDT).
If the 8 bit timer (WDT) underflows, a VCC1
POR is generated
8051 in Idle Mode - WDT will be active if
enabled. When the WDT timer underflows in
idle mode, the 8051 will be reset. It is up to the
firmware engineer to design code that uses a
timer to generate an interrupt that will exit idle
mode and re-initialize the WDT timer and then
put the 8051 back into idle mode.
The WDT is reloaded in two stages in order to
prevent erroneous software from reloading the
watchdog. First WDT CONTROL bit D0 (WLEWDT Load Enable) must be set. Then the WDT
may be loaded. When the WDT is loaded WLE
is automatically reset. WDT can not be loaded
when WLE is reset. Since the WDT timer is a
down counter, a reload value of 01h results in
the minimum WDT interval (16ms) and a reload
value of 0FFh results in the maximum WDT
interval (4.08 seconds). Loading 00h into the
WDT disables the WDT and clears the WDT
Enable bit. Note, the 9 bit prescaler is initialized
whenever the WDT timer is loaded.
8051 in Sleep Mode - If enabled, the WDT is
active since it is running off of the 32 KHz clock.
Therefore, if the WDT is enabled the 8051
should never remain in the SLEEP state for
more than 4 seconds.
WDT ACTIVATION
Upon VCC1 POR the Watch Dog Timer powers
up inactive. The Watch Dog Timer is activated
when the WDT enable bit (WDT CONTROL bit
183
WDT MEMORY MAPPED REGISTERS
TABLE 118 - WDT
N/A
HOST ADDRESS
0x 7F38
8051 ADDRESS
VCC1
POWER
0xFF
DEFAULT
8051 R/W
SYSTEM R/W
BIT DEF
D7
R/W
N/A
WDT
Timer
D6
R/W
N/A
WDT
Timer
D5
R/W
N/A
WDT
Timer
D4
R/W
N/A
WDT
Timer
D3
R/W
N/A
WDT
Timer
D2
R/W
N/A
WDT
Timer
D1
R/W
N/A
WDT
Timer
D0
R/W
N/A
WDT
Timer
TABLE 119 - WDT CONTROL/STATUS
N/A
HOST ADDRESS
0x 7F37
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
8051 R/W
SYSTEM R/W
BIT DEF
D7-D2
R
N/A
Reserved
D1
R/W
N/A
WDT Enable
D0
R/W
N/A
WLE-WDT Load Enable
WLE
Watchdog Load Enable bit must be set to enable writing to the WDT Timer register. This bit is
automatically reset when the 8051 writes to the WDT register. If this bit is reset, writes to the WDT
register are ignored.
WDT Enable
The WDT enable bit must be set by 8051 firmware to enable or start the Watch Dog Timer. A VCC1
POR or the above described software sequence will reset this bit.
184
SHARED FLASH INTERFACE
system in blocks of 64KB or from the 8051 in
blocks of 32KB. The procedure to access the
FLASH memory is described in the Host Flash
Access section.
A 256KB Flash Device (i.e., 28F004) is
recommended to store the program code for the
8051 (Keyboard BIOS+) and the system BIOS.
The FLASH memory can be accessed from the
FLASH INTERFACE DIAGRAM
not asserted and the 8051 STP_CLK bit-0 is set.
Please refer to the timing section for details on
this interface.
Access to the Flash Memory is multiplexed
inside of the FDC37N972. The host CPU only
has access to the Flash when nRESET_OUT is
HOST CPU
I
S
A
R
O
M
B
U
S
n
C
S
AD[7:0]
LATCH
ALE
ADDR[17:8]
FDC37N972
FLASH
512K x 8
nKBWR
nKBRD
nCE
FIGURE 22 - FLASH INTERFACE DIAGRAM
185
SYSTEM MEMORY MAP
64K
Host
Interface
512K
FLASH
ROM
FFFF
16x
32K Blocks
0
64K
8051
External
RAM
64K
8051
ROM
FFFF
FFFF
8000
Internal
Registers
Invalid
7FF
0
8000
0
FIGURE 23 - SYSTEM FLASH ACCESS MAP (ALT BONDOUT)
186
64K
Host
Interface
512K
FLASH
ROM
FFFF
16x
32K Blocks
0
64K
8051
External
RAM
64K
8051
ROM
FFFF
FFFF
Same as
0-7FFF
8000
8000
Internal
Registers
0
0
FIGURE 24 - SYSTEM FLASH ACCESS MAP (SMSC BONDOUT)
KEYBOARD BIOS (KMEM)
The 8051 uses this register to access the Flash
ROM in a 32K window. The 8051 is only barred
from accessing the Flash when 8051STP_CLK
bit D0 =1 and nRESET_OUT= high or
deasserted. Bit D3 is added to the KMEM
Register to accommodate the high-order Flash
ROM address bit FA18 (TABLE 120). The Flash
ROM Memory Ranges are decoded as shown in
TABLE 121.
187
HOST INDEX
-
HOST
TYPE
8051 TYPE
BIT
NAME
D7
-
D6
-
R
R
RESERVED
KMEM
17
0
0
0
0
1
1
1
1
TABLE 120 - KMEM REGISTER
8051 ADDRESS
POWER PLANE
0x7F29
VCC1
DEFAULT
0x00
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R
R
R/W
A18
R/W
A17
R/W
A16
R/W
A15
16
0
0
1
1
0
0
1
1
15
0
1
0
1
0
1
0
1
Flash Memory Range
000- 7FFF
8000- FFFF
10000-17FFF
18000-1FFFF
20000-27FFF
28000-2FFFF
30000-37FFF
38000-3FFFF
TABLE 121 - FLASH ROM ADDRESS ENCODING
KMEM REGISTER ADDRESS
DECODED FLASH ROM MEMORY
RANGE SELECT BITS
RANGE
D3
D2
D1
D0
0
0
0
0
00000 – 07FFF
0
0
0
1
08000 – 0FFFF
0
0
1
0
10000 – 17FFF
0
0
1
1
18000 – 1FFFF
0
1
0
0
20000 – 27FFF
0
1
0
1
28000 – 2FFFF
0
1
1
0
30000 – 37FFF
0
1
1
1
38000 – 3FFFF
1
0
0
0
40000 – 47FFF
1
0
0
1
48000 – 4FFFF
1
0
1
0
50000 – 57FFF
1
0
1
1
58000 – 5FFFF
1
1
0
0
60000 – 67FFF
1
1
0
1
68000 – 6FFFF
1
1
1
0
70000 – 77FFF
1
1
1
1
78000 – 7FFFF
188
SYSTEM BIOS (HMEM)
Host
8051
Power
Default
HMEM REGISTER
MBX 0x95
N/A
VCC1
VCC1 POR = 0x03
VCC2 POR = 0x03
The system uses this register to select a 64K window for access from the 256K Flash ROM. The host
may access the Flash when RESET_OUT pin is de-asserted and 8051STP_CLK bit D0 = 1.
Bit D2 is added to the HMEM Register to accommodate the high-order Flash ROM address bit FA18
(TABLE 122).
TABLE 122 - HMEM REGISTER
8051 ADDRESS
POWER PLANE
VCC1
HOST INDEX
MBX95h
HOST TYPE
8051 TYPE
BIT NAME
D7
R
RESERVED
D6
R
-
D5
R
-
D4
R
-
D3
R
-
D2
R/W
A18
DEFAULT
0x07 (VCC1 POR)
0x07 (VCC2 POR)
D1
R/W
A17
D0
R/W
A16
are supplied by SA[15:0], address bits A[17:16]
are supplied by configuration register HMEM.
For Flash access, these address lines and bits
are qualified (selected) by 8051STP_CLK=1,
and
the
nRESET_OUT
pin
=
high
(nRESET_OUT is driven by the 8051). The 8051
STP_CLK is set to “1” and HMEM is set to 03h
(effectively resulting in A[17:16] initializing as
"11")
whenever
the
8051
clears
the
IRESET_OUT bit from “1” to “0”. This allows
the system to execute from the upper 64K of the
Flash memory at boot time. To access the
other portions of the Flash memory, the system
software must first change the values of
HMEM[1:0] register to control address lines
A[17:16]. The access to the Flash memory uses
nFWR for a write and nFRD for a read.
HOST FLASH ACCESS
The FDC37N972 has a special shared Flash
ROM interface. The 8051 can be stopped to
allow the Host CPU to access the flash ROM
after a special handshake sequence is followed.
HOST INITIATED FLASH ACCESS
To access the FLASH memory, the 8051 must
first be placed into idle mode, and then the 8051
clock must be stopped. Host flash reads and
writes occur when the nROMCS pin is asserted
along with nMEMRD or nMEMWR. The register
bit “8051_STPCLK” needs to be set by the host
to make the 8051 clock stop. The 8051 clock is
only stopped when 8051STP_CLK=1 and when
nRESET_OUT pin = high. Address bits A[15:0]
189
System fully powered
up and running.
RESET_OUT=low, 8051STP_CLK=0.
8051 owns Flash interface,
running keyboard code.
The host, wishing to access
Flash memory, issues a userdefined command to put the
8051into idle mode.
8051goes into idle mode
The host sets
8051STP_CLK = 1
combined with
RESET_OUT = low; this
causes 8051 clock to stop.
Host now owns Flash
interface.
When done using Flash,
the host resets
8051STP_CLK bit
Note: In order to leave idle mode the 8051 must receive an interrupt;
typically a software timer interupt will be used.
N
8051 Timer
IRQ ?
(Note)
Y
8051 wakes up from idle
mode and starts executing
from where it left off.
FIGURE 25 - DYNAMIC SHARING OF FLASH INTERFACE BETWEEN HOST AND 8051
190
TABLE 123 - 8051 STP_CLK REGISTER
Host
MBX 0x94
8051
N/A
Power
VCC1
Default
0x00
D7
IDLE
D6
HOST_
FLASH
D5-D1
Reserved, set to “0”
D0
0=8051 Clock can run
1=8051 Clock stop
Note:
When bit D0=1 the 8051’s clock is not
stopped unless the nRESET_OUT pin is also
de-asserted at which point the host has access
to the Flash Memory.
Note:
Only bit D0 is R/W, bits[7:1] are Read
only.
HOST BOOT BLOCK SELECT
IDLE : 0 = 8051 not in idle mode
1= 8051 in idle mode
The 64K HOST BOOT bit and the 16K HOST
BOOT bit, D1 and D0 respectively in the Flash
Configuration register (TABLE 127) determine
the host boot block options (TABLE 124). For
more information regarding the 64K HOST
BOOT bit and the 16K HOST BOOT bit, see
FLASH CONFIGURATION REGISTER on page
197.
The FDC37N972 can optionally support 16k and
64k boot block Flash ROMs and can boot out of
the same Flash ROM address space as the
8051.
HOST_FLASH: 0 = Host does not have
access to Flash, in use by 8051
1 = Host has access to Flash
The host boot block options described in TABLE
124 apply to host flash addresses, only.
TABLE 124 - HOST BOOT BLOCK OPTION
FLASH
CONFIGURATION
REGISTER
MODE
DESCRIPTION
D1
D0
0
0
NORMAL
Host Flash Address Bits 18 – 16 are
under control of the HMEM register
(default).
0
1
16K MODE
Host Flash Address Bits 18 – 14 are
forced to “0”.
1
0
64K MODE
Host Flash Address Bits 18 – 16 are
forced to “0”.
1
1
UNDEFINED
DO NOT USE.
191
PROGRAMMABLE FLASH CHIP SELECT
Flash ROM Chip Select Option. The effects of
the ALT CHIP SELECT bit are shown in TABLE
125. For more information regarding the ALT
CHIP
SELECT
bit,
see
FLASH
CONFIGURATION REGISTER on page 197.
The FDC37N972 Flash ROM Chip Select output
nFCS can be optionally deasserted “1” when the
8051 is sleeping with control of the Flash, or
asserted and deasserted according to the Flash
ROM read strobe nFRD.
The ALT CHIP SELECT bit D2 in the Flash
Configuration register (TABLE 127) selects the
TABLE 125 - FLASH ROM CHIP SELECT OPTIONS
FLASH
CONFIG.
REGISTER
MODE
DESCRIPTION
D2
0
NORMAL
nFCS deasserted when 8051 is
sleeping with control of the Flash
(default).
1
READ
nFCS follows nFRD.
FLASH ROM WRITE REDIRECTION
The Flash ROM write control nFWR can be
optionally redirected to an alternate function of
the OUT3 pin to support functions like an I/O
port expander.
effects of the ALT WRITE SELECT bit are
shown in TABLE 126 - FLASH ROM WRITE
REDIRECTION OPTIONS.
For more information regarding the ALT WRITE
SELECT bit, see FLASH CONFIGURATION
REGISTER on page 197.
The ALT WRITE SELECT bit D3 in the Flash
Configuration register (TABLE 127) selects the
Flash ROM Write Redirection Option. The
192
TABLE 126 - FLASH ROM WRITE REDIRECTION OPTIONS
FLASH
CONFIG.
REGISTER
D3
0
1
MODE
NORMAL
WRITE
REDIRECTION
DESCRIPTION
The OUT3 pin is configured as a General Purpose
Output and Flash ROM “writes” appear on the nFWR
pin (default).
The OUT3 pin is configured as an inverted Flash
ROM “write” strobe, FWR. NOTE: Flash ROM
“writes” do not appear on the nFWR pin but appear
inverted on the FWR pin.
FLASH CONFIGURATION REGISTER
OVERVIEW
The Flash Configuration register (TABLE 127 is used to select the various options described in this
document.)
The FCR is a VCC1 register. The bits in the FCR are R/W and cleared by VCC1 POR. Detailed
descriptions of these bits follow, below.
TABLE 127 - FLASH CONFIGURATION REGISTER
HOST ADDRESS
0x7FFC
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R
R
R
R
R/W
R/W
R/W
R/W
ALT
WRITE
SELECT
ALT
CHIP
SELECT
64K
HOST
BOOT1
16K
HOST
BOOT1
RESERVED
NOTE1 Bits D0 and D1 are cleared by VCC1_POR or host writes to the HMEM register.
193
The 16K HOST BOOT bit is used to select the
16K MODE Host Boot Block option shown in
TABLE 124.
See HOST BOOT BLOCK
SELECT, above, for a description of this
function.
ALT WRITE SELECT Bit, D3
The ALT WRITE SELECT bit is used to select
Flash ROM Write Redirection Option shown in
TABLE 126 - FLASH ROM WRITE
REDIRECTION OPTIONS.
NOTE: The 64K HOST BOOT Bit D1 must not
be set to a “1” when the 16K HOST BOOT bit is
“1”.
See FLASH ROM WRITE REDIRECTION,
above, for a description of this function. The
ALT WRITE SELECT bit is also used as the
OUT3 pin alternate function multiplex control
(TABLE 4). The 8051 can read and write the
ALT WRITE SELECT bit. The bit is “0” by
default and is cleared by VCC1_POR.
ALT CHIP SELECT Bit, D2
The 8051 can read and write the 16K HOST
BOOT bit. The 16K HOST BOOT bit is cleared
by VCC1_POR or host writes to the HMEM
register.
8051 SYSTEM POWER MANAGEMENT
The ALT CHIP SELECT bit selects the Flash
ROM Chip Select Option shown in TABLE 125.
See PROGRAMMABLE FLASH CHIP SELECT,
above, for a description of this function. The
8051 can read and write the ALT CHIP SELECT
bit. The bit is “0” by default and is cleared by
VCC1_POR.
64K HOST BOOT Bit, D1
The High-Performance 8051 core provides
support for two further power-saving modes,
available when inactive: Idle mode, typically
entered between keystrokes; and sleep mode,
entered upon command from the host. The
High Performance 8051 is wakeable from sleep
mode through a set of external and internal
events called Wake-Up events. The events are
listed in Table 128. When exiting the Sleep
mode, the High Performance 8051 will continue
executing code from where it left off when put
into sleep with no changes to the SFR and pins.
The 64K HOST BOOT bit is used to select the
64K MODE Host Boot Block option shown in
TABLE 124.
See HOST BOOT BLOCK
SELECT, above, for a description of this
function.
The FDC37N972 is fully static and will pickup
from where it left off in the event of a wake-up
event.
NOTE: The 16K HOST BOOT Bit D0 must not
be set to a “1” when the 64K HOST BOOT bit is
“1”.
The 8051 can read and write the 64K HOST
BOOT bit. The 64K HOST BOOT bit is cleared
by VCC1_POR or host writes to the HMEM
register.
16K HOST BOOT Bit, D0
194
Interrupt Timer and Serial Port functions. The
CPU status is preserved in its entirety: The
Stack Pointer, Program Counter, Program
Status Word, Accumulator, and all other
registers maintain their data. The port pins hold
the logical levels they had when Idle mode was
activated.
IDLE MODE
Entering IDLE mode:
Idle mode is initiated by an instruction that sets
the PCON.0 bit (SFR address 87H) in the
keyboard. In idle mode, the internal clock signal
to the keyboard CPU is gated off, but not to the
195
System fully powered
up and running.
RESET_OUT=low, 8051STP_CLK=0.
8051 owns Flash interface,
running keyboard code.
The host either issues a userdefined command to put the
8051into idle mode, or the
8051 code determines that
the 8051 should enter
Idle mode.
SLEEPFLAG = 0
PCON.0 = 1
8051 now in Idle mode,
8051 clock running.
FIGURE 26 - ENTERING IDLE MODE
196
8051 in Idle mode,
8051 clock running.
N
Unmasked
8051 IRQ ?
(Note)
Note: In order to leave idle mode the
8051 must receive an interrupt, typically
a software timer interrupt will be used.
Y
8051 leaves Idle mode,
executes IRQ service routine
code and executes an IRET
when done.
8051 returns to executing
from where it left off prior to
entering Idle mode.
FIGURE 27 - EXITING IDLE MODE DUE TO IRQ
clear the registers. The CPU will not resume
program execution from where it left off.
EXITING IDLE MODE
There are two ways to terminate Idle mode.
First, activation of any enabled interrupt will
cause the PCON.0 bit to be cleared by
hardware. The interrupt will be serviced and,
following the RETI, the CPU will resume
operation by executing the instruction following
the one that put the CPU into Idle mode.
SLEEP MODE
When the CPU enters sleep mode, all internal
clocks, including the core clocks, are turned off.
If an external crystal is used, the internal
oscillator is turned off. RAM contents are
preserved. Sleep mode is initiated by a user
defined 8051 command sequence.
The second way to terminate the Idle mode is
with a VCC1 POR. Note that a VCC1 POR will
197
RTC and 8051 are in powerdown (sleep) mode.
In Sleep mode the FDC37N972 consumes less
than 20µA, and all wake-up pins are still active.
Sleep mode sequence
To enter sleep mode, the 8051:
turns on the ring oscillator (KSTP_CLK[4] = 1)
switches the clock source (KSTP_CLK[5] = 0)
turns off the clock chip (or the whole system
power, VCC2) masks all interrupts except for
INT5_h
sets SLEEPFLAG = 1
sets PCON.0 = 1
The ring oscillator will be automatically turned
off
The 8051 goes into Sleep mode.
When the 8051 is in sleep mode, all of the
clocks are stopped and the 8051 is waiting for
an unmasked wake-up event. When the wakeup event occurs, the ring oscillator is started the
8051 starts executing from where it stopped in
the sleep Mode Sequence. Once running, the
8051 can access all of the registers that are on
VCC1 and if VCC2 is at 3.3V it can access all of
the registers on VCC2. The 8051 running from
the ring oscillator (internal) clock source switch
to an external clock sourceand then turn off the
ring oscillator (internal) clock source.
In sleep mode, the FDC, UART and parallel port
are powered off if VCC2 is removed, but the
198
System fully powered
up and running.
RESET_OUT= low, 8051STP_CLK= 0.
8051 owns Flash interface,
running keyboard code.
The host either issues a userdefined command to put the
8051into sleep mode, or
the 8051 code determines
that the 8051 should enter
sleep mode.
8051 switches its clock source
to the ring oscillator.
8051 masks all interrupts
except for T5INT.
The 8051 may/may not turn
off VCC2 to rest of system.
SLEEPFLAG = 1
PCON.0 = 1
Ring oscillator first gated off
from 8051, then turned off.
8051 now in
sleep mode,
8051 clock stopped.
FIGURE 28 - ENTERING SLEEP MODE
199
8051 in sleep mode.
RTC, 8051 and other VCC1
driven pins are active
Wake Up Events
RTC Alarm,
Power Button,
Ring Indicator,
etc.
N
Unmasked
Wake-up
Event ?
Y
int5_n generated.
Turn on ring oscillator.
SLEEPFLAG = 0.
Once stabilized, the ring
oscillator is gated through to
the 8051.
The 8051 is now running in
Idle mode and responds
immediately to T5INT.
8051 leaves Idle mode,
executes int5_n service
routine (disables int5_n) and
executes an IRET when
done.
8051 returns to executing
from where it left off prior to
entering sleep mode.
FIGURE 29 - EXITING SLEEP MODE
200
WAKE-UP EVENTS
There are two types of wake-up events that can
occur, internal (TABLE 128 – INTERNAL
SYSTEM WAKE-UP EVENTS) and external
(TABLE 129). Wake-up events on General
Purpose Pins can be either edge or selectable
edges. Refer to table TABLE 109 for further
description. Wake-up events can occur when
VCC2 is off. VCC1 must be on for a wake-up
event to occur, but the high-performance 8051
can be in sleep mode.
TABLE 128 – INTERNAL SYSTEM WAKE-UP EVENTS
WAKE-UP
EVENTS
REGISTER
DESCRIPTION
RTC_ALRM
Wake Up Src 1
RTC Alarm
(0x7F2B) [D0]
HTIMER
Wake Up Src 2
Hibernation Timer
(0x7F2B) [D2]
PM1_STS2
Wake Up Src 1
PM1 Status
(0x7F2A) [D5]
PM1_EN2
Wake Up Src 1
PM1 Enable
(0x7F2A) [D6]
PM1_CTL2
Wake Up Src 1
PM1 Control
(0x7F2A) [D7]
PIN
nRI
AB1_DATA
AB2_DATA
IRRX
KSI[7:0]
GPIO0/
GPIO1
GPIO2
GPIO3
GPIO4
TABLE 129 - EXTERNAL SYSTEM WAKE-UP EVENTS
WAKE-UP
EVENTS
ACTIVE EDGE
REGISTER
DESCRIPTION
UART_RI1
Edge, high-toWake Up Src 2
UART Ring Indicator
low
(0x7F2B) [D6]
ACCBUS1
Leading edge,
Wake Up Src1
AB_DAT
high-to-low
(0x7F2A) [D4]
ACCESS BUS1
ACCBUS2
Leading edge,
Wake Up Src1
AB_DAT
high-to-low
(0x7F2A) [D3]
ACCESS BUS2
IR_RX
Edge, high-toWake Up Src1
IR energy detected on the
low
(0x7F2B) [D2]
IRRX Receive pin
WK_ANYKEY
Edge, high-toWake Up Src 2
Any Keyboard Key
low
(0x7F2B) [D1]
pressed
PROGRAMMABLE
WK_SE02
Wake Up Src 4
General Purpose Pin
(0x7F59) [D2]
PROGRAMMABLE
WK_SE03
Wake Up Src 4
General Purpose Pin
(0x7F59) [D3]
PROGRAMMABLE
WK_SE04
Wake Up Src 4
General Purpose Pin
(0x7F59) [D4]
PROGRAMMABLE
TRIGGER
INT SRC 1
General Purpose Pin
(0x7F02) [D3]
PROGRAMMABLE
WK_SE07
Wake Up Src 4
General Purpose Pin
(0x7F59) [D7]
201
PIN
GPIO5
WAKE-UP
EVENTS
WK_SE10
PROGRAMMABLE
GPIO6
WK_SE11
PROGRAMMABLE
GPIO7
WK_SE06
PROGRAMMABLE
GPIO8
WK_SE12
PROGRAMMABLE
GPIO9
WK_SE13
PROGRAMMABLE
GPIO10
WK_SE14
PROGRAMMABLE
GPIO11
WK_SE15
PROGRAMMABLE
GPIO12
WK_SE16
PROGRAMMABLE
GPIO13
WK_SE17
PROGRAMMABLE
GPIO14
WK_SE20
PROGRAMMABLE
GPIO15
WK_SE21
PROGRAMMABLE
GPIO16
WK_SE22
PROGRAMMABLE
GPIO17
WK_SE23
PROGRAMMABLE
GPIO18
WK_SE27
PROGRAMMABLE
GPIO19
WK_SE24
PROGRAMMABLE
GPIO20/
PS2CLK/
8051RX
GPIO21/
PS2DAT/
8051TX
IN0
WK_SE25
PROGRAMMABLE
WK_SE26
PROGRAMMABLE
Wake Up Src6
(0x7F63) [D6]
WK_EE4
Either Edge
Wake Up Src 2
(0x7F2B) [D5]
ACTIVE EDGE
202
REGISTER
Wake Up Src 5
(0x7F5E) [D0]
Wake Up Src 5
(0x7F5E) [D1]
Wake Up Src 4
(0x7F59) [D6]
Wake Up Src 5
(0x7F5E) [D2]
Wake Up Src 5
(0x7F5E) [D3]
Wake Up Src 5
(0x7F5E) [D4]
Wake Up Src5
(0x7F5E) [D5]
Wake Up Src5
(0x7F5E) [D6]
Wake Up Src5
(0x7F5E) [D7]
Wake Up Src6
(0x7F63) [D0]
Wake Up Src6
(0x7F63) [D1]
Wake Up Src6
(0x7F63) [D2]
Wake Up Src6
(0x7F63) [D3]
Wake Up Src6
(0x7F63) [D7]
Wake Up Src6
(0x7F63) [D4]
Wake Up Src6
(0x7F63) [D5]
DESCRIPTION
General Purpose Pin
General Purpose Pin
Or FIR Mode Output/ 2nd
Receive Input
General Purpose Pin
GPIO8 or IR energy
detected on the
GPIO/COM-RX Receive
pin.
General Purpose Pin
General Purpose Pin
Or FIR Mode Output/ 2nd
Receive Input
GPIO11 or ACCESS.bus
2 Serial Data
GPIO12 or ACCESS.bus
2 Clock
General Purpose Pin
General Purpose Pin
General Purpose Pin
General Purpose Pin
General Purpose Pin
GPIO18 or DMA
Acknowledge
General Purpose Pin
/DMA Acknowledge
General Purpose Pin /PS2
Serial Clock
8051 RX Input
General Purpose Pin /PS2
Serial Data
8051 TX Input
General Purpose Wakeup
Source
IN1
WAKE-UP
EVENTS
WK_EE2
ACTIVE EDGE
Either Edge
IN2
WK_EE3
Either Edge
IN3
nGPWKUP
Either Edge
IN4
WK_SE00
Either Edge
IN5
WK_SE01
Either Edge
IN6
WK_SE05
Either Edge
IN7
WK_EE1
Either Edge
PIN
REGISTER
Wake Up Src 2
(0x7F2B) [D4]
Wake Up Src 2
(0x7F2B) [D5]
Wake Up Src 2
(0x7F2B) [D3]
Wake Up Src 4
(0x7F59) [D0]
Wake Up Src 4
(0x7F59) [D1]
Wake Up Src 4
(0x7F59) [D5]
Wake Up Src1
(0x7F2B) [D1]
DESCRIPTION
General Purpose Wakeup
Source
General Purpose Wakeup
Source
General Purpose Wakeup
Source
General Purpose Wakeup
Source
General Purpose Wakeup
Source
General Purpose Wakeup
Source
General Purpose Wakeup
Source
NOTE: All GPIO pins can generate wake events and all alternate functions of GPIO primary function
pins can generate wake events.
203
the High-Performance 8051 to emulate standard
8042 keyboard controller and preserve software
backward compatibility with the system BIOS.
The FDC37N972’s keyboard ISA interface is
functionally compatible with the 8042-style host
interface. It consists of the SD[0:7] data bus; the
nIOR, nIOW and the KBD (Keyboard) Status
register, KBD Data/Command Write register,
and KBD Data Read register. Table 130 shows
how the interface decodes the control signals.
In addition to the above signals, the host
interface includes keyboard and mouse IRQ's.
KEYBOARD CONTROLLER
8042 STYLE HOST INTERFACE
The FDC37N972 keyboard controller uses a
High-Performance 8051 microcontroller CPU
core to produce a superset of the features
provided by the industry-standard 8042
keyboard controller. Added features include two
high-drive serial interfaces, and additional
interrupt sources. The FDC37N972 provides an
industry standard 8042-style host interface to
TABLE 130 - KEYBOARD CONTROLLER ISA I/O ADDRESS MAP
ISA ADDRESS
NIOW
NIOR
FUNCTION (NOTE 1, 2 )
0x60
0
1
Keyboard Data Write (C/D=0)
1
0
Keyboard Data Read
0x64
0
1
Keyboard Command Write (C/D=1)
1
0
Keyboard Status Read
All addresses are qualified by AEN.
Note 1: The Keyboard Interface can be enabled or disabled through the configuration registers.
Note 2: These registers consist of three separate 8 bit registers: KBD Status, KBD Data/Command
Write and KBD Data Read.
KEYBOARD DATA READ
KEYBOARD DATA WRITE
This is an 8 bit read only register. When read,
This is an 8 bit write only register. When
the PBOBF and/or AUXOBF interrupts are
written, the C/D status bit of the status register
cleared and the OBF flag in the status register is
is cleared to zero and the IBF bit is set.
cleared.
204
KEYBOARD COMMAND WRITE
This is an 8 bit write only register. When
written, the C/D status bit of the status register
is set to one and the IBF bit is set.
This is an 8 bit read only register. Refer to the
description of the Status Register (7FF2H) for
more information.
8051TOCOMMUNICATION
HOST
KEYBOARD
KEYBOARD STATUS READ
The 8051 can write to the KBD Data Read
register via address 7FF1H and 7FFAH (Aux
Host Data Register) respectively. A write to
either of these addresses automatically sets bit
0 (OBF) in the Status register. A write to 7FF1H
also sets PCOBF. A write to 7FFAH also sets
AUXOBF1. See TABLE 132 below.
TABLE 131 - HOST-INTERFACE FLAGS
8051
ADDRESS
FLAG
7FF1H (R/W)
PCOBF (KIRQ) output signal goes high
7FFAH (W)
AUXOBF1 (MIRQ) output signal goes high
HOST I/F DATA REGISTER
Host
ISA 0x60
8051
0x7FF1
Power
VCC1
Default
N/A
The Input Data register and Output Data register
are each 8 bits wide. A write to this 8 bit register
by the 8051 will load the Keyboard Data Read
Buffer, set the OBF flag and set the PCOBF
output if enabled. A read of this register by the
8051 will read the data from the Keyboard Data
or Command Write Buffer and clear the IBF
flag. Refer to the PCOBF and Status register
descriptions for more information.
HOST I/F COMMAND REGISTER
Host
ISA 0x64 (W)
8051
0x7FF1
Power
VCC1
Default
N/A
The host CPU sends commands to the keyboard controller by writing command bytes to ISA port
0x64.
HOST I/F STATUS REGISTER
Host
ISA 0x64 (R)
8051
0x7FF2
Power
VCC1
Default
N/A
205
The Status register is 8 bits wide. Shows the contents of the KBD Status register.
D7
UD
D6
UD
TABLE 132 - KBD STATUS REGISTER
D5
D4
D3
D2
AUXOBF/UD
UD
C/D
UD
D0
OBF
whenever the 8051 writes into the data registers
at 7FF1H.
PCOBF
Host
N/A
8051
0x7FFD
Power
VCC1
Default
0x00
This register is read-only for the Host and
read/write by the 8051. The 8051 cannot write to
bits 0, 1, or 3 of the Status register.
UD
Read/Writeable by 8051.
are user-definable.
D1
IBF
These bits
C/D
Refer to the PCOBF description for information
on this register. This is a “1” bit register (bits 17=0 on read)
Command Data - This bit specifies whether the
input data register contains data or a command
(“0” = data, “1” = command). During a host
data/command write operation, this bit is set to
"1" if SA2 = “1” or reset to "0" if SA2 = 0.
HOST-TO
8051
COMMUNICATION
KEYBOARD
The host system can send both commands and
data to the KBD Data/Command Write register.
The CPU differentiates between commands and
data by reading the value of bit 3 of the Status
register. When bit 3 is "1", the CPU interprets
the register contents as a command. When Bit
3 is "0", the CPU interprets the register contents
as data. During a host write operation, bit 3 is
set to "1" if SA2 = 1 or reset to "0" if SA2 = 0.
IBF
Input Buffer Full - This flag is set to “1”
whenever the host system writes data into the
input data register. Setting this flag activates
the 8051's nIBF interrupt if enabled. When the
8051 reads the input data register, this bit is
automatically reset and the interrupt is cleared.
There is no output pin associated with this
internal signal.
PCOBF DESCRIPTION
OBF
(The following description assumes that OBFEN
= 1 in Configuration Register 0); PCOBF is
gated onto KIRQ. The KIRQ signal is a system
interrupt which signifies that the 8051 has
written to the KBD Data Read register via
address 7FF1H. On power-up, PCOBF is reset
to 0. PCOBF will normally reflect the status of
writes to 7FF1H, if PCOBFEN (bit 2 of
Configuration register “0”) = “0”. (KIRQ is
normally selected as IRQ1 for keyboard
Output Buffer Full - This flag is set to “1”
whenever the 8051 writes into the data registers
at 7FF1H or 7FFAH. When the host system
reads the output data register, this bit is
automatically reset.
AUXOBF
Auxiliary Output Buffer Full - This flag is set to
“1” whenever the 8051 writes into the data
registers at 7FFAH. This flag is reset to “0”
206
the in-process status of write cycles to 7FF1H
(i.e., if the value read back is high, the host
interface output data register has just been
written to). If OBFEN=0, then KIRQ is driven
inactive (low).
support.) PCOBF is cleared by hardware on a
read of the Host Data Register.
Additional flexibility has been added which
allows firmware to directly control the PCOBF
output signal, independent of data transfers to
the host-interface data output register. This
feature allows the FDC37N972 to be operated
via the host "polled" mode. This firmware
control is active when PCOBFEN = 1 and
firmware can then bring PCOBF high by writing
a "1" to the LSB of the 1 bit data register,
PCOBF, allocated at 7FFDH. The firmware
must also clear this bit by writing a "0" to the
LSB of the 1 bit data register at 7FFDH.
AUXOBF1 DESCRIPTION
(The following description assumes that OBFEN
= 1 in Configuration Register 0); This bit is
multiplexed onto MIRQ. The AUXOBF1/MIRQ
signal is a system interrupt which signifies that
the 8051 has written to the output data register
via address 7FFAH.
On power-up, after VCC1 POR, AUXOBF1 is
reset to 0. AUXOBF1 will normally reflects the
status of writes to 7FFAH. (MIRQ is normally
selected as IRQ12 for mouse support.)
AUXOBF1 is cleared by hardware on a read of
the Host Data Register. If OBFEN=0, then
KIRQ is driven inactive (low).
The PCOBF register is also readable; bits 1-7
will return a "0" on the read back. The value
read back on bit 0 of the register always reflects
the present value of the PCOBF output. If
PCOBFEN = 1, then this value reflects the
output of the firmware latch at 7FFDH. If
PCOBFEN = 0, then the value read back reflects
Write to
Register
7FF1
7FFA
HOST I/F STATUS REGISTER BITS
AUXOBF (D5)
OBF (D0)
OBFEN=0
OBFEN=1
0
1
KIRQ=0
MIRQ=0
KIRQ=1
MIRQ=1
1
1
OBFEN
0
1
1
OBFEN
0
1
AUXH
X
0
1
1
PCOBFEN
X
0
1
KIRQ is inactive and driven low
KIRQ = [email protected]
KIRQ = [email protected]
MIRQ is inactive and driven low
MIRQ = [email protected]; Status Register D5 = User
Defined
MIRQ = [email protected]; Status Register D5 =
Hardware Controlled
207
8051 AUXOBF1 CONTROL REGISTER
AUX HOST DATA REGISTER
Host
ISA 0x60
8051
0x7FFA
Power
VCC1
Default
N/A
Refer to the AUXOBF1 description for information on this register.
GATEA20 HARDWARE SPEED-UP
configuration bit called "SAEN" (Software Assist
Enable, bit 1 of Configuration register 0) is
provided; when set, SAEN allows firmware to
control the GATEA20 output.
GATEA20 is multiplexed onto GPIO17 using
MISC6. The FDC37N972 contains on-chip logic
support for the GATEA20 hardware speed-up
feature. GATEA20 is part of the control required
to mask address line A20 to emulate 8086
addressing.
When SAEN is set, a 1 bit register assigned to
address 7FFBH controls the GATEA20 output.
The register bit allocation is shown in Table 133.
In addition to the ability for the host to control
the GATEA20 output signal directly, a
D7
x
TABLE 133 - REGISTER BIT ALLOCATION
D6
D5
D4
D3
D2
D1
D0
x
x
x
x
x
x
GATEA20
Writing a "0" into location D0 causes the
GATEA20 output to go low, and vice versa.
When the register at location 7FFBH is read, all
unused bits (D7-D1) are read back as "0".
When the FDC37N972 receives a "D1"
command followed by data (via the host
interface), the on-chip hardware copies the
value of data bit 1 in the received data field to
the GATEA20 host latch. At no time during this
host-interface transaction will PCOBF or the IBF
flag (bit 1) in the Status register be activated;
i.e., this host control of GATEA20 is transparent
to firmware, with no consequent degradation of
overall system performance. Table 134 details
the possible GATEA20 sequences and the
FDC37N972 responses.
Host control and firmware control of GATEA20
affect two separate register elements. Read
back of GATEA20 through the use of 7FFBH
reflects the present state of the GATEA20 output
signal: if SAEN is set, the value read back
corresponds to the last firmware-initiated control
of GATEA20; if SAEN is reset, the value read
back corresponds to the last host-initiated
control of GATEA20.
On VCC1 POR, GATEA20 will be set.
Host control of the GATEA20 output is provided
by the hardware interpretation of the "GATEA20
sequence" (see TABLE 134). The foregoing
description
assumes
that
the
SAEN
configuration bit is reset.
An additional level of control flexibility is offered
via a memory-mapped synchronous set and
reset capability. Any data written to 7FFEH
causes the GATEA20 host latch to be set; any
208
via this mechanism, a potential conflict could
arise. Therefore, after using the 7FFEH and
7FFFH addresses, firmware should read back
the GATEA20 status via 7FFBH (with SAEN =
0) to confirm the actual GATEA20 response.
data written to 7FFFH causes it to be reset.
This control mechanism should be used with
caution. It was added to augment the "normal"
control flow as described above, not to replace
it. Since the host and the firmware have
asynchronous control capability of the host latch
SA2
1
0
1
1
0
1
1
1
0
1
SA2
1
1
0
1
1
1
1
TABLE 134 - GATE20 COMMAND/DATA SEQUENCE EXAMPLES
R/W
D[0:7]
IBF
GATEA20
COMMENTS
FLAG
GATEA20 Turn-on Sequence
Q
0
D1
W
1
0
DF
W
1
0
FF
W
GATEA20 Turn-off Sequence
Q
0
D1
W
0
0
DD
W
0
0
FF
W
GATEA20 Turn-on Sequence(*)
Q
0
D1
W
Q
0
D1
W
1
0
DF
W
1
0
FF
W
R/W
D[0:7]
IBF
GATEA20
COMMENTS
FLAG
W
D1
0
Q
GATEA20 Turn-off Sequence(*)
W
D1
0
Q
W
DD
0
0
W
FF
0
0
W
D1
0
Q
Invalid Sequence
W
XX**
1
Q
W
FF
1
Q
Notes:
All examples assume that the SAEN configuration bit is 0.
"Q" indicates the bit remains set at the previous state.
*Not a standard sequence.
**XX = Anything except D1.
If multiple data bytes, set IBF and wait at state 0. Let the software know something unusual
happened.
For data bytes SA2=0, only D[1] is used; all other bits are don't care.
209
8051 GATEA20 CONTROL REGISTERS
Host
8051
Power
Default
GATEA20
N/A
0x7FFB
VCC1
0x01
Refer to the GATEA20 Hardware Speed-up description for information on this register. This is a one
bit register (Bits 1-7=0 on read)
Host
8051
Power
Default
SETGA20L
N/A
0x7FFE (W)
VCC1
N/A
Refer to the GATEA20 Hardware Speed-up description for information on this register. A write to this
register sets GateA20.
Host
8051
Power
Default
RSTGA20L
N/A
0x7FFF (W)
VCC1
N/A
Refer to the GATEA20 Hardware Speed-up description for information on this register. A write to this
register re-sets GateA20.
210
GateA20 Logic
nIOW_DLY
SAEN
To KRESET Gen
64&nAEN
nIOW
nIOW
nIOW_DLY
nIOW
DD1
SD[7:0] = D1
D
Q
IBF Bit
Address
SD[7:0] = FF
DFF
SD[7:0] = FE
DFE
IBF
Data
CPU_RESET
0
nAEN&60
MUX
SETGA20L Reg
Any Write
DD1
D
nIOW
nAEN&64
Q
After D1
1
SD[1]
D
R
nIOW
nAEN&60
S
Q
Fast_GateA20
Write
GATEA20 Reg
d0
Read
GATEA20 Reg
d0
R
RSTGA20L Reg
Any Write
D
Trailing Edge Delay
SAEN
bit-1 of
Config Reg 0
bit-0
bit-0
Port92 Reg
ENAB_P92
ALT_A20
Bit 1
VCC
Delay
nIOW_DLY
nIOW
D
Q
D
Q
D
24MHz
R
nQ
FIGURE 30 - GATEA20 IMPLEMENTATION DIAGRAM
211
A20
GATEA20
CPU_RESET HARDWARE SPEED-UP
The ALT_CPU_RESET bit generates, under
program control, the nALT_RST signal, which
provides an alternate, means to drive the
FDC37N972 CPU_RESET pin which in turn is
used to reset the Host CPU. The nALT_RST
signal is internally NANDed together with the
nKBDRESET pulse from the KRESET Speed up
logic to provide an alternate software means of
resetting the host CPU. Note: before another
nALT_RST
pulse
can
be
generated,
ALT_CPU_RESET must be cleared to “0” either
by a system reset (nRESET_OUT asserted) or
by a write to the Port92 register with bit 0 = “0”.
A nALT_RST pulse is not generated in the event
that the ALT_CPU_RESET bit is cleared and set
before the prior nALT_RESET pulse has
completed.
14 us
6us
FE
Command
From
KRESET
Speed up
Logic
SAEN
KRESET
Pulse
Gen
CPU_RESET
ENAB_P92
Port92 Reg
Bit 0
Pulse
Gen
nALT_RST
14 us
6us
FIGURE 31 - CPU_RESET IMPLEMENTATION DIAGRAM
PORT 92
The FDC37N972 supports ISA I/O writes to port 92h as a quick alternate mechanism for generating a
CPU_RESET pulse or controlling the state of GATEA20.
212
Host R/W
Bit Def
PORT 92 REGISTER DESCRIPTION
D7-D2
D1
D0
R/W
R/W
R/W
0
ALT_GATEA20
ALT_CPU_RESET
Reserved
The Port92h register resides at ISA address
0x92 and is used to support the alternate reset
(nALT_RST)
and
alternate
GATEA20
(ALT_A20) functions. This register defaults to
0x00 on assertion of nRESET_OUT or on VCC2
Power On Reset.
Setting the Port 92 Enable bit (bit 0 of Logical
Device 7 Configuration Register 0xF0) enables
the Port92h Register. When Port92 is disabled,
by clearing the Port 92 Enable bit, then access
to this register is completely disabled (I/O writes
to ISA 92h are ignored and I/O reads float the
system data bus SD[7:0]).
When Port92h is enabled the bits have the
following meaning:
D7-D2 RESERVED
A write are ignored and a read return 0.
D1 - ALT_GATEA20
This bit provides an alternate means for system
control of the FDC37N972 GATEA20 pin.
213
= 0: ALT_A20 is driven low
= 1: ALT_A20 is driven high
When Port 92 is enabled, writing a 0 to bit 1 of
the Port92 Register forces ALT_A20 low.
ALT_A20 low drivesGATEA20 low, if A20 from
the keyboard controller is also low. When Port
92 is enabled, writing a 1 to bit 1 of the Port92
register forces ALT_A20 high. ALT_A20 high
drives GATEA20 high regardless of the state of
A20 from the keyboard controller.
D0 - ALT_CPU_RESET
This bit provides an alternate means to generate
a CPU_RESET pulse. The CPU_RESET output
provides a means to reset the system CPU to
effect a mode switch from Protected Virtual
Address Mode to the Real Address Mode. This
provides a faster means of reset than is
provided through the 8051 keyboard controller.
Writing a “1” to this bit will cause the nALT_RST
internal signal to pulse (active low) for a
minimum of 6µs after a delay of 14µs. Before
another nALT_RST pulse can be generated, this
bit must be written back to “0”.
GATEA20
The hardware GATEA20 state machine returns to state S1 from state S2 when CMD = D1 (FIGURE
32).
CMD !=D1 or
DATA
[IBF=1]
RESET
S0
CMD = D1
[IBF=0]
CMD = FF
[IBF=0]
CMD !=D1 or
CMD !=FF or
DATA
[IBF=1]
S2
CMD !=D1
[IBF=1]
CMD = D1
[IBF=0]
S1
Data
[IBF=0, Latch DIN
Notes: GateA20 Changes When in S1 going to S2
Clock = wrdinB
CMD = [SA2=1]
Data = [SA2=0]
GateA20 State Machine
FIGURE 32 - GATEA20 STATE MACHINE
214
CMD = D1
[IBF=0]
DIRECT KEYBOARD SCAN
The FDC37N972 scanning keyboard controller
is designed for intelligent keyboard management
in computer applications.
By properly
configuring GPIO4 and GPIO5, the FDC37N972
may be programmed to directly control
keyboard interface matrixes of up to 16x8.
KEYBOARD SCAN-OUT REGISTER
Host
N/A
8051
0x7F04 (W)
Power
VCC1
Default
0x20
8051
R/W
Bit Def
D7-D6
W
N/A
D5
W
D4
W
D3
W
KSEN
1 = forces all
KSO lines to
go low
D2
W
D1
W
D0
W
D5 and D4 must be ‘0’
D[3:0] = 0000 KSO[0] is asserted low
D[3:0] = 0001 KSO[1] is asserted low
D[3:0] = 0010 KSO[2] is asserted low
D[3:0] = 0011 KSO[3] is asserted low
•
•
•
D[3:0] = 1101 KSO[13] is asserted low
D[3:0] = 1110 KSO[14] is asserted low
D[3:0] = 1111 KSO[15] is asserted low
KSEN 1 = disable scanning of internal keyboard (all the KSOUT lines going high) (D4-D0 are don’t
cares)
0 = enable scanning of internal keyboard
Note:
Setting D[3:0] to 111x puts KSO0 - KSO13 outputs as Hi-Z.
KEYBOARD SCAN-IN REGISTER
Host
N/A
8051
0x7F04 (R)
Power
VCC1
Default
N/A
8051 R
Bit description
D7-D0
R
Reflects the state of KSI [7:0]
The value of the KSI[x] pins can be read through this register.
The pin values are latched during the read.
215
EXTERNAL KEYBOARD AND MOUSE INTERFACE
Industry-standard PC/AT-compatible keyboards
employ a two-wire, bidirectional TTL interface
for data transmission. Several sources also
supply PS/2 mouse products that employ the
same type of interface. To facilitate system
expansion, the FDC37N972 provides four pairs
of signal pins that may be used to implement
this interface directly for an external keyboard
and mouse.
The FDC37N972 has four high-drive, open-drain
output (external pull-ups are required),
bidirectional port pins that can be used for
external serial interfaces, such as ISA external
keyboard and PS/2-type mouse interfaces.
They are KBCLK, KBDAT, EMCLK, EMDAT,
IMCLK, IMDAT, PS2CLK and PS2DAT.
The following function is assumed to be in the
PS/2 PORT logic: The serial clock lines,
KBCLK, EMCLK, IMCLK and PS2CLK, are
cleared to a low by VCC2 POR. This is so that
any power-on self-test completion code
transmitted from the serial keyboard will not be
missed by the FDC37N972 due to power-up
timing mismatches.
PS/2 DEVICE INTERFACE
The FDC37N972 has four independent PS/2
serial ports implemented in hardware which are
directly controlled by the on chip 8051. The
hardware implementation eliminates the need to
bit bang I/O ports to generate PS/2 traffic,
however bit banging is still available if required.
216
Each of the four PS/2 serial channels use a
synchronous serial protocol to communicate
with the auxiliary device. Each PS/2 channel
has two signal lines: Clock and Data. Both
signal lines are bi-directional and employ open
drain outputs capable of sinking 16mA. A pullup resistor (typically 10K) is connected to the
clock and data lines. This allows either the
FDC37N972 SMSC PS/2 logic or the auxiliary
device to control both lines. Regardless, the
auxiliary device provides the clock for transmit
and receive operations. The serial packet is
made up of eleven bits, listed in order as they
will appear on the data line: start bit, eight data
bits (least significant bit first), odd parity, and
stop bit. Each bit cell is from 60µS to 100µS
long.
The SMSC PS/2 and the Devil Logic interfaces
are available in the FDC37N972. The PS2_SEL
Control bit D4 in Configuration Register 0
(0x7FF4) is used select between these two
mutually exclusive options. (See TABLE 90 CONFIGURATION REGISTER 0.) Many of the
SMSC PS/2 and the Devil Logic registers share
the same address space in the 8051 MMCRs.
These are shown in TABLE 86 between
addresses 0x7F41 and 0x7F4F.
See 8051 INT0 Source REGISTER on page
172 for a description of the Devil Logic versus
the SMSC PS/2 interrupts and a description of
the repsective pin mapping.
PIN NUMBER
45
46
47
48
50
51
52
53
PIN NAME
GPIO20
GPIO[21]
IMCLK
IMDAT
KCLK
KDAT
EMCLK
EMDAT
TABLE 135 - PIN DEFINITIONS
SMSC PS/2 FUNCTION
SMSC PS/2 DESCRIPTION
PS2CLK
Channel D Serial Clock
PS2DAT
Channel D Serial Data
IMCLK
Channel C Serial Clock
IMDAT
Channel C Serial Data
KCLK
Channel B Serial Clock
KDAT
Channel B Serial Data
EMCLK
Channel A Serial Clock
EMDAT
Channel A Serial Data
All PS/2 Serial Channel signals (CLK and DAT) are driven by open collector (TYPE I/OD16) drivers
pulled to VCC2 (+3.3V nominal) through 10K-ohm resistors.
SMSC PS/2 LOGIC OVERVIEW
The SMSC PS/2 logic allows the host to
communicate to any serial auxiliary devices
compatible with the PS/2 interface through any
one of four channels. The PS/2 Logic consists
of four identical SMSC PS/2 channels, each
containing a set of four operating registers. The
four Channels are PS/2 Chan A, PS/2 Chan B,
PS/2 Chan C, and PS/2 Chan D. During a
reception, the FDC37N972 latches the data on
the high to low transition of the clock. During a
transmission, the FDC37N972 transitions the
data line on the high to low transition of the
clock. See FIGURE 33 - SMSC PS/2 LOGIC
BLOCK DIAGRAM.
Notes:
1) Each PS/2 channel has the ability to “busy” the communication link by pulling the clock line low.
This is accomplished by simultaneously clearing the PS2_EN and WR_CLK bits in the Control
Register.
2) Each PS/2 channel has the ability to abort, prior to the parity bit (10th bit), the transfer in
progress.
3) Clock bit time (cycle time) typically varies between 60 and 100 us. The FDC37N972 PS/2 Logic
is designed such that it is immune to variations in the clock cycle times within the limit of the
transfer timeout.
4) Once a transmission has begun, the PS/2 `peripheral is allowed up to 300us per bit transfer. If
the time between falling clock edges exceeds 300us a transfer timeout occurs resulting in either
XMIT_TIMEOUT or REC_TIMEOUT being set along with the generation of an interrupt.
5) Once a transmission has started, the PS/2 peripheral has approximately 2ms to complete the
transfer. This transfer timeout applies to transmissions as well as receptions. In the case of a
transmission(reception), if a 2ms timeout occurs the XMIT_TIMEOUT(REC_TIMEOUT) bit in the
status register is set and an interrupt is generated.
6) When the controller is ready to transmit data it floats the data line and drives the clock line low.
Once data is written to the Transmit Register the data line is driven low and after a delay the clock
line is released (floated) so that the PS/2 peripheral knows data is ready. Releasing the clock
signals the start of a trasmission. The PS/2 peripheral has 25ms to acknowledge the transmit
start condition above by driving the clock line low. If the PS/2 peripheral does not acknowledge in
217
7)
8)
the allotted time then a Trasmit timeout occurs: setting the XMIT_TIMEOUT error bit in the Status
register and generating an interrupt.
By clearing the PS/2 channels PS2_EN bit in its Control Register the PS/2 Channel can be
operated in a fully software controlled “Bit-bang” mode. This allows operation of auxilliary devices
that do not meet standard PS/2 protocol timing handled by the FDC37N972’s PS/2 Logic block.
See Sections 0 through 0 for timing information.
8051
MEMORY
MAPPED
CONTROL
REGISTERS
PS2_CHAN_A
PDAT_A
PCLK_A
PS2_CHAN_B
PDAT_B
PCLK_B
PS2_CHAN_C
PDAT_C
PCLK_C
PS2_CHAN_D
PDAT_D
PCLK_D
FIGURE 33 - SMSC PS/2 LOGIC BLOCK DIAGRAM
PS/2 DATA FRAME
Data transmissions to and from the auxilliary device connector on each PS/2 channel consist of an 11bit data stream sent serially over the data line. The following figure shows the function of each bit.
Start Bit
Always 0
8 data bits, least sig bit first
Parity Bit
Odd on xmit
Prog. on rec.
Stop Bit
High on xmit
Prog. on rec.
FIGURE 34 - PS/2 DEVICE DATA STREAM BIT DEFINITIONS
SMSC PS/2 MEMORY MAPPED CONTROL
REGISTERS
one register is shared by all four channels to
provide RX_Busy indicators.
Each SMSC PS/2 channel has a separate set of
identical control registers: Transmit, Receive,
Control,and Status. These are shown in TABLE
86 between addresses 0x7F41 and 0x7F4F. The
transmit and receive register share the same
address (ie. . PS/2 Chan A Tx/Rx) In addition
SMSC PS/2 TRANSMIT REGISTERS
218
The byte written to this register, when PS2_T/R,
PS2_EN, and XMIT_IDLE are set, is transmitted
automatically by the PS/2 channel control logic.
If any of these three bits (PS2_T/R, PS2_EN,
and XMIT_IDLE) are not set, then writes to this
register are ignored. On successful completion
of this transmission or upon a Transmit Timeout condition the PS2_T/R bit is automatically
cleared and the XMIT_IDLE bit is automatically
set. The PS2_T/R bit must be written to a ‘1’
before initiating another transmission to the
remote device.
Notes:
1) Even if PS2_T/R, PS2_EN, and XMIT_IDLE
are all set, writing the Transmit Register will
not kick off a transmission if RDATA_RDY
is set. The automatic PS2 logic forces data
to be read from the Receive Register before
allowing a transmission.
2) An interrupt is generated on the low to high
transition of XMIT_IDLE.
3) All bits of this register are write only.
SMSC PS/2 RECEIVE REGISTERS
When PS2_EN=1 and PS2_T/R=0 the PS2
Channel is set to automatically receive data on
that channel (both the CLK and DATA lines will
float waiting for the peripheral to initiate a
reception by sending a start bit followed by the
data bits). After a successful reception data is
placed in this register and the RDATA_RDY bit
219
is set and the CLK line is forced low by the PS2
channel logic. RDATA_RDY is cleared and the
CLK line is released to hi-z following a read of
this register. This automatically holds off further
receive transfers until the 8051 has had a
chance to get the data.
Notes:
1) The Receive Register is initialized to 0xFF
after a read or after a Timeout has occured.
2) The channel can be enabled to
automatically transmit data (PS2_EN=1) by
setting PS2_T/R while RDATA_RDY is set,
however a transmission can not be kicked
off until the data has been read from the
Receive Register.
3) An interrupt is generated on the low to high
transition of RDATA_RDY.
4) If a receive timeout (REC_TIMEOUT=1) or
a transmit timeout (XMIT_TIMEOUT=1)
occurs the channel is busied (CLK held low)
for 300us (Hold Time) to guarantee that the
peripheral aborts. Writing to the Transmit
Register will be allowed, however the data
written will not be transmitted until the Hold
Time expires.
5) All bits in this register are read only
SMSC PS/2 CONTROL REGISTERS
TABLE 136 - SMSC PS/2 CONTROL REGISTERS (A - D)
HOST ADDRESS
0x7F42 (CHAN A),
8051 ADDRESS
0x7F46 (CHAN B),
0x7F4A (CHAN C),
0x7F4E (CHAN D)
VCC2
POWER
0x40
DEFAULT
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
WR_CLK
WR_DATA
STOP
PS2_EN
PS2_T/R
PARITY
Default = 0x40 on VCC2 POR only.
Note: There are four PS/2 Control Registers, one for each channel.
PS2_T/R
PS/2 Channel Transmit/Receive (default = 0).
This bit is only valid when PS2_EN=1 and sets
the PS2 logic for automatic transmission or
reception when PS2_T/R equals ‘1’ or ‘0’
respectively.
When set the PS/2 channel is enabled to
transmit data. To properly initiate a transmit
operation this bit must be set prior to writing to
the Transmit Register; writes are blocked to the
Transmit Register when this bit is not set. Upon
setting the PS2_T/R bit the channel will drive its
CLK line low and then float the DATA line and
hold this state until a write occurs to the
Transmit Register or until the PS2_T/R bit is
cleared.
Writing to the Transmit Register
initiates the transmit operation. FDC37N972
drives the data line low and, within 80ns, floats
the clock line (externally pulled high by the pullup resistor) to signal to the external PS/2 device
220
that data is now available. The PS2_T/R bit is
cleared on the 11th clock edge of the
transmission or if a Transmit Timeout error
condition occurs. NOTE: if the PS2_T/R bit is
set while the channel is actively receiving data
prior to the leading edge of the 10th (parity bit)
clock edge the receive data is discarded. If this
bit is not set prior to the 10th clock signal then
the receive data is saved in the Receive
Register.
When the PS2_T/R bit is cleared the PS/2
channel is enabled to receive data. Upon
clearing this bit, if RDATA_RDY=0, the
channel’s CLK and DATA will float waiting for
the external PS/2 device to signal the start of a
transmission. If the PS2_T/R bit is set while
RDATA_RDY=1 then the channel’s DATA line
will float but its CLK line will be held low, holding
off the peripheral, until the Receive Register is
read.
PS2_EN
PS2 Channel ENable (default = 0). When PS2_EN=1 the PS/2 State machine is enabled allowing the
channel to perform automatic reception or transmission depending on the bit value of PS2_T/R.
When PS2_EN = 0, the channel’s automatic PS/2 state machine is disabled and the channel can be
bit-banged through the WR_DATA and WR_CLK bits in the Contol Register and the RD_DATA and
RD_CLK bits in the Status Register. Thus, when PS2_En=0, the channel’s CLK and DATA lines are
forced to the level specified in the Control Register WR_CLK and WR_DATA bits.
NOTE: If the PS2_EN bit is cleared prior to the leading edge (falling edge) of the 10th (parity bit) clock
edge the receive data is discarded (RDATA_RDY remains low). If the PS2_EN bit is cleared following
the leading edge of the 10th clock signal then the receive data is saved in the Receive Register
(RDATA_RDY goes high) assuming no parity error.
PARITY
Bits [3:2] of the Control Register are used to set the parity expected by the PS/2 channel state
machine. These bits are therefore only valid when PS2_EN=1.
Bits[3:2] = 00
: Receiver expects Odd Parity (default).
= 01
: Receiver expects Even Parity.
= 10
: Receiver ignores level of the parity bit (10th bit is not interpreted as a parity bit).
= 11
: Reserved.
STOP
Bits [5:4] of the Control Register are used to set the level of the stop bit expected by the PS/2 channel
state machine. These bits are therefore only valid when PS2_EN=1.
Bits[5:4] = 00
: Receiver expects an active high stop bit.
= 01
: Receiver expects an active low stop bit.
= 10
: Receiver ignores the level of the Stop bit (11th bit is not interpreted as a stop bit).
= 11
: Reserved.
WR_DATA
Write DATA bit: When PS2_EN=1, writes to the WR_DATA bit are accepted but result in no action
other than setting or clearing this bit. When PS2_EN=0, setting this bit to a 1 or 0 either floats or
drives low the PS/2 channel’s Serial DATA pin. This bit is used for transmitting bit-banged data over
the PS2 channel. Bit-banging of the PS/2 channel is enabled when PS2_EN= 0.
Note : while the Hold timeout is in effect (300us following a Receive or Transmit Timeout) writes to
this bit are blocked.
WR_CLK
Write CLK bit: When PS2_EN=1, writes to the WR_CLK bit are accepted but result in no action other
than setting or clearing this bit. When PS2_EN=0, setting this bit to a 1 or 0 either floats or drives low
the PS/2 channel’s Serial CLK pin. Bit-banging of the PS/2 channel is enabled when the PS2_EN bit
is set to 0.
221
SMSC PS/2 Status Registers
Note : While the Hold timeout is in effect (300us following a Receive or Transmit Timeout) writes to
this bit are blocked.
Note : When PS2_EN = 0, high to low transitions on the CLK pin caused by the peripheral will
generate a PS2 Chan interrupt. A timeout event or writing this bit low will not cause an interrupt.
The default for the WR_DATA bit D6 in the four SMSC PS/2 Control Registers is “1”. The default in
earlier devices is “0” (TABLE 136). The VCC2 Power-on Default for each Control Register is 40h.
TABLE 137 - SMSC PS/2 STAUS REGISTERS (A - D)
HOST ADDRESS
0x7F43 (CHAN A),
8051 ADDRESS
0x7F47 (CHAN B),
0x7F4B (CHAN C),
0x7F4F (CHAN D)
VCC2
POWER
0x00
DEFAULT
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R
R
R
R
R
R
R
R
RD_CLK
RD_DATA
XMIT_
TIMEOUT
XMIT_IDLE
FE
PE
REC_
TIMEOUT
RDAT
_RDY
Default = 0x40 on VCC2 POR only.
Note: There are four PS/2 Status Registers, one for each channel.
Note : XMIT_TIMEOUT, FE, PE, REC_TIMEOUT, RDATA_RDY are cleared to zero upon a read of
this register.
222
RDATA_RDY
PE
Receive Data Ready: Under normal operating
conditions, this bit is set following the falling
edge of the 11th clock given successful
reception of a data byte from the PS/2
peripheral (i.e., no parity, framing, or receive
timeout errors) and indicates that the received
data byte is available to be read from the
Receive Register. This bit may also be set in
the event that the PS2_EN bit is cleared
following the 10th CLK edge (see the PS2_EN
bit description for further details). Reading the
Receive Register clears this bit.
Parity Error: When receiving data the parity bit
is clocked in on the falling edge of the 10th CLK
edge. If the channel has been set to expect
either even or odd parity and the 10th bit is
contrary to the expected parity, then the PE and
REC_TIMEOUT bits are set following the falling
edge of the 10th CLK edge and an Interrupt is
generated.
Note : An Interrupt is generated on the low to
high transition of the RDATA_RDY bit.
REC_TIMEOUT
Under PS2 automatic operation, PS2_EN=1,
this bit is set on one of 4 receive error
conditions, and in additon the channel’s CLK
line is automatically pulled low and held for a
period of 300us following assertion of the
REC_TIMEOUT bit :
1)
2)
3)
4)
When the receiver bit time (time between
falling edges) exceeds 300us.
If the time from the 1st (start) bit to the 10th
(parity) bit exceeds 2ms.
On a receive parity error along with the
parity error (PE) bit.
On a receive framing error due to an
incorrect STOP bit along with the framing
error (FE) bit.
The REC_TIMEOUT bit is cleared when the
Status Register is read.
Note : An Interrupt is generated on the low to
high transition of the REC_TIMEOUT bit.
FE
Framing Error: When receiving data the stop bit
is clocked in on the falling edge of the 11th CLK
edge. If the channel has been set to expect
either a high or low stop bit and the 11th bit is
contrary to the expected stop polarity, then the
FE and REC_TIMEOUT bits are set following
the falling edge of the 11th CLK edge and an
Interrupt is generated.
XMIT_IDLE
Transmiter Idle: When low, the XMIT_IDLE bit
is a status bit indicating that the PS2 channel is
actively transmitting data to the PS2 peripheral
device. Writing to the Transmit Register when
the channel is ready to transmit will cause the
XMIT_IDLE bit to deassert and remain
deasserted until one of the following conditions
occur:
1) the falling edge of the 11th CLK; upon a
Transmit
Timeout
condition
(XMIT_TIMEOUT goes high);
2) upon the PS2_T/R bit being written to 0;
3) upon the PS2_EN bit being written to 0.
Note : An interrupt is generated on the low to
high transition of XMIT_IDLE.
XMIT_TIMEOUT
This bit is set on one of 3 transmit conditions,
and in additon the channel’s CLK line is
automatically pulled low and held for a period of
223
pin. This bit is used when receiving bit-banged
data over the PS2 channel. Bit-banging of the
PS2 channel is enabled when the PS2_EN bit is
set to 0. To receive bit banged data properly the
PS2_EN must be set to 0 and the WR_CLK bit
in the PS2 Channel’s Control Register must be
set to 1.
300us
following
assertion
of
the
XMIT_TIMEOUT bit during which time the
PS2_T/R is also held low :
When the transmitter bit time (time between
falling edges) exceeds 300us.
When the transmitter start bit is not received
withing 25ms from signaling a transmit start
event.
If the time from the 1st (start) bit to the 10th
(parity) bit exceeds 2ms.
Note : When PS2_EN = 0, high to low
transitions on the CLK pin will generate a PS2
Chan interrupt. A timeout event or writing this bit
low will not cause an interrupt.
RD_DATA
Note : When PS2_EN=1, bit-banging is disabled
for any of the following 3 conditions:
Time-out is active.
300us following a time-out (Hold Time).
RDATA_RDY = 1.
Read DATA bit: Reading this bit returns the
current level of the PS2 channel’s Serial DATA
pin. This bit is used for receiving bit-banged
data over the PS2 channel. Bit-banging of the
PS2 channel is enabled when the PS2_EN bit is
set to 0. To receive data properly using this bit,
PS2_EN must be set to 0 and the WR_DATA bit
in the PS2 Channel’s Control Register must be
set to 1.
SMSC PS/2 STATUS_2 REGISTERS
The PS/2_STATUS_2 Register supports the
RX_Busy indicators for each of the four PS/2
Channels (A - D) When a RX_BUSY bit is set
the associated channel is actively receiving
PS/2 data; when a RX_BUSY bit is clear the
channel is idle.
RD_CLK
Read CLK bit: Reading this bit returns the
current level of the PS2 channel’s Serial CLK
TABLE 138 - SMSC PS/2_STATUS_2 REGISTER
HOST ADDRESS`
0x7F48
8051 ADDRESS
VCC2
POWER
0x00
DEFAULT
HOST
TYPE
8051
TYPE
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R
R
R
R
R
R
R
R
224
PROGRAMMER’S NOTE:
Always check that an SMSC PS/2 channel is
idle, i.e. the RX_BUSY bit is ”0”, before
attempting to transmit on that channel. Receive
data may or may not be lost by setting an
SMSC PS/2 channel to transmit while the
RX_BUSY bit is asserted depending where in
the message frame the tranmit mode change
occurs.
3)
DEVIL LOGIC OVERVIEW
The Devil PS/2 logic allows the host to
communicate to any serial auxiliary devices
compatible with the PS/2 interface through any
one of four ports: EM, KB, IM and PS2. There
are two identical PS/2 channels, each containing
a set of five operating registers. Channel 1
(PS/2 Port 1) consists of ports EM and KB and
channel 2 (PS/2 Port 2) consists of ports IM and
PS2. The FDC37N972 latches data on the high
to low transition of the clock.
THE DEVIL PS/2 LOGIC COMMANDS
The Devil PS/2 logic supports three commands:
Transmit, Receive, and Inhibit.
Notes:
1)
2)
4)
counter will reset and you will either get
receive time-outs (all bits not received
within 2 ms), or you will get parity errors. If
there is a receive error, the BUSY bit can be
used to determine which device was
sending when the error occurred. If there is
a transmit error, the ENABLE bit in the
Control register can be used to determine
which device was selected.
If your PS/2 code is interrupt driven, is best
to send the inhibit command while the
interrupts are enabled so any byte being
received can finish and get picked up by the
interrupt handler.
This is necessary
because a receive may have been in
progress when the Inhibit command was
issued, and a receive will complete if the
parity bit is reached.
If there is a Request To Send (RTS) timeout or other condition which results in no
byte being received from the DEVIL PS/2
device, there will be no device 'data ready'
flag set in the status register. It will be
necessary to read the device enable bits in
the status register, or use some other
means to remember which.
THE
DEVIL
COMMAND
The hardware state machine requires that
you read any pending command response
byte from the input register before you send
an Inhibit command to the device. Since
only one response byte is allowed to be
automatically received, there is no need to
inhibit the port before you read the
response.
After sending a Transmit or Receive
command to the Control register, do not
read the status register until the PS/2
Interrupt Flag is set. If you read the status
register to check the BUSY bits, the bit
225
PS/2
LOGIC
TRANSMIT
The Devil PS/2 serial protocol requires that the
auxiliary device respond to all transmissions
that it receives. The response is usually a 0xFA
, 0xFE, 0xFC or 0xEE. The response is stored
in the DEVIL PS/2 ports RECEIVE register.
Thus, after each transmission the RECEIVE
register should contain some response byte.
When sending a byte to a DEVIL PS/2 device,
Two writes to the control register are required to
avoid race conditions: first the device select
bit(s) (bits[4:3]) in the control register must be
set, clearing the command bits[2:0]; then
another write to the control register selecting
ONE command, and preserving the device
select bits. The DEVIL PS/2 logic will assume
that the byte being sent is a 'command', and will
automatically go into receive mode for a single
response byte. The DEVIL PS/2 logic must be
placed into receive mode to receive additional
response bytes. An error will be reported if the
device does not start clocking out the command
byte within 15 ms, or if the device does not send
a response within 32 ms of receiving the
command. The DEVIL PS/2 logic will cause an
interrupt after the response byte is received, or if
there is a send or receive time-out.
The DEVIL PS/2 logic drives the clock line low
and then floats the data line when the port is
selected to transmit. Writing to the TRANSMIT
register initiates the transmit operation. The
data line is driven low and, within 80ns, the
clock line is floated (externally pulled high by the
pull-up resistor).
The auxiliary device
recognizes this as the start bit, and responds by
providing the eleven clocks (each clock
corresponds to a bit). The Logic provides a
3.2µS bit hold time. If the auxiliary device did
not respond within 15 mS after the start bit,
transmit is terminated and ERROR bit of the
STATUS register and the RTSTIMOUT bit of the
ERROR register are set. The auxiliary device
has 2 ms to complete the transmission or the
DEVIL PS/2 logic will set the ERROR bit of the
STATUS register and the XMTTIMOUT bit of the
ERROR register.
If the transmission is
successful, the clock and data lines are floated
waiting for the auxiliary device to send the
response packet.
If the first byte of the
response packet is not received within 32 mS,
the ERROR bit of the STATUS register is set,
the RESTIMOUT bit of the ERROR register is
set. If, on the other hand, the response packet is
received and there are no errors, the DEVIL
PS/2 logic sets the READY bit of the STATUS
register, clears the ERROR bit of the STATUS
register, and clears the ERROR register. The
RECEIVE register contains the received
response byte.
226
THE DEVIL PS/2 LOGIC RECEIVE COMMAND
When receiving scan codes or mouse packets,
select one or both DEVIL PS/2 devices in the
Control register (bits[4:3]), clearing the
command bits[2:0]. Then do another write
setting the Receive command bit while
preserving the device select bits. The DEVIL
PS/2 logic will only let one device send at a
time (whichever starts sending first), and will
cause an interrupt for each received byte.
Reading the byte from the Receive register
causes the DEVIL PS/2 logic to go into receive
mode again.
The DEVIL PS/2 logic floats the DEVIL PS/2
port’s clock and data line when the port is
selected to receive.
The auxiliary device
initiates the transfer by driving the data line low
and 12µS later driving the clock low. The DEVIL
PS/2 Logic recognizes this as a start bit and
sets the BUSY bit.
The auxiliary device
proceeds by transmitting ten more bits to the
DEVIL PS/2 logic. The DEVIL PS/2 Logic
latches the data on the high to low transition of
the clock. After the stop bit, the DEVIL PS/2
Logic clears the BUSY bit and drives the clock
line low until the RECEIVE register is read by
the 8051. If there is no error in the transfer, the
DEVIL PS/2 logic sets the READY bit of the
STATUS register, clears the ERROR bit of
STATUS register, and clears the ERROR
register. If, however, the receive operation does
not complete in 2 ms of receiving a start bit, the
ERROR bit of the STATUS register is set
together with the RECTIMOUT bit of the
ERROR register, and the READY bit is not set.
Note that the logic can be left in receive mode
indefinitely and is normally used to receive
keyboard scan codes and mouse packets.
THE DEVIL PS/2 LOGIC INHIBIT COMMAND
When you abort a transmission from a DEVIL
PS/2 device, it is necessary to hold the clock
line low for at least 100 us in order for the
device to note that the transmission has been
aborted. This 100 us low clock time is called a
device 'Inhibit'. When you want to perform the
Inhibit command, select one or both DEVIL
PS/2 devices in the Control register, clearing the
command bits. Then do another write setting the
Inhibit command bit while preserving the device
select bits. The DEVIL PS/2 logic will hold the
device clock lines low and count down 100 us,
then it will generate an interrupt to indicate that
the time-out is over. The interrupt handler
should then clear the Inhibit command bit in the
Control register. After an Inhibit, the device
clock lines will remain low until the next
Transmit or Receive command.
Note that if the device is receiving a byte when
the Inhibit command is sent, and the parity bit
has already been started, the device will
complete the receipt and set the READY bit
before the inhibit takes effect, so it is necessary
to check for data even when the INHIBIT DONE
bit is set.
DEVIL PS/2 MEMORY MAPPED CONTROL
REGISTERS
Each Devil PS/2 channel has a separate set of
identical control registers: Control, Status, Error
Status, Transmit, and Receive. These are
shown in TABLE 86 between addresses 0x7F41
and 0x7F4F.
DEVIL PS/2 CONTROL REGISTERS
TABLE 139 - DEVIL PS/2 CONTROL REGISTERS (PORT1 & PORT2)
HOST ADDRESS
0x7F41 (PORT 1),
8051 ADDRESS
0x7F49 (PORT 2),
VCC2
POWER
0x00
DEFAULT
D7
HOST
TYPE
8051
TYPE
BIT
NAME
Port1
(Port2)
-
D6
-
R
Res
D5
-
R
Res
D4
-
R
Res
D3
-
D2
-
D1
-
D0
-
R/W
R/W
R/W
R/W
R/W
EM_EN
(IM_EN)
KB_EN
(PS2_EN)
Inhibit
RX_EN
TX_EN
227
Inhibit
0
0
0
0
0
0
1
TABLE 140 - PS/2 PORT1 (PORT2) CONTROL REGISTER OPERATION
EM_EN
KB_EN
RX_EN
TX_EN
(IM_EN)
(PS2_EN)
OPERATION STATUS
0
1
0
1
Transmission sent to Keyboard, echo
cmd received
0
1
1
0
Transmission sent to Ext Mouse, echo
cmd rcvd
0
1
1
1
Transmission inhibited, RTS_timeout
error,
(illegal state)
1
0
0
1
Data received from Keyboard,
Transmission initiated by Keyboard.
1
0
1
0
Data received from Mouse, Transmission
initiated by Mouse.
1
0
1
1
Data received from Keyboard and Mouse,
transmissions are initiated by Keyboard
and Mouse and interlaced to PS/2 Port1
receive register.
X
X
X
X
EM and KB PS/2 interfaces are disabled.
Data written to the PS2 Port1 transmit
register is not transmitted and no data is
received from the external Mouse or
Keyboard.
Notes:
1.
2.
The operation of the PS/2 Port2 control register is similar for the IM and PS/2 devices.
Only one of bits D2-D0 can be set to one.
228
DEVIL PS/2 STATUS REGISTERS
TABLE 141 - DEVIL PS/2 STATUS REGISTERS (PORT1 & PORT2)
HOST ADDRESS
0x7F42 (PORT 1),
8051 ADDRESS
0x7F4A (PORT 2),
VCC2
POWER
0x40
DEFAULT
HOST
TYPE
8051
TYPE
BIT
NAME
Port1
(Port2)
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R
R
R
R
R
R
R
R
Res
Res
EM_busy
(IM_busy)
KB_busy
(PS2_busy)
Inhibit
done
EM_drdy
(IM_drdy)
KB_drdy
(PS2_drdy)
Error
ERROR
This bit is set in the event of a transmit or receive error condition on either the EM or KB PS/2 ports or
the IM or PS/2 ports. The cause of the error can be determined by reading the PS/2 Port1 or PS/2
Port2 Status register.
KB_DRDY
This bit is set if KB_EN is set and a character has been received successfully from the PS/2 KB port.
This bit is cleared when the data has been read from the PS/2 Port1 Receive register.
EM_DRDY
This bit is set if EM_EN is set and a character has been received successfully from the PS/2 EM port.
This bit is cleared when the data has been read from the PS/2 Port1 Receive register.
PS2_DRDY
This bit is set if PS2_EN is set and a character has been received successfully from the PS/2 port.
This bit is cleared when the data has been read from the PS/2 Port2 Receive register.
IM_DRDY
This bit is set if IM_EN is set and a character has been received successfully from the PS/2 IM port.
This bit is cleared when the data has been read from the PS/2 Port2 Receive register.
229
INHIBIT DONE
This bit is set when the INHIBIT bit of
sequence has finished.
the CONTROL register was set and the 100 uS inhibit
KB_BUSY
This bit is set when the PS/2 KB port is actively receiving a character.
EM_BUSY
This bit is set when the PS/2 EM port is actively receiving a character.
PS2_BUSY
This bit is set when the PS/2 port is actively receiving a character.
IM_BUSY
This bit is set when the PS/2 IM port is actively receiving a character.
Note:
1) On receive the BUSY bit is set while receiving the first data bit and cleared while receiving the
parity bit. On transmit, the BUSY bit is not set at all.
2) The operation of the PS/2 Port2 status register is similar for the IM and PS/2 devices.
230
DEVIL PS/2 ERROR STATUS
TABLE 142 - DEVIL PS/2 ERROR STATUS REGISTERS (PORT1 & PORT2)
HOST ADDRESS
0x7F43(PORT 1),
8051 ADDRESS
0x7F4B(PORT 2),
VCC2
POWER
0x00
DEFAULT
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R
R
R
R
R
R
R
R
Res
Res
Res
Parity
RES_
timeou
t
REC_
timeou
t
RTS_
timeou
t
XMT_
timeout
XMT_TIMEOUT
(Transmit_timeout) is set when the device fails to clock out a command within 2ms of clocking out the
start bit.
RTS_TIMEOUT
(ReadyToSend_timeout) is set when the device fails to start clocking out the command within 15 ms.
REC_TIMEOUT
(RECeiver_timeout) is set when the device does not finish sending a byte within 2 ms of sending the
start bit.
RES_TIMEOUT
(RESponse_timeout) is set when the response to a command is not received within 32 ms.
PARITY
The PS/2 ports use Odd parity, in the event of a receive parity error this bit is set.
231
DEVIL PS/2 TRANSMIT REGISTERS
TABLE 143 - DEVIL PS/2 TRANSMIT REGISTERS (PORT1 & PORT2)
HOST ADDRESS
0x7F44(PORT 1),
8051 ADDRESS
0x7F4C(PORT 2),
VCC2
POWER
0x00
DEFAULT
The byte written to the PS/2 Port1(Port2) Transmit register is immediately transmitted onto the
enabled PS/2 Port1/Port2 provided that the PS/2 Port1(Port2) Inhibit bit is not set and that both PS/2
Port1and Port2 devices are not enabled for transmit at the same time. This register is write only.
DEVIL PS/2 RECEIVE REGISTERS
TABLE 144 - DEVIL PS/2 RECEIVE REGISTERS (PORT1 & PORT2)
HOST ADDRESS
0x7F45(PORT 1),
8051 ADDRESS
0x7F4D(PORT 2),
VCC2
POWER
0x00
DEFAULT
If KB_EN, and/or EM_EN is set and PS/2 Port1 RX_EN is set any successfully received characters
over the KB and/or the EM PS/2 Port are placed into this register and the EM_drdy or KB_drdy PS/2
Port1 status bit is set. Similarly, if PS2_EN and/or IM_EN is set and PS/2 Port2 RX_EN is set any
successfully received characters over the PS2 and/or IM PS2 Ports are placed into this register and
the PS2_drdy or IM_drdy PS/2 Port2 status bit is set.
232
BACKGROUND
ACCESS.BUS
The FDC37N972
supports ACCESS.bus.
ACCESS.bus is a serial communication protocol
between a computer host and its peripheral
devices. It provides a simple, uniform and
inexpensive way to connect peripheral devices
to a single computer port. A single ACCESS.bus
on a host can accommodate up to 125
peripheral devices.
For a description of the ACCESS.bus protocol,
please refer to the ACCESS.bus Specifications
Version 2.2, February 1994, available from the
ACCESS.bus Industry Group (ABIG).
The ACCESS.bus interface is based on the
PCF8584 controller. The registers are mapped
into the 8051’s external memory mapped
register space. The addresses for the registers
are shown in TABLE 145 - ACCESS.BUS
REGISTER ADDRESSES.
The ACCESS.bus protocol includes a physical
layer based on the I2CTM serial bus developed by
Philips, and several software layers.
The
software layers include the base protocol, the
device driver interface, and several specific
device protocols.
TABLE 146 - ACCESS.BUS REGISTER ADDRESSES
ADDRESS (NOTE 1)
ACCESS RIGHTS
REGISTER
7F31h
W
Control
7F31h
R
Status
7F32h
R/W
Own Address
7F33h
R/W
Data
7F34h
R/W (1)
Clock
Note:
S1
S1
S0’
S0
S2
These Registers are only directly accessible by the 8051 and reside within the 8051’s external
Memory Mapped Data address space.
Note 1: Bits 2 through 6 are read only reserved.
233
ACCESS.bus status information required for bus
access and/or monitoring.
REGISTER DESCRIPTION
The ACCESS.bus interface has four internal
register locations. Two of these, Own Address
register S0’ and Clock register S2, are used for
initialization of the chip. Normally they are only
written once directly after resetting of the chip.
The other two registers, the Data register S0,
and the Control/Status register S1, (which
functions as a double register) are used during
actual data transmission/reception. Register s0
performs all serial-to-parallel interfacing with the
ACCESS.bus.
Register
S1
contains
CONTROL
R/W
Bit Def
Status
R/W
Bit Def
D7
W
PIN
D7
R
PIN
ACCESS.BUS CONTROL/STATUS REGISTER
S1
The control/status register controls the
ACCESS.bus operation and provides status
information. This register has separate read
and write functions for all bit positions. The
write-only section provides register access
control and control over ACCESS.bus signals,
while
the
read-only
section
provides
ACCESS.bus status information.
ACCESS.BUS CONTROL/STATUS REGISTER S1:
D6
D5
D4
D3
D2
W
W
W
W
W
ES0
Reserved
Reserved
ENI
STA
D6
D5
D4
D3
D2
R
R
R
R
R
0
STS
BER
LRB
AAS
D1
W
STO
D1
R
LAB
D0
W
ACK
D0
R
nBB
enabled; communication with serial shift register
S0 is enabled and the S1 bus status bits are
made available for reading. With ESO = 0, bits
ENI, STA, STO and ACK of S1 can be read for
test purposes.
BIT DEFINITIONS
REGISTER S1 CONTROL SECTION
The write-only sections of S1 enables access
to registers S0, S1 and S2, and also control of
ACCESS.bus operation.
BIT 5 and 4 Reserved
BIT 7 PIN
BIT 3 ENI
Pending Interrupt Not. Writing the PIN bit to a
logic “1” deasserts all status bits except for the
nBB (Bus Busy) - nBB is not affected. The
PIN bit is a self-clearing bit. Writing this bit to
a logic “0” has no effect. This may serve as a
software reset function.
This bit enables the internal interrupt, nINT, which
is generated when the PIN bit is active (logic 0).
BIT 2 and 1 STA and STO
These bits control the generation of the
ACCESS.bus Start condition and transmission of
slave address and R/nW bit, generation of
repeated Start condition, and generation of the
STOP condition (see TABLE 147).
BIT 6 ESO
Enable Serial Output.
ESO enables or
disables the serial ACCESS.bus I/O. When
ESO is high, ACCESS.bus communication is
234
STA
1
STO
0
1
0
0
1
1
1
0
0
TABLE 147 - INSTRUCTION TABLE FOR SERIAL BUS CONTROL
PRESENT MODE
FUNCTION
OPERATION
SLV/REC
START
Transmit START+address, remain
MST/TRM if R/nW=0; go to MST/REC if
R/nW=1.
MST/TRM
REPEAT START Same as for SLV/REC
MST/REC;
STOP READ;
Transmit STOP go to SLV/REC mode;
MST/TRM
STOP WRITE
Note 1
MST
DATA
Send STOP, START and address after
CHAINING
last master frame without STOP sent;
Note 2
ANY
NOP
No operation; Note 3
Note 1: In master receiver mode, the last byte must be terminated with ACK bit high (‘negative
acknowledge’).
Note 2: If both STA and STO are set high simultaneously in master mode, a STOP condition followed
by a START condition + address will be generated. This allows ‘chaining’ of transmissions
without relinquishing bus control.
Note 3: All other STA and STO mode combinations not mentioned in TABLE 146 are NOPs.
bit is normally read in polled applications to
determine
when
an
ACCESS.bus
byte
transmission/reception is completed.
BIT 0 ACK
This bit must be set normally to logic “1”. This
causes the ACCESS.bus to send an
acknowledge automatically after each byte
(this occurs during the 9th clock pulse). The
bit must be reset (to logic “0”) when the
ACCESS.bus controller is operating in
master/receiver mode and requires no further
data to be sent from the slave transmitter.
This causes a negative acknowledge on the
ACCESS.bus, which halts further transmission
from the slave device.
When acting as transmitter, PIN is set to logic “1”
(inactive) each time S0 is written. In receiver
mode, the PIN bit is automatically set to logic “1”
each time the data register S0 is read.
After transmission or reception of one byte on the
ACCESS.bus (nine clock pulses, including
acknowledge) the PIN bit will be automatically
reset to logic “0” (active) indicating a complete
byte transmission/reception. When the PIN bit is
subsequently set to logic “1” (inactive) all status
bits will be reset to “0” on a BER (bus error)
condition.
REGISTER S1 STATUS SECTION
The read-only section of S1 enables access to
ACCESS.bus status information.
In polled applications, the PIN bit is tested to
determine when a serial transmission/reception
has been completed. When the ENI bit (bit 4 of
write-only section of register S1) is also set to
logic “1” the hardware interrupt is enabled. In this
case, the PI flag also triggers and internal
BIT 7 PIN
Pending Interrupt Not. This bit is a status flag
which is used to synchronize serial
communication and is set to logic
“0”
whenever the chip requires servicing. The PIN
235
interrupt (active low) via the nINT output each
time PIN is reset to logic “0”.
BIT 5 STS
When in slave receiver mode, this flag is asserted
when an externally generated STOP condition is
detected (used only in slave receiver mode).
When acting as a slave transmitter or slave
receiver, while PIN = “0”, the chip will suspend
ACCESS.bus transmission by holding the SCL
line low until the PIN bit is set to logic “1”
(inactive). This prevents further data from
being transmitted or received until the current
data byte in S0 has been read (when acting as
slave receiver) or the next data byte is written
to S0 (when acting as slave transmitter).
BIT 4 BER
Bus error; a misplaced START or STOP condition
has been detected. Resets nBB (to logic “1”;
inactive), sets PIN = “0” (active).
BIT 3 LRB/AD0
PIN BIT SUMMARY
Last Received Bit or Address 0 (general call) bit.
This status bit serves a dual function, and is valid
only while PIN=0: LRB holds the value of the last
received bit over the ACCESS.bus while AAS=0
(not addressed as slave). Normally this will be
the value of the slave acknowledgment; thus
checking for slave acknowledgment is done via
testing of the LRB.
ADO; when AAS = “1” (Addressed as slave
condition) the ACCESS.bus controller has been
addressed as a slave. Under this condition, this
bit becomes the AD0 bit and will be set to logic “1”
if the slave address received was the ‘general call’
(00h) address, or logic “0” if it was the
ACCESS.bus controller’s own slave address.
The PIN bit can be used in polled applications
to test when a serial transmission has been
completed. When the ENI bit is also set, the
PIN flag sets the internal interrupt via the nINT
output.
In transmitter mode, after successful
transmission of one byte on the ACCESS.bus
the PIN bit will be automatically reset to logic
“0” (active) indicating a complete byte
transmission.
In transmitter mode, PIN is set to logic “1”
(inactive) each time register S0 is written. In
receiver mode, PIN is set to logic “0” (inactive)
on completion of each received byte.
Subsequently, the SCL line will be held low
until PIN is set to logic “1”.
BIT 2 AAS
Addressed As Slave bit. Valid only when PIN=0.
When acting as slave receiver, this flag is set
when an incoming address over the ACCESS.bus
matches the value in own address register S0’
(shifted by one bit) or if the ACCESS.bus ‘general
call’ address (00h) has been received (‘general
call’ is indicated when AD0 status bit is also set to
logic “1”).
In receiver mode, when register S0 is read,
PIN is set to logic “1” (inactive).
In slave receiver mode, an ACCESS.bus
STOP condition will set PIN=0 (active).
PIN=0 if a bus error (BER) occurs.
BIT 6 RESERVED, Logic 0.
236
BIT 1 LAB
OWN ADDRESS REGISTER S0’
Lost Arbitration Bit. This bit is set when, in
multi-master operation, arbitration is lost to
another master on the ACCESS.bus.
When the chip is addressed as slave, this register
must be loaded with the 7-bit ACCESS.bus
address to which the chip is to respond. During
initialization, the own address register S0’ must be
written to, regardless whether it is later used. The
Addressed As Slave (AAS) bit in status register
S1 is set when this address is received (the value
in S0 is compared with the value in S0’). Note
that the S0 and S0’ registers are offset by one bit;
hence, programming the own address register S0’
with a value of 55h will result in the value AAh
being recognized as the chip’s ACCESS.bus slave
address.
BIT 0 NBB
Bus Busy bit.
This is a read-only flag
indicating when the ACCESS.bus is in use. A
zero indicates that the bus is busy, and access
is not possible. This bit is set/reset (logic
“1”/logic “0”) by Start/Stop conditions.
After reset, S0’ has default address 00h.
TABLE 148 - ACCESS.BUS OWN ADDRESS REGISTER S0
OWN
ADDR
R/W
Bit Def
D7
R/W
Reserved
D6
R/W
Slave
Address
6
D5
R/W
Slave
Address
5
D4
R/W
Slave
Address
4
DATA SHIFT REGISTER S0
Register S0 acts as serial shift register and read
buffer interfacing to the ACCESS.bus. All read
and write operations to/from the ACCESS.bus
are done via this register. ACCESS.bus data is
always shifted in or out of shift register S0.
D3
R/W
Slave
Address
3
D2
R/W
Slave
Address
2
D1
R/W
Slave
Address
1
D0
R/W
Slave
Address
0
acknowledge phase. Further reception of data
is inhibited (SCL held low) until the S0 data shift
register is read.
In the transmitter mode data is transmitted to
the ACCESS.bus as soon as it is written to the
S0 shift register if the serial I/O is enabled
(ESO=1).
In receiver mode the ACCESS.bus data is
shifted into the shift register until the
DATA
R/W
TABLE 149 - ACCESS.BUS DATA REGISTER S0
D7
D6
D5
D4
D3
D2
D1
R/W
R/W
R/W
R/W
R/W
R/W
R/W
CLOCK REGISTER S2
Register S2 controls the selection of the internal
chip clock frequency used for the ACCESS.bus
block. This determines the SCL clock frequency
237
D0
R/W
generated by the chip. The selection is made
via Bits[2:0] (see Table 151 - INTERNAL
CLOCK RATES AND ACCESS.BUS DATA
RATES).
8051 R/W
TABLE 150 - ACCESS.BUS CLOCK REGISTER
D7
D6-D2
D1
D0
R/W
R
R/W
R/W
AB_RST
Reserved 00 - clock off (default)
(Note 1)
01 - 32 kHz clock
10 - 8051 clock
11 - 24 MHz clock (see table below)
Note 1: ACCESS.bus Reset, not self-clearing, must be written high and then written low. Bit 7
AB_RST: (ACCESS.bus Reset) setting this bit re-initializes all logic and registers in the ACCESS.bus
block.
TABLE 151 - INTERNAL CLOCK RATES AND ACCESS.BUS DATA RATES
ACCESS
BUS
DATA
NOMINAL
NOMINAL
MINIMUM
CLOCK
CLOCK RATE
RATE
HIGH
LOW
HIGH
D[1-0]
00
Off
10
Ring Osc
f/240
96/f
144/f
18/f
Ring Osc=4 MHz
16.7 kHz
24µs
36µs
4.5µs
Ring Osc=6 MHz
25 kHz
16µs
24µs
3µs
Ring Osc=8 MHz
33.3 kHz
12µs
18µs
2.25µs
10
12MHz
50 kHz
8µs
12µs
4µs
10
14.3 MHz
60 kHz
6.7µs
10.1µs
4µs
10
16 MHz
67 kHz
6µs
9µs
4µs
11
24 MHz
100 kHz
4µs
6µs
4µs
f = frequency of the ring oscillator.
ACCESS.BUS INTERFACE DESCRIPTION
The ACCESS.Bus interface is fully and directly
controlled by the on-chip 8051 through its set of
on-chip memory mapped control registers. The
ACCESS.bus logic is based on the PCF8584
238
I2C controller and is powered on the VCC1
powerplane to provide the ability to wake-up the
8051 on an ACCESS.bus event.
MEMORY MAPPED CONTROL REGISTERS
TABLE 152 - ACCESS.BUS CONTROL REGISTER
Host
N/A
8051
0x7F31 (W)
Power
VCC1
Default
0x00
8051 R/W
Bit Def
D7
W
PIN
D6
W
ES0
D5
W
Reserved
D4
W
Reserved
D3
W
ENI
D2
W
STA
D1
W
STO
D0
W
ACK
Bit 7 PIN: Pending Interrupt Not - Writing this bit to a logic “1” deasserts all status bits except for nBB
(Bus
Busy), nBB is not affected. This is a self-clearing bit. Writing this bit to a logic “0” has no effect.
TABLE 153 - ACCESS.BUS STATUS REGISTER
Host
N/A
8051
0x7F31 (R)
Power
VCC1
Default
0x81
8051 R/W
Bit Def
D7
R
PIN
D6
R
0
D5
R
STS
D4
R
BER
D3
R
LRB
D2
R
AAS
D1
R
LAB
D0
R
NBB
ACCESS.BUS OWN ADDRESS REGISTER
Host
N/A
8051
0x7F32
Power
VCC1
Default
0x00
8051
R/W
Bit
Def
D7
R/W
D6
R/W
D5
R/W
D4
R/W
D3
R/W
D2
R/W
D1
R/W
D0
R/W
Reserved
Slave
Address
6
Slave
Address
5
Slave
Address
4
Slave
Address
3
Slave
Address
2
Slave
Address
1
Slave
Address
0
239
ACCESS.BUS DATA REGISTER
Host
N/A
8051
0x7F33
Power
VCC1
Default
0x00
8051 R/W
D7
R/W
D6
R/W
D5
R/W
D4
R/W
D3
R/W
D2
R/W
D1
R/W
D0
R/W
ACCESS.BUS CLOCK REGISTER
Host
N/A
8051
0x7F34
Power
VCC1
Default
0x00
8051 R/W
D7
R/W
AB_RST*
ACCESS.BUS CLOCK
D6-D2
D1
R
R/W
Reserved 00 - clock off (default)
10 - 8051 clock
11 - 24 MHz clock
D0
R/W
(*) ACCESS.bus Reset, not self-clearing, must be written high and then written low.
Bit 7 AB_RST: (ACCESS.bus Reset) setting this bit re-initializes all logic and registers in the
ACCESS.bus block.
ACCESS.
bus CLOCK
D[1:0]
00
10
10
10
10
11
TABLE 154 - ACCESS.BUS CLOCK RATES
DATA
NOMINAL
NOMINAL
CLOCK RATE
RATE
HIGH
LOW
Off
Ring Osc
Ring Osc=4 MHz
Ring Osc=6 MHz
Ring Osc=8 MHz
12 MHz
14.3 MHz
16 MHz
24 MHz
f/240
16.7 kHz
25 kHz
33.3 kHz
50 kHz
60 kHz
67 kHz
100 kHz
f = frequency of the ring oscillator.
240
96/f
24µs
16µs
12µs
8µs
6.7µs
6µs
4µs
144/f
36µs
24µs
18µs
12µs
10.1µs
9µs
6µs
MINIMUM
HIGH
18/f
4.5µs
3µs
2.25µs
4µs
4µs
4µs
4µs
SECOND I2C BUS INTERFACE
OVERVIEW
A second I2C controller (ACCESS.bus 2) is in
the FDC37N972. ACCESS.bus 2 is powered by
VCC1. There are 5 Memory-Mapped Control
Registers to support the ACCESS.bus 2
controller (TABLE 155 to TABLE 159).
The two ACCESS.bus 2 controller pins,
AB2_DATA and AB2_CLK, are multiplexed on
GPIO11 and GPIO12 (see MULTIFUNCTION
PIN on page 271). An I2C input clock divider bit
D2 is added to the ACCESS.bus CLOCK
registers (see section 0 I2C Clock Divider BIT,
below).
MEMORY MAPPED CONTROL REGISTERS
TABLE 155 - ACCESS.BUS 2 CONTROL REGISTER
HOST
ADDRESS
8051 ADDRESS
POWER PLANE
DEFAULT
0x7F67 (W)
VCC1
0x00
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
W
W
W
W
W
W
W
W
PIN
ES0
RESERVED
ENI
STA
STO
ACK
TABLE 156 - ACCESS.BUS 2 STATUS REGISTER
HOST
ADDRESS
8051 ADDRESS
POWER PLANE
0x7F67 (R)
VCC1
HOST
TYPE
8051
TYPE
BIT
NAME
DEFAULT
0x81
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R
R
R
R
R
R
R
R
PIN
0
STS
BER
LRB
AAS
LAB
nBB
241
TABLE 157 - ACCESS.BUS 2 OWN ADDRESS REGISTER
HOST ADDRESS 8051 ADDRESS
POWER PLANE
DEFAULT
0x7F68
VCC1
0x00
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R
R/W
R/W
R/W
R/W
R/W
R/W
R/W
RESER
VED
SLAVE
ADDR.
6
SLAVE
ADDR.
5
SLAVE
ADDR.
4
SLAVE
ADDR.
3
SLAVE
ADDR.
2
SLAVE
ADDR.
1
SLAVE
ADDR.
0
TABLE 158 - ACCESS.BUS 2 DATA REGISTER
HOST ADDRESS
8051 ADDRESS
POWER PLANE
0x7F69
VCC1
HOST
TYPE
8051
TYPE
BIT
NAME
DEFAULT
0x00
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
D7
D6
D5
D4
D3
D2
D1
D0
TABLE 159 - ACCESS.BUS 2 CLOCK REGISTER
HOST ADDRESS
8051 ADDRESS
POWER PLANE
DEFAULT
0x7F6A
VCC1
0x00
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R/W
R
R
R
R
R
R/W
R/W
AB_RST
RESERVED
CLK_D
IV
CLOCK SELECT
242
I2C CLOCK DIVIDER BIT
An input clock divider bit D2 is added to the ACCESS.bus CLOCK registers 0x7F34 (TABLE 160) and
0x7F6A (TABLE 159). The clock divider bit CLK_DIV affects all I2C clock inputs. When CLK_DIV is
“1”, the I2C input clock is divided by 2. When CLK_DIV is “0”, the I2C input clock is not divided.
TABLE 160 - ACCESS.BUS 1 CLOCK REGISTER
n/a
HOST ADDRESS
0x7F34
8051 ADDRESS
VCC1
POWER
0x00
DEFAULT
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R/W
R
R
R
R
R/W
R/W
R/W
AB_RST
RESERVED
CLK_DIV
CLOCK SELECT
CLOCK SELECT ENCODING
The encoding for the two CLOCK SELECT bits is shown in Table 161. The CLOCK SELECT bits are
located in the ACCESS.bus 1 Clock Register (TABLE 160) and the ACCESS.bus 2 Clock Register
(TABLE 159).
TABLE 161 - ACCESS.BUS CLOCK SELECT BIT ENCODING
CLOCK
SELECT BITS
FDC37N972
D1
D0
0
0
CLOCK OFF
0
1
RESERVED
1
0
8051 CLOCK
1
1
24 MHz CLOCK
243
MAILBOX REGISTER INTERFACE
OVERVIEW
The Mailbox Registers Interface provides a
standard run-time mechanism for the host to
communicate with the 8051 and other logical
components in the FDC37N972. The Mailbox
Registers Interface includes a total of 44 indexaddressable 8-bit registers (TABLE 162) and
two 8-bit host access ports (TABLE 164).
Thirty-two of these 44 registers are 8051
Mailbox registers.
The Mailbox Registers Interface host access
ports are run-time registers that occupy two
addresses in the system I/O space. The access
ports are used by the host to read and write the
44 registers. The access ports base address is
determined by the Mailbox Registers Interface
Base Address that is initialized in Logical Device
Number 9 in FDC37N972 configuration registers
CR60 and CR61 (TABLE 163).
The 32 Mailbox registers as well as the PWM0,
PWM1, and Fan Control registers are directly
addressable by the 8051 through MemoryMapped Control Registers (see TABLE 86 8051 ON-CHIP EXTERNAL MEMORY MAPPED
REGISTERS on page 159).
In this
specification, the registers in the Mailbox
Registers Interface are identified by the prefix
MBX in front of a hexadecimal index address.
TABLE 162 below summarizes the 44 registers
in the Mailbox Registers Interface.
TABLE 162 - MAILBOX REGISTERS INTERFACE
System-to8051
Mailbox
register 0
8051-tosystem
Mailbox
register 1
Mailbox
register [2F]
PWM0
register
PWM1
register
8051STP_
CLK
HMEM
ESMI
source
register
ESMI mask
MAILBOX
INDEX
ADDRESS
N
O
T
E
S
2
3
MBX82h
SYSTEM
R/W
R/W
8051
ADDR.
(7F00+)
08h
8051
R/W
RC
POWER
PLANE
VCC1
VCC
1
POR
00
1
MBX83h
RC
09h
R/W
VCC1
00
Y
14
MBX 84h91h
R/W
0Ah 17h
R/W
VCC1
00h
Y
1
MBX92h
R/W
25h
R/W
VCC1
00h
Y
1
MBX93h
R/W
26h
R/W
VCC1
00h
Y
1
MBX94h
R/W
-
-
VCC1
00h
Y
4
1
MBX95h
R/W
-
-
VCC1
07h
07h
Y
4
,
5
1
MBX96h
R/W
-
-
VCC2
00h
Y
1
MBX97h
R/W
-
-
VCC2
00h
Y
TOTAL
REGS.
1
244
VCC
2
POR
ZERO
WAIT
STATE
(1)
Y
TOTAL
REGS.
register
IR data
register
Force Disk
Change
register
Floppy
Data Rate
Select
Shadow
register
UART1
FIFO
Control
Shadow
register
UART2
FIFO
Control
Shadow
register
Fan Control
Register
Mailbox
Register
[10-1F]
MAILBOX
INDEX
ADDRESS
SYSTEM
R/W
8051
ADDR.
(7F00+)
8051
R/W
POWER
PLANE
VCC
1
POR
VCC
2
POR
ZERO
WAIT
STATE
(1)
1
MBX98h
R/W
-
-
VCC2
00h
Y
1
MBX99h
R/W
-
-
VCC2
03h
Y
1
MBX9Ah
R
-
-
VCC2
N/A
Y
1
MBX9Bh
R
-
-
VCC2
00h
Y
1
MBX9Ch
R
-
-
VCC2
00h
Y
1
MBX9Dh
R/W
28h
R/W
VCC1
0x30
Y
16
MBX
A0h-AFh
R/W
70h –
7Fh
R/W
VCC1
00h
Y
N
O
T
E
S
44
NOTES:
1. When accessed for a read or write by the System the registers marked with a “Y” will drive the
Zero wait state pin active.
2. Interrupt is cleared when read by the 8051
3. Interrupt is cleared when read by the host
4. When IRESET_OUT is cleared (written from “1” to”0”) 8051STP_CLK bit D0 as well as HMEM
bits D1 and D0 are all set to “1”.
5. These registers are reset 500us to 1ms following the condition that BOTH VCC2 is valid and
PWRGD is asserted given that the RTC is in normal mode and the VRT bit is set (refer to the
RTC section). If the RTC is not in normal mode and/or the VRT bit is not set then these registers
are reset within 10us following the condition that BOTH VCC2 is valid and PWRGD is asserted.
245
MAILBOX REGISTERS INTERFACE BASE
ADDRESS
Logical Device 9 in the FDC37N972
configuration space supports the Mailbox
Registers Interface.
The three device
configuration registers in LDN9 provide
activation control and the base address for the
Mailbox Registers Interface run-time registers
(TABLE 163).
Register 0x30 is the Activate register. The
activation control (LDN9:CR30.0) qualifies
address decoding for the Mailbox Registers
Interface; e.g., if the Activate bit D0 in the
Activate register is “0”, the MBX access port
addresses will not be decoded; if the Activate bit
is “1”, MBX access port addresses will be
decoded depending on the values programmed
in the MBX Primary Base Address registers.
Registers 0x60 and 0x61 are the MBX Primary
Base Address registers. Register 0x60 is the
MBX Primary Base Address High Byte, register
0x61 is the MBX Primary Base Address Low
Byte.
NOTE: Bit D0 in the MBX Primary Base Address
Low Byte must be “0”. Valid Mailbox Registers
Interface Base Address values are 0x0000 –
0x0FFE.
TABLE 163 - MAILBOX REGISTERS INTERFACE CONFIGURATION CONTROLS (LDN9)
INDEX
TYPE
HARD
RESET
SOFT
RESET
VCC2
POR
VCC1
&
VCC0
POR
D7
0x30
0x60
R/W
R/W
0x00
0x00
0x00
0x00
0x00
0x00
-
-
R/W
0x00
0x00
0x00
-
D5
DESCRIPTION
D4
D3
D2
D1
Activate
RESERVED
D0
Act
iva
te
MBX Primary Base Address High Byte
“0”
0x61
D6
“0”
“0”
“0”
A1
1
A1
0
A9
A8
MBX Primary Base Address Low Byte
A7
A6
A5
A4
A3
A2
A1
“0”
MAILBOX REGISTERS INTERFACE ACCESS PORTS
The Mailbox registers access ports are runtime registers that occupy two addresses in the Host I/O
space (TABLE 164).
To access a Mailbox register once the Mailbox Registers Interface Base Address has been initialized,
write the Mailbox register index address to the MBX Index port and read or write the Mailbox register
data from the MBX data port.
246
TABLE 164 - MAILBOX REGISTERS INTERFACE ACCESS PORTS
ACCESS
HOST
POWER
VCC2
PORT NAME
HOST ADDRESS
TYPE
PLANE
POR
MBX INDEX
MBX Base Address
R/W
VCC2
0x00
MBX DATA
MBX Base Address + 1
R/W
VCC2
-
MAILBOX REGISTERS
There are 32 Mailbox Registers in the
FDC37N972. The MBXA0–AF and MBX84– 91
Mailbox Registers are general purpose registers.
There are no interrupts for these registers.
THE SYSTEM/8051 INTERFACE REGISTERS`
Mailbox Register 0, System-to-8051, and
Mailbox Register 1, 8051-to-System, are
specifically designed to pass commands
between the host and the 8051 (FIGURE 35). If
enabled, these registers can generate interrupts.
Mailbox Register 0 and Mailbox Register 1 are
not dual-ported, so the System BIOS and
Keyboard BIOS must be designed to properly
share these registers. When the host performs
a write of the System-to-8051 mailbox register,
an 8051 INT1 will be generated and seen by the
8051 if unmasked. When the 8051 writes to the
247
VCC1
POR
-
System-to-8051 mailbox register, the data is
blocked but the write forces the register to 0x00,
providing a simple means for the 8051 to inform
that host that an operation has been completed.
When the 8051 writes the 8051-to-System
mailbox register, an SMI may be generated and
seen by the host if unmasked. When the Host
CPU writes to the 8051-to-System mailbox
register, the data is blocked but the write forces
the 8051-to-System register to clear to zero,
providing a simple means for the host to inform
that 8051 that an operation has been completed.
PROGRAMMER’S NOTE: The protocol used to
pass commands back and forth through the
Mailbox Registers Interface is left to the system
designer. SMSC can provide an application
example of working code in which the host uses
the Mailbox registers to gain access to all of the
8051 registers.
System-to-8051
8051-to-System
INT1
SMI
32 8-bit
Mail-Box
Registers
HOST CPU
8051
FIGURE 35 - SYSTEM-TO-8051 MAILBOX INTERFACE REGISTERS BLOCK DIAGRAM
Mailbox Register 0: System-to-8051
If enabled, an INT1 will be generated when the System writes to Mailbox Register 0 (TABLE 165). The
interrupt source bit will be cleared when the 8051 reads this register.
After reading Mailbox Register 0, the 8051 can clear the register to “00H” by a dummy write to inform
the host that the register contents have been read.
TABLE 165 - MAILBOX REGISTER 0 (SYSTEM-TO-8051)
MAILBOX INDEX 8051 ADDRESS
POWER PLANE
DEFAULT
0x82
0x7F08
VCC1
0x00
MBX
1
TYPE
8051
TYPE
BIT
NAME
D7
RC
D6
RC
D5
RC
D4
RC
D3
RC
D2
RC
D1
RC
D0
RC
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
D7
D6
D5
D4
D3
D2
D1
D0
NOTE1 RC = Read-only register is cleared when written.
Mailbox Register 1: 8051-to-system
If enabled, an SMI will be generated when the 8051 writes to Mailbox Register 1 (TABLE 166). The
SMI interrupt will be cleared when the host reads this register.
248
After reading Mailbox Register 1, the system can clear the register to “00H” by a dummy write to
inform the 8051 that the register has been read.
TABLE 166 - MAILBOX REGISTER 1 (8051-TO-SYSTEM)
MAILBOX INDEX 8051 ADDRESS
POWER PLANE
0x83
0x7F09
VCC1
MBX TYPE
8051 TYPE
1
BIT NAME
D7
RC
R/W
D7
D6
RC
R/W
D6
D5
RC
R/W
D5
D4
RC
R/W
D4
D3
RC
R/W
D3
D2
RC
R/W
D2
DEFAULT
0x00
D1
RC
R/W
D1
D0
RC
R/W
D0
NOTE1 RC = Read-only register is cleared when written.
LED CONTROLS
The FDC37N972 has three independent LED outputs that are programmable under 8051 control.
Host
8051
Power
Default
Default
8051
access
Bit def
LED REGISTER
N/A
0x7F21
VCC1
0x00
D7
0
R/W
D6
0
R/W
FDD Led
Enable
FDD_
FDD_
LED1
LED0
00 FDD LED is
off
01 LED flash;
P=1.0 sec
10 LED flash;
P=0.5 sec
11 LED is fully
on
Note 1
D5
0
R/W
D4
N/A
R
Status of
pin MODE
D3
0
R/W
D2
0
R/W
PWR_
PWR_
LED1
LED0
00 PWR LED is
off
01 LED flash;
P=3.0 sec
10 LED flash;
P=1.5 sec
11 LED is fully on
D1
0
R/W
D0
0
R/W
BAT_
BAT_
LED1
LED0
00 Battery LED
is off
01 LED flash;
P=1.0 sec
10 LED flash;
P=0.5 sec
11 LED is fully
on
Note 1: D7 =1; FDD_LED Pin is controlled by D6, D5, D7=0; FDD_LED is controlled by the Motor
Enable 0 pin from the FDC. When Motor Enable 0 pin is asserted the LED is on.
LED on time is T=125msec; “0” is on, “1” is off. Period “P” is indicated above.
249
P
T
FIGURE 36 - LED OUTPUT
PULSE WIDTH MODULATORS
OVERVIEW
In the FDC37N972 there are two independent programmable Pulse-Width Modulated Fan Speed
Controllers. The FDC37N972 PWM Fan Speed Controllers each include 11 fan speeds (FOUT), 6-bit
pulse-width resolution, and the ability to force the PWM outputs always high or low (TABLE 167 FAN SPEED CONTROL SUMMARY (STDBY CLOCK BIT = “0”). NOTE: each PWM Fan Speed
Controller in the FDC37N972 has two fan speeds, 7-bit pulse-width resolution, and can only force the
PWM output always low (when DCC = 0).
The FDC37N972 PWM Fan Speed Controllers can be driven by the system clock when VCC2 is
active, or by the 32.768kHz standby clock (RTC) that is available when either VCC2 or VCC1 are
active.
PROGRAMMER’S NOTE: the availability of the 32kHz standby clock is subject to the affects of the
RTC clock control bits.
The PWM Fan Speed Control and Fan Control registers are accessible to both the Host and the 8051
through the Mailbox register interface (see MAILBOX REGISTER INTERFACE on page 249).
250
TABLE 167 - FAN SPEED CONTROL SUMMARY (STDBY CLOCK BIT = “0”)
FANx
6-BIT
CLOCK
FANx
FANx
DUTY
FANx
FANx
DUTY
MULTICLOCK
CLOCK
CYCLE
STDBY
CLOCK
CYCLE
PLIER
SELECT 1
SELECT
FOUT6
CONTROL
CLOCK
CONTROL
(%)
BIT2
BIT3
0 BIT4
(DCC)
BIT5
BIT1
(kHz)
0
0
X
X
X
0 (low)
0
0
0
0
0
0
15.625
1-63
(DCC ÷
64)
0
0
0
0
1
23.438
× 100
0
0
0
1
0
.040
0
0
0
1
1
.060
0
0
1
0
0
31.25
0
0
1
0
1
46.876
0
0
1
1
0
.080
0
0
1
1
1
.120
0
1
X
X
X
0 (high)
TABLE 168 – FAN SPEED CONTROL SUMMARY (STDBY CLOCK BIT = “1”)
FANx
FANx
FANx
CLOCK
FANx
FANx
6-BIT DUTY
STDBY
CLOCK
MULTICLOCK
CLOCK
CYCLE
DUTY
CLOCK CONTROL
PLIER
SELECT
SELECT
FOUT6
CONTROL
CYCLE
BIT5
BIT1
BIT2
1 BIT3
0 BIT4
(kHz)
(DCC)
(%)
1
0
X
X
X
0 (low)
0
1
0
X
0
0
.032
1-63
(DCC ÷
64)
1
0
X
0
1
.064
× 100
1
0
X
1
0
.128
RESERVED
1
0
X
1
1
1
1
X
X
X
0 (high)
NOTE1
NOTE2
NOTE3
NOTE4
NOTE5
NOTE6
This is Fan Speed Control register bit 0
This is Fan Control register Bit 2 or Bit 3
This is Fan Control register Bit 0 or Bit 1
This is Fan Speed Control register Bit 7
This is Fan Control register Bit 4 or Bit 5
The FOUT frequency tolerance is 5%
There are two Fan Speed Control registers: PWM0 and PWM1. Both of these registers are located in
the FDC37N972 Mailbox Registers Interface. PWM0 is MBX92 and PWM1 is MBX93 (see MAILBOX
REGISTER INTERFACE on page 249).
The Fan Speed Control registers are in the FDC37N972 as shown in TABLE 169 and TABLE 170.
251
The default values for both the PWM0 and the PWM1 registers are 0x00. These defaults take effect
on VCC1 POR.
TABLE 169 - FAN 1 SPEED CONTROL REGISTER (PWM0)
MAILBOX INDEX
8051 ADDRESS
POWER PLANE
DEFAULT
0x92
0x7F25
VCC1
0x00
MBX
TYPE
8051
TYPE
BIT
NAME
D7
R/W
D6
R/W
D5
R/W
D4
R/W
D3
R/W
D2
R/W
D1
R/W
D0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
FAN
CLOCK
SELECT 0
DUTY CYCLE CONTROL
FAN CLOCK
CONTROL
TABLE 170 – FAN 2 SPEED CONTROL REGISTER (PWM1)
MAILBOX INDEX 8051 ADDRESS
POWER PLANE
DEFAULT
0x93
0x7F26
VCC1
0x00
MBX TYPE
8051 TYPE
BIT NAME
D7
R/W
R/W
D7
FAN
CLOCK
SELECT
0
D6
R/W
R/W
D5
R/W
R/W
D4
R/W
R/W
D6
D5
D4
DUTY CYCLE CONTROL
FAN CLOCK SELECT 0, D7
The Fan Clock Select 0 bit D7 in the Fan Speed
Control registers is used with the Fan Clock
Select 1 and the Fan Clock Multiplier bits in the
Fan Control register to determine the fan speed
FOUT.
NOTE: there are separate PWM0 and PWM1
Fan Clock Select 1 and Fan Clock Multiplier bits
in the Fan Control register (see Section 0 Fan
Control Register).
The affects of the Fan Clock Select[1:0] bits are
shown TABLE 167 - FAN SPEED CONTROL
252
D3
R/W
R/W
D3
D2
R/W
R/W
D2
D1
R/W
R/W
D1
D0
R/W
R/W
D0
FAN
CLOCK
CONTROL
SUMMARY (STDBY CLOCK BIT = “0”) and in
TABLE 168 – FAN SPEED CONTROL
SUMMARY (STDBY CLOCK BIT = “1”).
DUTY CYCLE CONTROL, D6 – D1
The Duty Cycle Control (DCC) bits determine
the PWM fan duty cycle. The FDC37N972 has
≈1.56% duty cycle resolution.
When DCC = “000000” (min. value), FOUT is
always low. When DCC is “111111” (max.
value), FOUT is almost always high; i.e., high for
th
th
63/64 and low for 1/64 of the FOUT period.
Generally, the FOUT duty cycle (%) is (DCC ÷ 64)
× 100.
Fan Clock Control, D0
The Fan Clock Control bit D0 is used to override
the Duty Cycle Control bits and force FOUT
always high.
When D0 = “0”, the DCC bits determine the FOUT
duty cycle. When D0 = 1, FOUT is always high,
regardless of the state of the DCC bits.
MBX
TYPE
8051
TYPE
BIT
NAME
The Fan Control register is MBX9D register (See
Mailbox Registers Interface (TABLE 171)). The
default value for the Fan Control Register is
0x30. The default value takes effect on VCC1
POR.
RESERVED bits in the Fan Control Register
cannot be written and return “0” when read.
Fan Control Register
MAILBOX INDEX
0x9D
The Fan Control register contains Fan Clock
Select 1, Fan Clock Multiplier, and Standby
Clock control bits for each of the two Fan Speed
Controllers PWM0 and PWM1.
TABLE 171 - FAN CONTROL REGISTER
8051 ADDRESS
POWER PLANE
0x7F28
VCC1
DEFAULT
0x30
D7
R
D6
R
D5
R/W
D4
R/W
D3
R/W
D2
R/W
D1
R/W
D0
R/W
R
R
R/W
R/W
R/W
R/W
R/W
R/W
FAN2
(PWM1)
STDBY
CLOCK1
FAN1
(PWM0)
STDBY
CLOCK1
FAN2
(PWM1)
CLOCK
MULTIPLIER
FAN1
(PWM0)
CLOCK
MULTIPLIER
FAN2
(PWM1)
CLOCK
SELECT
1
FAN1
(PWM0)
CLOCK
SELECT
1
RESERVED
NOTE1: The FANx STDBY CLOCK bits, D4 and D5, should not be switched when PWRGD is inactive;
i.e., when VCC2 = 0V.
253
FAN2 (PWM1) STDBY CLOCK, D5
FAN2 (PWM1) CLOCK MULTIPLIER, D3
The FAN2 (PWM1) STDBY CLOCK bit D5 is
used to determine the Fan2 controller clock
source.
The FAN2 Clock Multiplier bit D3 is used with
the FAN2 Clock Select 1 bit D1 and the PWM1
Clock Select 0 bit MBX93.7 to determine the
FAN2 FOUT when the FAN2 STDBY CLOCK
select bit is “0”.
When the FAN2 STDBY CLOCK bit = “1”, the
Fan2 controller clock source is the 32.768kHz
RTC clock (VCC1/VCC2). The available Fan2
FOUT frequencies when D5 = “1” are shown in
TABLE 167 - FAN SPEED CONTROL
SUMMARY (STDBY CLOCK BIT = “0”).
When the FAN2 STDBY CLOCK bit = “0”, the
Fan2 controller clock source is the system clock
(VCC2). The available Fan2 FOUT frequencies
when D5 = “0” are shown in TABLE 167 - FAN
SPEED CONTROL SUMMARY (STDBY
CLOCK BIT = “0”).
The FAN2 (PWM1) STDBY CLOCK bit default =
“1”.
FAN1 (PWM0) STDBY CLOCK, D4
The FAN1 (PWM0) STDBY CLOCK bit D4 is
used to determine the Fan1 controller clock
source.
When the FAN1 STDBY CLOCK bit = “1”, the
Fan1 controller clock source is the 32.768kHz
RTC clock (VCC1/VCC2). The available Fan1
FOUT frequencies when D4 = “1” are shown in
TABLE 167 - FAN SPEED CONTROL
SUMMARY (STDBY CLOCK BIT = “0”).
When the FAN1 STDBY CLOCK bit = “0”, the
Fan1 controller clock source is the system clock
(VCC2). The available Fan1 FOUT frequencies
when D4 = “0” are shown in TABLE 167 - FAN
SPEED CONTROL SUMMARY (STDBY
CLOCK BIT = “0”).
The FAN1 (PWM0) STDBY CLOCK bit default =
“1”.
254
When the FAN2 Clock Multiplier bit = “0”, no
clock multiplier is used. When the FAN2 Clock
Multiplier bit = “1”, the clock speed determined
by the FAN2 Clock Select [1:0] bits is doubled
(TABLE 167 - FAN SPEED CONTROL
SUMMARY (STDBY CLOCK BIT = “0”)).
The FAN2 Clock Multiplier bit does not affect the
FAN2 FOUT when the FAN2 STDBY CLOCK
select bit is “1”. Fan1 (PWM0) Clock Multiplier,
D2
The FAN1 Clock Multiplier bit D2 is used with
the FAN1 Clock Select 1 bit D0 and the PWM0
Clock Select 0 bit MBX92.7 to determine the
FAN1 FOUT when the FAN1 STDBY CLOCK
select bit is “0”.
When the FAN1 Clock Multiplier bit = “0”, no
clock multiplier is used. When the FAN1 Clock
Multiplier bit = “1”, the clock speed determined
by the FAN1 Clock Select [1:0] bits is doubled
(TABLE 167 - FAN SPEED CONTROL
SUMMARY (STDBY CLOCK BIT = “0”)).
The FAN1 Clock Multiplier bit does not affect the
FAN1 FOUT when the FAN1 STDBY CLOCK
select bit is “1”.
FAN2 (PWM1) CLOCK SELECT 1, D1
The FAN2 Clock Select 1 bit D1 is used with the
FAN2 Clock Multiplier bit D3 and the PWM1
Clock Select 0 bit MBX93.7 to determine the
FAN2 FOUT.
The affects of the Fan Clock Select [1:0] bits are
shown in TABLE 167 - FAN SPEED CONTROL
SUMMARY (STDBY CLOCK BIT = “0”) and
TABLE 168.
The affects of the Fan Clock Select [1:0] bits are
shown in TABLE 167 - FAN SPEED CONTROL
SUMMARY (STDBY CLOCK BIT = “0”) and
TABLE 168.
FAN1 (PWM0) CLOCK SELECT 1, D0
ESMI REGISTERS
The FAN1 Clock Select 1 bit D0 is used with the
FAN1 Clock Multiplier bit D2 and the PWM0
Clock Select 0 bit MBX92.7 to determine the
FAN1 FOUT .
The host cam enable/disable the SMI interrupts
generated as a result of the 8051 writing to
Mailbox register 1. The host can read the ESMI
source register to determine fo the FDC37N972
Mailbox interface was the cause of the SMI.
TABLE 172 - ESMI SOURCE REGISTER
MBX96
HOST ADDRESS
N/A
8051 ADDRESS
VCC2
POWER
0x00
DEFAULT
HOST
TYPE
8051
TYPE
BIT
NAME
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R
R
R
R
R/W
R/
R/
R/
Reserved
Res
Res
Res
8051_WR
Res
Res
Res
8051_WR
This bit is set when a 8051-to-host mailbox has been written. This bit is cleared by a read of Mailbox
Register 1 (MBX83.)
TABLE 173 - ESMI MASK REGISTER
MBX97
HOST ADDRESS
N/A
8051 ADDRESS
VCC2
POWER
0x00
DEFAULT
HOST TYPE
8051 TYPE
BIT NAME
D7
R
Reserved
D6
R
Res
D5
R
Res
D4
R
Res
255
D3
R/W
ESMI_
MASK
D2
-
D1
-
D0
-
R
R
R/
Reserved
Reserved
Reserved
8051 is able to take control of the parallel port
interface. The 8051 has three memory mapped
registers that look like the host’s standard
parallel port registers (Status, Control, and
Data) with one exception: the 8051’s Parallel
Port Status register contains a write bit (bit 0)
that allows the 8051 to disconnect the interface
from the host and take control. Refer to the
Parallel Port section for more information.
ESMI_MASK
Setting this bit masks the 8051-to-host mailbox
SMI.
8051 CONTROLLED PARALLEL PORT
To facilitate activities such as reprogramming
the Flash Memory without opening the unit, the
From/to Host Parallel Port Interface
1
Parallel Port
From/to 8051 Parallel port interface
0
SEL 1
Parallel Port Connector
PP_HA
FIGURE 37 - PARALLEL PORT MULTIPLEXOR
256
OPERATION REGISTERS
The 8051 uses the following three memory mapped registers to gain access to and control the parallel
port interface.
PARALLEL PORT STATUS REGISTER
Host
N/A
8051
0x7F3A
Power
VCC2
Default
0x00
8051
R/W
System
R/W
Bit Def
D7
R
D6
R
D5
R
D4
R
D3
R
D2
R
D1
R
D0
R/W
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
nBUSY
nACK
PE
SLCT
nERR
0
0
PP_HA
1 = Host (or FDC)
controls the
Parallel Port
Interface.
0 = 8051 controls
the Parallel Port
Interface (default).
If 8051 access to the parallel port pins is enabled; The level of the parallel port status pins can be
read by reading this register.
Bit D7 (nBUSY):
Bit D6 (nACK):
Bit D5 (PE):
Bit D4 (SLCT):
Bit D3 (nERR):
reflects the inverse state of pin BUSY
reflects the current state of pin nACK
reflects the current state of pin PE
represents the current state of pin SLCT
reflects the current state of pin nERR
257
PARALLEL PORT CONTROL REGISTER
Host
N/A
8051
0x7F3B
Power
VCC2
Default
0x00
8051 R/W
System
R/W
Bit Def
D7
R/W
N/A
D6
R/W
N/A
D5
R/W
N/A
D4
R/W
N/A
D3
R/W
N/A
D2
R/W
N/A
D1
R/W
N/A
D0
R/W
N/A
0
0
PCD
0
SLCTIN
nINIT
ALF
STROBE
If 8051 access to the parallel port pins is enabled, the value of STROBE, ALF and SLCTIN are
inverted and output onto the parallel port control pins. The value of nINIT is output onto the parallel
port control pins. If PCD (Parallel Control Direction) = 0, the data bus is output. If PCD = 1 the
parallel port data bus is floating to allow read data in.
PARALLEL PORT DATA REGISTER
Host
N/A
8051
0x7F3C
Power
VCC2
Default
0x00
8051 R/W
System R/W
Bit Def
D7
R/W
N/A
PD7
D6
R/W
N/A
PD6
D5
R/W
N/A
PD5
D4
R/W
N/A
PD4
D3
R/W
N/A
PD3
D2
R/W
N/A
PD2
D1
R/W
N/A
PD1
D0
R/W
N/A
PD0
If 8051 access to the parallel port pins is enabled; When read, this register reads the logic levels on
the parallel port pins.
258
HOST CONTROLLED IR PORT
It is possible to give direct control of the IRRX
and IRTX pins to the Host CPU by setting bit 2
of the Multiplexing_1 Register. The Host
communicates to the pins through its memory
mapped IR Data Register shown here.
IR DATA REGISTER
Host
MBX 0x98
8051
N/A
Power
VCC2
Default
0x00
8051 R/W
System R/W
Bit Def
D7-D2
N/A
R/W
Reserved
D1
N/A
R
IR_REC
Bit 1 and bit 0 are don’t care if bit 2 of the
Multiplexing_1 Register is reset. (These bits are
multiplexed onto the IRTX and IRRX pins when
bit 2 of the Multiplexing Register is set).
Therefore, if the IR interface is on IRRX (pin 21)
and IRTX (pin 20), then MISC2 allows the IR
259
D0
N/A
R/W
IR_TX
interface to be switched between the IRCC 2.0
block and the IR Data Register.
Note that MISC7 allows the control of the COMRX/GPIO8 (pin 141) and COM-TX/GPIO9 (pin
142) pins. If the COM-RX and COM-TX pins are
used for IR, then this allows the IR interface
access to be switched between the IRCC 2.0
block and the 8051.
GENERAL PURPOSE I/O (GPIO)
The GPIO defaults are shown in TABLE 86 8051 ON-CHIP EXTERNAL MEMORY MAPPED
REGISTERS on page 159.
All General Purpose registers are powered by
VCC1. When GPIO6, GPIO10, OUT1, OUT5 OUT9, GPIO17, GPIO20, GPIO21, and KSO12
are configured as alternate function outputs and
PWRGD is inactive, i.e. VCC2 is 0v, these pins
will tri-state to prevent back-biasing of external
circuitry.
•
PROGRAMMER’S NOTE: The direction of
alternate function pins that are multiplexed with
general purpose I/O pins, i.e. where the GPIO
function is the default, is determined by the
GPIO direction bit. For example if the KS014
function of GPIO4 is selected, bit 4 in GPIO
Direction Register A must be set to “1”. This
rule does not apply to default non-GPIO pin
functions that may have a GPIO as an alternate
function.
GPIO9 defaults to “output”, “low”, for both
the default (GPIO) function and the
alternate (IRTX) function, regardless of the
state of PWRGD. This is done to prevent
infrared transceiver damage
OUTPUT EN
ALT FUNC
Control bit
nRD
nWR
ALT FUNC OUTPUT
1
GPIO OUT REG BIT
0
FIGURE 38 - OUTPUT PIN TYPE
260
OUT PIN
nRD
IN REG BIT
Wake-up Source Bit
nWR
IN PIN
Edge detector
Wake-up Mask Bit
Wake-up
IRQ
FIGURE 39 - INPUT PIN TYPE
nRD
nWR
GPIO DIR BIT
ALT FUNC
Control bit
ALT FUNC OUTPUT
1
GPIO OUT REG BIT
0
GPIO IN REG BIT
ALT FUNC INPUT
FIGURE 40 - GPIO PIN TYPE
261
GPIO PIN
MEMORY MAPPED CONTROL REGISTERS
GPIO DIRECTION REGISTER A
Host
N/A
8051
0x7F18
Power
VCC1
Default
0x00
Bit
Def
D7
GPIO7
1=output
0=input
D6
D5
D4
D3
D2
D1
D0
GPIO6
1=output
0=input
GPIO5
1=output
0=input
GPIO4
1=output
0=input
GPIO3
1=output
0=input
GPIO2
1=output
0=input
GPIO1
1=output
0=input
GPIO0
1=output
0=input
D2
status
of pin
GPIO2
D1
status
of pin
GPIO1
D0
status
of pin
GPIO0
D1
GPIO1
D0
GPIO0
GPIO INPUT REGISTER A
Host
N/A
8051
0x7F1A (R)
Power
VCC1
Default
N/A
Bit Des.
D7
status
of pin
GPIO7
D6
status
of pin
GPIO6
D5
status
of pin
GPIO5
D4
status
of pin
GPIO4
D3
status
of pin
GPIO3
GPIO OUTPUT REGISTER A
Host
N/A
8051
0x7F19
Power
VCC1
Default
0x00
Bit Des.
D7
GPIO7
D6
GPIO6
D5
GPIO5
D4
GPIO4
262
D3
GPIO3
D2
GPIO2
GPIO DIRECTION REGISTER B
Host
N/A
8051
0x7F1B
Power
VCC1
Default
0x00
Bit Def.
D7
D6
D5
D4
D3
D2
D1
D0
GPIO15
1=output
0=input
GPIO14
1=output
0=input
GPIO13
1=output
0=input
GPIO12
1=output
0=input
GPIO11
1=output
0=input
GPIO10
1=output
0=input
GPIO9
1=output
0=input
GPIO8
1=output
0=input
D2
GPIO
10
D1
GPIO
9
D0
GPIO
8
D2
status
of pin
GPIO10
D1
status
of pin
GPIO9
GPIO OUTPUT REGISTER B
1Host
N/A
8051
0x7F1C
Power
VCC1
Default
0x00
Bit Def.
D7
GPIO
15
D6
GPIO
14
D5
GPIO
13
D4
GPIO
12
D3
GPIO
11
GPIO INPUT REGISTER B
Host
N/A
8051
0x7F1D (R)
Power
VCC1
Default
N/A
Bit Def.
D7
status
of pin
GPIO15
D6
status
of pin
GPIO14
D5
status
of pin
GPIO13
D4
status
of pin
GPIO12
263
D3
status
of pin
GPIO11
D0
status
of pin
GPIO8
GPIO DIRECTION REGISTER C
Host
N/A
8051
0x7F1E
Power
VCC1
Default
0x00
Bit
Des.
D7
0
D6
0
D5
D4
D3
D2
D1
D0
GPIO21
1=output
0=input
GPIO20
1=output
0=input
GPIO19
1=output
0=input
GPIO18
1=output
0=input
GPIO17
1=output
0=input
GPIO16
1=output
0=input
GPIO OUTPUT REGISTER C
Host
N/A
8051
0x7F1F
Power
VCC1
Default
0x00
Bit Def.
D7
0
D6
0
D5
GPIO21
D4
GPIO20
D3
GPIO19
D2
GPIO18
D1
GPIO17
D0
GPIO16
GPIO INPUT REGISTER C
Host
N/A
8051
0x7F20 (R)
Power
VCC1
Default
N/A
Bit
Def.
D7
0
D6
0
D5
status of
pin
GPIO21
D4
status of
pin
GPIO20
264
D3
status of
pin
GPIO19
D2
status of
pin
GPIO18
D1
status of
pin
GPIO17
D0
status of
pin
GPIO16
OUT REGISTER D
Host
N/A
8051
0x7F22
Power
VCC1
Default
0x00
Bit Def.
D7
OUT7
D6
OUT6
D5
OUT5
D4
OUT4
D3
OUT3
D2
OUT2
D1
OUT1
D0
OUT0
OUT REGISTER E
Host
N/A
8051
0x7F23
Power
VCC1
Default
0x00
Bit Def.
D7
0
D6
0
D5
0
Host
8051
Power
Default
Bit Def.
D7
status
of pin
IN7
D6
status
of pin
IN6
D5
status
of pin
IN5
D4
0
D3
OUT11
D2
OUT10
D1
OUT9
D0
OUT8
IN REGISTER F
N/A
0x7F24 (R)
VCC1
N/A
D4
status
of pin
IN4
265
D3
status
of pin
IN3
D2
status
of pin
IN2
D1
status
of pin
IN1
D0
status
of pin
IN0
MULTIFUNCTION PIN
OVERVIEW
The FDC37N972 multifunction pins are mutliplexed on the following pins :
1.
2.
3.
4.
5.
6.
Multiplexing is required for nIRQ8.
PWM0 and PWM1 have independent multiplex controls.
Multiplexing is required for the Flash ROM address bit FA18.
Multiplexing is required for the Flash ROM chip select nFCS.
Multiplexing is required for the ACCESS.bus 2 interface pins AB2_DATA and AB2_CLK.
OUT0 can be an open-drain or push-pull driver.
Refer to TABLE 4 - ALTERNATE FUNCTION PINS on page 26 for a complete list of the FDC37N972
multifunction pins.
The 8051 firmware, alone, controls the multiplexing functions for each of the multiplexed pins
described in this section.
MULTIPLEXING_1 REGISTER
TABLE 174 - MULTIPLEXING_1 REGISTER
HOST ADDRESS
8051 ADDRESS
POWER PLANE
0x7F3D
VCC1
HOST
TYPE
8051
TYPE
BIT
NAME
DEFAULT
0x00
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
MISC7
MISC6
MISC5
MISC4
MISC3
MISC2
MISC1
MISC0
MISC7 – D7
The MISC7 bit is used in the FDC37N972 to select the pin function and the buffer mode between
GPIO8 – GPIO9 and IRRX and IRTX TABLE 175.
266
PIN
GPIO8
GPIO9
TABLE 175 - MISC7 BIT
MISC7 = 0 (DEFAULT) MISC7 = 1
GPIO8
IRCC BLOCK COM-RX PORT
GPIO9
IRCC BLOCK COM-TX PORT
MISC6 – D6
The MISC6 bit is used in the FDC37N972 to select the pin function and the buffer mode between
GPIO17 and GATEA20 (TABLE 176).
PIN
GPIO17
TABLE 176 - MISC6 BIT
MISC6 = 0 (DEFAULT) MISC6 = 1
GPIO17
GATEA20
MISC5 – D5
The MISC5 bit is used in the FDC37N972 to select the pin function and the buffer mode between
OUT5 and OUT6 and the FDC Floppy 1 drive controls nDS1 and nMTR1 (TABLE 177).
PIN
OUT5
OUT6
TABLE 177 - MISC5 BIT
MISC5 = 0 (DEFAULT) MISC5 = 1
OUT5
nDS1
OUT6
nMTR1
MISC4 – D4
The MISC4 bit is used in the FDC37N972 to select the pin function and the buffer mode between
OUT10 and PWM0 for the OUT10 pin (TABLE 178).
NOTE: This function only applies to the OUT10/PWM0 pin. The OUT11/PWM1 functions are selected
by MISC12 (Multiplexing_2 Register, below).
NOTE: The MISC4 bit in the FDC37C95X applies to both OUT10/PWM0 and OUT11/PWM1.
MISC4
0
1
TABLE 178 - MISC4 BIT
DESCRIPTION
OUT10 Pin Function Selected (DEFAULT)
PWM0 Pin Function Selected
MISC3 – D3
The MISC3 bit, along with the MISC1 bit, is used in the FDC37N972 to select the pin function and the
buffer mode between GPIO20 and GPIO21, the 8051 UART RX and TX, and the PS/2 CLK and DATA
(TABLE 179).
267
MISC[3,1]
[0,0] (DEFAULT)
[0,1]
[1,0]
[1,1]
TABLE 179 - MISC3 AND MISC1 BITS
PIN GPIO20
PIN GPIO21
GPIO20 + 8051_RX *
GPIIO21
PS2CLK
PS2DAT
GPIO20 + 8051_RX *
8051_TX **
PS2CLK
PS2DAT
GPIO20_DIR bit should be set to 0 when operating as an 8051_RX pin.
** GPIO21_DIR bit must be set to 1 when operating as an 8051_TX pin.
The PS/2 pins on GPIO20 and GPIO21 are disabled (internally pulled high) when the non-PS/2
alternate functions are selected. The PS/2 inputs under this condition are seen as a high to the PS/2
Device Interface logic.
Whenever a PS/2 channel is not enabled, the input signals to that channel must be high. The
FDC37N972 provides this through the use of weak pull-ups since the EM and KB channels share a
common receive path and THE IM AND PS2 CHANNELS ALSO SHARE A COMMON RECEIVE
PATH.
GPIO20_DIR
MISC1
PS2_CLK_OUT
1
GPIO20_OUT
0
GPIO20
GPIO20_IN
PS2_CLK_IN
8051_RX
FIGURE 41 - GPIO20 ALTERNATE FUNCTION STRUCTURE
268
GPIO21_DIR
MISC1
MISC3
8051_TX
1
GPIO21_OUT
0
0
GPIO21
1
PS2_DAT_OUT
GPIO21_IN
PS2_DAT_IN
FIGURE 42 - GPIO21 ALTERNATE FUNCTION STRUCTURE
MISC2 – D2
PIN
IRTX
IRRX
TABLE 180 - MISC2 BIT
MISC2 = 0 (DEFAULT)
MISC2 = 1
FROM IRCC BLOCK
FROM IR DATA REGISTER
FROM IRCC BLOCK
FROM IR DATA REGISTER
MISC1 – D1
See the description of the MISC3 bit, above.
NOTE: the MISC1 bit is not used with the MISC0 bit in the FDC37N972.
MISC0 – D0
The MISC0 bit is used in the FDC37N972 to select the pin function and the buffer mode between
OUT1 and nIRQ8 (TABLE 181).
MISC0
0
1
TABLE 181 - MISC0 BIT
DESCRIPTION
OUT1 Pin Function Selected (DEFAULT)
nIRQ8 Pin Function Selected
269
MULTIPLEXING_2 REGISTER
TABLE 182 - MULTIPLEXING_2 REGISTER
HOST ADDRESS
8051 ADDRESS
POWER PLANE
0x7F40
VCC1
HOST
TYPE
8051
TYPE
BIT
NAME
DEFAULT
0x00
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
MISC16
MISC15
MISC14
MISC13
MISC12
MISC11
MISC10
MISC9
MISC[16:15], D7 – D6
The function of the GPIO10 pin is RESERVED in the FDC37N972 when MISC[16:15] = 1,1 (TABLE
183).
NOTE: the FDC37N972 supports a single 16C550 UART interface.
TABLE 183 - MISC[16:15] BITS
MULTIPLEXING_2
REGISTER BITS[7:6]
SELECTED PIN FUNCTION
MISC16
MISC15
FDC37C95x
FDC37N972
0
0
GPIO10 (DEFAULT)
GPIO10 (DEFAULT)
0
1
IR_MODE
IR_MODE
1
0
IRRX3
IRRX3
1
1
nRTS2
RESERVED
MISC[14:13], D5 – D4
The MISC14 and MISC13 bits are used in the FDC37N972 to select the pin function and the buffer
mode between GPIO6 and the IrCC 2.0 IRMODE and IRRX3 functions (TABLE 184).
TABLE 184 - MISC14 AND MISC13 BITS
MISC[14:13]
PIN GPIO6
[0:0] (DEFAULT)
GPIO6
[0:1]
IR_MODE
(IRCC 2.0 GP DATA) OUTPUT
[1:0]
IRRX3 INPUT
[1:1]
RESERVED
270
MISC12 – D3
The MISC12 bit in the Multiplexing_2 register is used in the FDC37N972 to select the pin function and
buffer mode between OUT11 and PWM1 for the OUT11 pin (TABLE 185).
NOTE: The MISC12 bit in the FDC37C95X selects between GPIO functions and Serial Port 2. The
FDC37N972 supports a single 16C550 UART interface.
MISC12
0
1
TABLE 185 - MISC12 BIT
DESCRIPTION
OUT11 Pin Function Selected (DEFAULT)
PWM1 Pin Function Selected
MISC11
The MISC11 bit is used in the FDC37N972 to select the pin function and the buffer mode between
GPIO19, OUT9 and DMA Channel 3 (TABLE 186).
TABLE 186 - MISC11 BIT
MISC11
PIN OUT9
PIN GPIO19
0 (DEFAULT)
OUT9
GPIO19
1
DRQ3
nDACK3
MISC10
MISC17
0
0
0
1
1
1
1
TABLE 187 - MISC10, MISC17, AND MISC6 BITS
MISC10
MISC6
PIN OUT8
PIN KSO12
0
0
OUT8
KSO12
0
1
CPU_RESET
KSO12
1
X
DRQ2
KSO12
0
0
OUT8
OUT8
0
1
CPU_RESET
CPU_RESET
1
0
DRQ2
OUT8
1
1
DRQ2
CPU_RESET
With this definition, only the pair [OUT8 & CPU_RESET] can not simultaneously exist on pins OUT8
and KS012.
271
MISC10
MISC6
CPU_RESET
1
0
OUT8
OUT8
0
1
DRQ2
KSO12
1
KSO12
0
MISC17
FIGURE 43 - OUT8 AND KSO12 ALTERNATE FUNCTION OPERATION
MISC9
MISC9
0 (DEFAULT)
1
TABLE 188 - MISC9 BIT
PIN GPIO4
GPIO4
KSO14
GPIO5
GPIO5
KSO15
MULTIPLEXING_3 REGISTER
TABLE 189 - MULTIPLEXING_3 REGISTER
HOST ADDRESS
8051 ADDRESS
POWER PLANE
0x7F30
VCC1
HOST
TYPE
8051
TYPE
BIT
NAME
DEFAULT
0x00
D7
-
D6
-
D5
-
D4
-
D3
-
D2
-
D1
-
D0
-
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
MISC23
MISC22
MISC21
MISC20
MISC19
MISC18
MISC17
MISC8
MISC23 – D7
The buffer type for the GPIO7 pin can be programmed as push-pull or open-drain. This makes GPIO7
useful for other unique functions like nSCI and extended keyboard scan controls like KSO16. The
272
MISC23 bit is used in the FDC37N972 to select the buffer mode for the GPIO7 pin (TABLE 190 MISC23 BIT).
MISC23
0
1
TABLE 190 - MISC23 BIT
DESCRIPTION
Buffer Mode for GPIO7 is Push-Pull (DEFAULT)
Buffer Mode for GPIO7 is Open-Drain
MISC22 – D6
The MISC22 bit is used along with the MISC5 bit in Multiplexing_1 register to select the KBRST
alternate function #2 of the OUT5 pin (Table 191 - MISC22 BIT).
MISC5
1
0
0
MISC22
X
0
1
TABLE 191 - MISC22 BIT
DESCRIPTION
nDS1 Pin Function Selected.
OUT5 Pin Function Selected (DEFAULT)
KBRST Pin Function Selected
MISC21 – D5
The MISC21 bit is used in the FDC37N972 to select the buffer mode for the OUT0 pin (TABLE 192).
MISC21
0
1
TABLE 192 - MISC21 BIT
DESCRIPTION
Buffer Mode for OUT0 is Open-Drain (DEFAULT)
Buffer Mode for OUT0 is Push-Pull
MISC20 – D4
The MISC20 bit in the Multiplexing_3 register is used in the FDC37N972 to select the pin function and
buffer mode between GPIO and ACCESS.bus 2 functions for the GPIO11 and GPIO12 pins (TABLE
193).
MISC20
0
1
TABLE 193 - MISC20 BIT
DESCRIPTION
GPIO Pin Functions Selected (DEFAULT)
ACCESS.bus 2 Pin Functions Selected
MISC19 – D3
The MISC19 bit in the Multiplexing_3 register is used in the FDC37N972 to select the pin function and
buffer mode between nFCS and GPIO0 for the nFCS pin (TABLE 194).
273
TABLE 194 - MISC19 BIT
DESCRIPTION
nFCS Pin Function Selected (DEFAULT)
GPIO0 Pin Function Selected
MISC19
0
1
MISC18 – D2
The MISC18 bit in the Multiplexing_3 register is used in the FDC37N972, along with bit D3 in the
ESMI MASK register, to select the pin function and buffer mode for the OUT7 pin and the SMI transfer
mechanism to the host. (TABLE 195).
When MISC18 = ‘0’, the primary function of the OUT7 pin is selected and the SMI is routed to the
Serial IRQ interface. If the SMI is masked, SIRQ slot3 is available as IRQ2.
When MISC18 = ‘1’, the alternate nSMI function of the OUT7 pin is selected, the pad is driven opendrain, and the Serial IRQ slot3 is available as IRQ2.
TABLE 195 - MISC18 AND ESMI MASK BITS
ESMI MASK
REGISTER1
D3
0
0
MISC18
0
1
1
0
OUT7
IRQ2
1
1
nSMI
IRQ2
OUT7 PIN
OUT7
nSMI
FUNCTION
SIRQ SLOT3
nSMI
IRQ2
DESCRIPTION
SERIAL SMI (DEFAULT)
PARALLEL SMI, SERIAL IRQ
IRQ2 AVAILABLE
MASKED SERIAL SMI, IRQ2
AVAILABLE
PARALLEL SMI MASKED
(INACTIVE), IRQ2 AVAILABLE
NOTE1 The ESMI Mask register is MBX97h (TABLE 162).
MISC17 – D1
MISC17
0
1
TABLE 196 - MISC17
PIN GPIO18
PIN KSO13
GPIO18 +
KSO13
nDACK2 (1)
nDACK2
GPIO18
NOTE 1:nDACK2 can be received on the GPIO18 pin when MISC17 = 0 by setting the GPIO18
Direction bit to 0.
274
GPIO18_DIR
GPIO18_OUT
GPIO18
nDACK2
0
GPIO18_IN
1
MISC17
KSO13
1
KSO13
0
[ (MISC17=0) | (GPIO18_DIR & MISC17=1) ]
FIGURE 44 - GPIO18 AND KSO13 ALTERNATE FUNCTION OPERATION
MISC8 – D0
The MISC8 bit in the Multiplexing_3 register is used in the FDC37N972 to select the pin function and
buffer mode between FA18 and GPIO13 for the FA18 pin (TABLE 197).
NOTE: The MISC8 bit in the FDC37C95X selects between the GPIO16 function and MID1. The
FDC37N972 does not support the Media ID pins (see MID[1:0] FDD INTERFACE PINS on page 37).
MISC8
0
1
TABLE 197 - MISC8 BIT
DESCRIPTION
FA18 Pin Function Selected (DEFAULT)
GPIO13 Pin Function Selected
MISC8
0 (default)
1
PIN GPIO[16]
GPIO[16]
MID1
MISC17 is described in the Multiplexing_2 register section.
275
ACPI PM1 BLOCK
ACPI PM1 BLOCK OVERVIEW
The FDC37N972 supports ACPI as described in
this section. These features comply with the
ACPI Specification, Revision 1.0, through a
combination of hardware and 8051 software.
Block base address is relocatable depending on
the values programmed in FDC37N972
configuration registers CR60 and CR61 in
Logical Device Number 1.
The FDC37N972 implements the ACPI fixed
registers but includes only those bits that apply
to the power button sleep button and RTC alarm
events. The ACPI WAK_STS, SLP_TYPx, and
SLP_EN bits are also supported.
The functions described in the following subsections can generate a SCI event on the
nEC_SCI pin. In the FDC37N972, an SCI event
is considered the same as an ACPI wakeup or
runtime event. The 8051 can also generate a
SCI on the nEC_SCI pin by setting the
8051_SCI_STS bit in the 8051_PM_STS
register (see nEC_SCI INTERFACE on page
287).
The registers in the FDC37N972 ACPI PM1
Block occupy eight addresses in the host I/O
space and are specified as offsets from the
ACPI PM1 Block base address. The ACPI PM1
ACPI PM1 BLOCK SCI EVENT-GENERATING FUNCTIONS
Power Button With Override
The power button has a status and an enable bit
in the PM1_BLK of registers to provide an SCI
upon the button press. The status bit is software
Read/Writeable by the 8051; the enable bit is
Read-only by the 8051. It also has a status and
enable bit in the PM1_BLK of registers to
indicate and control the power button override
(fail-safe) event. These bits are not required by
ACPI. The power button override event status
bit is software Read/Writeable by the 8051; the
enable bit is software read-only by the 8051.
The enable bit for the override event is located
at bit 1 in the PM1_CNTRL2 register.
The power button enable bit is set by the Host to
enable the generation of an SCI due to the
power button event. The status bit is set by the
8051 when it generates a power button event
and is cleared by the Host writing a ‘1’ to this bit
(writing a ‘0’ has no effect); it can also be
cleared by the 8051. If the enable bit is set, the
8051 will generate an SCI power management
event.
276
Sleep Button
The sleep button has a status and an enable bit
in the PM1_BLK of registers to provide an SCI
upon the button press. The status bit is software
Read/Writeable by the 8051; the enable bit is
Read-only by the 8051.
The sleep button enable bit is set by the Host to
enable the generation of an SCI due to the sleep
button event. The status bit is set by the 8051
when it generates a sleep button event and is
cleared by the Host writing a ‘1’ to this bit
(writing a ‘0’ has no effect); it can also be
cleared by the 8051. If the enable bit is set, the
8051 will generate an SCI power management
event.
RTC Alarm
The ACPI specification requires that the RTC
alarm generate a hardware wake-up event from
the sleeping state. The RTC alarm can be
enabled as an SCI event and its status can be
determined through bits in the PM1_BLK of
registers. The status bit is software
Read/Writeable by the 8051; the enable bit is
Read-only by the 8051.
The RTC enable bit is set by the Host to enable
the generation of an SCI due to the RTC alarm
event. The status bit is set by the 8051 when
the RTC generates an alarm event and is
cleared by the Host writing a ‘1’ to this bit
(writing a ‘0’ has no effect); it can also be
cleared by the 8051. If the enable bit is set, the
8051 will generate an SCI power management
event.
ACPI PM1 BLOCK BASE ADDRESS
Logical Device 1 in the FDC37N972
configuration space supports the ACPI PM1
Block registers interface.
Three device configuration registers in LDN1
provide activation control and the base address
programming for the ACPI PM1 Block registers
(TABLE 198).
Register 0x30 is the Activate register. The
activation control (LDN1:CR30.0) qualifies
address decoding for the ACPI PM1 Block
registers; e.g., if the Activate bit D0 in the
Activate register is “0”, the PM1 Block
addresses will not be decoded; if the Activate bit
is “1”, PM1 Block addresses will be decoded
depending on the values programmed in the
ACPI PM1
registers.
Block
Primary
Base
Address
Registers 0x60 and 0x61 are the ACPI PM1
Block Primary Base Address registers. Register
0x60 is the ACPI PM1 Block Primary Base
Address High Byte, register 0x61 is the ACPI
PM1 Block Primary Base Address Low Byte.
NOTE: The ACPI PM1 Block base address must
be located on eight -byte boundaries; i.e., bits
D0 – D2 in the ACPI PM1 Block Primary Base
Address Low Byte must be “0”. Valid ACPI PM1
Block base address values are 0x0000 –
0x0FF8.
TABLE 198 – ACPI PM1 BOCK CONFIGURATION REGISTERS (LDN1)
SOFT
RESET
VCC2
POR
VCC1&VCC0
POR
0x00
0x00
0x00
-
R/W
0x00
0x00
0x00
-
R/W
0x00
0x00
0x00
-
INDEX
TYPE
0x30
R/W
0x60
0x61
HARD
RESET
277
DESCRIPTION
D7
D6
D5
D4
D3
D2
D1
Activate
RESERVED
ACPI PM1 Block Primary Base Address High Byte
“0”
“0”
“0”
“0”
A11
A10
A9
ACPI PM1 Block Primary Base Address Low Byte
A7
A6
A5
A4
A3
“0”
“0”
D0
Activate
A8
“0”
ACPI PM1 BLOCK
DESCRIPTION
The ACPI register model consists of a number
of fixed register blocks that perform designated
functions. A register block consists of a number
of registers that perform Status, Enable and
Control functions. The ACPI specification deals
with events (which have an associated interrupt
status and enable bits, and sometimes an
associated control function) and control
features. The status registers illustrate what
defined function is requesting ACPI interrupt
services (SCI). Any status bit in the ACPI
specification has the following attributes:
Status bits are only set through some defined
hardware or 8051 event.
Unless otherwise noted, Status bits are cleared
by the system writing a “1” to that bit position,
and upon VCC1 POR. Writing a ‘0’ has no
effect.
Status bits only generate interrupts while their
associated bit in the enable register is set.
Function bit positions in the status register have
the same bit position in the enable register
(there are exceptions to this rule, special status
bits have no enables).
Note that this implies that if the respective
enable bit is reset and the hardware event
occurs, the respective status bit is set; however
no interrupt is generated until the enable bit is
set. This allows software to test the state of the
event (by examining the status bit) without
necessarily generating an interrupt. There are a
special class of status bits that have no
respective enable bit, these are called out
specifically, and the respective enable bit in the
enable register is marked as reserved for these
special cases.
The enable registers allow the setting of the
status bit to generate an interrupt (under 8051
control). As a general rule there is an enable bit
in the enable register for every status bit in the
status register. The control register provides
special controls for the associated event, or
special control features that are not associated
with an interrupt event. The order of a register
block is the status registers, followed by enable
registers, followed by control registers.
REGISTERS
The registers in the FDC37N972 ACPI PM1
Block occupy eight addresses in the host I/O
space and are specified as offsets from the
ACPI PM1 Block base address (TABLE 199).
The registers in the PM1 Block are powered by
VCC1.
278
REGISTER
PM1_STS 1
PM1_STS 2
PM1_EN 1
PM1_EN 2
PM1_CNTRL 1
PM1_CNTRL 2
RESERVED
RESERVED
TABLE 199 - ACPI PM1 BLOCK REGISTERS
SIZE (bits)
OFFSET
ADDRESS
8
0
<ACPI PM1 Block Base Address>
8
1
<ACPI PM1 Block Base Address>+1h
8
2
<ACPI PM1 Block Base Address>+2h
8
3
<ACPI PM1 Block Base Address>+3h
8
4
<ACPI PM1 Block Base Address>+4h
8
5
<ACPI PM1 Block Base Address>+5h
8
6
<ACPI PM1 Block Base Address>+6h
8
7
<ACPI PM1 Block Base Address>+7h
POWER MANAGEMENT 1 STATUS REGISTER 1 (PM1_STS 1)
Host Register Location:
8051 Register Location:
Default Value:
Host Attribute:
Size:
BIT
0-7
NAME
Reserved
<ACPI PM1 Block Base Address> System I/O Space
n/a
00h on VCC1 POR
Read
8-bits
DESCRIPTION
Reserved. These bits always return a value of zero.
POWER MANAGEMENT 1 STATUS REGISTER 2 (PM1_STS 2)
Host Register Location:
8051 Register Location:
Default Value:
Host Attribute:
8051 Attribute
Size:
<ACPI PM1 Block Base Address>+1h System I/O Space
0x7F80
00h on VCC1 POR
Read/Write (Note 1)
Read/Write
8-bits
Note 1: These bits are set/cleared by the 8051 directly i.e., writing ‘1’ sets the bit and writing ‘0’ clears
it. These bits can also be cleared by the Host software writing a one to this bit position and by VCC1
POR. Writing a 0 by the Host has no effect.
An interrupt is generated to the 8051 when the Host writes to this register.
BIT
0
NAME
PWRBTN_STS
DESCRIPTION
This bit can be set or cleared by the 8051 to simulate a Power
button status if the power is controlled by the 8051. The Host
writing a one to this bit can also clear this bit. The 8051 must
generate the associated SCI interrupt under software control.
279
1
BIT
NAME
SLPBTN_STS
2
RTC_STS
3
PWRBTNOR_STS
4-6
7
Reserved
WAK_STS
DESCRIPTION
This bit can be set or cleared by the 8051 to simulate a Sleep
button status if the sleep state is controlled by the 8051. The Host
writing a one to this bit can also clear this bit.
This bit can be set or cleared by the 8051 to simulate a RTC
status. The Host writing a one to this bit can also clear this bit.
This bit can be set or cleared by the 8051 to simulate a Power
button override event status if the power is controlled by the 8051.
The Host writing a one to this bit can also clear this bit.
Reserved. These bits always return a value of zero.
This bit can be set or cleared by the 8051. The Host writing a one
to this bit can also clear this bit.
POWER MANAGEMENT 1 ENABLE REGISTER 1 (PM1_EN 1)
Host Register Location:
8051 Register Location:
Default Value:
Host Attribute:
Size:
BIT
0-7
NAME
Reserved
<ACPI PM1 Block Base Address>+2 System I/O Space
n/a
00h on VCC1 POR
Read
8-bits
DESCRIPTION
Reserved. These bits always return a value of zero.
POWER MANAGEMENT 1 ENABLE REGISTER 2 (PM1_EN 2)
Host Register Location:
8051 Register Location:
Default Value:
Host Attribute:
8051 Attribute:
Size:
<ACPI PM1 Block Base Address>+3 System I/O Space
0x7F81
00h on VCC1 POR
Read/Write
Read
8-bits
An interrupt is generated to the 8051 when the Host writes this to register.
0
BIT
NAME
PWRBTN_EN
1
SLPBTN_EN
2
RTC_EN
3-7
RESERVED
DESCRIPTION
This bit can be read or written by the Host. It can be read by the
8051
This bit can be read or written by the Host. It can be read by the
8051
This bit can be read or written by the Host. It can be read by the
8051
RESERVED bits cannot be written and return “0” when read.
280
POWER MANAGEMENT 1 CONTROL REGISTER 1 (PM1_CNTRL 1)
Host Register Location:
8051 Register Location:
Default Value:
Host Attribute:
Size:
BIT
0-7
NAME
RESERVED
<ACPI PM1 Block Base Address>+4 System I/O Space
n/a
00h on VCC1 POR
Read
8-bits
DESCRIPTION
RESERVED bits cannot be written and return “0” when read.
POWER MANAGEMENT 1 CONTROL REGISTER 2 (PM1_CNTRL 2)
Host Register Location:
8051 Register Location:
Default Value:
Host Attribute:
8051 Attribute:
Size:
<ACPI PM1 Block Base Address>+5 System I/O Space
0x7F82
00h on VCC1 POR
Read/Write
Read. NOTE: Bit 5 is Read/Write
8-bits
An interrupt is generated to the 8051 when the Host writes to this register.
BIT
0
1
2-4
5
NAME
Reserved
PWRBTNOR_EN
SLP_TYPx
SLP_EN
6-7
RESERVED
DESCRIPTION
Reserved. This field always returns zero.
This bit can be set or cleared by the Host, read by the 8051
These bits can be set or cleared by the Host, read by the 8051
This bit is R/W by the Host; reads by the Host always return ‘0’.
This bit can be set (written as ‘1’) but not cleared by the Host
(writing ‘0’ has no effect). This bit is R/W by the 8051, and
reads by the 8051 return the true value of the bit. When set by
the Host, this bit is cleared by the 8051 writing a ‘1’ to it; writing
‘0’ has no effect.
RESERVED bits cannot be written and return “0” when read.
281
nEC_SCI INTERFACE
The nEC_SCI pin logic hardware is shown
below in FIGURE 42.
Any or all of the PWRBTN_STS, SLPBTN_STS,
and RTC_STS bits in the PM1_STS 2 register
can assert the nEC_SCI pin if enabled by the
PWRBTN_EN, SLPBTN_EN, and RTC_EN bits
in the PM1_EN 2 register. See descriptions of
these registers, above.
PM1_STS 2
Register
The 8051_SCI_STS bit can assert the nEC_SCI
pin at any time, without being enabled. The
8051_SCI_STS bit is located in the
8051_PM_STS register at MMCR address
0x7F83h (TABLE 200).
The 8051_SCI_STS bit is in the FDC37N972
and is read/write by the 8051.
If the
8051_SCI_STS bit is “1”, an interrupt is
generated on the nEC_SCI pin.
PM1_EN 2
Register
PWRBTN_STS
SLPBTN_STS
nEC_SCI
RTC_STS
8051_PM_STS Register
8051_SCI_STS
FIGURE 45 - HARDWARE nEC_SCI INTERFACE
TABLE 200 - 8051_PM_STS REGISTER
HOST ADDRESS
8051 ADDRESS
POWER PLANE
0x7F83
VCC1
HOST TYPE
8051 TYPE
BIT NAME
D7
D6
D5
D4
D3
D2
D1
R
R
R
R
R
R
R
RESERVED
(RESERVED bits cannot be written and return “0” when read)
282
DEFAULT
0x00
D0
R/W
8051_
SCI_STS
REAL TIME CLOCK
GENERAL DESCRIPTION
The Real Time Clock Supercell (RTC) is a
complete time of day clock with alarm, day of
month alarm, one hundred year calendar, a
century byte, and a programmable periodic
interrupt. The RTC address space consists of
two-128 bytes.banks of CMOS RAM (Bank0 and
Bank1.) Each bank is accessable via address
and data ports. These access ports have
relocatable addresses and are acessable by
both the host and the 8051. Each bank’s last
addressable location accesses the Shared RTC
Control. The remaining 127 bytes of Bank0
contain the following: eleven registers of time,
calendar, century, and alarm data, four control
and status registers, and 111 bytes of general
purpose registers. The remaining 127bytes of
Bank1 contain general purpose registers.
30-day alarm.
RTC/CMOS Bank Addresses are relocatable.
The RTC CMOS Bank0 index register (70h) is
shadowed
RTC Interrupt (IRQ8) is available on the parallel
nIRQ8 pin.
RTC power source is switched internally
between the VCC1 and VCC0 pins according to
VCC1_PWRGD (See FIGURE 4 - VCC2
POWER-UP TIMING and FIGURE 5 – VCC1
PWRGD TIMING).
Lockable CMOS Ram Address Ranges (See
Table 223 - RTC, LOGICAL DEVICE 6
[LOGICAL DEVICE NUMBER = 0X06]
FEATURES:
CONFIGURATION REGISTERS
Allow 32kHz clock input or a 32kHz crystal.
The RTC configuration registers, in Logical
Device Number 6, provide activation control and
the base address for the run-time registers (See
TABLE 201)
Counts seconds, minutes, and hours of the day.
Counts days of the week, date, month and year.
Binary or BCD representation of time, calendar
and alarm.
The activate bit register 0x30, Bit D0 enables
RTC/CMOS Bank0.
The activate bit register 0x30, Bit D1 enables
RTC/CMOS Bank1.
24 hour daily alarm.
283
TABLE 201 - RTC CONFIGURATION REGISTERS
INDEX
TYPE
HARD
RESET
0x30
R/W
0x00
0x60
R/W
0x00
SOFT
RESET
VCC2
POR
VCC1&V
CC0
POR
0x00
0x00
-
0x00
0x00
DESCRIPTION
D
7
R/W
0x70
0x70
0x70
D
5
D
4
D
3
D
2
D1
Activate
Activate
RTC/ CMOS
CMOS
Bank0
Bank1
RTC/CMOS Bank0 Primary Base Address
High Byte
-
-
“
0
”
“
0
”
“
0
”
A
1
1
A
1
0
A9
R/W
0x00
0x00
0x00
-
0xF1
R/W
R
0x74
-
0x74
-
0x74
-
“0”
CMOS Bank1 Primary Base Address High
Byte
“ “ “ “ A A A9
0 0 0 0 1 1
” ” ” ” 1 0
0x63
A8
RTC/CMOS Bank0 Primary Base Address
Low Byte
A A A A A A A1
7 6 5 4 3 2
0x62
D0
Activate
RESERVED
“
0
”
0x61
D
6
-
A8
CMOS Bank1 Primary Base Address Low
Byte
A A A A A A A1
“0”
7 6 5 4 3 2
Shadow RTC/CMOS Bank 0 Index register
-
ISA HOST I/O INTERFACE
Each bank has a CMOS Address Register and a
CMOS Data Register. Each bank’s CMOS
Address Register is located at the corresponding
base address setup by the Configuration
Registers in TABLE 201. Each bank’s CMOS
Data Register is located at an offest of the
coresponding base (see TABLE 202.) Bit D7 of
both CMOS Address Registers is not used for
the CMOS RAM address decoding. All four
CMOS Run Time regesters are fully read/write.
TABLE 202 - CMOS RUN TIME REGISTERS
ISA ADDRESS*
BANK
FUNCTION
Bank0 * (R/W)
RTC/CMOS Bank0
CMOS Address Register
Bank0 * + 1(R/W)
RTC/CMOS Bank0
CMOS Data Register
Bank1 * (R/W)
CMOS Bank1
CMOS Address Register
Bank1 * + 2(R/W)
CMOS Bank1
CMOS Data Register
284
INTERNAL REGISTERS
TABLE 203 shows the address map of the RTC and CMOS RAM, eleven registers of time,
calendar, century , and alarm data, four control and status registers , 239 bytes of CMOS
registers and one :Shared RTC Control register. Each bank’s last addressable location accesses
the same reigister: Shared RTC Control.
BANK
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank0
Bank1
Bank1
TABLE 203 - RTC AND CMOS RAM ADDRESS MAP
BASE OFFEST
REGISTER TYPE
REGISTER FUNCTION
0
R/W
Register 0: Seconds
1
R/W
Register 1: Seconds Alarm
2
R/W
Register 2: Minutes
3
R/W
Register 3: Minutes Alarm
4
R/W
Register 4: Hours
5
R/W
Register 5: Hours Alarm
6
R/W
Register 6: Day of Week
7
R/W
Register 7: Day of Month
8
R/W
Register 8: Month
9
R/W
Register 9: Year
A
R/W
Register A:
B
R/W
Register B: (Bit 0 is Read Only)
C
R
Register C:
D
R/W
Register D: Day of Month Alarm
32
R/W
Century Byte
E-31, 33-7F
R/W
General purpose
7F
R/W
: Shared RTC Control
0-7E
R/W
Bank 1: General purpose
7F
R/W
: Shared RTC Control
All 256 bytes are directly writable and readable by the host with the following exceptions:
Registers C is read only
Bit 7 of Register D is read only which can only be set by a read of Register D.
Bit 6 of Register D is read only .
Bit 7 of Register A is read only
Bits 0 of Register B is read only
Bits 7-1 of the Shared RTC Control register are read only
285
TIME CALENDAR AND ALARM
The processor program obtains time and
calendar information by reading the appropriate
locations. The program may initialize the time,
calendar and alarm by writing to these locations.
The contents of the twelve time, calendar and
alarm registers can be in binary or BCD as
shown in TABLE 204 - RTC REGISTER VALID
RANGE.
Before initializing the internal registers, the SET
bit in Register B should be set to a "1" to prevent
time/calendar updates from occurring. The
program initializes the twelve locations in the
binary or BCD format as defined by the DM bit
in Register B. The SET bit may then be cleared
to allow updates.
The 12/24 bit in Register B establishes whether
the hour locations represent 1 to 12 or 0 to 23.
The 12/24 bit cannot be changed without
reinitializing the hour locations. When the 12
hour format is selected, the high order bit of the
hours byte represents PM when it is a "1".
Once per second, the twelve time, calendar and
alarm registers are updated, Incrementing by
one second and checking for an alarm
ADD
0
1
2
3
4
5
6
7
condition. During the update cycle all the
registers in TABLE 204, except Register D, are
not accessible by the processor program. The
update cycle time is shown in Table TABLE
205. The update logic contains circuitry for
automatic end-of-month recognition as well as
automatic leap year compensation.
The three alarm registers may be used in two
ways. First, when the program inserts an alarm
time in the appropriate hours, minutes and
seconds alarm locations, the alarm interrupt is
initiated at the specified time each day if the
alarm enable bit is high. The second usage is to
insert a "don't care” state in one or more of three
alarms registers. The "don't care" code is any
hexadecimal byte from C0 to FF inclusive. That
is the two most significant bits of each byte,
when set to "1" create a "don't care" situation.
An alarm interrupt each hour is created with a
"don't care" code in the hours alarm location.
Similarly, an alarm is generated every minute
with "don't care" codes in the hours and minutes
alarm bytes. The "don't care" codes in all three
alarm bytes create an interrupt every second.
TABLE 204 - RTC REGISTER VALID RANGE
BCD
REGISTER FUNCTION
RANGE
Register 0: Seconds
00-59
Register 1: Seconds Alarm
00-59
Register 2: Minutes
00-59
Register 3: Minutes Alarm
00-59
Register 4: Hours
01-12 am
(12 hour mode)
81-92 pm
(24 hour mode)
00-23
Register 5: Hours Alarm
01-12 am
(12 hour mode)
81-92 pm
(24 hour mode)
00-23
Register 6: Day of Week
01-07
Register 7: Day of Month
01-31
286
BINARY
RANGE
00-3B
00-3B
00-3B
00-3B
01-0C
81-8C
00-17
01-0C
81-8C
00-17
01-07
01-1F
ADD
8
9
REGISTER FUNCTION
Register 8: Month
Register 9: Year
BCD
RANGE
01-12
00-99
BINARY
RANGE
01-0C
00-63
D
Day of Month Alarm
01-31
01-1F
32
Century Byte
00-99
00-63
UPDATE CYCLE
corresponding time register and issues an alarm
if a match or if a "don't care" code is present.
An update cycle is executed once per second if
the SET bit in Register B is clear and the
DV0-DV2 divider is not clear. The SET bit in the
"1" state permits the program to initialize the
time and calendar registers by stopping an
existing update and preventing a new one from
occurring.
The length of an update cycle is shown in
TABLE 205. During the update cycle the time,
calendar and alarm registers are not accessible
by the processor program. If the processor
reads these locations before the update cycle is
complete the output will be undefined. The UIP
(update in progress) status bit is set during the
interval. When the UIP bit goes high, the update
cycle will begin 244 µs later. Therefore, if a low
is read on the UIP bit the user has at least 244
µs before time/calendar data will be changed.
The primary function of the update cycle is to
increment the seconds register, check for
overflow, increment the minutes register when
appropriate and so forth through to the year of
the century byte. The update cycle also
compares each alarm register with the
TABLE 205 - RTC UPDATE CYCLE TIMING
INPUT CLOCK
FREQUENCY
32.768 kHz
32.768 KHZ
UIP BIT
1
0
UPDATE CYCLE
TIME
1948 µs
-
287
MINIMUM TIME
BEFORE START OF
UPDATE CYCLE
244 µs
CONTROL AND STATUS REGISTERS
The RTC has four registers, which are accessible to the processor program at all times, even during
the update cycle.
REGISTER A
B7
UIP
B6
DV2
B5
DV1
B4
DV0
B3
RS3
B2
RS2
B1
RS1
B0
RS0
UIP
DV2-0
The update in progress bit is a status flag that
may be monitored by the program. When UIP is
a "1" the update cycle is in progress or will soon
begin. When UIP is a "0" the update cycle is not
in progress and will not be for at least 244 µs.
The time, calendar, and alarm information is
fully available to the program when the UIP bit is
“0”. The UIP bit is a read only bit and is not
affected by VCC1 POR. Writing the SET bit in
Register B to a "1" inhibits any update cycle
and then clears the UIP status bit.
Three bits are used to permit the program to
select various conditions of the 22 stage divider
chain. TABLE 206 shows the allowable
combinations. The divider selection bits are also
used to reset the divider chain. When the
time/calendar is first initialized, the program
may start the divider chain at the precise time
stored in the registers. When the divider reset is
removed the first update begins one-half second
later. These three read/write bits are not affected
by VCC1 POR.
TABLE 206 - RTC DIVIDER SELECTION BITS
OSCILLATOR
REGISTER A BITS
FREQUENCY
DV2
DV1
DV0
MODE
0
0
0
Oscillator Disabled
32.768 kHz
0
0
1
Oscillator Disabled
32.768 kHz
0
1
0
Normal Operate
32.768 kHz
0
1
1
Test
32.768 kHz
1
0
X
Test
1
1
X
Reset Divider
RS3-0
The four rate selection bits select one of 15 taps
on the divider chain or disable the divider
output. The selected tap determines rate or
frequency of the periodic interrupt. The program
288
may enable or disable the interrupt with the PIE
bit in Register B. Table 207 lists the periodic
interrupt rates and equivalent output frequencies
that may be chosen with the RS0-RS3 bits.
These four bits are read/write bits which are not
affected by VCC1 POR.
TABLE 207 - RTC PERIODIC INTERRUPT RATES
RATE SELECT
32.768 kHz TIME BASE
RS3 RS2 RS1
PERIOD RATE
FREQUENCY
RS0
OF INTERRUPT
OF INTERRUPT
0 0 0 0
0.0
0 0 0 1
3.90625 ms
256 Hz
0 0 1 0
7.8125 ms
128 Hz
0 0 1 1
8.192 Hz
122.070 µs
0 1 0 0
4.096 kHz
244.141 µs
0 1 0 1
2.048 kHz
488.281 µs
0 1 1 0
1.024 kHz
976.562 µs
0 1 1 1
1.953125 ms
512 Hz
1 0 0 0
3.90625 ms
256 Hz
1 0 0 1
7.8125 ms
128 Hz
1 0 1 0
15.625 ms
64 Hz
1 0 1 1
31.25 ms
32 Hz
1 1 0 0
62.5 ms
16 Hz
1 1 0 1
125 ms
8 Hz
1 1 1 0
250 ms
4 Hz
1 1 1 1
500 ms
2 Hz
REGISTER B
B7
SET
B6
PIE
B5
AIE
B4
UIE
B3
RES
SET
When the SET bit is a "0", the update functions
normally
by
advancing
the
counts
once-per-second. When the SET bit is a "1", an
update cycle in progress is aborted and the
PIE
The periodic interrupt enable bit is a read/write
bit which allows the periodic-interrupt flag (PF)
bit in Register C to cause the IRQB port to be
driven low. The program writes a "1" to the PIE
289
B2
DM
B1
24/12
B0
DSE
program may initialize the time and calendar
bytes without an update occurring in the
middle of initialization. SET is a read/write bit,
which is not modified by VCC1 POR or any
internal functions.
bit in order to receive periodic interrupts at the
rate specified by the RS3 - RS0 bits in Register
A. A “0” in PIE blocks IRQB from being initiated
by a periodic interrupt, but the periodic flag (PF)
is still set at the periodic rate. PIE is not
modified by any internal function, but is
cleared to "0" by a VCC1 POR.
AIE
DM
The alarm interrupt enable bit is a read/write bit,
which when set to a "1" permits the alarm flag
(AF) bit in Register C to assert IRQB. An
alarm interrupt occurs for each second that the
three time bytes equal the three alarm bytes
(including a "don't care" alarm code of binary
11XXXXXX). When the AIE bit is a "0", the AF
bit does not initiate an IRQB signal. The VCC1
POR port clears AIE to "0". The AIE bit is not
affected by any internal functions.
UIE
The data mode bit indicates whether time and
calendar updates are to use binary or BCD
Formats: The DM bit is written by the processor
program and may be read by the program, but
is not modified by any internal functions or by
VCC1 POR. A "1” in DM signifies binary data,
while a "0" in DM specifies BCD data.
24/12
The 24/12 control bit establishes the format of
the hours byte as either the 24 hour mode if set
to a "1", or the 12 hour mode if cleared to a
"0". This is a read/write bit that is not affected
by VCC1 POR or any internal function.
The update-ended interrupt enable bit is a
read/write bit which enables the update-end flag
(UF) bit in Register C to assert IRQB. The
VCC1 POR port or the SET bit going high clears
the UIE bit.
DSE
RES
The daylight savings enable bit is read only and
is always set to a "0" to indicate that the
daylight savings time option is not available.
Reserved - read as zero
REGISTER C
REGISTER C IS A READ ONLY REGISTER
B7
IRQF
B6
PF
B5
AF
B4
UF
290
B3
0
B2
0
B1
0
B0
0
IRQF
AF
The interrupt request flag is set to a "1" when
one or more of the following are true:
PF = PIE = 1
AF = AIE = 1
UF = UIE = 1
The alarm interrupt flag when set to a "1"
indicates that the current time has matched the
alarm time. A "1" in AF causes a "1"to appear in
IRQF and the IRQB port to go low when the AIE
bit is also a "1". A VCC1 POR or a read of
Register C clears the AF bit.
Any time the IRQF bit is a "1", the IRQB signal
is driven low. All flag bits are cleared after
Register C is read or by the VCC1 POR port.
PF
The periodic interrupt flag is a read only bit
which is set to a "1" when a particular edge is
detected on the selected tap of the divider chain.
The RS3 -RS0 bits establish the periodic rate.
PF is set to a "1" independent of the state of
the PIE bit. PF being a "1" sets the IRQF bit
and initiates an IRQB signal when PIE is also a
"1". The PF bit is cleared by VCC1 POR or by a
read of Register C.
UF
The update-ended interrupt flag bit is set after
each update cycle. When the UIE bit is also a
"1", the "1" in UF causes the IRQF bit to be set
and asserts IRQB. A VCC1 POR or a read of
Register C causes UF to be cleared.
B3-0
The unused bits of Register C are read as “0”
and cannot be written.
REGISTER D
MSB
b7
VRT
b6
0
b5
b4
Day of month
b3
b2
b1
VRT
B6
The Valid RAM and Time (VRT) bit is cleared by
the RTC to indicate that both the main power
(VCC1) and the battery power (VCC0) are both
low at the same time. This is the only case
where the contents of the RAM,as well as, the
time and calendar registers are not valid. The
VRT bit can only be set by a read of Register D.
The 8051 can set the VRT bit reading Register
D after both of the following condition are met:
VCC1_PWRGD =1 and the 8051 completes
initialization. The Host can set the VRT bit
reading Register D after PWRGD =1 See
Section 0 Power Management.
Read as zero and cannot be written.
291
LSB
B0
B5:B0
Day of month Alarm; these bits store the day of
month alarm value. If set to 000000b, then a
don’t care state is assumed. The host must
configure the Day of month alarm for these bits
to do anything, yet they can be written at any
time. If the Day of month alarm is not enabled,
these bits will return zeros. These bits are not
affected by RESET_DRV, VCC1_POR or
VCC2_POR. The BCD Range for the Day of
month of month alarm is 1-31 and the Binary
Range is 01-1F.
CENTURY BYTE
The century byte is located at RTC/Bank0
register 0x32. The century byte is incremented
by one when the year byte changes from 99 or
0x63 to 0. The BCD Range for the century byte
is 00-99 and the Binary Range is 00-63.
GENERAL PURPOSE
Registers 0xEh-0x7EH, except 0x32 (The
Century Byte) in Bank0 and 0x0-0x7E in Bank1
are general purpose "CMOS" registers. These
registers can be used by the host or 8051 and
are fully available during the time update cycle.
The contents of these registers are preserved by
VCC0 power. Registers Eh-7Eh are in bank0
and registers 80h-FEh are in bank1.
receive by writing a "1" to the appropriate enable
bits in Register B. A "0" in an enable bit prohibits
the IRQB port from being asserted due to that
interrupt cause. When an interrupt event occurs
a flag bit is set to a "1" in Register C, which are
set independent of the state of the
corresponding enable bits in Register B. Each of
the three interrupt sources have separate flag
bits in Register C. The flag bits may be used
with or without enabling the corresponding
enable bits. The flag bits in Register C are
cleared (record of the interrupt event is erased)
when Register C is read. Double latching is
included in Register C to ensure the bits that are
set are stable throughout the read cycle. All bits
which are high when read by the program are
cleared, and new interrupts are held until after
the read cycle. If an interrupt flag is already set
when the interrupt becomes enabled, the IRQB
port is immediately activated, though the
interrupt initiating the event may have occurred
much earlier.
SHARED RTC CONTROL
Each bank’s last addressable location (0x7F)
accesses the Shared RTC Control. The Shared
RTC Control Register implements an interface
that allows the 8051 to read/write the RTC and
CMOS registers by use of the smart host
protocol. Refer to 8051 RTC CMOS ACCESS
Section for the definition of this register.
When an interrupt flag bit is set and the
corresponding interrupt-enable bit is also set,
the IRQB port is driven low. IRQB is asserted as
long as at least one of the three interrupt
sources has its flag and enable bits both set.
The IRQF bit in Register C is a "1" whenever the
IRQB port is being driven low.
FREQUENCY DIVIDER
INTERRUPTS
The RTC includes three separate fully automatic
sources of interrupts to the processor. The
alarm interrupt may be programmed to occur at
rates from one-per-second to one-a-day. The
periodic interrupt may be selected for rates from
half-a-second to 122.070 µs. The update ended
interrupt may be used to indicate to the program
that an update cycle is completed. Each of these
independent interrupts are described in greater
detail in other sections. The processor program
selects which interrupts, if any, it wishes to
292
The RTC has 22 binary divider stages following
the clock input. The output of the divider is a 1Hertz signal to the update-cycle logic. The
divider is controlled by the three divider bits
(DV3-DV0) in Register A. As shown in Table
206 the divider control bits can select the
operating mode, or be used to hold the divider
chain reset that allows precision setting of the
time. When the divider chain is changed from
reset to the operating mode, the first update
cycle is one-half second later.
PERIODIC INTERRUPT SELECTION
8051 RTC CMOS ACCESS
The periodic interrupt allows the IRQB port to be
triggered from once every 500 ms to once every
122.07 µs. As Table 207 shows, the periodic
interrupt is selected with the RS0-RS3 bits in
Register A. The periodic interrupt is enabled
with the PIE bit in Register B.
The FDC37N972FR implements an interface
that allows the 8051 to read/write the RTC and
CMOS registers under the following conditions:
When nRESET_OUT is active, or when VCC2 is
off, or by use of the smart host protocol.
RTCCNTRL (RTC CONTROL) REGISTER
Host
N/A
8051
0x7FF5
Power
VCC1
Default
0x80
The RTC Control register is mirrored in CMOS register 0x7Fh in both bank0 and bank1.
D7
nSH
D6
0
D5
0
D4
0
D3
KREQH
293
D2
HREQH
D1
KREQL
D0
HREQL
NSH
HREQH
nSmart Host - This bit is controlled by the
8051. When set to a “1”, the host is not a
smart host and does not recognize the sharing
protocol. When set to a “0”, the host is smart
and can recognize the sharing protocol. When
set to “1”, this bit will clear HREQH and
HREQL. Clearing this bit to “0” will allow the
8051 to regain access to the CMOS RAM.
KREQL
Host Request High - This bit can be set by the
host when KREQH is “0”. If the request is not
granted, this bit is read back as a “0” and the
request must be tried again.
nSH
1
0
0
0
Keyboard Request Low - The 8051 can set
this bit when HREQL IS '0'. If the request is
not granted, this bit is read back as a zero and
the request must be tried again. Note: After
regaining control of the CMOS, the 8051 must
re-write the RTC Low Address Register before
accessing the RTC Data Register. This bit
selects access to the CMOS RAM Addresses
0-7F.
KREQX
X
0
1
0
HREQX
X
0
0
1
BUS
ACCESS
Host
None
8051
Host
RTC ADDRESS REGISTER (HIGH AND LOW)
Host
N/A
8051
0x7FF8 & 0x7FF6
Power
VCC1
Default
0x00 & 0x00
When KREQ=1.in the RTC Control register, the
Low Address Register and the High Address
Register are used to access the 256 CMOS RAM
registers. The Low Address Register is used to
provide the address to access the 128 CMOS
RAM registers in bank0 and the High Address
Register is used to provide the address to access
the 128 CMOS RAM registers in bank1. Bit D7 of
the Low Address Register and the High Address
Register are not used for the address decode and
are don’t care bits.
HREQL
Host Request Low - This bit can be set by the
host when KREQL is “0”. If the request is not
granted, this bit is read back as a “0” and the
request must be tried again.
KREQH
Keyboard Request High - This bit can be set
by the 8051 when HREQH is “0” If the request
is not granted, this bit is read back as a “0”
and the request must be tried again. Note:
After regaining control of the CMOS, the 8051
must re-write the RTC High Address Register
before accessing the RTC Data Register. This
bit selects access to the CMOS RAM
Addresses 80-FF.
RTC DATA REGISTER (HIGH AND LOW)
Host
N/A
8051
0x7FF9 & 0x7FF7
Power
VCC1
Default
0x00 & 0x00
The low register is used to access the first bank of
128 bytes, in CMOS RAM the high register is used
to access the second bank of 128 registers. This
register is used to read or write the selected
CMOS register when KREQ=1.
294
32kHz CLOCK INPUT
The FDC37N972 uses the XOSEL pin to select
either a 32.768kHz input clock or a 32.768kHz
crystal to drive the Real Time Clock Interface
(TABLE 2 - PIN FUNCTION DESCRIPTION).
When XOSEL = ‘0’, the RTC uses a 32.768kHz
crystal connected between the XTAL1 and
XTAL2 pins. When XOSEL = ‘1’, the RTC is
driven by a 32.768kHz single-ended clock
source connected to the XTAL2 pin.
NOTE: ICC0 ≥ 10µA for time-keeping operations
under VCC0 using a single-ended clock source.
ICC1 = 30µA under VCC1 using a single-ended
clock source.
POWER MANAGEMENT
The RTC and CMOS RAM utilize VCC0 power
plane (See FIGURE 4 - VCC2 POWER-UP
TIMING and FIGURE 5 - VCC1_PWRGD
TIMING)
The VCC1 POR does not affect the clock,
calendar, or RAM functions. When VCC1 POR
is active the following occurs:
Periodic Interrupt Enable (PIE) is cleared to “0”.
Alarm Interrupt Enable (AIE) bit is cleared to “0”.
Update Ended Interrupt Enable (UIE) bit is
cleared to “0”.
Update Ended Interrupt Flag (UF) bit is cleared
to “0”.
Interrupt Request status Flag (IRQF) bit is
cleared to “0”.
Periodic Interrupt Flag (PIF) is cleared to “0”.
The RTC and CMOS registers are not
accessible.
Alarm Interrupt Flag (AF) is cleared to “0”.
nIRQ pin is in high impedance state.
295
If both the main power (VCC1) and the battery
power (VCC0) are both low at the same time
and then re-applied (ie. a new battery is
installed) the following occurs:
Initialize all registers 00-0D to a “00”
when VCC1 is applied.
The oscillator is disabled immediately.
The VRT bit is cleared to “0”.
When PWRGD = 0, all host inputs are locked
out so that the internal registers cannot be
modified by the host system. The Host lockout
condition continues for 500usec (min) to 1msec
(max) after PWRGD =1. The Host lockout
condition does not occur when either of the
following occur:
RTC Divider Selection mode is not in
normal mode in TABLE 206.
The VRT bit in Register D is a "0".
PCI CLOCK RUN SUPPORT
OVERVIEW
The FDC37N972 supports the PCI nCLKRUN
signal. nCLKRUN is used to indicate the PCI
clock status as well as to request that a stopped
clock be started.
See FIGURE 46 for an
example of a typical system implementation
using nCLKRUN.
nCLKRUN support is required because the
FDC37N972 interrupt interface relies entirely on
Serial IRQs. If an interrupt occurs while the PCI
clock is stopped, nCLKRUN must be asserted
before the interrupt can be serviced.
If the FDC37N972 Serial IRQs are disabled,
nCLKRUN support is also disabled (see
SERIRQ MODE BIT FUNCTION on page 303).
The nCLKRUN pin is an open drain output and
an input. Refer to the PCI Mobile Design Guide
Rev 1.0 for a description of the nCLKRUN
function. Using nCLKRUN If nCLKRUN is
sampled “high”, the PCI clock is stopped or
FDC37N972 must not assert nCLKRUN if it is
already driven low by the central resource; i.e.,
the PCI CLOCK GENERATOR in FIGURE 47.
The FDC37N972 will not assert nCLKRUN
under any conditions if the Serial IRQs are
disabled.
stopping. If nCLKRUN is sampled “low”, the
PCI clock is starting or started (running).
If a device in the FDC37N972 asserts or deasserts an interrupt and nCLKRUN is sampled
“high”, the FDC37N972 can request the
restoration of the clock by asserting the
nCLKRUN signal asynchronously (TABLE 208).
The FDC37N972 holds nCLKRUN low until it
detects two rising edges of the clock. After the
second clock edge, the FDC37N972 must
disable the open drain driver (FIGURE 47). The
SIRQ_EN
0
1
The FDC37N972 must not assert nCLKRUN
unless the line has been deasserted for two
successive clocks; i.e., before the clock was
stopped (FIGURE 47).
TABLE 208 - FDC37N972 nCLKRUN FUNCTION
INTERNAL INTERRUPT
REQUEST
nCLKRUN
ACTION
X
X
None
NO CHANGE
X
None
CHANGE1
0
None
1
Assert nCLKRUN
NOTE1 “Change” means either-edge change on any or all parallel IRQs routed to the Serial IRQ
block. The “change” detection logic must run asynchronously to the PCI Clock and regardless of the
Serial IRQ mode; i.e., “continuous” or “quiet”.
MASTER
TARGET
PCICLK
PCI CLOCK
GENERATOR
nCLKRUN
(Central Resource)
FDC37N972
FIGURE 46 - nCLKRUN SYSTEM IMPLEMENTATION EXAMPLE
296
nCLKRUN
DRIVEN BY
FDC37N972
SIRQ_EN
1,2
ANY IRQ CHANGE
FDC37N972 STOPS
DRIVING nCLKRUN
nCLKRUN
PCI_CLK
2 CLKS
MIN.
FIGURE 47 - CLOCK START ILLUSTRATION
NOTE1 The signal “ANY IRQ CHANGE” is the same as “CHANGE” in TABLE 208.
NOTE2 The FDC37N972 must continually monitor the state of nCLKRUN to maintain the PCI Clock
until an active “ANY IRQ CHANGE” condition has been transferred to the host in a Serial IRQ cycle.
For example, if “ANY IRQ CHANGE” is asserted before nCLKRUN is de-asserted (not shown in
FIGURE 46), the FDC37N972 must assert nCLKRUN as needed until the Serial IRQ cycle has
completed.
297
SERIAL INTERRUPTS
Timing Diagrams For IRQSER Cycle
MSIO will support the serial interrupt scheme,
which is adopted by several companies, to
transmit interrupt information to the system.
The serial interrupt scheme adheres to the
Serial IRQ Specification for PCI Systems
Version 6.0.
PCICLK = 33 MHz_IN pin
IRQSER = SIRQ pin
START FRAME
SL
or
H
H
PCICLK
IRQSER
Start Frame timing with source sampled a low
pulse on IRQ1.
R
IRQ0 FRAME
T
S
R
IRQ1 FRAME
T
S
R
IRQ2 FRAME
T
S
R
START1
Drive Source
Host Controller
IRQ1
IRQ1
None
None
FIGURE 48 - SERIAL INTERRUPTS WAVEFORM "START FRAME"
H=Host Control
SL=Slave Control
R=Recovery
T=Turn-around
S=Sample
Start Frame pulse can be 4-8 clocks wide.
Stop Frame Timing with Host using 17 IRQSER sampling period
IRQ14
FRAME
S R T
IRQ15
FRAME
S R T
IOCHCK#
FRAME
S R T
NEXT CYCLE
STOP FRAME
I2
H
R
T
PCICLK
STOP 1
IRQSER
Driver
None
IRQ15
None
START3
Host Controller
FIGURE 49 - SERIAL INTERRUPT WAVEFORM "STOP FRAME"
H=Host Control
R=Recovery
T=Turn-around
S=Sample
I= Idle
Stop pulse is two clocks wide for Quiet mode, three clocks wide for Continuous mode.
There may be none, one or more Idle states during the Stop Frame.
298
T
The next IRQSER cycle’s Start Frame pulse may or may not start immediately after the turn-around
clock of the Stop Frame.
SERIRQ MODE BIT FUNCTION
In the FDC37N972, the SERIRQ_EN (CR25.2) is used to enable the Serial IRQ interface (TABLE
209). The SERIRQ_EN bit is also used to enable PCI Clock Run support (see Section PCI CLOCK
RUN SUPPORTon page 300).
TABLE 209 - SERIRQ_EN CONFIGURATION CONTROL
CR25 BIT[2]
NAME
DESCRIPTION
0
SERIRQ_EN
Serial IRQ Disabled
1
Serial IRQ Enabled (Default)
IRQSER CYCLE CONTROL
There are two modes of operation for the
IRQSER Start Frame.
QUIET (ACTIVE) MODE
Any device may initiate a Start Frame by driving
the IRQSER low for one clock, while the
IRQSER is Idle. After driving low for one clock
the IRQSER must immediately be tri-stated
without at any time driving high. A Start Frame
may not be initiated while the IRQSER is active.
The IRQSER is Idle between Stop and Start
Frames. The IRQSER is active between Start
and Stop Frames. This mode of operation
allows the IRQSER to be Idle when there are no
IRQ/Data transitions which should be most of
the time.
Once a Start Frame has been initiated the host
controller will take over driving the IRQSER low
in the next clock and will continue driving the
IRQSER low for a programmable period of three
to seven clocks. This makes a total low pulse
width of four to eight clocks. Finally, the host
controller will drive the IRQSER back high for
one clock then tri-state.
299
Any IRQSER Device (i.e., The FDC37N972)
which detects any transition on an IRQ/Data line
for which it is responsible must initiate a Start
Frame in order to update the host controller
unless the IRQSER is already in an IRQSER
Cycle and the IRQ/Data transition can be
delivered in that IRQSER Cycle.
CONTINUOUS (IDLE) MODE
Only the Host controller can initiate a Start
Frame to update IRQ/Data line information. All
other IRQSER agents become passive and may
not initiate a Start Frame. IRQSER will be driven
low for four to eight clocks by host controller.
This mode has two functions. It can be used to
stop or idle the IRQSER or the host controller
can operate IRQSER in a continuous mode by
initiating a Start Frame at the end of every Stop
Frame.
An IRQSER mode transition can only occur
during the Stop Frame. Upon reset, IRQSER
bus is defaulted to continuous mode, therefore
only the host controller can initiate the first Start
Frame. Slaves must continuously sample the
Stop Frames pulse width to determine the next
IRQSER Cycle’s mode.
IRQSER DATA FRAME
Once a Start Frame has been initiated, the
FDC37N972 will watch for the rising edge of the
Start Pulse and start counting IRQ/Data Frames
from there. Each IRQ/Data Frame is three
clocks: Sample phase, Recovery phase, and
Turn-around phase. During the sample phase,
the FDC37N972 must drive the IRQSER (SIRQ
pin) low, if and only if, its last detected IRQ/Data
value was low. If its detected IRQ/Data value is
high, IRQSER must be left tri-stated. During the
recovery phase the FDC37N972 must drive the
SERIRQ high, if and only if, it had driven the
IRQSER low during the previous sample phase.
300
During the turn-around phase the FDC37N972
must tri-state the SERIRQ. The FDC37N972
drives the IRQSER line low at the appropriate
sample point if its associated IRQ/Data line is
low, regardless of which device initiated the start
frame.
The Sample phase for each IRQ/Data follows
the low to high transition of the Start Frame
pulse by a number of clocks equal to the
IRQ/Data Frame times three, minus one e.g.
The IRQ5 Sample clock is the sixth IRQ/Data
Frame, then the sample phase is {(6 x 3) - 1 =
17} the seventeenth clock after the rising edge
of the Start Pulse.
IRQSER PERIOD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TABLE 210 – IRQSER SAMPLING PERIODS
SIGNAL SAMPLED
# OF CLOCKS PAST START
Not Used
2
IRQ1
5
nSMI/IRQ2
8
IRQ3
11
IRQ4
14
IRQ5
17
IRQ6
20
IRQ7
23
IRQ8
26
IRQ9
29
IRQ10
32
IRQ11
35
IRQ12
38
IRQ13
41
IRQ14
44
IRQ15
47
The SIRQ data frame will now support IRQ2
from a logical device; previously IRQSER Period
3 was reserved for use by the System
Management Interrupt (nSMI). When using
Period 3 for IRQ2 the user should mask off the
FDC37N972 ’s SMI via the ESMI Mask Register.
Likewise, when using Period 3 for nSMI, the
user should not configure any logical devices as
using IRQ2.
IRQSER Period 14 is used to transfer IRQ13.
Logical devices 0 (FDC), 3 (Par Port), 4 (Ser
Port 1), 5 (Ser Port 2), 6 (RTC), and 7 (KBD)
will have IRQ13 as a choice for their primary
interrupt.
STOP CYCLE CONTROL
Once all IRQ/Data Frames have completed the
host controller will terminate IRQSER activity by
initiating a Stop Frame. Only the host controller
can initiate the Stop Frame. A Stop Frame is
indicated when the IRQSER is low for two or
three clocks. If the Stop Frame’s low time is two
301
clocks then the next IRQSER cycle’s sampled
mode is the Quiet mode; and any IRQSER
device may initiate a Start Frame in the second
clock or more after the rising edge of the Stop
Frame’s pulse. If the Stop Frame’s low time is
three clocks, then the next IRQSER cycle’s
sampled mode is the continuous mode, and
only the host controller may initiate a Start
Frame in the second clock or more after the
rising edge of the Stop Frame’s pulse.
LATENCY
Latency for IRQ/Data updates over the IRQSER
bus in bridge-less systems with the minimum
IRQ/Data Frames of seventeen will range up to
96 clocks (3.84µS with a 25 MHz PCI Bus or
2.88µs with a 33 MHz PCI Bus). If one or more
PCI to PCI Bridge is added to a system, the
latency for IRQ/Data updates from the
secondary or tertiary buses will be a few clocks
longer
for
synchronous
buses,
and
approximately double for asynchronous buses.
EOI/ISR READ LATENCY
Any serialized IRQ scheme has a potential
implementation issue related to IRQ latency.
IRQ latency could cause an EOI or ISR Read to
precede an IRQ transition that it should have
followed. This could cause a system fault. The
host interrupt controller is responsible for
ensuring that these latency issues are mitigated.
The recommended solution is to delay EOIs and
ISR Reads to the interrupt controller by the
same amount as the IRQSER Cycle latency in
order to ensure that these events do not occur
out of order.
AC/DC SPECIFICATION ISSUE
All IRQSER agents must drive/sample IRQSER
synchronously related to the rising edge of the
PCI bus clock. IRQSER (SIRQ) pin uses the
electrical specification of the PCI bus. Electrical
parameters will follow the PCI specification
section 4, sustained tri-state.
RESET AND INITIALIZATION
The IRQSER bus uses nPCIRST as its reset
signal (nPCIRST is equivalent to using
nRESET_OUT) and follows the PCI bus reset
mechanism. The IRQSER pin is tri-stated by all
agents while nPCIRST is active. With reset,
IRQSER slaves and bridges are put into the
(continuous) Idle mode. The host controller is
responsible for starting the initial IRQSER cycle
to collect system’s IRQ/Data default values. The
system then follows with the Continuous/Quiet
mode protocol (Stop Frame pulse width) for
subsequent IRQSER cycles. It is the host
controller’s responsibility to provide the default
values to the 8259’s and other system logic
before the first IRQSER cycle is
302
performed.
For IRQSER system suspend,
insertion, or removal application, the host
controller
should
be
programmed
into
Continuous (IDLE) mode first. This is to
guarantee IRQSER bus is in Idle state before
the system configuration changes.
XNOR-CHAIN TEST MODE
An XNOR-Chain test structure is in to the
FDC37N972 to allow users to confirm that all
pins are in contact with the motherboard during
assembly and test operations (FIGURE 50).
The XNOR-Chain test structure must be
activated to perform these tests. When the
XNOR-Chain is activated, the FDC37N972 pin
functions are disconnected from the device pins,
which all become input pins except for one
output pin at the end of XNOR-Chain.
The tests that are performed when the XNORChain test structure is activated require the
board-level test hardware to control the device
pins and observe the results at the XNOR-Chain
output pin.
The XNOR-Chain test mode is activated and
latched by:
nIOW = nIOR = nMEMWR = nMEMRD = “0”
AND
XOSEL = VCC1_PWRGD = PWRGD = “1”
The XNOR-Chain test mode is deactivated by
VCC1_POR. All pins except for nRESET_OUT,
XOSEL, XTAL1, XTAL2, and VCC1_PWRGD
are included as inputs to the XNOR-Chain test
structure.
The XNOR-Chain output pin is
nRESET_OUT.
I/O#1
I/O#2
I/O#3
I/O#n
XNor
Out
FIGURE 50 - XNOR-CHAIN TEST STRUCTURE
The MODE pin is a hardware configuration pin.
The MODE pin sets the Configuration Port’s
default base address.
Note:
All I/O addresses are qualified with AEN.
FDC37N972 CONFIGURATION
OVERVIEW
The Configuration of the FDC37N972 is very
flexible and is based on the configuration
architecture implemented in typical Plug-andPlay components.
CONFIGURATION REGISTERS
CONFIGURATION REGISTER ACCESS
The FDC37N972 is designed for motherboard
designs in which the resources required by
their components are known. With its flexible
resource
allocation
architecture,
the
FDC37N972 allows the BIOS to assign
resources at POST.
PRIMARY
DECODER
CONFIGURATION
ADDRESS
The logical devices are configured through two
Configuration Access Ports (INDEX and DATA).
The BIOS uses these ports to initialize the logical
devices at POST (TABLE 211).
CONFIGURATION ELEMENTS
PRIMARY
DECODER
CONFIGURATION
The MODE pin is a hardware configuration pin
that sets the default Configuration Access Port
base address at power-up. The Configuration
Ports base address can also be changed using
the configuration ports base address register (see
Configuration
Registers
BASE
ADDRESS
REGISTERS (VCC2) on page 308).
ADDRESS
The logical devices are configured through two
Configuration I/O Ports (INDEX and DATA).
The BIOS uses these Configuration Ports to
initialize the logical devices at POST.
NOTE: All I/O addresses are qualified with AEN.
303
TABLE 211 - FDC37N972 CONFIGURATION ACCESS PORTS
MODE PIN = 1
MODE PIN = 0
(10K PULL-UP
(10K PULL-DOWN
RESISTOR OR TIE
RESISTOR OR TIE TO
TO VCC1)
TYPE
GND)
PORT NAME
CONFIG PORT
0x03F0
0x0370
Write
(Note 1)
(Note 1)
(NOWS ISA I/O)
INDEX PORT
0x03F0
0x0370
Read/Write
(Note 1)
(Note 1)
(NOWS ISA I/O)
DATA PORT
INDEX PORT + 1
Read/Write
(Note 1)
(NOWS ISA I/O)
The INDEX and DATA ports are effective only
when the chip is in the Configuration State.
Note 1: This address can be changed by
configuration registers 26h and 27h.
Entering the Configuration State
The device enters the Configuration State when
the following Config Key is successfully written
to the CONFIG PORT.
Config Key = < 0x55>
Exiting the Configuration State
The device exits the Configuration State when
the following Config Key is successfully written
to the CONFIG PORT address.
CONFIGURATION
REGISTERS
ADDRESS REGISTERS (VCC2)
BASE
The FDC37N972 configuration ports base
address is relocatable beyond the two
addressing options provided by the MODE pin.
Registers CR26 and CR27 enable the
relocatable configuration ports base address
function. CR26 is the configuration ports base
address least significant byte; CR27 is the most
significant byte (TABLE 212).
The configuration ports base address is
relocatable on even-byte boundaries; i.e., A0 =
“0”. Valid configuration ports base address
values are 0x0000 – 0x0FFE.
Config Key = < 0xAA>
READ ACCESING CONFIGURATON PORT
The Configuration Port reads back a float
condition when not in the Configuration State.
The Configuration Port reads back 0x00, after
the Configuration Key 0x55 has been written to
the Configuration Port, but prior any further
writes to the Configuration Port. After the
Configuration Index Register has been written to
at least once (in the Configuration State,) then
the last value written to the Configuration Index
Register (via the Configuration Port) can be read
back.
304
At power-up, the configuration ports base
address is determined by the MODE pin. To
relocate the configuration ports base address
after power-up, first write the lower address byte
(LSB) of the new base address to CR26 and
then write the upper address bits to CR27.
NOTE: writing CR27 changes the configuration
ports base address.
The ability to relocate the configuration ports
base address can prevent address conflicts,
particularly when tape drives are used.
TABLE 212 - CONFIGURATION PORT ADDRESS REGISTERS
DESCRIPTION
SOFT
RESET,
D7 D6 D5 D4
D3
D2
VCC1
HARD
POR &
RESET
VCC0
REGISTER
& VCC2
POR
NAME
POR1
INDEX TYPE
GLOBAL CONFIGURATION REGISTERS
A3
A2
Configuration A7 A6 A5 A4
0x262 R/W MODE =
Port Base
0: 0xF0
Address Byte
MODE =
0 (LSB)
1: 0x70
A11 A10
Configuration “0” “0” “0” “0”
0x273 R/W MODE =
Port Base
0: 0x03
Address Byte
MODE =
1 (MSB)
1: 0x03
NOTE1 The MODE pin determines the
configuration port base address following Hard
Reset and VCC2 POR.
NOTE2 The configuration ports base address is
relocatable on even-byte boundaries; i.e., A0 =
“0”.
NOTE3 Writing
CR27
changes
configuration ports base address.
D1
D0
A1
“0”
A9
A8
The FDC37N972 Configuration register map is
shown below in TABLE 213.
CONFIGURATION
CONDITIONS
REGISTER
RESET
HARD RESET = VCC2 POR or RESET_OUT
pin asserted.
the
SOFT RESET = Configuration Control Register
Bit0 set to a one by host.
305
TABLE 213 - FDC37N972 CONFIGURATION REGISTER MAP
HARD
SOFT
CONFIGURATION REGISTER
INDEX
TYPE
RESET
RESET
NAME
GLOBAL CONFIGURATION REGISTERS
0x02
W
0x00
0x00
Config Control
0x03
RESERVED
0x07
R/W
0x00
0x00
Logical Device Number
0x17
RESERVED
0x20
R
0x0A
0x0A
FDC37N971
0x0B
0x0B
FDC37N972
0x21
R
0x00
0x00
Device Rev - hard wired
0x22
R/W
0x00
n/a
Power Control
0x23
R/W
0x00
n/a
Power Mgmt
0x24
R/W
0x04
n/a
OSC
0x25
R/W
0x04
n/a
DeviceMode
0x26
R/W
See above
Configuration Port Base Address (LSB)
0x27
R/W
See above
Configuration Port Base Address (MSB)
0x28 –
0x00
0x00
RESERVED (Test Mode Registers)
0x2F
LOGICAL DEVICE 0 CONFIGURATION REGISTERS (FDC)
0x30
R/W
0x00
0x00
Activate
0x60,
R/W
0x03,
0x03,
Primary Base I/O Address
0x61
0xF0
0xF0
0x70
R/W
0x06
0x06
Primary Interrupt Select
0x74
R/W
0x02
0x02
DMA channel Select
0xF0
R/W
0x0E
n/a
FDD Mode Register
0xF1
R/W
0x00
n/a
FDD Option Register
0xF2
R/W
0xFF
n/a
FDD Type Register
0xF4
R/W
0x00
n/a
FDD0
0xF5
R/W
0x00
n/a
FDD1
LOGICAL DEVICE 1 CONFIGURATION REGISTERS (PM1)
0x30
R/W
0x00
0x00
Activate
0x60,
R/W
0x00,
0x00,
Primary Base I/O Address
0x61
0x00
0x00
LOGICAL DEVICE 2 CONFIGURATION REGISTERS (RESERVED)
LOGICAL DEVICE 3 CONFIGURATION REGISTERS (PARALLEL PORT)
0x30
R/W
0x00
0x00
Activate
0x60,
R/W
0x00,
0x00,
Primary Base I/O Address
0x61
0x00
0x00
0x70
R/W
0x00
0x00
Primary Interrupt Select
0x74
R/W
0x04
0x04
DMA channel Select
0xF0
R/W
0x3C
n/a
Parallel Port Mode Register
0xF1
R/W
0x00
n/a
Parallel Port CnfgB shadow Register
306
HARD
SOFT
CONFIGURATION REGISTER
INDEX
TYPE
RESET
RESET
NAME
LOGICAL DEVICE 4 CONFIGURATION REGISTERS (SERIAL PORT 1)
0x30
R/W
0x00
0x00
Activate
0x60,
R/W
0x00,
0x00,
UART Register Base I/O Address
0x61
0x00
0x00
0x70
R/W
0x00
0x00
Primary Interrupt Select
0xF0
R/W
0x00
n/a
Serial Port 1 Mode Register
LOGICAL DEVICE 5 CONFIGURATION REGISTERS (INFRARED)
0x30
R/W
0x00
0x00
Activate
0x60,
R/W
0x00,
0x00,
Primary Base I/O Address
0x61
0x00
0x00
0x62, 0x63 R/W
0x00, 0x00 0x00, 0x00 SCE Register Base I/O Address
0x70
R/W
0x00
0x00
Primary Interrupt Select
0x74
R/W
0x04
0x04
IRCC 2.0 DMA Channel Select
0xF0
R/W
0x00
n/a
Mode Register
0xF1
R/W
0x02
n/a
IR Options Register
0xF2
R/W
0x03
n/a
IR Half Duplex Timeout
0xF7
R/W
0x00
0x00
Software Select A
0xF8
R/W
0x00
0x00
Software Select B
LOGICAL DEVICE 7 CONFIGURATION REGISTERS (RTC)
0x30
R/W
0x00
0x00
Activate
0x60,
R/W
0x00,
0x00,
RTC Bank 0 Primary Base Address
0x61
0x70
0x70
0x62, 0x63 R/W
0x00, 0x74 0x00, 0x74 RTC Bank 1 Primary Base Address
0x70
R/W
0x00
0x00
Primary Interrupt Select
0xF0
R/W
0x00
n/a
Real Time Clock Mode Register
00xF1
R
Shadowed RTC/CMOS Bank 0 Index
Register
LOGICAL DEVICE 7 CONFIGURATION REGISTERS (KBD)
0x30
R/W
0x00
0x00
Activate
0x70
R/W
0x00
0x00
Primary Interrupt Select
0x72
R/W
0x00
0x00
Second Interrupt Select
0xF0
R/W
0x00
0x00
KRST_GA20
LOGICAL DEVICE 8 CONFIGURATION REGISTERS (EC)
0x30
R/W
0x00
0x00
Activate
0x60, 0x61 R/W
0x00, 0x62 0x00, 0x62 ECI Register Base I/O Address
LOGICAL DEVICE 9 CONFIGURATION REGISTERS (MAILBOX)
0x30
R/W
0x00
0x00
Activate
0x60, 0x61 R/W
0x00, 0x00 0x00, 0x00 Mailbox Register Base I/O Address
307
CHIP LEVEL (GLOBAL) CONTROL/CONFIGURATION REGISTERS [0X00-0X2F]
The chip-level (global) registers lie in the address range [0x00-0x2F].
The INDEX PORT is used to select a configuration register in the chip. The DATA PORT is then used
to access the selected register. These registers are accessible only in the Configuration State.
TABLE 214 - GLOBAL CONFIGURATION REGISTERS
REGISTER
ADDRESS
DESCRIPTION
Chip (Global) Control Registers
0x00 Reserved, Writes are ignored, reads
0x01
return 0.
Config Control
0x02 W
The hardware automatically clears this bit
after the write; there is no need for
software to clear the bits.
Bit [0] = 1: Soft Reset; Refer to TABLE
213 for the soft reset value for each
register.
Card Level
0x03W
Reserved - Writes are ignored, reads
Reserved
return 0.
0x04 - 0x06
Reserved - Writes are ignored, reads
return 0.
Logical Device #
0x07 R/W
A write to this register selects the current
logical device. This allows access to the
control and configuration registers for
each logical device. Note: The Activate
command operates only on the selected
logical device.
Card Level
0x08 - 0x1F
Reserved - Writes are ignored, reads
Reserved
return 0.
Chip-Level, SMSC Defined
Device ID
0x20 R
A read-only register which provides
Hard Wired
device identification.
Device Rev
Hard Wired
0x21 R
Bit[7-0]
FDC37N971 = 0x0A
FDC37N972 = 0x0B
A read-only register which provides
device revision information.
Bits[7-0] = 0x00 when read
308
STATE
C
C
C
C
REGISTER
PowerControl
ADDRESS
0x22 R/W
Power Mgmt
0x23 R/W
OSC
0x24 R/W
DESCRIPTION
Bit[0] FDC Power
Bit[1:2] Reserved (read as 0)
Bit[3] Parallel Port Power
Bit[4] Serial Port 1 Power
Bit[5] Serial Port 2 Power
Bit[6:7] Reserved (read as 0)
=0 Power off or disabled
=1 Power on or Enabled
Bit[0] FDC
Bit[1:2] Reserved (read as 0)
Bit[3] Parallel Port
Bit[4] Serial Port 1
Bit[5] Serial Port 2
Bit[6:7] Reserved (read as 0)
=0 Power off or disabled
=1 Power on or Enabled
Bit[1:0] Reserved, set to “0”
Bit[3:2] OSC
=01 OSC is on, BRG clock is on when
PWRGD is active, OSC is off and BRG
Clock is disabled (default)
=10 Same as above (01) case
=00 OSC is on, BRG Clock Enabled
=11 OSC is off, BRG Clock is disabled
Bit[6:4] CLK_OUT Select
=[0,0,0] CLK_OUT = 1.8432 MHz
=[0,0,1] CLK_OUT = 14.318 MHz
=[0,1,0] CLK_OUT = 16 MHz
=[0,1,1] CLK_OUT = 24 MHz
=[1,0,0] CLK_OUT = 48 MHz
=[1,0,1] Reserved
=[1,1,X] Reserved
Bit[7] nIRQ8 Polarity
=0 nIRQ8 is active high
=1 nIRQ8 is active low
Note: This polarity bit not only affects the
nIRQ8 pin, but is also reflected in the
Serial IRQ sample phase for the IRQ8
Frame for the Serial IRQ Bus.
309
STATE
C
C
C
REGISTER
Device Mode
ADDRESS
0x25 R/W
Chip Level
Vendor Defined
Test Registers
0x26
TEST 0
0x2C
TEST 1
0x2D R/W
TEST 2
0x2E R/W
TEST 3
0x2F R/W
0x27-0x2B
DESCRIPTION
Bit [1-0] Flash Timing
This register is used to program the width
of Flash Read (nFRD) and Flash Write
(nFWR) signals during Host Flash
accesses.
= 0,0 : nFRD/nFWR width = 3 sclks
= 0,1 : width = 2.5 sclks
= 1,0 : width = 2 sclks
= 1,1 : Reserved, do not use.
Bit[2] SerIRQ Mode
= 0 : Serial IRQ Disabled.
= 1 : Serial IRQ Enabled
(Default).
Bit [4:3] Parallel Port FDC
= [0:0] Normal
= [0:1] PPFD1 Mode
= [1:0] PPFD2 Mode
= [1:1] Reserved
Bit [7:5] Reserved - writes ignored, reads
return “0”.
Reserved - Writes are ignored, reads
return 0.
SMSC Test Mode Registers, Reserved for
SMSC.
Test Modes - Reserved for SMSC. Users
should not write to this register, may
produce undesired results.
Test Modes : Reserved for SMSC. Users
should not write to this register; may
produce undesired results.
Test Modes - Reserved for SMSC. Users
should not write to this register; may
produce undesired results.
Test Modes - Reserved for SMSC. Users
should not write to this register; may
produce undesired results.
310
STATE
C
C
C
LOGICAL DEVICE CONFIGURATION/CONTROL REGISTERS [0X30-0XFF]
Used to access the registers that are assigned
to each logical unit. This chip supports six
logical units and has six sets of logical device
registers. The logical devices are Floppy,
Parallel, Serial 1 and IRCC 2.0
Device and is selected with the Logical Device #
Register (0x07).
The INDEX PORT is used to select a specific
logical device register. These registers are then
accessed through the DATA PORT.
(UART),
Real Time Clock, and Keyboard
Controller. A separate set (bank) of control and
configuration registers exists for each Logical
The Logical Device registers are accessible only
when the device is in the Configuration State
The logical register addresses are listed in
TABLE 215.
TABLE 215 - LOGICAL DEVICE CONFIGURATION REGISTERS
LOGICAL DEVICE
REGISTER
ADDRESS
DESCRIPTION
Activate (1)
(0x30)
Bits[7:1] Reserved, set to “0”.
Bit[0]
=1
Activates the logical device
currently selected through the Logical
Device # register.
=0
Logical device currently selected
is inactive.
Bank Activation
(0x30)
Bits[7:2] Reserved, set to “0”.
FOR RTC ONLY
FOR RTC
Bit[1] Activates Bank 1
ONLY
Bit[0] Activates Bank 0
Bit[1:0]
=1
Activates the logical device
currently selected through the Logical
Device # register.
=0
Logical device currently selected
is inactive.
Logical Device Control
(0x31-0x37)
Reserved - Writes are ignored, reads
return “0”.
Logical Device Control
(0x38-0x3f)
Vendor Defined – Reserved - Writes are
ignored, reads return “0”.
Memory Base Address
(0x40-0x5F)
Reserved - Writes are ignored, reads
return “0”.
I/O Base Address
(0x60-0x6F)
All logical devices contain 0x60, 0x61.
0x60 =
Unused registers will ignore writes and
addr[15:8]
return “0” when read.
(see Table 216)
0x61=
addr[7:0]
311
STATE
C
C
C
C
C
LOGICAL DEVICE
REGISTER
Interrupt Select
ADDRESS
(0x70,072)
(0x71,0x73)
DMA Channel Select
(0x74)
(0x75)
32-Bit Memory Space
Configuration
(0x76-0xA8)
Logical Device
(0xA9-0xDF)
Logical Device
Configuration
(0xE0-0xFE)
Reserved
0xFF
DESCRIPTION
0x70 is implemented for each logical
device. Refer to Interrupt Configuration
Register description. Only the KYBD
controller uses Interrupt Select register
0x72. Unused register (0x72) will ignore
writes and return “0” when read. Interrupts
default to edge high (ISA compatible).
Reserved - not implemented. These
register locations ignore writes and return
“0” when read.
Only 0x74 is implemented for FDC , and
Parallel port. Refer TABLE 218 - DMA
CHANNEL SELECT CONFIGURATION
REGISTERS.
Reserved - not implemented and ignores
writes and returns “0” when read.
Reserved - not implemented. These
register locations ignore writes and return
“0” when read.
Reserved - not implemented. These
register locations ignore writes and return
“0” when read.
Reserved - Vendor Defined (see SMSC
defined Logical Device Configuration
Registers).
Reserved
STATE
C
C
C
C
C
Note1: A logical device will be active and powered up according to the following equation:DEVICE
ON (ACTIVE) = (Activate Bit SET AND Pwr/Control Bit SET) AND (8051 Disable Bit SET)
The Logical device's Activate Bit and its
Pwr/Control Bit are linked such that setting or
clearing one sets or clears the other. Three bits
in the 8051’s Disable Register (see Keyboard
spec), bits D7, D6 and D4 are capable of
overriding the Activate and PWR/Control bit
settings for logical devices 3, 4 and 0
respectivelely. Thus clearing bit D7 of the
Disable register will disable the FDC regardless
312
of the FDC’s Activate and PWR/Control bits.
When D7 of the Disable register is set, the
FDC’s Activate and PWR/Control bits will
determine the on/off state of the FDC. If the I/O
Base Addr of the logical device is not within the
Base I/O range as shown in the Logical Device
I/O map, then read or write is not valid and is
ignored.
I/O BASE ADDRESS CONFIGURATION REGISTER DESCRIPTION
LOGICAL
DEVICE
NUMBER
0x00
0x01
0x02
0x03
0x04
0x05
TABLE 216 - LOGICAL DEVICE, BASE I/O ADDRESSES
BASE I/O
RANGE
FIXED BASE
LOGICAL
REGISTER
(NOTE 1)
OFFSETS
DEVICE
INDEX
FDC
0x60,0x61
[0x100:0x0FF8]
+0 : SRA
+1 : SRB
+2 : DOR
ON 8 BYTE
+3 : TSR
BOUNDARIES
+4 : MSR/DSR
+5 : FIFO
+7 : DIR/CCR
Reserved
Reserved
+0 : Data | ecpAfifo
Parallel
0x60,0x61
[0x100:0x0FFC]
+1 : Status
Port
ON 4 BYTE
+2 : Control
BOUNDARIES
+3 : EPP Address *
(EPP Not supported)
+4 : EPP Data 0 *
or
+5 : EPP Data 1 *
[0x100:0x0FF8]
+6 : EPP Data 2 *
ON 8 BYTE
+7 : EPP Data 3 *
BOUNDARIES
+400h : cfifo | ecpDfifo |
(all modes supported,
tfifo | cnfgA
EPP is only available
+401h : cnfgB
when the base
+402h : ecr
address is on an 8byte boundary)
Serial Port 1 0x60,0x61
[0x100:0x0FF8]
+0 : RB/TB | LSB div
+1 : IER | MSB div
ON 8 BYTE
+2 : IIR/FCR
BOUNDARIES
+3 : LCR
+4 : MCR
+5 : LSR
+6 : MSR
+7 : SCR
IRCC 2.0
0x60,0x61
[0x100:0x0FF8]
+0 : RB/TB | LSB div
(UART)
+1 : IER | MSB div
ON 8 BYTE
+2 : IIR/FCR
BOUNDARIES
+3 : LCR
+4 : MCR
+5 : LSR
+6 : MSR
+7 : SCR
313
LOGICAL
DEVICE
NUMBER
0x05
LOGICAL
DEVICE
IRCC 2.0
(IR-SCE)
REGISTER
INDEX
0x62, 0x63
BASE I/O
RANGE
(NOTE 1)
[0x100:0x0FF8]
ON 8 BYTE
BOUNDARIES
0x06
RTC
0x60, 0x61
[0x00:0x0FFE]
0x62, 0x63
[0x00:0x0FFD]
0x07
KYBD
N/a
Not Relocatable
Fixed Base Address
0x08
ECI
0x60, 0x612
0x09
Mailbox
Register
0x60, 0x61
[0x0000:0xFFA]
Relocatable
[0x0000:0x0FFE]
FIXED BASE
OFFSETS
+0 : Register Block N,
address 0
+1 : Register Block N,
address 1
+2 : Register Block N,
address 2
+3 : Register Block N,
address 3
+4 : Register Block N,
address 4
+5 : Register Block N,
address 5
+6 : Register Block N,
address 6
+7: SCE Master Control
Reg.
Bank 0 Base address
+0 : Address Register
+1 : Data Register *
Bank 1 Base address
+0 : Address Register
+2 : Data Register *
0x60 : Data Register
0x64 : Command/Status
Reg.
+0 : Data Register3
+4 : COMMAND REGISTER
+0 : Index
+1 : Data
Note 1: This chip uses all ISA address bits to decode the base address of each of its logical
devices.
Note 2: Please refer to TABLE 49 for further description.
Note 3: Please refer to TABLE 50 for further description.
Note*: When these registers are accessed the nNOWS line is not asserted. All other registers in
this table assert the nNOWS signal when accessed.
314
INTERRUPT SELECT CONFIGURATION REGISTER DESCRIPTION
Name
Interrupt
request level
select 0
TABLE 217 - INTERRUPT SELECT CONFIGURATION REGISTERS
Reg Index
Definition
0x70 (R/W)
Bit [3-0] Select which interrupt level is used for
Interrupt 0.
State
C
0x00=no interrupt selected.
0x01=IRQ1
0x02=IRQ2
•
•
•
0x0E= IRQ14
0x0F= IRQ15
All pin-type interrupts are edge high (except
ECP/EPP). Each Logical Device’s interrupts selected
through this register physically select the interrupts to
be used by the FDC37N972 for either the Serial IRQ
interface or for the individual pin-type ISA interrupts if
selected. Setting the IRQ through this register for the
Parallel Port is not reflected in the Enhanced Parallel
port cnfgB register, software must set the DMA/IRQ
bits in the Parallel Port logical device config register
0xF1 (Parallel Port CnfgB shadow register).
Note : An interrupt is activated by setting the Interrupt Request Level Select 0 register to a non-zero
value AND :
1. For the FDC logical device by setting DMAEN, bit D3 of the Digital Output Register.
2. For the PP logical device by setting IRQE, bit D4 of the Control Port and in addition
3. For the PP logical device in ECP mode by clearing serviceintr, bit D2 of the ecr.
4. For the Serial Port logical device by setting any combination of bits D0-D3 in the IER and by
setting the OUT2 bit in the UART's Modem Control (MCR) Register.
5. For the RTC by (refer to the RTC section of this specification).
6. For the KYBD by (refer to the KYBD controller section of this specification).
315
DMA CHANNEL SELECT CONFIGURATION REGISTER DESCRIPTION
TABLE 218 - DMA CHANNEL SELECT CONFIGURATION REGISTERS
NAME
REG INDEX
DEFINITION
STATE
C
DMA Channel
0x74 (R/W)
Bit [2:0] Select the DMA Channel.
select 0
0x00=DMA0
0x01=DMA1
0x02=DMA2
0x03=DMA3
0x04-0x07= No DMA active
Note:
AND :
1.
2.
3.
A DMA channel is activated by setting the DMA Channel Select 0 register to [0x00-0x03]
For the FDC logical device by setting DMAEN, bit D3 of the Digital Output Register
For the PP logical device in ECP mode by setting dmaen, bit D3 of the ecr
For the UART2 logical device, by setting the DMA Enable bit. Refer to the IRCC 2.0 specification
available from SMSC
Note:
DMAREQ pins must tri-state if not used/selected by any Logical Device.
316
IRQ AND DMA ENABLE AND DISABLE
Interrupt is disabled when:
Any time the IRQ and/or DMA channels for a
logical device are disabled by a register in that
logical device, the IRQ and/or nDACK must be
disabled. This is in addition to the IRQ and
nDACK disabled by the Configuration Registers
(activate bit cleared or address outside of valid
range or the Interrupt Select register set to 0x00
or the DMA Channel Select register set to 0x04).
Modem Control Register (MCR) bit 2 (OUT2) When OUT2 is a logic “0”, then Logical Device
5’s interrupt is forced to a high impedance state,
i.e., disabled. This applies to all UART/IR
modes of operation.
LOGICAL DEVICE 0 (FDC)
For the following cases, the IRQ and DACK
used by the FDC are disabled (high impedance),
i.e., will not respond to the DREQ Digital Output
Register (Base+2) bit D3 (DMAEN) set to "0".
The FDC is in power down (disabled).
LOGICAL DEVICE 5 (SERIAL PORT1)
Modem Control Register (MCR) Bit D2 (OUT2) When OUT2 is a logic "0", then the serial port
interrupt is forced to a high impedance state disabled.
DRQ is disabled when:
SCE Configuration Register B bit-0 (DMA
Enable) - When the DMA Enable bit is a logic
“0”, then logical device 5’s DRQ pin is forced to
a high impedance state, i.e., disabled. When
the DMA Enable bit is set to logic “1”, then
logical device 5’s DRQ pin is active and drives
low until the device issues a DMA Request at
which point the DRQ pin drives high. This
eliminates the need for an external pull-down
resistor on the logical device 5’s DRQ pin.
PARALLEL PORT
SPP and EPP modes: Control Port (Base+2) bit
D4 (IRQE) set to "0", IRQ is disabled (high
impedance).
LOGICAL DEVICE 5 (SERIAL PORT2/USART)
ECP Mode:
(DMA) dmaEn from ecr register.
000
001
010
011
100
101
110
111
MODE
(FROM ECR REGISTER)
PRINTER
SPP
FIFO
ECP
EPP
RES
TEST
CONFIG
IRQ - See table below.
IRQ PIN
CONTROLLED BY
IRQE
IRQE
(on)
(on)
IRQE
IRQE
(on)
IRQE
317
PDREQ PIN
CONTROLLED BY
dmaEn
dmaEn
dmaEn
dmaEn
dmaEn
dmaEn
dmaEn
dmaEn
REAL TIME CLOCK (RTC)
(refer to the RTC section)
KEYBOARD CONTROLLER (KYBD)
(REFER TO THE KEYBOARD CONTROLLER SECTION)
SMSC DEFINED LOGICAL DEVICE CONFIGURATION REGISTERS
The SMSC Specific Logical Device Configuration Registers reset to their default values only on hard
resets generated by VCC2 POR or the nRESET_OUT signal. These registers are not effected by soft
resets.
318
TABLE 219 - FDC, LOGICAL DEVICE 0 [LOGICAL DEVICE NUMBER = 0X00]
NAME
REG INDEX
DEFINITION
FDD Mode
0xF0 R/W
Bit[0] Floppy Mode
Register
=0 Normal Floppy Mode (default)
=1 Enhanced Floppy Mode 2 (OS2)
Bit[1] FDC DMA Mode
Default = 0x0E
=0 Burst Mode is enabled
=1 Non-Burst Mode (default)
Bit[3:2] Interface Mode
Bit 3 – IDENT
Bit 2 – MFM
=11 AT Mode (default)
=10 (Reserved)
=01 PS/2
=00 Model 30
Bit[4] Swap Drives 0,1 Mode
=0 No swap (default)
=1 Drive and Motor Sel 0 and 1 are swapped
Bit[5] FDC Shutdown
=0 FDC37N972 FDC operates normally, FDC pins are
active (default)
=1 FDC core is shutdown, only I/O Writes to DOR,
TDR, DSR and CCR are enabled, all Floppy Disk
interface pins tri-state except for DRVDEN0, DRVDEN1,
nDS0, nDS1, nMTR0, and nMTR1.
Bit[6] FDC Output Type Control
=0 FDC Outputs are OD24 Open Drain (default)
=1 FDC Outputs are O24 push pull
Bit[7] FDC Output Control
=0 FDC Outputs active (default)
=1 FDC Outputs tri-stated
FDD Option
Register
Default = 0x00
0xF1 R/W
Bits 6 and 7 do not reflect the Parallel Port FDC pins.
Bit[1:0] Reserved, set to “0”
Bit[3-2] Density Select
=00 Normal (default)
=01 Normal (reserved for users)
=10 (forced to logic “1”)
=11 (forced to logic “0”)
Bit[5:4] Reserved
Bit[7:6] Boot Floppy
=00 FDD 0 (default)
=01 FDD 1
=10 FDD 2
=11 FDD 3
319
STATE
C
C
NAME
FDD Type
Register
REG INDEX
0xF2 R/W
Default = 0Xff
0xF3 R
0xF4 R/W
FDD0
Default = 0x00
FDD1
0xF5 R/W
DEFINITION
Bit[1:0] Floppy Drive A Type
Bit[3:2] Floppy Drive B Type
Bit[5:4] Floppy Drive C Type
Bit[7:6] Floppy Drive D Type
Reserved, read as 0 (read only)
Bit[1:0] Drive Type Select
Bit[2] Read as “0” (read only)
Bit[3:4] Data Rate Table Select
Bit[5] Read as “0” (read only)
Bit[6] Precomp Disable
Bit[7] Read as “0” (read only)
Refer to definition and default for 0xF4
DT0
0
DT1
0
DRVDEN0 (1)
DENSEL
DRVDEN1 (1)
DRATE0
0
1
1
1
0
1
DRATE1
nDENSEL
DRATE0
DRATE0
DRATE0
DRATE1
STATE
C
C
C
C
DRIVE TYPE
4/2/1 MB 3.5”
2/1 MB 5.25” FDDS
2/1.6/1 MB 3.5” (3MODE)
There are four of the following registers in the configuration data space, one for each drive.
FDD0 - 0xF4/FDD1 - 0xF5
D7
0
PTS
D6
PTS
D5
0
D4
DRT1
D3
DRT0
D2
0
D1
DT0
D0
DT1
= 0 Use Precompensation, = 1 No Precompensation
DTx = Drive Type Select
DRTx = Data Rate Table Select
DENSEL, DRATE1 and DRATE0 map onto three output pins DRVDEN0 and DRVDEN1.
320
TABLE 220 - PARALLEL PORT, LOGICAL DEVICE 3 [LOGICAL DEVICE NUMBER = 0X03]
REG
NAME
INDEX
DEFINITION
STATE
C
PP Mode Register 0xF0 R/W Bit [2:0] Parallel Port Mode
= 100 Printer Mode (default)
= 000 Standard and Bi-directional (SPP) Mode
Default = 0x3C
= 001 EPP-1.9 and SPP Mode
= 101 EPP-1.7 and SPP Mode
= 010 ECP Mode
= 011 ECP and EPP-1.9 Mode
= 111 ECP and EPP-1.7 Mode
Bit[6:3] ECP FIFO Threshold
0111b (default)
Bit[7] PP Interrupt Type
Not valid when the parallel port is in the Printer
Mode (100) or the Standard $ Bi-Directional
Mode (000)
Parallel Port
CnfgB shadow
Register
Default = 0x00
0xF1 R/W
=1 Pulsed Low, released to high-Z (665/666)
=0 IRW follows nACK when parallel port in EPP
Mode or [Printer, SPP, EPP] under ECP, TEST or
Centronics FIFO Mode.
Bit [2:0] Parallel Port DMA channel Select
= 000 h/w jumpered 8-bit DMA (default)
= 001 DMA channel 1
= 010 DMA channel 2
= 011 DMA channel 3
Bit [5:3] Parallel Port IRQ line Select
= 000 h/w jumpered IRQ (default)
= 001 IRQ 7
= 010 IRQ 9
= 011 IRQ 10
= 100 IRQ 11
= 101 IRQ 14
= 110 IRQ 15
= 111 IRQ 5
Bit [7:6] Reserved, ignores writes returns “0” on
reads.
The DMA/IRQ bits in this register are reflected in
the Enhanced Parallel Port’s read only cnfgB
register.
321
C
TABLE 221 - SERIAL PORT 1, LOGICAL DEVICE 4 [LOGICAL DEVICE NUMBER = 0X04]
REG
NAME
INDEX
DEFINITION
STATE
C
Serial Port 1
0xF0 R/W
Bit[0] MIDI Mode
Mode Register
= 0 MIDI support disabled (default)
= 1 MIDI support enabled
Bit[1] High Speed
Default = 0x00
= 0 High Speed Disabled (default)
= 1 High Speed Enabled
Bit[6:2] Reserved, set to “0”
Bit[7] Reserved
TABLE 222 - INFRARED, LOGICAL DEVICE 5 [LOGICAL DEVICE NUMBER = 0X05]
REG
NAME
INDEX
DEFINITION
STATE
C
Infrared
oxF0 R/W
Bit[0] MIDI Mode
Mode Register
=0 MIDI support disabled (default)
=1 MIDI support enabled
Bit[1] High Speed
Default = 0x00
=0 High Speed Disabled (default)
=1 High Speed Enabled
Bit[7:2] Reserved
322
NAME
IR Option Register
Default = 0x00
This register sets
the IR options and
uses the same bit
definitions as the
FDC37C93x
REG
INDEX
oxF1 R/W
DEFINITION
Bit[0] Receive Polarity
=0 Active High
=1 Active Low (default)
Bit[1] Transmit Polarity
=0 Active High (Default)
=1 Active Low
Bit[2] Duplex Select
=0 Full Duplex (Default)
=1 Half Duplex
Bit[5:3] UART/IR Mode
=000 Standard COMM (default)
=001 IrDA SIR-A
=010 ASK-IR
=011 (IrDA SIR-B)
=100 (IrDA HDLC)
=101 (IrDA 4PPM)
=110 (Consumer)
=111 (Raw IR)
Bit[7:6] IRCC 2.0 Output Mux
=00 Active Device to COM-RX/COMTX port (default)
=01 Active Device to IRRX/IRTX port
=10 Reserved-use AUX port not
mapped to pins thus both IR and COM
ports are inactive
=11 Reserved, all ports are inactive
323
STATE
C
NAME
IR Half Duplex
Timeout
Default = 0x03
REG
INDEX
0xF2 R/W
DEFINITION
Bit[7:0]
These bits set the half duplex time-out
for the IR port. This value is 0 to 10ms
in 100µs increments
STATE
=0x00 blank RX/TX during
Transmit/Receive
=0x01 blank TX/TX during Xmit/Rcv +
100µs
......
=0x64 blank RX/TX during Xmit/Rcv
+10ms
=0x65 - 0xFF : Reserved
EN_1 : Bits [5:0] of the IR Option
Configuration Register must be reconciled
with bits[5:0] of the “SCE Configuration
Register A” control register in the IRCC 2.0
Block, detailed in the IRCC 2.0
specification. Additionally bits [7:6] of the
IR Option Configuration Register must be
reconciled with bits[5:4] of the “SCE
Configuration Register B” control register in
the IRCC 2.0 Block. The last register
written should update the information in
both registers. Both sets of registers can
use common latches to store the
information.
TABLE 223 - RTC, LOGICAL DEVICE 6 [LOGICAL DEVICE NUMBER = 0X06]
REG
NAME
INDEX
DEFINITION
STATE
RTC Mode Register 0xF0 R/W
Bit[0] = 1 : Lock CMOS RAM 80-9Fh
C
Bit[1] = 1 : Lock CMOS RAM A0-BFh
Default = 0x00
Bit[2] = 1 : Lock CMOS RAM C0-DFh
Bit[3] = 1 : Lock CMOS RAM E0-FEh
Bit[7:4] Reserved, set to “0”
Once set, bit[3:0] can not be cleared by a
write; bits[3:0] are cleared on VCC2
Power On Reset, VCC2 Power Off, or
upon a Hard Reset (nRESET_OUT
asserted). Once lock bits are set, both the
Host and the 8051 are locked out of
accessing the locked locations as long as
VCC1 and VCC2 are active. When VCC2
goes to 0V, the lock bits are cleared and
the 8051 can access this RAM while
nRESET_OUT is asserted.
324
NAME
RTC CMOS Bank 0
Index Register
REG
INDEX
OxF1 R
DEFINITION
Shadowed RTC/CMOS Bank 0 Index
Register
STATE
TABLE 224 - KYBD, LOGICAL DEVICE 7 [LOGICAL DEVICE NUMBER = 0X07]
REG
NAME
INDEX
DEFINITION
STATE
Bit[0] : ENAB_P92
= 0 : Port 92 Disabled
KRST_GA20
0xf0 R/W
= 1 : Port 92 Enabled
Bit[7:0] : Reserved, set to “0”.
NOTE : Refer to the 8051 section for descriptions of these registers.
SYSTEM SHADOW REGISTERS
The FDC37N972 makes the following Control Registers readable by supplying a set of Index
Registers accessable either through Logical Device 7 when in Configuration State or through the Open
Mode Index and Data registers when in Run State.
Force
Diskchange
Floppy
Data Rate
Select
Shadow
Register
UART1
FIFO
Control
Shadow
Register
Sys.
index
MBX99
Sys
R/W
R
8051
address
(7F00+)
------
8051
R/W
N/A
Power
Source
VCC2
MBX9A
R
------
N/A
VCC2
N/A
MBX9B
R
------
N/A
VCC2
00h
325
VCC1
POR
VCC2
POR
03h
Zero
Wait
State (9)
Notes
-----------
8051 R/W
System
R/W
Bit Def
Note:
D7
N/A
R
FLOPPY DATA RATE SELECT SHADOW REGISTER
D6
D5
D4
D3
D2
D1
N/A
N/A
N/A
N/A
N/A
N/A
R
R
R
R
R
R
Soft
Reset
Power
Down
PRECOMP 2
PRECOMP 1
PRECOMP 0
Data
Rate
Select 1
Data
Rate
Select 0
D1 and D0 are updated by a write to the Floppy Data Rate or CCR registers. Bits D7-D2
are updated by a write to the Floppy Data Rate register only.
FORCE DISKCHANGE
D1
D7-D2
System
R/W
Bit Def
0
D0
N/A
R
D0
R
R/W
R/W
Reserved
1 = Force a diskchange indication when the DIR register (of the Floppy
controller) is read, gated with Drive Select 0 or 1. These bits can be
written to a “1” but are not clearable by the software. These bits are
reset when nSTEP input is active with the proper drive select to the
drive occurs. D0 is cleared on nSTEP and Drive Select 0; D1 is
cleared on nSTEP and Drive Select 1.
Equivalent logic: when read DIR bit 7 = (Drive_Sel_0 & D0) OR (Drive_Sel_1 & D1) OR DSK_CHG
326
ELECTRICAL SPECIFICATIONS
MAXIMUM GUARANTEED RATINGS*
Operating Temperature Range......................................................................................... 0oC to +70oC
Storage Temperature Range..........................................................................................-55o to +150oC
Lead Temperature Range (soldering, 10 seconds) .................................................................... +325oC
Positive Voltage on any pin, with respect to Ground .................................................................... +5.5V
Negative Voltage on any pin, with respect to Ground.................................................................... -0.3V
Supply Voltage Range VCC1 and VCC2............................................................................VCC1 and VCC2
*Stresses above those listed above could cause permanent damage to the device. This is a stress
rating only and functional operation of the device at any other condition above those indicated in the
operation sections of this specification is not implied.
NOTE: When powering this device from laboratory or system power supplies, it is important that the
Absolute Maximum Ratings not be exceeded or device failure can result. Some power supplies exhibit
voltage spikes on their outputs when the AC power is switched on or off. In addition, voltage
transients on the AC power line may appear on the DC output. If this possibility exists, it is suggested
that a clamp circuit be used.
SYMBOL
Vcc0
Vcc1
Vcc2
PCI_CLK
XTAL1/XTAL2
CLOCKI
VCC2
(VDC)
3.3
VCC1
(VDC)
3.3
3.3
3.3
3.3
3.3
3.3
3.3
0
3.3
0
3.3
TABLE 223 - OPERATING CONDITIONS
PARAMETER
MIN
TYP
Vbat for RTC
2.4
3.0
Vcc for 8051
3.15
3.3
System Vcc
3.15
3.3
PCI Clock
33
RTC Crystal
32.768
14.318 Clock Input
14.318
MAX
3.3
3.45
3.45
UNITS
V
V
V
MHz
kHz
MHz
POWER COMSUMPTION IN VARIOUS STATES
8051
CLOCK
STATE
STATE
SYM
TYP
MAX
COMMENTS
Run
24 MHz
ICC2
15 ma
20 ma
FLOPPY @ 1 Meg Data Rate
ICC1
24 ma
30 ma
I2C @ 24 MHz
Run
12 MHz
ICC2
13 ma
15 ma
Floppy @ 500K Data Rate
ICC1
12 ma
18 ma
I2C @ 12 MHz
Run
Ring
ICC2
>1ma
2 ma
PLL On
OSC
ICC1
8 ma
10 ma
I2C Off
Idle
Ring
ICC2
>1ma
2 ma
PLL Off
OSC
ICC1
5 ma
7 ma
Run
Ring
ICC2
PLL Off
OSC
ICC1
8 ma
10 ma
I2C Off
Idle
Ring
ICC2
PLL Off
OSC
ICC1
6 ma
8 ma
I2C Off
327
VCC2
(VDC)
0
0
0
0
Note:
VCC1
(VDC)
3.3
3.3
0
8051
STATE
Sleep
Sleep
CLOCK
STATE
Stop
Stop
SYM
ICC1
ICC1
ICC0
TYP
MAX
160 µa
10 µa
60 µa
COMMENTS
XOSEL=1
5 µa
XOSEL=0
40 µa
2.4 < Vcc0 < 4 VDC,
XOSEL=1,
0
ICC0
0.4 µa
1.5 µa
2.4 < Vcc0 < 4 VDC,
XOSEL = 0
When a single-ended 32.768kHz clock source is selected (see Section 32kHz Clock Input.
The FDC37N972 uses the XOSEL pin to select either a 32.768kHz input clock or a
32.768kHz crystal to drive the Real Time Clock Interface (Table 2 - PIN FUNCTION
DESCRIPTION). When XOSEL = ‘0’, The RTC uses a 32.768kHz crystal connected between
the XTAL1 and XTAL2 pins. When XOSEL = ‘1’, the RTC is driven by a 32.768kHz singleended clock source connected to the XTAL2 pin.
DC SPECIFICATIONS
DC ELECTRICAL CHARACTERISTICS (TA = 0°C - 70°C, VCC1 and VCC2= VCC1 and VCC2)
PARAMETER
SYMBOL MIN TYP MAX UNITS
COMMENTS
I Type Input Buffer
VILI
0.8
V
TTL Levels
Low Input Level
VIHI
2.0
V
High Input Level
IS Type Input Buffer
VILIS
0.8
V
Schmitt Trigger
Low Input Level
VIHIS
2.2
V
High Input Level
VHYS
250
mV
Schmitt Trigger
Schmitt Trigger Hysteresis
ISP Type Input Buffer
with 90 µA weak pull-up
VILIS
2.2
0.8
V
Schmitt Trigger
Low Input Level
VIHIS
250
V
High Input Level
VHYS
mV
Schmitt Trigger
Schmitt Trigger Hysteresis
ICLK Input Buffer
VILCK
0.4
V
Low Input Level
VIHCK
3.0
V
High Input Level
Use a 32 kHz parallel resonant crystal oscillator. The load capacitors
OCLK2 Crystal Oscillator
are seen by the crystal as two capacitors in series and should be
Output
approximately 2 times the Co of the actual crystal used (C1=2Co).
For example, a 7.5pF crystal should use two 15pF capacitors for
ICLK2 Crystal Oscillator
proper loading.
Input
328
PARAMETER
Input Leakage
(All I and IS buffers
except PWRGD &
VCC1_PWRGD)
Low Input Leakage
High Input Leakage
Input Current
PWRGD
O4 Type Buffer
SYMBOL
MIN
TYP
MAX
UNITS
IIL
IIH
IOH
-10
-10
Low Output Level
High Output Level
Output Leakage
OD4 Type Buffer
VOL
VOH
IOL
Low Output Level
Output Leakage
O8 Type Buffer
VOL
IOH
Low Output Level
VOL
High Output Level
VOH
2.4
Output Leakage
OD8 Type Buffer
IOL
-10
Low Output Level
VOL
Output Leakage
O24 Type Buffer
IOH
75
+10
+10
150
µA
µA
µA
VIN = 0
VIN = VCC
VIN = 0
2.4
0.4
-10
+10
V
V
µA
IOL = 4 mA
IOH = -2 mA
VIN = 0 to VCC
-10
0.4
+10
V
µA
VOL = 4 mA
IOH = 0 to VCC
0.4
V
IOL = 8 mA
V
IOH = -4 mA
+10
µA
VIN = 0 to VCC
0.4
V
VOL = 8 mA
+10
µA
IOH = 0 to VCC
Low Output Level
VOL
0.4
V
IOL = 24 mA
High Output Level
VOH
2.4
V
IOH = -12 mA
Output Leakage
OD24 Type Buffer
IOL
-10
+10
µA
VIN = 0 to VCC
Low Output Level
VOL
0.4
V
IOL = 24 mA
High Output Level
VOH
2.4
V
IOH = -50 mA
Output Leakage
IOL
-10
µA
VIN = 0 to Vcc
-10
+10
329
COMMENTS
PARAMETER
IO12 Type Buffer
Low Output Level
High Output Level
Output Leakage
SYMBOL
MIN
TYP
VOL
VOH
IOL
MAX
UNITS
0.4
V
IOL = 12mA
V
IOH = -6mA
+10
µA
VIN = 0 to VCC
(Note 2)
0.4
V
IOL = 8mA
V
IOH = -4mA
2.4
-10
COMMENTS
IO8 Type Buffer
Low Output Level
High Output Level
Output Leakage
VOL
VOH
IOL
2.4
-10
+10
µA
VIN = 0 to VCC
(Note 2)
Input Leakage
(All I and IS buffers
except
FAD[7:0]
FAD[7:0]
Input Leakage
Low Input Leakage
IIL
-100
+100
nA
VIN = 0
High Input Leakage
IOD8 Type Buffer
Low Output Level
IIH
-100
+100
nA
VIN = VCC
0.5
V
IOL=8 mA
2.0
V
0.8
V
0.5
V
2.0
V
0.8
V
High Input Level
High Inputt Level
Output Leakage
IOD16 Type Buffer
Low Output Level
High Input Level
High Inputt Level
VOL
VIH
VIL
VOL
VIH
VIL
Output Leakage
330
IOL=16 mA
PARAMETER
IOP14 Type Buffer
Low Output Level
High Output Level
Output Leakage
SYMBOL
MIN
TYP
VOL
VOH
IOL
MAX
UNITS
0.4
V
IOL = 14mA
V
IOH = -14mA
+10
µA
VIN = 0 to VCC
(Note 2)
0.8
V
2.4
-10
COMMENTS
IP Type Buffer
Low Input Level
VILI
High Input Level
O12 Type Buffer
VIHI
Low Output Level
VOL
High Output Level
VOH
2.0
V
0.4
V
IOL = 12mA
V
IOH = -6mA
0.4
V
IOL = 12mA
+10
µA
VIN = 0 to VCC
0.4
V
IOL = 14mA
+10
µA
VIN = 0 to VCC
0.4
V
IOL = 16mA
+10
µA
VIN = 0 to VCC
0.4
V
IOL = 14mA
V
IOH = -14mA
µA
VIN = 0 to VCC
(Note 2)
2.4
OD12 Type Buffer
Low Output Level
VOL
Output Leakage
OD14 Type Buffer
IOL
Low Output Level
VOL
Output Leakage
OD16 Type Buffer
IOL
Low Output Level
VOL
Output Leakage
OP14 Type Buffer
IOL
Low Output Level
High Output Level
Output Leakage
-10
-10
-10
VOL
VOH
IOL
2.4
-10
+10
331
PARAMETER
PCI_CLK Type Buffer
SYMBOL
MIN
TYP
MAX
UNITS
0.4
V
PCI_IO Type Buffer
PCI_OD Type Buffer
COMMENTS
See
Specification for PCI
Systems Version 6.0
See
Specification for PCI
Systems Version 6.0
See
Specification for PCI
Systems Version 6.0
ICLK Type Buffer
Low Input Level
High Input Level
ICLK2 Type Buffer
OCLK2 Type Buffer
Supply Current Active
Supply Current Sleep
VILI
VIHCLK
2.4
V
Use a 32 Khz parellel rosinant cystal oscillator. The load copacitors
are seen by the crystal as tow capacitors in series and should be
approximately 2 times the C0 of the actual crystal used (c1- co.) For
example a 7.5 pF cyrstal should use two 15 pF capacitors for proper
loading.
ICC
50
mA
ICC2 + ICC1 (Note 1)
25
ISLP
µA
ICC1 with Vcc2 Off, Sleep
mode
Notes:
1) This value is with the FDC at less than 2 MHz, and the 8051running at the ring oscillator drawing
8mA. The max value is 60mA with the FDC at 2 MHz. The ring oscillator is typically 4 – 8 MHz.
2) All output leakage’s are measured with the current pins in high impedance
AC SPECIFICATIONS
AC TEST CONDITIONS
CAPACITANCE TA = 25°C; fc = 1MHz; Vcc = 5V
LIMITS
PARAMETER
SYMBOL
MIN
TYP MAX UNIT
TEST CONDITION
Clock Input Capacitance CIN
20
pF
All pins except pin
under test tied to AC
Input Capacitance
CIN
10
pF
ground
Output Capacitance
COUT
20
pF
332
TIMING DIAGRAMS
LOAD CAPACITANCE
For the timing diagrams shown, the following capacitive loads are used.
NAME
SD[0:7]
IOCHRDY
nIRQ8
nSMI
DRQ[0:1]
32kHz_OUT
24MHz_OUT
nWGATE
nWDATA
nHDSEL
nDIR
nSTEP
nDS[1:0]
nMTR[1:0]
DRVDEN[1:0]
TXD1
nRTS1
nDTR1
PD[0:7]
nSLCTIN
nINIT
nALF
nSTROBE
TABLE 226 - CAPACITIVE LOADING
CAPACITANCE
TOTAL (pF)
NAME
240
EMCLK
240
EMDAT
120
IMCLK
120
IMDAT
120
KBDAT
50
KBCLK
50
PS2DAT
240
PS2CLK
240
nNOWS
240
FAD[0:7]
240
FA[8:17]
240
nFRD
240
nFWR
240
FALE
240
KSO[0:13]
100
SIRQ
100
FPD
100
AB_DATA
240
AB_CLK
240
IRTX
240
PWM[0:1]
240
nRESET_OUT
240
333
CAPACITANCE
TOTAL (pF)
240
240
240
240
240
240
240
240
240
100
100
50
50
50
100
150
50
100
100
50
50
240
FAST GATEA20 IOW TIMING
t3
SA[x]
t4
SD[7:0]
t2
t1
t5
nIOW
FIGURE 51 - FAST GATEA20 IOW TIMING
In order to use the FastGATEA20 speed-up mechanism, data must be available by the falling
edge of nIOW.
NAME
t1
t2
t3
t4
t5
TABLE 227 - FAST GATEA20 IOW TIMING PARAMETERS
DESCRIPTION
MIN
TYP MAX
SA[x] Valid to nIOW Asserted
10
SD[7:0] Valid to nIOW Asserted
0
nIOW Asserted to SA[x] Invalid
10
nIOW Deasserted to SD[7:0] Invalid
0
nIOW Deasserted to nIOW or nIOR Asserted
100
334
UNITS
ns
ns
ns
ns
ns
ISA IO WRITE
t10
AEN
t3
SA[x]
t2
t1
t4
t6
nIOW
t5
SD[x]
DATA VALID
t7
FINTR
t8
PINTR
t9
IBF
FIGURE 52 - ISA IO WRITE
NAME
t1
t2
t3
t4
t5
t6
t7
t8
t9
t10
TABLE 228 - ISA IO WRITE PARAMETERS
DESCRIPTION
MIN
SA[x] and AEN Valid to nIOW Asserted
10
nIOW Asserted to nIOW Deasserted
80
nIOW Asserted to SA[x] Invalid
10
SD[x] Valid to nIOW Deasserted
45
SD[x] Hold from nIOW Deasserted
0
nIOW Deasserted to nIOW Asserted
25
nIOW Deasserted to FINTR Deasserted (Note 1)
nIOW Deasserted to PINTER Deasserted (Note 2)
IBF (internal signal) Asserted from nIOW Deasserted
nIOW Deasserted to AEN Invalid
10
Note 1: FINTR refers to the IRQ used by the floppy disk logical device.
Note 2: PINTR refers to the IRQ used by the parallel port logical device.
335
TYP
MAX
55
260
40
UNITS
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ISA IO READ CYCLE
t13
AEN
t3
SA[x]
t1
nIOR
SD[x]
t7
t2
t6
t4
t5
DATA VALID
PD[x], nERROR,
PE, SLCT, ACK, BUSY
t10
FINTER
PINTER
t9
t11
PCOBF
t12
AUXOBF1
t8
nIOR/nIOW
FIGURE 53 - ISA IO READ CYCLE
NAME
t1
t2
t3
t4
t5
t6
t8
t8
t7
t9
t10
t11
TABLE 229 - ISA IO READ TIMING PARAMETERS
DESCRIPTION
MIN TYP
SA[x] and AEN Valid to nIOR Asserted
10
nIOR Asserted to nIOR Deasserted
50
nIOR Asserted to SA[x] Invalid
10
nIOR Asserted to Data Valid
Data Hold/Float from nIOR Deasserted
10
nIOR Deasserted to nIOR Asserted
25
nIOR Asserted after nIOW Deasserted
80
nIOR/nIOR, nIOW/nIOW Transfers from/to ECP
150
FIFO
Parallel Port Setup to nIOR Asserted
nIOR Asserted to PINTER Deasserted
nIOR Deasserted to FINTER Deasserted
nIOR Deasserted to PCOBF Deasserted (Notes
3,5)
336
MAX
50
25
20
55
260
80
UNITS
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
NAME
t12
t13
Note 1:
Note 2:
Note 3:
Note 4:
Note 5:
DESCRIPTION
nIOR Deasserted to AUXOBF1 Deasserted (Notes
4,5)
nIOR Deasserted to AEN Invalid
FINTR refers to the IRQ used by the floppy disk.
PINTR refers to the IRQ used by the parallel port.
PCOBF is used for the Keyboard IRQ.
AUXOBF1 is used for the Mouse IRQ.
Applies only if deassertion is performed in hardware.
337
MIN
10
TYP
MAX
80
UNITS
ns
ns
t1
t2
t2
CLOCKI
FIGURE 54 - INPUT CLOCK TIMING
NAME
t1
t2
tr, tf
Note:
TABLE 230 - INPUT CLOCK TIMING PARAMETERS
DESCRIPTION
MIN TYP MAX
Clock Cycle Time for 14.318 MHz (Note)
69.84
Clock High Time/Low Time for 14.318 MHz
15
Clock Rise Time/Fall Time (not shown)
5
Tolerance is ± 0.01%.
338
UNITS
ns
ns
ns
DMA TIMING (SINGLE TRANSFER MODE)
t15
AEN
t16
t3
t2
FDRQ,
PDRQ
t1
t4
nDACK
t12
t14
t11
t6
t5
t8
nIOR
or
nIOW
t10
t9
t7
DATA
(DO-D7)
DATA VALID
t13
TC
FIGURE 55 - DMA TIMING (SINGLE TRANSFER MODE)
NAME
t1
t2
t3
t4
t5
t6
t7
t8
t9
t10
t11
t12
t13
t14
t15
t16
TABLE 231 - DMA TIMING (SINGLE TRANSFER MODE) PARAMETERS
DESCRIPTION
MIN
TYP
MAX
nDACK Delay Time from FDRQ High
0
DRQ Reset Delay from nIOR or nIOW
100
FDRQ Reset Delay from nDACK Low
100
nDACK Width
150
nIOR Delay from FDRQ High
0
nIOW Delay from FDRQ High
0
Data Access Time from nIOR Low
100
Data Set Up Time to nIOW High
40
Data to Float Delay from nIOR High
10
60
Data Hold Time from nIOW High
10
nDACK Set Up to nIOW/nIOR Low
5
nDACK Hold after nIOW/nIOR High
10
TC Pulse Width
60
AEN Set Up to nIOR/nIOW
40
AEN Hold from nDACK
10
TC Active to PDRQ Inactive
100
339
UNITS
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
DMA TIMING (BURST TRANSFER MODE)
t15
AEN
t16
t3
t2
FDRQ,
PDRQ
t1
t4
nDACK
t12
t14
t11
t6
nIOR
or
nIOW
t8
t5
t10
t9
t7
DATA
(DO-D7)
DATA VALID
DATA VALID
t13
TC
FIGURE 56 - DMA TIMING (BURST TRANSFER MODE)
NAME
t1
t2
t3
t4
t5
t6
t7
t8
t9
t10
t11
t12
t13
t14
t15
t16
TABLE 232 - DMA TIMING (BURST TRANSFER MODE) PARAMETERS
DESCRIPTION
MIN
TYP
MAX
nDACK Delay Time from FDRQ High
0
DRQ Reset Delay from nIOR or nIOW
100
FDRQ Reset Delay from nDACK Low
100
nDACK Width
150
nIOR Delay from FDRQ High
0
nIOW Delay from FDRQ High
0
Data Access Time from nIOR Low
100
Data Set Up Time to nIOW High
40
Data to Float Delay from nIOR High
10
60
Data Hold Time from nIOW High
10
nDACK Set Up to nIOW/nIOR Low
5
nDACK Hold after nIOW/nIOR High
10
TC Pulse Width
60
AEN SET UP TO NIOR/NIOW
40
AEN Hold from nDACK
10
TC Active to PDRQ Inactive
100
340
UNITS
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
FLOPPY DISK DRIVE TIMING (AT MODE)
t3
nDIR
t4
t1
t2
nSTEP
t5
nDS0-3
t6
nINDEX
t7
nRDATA
t8
nWDATA
nIOW
t9
t9
nDS0-3,
MTR0-3
FIGURE 57 - FLOPPY DISK DRIVE TIMING (AT MODE)
NAME
t1
t2
t3
t4
t5
t6
t7
t8
t9
TABLE 233 - FLOPPY DISK DRIVE TIMING (AT MODE) PARAMETERS
DESCRIPTION
MIN
TYP
MAX
nDIR Set Up to STEP Low
4
nSTEP Active Time Low
24
nDIR Hold Time after nSTEP
96
nSTEP Cycle Time
132
nDS0-3 Hold Time from nSTEP high
20
nINDEX Pulse Width
2
nRDATA Active Time Low
40
nWDATA Write Data Width Low
.5
nDS0-3, MTRO-3 from End of nIOW
25
*X specifies one MCLK period and Y specifies one WCLK period.
MCLK = Controller Clock to FDC
WCLK = 2 x Data Rate
341
UNITS
X*
X*
X*
X*
X*
X*
ns
Y*
ns
SERIAL PORT TIMING
nIOW
t1
nRTSx,
nDTRx
t5
IRQx
nCTSx,
nDSRx,
nDCDx
t6
t2
t4
IRQx
nIOW
t3
IRQx
nIOR
nRI
FIGURE 58 - SERIAL PORT TIMING
NAME
t1
t2
t3
t4
t5
t6
TABLE 234 - SERIAL PORT TIMING PARAMETERS
DESCRIPTION
MIN
TYP
nRTSx, nDTRx Delay from nIOW
IRQx Active Delay from nCTSx, nDSRx, nDCDx
IRQx Inactive Delay from nIOR (Leading Edge)
IRQx Inactive Delay from nIOW (Trailing Edge)
IRQx Inactive Delay from nIOW
10
IRQx Active Delay from 0x
342
MAX
200
100
120
125
100
100
UNITS
ns
ns
ns
ns
ns
ns
PARALLEL PORT TIMING
PD0- PD7
t6
nIOW
t1
nINIT, nSTROBE.
nAUTOFD, SLCTIN
nACK
t2
nPINTR
(SPP)
t4
PINTR
(ECP or EPP Enabled)
t3
nFAULT (ECP)
nERROR
(ECP)
t5
t2
t3
PINTR
FIGURE 59 - PARALLEL PORT TIMING
NAME
t1
t2
t3
t4
t5
t6
TABLE 235 - PARALLEL PORT TIMING PARAMETERS
DESCRIPTION
MIN
TYP
PD0-7, nINIT, nSTROBE, nALF Delay from nIOW
PINTR Delay from nACK, nFAULT
PINTR Active Low in ECP and EPP Modes
200
PINTR Delay from nACK
nERROR Active to PINTR Active
PD0 - PD7 Delay from IOW Active
343
MAX
100
60
300
105
105
100
UNITS
ns
ns
ns
ns
ns
ns
EPP 1.9 DATA OR ADDRESS WRITE CYCLE
t18
A0-A10
t9
SD<7:0>
nIOW
t17
t8
t12
t10
IOCHRDY
t19
t11
t13
nWRITE
t20
t2
t1
t5
PD<7:0>
nDATAST
t14
t16
t3
t4
nADDRSTB
t15
t6
t7
nWAIT
FIGURE 60 - EPP 1.9 DATA OR ADDRESS WRITE CYCLE
NAME
t1
t2
t3
t4
t5
t6
t7
t8
t9
t10
t11
t12
t13
t14
t15
t16
TABLE 236 - EPP 1.9 DATA OR ADDRESS WRITE PARAMETERS
DESCRIPTION
MIN
TYP
MAX
nIOW Asserted to PDATA Valid
0
50
nWAIT Asserted to nWRITE Change (Note 1)
60
185
nWRITE to Command Asserted
5
35
nWAIT Deasserted to Command Deasserted (Note 1)
60
190
nWAIT Asserted to PDATA Invalid (Note 1)
0
Time Out
10
12
Command Deasserted to nWAIT Asserted
0
SDATA Valid to nIOW Asserted
10
nIOW Deasserted to DATA Invalid
0
nIOW Asserted to IOCHRDY deasserted
0
24
nWAIT Deasserted to IOCHRDY Asserted (Note 1)
60
160
IOCHRDY Asserted to nIOW Deasserted
10
nIOW Asserted to nWRITE Asserted
0
70
nWAIT Asserted to Command Asserted (Note 1)
60
210
Command Asserted to nWAIT Deasserted
0
10
PDATA Valid to Command Asserted
10
344
UNITS
ns
ns
ns
ns
ns
µs
ns
ns
ns
ns
ns
ns
ns
ns
µs
ns
NAME
t17
T18
t19
t20
DESCRIPTION
Ax Valid to nIOW Asserted
nIOW Deasserted to Ax Invalid
nIOW Deasserted to nIOW or nIOR Asserted
nWAIT Asserted to nWRITE Asserted (Note 1)
MIN
40
10
40
60
TYP
MAX
185
Note 1: nWAIT must be filtered to compensate for ringing on the parallel bus cable.
considered to have settled after it does not transition for a minimum of 50 nsec.
345
UNITS
ns
ns
ns
ns
WAIT is
EPP 1.9 DATA OR ADDRESS READ CYCLE
t20
A0-A10
t19
t11
t22
IOR
t13
t12
SD<7:0>
t18
t10
t8
IOCHRDY
t9
t21
t17
nWRITE
t2
t5
PData bus driven
by peripheral
t4
t16
PD<7:0>
t28
t1
t14
t3
DATASTB
ADDRSTB
t15
t7
t6
nWAIT
FIGURE 61 - EPP 1.9 DATA OR ADDRESS READ CYCLE
NAME
t1
t2
t3
t4
t5
t6
t7
t8
t9
t10
t11
t12
t13
t14
TABLE 237 - EPP 1.9 DATA OR ADDRESS READ CYCLE TIMING PARAMETERS
DESCRIPTION
MIN
TYP
MAX
UNITS
PDATA HI-Z TO COMMAND ASSERTED
0
30
ns
nIOR Asserted to PDATA Hi-Z
0
50
ns
nWAIT Deasserted to Command Deasserted (Note 1) 60
180
ns
Command Deasserted to PDATA Hi-Z
0
ns
Command Asserted to PDATA Valid
0
ns
PDATA Hi-Z to nWAIT Deasserted
0
µs
PDATA Valid to nWAIT Deasserted
0
ns
nIOR Asserted to IOCHRDY Deasserted
0
24
ns
nWRITE Deasserted to nIOR Asserted (Note 2)
0
ns
nWAIT Deasserted to IOCHRDY Asserted (Note 1)
60
160
ns
IOCHRDY Asserted to nIOR Deasserted
0
ns
nIOR Deasserted to SDATA Hi-Z (Hold Time)
0
40
ns
PDATA Valid to SDATA Valid
0
75
ns
nWAIT Asserted to Command Asserted
0
195
ns
346
NAME
t15
t16
t17
t18
t19
t20
t21
t22
t28
DESCRIPTION
Time Out
nWAIT Deasserted to PDATA Driven (Note 1)
nWAIT Deasserted to nWRITE Modified (Notes 1,2)
SDATA Valid to IOCHRDY Deasserted (Note 3)
Ax Valid to nIOR Asserted
nIOR Deasserted to Ax Invalid
nWAIT Asserted to nWRITE Deasserted
nIOR Deasserted to nIOW or nIOR Asserted
nWRITE Deasserted to Command
MIN
10
60
60
0
40
10
0
40
1
TYP
MAX
12
190
190
85
10
185
UNITS
µs
ns
ns
ns
ns
ns
ns
ns
ns
Note 1: nWAIT is considered to have settled after it does not transition for a minimum of 50 ns.
Note 2: When not executing a write cycle, EPP nWRITE is inactive high.
Note 3: 85 is true only if t7 = 0.
347
EPP 1.7 DATA OR ADDRESS WRITE CYCLE
t18
A0-A10
t9
SD<7:0>
nIOW
t17
t8
t6
t19
t12
t10
t20
IOCHRDY
t11
t13
t2
t1
t5
nWRITE
PD<7:0>
t16
t3
t4
nDATAST
nADDRSTB
t21
nWAIT
FIGURE 62 - EPP 1.7 DATA OR ADDRESS WRITE CYCLE
TABLE 238 - EPP 1.7 DATA OR ADDRESS WRITE CYCLE TIMING PARAMETERS
NAME
DESCRIPTION
MIN TYP MAX UNITS
t1
nIOW Asserted to PDATA Valid
0
50
ns
t2
Command Deasserted to nWRITE Change
0
40
ns
t3
nWRITE to Command
5
35
ns
t4
nIOW Deasserted to Command Deasserted (Note 2)
50
ns
t5
Command Deasserted to PDATA Invalid
50
ns
t6
Time Out
10
12
µs
t8
SDATA Valid to nIOW Asserted
10
ns
t9
nIOW Deasserted to DATA Invalid
0
ns
t10
nIOW Asserted to IOCHRDY deasserted
0
24
ns
t11
nWAIT Deasserted to IOCHRDY Asserted
40
ns
t12
IOCHRDY Asserted to nIOW Deasserted
10
ns
348
NAME
t13
t16
t17
t18
t19
t20
t21
DESCRIPTION
nIOW Asserted to nWRITE Asserted
PDATA Valid to Command Asserted
Ax Valid to nIOW Asserted
nIOW Deasserted to Ax Invalid
nIOW Deasserted to nIOW or nIOR Asserted
nWAIT Asserted to IOCHRDY Asserted
Command Deasserted to nWAIT Deasserted
MIN
0
10
40
10
100
TYP
MAX
50
35
45
0
UNITS
ns
ns
ns
µs
ns
ns
ns
Note 1: nWRITE is controlled by clearing the PDIR bit to "0" in the control register before performing
an EPP Write.
Note 2: The number is only valid if nWAIT is active when IOW goes active.
349
EPP 1.7 DATA OR ADDRESS READ CYCLE
t20
A0-A10
t15
t11
t19
t22
nIOR
t13
t12
SD<7:0>
t8
t10
t3
IOCHRDY
nWRITE
t5
t4
PD<7:0>
t23
t2
nDATASTB
nADDRSTB
t21
nWAIT
FIGURE 63 - EPP 1.7 DATA OR ADDRESS READ CYCLE
TABLE 239 - EPP 1.7 DATA OR ADDRESS READ CYCLE TIMING PARAMETERS
NAME
DESCRIPTION
MIN
TYP
MAX
UNITS
t2
nIOR Deasserted to Command Deasserted
50
ns
t3
nWAIT Asserted to IOCHRDY Deasserted
0
40
ns
t4
0
ns
Command Deasserted to PDATA Hi-Z
t5
Command Asserted to PDATA Valid
0
ns
t8
nIOR Asserted to IOCHRDY Asserted
24
ns
t10
nWAIT Deasserted to IOCHRDY Deasserted
50
ns
t11
0
ns
IOCHRDY Deasserted to nIOR Asserted
0
40
ns
t12
nIOR Deasserted to SDATA High-Z (Hold
Time)
t13
t15
t19
t20
t21
t22
t23
Note:
PDATA Valid to SDATA Valid
Time Out
10
Ax Valid to nIOR Asserted
40
nIOR Deasserted to Ax Invalid
10
Command Deasserted to nWAIT Deasserted
0
nIOR Deasserted to nIOW or nIOR Asserted
40
nIOR Asserted to Command Asserted
WRITE is controlled by setting the PDIR bit to "1" in the control register
EPP Read.
350
40
12
ns
µs
ns
ns
ns
ns
55
ns
before performing an
This sequence is shown in FIGURE 59. The
timing is designed to provide 3 cable round-trip
times for data setup if Data is driven
simultaneously with HostClk (nSTROBE).
ECP PARALLEL PORT TIMING
PARALLEL PORT FIFO (MODE 101)
The standard parallel port is run at or near the
peak 500Kbytes/sec allowed in the forward
direction using DMA. The state machine does
not examine nACK, but begins the next transfer
based on Busy. Refer to FIGURE 55.
REVERSE-IDLE PHASE
The peripheral has no data to send and keeps
PeriphClk high. The host is idle and keeps
HostAck low.
ECP PARALLEL PORT TIMING
REVERSE DATA TRANSFER PHASE
The timing is designed to allow operation at
approximately 2.0 Mbytes/sec over a 15ft. cable.
If a shorter cable is used then the bandwidth will
increase.
FORWARD-IDLE
When the host has no data to send it keeps
HostClk () high and the peripheral will leave
PeriphClk (Busy) low.
FORWARD DATA TRANSFER PHASE
The interface transfers data and commands
from the host to the peripheral using an interlocked PeriphAck and HostClk. The peripheral
may indicate its desire to send data to the host
by asserting nPeriphRequest.
The Forward Data Transfer Phase may be
entered from the Forward-Idle Phase. While in
the Forward Phase the peripheral may
asynchronously assert the nPeriphRequest
(nFault) to request that the channel be reversed.
When the peripheral is not busy it sets
PeriphAck (Busy) low. The host then sets
HostClk (nSTROBE) low when it is prepared to
send data. The data must be stable for the
specified setup time prior to the falling edge of
HostClk. The peripheral then sets PeriphAck
(Busy) high to acknowledge the handshake. The
host then sets HostClk (nSTROBE) high. The
peripheral then accepts the data and sets
PeriphAck (Busy) low, completing the transfer.
351
The interface transfers data and commands
from the peripheral to the host using an
interlocked HostAck and PeriphClk.
The Reverse Data Transfer Phase may be entered from the Reverse-Idle Phase. After the
previous byte has beed accepted the host sets
HostAck (nALF) low. The peripheral then sets
PeriphClk (nACK) low when it has data to send.
The data must be stable for the specified setup
time prior to the falling edge of PeriphClk. When
the host is ready it to accept a byte it sets
HostAck (nALF) high to acknowledge the
handshake. The peripheral then sets PeriphClk
(nACK) high. After the host has accepted the
data it sets HostAck (nALF) low, completing the
transfer. This sequence is shown in FIGURE 57
- FLOPPY DISK DRIVE TIMING (AT MODE)
OUTPUT DRIVERS
To facilitate higher performance data transfer,
the use of balanced CMOS active drivers for
critical signals (Data, HostAck, HostClk,
PeriphAck, PeriphClk) are used ECP Mode.
Because the use of active drivers can present
compatibility problems in Compatible Mode
(the control signals, by tradition, are specified as open-collector), the drivers are dynamically
changed
from
open-collector
to
totem-pole. The timing for the dynamic driver
change is specified
in
the IEEE 1284
Extended Capabilities Port Protocol and ISA
Interface Standard, Rev. 1.14, July 14, 1996,
available from Microsoft. The dynamic driver
change must be implemented properly to
prevent glitching the outputs.
t6
t3
PDATA
nSTROBE
t1
t2
t5
t4
BUSY
FIGURE 64 - PARALLEL PORT FIFO TIMING
NAME
t1
t2
t3
t4
t5
t6
TABLE 240 - PARALLEL PORT FIFO TIMING PARAMETERS
DESCRIPTION
MIN
TYP
MAX
DATA Valid to nSTROBE Active
600
nSTROBE Active Pulse Width
600
DATA Hold from nSTROBE Inactive (Note 1)
450
nSTROBE Active to BUSY Active
500
BUSY Inactive to nSTROBE Active
680
BUSY Inactive to PDATA Invalid (Note 1)
80
UNITS
ns
ns
ns
ns
ns
ns
Note 1: The data is held until BUSY goes inactive or for time t3, whichever is longer. This only
applies if another data transfer is pending. If no other data transfer is pending, the data is
held indefinitely.
352
t3
nAUTOFD
t4
PDATA<7:0>
t2
t1
t7
t8
nSTROBE
BUSY
t6
t5
t6
FIGURE 65 - ECP PARALLEL PORT FORWARD TIMING
NAME
t1
t2
t3
t4
t5
t6
t7
t8
TABLE 241 - ECP PARALLEL PORT FORWARD TIMING PARAMETERS
DESCRIPTION
MIN TYP MAX
nALF Valid to nSTROBE Asserted
0
60
PDATA Valid to nSTROBE Asserted
0
60
BUSY Deasserted to nALF Changed
80
180
(Notes 1,2)
BUSY Deasserted to PDATA Changed (Notes 1,2) 80
180
nSTROBE Deasserted to Busy Asserted
0
nSTROBE Deasserted to Busy Deasserted
0
BUSY Deasserted to nSTROBE Asserted
(Notes 80
200
1,2)
BUSY Asserted to nSTROBE Deasserted (Note 2)
80
180
UNITS
ns
ns
ns
ns
ns
ns
ns
ns
Note 1: Maximum value only applies if there is data in the FIFO waiting to be written out.
Note 2: BUSY is not considered asserted or deasserted until it is stable for a minimum of 75 to 130
ns.
353
t2
PDATA<7:0>
t1
t5
t6
nACK
t4
t3
t4
nAUTOFD
FIGURE 66 - ECP PARALLEL PORT REVERSE TIMING
NAME
t1
t2
t3
t4
t5
t6
TABLE 242 - ECP PARALLEL PORT REVERSE TIMING
DESCRIPTION
MIN TYP MAX
PDATA Valid to nACK Asserted
0
nALF Deasserted to PDATA Changed
0
nACK Asserted to nALF Deasserted
80
200
(Notes 1,2)
nACK Deasserted to nALF Asserted (Note 2)
80
200
nALF Asserted to nACK Asserted
0
nALF Deasserted to nACK Deasserted
0
UNITS
ns
ns
ns
ns
ns
ns
Note 1: Maximum value only applies if there is room in the FIFO and terminal count has not
been received. ECP can stall by keeping nALF low.
Note 2: nACK is not considered asserted or deasserted until it is stable for a minimum of 75 to 130
ns.
354
ACCESS.BUS TIMING
AB_DATA
tBUF
tLOW
tR
tHD;STA
tF
AB_CLK
tHD;STA
tHD;DAT
tHIGH
tSU;DAT
tSU;STO
tSU;STA
FIGURE 67 - ACCESS.BUS TIMING
SYMBOL
TABLE 243 - ACCESS.BUS TIMING PARAMETERS
PARAMETER
MIN.
TYP.
MAX.
UNIT
fSCL
SCL Clock Frequency
kHz
tBUF
Bus Free Time
4.7
µs
tSU;STA
4.7
µs
tHD;STA
START Condition Set-Up
Time
START Condition Hold Time
4.0
µs
tLOW
SCL LOW Time
4.7
µs
tHIGH
SCL HIGH Time
4.0
µs
tR
SCL and SDA Rise Time
1.0
µs
tF
SCL and SDA Fall Time
0.3
µs
tSU;DAT
Data Set-Up Time
0.25
µs
tHD;DAT
Data Hold Time
0
µs
tSU;STO
STOP Condition Set-Up Time
4.0
µs
100
355
HOST FLASH READ TIMING
8051STOPPED
SA[15:0]
A[15:0]
t10
SD[7:0]
t11
t17
D[7:0]
tsu1
nROM_CS
t5
nMEMRD
nMEMWR
FA[17:16]
KMEM[2:1]
t1
t18
HMEM[1:0]=A[17:16]
KMEM[2:1]
t2
FA[15:8]
8051ADR[14:8],KMEM[0]
t2
FAD[7:0]
8051PORT0
t4
t21
A[15:8]
t19
8051ADR[14:8],KMEM[0]
t4
t8
A[7:0]
tsu2
t14
t15
D[7:0]
A[7:0]
t7
t13
t6
t16
t21
t19
8051PORT0
IOCHRDY
t3
FALE
t9
t12
nFRD
nFWR
FIGURE 68 - HOST FLASH READ TIMING
356
t20
t1
t2
t3
t4
t5
t6
t7
t8
t9
t10
t11
t12
t13
t14
t15
t16
t17
t18
t19
t20
t21
tsu1
tsu2
TABLE 244 - HOST FLASH READ TIMING PARAMETERS
PARAMETER
MIN
TYP
8051 stopped condition met to FA[17:16] sourced by
internal register HMEM[1:0]
8051 stopped condition met to FA[15:0] driven by
SA[15:0]
8051 stopped condition met to FALE asserted
SA[15:0] valid to FA[15:0] valid propogation delay
SA[15:0] valid to nMEMRD asserted
88
nMEMRD asserted to FALE de-asserted
21
nMEMRD asserted to IOCHRDY de-asserted (Note1)
FALE de-asserted to FAD[7:0] tristated
FALE de-asserted to nFRD asserted
nMEMRD asserted to SD[7:0] driven
FAD[7:0] data valid to SD[7:0] data valid propogation
delay
nFRD, Flash Read, asserted pulse width (Note2)
120
[3 sclk]
nFRD de-asserted to IOCHRDY asserted
0
FAD[7:0] Data hold time from nFRD de-asserted
0
SA[7:0] muxed onto FAD[7:0] following the deassertion of nFRD
nFRD de-asserted to FALE asserted for next cycle
SD[7:0] data hold time from nMEMRD de-asserted
10
8051 clock started condition met to FA[17:16] sourced
by internal register KMEM[2:1]
8051 clock started condition met to FA[15] sourced by
KMEM[0] and FA[14:0] driven by the 8051
8051 clock started condition met to FALE de-asserted
SA[15:0] invalid to FA[15:0] invalid propagation delay
nROM_CS asserted to nMEMRD setup time
20
FAD[7:0] Data valid to nFRD de-asserted setup time
20
MAX
40
UNITS
ns
40
ns
40
40
ns
ns
ns
ns
ns
ns
ns
ns
ns
63
24
42
84
30
40
200
[5 sclk]
20
42
42
ns
ns
ns
ns
40
ns
ns
ns
40
ns
40
40
ns
ns
ns
ns
Note 1: Systems designed prior to the EISA Specification, R3.12, which sample CHRDY on the rising
edge of BCLK require that IOCHRDY is deasserted within 24 ns.
Note 2: The Flash Read signal pulse width is programmable through a configuration register, the time
values shown are for an internal sclk=24 MHz derived from the 14.318 MHz input.
357
HOST FLASH READ/WRITE
8051STOPPED
SA[15:0]
A[15:0]
t17
t16
SD[7:0]
D[7:0]
tsu1
nROM_CS
nMEMRD
t5
nMEMWR
t1
FA[17:16]
KMEM[2:1]
t2
FA[15:8]
8051ADR[14:8],KMEM[0]
t2
FAD[7:0]
t18
HMEM[1:0]=A[17:16]
8051PORT0
KMEM[2:1]
t4
t21
A[15:8]
t4
t19
8051ADR[14:8],KMEM[0]
t13
t14
t9
A[7:0]
D[7:0]
t21
A[7:0]
t7
t12
t6
t15
t19
8051PORT0
IOCHRDY
t3
FALE
nFRD
t10
t11
nFWR
FIGURE 69 - HOST FLASH WRITE TIMING PARAMETERS
358
t20
t1
t2
t3
t4
t5
t6
t7
TABLE 245 - HOST FLASH WRITE TIMING PARAMETERS
PARAMETER
MIN
TYP
8051 stopped condition met to FA[17:16] sourced by
internal register HMEM[2:1]
8051 stopped condition met to FA[15] driven by
SA[15:0]
8051 stopped condition met to FALE asserted
SA[15:0] valid to FA[15:0] valid propogation delay
SA[15:0] valid to nMEMWR asserted
88
nMEMWR asserted to FALE de-asserted
21
nMEMWR asserted to IOCHRDY de-asserted
(Note 1)
t9
t10
t11
FALE de-asserted to SD[7:0] driven onto FAD[7:0]
FALE de-asserted to nFWR asserted
nFWR, Flash Write, asserted pulse width (Note 2)
t12
t13
t14
nFWR de-asserted to IOCHRDY asserted
FAD[7:0] Data hold time from nFWR de-asserted
SA[7:0] muxed onto FAD[7:0] following the de-assertion
of nFWR
nFWR deasserted to FALE asserted for next cycle
nMEMWR asserted to SD[7:0] valid
SD[7:0] data hold time from nMEMWR de-asserted
8051 clock started condition met to FA[17:16] sourced
by internal register KMEM[2:1]
8051 clock started condition met to FA[15] sourced by
KMEM[0] and FA[14:0] driven by the 8051
8051 clock started condition met to FALE de-asserted
SA[15:0] invalid to FA[15:0] invalid propagation delay
nROM_CS asserted to nMEMWR setup time
t15
t16
t17
t18
t19
t20
t21
tsu1
120
[3 sclk]
MAX
40
UNITS
ns
40
ns
40
40
ns
ns
ns
ns
ns
63
24
42
84
200
[5 sclk]
20
42
42
ns
ns
ns
42
-10
40
ns
ns
ns
ns
40
ns
40
40
ns
ns
ns
10
20
ns
ns
ns
Note 1: Systems designed prior to the EISA Specification, R3.12, which sample CHRDY on the rising
edge of BCLK require that IOCHRDY is deasserted within 24 ns.
Note 2: The Flash Write signal pulse width is programmable through a configuration register, the
time values shown are for an internal sclk=24 MHz derived from the 14.318 MHz input
359
ZERO WAIT STATE (NOWS) TIMING
t1
t12
SA[15:0]
t11
AEN
t3
t2
t9
nIOR,
nIOW
t4
t5
nNOWS
t6
t7
t8
Read
Data
t10
Write Data
FIGURE 70 - ZERO WAIT STATE (NOWS) TIMING
t1
t2
t3
t4
t5
t6
t7
t8
t9
t10
t11
t12
TABLE 246 - ZERO WAIT-STATE TIMING PARAMETERS
PARAMETER
MIN
TYP MAX
AEN Valid Before nIOR, nIOW Asserted
10
SA[15:0] Valid Before nIOR Asserted
10
nIOR, nIOW Pulse Width
80
nIOR, nIOW Asserted to nNOWS Asserted
50
nIOR, nIOW Negated to nNOWS Floated
35
nIOR Asserted to Read Data Valid
50
nIOR Negated to Read Data Invalid (Hold Time)
0
nIOR Negated to Data Bus Floated
24
Write Data Valid Before nIOW Deasserted
45
nIOW Negated to Write Data Invalid (Hold Time) 0
nIOR, nIOW Negated to AEN Invalid
10
nIOR, nIOW Negated to SA[15:0] Invalid
10
360
UNITS
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
FLASH PROGRAM FETCH TIMING
t1
t5
FALE
t3
t4
nFRD
t7
FAD[7:0]
FA[17:8]
t2
FA[7:0]
t6
t8
insruction
FA[17:8]
FA[7:0
FA[17:8]
FIGURE 71 - 8051 FLASH PROGRAM FETCH TIMING
TABLE 247 - 8051 FLASH PROGRAM FETCH TIMING PARAMETERS
8051 Clock = 12 MHz
PARAMETER
MIN
TYP
MAX
UNITS
t1
Address Valid to FALE Low
38
41
ns
t2
Address Hold Following FALE Low
35
60
ns
t3
FALE Low to nFRD Low
35
45
50
ns
t4
nFRD Pulse Width
150
162
ns
t5
nFRD High to FALE High
0
5
10
ns
t6
nFRD Low to Valid Instruction
135
ns
t7
Instruction Hold Following nFRD
0
ns
t8
Instruction Float Following nFRD
80
ns
8051 Clock = 24 MHz
PARAMETER @24 MHz
MIN
TYP
MAX
UNITS
t1
Address Valid to FALE Low
15
20
ns
t2
Address Hold Following FALE Low
35
40
ns
t3
FALE Low to nFRD Low
18
23
30
ns
t4
nFRD Pulse Width
60
82
ns
t5
nFRD High to FALE High
0
6
10
ns
t6
nFRD Low to Valid Instruction In
40
ns
t7
Instruction Hold Following nFRD
0
ns
t8
Instruction Float Following nFRD
40
ns
Min and Max delays shown for an 8051 clock of 12 MHz and 24 MHz as indicated. Device Mode
Register bits [1:0] = 00 (See Global Configuration Registers, Table 214, address 0x25).
361
8051 FLASH READ TIMING
t1
t5
FALE
t3
t4
nFRD
t7
FAD[7:0]
FA[17:8]
t2
FA[7:0]
t6
t8
DATA IN
FA[17:8]
FA[7:0
FA[17:8]
FIGURE 72 - 8051 FLASH READ TIMIING
t1
t2
t3
t4
t5
t6
t7
t8
t1
t2
t3
t4
t5
t6
t7
t8
TABLE 248 - FLASH READ TIMIING PARAMETERS
8051 Clock = 12 MHz
PARAMETER
MIN
TYP
MAX
Address Valid to FALE Low
38
41
Address Hold Following FALE Low
35
60
FALE Low to nFRD Low
35
45
50
nFRD Pulse Width
150
162
nFRD High to FALE High
0
5
10
nFRD Low to Valid Data In
135
Data Hold Following nFRD
0
Data Float Following nFRD
80
8051 Clock =24 MHz
PARAMETER @24 MHz
MIN
TYP
MAX
Address Valid to FALE Low
15
20
Address Hold Following FALE Low
35
40
FALE Low to nFRD Low
18
23
30
nFRD Pulse Width
60
82
nFRD High to FALE High
0
6
10
nFRD Low to Valid Data In
40
Data Hold Following nFRD
0
Data Float Following nFRD
40
UNITS
ns
ns
ns
ns
ns
ns
ns
ns
UNITS
ns
ns
ns
ns
ns
ns
ns
ns
Min and Max delays shown for an 8051 clock of 12 MHz and 24 MHz as indicated. Device Mode
Register bits [1:0] = 00 (See Global Configuration Registers, Table 214, address 0x25).
362
8051 FLASH WRITE TIMING
t1
t5
FALE
t3
t6
t4
nFWR
t2
FAD[7:0]
FA[17:8]
FA[7:0]
t7
DATA OUT
FA[7:0]
FA[17:8]
FA[17:8]
FIGURE 73 - 8051 FLASH WRITE TIMING
t1
t2
t3
t4
t5
t6
t7
t1
t2
t3
t4
t5
t6
t7
TABLE 249 - FLASH WRITE TIMING PARAMETERS
8051 Clock = 12 MHz
PARAMETER @12MHz
MIN
TYP
MAX
Address Valid to FALE Low
38
42
Address Hold Following FALE Low
38
41
FALE Low to nFWR Low
110
124
140
nFWR Pulse Width
300
332
nFWR High to FALE High
70
85
100
Data Valid to nFWR Falling Edge
70
84
Data Hold Following nFWR
150
172
8051 Clock =24 MHz
PARAMETER @ 24 MHz
MIN
TYP
MAX
Address Valid to FALE Low
14
20
Address Hold Following FALE Low
18
22
FALE Low to nFWR Low
48
62
76
nFWR Pulse Width
130
162
nFWR High to FALE High
40
50
60
Data Valid to nFWR Falling Edge
30
41
Data Hold Following nFWR
60
84
UNITS
ns
ns
ns
ns
ns
ns
ns
UNITS
ns
ns
ns
ns
ns
ns
ns
Min and Max delays shown for an 8051 clock of 12 MHz and 24 MHz as indicated. Device Mode
Register bits [1:0] = 00 (See Global Configuration Registers, Table 214, address 0x25).
363
PS/2 CHANNEL RECEIVE TIMING DIAGRAM
t7
t3
t2
t5
t4
t10
PS2_CLK WR_CLK
t1
PS2_DAT WR_DATA
WR_CLK
t6
b0
b1
b2
b3
b4
b5
b6
b7
P
S
WR_DATA
PS2_EN
PS2_T/R
t8
t9
RDATA_RDY
Read RX Reg
t12
Interrupt
note1
FIGURE 74 - PS/2 CHANNEL RECEIVE TIMING DIAGRAM
t1
t2
t3
t4
t5
t6
t7
t8
t11
PS/2 CHANNEL RECEPTION PARAMETERS
PARAMETER
MIN
TYP
The PS2 Channel’s CLK and DATA lines
are floated following PS2_EN=1 and
PS2_T/R=0.
Period of CLK
60
Duration of CLK high (active)
30
Duration of CLK low (inactive)
30
DATA setup time to falling edge of CLK.
1
FDC37N972 samples the data line on the
falling CLK edge.
DATA hold time from falling edge of CLK. 2
FDC37N972 samples the data line on the
falling CLK edge.
Duration of Data Frame. Falling edge of
Start bit CLK (1st clk) to falling edge of
Parity bit CLK (10th clk).
Falling edge of 11th CLK to RDATA_RDY
asserted.
364
MAX
100
UNITS
ns
302
151
151
us
us
us
us
us
2.002
ms
1.6
us
t9
t10
t11
t12
PARAMETER
Trailing edge of the 8051’s RD signal of
the Receive Register to RDATA_RDY bit
deasserted.
Trailing edge of the 8051’s RD signal of
the Receive Register to the CLK line
released to high-Z.
The PS2 Channel’s CLK and DATA lines
are driven to the values stored in the
WR_CLK and WR_DATA bits of the
Control Register when PS2_EN is written
to 0.
RDATA_RDY asserted to interrupt
generated. Note1- Interrupt is cleared by
reading the 8051 INT0 Source Register.
365
MIN
TYP
MAX
100
UNITS
ns
100
ns
100
ns
100
ns
PS/2 CHANNEL TRANSMIT TIMING DIAGRAM
t2
t5
t6
t7
t10
t8
t9
10 11
PS2_CLK
1
t1
PS2_DAT
2
t4
t11
S
b0 b1 b2 b3 b4 b5 b6 b7
t14
t16
P
PS2_EN
t12
PS2_T/R
t3
t13
XMIT_IDLE
RDATA_RDY
Write TX Reg
t15
Interrupt
note1
ORION005
FIGURE 75 - PS/2 CHANNEL TRANSMIT TIMING DIAGRAM
t1
t2
t3
t4
t5
PS/2 CHANNEL TRANSMISSION TIMING PARAMETERS
PARAMETER
MIN
TYP
MAX
The PS2 Channel’s CLK and DATA lines
100
are floated following PS2_EN=1 and
PS2_T/R=0.
PS2_T/R bit set to CLK driven low
100
preparing the PS2 Channel for data
transmission.
CLK line floated to XMIT_IDLE bit
1.7
deasserted.
Trailing edge of 8051 WR of Transmit
45
90
Register to DATA line driven low.
Trailing edge of 8051 WR of Transmit
90
130
Register to CLK line floated.
366
UNITS
ns
ns
us
ns
ns
t6
t7
t8
t9
t10
t11
t12
t13
t14
t15
t16
PARAMETER
Initiation of Start of Transmit cycle by the
PS2 channel controller to the auxilliary
peripheral’s responding by latching the
Start bit and driving the CLK line low.
Period of CLK
Duration of CLK high (active)
Duration of CLK low (inactive)
Duration of Data Frame. Falling edge of
Start bit CLK (1st clk) to falling edge of
Parity bit CLK (10th clk).
DATA output by FDC37N972 following
the falling edge of CLK. The auxilliary
peripheral device samples DATA
following the rising edge of CLK.
Rising edge following the 11th falling
clock edge to PS_T/R bit driven low.
Trailing edge of PS_T/R to XMIT_IDLE
bit asserted.
DATA released to high-Z following the
PS2_T/R bit going low.
XMIT_IDLE bit driven high to interrupt
generated. Note1- Interrupt is cleared by
reading the 8051 INT0 Source Register.
The PS2 Channel’s CLK and DATA lines
are driven to the values stored in the
WR_CLK and WR_DATA bits of the
Control Register when PS2_EN is written
to 0.
367
MIN
0.002
TYP
MAX
25.003
UNITS
ms
60
30
30
302
151
151
2.002
us
us
us
ms
3.5
7.1
us
400
800
ns
100
ns
100
ns
100
ns
100
ns
PS/2 CHANNEL “BIT-BANG” TIMING
PS2_CLK1
PS2_DAT
note1
note1
t1
t1
note2
Interrupt
note2
PS2_EN
FIGURE 76 - PS/2 CHANNEL “BIT-BANG” TRANSMIT TIMING DIAGRAM
t1
TABLE 250 - PS/2 CHANNEL “BIT-BANG” TRANSMIT TIMING PARAMETERS
PARAMETER
MIN
TYP
MAX
UNITS
Falling Edge of CLK to Interrupt generated.
1.1
us
8051 firmware responds to interrupt and
drives data line before rising edge of
PS2_CLK line.
8051 firmware clears Interrupt by reading the
8051 INT0 Source Register.
PS2_CLK1
PS2_DAT
note1
note1
t1
Interrupt
t1
note2
note2
PS2_EN
FIGURE 77 - PS/2 CHANNEL “BIT-BANG” RECEIVE TIMING DIAGRAM
t1
TABLE 251 - PS/2 CHANNEL “BIT-BANG” RECEIVE TIMING PARAMETERS
PARAMETER
MIN
TYP
MAX
Falling Edge of CLK to Interrupt generated.
100
8051 firmware responds to interrupt and latches data
line before rising edge of PS2_CLK line.
8051 firmware clears Interrupt by reading the 8051 INT0
Source Register.
368
UNITS
ns
10µ s
min.
PWRGD
3V
VCC2
CLOCKI
FIGURE 78 – POWER-FAIL EVENT
PARAMETER
Valid CLOCKI to PWRGD Deasserted
MIN
10
TYP
MAX
UNITS
µs
MAX
UNITS
µs
10µs
min.
PWRGD
3V
VCC2
CLOCKI
FIGURE 79 - VCC2 POWER-UP TIMING
PARAMETER
Valid CLOCKI to PWRGD Asserted
MIN
10
TYP
1µs
min.
1µs
min.
VCC1_PWRGD
VCC1
3V
3V
FIGURE 80 - VCC1_PWRGD TIMING
PARAMETER
Valid VCC1 to VCC1_PWRGD Deasserted
Valid VCC1 to VCC1_PWRGD Asserted
MIN
1
1
369
TYP
MAX
UNITS
µs
µs
IN CIRCUIT TEST (ICT)
The ICT impedance measurement is installed in
the Production Test Program. It is run after
Opens/Shorts
(Vcc
still
at
0V).
The
measurement forces 0.2V on all ICT pins
simultaneously and measures for less than
0.2uA. A failure at this time branches to a pin
by pin test that forces 0.2V and measures 0.2uA
on individual pins. Any pin greater then 0.2uA is
considered a failure.
Table 252 - ICT PIN MAP
PIN #
2
3
9
14
15
16
17
18
19
20
24
25
26
27
28
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
48
50
51
52
53
55
PIN NAME
PIN #
57
59
61
63
76
77
78
81
84
86
88
90
91
92
93
96
97
98
99
109
110
141
151
154
157
190
193
194
195
196
197
203
204
206
207
208
nDS1 / OUT5
nMTR1 / OUT6
nDIR
nINDEX
nTRK0
nWPRTPRT
nRDATA
nDSKCHG
FPD
IRTX
KSO11
KSO10
KSO9
KSO8
KSO7
KSO6
KSO5
KSO4
KSO3
KSO2
KSO1
KSO0
KS17
KS16
KS15
KS14
KS13
KS12
KS11
KS10
IMDAT
KCLK
KDAT
EMCLK
EMDAT
SA1
370
PIN NAME
SA3
SA5
SA7
SA9
nNoWS
nIOR
nIOW
SD1
SD3
SD5
SD7
nDACK0
DRQ0
nDACK1
DRQ1
nROMCS
nMEMRD
nMEMWR
PCI_CLK
VCC1_PWRGD
nPWR_LED
RXD2 / GPIO8
IN3
IN6
XOSEL
GPIO6
nEA
MODE
AB_DATA
AB_CLK
nBAT_LED
OUT7
GPIO16
GPIO17
GPIO18
GPIO19
BOARD LEVEL CONNECTIVITY TEST MODE
To allow the FDC37N972 to be tested efficiently at board level, a test mode is provided to allow board
level connectivity testing to be carried out. The board level connectivity test mode (AND tree mode) is
defined below.
The AND tree test mode is enabled and latched by:
IOWb = IORb = MEMWRb = MEMRDb = 0 and PWRGD = 1
When activated, this test mode forces all output and bidirectional pins to function as inputs. All these
input pins are now input to an AND tree which is output on nRESET_OUT. This will allow one single
input pin, when switched, to toggle the nRESET_OUT output, if all other input pins are high.
This test mode is disabled/reset by a POR.
371
FIGURE 81 - 208 PIN FLEX BGA 15.0X15.0X1.10 (PRELIMINARY)
372
MIN
A
A1
A2
D
D1
E
E1
H
0.05
1.35
29.90
27.90
29.90
27.90
0.09
NOM
30.00
28.00
30.00
28.00
MAX
1.6
0.15
1.45
30.10
28.10
30.10
28.10
0.230
L
L1
e
0
W
R1
R2
ccc
MIN
0.45
NOM
0.60
1.00
0.50BSC
0
0.17
0.08
0.08
MAX
0.75
7
0.27
0.20
0.08
Notes:
1)
Coplanarity is 0.080 mm or 3.2 mils maximum
2)
Tolerance on the position of the leads is 0.080 mm maximum
3)
Package body dimensions D1 and E1 do not include the mold protrusion.
Maximum mold protrusion is 0.25 mm
D imensions for foot length L measured at the gauge plane 0.25 mm above
the seating plane
Details of pin 1 identifier are optional but must be located within the zone
indicated
Controlling dimension: millimeter
4)
5)
6)
FIGURE 82 - 208 PIN TQFP PACKAGE OUTLINE
373
APPENDIX A
HIGH-PERFORMANCE 8051 CYCLE TIMING AND INSTRUCTION SET
The high-performance 8051 processor offers
increased performance by executing instructions
in a 4-clock cycle, as opposed to the standard
8051. The shortened bus timing improves the
instruction execution rate for most instructions
by a factor of three over the standard 8051
architectutres.
8051than they do on the standard 8051. In the
standard 8051, all instructions except for MUL
and DIV take one or two instruction cycles to
complete.
Int the high-performance 8051
architecture, instructions can take between one
and five instructions to complete. The average
speed improvement for the entire instruction set
is approximately 2.5X.
Some instructions require a different number of
instruction cycles on the high-performance
SYMBOL
A
Rn
direct
@Ri
rel
bit
#data
#data 16
addr 16
addr 11
INSTRUCTION
ARITHMETIC
ADD A, Rn
ADD A, direct
ADD A, @Ri
ADD A, #data
ADDC A, Rn
ADDC A, direct
ADDC A, @Ri
ADDC A, #data
LEGEND FOR INSTRUCTION SET TABLE
FUNCTION
Accumulator
Register R7-R0
Internal register address
Internal register pointed to by R0 or R1 (except MOVX)
Two’s complement offset byte
Direct bit address
8-bit constant
16-bit constant
16-bit destination address
11-bit destination address
TABLE 253 - 8051 INSTRUCTION SET
BYTE
INSTRUCTION
DESCRIPTION
COUNT
CYCLES
Add register to A
Add direct byte to A
Add data memory to A
Add immediate to A
Add register to A with
carry
Add direct byte to A with
carry
Add data memory to A
with carry
Add immediate to A with
carry
374
HEX
CODE
1
2
1
2
1
1
2
1
2
1
28-2F
25
26-27
24
38-3F
2
2
35
1
1
36-37
2
2
34
INSTRUCTION
SUBB A, Rn
SUBB A, direct
SUBB A, @Ri
SUBB A, #data
INC A
INC Rn
INC direct
INC @Ri
DEC A
DEC Rn
DEC direct
DEC @Ri
INC DPTR
MUL AB
DIV AB
DA A
LOGICAL
ANL A, Rn
ANL A, direct
ANL A, @Ri
ANL A, #data
ANL direct, A
ANL direct, #data
ORL A, Rn
ORL A, direct
ORL A, @Ri
ORL A, #data
ORL direct, A
ORL direct, #data
XORL A, Rn
XORL A, direct
XORL A, @Ri
DESCRIPTION
Subtract register from A
with borrow
Subtract direct byte
from A with borrow
Subtract data memory
from A with borrow
Subtract immediate
from A with borrow
Increment A
Increment register
Increment direct byte
Increment data memory
Decrement A
Decrement register
Decrement direct byte
Decrement data
memory
Increment data pointer
Multiply A by B
Divide A by B
Decimal adjust A
AND register to A
AND direct byte to A
AND data memory to A
AND immediate to A
AND A to direct byte
AND immediate data to
direct byte
OR register to A
OR direct byte to A
OR data memory to A
OR immediate to A
OR A to direct byte
OR immediate data to
direct byte
Exclusive-OR register to
A
Exclusive-OR direct byte
to A
Exclusive-OR data
memory to A
375
BYTE
COUNT
1
INSTRUCTION
CYCLES
1
HEX
CODE
98-9F
2
2
95
1
1
96-97
2
2
94
1
1
2
1
1
1
2
1
1
1
2
1
1
1
2
1
04
08-0F
05
06-07
14
18-1F
15
16-17
1
1
1
1
3
5
5
1
A3
A4
84
D4
1
2
1
2
2
3
1
2
1
2
2
3
58-5F
55
56-57
54
52
53
1
2
1
2
2
3
1
2
1
2
2
3
48-4F
45
46-47
44
42
43
1
1
68-6F
2
2
65
1
1
66-67
INSTRUCTION
XORL A, #data
XORL direct, A
XORL direct, #data
CLR A
CPL A
RL A
RLC A
RR A
RRC A
DATA TRANSFER
MOV A, RN
MOV A, direct
MOV A, @Ri
MOV A, #data
MOV Rn, A
MOV Rn, direct
MOV Rn, #data
MOV direct, A
MOV direct, Rn
MOV direct, direct
MOV direct, @Ri
MOV direct, #data
MOV @Ri, A
MOV @Ri, direct
MOV @Ri, #data
MOV DPTR, #data
MOVC A, @A+DPTR
DESCRIPTION
Exclusive-OR
immediate to A
Exclusive-OR A to direct
byte
Exclusive-OR
immediate to direct byte
Clear A
Complement A
Rotate A left
Rotate A left through
carry
Rotate A right
Rotate A right through
carry
Move register to A
Move direct byte to A
Move data memory to A
Move immediate to A
Move A to reigster
Move direct byte to
register
Move immediate to
register
Move A to direct byte
Move register to direct
byte
Move direct byte to
direct byte
Move data memory to
direct byte
Move immediate to
direct byte
Move A to data memory
Move direct byte to data
memory
Move immediate to data
memory
Move immediate to data
pointer
Move code byte relative
DPTR to A
376
BYTE
COUNT
2
INSTRUCTION
CYCLES
2
HEX
CODE
64
3
3
63
3
3
63
1
1
1
1
1
1
1
1
E4
F4
23
33
1
1
1
1
03
13
1
2
1
2
1
2
1
2
1
2
1
2
E8-EF
E5
E6-E7
74
F8-FF
A8-AF
2
2
78-7F
2
2
2
2
F5
88-8F
3
3
85
2
2
86-87
3
3
75
1
2
1
2
F6-F7
A6-A7
2
2
76-77
3
3
90
1
3
93
INSTRUCTION
MOVC A, @A+PC
MOVX A, @Ri
MOVX A, @DPTR
MOVX @Ri, A
MOVX @DPTR, A
PUSH direct
POP direct
XCH A, Rn
XCH A, direct
XCH A, @Ri
XCHD A, @Ri
Boolean
CLR C
CLR bit
SETB C
SETB bit
CPL C
CPL bit
ANL C, bit
ANL C, /bit
ORL C, bit
ORL C, /bit
MOV C, bit
MOV bit, C
BRANCHING
ACALL addr 11
LCALL addr 16
RET
RETI
BYTE
COUNT
1
INSTRUCTION
CYCLES
3
HEX
CODE
83
1
2-9
E2-E3
1
2-9
E0
1
2-9
F2-F3
1
2-9
F0
2
2
C0
2
2
D0
1
2
1
2
C8-CF
C5
1
1
C6-C7
1
1
D6-D7
Clear carry
Clear direct bit
Set Carry
Set direct bit
Complement carry
Complement direct bit
AND direct bit to carry
AND direct bit inverse to
carry
OR direct bit to carry
OR direct bit inverse to
carry
Move direct bit to carry
Move carry to direct bit
1
2
1
2
1
2
2
2
1
2
1
2
1
2
2
2
C3
C2
D3
D2
B3
B2
82
B0
2
2
2
2
72
A0
2
2
2
2
A2
92
Absolute call to
subroutine
Long call to subroutine
Return from subroutine
Return from interrupt
2
3
11-F1
3
1
1
4
4
4
12
22
32
DESCRIPTION
Move code byte relative
PC to A
Move external data (A8)
to A
Move external data
(A16) to A
Move A to external data
(A8)
Move A to external data
(A16)
Push direct byte onto
stack
Pop direct byte from
stack
Exchange A and register
Exchange A and direct
byte
Exchange A and data
memory
Exchange A and data
memory nibble
377
INSTRUCTION
AJMP addr 11
LJMP addr 16
SJMP rel
JC rel
JNC rel
JB bit, rel
JNB bit, rel
JMP @A+DPTR
JZ rel
JNZ rel
CJNE A, direct, rel
CJNE A, #d, rel
CJNE Rn, #d, rel
CJNE @Ri, #d, rel
DJNZ Rn, rel
DJNZ direct, rel
MISCELLANEOUS
NOP
DESCRIPTION
Absolute jump
unconditional
Long jump unconditional
Short jump (relative
address)
Jump on carry = 1
Jump on carry = 0
Jump on direct bit = 1
Jump on direct bit = 0
Jump indirect relative
DPTR
Jump on accumulator =
0
Jump on accumulator /=
0
Compare A, direct JNE
relative
Compare A, immediate
JNE relative
Compare reg,
immediate JNE relative
Compare Ind,
immediate JNE relative
Decrement register, JNZ
relative
Decrement direct byte,
JNZ relative
No operation
378
BYTE
COUNT
2
INSTRUCTION
CYCLES
3
HEX
CODE
01-E1
3
2
4
3
02
80
2
2
3
3
1
3
3
4
4
3
40
50
20
30
73
2
3
60
2
3
70
3
4
B5
3
4
B4
3
4
B8-BF
3
4
B6-B7
2
3
D8-DF
3
4
D5
1
1
00
APPENDIX B
HIGH PERFORMANCE 8051 EXTENDED INTERRUPT UNIT
Interrupts
The EXIF, EICON, EIE, and EIP registers
provide flags, enable control, and priority control
for the extended interrupt unit in the
FDC37N972 high-performance 8051.
When EA = 0, all interrupts are masked. The
only exception is the power-fail interrupt, which
is not affected by the EA bit. When EPFI = 1,
the power-fail interrupt is enabled, regardless of
the state of the EA bit. TABLE 92 on page 169
provides a summary of interrupt sources, flags,
enables, and priorities.
Interrupt Processing
Interrupt Priorities
When an enabled interrupt occurs, the CPU
vectors to the address of the interrupt service
routine (ISR) associated with that interrupt (See
TABLE 92 - 8051 INTERRUPTS on page 169).
The CPU executes the ISR to completion unless
another interrupt of higher priority occurs. Each
ISR ends with a RETI (return from interrupt)
instruction. After executing the RETI, the CPU
returns to the next instruction that would have
been executed if the interrupt had not occurred.
There are two stages of interrupt priority
assignment, interrupt level and natural priority.
The interrupt level (highest, high, or low) takes
precedence over natural priority. The power-fail
interrupt, if enabled, always has highest priority
and is the only interrupt that can have highest
priority. All other interrupts can be assigned
either high or low priority.
An ISR can only be interrupted by a higher
priority interrupt. That is, an ISR for a low-level
interrupt can only be interrupted by high-level
interrupt. An ISR for a high-level interrupt can
only be interrupted by the power-fail interrupt
(extended interrupt unit only).
In addition to an assigned priority level (high or
low), each interrupt also has a natural priority,
as listed in TABLE 92 - on page 169.
Simultaneous interrupts with the same priority
level (for example, both high) are resolved
according to their natural priority. For example,
if int0_n and int2 are both programmed as high
priority, int0_n takes precedence.
The 8051 always completes the instruction in
progress before servicing an interrupt. If the
instruction in progress is RETI, or a write access
to any of the IP, IE, EIP, or EIE SFRs, the 8051
completes one additional instruction before
servicing the interrupt.
Once an interrupt is being serviced, only an
interrupt of higher priority level can interrupt the
service routine of the interrupt currently being
serviced.
Interrupt Sampling
Interrupt Masking
The EA bit in the IE SFR (IE.7) is a global
enable for all interrupts except the power-fail
interrupt. When EA = 1, each interrupt is
enabled/masked by its individual enable bit.
379
The internal timers and serial ports generate
interrupts by setting their respective SFR
interrupt flag bits. External interrupts are
sampled once per instruction cycle.
int0_n and int1_n are both active low and can
be programmed to be either edge-sensitive or
level-sensitive, through the IT0 and IT1 bits in
the TCON SFR. For example, when IT0 = 0,
int0_n is level-sensitive and the 8051 sets the
IE0 flag when the int0_n pin is sampled low.
When IT0 = 1, int0_n is edge-sensitive and 8051
sets the IE0 flag when the int0_n pin is sampled
high then low on consecutive samples.
The remaining four external interrupts are edgesensitive only. int2 and int4 are active high,
int3_n and int5_n are active low. The power-fail
(pfi) interrupt is edge-sensitive, active high, and
sampled once per instruction cycle. To ensure
that edge-sensitive interrupts are detected, the
corresponding ports should be held high for 4
clk cycles and then low for 4 clk cycles. Levelsensitive interrupts are not latched and must
remain active until serviced.
at SFR locations 82h and 83h.
It is not
necessary to modify code to use DPTR0.
The FDC37N972 adds a second data pointer
(DPTR1) at SFR locations 84h and 85h. The
SEL bit in the DPTR Select Register, DPS (SFR
86h), selects the active pointer (see sections
DPL1, DPH1 and DPS below).
All DPTR-related instructions use the currently
selected data pointer. To switch the active
pointer, toggle the SEL bit. The fastest way to
do so is to use the increment instruction (INC
DPS). This requires only one instruction to
switch from a source address to a destination
address, saving application code from having to
save source and destination addresses when
doing a block move.
Timer 2
Interrupt Latency
Overview
Interrupt response time depends on the current
state of the 8051. The fastest response time is
5 instruction cycles: 1 to detect the interrupt,
and 4 to perform the LCALL to the ISR. The
maximum latency (13 instruction cycles) occurs
when the 8051 is currently executing a RETI
instruction followed by a MUL or DIV instruction.
The 13 instruction cycles in this case are: 1 to
detect the interrupt, 3 to complete the RETI, 5 to
execute the DIV or MUL, and 4 to execute the
LCALL to the ISR. For the maximum latency
case, the response time is 13 x 4 = 52 clk
cycles.
The high-performance 8051 in the FDC37N972
includes a third timer/counter (Timer 2). Timer
2 runs only in 16-bit mode and offers several
capabilities not available with Timers 0 and 1.
The modes available with Timer 2 are 16-bit
auto-reload timer/counter and baud rate
generator. The SFRs associated with Timer 2
are:
•
T2CON (SFR C8h)
•
RCAP2L (SFR CAh) – Used as the
16-bit LSB reload value when
Timer 2 is configured for autoreload mode.
•
RCAP2H (SFR CBh) – Used as the
16-bit MSB reload value when
Timer 2 is configured for autoreload mode.
•
TL2 (SFR CCh) – Lower 8 bits of
16-bit count.
•
TH2 (SFR CDh) – Upper 8 bits of
16-bit count.
Dual Data Pointers
The high-performance 8051 in the FDC37N972
employs dual data pointers to accelerate data
memory block moves. The standard 8051 data
pointer (DPTR) is a 16-bit value used to address
external RAM or peripherals. The FDC37N972
maintains the standard data pointer as DPTR0
380
operating mode.
TABLE 254 summarizes how the T2CON SFR
bits (TABLE 259) determine the Timer 2
RCLK
0
1
X
X
TABLE 254 - TIMER 2 MODE CONTROL SUMMARY
TCLK
TR2
MODE
0
1
16-bit Timer/Counter w/Auto-reload
X
1
Baud Rate Generator
1
1
Baud Rate Generator
X
0
Off
16-bit Timer/Counter Mode with Auto-reload
FIGURE 83 illustrates how Timer 2 operates in timer/counter mode with auto-reload. The 16-bit timer
counts CLK cycles (divided by 4 or 12). The TR2 bit enables the counter. When the count increments
from FFFFh, the overflow occurs. The overflow causes the TF2 flag is set, and t2_out goes high for
one CLK cycle. The overflow also causes the preloaded start value in the RCAP2L and RCAP2H
registers to be reloaded into the TL2 and TH2 registers.
T2M
DIVIDE BY 12
0
CLK
clk
DIVIDE BY 4
1
TL2
TH2
TF2
TR2
RCAP2L
INT
RCAP2H
FIGURE 83 - TIMER 2 TIMER/COUNTER WITH AUTO-RELOAD
Baud Rate Generator Mode
Setting either RCLK or TCLK to 1 configures Timer 2 to generate baud rates for Serial Port 0 in serial
mode 1 or 3. In baud rate generator mode, Timer 2 functions in auto-reload mode. However, instead
of setting the TF2 flag, the counter overflow is used to generate a shift clock for the serial port
function. As in normal auto-reload mode, the overflow also causes the preloaded start value in the
RCAP2L and RCAP2H registers to be reloaded into the TL2 and TH2 registers.
When either TCLK = 1 or RCLK = 1, Timer 2 is forced into auto-reload operation. The counter time
base in baud rate generator mode is clk/2.
381
Special Function Registers
The following SFRs are not part of the sandard 8051 architecture.
DPL1
The DPL1 register (TABLE 255) is the LSB of DPTR1 (see the section interrupts above).
TABLE 255 - DPL1 REGISTER - SFR 84H
84h
SFR ADDRESS
VCC1
POWER
0x00
DEFAULT
TYPE
BIT NAME
D7
R/W
A7
D6
R/W
A6
D5
R/W
A5
D4
R/W
A4
D3
R/W
A3
D2
R/W
A2
D1
R/W
A1
D0
R/W
A0
DPH1
The DPH1 register (TABLE 256) is the MSB of DPTR1 (see the section interrupts above).
TABLE 256 - DPH1 REGISTER - SFR 85H
85h
SFR ADDRESS
VCC1
POWER
0x00
DEFAULT
TYPE
BIT NAME
D7
R/W
A15
D6
R/W
A14
D5
R/W
A13
D4
R/W
A12
D3
R/W
A11
D2
R/W
A10
D1
R/W
A9
D0
R/W
A8
DPS
The DPS register (TABLE 257) is used to select the active DPTR (see the section interrupts above).
TABLE 257 - DPS REGISTER - SFR 86H
86h
SFR ADDRESS
VCC1
POWER
0x00
DEFAULT
D7
D6
D5
D4
D3
D2
D1
TYPE
R
R
R
R
R
R
R
RESERVED
BIT NAME
NOTE1 When SEL = ‘0’, instructions that use the DPTR will use DPL0 and DPH0. When SEL
instructions that use the DPTR will use DPL1 and DPH1.
382
D0
R/W
SEL1
= ‘1’,
CKCON
The default timer clock scheme for the DW8051 timers is 12 clk cycles per increment, the same as in
the standard 8051. However, in the DW8051, the instruction cycle is 4 clk cycles. Using the default
rate (12 clocks per timer increment) allows existing application code with real-time dependencies,
such as baud rate, to operate properly. However, applications that require fast timing can set the
timers to increment every 4 clk cycles by setting bits in the Clock Control register (CKCON) at SFR
location 8Eh (TABLE 258 and TABLE 259).
The CKCON bits that control the timer clock rates are:
CKCON BIT
5
4
3
COUNTER/TIMER
Timer 2
Timer 1
Timer 0
When a CKCON register bit is set to 1, the associated counter increments at 4-clk intervals. When a
CKCON bit is cleared, the associated counter increments at 12-clk intervals. The timer controls are
independent of each other. The default setting for all three timers is 0 (12-clk intervals). These bits
have no effect in counter mode.
TABLE 258 - CKCON REGISTER - SFR 8EH
8EH
SFR ADDRESS
VCC1
POWER
0x01
DEFAULT
TYPE
BIT NAME
D7
D6
R
R
RESERVED
D5
R/W
T2M
D4
R/W
T1M
D3
R/W
T0M
D2
R/W
MD2
D1
R/W
MD1
TABLE 259 - CKCON REGISTER BIT DESCRIPTIONS
FUNCTION
Reserved
T2M. Timer 2 clock select. When T2M = 0, Timer 2 uses
clk/12 (for compatibility with 80C32); when T2M = 1, Timer
2 uses clk/4. This bit has no effect when Timer 2 is
configured for baud rate generation.
CKCON.4
T1M. Timer 1 clock select. When T1M = 0, Timer 1 uses
clk/12 (for compatibility with 80C32); when T1M = 1, Timer
1 uses clk/4.
CKCON.3
T0M. Timer 0 clock select. When T0M = 0, Timer 0 uses
clk/12 (for compatibility with 80C32); when T0M = 1, Timer
0 uses clk/4.
CKCON.2-0
MD2, MD1, MD0 -- Control the number of cycles to be used
for external MOVX instructions.
BIT
CKCON.7-6
CKCON.5
383
D0
R/W
MD0
MPAGE
The MPAGE special function register (TABLE 260) replaces the function of the Port 2 latch in the
FDC37N972. During MOVX A, @Ri and MOVX @Ri, A instructions, the 8051 places the contents of
the MPAGE register on the upper eight address bits. This provides the paging function that is
normally provided by the Port 2 latch.
TABLE 260 - MPAGE REGISTER – SFR 92H
92H
SFR ADDRESS
VCC1
POWER
0x00
DEFAULT
TYPE
BIT NAME
D7
R/W
A15
D6
R/W
A14
D5
R/W
A13
D4
R/W
A12
D3
R/W
A11
D2
R/W
A10
D1
R/W
A9
D0
R/W
A8
T2CON
The T2CON register (TABLE 261 and TABLE 263) is used to configure Timer 2 (see the section
Interrupts above).
TABLE 261 – T2CON REGISTER - SFR C8H
C8h
SFR ADDRESS
VCC1
POWER
0x00
DEFAULT
TYPE
BIT NAME
D7
R/W
TF2
BIT
T2CON.7
T2CON.6
T2CON.5
T2CON.4
D6
R/W
RESERV
ED
D5
R/W
RCLK
D4
R/W
TCLK
D3
R/W
RESERV
ED
D2
R/W
TR2
D1
D0
R/W
R/W
RESERVED
TABLE 263 – T2CON REGISTER BIT DESCRIPTIONS
FUNCTION
TF2 Timer 2 overflow flag. Hardware will set TF2 when the
Timer 2 overflows from FFFFh. TF2 must be cleared to 0
by the software. TF2 will only be set to a 1 if RCLK and
TCLK are both cleared to 0. Writing a 1 to TF2 forces a
Timer 2 interrupt if enabled.
Reserved. This bit should be written as ‘0’.
RCLK Receive clock flag. Determines whether Timer 1 or
Timer 2 is used for Serial Port 0 timing of received data in
serial mode 1 or 3. RCLK =1 selects Timer 2 overflow as
the receive clock. RCLK =0 selects Timer 1 overflow as the
receive clock.
TCLK Transmit clock flag. Determines whether Timer 1 or
Timer 2 is used for Serial Port 0 timing of transmit data in
384
BIT
FUNCTION
serial mode 1 or 3. RCLK =1 selects Timer 2 overflow as
the transmit clock. RCLK =0 selects Timer 1 overflow as
the transmit clock.
Reserved. This bit should be written as ‘0’.
TR2. Timer 2 run control flag. TR2 = 1 starts Timer 2.
TR2 = 0 stops Timer 2.
Reserved. This bit should be written as ‘0’.
T2CON.3
T2CON.2
T2CON.1-0
RCAP2L
The RCAP2L register (TABLE 263) is the 16-bit LSB reload value (RV[7:0]) when Timer 2 is
configured for auto-reload mode (see the section interrupts above).
TABLE 263 - RCAP2L REGISTER – SFR CAH
CAh
SFR ADDRESS
VCC1
POWER
0x00
DEFAULT
TYPE
BIT NAME
D7
R/W
RV7
D6
R/W
RV6
D5
R/W
RV5
D4
R/W
RV4
D3
R/W
RV3
D2
R/W
RV2
D1
R/W
RV1
D0
R/W
RV0
RCAP2H
The RCAP2H register (TABLE 264) is the 16-bit MSB reload value (RV[15:8]) when Timer 2 is
configured for auto-reload mode (see the section interrupts above).
TABLE 264 - RCAP2H REGISTER - SFR CBH
CBh
SFR ADDRESS
VCC1
POWER
0x00
DEFAULT
TYPE
BIT NAME
D7
R/W
RV15
D6
R/W
RV14
D5
R/W
RV13
D4
R/W
RV12
385
D3
R/W
RV11
D2
R/W
RV10
D1
R/W
RV9
D0
R/W
RV8
TL2
The TL2 register (TABLE 265) is the 16-bit LSB Timer 2 count value (CV[7:0]) (see the section
Interrupts above).
TABLE 265 - TL2 REGISTER - SFR CCH
SFR ADDRESS
POWER
DEFAULT
TYPE
BIT NAME
D7
R/W
CV7
D6
R/W
CV6
D5
R/W
CV5
CCh
VCC1
0x00
D4
R/W
CV4
D3
R/W
CV3
D2
R/W
CV2
D1
R/W
CV1
D0
R/W
CV0
TH2
The TH2 register (Table 266
TABLE 266) is the 16-bit MSB Timer 2 count value (CV[15:8]) (see the section interrupts above).
TABLE 266 - TH2 REGISTER - SFR CDH
CDh
SFR ADDRESS
VCC1
POWER
0x00
DEFAULT
TYPE
BIT NAME
D7
R/W
CV15
D6
R/W
CV14
D5
R/W
CV13
D4
R/W
CV12
D3
R/W
CV11
D2
R/W
CV10
D1
R/W
CV9
D0
R/W
CV8
EXIF
The EXIF register (Table 268 and Table 269) contains the external interrupt flags for the extended
interrupt unit (see the section interrupts above).
TABLE 267 - EXIF REGISTER - SFR 91H
91h
SFR ADDRESS
VCC1
POWER
0x08
DEFAULT
TYPE
BIT NAME
D7
R/W
IE5
D6
R/W
IE4
D5
R/W
IE3
D4
R/W
IE2
386
D3
D2
R
R
RESERVED
D1
R
D0
R
BIT
EXIF.7
EXIF.6
EXIF.5
EXIF.4
EXIF.3
EXIF.2-0
TABLE 268 - EXIF REGISTER BIT DESCRIPTIONS
FUNCTION
IE5 External Interrupt 5 flag. IE5 = 1 indicates a falling
edge was detected at the int5_n pin. IE5 must be cleared
by software. Setting IE5 in software generates an interrupt,
if enabled.
IE4 External Interrupt 4 flag. IE4 = 1 indicates a rising
edge was detected at the int4 pin. IE4 must be cleared by
software. Setting IE4 in software generates an interrupt, if
enabled.
IE3 External Interrupt 3 flag. IE3 = 1 indicates a falling
edge was detected at the int3_n pin. IE3 must be cleared
by software. Setting IE3 in software generates an interrupt,
if enabled.
IE2 External Interrupt 2 flag. IE2 = 1 indicates a rising
edge was detected at the int2 pin. IE2 must be cleared by
software. Setting IE2 in software generates an interrupt, if
enabled.
Reserved. Read as ‘1’.
Reserved. Read as ‘0’.
EICON
The EICON register (TABLE 269 and TABLE 270) contains pfi and serial port 1 controls for the
extended interrupt unit (see the section interrupts above).
TABLE 269 - EICON REGISTER - SFR D8H
D8h
SFR ADDRESS
VCC1
POWER
0x40
DEFAULT
TYPE
BIT NAME
D7
R/W
SMOD1
BIT
EICON.7
EICON.6
EICON.5
EICON.4
D6
R/W
RESERV
ED
D5
R/W
EPFI
D4
R/W
PFI
D3
D2
R
R
RESERVED
D1
R
TABLE 270 - EICON REGISTER BIT DESCRIPTIONS
FUNCTION
SMOD1 Serial Port 1 baud rate doubler enable. When
SMOD1 = 1, the baud rate for Serial Port 1 is doubled.
Reserved. Read as ‘1’.
EPFI Enable power-fail interrupt. EPFI = 0 disables powerfail interrupt (pfi). EPFI = 1 enables interrupts generated by
the pfi pin.
PFI Power-fail interrupt flag. PFI = 1 indicates a power-fail
387
D0
R
BIT
FUNCTION
interrupt was detected at the pfi pin. PFI must be cleared
by software before exiting the interrupt service routine.
Otherwise, the interrupt occurs again. Setting PFI in
software generates a power-fail interrupt, if enabled.
Reserved. Read as ‘0’.
EICON.3-0
EIE
The EIE register (Table 273 and Table 275) contains the external interrupt enables for the extended
interrupt unit (see the section interrupts above).
TABLE 271 - EIE REGISTER - SFR E8H
E8h
SFR ADDRESS
VCC1
POWER
0xE0
DEFAULT
TYPE
BIT NAME
D7
D6
R
R
RESERVED
BIT
EIE.7-5
EIE.4
EIE.3
EIE.2
EIE.1
EIE.0
D5
R
D4
R
D3
R/W
EX5
D2
R/W
EX4
D1
R/W
EX3
TABLE 272 - EIE REGISTER BIT DESCRIPTIONS
FUNCTION
Reserved. Read as ‘1’.
Reserved. Read and Write as ‘0’.
EX5 Enable external interrupt 5. EX5 = 0 disables external
interrupt 5 (int5_n). EX5 = 1 enables interrupts generated
by the int5_n pin.
EX4 Enable external interrupt 4. EX4 = 0 disables external
interrupt 4 (int4). EX4 = 1 enables interrupts generated by
the int4 pin.
EX3 Enable external interrupt 3. EX3 = 0 disables external
interrupt 3 (int3_n). EX3 = 1 enables interrupts generated
by the int3_n pin.
EX2 Enable external interrupt 2. EX2 = 0 disables external
interrupt 2 (int2). EX2 = 1 enables interrupts generated by
the int2 pin.
388
D0
R/W
EX2
EIP
The EIP register (Table 273 and Table 274) contains the external interrupt priority controls for the
extended interrupt unit (see the section interrupts above).
TABLE 273 - EIP REGISTER - SFR F8H
F8h
SFR ADDRESS
VCC1
POWER
0xE0
DEFAULT
TYPE
BIT NAME
D7
D6
R
R
RESERVED
BIT
EIP.7-5
EIP.4
EIP.3
EIP.2
EIP.1
EIP.0
D5
R
D4
R
D3
R/W
PX5
D2
R/W
PX4
TABLE 274 - EIP REGSITER BIT DESCRIPTIONS
FUNCTION
Reserved. Read as ‘1’.
Reserved. Read and Write as ‘0’.
PX5 External interrupt 5 priority control. PX5 =
external interrupt 5 (int5_n) to low priority. PX5 =
external interrupt 5 to high priority.
PX4 External interrupt 4 priority control. PX4 =
external interrupt 4 (int4) to low priority. PX2 =
external interrupt 4 to high priority.
PX3 External interrupt 3 priority control. PX3 =
external interrupt 3 (int3_n) to low priority. PX3 =
external interrupt 3 to high priority.
PX2 External interrupt 2 priority control. PX2 =
external interrupt 2 (int2) to low priority. PX2 =
external interrupt 2 to high priority.
389
D1
R/W
PX3
0 sets
1 sets
0 sets
1 sets
0 sets
1 sets
0 sets
1 sets
D0
R/W
PX2
© STANDARD MICROSYSTEMS CORPORATION (SMSC) 2000
80 Arkay Drive
Hauppauge, NY 11788
(631) 435-6000
FAX (631) 273-3123
Standard Microsystems is a registered trademark of Standard Microsystems Corporation, and SMSC, ChiProtect, UltraI/O and MultiMode are trademarks of Standard Microsystems Corporation. Product names and company names are the trademarks of their
respective holders. Circuit diagrams utilizing SMSC products are included as a means of illustrating typical applications; consequently
complete information sufficient for construction purposes is not necessarily given. Although the information has been checked and is
believed to be accurate, no responsibility is assumed for inaccuracies. SMSC reserves the right to make changes to specifications and
product descriptions at any time without notice. Contact your local SMSC sales office to obtain the latest specifications before placing
your product order. The provision of this information does not convey to the purchaser of the semiconductor devices described any
licenses under the patent rights of SMSC or others. All sales are expressly conditional on your agreement to the terms and conditions
of the most recently dated version of SMSC's standard Terms of Sale Agreement dated before the date of your order (the "Terms of
Sale Agreement"). The product may contain design defects or errors known as anomalies which may cause the product's functions to
deviate from published specifications. Anomaly sheets are available upon request. SMSC products are not designed, intended,
authorized or warranted for use in any life support or other application where product failure could cause or contribute to personal injury
or severe property damage. Any and all such uses without prior written approval of an Officer of SMSC and further testing and/or
modification will be fully at the risk of the customer. Copies of this document or other SMSC literature, as well as the Terms of Sale
Agreement, may be obtained by visiting SMSC’s website at http://www.smsc.com.
SMSC DISCLAIMS AND EXCLUDES ANY AND ALL WARRANTIES, INCLUDING WITHOUT LIMITATION ANY AND ALL IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND AGAINST INFRINGEMENT,
AND ANY AND ALL WARRANTIES ARISING FROM ANY COURSE OF DEALING OR USAGE OF TRADE.
IN NO EVENT SHALL SMSC BE LIABLE FOR ANY DIRECT, INCIDENTAL, INDIRECT, SPECIAL, PUNITIVE, OR
CONSEQUENTIAL DAMAGES, OR FOR LOST DATA, PROFITS, SAVINGS OR REVENUES OF ANY KIND; REGARDLESS OF
THE FORM OF ACTION, WHETHER BASED ON CONTRACT, TORT, NEGLIGENCE OF SMSC OR OTHERS, STRICT LIABILITY,
BREACH OF WARRANTY, OR OTHERWISE; WHETHER OR NOT ANY REMEDY IS HELD TO HAVE FAILED OF ITS ESSENTIAL
PURPOSE; AND WHETHER OR NOT SMSC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
FDC37N972 Rev. 03/28/2000