USB97C102 [SMSC]

Multi-Endpoint USB Peripheral Controller with Integrated 5 Port HUB; 多端点USB外设控制器,集成5端口集线器
USB97C102
型号: USB97C102
厂家: SMSC CORPORATION    SMSC CORPORATION
描述:

Multi-Endpoint USB Peripheral Controller with Integrated 5 Port HUB
多端点USB外设控制器,集成5端口集线器

控制器
文件: 总80页 (文件大小:521K)
中文:  中文翻译
下载:  下载PDF数据表文档文件
USB97C102  
Multi-Endpoint USB Peripheral Controller with  
Integrated 5 Port HUB  
FEATURES  
!"  
High Performance USB Peripheral Controller  
Engine  
-
-
-
-
Additional USB and ISA Suspend Resume  
Events  
-
-
-
-
-
-
-
-
-
Integrated USB Transceiver  
Serial Interface Engine (SIE)  
8051 Microcontroller (MCU)  
Patented Memory Management Unit (MMU)  
4 Channel 8237 DMA Controller (ISADMA)  
4K Byte On Board USB Packet Buffer  
Quasi-ISA Peripheral Interface  
USB Bus Snooping Capabilities  
GPIOs  
Internal 8MHz Ring Oscillator for Immediate  
Low Power Code Execution  
24, 16, 12, 8, 4, and 2 MHz PLL Taps For on  
the Fly MCU and DMA Clock Switching  
Independent Clock/Power Management for  
SIE, MMU, DMA and MCU  
!"  
!"  
DMA Capability with ISA Memory  
-
-
Four Independent Channels  
Transfer Between Internal and External  
Memory  
Transfer Between I/O and Internal Memory  
External Bus Master Capable  
!"  
!"  
Pin Compatible with SMSC USB97C100  
Complete USB Specification 1.1 Compatibility  
-
-
-
-
-
Isochronous, Bulk, Interrupt, and Control Data  
Independently Configurable per Endpoint  
Dynamic Hardware Allocation of -Packet  
Buffer for Virtual Endpoints  
Multiple Virtual Endpoints (up to 16 TX, 16 RX  
Simultaneously)  
Scatter Gather DMA  
-
-
Four Independent Channels  
Up to 16 Transfers can be Programmed to  
Occur Consecutively Without MCU  
InterventionExternal MCU Memory Interface  
1M Byte Code and Data Storage via 16K  
Windows  
Flash, SRAM, or EPROM  
Downloadable via USB, Serial Port, or ISA  
Peripheral  
-
-
Multiple Alternate Address Filters  
Dynamic Endpoint Buffer Length Allocation (0-  
1280 Byte Packets)  
-
-
-
!"  
!"  
USB Full (12Mbps) and Low Speed Capability  
MMU and SRAM Buffer Allow Buffer Optimization  
and Maximum Utilization of USB Bandwidth  
!"  
Quasi-ISA Interface Allows Interface to New and  
"Legacy" Peripheral Devices  
-
-
-
-
128 Byte Page Size  
10 Pages Maximum per Packet  
32 Deep Receive Packet Queue  
Up to 5 Deep Transmit Packet Queue, per  
Endpoint  
-
-
-
-
-
-
1M ISA Memory Space via 4K MCU Window  
64K ISA I/O Space via 256 Byte MCU Window  
4 External Interrupt Inputs  
4 DMA Channels  
Variable Cycle Timing  
8 Bit Data Path  
-
-
Hardware Generated Packet Header Records  
Each Packet Status Automatically  
Simultaneous Arbitration Between MCU, SIE,  
and ISA DMA Accesses  
!"  
!"  
!"  
!"  
3.3 Volt, Low Power Operation  
5 Volt Tolerant Operation on I/O Signal Pins  
On Board Crystal Driver Circuit  
128 Pin QFP Package  
!"  
Extended Power Management  
Standard 8051 "Stop Clock" Modes  
-
GENERAL DESCRIPTION  
The USB97C102 is a flexible, general purpose USB peripheral interface and controller ideally suited for multiple  
endpoint applications. The USB97C102 provides an ISA-like bus interface, which will allow virtually any PC peripheral  
to be placed at the end of a USB connection. Its unique dynamic buffer architecture overcomes the throughput  
disadvantages of existing fixed FIFO buffer schemes allowing maximum utilization of the USB connection’s overall  
bandwidth. This architecture minimizes the integrated microcontroller’s participation in the USB data flow, allowing  
back-to-back packet transfers to block oriented devices. The efficiency of this architecture allows floppy drives to  
coexist with other peripherals such as serial and parallel ports on a single USB link.  
SMSC DS – USB97C102  
Rev. 03/23/2000  
The USB97C102 allows external program code to be downloaded over the USB to allow easy implementation of  
varied peripheral USB Device Classes and combinations. This also provides a method for convenient field upgrades  
and modifications.  
© 2000 STANDARD MICROSYSTEMS CORPORATION (SMSC)  
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 is a trademark 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.  
SMSC DS – USB97C102  
Page 2  
Rev. 03/23/2000  
TABLE OF CONTENTS  
FEATURES....................................................................................................................................................................... 1  
GENERAL DESCRIPTION ............................................................................................................................................... 1  
PIN CONFIGURATION..................................................................................................................................................... 4  
DESCRIPTION OF PIN FUNCTIONS............................................................................................................................... 5  
BUFFER TYPE DESCRIPTIONS...................................................................................................................................... 7  
CODE DEBUGGER INTERFACE................................................................................................................................ 7  
FUNCTIONAL DESCRIPTION.......................................................................................................................................... 9  
Serial Interface Engine (SIE)......................................................................................................................................... 9  
Micro Controller Unit (MCU) .......................................................................................................................................... 9  
SIEDMA 9  
Memory Management Unit (MMU) Register Description ............................................................................................... 9  
ISADMA 9  
Applications................................................................................................................................................................... 9  
Code Space................................................................................................................................................................. 12  
Data Space.................................................................................................................................................................. 13  
ISADMA Memory Map................................................................................................................................................. 15  
MCU Block Register Summary.................................................................................................................................... 15  
SGDMA Block Register Summary............................................................................................................................... 16  
MMU Block Register Summary ................................................................................................................................... 17  
SIE Block Register Summary ...................................................................................................................................... 17  
MCU REGISTER DESCRIPTION ................................................................................................................................... 19  
MCU Runtime Registers.............................................................................................................................................. 19  
FIFO Status Registers................................................................................................................................................. 22  
MCU ISA Interface Registers ...................................................................................................................................... 29  
8237 (ISADMA) REGISTER DESCRIPTION .................................................................................................................. 31  
Memory Map ............................................................................................................................................................... 31  
Runtime Registers....................................................................................................................................................... 33  
MEMORY MANAGEMENT UNIT (MMU) REGISTER DESCRIPTION ........................................................................... 44  
MMU Interface Registers............................................................................................................................................. 44  
MMU Free Pages Register.............................................................................................................................................. 47  
32 BYTE DEEP TX COMPLETION FIFO REGISTER .................................................................................................... 47  
Tx FIFO POP Register.................................................................................................................................................... 49  
SERIAL INTERFACE ENGINE (SIE) REGISTER DESCRIPTION ................................................................................. 52  
Packet Header Definition............................................................................................................................................. 52  
SIE Interface Registers................................................................................................................................................ 53  
ALTERNATE ADDRESS ENDPOINT MAPPING............................................................................................................ 56  
Multiple Endpoint Mapping .......................................................................................................................................... 56  
USB HUB BLOCK........................................................................................................................................................... 64  
SIU System Interface Unit ........................................................................................................................................... 64  
HIU Hub Interface Unit ................................................................................................................................................ 64  
HUB Block Register Summary..................................................................................................................................... 65  
Disconnecting the USB Hub from the USB function.................................................................................................... 67  
USB97C100 Compatibility Mode................................................................................................................................. 67  
DC PARAMETERS ......................................................................................................................................................... 68  
MAXIMUM GUARANTEED RATINGS ........................................................................................................................ 68  
USB PARAMETERS....................................................................................................................................................... 70  
USB DC PARAMETERS ............................................................................................................................................. 70  
USB AC PARAMETERS ............................................................................................................................................. 71  
MECHANICAL OUTLINE................................................................................................................................................ 80  
SMSC DS – USB97C102  
Page 3  
Rev. 03/23/2000  
PIN CONFIGURATION  
SA10  
SA9  
1
102  
101  
nMASTER  
2
VCC  
3
SA8  
SA7  
100  
99  
READY  
EXTCLK  
4
SA6  
5
98  
FALE  
6
GND  
SA5  
SA4  
97  
96  
95  
94  
93  
7
nPWREN5  
nPWROK5  
nPWREN4  
nPWROK4  
nPWREN3  
nPWROK3  
nPWREN2  
nPWROK2  
GND  
GND  
SA3  
8
9
SA2  
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  
SA1  
92  
91  
90  
89  
88  
87  
86  
85  
84  
SA0  
SA13  
SA14  
SA15  
SA16  
SA17  
SA18  
SA19  
GND  
IRQ3  
IRQ2  
IRQ1  
IRQ0  
VCC  
USBD+  
USBD-  
PD+5  
PD-5  
USB97C102  
83  
82  
PD+4  
PD-4  
PD+3  
81  
80  
GND  
PD+2  
PD-3  
PD-2  
79  
78  
77  
76  
75  
74  
73  
72  
71  
nTEST  
PWRGD  
AVDD  
FA19  
FA18  
FA11  
FA9  
RESET_IN  
TST_OUT  
XTAL1  
XTAL2  
GND  
CLKOUT  
FA8  
70  
69  
FA13  
FA14  
FA17  
GND  
nFWR  
GPIO0  
GPIO1  
GPIO2  
GPIO3  
GPIO4  
68  
67  
66  
65  
FA16  
SMSC DS – USB97C102  
Page 4  
Rev. 03/23/2000  
DESCRIPTION OF PIN FUNCTIONS  
Table 1 - USB97C102 Pin Configuration  
QFP PIN  
NUMBER  
BUFFER  
TYPE  
SYMBOL  
READY  
PIN DESCRIPTION  
ISA INTERFACE  
100  
Channel is ready when high.  
IP  
ISA memory or slave devices use this signal to lengthen a bus  
cycle from the default time. Extending the length of the bus cycle  
can only be done when the bus cycles are derived from the Internal  
DMA controller core. 8051 MCU generated Memory or I/O accesses  
cannot and will not be extended even if READY is asserted low by  
an external ISA slave device. The external slave device negates this  
signal after decoding a valid address and sampling the command  
signals (nIOW, nIOR, nMEMW, and nMEMR). When the slave’s  
access has completed, this signal should be allowed to float high.  
104, 106,  
108, 110  
DRQ[3:0]  
DMA Request channels 3-0; active high.  
I
These signals are used to request DMA service from the DMA controller.  
The requesting device must hold the request signal until the DMA  
controller drives the appropriate DMA acknowledge signal (nDACK[3:0]).  
105, 107,  
109, 111  
nDACK  
[3:0]  
DMA Acknowledge channels 3-0; active low.  
O8  
These signals are used to indicate to the DMA requesting device that it  
has been granted the ISA bus.  
103  
TC  
DMA Terminal Count; active high.  
O8  
O8  
This signal is used to indicate that a DMA transfer has completed.  
System Address Bus  
19-13, 127-7, SA[19:0]  
9-12  
These signals address memory or I/O devices on the ISA bus.  
System Data Bus  
112-115, 117- SD[7:0]  
120  
I/O8  
O8  
These signals are used to transfer data between system devices.  
Address Enable  
122  
AEN  
This signal indicates address validation to I/O devices. When low this  
signal indicates that an I/O slave may respond to addresses and I/O  
commands on the bus. This signal is high during DMA cycles to prevent  
I/O slaves from interpreting DMA cycles as valid I/O cycles.  
123  
124  
nIOW  
nIOR  
I/O Write; active low.  
O8  
O8  
This signal indicates to the addressed ISA I/O slave to latch data from  
the ISA bus.  
I/O Read; active low.  
This signal indicates to the addressed ISA I/O slave to drive data on the  
ISA bus.  
125  
126  
nMEMR  
nMEMW  
Memory read; active low  
This signal indicates to the addressed ISA memory slave to drive  
data on the ISA bus.  
O8  
O8  
Memory write; active low  
This signal indicates to the addressed ISA memory slave to latch data  
from the ISA bus.  
102  
nMASTER  
External Bus master, active low  
IP  
This signal forces the USB97C102 to immediately tri-state its external  
bus, even if internal transactions are not complete. All shared ISA  
signals are tri-stated, except 8237 nDACKs, which can be used in gang  
mode to provide external bus-master handshaking. This pin must be  
used with some handshake mechanism to avoid data corruption.  
21-24  
IRQ[3:0]  
Interrupt Request 3-0; active high  
I
These signals are driven by ISA devices on the ISA bus to interrupt the  
8051.  
SMSC DS – USB97C102  
Page 5  
Rev. 03/23/2000  
QFP PIN  
NUMBER  
30  
BUFFER  
TYPE  
SYMBOL  
XTAL1/  
PIN DESCRIPTION  
24MHz Crystal or clock input.  
ICLKx  
Clock In  
This pin can be connected to one terminal of the crystal or can be  
connected to an external clock when a crystal is not used.  
31  
99  
XTAL2  
24MHz Crystal  
OCLKx  
ICLK  
This is the other terminal of the crystal.  
Alternate clock to 8237  
EXTCLK  
CLKOUT  
An external clock can be used for the internal 8237. This clock can be  
used to synchronize the 8237 to other devices.  
33  
Clock output.  
O8  
This clock frequency is the same as the 8051 running clock.  
This clock is stopped when the 8051 is stopped. Peripherals should not  
use this clock when they are expected to run when the 8051 is stopped.  
This clock can be used to synchronize other devices to the 8051.  
USB INTERFACE  
87, 86  
USBD-  
USB Upstream Connection signals  
IOUSB  
O24  
USBD+  
These are two point-to-point signals and driven differentially.  
USB Power Enable  
A low signal on this pin applies power to the associated USB port (port  
#5 through #2). This output signal is active low.  
96, 94, 92,  
90.  
nPWREN[5:2]  
USB Over-Current Sense  
Input to indicate an over-current condition for a bus powered USB  
device on an external downstream port (port #5 through #2).  
95, 93, 91,  
89.  
nPWROK[5:2]  
I
85, 84, 83,  
82, 81, 78,  
79, 77.  
nPD+[5:2],  
nPD -[5:2]  
USB Downstream Connection Signals  
IOUSB  
These are two point-to-point signals and driven differentially. They are  
used as standard “Walk Up” USB Port Connections  
FLASH INTERFACE  
Flash ROM Data Bus  
These signals are used to transfer data between 8051 and the external  
FLASH.  
45-52  
FD[7:0]  
IO8  
O8  
75, 74, 68,  
65, 64, 69,  
70, 63, 73,  
43, 72, 71,  
62-58,  
FA[19:0]  
Flash ROM Address Bus  
These signals address memory locations within the FLASH.  
56-54  
42  
NFRD  
NFWR  
nFCE  
FALE  
Flash ROM Read; active low  
Flash ROM Write; active low  
Flash ROM Chip Select; active low  
Flash ROM address latch enable  
POWER SIGNALS  
O8  
O8  
O8  
O8  
66  
44  
98  
25,57,76,  
101,121  
VCC  
+3.3 Volt Power  
Ground Reference  
8, 20, 32, 53, GND  
67, 80, 88,  
97, 116  
MISCELLANEOUS  
41-34  
27  
GPIO[7:0]  
General Purpose I/O.  
I/O24  
I
These pins can be configured as inputs or outputs under software  
control.  
PWRGD  
Active high input.  
This signal is used to indicate to that chip that a good power level has  
been reached. When inactive/low, all pins are Tri-stated except  
TST_OUT and a POR is generated.  
SMSC DS – USB97C102  
Page 6  
Rev. 03/23/2000  
QFP PIN  
NUMBER  
28  
BUFFER  
TYPE  
SYMBOL  
PIN DESCRIPTION  
Power on reset; active high  
RESET_IN  
I
This signal is used by the system to reset the chip. It also generates an  
internal POR.  
29  
26  
TST_OUT  
nTEST  
XNOR Chain output  
O8  
IP  
This signal is used for testing the chip via an internal XNOR Chain.  
Test input  
This signal is a manufacturing test pin. User can pull it high or leave it  
unconnected.  
BUFFER TYPE DESCRIPTIONS  
Table 2 - USB97C102 Buffer Type Description  
DESCRIPTION  
Input (no pull-up)  
BUFFER  
I
IP  
O8  
Input 90µA with internal pull-up  
Output with 8mA drive  
I/O8  
I/O16  
O24  
I/ODP24  
ICLKx  
OCLKx  
ICLK  
IOUSB  
Input/output with 8mA drive  
Input/output with 16mA drive  
Output, 24mA sink, 12mA source.  
Input/Output drain , 24mA sink, 12mA source with 90µA pull-up  
XTAL clock input  
XTAL clock output  
Clock input (TTL levels)  
Defined in USB specification V1.1  
CODE DEBUGGER INTERFACE  
This interface is made available by driving NTEST=0 and TSTOUT=0 (In this mode, TSTOUT is an input of the chip).  
In this mode, the pin functions are defined as follows:  
QFP PIN  
NUMBER  
BUFFER  
TYPE  
SYMBOL  
PIN DESCRIPTION  
64, 69, 70, FA[15:0]  
63, 73, 43,  
72, 71, 62-  
58,  
8051 Address Bus  
I
56-54  
42  
66  
112-115,  
117-120  
44  
NFRD  
NFWR  
FD[7:0]  
Data Read Strobe; active low  
Data Write; active low  
Data Bus  
I
I
I/O8  
nFCE  
FA19  
FA18  
FA17  
FA16  
8051 T1IN timer signal  
8051 T0IN timer signal  
8051 WAKE interrupt signal  
8051 INT1 interrupt signal  
8051 INT0 interrupt signal  
O8  
O8  
O8  
O8  
O8  
75  
74  
68  
65  
SMSC DS – USB97C102  
Page 7  
Rev. 03/23/2000  
USB97C102 BLOCK DIAGRAM  
To Upstream  
USB Device  
To Walk-up  
USB Ports  
Dual Speed USB  
XCVR  
Dual Speed USB  
XCVR  
Dual Speed USB  
XCVR  
Dual Speed USB  
XCVR  
End Point  
Control  
Serial Interface Engine  
Dual Speed USB  
XCVR  
Internal HUB  
Memory  
Management  
Unit  
Map RAM  
SIE DMA  
RX/  
Arbiter  
TX  
Queue  
4k Data Buffer RAM  
FD[7:0]  
Flash/  
SRAM  
Interface  
nFRD  
8051 SGDMA Control  
SGDMA WRAPPER  
nFWR  
nFCE  
Start DMA  
Queue Ctrl  
8051 CPU  
General  
Purpose  
IO  
GPIO[7:0]  
GPIO  
8237  
Done DMA  
Queue Ctrl  
SD[7:0],  
SA[19:0]  
97C102 Block Diagram  
NIOW,  
nIOR,  
nMEMW,  
nMEMR  
DRQ[3:0],  
nDACK[3:0],  
TC,AEN  
IRQ[3:0]  
SMSC DS – USB97C102  
Page 8  
Rev. 03/23/2000  
FUNCTIONAL DESCRIPTION  
The USB97C102 incorporates a USB Serial Interface Engine (SIE), 8051 Microcontroller Unit (MCU), Serial Interface  
Engine DMA (SIEDMA), a programmable 8237 ISA bus DMA controller (ISADMA), 4K bytes of SRAM for data stream  
buffering, and a patented MMU (Memory Management Unit) to dynamically manage buffer allocation. The semi-  
automatic nature of the SIEDMA, ISADMA, and MMU blocks frees the MCU to provide enumeration, protocol and  
power management. A bus arbiter integrated into the MMU assures that transparent access between the SIEDMA,  
ISADMA, and MCU to the SRAM occurs.  
Serial Interface Engine (SIE)  
The SIE is a USB low-level protocol interpreter. The SIE controls the USB bus protocol, packet generation/extraction,  
parallel-to-serial/serial-to-parallel conversion, CRC coding/decoding, bit stuffing, and NRZI coding/decoding.  
The SIE can be dynamically configured as having any combination of 0-16 transmit, and 0-16 receive endpoints, for  
up to 4 independent addresses. There are 3 alternate and one local address. The alternate addresses, for example,  
can be used for Hub addresses. The SIE can also "Receive All Addresses" for bus snooping.  
Micro Controller Unit (MCU)  
The 8051 embedded controller is a static CMOS MCU which is fully software compatible with the industry standard  
Intel 80C51 micro-controller. All internal registers of the USB97C102 blocks are mapped into the external memory  
space of the MCU.  
A detailed description of the microcontroller’s internal registers and instruction set can be found in the “USB97C102  
Programmer’s Reference Guide”.  
SIEDMA  
This is a simplified DMA controller, which automatically transfers data between SIE and SRAM via MMU control. The  
SIEDMA appends a status header containing frame number, endpoint, and byte count to each incoming packet  
before notifying the MCU of its arrival. This block’s operation is transparent to the firmware.  
Memory Management Unit (MMU) Register Description  
This patented MMU consists of a 4k buffer RAM which is allocated in 32 pages of 128 bytes. Packets can be  
allocated with up to 10 pages each (1280 bytes). The buffer can therefore concurrently hold up to 32 packets with a  
64 byte payload. For isochronous pipes, it can hold 3 packets with a 1023 byte payload each, and still have room for  
two more 64 byte packets.  
This block supports 16 independent transmit FIFO queues (one for each endpoint), and a single receive queue. Each  
endpoint can have up to five transmit packets queued. The receive queue can accept 32 packets of any size  
combination before forcing the host to back off.  
The arbiter makes the single-ported buffer RAM appear to be simultaneously available to the MCU, the four channels  
of the ISADMA, and the SIEDMA for receiving and transmitting packets.  
ISADMA  
This is an industry standard 8237 DMA controller to transfer data between the ISA bus and the SRAM under MMU  
control. This DMA contains status and control registers which can be accessed and programmed by the 8051  
controller. The 8237 can run at 2, 4, or 8 MHz internally, or via an external clock to synchronize it with another  
source.  
SGDMA  
A four channel Scatter-Gather DMA will run the 8237 DMA controller once the MCU indicates which packets to  
transfer. The SGDMA performs scattering/gathering operations from the MMU to/from the external ISA memory.  
It also allows ISA device to/from MMU transfer.  
Applications  
The USB97C102 enables entirely new I/O applications, as well as new form factors for existing Legacy I/O  
applications. PC98 compliance encourages the elimination ofDMA, IRQ and addressing conflicts via total on-board  
ISA elimination. With the USB97C102, the ISA bus can be eliminated from motherboards without sacrificing the huge  
infrastructure of Legacy I/O ports. By moving these devices to the flexible USB bus, new form factors such as monitor  
peripheral clusters are also possible (mouse, keyboard, serial, parallel ports in a USB connected monitor). PC  
system designers are no longer constrained by the physical borders of the motherboard. The USB97C102 is ideal for  
USB peripherals which require considerable bandwidth, such as floppy drives, audio, IR, etc. The following block  
diagrams illustrate these applications.  
SMSC DS – USB97C102  
Page 9  
Rev. 03/23/2000  
TYPICAL PC MOTHERBOARD APPLICATION  
Upstream USB  
USB  
South  
Bridge  
Floppy  
PS/2  
Serial  
Parallel  
FIR  
37C67X  
97C102  
SIO  
SPKR  
MIC  
ISA AUDIO  
Downstream USB Walkup Ports  
FIGURE 2 – USB97C102 CONFIGURED IN A PC MOTHERBOARD  
TYPICAL MONITOR APPLICATION  
FLOPPY  
USB  
Upstream  
37C67X  
SIO  
PS/2  
97C102  
SERIAL/FIR  
ISA  
CODEC  
PARALLEL  
USB Downstream  
Walkup Ports  
FIGURE 3 – USB97C102 CONFIGURED FOR MONITOR, HUB, AND PERIPHAL CONSTELLATION  
SMSC DS – USB97C102  
Page 10  
Rev. 03/23/2000  
TYPICAL FLOPPY DRIVE APPLICATION  
USB Upstream  
37C78  
FDC  
97C102  
USB Downstream  
Walkup Ports  
FIGURE 4 – USB97C102 CONFIGURED FOR FLOPPY DRIVE APPLICATION AND WALKUP PORTS  
TYPICAL SIGNAL CONNECTIONS  
SRAM  
USB UPSTREAM  
FDC  
SD[7..0]  
LPT  
UART  
IR  
SA[10..0]  
IRQ[3..0]  
FDC37C669FR  
USB97C102  
nDACK[3..0]  
DRQ[3..0]  
TC  
nIOR  
nIOW  
24MHz  
FLASH  
FIGURE 5 – USB97C102 CONFIGURED WITH FDC CONTROLLER AND WALKUP PORTS  
SMSC DS – USB97C102  
Page 11  
Rev. 03/23/2000  
MCU Memory Map  
The 64K memory map is as follows from the 8051's viewpoint:  
Code Space  
Table 3 - MCU Code Memory Map  
CODE SPACE  
8051 ADDRESS  
ACCESS  
0xC000-0xFFFF  
Movable 16k FLASH page 1 of 64 16k pages in  
External FLASH (0x0000-0xFFFF) selected by  
MEM_BANK Register Default: 0x4000-  
0x7FFF FLASH  
External FLASH  
0x8000-0xBFFF  
0x4000-0x7FFF  
Movable 16k FLASH page 1 of 64 16k pages in  
External FLASH (0x0000-0xFFFF) selected by  
MEM_BANK2 Register Default: 0x0000-0x3FFF FLASH  
Movable 16k FLASH page 1 of 64 16k pages in  
External FLASH (0x0000-0xFFFF) selected by  
MEM_BANK Register Default: 0x4000-  
0x7FFFLASH  
External FLASH  
External FLASH  
0x0000-0x3FFF  
Fixed 16k FLASH Page  
0x0000-0x3FFF FLASH  
External FLASH  
FLASH Address Map  
16k  
16k  
8051 MCU External Data Address  
Space  
16k  
16k  
0xFFFF  
1 of 64 -16K  
Flash Page  
...  
...  
0xC000  
16k  
16k  
16k  
16k  
1 of 64 - 16K  
Flash Page  
0x8000  
1 of 64 - 16K  
Flash pages  
0x4000  
Fixed 16k Flash  
Page  
0x0  
MCU to External Code Space Map Diagram  
SMSC DS – USB97C102  
Page 12  
Rev. 03/23/2000  
Data Space  
Table 4 - MCU Data Memory Map  
DATA SPACE  
8051 ADDRESS  
ACCESS  
0xC000-0xFFFF  
0x8000-0xBFFF  
0x7000-0x7FFF  
Movable 16k FLASH page 1 of 64 16k pages in  
External FLASH (0x00000-0xFFFFF) selected by  
MEM_BANK Register Default: 0x04000-  
0x07FFF FLASH  
Movable 16k FLASH page 1 of 64 16k pages in  
External FLASH (0x00000-0xFFFFF) selected by  
MEM_BANK2 Register Default: 0x004000-  
0x037FFF FLASH  
External FLASH  
External FLASH  
Internal  
0x7F80-0x7F9F SIE Reg  
0x7F70-0x7F7F ISA Reg  
0x7F50-0x7F6F MMU Reg  
0x7F20-0x7F2F Power Reg  
0x7F10-0x7F1F Configuration Reg  
0x7F00-0x7F0F Runtime Reg  
Note 1.  
0x6000-0x6FFF  
0x5000-0x5FFF  
0x4000-0x4FFF  
0x6000  
MMU Data Register  
0x5000-0x5FFF  
ISA MEMORY Window  
Internal  
ISA  
0x4000-0x40FF  
ISA  
ISA I/O Window  
0x3000-0x3FFF  
0x2000-0x2FFF  
0x1000-0x1FFF  
0x0000-0x00FF  
Not used  
Not used  
Not used  
Internal  
Registers and SFR’s  
Note 1:  
The MCU, MMU, and SIE block registers are external to the 8051, but internal to the USB97C102. These  
addresses will appear on the FLASH bus, but the read and write strobes will be inhibited.  
SMSC DS – USB97C102  
Page 13  
Rev. 03/23/2000  
ISA RAM Address Map  
FLASH Address Map  
4k (0x800)  
16k  
16k  
16k  
16k  
4k  
4k  
4k  
8051 MCU External Data Address  
Space  
0xFFFF  
...  
...  
1 of 64 - 16K  
Flash Page  
...  
...  
0xC000  
4k  
4k  
4k  
4k  
16k  
16k  
16k  
16k  
1 of 64 - 16K  
Flash Page  
0x8000  
4k - ISA Mem  
0x5000  
0x4000  
0x100h  
ISA I/O  
0x0000  
16k  
16k  
16k  
16k  
...  
...  
16k  
16k  
16k  
16k  
MCU to External Data I/O and Memory Map Diagram  
SMSC DS – USB97C102  
Page 14  
Rev. 03/23/2000  
ISADMA Memory Map  
The Internal Memory buffer is virtualized into the 8237's 64K address map as 32 independent 1k blocks. After the  
MMU has allocated a given packet size for a specific PNR, the MMU will make that packet appear to the 8237 as a  
contiguous block of data in the address ranges depicted in table 5.  
Table 5 - ISADMA Memory Map  
8237 MEMORY ADDRESS  
DESCRIPTION  
0x8000-0xFFFF  
32 blocks of 1K Window to Packet  
0x0000-0x7FFF  
32K Window to External ISA RAM  
MCU Block Register Summary  
Table 6 - MCU Block Register Summary  
R/W DESCRIPTION  
RUNTIME REGISTERS  
INT0 Source Register  
ADDRESS  
NAME  
PAGE  
7F00  
7F01  
7F02  
7F03  
7F06  
7F07  
ISR_0  
IMR_0  
ISR_1  
IMR_1  
DEV_REV  
DEV_ID  
R/W  
R/W  
R/W  
R/W  
R
19  
20  
20  
21  
21  
21  
INT0 Mask Register  
INT1 Source Register  
INT1 Mask Register  
Device Revision Register  
Device ID Register  
R
UTILITY REGISTERS  
7F18  
7F19  
7F1A  
7F1B  
GPIOA_DIR  
GPIOA_OUT  
GPIOA_IN  
UTIL_CONFI  
G
R/W  
R/W  
R
GPIO Configuration Register  
GPIO Data Output Register  
GPIO Data Input Register  
23  
23  
23  
24  
R/W  
Miscellaneous Configuration Register  
POWER MANAGEMENT REGISTERS  
7F27  
7F28  
7F29  
7F2A  
7F2B  
7F2C  
7F2D  
CLOCK_SEL  
MEM_BANK2  
MEM_BANK  
WU_SRC_1  
WU_MSK_1  
WU_SRC_2  
WU_MSK_2  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
8051 and 8237 Clock Select Register  
26  
27  
27  
27  
28  
28  
29  
Flash Bank Select 2  
Flash Bank Select  
Wakeup Source  
Wakeup Mask  
Wakeup Source  
Wakeup Mask  
ISA BUS CONTROL REGISTERS  
7F10  
7F11  
7F12  
7F13  
7F14  
7F15  
7F16  
7F17  
7F70  
7F71  
7F72  
7F73  
7F74  
7F7E  
7F7F  
GP1Data  
GP1Status  
GP2Data  
GP2Status  
GP3Data  
GP3Status  
GP4Data  
GP4Status  
BUS_REQ  
IOBASE  
MEMBASE  
BUS_STAT  
BUS_MASK  
MCU_TEST2  
MCU_TEST1  
R/W  
R
R/W  
R
R/W  
R
R/W  
R
R/W  
R/W  
R/W  
R
R/W  
N/A  
N/A  
GP FIFO Data Port #1  
GP FIFO status Port #1  
GP FIFO Data Port #2  
GP FIFO status Port #2  
GP FIFO Data Port #3  
GP FIFO status Port #3  
GP FIFO Data Port #4  
GP FIFO status Port #4  
ISA Bus Request Register  
8051 ISA I/O Window Base Register  
8051 ISA Memory Window Base Register  
ISADMA Request Status  
ISADMA Request Interrupt Mask  
Reserved for Test  
21  
22  
21  
22  
21  
22  
22  
22  
29  
31  
31  
30  
31  
Reserved for Test  
SMSC DS – USB97C102  
Page 15  
Rev. 03/23/2000  
SGDMA Block Register Summary  
Table 7 – SGDMA Block Register Summary  
ADDRESS  
NAME  
R/W  
DESCRIPTION  
PAGE  
CHANNEL 0 REGISTERS  
7FB0  
7FB1  
7FB2  
7FB3  
7FB4  
7FB5  
7FB6  
7FB7  
7FB8  
7FB9  
SGDMA_START_FIFO0  
SGDMA_DONE_FIFO0  
SGDMA_ADHI0  
R/W Packet Number Start FIFO Register  
R/W Packet Number Done FIFO Register  
R/W ISA Address High Byte Register  
R/W ISA Address Low Byte Register  
R/W Transfer Size High Register  
39  
39  
39  
39  
39  
40  
40  
40  
40  
41  
SGDMA_ADLO0  
SGDMA_SIZEHI0  
SGDMA_SIZELO0  
SGDMA_TOTAL_PKTS0  
SGDMA_DONE_PKTS0  
SGDMA_STS0  
R/W Transfer Size Low Register  
R
R
R
Total Packets in Channel Register  
Total Packets in Done FIFO Register  
Status Register  
SGDMA_CMD0  
R/W Command Register  
CHANNEL 1 REGISTERS  
7FBA  
7FBB  
7FBC  
7FBD  
7FBE  
7FBF  
7FC0  
7FC1  
7FC2  
7FC3  
SGDMA_START_FIFO1  
SGDMA_DONE_FIFO1  
SGDMA_ADHI1  
SGDMA_ADLO1  
SGDMA_SIZEHI1  
SGDMA_SIZELO1  
SGDMA_TOTAL_PKTS1  
SGDMA_DONE_PKTS1  
SGDMA_STS1  
R/W Packet Number Start FIFO Register  
R/W Packet Number Done FIFO Register  
R/W ISA Address High Byte Register  
R/W ISA Address Low Byte Register  
R/W Transfer Size High Register  
39  
39  
39  
39  
39  
40  
40  
40  
40  
41  
R/W Transfer Size Low Register  
R
R
R
Total Packets in Channel Register  
Total Packets in Done FIFO Register  
Status Register  
SGDMA_CMD1  
R/W Command Register  
CHANNEL 2 REGISTERS  
7FC4  
7FC5  
7FC6  
7FC7  
7FC8  
7FC9  
7FCA  
7FCB  
7FCC  
7FCD  
SGDMA_START_FIFO2  
SGDMA_DONE_FIFO2  
SGDMA_ADHI2  
SGDMA_ADLO2  
SGDMA_SIZEHI2  
SGDMA_SIZELO2  
SGDMA_TOTAL_PKTS2  
SGDMA_DONE_PKTS2  
SGDMA_STS2  
R/W Packet Number Start FIFO Register  
R/W Packet Number Done FIFO Register  
R/W ISA Address High Byte Register  
R/W ISA Address Low Byte Register  
R/W Transfer Size High Register  
39  
39  
39  
39  
39  
40  
40  
40  
40  
41  
R/W Transfer Size Low Register  
R
R
R
Total Packets in Channel Register  
Total Packets in Done FIFO Register  
Status Register  
SGDMA_CMD2  
R/W Command Register  
CHANNEL 3 REGISTERS  
7FCE  
7FCF  
7FD0  
7FD1  
7FD2  
7FD3  
7FD4  
7FD5  
7FD6  
7FD7  
SGDMA_START_FIFO3  
SGDMA_DONE_FIFO3  
SGDMA_ADHI3  
SGDMA_ADLO3  
SGDMA_SIZEHI3  
SGDMA_SIZELO3  
SGDMA_TOTAL_PKTS3  
SGDMA_DONE_PKTS3  
SGDMA_STS3  
R/W Packet Number Start FIFO Register  
R/W Packet Number Done FIFO Register  
R/W ISA Address High Byte Register  
R/W ISA Address Low Byte Register  
R/W Transfer Size High Register  
39  
39  
39  
39  
39  
40  
40  
40  
40  
41  
R/W Transfer Size Low Register  
R
R
R
Total Packets in Channel Register  
Total Packets in Done FIFO Register  
Status Register  
SGDMA_CMD3  
R/W Command Register  
PIO REGISTERS  
7FD8  
7FD9  
7FDA  
7FDB  
7FDC  
PIO_ADHI  
PIO_ADMID  
PIO_ADLO  
PIO_DATA  
PIO_CSR  
R/W Upper Byte of the ISA Address  
R/W Middle Byte of the ISA Address  
R/W Lower Byte of the ISA Address  
R/W PIO Data Register  
42  
42  
43  
43  
43  
R/W PIO Command Register  
SMSC DS – USB97C102  
Page 16  
Rev. 03/23/2000  
MMU Block Register Summary  
Table 8 - MMU Block Register Summary  
ADDRESS  
NAME  
R/W  
DESCRIPTION  
MMU REGISTERS  
PAGE  
6000  
7F40  
7F41  
7F42  
7F43  
7F44  
7F45  
7F46  
7F47  
7F48  
7F49  
7F4A  
7F4B  
7F4C  
7F4D  
7F4E  
7F4F  
7F50  
7F51  
7F52  
7F53  
7F54  
7F55  
7F56  
7F57  
7F58  
7F59  
7F60  
7F61  
7F62  
7F63  
7F64  
7F65  
7F66  
7F67  
7F6E  
7F6F  
MMU_DATA  
TX_FIFO0  
TX_FIFO1  
TX_FIFO2  
TX_FIFO3  
TX_FIFO4  
TX_FIFO5  
TX_FIFO6  
TX_FIFO7  
TX_FIFO8  
TX_FIFO9  
TX_FIFOA  
TX_FIFOB  
TX_FIFOC  
TX_FIFOD  
TX_FIFOE  
TX_FIFOF  
PRL  
PRH  
MMUTX_SEL  
MMUCR  
ARR  
PNR  
PAGS_FREE  
TX_MGMT  
RXFIFO  
R/W  
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
8051-MMU Data Window Register FIFO  
TX_FIFO Counter 0  
TX_FIFO Counter 1  
TX_FIFO Counter 2  
TX_FIFO Counter 3  
TX_FIFO Counter 4  
TX_FIFO Counter 5  
TX_FIFO Counter 6  
TX_FIFO Counter 7  
TX_FIFO Counter 8  
TX_FIFO Counter 9  
TX_FIFO Counter A  
TX_FIFO Counter B  
TX_FIFO Counter C  
TX_FIFO Counter D  
TX_FIFO Counter E  
TX_FIFO Counter F  
8051-MMU Pointer Register (Low)  
8051-MMU Pointer Register (High) & R/W  
8051-MMU TX FIFO Select for Commands  
8051-MMU Command Register  
8051-MMU Allocation Result Register  
8051-MMU Packet Number Register  
Pages Free In the MMU  
TX Management Register 2  
RX Packet FIFO Register (All EPs)  
POP TX FIFO  
TX Packet FIFO Status Register (EP0-3)  
TX Packet FIFO Status Register (EP4-7)  
TX Packet FIFO Status Register (EP8-11)  
TX Packet FIFO Status Register (EP12-15)  
Reserved for Test  
44  
44  
44  
44  
44  
44  
44  
44  
44  
44  
44  
44  
44  
44  
44  
44  
44  
44  
45  
45  
45  
46  
46  
47  
47  
48  
49  
49  
50  
50  
51  
R/W  
R/W  
R/W  
W
R
R/W  
R/W  
R
R
R
R
R
R
R
N/A  
N/A  
N/A  
R/W  
N/A  
N/A  
POP_TX  
TXSTAT_A  
TXSTAT_B  
TXSTAT_C  
TXSTAT_D  
MMU_TESTx  
MMU_TESTx  
MMU_TESTx  
TX_MGMT  
MMU_TESTx  
MMU_TESTx  
Reserved for Test  
Reserved for Test  
TX Management Register 1  
Reserved for Test  
Reserved for Test  
51  
SIE Block Register Summary  
ADDRESS  
Table 9 - SIE Block Register Summary  
NAME  
R/W  
DESCRIPTION  
PAGE  
SIE Control Registers  
7F80  
7F81  
7F82  
7F83  
7F84  
7F85  
7F86  
7F87  
7F88  
7F89  
7F8A  
EP_CTRL0  
EP_CTRL1  
EP_CTRL2  
EP_CTRL3  
EP_CTRL4  
EP_CTRL5  
EP_CTRL6  
EP_CTRL7  
EP_CTRL8  
EP_CTRL9  
EP_CTRL10  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
Endpoint 0 Control Register  
53  
53  
53  
53  
53  
53  
53  
53  
53  
53  
53  
Endpoint 1 Control Register  
Endpoint 2 Control Register  
Endpoint 3 Control Register  
Endpoint 4 Control Register  
Endpoint 5 Control Register  
Endpoint 6 Control Register  
Endpoint 7 Control Register  
Endpoint 8 Control Register  
Endpoint 9 Control Register  
Endpoint 10 Control Register  
SMSC DS – USB97C102  
Page 17  
Rev. 03/23/2000  
ADDRESS  
7F8B  
7F8C  
7F8D  
7F8E  
7F8F  
7F90  
7F91  
7F92  
7F93  
7F94  
7F95  
7F96  
7F97  
7F98  
7F99  
7F9A  
7F9B  
7F9C  
7F9D  
7F9E  
7F9F  
7FA9  
7FAA  
7FAB  
7FAC  
7FAD  
7FAE  
7FAF  
7FEC  
7FED  
7FEE  
7FEF  
NAME  
EP_CTRL11  
EP_CTRL12  
EP_CTRL13  
EP_CTRL14  
EP_CTRL15  
FRAMEL  
FRAMEH  
SIE_ADDR  
SIE_STAT  
SIE_CTRL1  
SIE_TST1  
SIE_TST2  
SIE_EP_TEST  
SIE_CONFIG  
ALT_ADDR1  
SIE_TST3  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R
R
R/W  
R
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R
DESCRIPTION  
Endpoint 11 Control Register  
Endpoint 12 Control Register  
Endpoint 13 Control Register  
Endpoint 14 Control Register  
Endpoint 15 Control Register  
USB Frame Count Low  
USB Frame Count High  
USB Local Address Register  
SIE Status Register  
SIE Control Register 1  
Reserved Test Register  
Reserved Test Register  
Reserved Test Register  
SIE Configuration Register  
Secondary Local Address Register #1  
Reserved Test Register  
Reserved Test Register  
Reserved Test Register  
PAGE  
53  
53  
53  
53  
53  
54  
54  
54  
57  
57  
58  
55  
SIE_TST4  
SIE_TST5  
SIE_TST6  
Reserved Test Register  
ALT_ADDR2  
ALT_ADDR3  
SIE_CTRL2  
EPCMD  
NONCTRL_EP1  
NONCTRL_EP2  
Reserved  
Secondary Local Address Register #2  
Secondary Local Address Register #3  
SIE Control Register 2  
Endpoint Command Register  
Non-Control Endpoint Register 1 (High)  
Non-Control Endpoint Register 2 (Low)  
Reserved  
Mem-Management Command Register  
Mem-Management State Register  
IN NAK Register Low  
55  
55  
58  
59  
60  
60  
60  
61  
61  
62  
62  
62  
63  
MMPCMD  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
MMPSTATE  
IN_NAKLO  
IN_NAKHI  
OUT_NAKLO  
OUT_NAKHI  
IN NAK Register High  
OUT NAK Register Low  
OUT NAK Register High  
Table 10 - HUB Block Register Summary  
ADDRESS  
7FA0  
NAME  
R/W  
HUB REGISTERS  
DESCRIPTION  
PAGE  
IdVendor-Low  
Byte  
IdVendor-High  
Byte  
IdProduct-Low  
Byte  
R/W  
R/W  
R/W  
Low byte Vendor ID in little endian format  
(Bit 0 is the LSB)  
High byte Vendor ID in little endian  
format (Bit 0 is the LSB)  
Low byte Product ID value in little endian  
format (Bit 0 is the LSB). This value is  
initialized by firmware upon  
7FA1  
7FA2  
initialization/power up. This value must  
be initialized prior to the Hub device  
participating in and USB enumeration  
transactions.  
7FA3  
IdProduct-High  
Byte  
R/W  
R/W  
High byte Product ID value in little endian  
format (Bit 0 is the LSB). This value is  
initialized by firmware upon  
initialization/power up. This value must  
be initialized prior to the Hub device  
participating in and USB enumeration  
transactions.  
7FA4  
BcdDevice - Low  
Byte  
This 8-bit value defines the USB device  
release number, which is assigned by  
the system manufacture.  
SMSC DS – USB97C102  
Page 18  
Rev. 03/23/2000  
ADDRESS  
NAME  
R/W  
HUB REGISTERS  
DESCRIPTION  
PAGE  
7FA5  
BcdDevice - High  
Byte  
R/W  
This 8-bit value defines the USB device  
release number, which is assigned by  
the system manufacture.  
7FA6  
HubControl1  
R/W  
Hub Control register 1  
65  
MCU REGISTER DESCRIPTION  
MCU Runtime Registers  
Table 11 - Interrupt 0 Source Register  
ISR_0  
(0x7F00 - RESET=0x00)  
INTERRUPT 0 SOURCE REGISTER  
DESCRIPTION  
BIT  
NAME  
R/W  
7
IRQ3  
R/W External interrupt input.  
0 = Inactive  
1 = Active  
6
5
4
IRQ2  
IRQ1  
IRQ0  
R/W External interrupt input.  
0 = Inactive  
1 = Active  
R/W External interrupt input.  
0 = Inactive  
1 = Active  
R/W External interrupt input.  
0 = Inactive  
1 = Active  
3
2
RX_PKT  
R/W 1 = A Packet Number (PNR) has been successfully queued on  
the RXFIFO.  
TX_EMPTY  
R/W 1 = Whenever an enabled TX Endpoint's FIFO becomes  
empty. This will occur when the last queued packet in one of  
the 16 TX queues is successfully transferred to the Host.  
R/W 1 = A Packet was successfully transmitted.  
R/W 1 = When a selected 8237 channels in  
1
0
TX_PKT  
ISADMA  
BUS_STAT/BUS_MASK register pair either reached Terminal  
Count or have a new DMA Request Pending.  
The bits in this register are cleared by writing a ‘1’ to the corresponding bit.  
Note 1:  
TX_EMPTY is useful for warning of USB performance degradation. This interrupt indicates that the next time  
the Host polls the affected endpoint, it will receive a NAK for that endpoint, thus reducing effective overall  
bandwidth due to retries. Firmware must use TX_STAT A, B, and C to determine which endpoint queue is  
empty.  
Note 2:  
Note 3:  
When ISADMA causes an interrupt, the 8237 CH_STAT register should also be read and serviced when the  
bit causing the interrupt is to be rearmed. When ISR_0 is read and the ISADMA bit is cleared, any other low-  
to-high transitions in the BUS_STAT register bits that are not masked will still cause an interrupt.  
If an expected IN token at EP1 (when in isochronous mode) does not arrive, the packet number will be  
removed from the TX_FIFO and saved in the TX_COMPLETION_FIFO and a TX_PKT interrupt will be sent  
to the MCU. It is the responsibility of the MCU to remove pages assigned to that packet. (Note if the MCU  
masks the TX_PKT interrupt, it will not be notified).  
SMSC DS – USB97C102  
Page 19  
Rev. 03/23/2000  
Table 12 - Interrupt 0 Mask  
IMR_0  
(0x7F01- RESET=0xFF)  
INTERRUPT 0 MASK REGISTER  
DESCRIPTION  
External interrupt input mask  
BIT  
NAME  
R/W  
R/W  
7
6
5
4
3
2
1
0
IRQ3  
0 = Enable Interrupt  
1 = Mask Interrupt  
External interrupt input mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
External interrupt input mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
External interrupt input mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
Received Packet MMU Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
Transmit Queue Empty MMU Interrupt  
0 = Enable Interrupt  
1 = Mask Interrupt  
Transmit Packet MMU Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
ISADMA Status Change Interrupt Mask  
0 = Enable Interrupt  
IRQ2  
IRQ1  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
IRQ0  
RX_PKT  
TX_EMPTY  
TX_PKT  
ISADMA  
1 = Mask Interrupt  
Table 13 - Interrupt 1 Source Register  
ISR_1  
(0x7F02- RESET=0x00)  
INTERRUPT 1 SOURCE REGISTER  
DESCRIPTION  
BIT  
NAME  
Reserved  
EOT  
R/W  
[7:5]  
4
R/W  
R/W  
Reserved  
1 = The SIE returned to Idle State. Marks the end of each  
transaction.  
3
2
SOF  
R/W  
R/W  
1 = When a Start of Frame token is correctly decoded.  
Generated by the write strobe to the Frame Count register.  
1 = MCU Software Allocation Request complete interrupt. This  
interrupt is not generated for hardware (SIEDMA) allocation  
requests.  
ALLOC  
1
0
RX_OVRN  
PWR_MNG  
R/W  
R/W  
1 = A receive condition has occurred that will stop the current  
receive buffer to not be processed. The SIE automatically  
recovers from this condition after its cause has been alleviated  
(e.g. any partially allocated packets will be released. See Note  
2).  
1 = A wakeup or power management event in the WU_SRC_1  
or WU_SRC_2 registers has gone active.  
Note 1:  
Note 2:  
The bits in this register are cleared by writing a ‘1’ to the corresponding bit.  
The RX_OVRN interrupt should be considered by firmware as a general Receive Overrun of the SIE,  
meaning that a packet destined for the RAM buffer could not be received and was not acknowledged back to  
the Host. The firmware should check to see if the RX Packet Number FIFO Register (RXFIFO) is full. If it is  
empty, then there may be too many transmit packets queued for the device to receive anything, or the last  
packet may have been corrupted on the wire. If it is not empty, then one or more receive packets must be  
dequeued before the device can continue to receive packets. In the normal course of operation, the MCU  
should respond to a RX_PKT interrupt as often as possible and let the buffering logic do its job.  
Note 3:  
The RX_OVRN Interrupt can also be triggered if a non-isochronous packet exceeds 64 bytes or if an  
isochronous packet exceeds the programmed limit (SIE_CTRL2 – Page 58). When a packet that is too long  
is detected, the packet will be discarded from memory and the RX Overrun Interrupt will be triggered. For  
non-isochronous packets, the hardware will stall the Rx Endpoint at the handshake after reception.  
SMSC DS – USB97C102  
Page 20  
Rev. 03/23/2000  
Note 4:  
The RX_OVRN Interrupt can also be triggered if an Enpoint receives a packet while it is stalled. The packet  
will be discarded from memory.  
Table 14 - Interrupt 1 Mask  
IMR_1  
(0x7F03- RESET=0xFF)  
INTERRUPT 1 MASK REGISTER  
BIT  
[7:5]  
4
NAME  
Reserved  
EOT  
R/W  
DESCRIPTION  
Reserved  
EOT interrupt mask  
R/W  
R/W  
R/W  
R/W  
R/W  
0 = Enable Interrupt  
1 = Mask Interrupt  
3
2
1
0
SOF  
Start of Frame Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
ALLOC  
MCU Software Allocation Complete Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
RX_OVRN  
PWR_MNG  
Receive Overrun Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
Power Management Wakeup Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
Table 15 - Device Revision Register  
DEV_REV  
(0x7F06- RESET=0x00)  
DEVICE REVISION REGISTER  
DESCRIPTION  
This register defines additional revision information  
used internally by SMSC. The value is silicon revision  
dependent.  
BIT  
[7:0]  
NAME  
BCD ‘00’  
HEX 0x00  
R/W  
R
Table 16 - Device Identification Register  
DEV_ID  
(0x7F07- RESET=0x26)  
DEVICE IDENTIFICATION REGISTER  
DESCRIPTION  
This register defines additional revision information  
used internally by SMSC  
BIT  
NAME  
BCD '26'  
HEX 0x26  
R/W  
R
[7:0]  
Table 17 – 8051 GP FIFO1  
GP_FIFO1  
(0x7F10- RESET=0xXX)  
8051 GP FIFO1  
DESCRIPTION  
BIT  
NAME  
R/W  
[7:0]  
GP_FIFO1  
R/W  
8 byte deep GP FIFO. This data FIFOs must not be read  
unless the associated status bit indicates that FIFO is not  
empty.  
Table 18 – 8051 GP FIFO2  
GP_FIFO2  
(0x7F12 - RESET=0xXX)  
NAME  
8051 GP FIFO2  
DESCRIPTION  
BIT  
R/W  
[7:0]  
GP_FIFO2  
R/W  
8 byte deep GP FIFO. This data FIFOs must not be read  
unless the associated status bit indicates that FIFO is not  
empty.  
Table 19 – 8051 GP FIFO3  
GP_FIFO3  
(0x7F14 - RESET=0xXX)  
NAME  
8051 GP FIFO3  
DESCRIPTION  
BIT  
R/W  
[7:0]  
GP_FIFO3  
R/W  
8 byte deep GP FIFO. This data FIFOs must not be read  
unless the associated status bit indicates that FIFO is not  
empty.  
SMSC DS – USB97C102  
Page 21  
Rev. 03/23/2000  
Table 20 – 8051 GP FIFO4  
8051 GP FIFO4  
GP_FIFO4  
(0x7F16 - RESET=0xXX)  
NAME  
BIT  
[7:0]  
R/W  
R/W  
DESCRIPTION  
8 byte deep GP FIFO. This data FIFOs must not be read  
unless the associated status bit indicates that FIFO is not  
empty.  
GP_FIFO4  
FIFO Status Registers  
Table 21 – 8051 GP FIFO 1 STATUS  
GPFIFO1_STS  
(0x7F11 – RESET=0x01)  
8051 GP FIFO STATUS  
DESCRIPTION  
BIT  
[7:2]  
1
NAME  
Reserved  
R/W  
R
Reserved  
GPFIFO1_FULL  
R
GP FIFO 1 full status  
0 = Not FULL  
1 = FULL  
0
GPFIFO1_EMPTY  
R
GP FIFO 1 empty status  
0 = Has one or more TX packet  
1 = Empty  
Table 22 – 8051 GP FIFO 2 STATUS  
GPFIFO2_STS  
(0x7F13 – RESET=0x01)  
8051 GP FIFO 2 STATUS  
DESCRIPTION  
BIT  
[7:2]  
1
NAME  
Reserved  
R/W  
R
Reserved  
GPFIFO2_FULL  
R
GP FIFO 2 full status  
0 = Not FULL  
1 = FULL  
0
GPFIFO2_EMPTY  
R
GP FIFO 2 empty status  
0 = Has one or more TX packet  
1 = Empty  
Table 23 – 8051 GP FIFO 3 STATUS  
GPFIFO3_STS  
(0x7F15 – RESET=0x01)  
8051 GP FIFO 3 STATUS  
DESCRIPTION  
BIT  
[7:2]  
1
NAME  
Reserved  
R/W  
R
Reserved  
GPFIFO3_FULL  
R
GP FIFO 3 full status  
0 = Not FULL  
1 = FULL  
0
GPFIFO3_EMPTY  
R
GP FIFO 3 empty status  
0 = Has one or more TX packet  
1 = Empty  
Table 24 – 8051 GP FIFO 4 STATUS  
GPFIFO4_STS  
(0x7F17 – RESET=0x01)  
8051 GP FIFO STATUS  
BIT  
[7:2]  
1
NAME  
Reserved  
GPFIFO4_FULL  
R/W  
R
R
DESCRIPTION  
Reserved  
GP FIFO 4 full status  
0 = Not FULL  
1 = FULL  
0
GPFIFO4_EMPTY  
R
GP FIFO 4 empty status  
0 = Has one or more TX packet  
1 = Empty  
SMSC DS – USB97C102  
Page 22  
Rev. 03/23/2000  
Table 25 - GPIO Direction Register  
GPIOA_DIR  
(0x7F18- RESET=0x00)  
MCU UTILITY REGISTERS  
DESCRIPTION  
GPIO7 Direction  
0 = In  
1 = Out  
GPIO6 Direction  
0 = In  
1 = Out  
GPIO5 Direction  
0 = In  
1 = Out  
GPIO4 Direction  
0 = In  
1 = Out  
GPIO3 Direction  
0 = In  
1 = Out  
GPIO2 Direction  
0 = In  
1 = Out  
GPIO1 Direction  
0 = In  
1 = Out  
GPIO0 Direction  
0 = In  
BIT  
7
NAME  
GPIO7  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
6
5
4
3
2
1
0
GPIO6  
GPIO5  
GPIO4/SOF  
GPIO3/T1  
GPIO2/T0  
GPIO1/TXD  
GPIO0/RXD  
1 = Out  
Note:  
The Timer inputs T[1:0] can be configured as outputs and left unconnected so that software can write to the  
bits to trigger the timer. Otherwise, the Timer inputs can be used to count external events or internal SOF  
receptions.  
Table 26 - GPIO Output Register  
GPIOA_OUT  
(0x7F19- RESET=0x00)  
GPIO DATA OUTPUT  
REGISTER A  
BIT  
7
6
5
4
3
2
1
0
NAME  
GPIO7  
GPIO6  
R/W  
DESCRIPTION  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
GPIO7 Output Buffer Data  
GPIO6 Output Buffer Data  
GPIO5 Output Buffer Data  
GPIO4 Output Buffer Data  
GPIO3 Output Buffer Data  
GPIO2 Output Buffer Data  
GPIO1 Output Buffer Data  
GPIO0 Output Buffer Data  
GPIO5  
GPIO4/SOF  
GPIO3/T1  
GPIO2/T0  
GPIO1/TXD  
GPIO0/RXD  
Table 27 - GPIO Input Register  
GPIOA_IN  
(0x7F1A- RESET=0xXX)  
GPIO INPUT REGISTER A  
DESCRIPTION  
BIT  
NAME  
GPIO7  
GPIO6  
R/W  
7
6
5
4
3
2
1
0
R
R
R
R
R
R
R
R
GPIO7 Input Buffer Data  
GPIO6 Input Buffer Data  
GPIO5 Input Buffer Data  
GPIO4 Input Buffer Data  
GPIO3 Input Buffer Data  
GPIO2 Input Buffer Data  
GPIO1 Input Buffer Data  
GPIO0 Input Buffer Data  
GPIO5  
GPIO4/SOF  
GPIO3/T1  
GPIO2/T0  
GPIO1/TXD  
GPIO0/RXD  
SMSC DS – USB97C102  
Page 23  
Rev. 03/23/2000  
Table 28 - Utility Configuration Register  
UTIL_CONFIG  
(0x7F1B- RESET=0x00)  
UTILITY CONFIGURATION REGISTER  
DESCRIPTION  
Reserved  
GPIO4/SOF Output Select Mux  
0 = GPIO4  
BIT  
[7:5]  
4
NAME  
Reserved  
GPIO4/SOF  
R/W  
R
R/W  
1 = SOF port  
3
2
1
0
GPIO3/T1  
GPIO2/T0  
R/W  
R/W  
R/W  
R/W  
P3.5 Timer 1 input trigger source  
0 = GPIO3  
1 = SOF FRAME write strobe  
P3.4 Timer 0 input trigger source  
0 = GPIO2  
1 = SOF FRAME write strobe  
GPIO1/TXD Output Select Mux  
0 = GPIO1  
GPIO1/TXD  
GPIO0/RXD  
1 = P3.1  
P3.0 RXD/GPIO0 Input Select Mux  
0 = RXD<=GPIO0  
1 = RXD<='0'  
Note 1:  
Note 2:  
Note 3:  
In Counter mode, the 8051 must sample T[1:0] as a '1' in one instruction cycle, and then '0' in the next. So  
for 12MHz, the SOF Pulse must be active for at least 1us.  
Missing SOF packets can be reconstructed by using the Timer mode to count the number of 8051 instruction  
cycles since the last valid Frame was received.  
A GPIO can be used to output nSOF pulses. This can be done by configuring a GPIO as an output and  
writing to the GPIO out register to generate low pulses each time a SOF packet is received.  
SMSC DS – USB97C102  
Page 24  
Rev. 03/23/2000  
GPIO out data  
(0x7F19[7:3])  
GPIO Direction Bit  
(0x7F18[7:3])  
GPIO[7:3]  
GPIO in data  
(0x7F1A[7:3])  
GPIO2 data out (0x7F19[2])  
GPIO2 Dir (0x7F18[2])  
GPIO2 data in (0x7F1A[2])  
Internal SOF  
0X7F1B[2]  
Pin # 36  
0
1
8051 "T0 timer P3.4"  
S
GPIO3 data out (0x7F19[3])  
GPIO3 Dir (0x7F18[3])  
GPIO3 data in (0x7F1A[3])  
Internal SOF  
0X7F1B[3]  
Pin # 37  
0
1
8051 "T1 timer P3.5"  
S
GPIO0 data out (0x7F19[0])  
GPIO0 Dir (0x7F18[0])  
Pin # 34  
GPIO0 data in (0x7F1A[0])  
0
1
RXD "Uart P3.0"  
0X7F1B[0]  
"0"  
S
GPIO1 data out (0x7F19[1])  
TXD "Uart P3.1"  
0
1
S
GPIO1 Dir (0x7F18[1])  
Pin # 35  
0X7F1B[1]  
GPIO1 data in (0x7F1A[1])  
GPIO4 data out (0x7F19[4])  
SOF port of SIE  
0
1
S
GPIO4 Dir (0x7F18[4])  
Pin # 38  
0X7F1B[4]  
GPIO4 data in (0x7F1A[4])  
FIGURE 6 - GPIO MUXING BLOCK DIAGRAM  
SMSC DS – USB97C102  
Page 25  
Rev. 03/23/2000  
MCU POWER MANAGEMENT REGISTERS  
Table 29 - MCU/ISADMA Clock Source Select  
CLOCK_SEL  
(0x7F27 - RESET=0x40)  
MCU/ISADMA CLOCK SOURCE SELECT  
DESCRIPTION  
BIT  
NAME  
R/W  
7
SLEEP  
R/W  
When PCON. 0 = 1 and SLEEP has been set to 1, the ring  
oscillator will be gated off, then all oscillators will be turned  
off for maximum power savings. (These two signals can be  
used to generate nFCE)  
6
5
ROSC_EN  
R/W  
R/W  
0 = Ring Oscillator Disable.  
1 = Ring Oscillator Enable. ROSC_EN must be set to 1  
before the MCU can be switched to the internal Ring  
Oscillator Clock source.  
MCUCLK_SRC overrides MCUCLK_x clock select and  
switches the MCU to the Ring Oscillator.  
0 = Use Ring Oscillator. ROSC_EN must be enabled by  
the MCU first.  
MCUCLK_SRC  
1 = Use clock specified in MCU_CLK_[1:0]  
[4:3]  
2
MCU_CLK[1:0]  
R/W  
R/W  
[4:3] = 00: 8MHz  
[4:3] = 01: 12MHz  
[4:3] = 10: 16MHz  
[4:3] = 11: 24MHz  
Selects an external clock source for the 8237 ISADMA  
controller for synchronizing the DMA with another block.  
NOTE: This will initially be an external input, but may  
eventually be used within the block to optimize  
performance, or as some other internal clock source.  
0 = Use ISADMACLK[1..0] select  
ISADMACLK_EXT  
1 = Use EXT_IN clock source for 8237  
[1:0]  
ISADMACLK[1:0]  
R/W  
[1:0] = 00: Stopped  
[1:0] = 01: 2MHz  
[1:0] = 10: 4MHz  
[1:0] = 11: 8MHz  
Note 1:  
The 8051 may program itself 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, without running the  
24MHz crystal oscillator or the PLL  
Note 2:  
Note 3:  
Switching between fast and slow clocks is recommended to save power.  
Clock switching can be done on the fly as long as both clocks are running. When switching, it takes a total of  
six clocks (3 clocks of the original clock plus 3 clocks of the switching clock) to guarantee the switching.  
Time TBD is required from ROSC_EN=1 to MCUCLK_SRC=0.  
Note 4:  
SMSC DS – USB97C102  
Page 26  
Rev. 03/23/2000  
Table 30 - FLASH Bank Select Register 2  
MEM_BANK2  
(0x7F28 - RESET=0x00)  
FLASH BANK SELECT REGISTER 2  
DESCRIPTION  
BIT  
[7:6]  
[5:0]  
NAME  
Reserved  
A[19:14]  
R/W  
R
R/W  
Reserved  
This register selects which 16k page resides at 0x8000-0xBFFF in  
Code Space and 0x8000-0xBFFF in Data Space.  
Table 31 - FLASH Bank Select Register  
MEM_BANK  
(0x7F29 - RESET=0x01)  
FLASH BANK SELECT REGISTER  
DESCRIPTION  
BIT  
[7:6]  
[5:0]  
NAME  
Reserved  
A[19:14]  
R/W  
R
R/W  
Reserved  
This register selects which 16k page resides at 0x4000-0x7FFF in  
Code Space and 0xC000-0xFFFF in Data Space. The 0x0000-  
0x3FFF page will always reflect the 16K FLASH page 0 (0x00000-  
0x03FFF).  
Table 32 - Wakeup Source 1 Register  
WU_SRC_1  
(0x7F2A – RESET=0x00)  
WAKEUP SOURCE 1  
DESCRIPTION  
BIT  
[7:3]  
2
NAME  
Reserved  
USB_Reset  
R/W  
R/W  
R/W  
Reserved  
This bit is set when the SIE detects simultaneous logic lows on D+  
and D- (Single-Ended 0) for 32 to 64 full speed bit times, or 4 to 8 low  
speed bit times (or 2.5<t<5.5us). The USB_Reset signal may be as  
long as 10ms. SETUP tokens can be NAK'd for up to 10ms after the  
Reset signal is released.  
1
0
Resume  
Suspend  
R/W  
R/W  
This bit is set on detection of Global Resume state (when there is a  
transition from the "J" state while in Global Suspend).  
Suspend – If 3ms of IDLE state are detected by the hardware, then  
this bit will be set.  
Note 1:  
Note 2:  
Note 3:  
Only low to high transitions for the associated inputs sets these bits.  
The bits in this register are cleared by writing a ‘1’ to the corresponding bit.  
Unmasked Wakeup Source bits generate an INT1 PWR_MNG interrupt, and restart the 8051 when its clock  
is stopped. This restarts the Ring Oscillator and crystal oscillator for the MCU to resume from <500µA  
operation.  
Note 4:  
To initiate USB Remote Wakeup, the SIE_Resume bit should be used in the SIE_CONFIG register.  
SMSC DS – USB97C102  
Page 27  
Rev. 03/23/2000  
Table 33 - Wakeup Mask 1 Register  
WU_MSK_1 (Note 1)  
(0x7F2B - RESET=0x07 )  
WAKEUP MASK 1  
DESCRIPTION  
BIT  
NAME  
R/W  
[7:3]  
2
Reserved  
USB_Reset  
R
R/W  
Reserved  
External wakeup event.  
0 = Enabled  
1 = Masked  
1
0
Resume  
Suspend  
R/W  
R/W  
External wakeup event.  
0 = Enabled  
1 = Masked  
Internal wakeup event.  
0 = Enabled  
1 = Masked  
Suspend – If 3ms of IDLE state are detected by the hardware,  
then this bit, when set (1) will cause an interrupt to the MCU  
Note 1:  
Interrupt events enabled by these bits are routed to the PWR_MNG Bit 0 in the ISR_1 register.  
Table 34 - Wakeup Source 2 Register  
WU_SRC_2  
(0x7F2C - RESET=0x00)  
WAKEUP SOURCE 2  
BIT  
[7:4]  
3
NAME  
'0'  
IRQ3  
R/W  
R/W  
R/W  
DESCRIPTION  
Reserved  
External Interrupt state since WU_SRC_2 was last read.  
0 = Unchanged  
1 = Changed  
2
1
0
IRQ2  
IRQ1  
IRQ0  
R/W  
R/W  
R/W  
External Interrupt state since WU_SRC_2 was last read.  
0 = Unchanged  
1 = Changed  
External Interrupt state since WU_SRC_2 was last read.  
0 = Unchanged  
1 = Changed  
External Interrupt state since WU_SRC_2 was last read.  
0 = Unchanged  
1 = Changed  
Note 1:  
Note 2:  
Note 3:  
Any transition from high to low, or low to high on the associated input sets these bits.  
The bits in this register are cleared by writing a ‘1’ to the corresponding bit.  
Since this register will report any status change, when devices are to be powered down while monitored, the  
appropriate bits must be masked until the device is armed correctly.  
SMSC DS – USB97C102  
Page 28  
Rev. 03/23/2000  
Table 35 - Wakeup Mask 2 Register  
WU_MSK_2  
(0x7F2D - RESET=0x0F)  
WAKEUP MASK 2  
DESCRIPTION  
BIT  
[7 :4]  
3
NAME  
'0'  
R/W  
R
Reserved  
IRQ3  
R/W  
External wakeup event enable.  
0 = Enabled  
1 = Masked  
2
1
0
IRQ2  
IRQ1  
IRQ0  
R/W  
R/W  
R/W  
External wakeup event enable.  
0 = Enabled  
1 = Masked  
External wakeup event enable.  
0 = Enabled  
1 = Masked  
External wakeup event enable.  
0 = Enabled  
1 = Masked  
Note:  
Interrupt events enabled by these bits are be routed to the PWR_MNG Bit 0 in the ISR_1 register.  
MCU ISA Interface Registers  
Table 36 – ISA Bus Request Register  
ISA BUS REQUEST REGISTER  
BUS_REQ  
(0x7F70 – RESET=0x00)  
BIT NAME R/W  
DESCRIPTION  
7
6
5
4
3
INH_TC3  
R/W  
R/W  
R/W  
R/W  
R/W  
This bit inhibits DMA channel 3 TC.**See Note Below  
0 = TC is driven onto the ISA bus via EOP as before.  
1 = TC is forced inactive.  
This bit inhibits DMA channel 2 TC.** See Note Below  
0 = TC is driven onto the ISA bus via EOP as before.  
1 = TC is forced inactive.  
This bit inhibits DMA channel 1 TC.** See Note Below  
0 = TC is driven onto the ISA bus via EOP as before.  
1 = TC is forced inactive.  
This bit inhibits DMA channel 0 TC.** See Note Below  
0 = TC is driven onto the ISA bus via EOP as before.  
1 = TC is forced inactive.  
Writing a '1' holds the 8237 hardware reset input active. Writing  
'0' releases it for normal operation. May be used for clock  
switching or power management functions.  
This bit reflects the status of the 8237's AEN pin. This bit does  
not generate an interrupt  
The 8051 can grant the bus when it is ready via HLDA. This  
should tri-state any common signals between the 8051 and the  
8237 on the ISA bus.  
INH_TC2  
INH_TC1  
INH_TC0  
RESET_8237  
2
1
AEN  
R
HLDA  
R/W  
0
HREQ  
R
This bit reflects the status of the 8237's HREQ bus request pin.  
This bit does not generate an interrupt.  
Note:  
HLDA Example: When the 8051 is running at 24MHz, and the 8237 is running at 2MHz, the 8237 may take  
up to 1.5us to complete a transfer after deasserting HLDA When running the 8051 at 24MHz, wait states  
must be added when the 8237 is running at 2 or 4 MHz. When running the 8051 at 12MHz, wait states must  
be added when the 8237 is running at 2 MHz.  
Note**:  
The “Inhibit” function is not valid for Memory-to-Memory DMA cycles  
SMSC DS – USB97C102  
Page 29  
Rev. 03/23/2000  
Table 37 - ISA Bus Status Register  
BUS_STAT  
(0x7F73 - RESET=0xXX)  
ISA BUS STATUS REGISTER  
DESCRIPTION  
Channel 3 DMA Request  
BIT  
NAME  
R/W  
7
6
5
4
3
2
1
0
CH3RQ  
R
R
R
R
R
R
R
R
0 = No Request Pending  
1 = Request Pending  
Channel 2 DMA Request  
0 = No Request Pending  
1 = Request Pending  
Channel 1 DMA Request  
0 = No Request Pending  
1 = Request Pending  
Channel 0 DMA Request  
0 = No Request Pending  
1 = Request Pending  
Channel 3 Terminal Count Reached  
0 = No  
CH2RQ  
CH1RQ  
CH0RQ  
CH3TC  
CH2TC  
CH1TC  
CH0TC  
1 = Yes  
Channel 2 Terminal Count Reached  
0 = No  
1 = Yes  
Channel 1 Terminal Count Reached  
0 = No  
1 = Yes  
Channel 0 Terminal Count Reached  
0 = No  
1 = Yes  
Note 1:  
Note 2:  
Each bit in this register reflects the current value of the corresponding bit in the 8237 CH_STAT status  
register.  
The 8237 clears bits 3..0 in the CH_STAT status register when the 8051 reads it through the ISA Bus I/O  
Window.  
Note 3:  
Note 4:  
Reading the BUS_STAT register does not clear or otherwise affect the BUS_STAT register.  
The ISADMA bit in ISR_0 is latched high whenever any bit in BUS_STAT that is enabled in BUS_MASK  
transitions from low to high.  
Note 5:  
This register is intended (1) to provide a view into the status of the 8237 without having to assume control of  
the ISA bus during DMA transfers, and (2) to provide a means for generating the ISADMA interrupt in ISR_0  
which indicates that a DMA transfer has completed and that the 8051 should take control of the bus and  
setup the 8237 for its next transfer. Bits 7-4 can be used to generate additional interrupt requests from the  
DREQ pins, or simply to monitor channel request status by masking them.  
SMSC DS – USB97C102  
Page 30  
Rev. 03/23/2000  
Table 38 - ISA Bus Status Mask Register  
BUS_MASK  
(0x7F74 - RESET=0xFF)  
ISA BUS STATUS MASK REGISTER  
DESCRIPTION  
BIT  
NAME  
R/W  
7
CH3RQ_MASK  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
Channel 3 DMA Request ISADMA Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
Channel 2 DMA Request ISADMA Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
Channel 1 DMA Request ISADMA Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
Channel 0 DMA Request ISADMA Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
Channel 3 Terminal Count ISADMA Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
Channel 2 Terminal Count ISADMA Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
Channel 1 Terminal Count ISADMA Interrupt Mask  
0 = Enable Interrupt  
1 = Mask Interrupt  
Channel 0 Terminal Count ISADMA Interrupt Mask  
0 = Enable Interrupt  
6
5
4
3
2
1
0
CH2RQ_MASK  
CH1RQ_MASK  
CH0RQ_MASK  
CH3TC_MASK  
CH2TC_MASK  
CH1TC_MASK  
CH0TC_MASK  
1 = Mask Interrupt  
Table 39 - ISA I/O Window Base Register  
IOBASE  
(0x7F71 - RESET=0x00)  
ISA I/O WINDOW BASE REGISTER  
DESCRIPTION  
BIT  
NAME  
R/W  
[7:0]  
SA[15:8]  
R/W  
When the 8051 reads or writes to the ISA I/O Window,  
this register is combined with the 8 bit offset in the 256  
byte window and presented as the 64k I/O Space address  
during an 8051-ISA IOR or IOW cycle  
Table 40 - ISA Memory Window Base Register  
MEMBASE  
(0x7F72 - RESET=0x00)  
ISA MEMORY WINDOW BASE REGISTER  
BIT  
NAME  
R/W  
DESCRIPTION  
[7:0]  
SA[19:12]  
R/W  
When the 8051 reads or writes to the ISA Memory  
Window, this register is combined with the 12 bit  
offset in the 4k byte window and presented as the  
1Mbyte Memory address during an 8051-ISA  
MEMR or MEMW cycle.  
8237 (ISADMA) REGISTER DESCRIPTION  
Memory Map  
Table 41 - ISADMA Memory Map  
8237 MEMORY ADDRESS  
DESCRIPTION  
0xFC00-0xFFFF  
0xF800-0xFBFF  
0xF400-0xF7FF  
0xF000-0xF3FF  
0xEC00-0xEFFF  
0xE800-0xEBFF  
0xE400-0xE7FF  
0xE000-0xE3FF  
0xDC00-0xDFFF  
1k Window to Packet with PNR=0x1F  
1k Window to Packet with PNR=0x1E  
1k Window to Packet with PNR=0x1D  
1k Window to Packet with PNR=0x1C  
1k Window to Packet with PNR=0x1B  
1k Window to Packet with PNR=0x1A  
1k Window to Packet with PNR=0x19  
1k Window to Packet with PNR=0x18  
1k Window to Packet with PNR=0x17  
SMSC DS – USB97C102  
Page 31  
Rev. 03/23/2000  
8237 MEMORY ADDRESS  
0xD800-0xDBFF  
0xD400-0xD7FF  
0xD000-0xD3FF  
0xCC00-0xCFFF  
0xC800-0xCBFF  
0xC400-0xC7FF  
0xC000-0xC3FF  
0xBC00-0xBFFF  
0xB800-0xBBFF  
0xB400-0xB7FF  
0xB000-0xB3FF  
0xAC00-0xAFFF  
0xA800-0xABFF  
0xA400-0xA7FF  
0xA000-0xA3FF  
0x9C00-0x9FFF  
0x9800-0x9BFF  
0x9400-0x97FF  
0x9000-0x93FF  
0x8C00-0x8FFF  
0x8800-0x8BFF  
0x8400-0x87FF  
0x8000-0x83FF  
DESCRIPTION  
1k Window to Packet with PNR=0x16  
1k Window to Packet with PNR=0x15  
1k Window to Packet with PNR=0x14  
1k Window to Packet with PNR=0x13  
1k Window to Packet with PNR=0x12  
1k Window to Packet with PNR=0x11  
1k Window to Packet with PNR=0x10  
1k Window to Packet with PNR=0x0F  
1k Window to Packet with PNR=0x0E  
1k Window to Packet with PNR=0x0D  
1k Window to Packet with PNR=0x0C  
1k Window to Packet with PNR=0x0B  
1k Window to Packet with PNR=0x0A  
1k Window to Packet with PNR=0x09  
1k Window to Packet with PNR=0x08  
1k Window to Packet with PNR=0x07  
1k Window to Packet with PNR=0x06  
1k Window to Packet with PNR=0x05  
1k Window to Packet with PNR=0x04  
1k Window to Packet with PNR=0x03  
1k Window to Packet with PNR=0x02  
1k Window to Packet with PNR=0x01  
1k Window to Packet with PNR=0x00  
0x0000-0x7FFF  
32K Window to External ISA RAM  
The actual packet may be composed of up to 10 different 128 byte non-contiguous packets, but the MMU re-maps  
the internal addresses automatically such that the 8237 and 8051 only need to reference the packet number and  
offset within the packet. For example, suppose a 312 (0x138) byte packet is received by the SIEDMA from the host.  
The patented MMU allocates 384 bytes for the packet (including an 8 byte status header) and returns a PNR tag of  
0x0A. The SIEDMA engine will place 0x0A in the receive packet queue and notify the 8051. The 8051 will take that  
PNR, examine the packet through its own PNR/Pointer registers, and determine the offset for the payload data it  
wants to transfer from the packet, say 0x027. The address it must calculate for the 8237 base address register would  
therefore be 0xA827 (0xA800+0x027). Each channel can be programmed with a different (or same) Packet Number  
and offset and the data will appear to it as ordinary contiguous RAM (see table 32 for more information).  
Software written to this model will work for virtually any Endpoint number and Buffer size combination.  
SMSC DS – USB97C102  
Page 32  
Rev. 03/23/2000  
Runtime Registers  
The DMA controller has a block of 16 R/W registers which normally occupy I/O locations 0x00-0x0F on the ISA bus.  
When they are located at 0x0000-0x000F on the ISA bus, the 8051 can access them by programming the IOBASE  
Register to 0x00, and reading or writing from 0x4000-0x400F.  
Table 42 - 8237 Registers in ISA I/O Space  
0x0000  
0x0001  
0x0002  
0x0003  
0x0004  
0x0005  
0x0006  
0x0007  
0x0008  
0x0009  
0x000A  
0x000B  
0x000C  
0x000D  
0x000E  
0x000F  
Channel 0: Current Address H/L  
Channel 0: Byte Count H/L  
Channel 1: Current Address H/L  
Channel 1: Byte Count H/L  
Channel 2: Current Address H/L  
Channel 2: Byte Count H/L  
Channel 3: Current Address H/L  
Channel 3: Byte Count H/L  
Status/Command Register  
Write Request Register  
Write Single Mask Register  
Write Mode Register  
Clear Byte Ptr F/F - Read Temp Register  
Master Clear  
Clear Mask  
Write All Mask Bits  
Note:  
To write to these registers, HLDA must be logic low.  
Table 43 - 8237 Address Programming Guide  
8237 INTERNAL ADDRESS PROGRAMMING GUIDE  
NAME DESCRIPTION  
BIT  
15  
INT_EXT  
Indicates whether this address refers to Internal Buffer RAM or  
External ISA Memory Space  
0 = External  
1 = Internal  
When this bit is set to zero (0), I/O capability is added to External  
Memory DMA. This capability can only be used for DMA channels 2  
or 3.  
[14:10]  
[9:0]  
PN[4:0]/SA[14:10]  
PTR[9:0]/SA[9:0]  
External Address -or- Internal Packet Number  
SA[14..10] when INT_EXT=0  
PN[4..0] when INT_EXT=1  
External Address -or- Internal Packet Offset Pointer  
SA[9..0] when INT_EXT=0  
PTR[9..0] when INT_EXT=1  
Note:  
SA[19..15] are driven low when the 8237 is accessing external ISA memory. PTR10 is driven low when the  
8237 is accessing internal buffer RAM. Note that the actual transfer size for the ISADMA is limited to 1024  
bytes, which limits the payload data to 1016 bytes per transfer when the 8 byte header is skipped. Also note  
that the 8051 still has access to 1Meg of external RAM through the MEMBASE register and it is independent  
of the 8237's 32k external limit.  
Table 44 - Channel 0 Current Address Register  
CH0_ADDR  
(ISA 0x0000)  
CHANNEL 0 CURRENT ADDRESS  
BIT  
[7:0]  
[7:0]  
NAME  
CH0_ADDRL  
CH0_ADDRH  
R/W  
R/W  
R/W  
DESCRIPTION  
Lower 8 bits of Base and Current Address when Byte F/F = 0  
Upper 8 bits of Base and Current Address when Byte F/F = 1  
Note:  
Byte F/F is an internal Flip Flop which reflects which byte (high or low) is being written. The CLEAR_FF  
register should be written to before writing this register to guarantee which byte (high or low) is being written.  
See the Address Programming Table for 16 bit Address definitions.  
SMSC DS – USB97C102  
Page 33  
Rev. 03/23/2000  
Table 45 - Channel 0 Byte Count Register  
CHANNEL 0 BYTE COUNT  
CH0_CNT  
(ISA 0x0001)  
NAME  
CH0_CNTL  
CH0_CNTH  
BIT  
[7:0]  
[7:0]  
R/W  
R/W  
R/W  
DESCRIPTION  
Lower 8 bits of Byte Count when Byte F/F = 0  
Upper 8 bits of Byte Count when Byte F/F = 1  
Note:  
Note:  
Note:  
Note:  
Note:  
Note:  
The CLEAR_FF register should be written to before writing this register to guarantee which byte (high or low)  
is being written. See Address Programming Table for 16 bit Address definitions.  
Table 46 - Channel 1 Current Address Register  
CH1_ADDR  
(ISA 0x0002)  
CHANNEL 1 CURRENT ADDRESS  
BIT  
[7:0]  
[7:0]  
NAME  
CH1_ADDRL  
CH1_ADDRH  
R/W  
R/W  
R/W  
DESCRIPTION  
Lower 8 bits of Base and Current Address when Byte F/F = 0  
Upper 8 bits of Base and Current Address when Byte F/F = 1  
The CLEAR_FF register should be written to before writing this register to guarantee which byte (high or low)  
is being written. See the Address Programming Table for 16 bit Address definitions.  
Table 47 - Channel 1 Byte Count Register  
CH1_CNT  
(ISA 0x0003)  
CHANNEL 1 BYTE COUNT  
BIT  
[7:0]  
[7:0]  
NAME  
CH1_CNTL  
CH1_CNTH  
R/W  
R/W  
R/W  
DESCRIPTION  
Lower 8 bits of Byte Count when Byte F/F = 0  
Upper 8 bits of Byte Count when Byte F/F = 1  
The CLEAR_FF register should be written to before writing this register to guarantee which byte (high or low)  
is being written. See Address Programming Table for 16 bit Address definitions.  
Table 48 - Channel 2 Current Address Register  
CH2_ADDR  
(ISA 0x0004)  
CHANNEL 2 CURRENT ADDRESS  
BIT  
[7:0]  
[7:0]  
NAME  
CH2_ADDRL  
CH2_ADDRH  
R/W  
R/W  
R/W  
DESCRIPTION  
Lower 8 bits of Base and Current Address when Byte F/F = 0  
Upper 8 bits of Base and Current Address when Byte F/F = 1  
The CLEAR_FF register should be written to before writing this register to guarantee which byte (high or low)  
is being written. See the Address Programming Table for 16 bit Address definitions.  
Table 49 - Channel 2 Byte Count Register  
CH2_CNT  
(ISA 0x0005)  
CHANNEL 2 BYTE COUNT  
BIT  
[7:0]  
[7:0]  
NAME  
CH2_CNTL  
CH2_CNTH  
R/W  
R/W  
R/W  
DESCRIPTION  
Lower 8 bits of Byte Count when Byte F/F = 0  
Upper 8 bits of Byte Count when Byte F/F = 1  
The CLEAR_FF register should be written to before writing this register to guarantee which byte (high or low)  
is being written. See Address Programming Table for 16 bit Address definitions.  
Table 50 - Channel 3 Current Address Register  
CH3_ADDR  
(ISA 0x0006)  
CHANNEL 3 CURRENT ADDRESS  
BIT  
[7:0]  
[7:0]  
NAME  
CH3_ADDRL  
CH3_ADDRH  
R/W  
R/W  
R/W  
DESCRIPTION  
Lower 8 bits of Base and Current Address when Byte F/F = 0  
Upper 8 bits of Base and Current Address when Byte F/F = 1  
The CLEAR_FF register should be written to before writing this register to guarantee which byte (high or low)  
is being written. See the Address Programming Table for 16 bit Address definitions.  
SMSC DS – USB97C102  
Page 34  
Rev. 03/23/2000  
Table 51 - Channel 3 Byte Count Register  
CHANNEL 3 BYTE COUNT  
CH3_CNT  
(ISA 0x0007)  
NAME  
CH3_CNTL  
CH3_CNTH  
BIT  
[7:0]  
[7:0]  
R/W  
R/W  
R/W  
DESCRIPTION  
Lower 8 bits of Byte Count when Byte F/F = 0  
Upper 8 bits of Byte Count when Byte F/F = 1  
Note:  
The CLEAR_FF register should be written to before writing this register to guarantee which byte (high or low)  
is being written. See Address Programming Table for 16 bit Address definitions.  
Table 52 - Channel Status Register  
CH_STAT  
(ISA 0x0008)  
CHANNEL STATUS REGISTER  
BIT  
NAME  
R/W  
DESCRIPTION  
7
CH3RQ  
R
Channel 3 DMA Request  
0 = No Request Pending  
1 = Yes Request Pending  
Channel 2 DMA Request  
0 = No Request Pending  
1 = Yes Request Pending  
Channel 1 DMA Request  
0 = No Request Pending  
1 = Yes Request Pending  
Channel 0 DMA Request  
0 = No Request Pending  
1 = Yes Request Pending  
Channel 3 Terminal Count Reached  
0 = No  
6
5
4
3
2
1
0
CH2RQ  
CH1RQ  
CH0RQ  
CH3TC  
CH2TC  
CH1TC  
CH0TC  
R
R
R
R
R
R
R
1 = Yes  
Channel 2 Terminal Count Reached  
0 = No  
1 = Yes  
Channel 1 Terminal Count Reached  
0 = No  
1 = Yes  
Channel 0 Terminal Count Reached  
0 = No  
1 = Yes  
Note 1:  
Note 2:  
These bits are also visible outside of I/O space in the BUS_STAT register.  
These bits are cleared when this register is read through the ISA I/O Window.  
Table 53 - 8237 Command Register  
CH_CMD  
(ISA 0x0008)  
COMMAND REGISTER  
BIT  
NAME  
R/W  
DESCRIPTION  
7
DACK_SENS  
W
DACK Sense  
0 = Active High  
1 = Active Low  
DREQ Sense (1 = Active Low, 0 = Active High)  
Write Timing Select  
0 = Late Timing  
1 = Extended  
6
5
DREQ_SENS  
WRITE_TIME  
W
W
4
3
2
PRIORITY  
COMP_TIME  
CTRL_EN  
W
W
W
Priority  
0 = Fixed  
1 = Rotating  
Timing  
0 = Normal  
1 = Compressed  
Controller Enable  
0 = Enable  
1 = Disable  
SMSC DS – USB97C102  
Page 35  
Rev. 03/23/2000  
CH_CMD  
(ISA 0x0008)  
NAME  
COMMAND REGISTER  
DESCRIPTION  
BIT  
R/W  
1
ADDR_HOLD  
W
Channel 0 Address Hold  
0 = Disable  
1 = Hold Enable  
Memory-to-Memory  
0 = Disable  
0
MEM2MEM  
W
1 = Enable  
Table 54 - 8237 Write Single Request Register  
CH_REQ  
(ISA 0x0009)  
WRITE REQUEST REGISTER  
BIT  
[7:3]  
2
NAME  
Reserved  
SET_CLR  
R/W  
W
W
DESCRIPTION  
Reserved  
Force Internal DMA Request Bit  
0 = Clear  
1 = Set  
[1:0]  
SEL[1:0]  
W
'00' = Select Channel 0 DREQ  
'01' = Select Channel 1 DREQ  
'10' = Select Channel 2 DREQ  
'11' = Select Channel 3 DREQ  
Table 55 - 8237 Write Single Mask Register  
CH_MASK  
(ISA 0x000A)  
WRITE SINGLE MASK REGISTER  
BIT  
[7:3]  
2
NAME  
Reserved  
SET_CLR  
R/W  
R
W
DESCRIPTION  
Reserved  
Set Channel Mask Bit  
0 = Clear  
1 = Set  
[1:0]  
SEL[1:0]  
W
'00' = Select Channel 0 Mask Bit  
'01' = Select Channel 1 Mask Bit  
'10' = Select Channel 2 Mask Bit  
'11' = Select Channel 3 Mask Bit  
Table 56 - Write Mode Register  
DMA_MODE  
(ISA 0x000B)  
NAME  
WRITE MODE REGISTER  
DESCRIPTION  
'00' = Demand Mode Select  
BIT  
[7:6]  
R/W  
W
MODE[1:0]  
'01' = Single Mode Select  
'10' = Block Mode Select  
'11' = Cascade Mode Select  
Auto-increment/Decrement  
0 = Increment  
1 = Decrement  
Auto-initialization  
0 = Disable  
1 = Enable  
'00' = Verify Transfer  
'01' = Write Transfer  
'10' = Read Transfer  
'11' = Illegal  
5
4
INC_DEC  
AUTO_INIT  
R/WV[1:0]  
W
W
W
[3:2]  
'XX' if bits 6 and 7 = '11' Or if CH_CMD register bit 0  
= 1 (memory-to-memory transfer)  
'00' = Select Channel 0  
'01' = Select Channel 1  
'10' = Select Channel 2  
'11' = Select Channel 3  
[1:0]  
SEL[1:0]  
W
SMSC DS – USB97C102  
Page 36  
Rev. 03/23/2000  
Table 57 - Clear Byte Pointer Flip Flop Register  
CLEAR_FF  
(ISA 0x000C)  
NAME  
CLEAR BYTE POINTER FLIP FLOP  
DESCRIPTION  
BIT  
R/W  
[7:0]  
BPFF  
W
This register must be written to clear the high/low byte  
pointer flip flop prior to reading or writing new address or  
word count information to the 8237.  
Table 58 - Read Temporary Register  
RD_TEMP  
(ISA 0x000D)  
NAME  
READ TEMPORARY REGISTER  
BIT  
R/W  
DESCRIPTION  
[7:0]  
TEMP_BYTE  
R
This location holds the value of the last byte transferred in a  
memory-to-memory operation.  
Table 59 - Master Clear Register  
MASTER CLEAR REGISTER  
MSTR_CLR: (ISA 0x000D)  
BIT  
[7:0]  
NAME  
SW_RESET  
R/W  
W
DESCRIPTION  
Writing to this register has the same effect on the registers  
as a hardware reset. The 8237 will enter the idle state.  
Table 60 - Clear Mask Register  
CLEAR MASK REGISTER  
CLR_MASK: (ISA 0x000E)  
BIT  
NAME  
R/W  
DESCRIPTION  
[7:0]  
CLR_ALL  
W
Writing to this register clears the mask bits of all four  
channels and allows them to receive DMA requests.  
Table 61 - Clear All Mask Bits Register  
ALL_MASK  
(ISA 0x000F)  
NAME  
WRITE ALL MASK BITS REGISTER  
DESCRIPTION  
BIT  
[7:4]  
3
2
1
R/W  
W
W
W
W
Reserved  
Reserved  
CH3_MASK  
CH2_MASK  
CH1_MASK  
CH0_MASK  
Channel 3 Mask Bit (1 = Set Mask, 0 = Clear Mask)  
Channel 2 Mask Bit (1 = Set Mask, 0 = Clear Mask)  
Channel 1 Mask Bit (1 = Set Mask, 0 = Clear Mask)  
Channel 0 Mask Bit (1 = Set Mask, 0 = Clear Mask)  
0
W
SMSC DS – USB97C102  
Page 37  
Rev. 03/23/2000  
SCATTER-GATHER DMA (SGDMA) REGISTER DESCRIPTION  
FIGURE 7  
). Each register set  
The SGDMA has four DMA channels with each channel having its own set of registers (  
starts at a different starting BASE address: Channels 0, 1,2, and 3 have starting BASE addresses 7FB0, 7FBA,  
7FC4, and 7FCE, respectively. The tables on the following pages describe each register of one register set, using ‘x’  
to denote the DMA channel (x ranges from 0 to 3). The address of each register is denoted as BASE+n, where n is  
the offset from BASE.  
BASE  
Address  
Effective  
Address  
OFFSET 0 - SGDMA_START_FIFO0  
7FB0  
7FBA  
7FC4  
7FCE  
7FB0  
7FB1  
7FB2  
7FB3  
OFFSET 1 - SGDMA_DONE_FIFO0  
OFFSET 2 - SGDMA_ADHI0  
OFFSET 3 - SGDMA_ADLO0  
SGDMA Channel 0 Registers  
SGDMA Channel 1 Registers  
SGDMA Channel 2 Registers  
SGDMA Channel 3 Registers  
OFFSET 9 - SGDMA_CMD0  
OFFSET 0 - SGDMA_START_FIFO1  
OFFSET 1 - SGDMA_DONE_FIFO1  
OFFSET 2 - SGDMA_ADHI1  
7FB9  
7FBA  
7FBB  
7FBC  
7FBD  
OFFSET 3 - SGDMA_ADLO1  
OFFSET 9 - SGDMA_CMD1  
OFFSET 0 - SGDMA_START_FIFO2  
OFFSET 1 - SGDMA_DONE_FIFO2  
OFFSET 2 - SGDMA_ADHI2  
7FC3  
7FC4  
7FC5  
7FC6  
7FC7  
OFFSET 3 - SGDMA_ADLO2  
OFFSET 9 - SGDMA_CMD2  
OFFSET 0 - SGDMA_START_FIFO3  
OFFSET 1 - SGDMA_DONE_FIFO3  
OFFSET 2 - SGDMA_ADHI3  
7FCD  
7FCE  
7FCF  
7FD0  
7FD1  
OFFSET 3 - SGDMA_ADLO3  
OFFSET 9 - SGDMA_CMD3  
7FD7  
FIGURE 7 – SGDMA REGISTER SPACE  
SMSC DS – USB97C102  
Page 38  
Rev. 03/23/2000  
The SGDMA also contains a PIO engine that permits the MCU to access the ISA bus on a cycle stealing basis with  
the DMA transfers (there is only one PIO engine).  
Table 62 – SGDMA Packet Number Start FIFO Register  
SGDMA_START_FIFOx [x=0..3]  
(BASE+0 – RESET = 0x00)  
SGDMA_START_FIFO  
BIT  
NAME  
R/W  
DESCRIPTION  
[7:5]  
[4:0]  
Reserved  
PCKTNUM  
R/W  
R/W  
Reserved – Read back as 0  
Packet Number to queue on  
SGDMA_START_FIFOx [x=0..3].  
Note 1:  
Note 2:  
This register is used when the channel is configured for an MMU memory operation.  
When the channel is enabled (CHANNEL_ENABLE=1 in register SGDMA_CMDx [x=0..3]), only the SGDMA  
can read from these registers. The MCU can only read from these registers when the channel is disabled  
(CHANNEL_ENABLE=0 in register SGDMA_CMDx [x=0..3]), and not busy (DMA_BUSY=0 in register  
SGDMA_STSx [x=0..3]). It is the MCU’s responsibility to ensure that this FIFO does not overflow.  
Table 63 – SGDMA Packet Number Done FIFO Register  
SGDMA_DONE_FIFOx [x=0..3]  
(BASE+1 – RESET = 0x00)  
SGDMA_DONE_FIFO  
BIT  
NAME  
R/W  
DESCRIPTION  
[7:5]  
[4:0]  
Reserved  
PCKTNO  
R/W  
R/W  
Reserved – Read back as 0.  
Packet Number on top of the  
SGDMA_DONE_FIFOx [x=0..3].  
Note 1:  
Note 2:  
This register is used when the channel is configured for an MMU memory operation.  
The SGDMA puts the packet number on this FIFO when the DMA transfer is complete, or when the MCU  
disables a channel that was enabled and busy (meaning a DMA transfer was in progress). When this  
register is read, the FIFO is popped. It is the MCU’s responsibility to ensure that this FIFO does not  
overflow.  
Table 64 – SGDMA ISA Address High Byte Register  
SGDMA_ADHIx [x=0..3]  
(BASE+2 – RESET = 0x00)  
SGDMA_ADHI  
BIT  
[7:0]  
NAME  
ADHIx [x=0..3]  
R/W  
R/W  
DESCRIPTION  
Contains the high byte of the ISA  
Address to use.  
Table 65 – SGDMA ISA Address Low Byte Register  
SGDMA_ADLOx [x=0..3]  
(BASE+3 – RESET = 0x00)  
SGDMA_ADLO  
DESCRIPTION  
BIT  
NAME  
R/W  
[7:0]  
ADLOx [x=0..3]  
R/W  
Contains the low byte of the ISA Address  
to use.  
Note 1:  
Note 2:  
The SGDMA_ADHIx [x=0..3] and SGDMA_ADLOx [x=0..3] registers are used when the channel [0..3] is  
configured for an ISA memory operation.  
The MCU must not write to these registers unless the channel is disabled (CHANNEL_ENABLED=0 in  
register SGDMA_CMDx [x=0..3]) and not busy (DMA_BUSY=0 in register SGDMA_STSx [x=0..3]).  
Table 66 – SGDMA Transfer Size High Register  
SGDMA_SIZEHIx [x=0..3]  
(BASE+4 – RESET = 0x00)  
SGDMA_SIZEHI  
BIT  
[7:0]  
NAME  
SIZEHIx  
[x=0..3]  
R/W  
R/W  
DESCRIPTION  
Contains the high byte of the payload  
data size (in bytes)  
SMSC DS – USB97C102  
Page 39  
Rev. 03/23/2000  
Table 67 – SGDMA Transfer Size Low Register  
SGDMA_SIZELOx [x=0..3]  
(BASE+5 – RESET = 0x00)  
SGDMA_SIZELO  
DESCRIPTION  
Contains the low byte of the payload  
data size (in bytes).  
BIT  
[7:0]  
NAME  
SIZEHIx  
[x=0..3]  
R/W  
R/W  
Note 1:  
Note 2:  
The SGDMA_SIZEHIx [x=0..3] and SGDMA_SIZELOx [x=0..3] registers are used when the channel [0..3] is  
configured for an ISA memory operation or for a MMU operation without a Packet Header.  
The MCU must not write to these registers unless the channel is disabled (CHANNEL_ENABLED = 0 in  
register SGDMA_CMDx [x=0..3]) and not busy ((DMA_BUSY=0 in register SGDMA_STSx [x=0..3]).  
Table 68 – SGDMA Total Packets in Channel Register  
SGDMA_TOTAL_PKTSx [x=0..3]  
(BASE+6 – RESET = 0x00)  
SGDMA_TOTAL_PKTS  
BIT  
[7:5]  
[4:0]  
NAME  
Reserved  
NUMPCKTS  
R
R
R
DESCRIPTION  
Reserved – Read back as 0  
Number of packets currently in the  
channel [0..3]  
Note 1:  
This register contains a count of the total number of packets in the corresponding SGDMA channel [0..3]. It  
is incremented when the MCU puts a packet number into the SGDMA_START_FIFOx [x=0..3] and is  
decremented when the MCU pops a packet from the SGDMA_DONE_FIFOx [x=0..3].  
Table 69 – SGDMA Total Packets in the Done FIFO Register  
SGDMA_DONE_PCKTSx [x=0..3]  
(BASE+7 – RESET = 0x00)  
SGDMA_DONE_PCKTS  
BIT  
[7:5]  
[4:0]  
NAME  
Reserved  
NUMPCKTS  
R
R
R
DESCRIPTION  
Reserved – Read back as 0  
Number of packets in the  
SGDMA_DONE_FIFOx [x=0..3]  
Note 1:  
This register contains a count of the total number of packets in the SGDMA_DONE_FIFOx [x=0..3]. It is  
incremented when the SGDMA puts a packet number into the SGDMA_DONE_FIFOx [x=0..3] and is  
decremented when the MCU pops a packet from the SGDMA_DONE_FIFOx [x=0..3].  
Table 70 – SGDMA Status Register  
SGDMA_STSx [x=0..3]  
(BASE+8 – RESET = 0x00)  
SGDMA_STS  
BIT  
7
6
NAME  
DMA_BUSY  
ISA_DONE  
R
R
R
DESCRIPTION  
Will be Set (1) while an SGDMA transfer is in progress  
Will be Set (1) after an ISA memory – ISA device transfer is  
completed. Resets to 0 when the channel is disabled  
(CHANNEL_ENABLE=0 in register SGDMA_CMDx [x=0..3])  
(Channel 0 only)  
5
M2M_INCOMPLETE  
R
Set(1) only when all of the following are true:  
!"  
!"  
!"  
!"  
!"  
!"  
!"  
Memory-to-Memory transfer  
MMU memory is the target  
SGDMA_START_FIFO1 is not empty  
SGDMA_SIZEHI0 = 0  
SGDMA_SIZELO0 = 0  
SGDMA Channel 0 is enabled  
SGDMA Channel 1 is enabled  
Clear(0) when they are not all true  
5
Reserved  
R
Reserved – Read back as 0.  
(for Channels 1, 2, and 3)  
4
3
Reserved  
DONE_FIFO_FULLx  
[x=0..3]  
DONE_FIFO_EMPTYx  
[x=0..3]  
R
R
Reserved – Read back as 0.  
Set(1) when SGDMA_DONE_FIFOx [x=0..3] is full  
Clear(0) when SGDMA_DONE_FIFOx [x=0..3] is not full  
Set(1) when SGDMA_DONE_FIFOx[x=0..3] is empty  
Clear(0) when SGDMA_DONE_FIFOx[x=0..3] is not empty  
2
R
SMSC DS – USB97C102  
Page 40  
Rev. 03/23/2000  
SGDMA_STSx [x=0..3]  
(BASE+8 – RESET = 0x00)  
SGDMA_STS  
DESCRIPTION  
Set(1) when SGDMA_START_FIFOx [x=0..3] is full  
Clear(0) when SGDMA_START_FIFOx [x=0..3] is not full  
Set(1) when SGDMA_START_FIFOx [x=0..3] is empty  
Clear(0) when SGDMA_START_FIFOx [x=0..3] is not not  
empty  
BIT  
NAME  
START_FIFO_FULLx  
[x=0..3]  
R
R
1
0
START_FIFO_EMPTY  
x
R
[x=0..3]  
Table 71 – SGDMA Command Register  
SGDMA_CMDx [x=0..3]  
(BASE+9 – RESET = 0x00)  
SGDMA_CMD  
BIT  
[7:3]  
2
NAME  
Reserved  
PCKT_HD  
R
R/W  
R/W  
R/W  
DESCRIPTION  
Reserved – Read back as 0  
Set(1) to indicate that a packet header is present. Clear(0) to  
indicate that there is no packet header. Applies only if MEM_OP  
is set(1).  
1
MEM_OP  
R/W  
Set(1) to indicate a MMU memory operation. Clear(0) to indicate  
an ISA memory operation.  
!"  
!"  
!"  
When clear(0), the packet size comes from the  
SGDMA_SIZEHIx/LOx [x=0..3] registers, whose value is  
decremented before being written into the 8237 count  
register. The memory address comes from the  
SGDMA_ADHIx/LOx [x=0..3] registers.  
When set(1), and PCKT_HDR=0, the packet size comes  
from the SGDMA_SIZEHIx/LOx [x=0..3] registers, whose  
value is decremented before being written into the 8237  
count register. The High byte of the address is based on the  
packet number, and the low byte of the address is 0.  
When set(1), and PCKT_HDR=1, the high byte of the  
address is based on the packet number and the low byte of  
the address is 8.  
For a MemRd transfer, the packet size is read from the  
packet header – this value represents the number of bytes  
of payload data plus header, so this value minus 9 is written  
into the 8237 counter register. If the packet size in the  
header is 8 (indicating a zero-byte payload), no DMA  
transfer will occur but the SGDMA will but the packet  
number into the SGDMA_DONE_FIFOx [x=0..3].  
For a MemWr transfer, the SGDMA_SIZEHIx/LOx [x=0..3]  
registers contain the number of bytes of payload data, so  
this value is decremented before being written into the 8237  
count register, and this value plus 8 is written into the packet  
memory at an offset of 6.  
0
CHANNEL  
_ENABLE  
R/W  
Set(1) to enabled the channel. Clear(0) to disable the channel. If  
this bit is cleared during a SGDMA cycle (before TC), then:  
!"  
If MEM_OP=1, the packet number is put into the  
SGDMA_DONE_FIFOx [x=0..3] and the SGDMA returns to  
idle, ready for another cycle.  
!"  
!"  
If MEM_OP=0, the SGDMA returns to idle and is ready for  
another cycle.  
If a memory-to-memory transfer, the packet number for the  
MMU channel is put into the SGDMA_DONE_FIFO0x [0 or  
1], but none of the updates to the address or size register  
occur, and the SGDMA returns to idle and is ready for  
another cycle.  
Note 1:  
The PKT_HDR and MEM_OP bits must not be changed unless the channel is disabled  
(CHANNEL_ENABLRE=0 in register SGDMA_CMDx [x=0..3]) and not busy (DMA_BUSY=0 in  
register SGDMA_STSx [x=0..3]).  
SMSC DS – USB97C102  
Page 41  
Rev. 03/23/2000  
Note 2:  
Memory-to-memory transfer is a special case and is handled as follows. A memory-to-memory  
transfer supports transfers only between MMU memory and ISA memory, in either direction. The  
source must be Channel 0, the destination must be Channel 1.  
!" MMU memory to ISA memory transfers  
Initially, the MCU performs the following:  
1) Clears the SGDMA_SIZEHI0/LO0 registers.  
2) Sets the SGDMA_ADHI1/LO1 registers to the ISA Address.  
After each TC, the SGDMA will add the size of the completed transfer to the SGDMA_ADHI1/LO1 registers.  
If PKT_HDR=1 in the SGDMA_CMD0 register, the transfer size comes from the MMU packet header. If  
PKT_HDR=0 in the SGDMA_CMD0 register, the transfer size is the value in SGDMA_SIZEHI1/LO1 registers.  
!" ISA memory to MMU memory transfers  
Initially, the MCU performs the following:  
1) Sets the SGDMA_ADHI0/LO0 to the ISA Address.  
2) Sets the SGDMA_SIZEHI0/LO0 to the ISA buffer size.  
3) Sets the SGDMA_SIZEHI1/LO1 to the session transfer size.  
After each TC, the SGDMA will add the session transfer size to the SGDMA_ADHI0/LO0 registers and subtract  
the session transfer size from the SGDMA_SIZEHI0/LO0 registers.  
The actual transfer size is the lesser of the values in the SGDMA_SIZEHI1/ LO1 and the SGDMA_SIZEHI0/LO0  
registers.  
If PKT_HDR=1 in register SGDMA_CMD1, then the actual transfer size plus 8 will be written to the packet  
memory at an offset of 6.  
When the SGDMA_SIZEHI0/LO0 registers reach a value of 0, the ISA buffer has been completely transferred. If  
the SGDMA_START_FIFO1 is not yet empty when the ISA buffer has been completely transferred, the  
M2M_INCOMPLETE bit in the SGDMA_STS0 register will be set.  
!"  
!"  
During a memory-to-memory transfer, if either Channel 0 or Channel 1 is Disabled during the SGDMA cycle,  
then the packet number for the MMU channel is put into the SGDMA_DONE_FIFOxx [0 or 1]. However, none of  
the updates to the address or size registers occur, and the SGDMA returns to idle and is ready for another cycle.  
For memory-to-memory transfers, the SGDMA_ADHI0, SGDMA_ADLO0, SGDMA_ADHI1, SGDMA_ADLO1,  
SGDMA_SIZEHI0, and SGDMA_SIZELO0 must not be read by the MCU until both channels 0 and 1 are not  
Busy (DMA_BUSY=0 in SGDMA_STS0 and SGDMA_STS1).  
PIO REGISTER DESCRIPTION  
Table 72 – Upper Byte of the PIO ISA Address  
PIO_ADHI  
(0x7FD8 – RESET = 0x00)  
PIO_ADHI  
DESCRIPTION  
Reserved – Read back as 0  
The upper 4 bits of the ISA address  
BIT  
[7:4]  
[3:0]  
NAME  
Reserved  
PIOADDRHI  
R/W  
R/W  
R/W  
Table 73 –Middle Byte of the PIO ISA Address  
PIO_ADMID  
(0x7FD9 – RESET = 0x00)  
PIO_ADMID  
DESCRIPTION  
BIT  
NAME  
R/W  
[7:0]  
PIOADDRMID  
R/W  
The middle byte of the ISA address  
SMSC DS – USB97C102  
Page 42  
Rev. 03/23/2000  
Table 74 –Low Byte of the PIO ISA Address  
PIO_ADLO  
(0x7FDA – RESET = 0x00)  
PIO_ADLO  
DESCRIPTION  
The low byte of the ISA address  
BIT  
[7:0]  
NAME  
PIOADDRLO  
R/W  
R/W  
Note 1:  
Note 2:  
The MCU must not write these registers until PIO_BUSY=0 in the PIO_CSR register.  
PIO Read transfers and the first transfer of PIO Read Multiple transfers are initiated by writing to  
the PIO_ADLO register.  
Table 75 – PIO Data Register  
PIO_DATA  
(0x7FDB – RESET = 0x00)  
PIO_DATA  
BIT  
[7:0]  
NAME  
PIODATA  
R/W  
R/W  
DESCRIPTION  
The Data for the PIO transfer  
Note 1:  
Note 2:  
The MCU must not read this register until PIO_BUSY=0 in the PIO_CSR register.  
PIO Write transfers are initiated by writing to the PIO_DATA register.  
PIO Read Multiple transfers (except for the first transfer) are initiated by reading the PIO_DATA  
register  
Table 76 – PIO Command/Status Register  
PIO_CSR  
(0x7FDC – RESET = 0x00)  
PIO_CSR  
BIT  
7
6
NAME  
PIO_BUSY  
Reserved  
R/W  
R
DESCRIPTION  
Will be set(1) when a PIO transfer is in progress  
R/W Reserved – Read back as 0  
[5:3]  
STROBEWIDTH  
R/W Programs the width of the RD/WR strobes (nIOR, nIOW,  
nMEMR, nMEMW)  
5
0
0
0
0
1
1
1
1
4
0
0
1
1
0
0
1
1
3
0
1
0
1
0
1
0
1
Strobe Width  
Invalid  
Invalid  
Invalid  
3 DMACLKs  
4 DMACLKs  
5 DMACLKs  
6 DMACLKs  
Invalid  
For ISA Read accesses, the data must be valid one  
DMACLK cycle before the trailing edge of the read strobe.  
R/W Set(1) to indicate an ISA memory transfer.  
Clear(0)to indicate an ISA I/O transfer.  
2
MEMORY  
1
0
0
1
1
0
0
1
0
1
Transfer Type  
Disable  
Write  
Read  
[1:0]  
TRANSFERTYPE  
R/W  
Read Multiple  
Note 1:  
Note 2:  
The STROBEWIDTH and MEMORY bits of the PIO_CSR register must not be changed unless  
TRANSFERTYPE=00 (disabled) and PIO_BUSY=0 in the PIO_CSR register.  
The Ready input can be used to stretch the width of the RD/WR strobes generated by the PIO.  
When the READY input is high, the strobes will be as programmed in the PIO_CSR register.  
!" PIO Writes:  
In order to affect the nIOW or nMEMW strobes, the READY signal must go low at least 2  
DMACLK periods before the scheduled rising edge of the strobe, and then the strobe will remain low  
until 3 DMACLK periods after READY goes high. PIO Reads: In order to affect the nIOR or nMEMW  
strobes, the READY signal must go low at least 3 DMACLK periods before the scheduled rising edge of  
the strobe, and then the strobe will remain low for 5 DMACLK periods after READY goes high. The read  
Data must be valid within 4 DMACLKS after READY goes high so that the Data is available at least 1  
DMACLK period before the rising edge of the read strobe.  
SMSC DS – USB97C102  
Page 43  
Rev. 03/23/2000  
MEMORY MANAGEMENT UNIT (MMU) REGISTER DESCRIPTION  
MMU Interface Registers  
Table 77 - MMU Data Window Register  
MMU_DATA  
(0x6000)  
NAME  
MMU DATA WINDOW REGISTER  
DESCRIPTION  
BIT  
R/W  
[7:0]  
[D7:D0]  
R/W  
Data Packet Window.  
When RCV in the PRH register = '1', this is the byte pointed to by  
the packet number on the top of the RXFIFO, and the packet  
offset of PRH:PRL.  
When RCV in the PRH register = '0', this is the byte pointed to by  
the packet number in the PNR register, and the packet offset of  
PRH:PRL.  
Notes:  
1) The Read FIFO may take at most 1.218µs after the PNH is written to present valid data.  
2) The Write FIFO may take at most 2.520µs after writing the last byte of data to the FIFO to finish writing that data  
to the buffer.  
3) The worst case sequential access times to the FIFOs while the 8237 is simultaneously arbitrating for the MMU,  
and a USB packet is currently being transferred, is 588ns.  
a) (READ) Therefore, after changing the PRH register, the 8051 should wait at least 2 instruction cycles (at  
12MHz) before reading from this register. After waiting, the 8051, in auto-increment mode (PRH bit 6=1),  
can read a byte every cycle (at up to 16MHz).  
b) (WRITE) The data register mode can be switched to write at any time, and data can be written immediately  
on every instruction cycle. After writing data, the 8051 should wait at least 3 instruction cycles (at 12MHz)  
before changing the PNR or PRH :PRL registers for a Read . Again, after waiting 1.218µs, the 8051 can  
read a byte every instruction cycle.  
Each endpoint will have a three bit up/dn counter which will maintain the number of packets queued for transmit at  
that endpoint. These counters are readable through these registers (there are sixteen – from 7F40 to 7F4F).  
Table 78 – Tx FIFO Counter  
TX_FIFOx  
(0x7F40-0x7F4F)  
Tx FIFO Counter  
BIT  
[7:3]  
[2:0]  
NAME  
Reserved  
TxFIFO Count  
R/W  
R
R
DESCRIPTION  
Reserved  
This field will contain the number of packets that are queued for  
transmit at each endpoint. It is incremented when there is a push  
on the Tx FIFO of the corresponding endpoint, and it is  
decremented when there is a pop on the Tx FIFO of the  
corresponding endpoints.  
Table 79 - Pointer Register (Low)  
PRL  
(0x7F50)  
NAME  
A[7:0]  
POINTER REGISTER (LOW)  
DESCRIPTION  
LSB of the (0-1277 Max) offset of the allocated Packet Pointed to  
by PNR. The byte(s) pointed to by this register can be read and  
written to by the MCU at 0x6000.  
BIT  
[7:0]  
R/W  
R/W  
Note 1:  
Note 2:  
This register must be written before PRH .  
The value read from this register is not necessarily what was last written to it, but actually the last address  
used to access the buffer RAM.  
SMSC DS – USB97C102  
Page 44  
Rev. 03/23/2000  
Table 80 - Pointer Register (High)  
POINTER REGISTER (HIGH)  
PRH  
(0x7F51)  
NAME  
RCV  
BIT  
7
R/W  
R/W  
DESCRIPTION  
0 = The packet at 0x6000 is the packet pointed to by the PNR  
register.  
1 = The packet available at 0x6000 is the packet pointed to by the  
packet on the top of the RX Packet Number FIFO.  
0 = Auto-increment is disabled  
1 = Causes the PRH:PRL register to be automatically  
incremented each time the 0x6000 data window is accessed.  
Data register direction. This bit is required for the MMU/Arbiter to  
provide a transparent interface to the buffer RAM for the MCU.  
When first set, the MMU immediately fills the read FIFO. The  
MCU must wait 2.5us (60 Arbiter clocks) after writing to the  
MMU_DATA register before changing this bit from '0' to '1'.  
6
5
AUTO_INCR  
READ  
R/W  
R/W  
0 = WRITE  
1 = READ  
[4:3]  
[2:0]  
Reserved  
A[10:8]  
R
R/W  
Reserved  
MSB of the (0-1277 Max) offset of the allocated Packet Pointed to  
by PNR. The byte(s) pointed to by this register can be read and  
written to by the MCU at 0x6000.  
Note:  
This register must be written after PRL for its value to take effect.  
Table 81 - Transmit FIFO Select Register  
MMUTX_SEL  
(0x7F52)  
TRANSMIT FIFO SELECT REGISTER  
BIT  
[7:4]  
[3:0]  
NAME  
Reserved  
EP[3:0]  
R/W  
R
R/W  
DESCRIPTION  
Reserved  
This register selects which Endpoint Commands "110" and "111"  
will affect when issued to the MMU  
Note:  
This register must be written before writing the “Enqueue Packet into Endpoint x” or the “Reset TX Endpoint x”  
command to the MMUCR.  
Table 82 - MMU Command Register  
MMUCR  
(0x7F53)  
MMU COMMAND REGISTER  
BIT  
[7:5]  
4
NAME  
R/W  
W
W
DESCRIPTION  
MMUCR COMMAND SET  
Reserved, writes are ignored and read return “0”  
Number of 128 byte Pages. N[3..0]=0000 indicates 1 page, and  
N[3..0]=1001 indicates 10 pages, or 1280 bytes.  
MMU_CMD  
Reserved  
N[3:0]  
[3:0]  
W
SMSC DS – USB97C102  
Page 45  
Rev. 03/23/2000  
MMU COMMAND Bits 7, 6, and 5 Description:  
000  
001  
NOOP, No operation  
Allocate Memory : N3-0 specify how many 128 byte pages to allocate for that packet (up to 10 pages  
allowed (1280 bytes) per packet.) Immediately generates a "FAILED" code at the ARR and the code is  
cleared when complete. Can generate an ALLOC interrupt to MCU upon completion. When an allocation  
request cannot be completed due to insufficient memory, the FAILED bit in the ARR will remain set. Any  
subsequent release of memory pages (by either the MMUCR or the SIEDMA) will cause the MMUCR to  
automatically continue the allocate command until all requested pages have been successfully allocated.  
Software should never issue another allocate command until the previous allocate command has been  
successfully completed.  
010  
011  
RESET MMU : Frees all buffer RAM, clears interrupts, and resets queue pointers.  
Remove Packet from top of RX Queue : To be issued after MCU has completed processing the packet  
number at the RXFIFO.  
100  
Remove and Release Top of RXFIFO : Same as (011), but also frees all memory used by the packet. This  
command is especially useful as a quick way to "ignore" bad packets.  
101  
110  
Release specific Packet : Frees all pages allocated to the packet specified in the PNR.  
Enqueue Packet into Endpoint x : Places the Packet number indicated by the PNR register in the transmit  
queue of the endpoint pointed to by the MMUTX_SEL register. The MMUTX_SEL register must be written  
before this command is issued.  
111  
Reset TX Endpoint x : Resets the TX FIFO holding the packet numbers awaiting transmission and the  
TXFIFO_STAT bits of the endpoint pointed to by the MMUTX_SEL register. The MMUTX_SEL register must  
be written before this command is issued. This command does not release any memory allocated to packets  
that are dequeued.  
Table 83 - Allocation Result Register  
ARR  
(0x7F54)  
ALLOCATION RESULT REGISTER  
BIT  
7
[6:5]  
[4:0]  
NAME  
R/W  
R
R
DESCRIPTION  
FAILED  
Reserved  
P[4:0]  
Reserved  
R
Returns Packet Number (0-31, 0x00-0x1F) from an allocation  
command. This can be written directly into the PNR register  
Table 84 - Packet Number Register  
PACKET NUMBER REGISTER  
DESCRIPTION  
PNR (0x7F55)  
NAME  
Reserved  
P[4:0]  
BIT  
[7:5  
[4:0]  
R/W  
R
Reserved  
R/W  
Packet selector to access packet at 0x6000 buffer window  
SMSC DS – USB97C102  
Page 46  
Rev. 03/23/2000  
MMU Free Pages Register  
MMU Free Pages bits, and a global NAK_ALLRX (this can only NACK OUT and Bulk packets) control bit for the  
firmware to view the real time status of the 32 page allocation bits. This allows the MCU to set NAK_ALLRX which  
would inhibit the SIE from asking the SIEDMA to allocate packets, MCU checks how many pages are left, issue an  
allocate if enough are free, and then release the SIE/SIEDMA. For the current design, the number of free pages  
would range from 0x00 to 0x1F (32) pages left unallocated.  
The indication of pages free may be invalid during an allocation or deallocation.  
Table 85 - PAGES FREE IN THE MMU  
PAGS_FREE  
(0x7F56 - RESET=0x20)  
PAGES FREE IN THE MMU  
BIT  
NAME  
R/W  
DESCRIPTION  
7
NAK_ALLRX  
R/W  
NACK All received packets  
0 = Normal Operation (Default)  
1 = NACK all RX packets  
6
Reserved  
0
Reserved  
[5:0]  
PAGS_FREE  
R
These bits indicate the number of free pages in the MMU.  
Note 1:  
Note 2:  
Firmware can set a NAK_ALLRX bit to inhibit the SIE from asking the SIEDMA to allocate any pages while  
the MCU is observing the page free bits.  
This register is used to indicate how many pages are left in many situations, including after an RX_OVRN,  
before a multi-packet allocation, etc. This eliminates the possibility of a failed allocation, simplifying software  
without adding additional hardware to abort an allocation.  
32 BYTE DEEP TX COMPLETION FIFO REGISTER  
Table 86 - TX Management Register 2  
TX_MGMT  
(0x7F57 - RESET=0x80)  
TX Management Register  
DESCRIPTION  
BIT  
NAME  
R/W  
7
CTX_EMTY  
R
Completed TX FIFO empty status  
0 = Has one or more TX packet  
1 = Empty  
6
CTX_FULL  
R
Completed TX FIFO full status  
0 = Not FULL  
1 = FULL  
5
[4:0]  
Reserved  
CTX_FIFO  
R
R
Reserved  
This is the data port for the 32 deep TX completion FIFO. This  
FIFO is automatically updated by hardware with the last  
successfully completed transmit packet. It is the responsibility of  
software to ensure that this FIFO never overflows and/or  
becomes full.  
SMSC DS – USB97C102  
Page 47  
Rev. 03/23/2000  
Table 87 - Receive Packet Number FIFO Register  
RXFIFO  
(0x7F58)  
NAME  
NEXT RX PACKET NUMBER FIFO REGISTER  
DESCRIPTION  
1 = No pending packets from the host to be processed  
1 = The SIEDMA will not accept packets from the host (via RX  
Overflow)  
BIT  
7
6
R/W  
R
R
RXFIFO_EMPTY  
RXFIFO_FULL  
5
[4:0]  
Reserved  
P[4:0]  
R
R
Reserved  
Packet Number  
When a packet has been received, and the 8-byte header has  
been written by the SIEDMA, the associated Packet Number is  
placed in this FIFO.  
A "complete" reception requires that the 8 byte status header is correctly written into the packet buffer, with the  
correct data, and moved into the RX Packet Number FIFO. A "successful" reception requires that the CRC and PID  
check bits of a "complete" reception are good. The hardware queues only "complete" packets. Firmware must  
determine if "complete" packets were "successful". Corrupted token packets causes the complete data payload to be  
ignored.  
SMSC DS – USB97C102  
Page 48  
Rev. 03/23/2000  
Tx FIFO POP Register  
This register is used to help software manage TX Queues.  
This will provide a method to handle a  
CLEAR_FEATURE:ENDPOINT_STALL condition gracefully. When read, this register will return the Packet Number  
of the next packet waiting on the TX queue pointed to by MMUTX_SEL register, AND it will pop that Packet Number  
off of the selected TX FIFO.  
Table 88 - POP TX FIFO  
POP_TX  
(0x7F59 – RESET=0x80)  
POP TX FIFO  
BIT  
NAME  
R/W  
DESCRIPTION  
7
POPTX_STAT  
R
POP TX FIFO empty status  
0 = Has one or more TX packet  
1 = Empty  
[6:5]  
[4:0]  
Reserved  
POP_TX  
R
R
Reserved  
This 5 bit value is the packet number or handle that is at the top of  
the TX FIFO pointer to by MMUTX_SEL. The TX FIFO is popped  
when this register is read.  
Note:  
It is the software's responsibility to ensure that the appropriate TX EP is disabled during this operation, and to  
issue a de-allocate command if desired.  
Table 89 - Transmit FIFO Status Register A  
TXSTAT_A  
(0x7F60 - RESET=0x55)  
TRANSMIT FIFO STATUS REGISTER A  
BIT  
NAME  
R/W  
DESCRIPTION  
7
EP3TX_EMPTY  
R
Endpoint 3 Transmit Packet FIFO Status  
Bits [7:6]='11' Invalid  
Bits [7:6]='10' Empty (No Packets queued)  
Bits [7:6]='01' Full (5 Packets queued)  
Bits [7:6]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
6
5
EP3TX_FULL  
EP2TX_EMPTY  
R
R
Endpoint 2 Transmit Packet FIFO Status  
Bits [5:4]='11' Invalid  
Bits [5:4]='10' Empty (No Packets queued)  
Bits [5:4]='01' Full (5 Packets queued)  
Bits [5:4]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
4
3
EP2TX_FULL  
EP1TX_EMPTY  
R
R
Endpoint 1 Transmit Packet FIFO Status  
Bits [3:2]='11' Invalid  
Bits [3:2]='10' Empty (No Packets queued)  
Bits [3:2]='01' Full (5 Packets queued)  
Bits [3:2]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
2
1
EP1TX_FULL  
EP0TX_EMPTY  
R
R
Endpoint 0 Transmit Packet FIFO Status  
Bits [1:0]='11' Invalid  
Bits [1:0]='10' Empty (No Packets queued)  
Bits [1:0]='01' Full (5 Packets queued)  
Bits [1:0]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
0
EP0TX_FULL  
R
SMSC DS – USB97C102  
Page 49  
Rev. 03/23/2000  
Table 90 - Transmit FIFO Status Register B  
STAT_B  
(0x7F61 - RESET=0x55)  
TRANSMIT FIFO STATUS REGISTER B  
DESCRIPTION  
BIT  
NAME  
R/W  
7
EP7TX_EMPTY  
R
Endpoint 7 Transmit Packet FIFO Status  
Bits [7:6]='11' Invalid  
Bits [7:6]='10' Empty (No Packets queued)  
Bits [7:6]='01' Full (5 Packets queued)  
Bits [7:6]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
6
5
EP7TX_FULL  
EP6TX_EMPTY  
R
R
Endpoint 6 Transmit Packet FIFO Status  
Bits [5:4]='11' Invalid  
Bits [5:4]='10' Empty (No Packets queued)  
Bits [5:4]='01' Full (5 Packets queued)  
Bits [5:4]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
4
3
EP6TX_FULL  
EP5TX_EMPTY  
R
R
Endpoint 5 Transmit Packet FIFO Status  
Bits [3:2]='11' Invalid  
Bits [3:2]='10' Empty (No Packets queued)  
Bits [3:2]='01' Full (5 Packets queued)  
Bits [3:2]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
2
1
EP5TX_FULL  
EP4TX_EMPTY  
R
R
Endpoint 4 Transmit Packet FIFO Status  
Bits [1:0]='11' Invalid  
Bits [1:0]='10' Empty (No Packets queued)  
Bits [1:0]='01' Full (5 Packets queued)  
Bits [1:0]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
0
EP4TX_FULL  
R
Table 91 - Transmit FIFO Status Register C  
TXSTAT_C  
(0x7F62 - RESET=0x55)  
TRANSMIT FIFO STATUS REGISTER C  
DESCRIPTION  
BIT  
NAME  
R/W  
7
EP11TX_EMPTY  
R
Endpoint 11 Transmit Packet FIFO Status  
Bits [7:6]='11' Invalid  
Bits [7:6]='10' Empty (No Packets queued)  
Bits [7:6]='01' Full (5 Packets queued)  
Bits [7:6]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
6
5
EP11TX_FULL  
EP10TX_EMPTY  
R
R
Endpoint 10 Transmit Packet FIFO Status  
Bits [5:4]='11' Invalid  
Bits [5:4]='10' Empty (No Packets queued)  
Bits [5:4]='01' Full (5 Packets queued)  
Bits [5:4]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
4
3
EP10TX_FULL  
EP9TX_EMPTY  
R
R
Endpoint 9 Transmit Packet FIFO Status  
Bits [3:2]='11' Invalid  
Bits [3:2]='10' Empty (No Packets queued)  
Bits [3:2]='01' Full (5 Packets queued)  
Bits [3:2]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
2
1
EP9TX_FULL  
EP8TX_EMPTY  
R
R
Endpoint 8 Transmit Packet FIFO Status  
Bits [1:0]='11' Invalid  
Bits [1:0]='10' Empty (No Packets queued)  
Bits [1:0]='01' Full (5 Packets queued)  
Bits [1:0]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
0
EP8TX_FULL  
R
SMSC DS – USB97C102  
Page 50  
Rev. 03/23/2000  
Table 92 - Transmit FIFO Status Register D  
TXSTAT_D  
(0x7F63 - RESET=0x55)  
TRANSMIT FIFO STATUS REGISTER D  
DESCRIPTION  
BIT  
NAME  
R/W  
7
EP15TX_EMPTY  
R
Endpoint 15 Transmit Packet FIFO Status  
Bits [7:6]='11' Invalid  
Bits [7:6]='10' Empty (No Packets queued)  
Bits [7:6]='01' Full (5 Packets queued)  
Bits [7:6]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
6
5
EP15TX_FULL  
EP14TX_EMPTY  
R
R
Endpoint 14 Transmit Packet FIFO Status  
Bits [5:4]='11' Invalid  
Bits [5:4]='10' Empty (No Packets queued)  
Bits [5:4]='01' Full (5 Packets queued)  
Bits [5:4]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
4
3
EP14TX_FULL  
EP13TX_EMPTY  
R
R
Endpoint 13 Transmit Packet FIFO Status  
Bits [3:2]='11' Invalid  
Bits [3:2]='10' Empty (No Packets queued)  
Bits [3:2]='01' Full (5 Packets queued)  
Bits [3:2]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
2
1
EP13TX_FULL  
EP12TX_EMPTY  
R
R
Endpoint 12 Transmit Packet FIFO Status  
Bits [1:0]='11' Invalid  
Bits [1:0]='10' Empty (No Packets queued)  
Bits [1:0]='01' Full (5 Packets queued)  
Bits [1:0]='00' Partially Full (1, 2, 3, or 4 Packets queued)  
0
EP12TX_FULL  
R
Table 93 - TX Management Register 1  
TX_MGMT  
(0x7F67 - RESET=0x00)  
TX Management Register 1  
DESCRIPTION  
BIT  
[7:1]  
0
NAME  
R/W  
Reserved  
MEM_DALL  
R
R/W  
Reserved  
Memory deallocate Mode  
0 = Auto  
1 = Manual deallocation, but the TX FIFO Pop is still  
automatic.  
This control bit selects between Auto and Manual memory  
pages deallocation. This bit should be statically set at the  
start of operation, and can not be changed during or if  
about to transmit. This bit defaults to “0” for normal  
operation. When set, the MCU handles freeing up the  
memory pages.  
SMSC DS – USB97C102  
Page 51  
Rev. 03/23/2000  
SERIAL INTERFACE ENGINE (SIE) REGISTER DESCRIPTION  
Packet Header Definition  
The following header contains information to determine endpoint, status, length of the received packet, and the  
payload “received data”.  
Table 94 - Packet Header Definition  
OFFSET  
<n + 7  
MSB 7  
6
5
4
3
2
1
LSB 0  
Payload Data Byte n-1 (n is the payload data size, which is Byte Count -8)  
- For 0 Length Packet, Byte Count = 0x008  
- For 1 byte Packet, Byte Count = 0x009  
- For any Packet, (Byte Count-1) points to last byte of payload data  
Payload Data Byte 0  
0x008  
0x007  
0x006  
0x005  
0x004  
0x003  
0x002  
0x001  
0x000  
0
0
0
0
0
BYTE COUNT[10..8]  
BYTE COUNT[7..0]  
EXTENDED FRAME COUNT[15..11]  
FRAME COUNT[7..0]  
FRAME COUNT[10..8]  
RESERVED  
0
TMP_ADDRESS[6..0]  
0
Bad_CR  
C
0
0
0
0
PACKET ID[3..0]  
ENDPOINT[3..0]  
Last_TOG Bad_TOG  
Packet Description:  
1) Offset 0 to 7 is the packet header.  
a) Offset 0x000 to 0x005 is generated by the SIE.  
iii) Offset 0x000 bit bit 5 - Bad_TOG- This bit is set when the SIE receives an unexpected toggle. This is  
not necessarily an error condition, This bit could indicate a condition when the return handshake packet  
is lost. Note that this bit is not set for isochronous transfers.  
LAST PACKET TOGGLE  
CURRENT PACKET  
VALUE  
TOGGLE VALUE  
“BAD TOG” BIT  
0
0
1
1
0
1
0
1
1
0
0
1
iii) Offset 0x000 bit Last_TOG is the last toggle bit received.  
iii) Offset 0x000 bit Bad_CRC, is set when the SIE detects a bad CRC.  
b) Offset 0x006 to 0x007 is generated by the SIEDMA.  
2) Offset 8 to n+7 is the actual data received from the USB bus and stored in memory.  
SMSC DS – USB97C102  
Page 52  
Rev. 03/23/2000  
SIE Interface Registers  
The architecture of the USB97C102 is such that there are no data FIFO's associated with individual endpoints. The  
MMU does not differentiate packets by endpoint number. The firmware must read the endpoint number from the packet  
header to pass the packet on to the appropriate endpoint handler. This makes the chip dynamic and flexible in allocating  
buffers to store any payload size from 0 to 1280 bytes. Each endpoint can be configured separately via the following  
register.  
Table 95 - Endpoint Control Registers  
EP_CTRL[15..0]  
(0x7F8F-0x7F80 - RESET=0x00)  
ENDPOINT CONTROL REGISTERS  
BIT  
NAME  
R/W  
DESCRIPTION  
7
TX_ISO  
R/W  
Bit 7 instructs the SIE how to handle handshakes for transmit  
endpoints during "IN" transactions, and how the SIEDMA  
engine should handle packet queue status after packet  
transmission. When a TX endpoint is configured for isochronous  
operation (Bit 7 = '1'), all packet transmissions are considered  
successful and the SIEDMA must move the packet number into  
the TX Completion FIFO. When the TX endpoint is non-  
isochronous (Bit 7 = '0'), then the SIE must receive a valid ACK  
handshake from the host before the packet is released. This  
guarantees data integrity for non-isochronous transactions.  
Successfully transmitted packets are automatically de-queued  
and the packet is released.  
0 = Non-Isochronous  
1 = Isochronous  
6
RX_ISO  
R/W  
Bit 6 instructs the SIE how to handle handshakes for receive  
endpoints during "OUT" and "SETUP" transactions. Once a  
packet matches the 7-bit Function Address, the SIE must begin  
page allocation and generate a new packet in buffer RAM. The  
MCU must check PID_Valid and CRC_Valid bits and dequeue  
"bad" packets. The SIE will use bit 6 to inhibit handshakes when  
enabled.  
0 = Non-isochronous  
1 = Isochronous  
5,3  
4,2  
TX_CONT[1:0]  
RX_CONT[1:0]  
R/W  
R/W  
0,0= Endpoint is disabled, and does not send handshakes.  
0,1= Send a STALL handshake for an IN transaction directed at  
this EP.  
1,0= Normal Operation. ACK or NAK is sent depending on  
whether data is in the EPXs TX_QUEUE.  
1,1= Send a NAK handshake for an IN transaction directed at  
this EP, regardless of TX_QUEUE status. (Note 3)  
0,0= Endpoint is disabled, and does not send handshakes.  
0,1= Send a STALL handshake for an OUT transaction directed  
at this EP.  
1,0= Normal Operation. ACK or NAK is sent depending on  
RX_OK status  
1,1= Send a NAK handshake for an OUT transaction directed at  
this EP (Note 1)  
1
0
TX_TOGGLE  
RX_TOGGLE  
R/W  
R
This bit is toggled after each successful transmission.  
TX_TOGGLE can be reset or cleared by the MCU but the MCU  
must insure that the endpoint is disabled before modifying them.  
For isochronous transmits, this bit won’t be toggled by the  
hardware.  
This bit reflects the last DATA0/DATA1 toggle. For isochronous  
receives, this bit will still hold the received toggle, but it won’t be  
checked for Toggle error.  
Note 1:  
Note 2:  
There is one Endpoint Control Register per virtual endpoint. When the SIE decodes a token, the endpoint  
number is used to index which EP_CTRL register bits should be used to respond to the SIE and SIEDMA.  
This register allows firmware to throttle back RX packets to any specific endpoint(s) until the firmware  
decides congestion has subsided.  
SMSC DS – USB97C102  
Page 53  
Rev. 03/23/2000  
Note 3:  
Note 4:  
If the firmware needs to STALL an endpoint, it should first be taken off-line by setting RX_CONT1=0, and  
then RX_CON0=1.  
This allows firmware to manage TX endpoint(s) and hold queued data until the firmware is ready, even if the  
host is asking. This is not as critical as the RX version, but it may be required for Isochronous  
synchronization, as well as STALL recovery.  
Note 5:  
These registers can be written to at any time but the SIE won’t be affected until after the current transaction  
(on the particular endpoint) is completed. If a particular register is written several times during an SIE  
transaction, only the last value written will take effect after the SIE transaction is complete.  
Table 96 - LSB FRAME Count Register  
FRAMEL  
0x7F90 Reset 0x00  
FRAME COUNT REGISTER (LOW)  
BIT  
NAME  
R/W  
DESCRIPTION  
[7:0]  
FRAME[7:0]  
R
The 11 bit Frame Number from each SOF packet is loaded with the  
RISING edge of EOT when SOF_TOKEN = '1' and ACK = '1'.  
Note:  
This register is always the last correctly received valid SOF Frame number. Garbled and invalid SOF tokens  
do not alter this register. However, the LSB FRAME/MSB FRAME Count registers will be incremented by the  
hardware when a missing SOF is detected, or when there is an error in frame number. A SOF is defined as  
missing if it does not occur within a range of +/- 3 USBCLKs from the expected frame length. The expected  
frame length is the previous interval between SOFs.  
Table 97 - MSB FRAME Count Register  
FRAMEH  
0x7F91 Reset 0x00  
FRAME COUNT REGISTER (HIGH)  
BIT  
NAME  
R/W  
DESCRIPTION  
[7:3]  
EXT_FR[15:11]  
R
Extended Frame Count.  
The extended count bits are loaded with the RISING edge of  
EOT when SOF_TOKEN = '1' and ACK = '1'. The extended  
Frame count bit must also be enabled (EN_EXTFRAME = '1' in  
SIE_CONFIG).  
[2:0]  
FRAME[10:8]  
R
Frame Number from each SOF packet is loaded with the  
RISING edge of EOT when SOF_TOKEN = '1' and ACK = '1'.  
Note:  
This register is always the last correctly received valid SOF Frame number. Garbled and invalid SOF tokens  
do not alter this register. However, the LSB FRAME/MSB FRAME Count registers will be incremented by the  
hardware when a missing SOF is detected, or when there is an error in frame number. A SOF is defined as  
missing if it does not occur within a range of +/- 3 USBCLKs from the expected frame length. The expected  
frame length is the previous interval between SOFs.  
Table 98 - Local Address Register  
SIE_ADDR  
(0x7F92 RESET=0x00)  
LOCAL ADDRESS REGISTER  
BIT  
NAME  
R/W  
DESCRIPTION  
7
RX_ALL  
R/W  
1 = Overrides the token address decoding of the SIE such  
that no compare is done. Token CRC is also ignored when  
RX_ALL=1. This bit forces all packets transmitted on the wire  
to be received in the RX Packet Queue  
[6:0]  
ADDR[6:0]  
R/W  
This register is only written by the 8051. It is the SIE's local  
address assigned during enumeration. This is the default  
SIE address. ALL endpoints will send/receive on this  
address. This address can be used for the HUB address.  
Note:  
When RX_ALL is enabled, software should not enable any TX endpoints as they will respond to any  
Address with the same endpoint and possibly cause contention on the line. Software should also set each  
RX endpoint RX_ISO bit to prevent handshakes from being sent.  
SMSC DS – USB97C102  
Page 54  
Rev. 03/23/2000  
Table 99 - Alternate Address 1 Register  
ALT_ADDR1  
(0x7F99 - RESET=0x00)  
ALTERNATE SIE ADDRESS 1  
DESCRIPTION  
BIT  
NAME  
R/W  
7
EN_ALTADDR1  
R/W  
Alternate address.  
1 = Enabled, this bit allows Endpoints 4 through 7 to be  
available to this address.  
0 = Disabled, this register does not affect EP_OK generation.  
6
5
4
3
2
1
0
ALT6  
ALT5  
ALT4  
ALT3  
ALT2  
ALT1  
ALT0  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
Alternate address bit 6  
Alternate address bit 5  
Alternate address bit 4  
Alternate address bit 3  
Alternate address bit 2  
Alternate address bit 1  
Alternate address bit 0  
Note 1:  
The Firmware (8051) must make sure that endpoint configurations do not overlap.  
Table 100 - Alternate Address 2 Register  
ALT_ADDR2  
(0x7F9E – RESET=0x00)  
ALTERNATE SIE ADDRESS 2  
BIT  
NAME  
R/W  
DESCRIPTION  
7
EN_ALTADDR2  
R/W  
Alternate address 2.  
1 = Enabled, this bit allows Endpoints 8 through 11 to be  
available to this address.  
0 = Disabled, this register does not affect EP_OK generation.  
6
5
4
3
2
1
0
ALT6  
ALT5  
ALT4  
ALT3  
ALT2  
ALT1  
ALT0  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
Alternate address bit 6  
Alternate address bit 5  
Alternate address bit 4  
Alternate address bit 3  
Alternate address bit 2  
Alternate address bit 1  
Alternate address bit 0  
Table 101 - Alternate Address 3 Register  
ALT_ADDR3  
(0x7F9F – RESET=0x00)  
ALTERNATE SIE ADDRESS 3  
DESCRIPTION  
BIT  
NAME  
R/W  
7
EN_ALTADDR 3  
R/W  
Alternate address 3.  
1 = Enabled, this bit allows Endpoints 12 through 15 to be  
available to this address.  
0 = Disabled, this register does not affect EP_OK generation.  
6
5
4
3
2
1
0
ALT6  
ALT5  
ALT4  
ALT3  
ALT2  
ALT1  
ALT0  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
Alternate address bit 6  
Alternate address bit 5  
Alternate address bit 4  
Alternate address bit 3  
Alternate address bit 2  
Alternate address bit 1  
Alternate address bit 0  
SMSC DS – USB97C102  
Page 55  
Rev. 03/23/2000  
ALTERNATE ADDRESS ENDPOINT MAPPING  
This section will describe Endpoint Mapping relative to the Alternate Address registers defined above. Table 102 -  
Mapping of External Endpoint Numbers to Internal Endpoint Numbers, on page 56 below, describes the Endpoint  
mapping relative to the SIE address embedded in the USB packet. This table describes the mapping of a USB Packet  
which is transmitted (USB IN Packet) or received (USB OUT packet) on the USB Bus and is destined for a particular  
USB97C102 address. Remember, that the USB97C102 has 4 possible address filters.  
The translation is the conversion of the Endpoint Number. The Endpoint Number for OUT packets destined for a  
particular address, the Endpoint Number is translated accordingly as defined in Table 102.  
Example #1, an OUT packet:  
!"  
If a packet on the USB wire, which contains an address destined for the USB97C102 with a value that matches  
Alternate Address #2 (ALT_ADDR2 Register- 0x7F9E) and its endpoint number = 0 and is received, then the  
packet header in the MMU contains the Alternate Address #2 address value and an Endpoint Number = 8. The  
External Endpoint Number “0” is converted to internal endpoint number “8” for packets directed to alternate  
address #2.  
Example #2, a IN packet:  
!"  
When the SMSC 97C102 MCU (8051) is building a packet to send to the host, the packet is enqueued onto one  
of the 16 Transmit FIFO’s which maps to each Endpoint. In other words, each Endpoint has its own transmit  
FIFO. When an IN token is received from the host, that is addressed to alternate address #2 and endpoint 0,  
then the SIE pops a packet off of the Tx FIFO for endpoint 8.  
As can be seen, endpoint translation is performed for outgoing as well as incoming packets as described in Table  
102. Please refer to the SMSC USB97C102 Programmers Reference Guide for additional details.  
Multiple Endpoint Mapping  
When the SMSC USB97C102 Firmware Developer uses the Alternate Address registers to implement specific device  
implementations, internal Endpoints are mapped multiple times relative to the External Endpoint.  
Example:  
If a packet is received, that is addressed to alternate address #3, then external endpoint numbers 1, 5, 9 and 13 are  
all converted to internal endpoint number 13.  
Table 102 - Mapping of External Endpoint Numbers to Internal Endpoint Numbers  
EXTERNAL EP  
(ON THE USB  
WIRE)  
INTERNAL EP (IN PACKET HEADER)  
SIE Addr  
EP 0  
EP 1  
EP 2  
EP 3  
EP 4  
EP 5  
EP 6  
EP 7  
Alt Addr 1  
EP 4  
EP 5  
EP 6  
EP 7  
EP 4  
EP 5  
EP 6  
EP 7  
EP 4  
EP 5  
EP 6  
EP 7  
EP 4  
EP 5  
EP 6  
EP 7  
Alt Addr 2  
EP 8  
Alt Addr 3  
EP 12  
EP 13  
EP 14  
EP 15  
EP 12  
EP 13  
EP 14  
EP 15  
EP 12  
EP 13  
EP 14  
EP 15  
EP 12  
EP 13  
EP 14  
EP 15  
EP 0  
EP 1  
EP 2  
EP 3  
EP 4  
EP 5  
EP 6  
EP 7  
EP 8  
EP 9  
EP 10  
EP 11  
EP 8  
EP 9  
EP 10  
EP 11  
EP 8  
EP 8  
EP 9  
EP 9  
EP 9  
EP 10  
EP 11  
EP 12  
EP 13  
EP 14  
EP 15  
EP 10  
EP 11  
EP 12  
EP 13  
EP 14  
EP 15  
EP 10  
EP 11  
EP 8  
EP 9  
EP 10  
EP 11  
SMSC DS – USB97C102  
Page 56  
Rev. 03/23/2000  
Table 103 - SIE Status Register  
SIE STATUS REGISTER  
SIE_STAT  
(0x7F93 - RESET=0x03)  
NAME  
BIT  
R/W  
DESCRIPTION  
7
ERR  
R
Indicates that an error occurred during the last USB  
transaction. Considered valid on the rising edge of EOT  
Indicate that the last USB transaction ended because of an  
inter-packet time out condition (i.e.:>16 bit times).  
Considered valid on the rising edge of EOT.  
6
TIMEOUT  
R
5
4
SETUP_TOKEN  
SOF_TOKEN  
R
R
Indicates that the token received was a SETUP token.  
Indicates that the SOF PID has been received. Considered  
valid when EOT is '0'.  
3
2
1
PRE_TOKEN  
ACK  
R
R
R
Indicates that the SIE detected a PRE (preamble) packet on  
the USB bus. The signal is asserted when the SIE has seen  
a valid SYNC followed by a valid PRE PID.  
Indicates that the last USB transaction was completed  
without error or time-out. Considered valid on the rising  
edge of EOT.  
When active '1', it indicates that the USB line is being reset.  
This signal is asserted when the SIE detects a string of  
single – ended 0's on the bus for a long time.  
[During USB_RESET, this bit is set(1). When the firmware  
sends a system reset, this bit is cleared(0)]  
USB_RESET  
0
EOT  
R
End - of - Transaction. On transition to a '1', it indicates the  
end of transaction. On transition to a '0' it indicates the  
beginning of a new transaction.  
Note:  
This read only register reflects the status signals from the SIE state machine. This register can be polled for  
test purposes, or by error handling routines for recovery.  
Table 104 - SIE Control Register 1  
SIE_CTRL1  
(0x7F94 - RESET=0x00)  
SIE CONTROL REGISTER 1  
BIT  
NAME  
R/W  
DESCRIPTION  
7
SIEDMA_DISABLE  
R/W  
0 = Normal operation  
1 = Inhibits SIEDMA operation to facilitate MCU override  
Forces SIE to send Acknowledge during receive. Must be  
'0' for normal operation.  
6
5
FORCE_RXOK  
FORCE_TTAG  
R/W  
R/W  
0 = Normal operation  
1 = Signals that the next byte written to the SIE TX_FIFO is  
the last payload byte.  
4
FORCE_RXOVFLO  
R/W  
0 = Normal operation.  
1 = Forces the SIE to generate RXOVFLO and clear the  
SIE RX FIFO.  
3
2
FORCE_TXABORT  
FORCE_EOT  
R/W  
R/W  
0 = Normal operation  
1 = Forces a bit-stuff error at the host  
0 = Normal operation  
1 = Forces an End-of-Transaction for the SIE  
Status of RTAG signal from SIE RX FIFO  
Status of TXOK from SIE  
1
0
RTAG_IN  
TXOK_IN  
R
R
Note:  
Bits 7:2 must be set to “0” for normal operation. Altering these bits will cause an abnormal USB behavior.  
SMSC DS – USB97C102  
Page 57  
Rev. 03/23/2000  
Table 105 - SIE Configuration Register.  
SIE_CONFIG  
(0x7F98 - RESET=0x40)  
NAME  
SIE CONFIGURATION REGISTER  
BIT  
R/W  
DESCRIPTION  
7
FSEN  
R/W  
This bit indicates that the USB97c102 supports 12Mbps USB  
must  
data rates. This bit  
be set to a one ‘1’ for normal  
operation.  
6
5
4
RST_SIE  
RST_FRAME  
EN_EXTFRAME  
R/W  
R/W  
R/W  
1 = Resets the SIE  
1 = Clears FRAMEL and Bit 0 through 2 of FRAMEH  
Extended Frame Count Enable. Expands the Frame count  
from 11 bits to 16 bits for 8051 use.  
0 = Bits 7-3 of FRAMEH are driven to 0.  
1 = Bits 7-3 of FRAMEH count 1-0 transitions of bit 2 in  
FRAMEH.  
3
SIE_SUSPEND  
R/W  
1 = Forces the SIE into USB Suspend Mode. The MCU must  
determine that Suspend must be entered.  
2
1
SIE_RESUME  
USB_RESUME  
R/W  
R
1 = Forces the SIE to transmit Resume signaling on the line.  
1 = Indicates Resume signaling has been detected on the line  
while in the Suspend State. This signal causes a Resume  
Power Management interrupt).  
0
USB_RESET  
R
1 = Indicates that the USB line is being reset. Asserted when  
SE0 is present on the bus for 32 or more 12 Mbps bit times.  
This causes a USB_RESET Power management interrupt.  
Table 106 - SIE Control Register 2  
SIE_CTRL 2  
(0x7FA9 – RESET=0x00)  
NAME  
SIE CONTROL REGISTER 2  
DESCRIPTION  
Reserved – This bit should always be cleared (0)  
BIT  
7
R/W  
R/W  
Reserved  
6
5
4
3
Reserved  
Reserved  
Reserved  
Reserved  
R/W Reserved – This bit should always be cleared (0)  
R/W Reserved – This bit should always be cleared (0)  
R/W Reserved – This bit should always be cleared (0)  
R/W Reserved – This bit should always be cleared (0)  
2
SET_BUSY_ON_SETU R/W When set (1), a setup pckt rcvd on a control endpoint will  
P
set that endpoint to busy in any direction it was not  
disabled. When clear (0), a setup pckt will have no effect  
on the endpoint’s control condition.  
[1:0]  
ISO_LIMIT  
R/W ISO_Limit – Defines the maximum size of an isochronous  
packet  
1
0
0
1
1
0
0
1
PAYLOAD SIZE  
1023 byte payload  
248 byte payload total less 8 byte header = 240  
byte Data payload  
504 byte payload total less 8 byte header = 496  
byte Data payload  
0
1
248 byte payload total less 8 byte header = 240  
byte Data payload  
In conjunction with the Endpoint Control Registers defined above, the Endpoint Command Register allows the  
dynamic modification and configuration of specific endpoints. This register which is new to the SMSC Family of USB  
devices, allows the MCU to write each individual bit field within the existing register Endpoint set without having to do  
read / modify / write operations. The Firmware can jam this register with a full constant, or could OR-in an EP  
number.  
SMSC DS – USB97C102  
Page 58  
Rev. 03/23/2000  
This register allows the individual setting and clearing of the bits in the EP_CTRL registers.  
Table 107 - Endpoint Command Register  
EP_COMM  
(0x7FAA- RESET=0x00)  
ENDPOINT Command Register  
BIT  
NAME  
R/W  
DESCRIPTION  
This bit, when set (1) will allow the command specified in bits 6-4  
to control the TX endpoint. When this bit is cleared (0), the  
command control the RX endpoint. In other words, if set (1), the  
command will affect TX_ISO, TX_ENABLE, STALL_TXEP, and  
TX_TOGGLE (defined in EPCTRL). If clear (0), the command will  
affect RX_ISO, RX_ENABLE, STALL_RXEP, and RX_TOGGLE  
(also defined in EPCTRL).  
7
TX/RX  
R/W  
[6:4]  
COMMAND  
R/W  
6
5
4
COMMAND BITS  
0
0
0
Endpoint is disabled, and does not send handshakes.  
0
0
1
Send a STALL handshake for an IN and/or OUT  
transaction directed at this EP.  
0
1
0
Normal Operation. ACK or NAK is sent depending on  
whether data is in the EPXs TX_QUEUE or conversely for  
EPX’s receive transactions.  
0
1
1
Send a NAK handshake for an IN and/or OUT transaction  
directed at this EP, regardless of TX_QUEUE status.  
Clear Tx / Rx Toggle bit  
1
1
1
1
0
0
1
1
0
1
0
1
Set Tx / Rx Toggle bit  
Clear Tx / Rx ISO bit  
Set Tx / Rx ISO bit  
EP_COMM  
(0x7FAA- RESET=0x00)  
ENDPOINT Command Register  
DESCRIPTION  
BIT  
NAME  
EP_Select  
R/W  
R/W  
[3:0]  
3
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
ENDPOINT SELECT  
Endpoint 0  
Endpoint 1  
Endpoint 2  
Endpoint 3  
Endpoint 4  
Endpoint 5  
Endpoint 6  
Endpoint 7  
Endpoint 8  
Endpoint 9  
Endpoint 10  
Endpoint 11  
Endpoint 12  
Endpoint 13  
Endpoint 14  
Endpoint 15  
Section 8.4.5.4 of the USB Spec V1.1 states that “If a non-control endpoint receives a SETUP PID, it must ignore the  
transaction and return no response.” In order for the hardware to do this correctly, it needs to know which endpoints  
are non-control endpoints.  
Each bit of the NonControl Endpoint registers will correspond to the associated Endpoint. Bits 0-7 of the NonControl  
Endpoint 1 register will correspond to Endpoints 7-15. Bits 0-7 of the NonControl Endpoint 2 will correspond to  
SMSC DS – USB97C102  
Page 59  
Rev. 03/23/2000  
Endpoints 0-7. The MCU will write these registers, and set the corresponding bit=1 for each endpoint that is a non-  
control endpoint. The hardware will not respond to a Setup PID for any endpoint whose corresponding bit is set (1).  
Table 108 - NonControl Endpoint Register 1 (high endpoints)  
NONCTRL_EP1  
(0x7FAB – RESET=0x00)  
NONCONTROL ENDPOINT REGISTER 1  
BIT  
NAME  
R/W  
DESCRIPTION  
7
EP15  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID  
6
5
4
3
2
1
0
EP14  
EP13  
EP12  
EP11  
EP10  
EP9  
EP8  
Table 109 - NonControl Endpoint Register 2 (low endpoints)  
NONCTRL_EP2  
(0x7FAC – RESET=0x00)  
NONCONTROL ENDPOINT REGISTER 2  
DESCRIPTION  
BIT  
NAME  
R/W  
7
EP7  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID.  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID.  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID.  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID.  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID.  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID.  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID.  
R/W When this bit is set (1), the Endpoint will not respond to a Setup PID.  
When this bit is cleared (0), the Endpoint will respond to a setup PID.  
6
5
4
3
2
1
0
EP6  
EP5  
EP4  
EP3  
EP2  
EP1  
EP0  
Table 110 – Reserved  
RESERVED  
RESERVED  
NAME  
BIT  
R
DESCRIPTION  
[7:0]  
Reserved  
R
Reserved  
The Memory Management Policy (MMP) feature permits limiting the number of received packets in memory per  
endpoint. A five bit up/down counter will be implemented for each endpoint. Each counter will be incremented by the  
MCU to initialize the limit, then decremented by the hardware as packets arrive at its corresponding endpoint, and  
incremented by the MCU after it releases the packet. If the count reaches 0, and the MMP feature is enabled, then  
the hardware will not receive the packet and will NAK non-isochronous OUT tokens. If the count is zero, it will not  
decrement further; if the count is 31, it will not increment further. The MCU can enable or disable this feature  
independently for each endpoint. The default condition is disabled.  
SMSC DS – USB97C102  
Page 60  
Rev. 03/23/2000  
The following register allows the MCU to access and control the up/down counters for each endpoint:  
Table 111 – Memory Management Policy Command Register  
MMPCMD  
(0x7FAE)  
ENDPOINT COMMAND REGISTER  
BIT  
NAME  
R/W  
DESCRIPTION  
[7:5]  
COMMAND  
R/W  
7
6
5
COMMAND BITS  
0
0
0
Disable the Memory Management Policy feature. If  
disabled, the endpoint counters will still count, but there will  
be no MMP action taken when the counter reaches zero.  
Enable the Memory Management Policy feature.  
0
0
0
1
1
0
Decrement the count – the MCU must have previously  
made the endpoint busy before executing this command.  
Increment the count – the MCU must have previously  
made the endpoint busy before executing this command.  
Get State – this will cause the count and the enable/disable  
state to be latched into the MMPSTAT register.  
Reserved  
0
1
1
0
1
0
1
1
1
0
1
1
1
0
1
Reserved  
Reset the counter to zero and disable the MMP feature.  
Reserved – Reads back as 0.  
4
Reserved  
R/W  
MMPCMD  
(0x7FAE)  
ENDPOINT COMMAND REGISTER  
DESCRIPTION  
ENDPOINT SELECT  
BIT  
NAME  
R/W  
[3:0]  
EP_Select  
R/W  
3
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Endpoint 0  
Endpoint 1  
Endpoint 2  
Endpoint 3  
Endpoint 4  
Endpoint 5  
Endpoint 6  
Endpoint 7  
Endpoint 8  
Endpoint 9  
Endpoint 10  
Endpoint 11  
Endpoint 12  
Endpoint 13  
Endpoint 14  
Endpoint 15  
Table 112 – Memory Management Policy State Register  
MMPSTATE  
0x7FAF Reset 0x00  
MEMORY MANAGEMENT POLICY STATE REGISTER  
DESCRIPTION  
BIT  
NAME  
R/W  
7
Enabled  
R/W  
MMP State latched by the most recent Get State Command in the  
MMPCMD register. When set(1), the MMP feature will be enabled;  
when clear(0), the MMP feature will be disabled.  
Reserved – Read back as 0.  
Count latched by the most recent Get State Command in the  
MMPCMD register.  
[6:5]  
[4:0]  
Reserved  
Count  
R/W  
R/W  
Note 1:  
The MMPSTATE register is read/write but it is only read in normal operation.  
SMSC DS – USB97C102  
Page 61  
Rev. 03/23/2000  
Table 113 – IN_NAKLO Register  
IN_NAKLO REGISTER  
IN_NAKLO  
(0x7FEC – RESET=0x00)  
BIT  
NAME  
R/W  
DESCRIPTION  
This bit is set when the SIE responds with a NAK to IN  
tokens on EP 7 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN  
tokens on EP 6 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 5 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 4 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 3 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 2 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 1 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 0 and reset when the MCU writes a ‘1’ to it.  
7
IN_NAK_7  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
6
5
4
3
2
1
0
IN_NAK_6  
IN_NAK_5  
IN_NAK_4  
IN_NAK_3  
IN_NAK_2  
IN_NAK_1  
IN_NAK_0  
Table 114 – IN_NAKHI Register  
IN_NAKHI  
(0x7FED – RESET=0x00)  
IN_NAKHI REGISTER  
BIT  
NAME  
R/W  
DESCRIPTION  
This bit is set when the SIE responds with a NAK to IN  
tokens on EP 15 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN  
tokens on EP 14 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 13 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 12 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 11 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 10 and reset when the MCU writes a ‘1’ to it.  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 9 and reset when the MCU writes a ‘1’ to it.  
7
IN_NAK_15  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
6
5
4
3
2
1
0
IN_NAK_14  
IN_NAK_13  
IN_NAK_12  
IN_NAK_11  
IN_NAK_10  
IN_NAK_9  
IN_NAK_8  
This bit is set when the SIE responds with a NAK to IN tokens  
on EP 8 and reset when the MCU writes a ‘1’ to it.  
Table 115 – OUT_NAKLO Register  
OUT_NAKLO  
(0x7FEE – RESET=0x00)  
OUT_NAKLO REGISTER  
BIT  
NAME  
R/W  
DESCRIPTION  
This bit is This bit is set(1) when after the SIE responds with  
a NAK to OUT tokens on EP 7 and reset(0) after when the  
MCU writes a ‘1’ to it.  
This bit is set(1) when after the SIE responds with a NAK to  
OUT tokens on EP 6 and reset(0) when after the MCU writes  
a ‘1’ to it.  
7
6
5
OUT_NAK_7  
R/W  
R/W  
R/W  
OUT_NAK_6  
OUT_NAK_5  
This bit is set(1) when the SIE responds with a NAK to OUT  
tokens on EP 5 and reset(0) when after the MCU writes a ‘1’ to  
it.  
4
3
OUT_NAK_4  
OUT_NAK_3  
R/W  
R/W  
This bit is set(1) when the SIE responds with a NAK to OUT  
tokens on EP 4 and reset(0) when after the MCU writes a ‘1’ to  
it.  
This bit is set(1) when the SIE responds with a NAK to OUT  
tokens on EP 3 and reset(0) when after the MCU writes a ‘1’ to  
it.  
SMSC DS – USB97C102  
Page 62  
Rev. 03/23/2000  
OUT_NAKLO  
(0x7FEE – RESET=0x00)  
OUT_NAKLO REGISTER  
DESCRIPTION  
BIT  
NAME  
R/W  
2
1
0
OUT_NAK_2  
R/W  
R/W  
R/W  
This bit is set(1) when the SIE responds with a NAK to OUT  
tokens on EP 2 and reset(0) when after the MCU writes a ‘1’ to  
it.  
This bit is set(1) when the SIE responds with a NAK to OUT  
tokens on EP 1 and reset(0) when after the MCU writes a ‘1’ to  
it.  
OUT_NAK_1  
OUT_NAK_0  
This bit is set(1) when the SIE responds with a NAK to OUT  
tokens on EP 0 and reset(0) when after the MCU writes a ‘1’ to  
it.  
Table 116 – OUT_NAKHI Register  
OUT_NAKHI  
(0x7FEF – RESET=0x00)  
OUT_NAKHI REGISTER  
BIT  
7
NAME  
OUT_NAK_15  
R/W  
DESCRIPTION  
This bit is set(1) when after the SIE responds with a NAK to  
OUT tokens on EP 15 and reset(0) when after the MCU writes a  
‘1’ to it.  
This bit is set(1) after t when the SIE responds with a NAK to  
OUT tokens on EP 14 and reset(0) when after the MCU writes a  
‘1’ to it.  
This bit is set(1) when after the SIE responds with a NAK to  
OUT tokens on EP 13 and reset(0) when after the MCU writes a  
‘1’ to it.  
This bit is set(1) when after the SIE responds with a NAK to  
OUT tokens on EP 12 and reset(0) when after the MCU writes a  
‘1’ to it.  
This bit is set(1) when after the SIE responds with a NAK to  
OUT tokens on EP 11 and reset(0) when after the MCU writes a  
‘1’ to it.  
This bit is set(1) when after the SIE responds with a NAK to  
OUT tokens on EP 10 and reset(0) when after the MCU writes a  
‘1’ to it.  
This bit is set(1) when after the SIE responds with a NAK to  
OUT tokens on EP 9 and reset(0) when after the MCU writes a  
‘1’ to it.  
This bit is set(1) when after the SIE responds with a NAK to  
OUT tokens on EP 8 and reset(0) when after the MCU writes a  
‘1’ to it.  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
R/W  
6
5
4
3
2
1
0
OUT_NAK_14  
OUT_NAK_13  
OUT_NAK_12  
OUT_NAK_11  
OUT_NAK_10  
OUT_NAK_9  
OUT_NAK_8  
SMSC DS – USB97C102  
Page 63  
Rev. 03/23/2000  
USB HUB BLOCK  
The registers shown below interface the Internal 8051 MCU with the SMC SMSC97C102 internal Hub Block. The  
MCU, subsequent to reset and initialization, must initialize the HUB register block as its first task. Initialization of the  
registers below, must be accomplished within two (2) ms after the de-assertion of reset. The MCU must initialize the  
registers before the up stream host controller relinquishes its reset pulse to the internal HUB block so that the Host  
Controller can enumerate the device.  
Below is a block diagram of the HUB block. As indicated in the diagram, the HUB block consists of the Hub Repeater,  
Control and Command sequencer.  
Down Stream Ports  
PORT5  
To  
Walkup  
USB  
PORT4  
To  
Walkup  
USB  
PORT1  
To  
Internal  
SIE  
PORT2  
To  
Walkup  
PORT3  
To  
Walkup  
USB  
Upstream Port  
USB  
PORT0  
Hub Port  
Control  
Hub Port  
Control  
Hub Port  
Control  
Hub Port  
Control  
Hub Port  
Control 5  
3
1
2
4
Hub Port  
Control  
Hub Repeater  
0
Hub Serial Interface Engine  
SIU  
HIU  
Hub Command Sequencer  
Power  
Control  
Mode From Control Reg.  
USB97C102 - Hub Compound Device Block  
SIU System Interface Unit  
This module consists of address decoding and multiplex logic. The address decoder logic is used to compare the  
address received from the host during a SETUP, IN or OUT token transfer with the address of the HUB. There are  
two address decodes, one for the HUB endpoint and one for the Remote Device Bay Control endpoint which is not  
part of the HUB Block.  
HIU Hub Interface Unit  
The Hub Interface Unit (HIU) provides the hub controller function of this compound device. The hub controller  
provides the functionality for Host to HUB communication. The HUB specific control and status commands defined in  
the USB and HUB device class specification permit the host controller to configure the HUB and control and monitor  
each down stream port. The HUB control block, for the most part, is like a full speed device on USB and hence it  
consists of all the function blocks needed to implement a device. Included in the functionality required is endpoint 0  
control, enumeration, control packet decoding, status maintenance and reporting. Additional functions that will be  
performed by the HUB block include:  
!"  
!"  
!"  
Provide Hub descriptors defined the HUB USB Device Class Specification V 1.1  
Hub Configuration  
Hub and Port Status  
SMSC DS – USB97C102  
Page 64  
Rev. 03/23/2000  
!"  
!"  
!"  
!"  
!"  
!"  
!"  
!"  
Interrupt endpoint for status change reporting  
Port Power control  
Frame Timer logic  
Fault Recovery  
Selective Suspend and Resume on a port by port basis  
Selective Reset on a port by port basis  
The ability to decode the preamble PID and allowing Low Speed port enabling.  
Full-speed/Low-speed USB transceivers implemented internally; One placed on the upstream port and four  
placed on the downstream ports  
!"  
Reflecting Remote Resume to Upstream and enabled down stream USB ports  
HUB Block Register Summary  
The Register definitions defined below are defined in Table 117 and. These registers are memory mapped into the  
8051 MCU memory space defined in Figure 4.  
Table 117 - HUB Block Register Summary  
ADDRESS  
NAME  
IdVendor-  
Low Byte  
IdVendor-  
High Byte  
IdProduct-  
Low Byte  
R/W  
DESCRIPTION  
PAGE  
7FA0  
R/W Low byte Vendor ID in little endian format (Bit 0  
is the LSB)  
R/W High byte Vendor ID in little endian format (Bit  
0 is the LSB)  
R/W Low byte Product ID value in little endian  
format (Bit 0 is the LSB). This value is  
initialized by firmware upon initialization/power  
up. This value must be initialized prior to the  
Hub device participating in and USB  
enumeration transactions.  
7FA1  
7FA2  
7FA3  
IdProduct-  
High Byte  
R/W High byte Product ID value in little endian  
format (Bit 0 is the LSB). This value is  
initialized by firmware upon initialization/power  
up. This value must be initialized prior to the  
Hub device participating in and USB  
enumeration transactions.  
7FA4  
7FA5  
BcdDevice -  
Low Byte  
R/W  
This 8-bit value defines the USB device release  
number, which is assigned by the system  
manufacture.  
BcdDevice -  
High Byte  
R/W This 8-bit value defines the USB device release  
number, which is assigned by the system  
manufacture.  
7FA6  
7FA7  
HubControl1  
Reserved  
R/W Hub Control register 1  
65  
R
Reserved – This register should never be  
accessed  
Table 118 – Hub Control Register1  
HubControl1  
(0x7FA6- RESET=0x00)  
HUB CONTROL REGISTER1  
DESCRIPTION  
BIT  
NAME  
R/W  
7
NhubReset  
R/W  
NHubReset – When this bit is asserted (0), the hub controller is in a reset  
state. The hub will not respond to any enumeration or device requests.  
When this bit is de-asserted (1), the hub controller is ready to receive  
packets from the Root Host Controller. Each Port will then be enabled via  
a control packet from the Host  
6
5
Reserved  
HubBypass5  
R/W  
R/W  
Reserved – This bit should always be cleared (0)  
When this bit is set(1), Ports 1 and 5 are no longer connected to the hub.  
Port 1 (which is connected to the rest of the 97C102) is connected to port  
5. Port 5 becomes the upstream of Port 1. See figure on next page. See  
Note1.  
4
HubBypass4  
R/W  
When this bit is set(1), Ports 1 and 4 are no longer connected to the hub.  
Port 1 (which is connected to the rest of the 97C102) is connected to port  
4. Port 4 becomes the upstream of Port 1. See figure on next page. See  
Note1.  
SMSC DS – USB97C102  
Page 65  
Rev. 03/23/2000  
HubControl1  
(0x7FA6- RESET=0x00)  
HUB CONTROL REGISTER1  
BIT  
NAME  
R/W  
DESCRIPTION  
3
2
1
HubBypass3  
R/W  
R/W  
R/W  
When this bit is set(1), Ports 1 and 3 are no longer connected to the hub.  
Port 1 (which is connected to the rest of the 97C102) is connected to port  
3. Port 3 becomes the upstream of Port 1. See figure on next page. See  
Note1.  
When this bit is set(1), Ports 1 and 2 are no longer connected to the hub.  
Port 1 (which is connected to the rest of the 97C102) is connected to port  
2. Port 2 becomes the upstream of Port 1. See figure on next page. See  
Note1.  
Force Single Ended zero (SE0). – This bit will force a SE0 condition on the  
upstream port of Port 1 (as selected by the Host_EmuX bits). It is the  
responsibility of the 8051 MCU to make sure the duty cycle of the SE0  
assertion is within the USB specified range for the intended operation  
(EOP = exactly 2 low speed periods; Disconnect > 2.5µs).  
Ganged Power Sense enable – When this bit is set (1), the Power Control  
block of the HUB Compound device will internally OR the power OK sense  
pins (nPWROK[5:2]) and Power Enable (nPWREN[5:2]) pins. This will  
allow the system designer the ability to reduce implementation costs by  
reducing the external current hardware. In this mode, since only one  
Sense and Enable PIN is required, the unused input pins must be tied to  
VDD (1) and the unused output pins may be left unconnected.  
HubBypass2  
ForceSE0  
0
GangedPWR  
R/W  
Note 1:  
When the SMSC USB97C102 is in “HubBypass” mode, all other ports, with the HubBypass bit cleared (0),  
FIGURE 8 – HUBBYPASS2  
are still connected to the internal USB Hub. Please refer to  
on page 67 for a diagram  
showing “HubBypass” mode. It is recommended that only one “HubBypass” bit be set.  
SMSC DS – USB97C102  
Page 66  
Rev. 03/23/2000  
HUB BYPASS MODE  
Hub Bypass mode is a configuration option availaible to the SMSC USB978C102. This optional mode of operation  
allows the system developer the ability to disconnect the Internal USB 1.1 compliant Hub from the SIE. The reasons  
why a designer would want ot do this is as follows:  
1) The designer may want to disconnect the USB Hub from the USB function for diagnostic purposes.  
2) This option give the designer the ability to make the USB 97C102 backward compatible to the SMSC USB  
97C100 device.  
Disconnecting the USB Hub from the USB function  
Table 118 – Hub Control Register1  
In “HubBypass mode”, see  
on page 65, setting the appropriate bit HubBypass2,  
HubBypass3, etc., will connect the associated Hub Down stream port to the internal SIE function.  
Please note that only one HubBypass bit should be set at one time.  
Setting more than one bit will cause  
unexpected results.  
USB97C100 Compatibility Mode  
The SMSC USB97C102 can be placed in a mode to emulate the SMSC USB97C100 in terms of functionality. The  
SMSC USB97C102 can also be “Pin” compatible to the USB97C100. Please refer to the application note titled  
“Utilizing the SMSC USB97C102 in USB97C100 designs” for additional information.  
In order to place the USB97C102 in a mode that is pin and function compatible to the SMSC USB97C100, the SMSC  
Table 118 – Hub Control  
USB97C102 should have the “HubBypass2” bit set in the HubControl1 register. See  
Register1  
on page 65.  
FIGURE 8  
The diagram shown in  
shows the Hub configured for hub bypass mode 2.  
PORT0  
Upstream Port  
USB Hub Block  
X
X
Upstream Port  
for Port 1  
Down Stream Ports  
PORT3 PORT4 PORT5  
PORT2  
PORT1  
To  
Internal  
SIE  
FIGURE 8 – HUBBYPASS2  
SMSC DS – USB97C102  
Page 67  
Rev. 03/23/2000  
DC PARAMETERS  
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..........................................................................Vcc+0.3V  
Negative Voltage on any pin, with respect to Ground ..............................................................................-0.3V  
Maximum Vcc ............................................................................................................................................+3.6V  
*Stresses above the specified parameters 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. When this possibility exists, it is suggested that a clamp circuit be used.  
DC ELECTRICAL CHARACTERISTICS (TA = 0°C - 70°C, Vcc = +3.3 V ± 10%)  
PARAMETER  
SYMBOL  
MIN  
TYP  
MAX  
UNITS  
COMMENTS  
I Type Input Buffer  
Low Input Level  
VILI  
VIHI  
0.8  
V
V
TTL Levels  
High Input Level  
2.0  
ICLK Input Buffer  
Low Input Level  
High Input Level  
VILCK  
VIHCK  
0.4  
V
V
2.2  
Input Leakage  
(All I and IS buffers)  
Low Input Leakage  
IIL  
-10  
-10  
+10  
+10  
uA  
VIN = 0  
High Input Leakage  
IIH  
mA  
VIN = VCC  
O8 Type Buffer  
Low Output Level  
High Output Level  
VOL  
0.4  
V
V
IOL = 4 mA @ VCC  
3.3V  
=
VOH  
2.4  
-10  
IOH = -2 mA @ VCC  
= 3.3V  
VIN = 0 to VCC  
(Note 1)  
Output Leakage  
IOLeak  
+10  
0.4  
uA  
V
I/O8 Type Buffer  
Low Output Level  
VOL  
IOL = 4 mA @ VCC  
3.3V  
=
High Output Level  
VOH  
2.4  
-10  
V
IOH = -2 mA @ VCC  
= 3.3V  
VIN = 0 to VCC  
(Note 1)  
+10  
Output Leakage  
IOLeak  
µA  
SMSC DS – USB97C102  
Page 68  
Rev. 03/23/2000  
PARAMETER  
SYMBOL  
MIN  
TYP  
MAX  
UNITS  
COMMENTS  
I/O16 Type Buffer  
Low Output Level  
High Output Level  
VOL  
0.4  
V
IOL = 8 mA @ VCC  
3.3V  
=
VOH  
2.4  
-10  
V
µA  
V
IOH = -4 mA @ VCC  
= 3.3V  
VIN = 0 to VCC  
(Note 1)  
+10  
0.4  
Output Leakage  
IOleak  
/O24 Type Buffer  
I
Low Output Level  
VOL  
IOL = 12 mA @ VCC  
= 3.3V  
High Output Level  
VOH  
2.4  
V
IOH = -6 mA @ VCC  
= 3.3V  
VIN = 0 to VCC  
(Note 1)  
+10  
µA  
Output Leakage  
IO-U  
IOleak  
-10  
Note 2  
Supply Current Un-  
configured  
@ VCC = 3.3V  
ICCINIT  
TBD  
TBD  
60  
TBD  
100  
mA  
mA  
Supply Current Active  
ICC  
@ VCC = 3.3V  
@ VCC = 3.3V  
Supply Current Standby  
ICSBY  
#
A
Note 1:  
Note 2:  
Output leakage is measured with the current pins in high impedance.  
See Appendix A for USB DC electrical characteristics.  
CAPACITANCE TA = 25°C; fc = 1MHz; VCC = 3.3V  
LIMITS  
PARAMETER  
Clock Input Capacitance  
Input Capacitance  
SYMBOL  
CIN  
UNIT  
pF  
TEST CONDITION  
MIN TYP MAX  
20  
10  
20  
All pins except USB pins  
(and pins under test tied  
to AC ground)  
CIN  
pF  
Output Capacitance  
COUT  
pF  
SMSC DS – USB97C102  
Page 69  
Rev. 03/23/2000  
USB PARAMETERS  
The following tables and diagrams were obtained from the USB specification  
USB DC PARAMETERS  
1.0  
0.8  
0.6  
0.4  
0.2  
0.0  
0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 3.2  
Common Mode Input Voltage (volts)  
FIGURE 9 - DIFFERENTIAL INPUT SENSITIVITY OVER ENTIRE COMMON MODE RANGE  
Table 120 - DC Electrical Characteristics  
CONDITIONS  
PARAMETER  
Supply Voltage:  
SYMBOL  
(NOTE 1, 2)  
MIN  
TYP  
MAX  
UNIT  
Powered (Host or Hub) Port  
Supply Current:  
VBUS  
2.97  
3.63  
V
Function  
Un-configured Function (in)  
Suspend Device  
ICC  
ICCINIT  
ICCS  
Note 4  
Note 5  
100  
100  
200  
mA  
uA  
uA  
Leakage Current:  
Hi-Z State Data Line Leakage  
Input Levels:  
Differential Input Sensitivity  
ILO  
VDI  
0 V < VIN < 3.3 V  
-10  
0.2  
0.8  
0.8  
10  
uA  
V
|(D+) - (D-)|, and  
FIGURE 9  
Includes VDI range  
Differential Common Mode  
Range  
Single Ended Receiver  
Threshold  
VCM  
VSE  
2.5  
2.0  
V
V
Output Levels:  
Static Output Low  
Static Output High  
Capacitance  
VOL  
VOH  
0.3 (3)  
3.6 (3)  
V
V
$
RL of 1.5 K to 3.6 V  
2.8  
$
RL of 15 K to GND  
Transceiver Capacitance  
Terminals  
Bus Pull-up Resistor on Root  
Port  
Bus Pull-down Resistor on  
Downstream Port  
CIN  
RPU  
RPD  
Pin to GND  
20  
pF  
1.425  
14.25  
1.575  
15.75  
$
$
$
(1.5 K +/- 5%)  
k
k
$
(15 K +/- 5%)  
Note 1:  
Note 2:  
Note 3:  
Note 4:  
Note 5:  
All voltages are measured from the local ground potential, unless otherwise specified.  
All timing use a capacitive load (CL) to ground of 50pF, unless otherwise specified.  
This is relative to VUSBIN.  
This is dependent on block configuration set by software.  
When the internal ring oscillator and waiting for first setup packet.  
SMSC DS – USB97C102  
Page 70  
Rev. 03/23/2000  
USB AC PARAMETERS  
Rise Time  
Fall Time  
90%  
90%  
CL  
CL  
Differential  
Data Lines  
10%  
10%  
tR  
tF  
Full Speed: 4 to 20ns at C = 50pF  
L
FIGURE 10 - DATA SIGNAL RISE AND FALL TIME  
Round Trip  
Cable Delay  
80ns (max)  
Driver End  
of Cable  
50%Point of  
Initial Swing  
VSS  
One Way  
Data Line  
Crossover  
Point  
Cable  
Delay  
30ns  
Receiver  
End of Cable  
(max)  
VSS  
FIGURE 11 - CABLE DELAY  
TPERIOD  
Crossover  
Points  
Differential  
Data Lines  
Consecutive  
Transitions  
N * TPERIOD + TxJR1  
Paired  
Transitions  
N * TPERIOD + TxJR2  
FIGURE 12 - DIFFERENTIAL DATA JITTER  
TPERIOD  
Crossover  
Point Extended  
Crossover  
Point  
Differential  
Data Lines  
Diff. Data to  
SE0 Skew  
N * TPERIOD + TDEOP  
Source EOP Width: TEOPT  
Receiver EOP Width: TEOPR1, TEOPR2  
FIGURE 13 - DIFFERENTIAL TO EOP TRANSITION SKEW AND EOP WIDTH  
SMSC DS – USB97C102  
Page 71  
Rev. 03/23/2000  
TPERIOD  
Differential  
Data Lines  
TJR  
TJR1  
TJR2  
Consecutive  
Transitions  
N * TPERIOD + TJR1  
Paired  
Transitions  
N * TPERIOD + TJR2  
FIGURE 14 - RECEIVER JITTER TOLERANCE  
Table 121 - Full Speed (12Mbps) Source Electrical Characteristics  
CONDITIONS  
PARAMETER  
Transition Time:  
Rise Time  
SYM  
(NOTE 1, 2, 3)  
DRIVER CHARACTERISTICS:  
Note 4,5 and FIGURE 10  
MIN  
TYP  
MAX UNIT  
TR  
TF  
TRFM  
VCRS  
ZDRV  
CL = 50 pF  
CL = 50 pF  
4
20  
ns  
Fall Time  
Rise/Fall Time  
Matching  
Output Signal  
Crossover Voltage  
4
90  
20  
110  
ns  
%
(TR/TF)  
1.3  
28  
2.0  
43  
V
Drive Output  
Resistance  
Steady State Drive  
$
DATA SOURCE TIMING:  
Ave. Bit Rate  
11.95  
12.03  
Full Speed Data Rate  
Frame Interval  
TDRATE  
Mbs  
(12 Mb/s +/- 0.25%) Note  
8
TFRAME  
TPERIOD  
1.0 ms +/- 0.05%  
0.9995  
80  
1.00  
05  
86  
ms  
ns  
Clock Period  
Source Differential  
Driver Jitter  
Note 6, 7 and  
FIGURE 12  
TDJ1  
TDJ2  
-3.5  
-4.0  
3.5  
4.0  
ns  
ns  
To next Transition  
For Paired Transitions  
Source EOP Width  
TEOPT  
TDEOP  
Note 7 and  
FIGURE 13  
Note 7 and  
160  
-2  
175  
5
ns  
ns  
Differential to EOP  
transition Skew  
Receiver Data Jitter  
Tolerance  
FIGURE 13  
Note 7 and FIGURE 14  
To next Transition  
For Paired Transitions  
TJR1  
TJR2  
-18.5  
-9  
18.5  
9.0  
ns  
ns  
Differential Data Jitter  
Note 7 and FIGURE 12  
To next Transition  
For Paired Transitions  
TXJR1  
TXJR2  
-18.5  
-9  
18.5  
9.0  
ns  
ns  
EOP Width at receiver  
Note 7 and  
FIGURE 13  
Must reject as EOP  
Must Accept  
TEOPR1  
TEOPR2  
40  
82  
ns  
ns  
SMSC DS – USB97C102  
Page 72  
Rev. 03/23/2000  
CONDITIONS  
(NOTE 1, 2, 3)  
PARAMETER  
SYM  
MIN  
TYP  
MAX UNIT  
CABLE IMPEDANCE AND TIMING:  
51.75  
38.75  
Cable Impedance (Full  
Speed)  
ZO  
$
$
(45 +/- 15%)  
Cable Delay (One Way)  
TCBL  
FIGURE 11  
30  
ns  
Note 1:  
Note 2:  
Note 3:  
Note 4:  
Note 5:  
Note 6:  
Note 7:  
Note 8:  
All voltages are measured from the local ground potential, unless otherwise specified.  
All timing use a capacitive load (CL) to ground of 50pF, unless otherwise specified.  
$
Full speed timings have a 1.5K pull-up to 2.8 V on the D+ data line.  
Measured from 10% to 90% of the data signals.  
The rising and falling edges should be smoothly transiting (monotonic).  
Timing differences between the differential data signals.  
Measured at crossover point of differential data signals.  
These are relative to the 24 MHz crystal.  
t7  
AEN  
t3  
t6  
SA[x]  
t2  
t1  
t4  
nIOW  
SD[x]  
t5  
DATA VALID  
t8  
FIGURE 15 - 8051 IO WRITE CYCLE  
Table 122 – 8051 IO Write Cycle  
NAME  
DESCRIPTION  
MIN  
106  
150  
22  
150  
22  
MAX  
EQUIATION  
4t-60  
UNITS  
SA[x] and AEN Valid to nIOW Asserted  
nIOW Asserted to nIOW Deasserted  
nIOW Deasserted to SA[x] Invalid  
SD[x] Valid to nIOW Deasserted  
SD[x] Hold from nIOW Deasserted  
nIOW Deasserted to nIOW Asserted  
nIOW Deasserted to AEN Deasserted  
nIOW Deasserted to SD[x] tri-state  
t1  
t2  
t3  
t4  
t5  
t6  
t7  
t8  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
6t-100  
t-20  
6t-100  
t-20  
25  
22  
t-20  
2t  
83  
Note:  
Min and Max delays shown for 8051 clock of 24 MHz, to calculate typical timing delays for other  
clock frequencies use Oscillator Equations, where t=1/fCLK  
.
SMSC DS – USB97C102  
Page 73  
Rev. 03/23/2000  
t9  
t8  
AEN  
t3  
SA[x]  
t1  
t2  
t10  
nIOR  
t4  
t7  
t6  
t5  
SD[x]  
DATA VALID  
nIOW/nIOR  
FIGURE 16 – 8051 IO READ CYCLE  
Table 123 – 8051 IO Read Timing Parameters  
NAME  
DESCRIPTION  
MIN  
107  
150  
32  
0
MAX  
EQUIATION  
4t-60  
UNITS  
ns  
ns  
ns  
ns  
t1  
t2  
t3  
SA[x] and AEN Valid to nIOR Asserted  
nIOR Asserted to nIOR Deasserted  
nIOR Asserted to SA[x] Invalid  
6t-100  
t-10  
t4  
nIOR Asserted to Data Valid  
t5  
t6  
t7  
t8  
t9  
t10  
Data Hold/Float from nIOR Deasserted  
nIOR Asserted after nIOR Deasserted  
nIOR Asserted after nIOW Deasserted  
nIOR Asserted to AEN Valid  
Data Valid to nIOR Deassereted  
nIOR Deasserted to SD[x] tri-state  
0
ns  
ns  
ns  
ns  
ns  
ns  
32  
32  
10  
30  
32  
t-10  
t-10  
t-10  
Note:  
Min and Max delays shown for 8051 clk of 24 MHz, to calculate typical timing delays for other clock  
frequencies use Oscillator Equations, where t=1/fCLK  
.
t1  
t2  
t2  
CLOCKI  
FIGURE 17 - INPUT CLOCK TIMING  
Table 124 - Input Clock Timing Parameters  
NAME  
t1  
t2  
DESCRIPTION  
Clock Cycle Time for 24 MHz  
Clock High Time/Low Time for 14.318 MHz  
Clock Rise Time/Fall Time (not shown)  
MIN  
TYP  
41.67  
MAX  
UNITS  
ns  
ns  
25/16.7  
16.7/25  
5
tr, tf  
ns  
SMSC DS – USB97C102  
Page 74  
Rev. 03/23/2000  
SA[19:0]  
AEN  
t1  
t3  
t15  
t11  
t12  
t4  
nDACK  
t14  
t2  
t7  
t8  
nMEMRD/nIOR  
or  
nMEMWR/nIOW  
t9  
t10  
t16  
DATA  
SD[7:0]  
DATA VALID  
t13  
TC  
FIGURE 18 - DMA TIMING (SINGLE TRANSFER MODE)  
Table 125 - DMA Timing (Single Transfer Mode) Parameters  
NAME  
t1  
DESCRIPTION  
SA[19:0] Address Setup time to  
nMEMRD/nIOR or nMEMWR/nIOW  
Asserted  
MIN  
65  
TYP  
MAX  
UNITS  
ns  
t2  
t3  
nMEMRD/nIOR or nMEMWR/nIOW  
Pulsewidth  
nMEMRD/nIOR or nMEMWR/nIOW  
deasserted to SA[19:0] Address valid Hold  
time  
100  
30  
ns  
ns  
t4  
t7  
t8  
nDACK Width  
150  
50  
40  
25  
10  
22.5  
22.5  
60  
40  
10  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
Data Setup Time to nIOR High  
Data Set Up Time to nIOW High  
Data to Float Delay from nIOR High  
Data Hold Time from nIOW High  
nDACK Set Up to nIOW/nIOR Low  
nDACK Hold after nIOW/nIOR High  
TC Pulse Width  
AEN Set Up to nIOR/nIOW  
AEN Hold from nDACK  
nMEMRD/nIOR or nMEMWR/nIOW  
asserted to Data valid  
t9  
50  
t10  
t11  
t12  
t13  
t14  
t15  
t16  
0
SMSC DS – USB97C102  
Page 75  
Rev. 03/23/2000  
SA[19:0]  
t3  
t15  
AEN  
t1  
t4  
t11  
t12  
nDACK  
t14  
t2  
t7  
t8  
nMEMRD /nIOR  
or  
nMEMWR/ nIOW  
t9  
t10  
t16  
DATA  
SD[7:0]  
DATA VALID  
DATA VALID  
t13  
TC  
FIGURE 19 - DMA TIMING (BURST TRANSFER MODE)  
Table 126 - DMA Timing (Burst Transfer Mode) Parameters  
NAME  
DESCRIPTION  
MIN  
TYP  
MAX  
UNITS  
t1  
SA[19:0] Address Setup time to  
nMEMRD/nIOR or nMEMWR/nIOW  
Asserted  
65  
ns  
nMEMRD/nIOR or nMEMWR/nIOW  
Pulsewidth  
nMEMRD/nIOR or nMEMWR/nIOW  
deasserted to SA[19:0] Address valid Hold  
time  
t2  
t3  
100  
30  
ns  
ns  
t4  
t7  
t8  
nDACK Width  
150  
50  
40  
25  
25  
22.5  
22.5  
60  
40  
10  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
Data Setup Time to nIOR High  
Data Set Up Time to nIOW High  
Data to Float Delay from nIOR High  
Data Hold Time from nIOW High  
nDACK Set Up to nIOW/nIOR Low  
nDACK Hold after nIOW/nIOR High  
TC Pulse Width  
AEN Set Up to nIOR/nIOW  
AEN Hold from nDACK  
nMEMRD/nIOR or nMEMWR/nIOW  
asserted to Data valid  
t9  
50  
t10  
t11  
t12  
t13  
t14  
t15  
t16  
0
SMSC DS – USB97C102  
Page 76  
Rev. 03/23/2000  
t9  
FALE  
FA]  
t10  
t11  
t3  
t1  
t2  
t10  
t8  
nRD  
FD  
t4  
t7  
DATA VALID  
FIGURE 20 - 8051 FLASH PROGRAM FETCH TIMING  
Table 127 - 8051 Flash Program Fetch Timing Parameters  
OSCILLATOR  
EQUATION  
2t-20  
PARAMETER  
MIN  
64  
105  
32  
0
TYP  
MAX  
UNITS  
ns  
ns  
ns  
ns  
t1  
t2  
t3  
t4  
t7  
FA Valid to nRD asserted  
nRD active pulse width  
nRD deasserted to FA Invalid  
nRD asserted to Data Valid  
FD data Hold from nRD  
deasserted  
3t-20  
t-10  
0
ns  
t8  
nRD deasserted to FD data tri-  
state  
32  
t-10  
ns  
t9  
t10  
FALE active pulse width  
FA address Valid to FALE  
deasserted  
53  
21.66  
2t-30  
t-20  
ns  
ns  
t11  
FALE deasserted to nRD asserted  
21.66  
t-20  
ns  
Note:  
Min and Max delays shown for an 8051 clock of 24MHz, to calculate timing delays for other clock  
frequencies use the Oscillator Equations, where T=1/Fclk.  
SMSC DS – USB97C102  
Page 77  
Rev. 03/23/2000  
FALE  
t10  
t11  
t3  
SA[19:0]  
t1  
t2  
nMEMRD  
SD[7:0]  
t4  
t8  
t7  
DATA VALID  
FIGURE 21 - 8051 FLASH MEMORY READ TIMING  
Table 128 - 8051 Flash Memory Read Timing Parameters  
OSCILLATOR  
EQUATION  
4t-60  
PARAMETER  
MIN  
107  
150  
TYP  
MAX  
UNITS  
ns  
ns  
t1  
t2  
t3  
SA[19:0] Valid to nMEMRD asserted  
nMEMRD active pulse width  
nMEMRD deasserted to SA[19:0]  
Invalid  
6t-100  
t-20  
21.66  
ns  
t4  
t7  
nMEMRD asserted to Data Valid  
SD[7:0] data Hold from nMEMRD  
deasserted  
0
0
ns  
ns  
t8  
nMEMRD deasserted to SD[7:0]  
data tri-state  
FALE deasserted to nMEMRD  
asserted  
64  
2t-20  
ns  
ns  
t11  
84  
165  
3t +/- 40  
Note:  
Min and Max delays shown for an 8051 clock of 24MHz, to calculate timing delays for other clock  
frequencies use the Oscillator Equations, where T=1/Fclk.  
SMSC DS – USB97C102  
Page 78  
Rev. 03/23/2000  
FALE  
t10  
t11  
t3  
SA[19:0]  
t1  
t2  
nMEMWR  
SD[7:0]  
t4  
t8  
t7  
DATA VALID  
FIGURE 22 - 8051 FLASH MEMORY WRITE TIMING  
Table 129 - 8051 Flash Memory Read Timing Parameters  
OSCILLATOR  
EQUATION  
4t-60  
PARAMETER  
SA[19:0] Valid to nMEMWR  
asserted  
MIN  
107  
TYP  
MAX  
UNITS  
ns  
t1  
t2  
t3  
nMEMWR active pulse width  
nMEMWR deasserted to  
SA[19:0] Invalid  
150  
21.66  
6t-100  
t-20  
ns  
ns  
t4  
t7  
nMEMWR asserted to Data  
Valid  
32  
5
t-10  
ns  
ns  
ns  
ns  
SD[7:0] data Hold from  
nMEMWR deasserted  
nMEMWR deasserted to  
SD[7:0] data tri-state  
FALE deasserted to nMEMWR  
asserted  
t8  
64  
2t  
t11  
85  
165  
3t +/- 40  
Note:  
Min and Max delays shown for an 8051 clock of 24MHz, to calculate timing delays for other clock  
frequencies use the Oscillator Equations, where T=1/Fclk.  
t2  
Reset_In  
FIGURE 23 - RESET_IN TIMING  
Table 130 - RESET_IN Timing Parameters  
PARAMETER  
MIN  
TYP  
MAX  
UNITS  
RESET_IN active pulse width  
t2  
50  
ns  
SMSC DS – USB97C102  
Page 79  
Rev. 03/23/2000  
MECHANICAL OUTLINE  
3
D1  
102  
65  
103  
3
64  
DETAIL "A"  
R1  
R2  
0
L
4
L1  
E
E1  
e
5
D1/4  
W
2
E1/4  
39  
128  
38  
1
A
A2  
H
0
0.10  
1
SEE DETAIL "A"  
A1  
-C-  
MIN  
NOM  
MAX  
3.4  
MIN  
0.65  
NOM  
0.8  
MAX  
L
0.95  
A
L1  
e
0.05  
2.55  
23.65  
19.9  
17.65  
13.9  
0.5  
1.95  
A1  
A2  
D
3.05  
24.15  
20.1  
18.15  
14.1  
0.5BSC  
0
23.9  
20  
17.9  
14  
0
7
0.3  
W
R1  
R2  
0.1  
0.13  
0.13  
D1  
E
0.3  
E1  
H
Notes:  
1) Coplanarity is 0.08 mm or 3.2 mils  
2) Tolerance on the position of the leads is 0.080 mm  
3) Package body dimensions D1 and E1 do not include the mold protrusion.  
mold protrusion is 0.25  
4) Dimensions for foot length L measured at the gauge plane 0.25 mm above the  
5) Details of pin 1 identifier are optional but must be located within the zone  
6) Controlling dimension:  
FIGURE 24 - 128 PIN QFP PACKAGE OUTLINE  
SMSC DS – USB97C102  
Page 80  
Rev. 03/23/2000  

相关型号:

USB97C201

USB 2.0 ATA/ ATAPI Controller
SMSC

USB97C201-MC

USB 2.0 ATA/ ATAPI Controller
SMSC

USB97C201-MN

USB 2.0 ATA/ ATAPI Controller
SMSC

USB97C201_03

USB 2.0 ATA/ ATAPI Controller
SMSC

USB97C202

USB 2.0 ATA/ATAPI Controller
SMSC

USB97C202-MD-05

USB Bus Controller, CMOS, PQFP100, 14 X 14 MM, 1.40 MM HEIGHT, TQFP-100
SMSC

USB97C202-MN-02

ATA/ATAPI CONTROLLER
SMSC

USB97C202-MN-04

UNIVERSAL SERIAL BUS CONTROLLER, PQFP100, 12 X 12 MM, 1.40 MM HEIGHT, STQFP-100
ROCHESTER

USB97C202-MN-05

UNIVERSAL SERIAL BUS CONTROLLER, PQFP100, 12 X 12 MM, 1.40 MM HEIGHT, STQFP-100
ROCHESTER

USB97C202-MN-05

USB Bus Controller, CMOS, PQFP100, 12 X 12 MM, 1.40 MM HEIGHT, STQFP-100
SMSC

USB97C202-MV-05

USB 2.0 ATA/ATAPI Controller
SMSC

USB97C202_07

USB 2.0 ATA/ATAPI Controller
SMSC