| SOC Block ARC_UARTs 0-1 Module Description | Module Overview: This describes all the registers in the ARC VUART Module. This describes all the registers in the ARC VUART Module. The transmit logic waits for the ARCtangent-A5 processor to load a byte into the TX_HOLD register. This byte is transferred into the TX_SHIFT register and the TX_BIT_CTR begins running and the start bit is output on TX_DATA. Once all 10 bits (start, 8 data, stop bits) have been shifted, the next byte is immediately loaded into the TX_SHIFT register if another byte is available in the TX_HOLD register. register. If TXENB=1 then when TXEMPTY=1 the interrupt line is active. TXEMPTY is cleared by writing to the DataTX register. The receive logic is more complex than transmit as it must synchonize to the incoming data stream. RX_DATA is first synchronized twice to eliminate metastability problems. Then the RX_BIT_CTR begins running and the current "phase" of the 4X clock is sampled. This allows sampling of each bit at the 1/2 to 3/4 point in the bit. Once all 10 bits have been shifted in, the start and stop bits are checked and the framing error is activated if they are not correct. The data is transferred into the RX _FIFO register and another byte can be received while the ARCtangent-A5 is reading the RX_FIFO register. If RXENB=1 then when a character is received and placed in the FIFO, RXEMPTY goes to zero and an interrupt is generated. RXOFLO and RXFRAM also set the interrupt line active. RXEMPTY is automatically set/cleared by RxFifo logic. RXEMPTY is set to 1 anytime the RxFIFO is empty. RXEMPTY is cleared when a chracter is received and loaded into the FIFO. Reading the RxDATA register sets RXEMPTY high again once all characters have been read out of the FIFO. RXOFLO and RXFRAM are set by hardware but must be written with zero by software to clear the bit. The VUART has a receive FIFO with a depth of 4. |
| ARC_UART Module Register Summary | Register Name | Base Address | POR |
| ARC_UART0_ID0 - ARC_UART1_ID0 |
0xFFFB0000,
0xFFFB1000
|
0x00000001 |
| ARC_UART0_ID1 - ARC_UART1_ID1 |
0xFFFB0004,
0xFFFB1004
|
0x0000003E |
| ARC_UART0_ID2 - ARC_UART1_ID2 |
0xFFFB0008,
0xFFFB1008
|
0x00000000 |
| ARC_UART0_ID3 - ARC_UART1_ID3 |
0xFFFB000C,
0xFFFB100C
|
0x00000000 |
| ARC_UART0_DATA - ARC_UART1_DATA |
0xFFFB0010,
0xFFFB1010
|
0x00000000 |
| ARC_UART0_STATUS - ARC_UART1_STATUS |
0xFFFB0014,
0xFFFB1014
|
0x00000000 |
| ARC_UART0_BAUD_LO - ARC_UART1_BAUD_LO |
0xFFFB0018,
0xFFFB1018
|
0x00000000 |
| ARC_UART0_BAUD_HI - ARC_UART1_BAUD_HI |
0xFFFB001C,
0xFFFB101C
|
0x00000000 |
| ARC_UART0_ID0 - ARC_UART1_ID0 Registers: | Mode: Normal |
Addresses: 0xFFFB0000, 0xFFFB1000 |
POR: 0x00000001 | |
| Register Overview: The register contains the Configuration number . | ||||
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| Mne | ||||||||||||||||
| Bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Mne | CFG | |||||||||||||||
| Bit(s) | Mne | Access | Name | Field Description |
| 31:6 | RSV | RO | Reserved | Reserved for future use. |
| 5:0 | CFG | RO | Config | This number is set to 0x01 and indicates that the peripheral is the UART. |
| ARC_UART0_ID1 - ARC_UART1_ID1 Registers: | Mode: Normal |
Addresses: 0xFFFB0004, 0xFFFB1004 |
POR: 0x0000003E | |
| Register Overview: This register contains the Not ID Configuration number. | ||||
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| Mne | ||||||||||||||||
| Bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Mne | NCFG | |||||||||||||||
| Bit(s) | Mne | Access | Name | Field Description |
| 31:6 | RSV | RO | Reserved | Reserved for future use. |
| 5:0 | NCFG | RO | NID | Ones complement of the ID0 field. |
| ARC_UART0_ID2 - ARC_UART1_ID2 Registers: | Mode: Normal |
Addresses: 0xFFFB0008, 0xFFFB1008 |
POR: 0x00000000 | |
| Register Overview: This register contains the revision number of the UART. | ||||
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| Mne | ||||||||||||||||
| Bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Mne | NREV | |||||||||||||||
| Bit(s) | Mne | Access | Name | Field Description |
| 31:8 | RSV | RO | Reserved | Reserved for future use. |
| 7:0 | NREV | RO | Revision | Current UART revision. |
| ARC_UART0_ID3 - ARC_UART1_ID3 Registers: | Mode: Normal |
Addresses: 0xFFFB000C, 0xFFFB100C |
POR: 0x00000000 | |
| Register Overview: Reserved for future use. | ||||
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| Mne | ||||||||||||||||
| Bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Mne | ||||||||||||||||
| Bit(s) | Mne | Access | Name | Field Description |
| 31:0 | RSV | RO | Reserved | Reserved for future use. |
| ARC_UART0_DATA - ARC_UART1_DATA Registers: | Mode: Normal |
Addresses: 0xFFFB0010, 0xFFFB1010 |
POR: 0x00000000 | |
| Register Overview: Data Transmitting register or Data Receive register. | ||||
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| Mne | ||||||||||||||||
| Bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Mne | UTXRX | |||||||||||||||
| Bit(s) | Mne | Access | Name | Field Description |
| 31:8 | RSV | RO | Reserved | Reserved for future use. |
| 7:0 | UTXRX | RO | tx_rx |
TX_DATA = Byte data transmitted by the UART when transmitting. (R/W) RX_DATA = Byte received by UART when receiving. |
| ARC_UART0_STATUS - ARC_UART1_STATUS Registers: | Mode: Normal |
Addresses: 0xFFFB0014, 0xFFFB1014 |
POR: 0x00000000 | |
| Register Overview: Status of the UART state machine. | ||||
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| Mne | ||||||||||||||||
| Bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Mne | UTXE | UTXB | URXE | URXF1 | URXF | URXB | URXO | URXM | ||||||||
| ARC_UART0_BAUD_LO - ARC_UART1_BAUD_LO Registers: | Mode: Normal |
Addresses: 0xFFFB0018, 0xFFFB1018 |
POR: 0x00000000 | |
| Register Overview: Baud Rate Low Divisor | ||||
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| Mne | ||||||||||||||||
| Bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Mne | UBDLO | |||||||||||||||
| Bit(s) | Mne | Access | Name | Field Description |
| 31:8 | RSV | RO | Reserved | Reserved for future use. |
| 7:0 | UBDLO | R/W | rate_lo | Baud rate register [7:0]. Baud register values are computed as: Baud register value = (CLK /(BAUD*4))-1. Ex: If CLK=12 MHz and you want 19.2k baud, (12e6/(19.2e3*4))-1=155. |
| ARC_UART0_BAUD_HI - ARC_UART1_BAUD_HI Registers: | Mode: Normal |
Addresses: 0xFFFB001C, 0xFFFB101C |
POR: 0x00000000 | |
| Register Overview: Baud Rate High Divisor | ||||
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| Mne | ||||||||||||||||
| Bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Mne | UBDHI | |||||||||||||||
| Bit(s) | Mne | Access | Name | Field Description |
| 31:8 | RSV | RO | Reserved | Reserved for future use. |
| 7:0 | UBDHI | R/W | rate_high | Baud rate register [15:8]. Baud register values are computed as: Baud register value = (CLK /(BAUD*4))-1. Ex: If CLK=12 MHz and you want 19.2k baud, (12e6/(19.2e3*4))-1=155. |