![](http://datasheet.mmic.net.cn/390000/SYM53C876_datasheet_16836340/SYM53C876_49.png)
SYM53C876/876E Data Manual
2-15
Functional Description
SCSI Functional Description
Data Paths
The data path through the SYM53C876
depends on whether data is being moved into
or out of the chip, and whether SCSI data is
being transferred asynchronously or synchro-
nously.
Figure 2-4 shows how data is moved to/from
the SCSI bus in each of the different modes.
The following steps determine if any bytes
remain in the data path when the chip halts an
operation:
Asynchronous SCSI Send
1. If the DMA FIFO size is set to 88 bytes,
look at the DFIFO and DBC registers and
calculate if there are bytes left in the DMA
FIFO. To make this calculation, subtract
the seven least significant bits of the DBC
register from the 7-bit value of the DFIFO
register. AND the result with 7Fh for a
byte count between zero and 88.
If the DMA FIFO size is set to 536 bytes
(using bit 5 of the CTEST5 register), sub-
tract the 10 least significant bits of the
DBC register from the 10-bit value of the
DMA FIFO Byte Offset Counter, which
consists of bits 1-0 in the CTEST5 regis-
ter and bits 7-0 of the DMA FIFO regis-
ter. AND the result with 3FFh for a byte
count between 0 and 536.
2. Read bit 5 in the SSTAT0 and SSTAT2
registers to determine if any bytes are left
in the SODL register. If bit 5 is set in the
SSTAT0 or SSTAT2, then the least
significant byte or the most significant
byte in the SODL register is full,
respectively. Checking this bit also reveals
bytes left in the SODL register from a
Chained Move operation with an odd byte
count.
Synchronous SCSI Send
1. If the DMA FIFO size is set to 88 bytes,
look at the DFIFO and DBC registers and
calculate if there are bytes left in the DMA
FIFO. To make this calculation, subtract
the seven least significant bits of the DBC
register from the 7-bit value of the DFIFO
register. AND the result with 7Fh for a
byte count between zero and 88.
If the DMA FIFO size is set to 536 bytes
(using bit 5 of the CTEST5 register), sub-
tract the 10 least significant bits of the
DBC register from the 10-bit value of the
DMA FIFO Byte Offset Counter, which
consists of bits 1-0 in the CTEST5 regis-
ter and bits 7-0 of the DMA FIFO regis-
ter. AND the result with 3FFh for a byte
count between 0 and 536.
2. Read bit 5 in the SSTAT0 and SSTAT2
registers to determine if any bytes are left
in the SODL register. If bit 5 is set in the
SSTAT0 or SSTAT2, then the least
significant byte or the most significant
byte in the SODL register is full,
respectively. Checking this bit also reveals
bytes left in the SODL register from a
Chained Move operation with an odd byte
count.
3. Read bit 6 in the SSTAT0 and SSTAT2
registers to determine if any bytes are left
in the SODR register. If bit 6 is set in the
SSTAT0 or SSTAT2, then the least
significant byte or the most significant
byte in the SODR register is full,
respectively.
Asynchronous SCSI Receive
1. If the DMA FIFO size is set to 88 bytes,
look at the DFIFO and DBC registers and
calculate if there are bytes left in the DMA
FIFO. To make this calculation, subtract
the seven least significant bits of the DBC
register from the 7-bit value of the DFIFO
register. AND the result with 7Fh for a
byte count between 0 and 88.
If the DMA FIFO size is set to 536 bytes