MOTOROLA
MC68349 USER’S MANUAL
8- 13
until the next character time, the receiver places an all-zero character into the receiver
FIFO and sets the corresponding RB and RxRDY bits in the SR.
8.3.2.3 FIFO STACK. The FIFO stack is used in each channel's receiver buffer logic. The
stack consists of three receiver holding registers. The receive buffer consists of the FIFO
and a receiver shift register connected to the RxDx (refer to Figure 8-4). Data is
assembled in the receiver shift register and loaded into the top empty receiver holding
register position of the FIFO. Thus, data flowing from the receiver to the CPU32+ is
quadruple buffered.
In addition to the data byte, three status bits, PE, FE, and RB, are appended to each data
character in the FIFO; OE is not appended. By programming the ERR bit in the channel's
mode register (MR1), status is provided in character or block modes.
The RxRDY bit in the SR is set whenever one or more characters are available to be read
by the CPU32+. A read of the receiver buffer produces an output of data from the top of
the FIFO stack. After the read cycle, the data at the top of the FIFO stack and its
associated status bits are 'popped', and new data can be added at the bottom of the stack
by the receiver shift register. The FIFO-full status bit (FFULL) is set if all three stack
positions are filled with data. Either the RxRDY or FFULL bit can be selected to cause an
interrupt.
In the character mode, status provided in the SR is given on a character-by-character
basis and thus applies only to the character at the top of the FIFO. In the block mode, the
status provided in the SR is the logical OR of all characters coming to the top of the FIFO
stack since the last reset error command. A continuous logical OR function of the
corresponding status bits is produced in the SR as each character reaches the top of the
FIFO stack. The block mode is useful in applications where the software overhead of
checking each character's error cannot be tolerated. In this mode, entire messages are
received, and only one data integrity check is performed at the end of the message. This
mode allows a data-reception speed advantage, but does have a disadvantage since
each character is not individually checked for error conditions by software. If an error
occurs within the message, the error is not recognized until the final check is performed,
and no indication exists as to which character in the message is at fault.
In either mode, reading the SR does not affect the FIFO. The FIFO is 'popped' only when
the receive buffer is read. The SR should be read prior to reading the receive buffer. If all
three of the FIFO's receiver holding registers are full when a new character is received,
the new character is held in the receiver shift register until a FIFO position is available. If
an additional character is received during this state, the contents of the FIFO are not
affected. However, the character previously in the receiver shift register is lost, and the OE
bit in the SR is set when the receiver detects the start bit of the new overrunning
character.
To support control flow capability, the receiver can be programmed to automatically
negate and assert RTS≈. When in this mode, RTS≈ is automatically negated by the
receiver when a valid start bit is detected and the FIFO stack is full. When a FIFO position