Visible to Intel only — GUID: tgu1661843620897
Ixiasoft
Visible to Intel only — GUID: tgu1661843620897
Ixiasoft
55.2.6. Receiver Logic
Avalon® memory-mapped host peripherals read the RXFIFO via the Avalon® memory-mapped agent port. The RXFIFO is loaded from the receiver shift register automatically every time a new character is fully received.
These two registers provide double buffering. The RXFIFO can hold previously received character while the subsequent character from RXD stream is being shifted into the receiver shift register.
A host peripheral can monitor the receiver's status by reading the status register's receive character ready (RRDY), RXFIFO overrun error (ROE), RXFIFO underrun error (RUE), RXFIFO full (RFULL), RXFIFO almost full (RAFULL), break detect (BRK), parity error (PE), and framing error (FE) bits. The remaining RXFIFO depth to assert almost full status can be configurable in GUI. The receiver logic checks for five exceptional conditions, which are framing error, parity error, RXFIFO overrun error, RXFIFO underrun error and break detect, in the received data and sets corresponding status register bits. If the RXFIFO overrun error, RXFIFO underrun error, break detect, parity error, or framing error occurs, the corresponding status bit is set and remains HIGH until it is cleared by writing to the status register.
You can only read the data from RXFIFO when the RRDY bits is HIGH, which indicates that RXFIFO is not empty. You will encounter RXFIFO underrun error if you read the data from RXFIFO when the RRDY bits is LOW. When the underrun error occurs, the additional read transaction when RXFIFO is empty will give a default value, which is 0x000F. When RXFIFO is full, the next received character from RXD stream will not be able to fill in RXFIFO and the data will be missing, causing overrun error. The existing data that is stored in RXFIFO will not be overwritten.
You can monitor the RXFIFO filled level by reading the value of RXFIFO_LVL register. Note that when RXFIFO is full, rxfifo level will roll over to 0. Thus, the value 0 of RXFIFO_LVL could either represent RXFIFO is empty only when the status register's receive character ready (RRDY) bit is LOW, otherwise, it means that RXFIFO is full.
The receiver logic automatically detects the correct number of start, stop, and parity bits in the serial RXD stream as required by the RS-232 specification.