XR88C681P/28-F [EXAR]

Serial I/O Controller, 2 Channel(s), 0.125MBps, CMOS, PDIP28, 0.600 INCH, GREEN, PLASTIC, DIP-28;
XR88C681P/28-F
型号: XR88C681P/28-F
厂家: EXAR CORPORATION    EXAR CORPORATION
描述:

Serial I/O Controller, 2 Channel(s), 0.125MBps, CMOS, PDIP28, 0.600 INCH, GREEN, PLASTIC, DIP-28

通信 时钟 数据传输 光电二极管 外围集成电路
文件: 总103页 (文件大小:2808K)
中文:  中文翻译
下载:  下载PDF数据表文档文件
XR88C681  
CMOS Dual Channel  
UART (DUART)  
June 2006  
FEATURES  
D Two Full Duplex, Independent Channels  
D Asynchronous Receiver and Transmitter  
D Quadruple-Buffered Receivers and Dual Buffered  
Transmitters  
D Programmable Stop Bits in 1/16 Bit Increments  
D Internal Bit Rate Generators with More than 23 Bit  
Rates  
D Programmable Interrupt Daisy Chain  
D 8 General Purpose Outputs (40 Pin DIP and 44 Pin  
PLCC Packages Only)  
D 7 General Purpose Inputs with Change of States  
Detectors on Inputs (40 Pin DIP and 44 Pin PLCC  
Packages Only)  
D Multi-Drop Mode Compatible with 8051 Nine Bit  
Mode  
D Independent Bit Rate Selection for Each Transmitter  
and Receiver  
D On-Chip Oscillator for Crystal  
D Standby Mode to Reduce Operating Power  
D Compatible with the Motorola MC2681 and  
Signetics SCC2692 devices  
D External Clock Capability  
D Maximum Bit Rate: 1X Clock - 1Mb/s, 16X Clock -  
125kb/s  
D Advanced CMOS Low Power Technology  
D Normal, AUTOECHO, Local LOOPBACK and  
Remote LOOPBACK Modes  
D Multi-function 16 Bit Counter/Timer  
D Interrupt Output with Eight Maskable Interrupt  
Conditions  
APPLICATIONS  
D Multimedia Systems  
D Serial to Parallel/Parallel to Serial Converter  
D DTE for Modem Communication Systems  
D Interrupt Vector Output on Acknowledge (40 Pin DIP  
and 44 Pin PLCC Packages Only)  
GENERAL DESCRIPTION  
The EXAR Dual Universal Asynchronous Receiver and  
Transmitter (DUART) is a data communications device that  
provides two fully independent full duplex asynchronous  
communication channels in a single package. The DUART  
is designed for use in microprocessor based systems and  
may be used in a polled or interrupt driven environment.  
The DUART is fabricatedusing advancedtwo layer metal,  
with a high performance density EPI/CMOS 1.8 process  
to provide high performance and low power consumption,  
and is packaged in a 40 pin PDIP, a 28 pin PDIP, and a 44  
pin PLCC.  
The XR88C681 device offers a single IC solution for the  
8080/85, 8086/88, Z80, Z8000, 68xx and 65xx  
microprocessor families.  
ORDERING INFORMATION  
Operating  
Part No.  
Pin Package  
44 PLCC  
Temperature Range  
XR88C681CJ  
XR88C681CN/40  
XR88C681CP/28  
XR88C681CP/40  
XR88C681J  
0°C to 70°C  
0°C to 70°C  
40 CDIP  
28 PDIP  
40 PDIP  
44 PLCC  
40 CDIP  
28 PDIP  
40 PDIP  
0°C to 70°C  
0°C to 70°C  
-40°C to +85°C  
-40°C to +85°C  
-40°C to +85°C  
-40°C to +85°C  
XR88C681N/40  
XR88C681P/28  
XR88C681P/40  
Rev. 2.11  
E2006  
XR88C681  
TXDA  
RXDA  
TXDB  
RXDB  
IP0 - IP6  
IPR  
OP0 - OP7  
OPR  
TSR  
THR  
RSR  
RHR  
TSR  
THR  
RSR  
RHR  
Change of  
State Detectors  
Output Port  
Function Select  
Logic  
IPCR  
Mode Registers  
Mode Registers  
OPCR  
ACR  
Status Register  
Channel A  
Status Register  
Channel B  
Input Port  
Output Port  
Internal Data Bus  
Operation Control  
Interrupt Control  
Timing  
CSRA  
CSRB  
IVR  
MISR  
IMR  
ISR  
CRB  
CRA  
Bit Rate  
Data  
Generator  
Bus  
Buffer  
Address Decoder  
Counter/Timer  
Oscillator  
D0 - D7 A0 - A3  
-RD -WR -CS RESET  
IEI IEO -IACK -INTR  
X1/CLK X2  
Figure 1. Block Diagram of the XR88C681  
Rev. 2.11  
2
XR88C681  
PIN CONFIGURATION  
A0  
IP3  
A1  
1
40  
39  
38  
37  
V
CC  
2
IP4/IEI  
IP5/IEO  
-IP6/IACK  
3
IP1  
4
A2  
A3  
IP0  
5
36 IP2  
A3  
IP0  
39  
38  
37  
36  
7
8
CS  
-CS  
6
35  
-RESET  
X2  
RESET  
X2  
7
34  
33  
32  
31  
30  
29  
28  
27  
-WR  
-RD  
9
10  
-WR  
-RD  
RXDB  
8
X1/CLK  
X1/CLK  
RXDA  
9
RXDB  
NC  
TXDB  
35 RXDA  
34  
11  
12  
13  
14  
15  
16  
10  
11  
12  
13  
14  
XR-68C681CJ  
PLCC  
NC  
33 TXDA  
TXDB  
OP1  
OP3  
OP5  
TXDA  
OP0  
OP2  
OP4  
OP1  
OP3  
OP5  
32  
31  
30  
29  
OP0  
OP2  
OP4  
OP6  
OP7 15  
26 OP6  
OP7 17  
16  
25  
D1  
D0  
17  
24  
D3  
D2  
D5 18  
D7 19  
23 D4  
22 D6  
GND  
-INTR  
20  
21  
40 Lead PDIP, CDIP (0.600”)  
44 Lead PLCC  
A0  
A1  
1
2
28  
27  
26  
25  
24  
23  
22  
21  
20  
19  
18  
17  
16  
15  
V
CC  
IP2  
3
A2  
A3  
-CS  
4
RESET  
X2  
5
-WR  
6
-RD  
RXDB  
TXDB  
OP1  
D1  
X1/CLK  
RXDA  
TXDA  
OP0  
D0  
7
8
9
10  
11  
12  
13  
14  
D3  
D2  
D5  
D4  
D7  
D6  
GND  
-INTR  
28 Lead PDIP (0.600”)  
Rev. 2.11  
3
XR88C681  
PIN DESCRIPTION  
44 PLCC  
40 PDIP,  
CDIP  
28 PDIP  
Symbol  
Type Description  
No Connection.  
1
2
NC  
A0  
1
2
1
I
LSB of Address Input. This input, along with Address Inputs,  
A1 - A3 are used to select certain registers within the DUART  
device, during READ and WRITE operations with the CPU.  
3
IP3  
(TXCA - I)  
(RXCA - Z)  
I
Input Port 3. General Purpose Input - When the DUART is  
operating in the I-mode, this input can also be used as the  
external clock input for the Channel A Transmitter (TXCA).  
When the DUART is operating in the Z-Mode, this input can  
be used as the external clock input for the Channel A Receiv-  
er (RXCA).  
4
5
3
4
2
A1  
I
I
Address Input.  
IP1  
(-CTSB)  
Input Port 1. General Purpose Input - This input can also be  
used as the Active Low, “Channel B Clear to Send” input.  
(-CTSB)  
6
7
5
6
3
4
A2  
A3  
I
I
Address Input.  
MSB of Address Input. This input, along with Address In-  
puts, A0 - A2 are used to select certain registers within the  
DUART device, during READ and WRITE operations with the  
CPU.  
8
9
7
8
IP0  
I
I
Input 0. General Purpose Input - This input can also be used  
(-CTSA)  
as the active-low, “Channel A Clear-to-Send” input. (-CTSA)  
5
-WR  
Write Strobe (Active-Low). A “low” on this input while -CS is  
also “low” writes the contents of the Data Bus into the ad-  
dressed register, within the DUART. The transfer occurs on  
the rising edge of -WR.  
10  
11  
9
6
7
-RD  
I
I
Read Strobe (Active Low). A “low” on this input while -CS is  
also “low” places the contents of the addressed DUART regis-  
ter, on the data bus.  
10  
RXDB  
Receive Serial Data Input (Channel B). The least significant  
bit of the character is received first. If external receiver clock,  
RXCB, is specified, the data is sampled on the rising edge of  
this clock.  
12  
13  
NC  
No Connect.  
11  
8
TXDB  
O
Transmitter Serial Data Output (Channel B). The least sig-  
nificant bit of the character is transmitted first. This output is  
held in the high (marking state) when the transmitter is idle,  
disabled, or when the channel is operating in the local LOOP-  
BACK mode. If an external transmitter clock is specified,  
TXCB, the transmitted data is shifted out of the TSR (Trans-  
mitter Shift Register) on the falling the edge of this clock.  
Rev. 2.11  
4
XR88C681  
44 PLCC  
40 PDIP,  
CDIP  
28 PDIP  
Symbol  
Type  
Description  
14  
12  
9
OP1  
(-RTSB)  
O
Output 1 (General Purpose Output). This output can also  
be programmed to function as the active-low, “Channel B  
Request-to-Send” Output (-RTSB).  
15  
13  
OP3  
O
Output 3 (General Purpose Output). This output port can  
also be programmed to function as: the “Channel B Trans-  
mitter 1X clock” output (TXCB_1X), the “Channel B Receiv-  
er 1X clock” output (RXCB_1X), or the open drain, active-  
low “Counter/Timer Ready” output (-C/T_RDY).  
(TXCB_1X)  
(RXCB_1X)  
(-C/T_RDY)  
16  
17  
14  
15  
OP5  
(-RXRDY/  
-FFULL_B)  
O
O
Output 5 (General Purpose Output Pin). This output port  
pin can also be programmed to function as the open-drain,  
active-low, Channel B “Receive Ready” or “Receiver FIFO  
Full” indicator output (-RXRDY_B/-FFULL_B).  
OP7  
(TXRDY_B)  
Output 7. (General Purpose Output Pin). This output port  
pin can also be programmed to function as the open-drain,  
active-low, “Transmitter Ready” indicator output for Channel  
B (-TXRDY_B).  
18  
19  
20  
21  
16  
17  
18  
19  
10  
11  
12  
13  
D1  
D3  
D5  
D7  
I/O  
I/O  
I/O  
I/O  
Bi-Directional Data Bus.  
Bi-Directional Data Bus.  
Bi-Directional Data Bus.  
MSB of the Eight Bit Bi-Directional Data Bus. All transfers  
between the CPU and the DUART take place over this bus  
(consisting of pins D0 - D7). The bus is tri-stated when the  
-CS input is “high”, except during an IACK cycle (in the Z-  
Mode).  
22  
23  
24  
20  
21  
14  
15  
GND  
NC  
PWR Signal Ground.  
No Connect.  
-INTR  
O
Interrupt Request Output (Active Low, Open Drain).  
-INTR is asserted upon the occurrence of one or more of the  
chip’s maskable interrupting conditions. This signal will re-  
main asserted throughout the Interrupt Service Routine and  
will be negated once the condition(s) causing the Interrupt  
Request has been eliminated.  
25  
26  
27  
28  
22  
23  
24  
25  
16  
17  
18  
19  
D6  
D4  
D2  
D0  
I/O  
I/O  
I/O  
I/O  
Bi-Directional Data Bus.  
Bi-Directional Data Bus.  
Bi-Directional Data Bus.  
LSB of the Eight Bit Bi-Directional Data Bus. All transfers  
between the CPU and the DUART take place over this bus.  
The bus is tri-stated when the -CS input is “high”, except  
during an IACK cycle (in the Z-Mode).  
29  
26  
OP6  
(-TXRDY_A)  
O
Output 6 (General Purpose Output). This output pin can  
also be programmed to function as the open drain, active-  
low, “Transmitter Ready” indicator output for Channel A  
(-TXRDY_A).  
Rev. 2.11  
5
XR88C681  
44 PLCC  
40 PDIP,  
CDIP  
28 PDIP  
Symbol  
Type Description  
30  
27  
OP4  
(RXRDY/  
FFULL_A)  
O
Output 4 (General Purpose Output). This output pin  
can also be programmed to function as the open-drain,  
active-low, “Receiver Ready” or “FIFO Full” indicator  
output for Channel A. (-RXRDY_A/-FFULL_A)  
31  
28  
OP2  
O
Output 2 (General Purpose Output). This output pin  
can also be programmed to function as any of the fol-  
lowing: The Channel A Transmitter 16X or 1X clock  
output (TXCA_16X or TXCA_1X), or the Channel A  
Receiver 1X clock output (RXCA_1X).  
(TXCA_16)  
(TXCA-1X)  
(RXCA_1X)  
32  
33  
29  
30  
20  
21  
OP0  
O
O
Output 0 (General Purpose Output). This output pin  
can also be programmed to function as the active-low,  
Request-to-Send output for Channel A (-RTSA).  
(-RTSA)  
TXDA  
Transmitter Serial Data Output (Channel A). The  
least significant bit of the character is transmitted first.  
This output is held in the marking (high) state when the  
transmitter is idle, disabled, or operating in the Local  
LOOPBACK mode. If an external transmitter clock is  
specified, TXCA, the data is shifted out of the TSR  
(Transmitter Shift Register) on the falling the edge of  
the clock.  
34  
35  
NC  
No Connect.  
31  
32  
22  
23  
RXDA  
I
I
Receive Serial Data Input (Channel A). The least  
significant bit of the character is received first. If an  
external receiver clock, RXCA, is specified, the data is  
sampled on the rising edge of the clock.  
36  
X1/CLK  
Crystal Output of External Clock Input. This pin is  
the connection for one side of the crystal and a capaci-  
tor to ground when the internal oscillator is used. If the  
oscillator is not used, an external clock signal must be  
supplied at this input.  
In order for the XR88C681 device to function properly,  
the user must supply a signal with frequencies be-  
tween 2.0MHz and 4.0MHz. This requirement can be  
met by either a crystal oscillator or by the external  
TTL-compatible clock signal.  
37  
33  
24  
X2  
O
Crystal Input. Connection for the one side of the crys-  
tal (opposite of X1/CLK). If the oscillator is used, a  
capacitor must also be connected from this pin to  
ground. This pin must be left open if an external clock  
is supplied at X1/CLK.  
Rev. 2.11  
6
XR88C681  
44 PLCC  
40 PDIP,  
CDIP  
28 PDIP  
Symbol  
Type  
Description  
38  
34  
25  
RESET  
I
Master Reset (Active High). Asserting this input clears in-  
ternal registers, SR, ISR, IMR, OPR, OPCR, and initializes  
the IVR to 0F16. Asserting this input also stops the Counter/  
Timer, puts OP0 - OP7 in the high state, and places both  
serial channels in the inactive state with TXDA and TXDB  
outputs marking (high).  
39  
40  
41  
41  
35  
36  
37  
37  
26  
27  
-CS  
I
I
I
I
Chip Select (Active Low). The data bus is tri-stated when  
-CS is “high.” Data transfers between the CPU and the  
DUART via D0 - D7 are enabled when -CS is “low”.  
IP2  
(C/T_EX)  
Input 2. (General Purpose Input). This input pin can also  
be programmed to function as the “Counter/Timer external  
clock” input (C/T_EX).  
IP6  
(RXCB)  
Input 6 (I-Mode). General Purpose Input pin. This input pin  
can also be programmed to function as the External Receiv-  
er Clock for Channel B (RXCB).  
-IACK  
Interrupt Acknowledge Input (Z-Mode). Active Low.  
This input is the CPU’s response to the Interrupt Request  
issued by the DUART device. When the CPU asserts this  
input, it indicates that the DUART’s interrupt request is about  
to be serviced, and that the very next cycle will be an Inter-  
rupt Acknowledge Cycle. The DUART will respond to the  
CPU’s Interrupt Acknowledge by placing the contents of the  
Interrupt Vector Register (IVR) on the data bus (D0 - D7).  
42  
42  
38  
38  
IP5  
I
Input 5 (I-Mode). General Purpose Input pin. This pin can  
also be configured to function as the external clock input for  
the Transmitter of Channel B (TXCB).  
(TXCB)  
IEO  
(Z-Mode)  
O
Interrupt Enable Output (Z-Mode). Active High.  
This output pin is normally “high”. However, either of the  
following two conditions can cause this output pin to be ne-  
gated (toggled “low”).  
1. If the IEI (Interrupt Enable Input) pin is “low”. If IEO is  
“low” because of the IEI pin, IEO will toggle “high” once  
the IEI has toggled “high”.  
2. The DUART has issued an Interrupt Request to the CPU  
(-INTR pin is toggled “low”). If IEO is “low” because the  
DUART has requested an Interrupt, then IEO will remain  
“low”, throughout the Interrupt Service Routine, until the  
CPU has invoked the “” command.  
43  
43  
39  
39  
IP4  
I
I
Input 4 (I-Mode). General Purpose Input pin. This input pin  
can also be configured to function as the external clock input  
for the Receiver of Channel A (RXCA).  
(RXCA)  
IEI  
(Z-Mode)  
Interrupt Enable Input (Z-Mode). Active High.  
If this active-high input is at a logic “high”, the DUART is ca-  
pable of generating all non-masked Interrupt Requests to the  
CPU. If this input is at a logic “low”, the DUART is inhibited  
from generating any Interrupt Requests to the CPU.  
44  
40  
28  
VCC  
PWR Most Positive Power Supply.  
Rev. 2.11  
7
XR88C681  
1, 2, 3  
DC ELECTRICAL CHARACTERISTICS  
Test Conditions: T = 0 - 70°C, V = 5V ¦ 5% unless otherwise specified.  
A
CC  
Symbol  
VIL  
Parameter  
Min.  
0.5  
2.0  
2.2  
4.0  
Typ.  
Max.  
0.8  
Unit  
V
Conditions  
Input Low Voltage  
Input High Voltage  
VIH  
VCC  
V
VIH  
Input High Voltage (Military)  
Input High Voltage (X1/CLK)  
Output Low Voltage  
V
TA = -55°C to 125°C  
VIHX1  
VOL  
VOH  
IIL  
VCC  
0.4  
V
V
IOL = 2.4mA  
IOH = -400 A  
VIN = 0 to VCC  
VIN = 0 to VCC  
VIN = 0  
Output High Voltage  
2.4  
-25  
-30  
V
Input Leakage Current  
Select Pin Leakage Current  
X1 Input Low Current  
X2 Input Low Current  
X1 Input High Current  
X2 Input High Current  
25  
A
IILSEL  
IX1L  
IX2L  
IXIH  
+30  
A
-20  
-7  
A
mA  
A
20  
20  
VIN = VCC  
IX2H  
ILL  
A
VIN = VCC  
Data Bus Tri-State Leakage  
Current  
-10  
-10  
10  
10  
A
VO = 0 to VCC  
IOC  
Open Drain Output Leakage  
Current  
A
VO = 0 to VCC  
ICCA  
ICCS  
Power Supply Current4  
Power Supply Current4  
6
3
15  
10  
mA  
mA  
Active Mode  
Standby Mode  
Notes  
1.Parameters are valid over the specified temperature and operating supply ranges. Typical values are 25°C, VCC = 5V and typical  
processing parameters.  
2.All voltages are referenced to ground (GND). For testing, input signal levels are 0.4V and 2.4V with a transition time of 20ns  
maximum. All time measurements are referenced at input voltages of 0.8V and 2.0V as appropriate. See Figure 50.  
3.For prime grade N, P, J, L, M, ML, VCC = 5V + 10%.  
4.Measured operating with a 3.6864MHz crystal and with all outputs open.  
Rev. 2.11  
8
XR88C681  
1, 2, 3  
AC ELECTRICAL CHARACTERISTICS  
Test Conditions: T = 0 - 70°C, V = 5V ¦ 5% unless otherwise specified.  
A
CC  
Symbol  
Reset Timing (See Figure 51)  
tRES RESET Pulse Width  
Parameter  
Min.  
Typ.  
Max.  
Unit  
Conditions  
1.0  
A
XR88C681 Read and Write Cycle Timing (Figure 52)4  
tAS  
A0-A3 Setup Time to RD, WR  
Low  
10  
ns  
ns  
tAH  
A0-A3 Hold Time from RD, WR  
Low  
0
tCS  
tCH  
CS Setup Time to RD, WR Low  
0
0
ns  
ns  
CS Hold Time from -RD, -WR  
High  
tRW  
tDD  
-RD, -WR Pulse Width  
225  
ns  
ns  
ns  
ns  
ns  
ns  
Data Valid from -RD Low  
60  
175  
100  
tDF  
Data Bus Floating from -RD High  
Data Setup Time to -WR High  
Data Hold Time from -WR High  
10  
100  
5
tDS  
tDH  
tRWD  
High Time Between Reads  
and/or Writes5, 6  
100  
Z-Mode Interrupt Cycle Timing (Figure 53)  
tDIO  
tIAS  
tIAH  
tEIS  
tEOD  
IEO Delay Time from IEI  
100  
100  
ns  
ns  
ns  
ns  
ns  
-IACK Setup Time to -RD Low7  
-IACK Hold Time from -RD High  
IEI Setup Time to RD Low  
0
50  
IEO Delay Time from -INTR Low  
Port Timing (Figure 54)4  
tPS  
tPH  
tPD  
Port Input Setup Time to  
0
0
ns  
ns  
ns  
-RD/-CS Low  
Port Input Hold Time from  
-RD/-CS High  
Port Output Valid from -WR/-CS  
High  
400  
Interrupt Output Timing (Figure 55)  
tIR -INTR or OP3 - OP7 when used  
300  
300  
ns  
ns  
as Interrupts High from: Clear of  
Interrupts Status Bits in ISR or  
IPCR Clear of Interrupt Mask in  
IMR  
Clock Timing (Figure 56)  
Rev. 2.11  
9
XR88C681  
Symbol  
Parameter  
Min.  
Typ.  
Max.  
Unit  
Conditions  
tCLK  
X1/CLK (External) High or Low  
Time  
100  
ns  
tCLK  
X1/CLK Crystal or External  
Frequency  
7.372  
MHz  
Rev. 2.11  
10  
XR88C681  
1, 2, 3  
AC ELECTRICAL CHARACTERISTICS  
(CONT’D)  
Test Conditions: T = 0 - 70°C, V = 5V ¦ 5% unless otherwise specified.  
A
CC  
Symbol  
Parameter  
Min.  
Typ.  
Max.  
Unit  
Conditions  
Clock Timing (Figure 56) (Cont’d.)  
tCTC  
tCTC  
tRTX  
fRTX  
Counter/Timer External Clock  
High or Low Time (IP2)  
100  
0
ns  
MHz  
ns  
Counter/Timer External Clock  
Frequency  
7.372  
RXCn and TXCn (External) High  
or Low Time8  
220  
RXCn and TXCn (External)  
Frequency  
16X  
1X  
0
0
16.0  
1.0  
MHz  
MHz  
Transmitter Timing (Figure 57)  
tTXD  
tTCS  
tRXS  
tRXH  
TXD Output Delay - TXC  
350  
150  
ns  
ns  
ns  
ns  
(External) Low  
TXD Output Delay - TXC  
(Internal) Output Low  
RXD Data Setup Time to RXC  
(External) High  
240  
200  
RXD Data Hold Time from RXC  
(External) High  
Notes  
1.Parameters are valid over the specified temperature and operating supply ranges. Typical values are 25°C, VCC = 5V and typical  
processing parameters.  
2.All voltages are referenced to ground (GND). For testing, input signal levels are 0.4V and 2.4V with a transition time of 20ns  
maximum. All time measurements are referenced at input voltages of 0.8V and 2.0V as appropriate. See Figure 50.  
3.AC test conditions for outputs: CL = 50pF, RL = 2.7k to VCC  
.
4.If -CS is used as the strobing input, this parameter defines the minimum high time between -CSs.  
5.Consecutive write operations to the same register require at least three edges of the X1 clock between writes.  
6.This specification imposes a 6 MHz maximum 68000 clock frequency if a read or write cycle follows immediately after the previous  
read or write cycle. A higher 68000 clock can be used if this is not the case.  
7.This specification imposes a lower bound on -CS and -IACK low, guaranteeing that they will be low for at least one CLK period.  
8.The minimum high time mustbe at least 1.5 times the X1/CLK period and the minimum low time mustbe at least equal to the X1/CLK  
period if either channel’s Receiver is operating in external 1X clock mode.  
Specifications are subject to change without notice  
1
ABSOLUTE MAXIMUM RATINGS  
DC Supply Voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . 7V  
Storage Temperature . . . . . . . . . . . . . -65° C to 150° C  
All Voltages with  
2
respect to Ground . . . . . . . . . . . . . . . . . . -0.5V to +7V  
1.Stresses above those listed under the Absolute Maximum Ratings may cause permanent damage to the device. This is a stress rat-  
ing only, and functional operation of the device at these or any other conditions above those indicated in the “Electrical Characteris-  
tics” section of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect  
device reliability.  
Rev. 2.11  
11  
XR88C681  
2.This product includes circuitry specifically designed forthe protection of its internal devices from damaging effects of excessive stat-  
ic charge. Nonetheless, it is suggested that conventional precautions be taken to avoid applying any voltage larger than the rated  
maximum.  
Rev. 2.11  
12  
XR88C681  
SYSTEM DESCRIPTION  
The XR88C681 consists of two independent, full-duplex  
communication channels; each consisting of their own  
Transmitter and Receiver. Each channel of the DUART  
may be independently programmed for operating mode  
and data format. The DUART can interface to a wide  
D Serial Communication Channels A and B  
D Operation Control  
D Timing Control  
D Output Port  
A. DATA BUS BUFFER  
range of processors with  
a minimal amount of  
components. The operating speed of each receiver and  
transmitter may be selected from one of 23 internally  
generated fixed bit rates, from a clock derived from an  
internal counter/timer, or from an externally supplied 1x or  
16x clock. The bit rate generator (the source of the 23  
different fixed bit rates) can operate directly from a crystal  
connected across two pins or from an external clock. The  
ability to independently program the operating speed of  
the receiver and transmitter of each channel makes the  
DUART attractive for split speed channel applications  
such as clustered terminal systems.  
The data bus buffer provides the interface between the  
internal (within the chip) and external data buses. It is  
controlled by the operation control block to allow data  
transfers to take place between the host CPU and the  
DUART.  
B. OPERATION CONTROL BLOCK  
The control logic of the Operation Control block receives  
operatingcommands from the CPU and generates proper  
signals to the various sections of the DUART. The  
Operation Control Block functions as the user interface to  
the rest of the device. Specifically, it is responsible for  
DUART Register Address Decoding, and Command  
Decoding. Therefore all commands to set baud rates,  
parity, other communication protocol parameters, start or  
stop the Counter/Timer or reading a “status register” to  
monitor data communication performance must go  
through the Operation Control Block.  
Receiver data is quadrupled buffered and the transmitter  
data is dual-buffered via on-chip FIFOs in order to  
minimize the risk of receiver overrun and to reduce  
overhead in interrupt driven applications. The DUART  
also provides  
a flow control capability to inhibit  
transmission from a remote device when the buffer of the  
receiving DUART is full, thus preventing loss of data.  
The DUART also provides a general purpose 16 bit  
counter/timer (which may also be used as programmable  
bit rate generators), a 7 bit multi-purposeinput port andan  
8 bit multi-purpose output port (for the 40 pin DIP and 44  
pin PLCC packages only).  
The Operation Control Block will control DUART  
performance based upon the following input signals.  
Address Inputs, A0 - A3  
-RD  
-WR  
-CS  
PRINCIPLES OF OPERATION  
RESET  
Figure 1 presents an overall block diagram of the DUART.  
As illustrated in the block diagram, the DUART consists of  
the following major functional blocks:  
When using the 6800 family processor, the DUART will  
require some glue logic. Interfacing a 6800 Family  
Processor to the DUART can be easily achieved by  
including a small amount of external logic devices, as  
depicted in Figure 2.  
D Data Bus Buffer  
D Interrupt Control  
D Input Port  
Rev. 2.11  
13  
XR88C681  
-R/W  
-WR  
E clock  
-RD  
-RESET  
RESET  
Figure 2. External Logic Circuitry required to interface a 6800 Family  
Processor to the XR88C681 Device  
B.1 DUART Register Addressing  
The addressing of the internal registers of the DUART is presented in Table 1. Please note that some of the  
registers are “Read Only” and others are “Write Only”. Each channel is provided with the following dedicated  
(addressable) registers.  
D Command Registers  
D Mode Registers (MR1 and MR2)  
D Status Registers  
D Clock Select Registers  
D Receiver Holding Register (RHR) and Transmit Holding Register (THR)  
Additionally, the DUART contains the following registers that support/control both channels.  
D Interrupt Status Register  
D Interrupt Mask Register  
D Masked Interrupt Status Register  
D Interrupt Vector Register  
D Auxiliary Control Register  
And finally, the DUART also contains other registers that support functions other than serial data communication, such  
as the parallel ports and the counters/timers.  
D OPCR- Output Port Control Register  
D IPCR - Input Port Configuration Register  
D CTUR - Counter/Timer Upper Byte Register  
D CTLR - Counter/Timer Lower Byte Register  
Rev. 2.11  
14  
XR88C681  
Address (Hex)  
Read Mode Registers  
Write Mode Registers  
Register Name  
Symbol  
Register Name  
Symbol  
00  
01  
02  
03  
04  
05  
06  
07  
08  
09  
0A  
0B  
0C  
0D  
Mode Register,  
Channel A  
MR1A, MR2A  
Mode Register,  
Channel A  
MR1A, MR2A  
Status Register,  
Channel A  
SRA  
MISR  
Clock Select Register,  
Channel A  
CSRA  
CRA  
Masked Interrupt  
Status Register  
Command Register A  
Rx Holding Register,  
Channel A  
RHRA  
IPCR  
Tx Holding Register,  
Channel A  
THRA  
ACR  
Input Port Change  
Register  
Auxiliary Control  
Register  
Interrupt Status  
Register  
ISR  
Interrupt Mask Register  
IMR  
Counter/Timer Upper  
Byte Register  
CTU  
Counter/Timer  
Upper Byte Register  
CTU  
Counter/Timer Lower  
Byte Register  
CTL  
Counter/Timer Lower  
Byte Register  
CTL  
Mode Register,  
Channel B  
MR1B, MR2B  
SRB  
Mode Register,  
Channel B  
MR1B, MR2B  
CSRB  
CRB  
Status Register,  
Channel B  
Clock Select Register,  
Channel B  
RESERVED  
Command Register,  
Channel B  
Rx Holding Register,  
Channel B  
RHRB  
IVR  
IP  
Tx Holding Register,  
Channel B  
THRB  
IVR  
Interrupt Vector  
Register  
Interrupt Vector  
Register  
Input Port  
Output Port  
Configuration Register  
(OP0 - OP7)  
OPCR  
0E  
0F  
Start Counter/Timer  
Command  
SCC  
STC  
Set Output Port Bits  
Command  
SOPBC  
COPBC  
Stop Counter/Timer  
Command  
Clear Output Port Bits  
Command  
Table 1. DUART Port and Register Addressing  
Note: The shaded blocks are not Read/Write registers but are rather “Address-Triggered” Commands.  
Table 1 indicates that each channel is equipped with two Mode Registers. Associated with each of these Mode Register  
pairs is a “Mode Register” pointer or MR pointer. Upon chip/system power up or RESET each MR pointer is “pointing to”  
the channel MR1n register. (Please note that the suffix “n” is used at the end of many of the DUART registers symbols in  
order to refer, generically, to either channels A or B). However, the contents of the MR pointer will shift from the address  
of the MR1n register to that of the MR2n register, immediately following any Read or Write access to the MR1n register.  
The MR pointer will continue to “point to” the MR2n register until a hardware reset occurs or until a “RESET MR  
POINTER” command has been invoked. The “RESET MR POINTER” command can be issued by writing the  
Rev. 2.11  
15  
XR88C681  
appropriate data to the appropriate channel’s Command Register. Therefore, both Mode Registers, within a given  
channel, have the same logical address. The features and functions of the DUART that are controlled by the Mode  
Registers are discussed in detail in Section G.3.  
B.2 Command Decoding  
Each channel is equipped with a Command Register. In general, the role of these Command Registers are to  
enable/disable the Transmitter, enable/disable the Receiver, along with facilitating a series of other miscellaneous  
commands. The bit format for each Command Register is presented herewith.  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Miscellaneous Commands  
Enable/Disable  
Enable/Disable  
Transmitter  
Receiver  
See Following Text  
00 = No Change  
01 = Enable Rx  
00 = No Change  
01 = Enable Tx  
10 = Disable Rx  
10 = Disable Tx  
11 = Not valid (do not use)  
11 = Not Valid (Do not use)  
Table 2. (CRA, CRB) Bit Format for Command Registers of Channels A & B  
The function of the lower nibble of the Command Registers is fairly straight-forward. This nibble is used to either enable  
or disable the Transmitter and/or Receiver.  
The upper nibble of the Command Register is used to invoke a series of miscellaneous commands. Table 3 defines the  
commands associated with the upper nibble of the Command Registers. Please note that the upper nibble commands  
1
16  
through B effects only the performance of Command Register’s Channel. However, commands C and D  
16 16 16  
effects system (or chip) level operation.  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Description  
0
0
0
0
0
0
0
1
Null Command.  
Reset MRn Pointer. Causes the Channel’s MRn  
pointer to point to MR1n.  
0
0
0
0
1
1
0
1
Reset Receiver. Reset the individual channel re-  
ceiver as if a Hardware Reset has been applied.  
The Receiver is disabled and the FIFO is flushed.  
Reset Transmitter. Resets the individual channel  
transmitter as if a Hardware Reset had been applied.  
The TXDn output is forced to a high level.  
Table 3. Miscellaneous Commands, Upper Nibble of all Command Registers,  
Unless Otherwise Specified (Cont’d Next Page)  
Rev. 2.11  
16  
XR88C681  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Description  
0
1
0
0
Reset Error Status. Clears the Received Break  
(RB), Parity Error (PE), Framing Error (FE) and  
Overrun Error (OE) status bits, SR[7:3].  
Specifically, if the Error Mode, for a particular chan-  
nel is set at “Block” Error Mode, this command will  
reset all of the Receiver Error Indicators in the Status  
Register. In the Block Error Mode, once either a PE,  
FE, OE, or RB occurs, the error will continue to be  
flagged in the Status Register, until this command is  
issued.  
If the Error Mode, for a particular channel is set to  
“Character Error Mode”, then the contents of the  
Status Register for PE, FE, and RB are reflected on  
a character by character basis. In the “Character  
Error Mode”, the state of these indicators is based  
only upon the character that is at the top of the RHR.  
The OE indicator is always presented as a “Block  
Error Mode” indicator, and requires this command to  
be reset.  
0
0
1
1
0
1
1
0
Reset Break Change Interrupt. Clears the chan-  
nel’s break change interrupt status bit.  
Start Break. Forces the TXDn output low. The  
transmitter must be enabled to start a break. If the  
transmitter is empty, the start of the break may be  
delayed up to two bit times. If the transmitter is ac-  
tive, the break begins when the transmission of  
those characters in the THR is completed, viz.,  
TXEMP must be true before the break will begin.  
0
1
1
1
Stop Break. The TXDn line will go high within two  
bit times. TXDn will remain high for one bit time be-  
fore the next character, if any, is transmitted.  
1
1
1
1
0
0
0
0
0
0
1
1
0
1
0
1
Set Rx BRG Select Extend Bit. Sets the channel’s  
“Receiver BRG Select Extend Bit” to 1.  
Clear Rx BRG Select Extend Bit. Clears the chan-  
nel’s “Receiver BRG Select Extend Bit” to 0.  
Set Tx BRG Select Extend Bit. Sets the channel’s  
“Transmitter BRG Select Extend Bit” to 1.  
Clear Tx BRG Select Extend Bit. Clears the chan-  
nel’s “Transmitter BRG Select Extend Bit” to 0.  
Table 3. Miscellaneous Commands, Upper Nibble of all Command Registers,  
Unless Otherwise Specified (Cont’d)  
Rev. 2.11  
17  
XR88C681  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Description  
1
1
0
0
Set Standby Mode (Channel A). When this com-  
mand is invoked via the Channel A Command Regis-  
ter, power is removed from each of the transmitters,  
receivers, counter/timer and additional circuits to  
place the DUART in the standby (or lower power)  
mode. Please note that this command effects the  
operation of the entire chip. Normal operation is re-  
stored by a hardware reset or by invoking the “SET  
ACTIVE MODE” command.  
Reset IUS Latch (Channel B). When this command  
is invoked via the Channel B Command Register,  
and the DUART is operating in Z-mode, it causes  
the Interrupt-Under-Service (IUS) latch to be reset.  
This, in turn, will cause the IEO output to toggle  
“high”.  
1
1
0
1
Set Active Mode (Channel A). When this com-  
mand is invoked via the Channel A Command Regis-  
ter, the DUART is removed from the Standby Mode  
and resumes normal operation.  
Set Z-Mode (Channel B). When this command is  
invoked via the Channel B Command Register, the  
DUART is conditioned to operate in the Z-Mode. For  
a detailed discussion of the DUART’s operation while  
in the Z-Mode, Please see Section C.6.2. (Not avail-  
able for the 28 pin DIP packaged devices)  
1
1
1
1
1
1
0
1
Reserved.  
Reserved.  
Table 3. Miscellaneous Commands, Upper Nibble of all Command Registers,  
Unless Otherwise Specified (Cont’d)  
In addition to the commands which are available through  
the command registers, the DUART also offers  
“Address-Triggered” commands. These commands are  
listed in Table 1, “DUART PORT AND REGISTER  
ADDRESSING”; and are further identified by being  
“shaded” in Table 1. Specifically, these commands are:  
only thing that will happen, in response to this procedure  
is the Counter/Timer will initiate counting. For a detailed  
discussioninto the operation of the Counter/Timer, please  
see Section D.2.  
Another example of an Address-Triggered commands is  
the “SET OUTPUT PORT BITS” Command. This  
command is invoked by performing a write of data to  
D START COUNTER/TIMER COMMAND  
D STOP COUNTER/TIMER COMMAND  
D SET OUTPUT PORT BITS COMMAND  
D CLEAR OUTPUT PORT BITS COMMAND  
DUART address 0E  
.
16  
When the user invokes this  
command, he/she is setting certain bits (to “1”) within the  
OPR (Output Port Register). All other bits, within the OPR  
(not specified to be set), are not changed. The state of the  
output port pins are complements of the individual bits  
within the OPR. Hence, if OPR[0] is set to “1”, the state of  
the corresponding output port pin, OP0, is now set to a  
logic “0”. Consequently, one can think of the “SET  
OUTPUT PORT BITS” command as the “CLEAR  
OUTPUT PORT PINS” command. For a more detailed  
discussion into the operation of the Output Ports, please  
see Section F.  
Each of these commands are invoked by either reading or  
writing data to their corresponding DUART addresses as  
specified in Table 1.  
For Example:  
The START COUNTER/TIMER COMMAND is invoked by  
the procedure of reading DUART address 0E . Please  
16  
note that this “Read Operation” will not result in placing  
the contents of a DUART register on the data bus. The  
Rev. 2.11  
18  
XR88C681  
C. INTERRUPT CONTROL BLOCK  
D Receive FIFO A or B Full  
D Start or End of Received Break in Channels A or B  
D End of Counter/Timer Count Reached  
D Change of State on input pins, IP0, IP1, IP2, IP3  
The Interrupt Control Block consists of an Interrupt Status  
Registers (ISR), an Interrupt Mask Registers (IMR), a  
Masked Interrupt Status Registers (MISR) and an  
Interrupt Vector Register (IVR). Table 4 lists these  
registers, their address location (within the DUART).  
The Interrupt Control Block allows the user to apply the  
DUART in an “Interrupt Driven” environment. The  
DUART includes an interrupt request output signal  
(-INTR), which may be programmed to be asserted upon  
the occurrence of any of the following events:  
D Transmit Hold Register A or B Ready  
D Receive Hold Register A or B Ready  
Register  
Description  
Interrupt Status Register  
Interrupt Mask Register  
Masked Interrupt Status Register  
Interrupt Vector Register  
Address Location  
(in DUART Address Space)  
ISR  
IMR  
MISR  
IVR  
0516 (Read Only)  
0516 (Write Only)  
0216 (Read Only)  
0C16  
Table 4. Listing and Brief Description of Interrupt System Registers  
The role and purpose of each of these registers are  
defined here.  
occurring. In general, the contents of the ISR will indicate  
to the processor, the source or the reason for the Interrupt  
Request from the DUART. Therefore, any interrupt  
service routine for the DUART should begin by reading  
either this register or the MISR (Masked Interrupt Status  
Register). The bit-format of the ISR is presented in  
Table 5:  
C.1 Interrupt Status Registers (ISR)  
The contents of the ISR indicates the status of all potential  
interrupt conditions. If any bits within these registers are  
toggled “high”, then the corresponding condition has or is  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Input Port  
Change  
Delta Break  
B
RXRDY/  
FFULLB  
TXRDYB  
Counter  
Ready  
Delta Break  
A
RXRDY/  
FFULLA  
TXRDYA  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
Table 5. ISR Bit Format  
The definition of the meaning behind each of these bits is  
presented here.  
D The individual Input Port pin that changed state  
D The final state of the monitored input ports, following  
the Change of State.  
For a detailed description of the IPCR, see Section F.  
ISR[7]: Input Port Change of State  
Please note that in order to enable this Interrupt  
Condition, the user must do two things:  
If this bit is at a logic “1”, then a change of state was  
detected at Input Port pins IP0 - IP3. The user would  
service this interrupt by reading the IPCR (if ISR[7] = 1).  
ISR[7] is cleared when the CPU has read the Input Port  
Configuration Register (IPCR). By reading the IPCR, the  
user will determine:  
1. Write the appropriate data to the lower nibble of the  
Auxiliary Control Register, ACR[3:0]. In this step, the  
user is specifying which Input Pins should trigger an  
“Input Port Change” Interrupt request.  
Rev. 2.11  
19  
XR88C681  
2. Write a logic “1” to IMR[7].  
Characters loaded into THRB while the transmitter is  
disabled will not be transmitted.  
ISR[6] Delta Break Indicator - Channel B  
ISR[3] Counter Ready  
When this bit is set, it indicates that the Channel B  
receiver has detected the beginning or end of a received  
break (RB). This bit is cleared (or reset) when the CPU  
In the TIMER mode, the C/T (Counter/Timer) will set  
ISR[3] once each cycle of the resultant square wave  
(available at the OP3 pin). ISR[3] will be cleared by  
invoking the “STOP COUNTER” command. Bear in mind,  
that in the TIMER mode, the “STOP COUNTER”  
command will not stop the C/T.  
invokes  
a
channel B “RESET BREAK CHANGE  
For more  
INTERRUPT” command (see Table 3).  
information into the DUART’s response to a BREAK  
condition, please see Section G.2.  
In the COUNTER mode, this bit is set when the counter  
reaches the terminal count (0000 ) and is cleared when  
16  
ISR[5] RXRDY/FFULL B - Channel B Receiver Ready  
or FIFO Full  
the counter is stopped by a “STOP COUNTER”  
command. When the Counter/Timer is in the COUNTER  
Mode, the “STOP COUNTER” command will stop the  
Counter/Timer.  
The function of this bit is selected by programming  
MR1B[6]. If programmed as the Receiver Ready  
indicator (RXRDYB), it indicates that at least one  
character of data is in RHRB and is ready to be read by the  
CPU. This bit is set when a character is transferred from  
the receiver shift register to RHRB and is cleared when  
the CPU reads the RHRB. If there are still more  
characters in RHRB after the read operation, the bit will be  
set again after RHRB is “popped”.  
ISR[2]: Delta Break A - Channel A Change in Break  
Assertion of this bit indicates that the channel A receiver  
has detected the beginning of or the end of a received  
break (RB). This bit is cleared when the CPU invokes a  
channel A “RESET BREAK CHANGE INTERRUPT”  
command. For more information into the DUART’s  
response to a BREAK condition, please see Section G.2.  
If this bit is programmed as FIFO full indicator (FFULLB),  
it is set when a character is transferred from the RSR to  
RHRB and the transfer causes RHRB to becomefull. This  
bit is cleared when the CPU reads RHRB; and thereby  
“poppingthe FIFO, makingroom for the next character. If  
a character is waiting in the RSR because RHRB is full,  
this bit will be set again after the read operation, when that  
character is loaded into RHRB.  
ISR[1] RXRDYA/FFULL A - Channel A Receiver  
Ready or FIFO Full  
The function of this bit is selected by programming  
MR1A[6]. If programmed as the Receiver Ready  
indicator (RXRDYA), this bit indicates that there is at least  
one character of data in RHRA, and is ready to be read by  
the CPU. This bit is set when a character is transferred  
from the RSR to RHRA and is cleared when the CPU  
reads (or “pops”) RHRA. If there are still more characters  
in RHRA, following the read operation, the bit will be set  
again after RHRA is “popped”.  
Note:  
If this bit is configured to reflect the FFULLB indicator, this  
bit will not be set (nor will produce an interrupt request) if  
one or two characters are still remaining in RHRB, following  
data reception. Hence, it is possible that the last two char-  
acters in a string of data (being received) could be lost due  
to this phenomenon.  
If this bit is programmed as the FIFO (RHR) full indicator  
(FFULLA), it is set when a character is transferred from  
the RSR to RHRA and the newly transferred character  
causes RHRA to become full. This bit is cleared when the  
CPU reads RHRA. If a character is waiting in the RSR  
because RHRA is full, this bit will be set again, following  
the read operation, when that character is loaded into  
RHRA.  
ISR[4] TXRDYB - Channel B Transmitter Ready  
This bit is a duplicate of TXRDY B, SRB[2].  
This bit, when set, indicates that THRB is empty and is  
ready to accept a character from the CPU. The bit is  
cleared when the CPU writes a new character to THRB;  
and is set again, when that character is transferred to the  
TSR. TXRDYB is set when the transmitter is initially  
enabled and is cleared when the transmitter is disabled.  
Note:  
If this bit is configured to reflect the FFULLA indicator, this  
bit will not be set (nor will produce an interrupt request) if  
Rev. 2.11  
20  
XR88C681  
one or two characters are still remaining in RHRA, following  
data reception. Hence, it is possible that the last two char-  
acters in a string of data (being received) could be lost due  
to this phenomenon. Therefore, the user is advised to read  
RHRA until empty.  
Characters loaded into THRA while the transmitter is  
disabled will not be transmitted.  
C.2 Interrupt Mask Register (IMR)  
The Interrupt Mask Register is a “Write Only” register  
which enables the user to select the conditions that will  
cause the DUART to issue an Interrupt Request to the  
processor. In other words, the user has the option of  
masking or blocking certain conditions from causing the  
DUART to issue an Interrupt Request. Therefore, the  
bit-format of the IMR is essentially the same as the ISR.  
However, for completeness, the Bit Format of the IMR is  
presented here.  
ISR[0]: Channel A Transmitter Ready  
This bit is a duplicate of TXRDY A, SRA[2].  
This bit, when set, indicates that THRA is empty and is  
ready to accept a character from the CPU. The bit is  
cleared when the CPU writes a new character to THRA;  
and is set again, when that character is transferred to the  
TSR. TXRDYA is set when the transmitter is initially  
enabled and is cleared when the transmitter is disabled.  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Input Port  
Change  
Delta Break  
B
RXRDY/  
FFULLB  
TXRDYB  
Counter  
Ready  
Delta Break  
A
RXRDY/  
FFULLA  
TXRDYA  
0 = Off  
1 = On  
0 = Off  
1 = On  
0 = Off  
1 = On  
0 = Off  
1 = On  
0 = Off  
1 = On  
0 = Off  
1 = On  
0 = Off  
1 = On  
0 = Off  
1 = On  
Table 6. IMR Bit Format  
If the user wishes to enable a certain interrupt, he/she  
should write a “1” to the bit within the IMR, corresponding  
to that Interrupt Condition. Likewise, to disable or mask  
out a certain condition causing an interrupt, the user  
should write a “0” to the bit location corresponding to that  
condition. To enable all interrupts the user would write  
memory, for later recall. The additional hardware and  
software overhead required to support this activity can be  
eliminated via use of the MISR.  
C.4 Interrupt Vector Register, IVR  
This register is only used for Interrupt Vector generation  
when the DUART is commanded into the special Z-Mode.  
While in this mode, the contents of the IVR is typically  
related to the starting address of the DUARTs Interrupt  
Service Routine. Otherwise, in the I-Mode, Interrupt  
Vector generation is typically performed off-chip. When  
the DUART is operating in the I-Mode, the IVR can be  
used as general purpose read/write registers. The role of  
the IVR, while the DUART is operating in the Z-Mode is  
presented in Section C.6.  
FF (all “1”s) to this registers.  
16  
Please note that IMR is a Write Only Registers, and can  
therefore not be read by the processor.  
C.3 Masked Interrupt Status Register (MISR)  
The content of the MISR register is basically the results of  
ANDing the ISR and IMR together.  
MISR Content = [ISR Contents] ¯ [IMR Contents]  
One limitation of DUART Interrupt Service Routines that  
rely on reading the ISR is that the bits within the ISR can  
toggle “high” due to their corresponding conditions  
whether or not they are enabled by the IMR. Therefore,  
the user, following reading the Interrupt Status Register,  
will have to make provisions for; and execute a “bit-by-bit”  
AND of the ISR and IMR contents. Since the IMR is a  
“Write Only” register and cannot be read by the processor,  
the contents of the IMR will have to be stored in system  
C.5 Limitations of the DUART Interrupt Structure  
The Interrupt Structure offered by the DUART allows the  
user to program the DUART to generate interrupts in  
response to certain THR and RHR (FIFO) conditions; the  
Counter/Timer Ready condition, and to changes in the  
Break Condition (at the Receiver). However, aside from  
the “Delta Break Condition” (RB), the DUART’s Interrupt  
Structure does not allow for interrupt requests due to  
Rev. 2.11  
21  
XR88C681  
Receiver problems such as Parity Error (PE), Receiver  
Overrun Error (OE), or Framing Error (FE). The DUART  
also does not offer the user to ability to configure one of  
the output ports to relay the occurrence of any of these  
conditions. Therefore, unless the user is implementing  
some sort of “Data Link Layer” error checking scheme  
such as CRC, the user is advised to “validate” the  
received data by frequently reading the Status Register;  
and checking for any non-zero upper-nibble values. This  
is especially the case if the user has set the Error Mode to  
“Character” (MR1n[5] = 0).  
D 8051 P  
D 8080 CP  
D 8085 P  
D 68HC11 C  
D Z-80 P (Interrupt Modes 0 and 1)  
However, the DUART should be operating in the Z-Mode  
when interfacing the following microprocessors/  
microcontrollers.  
D 8088 P  
D 8086 P  
D 80286 - 80486 Ps  
D Pentium P  
D Z-80 P (Interrupt Modes 2)  
C.6 Servicing DUART Interrupts  
The next few sections will provide detailed discussions of  
DUART/Microprocessor interfacing and interrupt  
processing on each of the above-mentioned  
microprocessors. From this discussion, a detailed  
description of I-Mode Interrupt processing and Z-Mode  
Interrupt processing will emerge.  
Interrupt servicing with the XR88C681 DUART falls into  
two broad categories: I-Mode and Z-Mode. I-Mode has  
historically been referred to as the “Intel” Mode. Likewise,  
the Z-Mode has been referred to as the “Zilog” Mode.  
When the DUART is operating in the Z-Mode, the DUART  
will place an 8 bit “interrupt vector” on the data bus, to the  
CPU, during the “Interrupt Acknowledge” or IACK cycle.  
The CPU will read this interrupt vector from the Data Bus,  
and determine (from the Interrupt Vector data) the  
location of the appropriate interrupt service routine, in  
system memory. Additionally, the Z-Mode gives the user  
a hardware approach to prioritize the interrupt requests  
among numerous peripheral devices. This phenomenon  
is discussed in greater detail in Section C.6.2.  
C.6.1 I-Mode Interrupt Servicing  
The DUART will be in the I-Mode following power up of the  
IC, or a hardware reset. In general, a CPU interfacing to a  
DUART operating in the I-Mode, will function as follows,  
during interrupt servicing.  
If the DUART requires interrupt service from the CPU, it  
will asserts the -INTR pin to the CPU. Once the CPU has  
detected the interrupt request, it will determine the  
location of the appropriate interrupt service routine, and  
will branch program control to that location. The CPU will  
accomplish all of this without providing an “Interrupt  
Acknowledge” signal or any further interaction with the  
DUART. Once the CPU has eliminated the cause(s) of the  
DUART’s interrupt request, the DUART will then negate  
its -INTR pin. The CPU will then exit the “DUART”  
interrupt service routine and will resume normal  
processing.  
When the DUART is operating in the I-Mode, the DUART  
will not provide any interrupt vector information to the  
CPU, during the IACK cycle. Interrupt Vector information,  
or any means to route program control to the appropriate  
Interrupt Service Routine, is accomplished external to the  
DUART.  
The DUART will be in the I-Mode following power up or a  
hardware reset. The user must invoke the “Set Z-Mode”  
command, in order to command the DUART into the  
Z-Mode.  
In general there are two approaches that CPUs  
commonly use to locate the appropriate interrupt service  
routine, when interfaced with an I-Mode DUART.  
D Direct Interrupt Processing  
D (External) Vectored-Interrupt Processing  
Although the I-Mode has been referred to as the “Intel”  
Mode, and the Z-Mode as the “Zilog” Mode; this does not  
mean that the user should only operate the DUART in the  
Z-Mode when interfacing a Zilog microprocessor, or in the  
I-Mode when interfacing to an Intel microprocessor. The  
division between I-Mode and Z-Mode is not necessary  
along “corporate” lines. If you are interfacing the DUART  
to the following microprocessors/ microcontrollers, then  
the DUART must operate in the I-Mode.  
Direct Interrupt Processing  
If a CPU employs “Direct Interrupt Processing” then once  
the CPU has detected the interrupt request, and has  
completed its current instruction, the CPU will branch  
Rev. 2.11  
22  
XR88C681  
program control to a specific location in system memory.  
For CPUs that employ direct interrupts, this “location” is  
fixed by the CPU circuitry itself.  
because the location of the interrupt service routine is  
determined by hardware “external” to the DUART. For  
some CPUs, (such as the 8080A and the 8085 P), this  
“interrupt vector” information is a one byte op-code for a  
CALL instruction to a special “RESTART subroutine”.  
The location of this “RESTART subroutine” is fixed by  
CPU circuit design. If the user employs this approach for  
interrupt processing, he/she is responsible for insuring  
that either the interrupt service routine, or an  
unconditional branch instruction (to the interrupt service  
routine) resides at this location in memory.  
For Example:  
If the -INT0 interrupt request input pin, of the 8051 C, is  
asserted, the CPU will branch program control to location  
0003 in system memory. This location is fixed (by circuit  
16  
design of the 8051 P) and cannot be changed by the  
user.  
(External) Vectored Interrupt Processing  
Each of these Interrupt Processing techniques will be  
presented in greater detail in the following sections.  
CPUs that employ this form of interrupt processing  
typically have an Interrupt Acknowledge output pin. This  
“IACK” or “-INTA” output will be used to gate “interrupt  
vector” information onto the Data Bus, via external  
(non-DUART) hardware. The term “External” is used to  
describe this form of vectored-interrupt processing;  
As mentioned earlier, the DUART should be operating in  
the I-Mode, when interfaced to the P/ C presented in  
Table 7. Table 7 also presents the type of interrupt  
processing that is employed by each of these Ps/ Cs.  
P/ C  
Type of Interrupt Processing  
Comments  
8051 C  
Direct  
The 8051 C has two external Interrupt Request inputs: -INT0  
and -INT1.  
8080A P  
External Vectored  
The 8080A P will allow the use of up to 8 different op codes  
for “CALL” instructions to the Interrupt Service Routines.  
The 8080A CPU module will output an interrupt ac-  
knowledge output, -INTA, which can be used to “gate”  
the “CALL” instructions on to the Data Bus.  
8085 P  
Direct and External Vectored  
The 8085 P has three “Direct” external Interrupt Request  
inputs: RST 7.5, RST 6.5, and RST 5.5. Additionally, this  
has the exact same “vector” options as does the 8080A P.  
P
Direct  
The 68HC11 C has a single “maskable” external Interrupt  
Request input; -IRQ.  
68HC11 C  
Z-80 P  
External Vectored  
Direct Interrupt  
The Z-80 CPU uses the exact same approach as presented  
for the 8080A CPU.  
(Interrupt Mode 0)  
Z-80 P  
The Z-80 will branch to 0038H in system memory if the -INT  
interrupt request pin is asserted.  
Table 7. Summary of P/ C and their types of Interrupt Processing (I - Mode)  
The information presented in Table 7 is discussed in detail in the following sections.  
Rev. 2.11  
23  
XR88C681  
C.6.1.1 8051 Microcontroller  
The 8051 family of microcontrollers is manufactured by Intel and comes with a variety of amenities. Some of these  
amenities include:  
D On chip serial port  
D Four 8 bit I/O port (P0 - P3)  
D Two 16 bit timers  
D 4k bytes of ROM  
D 128 bytes of RAM  
Figure 3 presents a block diagram of the 8051 microcontroller, and Figure 4 presents the pin out of this device.  
-INT1  
-INT0  
-T2EX  
Timer 2 (8032/8052)  
Timer 1  
Timer 0  
Timer 2  
(8032/8052)  
128 bytes  
RAM  
-T2  
-T1  
Serial Port  
ROM  
(8032/8052)  
Timer 1  
Timer 0  
0K - 8031/8032  
4K - 8051  
Interrupt  
Control  
128 bytes  
RAM  
Other  
Registers  
8K - 8052  
-T0  
CPU  
Oscillator  
Serial Port  
I/O Ports  
Bus Control  
ALE  
-EA  
RST  
-PSEN  
P0  
P1  
P2  
P3  
-RXD  
-TXD  
Figure 3. Block Diagram of the 8051 Microcontroller  
Rev. 2.11  
24  
XR88C681  
40  
P1.0  
P1.1  
P1.2  
P1.3  
P1.4  
1
2
3
4
5
V
CC  
P0.0 (AD0)  
39  
38  
37  
P0.1 (AD1)  
P0.2 (AD2)  
36 P0.3 (AD3)  
35  
P1.5  
P1.6  
6
7
P0.4 (AD4)  
P0.5 (AD5)  
34  
33  
32  
8051  
Microcontroller  
P1.7  
RST  
8
9
P0.6 (AD6)  
P0.7 (AD7)  
31 -EA  
P3.0 (RXD) 10  
P3.1 (TXD)  
ALE  
11  
P3.2 (-INT0) 12  
30  
29  
-PSEN  
13  
14  
15  
16  
17  
P3.3 (-INT1)  
P3.4 (T0)  
28 P2.7 (A15)  
27 P2.6 (A14)  
P3.5 (T1)  
26  
P2.5 (A13)  
P3.6 (-WR)  
P3.7 (-RD)  
25 P2.4 (A12)  
24 P2.3 (A11)  
23  
XTAL2 18  
XTAL1 19  
P2.2 (A10)  
22  
21  
P2.1 (A9)  
P2.0 (A8)  
V
20  
SS  
Figure 4. Pin Out of the 8051 Microcontroller  
The 8051 C consists of 4 8-bit I/O ports. Some of these Port 1 (P1.0 - P1.7)  
ports have alternate functions, as will be discussed here.  
Port 1 is a dedicated I/O port on pins 1 - 8. The pins,  
designated as P1.0, P1.1, P1.2, ..., are available for  
interfacing as required. No alternative functions are  
assigned for Port 1 pins; thus they are used solely for  
interfacing to external devices. Exceptions are the  
8032/8052 ICs, which use P1.0 and P1.1 either as I/O  
lines or as external inputs to the third timer.  
Port 0 (P0.0 - P0.7)  
This port is a dual-purpose port on pins 32 - 39 of the 8051  
IC. In minimal component designs, it is used as a general  
purpose I/O port. For larger designs with external  
memory, it becomes a multiplexed address and data bus  
(AD0 - AD7).  
Port 2 (P2.0 - P2.7)  
Port 2 (Pins 21 - 28) is a dual-purpose port that can  
function as general purpose I/O, or as the high byte of the  
address bus for designs with external code memory of  
more than 256 bytes of external data memory (A8 - A15).  
Rev. 2.11  
25  
XR88C681  
Port 3  
Port 3 is a dual-purpose port on pins 10 - 17. In addition to functioning as general purpose I/O, these pins have multiple  
functions. Each of these pins have an alternate purpose, as listed in Table 8.  
Alternate Function  
Bit  
Name  
RXD  
TXD  
-INT0  
-INT1  
T0  
Receive Data for Serial Port  
Transmit Data for Serial Port  
External Interrupt 0  
P3.0  
P3.1  
P3.2  
P3.3  
P3.4  
P3.5  
P3.6  
P3.7  
External Interrupt 1  
Timer/Counter 0 External Input  
Timer/Counter 1 External Input  
External Data Memory Write Strobe  
External Data Memory Read Strobe  
T1  
-WR  
-RD  
Table 8. Alternate Functions of Port 3 Pins  
The 8051 also has numerous additional pins which are  
relevant to interfacing to the XR88C681 DUART or other  
peripherals. These pins are:  
Interrupt  
Location  
-INT0  
-INT1  
0003H  
0013H  
ALE - Address Latch Enable  
Table 9. Interrupt Service Routine locations (in  
Code Memory) for -INT0 and -INT1  
If Port 0 is used in its alternate mode - as the data bus and  
the lower byte of the address bus -- ALE is the signal that  
latches the address into an external register during the  
first half of a memory cycle. Once this is done, the Port 0  
lines are then available for data input or output during the  
second half of the memory cycle, when the data transfer  
takes place.  
Therefore, if the user is using either one of these inputs as  
an interrupt request input, then the user must insure that  
the appropriate interrupt service routine or an  
unconditional branch instruction (to the interrupt service  
routine) is located at one of these address locations.  
If the 8051 C is required to interface to external  
components in the data memory space of sizes greater  
than 256 bytes, then both Ports 0 and Port 2 must be used  
as the address and data lines. Port 0 will function as a  
multiplexed address/data bus. During the first half of a  
memory cycle, Port 0 will operate as the lower address  
byte. During the second half of the memory cycle Port 0  
will operate as the bi-directional data bus. Port 2 will be  
used as the upper address byte. ALE and the use of a  
74LS373 transparent latch device can be used to  
demultiplex the Address and Data bus signals.  
-INT0 (P3.2) and -INT1 (P3.3)  
-INT0 and -INT1 are external interrupt request inputs to  
the 8051 C. Each of these interrupt pins support “direct  
interrupt” processing. In this case, the term “direct”  
means that if one of these inputs are asserted, then  
program control will automatically branch to a specific  
(fixed) location in code memory. This location is  
determined by the circuit design of the 8051 C IC and  
cannot be changed. Table 9 presents the location (in  
code memory) that the program control will branch to, if  
either of these inputs are asserted.  
Figure 5 presents a schematic illustrating how the  
XR88C681 DUART can be interfaced to the 8051 C.  
Rev. 2.11  
26  
XR88C681  
-INT0  
-RD  
-INTR  
-RD  
-WR  
-WR  
D0 - D7  
PORT 0  
(AD0 - AD7)  
74HC373  
D
C
A0 - A3  
A0 - A3  
Q
ALE  
A5 - A7  
CS_DUART  
Address  
Decoding  
Logic  
-CS  
PORT 2  
(A8 - A15)  
8051 CPU  
XR88C681  
to other ICs  
Figure 5. An Approach to Interfacing the XR88C681 DUART to the 8051 Microcontroller  
The circuitry presented Figure 5 would function as follows  
during a DUART requested interrupt. The DUART device  
requests an interrupt from the CPU by asserting its active  
low -INTR output pin. This will cause the -INT0 input pin to  
the CPU to go low. When this happens the 8051 CPU will  
finish executing its current instruction, and will then  
branch program control to the DUART interrupt service  
routine. In the case of Figure 5, since the DUART’s -INTR  
pin is tied to the -INT0 pin of the C, then the beginning of  
the interrupt service routine will be located in 0003H in  
code memory. The 8051 CPU does not issue an Interrupt  
Acknowledge signal back to the DUART. It will just begin  
processing through the DUART’s interrupt service  
routine. Once the CPU has eliminated the cause(s) of the  
interrupt request, the DUART’s -INTR pin will be negated  
(go “high”) and the CPU will return from the interrupt  
service routine and resume normal operation.  
C.6.1.2 8080A Microprocessor  
The 8080A Microprocessor is one of the earlier version of  
the Intel processors.  
In general, it is an 8-bit  
microprocessor that requires +5V, -5V, and +12V power  
supplies. Additionally, this microprocessor requires two  
other chips, in order to create a “complete” CPU module.  
Typically, these devices would be the 8224 Clock  
Generator and the 8228 System Controller. The 8224  
Clock Generator is responsible for conditioning and  
generating the necessary timing source for the 8080A  
Rev. 2.11  
27  
XR88C681  
CPU, from a external crystal. The 8228 System  
Controller is responsible for buffering the bi-directional  
Data Bus. Additionally, since the 8080 CPU device does  
not directly provide control bus signals, the 8228 Device is  
responsible for translating signaling information, from the  
8080A device, into the following Control Bus signals; in  
order to access memory and peripheral devices.  
-INTA - Interrupt Acknowledge  
-MEMR - Memory Read  
-MEMW - Memory Write  
-IOR - Input Port Read  
-IOW - Output Port Write  
Figure 6 presents a schematic of the 8080A CPU Module.  
GND  
8080A CPU  
+5V  
-5V  
A0 - A15  
+12V  
HOLD  
-WR  
DBIN  
HDLA  
INT  
INTE  
TANK  
1
D0  
OSC  
D0  
D1  
D2  
D3  
D4  
D1  
D2  
D3  
D4  
D5  
2
PHI2 (TTL)  
WAIT  
READY  
RDYIN  
8224  
Clock  
Generator  
-RESIN  
+12V  
RESET  
SYNC  
D5  
8228  
D6  
D7  
+5V  
System  
D6  
Controller  
GND  
D7  
INTA  
GND  
MEMR  
MEMW  
IOR  
+5V  
-STATUS STROBE  
-BUSEN  
IOW  
Figure 6. Schematic of 8080A CPU Module  
8080A CPU Module Interrupt Structure  
interrupt requests from peripherals. Whenever the INT  
pin is asserted by a peripheral device requesting an  
interrupt, the CPU will complete its current instruction.  
After completion of this instruction, the CPU module will  
assert -INTA via the 8228 Bi-Directional Bus Driver (U2)  
by toggling -INTA “low”. -INTA is the active-low “Interrupt  
Acknowledge” signal that the CPU module outputs in  
order to initiate the process of interrupt servicing. The  
8080A CPU module only supports “external”  
The “Interrupt Structure” of the 8080A CPU is described  
here. The 8080A CPU device consists of two signals:  
INTE and INT. Additionally, the 8228 Bi-Directional Bus  
consists of a single output signal, -INTA. INTE is the  
active-high Interrupt Enable output, and INT is the  
active-high Interrupt Request input. If the “Enable  
Interrupt” command has been invoked, the INTE output  
will be “high” indicating that the 8080 CPU will honor  
Rev. 2.11  
28  
XR88C681  
vectored-interrupt processing. Hence, when -INTA is  
asserted, the CPU module is awaiting “vector”  
information on the Data bus. In the case of the 8080A  
CPU Module, this “vector” information is typically the  
op-code for one of the RESTART instructions (RST). The  
8080A CPU supports up to eight different RST  
instructions (RST 0 through RST 7). These instructions  
are one-byte calls to specific locations within the CPU’s  
memory space, where the appropriate interrupt service  
routine exists. Table 10 presents a list of these RESTART  
instructions, the op-codes, and the corresponding  
RESTART address.  
Interfacing the 8080 CPU Module to the XR88C681  
DUART for Interrupt Processing  
The 8080A CPU can be connected to the XR88C681 and  
run in the Interrupt Driven mode. Figure 7 presents an  
approach that can be applied to interfacing the  
XR88C681 DUART to the 8080A CPU for “external”  
vectored interrupt processing. Please note that Figure 8  
only includes information pertaining to DUART interrupt  
servicing. Other circuitry (such as the 8224 Clock  
Generator, the Address Bus, etc.) have been omitted from  
the schematic. In this schematic, the DUART Interrupt  
Service Routine is located at 0020  
in memory.  
16  
Additionally, the DUART has been configured to operate  
in the I-Mode. The function description of this circuit is  
presented here.  
Op-Code (hex)  
Mnemonic  
Restart Address  
(hex)  
C7  
CF  
D7  
DF  
E7  
EF  
F7  
FF  
RST 0  
RST 1  
RST 2  
RST 3  
RST 4  
RST 5  
RST 6  
RST 7  
0000  
0008  
0010  
0018  
0020  
0028  
0030  
0038  
The XR88C681 will request an interrupt to the 8080A  
CPU, by toggling its -INTR output “low”. This signal is  
inverted and applied to the active-high INT input of the  
CPU. Once the 8080A CPU has completed its current  
instruction, it will assert the active-low -INTA signal (from  
the 8228 Bi-Directional Bus Driver). At this time, both the  
-INTR signal (from the DUART) and the -INTA signal  
(from the 8228) are each at a logic “low”. The -INTR and  
-INTA signals are both routed to a two-input OR gate.  
Hence, when both -INTR and -INTA are at logic “low”, the  
output of the OR-gate will also be at a logic “low”, and  
thereby asserting both of the Output Enable (OE) inputs  
of the SN74LS244 Data Bus buffer (U3). This “ORing” of  
the -INTR and -INTA signals is used to insure that only the  
peripheral device requesting the interrupt is the one that  
receives the service (e.g., responsive to the asserted  
-INTA signal). Once both -OE inputs of U3 are asserted,  
the data, applied at the input of this device (U3) will now  
appear at the output of this device, and at the D7 - D0  
inputs of the 8228 device (U2). Please note that, in this  
Table 10. 8080A and 8085 CPU Restart Instructions  
Used With Vectored Interrupts  
Therefore, once the CPU receives the op-code for one of  
these RESTART instructions, it will begin executing this  
instruction by loading the Program Counter will the  
appropriate “Restart Address”. Afterwards, program  
control will be branched to the “Restart Address” location.  
example, the value “E7 ” is hard-wired into the input of  
U3. This value is the op-code for the “RST 4” command.  
16  
For Example:  
If the op-code “E7 ” is loaded onto the Data Bus during  
Hence, once this data is gated into the CPU module, via  
16  
the -INTA cycle, this op-code corresponds with the “RST  
the data bus, the CPU will load 0020 into its Program  
16  
4” command and, the CPU will load 0020 into the  
Program Counter and program control will branch to that  
location in memory (see Table 10).  
Counter and branch program control to that location. The  
Interrupt Service Routine for the DUART exists at this  
location in memory.  
16  
Rev. 2.11  
29  
XR88C681  
U1  
Vcc  
U4  
INTE  
INT  
U5  
-INTR  
U6  
V
cc  
U3  
DBIN  
-OE1 -OE2  
8080A CPU  
XR88C681  
DUART  
U2  
DI0  
DI1  
DI2  
DI3  
DI4  
DO0  
D0  
D1  
D2  
D3  
D4  
DO1  
DO2  
DO3  
DO4  
DO5  
DO6  
DO7  
8228  
DI5  
DI6  
Bi-Directional  
BUS Driver  
D5  
D6  
D7  
DI7  
SN74LS244  
INTA  
Figure 7. Circuit Schematic depicting approach to Interface the XR88C681 DUART  
to the 8080A CPU, for “External” Vectored Interrupt Processing  
(Interrupt Service Routine resides at 0020 in Memory)  
16  
Since the 8080A CPU can support up to 8 different RST  
instructions, it can support up to different  
of the advancements that were made in the transition  
from the 8080A to the 8085 include combining the Clock  
Generator functions of the 8224 onto the CPU chip,  
adding a non-maskable interrupt request, adding 3  
“direct” interrupt request input pins, and adding some  
form of interrupt priority. The 8085 still requires some glue  
logic in order to produce the Control Bus signals (i.e.,  
-IOR, -IOW, -MEMR, -MEMW). Further, in order to  
minimize pin count, the 8085 contains a multiplexed  
Address/Data Bus (AD0 - AD7). Specifically, the lower 8  
bits of the Address Bus share pins with the 8 bit Data Bus.  
Hence, a 74LS373 8-bit latch is needed in order to  
demultiplex the Address and Data buses.  
8
interrupt-driven peripheral devices. This can be achieved  
by replicating the approach, presented in Figure 7, and  
by hardwiring the op-codes for each of the RESTART  
instructions to the inputs of the Data Buffers (see  
Table 10).  
These Data Buffers should be enabled only during the  
-INTA cycle, and only when their associated peripheral  
requested the interrupt service.  
C.6.1.3 8085 Microprocessor  
The 8085 CPU is another early Intel microprocessor,  
although it is more advanced than the 8080A CPU. Some  
Rev. 2.11  
30  
XR88C681  
Figure 8 presents a schematic of the 8085 CPU Module.  
D0  
D1  
AD0  
AD1  
AD2  
AD3  
AD4  
D2  
D3  
D4  
AD5  
D5  
D6  
D7  
X1  
AD6  
AD7  
X2  
1Q  
2Q  
3Q  
1D  
2D  
3D  
4D  
5D  
6D  
7D  
8D  
C
A0  
A1  
TRAP  
A2  
A3  
A4  
RST 7.5  
4Q  
5Q  
6Q  
RST 6.5  
RST 5.5  
A5  
A6  
INTR  
7Q  
8Q  
A7  
-INTA  
ALE  
74LS373  
A8  
A9  
A8  
A9  
A10  
A11  
A10  
A11  
-IOR  
A12  
A12  
A13  
A13  
A14  
-MEMR  
A14  
A15  
A15  
-IOW  
-IO/M  
-RD  
-WR  
-MEMW  
8085 CPU  
Figure 8. A Schematic of the 8085 CPU Module  
Figure 9 illustrates an approach to interfacing the  
XR88C681 DUART to the 8085 CPU module. Note that  
the XR88C681 DUART, in this case, is memory mapped  
(e.g., the signals -MEMR and -MEMW of the CPU module  
are connected to the -RD and -WR pins of the DUART).  
However, the user could have just as easily connectedthe  
XR88C681 device to the CPU module’s I/O port (e.g, the  
signal -IOR and -IOW of the CPU module are connected  
to the -RD and -WR pins of the DUART, respectively).  
Rev. 2.11  
31  
XR88C681  
AD0 - AD7  
D0 - D7  
A0 - A3  
A0 - A3  
-CS  
1D - 8D  
1Q - 8Q  
X1  
-CS_DUART  
A4 - A7  
ALE  
X2  
C
74LS373  
TRAP  
RST 7.5  
A8 - A15  
RST 6.5  
RST 5.5  
INTR  
Address  
Decoder  
-RD  
-INTA  
A8 - A15  
-WR  
-IO/M  
-RD  
-MEMR  
-MEMW  
XR88C681  
-CS_OTHER_IC  
-WR  
8085 CPU  
Figure 9. Schematic of the XR88C681 Interface to the 8085 CPU Module (Memory Mapped).  
The DUART’s -INTR pin was deliberately omitted from  
Figure 9, because its use will be addressed in Figure 10  
and Figure 11.  
(TRAP). When discussing interfacing for the interrupt  
servicing of peripheral devices such as the DUART, we  
are only concerned with the maskable interrupt request  
inputs. Of the four maskable interrupt request inputs;  
three of these inputs support “Direct Interrupt”  
8085 CPU Module Interrupt Structure  
processing.  
The remaining one interrupt request  
The 8085 CPU supports both Direct and “External”  
Vectored Interrupt processing. The 8085 has 4 maskable  
interrupt request inputs (RST 5.5, RST 6.5, RTS 7.5, and  
INTR), and 1 non-maskable interrupt request input  
supports “External Vectored Interrupt” processing.  
Table 11 lists these Interrupt Request inputs and their  
characteristics/features.  
Rev. 2.11  
32  
XR88C681  
Input Name  
Trigger  
Priority  
Type  
Acknowledge  
Address (Hex)  
Signal?  
RST 7.5  
RST 6.5  
RST 5.5  
INTR  
Positive Edge Triggered  
High Level Until Sampled  
High Level Until Sampled  
High Level Until Sampled  
2
3
4
5
Direct  
Direct  
None  
003C  
0034  
None  
Direct  
None  
002C  
External Vectored  
-INTA = “Low”  
See Table 10  
Table 11. 8085 CPU Maskable Interrupt Request Inputs and their Features  
Direct Interrupts  
prioritization scheme no longer applies to that particular  
interrupt. Consequently, it is possible that an RST 5.5  
interrupt request could “interrupt” the interrupt service  
routine for the higher priority RST 7.5 interrupt request.  
Therefore, the user must guard against this phenomenon  
in his/her firmware.  
The 8085 CPU inputs RST 7.5, RST 6.5, and RST 5.5 are  
“Direct Interrupt” request inputs. Specifically, if any of  
these inputs are asserted, then the program counter of  
the CPU is, upon completion of the current instruction,  
automatically loaded with  
a
memory location  
(pre-determined by the circuitry within the 8085 device),  
and branches program control to that location. These  
“Direct” interrupts do not provide the peripheral device  
with any sort of “Interrupt Acknowledge”. Hence,  
according to Table 11, if the RST 7.5 input were asserted,  
Table 11 also indicates that the 8085 CPU will support  
“external” vectored interrupts.  
The manner and  
commands that are used in external vectored interrupt  
processing are identical to that presented for the 8080  
CPU (see Section C.6.1.2).  
the value “003C ” would be loaded into the program  
16  
Figure 10 and Figure 11 present two different  
approaches that can be used to interface the XR88C681  
DUART to the 8085 CPU.  
counter of the CPU, and program control would branch to  
that location in memory. The user is responsible to insure  
that the correct interrupt service routine begins at that  
location in memory.  
Figure 10 presents a schematic where the DUART will  
request a “Direct” RST 6.5 Interrupt to the 8085 CPU. In  
this case, the Interrupt Service Routine for the DUART  
The 8085 CPU offers interrupt prioritization, within the set  
of Maskable Interrupts. This priority is reflected Table 11.  
It should be noted that these priority levels only apply to  
“pending” interrupt request. Once a particular interrupt  
has “left the queue” and is being serviced by the CPU, this  
must begin at 0034 in system memory. This is a very  
16  
simple interface technique, because there is no “Interrupt  
Acknowledge” signal to route and interface.  
Rev. 2.11  
33  
XR88C681  
V
cc  
-INTR  
RST 6.5  
AD0 - AD7  
D0 - D7  
A0 - A3  
D
C
Q
ALE  
A7 - A4  
74LS373  
Address Decoding  
Logic  
A15 - A8  
-CS  
-IOR  
-IO/M  
-RD  
-RD  
-MEMR  
-WR  
-WR  
-IOW  
XR88C681  
-MEMW  
8085 CPU  
Figure 10. The XR88C681/8085 CPU Interface for Direct Interrupt Processing  
(Interrupt Service Routine is located at 0034 in System Memory)  
16  
Figure 11 presents a schematic where the DUART will request a “External-Vectored” Interrupt to the 8085 CPU. In this  
case, the Interrupt Service Routine for the DUART must begin at 0020 in system memory.  
16  
Rev. 2.11  
34  
XR88C681  
Vcc  
U1  
U4  
U5  
INTR  
-INTA  
-INTR  
U6  
Vcc  
U3  
8085 CPU  
-OE1 -OE2  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
DO0  
AD0  
AD1  
AD2  
AD3  
AD4  
AD5  
AD6  
AD7  
DI0  
DI1  
DI2  
DI3  
DI4  
DI5  
DI6  
DO1  
DO2  
DO3  
DO4  
DO5  
DO6  
XR88C681  
DI7  
DO7  
SN74LS244  
A0  
A1  
A2  
A3  
1Q  
2Q  
3Q  
4Q  
5Q  
6Q  
1D  
2D  
3D  
4D  
5D  
6D  
7D  
8D  
C
A4  
A5  
A6  
A7  
7Q  
8Q  
ALE  
74LS373  
Figure 11. The XR88C681/8085 CPU Interface for Vectored Interrupt Processing (In-  
terrupt Service Routine is located at 0020 in system memory)  
16  
C.6.1.4 68HC11 Microcontroller  
Motorola manufactures a family of microcontrollers, referred to as the MC68HC11 microcontrollers. This family of  
microcontrollers offers some of the following amenities:  
D 5 Multi-Function Parallel Ports  
D ROM or EPROM  
D RAM  
D A/D Converter  
Rev. 2.11  
35  
XR88C681  
Figure 12 presents the block diagram of the MC68HC11 C.  
MODA  
MODB  
XTAL EXTAL E  
-IRQ -XIRQ -RESET  
Oscillator  
Interrupt  
Logic  
Mode Control  
Clock Logic  
RAM 256 Bytes  
CPU Core  
VRH  
VRL  
Timer  
System  
Bus Expansion  
Address  
Address/Data  
SPI  
SCI  
A/D Converter  
Strobe and Handshake Parallel I/O  
8
Control  
Control  
Port D  
Port A  
Port C  
Port B  
Port E  
Figure 12. Block Diagram of the MC68HC11 Microcontroller  
The 68HC11 can be configured to operate in a “Single  
Chip” Mode or in an “Expanded Multiplexed Bus” mode. If  
a device is configured to operate in the “Single Chip”  
mode, the entire 64K bytes of Address space is internal to  
the C IC. Please note that this does not mean that there  
is 64K bytes of memory, or other addressable portions  
within the device. A 68HC11 MCU configured for “Single  
Chip” mode operation cannot address any components  
external to the MCU. Therefore, if a user desired to  
interface the DUART to this C, then the C must operate  
in the “Expanded-Multiplexed” mode. The MC68HC11 is  
configured into the Expanded Multiplexed mode by tying  
both the MODA and MODB pin to Vcc, and then resetting  
the device.  
The MC68HC11 consists of 5 different multi-function  
parallel ports. Each of these ports are briefly discussed.  
Port A  
Port A consists of 3 input pins, 4 output pins and 1  
bi-directional pin. This port is used to support the Timer  
System. One of the input pins can be used for the Pulse  
Rev. 2.11  
36  
XR88C681  
Accumulator. Three of the input pins support input  
capture functions; and four of the output pins support  
output compare functions.  
IRQ  
This is the “maskable” interrupt request input. If this input  
is asserted (e.g., toggled “low”), then the 68HC11 C will  
branch program control to FFF2, FFF3 in system memory  
(on-chip ROM). The user is responsible for insuring that  
the appropriate interrupt service routine resides at this  
location in memory.  
Port B  
Port B consists of 8 output pins. If the 68HC11 C is  
operating in the single chip mode, this port functions as a  
general purpose output port. However, if the 68HC11 is  
operating in the expanded-multiplexed mode, then this  
port will function as the upper address byte for  
memory/peripheral device interfacing (A8 - A15).  
AS/STRA  
AS or “Address Strobe” can be used to demultiplex the  
address/data bus of Port C. This pin is at a logic “high”  
during the first half of a memory cycle; and at a logic “low”  
during the second half of a memory cycle.  
Port C  
Port C consists of 8 bi-directional pins. When the 68HC11  
is operating in the single-chip mode, this port functions as  
a general purpose bi-directional port. However, if the  
68HC11 is operating in the expanded-multiplexed mode  
then this port will function as the multiplexed address/data  
bus (AD0 - AD7). Specifically, during the first half of a  
memory cycle, this port will function as the lower address  
byte (Port B is the upper address byte) for addressing  
memory devices and peripheral components. During the  
second half of the memory cycle, this port will function as  
If the 68HC11 is intended to operate in the  
expanded-multiplexed mode and interface to more than  
256 bytes of addressable memory space, then both Ports  
B and C are required as shown in Figure 13. Figure 13  
also illustrates how the XR88C681 DUART could be  
connected to the 68HC11 C for interrupt driven  
operation. If the DUART requests an interrupt, its active  
low -INTR pin will be asserted (toggle low), which will, in  
turn, cause the -IRQ pin of the CPU to be asserted. When  
this occurs the C will continue executing its current  
instruction. After completion of this instruction, program  
control will shift to location FFF2, FFF3 in system  
memory. The user is responsible to insure that the  
DUART’s interrupt service routine resides at this location  
the bi-directional data bus.  
demultiplexed via the use of the AS (Address Strobe) pin  
and a 74LS373 latch device.  
This port can be  
Port D  
Port D consists of 8 bi-directional pins. However, this port  
can be configured to support the on-chip Serial Peripheral  
Interface (SPI), and Serial Communications Interface  
(SCI).  
in memory.  
The C will not issue an interrupt  
acknowledge signal to the DUART. Instead, the C will  
just processes through the interrupt service routine.  
Once the C has eliminated the cause(s) of the DUART’s  
interrupt request, the -INTR pin will be negated and the C  
will return from the Interrupt Service Routine and resume  
normal processing.  
Port E  
Port E consists of either 4 or 8 inputs (depending upon the  
packaging option). This port can be configuredto function  
as a general purpose input or as the inputs to the on-chip  
A/D converter.  
One more point should be mentioned about Figure 13.  
The glue-logic circuitry required to generate the -WR,  
-RD, and the RESET signals for the DUART, from the  
-R/W, -RESET, and E clock presented in Figure 2. This  
circuitry has also been included in Figure 14.  
There are numerous other pins that are pertinent for  
interfacing to the XR88C681 DUART device. Some of  
these pins are discussed here.  
Rev. 2.11  
37  
XR88C681  
to other ICs  
5V  
E
-R/W  
MODA  
Address  
Decoder  
A8 - A15  
-CS  
-RD  
MODB  
-WR  
-IRQ  
-INTR  
A4 - A7  
G
D
AS  
Q
A0 - A3  
D0 - D7  
A0 - A3  
74HC373  
AD0 - AD7  
68HC11  
XR88C681  
Figure 13. XR88C681/MC68HC11 Microcontroller Interfacing Approach  
Rev. 2.11  
38  
XR88C681  
-R/W  
-WR  
E clock  
-RD  
-RESET  
RESET  
Figure 14. Glue Logic Circuitry Required to Interface the MC68HC11 C to the XR88C681 DUART  
C.6.1.5 Z-80 CPU  
be served. When the DUART has received (or detected)  
the IACK signal, it will, in response, place the contents of  
the Interrupt Vector Register (IVR) on the Data Bus. The  
CPU will read this “interrupt vector” information; and  
determine the following two things (based on the  
“interrupt vector” information).  
The Z-80 CPU can be interfaced to a DUART operating in  
the I-Mode, if it (the CPU) is operating in Interrupt Modes 0  
or 1. However, for the sake of “process or continuity”, the  
details associated with the Z-80 CPU will be presented in  
Section C.6.2.1.  
D The source of the interrupt request (e.g., which pe-  
ripheral needs service).  
D The appropriate location of the interrupt service rou-  
tine.  
C.6.2 Z-Mode Interrupt Servicing  
The DUART will be in the I-Mode following power up or a  
hardware reset of the IC. The user must invoke the “Set  
Z-Mode” command (see Table 3), in order to command  
the DUART into the Z-Mode. In general, a CPU  
interfacing to a DUART operating in the Z-Mode will  
function as follows during interrupt servicing.  
Afterwards, program-control will be branched to the  
location of the interrupt service routine.  
Another characteristic of Z-Mode operation is that it  
allows the user to prioritize the interrupt requests from  
numerous peripheral devices, via hardware means. Let  
us suppose that we have several DUART devices; and  
that each of these devices have been configured to  
operate in the Z-Mode. The user could prioritize the  
interrupt request of each of these devices by connecting  
these devices in a “daisy-chain” in a manner as presented  
in Figure 15.  
If the DUART requests interrupt servicing from the CPU, it  
will assert the -INTR pin (e.g., toggle “low”). Once the  
CPU has detected the interrupt request, it will issue an  
IACK (Interrupt Acknowledge) signal back to the DUART.  
When the CPU sends the IACK signal to the DUART it is  
informing the DUART that its interrupt request is about to  
Rev. 2.11  
39  
XR88C681  
V
CC  
-INT  
-INTR  
-IACK  
-INTR  
-IACK  
-INTR  
-INTR  
-IACK  
V
CC  
IEI  
IEO  
IEI  
IEO  
IEI  
IEO  
IEI  
IEO  
CPU  
-IACK  
-IACK  
HIGHEST  
LOWEST  
PRIORITY  
Figure 15. A Diagram of Numerous DUARTs Configured in an Interrupt  
Daisy Chain (for Z-Mode Operation)  
In addition to the -INTR and -IACK pins, the Z-Mode  
DUART also uses the IEI and IEO pins; which are defined  
as follows:  
D An interrupt, requested by the device, has just been  
serviced  
If any of these conditions are false, then the IEO pin will be  
at a logic “low”.  
Note:  
IEI - Interrupt Enable Input  
Once the IEO pin has toggled “low”, and the CPU has ac-  
knowledged the interrupt request and has completed the inter-  
rupt service routine, the IEO pin will remain “low” until the user  
invokes the “RESET IUS” command (see Table 3). Therefore,  
if the DUART is going to operate in the Z-Mode, the user must  
include the “RESET IUS” Command at the very end of the  
DUART interrupt service routine.  
This active-high input is only available if the DUART is  
configured to operate in the Z-Mode. If this input is at a  
logic “high” then all unmasked interrupt requests, from  
this DUART, are enabled.  
Note:  
Those interrupts which have been masked out by the IMR are  
still disabled. However, if this input is at a logic “low”, then all  
interrupts (whether masked or unmasked) are disabled.  
Hence, IEI can act to globally disable all DUART interrupt  
requests.  
System Level Application of the IEI and IEO pins  
Figure 15 depicts a series of DUARTs connected in a  
daisy-chain fashion. In this figure, the left-most DUART  
has the highest interrupt priority. This is because this  
DUART’s IEI input is hardwired to Vcc. Therefore, the  
unmasked interrupt requests, from this DUART are  
always enabled. The DUART device, located just to the  
right of the “highest interrupt priority” device is of a lower  
interrupt priority. This is because the IEI input of this lower  
priority device is connected to the IEO output of the  
highest priority DUART. Whenever the “highest priority”  
device requests an interrupt, its IEO output will toggle  
“low”. This will in turn, disable the “lower priority” device  
IEO - Interrupt Enable Output  
This active-high output is only available if the DUART is  
configured to operate in the Z-Mode. This output is often  
times connected to the IEI input of another (lower priority)  
device. This output is “high” if all of the following  
conditions are true.  
D The device’s IEI input is at a logic “high”  
D The device is not requesting an interrupt from the  
CPU  
Rev. 2.11  
40  
XR88C681  
from issuing any interrupt requests to the CPU. This  
“lower priority” DUART will be prohibited from issuing  
interrupts until the IEO pin of the “highest priority” DUART  
has toggled “high”.  
right most DUART has the lowest-interrupt priority  
because its “interrupt request” capability can be disabled  
by the actions of any one of the DUARTs to the left.  
Figure 16 presents a timing diagram depicting the  
sequence of events that will occur during and following an  
Interrupt Request from the DUART.  
Referring, once again, to Figure 15, the further to the right  
a DUART device is, the lower its interrupt priority. The  
-INTR  
-IACK  
-RD  
D0 - D7  
IEI  
FLOAT  
NOT VALID  
VECTOR  
FLOAT  
IEO  
Reset IUS  
Command  
Figure 16. Timing Diagram Illustrating the Sequence of Events Occurring Between the  
DUART and the CPU During an Interrupt Request/Acknowledge and Servicing  
Additional Things to Note About Z-Mode Operation  
D 8086 P  
D 80286 - 80586 P  
Please note that it is possible to interface the 80X86  
Family of microprocessors to an I-Mode DUART,  
however, additional components and design complexity  
would be required in order to accomplish this. The  
technique/approaches to interfacing the Z-Mode DUART  
to these microprocessors is presented in detail, in the  
following sections.  
Z-Mode operation is supported by all Zilog Peripheral  
components. All Zilog Peripheral components have an  
Interrupt Vector Register, Interrupt Acknowledge (IACK)  
input, IEI input, and an IEO output. Therefore, Figure 15  
could have easily included some other peripheral  
components, in addition to or in lieu of DUARTs.  
As mentioned earlier, Z-Mode operation is recommended  
if the DUART is to be interfaced to the following  
processors.  
C.6.2.1 Z-80 Microprocessor  
The Z-80 P consists of an 8 bit Data Bus, a 16 bit Address  
Bus and numerous control pins. The Z-80 P is a very  
flexible processor which can actually interface to either a  
Z-Mode or an I-Mode DUART device. This is because the  
D Z-80 Microprocessor (Interrupt Mode 2)  
D 8088 C  
Rev. 2.11  
41  
XR88C681  
Z-80 P can be configured to operate in one of three  
different “interrupt modes”. The Z-80 is also a little bit less  
complicated to interface to (than some of the P/ Cs  
previously mentioned) because its address and data bus  
are not multiplexed. Figure 17 presents a schematic of  
the pin out of the Z-80 P.  
A11  
1
40  
A10  
A9  
A12  
A13  
A14  
A15  
2
3
4
5
39  
38  
37  
A8  
A7  
36 A6  
PHI  
D4  
35  
34  
33  
32  
31  
30  
29  
6
7
A5  
A4  
D3  
8
9
A3  
A2  
D5  
D6  
A1  
10  
11  
Z80 CPU  
V
A0  
CC  
D2 12  
GND  
D7  
D0  
13  
14  
28 -RFSH  
-M1  
27  
26  
25  
24  
23  
D1 15  
-RESET  
-BUSRQ  
-WAIT  
16  
-INT  
-NMI  
17  
18  
19  
-HALT  
-BUSAK  
-MREQ  
22  
21  
-WR  
-RD  
-IORQ  
20  
Figure 17. Pin Out of the Z80 CPU Device  
The Z-80 CPU will support Read/Write operations  
(I/O Port Read), -IOW (I/O Port Write) or -IACK/-INTA  
(Interrupt Acknowledge) pins. Each of these functions  
can be derived from the -RD, -WR, -IORQ, -MREQ and  
-M1 pins. Figure 18 presents a schematic of the Z-80  
CPU Module, which shows how once can extract the  
control bus signals from these CPU control pins.  
between memory and I/O. The Z-80 does require some  
additional glue logic in order to interface directly to  
memory and peripheral devices. For instance, the Z-80  
CPU device does not come with the control bus signals:  
-MEMR (Memory Read), -MEMW (Memory Write), -IOR  
Rev. 2.11  
42  
XR88C681  
GND  
+5V  
A0 - A15  
D0 - D7  
Clock input  
PHI  
-INT  
-NMI  
-MEMW  
-WAIT  
-WR  
-RD  
-BUSRQ  
-MEMR  
-IOW  
-HALT  
-MREQ  
-IORQ  
-RFSH  
-BUSAK  
-IOR  
-M1  
-INTA  
-RESET  
Figure 18. Schematic of Z-80 CPU Module  
Z-80 CPU Interrupt Servicing Capability  
Each of these interrupt modes use the -INT pin of the Z-80  
CPU and will be discussed in the following sections.  
The Z-80 CPU contains two interrupt request pins: -NMI  
and -INT. -NMI is the “Non-Maskable” interrupt request  
input pin; and -INT is the “Maskable” interrupt request  
input pin. For the sake of interfacing to the DUART, we are  
only concerned with the -INT pin.  
External Vectored Interrupt Processing (Interrupt  
Mode 0)  
The Z-80 P will operate in this interrupt mode if the “IM 0”  
instruction has been executed. Whenever the -INT pin is  
asserted by a peripheral device requesting an interrupt,  
the CPU will complete its current instruction. After  
completion of this instruction, the CPU module will assert  
-INTA (toggle “low”). -INTA is the active-low “Interrupt  
Acknowledge” signal that the CPU module outputs in  
order to initiate the process of interrupt servicing. When  
the Z-80 CPU operates in the Interrupt Mode 0, it is  
The Z-80 CPU can be configured to operate in one of  
three different interrupt modes:  
D External Vectored  
D Direct  
D “Peripheral” Vectored  
Rev. 2.11  
43  
XR88C681  
awaiting “vector information” on the Data Bus, following  
the assertion of -INTA. In this case (for this interrupt  
mode), this “vector” information is the op-code for one of  
the RESTART instructions (RST). The Z-80 CPU  
supports up to eight different RST instructions (RST0 -  
RST38H). These instructions are one-byte calls to  
specific locations within the CPU’s memory space, where  
the appropriate Interrupt service routine resides.  
Table 12 presents a list of these RESTART instructions,  
the op-codes and the corresponding RESTART  
addresses.  
the DUART is operating in the I-Mode and that the Z-80 is  
operating in Interrupt Mode 0.  
Direct Interrupt Processing (Interrupt Mode 1)  
The Z-80 P will operate in this interrupt mode if the “IM 1”  
instruction has been executed. Whenever the -INT pin is  
asserted by a peripheral device requesting an interrupt,  
the CPU will complete its current instruction. Afterwards,  
the program counter will automatically be loaded with a  
memory location (pre-determined by the circuit design of  
the Z-80 CPU device) and program control will be  
branched to that location in system memory. In this case,  
Op-Code (hex)  
Mnemonic  
Restart  
program control would branch to 0038 in memory. The  
16  
Address (hex)  
user is responsible for insuring that the appropriate  
interrupt service routine is at that particular location in  
memory. The Z-80 CPU module does not provide the  
C7  
CF  
D7  
DF  
E7  
EF  
F7  
FF  
RST 0  
RST 08  
0000  
0008  
0010  
0018  
0020  
0028  
0030  
0038  
peripheral device with any sort of  
“Interrupt  
RST 10  
Acknowledge”. The CPU just processes through the  
Interrupt Service Routine, eliminates the cause(s) of the  
interrupt request and returns to normal operation.  
RST 18  
RST 20H  
RST 28H  
RST 30H  
RST 38H  
Peripheral Vectored Interrupt Processing  
(Interrupt Mode 2)  
The Z-80 P will operate in this interrupt mode if the “IM 2”  
instruction has been executed. This interrupt “mode” is  
very useful if the user wishes to connect the interrupt  
request outputs of several peripherals to the one -INT  
input of the Z-80 CPU. This interrupt mode allows the  
interrupting device to identify itself at a certain time, just  
prior to interrupt servicing.  
Table 12. Z-80 CPU Restart Instructions  
Used with Vectored Interrupts  
Therefore, once the CPU receives the op-code for one of  
these RESTART instructions, it will begin executing this  
instruction by loading the Program Counter with the  
appropriate “Restart” Address. Afterwards, program  
control will be branched to the “Restart Address” location.  
Whenever the -INT pin is asserted by a peripheral device  
requesting an interrupt, the CPU will continue to complete  
its current instruction. Once this current instruction is  
completed, the CPU Module will assert the -INTA signal to  
inform the peripheral device that interrupt service is about  
to begin. Once the interrupting peripheral device has  
detected the -INTA pulse, it will place an “interrupt vector”  
on the Data Bus. This interrupt vector will be read by the  
CPU and the CPU will branch program control to the  
location (referred to by the interrupt vector). Please note  
that if the IEI input to the DUART (or Zilog peripheral  
device) is “low” then the DUART (or Zilog peripheral  
device) will be disabled from generating any interrupt  
requests to the CPU.  
For Example:  
If the op-code E7 is loaded onto the Data Bus during the  
16  
-INTA cycle, this op-code corresponds with the RST 20H  
instruction and, the CPU will load 0020 into the program  
16  
counter and program control with branch to that location  
in memory (see Table 12). The user is responsible for  
insuring that the interrupt service routine begins at this  
location in memory.  
An example of a circuit realizing this form of interrupt  
processing, while interfacing to the DUART, is presented  
in Section C.6.1.2. This section discusses interfacing the  
DUART to the 8080A CPU Module. This exact same  
approach could be used with the Z-80 CPU, provide that  
An example of this approach is presented Figure 19. In  
this case the XR88C681 DUART is configured to operate  
in the Z-Mode and is interfaced to the Z-80 CPU. When  
the DUART requires interrupt servicing, it will assert its  
Rev. 2.11  
44  
XR88C681  
-INTR output. This action will, in turn, cause the -INT input  
of the CPU to be asserted. Once the CPU has completed  
its current instruction, the CPU Module will assert the  
-INTA signal. This will in turn assert the -IACK (Interrupt  
Acknowledge) input to the DUART. The purpose of the  
asserted -IACK signal is to inform the DUART that the  
very next cycle will be an “IACK” or “Interrupt  
Acknowledge” cycle. DUART, in response to the -IACK  
signal, will place the contents of the Interrupt Vector  
Register (IVR) on the Data Bus. This data will be read by  
the CPU, and program control will be branched to the  
appropriate interrupt service routine. In the case of the  
Z-80 CPU, this location is a 16 bit address which is  
determined from Table 13.  
Most Significant Byte  
Least Significant Byte  
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0  
Contents of the I Register (within the CPU)  
The 7 Most Significant Bits within the Interrupt Vector  
Register of the DUART  
0
Note: The LSB of the IVR is always set to “0” once read by the CPU. Interrupt Service Routines must begin at even ddresses.  
Table 13. The Relationship between the Contents of the Interrupt Vector Register (of the DUART)  
and the location of the Interrupt Service Routine (Z-80 CPU)  
Additionally, the user must be aware of the contents that he/she loads into the I Register of the CPU, during run time.  
from Vcc or higher  
IEI  
priority peripheral  
Address  
Decoder  
Circuitry  
A0 - A15  
to lower priority  
peripheral  
IEO  
-CS  
CS_DUART  
A0 - A3  
A0 - A3  
D0 - D7  
D0 - D7  
-INT  
-INTR  
-WR  
-RD  
-MEMW  
-WR  
-RD  
-MEMR  
-MREQ  
-IORQ  
M1  
-INTA  
-IACK  
Z80 CPU  
XR88C681  
Figure 19. Schematic of an Approach to Interface the DUART to the Z-80  
CPU (for Z-Mode Operation)  
Rev. 2.11  
45  
XR88C681  
C.6.2.2 8086 Microprocessor  
The 8086 microprocessor is a 16 bit microprocessor manufactured by Intel Corporation. Figure 20 presents the pin out  
diagram of this IC. Please note that in Figure 20, pins 24 - 31 have some additional labels, located off to the right of the  
package. These additional labels will be explained later in this text.  
GND  
AD14  
AD13  
AD12  
AD11  
1
2
3
4
5
40  
39  
38  
37  
V
CC  
AD15  
A16/S3  
A17/S4  
36 A18/S5  
35  
AD10  
AD9  
6
7
A19/S6  
-BHE/S7  
34  
33  
32  
AD8  
AD7  
AD6  
AD5  
AD4  
AD3  
8
9
MN/MX  
-RD  
31 -RQ/-GT0  
(HOLD)  
(HLDA)  
(-WR)  
10  
11  
12  
13  
14  
15  
16  
8086 CPU  
-RQ/-GT1  
-LOCK  
30  
29  
28 -S2  
27 -S1  
(M/-IO)  
(DT/-R)  
AD2  
AD1  
AD0  
NMI  
26  
25  
24  
23  
-S0  
(-DEN)  
(ALE)  
QS0  
17  
QS1  
(-INTA)  
INTR 18  
-TEST  
19  
20  
CLK  
22  
21  
READY  
RESET  
GND  
Figure 20. Pin Out of the 8086 Microprocessor Device  
Intel went to great lengths to keep the pin count of this IC  
low by multiplexing the functions of many of these pins.  
This device consists of a 16 bit Data Bus and a 20 bit  
Address Bus. The Data Bus is multiplexed with the lower  
16 Address Bits (A0 - A15) to form AD0 - AD15. Address  
Bits A16 - A19 are multiplexed with status bits S3 - S6 to  
form A16/S3, A17/S4, A18/S5 and A19/S6. All of these  
pins are address lines during the first half of a memory  
cycle. However, during the second half of a memory  
cycle, these pins then take on their alternate functions  
Rev. 2.11  
46  
XR88C681  
(e.g., AD0 - AD15 becomes D0 - D15, A16/S3 - A19/S6  
becomes S3 - S6). A second group of multiplexed pins is  
controlled by the MN/-MX input pin. When this pin is high,  
the “min” mode is selected and pins 24 through 31 take on  
the control definitions shown under the MN/-MX = 1  
column in Table 14. When the 8086 P operates in this  
mode, it presents a control bus very similar to that of the  
8085 P, and requires only an address latch and a clock  
generator to form a CPU module.  
Pin Number  
MN/-MX = 1 (Min Mode)  
HOLD  
MN/-MX = 0 (Max Mode)  
24  
25  
26  
27  
28  
29  
30  
31  
-RQ/-GT0  
-RQ/-GT1  
-LOCK  
-S2  
HLDA  
-WR  
M/-IO  
DT/R  
-DEN  
ALE  
-S1  
-S0  
QS0  
-INTA  
QS1  
Table 14. MN/-MX Mode and Function of Pins 24-31 of 8086 CPU Device.  
When MN/-MX is low, the 8086 P is operatingin the “max”  
request input; and INTR is the “maskable” interrupt  
request input. If the 8086 P is operating in the “min”  
mode, then the -INTA (Interrupt Acknowledge) pin is  
available on Pin 24 (see Figure 20). However, if the  
8086 P is operating in the “max” mode, then the -INTA  
signal must be derived from the -S0, -S1, and -S2 pins via  
the 8288 bus controller. Table 15 presents the processor  
status and 8288 active outputs based on the -S0, -S1, and  
-S2 “max” mode status signals.  
mode. This mode is intended for more complex  
applications in which the 8086 P requires support from  
the 8087 numeric data processor (NDP). In this mode, a  
special bus controller (the 8288) is required to generate  
the memory and I/O control bus signals.  
The 8086 P contains two interrupt request inputs: INTR  
and NMI. NMI is the active-high “non-maskable” interrupt  
-S2  
0
-S1  
-S0  
0
Processor State  
Interrupt Acknowledge  
Read I/O Port  
Write I/O Port  
Halt  
8288 Active Output  
-INTA  
0
0
0
1
1
0
0
1
-IORC  
0
0
-IOWC  
0
1
None  
-MRDC  
1
0
Code Access  
Read Memory  
Write Memory  
Passive  
1
1
-MRDC  
-MWTC  
None  
1
1
1
0
1
1
Table 15. 8086 Processor State/8288 Bus Controller Active Output as a function of -S0, -S1 and -S2  
Rev. 2.11  
47  
XR88C681  
Figure 21 and Figure 22 present the 8086 CPU Mode, when operating in the “min” and “max” modes, respectively.  
D0 - D7  
AD0 - AD7  
D
Q
A0 - A7  
INTR  
-INTA  
C
74LS373  
D8 - D15  
A8 - A15  
AD8 - AD15  
HOLD  
D
Q
ALE  
C
74LS373  
-DEN  
DT/-R  
-IOR  
M/-IO  
-MEMR  
Vcc  
-RD  
-IOW  
MN/-MX  
-WR  
-MEMW  
8086 CPU  
Figure 21. Schematic of the 8086 CPU Mode (Min Mode)  
Rev. 2.11  
48  
XR88C681  
CLK  
-MRDC  
-MWTC  
-MEMR  
-MEMW  
CLK  
-S0  
-S1  
-S2  
-S0  
-S1  
-IORC  
-IOWC  
-IOR  
-S2  
-IOW  
DEN  
DT/-R  
ALE  
-INTA  
INTR  
8288 Bus Controller  
D0 - D7  
A0 - A7  
AD0 - AD7  
D
C
Q
74LS373  
D8 - D15  
A8 - A15  
AD8 - AD15  
D
C
Q
8086 CPU  
MN/-MX  
74LS373  
Figure 22. Schematic of the 8086 CPU Mode (Max Mode)  
8086 C Interrupt Processing  
determine the location of the interrupt service routine in  
memory. Since this “interrupt vector” is 8 bits wide, the  
8086 P can accommodate up to 256 different interrupt  
vectors (0 - 255). Additionally, since each vector is  
multiplied by “4”, the user is expected to reserve the first  
1K byte of memory for the Interrupt Service  
Routines/Jump Table.  
If a peripheral component requires interrupt service from  
the CPU, it will assert the CPU’s INTR input (by toggling it  
high). Once the CPU has completed its current  
instruction, it will assert the -INTA pin (if operating in the  
“min” mode) or set the -S0, -S1, and -S2 pins to “0” (see  
Table 15). In either case, the -IACK input of the peripheral  
will be asserted. Once this happens, the interrupting  
peripheral is expected to place an “interrupt vector” byte  
on D0 - D7 of the data bus. The 8086 P will read this data  
and multiply this value by the number 4 in order to  
Figure 23 presents a schematic of the XR88C681  
DUART interfacing to a “min” Mode 8086 CPU device.  
Please note that the DUART has been configured to  
operate in the Z-Mode. Therefore, the user must account  
for the IEI input to the DUART device.  
Rev. 2.11  
49  
XR88C681  
D0 - D7  
AD0 - AD7  
D0 - D7  
A0 - A3  
74LS373  
A0 - A3  
Q
D
C
A4 - A7  
AD8 - AD15  
HOLD  
D8 - D15  
-CS  
Address  
74LS373  
Decoder  
A8 - A15  
Q
D
C
ALE  
-IACK  
-INTR  
-INTA  
-DEN  
INTR  
DT/-R  
from higher  
IEI  
priority device  
M/-IO  
V
cc  
-RD  
-MEMR  
-MEMW  
-RD  
MN/-MX  
-WR  
-WR  
8086 CPU  
XR88C681  
Figure 23. Schematic of the XR88C681 DUART Device Interfacing to a  
“Min” Mode 8086 CPU Device  
D. TIMING CONTROL BLOCK  
The Timing Control Block allows to the user to specify the  
bit rates that he/she wishes to transmit and receive data at  
each channel. The Timing Control Block consists of the  
following elements:  
D 16 bit Counter/Timer  
D 4 - External Input Pins (to clock the Transmitters  
and Receivers, directly)  
D Two Clock Select Registers (32:1 MUXs)  
D Oscillator Circuit  
Figure 24 presents a block diagram of the Timing Control  
D Bit Rate Generator  
block for the XR88C681 device.  
Rev. 2.11  
50  
XR88C681  
IP4  
(RXCA)  
IP3  
(TXCA)  
Preset Registers  
(CTUR, CTLR)  
32:1  
TxCA  
MUX  
TXCA  
TXCB  
IP2  
32:1  
RxCA  
MUX  
Counter/  
Timer  
Divide by 16  
ACR[4-6]  
32:1  
TxCB  
MUX  
Divide by 16  
32:1  
RxCB  
MUX  
X1/CLK  
X2  
Bit Rate  
Generator  
Oscillator  
Circuit  
IP5  
IP2  
(TXCB)  
(RXCB)  
ACR[7]  
Figure 24. Block Diagram of DUART Timing Control Block  
Each element of the Timing Control Block is discussed  
here:  
signal, for use by the Bit Rate Generator, and  
Counter/Timer. A crystal or TTL signal frequency of  
between 2 MHz and 4 MHz is required for proper  
operation of the DUART. However, a crystal or TTL signal  
frequency of 3.6864 MHz is required for the generation of  
standard bit rates by the Bit Rate Generator (See  
D.1 Oscillator Circuit:  
A crystal oscillator is typically connected externally  
across the X1/CLK and X2 pins. The Oscillator Circuit  
(within the chip) functions as the load for the resonant  
(crystal) oscillator, and buffers the resulting oscillating  
Table 18).  
Figure 25 presents  
a
recommended  
schematic for the XTAL Oscillator circuitry.  
Rev. 2.11  
51  
XR88C681  
C1: 10pF + (Stray < 5pF)  
C2: 10pF + (Stray < 5pF)  
R1: 100ohm  
R2: 100ohm  
R1  
X1  
C1  
XR88C681  
C2  
R2  
X2  
3.6864MHz  
Parallel Resonant Crystal  
Figure 25. A Recommended Schematic for the XTAL Oscillator Circuitry  
Note: The user also has an option to drive the Oscillator Circuit with a TTL input signal, in lieu of using a crystal oscillator. If this  
approach is used, the TTL must be driven into the X1/CLK pin, and the X2 pin must be left floating.  
If the user desires to run numerous DUARTs from a single crystal oscillator, Figure 26 presents an approach and the  
necessary circuitry to accomplish this objective.  
XR88C681  
X1  
X2  
Y1  
To X1 inputs of  
other DUARTs  
3.684MHz  
74HC14  
Figure 26. A Recommended Schematic to Drive Multiple DUARTs From the Same Crystal Oscillator.  
Note: The user is urged not to use the 74LS14 SchmittTrigger Inverterin lieu ofthe 74HC14 device. The input of the 74LS14 tends to  
load down the oscillating signal from the DUART, to the point that the Schmitt Trigger inverter can no longer change state or  
respond to the oscillator signal.  
Rev. 2.11  
52  
XR88C681  
D.2 Bit Rate Generator  
clock frequencies output from the BRG are at 16 times  
these rates.  
The BRG (Bit Rate Generator) accepts the timing output  
of the Oscillator Circuit and generate the clock signal for  
23 commonly used data communication bit rates ranging  
from 50 bps up to 115.2kbps. Please note that the BRG  
will only generate these standard bit rates if the Oscillator  
Circuit is running at 3.6864 MHz. Additionally, the actual  
The user can select one of two different sets of bit rates, to  
be generated from the BRG. This selection is made by  
setting or clearing ACR[7]. A listing of these sets of Bit  
Rates, from the BRG, is presented in the discussion of the  
Clock Select Registers (CSRs) in Section D.5. A block  
diagram of the BRG circuitry is presented in Figure 27.  
CSRA[7:4]  
RXCA  
TXCA  
RXCB  
32:1 MUX  
CSRA[3:0]  
32:1 MUX  
ACR[7]  
X1/CLK  
X2  
Oscillator  
Circuit  
Bit Rate Generator  
Channels A and B  
CSRB[7:4]  
32:1 MUX  
CSRB[3:0]  
TXCB  
32:1 MUX  
Figure 27. Block Diagram of the Bit Rate Generator portion of the Timing Control Block  
Rev. 2.11  
53  
XR88C681  
D.3 Counter/Timer  
timing sources for the Counter/Timer can be made by  
writing the appropriatedata to ACR[6:4] (Auxiliary Control  
Register bits 6 through 4). Please see Table 16 for the  
relationship between the Counter/Timer mode, the  
Timing Source and ACR[6:4]. The C/T output is available  
to the Clock Select Registers for use as a programmable  
bit rate generator for both Transmitters and Receivers.  
The Timing Control Block also contains a 16 bit  
Counter/Timer (C/T). The C/T is a programmable 16 bit  
down-counter which can use one of several timing  
sources as its input. Figure 28 presents a block diagram  
of the circuitry surroundingthe C/T. The selection of these  
Oscillator  
Circuit  
Preset Registers  
(CTUR, CTLR)  
Divide by 16  
Divide by 16  
to 32:1 MUXs  
IP2  
Counter/Timer  
C/T_RDY  
(OP3)  
TXCA  
TXCB  
ACR[4-6]  
Figure 28. A Block Diagram of the Circuitry Associated with the  
Counter/Timer  
Bit 6  
Bit 5  
Bit 4  
C/T Mode  
Counter  
Counter  
Counter  
Counter  
Timer  
Timing Source  
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
External Input - IP2  
TXCA 1X - Clock of Channel A Transmitter  
TXCB 1X - Clock of Channel B Transmitter  
X1/CLK Input Divided by 16  
External Input - IP2  
Timer  
External Input - IP2, Divided by 16  
X1/CLK Input  
Timer  
Timer  
X1/CLK Input Divided by 16  
Table 16. ACR[6:4] Bit Field Definition - C/T  
Rev. 2.11  
54  
XR88C681  
D.3.1 Timer Mode:  
interrupt generator, if the condition is programmed to  
generate an interrupt via the interrupt mask register  
(IMR). The ISR[3] can be cleared by issuing the  
address-triggered “STOP COUNTER” command (See  
Table 1). In the TIMER mode, however, the command  
does not actually stop the C/T.  
Please note that of the two C/T Modes, the Timer Mode is  
the only mode which is relevant to the function of Bit Rate  
Selection. However, for completeness, the Counter  
Mode is also discussed here.  
In the Timer mode, the C/T acts as a programmable  
divider and generates a square wave whose period is  
twice the value (in clock periods) of the contents of the  
Counter/Timer Registers, CTUR and CTLR. The C/T can  
be used as a programmable bit rate generator in order to  
produce a 16X clock for any bit rate not provided by the  
BRG. The square-wave, originating from the C/T is  
output on Output Port pin, OP3.  
D.3.2 COUNTER MODE  
In the Counter Mode, the C/T counts down the number of  
pulses written into CTUR/CTLR, beginning at the receipt  
of  
COUNTER/READY status bit (ISR[3]) is set upon  
reaching the count of 0000 . The C/T will continue to  
a
“START COUNTER” command.  
The  
16  
count past the 0000 and underflow (with the next count  
16  
If the C/T is programmed to operate in the Timer mode,  
the frequency of the resulting C/T square wave can be  
expressed as follows:  
being FFFF ) until it is stopped by the CPU via a “STOP  
16  
COUNTER” command. If OP3 is programmed to be the  
output of the C/T, the output will remain high until the  
terminal count is reached, at which time the output goes  
low. It then returns to the high state and ISR[3] is cleared  
when the C/T is stopped (via the “STOP COUNTER”  
command). A “START COUNTER” command while the  
counter is running restarts the counter with the values in  
CTUR/CTLR. The CPU may change the contents of  
CTUR or CTLR at any time but the new count takes effect  
only on after the subsequent START COUNTER  
command. If new values are not programmed the  
previous values are preserved and used for the next  
cycle.  
C/T Output Frequency =  
Frequency of Selected Timing Source  
2·([CTUR]·28 [CTLR] )  
Where: [CTUR] = the contents of the CTUR register in  
decimal form  
[CTUR] = the contents of the CTLR register in  
decimal form  
Since the C/T Output is handled as a 16X clock signal by  
the DUART circuitry, the resulting bit rate is 1/16 the  
frequency of the C/T Output signal. Therefore, the bit  
rate, derived from the C/T can be expressed as follows:  
D.4 External Inputs  
The DUART allows for some of the Input Port pins (IP2 -  
IP5) to be used as direct external inputs to the Timing  
Control Block as timing sources for the Transmitters and  
Receivers of both channels. Please note thatthe user can  
specify whether a clock signal, applied to one of these  
external inputs, is a 1X or a 16X clock signal; via the Clock  
Select Registers (see Section D.5). For a more detailed  
discussion on the Input Port pins and their function,  
please see Section E.  
Bit Rate =  
Frequency of Selected Timing Source  
32·([CTUR]·28 [CTLR] )  
The contents of the CTUR and CTLR registers may be  
changed at any time, but will only begin to take effect at  
the next half cycle of the square wave. The C/T begins  
operation using the values in CTUR/CTLR upon receipt of  
the Address-Trigger “START COUNTER” command (See  
Table 1).  
D.5 Clock Select Registers, CSRA and CSRB  
The C/T then runs continuously. A subsequent “START  
COUNTER” command causes the C/T to terminate the  
current timing cycle and begin a new timing cycle using  
the current values stored in CTUR and CTLR. The  
COUNTER READY status bit, in the Interrupt Status  
Register (ISR[3]), is set once each cycle of the square  
wave. This allows the use of the C/T as a periodic  
In Figure 24, the Clock Select Registers are the 32:1  
MUX’s. The Clock Select Registers are the means that  
the user can select which clock signals will drive the  
Transmitters and Receivers of both channels. The CSRs  
allow the user to select the 23 different standard bit rates  
from the BRG, the Counter/Timer output, or to use an  
external input as the timing source for the Transmitters  
Rev. 2.11  
55  
XR88C681  
and Receivers. Table 17 and Table 18 present the relationship between the contents of the CSRs and the clock source  
driving the Transmitters and Receivers.  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Receiver Clock Select  
Transmitter Clock Select  
See Table 18  
See Table 18  
Table 17. Bit Format of the Clock Select Registers, CSRA and CSRB  
Field  
Bit Rate  
CSR[7:4]  
CSR[3:0]  
ACR[7] = 0  
ACR[7] = 1  
X = 0  
50  
X = 1  
75  
X = 0  
75  
X = 1  
0
0
0
0
0
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
50  
110  
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
110  
110  
110  
134.5  
200  
134.5  
134.5  
150  
134.5  
150  
200  
0
0
300  
3600  
300  
3600  
600  
14.4K  
28.8K  
57.6K  
115.2K  
4800  
600  
14.4K  
0
0
1
1
1
1
1
1
1
1
1200  
1050  
2400  
4800  
7200  
9600  
38.4K  
Timer  
1200  
28.8K  
2000  
57.6K  
2400  
115.2K  
4800  
4800  
1800  
1800  
7200  
9600  
9600  
9600  
19.2K  
Timer  
19.2K  
Timer  
External - 16X  
External - 1X  
38.4K  
Timer  
External - 16X  
External - 1X  
External - 16X  
External - 1X  
External - 16X  
External - 1X  
Note: the b suffix denotes a binary expression. x = don’t care value.  
Table 18. Bit Format of the Clock Select Registers, CSR[3:0] and CSR[7:4]  
Please note that Table 18 calls for the user to specify the X - The Select Extend bit  
following parameters:  
D ACR[7] - the most significant bit (MSB) of the Auxil-  
Each transmitter and receiver, within the DUART has an  
extend bit that can be set or cleared by writing the  
appropriate data to the channel’s Command Register.  
Although this information can be found in Table 3.  
Table 19 summarizes these commands, and their effect  
on the Extend bits.  
iary Control Register  
D X - The Extend bit  
ACR[7] is the MSB of the Auxiliary Control Register, and  
can easily be programmed by writing 1xxxxxxxb or  
0xxxxxxxb to the ACR, in order to set or clear,  
respectively.  
Rev. 2.11  
56  
XR88C681  
Register  
Contents  
0816  
Resulting Action  
Command Register A, CRA  
Command Register A, CRA  
Command Register B, CRB  
Command Register B, CRB  
Set Rx BRG Select Extend Bit (X = 1)  
Clear Rx BRG Select Extend Bit (X = 0)  
Set Tx BRG Select Extend Bit (X = 1)  
Clear Tx BRG Select Extend Bit (X = 1)  
0916  
0A16  
0B16  
Table 19. Command Register Controls Over the Extend Bit  
Note: If the user programs either nibble of the Clock Select Register (CSRn[7:4] or CSRn[3:0]) with values ranging from 016 to C16,  
then the user is using the BRG as a source for timing. However, these standard bit rates (presented in Table 18) apply only if  
the X1/CLK pin is driven with a 3.6864 MHz signal. If a signal with a different frequency (fo) is applied to the X1/CLK pin, then  
the DUART channel is running at the following baud rate:  
Actual Baud Rate =  
[Table 6 Baud Rate Value] · fo  
3.6864 MHz  
provided that fo is between 2.0 MHz and 4.0 MHz.  
Additionally, as in the case for standard baud rates, the actual frequency of the clock signal will be 16 times these values.  
1X vs 16X Clock Signals  
The terms “1X Clock” and “16X Clock” have been applied  
throughout this text. Therefore, it is important to discuss  
Suppose that we have a serial data transmission system  
as depicted in Figure 29. This system consists of a  
remote transmitter (TX), and a local receiver (RX).  
their meaning and significance.  
A “16X clock”  
over-samples the received serial data by a factor of 16.  
Whereas a “1X clock” only samples the signals once per  
bit period. From this one should correctly conclude that  
greater accuracy (lower bit error rates) are achieved via  
the use of the 16X clock in lieu of the 1X clock. The  
following paragraphs will clarify the reasons.  
Transmitter  
TX  
Receiver  
RX  
A receiver in one of the DUART channels is clocked by a  
local timing source (from the Timing Control Block). If this  
receiver is active and is receiving data from a remote  
serial transmitter, that transmitter is also clocked by its  
own local timing source. Hence, there is no guarantee  
that the clock frequency for the receiver is exactly the  
same as that for the remote transmitter. This is a  
TX Clock  
RX Clock  
Figure 29. Example of a Serial Data  
Transmission System  
characteristic  
of  
asynchronous  
serial  
data  
communication. Although the receiver and remote  
transmitter have been programmed to receive and  
transmit data at exactly the same baud rate, sufficient  
differences in the frequencies of the two clock sources  
(local receiver and remote transmitter) can contribute to  
bit errors in the receiving process, as presented in the  
following discussion.  
Let us further assume that the Receiver is clocked by a  
source that is slightly faster than that of the Transmitter,  
and that the Receiveris only sampling theserial data once  
per bit period. Figure 30 presents the results of this  
phenomenon.  
Rev. 2.11  
57  
XR88C681  
Figure 30. Receiver (1X) Sampling, if the RX Clock is Slightly Faster Than the TX Clock  
Figure 30 shows that the phase relationship between the Receiver’s sampling point and each serial data bit is changing.  
In this case, the Receiver is sampling each serial data bit, earlier and earlier in the bit period, with each successive data  
bit. This phenomenon is known as receiver drift. If there is no correction for receiver drift, there will be many errors in the  
transmission and reception of this serial data, as depicted in Figure 31.  
Received Data  
0
1
0
1
0
0
1
0
1
Actual Data  
0
1
0
1
0
1
0
1
Figure 31. Illustration of an Error due to Receiver Drift  
Figure 31 shows the Receiver sampling an eight bit string of data with bit pattern 0101010. It is interesting to note that, in  
Figure 31, the Receiver sampled 01010010. It should be noted that Receiver drift can also be a problem is the local  
Receiver is slower than the remote Transmitter clock.  
Rev. 2.11  
58  
XR88C681  
In general the bit-error-rate, for this “uncorrected” system  
is a function of the timing differences between the TX and  
RX local clock signals. However, in order to correct for  
Receiver Drift and to minimize the BER during serial data  
transmission, many UARTs in the market place, employ  
Receiver Oversampling of the START bit. When this  
feature is employed, the Receiver, upon detection of the  
START bit, will begin oversampling this START bit by  
some integer factor. Typically, for most present day  
UARTs, this over-sample factor is 16. (The XR88C681  
device also accommodates 16X receiver oversampling of  
the START bit). Therefore, in these devices, when the  
Receiver detects the occurrence of a START bit, it (the  
Receiver) will begin oversampling this START bit by a  
factor of 16. However, after 7 16X clock periods has  
elapsed, the receiver will assume this point (within the  
START bit) to be the mid point of the bit period, and will  
cease oversampling of the START bit and of the  
subsequent data. From this point, through the end of the  
character, the Receiver will sample the serial data stream  
at the 1X rate. Stated another way, once the Receiver has  
reached, what it believes to be the mid-point of the START  
bit, the receiver will, from that point, begin sampling the  
serial data at 1-bit period interval (see Figure 32). After  
the Receiver has received the STOP bit, it will await the  
occurrence of the START bit. Once the START bit has  
been detected, this oversampling procedure is repeated.  
Chosen as  
the Midpoint  
of the Bit  
1 Bit Period  
7- 16X clock  
periods  
Figure 32. The Typical Sampling Pattern of Each Receiver Within the XR88C681 Device.  
Rev. 2.11  
59  
XR88C681  
The oversampling technique mitigates many of the serial  
data bit errors by attempting to adjust the receiver  
samplingpoint, to nearthe midpoint of the bit periods, on a  
character to character basis. This approach is successful  
for two reasons:  
4. Write 1xxxxxxxb to ACR This step selects “Bit Rate”  
Set #2 per Table 18 of this data sheet.  
Where the b suffix denotes a binary expression, and x  
denotes a “don’t care” value for the binary expression.  
5. Write 88 to CSRA. This step sets the Receive and  
16  
1. It offers periodic correction to the Receiver sampling  
point.  
Transmit bit rate for Channel A to 115.2kbps (per  
Table 17 and Table 18).  
2. It limits the Receiver drift phenomenon (between  
sampling point adjustments) to typically at most 12 bits  
(8 bit character + parity and STOP bits).  
Example B: Programming the Bit Rate via the  
Counter/Timer  
Therefore, if the user selects to receive data at a baudrate  
of 9600 baud; upon detection of the START bit, the  
Receiver will begin sampling the data at (9600 x 16) =  
Suppose the user wishes to transmit and receive data at  
62.5kbps via Channel B. Please note that this particular  
bit rate is not offered by the BRG. In this case the user can  
do the following.  
153,600Hz.  
However, once the Receiver has  
oversampled up to the 7th 153.6kHz clock pulse, it will  
mark this location as the midpoint of the START bit. From  
this point on, the 153.6kHz clock signal is divided by 16 to  
generate the sample clock (9600Hz) for the remaining  
data and overhead bits of the character.  
1. Drive a 4 MHz TTL signal into the X1/CLK pin, while  
the X2 pin is left floating.  
2. Write 00 to CTUR and 02 to CTLR. This steps  
16  
16  
results in the C/T generating a square wave of  
.
frequency = 4 MHz/2 [2] = 1 MHz.  
The XR88C681 devices gives the user the option to  
declare an external input clock signal as either a 1X or  
16X clock signal. Whenever the user is given a choice to  
use either the 1X or 16X clock signal (per the Clock Select  
Registers), the user is advised to always use the 16X  
clock, in order to mitigate the effects of receiver drift. The  
user is further advised never to use the 1X clock features  
of the DUART, unless the incoming serial data stream is  
synchronous with the Receiver (1X) clock.  
3. Write 110b to ACR[6:4] This will set the C/T into the  
Timer mode, and select the Timing source for the C/T  
to be the X1/CLK input.  
4. Write DD to CSRB. This will specify that the timing  
16  
source for the Receiver and Transmitter of Channel B  
will be derived from the C/T. Please note that when the  
DUART is programmed in this configuration, the C/T  
output represents a 16X over sample of the  
Transmitted and Received data. Therefore, the chip  
circuitry will divide the 1 MHz square wave by 16, just  
like for clock signals originating from the BRG.  
D.6 Application Examples using the Timing Control  
Block  
Thus: Bit Rate = 1 MHz/16 = 62.5kbps.  
In order to clarify the roles of the assets within the Timing  
Control Block, three examples are included.  
Example C: Using the External Input Ports  
Example A: Using the BRG  
Suppose that, in addition to running Channel B at  
62.5kbps (see Example B), he/she wants to Transmit and  
Receive data at 1 Mbps via Channel A.  
Suppose that the user wishes to receiveand transmit data  
at a rate of 115.2kbps via Channel A. The user must do  
the following:  
The user needs to perform all of the steps presented in  
Example B, along with the following:  
1. Use a 3.6864 MHz crystal oscillator across the  
X1/CLK and X2 pins; or driving a 3.6864 MHz TTL  
signal into the X1/CLK pin (with the X2 pin floating).  
1. Write xxxx01xxb to the OPCR (Output Port  
Configuration Register).  
2. Write 0A to Command Register A. This step will set  
This step allows the 1 MHz square wave from the C/T to  
be output on OP3.  
16  
the Transmitter BRG Select Extend bit (X = 1).  
3. Write 08 to Command Register A. This step will set  
Note: x = don’t care  
16  
the Receiver BRG Select Extend bit (X = 1).  
The b suffix denotes a binary expression  
Rev. 2.11  
60  
XR88C681  
2. Externally connect the OP3 pin to the IP3 and IP4 pins.  
Thereby applying a 1 MHz square wave into these two  
input pins.  
incoming serial data stream is synchronous with the 1  
MHz (1X) clock signal; in order to minimize bit errors.  
3. Write FF to CSRA.  
16  
D.7 Explanation of Clock Timing Signals  
This step will specify that the timing source for the  
Transmitter and Receiver of Channel A will be derived  
from input pins IP3 and IP4, respectively. Additionally,  
this step allow the DUART hardware to presume that  
these input signal are 1X signals. Hence, there is no  
division-by-16 of this signal. Therefore, the bit rate of  
Channel A is at 1 Mbps.  
The purpose of this section is to explain the Data Sheet  
specification on the Timing Control Block parameters. In  
the past, this subject has been the source of considerable  
confusion by numerous users.  
The XR88C681 Data Sheet presents the following  
parameter specifications in the  
“AC ELECTRICAL CHARACTERISTICS”  
Please note that if the user were to apply this example,  
he/she would be responsible for ensuring that the  
Symbol  
tCLK  
Parameter  
Min.  
100  
2.0  
Typ.  
Max.  
Units  
ns  
X1/CLK (External) High or Low Time  
X1/CLK Crystal or External Frequency  
fCLK  
3.6864  
4.0  
MHz  
ns  
tCTC  
Counter/Timer External Clock High or Low  
Time - IP2 Input  
100  
fCTC  
tRTX  
fRTX  
Counter/Timer External Clock Frequency - IP2  
Input  
0
4.0  
MHz  
ns  
RXC and TXC (External) High or Low Time -  
via IP2, IP3, IP4 and IP5  
220  
RXC and TXC (External) Frequency - via IP2,  
IP3, IP4, and IP5  
fRTX - 16X  
fRTX - 1X  
16X  
1X  
0
0
2.0  
1.0  
MHz  
MHz  
Table 20. Clock Timing (Figure 13)  
Now, here is an explanation for each of these parameters.  
D t - X1/CLK (External) High or Low Time  
D t  
- Counter/Timer External Clock High or Low  
CTC  
CLK  
Time - IP2 Input  
The DUART employs dynamic logic throughout much of  
its circuitry. Therefore, limits on tCLK and fCLK are  
needed in order to ensure that the device will function  
properly. This parameter just places a lower limit on the  
amount of time at the signal applied through the X1/CLK  
pin must reside at the high and low states.  
This parameter places a lower limit on the amount of time  
that the signal, being applied to the IP2 pin, for use by the  
Counter/Timer, can reside at the high and low states.  
Please note that this limit has no relationship with the  
parameter tRTX, which is another spec associated with  
the IP2 input.  
D f  
- Counter/Timer External Clock Frequency -  
CTC  
D f  
- X1/CLK Crystal High or Low Time  
IP2 Input  
CLK  
This parameter places an upper limit of the input  
frequency being applied to the IP2 pin, for use by the  
Counter/Timer. The spec basically states that a signal  
with frequency up to 4.0 MHz can be applied at the IP2  
pin, and still be properly handled by the Counter/Timer.  
This parameter specifies the range of frequencies  
permissible at the X1/CLK input, via either crystal  
oscillator or applied TTL input signal. Therefore, the use  
can only apply between 2.0 and 4.0 MHz at this input.  
Rev. 2.11  
61  
XR88C681  
This spec is not related to the parameter tRTX, which also  
specifies limits on signals applied to IP2 or other input  
pins, for use at the External Clock Source for Transmitter  
and Receivers.  
or she desires. The Timing Control Block gives the user  
access to the following resources:  
D 23 different standard bit rates via the BRG.  
D The Counter/Timer, which can be configured to gen-  
erate bit rates which are not available from the BRG.  
D Inputs to the Timing Control Block (via some Input  
Port pins) which allows the use of external clock sig-  
nals to generate a custom bit rate.  
D t  
- RXC and TXC (External) High or Low Time  
RTX  
- via IP2, IP3, IP4 and IP5  
This spec places a lower limit on the amount of time that a  
signal, being applied at the General Purpose Input Pins,  
IP2 - IP5, for use as the Transmitter and Receiver Clock  
source, can reside at the high or low state. This spec has  
E. INPUT PORT  
The Input Port can be used as a general purpose input or  
the DUART can be programmed to use some of these  
inputs for special functions. The current state of the  
inputs to this unlatched port can be read by the CPU by  
reading the IP register (for the states of IP0 - IP5). A high  
input signal at the IPn pin results in a logic “1” in the IPR[n]  
bit position, within the IP register. Likewise, a “low” input  
signal at the IPn pin results in a logic “0” in the IPR[n] bit  
position, within the IP register.  
no relationship to t  
Input pin IP2.  
, even though it is also applies to  
CTC  
D f  
- RXC and TXC (External) Frequency - via  
RTX  
IP2, IP3, IP4, and IP5  
This spec places limits on both the 1X and 16X external  
signals that are to be used to clock the Transmitters and  
Receivers. If the user wishes to use a 1X clock, he/she  
can only apply a signal with frequencies up to 1.0 MHz.  
This input will results in a bit rate of 1 Mbps (see Example  
C). If the user wishes to use a 16X clock, he/she can only  
apply a signal with frequencies up to 2.0 MHz. Since this  
signal is a 16X signal, this will result in a bit rate of  
125kbps.  
E.1 Alternate Functions for the Input Port  
Table 17 describes the alternate uses for the input pins,  
such as clock inputs and data flow control signals and  
includes a brief summary as how to program the alternate  
function. A read of the IP registers will show the logic state  
at the pin, regardless of its programmed function.  
In summary, the DUART Timing Control block gives the  
user the ability to generate virtually any baud rate that he  
Rev. 2.11  
62  
XR88C681  
Input Port  
Alternate Function(s)  
Approach to Program Alternate Functions  
IP0  
-CTSA: Clear to Send (CTS) input for Channel A.  
IP0 can be programmed to function as the -CTSA  
Note: this input is Active Low, for the CTS function input by setting MR2A[4] =1. For a more detailed  
discussion on this function, please see Section  
G.3.  
IP1  
IP2  
-CTSB: Clear to Send (CTS) input for Channel B.  
IP1 can be programmed to function as the -CTSB  
Note: This input is Active Low for the CTS function input by setting MR2B[4] =1. For a more detailed  
discussion on this function, please see Section G.3.  
CT_EX: Counter/Timer External Clock Input.  
IP2 can be programmed to function as the external  
clock input for the Counter/Timer by setting  
ACR[6:4] = [0, 0, 0]. For a more detailed discus-  
sion into the effect of this action please see Section  
D.2  
RXCB: External Clock input for Receiver  
Channel B  
IP2 can also be programmed to function as the  
external clock input for the Receiver of Channel B  
by setting CSRB[7:4] = [1, 1, 1, 0] for the 16X  
Clock, or CSRB[7:4] = [1, 1, 1, 1] for the 1X Clock.  
IP3  
IP4  
IP5  
TXCA: External Clock input for Transmitter  
Channel A  
IP3 can be programmed to function as the external  
clock input for the Transmitter of Channel A by set-  
ting CSRA[3:0] = [1, 1, 1, 0] for the 16X Clock, or  
CSRA[3:0] = [1, 1, 1, 1] for the 1X Clock.  
RXCA: External Clock input for Receiver  
Channel A  
IP4 can be programmed to function as the external  
clock input for the Receiver of Channel A by setting  
CSRA[7:4] = [1, 1, 1, 0] for the 16X Clock, or  
CSRA[7:4] = [1, 1, 1, 1] for the 1X Clock.  
TXCB: External Clock input for Transmitter  
Channel B  
IP5 can be programmed to function as the external  
clock input for the Transmitter of Channel B by set-  
ting CSRB[3:0] = [1, 1, 1, 0] for the 16X Clock, or  
CSRB[3:0] = [1, 1, 1, 1] for the 1X Clock.  
Table 21. Listing of Alternate Function for the Input Port  
E.2 Input Port Configuration Registers (IPCR)  
Change of state detectors are provided for input pins IP0 through IP3. These inputs are sampled by the 38.4kHz output  
of the BRG (2.4kbps x 16). A high-to-low or low-to-high transition at these input lasting at least two clock periods  
(approximately 50 s) will guarantee that the corresponding bit in the input port change register (IPCR) will be set,  
although it may be set by a change of state as short as 25 s. The bit format of the IPCR follows. The status bits in the  
IPCR (IPCR[7:4]) are cleared when the register is read by the CPU. Any change of state can also be programmed to  
generate an interrupt via the “Input Port Change of State” interrupt.  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
IP3  
Bit 2  
IP2  
Bit 1  
IP1  
Bit 0  
IP0  
Delta IP3  
Delta IP2  
Delta IP1  
Delta IP0  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = Low  
1 = High  
0 = Low  
1 = High  
0 = Low  
1 = High  
0 = Low  
1 = High  
Table 22. Input Port Configuration Register - IPCR  
Rev. 2.11  
63  
XR88C681  
In order to enable the “Input Port Change of State” interrupt, one must do the following.  
D Write the appropriate data to the lower nibble of ACR. The bit formats for ACR is presented in Table 23. Please  
note that the applicable bits, within the ACR register, are shaded.  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
BRG Set  
Select  
Counter/Timer Mode and Source  
Delta IP3  
Interrupt  
Delta IP2  
Interrupt  
Delta IP1  
Interrupt  
Delta IP0  
Interrupt  
0 = Set1  
1 = Set2  
See Table 7  
0 = OFF  
1 = ON  
0 = OFF  
1 = ON  
0 = OFF  
1 = ON  
0 = OFF  
1 = ON  
Table 23. ACR- Auxiliary Control Register  
D Setting IMR[7].  
Note: This “two-tiered” interrupt enabling/disabling approach, for the “Input Change of State” interrupt allows tremendous flexibility  
for the user. Setting or clearing the bits in ACR[3:0] allows the user to specify exactly which Input Port pins to be enabled (or  
disabled) for generating the “Input Port Change of State” interrupt. Setting or clearing IMR[7] allows the user to “globally”  
enable or disable this interrupt.  
The upper nibble of the IPCR will indicate which of the four  
input pins experienced the “Change of State.” The lower  
nibble of the IPCR contains the present state of these  
input pins. Therefore, when reading the IPCR, in  
response to the “Change of State” interrupt, the CPU will  
determine:  
Register (OPR), and the output port pins themselves.  
The contents of the OPR are complements of the actual  
state of the Output Port pins.  
For Example:  
If the bit OPR[5] is set to a logic “1”, this will result in the  
OP5 pin being at a logic “0”. Likewise, if the bit OPR[5] is  
set to a logic “0”, this results in the OP5 pin being at a logic  
“1”. The other thing that makes programming the parallel  
port a little odd is the procedure that one must use to  
accomplish this feat. When writing to this parallel output  
port, one must invoke one of the two address triggered  
commands: SET OUTPUT PORT BITS and CLEAR  
OUTPUT PORT BITS. It is important to note that when  
invoking the “SET OUTPUT PORT BITS” command, the  
user is setting the bits (to logic “1”) in the OPR. However,  
this action results in setting the corresponding Output  
Port pins to logic “0”; due to the complementary  
relationship between the state of the Output Port pins and  
the bits in the OPR. Likewise, when the CLEAR OUTPUT  
PORT BITS command is invoked, the specified bits,  
within the OPR are “cleared” to logic “0”. However, the  
corresponding Output Port pins are set to the logic “1”  
state.  
D The input pin(s) that toggled.  
D The final state of the changing input pin.  
E.3 28 Pin Packaged DUARTs  
The 28 pin packaged DUARTs come with only one input  
port pin, IP2. Therefore, the only alternative functions that  
are available to the device (via this input port pin) are  
CT_EX (C/T External Clock Input) and RXCB (External  
Clock input for Receiver Channel B).  
F. OUTPUT PORT  
The DUART consists of an 8 bit parallel Output Port. The  
Output Port can be used as a general purpose output or  
can be used for output timing and status signals by  
appropriately programming of the mode registers (MR1A,  
B and MR2A, B) and also the output port configuration  
register, OPCR. When used to output status signals the  
Output Port pins are open drain, which allows their use in  
a wire OR interrupt scheme.  
The state of each bit within the OPR, following a Power-on  
Reset (POR), is all “0”. Therefore, the state of each  
Output Port pin, following a POR is logic “1”.  
Programming the Output Port is a little different from the  
conventional writes to a typical parallel port or the data  
bus. The Output Port circuitry consists of the Output Port  
The bits of the OPR can be set and cleared individually. A  
bit is set by the address-triggered “SET OUTPUT PORT  
BITS” command (see Table 1) with the accompanying  
Rev. 2.11  
64  
XR88C681  
data, at the Data Bus, specifying the bits, within the OPR,  
to be set ( 1 = set, 0 = no change). A bit is cleared by the  
address triggered “CLEAR OUTPUT PORT BITS”  
command (see Table 1) with the accompanying data, at  
the Data Bus, specifying the bits to be reset (1 = cleared, 0  
= no change).  
0E , the state of the corresponding bit, within the OPR is  
unchanged.  
16  
We could state this another way as: For every “1” that is  
present on the Data Bus, during the use of the “SET  
OUTPUT PORT BITS” command, the corresponding  
Output Port pin is set to a logic “low”. And for every “0” that  
is present on the Data Bus, during this command, the  
state of the corresponding Output Port pin is unchanged.  
F.1 Writing Data to the OPR/Output Port Pins  
For Example:  
As mentioned earlier, the state of the OPR and  
consequently, the Output Port pins is controlled by two  
“Address Triggered” commands.  
Suppose that the content of the OPR are OPR[7:0] = [0, 0,  
0, 0, 1, 1, 1, 1]. Hence, the state of the Output Port pins  
are as follows:  
D Set Output Port Bits Command  
D Clear Output Port Bits Command  
[OP7, OP6, OP5, OP4, OP3, OP2, OP1, OP0] = [1, 1, 1, 1,  
0, 0, 0, 0]  
The procedure and effect of using these commands are  
discussed in Section F.1.1.  
If we write the following to DUART Address 0E  
[D7,...,D0] = [1, 1, 1, 1, 0, 0, 0, 0]; the resulting state of the  
Output Port Register Bits follows:  
;
16  
F.1.1 Set Ouput Port Bits Command  
OPR[7:0] = [1, 1, 1, 1, 1, 1, 1, 1].  
The actual procedure used to invoke the “SET OUTPUT  
PORT BITS” command is the same as writing the  
contents on the Data Bus (D7 - D0) to DUART Address  
Consequently, the state of the Output Port pins are as  
follows:  
[OP7, OP6, OP5, OP4, OP3, OP2, OP1, OP0] = [0, 0, 0, 0,  
0, 0, 0, 0]  
0E for (OP7 - OP0). For every “1” that exists within the  
16  
latched contents of the Data Bus, the corresponding bit,  
within the OPR is set to a logic “high”. For every “0” that is  
present on the data bus and is written to DUART Address  
This example of the “SET OUTPUT PORT BITS”  
command is illustrated in Figure 33.  
State of Output Port Pins (OP7 - OP0)  
Initial OPR[7:0]  
0
1
0
1
0
0
1
0
1
0
1
0
1
1
1
1
1
0
0
0
0
DUART Address 0Eh  
1
1
0
Data Bus, D7 - D0  
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
Final OPR[7:0]  
Figure 33. Illustration of the “SET OUTPUT PORT BIT” Command and its Effect  
on the Output Port Register and the State of the Output Port Pins.  
Rev. 2.11  
65  
XR88C681  
In summary, for the “SET OUTPUT PORT BITS”  
command;  
the state of the corresponding OPR register bit, and in  
turn the state of the Output Port pin is unchanged.  
For Example:  
Dn = 0; results in no change for OPR[n], nor Output Port  
pin OPn.  
Suppose that the contents of the Output Port Register,  
OPR = [1, 1, 1, 1, 1, 1, 1, 1]. Consequently, the state of the  
Output Port pins are:  
Dn = 1; results in OPR[n] = “1”, and Output Port pin, OPn =  
“0”  
[OP7, OP6, OP5, OP4, OP3, OP2, OP1, OP0] = [0, 0, 0, 0,  
0, 0, 0, 0]  
F.1.2 Clear Output Port Bits Command  
If we were to write [D7,...,D0] = [1, 1, 1, 1, 0, 0, 0, 0] to  
DUART address 0F16, the resulting contents of the  
Output Port register will be:  
The procedure for invoking this command is very similar  
to that for “SET OUTPUT PORT BITS COMMAND”;  
except in that the user now writes to DUART address 0F  
for [OP7,...,OP0].  
OPR[7:0] = [0, 0, 0, 0, 1, 1, 1, 1]  
16  
Further, the resulting state of the Output Port pins will be:  
[OP7, OP6, OP5, OP4, OP3, OP2, OP1, OP0] = [1, 1, 1, 1,  
0, 0, 0, 0]  
For every “1” that is “written” to this address, the  
corresponding bit in the OPR register is set to a logic “low”  
and the corresponding Output Port pin, OPn is set to a  
logic “high”. For every “0” that is written to this address,  
This example of the “SET OUTPUT PORT BITS”  
command is illustrated in Figure 34.  
State of the Output Port Pins (OP7-OP0)  
Initial OPR [7:0]  
1
1
1
1
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
Data Bus, D7 - D0  
DUART Address 0Fh  
1
1
1
1
0
0
0
0
0
0
0
1
1
1
1
1
0
Final OPR [7:0]  
1
1
1
0
Figure 34. Illustration of the “CLEAR OUTPUT PORT BIT” Command and its Effect  
on the Output Port Register and the State of the Output Port Pins.  
In summary, for the “CLEAR OUTPUT PORT BITS”  
command;  
Dn = 1, results in OPR[n] = 0, and sets the corresponding  
Output Port pin to a logic “1”.  
Dn = 0, results in no change for OPR[n] and no change in  
the state of the Output Port pin, OPn.  
Rev. 2.11  
66  
XR88C681  
F.2 Output Port Configuration Register (OPCR)  
The Output Port pins can be used as General Purpose Output pins, or they can be configured to used in alternate  
functions. Table 24 lists the Alternate Functions of each of the Output Port pins.  
Output Port  
Alternate Function(s)  
OP0  
-RTSA: Request-to-Send (RTS) output for Channel A. Note: This output is Active  
Low for the RTS function.  
OP1  
OP2  
-RTSB: Request-to-Send (RTS) output for Channel B. Note: This output is Active  
Low for the RTS function.  
TXCA_16X Output: Channel A 16X Transmitter Clock Output.  
TXCA_1X Output: Channel A 1X Transmitter Clock Output.  
RXCA_1X Output: Channel A 1X Receiver Clock Output.  
OP3  
TXCB_1X Output: Channel B 1X Transmitter Clock Output.  
RXCB_1X Output: Channel B 1X Receiver Clock Output.  
C/T_RDY: The Counter/Timer Ready Output for C/T #1. Note: This output is an  
Open-Drain output when used as the Counter/Timer Ready Output.  
OP4  
OP5  
OP6  
OP7  
RXRDY/FFULL_A Output: Channel A Receiver Ready/FIFO Full Indicator. Note:  
This is an Open-Drain output for the RXRDY/FFULL_A function.  
RXRDY/FFULL_B Output: Channel B Receiver Ready/FIFO Full Indicator. Note:  
This is an Open-Drain output for the RXRDY/FFULL_B function.  
TXRDY_A Output: Channel A Transmitter Ready Indicator. This is an Open-Drain  
output for the TXRDY_A function.  
TXRDY_B Output: Channel B Transmitter Ready Indicator. This is an Open-Drain  
output for the TXRDY_B function.  
Table 24. Listing of the Alternate Functions for the Output Port  
Many of the Alternate Functions of the various Output Port pins are selected by writing the appropriatedata to the OPCR.  
The bit format of this register follows  
Bit 7  
OP7  
Bit 6  
OP6  
Bit 5  
OP5  
Bit 4  
OP4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
OP3  
OP2  
0 = OPR[7]  
0 = OPR[6]  
0 = OPR[5]  
1 = RXRDY/  
FFULLB  
0 = OPR[4]  
1 = RXRDY/  
FFULLA  
00 = OPR[3]  
01 = C/T #1 Output  
10 = TXCB (1X)  
11 = RXCB (1X)  
00 = OPR[2]  
01 = TXCA (16X)  
10 = TXCA (1X)  
11 = RXCA (1X)  
1 = TXRDYB 1 = TXRDYA  
Note: OPCR only addresses the alternate functions for Output Port pins, OP7 - OP2. OP0 and OP1 assume their RTS roles if either  
MR1n[7] = 1 or MR2n[5] = 1. Setting those Mode Register bits enables the RTS function. Otherwise, these two ports will only  
be General Purpose Output Ports.  
Table 25. Output Port Configuration Register - OPCR  
Rev. 2.11  
67  
XR88C681  
F.3 28 Pin DIP Packaged DUARTs  
This section of the data sheet discusses the resources  
that are available to each channel. These resources are  
listed here:  
The 28 pin DIP packaged devices have only two output  
ports, OP0 and OP1. Hence the effect of the “SET  
OUTPUT PORT BITS” and “CLEAR OUTPUT PORT  
BITS” commands only effects these two pins. Additionally  
-RTSA and -RTSB are the only alternative output port pin  
functions available to this version of the XR88C681.  
D Transmitter (Transmit Holding Register and Transmit  
Shift Register)  
D Receiver (Receive Holding Register and Receive  
Shift Register)  
D Status Register  
D Mode Registers  
G. SERIAL CHANNELS A and B  
D Command Register (See Section B.2, Command  
Decoding)  
Each serial channel of the DUART comprises a  
full-duplex asynchronous receiver and transmitter. The  
two channels can independently select their operating  
frequency (from the BRG, the C/T, or an external clock) as  
well as operating mode. Besides the normal mode in  
which the receiver and transmitter of each channel  
operate independently, the DUART can be configured to  
operate in various looping modes, which are useful for  
local and remote diagnostics, as well as in a wake up  
mode used for multi-drop applications.  
D Clock Select Register (See Section D, Timing  
Control Block)  
G.1 Transmitter (TSR and THR)  
The transmitter accepts parallel data from the CPU and  
converts it to a serial bit stream where it is output at the  
TXDn pin, adding start, stop and optional parity bits as  
required by the asynchronous protocol.  
Each transmitter consists of a Transmit Shift register (TSR)  
and a Transmit Holding Register (THR). The THR is  
actually a 1 byte FIFO. Figure 35 presents a simplified  
illustration of the TSR and THR. The CPU initiates the  
transmission of serial data by writing character data to the  
THR. The character will be loaded into and processed  
through the FIFO, until it reaches the TSR. During the  
transition from the THR to the TSR, the character data is  
serialized and is transmitted out of the chip via the TXDn pin.  
In this section certain symbols will be used to denote  
certain aspects of the Transmitter and Receiver. The  
definition of some of these symbols follows.  
TXDn - Transmitter (Serial) Data Output for Channel n  
TXCn - Transmitter Clock Signal for Channel n  
RXDn - Receiver (Serial) Data Input for Channel n  
RXCn - Receiver Clock Signal for Channel n  
Transmitter Clock (from Timing Block)  
TXCn  
Transmit Shift Register  
TXDn  
Outgoing  
Serial Data  
From Data Bus.  
Parallel Data from  
the CPU  
Transmit Holding  
Register  
Figure 35. A Simplified Drawing Depicting the Transmit Shift Register and the Transmit Holding Register.  
Rev. 2.11  
68  
XR88C681  
Whenever a transmitter is idle or inactive, the TXDn  
output for that particular channel will be continuously  
marking (at a logic “high”). However, just prior to the  
transmission of a character, the transmitter alerts the  
receiver by generating a “START” bit. The START bit is  
basically the TXDn output toggling “low” for one bit period,  
following an idle period or the STOP bit of the preceding  
character. Immediately after transmission of the START  
bit, the least significant bit of the character will be sent  
first, followed by progressively more significant bits. If the  
communication protocol calls for it, the Transmitter will  
send a “parity” bit between the most significant bit of the  
character and the STOP bit. Figure 36 presents the  
waveform (format) of the transmitter (TXDn) output. In  
this case, the transmitter is send 5D16, with 8-N-1  
protocol (8 bits per character, No-parity, 1-Stop Bit).  
Transmitter Idle  
or Stop Bit  
TXDn  
1
0
1
1
1
0
1
0
Start Bit  
Stop Bit  
Figure 36. The Output Waveform of the Transmitter While Sending  
5D (8-N-1 Protocol).  
16  
The DUART can be programmed to generate an Interrupt  
G.2 Receiver (RSR and RHR  
Request to the CPU by setting IMR[0] and IMR[4] for  
Channels A, and B, respectively. In this case, the DUART  
The function of the serial receiver is to receiver serial data  
at the RXDn input; convert it to parallel data, where it can  
be read by the CPU. The receiver is also responsible for  
computing and checking parity, if parity is being used.  
would generate an Interrupt Request anytime  
a
Transmitter THR and TSR are empty of characters. The  
CPU can service this interrupt request by writing a  
character to the empty THR.  
The receiver consists of the Receive Shift Register (RSR)  
and a Receive Holding Register (RHR). The RHR is, in  
essence, a three byte FIFO. The receiverreceives data at  
the RXDn pin, where it is processed through the RSR.  
Afterwards, the data is converted to parallel format, and is  
transferred to the RHR. This character is then processed  
through the 3 bytes of FIFO. Once the received character  
reaches the top of the FIFO, it can be “popped” or read by  
the CPU; when it reads the RHR. Figure 37 depicts a  
simplified drawing of the Receiver.  
The Transmitter can be enabled or disabled via the  
Command Register (see Section B.2). If the command is  
issued to disable the transmitter, while there are still  
characters in the THR and TSR, the Transmitter will  
continue transmitting all of the remaining data within the  
THR and TSR, until they are completely empty of  
characters. No new characters can be written to the THR  
once the DISABLE TRANSMITTER command has been  
issued.  
Rev. 2.11  
69  
XR88C681  
Receiver Clock (from Timing Block)  
RXCn  
Receive Shift Register  
RXDn  
Incoming  
Serial Data  
To Data Bus  
To be read by the CPU  
Receive Holding  
Register  
Figure 37. A Simplified Drawing of the Receiver Shift Register  
and Receiver Holding Register  
The receiver functions by sensing the voltage level at the  
2. To establish the phase relationship between the 1x bit  
sampling clock, and the incoming serial data stream.  
The idea is to sample each data bit in the middle of its  
bit period.  
RXDn input. When the far-endtransmitter is idle, its TXDn  
output (and consequently, the RXDn input) is  
continuously “marking”. During this periodthe Receiveris  
inactive and is not receiving or processing any data.  
However, when the far-end transmitter sends the START  
bit, (with its TXDn output toggling “low”), a receiver clock,  
which is 16 times the baud rate (with the 16x clock), will  
start sampling this START bit. If the receiver determines  
that its RXDn input is still “low” after its 7th sample, then  
the receiver hardware considers this signal to be a valid  
START bit. If the RXDn input is not “low” at the 7th  
sample, the Receiver will ignore this downward pulse as  
“noise”. From this 7th sample on, the Receiver will  
sample each successive bit at one bit-period intervals  
(1/baud rate) with the 1x clock. The purpose of this 16x  
Clock is then two-fold.  
Please note that if a 16X clock is selected for the receiver,  
this over-sampling procedure occurs with each and every  
start bit.  
The receiver will continue to sample (and receive) each  
bit of the character that follows the START bit, at one-bit  
time intervals. Upon reception of the character’s MSB the  
receiver will check parity (if programmed) or will sample  
for the STOP bit. If the Receiver samples a mark  
condition at this time and the parity check (if any) was  
valid; a successful reception of the character is  
presumed; and the Receiver will prepare to sense and  
oversample the occurrence of the START bit for the next  
character.  
1. To verify that the detected “low” level in the RXDn input  
is indeed a START bit.  
Rev. 2.11  
70  
XR88C681  
Receiver Errors  
once again be requested (if programmed) and flagged in  
the Interrupt Status Register.  
If the Receiver does not sample a “mark”, at the presumed  
time of the STOP bit, a Framing Error (FE) is flagged by  
setting, SRn[6] =1. If, upon complete reception of the  
character, the subsequent parity check is incorrect, a  
Parity Error (PE) is flagged by setting SRn[5] = 1. If the  
RHR was full, and another character existed in the RSR;  
and if more data enters the DUART via the corresponding  
RXDn pin; then the character in the RSR will be  
overwritten, and a Receiver Overrun Error (OE) condition  
will be flagged in the Status Register (SRn[4] = 1). This  
phenomenon obviously results in a loss of data.  
The DUART can be programmed to generate an Interrupt  
Request to the CPU if a RXRDY (Receiver Ready) or a  
FFULL (FIFO Full) Condition exists for either channel. A  
RXRDY Condition exists when at least one character of  
data exists within the RHR, and is ultimately waiting to be  
“popped” and read by the CPU. The FFULL condition  
exists when the RHR is completely full and cannot accept  
any new characters from the RSR until the CPU has read  
or “popped” the FIFO. The user can select the Interrupt  
Request to occur due to either (but not both) the RXRDY  
or FFULL condition via the Channel Mode Registers.  
These interrupts are enabled by setting IMR[1] and  
IMR[5] for Channels A and B, respectively.  
Finally if the RXDn input is held at the space condition for  
an entire character period, and no STOP bit was detected  
(STOP bit sampling resulted in a space); a Received  
Break (RB) condition is presumed. When this condition is  
detected several things happen.  
Each channel is equipped with numerous other registers  
that are used to provide control and monitoring of these  
channels. Some of these registers were discussed in  
earlier sections of the data sheet. However, a detailed  
discussion of the remainder of these registers are  
presented in Section G.3.  
1. The “Received Break” condition is flagged in the  
Status Register (SRn[7] = 1).  
2. The “Break” character is loaded into the RHR.  
However, no further data is received or loaded into the  
RHR until the RXDn input returns to the “mark”  
condition.  
G.3 Mode Registers, MR1n and MR2n  
3. The corresponding “Delta Break” interrupt is  
requested(if programmed)and flaggedin the Interrupt  
Status register.  
The Mode Registers, allow the user to specify of the  
protocol parameters that he/she wish the channel to run  
at. These registers also allow the user to configure the  
DUART channels to engage in modem handshaking  
techniques. The bits of each of these registers are  
discussed in Table 26.  
Once the RXDn input returns to the “mark” condition,  
subsequent characters will be loaded into the RHR, and  
the corresponding “Delta Break” interrupt condition will  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Rx RTS  
Control  
Rx Interrupt Error Mode  
Select  
Parity Mode  
Select  
Parity  
Select Number of Bits per  
Character  
Select  
0 = No  
1 = Yes  
0=RxRDY  
1=FFULL  
0=Character  
1= Block  
00 = With Parity  
01 = Force Parity  
10 = No Parity  
0 = Even  
1 = Odd  
00 = 5  
01 = 6  
10 = 7  
11 = 8  
11 = Multi-Drop Mode  
Note: MR1n for each channel is accessed when the channel’s MR pointer points to MR1. The pointer is set to MR1n by a hardware  
RESET or by a “RESET MR POINTER” command invoked via the channel’s command register. After any read or write to  
MR1, the MR pointer will automatically point to MR2.  
Table 26. Mode Registers - MR1A, MR1B  
Rev. 2.11  
71  
XR88C681  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit Length  
Bit 0  
Channel Mode  
Tx RTS  
Control  
CTS Enable  
Tx  
00 = Normal  
01 = Auto Echo  
10 = Local Loop  
11 = Remote Loop  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = 0.563  
1 = 0.625  
2 = 0.688  
3 = 0.750  
4 = 0.813  
5 = 0.875  
6 = 0.938  
7 = 1.000  
8 = 1.563  
9 = 1.625  
A = 1.688  
B = 1.750  
C = 1.813  
D = 1.875  
E = 1.938  
F = 2.000  
Table 27. Mode Registers - MR2A, MR2B  
MR1n[7] - Receiver Request to Send Control  
OR of the status for all characters coming to the top of the  
FIFO since the last “RESET ERROR STATUS” command  
for the Channel was issued.  
Ordinarily, RTS (Request to Send) is asserted or negated  
by invoking the “SET OUTPUT PORT BITS COMMAND”  
or “CLEAR OUTPUT PORT BITS COMMAND” in the  
appropriate manner. However, if MR1n[7] = 1 is set, then  
the Receiver will have control over the negation of the  
-RTSn output. Specifically, setting this bit will allow the  
Receiver to negate -RTSn if its RHR is full. This “flow  
control” technique is useful in preventing Receiver  
Overrun Errors.  
MR1n[4:3] - Parity Mode Select  
If “with parity” or “force parity” operation is programmed, a  
parity bit is added to the transmitted characters and the  
receiver performs a parity check on received characters.  
See Section H.2 for description of Multi-Drop Mode  
Operation.  
Figure 42 presents a diagram which illustrates how a  
Receiver-Controlled Request-to-Send configuration  
would function.  
MR1n[2] - Parity Type Select  
This bit selects ODD or EVEN parity if “WITH PARITY  
MODE” is programmed and the state of the forced parity  
bit if the “FORCE PARITY” mode is programmed. In the  
Multi-Drop mode it selects the state of the A/D flag bit.  
This bit has no effect if “NO PARITY” is selected in  
MR1n[4:3].  
MR1n[6] - Receiver Interrupt Select  
This bit selects either the RXRDY status bit or the FFULL  
status bit of the channel to be used as the criteria for  
generating an Interrupt Request to the CPU, ISR[1] for  
Channel A and ISR[5] for Channel B.  
MR1n[1:0] - Bits per Character Select  
Selects the number of bits to be transmitted and received  
in the data field of the character. This does not include  
START, PARITY, and STOP bits.  
MR1n[5] - Error Mode Select  
This bit controls the operation of the three FIFO status bits  
(PE, FE, Received Break) for the Channel. If this bit is set  
to “0”, this particular channel will operate in the  
“Character” Error Mode. If this bits is set to “1”, this  
particular channel will operate in the “Block” Error Mode.  
Mode Register 2 (Channels A and B)  
MR2n for each Channel is accessed when the Channel’s  
MR Pointer points to MR2n, which occurs after any  
access to the Channel’s MR1 Register. Subsequent  
“reads” or “writes” to MR2n does not change the contents  
of the MR pointer.  
In the character mode these status bits apply only to the  
character that is currently at the top of the FIFO. In the  
block mode, these bits represent the cumulative logical  
Rev. 2.11  
72  
XR88C681  
MR2n[7:6] - Channel Mode Select  
D Setting MR2n[7:6] = 01 places the channel in the Auto-  
matic Echo Mode, which automatically re-transmits  
the received data. Figure 39 presents a diagram de-  
picting Automatic Echo Mode Operation. The follow-  
ing conditions apply while in this mode.  
Each Channel can operate in one of four modes.  
D Setting MR2n[7:6] = 00 configures the channel to op-  
erate in the Normal Mode. In this mode, the receiver  
and transmitter operate independently. Figure 38  
presents a diagram depicting Normal Mode Opera-  
tion.  
RXCn  
TXCn  
RXDn  
TXDn  
Outgoing Serial  
Data  
Incoming  
Serial Data  
Receive Shift Register  
Transmit Shift Register  
Transmit Holding  
Register  
Receive Holding  
Register  
8
8
From Data Bus.  
(Parallel data from the CPU)  
To Data Bus  
(To be read by the CPU)  
Figure 38. A Block Diagram Depicting Normal Mode Operation.  
Rev. 2.11  
73  
XR88C681  
RXCn  
TXCn  
RXDn  
TXDn Outgoing Serial  
Data  
Incoming  
Serial Data  
Transmit Shift Register  
Receive Shift Register  
Transmit Holding  
Register  
Receive Holding  
Register  
8
CPU has no access to  
the Transmitter  
To Data Bus  
(To be read by the CPU)  
Figure 39. A Block Diagram Depict Automatic Echo Mode  
In this mode:  
1. Received data is transmitted on the channel’s TXD  
output.  
6. A received break is echoed as received until the next  
valid start bit is detected.  
7. CPU to receiver communications operates normally,  
but the CPU to transmitter link is disabled.  
2. The receiver must be enabled but the transmitter need  
not be enabled.  
Each DUART channel can be configured into one of two  
diagnostic modes.  
3. The channel’s TXRDY and TXEMT status bits are  
inactive.  
Local Loopback Mode  
4. The received parity is checked but is not generated for  
transmission. Thus, transmitted parity is as received.  
This mode is selected by setting MR2n[7:6] = 10.  
Figure 40 is a diagram depicting Local Loopback Mode  
operation.  
5. Character framing is checked but the stop bits are  
transmitted as received.  
Rev. 2.11  
74  
XR88C681  
V
CC  
TXCn  
Receive Shift Register  
Transmit Shift Register  
RXDn  
TXDn  
Transmit Holding  
Register  
Receive Holding  
Register  
8
8
To Data Bus  
(To be read by the CPU)  
From Data Bus.  
(Parallel Data from CPU)  
Figure 40. A Block Diagram depicting Local Loopback Mode Operation  
In this mode:  
1. The transmitter output is internally connected to the  
receiver input.  
2. The transmit clock is used for the receiver.  
3. The channel’s TXDn output is held marking (high).  
4. The channel’s RXDn input is ignored.  
Remote Loopback Mode.  
This mode is selected by setting MR2n[7:6] = 11.  
Figure 41 presents diagram depicting Remote  
a
Loopback Mode operation.  
5. The transmitter is enabled, but the received need not  
be enabled.  
6. CPU to transmitter and receiver communications  
continue normally.  
Rev. 2.11  
75  
XR88C681  
RXCn  
TXCn  
TXDn  
RXDn  
Incoming  
Serial Data  
Outgoing  
Serial Data  
Receive Shift Register  
Transmit Shift Register  
Transmit Holding  
Register  
Receive Holding  
Register  
Note: The CPU has no access to the Serial Data during Remote Loopback Mode.  
Figure 41. A Block Diagram Depicting Remote Loopback Mode  
In this mode:  
1. Received data is transmitted on the channel’s TXDn  
output  
time after the characters in the TSR and THR have been  
transmitted and are now empty.  
2. Received data is not sent to the CPU and the error  
status conditions are not checked.  
Figure 44 presents  
Transmitter-Controlled Request-to-Send configuration  
would function.  
a
diagram illustrate how  
a
3. Parity and framing (stop bits) are transmitted as  
received.  
MR2n[4] - Clear to Send Control  
4. The receiver must be enabled.  
If this bit is a 0, the channels -CTSn input (IP0 for Channel  
A, or IP1 for ChannelB) has no effect on the transmitter. If  
the bit is a “1”, the transmitter will check the state of its  
-CTSn input each time is it ready to send a character. If  
-CTSn is low (or “true”), the character is transmitted. If  
-CTSn is high (or negated), TXDn remains in the marking  
state and the transmission of the next character is  
delayed until -CTSn goes low. Changes in the -CTSn  
input while a character is being serialized do not affect  
transmission of that character. This phenomenon is  
further illustrated in Figure 42 and Figure 44.  
5. The received break is echoed as received until the  
next valid start bit is detected.  
MR2n[5] - Transmitter Request-to-Send Control  
Ordinarily, the RTS (Request to Send) output is asserted  
or negated by invoking the “SET OUTPUT PORT BITS  
COMMAND” or “CLEAR OUTPUT PORT BITS  
COMMAND” in the appropriate manner, by the system  
software. However, setting MR2n[5] = 1 allows the  
Channel Transmitter to negate RTS automatically, one bit  
Rev. 2.11  
76  
XR88C681  
MR2n[3:0] - Stop Bit Length  
G.4 Status Register, SRn  
This bit field programs the duration of the stop bits  
appended to each transmitted character. Stop bit  
duration of 9/16 to 1 bit time and 1 9/16 to 2 bit times, in  
increments of 1/16 bits can be programmed for character  
lengths of 6, 7 and 8 bits. For a 5 bit character, the stop bit  
duration can be programmed from 1-1/16 to 2 bit times.  
The Status Register provides the user with status on the  
RHR and THR (Receiver and Transmitter FIFOs,  
respectively); and serves to provide the CPU with a  
measure of the quality of the reception of data by the  
receiver. FIFO Status indicators are useful in polled  
systems and allows the CPU to check and see if the  
Transmitter is empty and/or is ready for data from the  
CPU. The FIFO Status indicators also indicate whether or  
not the RHR has a character, which is waiting to be read  
by the CPU, or is full and incapable of receiving any more  
characters without an overrun. The Transmitter and  
Receiver FIFO status indicators are located in the lower  
nibble of the Status Register.  
If an external 1x clock is programmed for the transmitter  
clock (TXCn), MR2n[3] = 0 selects a stop bit duration of  
one bit time and MR2n[3] = 1 selects a duration of two bit  
times for transmission.  
The receiver only checks for mark condition at the center  
of the first stop bit (that is, one bit time after the last data or  
parity bit is sampled) regardless of the programmed  
transmitted stop bit length. If the receiver does not sample  
a “mark” a “Frame Error” (FE) is flagged in the Status  
Register.  
The upper nibble of the Status Register alerts the user of  
any data reception errors. The bit-format of the Status  
Register and a discussion of each bit follows:  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Received  
Break  
Framing Error Parity Error  
Overrun  
Error  
TXEMT  
TXRDY  
FFULL  
RXRDY  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
Table 28. Status Register - SRA, SRB  
SRn[7] Received Break  
input is brought to a logic “high” level, in the next  
character.  
This bit indicates that an all zero character of the  
programmed character length was received without a  
stop bit. Only a single FIFO position is occupied when a  
break is received. Additional transfers into the FIFO are  
inhibited until the RXD line returns to the marking state for  
at least half a bit time. This is defined as two successive  
edges of the internal or external 1x clock.  
If the “Error” Mode has been set to “Block” mode, then this  
bit, once set will remain asserted until the “RESET  
ERROR STATUS” command has been invoked (please  
see Table 3). Please note that if the Error Mode is “Block”  
this bit, in the Status Register will remain set, for all  
subsequent characters, independent of the condition of  
these received characters, until the “RESET ERROR  
STATUS” command has been invoked.  
When this bit is set, the channel’s “CHANGE IN BREAK  
STATUS” bit in the ISR is set. The bit in the ISR is also set  
when the end of the break condition, as defined above, is  
detected.  
SRn[6] Framing Error  
Following reception of the character bits, and any  
associated parity bit, the Receiver will check for a “mark”  
condition one bit-time following the last data or parity bit.  
This “mark” condition is the STOP bit. If the Receiver  
does not detect a “mark” at this time, the bit is toggled  
“high” flagging the occurrence of a Frame Error (FE).  
The chip’s break detect logic can detect breaks that begin  
in the middle of a character. However, the break must  
persist until the end of the next charactertime in orderfor it  
to be detected.  
If the Error Mode, of the channel, has been set to  
“Character” Mode, this bit only applies to the Character at  
the top of the RHR. This bit will be cleared if the RXDn  
If the Error Mode has been set to “Character” Mode, this  
bit only applies to the Character at the top of the RHR. If  
Rev. 2.11  
77  
XR88C681  
this bit is set for a given character, it will be cleared if the  
STOP bit is properly detected in the next character.  
SRn[3] Transmitter Empty (TXEMT)  
This bit is set when the transmitter underruns. It is set  
after transmission of the last stop bit of a character and if  
there is no character in the THR or TSR awaiting  
transmission. This bit is cleared when the transmitter is  
disabled, or when the CPU writes a new character to the  
THR.  
If the “Error” Mode has been set to “Block” mode, then this  
bit, once set will remain asserted until the “RESET  
ERROR STATUS” command has been invoked (please  
see Table 3). Please note that if the Error Mode is “Block”  
this bit, in the Status Register will remain set, for all  
subsequent characters, independent of the condition of  
these received characters, until the “RESET ERROR  
STATUS” command has been invoked.  
SRn[2] Transmitter Ready (TXRDY)  
This bit, when set, indicates that the THR is empty and  
ready to accept a character from the CPU. The bit is  
cleared when the CPU writes a new character to the THR,  
and is set when that character is transferred to the TSR.  
TXRDY is set when the transmitter is initially enabled and  
is reset when the transmitter is disabled. Characters  
loaded into the THR while the transmitter is disabled will  
not be transmitted.  
SRn[5] Parity Error  
This bit is set when the “WITH PARITY” or “FORCE  
PARITY” modes are programmed and if the  
corresponding character in the data FIFO was received  
with incorrect parity.  
If the Error Mode has been set to “Character” Mode, this  
bit only applies to the Character at the top of the RHR. If  
this bit is set for a given character, it will be cleared if the  
received parity is correct in the next character.  
SRn[1] FIFO Full (FFULL)  
This bit is set when a character is transferred from the  
RSR to the RHR and the transfer causes it to become full,  
i.e., all three FIFO positions are occupied. It is reset when  
the CPU reads the RHR. If a character is waiting in the  
RSR because the FIFO is full, FFULL will not be reset  
when the CPU reads the RHR.  
If the “Error” Mode has been set to “Block” mode, then this  
bit, once set will remain asserted until the “RESET  
ERROR STATUS” command has been invoked (please  
see Table 3). Please note that if the Error Mode is “Block”  
this bit, in the Status Register will remain set, for all  
subsequent characters, independent of the condition of  
these received characters, until the “RESET ERROR  
STATUS” command has been invoked.  
SRn[0] Receiver Ready (RXRDY)  
This bit indicates that at least one character has been  
received and is waiting in the FIFO to be read by the CPU.  
It is set when a character is transferred from the RSR to  
the RHR and is cleared with the CPU reads the last  
character currently stored in the FIFO.  
SRn[4] Overrun Error  
Please note that some of the conditions that are flagged  
by the Status Register can also be programmed to  
generate an Interrupt Request to the CPU. However,  
there are some conditions that are flagged by the Status  
Register that cannot be programmed to generate an  
Interrupt. These conditions are listed here:  
If set, this bit indicates that one or more characters in the  
received data have been lost, it is set upon receipt of a  
new character when the FIFO is full and a character is  
already in the RSR waiting for an empty FIFO position.  
When this occurs, the character in the RSR is overwritten.  
Please note that unlike the Status Register bits for FE  
(Framing Error), PE (Parity Error) and RB (Received  
Break), the OE (Overrun Error) indicatoris always flagged  
on a “Block” Error Mode basis. The OE condition is never  
flagged on a character-to-character basis, and only  
cleared when the “RESET ERROR STATUS” command is  
invoked.  
D SRn[6] - Framing Error  
D SRn[5] - Parity Error  
D SRn[4] - Overrun Error  
Therefore, if system level error-checking is not employed,  
the user is recommended to validate each character by  
checking the Status Register.  
Rev. 2.11  
78  
XR88C681  
H. SPECIAL MODES OF OPERATION  
H.1 RTS/CTS Handshaking  
H.1.1 Receiver-Controlled RTS/CTS Handshaking  
In this mode, the Receiver has the ability to automatically  
negate the RTS output (to the Transmitting device).  
Specifically, this mode allows the Receiver to negate the  
RTS signal if its RHR is full; and, is thereby, very effective  
in preventing Receiver Overrun Errors. Figure 42  
presents a diagram of an example illustrating the  
operation of the Receiver-Controlled RTS configuration.  
The DUART can be programmed to support RTS/CTS  
Handshaking, as a means of data flow control with other  
devices. This section will describe a couple of options that  
the DUART allows the user in implementing RTS/CTS  
Handshaking. Specifically, these options are:  
D Receiver-Controlled RTS/CTS Handshaking  
D Transmitter-Controlled RTS/CTS Handshaking  
Receiving Device  
Transmitting Device  
RTSA  
(OP0)  
CTSB  
(IP1)  
RXDA  
TXDB  
TXDA  
RXDB  
CTSA  
(IP0)  
RTSB  
(OP1)  
FFULLA  
(OP4)  
To CPU  
FFULLA  
RTSA  
RXDA  
Figure 42. Block Diagram and Timing Sequence of Two DUARTs Connected  
in the Receiver-RTS Controlled Configuration  
Rev. 2.11  
79  
XR88C681  
Figure 42 shows two DUART devices, a “Receiving  
Device” and a “Transmitting Device”. These devices are  
labeled such because of their role in this example transfer  
of data between them. This example is goingto ignore, for  
the time being, the fact that the “Receiving Device” has a  
transmitter and that the “Transmitting Device” has a  
receiver. Further, this example, is using Channel A of the  
“Receiving Device” and Channel B of the “Transmitting  
Device”.  
If the CPU reads (or “pops”) the RHRA of the Receiving  
Device, RHRA will no longer be full, and the FFULLA  
indicator will toggle false. In this case, the FFULLA  
indicator is connected to some input port of the CPU. In  
response to the FFULLA toggling false, the CPU would  
interpret this “negative-edge” of FFULLA as an Interrupt  
Request. The CPU would service this “Interrupt” by  
“writing” [D7,...,D0] = [0, 0, 0, 0, 0, 0, 0, 1] to DUART  
address 0E16. This action executes the “SET OUTPUT  
PORT COMMAND” and causes OPR[0] to toggle “high”  
and Output Port pin OP0 (or -RTSA) to toggle “low”.  
Consequently, -RTSA is now asserted.  
The example starts with the assumption that the  
“Receiving Device” has been programmed such that  
MR1A[7] = 1. According to Section G.3, this results in  
programming the “Receiving Device” for Receiver RTS  
Control. Additionally, the “Transmitting Device” has been  
programmed such that MR2B[4] = 1. According to  
Section G.3, the Transmitter of Channel B of the  
“Transmitting Device” has now been programmed to be  
under -CTSB input control. In this example, the  
“Receiving Device” controls the -RTSA output signal.  
This output signal is fed directly into the -CTSBinput of the  
Transmitting Device.  
With the -RTSA output of the “Receiving Device” being  
asserted the -CTSA input of the “Transmitting Device” is  
now asserted, as well and data transmission from the  
“Transmitting Device” to the “Receiving Device” is now  
permitted.  
Figure 42 shows the RXDA input receiving data after  
-RTSA has been asserted. However, in this example, this  
newly received character now causes RHRA of the  
“Receiving Device” to be full. The FFULLA indicator  
status is now asserted and RTSA (of the “Receiving  
Device”) is now automatically negated via the Receiver  
control over the RTS signal. Therefore, transmission  
from Channel B of the Transmitting Device is, once again,  
inhibited.  
If RHRA of the “Receiving Device” is full (as depicted by  
the FFULLA output being at a logic “high”), -RTSA will  
automatically be negated by virtue of the Receiver  
Controlled RTS features. Consequently, the Channel B  
Transmitter of the “Transmitting Device” will have its  
-CTSB input negated and will not be permitted to transmit  
any data to RXDA of the “Receiving Device”.  
Figure 43 presents a flow diagram illustrating an  
algorithm that could be used in implementing the  
Receiver-Controlled RTS/CTS Handshaking Mode.  
Rev. 2.11  
80  
XR88C681  
For Receiving Device  
MR1A[7] = 1  
For Transmitting Device  
MR2B[7] = 1  
Start  
Assert RTSA  
Write 01h to QUART Address 0Eh  
(This invokes the “SET OUTPUT  
PORT BITS COMMAND” and sets  
the Output Port pin, OP0 to a logic  
“0”.)  
Is  
No  
FFULLA  
Asserted?  
No  
Yes  
Is  
RTSA is Automatically  
Negated by Receiver  
Controlled RTS Function.  
Yes  
FFULLA  
Negated?  
Figure 43. A Flow Diagram Depicting an Algorithm That Could be Used to Apply  
the Receiver-Controlled RTS/CTS Handshaking Mode  
H.1.2 Transmitter-Controlled RTS/CTS Handshaking  
In this mode, the Transmitter now has the ability to negate the RTS output (to the Receiving Device). Specifically, this  
mode allows the Transmitter to negatye the RTS signal, one bit period after emptying the THR and TSR.  
Rev. 2.11  
81  
XR88C681  
Transmitting Device  
Receiving Device  
IP2  
RTSA  
(OP0)  
(RTS-in)  
CTSA  
(IP0)  
OP3  
(CTS-out)  
TXDA  
RXDB  
TXRDY_A  
(OP7)  
To CPU  
TXRDY_A  
RTSA  
CTSA  
RXDA  
Figure 44. Block Diagram and Timing Sequence of Two DUARTs Connected  
in the Transmitter-RTS Controlled Configuration.  
Rev. 2.11  
82  
XR88C681  
Figure 44 shows two DUART devices, one labeled  
“Transmitting Device” and the other, “Receiving Device”.  
This example starts with the assumption that the  
“Transmitter Device” has been programmed such that  
MR2A[5] = 1, which results in programming the  
“Transmitting Device” for Transmitter-RTS Control. This  
example further assumes that the “Transmitting Device”  
has been programmed such that MR2A[4] = 1. According  
to Section G.3, the Transmitter of Channel A of the  
“Transmitting Device” has now been programmed to be  
under -CTSA input control.  
“Transmitting Device” and allow it to transmit data to the  
“Receiving Device”.  
Once Channel A Transmitter has emptied both its THR  
and TSR of data, it will negate the -RTSA output, via the  
“Transmitter-RTS Control” feature. When the -RTSA  
output the “Transmitting Device” is toggled “high”, the IP2  
(RTS-in) is also toggled “high”, thereby generating  
another “Input Change of State” interrupt request to the  
CPU. With IPCR[2] = 1, the likely Interrupt Service  
Routine would be to “Write” [D7,..., D0] = [0, 0, 0, 0, 1, 0, 0,  
0] to DUART address 0F . In this step, the Interrupt  
16  
Service Routine would invoke the “CLEAR OUTPUT  
PORT BITS COMMAND”, and in the process toggle OP3  
(CTS-out) “high”. This would in turn negate the -CTSA  
input of the “Transmitting Device” and inhibit the  
transmission of data from the Channel A of the  
“Transmitting Device”.  
In the case of the “Receiving Device”, IP2 (RTS-in) has  
been programmed to generate an “Input Port Change of  
State” interrupt request to the CPU. The firmware for the  
Interrupt Service Routines is written such that if the IP2  
input were to change and IPCR[2] = 0, the CPU would  
“write” [D7,..., D0] = [0, 0, 0, 0, 1, 0, 0, 0] to DUART  
Figure 45 presents a Flow Diagram which depicts an  
Algorithm that could be used to implement the  
Transmitter-Control RTS/CTS Handshaking Mode.  
Please note that the shaded block pertain to occurrences  
within the “Receiving Device”. Whereas the “White” block  
pertain to operation within the “Transmitting Device.”  
address 0E . In this step, the Interrupt Service Routine  
16  
would invoke the “SET OUTPUT PORT BITS  
COMMAND”, and in the process toggle OPR[3] to a logic  
“high” and the Output Port pin, OP3, (CTS-out) to a logic  
“low”. This would, in turn, assert the -CTSA input of the  
Rev. 2.11  
83  
XR88C681  
START  
Generate “Input Port Change of State”  
Interrupt (IP2) in Receiving Device  
ASSERT RTSA  
(Write 01h to DUART Address 0Eh)  
Is  
IP2 = 1  
?
TOGGLE OP3 (CTS_out) PIN  
“LOW”  
(Write 08h to DUART Address 0Eh)  
*CTSA INPUT IS ASSERTED.  
Data transmission is now permitted.  
No  
Yes  
Is  
TXEMT  
Asserted  
No  
?
Yes  
*RTSA is Automatically Negated by  
Receiver Controlled RTS Function.  
(OP0 toggles “High”)  
TOGGLE OP3 (CTS_out) PIN  
“HIGH”  
(Write 08h to DUART Address 0Fh)  
-CTSA INPUT IS NEGATED.  
Data transmission is disabled.  
Is  
TXRDY  
Negated?  
No  
Yes  
Figure 45. A Flow Diagram depicting an Algorithm that could be used to Realize the  
Transmitter-Controlled RTS/CTS Handshaking Mode  
H.2 Multi-drop (8051 9 bit) Mode  
H.2.1 Concept of Multi-Drop Mode  
Each serial channel of the DUART can be configured to  
operate in a wake up mode useful for multi-drop or  
multiprocessor applications. This section will first present  
the concept of the Multi-Drop Mode. Afterwards, the  
function and procedure of operating the DUART in the  
Multi-Drop mode is discussed in Section H.2.1.  
This mode is compatible with the serial “Nine bit Mode” of  
8051 family microcomputers. In this mode of operation a  
“master station”, connected to a maximum of 256 slave  
station is possible, as depicted in Figure 46.  
Rev. 2.11  
84  
XR88C681  
Master Device  
TXDn  
RXDn  
00h  
RXDn  
RXDn  
RXDn  
FFh  
01h  
02h  
Slave Devices  
Figure 46. An Illustration Depicting the Concept of Multi-Drop Mode  
LSB  
MSB A/D  
8 Bit Character  
Address/Data Bit  
Figure 47. Bit Format of Character Data Being Transmitted in the Multi-Drop Mode  
The “Master Station” communicates to the “Slave  
When the “Master Station” wants to transmit a block of  
data to one of several slaves, it first sends out an Address  
byte that identifies the “Target Slave”. An address byte  
differs from a data byte in that the ninth bit is a “1” in an  
Address Byte and a “0” in a Data Byte.  
Stations” by transmitting a character (typically a byte) with  
an “Address/Data” bit flag appended to the end of the  
character. This typically results in nine bits of being  
transmitted for every character byte, as presented in  
Figure 47.  
Rev. 2.11  
85  
XR88C681  
An Address Byte, however, interrupts all “Slaves” so that  
each can examine the received byte to test if it (the  
individual slave device) is being addressed. The receiver  
of the addressed slave will be enabled and will prepare for  
reception of the data bytes that follows. The slaves that  
were not addressed will leaves their Receivers disabled,  
and will continue to ignore the data bytes that follows.  
They will be interrupted again when the next address byte  
is transmitted by the “Master Device”.  
the programmed number of data bits, the Address/Data  
(A/D) flag bit; and the programmed STOP bit length. A/D  
= 0 indicates that the character is data, while A/D = 1  
identifies it as an address.  
Transmitter Operation During Multi-Drop Mode  
The user/CPU controls the state of the transmitted  
character by programming MR1n[2] of the channel prior  
to loading the data bits into the THR. Setting MR1n[2] =  
“0” results in A/D = “0” and setting MR1n[2] = “1” results in  
A/D = “1”. Figure 48 presents a procedural flow diagram  
for transmitting characters (Address or Data), while in the  
Multi-Drop Mode.  
H.2.2 DUART Multi-Drop Operation  
A given channel, within the DUART is programmed into  
the Multi-Drop mode by setting MR1n[4:3] = “1, 1”. In this  
mode, a transmitted character consists of a START bit,  
START  
Invoke the “RESET MR  
POINTER” command.  
(Write 1xh to appropriate  
Command Register)  
Set A/D Bit to “0”  
(Write xxxxx0xx to MR1n  
Register)  
Set A/D Bit to “1”  
(Write xxxxx1xx to  
MR1n Register)  
Transmit Data Character  
to Slave Device.  
(Write Character to THRn)  
Transmit Address  
Character to Slave Device.  
(Write Character to THRn)  
Are there More  
Yes  
Data Characters  
to Write to Active  
Slave Device?  
Invoke the “RESET MR  
POINTER” command.  
(Write 1xh to appropriate  
Command Register)  
No  
Figure 48. A Flow Diargam Depicting a Procedure That Can Be Used to  
Transmit Characters in the Multi-Drop Mode  
Rev. 2.11  
86  
XR88C681  
Receiver Operation During Multi-Drop Mode  
received characters are accessible to the CPU by reading  
the RHR. The state of the A/D flag bit is available at  
SRn[5], the Status Register bit normally used to indicate  
“Parity Error”. Therefore, in conjunction with receiver  
each new character, the CPU should continue to monitor  
SRn[5] in order to verify that it is a “0” (Data characters).  
When a channel has been programmed into the  
Multi-Drop Mode, and the Receiver has been disabled (a  
typical configuration), the Receiver will load a character  
into the RHR and set the RXRDY indicator (and/or  
interrupt) if the A/D bit is “1” (Address flag). However, the  
character will be discarded if its A/D bit is “0” (Data flag).  
Therefore, in response to the RXRDY indicator, the CPU  
should then read the received character and determine if  
the address that it represents matches that of the CPU. If  
the Addresses do match, (indicating that it is the Target  
Slave), then the CPU should enable the Receiver, in  
preparation for the subsequent blocks of data.  
Once the “Target CPU” detects a new address character,  
SRn[5] =“1”, it should compare this address with its own.  
If the addresses do not match, then this CPU is not the  
intended recipient of the next block of data, and now  
should disable the Receiver. Figure 49 presents a flow  
diagram depicting  
a recommended procedure for  
handling received characters while in the Multi-Drop  
Mode.  
Once the Receiver has been enabled the Receiver Serial  
Data will be processed as in Normal Operation. The  
START  
Does  
No  
Newly Received  
Address match  
CPU Address  
?
Reject Character  
Receiver is Disabled  
Receiver remains Disabled  
Channel is Commanded  
into Multi-Drop Mode.  
MR1n[4:3] = [1, 1]  
Yes  
Enable Receiver  
(Write x2h to the  
Appropriate Channel  
Command Register)  
Has  
RXRDY Indicator  
been asserted  
?
No  
Read in Data Character  
from RHR.  
Yes  
Check SRn[5]  
Read in Address  
Character from RHRn  
Is the  
New Character a  
Data Character  
SRn[5] = 1?  
Yes  
No  
Figure 49. A Flow Diagram Depicting a Procedure That Can Be Used to Receive  
Characters in the Multi-Drop Mode.  
Rev. 2.11  
87  
XR88C681  
H.3 Standby Mode  
D Cannot operate in the Z-Mode  
This is due to lack of the -IACK, IEI, and IEO pins  
The DUART may be placed in a standby mode to  
conserve power when its operation is not required. Upon  
reset, the DUART will be in the “ACTIVE OPERATION”  
mode. A “SET STANDBY MODE” command issued via  
the channel A Command Register disables all clocks on  
the device except for the crystal oscillator, which  
significantly reduces the operating current. In this mode  
that only functions which will operatecorrectly arereading  
the input port, writing the output port and the “SET  
ACTIVE MODE” command. The latter, also invoked via  
the Channel A Command register, restores the device to  
normal operation within 25 s. Resetting the transmitters  
and receivers and writing 00h into the IMR (Interrupt Mask  
Register) before going into the Standby mode is  
recommended to prevent any spurious interrupts from  
beinggenerated. The chip should be reprogrammedafter  
the “SET ACTIVE MODE” command since register  
contents are not guaranteed to remain stable during the  
standby mode. Active operation can also be restored via  
hardware reset.  
D Cannot perform modem shaking functions  
This is due to the lack of any CTS pins  
J. PROGRAMMING  
Operation of the DUART is programmed by writing control  
words into the appropriate registers, while operational  
feedback is provided by status registers which can be read  
by the CPU. Register addressing is shown in .  
A hardware reset clears the contents of the SRn, IMR,  
ISR, OPR, and OPCR registers and initializes the IVR to  
0F . During operation, care should be exercised if the  
16  
contents of control registers are to be changed, since  
certain changes may result in improper operation.  
For Example:  
Changing the number of bits per character while data is  
being received may result in reception of erroneous  
character. In general, changes to registers which control  
receiver or transmitter operation should be made only  
while the transmitter or receiver are disabled, and certain  
changes to the ACR should be made only when the C/T is  
stopped.  
I. COMMENTS ABOUT THE XR88C681 IN 28 PIN  
DIP PACKAGE  
Much of this data sheet discussed features which are  
available to the DUARTs which are packaged in the 40 pin  
DIP or the 44 pin PLCC. However, because of the  
reduced number of pins the DUARTs in the 28 pin  
package do not have the following features.  
Mode, command, clock select, and status registers are  
duplicated for each channel to provide total independent  
operation. Table 29 through Table 41 summarizes the bit  
assignments for each register.  
REGISTER SUMMARY  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Rx RTS  
Control  
Rx Int Select Error Mode  
Parity Mode  
Select  
Parity  
Select  
Number of Bits/Char.  
0 = No  
1 = Yes  
0=RXRDY  
1=FFULL  
0= Char.  
1= Block  
00 = With Parity  
0 = Even  
1 = Odd  
00 = 5  
01 = 6  
10 = 7  
11 = 8  
01 = Force Parity  
10 = No Parity  
11 = Multi-Drop Mode  
Table 29. Mode Registers 1: MR1A, MR1B  
Rev. 2.11  
88  
XR88C681  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Channel Mode  
Tx RTS  
Control  
CTS Enable  
Tx  
Stop Bit Length  
00 = Normal  
01 = Auto Echo  
10 = Local Loop  
11 = Remote Loop  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0h = 0.563  
1h = 0.625  
2h = 0.688  
3h = 0.750  
4h = 0.813  
5h = 0.875  
6h = 0.938  
7h = 1.000  
8h = 1.563  
9h = 1.625  
Ah = 1.688  
Bh = 1.750  
Ch = 1.813  
Dh = 1.875  
Eh = 1.938  
Fh = 2.000  
Table 30. Mode Register 2: MR2A, MR2B  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Receiver Clock Select  
Transmitter Clock Select  
See Table 9  
See Table 9  
Table 31. Clock Select Registers: CSRA, CSRB  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Miscellaneous Commands  
Enable/Disable Tx  
Enable/Disable Rx  
See Text in Section B.2.  
00 = No Change  
01 = Enable Tx  
10 = Disable Tx  
11 = Not Allowed  
(Do Not Use)  
00 = No Change  
01 = Enable Tx  
10 = Disable Tx  
11 = Not Allowed  
(Do Not Use)  
Table 32. Command Registers: CRA, CRB  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Received  
Break  
Framing  
Error  
Parity Error  
Overrun  
Error  
TXEMT  
TXRDY  
FFULL  
RXRDY  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
Table 33. Status Registers: SRA, SRB  
Bit 7  
OP7  
Bit 6  
OP6  
Bit 5  
OP5  
Bit 4  
OP4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
OP3  
OP2  
0=OPR[7]  
1=TXRDYB  
0=OPR[6]  
1=TXRDYA  
0=OPR[5]  
1=RXRDY/  
FFULLB  
0=OPR[4]  
1=RXRDY/  
FFULLA  
00 = OPR[3]  
01 = C/T #1 Output  
10 = TXCB (1X)  
11 = RXCB (1X)  
00 = OPR[2]  
01 = TXCA (16X)  
10 = TXCA (1X)  
11 = RXCA (1X)  
Table 34. Output Port Configuration Register: OPCR  
Rev. 2.11  
89  
XR88C681  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
BRG Set  
Select  
Counter/Timer #1 Mode and Source  
Delta IP3  
Interrupt  
Delta IP2  
Interrupt  
Delta IP1  
Interrupt  
Delta IP0  
Interrupt  
0 = Set1  
1 = Set2  
See Table 7  
0 = OFF  
1 = ON  
0 = OFF  
1 = ON  
0 = OFF  
1 = ON  
0 = OFF  
1 = ON  
Table 35. Auxiliary Control Register: ACR  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
IP3  
Bit 2  
IP2  
Bit 1  
IP1  
Bit 0  
IP0  
Delta IP3  
Delta IP2  
Delta IP1  
Delta IP0  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = Low  
1 = High  
0 = Low  
1 = High  
0 = Low  
1 = High  
0 = Low  
1 = High  
Table 36. Input Port Configuration Register , IPCR  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Input Port  
Change  
Delta Break  
B
RXRDY/  
FFULLB  
TXRDYB  
Counter #1  
Ready  
Delta Break  
A
RXRDY/  
FFULLA  
TXRDYA  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
0 = No  
1 = Yes  
Table 37. Interrupt Status Register, ISR  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Input Port  
Change  
Delta Break  
B
RXRDY/  
FFULLB  
TXRDYB  
Counter #1  
Ready  
Delta Break  
A
RXRDY/  
FFULLA  
TXRDYA  
0 = Off  
0 = Off  
0 = Off  
0 = Off  
0 = Off  
0 = Off  
0 = Off  
0 = Off  
1 = On  
1 = On  
1 = On  
1 = On  
1 = On  
1 = On  
1 = On  
1 = On  
Table 38. Interrupt Mask Register, IMR  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
C/T(15)  
C/T(14)  
C/T(13)  
C/T(12)  
C/T(11)  
C/T(10)  
C/T(9)  
C/T(8)  
Table 39. Counter/Timer Upper Byte Register, CTUR  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
C/T(7)  
C/T(6)  
C/T(5)  
C/T(4)  
C/T(3)  
C/T(2)  
C/T(1)  
C/T(0)  
Table 40. Counter/Timer Lower Byte Register, CTLR  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
IVR(7)  
IVR(6)  
IVR(5)  
IVR(4)  
IVR(3)  
IVR(2)  
IVR(1)  
IVR(0)  
Table 41. Interrupt Vector Register: IVR  
Rev. 2.11  
90  
XR88C681  
K. TIMING DIAGRAMS  
2.0V  
0.8V  
2.0V  
0.8V  
4.0V  
Test Levels  
Figure 50. Input and Output Levels for Timing Measurements  
Note: AC testing inputs are driven at 0.4V for a logic “0” and 2.4V for a logic “1” except for -40 to 85(C and -55 to 125(C, logic “1” shall  
be 2.6V. Timing measurements are made at 0.8V for a logic “0” and 2.0V for a logic “1”.  
RESET  
t
RES  
Figure 51. Reset Timing  
Rev. 2.11  
91  
XR88C681  
A0 - A3  
t
t
AS  
AH  
-CS  
-RD  
t
CH  
t
CS  
t
RWD  
t
RW  
t
t
DF  
DD  
D0 - D7  
(Read)  
NOT  
VALID  
FLOAT  
VALID  
FLOAT  
t
RWD  
-WR  
t
DS  
t
DH  
D0 - D7  
(Write)  
VALID  
Figure 52. XR88C681 Read and Write Cycle Timing  
Rev. 2.11  
92  
XR88C681  
-INTR  
-IACK  
t
IAH  
t
IAS  
t
RW  
-RD  
t
EIS  
t
t
DF  
DD  
D0 - D7  
NOT  
VALID  
FLOAT  
VECTOR  
FLOAT  
IEI  
t
t
DIO  
EOD  
IEO  
t
DIO  
RESET IUS  
COMMAND  
Figure 53. XR88C681 Z Mode Interrupt Cycle Timing  
Rev. 2.11  
93  
XR88C681  
-RD or  
-CS  
t
t
PH  
PS  
IP0 - IP6  
-WR or  
-CS  
OP0 - OP7  
NEW DATA  
OLD DATA  
t
PD  
Figure 54. Port Timing  
-RD or  
-CS or  
-WR  
t
IR  
Interrupt  
Output  
Figure 55. Interrupt Timing  
Rev. 2.11  
94  
XR88C681  
C1: 10pF + (Stray < 5pF)  
C2: 10pF + (Stray < 5pF)  
R1: 100ohm  
C1: 10 - 15pF + (Stray < 5pF)  
C2: 0 - 5pF + (Stray < 5pF)  
R2: 100ohm  
R1  
X1  
X1  
C1  
C2  
C1  
C2  
XR88C681  
XR88C681  
R2  
X2  
X2  
3.6864MHz  
3.6864MHz  
Parallel Resonant Crystal  
Parallel Resonant Crystal  
t
t
CLK  
CTC  
X1/CLK  
C/T CLK  
RXC  
t
RTX  
TXC  
t
t
CLK  
CTC  
t
RTX  
Figure 56. Clock Timing  
Rev. 2.11  
95  
XR88C681  
1 Bit Time  
(1 or 16 Clocks)  
TXC  
(Input)  
t
TXD  
TXD  
t
TCS  
TXC  
(1X Output)  
Figure 57. Transmitter Timing  
RXC  
1X Input)  
t
t
RXH  
RXS  
RXD  
Figure 58. Receiver Timing  
Rev. 2.11  
96  
XR88C681  
44 LEAD PLASTIC LEADED CHIP CARRIER  
(PLCC)  
Rev. 1.00  
C
D
Seating Plane  
D
1
45° x H1  
A
2
45° x H2  
2
1 44  
B
1
B
D
D
3
e
R
D
3
A
1
A
INCHES  
MIN MAX  
MILLIMETERS  
SYMBOL  
MIN  
MAX  
A
0.165  
0.090  
0.020  
0.013  
0.026  
0.008  
0.685  
0.650  
0.590  
0.180  
0.120  
------.  
4.19  
2.29  
4.57  
3.05  
A
A
B
B
1
2
0.51  
------  
0.021  
0.032  
0.013  
0.695  
0.656  
0.630  
0.33  
0.53  
0.66  
0.81  
1
C
D
D
D
D
e
0.19  
0.32  
17.40  
16.51  
14.99  
17.65  
16.66  
16.00  
1
2
3
0.500 typ.  
0.050 BSC  
12.70 typ.  
1.27 BSC  
H1  
H2  
R
0.042  
0.056  
0.048  
0.045  
1.07  
1.42  
1.22  
1.14  
0.042  
0.025  
1.07  
0.64  
Note: The control dimension is the inch column  
Rev. 2.11  
97  
XR88C681  
40 LEAD CERAMIC DUAL-IN-LINE  
(600 MIL CDIP)  
Rev. 1.00  
40  
1
21  
20  
E
E
1
D
A
1
Base  
Plane  
A
Seating  
Plane  
L
c
e
α
B
B
1
INCHES  
MILLIMETERS  
SYMBOL  
MIN  
MAX  
MIN  
MAX  
A
0.100  
0.015  
0.014  
0.045  
0.008  
1.990  
0.550  
0.225  
0.075  
0.026  
0.065  
0.018  
2.090  
0.610  
2.54  
0.38  
5.72  
1.91  
A
B
B
c
1
1
0.36  
0.66  
1.14  
1.65  
0.20  
0.46  
D
50.55  
13.97  
53.09  
15.49  
E
E
e
L
1
0.600 BSC  
0.100 BSC  
15.24 BSC  
2.54 BSC  
0.125  
0.200  
3.18  
5.08  
α
0°  
15°  
0°  
15°  
Note: The control dimension is the inch column  
Rev. 2.11  
98  
XR88C681  
28 LEAD PLASTIC DUAL-IN-LINE  
(600 MIL PDIP)  
Rev. 1.00  
28  
1
15  
14  
E
D
A
2
A
L
Seating  
Plane  
C
α
A
1
B
B
e
1
e
e
A
B
INCHES  
MILLIMETERS  
SYMBOL  
MIN  
MAX  
MIN  
MAX  
A
0.160  
0.015  
0.125  
0.014  
0.030  
0.008  
1.380  
0.600  
0.485  
0.250  
0.070  
0.195  
0.024  
0.070  
0.014  
1.565  
0.625  
0.580  
4.06  
0.38  
6.35  
1.78  
A
A
B
B
1
2
3.18  
4.95  
0.36  
0.56  
0.76  
1.78  
1
C
D
E
0.20  
0.38  
35.05  
15.24  
12.32  
39.75  
15.88  
14.73  
E
e
1
0.100 BSC  
0.600 BSC  
2.54 BSC  
15.24 BSC  
e
A
e
B
L
0.600  
0.700  
0.200  
15.24  
17.78  
5.08  
0.115  
2.92  
α
0°  
15°  
0°  
15°  
Note: The control dimension is the inch column  
Rev. 2.11  
99  
XR88C681  
40 LEAD PLASTIC DUAL-IN-LINE  
(600 MIL PDIP)  
Rev. 1.00  
40  
1
21  
20  
E
D
A
A
2
A
L
Seating  
Plane  
1
C
α
B
B
e
1
e
e
A
B
INCHES  
MILLIMETERS  
SYMBOL  
MIN  
MAX  
MIN  
MAX  
A
0.160  
0.015  
0.125  
0.014  
0.030  
0.008  
1.980  
0.600  
0.485  
0.250  
0.070  
0.195  
0.024  
0.070  
0.014  
2.095  
0.625  
0.580  
4.06  
0.38  
6.35  
1.78  
A
A
B
B
1
2
3.18  
4.95  
0.36  
0.56  
0.76  
1.78  
1
C
D
E
0.20  
0.38  
50.29  
15.24  
12.32  
53.21  
15.88  
14.73  
E
e
1
0.100 BSC  
0.600 BSC  
2.54 BSC  
15.24 BSC  
e
A
e
B
L
0.600  
0.700  
0.200  
15.24  
17.78  
5.08  
0.115  
2.92  
α
0°  
15°  
0°  
15°  
Note: The control dimension is the inch column  
Rev. 2.11  
100  
XR88C681  
Revision History  
From Rev 2.10 to 2.11  
(June 2006) Corrected pinout on 28--pin PDIP package on page 3 (pin 1 is A0).  
Added Revision History.  
NOTICE  
EXAR Corporation reserves the right to make changes to the products contained in this publication in order to im-  
prove design, performance or reliability. EXAR Corporation assumes no responsibility for the use of any circuits de-  
scribed herein, conveys no license under any patent or other right, and makes no representation that the circuits are  
free of patent infringement. Charts and schedules contained here in are only for illustration purposes and may vary  
depending upon a user’s specific application. While the information in this publication has been carefully checked;  
no responsibility, however, is assumed for inaccuracies.  
EXAR Corporation does not recommend the use of any of its products in life support applications where the failure or  
malfunction of the product can reasonably be expected to cause failure of the life support system or to significantly  
affect its safety or effectiveness. Products are not authorized for use in such applications unless EXAR Corporation  
receives, in writing, assurances to its satisfaction that: (a) the risk of injury or damage has been minimized; (b) the  
user assumes all such risks; (c) potential liability of EXAR Corporation is adequately protected under the circum-  
stances.  
Copyright 2006 EXAR Corporation  
Datasheet June 2006  
Reproduction, in part or whole, without the prior written consent of EXAR Corporation is prohibited.  
Rev. 2.11  
101  
XR88C681 -Dual UART CMOS with Two Fully Independent Full Duplex Asynchronous Communications Channels  
HomeNewsCareers  
Investor Relations  
Contact Us  
PartnerNetLogin  
Search  
CommunicationsInterfacePower  
Management  
XR88C681  
Print this page  
Support  
Dual UART CMOS with Two Fully Independent Full Duplex  
Asynchronous Communications Channels  
Specifications  
CH  
2
Info Request  
Features  
CPUInterface  
Intel  
How to Order  
Samples  
Data Rate@5/3.3/2.5V 1.0/na/na  
Two Full Duplex Independent Channels  
Asynchronous Receiver and Transmitter  
Quad-Buffered Receivers, Dual-Buffered Transmitters  
Programmable Stop Bits  
Internal Bit Rate Generators  
External Clock Capability  
Advanced CMOS Low Power Technology  
Available in 40-pin PDIP, 28-pin PDIP, and 44-pin PLCC  
Packages  
Tx/RxFIFO(Bytes)  
Tx/RxFIFOCtrs  
Tx/RxFIFOINT Trig  
AutoRTS/CTS  
IrDaSup  
1/3  
No  
How to Buy  
No/No  
Yes  
No  
Design  
Technical  
Documentation  
5VTolInputs  
No  
Sup V  
5
Pb-Free, RoHS Compliant Versions Offered  
Technical  
FAQs  
CDIP-40,  
PDIP-28,  
PDIP-40,  
PLCC-44  
Pkgs  
Applications  
Product Finder  
Product Tree  
Documents  
Multimedia Systems  
Serial-to-Parallel and Parallel-to-Serial Converter  
DTE for Modem Communication Systems  
Technical  
Support  
Datasheets  
Datasheet  
Version 2.1.1  
June 2006  
2.44 MB  
Packaging  
Description  
Evaluation  
Boards  
The EXAR Dual Universal Asynchronous Receiver and Transmitter  
(DUART) is a data communications device that provides two fully  
independent full duplex asynchronous communications channels in a  
single package. The XR88C681 is designed for use in microprocessor  
based systems and may be used in a polled or interrupt driven  
environment.  
Cross  
References  
Application Notes  
TAN-011, A Comparison  
between Exar’s XR-88C681 and  
Motorola’s MC2681 DUART  
Devices  
Product  
Change  
Notifications  
Version 1.0.0  
December 1996  
64.21 KB  
The XR88C681 device offers a single IC solution for the 8080/85, Z80,  
Z8000, 68xx, and 65xx microprocessor families.  
Obsolescence  
Interface  
Brochure  
The XR88C681 is fabricated using advanced two layer metal, with a high  
performance density EPI/CMOS 1.8µ process to provide high  
performance and low power consumption, and is available in 40-pin PDIP,  
28-pin PDIP, and 44-pin PLCC packages.  
TAN-013, A Comparison  
between Exar’s XR-88C681 with  
Signetics’ SCC2692 DUART  
Devices  
IBIS Models  
BSDL  
Version 1.0.0  
December 1996  
49.61 KB  
ICI  
For UART technical support or to obtain an IBIS model for this product,  
please email Exar's UART Technical Support group.  
UART Finder  
http://www.exar.com/Common/Content/ProductDetails.aspx?ID=XR88C681 (1 of 2) [30-Jul-09 1:52:38 PM]  
XR88C681 -Dual UART CMOS with Two Fully Independent Full Duplex Asynchronous Communications Channels  
Min  
Max  
TAN-014, A Comparison  
between Exar’s XR-88C681 with  
Signetics’ SC26C92 DUART  
Devices  
Version 1.0.0  
December 1996  
Pkg  
Code  
Buy Order  
Now Samples  
Part Number  
RoHS Temp. Temp. Status  
(°C) (°C)  
Quality and  
Reliability  
PLCC44  
PDIP28  
PDIP40  
PDIP40  
PLCC44  
PDIP28  
PDIP40  
PDIP40  
XR88C681CJ-F  
XR88C681CP/28-F  
XR88C681CP/40  
XR88C681CP/40-F  
XR88C681J-F  
0
70  
70  
70  
70  
85  
85  
85  
85  
Active  
Active  
Active  
Active  
Active  
Active  
Active  
Active  
Quality &  
Reliability  
Homepage  
0
0
75.30 KB  
0
DAN-173, Upgrading from  
XR88C681 to XR88C92 and  
XR88C192  
Version 1.0.0  
January 2004  
Material  
Declaration  
Sheets  
-40  
-40  
-40  
-40  
XR88C681P/28-F  
XR88C681P/40  
XR88C681P/40-F  
Quality  
Manual  
41.71 KB  
Part Status Legend  
Quarterly  
Quality &  
Reliability  
Report  
Schematics  
Active - the part is released for sale, standard product.  
EOL (End of Life) - the part is no longer being manufactured, there may or  
may not be inventory still in stock.  
ISA Eval Board Schematic  
Version 2.1.0  
August 2007  
CF (Contact Factory) - the part is still active but customers should check with  
the factory for availability. Longer lead-times may apply.  
RoHS-Green  
Solutions  
104.96 KB  
PRE (Pre-introduction) - the part has not been introduced or the part number  
is an early version available for sample only.  
Evaluation Board Manuals  
OBS (Obsolete) - the part is no longer being manufactured and may not be  
ordered.  
Evaluation Board User's Manual  
Version 2.1.0  
August 2003  
NRND (Not Recommended for New Designs) - the part is not recommended  
for new designs.  
13.43 KB  
Terms of Use | Site Map  
© 2000-2009 Exar Corporation, Fremont California, U.S.A.  
http://www.exar.com/Common/Content/ProductDetails.aspx?ID=XR88C681 (2 of 2) [30-Jul-09 1:52:38 PM]  

相关型号:

XR88C681P/40

CMOS DUAL CHANNEL UART (DUART)
EXAR

XR88C681P28

CMOS DUAL CHANNEL UART (DUART)
EXAR

XR88C681P40

CMOS DUAL CHANNEL UART (DUART)
EXAR

XR88C681XR101524CNN

Telecommunication IC
ETC

XR88C681XR101524M

Telecommunication IC
ETC

XR88C681XR101524N

Telecommunication IC
ETC

XR88C681XR101528CJJ

Telecommunication IC
ETC

XR88C681XR101528CNN

Telecommunication IC
ETC

XR88C681XR101528CPP

Telecommunication IC
ETC

XR88C681XR101528J

Telecommunication IC
ETC

XR88C681XR101528M

Telecommunication IC
ETC

XR88C681XR101528MLL

Telecommunication IC
ETC