DW Apb Uart Db4.02a
DW Apb Uart Db4.02a
4.02a
July 2018
DesignWare DW_apb_uart Databook
Synopsys, Inc.
690 E. Middlefield Road
Mountain View, CA 94043
www.synopsys.com
Contents
Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Related Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Web Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Customer Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Product Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Chapter 1
Product Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.1 DesignWare System Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2 General Product Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.1 DW_apb_uart Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4 Standards Compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.5 Speed and Clock Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.6 Verification Environment Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.7 Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.8 Where To Go From Here . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Chapter 2
Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1 UART (RS232) Serial Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2 9-bit Data Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.1 Transmit Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.2 Receive Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3 RS485 Serial Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.1 DE Assertion and De-assertion Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.2 RS485 Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.3 Sample Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.4 Fractional Baud Rate Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.4.1 Fractional Division Used to Generate Baud Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.4.2 Calculating the Fractional Value Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.5 IrDA 1.0 SIR Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.6 FIFO Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.7 Clock Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.8 Back-to-Back Character Stream Transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.8.1 Dual Clock Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.8.2 Single Clock Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.9 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.10 Auto Flow Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.11 Programmable THRE Interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.12 Clock Gate Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.13 DMA Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.13.1 DMA Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.13.2 Transmit Watermark Level and Transmit FIFO Underflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.13.3 Choosing Transmit Watermark Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.13.4 Selecting DEST_MSIZE and Transmit FIFO Overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2.13.5 Receive Watermark Level and Receive FIFO Overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.13.6 Choosing the Receive Watermark Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.13.7 Selecting SRC_MSIZE and Receive FIFO Underflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.13.8 Handshaking Interface Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.13.9 Potential Deadlock Conditions in DW_apb_uart/DW_ahb_dmac Systems . . . . . . . . . . . . . . . . . . 71
2.14 Reset Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.15 APB Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.15.1 APB 3.0 Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
2.15.2 APB 4.0 Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Chapter 3
Parameter Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.1 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Chapter 4
Signal Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.1 APB Slave Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.2 Application Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.3 FIFO Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.4 Modem Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.5 DMA Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.6 Serial Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.7 Infrared Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4.8 Clock Control Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.9 Debug Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.10 RS485 Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.11 Interrupt Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Chapter 5
Register Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.1 uart_memory_map/uart_address_block Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.1.1 RBR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.1.2 DLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.1.3 THR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.1.4 DLH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.1.5 IER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
5.1.6 FCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.1.7 IIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
5.1.8 LCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.1.9 MCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
5.1.10 LSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Chapter 6
Programming the DW_apb_uart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
6.1 Programing Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
6.2 Programming Flow in RS485 Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
6.2.1 Full Duplex Mode (XFER_MODE=0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
6.2.2 Software-Enabled Half Duplex Mode (XFER_MODE=1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
6.2.3 Hardware enabled Half Duplex mode (XFER_MODE=2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
6.3 Programming Flow in 9-bit Data Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
6.3.1 Transmit Mode 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
6.3.2 Transmit Mode 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
6.3.3 Hardware Address Match Receive mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
6.3.4 Software Address Match Receive mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
6.4 Programming Flow for Fractional Baud Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Chapter 7
Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
7.1 Overview of DW_apb_uart Testbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Chapter 8
Integration Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
8.1 Accessing Top-level Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
8.2 Coherency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
8.2.1 Writing Coherently . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
8.2.2 Reading Coherently . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
8.3 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
8.3.1 Power Consumption, Frequency, and Area Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Appendix A
Synchronizer Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
A.1 Synchronizers Used in DW_apb_uart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
A.2 Synchronizer 1: Simple Double Register Synchronizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
A.3 Synchronizer 2: Simple Double Register Synchronizer with Configurable Polarity Reset . . . . . . . . . . 245
A.4 Synchronizer 3: Simple Double Register Synchronizer with Acknowledge . . . . . . . . . . . . . . . . . . . . . . 246
Chapter B
Internal Parameter Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Appendix C
Application Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Appendix D
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Revision History
This table shows the revision history for the databook from release to release. This is being tracked from
version 3.06b onward.
(Continued)
(Continued)
(Continued)
Preface
This databook provides information that you need to interface the DW_apb_uart component to the
Advanced Peripheral Bus (APB). This component conforms to the AMBA Specification, Revision 2.0 from
Arm®.
The information in this databook includes a functional description, pin and parameter descriptions, and a
memory map. Also provided are an overview of the component testbench, a description of the tests that are
run to verify the component, and synthesis information.
Organization
The chapters of this databook are organized as follows:
■ Chapter 1, “Product Overview” provides a system overview, a component block diagram, basic
features, and an overview of the verification environment.
■ Chapter 2, “Functional Description” describes the functional operation of the DW_apb_uart.
■ Chapter 3, “Parameter Descriptions” identifies the configurable parameters supported by the
DW_apb_uart.
■ Chapter 4, “Signal Descriptions” provides a list and description of the DW_apb_uart signals.
■ Chapter 5, “Register Descriptions” describes the programmable registers of the DW_apb_uart.
■ Chapter 6, “Programming the DW_apb_uart” provides information needed to program the
configured DW_apb_uart.
■ Chapter 7, “Verification” provides information on verifying the configured DW_apb_uart.
■ Chapter 8, “Integration Considerations” includes information you need to integrate the configured
DW_apb_uart into your design.
■ Appendix A, “Synchronizer Methods” documents the synchronizer methods (blocks of synchronizer
functionality) used in DW_abp_uart to cross clock boundaries.
■ Appendix B, “Internal Parameter Descriptions” provides a list of internal parameter descriptions that
might be indirectly referenced in expressions in the Signals, Parameters, or Registers chapters.
■ Appendix C, “Application Notes” includes information you need to integrate the configured
DW_apb_uart into your design.
■ Appendix D, “Glossary” provides a glossary of general terms.
Related Documentation
■ DW_apb_uart Driver Kit User Guide – Contains information on the Driver Kit for the DW_apb_uart;
requires source code license (DWC-APB-Periph-Source)
■ Using DesignWare Library IP in coreAssembler – Contains information on getting started with using
DesignWare SIP components for AMBA 2 and AMBA 3 AXI components within coreTools
■ coreAssembler User Guide – Contains information on using coreAssembler
■ coreConsultant User Guide – Contains information on using coreConsultant
To see a complete listing of documentation within the DesignWare Synthesizable Components for AMBA 2,
see the DesignWare Synthesizable Components for AMBA 2, AMBA 3 AXI, and AMBA 4 AXI Installation Guide.
Information on the DW_apb_uart component in this databook assumes that the reader is fully
Note familiar with the National Semiconductor 16550 (UART) component specification.
Information provided on IrDA SIR mode assumes that the reader is fully familiar with the IrDa
Serial Infrared Physical Layer Specification. This specification can be obtained from the
following website:
http://www.irda.org
Web Resources
■ DesignWare IP product information: http://www.designware.com
■ Your custom DesignWare IP page: http://www.mydesignware.com
■ Documentation through SolvNet: http://solvnet.synopsys.com (Synopsys password required)
■ Synopsys Common Licensing (SCL): http://www.synopsys.com/keys
Customer Support
To obtain support for your product:
■ First, prepare the following debug information, if applicable:
❑ For environment setup problems or failures with configuration, simulation, or synthesis that
occur within coreConsultant or coreAssembler, use the following menu entry:
File > Build Debug Tar-file
Check all the boxes in the dialog box that apply to your issue. This menu entry gathers all the
Synopsys product data needed to begin debugging an issue and writes it to the file
<core tool startup directory>/debug.tar.gz.
❑ For simulation issues outside of coreConsultant or coreAssembler:
■ Create a waveforms file (such as VPD or VCD)
■ Identify the hierarchy path to the DesignWare instance
■ Identify the timestamp of any signals or locations in the waveforms that are not understood
■ Then, contact Support Center, with a description of your question and supplying the requested
information, using one of the following methods:
❑ For fastest response, use the SolvNet website. If you fill in your information as explained, your
issue is automatically routed to a support engineer who is experienced with your product. The
Sub Product entry is critical for correct routing.
Go to http://solvnet.synopsys.com/EnterACall and click Open A Support Case to enter a call.
Provide the requested information, including:
■ Product: DesignWare Library IP
■ Sub Product: AMBA
■ Tool Version: <product version number>
■ Problem Type:
■ Priority:
■ Title: DW_apb_uart
■ Description: For simulation issues, include the timestamp of any signals or locations in
waveforms that are not understood
After creating the case, attach any debug files you created in the previous step.
❑ Or, send an e-mail message to [email protected] (your email will be queued and
then, on a first-come, first-served basis, manually routed to the correct support engineer):
■ Include the Product name, Sub Product name, and Tool Version number in your e-mail (as
identified earlier) so it can be routed correctly.
■ For simulation issues, include the timestamp of any signals or locations in waveforms that are
not understood
■ Attach any debug files you created in the previous step.
❑ Or, telephone your local support center:
■ North America:
Call 1-800-245-8005 from 7 AM to 5:30 PM Pacific time, Monday through Friday.
■ All other countries:
https://www.synopsys.com/support/global-support-centers.html
Product Code
Table 1-1 lists all the components associated with the product code for DesignWare APB Advanced
Peripherals.
Table 1-1 DesignWare APB Advanced Peripherals – Product Code: 3772-0
DW_apb_i2c A highly configurable, programmable master or slave i2c device with an APB slave interface
DW_apb_i2s A configurable master or slave device for the three-wire interface (I2S) for streaming stereo
audio between devices
1
Product Overview
DW_axi_x2x DW_axi_x2x
Arbitration,
DW_axi [2]
Decode, & Mux
DW_apb_uart … DW_apb_i2c
Non-DW
AHB Master
Non-DW
Master
Non-DW
Slave
Arbitration,
DW_axi
Decode, & Mux
VIP
RAM DW_axi_rs
Master/Slave DW_axi_x2h Memory Models
AXI
axi_monitor_vmt
ahb_monitor_vmt
AHB Non-DW AXI
Master/Slave DW_ahb_ictl DW_memctl DW_ahb_dmac
Master/Slave
VIP
Arbitration,
DW_ahbDW_ahb
Decode, & Mux
Application-
DW_ahb_h2h,
DW_ahb_dmac DW_ahb_icm Specific
High-speed
DW_ahb_eh2h Peripherals
Logic
USB, Ethernet,
PCI-X, and so on
DW_ahb [2] Non-DW
Peripherals
apb_monitor_vmt Application-
APB Slave Specific Non-DW
VIP Logic Peripherals
DW_ahb
DW_apb AHB/APB Bridge
You can connect, configure, synthesize, and verify the DW_apb_uart within a DesignWare subsystem using
coreAssembler, documentation for which is available on the web in the coreAssembler User Guide.
If you want to configure, synthesize, and verify a single component such as the DW_apb_uart component,
you might prefer use coreConsultant, documentation for which is available in the coreConsultant User Guide.
■ Asynchronous clock support – To solve problems surrounding CPU data synchronization in relation
to the required serial baud clock requirements, an optional separate serial data clock can be selected.
Full handshaking and level-synchronization guarantees all data crossing between the two clock
domains.
■ Auto flow control – The DW_apb_uart uses a 16750-compatible Auto Flow Control Mode to increase
system efficiency and decrease software load. When FIFOs and the Auto Flow Control are selected
and enabled, the request-to-send (rts_n) output and clear-to-send (cts_n) input automatically control
serial data flow.
■ RS485 interface Support - For integration into systems for which an RS485 interface is required, the
DW_apb_uart can be configured for a software-programmable RS485 mode. If this mode is not
selected, only the UART (RS232 standard) serial data format is available.
■ Programmable Transmit Holding Register Empty (THRE) interrupt – The DW_apb_uart uses a
Programmable Transmitter Holding Register Empty (THRE) Interrupt Mode to increase system
performance. When FIFOs and the THRE Mode are selected and enabled, THRE Interrupts are active
at or below a programmed TX FIFO threshold level. Additionally, the Line Status THRE switches
from indicating TX FIFO empty to TX FIFO full, which allows software to set a threshold that keeps
the transmitter FIFO from running empty whenever there is data to transmit.
■ Serial infrared support – For integration in systems where Infrared SIR serial data format is required,
the DW_apb_uart can be configured for a software-programmable IrDA SIR Mode. If this mode is
not selected, only the UART (RS232 standard) serial data format is available.
■ Increase built-in diagnostic capabilities – To increase the built-in diagnostic capabilities of the
DW_apb_uart, the Modem Control Loopback Mode has been extended. Modem Status bits actually
reflect Modem Control Register deltas, as well as the bits themselves. Additionally, when FIFOs and
Auto Flow Control Mode are selected and enabled, the Modem Control RTS is internally looped back
to the CTS in order to control the transmitter, which allows local testing of the Auto CTS mode.
Furthermore, the controllability of rts_n through the receiver FIFO threshold can be observed using
the RTS Modem Status bit, which allows local verification of the Auto RTS mode.
■ Level 1 and Level 2 debug support – To help with debug issues, optional debug signals are available
on the DW_apb_uart. To comply with level 1 and level 2 debug support requirements, many internal
points of interest to the debugger are available as outputs.
tx_ram_in
DW_apb_uart
tx_ram_wr_addr
tx_ram_out
tx_ram_rd_addr
rx_ram_out FIFO
tx_ram_we_n
Block
(Optional) tx_ram_re_n
pclk
tx_ram_rd_ce_n
rx_ram_in
pwrite
penable rx_ram_wr_addr
psel APB rx_ram_rd_addr
pwdata Interface
rx_ram_we_n
paddr
rx_ram_re_n
rx_ram_rd_ce_n
prdata
intr
Register
dma_tx_acka dma_tx_singlea
Block
dma_rx_acka dma_rx_singlea
dma_tx_reqa
dma_rx_reqa
s_rst_n dtr_n
presetn
Reset
Block rts_n
out1_n
out2_n
cts_n rs485_en
dsr_n RS485 de
Modem
dcd_n Sync Sync Block re
Block Block debug
ri_n
(Optional)
Timeout uart_lp_req_pclk
Detector uart_lp_req_sclk
(Optional)
sclk
baudout_n
scan_mode Baud Clock
Generator
sin sout
Serial Serial
sir_in Transmitter sir_out_n
Receiver
Optional signals denoted with dashed lines a Can either be low-active or high-active
The following list describes each of the major blocks shown in Figure 1-2:
■ Reset block – resets clock domains.
■ APB slave interface – connects to APB bus.
■ Register block – responsible for the main UART functionality including control, status and interrupt
generation.
■ Modem Synchronization block – synchronizes the modem input signal.
■ FIFO block (optional) – responsible for FIFO control and storage—when using internal RAM—or
optionally signaling to control external RAM.
■ Synchronization block (optional) – implemented when the peripheral is configured to have a
separate serial data clock (i.e. two clock implementation).
■ Timeout Detector block (optional) – indicates the absence of character data movement in the receiver
FIFO within a given time period; this is used to generate character timeout interrupts when enabled.
This block can also have optional clock gate enable outputs—uart_lp_req_pclk for single clock
implementations or uart_lp_req_pclk and uart_lp_req_sclk for two clock implementations—in order
to indicate:
❑ TX and RX pipeline is clear; that is, there is no data
❑ No activity has occurred
❑ Modem control input signals have not changed within a given time period
■ Baud Clock Generator – produces the transmitter and receiver baud clock along with the output
reference clock signal (baudout_n).
■ Serial Transmitter – converts the parallel data—written to the UART—into serial form and adds all
additional bits, as specified by the control register, for transmission. These serial data, referred to as a
character, can exit the block in two formats:
❑ Serial UART
❑ IrDA 1.0 SIR
■ Serial Receiver – converts the serial data character—specified by the control register—received in
either the UART or IrDA 1.0 SIR format to parallel form. This block controls:
❑ Parity error detection
❑ Framing error detection
❑ Line break detection
■ RS485 block (optional) – implemented when the peripheral is configured to have an RS485 interface,
responsible for the generation of driver enable (de) and receiver enable (re) signals required by the
RS485 Transceiver.
1.3 Features
■ AMBA APB interface allows integration into AMBA SoC implementations
■ 9-bit serial data support
■ False start bit detection
■ Programmable fractional baud rate support
■ Multi-drop RS485 interface support
■ Configurable parameters for the following:
❑ APB data bus widths of 8, 16 and 32
❑ Additional DMA interface signals for compatibility with DesignWare DMA interface
❑ DMA interface signal polarity
❑ Transmit and receive FIFO depths of 0, 16, 32, 64, 128, 256, 512, 1024, 2048
❑ Internal or external FIFO (RAM) selection
❑ Use of two clocks—pclk and sclk—instead of just pclk
❑ IrDA 1.0 SIR mode support with up to 115.2 Kbaud data rate and a pulse duration (width) as
specified in the IrDA physical layer specification:
width = 3/16 × bit period
❑ IrDA 1.0 SIR low-power reception capabilities
❑ Baud clock reference output signal
❑ Clock gate enable outputs used to indicate that the TX and RX pipeline is clear (no data) and no
activity has occurred for more than one character time, so that clocks can be gated
❑ FIFO access mode—for FIFO testing—enabling the master to write to the receive FIFO and read
from the transmit FIFO
❑ Additional FIFO status registers
❑ Shadow registers to reduce software overhead and also include a software programmable reset
❑ Auto Flow Control mode, as specified in the 16750 standard
❑ Loopback mode that enables greater testing of Modem Control and Auto Flow Control features
(Loopback support in IrDA SIR mode is available)
❑ Transmitter Holding Register Empty (THRE) interrupt mode
❑ Busy functionality
■ Ability to set some configuration parameters during instantiation
■ Configuration identification registers present
Information on the DW_apb_uart component in this databook assumes that the reader is fully
Note familiar with the National Semiconductor 16550 (UART) component specification.
Information provided on IrDA SIR mode assumes that the reader is fully familiar with the IrDa
Serial Infrared Physical Layer Specification. This specification can be obtained from the
following website:
http://www.irda.org
Under each group of tests, two more levels of randomization of the test stimulus are applied – one at the
higher “system” level associated with nature of the test chosen, and one at the “parametric” level associated
with the DW_apb_uart’s registers. In doing so, control and/or intervention of/in the verification process
and scope by the user is reduced to a minimum.
The “system” level of randomization ensures that the DW_apb_uart is, for example, injected with a varying
number of characters of arbitrary contents, as well as the type and number of character corruptions applied.
The “parametric” level of randomization applied to the DW_apb_uart ensures that the DW_apb_uart’s
hardware is programmed as arbitrarily as possible; for example, the line settings for the characters
exchanged during simulations, the varying patterns for the interrupt enables, as well as the various
transmit/receive trigger thresholds.
Once the required set of randomized “system” and “parametric” variables are obtained, three separate
groups of testcode are kicked off concurrently – one for the generating of the stimulus for the DW_apb_uart
and supporting models; one for the overall environment support, such as scoreboarding, messaging, signal
transition detections, and so on; and lastly, one for the checkers.
To support the serial exchanges of characters, in both the IrDA and normal transfer modes, VERA models in
the SIO VIP are used. Two instances of both the SIOTxrx and the SIOMonitor models assist in verifying that
the DW_apb_uart’s hardware functionalities.
To support DMA-controlled transfers to and from the DW_apb_uart, an instance of a AHB DMA BFM is
also included. This acts as an independent AHB master issuing AHB transfer commands separately from
the AHB master model used to control the DW_apb_uart.
1.7 Licenses
Before you begin using the DW_apb_uart, you must have a valid license. For more information, see
“Licenses” in the DesignWare Synthesizable Components for AMBA 2/AMBA 3 AXI Installation Guide.
2
Functional Description
This chapter describes the functional operation of the DW_apb_uart. This chapter includes the following
topics:
■ “UART (RS232) Serial Protocol” on page 25
■ “9-bit Data Transfer” on page 27
■ “RS485 Serial Protocol” on page 31
■ “Fractional Baud Rate Support” on page 38
■ “IrDA 1.0 SIR Protocol” on page 42
■ “FIFO Support” on page 44
■ “Clock Support” on page 45
■ “Back-to-Back Character Stream Transmission” on page 48
■ “Interrupts” on page 50
■ “Auto Flow Control” on page 52
■ “Programmable THRE Interrupt” on page 56
■ “Clock Gate Enable” on page 58
■ “DMA Support” on page 60
■ “Reset Signals” on page 74
■ “APB Interface” on page 75
bits allows two devices to be synchronized. This structure of serial data—accompanied by start and stop
bits—is referred to as a character, as shown in Figure 2-1.
Bit Time
One Character
An additional parity bit can be added to the serial character. This bit appears after the last data bit and
before the stop bits in the character structure in order to provide the DW_apb_uart with the ability to
perform simple error checking on the received data.
The DW_apb_uart Line Control Register (section “LCR” in “Register Descriptions” on page 113) is used to
control the serial character characteristics. The individual bits of the data word are sent after the start bit,
starting with the least-significant bit (LSB). These are followed by the optional parity bit, followed by the
stop bits, which can be 1, 1.5, or 2.
The STOP bit duration implemented by DW_apb_uart can appear longer due to:
Note
■ Idle time inserted between characters for some configurations
■ Baud clock divisor values in the transmit direction
For details on idle time between transmitted transfers, see “Back-to-Back Character Stream
Transmission” on page 48.
All the bits in the transmission are transmitted for exactly the same time duration; the exception to this is the
half-stop bit when 1.5 stop bits are used. This duration is referred to as a Bit Period or Bit Time; one Bit Time
equals sixteen baud clocks.
To ensure stability on the line, the receiver samples the serial input data at approximately the midpoint of
the Bit Time once the start bit has been detected. Because the exact number of baud clocks is known for
which each bit is transmitted, calculating the midpoint for sampling is not difficult; that is, every sixteen
baud clocks after the midpoint sample of the start bit.
Together with serial input debouncing, this sampling helps to avoid the detection of false start bits. Short
glitches are filtered out by debouncing, and no transition is detected on the line. If a glitch is wide enough to
avoid filtering by debouncing, a falling edge is detected. However, a start bit is detected only if the line is
again sampled low after half a bit time has elapsed.
Figure 2-2 shows the sampling points of the first two bits in a serial character.
8 16 16
As part of the 16550 standard, an optional baud clock reference output signal (baudout_n) provides timing
information to receiving devices that require it. The baud rate of the DW_apb_uart is controlled by the serial
clock—sclk or pclk in a single clock implementation—and the Divisor Latch Register (DLH and DLL).
Figure 2-3 shows the timing diagram for the baudout_n output for different divisor values.
N (divisor)
sclk
baudout_n (divisor of 1)
baudout_n (divisor of 2)
baudout_n (divisor of 3)
sout/sin =1 =0 =0
By enabling 9-bit data transfer mode, DW_apb_uart can be used in multi-drop systems where one master is
connected to multiple slaves in a system. The master communicates with one of the slaves. When the master
wants to transfer a block of data to a slave, it first sends an address byte to identify the target slave.
The differentiation between the address/data byte is done based on the 9th bit in the incoming character. If
the 9th bit is set to 0, then the character represents a data byte. If the 9th bit is set to 1, then the character
represents address byte. All the slave systems compare the address byte with their own address and only
the target slave (in which the address has matched) is enabled to receive data from the master. The master
then starts transmitting data bytes to the target slave. The non-addressed slave systems ignore the incoming
data until a new address byte is received.
In Figure 2-4, note that one address is followed by 2 data bytes. The address byte goes out with the 9th bit
(D8) set to 1 and the data bytes go out with 9th bit (D8) set to 0. The parity bit is an optional field.
Configuration of the DW_apb_uart for 9-bit data transfer does the following:
■ LCR_EXT[0] bit is used to enable or disable the 9-bit data transfer.
■ LCR_EXT[1] bit is used to choose between hardware and software based address match in the case of
receive.
■ LCR_EXT[2] bit is used to enable to send the address in the case of transmit.
■ LCR_EXT[3] bit is used to choose between hardware and software based address transmission.
■ TAR and RAR registers are used to transmit address and to match the received address, respectively.
■ THR, RBR, STHR and SRBR registers are of 9-bit which is used to do the data transfers in 9-bit mode.
■ LSR[8] bit is used to indicate the address received interrupt.
Note The 9-bit data mode is supported only when the DWC-APB-Advanced-Source
source license exists.
No
Yes
Halt Tx=1
No
Yes TxFIFO/THR
empty=1
No
The address of the target slave to which the data is to be transmitted is programmed in the TAR register.
You must enable the SEND_ADDR (LCR_EXT[2]) bit to transmit the target slave address present in the TAR
register on the serial UART line with 9th data bit set to 1 to indicate that the address is being sent to the
slave. The DW_apb_uart clears the SEND_ADDR bit after the address character starts transmitting on the
UART line.
The data required to transmit to the target slave is programmed through Transmit Holding Register (THR).
The data is transmitted on the UART line with 9th data bit set to 0 to indicate data is being sent to the slave.
If the application is required to fill the data bytes in the TxFIFO before sending the address on the UART
line (before setting LCR_EXT[2]=1), then it is recommended to set the “Halt Tx” to 1 such that DW_apb_uart
does not start sending out the data in the TxFIFO as data byte. Once the TxFIFO is filled, then program
SEND_ADDR (LCR_EXT[2]) to 1 and then set "Halt Tx" to 0.
(TAR) are not applicable in this mode. The software must pack the 9th bit with 1/0 depending on whether
address/data has to be sent.
Receive character on
the UART line
No
Is address Yes
Clear Address matching flag
Match Flag set to 1?
Is received Yes
Set address match
data[7:0] flag
= RAR?
No
No Yes
PE/FE occurred?
DW_apb_uart receives the character irrespective of whether the 9th bit data is set to 1. If 9th bit of the
received character is set to 1, then it clears internal address match flag and then compares the received 8-bit
character information with the address programmed in the RAR register.
If the received address character matches with the address programmed in the RAR register, then the
address match flag is set to 1 and the received character is pushed to the RxFIFO in FIFO-mode or to RBR
register in non-FIFO mode and the ADDR_RCVD bit in LSR register is set to indicate that the address has
been received.
In case of parity or if a framing error is found in the received address character and if the address is not
matched with the RAR register, then the received address character is still pushed to RxFIFO or RBR
register with ADDR_RCVD and PE/FE error bit set to 1.
The subsequent data bytes (9th bit of received character is set to 0) are pushed to the Rx_FIFO in FIFO mode
or to the RBR register in non-FIFO mode until the new address character is received.
If any break character is received, DW_apb_uart treats it as a special character and pushes to the RxFIFO or
RBR register based on the FIFO_MODE irrespective of address match flag.
The break character can be used to alert the complete system in case all slaves are in
Note sleep mode (entered in to the low power mode). Therefore, the break character is
treated as special character.
5. Driver output Enable Timing (DET) register is used to program the assertion and deassertion timings
of DE signal.
6. TurnAround Timing (TAT) register is used to program the turnaround time from DE to RE and RE to
DE.
Note RS485 interface mode is supported only when the source license DWC-APB-Advanced-
Source exists.
❑ If any transmit transfer is ongoing, then the signal waits until transmit has finished and after the
turnaround time counter ('de to re') has elapsed.
■ Goes in-active under the following conditions:
❑ The current ongoing receive serial transfer is completed.
❑ When RE Enable (RE_EN[0]) of Receiver Output Enable Register is set to 0.
The user must enable either DE or RE but not both at any point of time. As 're' and 'de' signals are mutually
exclusive, the user must ensure that both of them are not programmed to be active at any point of time.
In this mode, the hardware ensures that a proper turnaround time is maintained while switching from 're' to
'de' or from 'de' to 're' (value of turnaround is obtained from the TAT register, in terms of serial clock cycles)
as shown in Figure 2-8 and Figure 2-9.
DE_EN
RE_EN
de
sout DATA TX
re
sin DATA RX
RE to DE turnaround time
DE_EN
RE_EN
de
sout DATA TX 1
re
sin DATA RX
DE to RE turnaround time
sclk
s_rst_n
1
de_to_re TAT
de de assertion time de de-assertion time
re_to_de TAT
sout
2
re
5
sin
3 4
tx_fifo_empty
Figure 2-10 shows the following activities at various points in this scenario:
1. At this point, reset is removed, and de and re signals are driven to their configured reset values
(UART_DE_POL/UART_RE_POL).
2. At this point, the software programs DE_EN and RE_EN register to 1. At this point in time,
tx_fifo_empty * is 1 indicating that there is no data in TX FIFO. Hence, the 'de' signal remains de-
asserted and 're' gets asserted.
* tx_fifo_empty is internal signal of DW_apb_uart
3. At this point, the software fills the TX FIFO and there is no ongoing Receive transfer. Therefore, the
‘re' signal goes low. However, the DW_apb_uart controller waits until 're_to_de' TAT value before
asserting 'de' signal. After the 'de' gets asserted, the transmission of character starts considering the
'de-asserting timing'.
4. At this point, TX FIFO becomes empty. After transmitting the current character, DW_apb_uart de-
asserts the 'de' signal (after de de-assertion time). DW_apb_uart controller waits until 'de_to_re' TAT
values before asserting 're' signal back.
5. At this point, DW_apb_uart controller starts receiving the character.
sclk
5
de
sout
1 4
re
3
sin
2
tx_fifo_empty
Figure 2-11 shows the following activities at various points in this scenario:
1. The software programs DE_EN and RE_EN to 1, thereby asserting the 're' signal. After this, the
DW_apb_uart controller starts receiving the character.
2. The software programs TX FIFO thereby making 'tx_fifo_empty' to go low. However, the
DW_apb_uart controller waits until the current character is received before asserting the 'de' signal.
3. The incoming character is fully received.
4. The 're' signal gets de-asserted, after the STOP bit is fully received.
5. After the 're_to_de' TAT, the 'de' signal gets asserted and the DW_apb_uart controller starts
transmitting after DET timings.
sclk
4
2
de
sout
re
sin 5
1 3
tx_fifo_empty
Figure 2-12 shows the following activities at various points in this scenario:
1. The software programs the TX FIFO thereby making 'tx_fifo_empty' signal to go low.
2. The software programs 'DE_EN' and 'RE_EN' to 1. As the data is already present in the TX FIFO,
DW_apb_uart controller asserts the 'de' signal. DW_apb_uart stars sending the character after the
DET timings.
3. TX FIFO becomes empty.
4. The 'de' signal gets de-asserted after the DET timing. After 'de_to_re' TAT, 're' signal gets asserted.
5. DW_apb_uart controller starts receiving the incoming character.
Note Fractional Baud rate is supported only when the source license DWC-APB-Advanced-Source
exists.
Configuration of the DW_apb_uart for Fractional Baud Rate does the following:
■ The configurable parameter DLF_SIZE is used to choose the width of the register that stores
fractional part of the divisor.
■ The fractional value of the divisor is programmed in the Divisor Latch Fraction Register (DLF)
register. The fractional value is computed by using the (Divisor Fraction value)/(2^DLF_SIZE)
formula. Table 2-1 shows fractional values when the DLF_SIZE=4.
Table 2-1 Divisor Latch Fractional Values
The programmable fractional baud rate divisor enables a finer resolution of baud clock than the
conventional integer divider. The programmable fractional baud clock divider allows for the
programmability of both an integer divisor as well as fractional component. The average frequency of the
baud clock from the fractional baud rate divisor is dependent upon both the integer divisor and the
fractional component, thereby providing a finer resolution to the average frequency of the baud clock.
Where,
BRDI - Integer part of the divisor.
BRDF - Fractional part of the divisor.
133
BRD = = 1.866132364 (6)
16 × 4454400
In (6), the integer and fractional parts are as follows:
■ Integer part (BRDI) = 1
■ Fractional part (BRDF) = 0.866132364
Therefore, Baud Rate Divisor Latch Fractional Value (DLF) is as follows:
DLF 14
GD = BRDI + =1+ = 1.875 (8)
2DLF _SIZE 16
Therefore, the Generated Baud Rate (GBR) is as follows:
GBR - RBR
Error = = 0.004729 (11)
RBR
The error percentage is as follows:
Error % = 0.004729 × 100 = 0.473 (12)
Figure 2-13 Example of Integer and Fractional Division Over 16 Clock Periods
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
sclk
Divisor value Integer Divisor 2
baudout_n
32/16=2
Average over 16 baud clock is sclk divided by 2
baudout_n
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
28/16=1.75
Average over 16 baud clock is sclk divided by 1.75
Information provided on IrDA SIR mode in this section assumes that the reader is fully
Attention familiar with the IrDa Serial Infrared Physical Layer Specifications. This specification can
be obtained from the following website:
http://www.irda.org
The data format is similar to the standard serial—sout and sin—data format. Each data character is sent
serially in this order:
1. Begins with a start bit
2. Followed by 8 data bits
3. Ends with at least one stop bit
Thus, the number of data bits that can be sent is fixed. No parity information can be supplied, and only one
stop bit is used in this mode. Trying to adjust the number of data bits sent or enable parity with the Line
Control Register (LCR) has no effect.
Configuration of the DW_apb_uart for IrDA 1.0 SIR does the following:
■ Bit 6 of the Mode Control Register (MCR) enables or disables the IrDA 1.0 SIR mode.
■ Disabling IrDA SIR mode causes the logic to not be implemented; the mode cannot be activated,
which reduces total gate counts.
■ When IrDA SIR mode is enabled and active, serial data is transmitted and received on the sir_out_n
and sir_in ports, respectively.
To enable SIR mode, write the appropriate value to the MCR register before writing to the LCR
Note register. For details of the recommended programming sequence, see “Programing
Examples” on page 215.
sir_in
As previously mentioned, the DW_apb_uart can be configured to support a low-power reception mode.
When the DW_apb_uart is configured in this mode, it is possible to receive SIR pulses of 1.41 microseconds
(minimum pulse duration), as well as nominal 3/16 of a normal serial bit time. In order to use this low-
power reception mode, you must program the Low Power Divisor Latch (LPDLL/LPDLH) registers.
For all sclk frequencies greater than or equal to 7.37MHz, pulses of 1.41uS are detectable; these pulses
comply with the requirements of the Low Power Divisor Latch registers. However, there are several values
of sclk that do not allow detection of such a narrow pulse, as indicated in Table 2-2.
Table 2-2 Narrow Pulse Exceptions
SCLK Low Power Divisor Latch Register Value Min Pulse Width for Detection *
1.84MHz 1 3.77uS
3.69MHz 2 2.086uS
5.53MHz 3 1.584uS
* 10% has been added to the internal pulse width signal to cushion the effect of pulse reduction due to the
synchronization and data integrity logic so that a pulse slightly narrower than these may be detectable.
When IrDA SIR mode is enabled, the DW_apb_uart operates in a manner similar to when the mode is
disabled, with one exception: data transfers can only occur in half-duplex fashion when IrDA SIR mode is
enabled. This is because the IrDA SIR physical layer specifies a minimum of 10ms delay between
transmission and reception; this 10ms delay must be generated by software.
pclk
tx_ram _rd_addr A0 A1
tx_ram _re_n
This timing diagram illustrated in Figure 2-15 assumes the RAM has a chip select port that is
Note tied to an active value; therefore, the chip is always enabled. This is why the second
synchronous read data appears at the same cycle as the asynchronous read data; that is, the
address for the second read has been sampled along with the chip select on an earlier edge.
Once the tx_ram_re_n output enable asserts the data, the value on the register output is seen
on that same cycle.
Similarly, you can use synchronous RAM for writes, which registers the data at the current address out.
Figure 2-16 shows the timing diagram for RAM writes.
pclk
tx_ram_wr_addr Addr0
tx_ram_we_n
tx_ram_in Data
When FIFO support is selected, an optional programmable FIFO Access mode is available for test purposes,
which allows:
■ Receive FIFO to be written by master
■ Transmit FIFO to be read by master
When FIFO Access mode is not selected, none of the corresponding logic is implemented and the mode
cannot be enabled, reducing overall gate counts.
When FIFO Access mode has been selected it can be enabled with the FIFO Access Register (FAR[0]). Once
enabled, the control portions of the transmit and receive FIFOs are reset and the FIFOs are treated as empty.
Data can be written to the transmit FIFO as normal; however no serial transmission occurs in this mode—
normal operation halted—and thus no data leave the FIFO. The data that has been written to the transmit
FIFO can be read back with the Transmit FIFO Read (TFR) register, which when read gives the current data
at the top of the transmit FIFO.
Similarly, data can be read from the receive FIFO as normal. Since the normal operation of the
DW_apb_uart is halted in this mode, data must be written to the receive FIFO so the data can be read back.
Data is written to the receive FIFO using the Receive FIFO Write (RFW) register. The upper two bits of the
10-bit register are used to write framing error and parity error detection information to the receive FIFO, as
follows:
■ RFW[9] indicates framing error
■ RFW[8] indicates parity error
Although these bits cannot be read back through the Receive Buffer Register, they can be checked by
reading the Line Status Register and checking the corresponding bits when the data in question is at the top
of the receive FIFO.
When a two-clock design is chosen, a synchronization module is implemented for synchronization of all
control and data across the two-system clock boundaries; this is illustrated in Figure 1-1.
The RTL diagram for the data synchronization module is shown in Figure 2-17; this module can have
pending data capability.
The timing diagram shown in Figure 2-18 shows the data synchronization process.
start
busy
pending
data_avail_togg
finish
The arrival of new source domain data is indicated by the assertion of start. Since data is now available for
synchronization, the process is started and busy status is set. If start is asserted while busy and pending data
capability has been selected, the new data is stored.
When no longer busy, the synchronization process starts on the stored pending data. Otherwise the busy
status is removed when the current data has been synchronized to the destination domain and the process
continues. If only one clock is implemented, all synchronization logic is absent and signals are simply
passed through this module.
There are two types of signal synchronization:
■ Data-synchronized signals – full synchronization handshake takes place on signals
■ Level-synchronized signals – signals are passed through two destination clock registers
Both synchronization types incur additional data path latencies. However, this additional latency has no
negative affect on received or transmitted data, other than to limit how much faster sclk can be in relation to
pclk for back-to-back serial communications with no idle assertion.
A serial clock that exceeds this limit does not leave enough time for a complete incoming character to be
received and pushed into the receiver FIFO. To ensure that you do not exceed the limit, the following
equation must hold true:
((2 * pclk_cycles) + 4) < (39 * (Baud Divisor))
Where:
pclk_cycles is expressed in sclk cycles
For example, if the Baud Divisor is programmed to 1 and a serial clock is 18 times faster than the pclk signal,
the equation becomes:
((2 * 18) + 4) < (39 * 1) ≥ 40 < 39
Thus the equation does not hold true, and the ratio 18:1 (sclk:pclk) exceeds the limit at this Baud rate.
Here are a few things to keep in mind:
■ A divisor greater than 1 at a clock ratio of 18:1 (sclk:pclk) does not cause data corruption issues due to
synchronization, as the synchronization process has more time to transfer the received data to the
peripheral clock domain before the next character bit is received.
In most cases, however, the pclk signal is faster than sclk, so this should never be an issue.
■ There is slightly more time required after initial serial control register programming before serial
data can be transmitted or received.
■ The serial clock modules must have time to see new register values and reset their respective state
machines. This total time is guaranteed to be no more than eight clock cycles of the slower of the two
system clocks. Therefore, no data should be transmitted or received before this maximum time
expires, after initial configuration.
Each NOP usually takes one bus cycle to retire. However, the actual number of NOPs that need to be
inserted in the assembly code is dependent on the maximum number of instructions that can be
retired in a single cycle. So for example, if the processor uses a 4-dispatch pipe, then four NOPs could
potentially retire in one bus cycle. Assuming that the next opcode (NOP) is fetched as per the slower
clock—with eight clock cycles of the slower clock as the reference—a minimum of thirty-two NOPs
need to be included in the assembly code after a software reset.
In systems where only one clock is implemented, there are no additional latencies.
sclk S
S
pclk S
S
sout S
S
tx_bclk_cnt 0xc 0xd 0xe 0xf 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x0 S
S 0xF 0x0 0x1
start_tx S
S
5
4 S
S
cnt16
S
S
1
sync_tx_start
tx_start 3 S
S
S
S
2
sync_tx_fnish
S
S
tx_finish
S
S
S
S
1. The baud divisor is set to 1 ({DLH, DLL} = 1), so every sclk is a baud clock cycle. The transmit state
machine changes state every sixteen baud clocks—eight in the case of a half STOP bit. At this point in
Figure 2-19, after 16 baud clock cycles of the STOP1 state, the state machine enters the IDLE state on
the next cycle because start_tx is not yet asserted.
2. One baud clock before the end of the STOP state, the transmit state machine decodes that the current
character is complete and asserts tx_finish, which is synchronized to the pclk domain to become
sync_tx_finish; this synchronization accounts for the “1sclk + 3pclk” term in sync_delay.
3. In the pclk domain, there is a one-pclk cycle delay—”1pclk” term in sync_delay—before the signal
tx_start is asserted from the assertion of sync_tx_finish. Tx_start must then be synchronized to the
sclk domain—”1pclk + 3sclk” term in sync_delay—to instruct the state machine to commence the
START bit of the next character.
4. Start_tx asserts in the sclk domain, and causes the baud clock counter (tx_bclk_cnt) to go to 0.
5. Once sixteen baud clocks have been counted, the state machine can transition into the START state,
and one cycle later sout is de-asserted.
2.9 Interrupts
Assertion of the DW_apb_uart interrupt output signal (intr)—a positive-level interrupt—occurs whenever
one of the several prioritized interrupt types are enabled and active.
When an interrupt occurs, the master accesses the IIR register.
The following interrupt types can be enabled with the IER register:
■ Receiver Error
■ Receiver Data Available
■ Character Timeout (in FIFO mode only)
■ Transmitter Holding Register Empty at/below threshold (in Programmable THRE interrupt mode)
■ Modem Status
■ Busy Detect Indication
These interrupt types are explained in detail in Table 2-3. Also, see Appendix 4, “Signal Descriptions” for
more information on interrupts.
Table 2-3 Interrupt Control Functions
Table 1:
Interrupt ID Interrupt Set and Reset Functions
Priority Interrupt
Bit 3 Bit 2 Bit 1 Bit 0 Level Type Interrupt Source Interrupt Reset Control
0 0 0 1 – None None –
0 1 0 0 Second Received Receiver data available (non- Reading the receiver buffer
data FIFO mode or FIFOs register (non-FIFO mode or
available disabled) or RCVR FIFO FIFOs disabled) or the FIFO
trigger level reached (FIFO drops below the trigger level
mode and FIFOs enabled) (FIFO mode and FIFOs
enabled)
Table 1:
Interrupt ID Interrupt Set and Reset Functions
Priority Interrupt
Bit 3 Bit 2 Bit 1 Bit 0 Level Type Interrupt Source Interrupt Reset Control
0 0 1 0 Third Transmit Transmitter holding register Reading the IIR register (if
holding empty (Prog. THRE Mode source of interrupt); or, writing
register disabled) or XMIT FIFO at or into THR (FIFOs or THRE
empty below threshold (Prog. THRE Mode not selected or disabled)
Mode enabled) or XMIT FIFO above threshold
(FIFOs and THRE Mode
selected and enabled).
0 0 0 0 Fourth Modem Clear to send or data set Reading the Modem status
status ready or ring indicator or data register
carrier detect. Note that if
auto flow control mode is
enabled, a change in CTS
(that is, DCTS set) does not
cause an interrupt.
Figure 2-20 shows a block diagram of the Auto Flow Control functionality.
DW_apb_uart 1 DW_apb_uart 2
Auto CTS
Threshold
rts_n cts_n Flow
Detection Auto RTS Control
Flow
Control
rts cts
Threshold
Auto CTS
cts_n rts_n Detection
Flow Auto RTS
Control Flow
Control rts
cts
the other UART stops sending serial data until the receiver FIFO has available space; that is, until it is
completely empty.
The selectable receiver FIFO threshold values are:
❑ 1
❑ ¼
❑ ½
❑ 2 less than full
Since one additional character can be transmitted to the DW_apb_uart after rts_n has become
inactive—due to data already having entered the transmitter block in the other UART—setting the
threshold to “2 less than full” allows maximum use of the FIFO with a safety zone of one character.
Once the receiver FIFO becomes completely empty by reading the Receiver Buffer Register (RBR),
rts_n again becomes active (low), signaling the other UART to continue sending data.
Even if everything else is selected and the correct MCR bits are set, if the FIFOs are disabled
Note through FCR[0] or the UART is in SIR mode (MCR[6] is set to 1), Auto Flow Control is also
disabled. When Auto RTS is not implemented or disabled, rts_n is controlled solely by
MCR[1].
This character
iis received because rts_n is not detected before next
character entered the sending-UART’s transmitter
rts_n
When Auto CTS is enabled (active), the DW_apb_uart transmitter is disabled whenever the cts_n
input becomes inactive (high); this prevents overflowing the FIFO of the receiving UART.
If the cts_n input is not inactivated before the middle of the last stop bit, another character is
transmitted before the transmitter is disabled. While the transmitter is disabled, the transmitter FIFO
can still be written to, and even overflowed.
Therefore, when using this mode, the following happens:
■ UART status register can be read to check if transmit FIFO is full (USR[1] set to 0)
■ Current FIFO level can be read using TFL register
■ Programmable THRE Interrupt mode must be enabled to access “FIFO full” status using Line Status
Register (LSR)
When using the “FIFO full” status, software can poll this before each write to the Transmitter FIFO; for
details, see “Programmable THRE Interrupt” on page 56. When the cts_n input becomes active (low) again,
transmission resumes.
When everything else is selected, if the FIFOs are disabled using FCR[0], Auto Flow Control is
Note also disabled. When Auto CTS is not implemented or disabled, the transmitter is unaffected by
cts_n.
Figure 2-22 illustrates a timing diagram that shows the Auto CTS operation.
sout start Data Bits stop start Data Bits stop start Data Bits stop
Disabled
cts_n
Figure 2-23 Flowchart of Interrupt Generation for Programmable THRE Interrupt Mode
THRE Interrupt N
Enabled?
The threshold level is programmed into FCR[5:4]. Available empty thresholds are:
■ empty
■ 2
■ ¼
■ ½
Selection of the best threshold value depends on the system's ability to begin a new transmission sequence
in a timely manner. However, one of these thresholds should be optimal for increasing system performance
by preventing the transmitter FIFO from running empty. For threshold setting details, see section “FCR” in
“Register Descriptions” on page 113.
In addition to the interrupt change, the Line Status Register (LSR[5]) also switches from indicating that the
transmitter FIFO is empty to the FIFO being full. This allows software to fill the FIFO for each transmit
sequence by polling LSR[5] before writing another character. The flow then allows the transmitter FIFO to
be filled whenever an interrupt occurs and there is data to transmit, rather than waiting until the FIFO is
completely empty. Waiting until the FIFO is empty causes a reduction in performance whenever the system
is too busy to respond immediately. Further system efficiency is achieved when this mode is enabled in
combination with Auto Flow Control.
Even if everything else is selected and enabled, if the FIFOs are disabled using the FCR[0] bit, the
Programmable THRE Interrupt mode is also disabled. When not selected or disabled, THRE interrupts and
the LSR[5] bit function normally, signifying an empty THR or FIFO. Figure 2-24 illustrates the flowchart of
THRE interrupt generation when not in programmable THRE interrupt mode.
Figure 2-24 Flowchart of Interrupt generation when not in Programmable THRE Interrupt Mode
THRE Interrupt N
Enabled?
N
TX FIFO Not Empty
or IIR Read?
16
cycles
pclk
sin Stop
sout
busy (FSR[0])
baud_clk_cnt
0 1 2 110 111 0 1
Internal
uart_lp_req
When the assertion criteria are no longer met, the clock gate enable signals are de-asserted and the clocks is
resumed under any of these conditions:
■ Either sin signal or sir_in signal goes low
■ Write to any of registers is performed
■ Modem control input signals have changed when DW_apb_uart is in low-power (sleep) mode
The clock gate enable signals are de-asserted asynchronously on arrival of earlier mentioned events because
a clock is not available to synchronize the events. Therefore, user can decide to include 2-flop syncs
externally before the clock gate cell to avoid metastability issues for clock-gate latch.
Note A read to any register does not de-assert the clock gate enable signals. The pclk clock needs
to be enabled to read any of the registers in low-power mode.
The time taken for the clocks to resume is important in preventing receive data synchronization problems,
due to the DW_apb_uart RX block sampling:
1. At mid-point of each bit period—after approximately 8 baud clocks—in UART (RS323) mode.
2. After that, every 16 baud clocks for a baud divisor of 1 that is 16 sclks; for a single clock
implementation, this is 16 pclks.
Thus, if eight or more sclk periods pass before the serial clock starts up again, the DW_apb_uart can get out
of synchronization with the serial data it is receiving; that is, the receiver can sample into the second bit
period, and if it is still 0, the receiver uses this as the start bit, and so on.
In order to avoid this problem, the clock should be resumed within five clock periods of the baud clock,
which is the same as sclk if the baud divisor is set to 1; this is worst-case. If the divisor is greater, it gives a
greater number of sclk cycles available before the clock must resume. This means a sample point at the 13
baud clock (at the latest) out of the 16 that are transmitted for each bit period of the character in non-SIR
mode.
Figure 2-26 shows the timing diagram that illustrates the previous scenario.
sin
uart_lp_req
This synchronization problem is magnified in SIR mode because the pulse width is only 3/16 of a bit
period—three baud clocks, which for a divisor of 1 is three sclks; thus, the pulse can be missed completely.
The clocks must resume before three baud clock periods elapse. However, if the first character received
while in sleep mode is used only for wake-up reasons and the actual character value is unimportant, this
may not become a problem.
When the DW_apb_uart is configured to have two clocks, if the timing of the received signal is not affected
by the synchronization problem, then the minimum time to receive a character—if the baud divisor is 1—is
112 sclks:
1 start_bit + 5 data_bits + 1 stop_bit = 7 × 16 =112
Therefore, the pclk must be available before 112 sclk cycles pass in order for the received character to be
synchronized to the pclk domain and stored in the RBR (in non-FIFO mode) or the RX FIFO (in FIFO mode).
Note Only DMA mode 0 is available when FIFOs are not implemented or disabled.
Figure 2-27 shows a single block transfer, where the block size programmed into the DMA Controller is 12
and the burst transaction length is set to 4.
12 Data Items
DMA
Multi-block Transfer
Level
12 Data Items
DMA
Block
Level
In this case, the block size is a multiple of the burst transaction length. Therefore, the DMA block transfer
consists of a series of burst transactions. If the DW_apb_uart makes a transmit request to this channel, four
data items are written to the DW_apb_uart transmit FIFO. Similarly, if the DW_apb_uart makes a receive
request to this channel, four data items are read from the DW_apb_uart receive FIFO. Three separate
requests must be made to this DMA channel before all twelve data items are written or read.
When the block size programmed into the DMA Controller is not a multiple of the burst transaction length,
as shown in Figure 2-28, a series of burst transactions followed by single transactions are needed to
complete the block transfer.
Figure 2-28 Breakdown of DMA Transfer into Single and Burst Transactions
15 Data Items
DMA
Multi-Block Transfer
Level
15 Data Items
DMA
Block
Level
DMA Burst DMA Burst DMA Burst DMA Single DMA Single DMA Single
Transaction 1 Transaction2 Transaction 3 Transaction 1 Transaction 2 Transaction 3
4 Data Items 4 Data Items 4 Data Items 1 Data Item 1 Data Item 1 Data Item
FIFO_MODE = 16
FIFO_MODE − decoded level
Transmit FIFO EMPTY of UART.FCR[5:4] = 14
Watermark level
DMA
UART.FCR[5:4] = 01 Data In Controller
Data Out FULL
UART Transmit FIFO
■ Transmit FIFO watermark level = decoded level of UART.FCR[5:4] = 2
■ DMA.CTLx.DEST_MSIZE = FIFO_MODE − UART.FCR[5:4] = 14
■ UART transmit FIFO_MODE = 16
■ DMA.CTLx.BLOCK_TS = 56
Therefore, the number of burst transactions needed equals the block size divided by the number of data
items per burst:
DMA.CTLx.BLOCK_TS/DMA.CTLx.DEST_MSIZE = 56/14 = 4
The number of burst transactions in the DMA block transfer is 4., but the watermark level—decoded level of
UART.FCR[5:4]—is quite low. Therefore, the probability of a UART underflow is high where the UART
serial transmit line needs to transmit data, but where there is no data left in the transmit FIFO. This occurs
because the DMA has not had time to service the DMA request before the transmit FIFO becomes empty.
Adhering to equation (2) reduces the number of DMA bursts needed for a block transfer, which in turn
improves AMBA bus utilization.
The transmit FIFO is not full at the end of a DMA burst transfer if the UART has successfully
Note transmitted one data item or more on the UART serial transmit line during the transfer.
EMPTY
Receive FIFO
Watermark level DMA
Data Out Controller
FULL UART.decoded level
Data In of FCR[7:6]
If the number of data items in the receive FIFO is equal to the source burst length at the time the burst
request is made – DMA.CTLx.SRC_MSIZE – the receive FIFO can be emptied, but not underflowed, at the
completion of the burst transaction. For optimal operation, DMA.CTLx.SRC_MSIZE should be set at the
watermark level; that is:
DMA.CTLx.SRC_MSIZE = decoded level of FCR[7:6] (3)
Adhering to equation (3) reduces the number of DMA bursts in a block transfer, and this in turn can
improve AMBA bus utilization.
The receive FIFO is not empty at the end of the source burst transaction if the UART has
Note successfully received one data item or more on the UART serial receive line during the burst.
pclk
hclk
burst transaction request
dma_tx_req_n
burst transaction complete
dma_tx_ack_n
Figure 2-33 shows two back-to-back burst transactions where the hclk frequency is twice the pclk frequency.
hclk
pclk
burst transaction request burst transaction request
dma_rx_req_n
burst transaction complete burst transaction complete
dma_rx_ack_n
The burst transaction request signals, dma_tx_req_n and dma_rx_req_n, are generated in the
Note DW_apb_uart off pclk and sampled in the DW_ahb_dmac by hclk. The acknowledge signals,
dma_tx_ack_n and dma_rx_ack_n, are generated in the DW_ahb_dmac off hclk and sampled
in the DW_apb_uart of pclk. The handshaking mechanism between the DW_ahb_dmac and
the DW_apb_uart supports quasi-synchronous clocks; that is, hclk and pclk must be phase-
aligned, and the hclk frequency must be a multiple of the pclk frequency.
Block transfer:
DMA.CTLx.SRC_MSIZE = decoded level of UART.FCR[7:6] = 4
DMA.CTLx.BLOCK_TS = 15
For the example in Figure 2-27, with the block size set to 12, the dma_rx_req_n signal is asserted
when four data items are present in the receive FIFO. The dma_rx_req_n signal is asserted three
times during the DW_apb_uart serial transfer, ensuring that all 12 data items are read by the
DW_ahb_dmac. All DMA requests read a block of data items and no single DMA transactions are
required. The block transfer is made up of three burst transactions.
The first 12 data items are transferred using three burst transactions. But when the last three data
frames enter the receive FIFO, the dma_rx_req_n signal is not activated because the FIFO level is
below the watermark level. The DW_ahb_dmac samples dma_rx_single_n and completes the DMA
block transfer using three single transactions. The block transfer is made up of three burst
transactions, followed by three single transactions.
Figure 2-34 shows a single transaction. The handshaking loop is as follows:
a. dma_tx_single_n/dma_rx_single_n asserted by DW_apb_uart
b. dma_tx_ack_n/dma_rx_ack_n asserted by DW_ahb_dmac
c. dma_tx_single_n/dma_rx_single_n de-asserted by DW_apb_uart
d. dma_tx_ack_n/dma_rx_ack_n de-asserted by DW_ahb_dmac
m0 m1 m2 n0 n1 n2 n3 n4
pclk
hclk
dma_rx_req_n
single transaction complete
dma_rx_ack_n
dma_rx_single_n
Figure 2-35 shows a burst transaction, followed by three back-to-back single transactions, where the hclk
frequency is twice the pclk frequency.
hclk
pclk
burst transaction complete
dma_tx_req_n
burst transaction request
dma_tx_ack_n Single transaction complete Single transaction complete
Single transaction complete
ma_tx_single_n
The single transaction request signals, dma_tx_single_n and dma_rx_single_n, are generated
Note in the DW_apb_uart on the pclk edge and sampled in DW_ahb_dmac on hclk. The
acknowledge signals, dma_tx_ack_n and dma_rx_ack_n, are generated in the
DW_ahb_dmac on the hclk edge hclk and sampled in the DW_apb_uart on pclk. The
handshaking mechanism between the DW_ahb_dmac and the DW_apb_uart supports quasi-
synchronous clocks; that is, hclk and pclk must be phase aligned and the hclk frequency must
be a multiple of pclk frequency.
2.13.9.1 Deadlock When DMA Burst Transaction Length Smaller Than Rx FIFO Threshold
When operating in autoflow control mode with the RTC flow trigger threshold is disabled, the
DW_apb_uart de-asserts rts_n when the Rx FIFO threshold is reached, and it asserts it again when the Rx
FIFO is empty. At the same time, the DW_apb_uart asserts dma_rx_req_n, requesting a burst transaction
from the DW_ahb_dmac.
If the DMA burst transaction length is equal to or greater than the Rx FIFO threshold, the DW_ahb_dmac
reads from the Rx FIFO until it is empty, causing rts_n to be re-asserted. This in turn allows more data to be
received by the DW_apb_uart and the Rx FIFO to fill again.
However, if the DW_ahb_dmac burst transaction length is smaller than the DW_apb_uart Rx FIFO
threshold, some data is left in the DW_apb_uart Rx FIFO after completion of the burst transaction. This
prevents the rts_n signal from being asserted.
Because the amount of data in the Rx FIFO is below the threshold, the DW_apb_uart asserts the
dma_rx_single_n signal—instead of dma_rx_req_n—requesting a DMA single transaction from the
DW_ahb_dmac. However, unless it is operating in the single transaction region, the DW_ahb_dmac ignores
single transaction requests.
A deadlock condition is then reached:
■ DW_apb_uart does not receive any extra characters because the rts_n signal is de-asserted; no data
can be pushed into the Rx FIFO to fill it up to the threshold level again and generate a new burst
transaction request from the DW_ahb_dmac; only single transaction requests can be generated.
■ Unless it has reached the single transaction region, the DW_ahb_dmac ignores single transaction
requests and does not read from the Rx FIFO; the Rx FIFO cannot be emptied, which prevents the
rts_n signal from being asserted again
Table 2-4 illustrates this condition.
Table 2-4 DW_apb_uart/DW_ahb_dmac Settings for Deadlock When Transaction Less Than Rx FIFO Threshold
The timing diagram in Figure 2-36 illustrates the sequence of events that lead to this deadlock condition.
T0 T1 T2 T3 T4 T5 T6
pclk
hclk
dma_rx_req_n
dma_rx_single_n
dma_rx_ack_n
sclk
rts_n
Rx FIFO Level 0 0 0 0 1 1 29 30 30 14 14 14 14 14 14
For the sake of simplicity, pclk, hclk and sclk are shown to be identical; however, this is not a
Note constraint for the occurrence of deadlock. Additionally, in the interest of simplicity, some events
are represented as taking place simultaneously; however, in reality this might not be strictly
the case and these events can be separated by a small number of clock cycles.
2.13.9.2 Deadlock When DMA Burst Transaction Length Equal To Rx FIFO Threshold
If the DMA burst transaction length is identical to the DW_apb_uart Rx FIFO threshold, there is risk of a
deadlock condition occurring when a character is received after rts_n is de-asserted.
The DW_apb_uart de-asserts rts_n when the Rx FIFO threshold is reached. However, it is possible the
component at the other end of the line starts transmitting a new character before it detects the de-assertion
of its cts_n input. When this happens, the character transmission completes normally, which means an extra
character is received and pushed into the Rx FIFO (unless it is already full).
At the same time that rts_n is de-asserted, the DW_apb_uart asserts dma_rx_req, requesting a DMA burst
transaction from the DW_ahb_dmac. After the DW_ahb_dmac completes this burst transaction—with
length equal to the Rx FIFO threshold—there is one character left in the Rx FIFO, preventing rts_n from
being asserted again.
The DW_apb_uart asserts the dma_rx_single_n signal—instead of dma_rx_req_n—requesting a DMA
single transaction from the DW_ahb_dmac. However, unless it is operating in the single-transaction region,
the DW_ahb_dmac ignores single-transaction requests.
A deadlock condition is then reached:
■ The DW_apb_uart does not receive any extra characters because the rts_n signal is de-asserted. No
data can be pushed into the Rx FIFO to fill it up to the threshold level again and generate a new burst
transaction request from the DW_ahb_dma; only single-transaction requests can be generated.
■ Unless it has reached the single-transaction region, the DW_ahb_dmac ignores single-transaction
requests and does not read from the Rx FIFO. The Rx FIFO cannot be emptied, which prevents the
rts_n signal from being asserted again.
This deadlock condition can be avoided if:
■ The Rx FIFO threshold level is set to a value smaller than the DMA burst transaction size. This
ensures that the Rx FIFO is always empty after a DMA burst transaction completes, regardless of
whether or not one extra character is received and rts_n is asserted accordingly.
■ The DMA block size is set to a value smaller than twice the DMA burst transaction length. This
guarantees that the DW_ahb_dmac enters the single transaction region after the DMA burst
transaction completes. It then accepts single transaction requests from the DW_apb_uart, allowing
the Rx FIFO to be emptied.
This deadlock condition is not expected to occur frequently under normal operating conditions.
Note A timeout interrupt would be generated in this case, which can be used to detect the
occurrence of this deadlock condition.
1. Assert s_rst_n and presetn; the sequence of asserting these two signals and their timing relationship
with sclk and pclk are not important
2. De-assert s_rst_n synchronously with sclk
3. De-assert presetn synchronously with pclk
Both reset signals should be active for at least three cycles of the respective clock signal.
Figure 2-37 Read/Write Buses Between the DW_apb and an APB Slave
The data, control and status registers within the DW_apb_uart are byte-addressable. The maximum width
of the control or status register (except for registers mentioned in Table 2-5) in the DW_apb_uart is 8 bits.
Therefore, if the APB data bus is 8, 16, or 32 bits wide, all read and write operations to the DW_apb_uart
control and status registers require only one APB access.
The maximum width (excluding reserved bits) of registers mentioned in Table 2-5 can vary from 8 bits to 32
bits. Depending on these registers width and the APB data bus width (that is, the APB_DATA_WIDTH
parameter), the APB interface may need to perform single or multiple accesses to registers mentioned in
Table 2-5.
Table 2-5 Lists of Registers with Width (Excluding Reserved Bits) Greater than 8 Bits
Register Name
Register Name
Chapter “Integration Considerations” on page 229 provides information about reading to and writing from
the APB interface.
The APB3 and APB4 register accesses to the DW_apb_uart peripheral are discussed in the following
sections:
■ “APB 3.0 Support” on page 76
■ “APB 4.0 Support” on page 77
❑ Transmitter FIFO is full: The APB transaction completes and PREADY is asserted if the data is
read out of the Tx FIFO before the register read/write timeout happens For more information on
timeout, see Slave Error Response, PSLVERR on page 77.
■ PSLVERR - The PSLVERR signal is enabled when the PSLVERR_RESP_EN parameter is set to 1, so
that DW_apb_uart provides any slave error response from register interface (if required). The
DW_apb_uart generates an error response under the following conditions:
❑ Registers protected through PPROT (see Table 2-6) are accessed without relevant authorization
levels. For more information, see “APB 4.0 Support” on page 77.
❑ The DW_apb_uart stalls the APB transaction by pulling PREADY low, as the Receiver FIFO is
empty or Transmitter FIFO is full. To avoid locking of the bus for large number of clock cycle, a
timeout option is provided through configuration parameter REG_TIMEOUT_VALUE. The
timeout is triggered under following conditions:
■ Receiver FIFO remains empty or
■ Transmitter FIFO remains full
If the duration is equal to the timeout period that is REG_TIMEOUT_VALUE, then APB interface
asserts PSLVERR signal to indicate the register read/write timeout.
■ When FIFO access mode is enabled the data that is written to the RFWD filed of RFW
Note register is pushed into the RBR register.
■ When APB_DATA_WIDTH=8, two APB writes are required to write the RFW register, since
its width is 9 bits. In this scenario, RBR register is updated after the second APB write (with
PSTRB[1]=1) into the RFW register.
31 24 23 16 15 8 7 0
■ PPROT - This signal supports the protection feature of the APB 4.0 protocol. The APB 4.0 protection
feature is supported on the registers listed in Table 2-6. The protection level register
(UART_PROT_LEVEL) defines the APB4 protection level, that is the protected registers are updated
only if the PPROT privilege is more than the protection privilege programmed in the protection level
register. Otherwise, PSLVERR is asserted and the protected register is not updated, provided that
PSLVERR_RESP_EN is set as high. If the PSLVERR_RESP_EN is low, then protection feature and
PSLVERR generation logic is not implemented.
Table 2-6 List of Registers Protected Through PPROT
Register Name
Table 2-7 PPROT Level, Protection Level Programmed in UART_PROT_LEVEL, and Slave Error Response
X X 0 X X 1 HIGH
X 1 X X 0 X HIGH
0 X 1 1 X X HIGH
3
Parameter Descriptions
This chapter details all the configuration parameters. You can use the coreConsultant GUI configuration
reports to determine the actual configured state of the controller. Some expressions might refer to TCL
functions or procedures (sometimes identified as <functionof>) that coreConsultant uses to make
calculations. The exact formula used by these TCL functions is not provided in this chapter. However, when
you configure the controller in coreConsultant, all TCL functions and parameters are evaluated completely;
and the resulting values are displayed where appropriate in the coreConsultant GUI reports.
The parameter descriptions in this chapter include the Enabled: attribute which indicates the values
required to be set on other parameters before you can change the value of this parameter.
These tables define all of the user configuration options for this component.
3.1 Parameters
Label Description
Register Interface Type Selects Register Interface type as APB2, APB3 or APB4. By default, DW_apb_uart
supports APB2 interface.
Values:
■ APB2 (0)
■ APB3 (1)
■ APB4 (2)
Default Value: APB2
Enabled: DWC-APB-Advanced-Source source license exists.
Parameter Name: SLAVE_INTERFACE_TYPE
UART FIFO depth Receiver and Transmitter FIFO depth in bytes. A setting of NONE means no FIFOs,
which implies the 16450-compatible mode of operation. Most enhanced features are
unavailable in the 16450 mode such as the Auto Flow Control and Programmable
THRE interrupt modes. Setting a FIFO depth greater than 256 restricts the FIFO
Memory to External only. For more details, refer to the "FIFO Support" section of the
databook.
Values: 0, 16, 32, 64, 128, 256, 512, 1024, 2048
Default Value: 16
Enabled: Always
Parameter Name: FIFO_MODE
Slave Error Response Enable Enable Slave Error response signaling. The component will refrain From signaling
an error response if this parameter is disabled. This will result in disabling all
features that require SLVERR functionality to be implemented.
Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: SLAVE_INTERFACE_TYPE>0
Parameter Name: PSLVERR_RESP_EN
UART Protection Level Reset Value of UART_PROT_LEVEL register. A high on any bit of UART protection
level requires a high on the corresponding pprot input bit to gain access to the
protected registers. Else, SLVERR response is triggered. A zero on the protection
bit will provide access to the register if other protection levels are satisfied.
Values: 0x0, ..., 0x7
Default Value: 0x2
Enabled: SLAVE_INTERFACE_TYPE>1 && PSLVERR_RESP_EN==1
Parameter Name: PROT_LEVEL_RST
Label Description
Hard-Code Protection Level? Setting this parameter to 1 makes UART_PROT_LEVEL a read-only register. The
register can be programmed at run-time by a user if this hard-code option is set to 0.
Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: SLAVE_INTERFACE_TYPE>1 && PSLVERR_RESP_EN==1
Parameter Name: HC_PROT_LEVEL
Width of Register timeout Defines the width of Register timeout counter. If set to zero, the timeout counter
counter register is disabled, and timeout is triggered as soon as the transaction tries to read
an empty RX FIFO or write to a full TX FIFO. These are the only cases where
PREADY signal goes low, in all other cases PREADY is tied high. Setting values
from 4 to 8 for this parameter configures the timeout period from 2^4 to 2^8 pclk
cycles.
Values: 0, 4, 5, 6, 7, 8
Default Value: (SLAVE_INTERFACE_TYPE > 0 && PSLVERR_RESP_EN==1 &&
FIFO_MODE!=0) ? 4 : 0
Enabled: SLAVE_INTERFACE_TYPE>0 && PSLVERR_RESP_EN==1 &&
FIFO_MODE!=0
Parameter Name: REG_TIMEOUT_WIDTH
Hardcode Register timeout Checking this parameter makes Register timeout counter a read-only register. The
counter value register can be programmed by user if the hardcode option is turned off.
Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: SLAVE_INTERFACE_TYPE>0 && PSLVERR_RESP_EN==1 &&
REG_TIMEOUT_WIDTH>0 && FIFO_MODE!=0
Parameter Name: HC_REG_TIMEOUT_VALUE
Register timeout counter Defines the reset value of Register timeout counter.
default start value Values: 0, ..., POW_2_REG_TIMEOUT_WIDTH
Default Value: 8
Enabled: SLAVE_INTERFACE_TYPE>0 && PSLVERR_RESP_EN==1 &&
REG_TIMEOUT_WIDTH>0 && FIFO_MODE!=0
Parameter Name: REG_TIMEOUT_VALUE
Label Description
RS485 Interface Support Configures the peripheral for RS485 Interface support. If enabled, new signals 'de',
're' and 'rs485_en' are included in the interface to support RS485 transceiver.
Values:
■ Disabled (0)
■ Enabled (1)
Default Value: Disabled
Enabled: This parameter is enabled if DWC-APB-Advanced-Source license is
detected.
Parameter Name: UART_RS485_INTERFACE_EN
Active High RS485 Driver Selects the polarity of the RS485 Driver Enable (de) signal.
Enable Signal? Values:
■ false (0x0)
■ true (0x1)
Default Value: true
Enabled: UART_RS485_INTERFACE_EN==1
Parameter Name: UART_DE_POL
Active High RS485 Receiver Selects the polarity of the RS485 Receiver Enable (re) signal.
Enable Signal? Values:
■ false (0x0)
■ true (0x1)
Default Value: true
Enabled: UART_RS485_INTERFACE_EN==1
Parameter Name: UART_RE_POL
Enable 9-bit Mode Support? Configures the peripheral to have 9-bits of data per character. The 9th-bit of the
data byte sent from the master is set to 1 to indicate the address byte while cleared
to 0 to indicate the data byte.
Values:
■ Disabled (0)
■ Enabled (1)
Default Value: Disabled
Enabled: This parameter is enabled if DWC-APB-Advanced-Source license is
detected.
Parameter Name: UART_9BIT_DATA_EN
Label Description
APB Data Bus Width Width of APB data bus to which this component is attached. The data width can be
set to 8, 16 or 32. Register access is on 32-bit boundaries, unused bits are held at
static 0.
Values: 8, 16, 32
Default Value: 32
Enabled: Always
Parameter Name: APB_DATA_WIDTH
FIFO Memory Type Selects between external, user-supplied memory or internal DesignWare memory
(DW_ram_r_w_s_dff) for the receiver and transmitter FIFOs. FIFO depths greater
than 256 restrict FIFO Memory selection to external. In addition, selection of internal
memory restricts the Memory Read Port Type to Dflip-flop-based, synchronous read
port RAMs.
Values:
■ External (0)
■ Internal (1)
Default Value: External
Enabled: FIFO_MODE!=0 && FIFO_MODE<=256
Parameter Name: MEM_SELECT_USER
IrDA SIR Mode Support Configures the peripheral to have IrDA 1.0 SIR infrared mode. For more details,
refer to the "IrDA 1.0 SIR Protocol" section of data book.
Values:
■ Disabled (0x0)
■ Enabled (0x1)
Default Value: Disabled
Enabled: Always
Parameter Name: SIR_MODE
Low Power IrDA SIR Mode Configures the peripheral to operate in a low-power IrDA SIR mode. As the
Support DW_apb_uart does not support a low-power mode with a counter system to
maintain a 1.63us infrared pulse, Asynchronous Serial Clock Support will be
automatically enabled, and the sclk must be fixed to 1.8432Mhz. This provides a
1.63us sir_out_n pulse at 115.2kbaud.
Values:
■ Disabled (0x0)
■ Enabled (0x1)
Default Value: Disabled
Enabled: SIR_MODE==1
Parameter Name: SIR_LP_MODE
Label Description
Support for IrDA SIR Low Configures the peripheral to to have SIR low power pulse reception capabalities.
Power Reception Capabilities Two additional Low power Divisor Registers are implemented and must be written
with a divisor that will give a baud rate of 115.2k for the low power pulse detection
functionality to operate correctly. Asynchronous Serial Clock support is
automatically enabled in this mode.
Values:
■ Disabled (0)
■ Enabled (1)
Default Value: Disabled
Enabled: SIR_MODE==1
Parameter Name: SIR_LP_RX
Asychronous Serial Clock When set to Disabled, the DW_apb_uart is implemented with one system clock
Support (pclk). When set to Enabled, two system clocks (pclk and sclk) are implemented in
order to accommodate accurate serial baud rate settings, as well as APB bus
interface requirements. Selecting Disabled, or a one-system clock, greatly restricts
system clock settings available for accurate baud rates. For more details, refer to
"Clock Support" section of the data book.
Values:
■ Disabled (1)
■ Enabled (2)
Default Value: Disabled
Enabled: SIR_LP_MODE!=1 && SIR_LP_RX!=1
Parameter Name: CLOCK_MODE
Clock Domain Crossing Sets the number of synchronization stages to be placed on clock domain crossing
Synchronization Depth? signals.
■ 2: 2-stage synchronization with positive-edge capturing at both the stages
■ 3: 3-stage synchronization with positive-edge capturing at all stages
■ 4: 4-stage synchronization with positive-edge capturing at all stages
Values: 2, 3, 4
Default Value: 2
Enabled: Always
Parameter Name: SYNC_DEPTH
Auto Flow Control Configures the peripheral to have the 16750-compatible auto flow control mode. For
more details, refer to "Auto Flow Control" section of the data book.
Values:
■ Disabled (0x0)
■ Enabled (0x1)
Default Value: Disabled
Enabled: FIFO_MODE!=0
Parameter Name: AFCE_MODE
Label Description
RTC Flow Control Trigger When set to 0, the DW_apb_uart uses the same receiver trigger level described in
FCR.RCVR register both for generating a DMA request and a handshake signal
(rts_n). When set to 1, the DW_apb_uart uses two separate trigger levels for a
DMA request and handshake signal (rts_n) in order to maximize throughput on the
interface. NOTE: Almost-Full Trigger refers to two available slots in the FIFO.
Values:
■ RX FIFO Threshold Trigger (0x0)
■ RX FIFO Almost-Full Trigger (0x1)
Default Value: RX FIFO Threshold Trigger
Enabled: AFCE_MODE!=0
Parameter Name: RTC_FCT
Programmable THRE Interrupt Configures the peripheral to have a programmable Transmitter Hold Register Empty
Mode (THRE) interrupt mode. For more information, refer to "Programmable THRE
Interrupt" section of the data book.
Values:
■ Disabled (0x0)
■ Enabled (0x1)
Default Value: Disabled
Enabled: FIFO_MODE!=0
Parameter Name: THRE_MODE_USER
Include Clock Gate Enable Configures the peripheral to have a clock gate enable output signal on the interface
Output on I/F? that indicates that the device is inactive, so clocks may be gated.
Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: Always
Parameter Name: CLK_GATE_EN
Include FIFO Access Mode? Configures the peripheral to have a programmable FIFO access mode. This is used
for test purposes to allow the receiver FIFO to be written and the transmit FIFO to
be read when FIFO's are implemented and enabled. When FIFO's are not
implemented or not enabled it allows the RBR to be written and the THR to be read.
For more details, refer to "FIFO Support" section in the data book.
Values:
■ false (0x0)
■ true (0x1)
Default Value: false
Enabled: Always
Parameter Name: FIFO_ACCESS
Label Description
Include Additional DMA Configures the peripheral to have four additional DMA signals on the interface so
Signals on I/F? that the device is compatible with the DesignWare DMA controller interface
requirements.
Values:
■ false (0x0)
■ true (0x1)
Default Value: false
Enabled: Always
Parameter Name: DMA_EXTRA
Active Low DMA Signals? Selects the polarity of the DMA interface signals.
Values:
■ false (0)
■ true (1)
Default Value: true
Enabled: Always
Parameter Name: DMA_POL
Assert Tx Req On Reset? Selects the DMA Tx Request assertion logic. When set to 1, DMA Tx Request will
be asserted upon reset. When set to 0, DMA Tx Request will not be asserted upon
reset. It will be asserted only after LCR register is written.
Values:
■ false (0)
■ true (1)
Default Value: true
Enabled: Always
Parameter Name: DMA_HS_REQ_ON_RESET
Include On-chip Debug Output Configures the peripheral to have on-chip debug pins on the interface.
Signals on I/F? Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: Always
Parameter Name: DEBUG
Label Description
Include Baud Clock Reference Configures the peripheral to have a baud clock reference output (baudout_n) pin on
Output Signal (baudout_n) on the interface.
I/F? Values:
■ false (0)
■ true (1)
Default Value: true
Enabled: Always
Parameter Name: BAUD_CLK
Add Version and ID Registers, Configures the peripheral to have the option to include the FIFO status registers,
Enable FIFO Status, Shadow shadow registers and encoded parameter register. Also configures the peripheral to
and Encoded Parameters have the UART component version and the peripheral ID registers.
Register Options ? Values:
■ false (0x0)
■ true (0x1)
Default Value: false
Enabled: Always
Parameter Name: ADDITIONAL_FEATURES
Include Software Accessible Configures the peripheral to have three additional FIFO status registers.
FIFO Status Registers? Values:
■ false (0x0)
■ true (0x1)
Default Value: false
Enabled: FIFO_MODE!=0 && ADDITIONAL_FEATURES==1
Parameter Name: FIFO_STAT
Include Additional Shadow Configures the peripheral to have nine additional registers that shadow some of the
Registers for Reducing existing register bits that are regularly modified by software. These can be used to
Software Overhead? reduce the software overhead that is introduced by having to perform read-modify
writes.
Values:
■ false (0x0)
■ true (0x1)
Default Value: false
Enabled: ADDITIONAL_FEATURES==1
Parameter Name: SHADOW
Label Description
Remove Busy Functionality? Configures the peripheral to be fully 16550 compatible. This is achieved by not
having the busy functionality implemented.
Values:
■ false (0)
■ true (1)
Default Value: false
Enabled: Always
Parameter Name: UART_16550_COMPATIBLE
Fractional Baud Rate Divisor Configures the peripheral to have Fractional Baud Rate Divisor. If enabled, new
Support Fractional divisor latch register (DLF) is included to program the fractional divisor
values. For more information about this feature, see "Fractional Baud Rate Support"
section in the data book.
Values:
■ Disabled (0)
■ Enabled (1)
Default Value: Disabled
Enabled: This parameter is enabled if DWC-APB-Advanced-Source license is
detected.
Parameter Name: FRACTIONAL_BAUD_DIVISOR_EN
Fractional Divisor Width Specifies the width of the fractional divisor. A high value means more precision but
long averaging period. For more information about this feature, see "Fractional Baud
Rate Support" section in the data book.
Values: 4, ..., 6
Default Value: 4
Enabled: FRACTIONAL_BAUD_DIVISOR_EN==1
Parameter Name: DLF_SIZE
Label Description
LSR clear Trigger? Selects the method for clearing the status in the LSR register. This is applicable only
for Overrun Error, Parity Error, Framing Error, and Break Interrupt status bits. When
set to 0, LSR status bits are cleared either on reading Rx FIFO (RBR Read) or On
reading LSR register. When set to 1, LSR status bits are cleared only on reading
LSR register.
Values:
■ RBR Read or LSR Read (0)
■ LSR Read (1)
Default Value: RBR Read or LSR Read
Enabled: FIFO_MODE!=0
Parameter Name: LSR_STATUS_CLEAR
4
Signal Descriptions
This chapter details all possible I/O signals in the controller. For configurable IP titles, your actual
configuration might not contain all of these signals.
Inputs are on the left of the signal diagrams; outputs are on the right.
Attention: For configurable IP titles, do not use this document to determine the exact I/O footprint of the
controller. It is for reference purposes only.
When you configure the controller in coreConsultant, you must access the I/O signals for your actual
configuration at workspace/report/IO.html or workspace/report/IO.xml after you have completed the
report creation activity. That report comes from the exact same source as this chapter but removes all the
I/O signals that are not in your actual configuration. This does not apply to non-configurable IP titles. In
addition, all parameter expressions are evaluated to actual values. Therefore, the widths might change
depending on your actual configuration.
Some expressions might refer to TCL functions or procedures (sometimes identified as <functionof>) that
coreConsultant uses to make calculations. The exact formula used by these TCL functions is not provided in
this chapter. However, when you configure the controller in coreConsultant, all TCL functions and
parameters are evaluated completely; and the resulting values are displayed where appropriate in the
coreConsultant GUI reports.
In addition to describing the function of each signal, the signal descriptions in this chapter include the
following information:
Active State: Indicates whether the signal is active high or active low. When a signal is not intended to be
used in a particular application, then this signal needs to be tied or driven to the inactive state (opposite of
the active state).
Registered: Indicates whether or not the signal is registered directly inside the IP boundary without
intervening logic (excluding simple buffers). A value of No does not imply that the signal is not
synchronous, only that there is some combinatorial logic between the signal's origin or destination register
and the boundary of the controller. A value of N/A indicates that this information is not provided for this IP
title.
Synchronous to: Indicates which clock(s) in the IP sample this input (drive for an output) when considering
all possible configurations. A particular configuration might not have all of the clocks listed. This clock
might not be the same as the clock that your application logic should use to clock (sample/drive) this pin.
For more details, consult the clock section in the databook.
Exists: Name of configuration parameter(s) that populates this signal in your configuration.
Validated by: Assertion or de-assertion of signal(s) that validates the signal being described.
pclk - - prdata
presetn - - pready
penable - - pslverr
pwrite -
pwdata -
paddr -
psel -
pprot -
pstrb -
paddr[(UART_ADDR_SLICE_LHS-1):0] I APB address bus. Uses the lower bits of the APB address bus for
register decode.
Exists: Always
Synchronous To: pclk
Registered: No
Power Domain: SINGLE_DOMAIN
Active State: N/A
pprot[2:0] I APB4 Protection type. The input bits should match the corresponding
protection activated level bit of the accessed register to gain access
to the protected registers. Else the DW_apb_uart generates an error.
If protection level is turned off, any value on the corresponding bit is
acceptable. This Signal is ignored if PSLVERR_RESP_EN==0.
Exists: SLAVE_INTERFACE_TYPE>1
Synchronous To: pclk
Registered: No
Power Domain: SINGLE_DOMAIN
Active State: N/A
pstrb[((APB_DATA_WIDTH/8)-1):0] I APB4 Write strobe bus. A high on individual bits in the pstrb bus
indicate that the corresponding incoming write data byte on APB bus
is to be updated in the addressed register.
Exists: SLAVE_INTERFACE_TYPE>1
Synchronous To: pclk
Registered: No
Power Domain: SINGLE_DOMAIN
Active State: High
pready O The ready signal, used to extend the APB transfer and it is also used
to indicate the end of a transaction when there is a high in the access
phase of a transaction.
Exists: SLAVE_INTERFACE_TYPE>0
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: High
pslverr O APB3 slave error response signal. The signal issues an error when
some error condition occurs, as specified in Slave error response
section.
Exists: SLAVE_INTERFACE_TYPE>0
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: High
sclk -
s_rst_n -
scan_mode -
scan_mode I Scan mode. Used to ensure that test automation tools can control all
asynchronous flop signals. During scan this signal must be set high
all the time. In normal operation you must tie this signal low.
Exists: Always
Synchronous To: Asynchronous
Registered: No
Power Domain: SINGLE_DOMAIN
Active State: High
tx_ram_out - - tx_ram_in
rx_ram_out - - tx_ram_rd_addr
- tx_ram_wr_addr
- tx_ram_we_n
- tx_ram_re_n
- tx_ram_rd_ce_n
- rx_ram_in
- rx_ram_rd_addr
- rx_ram_wr_addr
- rx_ram_we_n
- rx_ram_re_n
- rx_ram_rd_ce_n
tx_ram_rd_ce_n O Read port chip enable for the transmit FIFO RAM.
Exists: FIFO_MODE!=0 && MEM_SELECT==0
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: Low
cts_n - - dtr_n
dsr_n - - rts_n
dcd_n - - out2_n
ri_n - - out1_n
dma_tx_ack - - dma_tx_req
dma_tx_ack_n - - dma_tx_req_n
dma_rx_ack - - dma_tx_single
dma_rx_ack_n - - dma_tx_single_n
- dma_rx_req
- dma_rx_req_n
- dma_rx_single
- dma_rx_single_n
- txrdy_n
- rxrdy_n
dma_tx_ack I DMA Transmit Acknowledge (Active High) indicates that the DMA
Controller has transmitted the block of data to the DW_apb_uart for
transmission.
Exists: DMA_EXTRA==1 && DMA_POL==0
Synchronous To: pclk
Registered: No
Power Domain: SINGLE_DOMAIN
Active State: High
dma_tx_ack_n I DMA Transmit Acknowledge (Active Low) indicates that the DMA
Controller has transmitted the block of data to the DW_apb_uart for
transmission.
Exists: DMA_EXTRA==1 && DMA_POL==1
Synchronous To: pclk
Registered: No
Power Domain: SINGLE_DOMAIN
Active State: Low
dma_rx_ack I DMA Receive Acknowledge (Active High) indicates that the DMA
Controller has transmitted the block of data from the DW_apb_uart.
Exists: DMA_EXTRA==1 && DMA_POL==0
Synchronous To: pclk
Registered: No
Power Domain: SINGLE_DOMAIN
Active State: High
dma_rx_ack_n I DMA Receive Acknowledge (Active Low) indicates that the DMA
Controller has transmitted the block of data from the DW_apb_uart.
Exists: DMA_EXTRA==1 && DMA_POL==1
Synchronous To: pclk
Registered: No
Power Domain: SINGLE_DOMAIN
Active State: Low
dma_tx_req O Transmit Buffer Ready (Active High) indicates that the Transmit buffer
requires service from the DMA controller.
Exists: DMA_POL==0
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: High
dma_tx_req_n O Transmit Buffer Ready (Active Low) indicates that the Transmit buffer
requires service from the DMA controller.
Exists: DMA_POL==1
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: Low
dma_tx_single O DMA Transmit FIFO Single (Active High) informs the DMA Controller
that there is at least one free entry in the Transmit buffer/FIFO. This
output does not request a DMA transfer.
Exists: DMA_EXTRA==1 && DMA_POL==0
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: High
dma_tx_single_n O DMA Transmit FIFO Single (Active Low) informs the DMA Controller
that there is at least one free entry in the Transmit buffer/FIFO. This
output does not request a DMA transfer.
Exists: DMA_EXTRA==1 && DMA_POL==1
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: Low
dma_rx_req O Receive Buffer Ready (Active High) indicates that the Receive buffer
requires service from the DMA controller.
Exists: DMA_POL==0
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: High
dma_rx_req_n O Receive Buffer Ready (Active Low) indicates that the Receive buffer
requires service from the DMA controller.
Exists: DMA_POL==1
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: Low
dma_rx_single O DMA Receive FIFO Single (Active High) informs the DMA controller
that there is at least one free entry in the Receive buffer/FIFO. This
output does not request a DMA transfer.
Exists: DMA_EXTRA==1 && DMA_POL==0
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: High
dma_rx_single_n O DMA Receive FIFO Single (Active Low) informs the DMA controller
that there is at least one free entry in the Receive buffer/FIFO. This
output does not request a DMA transfer.
Exists: DMA_EXTRA==1 && DMA_POL==1
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: Low
txrdy_n O This transmit buffer read signal is used for backward compatibility of
older DW_apb_uart components to indicate that the Transmit buffer
requires service from the DMA controller.
Exists: DMA_EXTRA==0
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: Low
rxrdy_n O This receive buffer read signal is used for backward compatibility of
older DW_apb_uart components to indicate that the Receive buffer
requires service from the DMA controller.
Exists: DMA_EXTRA==0
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: Low
sin - - sout
sir_in - - sir_out_n
- uart_lp_req_pclk
- uart_lp_req_sclk
- baudout_n
uart_lp_req_pclk O pclk domain clock gate signal indicates that the UART is inactive, so
clocks may be gated to put the device in a low-power (lp) mode.
Exists: CLK_GATE_EN==1
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: High
uart_lp_req_sclk O sclk domain clock gate signal indicates that the UART is inactive, so
clocks may be gated to put the device in a low-power (lp) mode.
Exists: CLK_GATE_EN==1 && CLOCK_MODE==2
Synchronous To: sclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: High
- debug
- re
- de
- rs485_en
- intr
intr O Interrupt.
Exists: Always
Synchronous To: pclk
Registered: Yes
Power Domain: SINGLE_DOMAIN
Active State: High
5
Register Descriptions
This chapter details all possible registers in the controller. They are arranged hierarchically into maps and
blocks (banks). For configurable IP titles, your actual configuration might not contain all of these registers.
Attention: For configurable IP titles, do not use this document to determine the exact attributes of your
register map. It is for reference purposes only.
When you configure the controller in coreConsultant, you must access the register attributes for your actual
configuration at workspace/report/ComponentRegisters.html or
workspace/report/ComponentRegisters.xml after you have completed the report creation activity. That
report comes from the exact same source as this chapter but removes all the registers that are not in your
actual configuration. This does not apply to non-configurable IP titles. In addition, all parameter
expressions are evaluated to actual values. Therefore, the Offset and Memory Access values might change
depending on your actual configuration.
Some expressions might refer to TCL functions or procedures (sometimes identified as <functionof>) that
coreConsultant uses to make calculations. The exact formula used by these TCL functions is not provided in
this chapter. However, when you configure the controller in coreConsultant, all TCL functions and
parameters are evaluated completely; and the resulting values are displayed where appropriate in the
coreConsultant GUI reports.
Exists Expressions
These expressions indicate the combination of configuration parameters required for a register, field, or
block to exist in the memory map. The expression is only valid in the local context and does not indicate the
conditions for existence of the parent. For example, the expression for a bit field in a register assumes that
the register exists and does not include the conditions for existence of the register.
Offset
The term Offset is synonymous with Address.
Memory Access Attributes
The Memory Access attribute is defined as <ReadBehavior>/<WriteBehavior> which are defined in the
following table.
R/W1C You can read this register field. Writing 1 clears it.
RC/W1C Reading this register field clears it. Writing 1 clears it.
R/Wo You can read this register field. You can only write to it once.
Attribute Description
Reset Mask As defined by the IP-XACT specification. Indicates that this register
field has an unknown reset value. For example, the reset value is set
by another register or an input pin; or the register is implemented
using RAM.
* Varies Indicates that the memory access (or reset) attribute (read, write
behavior) is not fixed. For example, the read-write access of the
register is controlled by a pin or another register. Or when the
access depends on some configuration parameter; in this case the
post-configuration report in coreConsultant gives the actual access
value.
Component Banks/Blocks
The following table shows the address blocks for each memory map. Follow the link for an address block to
see a table of its registers.
RBR on page 119 0x0 Receive Buffer Register. This register can be accessed only
when the DLAB bit (LCR[7]) is...
THR on page 123 0x0 Transmit Holding Register. This register can be accessed
only when the DLAB bit (LCR[7]) is...
IER on page 126 0x4 Interrupt Enable Register. This register can be accessed
only when the DLAB bit (LCR[7]) is...
FCR on page 129 0x8 This register is only valid when the DW_apb_uart is
configured to have FIFO's implemented (FIFO_MODE...
MSR on page 149 0x18 Whenever bits 0, 1, 2 or 3 is set to logic one, to indicate a
change on the modem control inputs,...
LPDLL on page 155 0x20 Low Power Divisor Latch Low Register. This register is only
valid when the DW_apb_uart is configured...
LPDLH on page 157 0x24 Low Power Divisor Latch High Register . This register is valid
only when the DW_apb_uart is configured...
STHRn 0x30 + Shadow Transmit Holding Register. This register is valid only
(for n = 0; n <= 15) on page 161 n*0x4 when the DW_apb_uart is configured...
TFR on page 165 0x74 This register is valid only when the DW_apb_uart is
configured to have the FIFO access test mode...
RFW on page 166 0x78 This register is valid only when the DW_apb_uart is
configured to have the FIFO access test mode...
TFL on page 171 0x80 TFL register is valid only when the DW_apb_uart is
configured to have additional FIFO status registers
implemented...
RFL on page 172 0x84 RFL register is valid only when the DW_apb_uart is
configured to have additional FIFO status registers
implemented...
SRR on page 173 0x88 This register is valid only when the DW_apb_uart is
configured to have additional shadow registers
implemented...
SRTS on page 175 0x8c SRTS register is valid only when the DW_apb_uart is
configured to have additional shadow registers
implemented...
SBCR on page 177 0x90 SBCR register is valid only when the DW_apb_uart is
configured to have additional shadow registers
implemented...
SDMAM on page 179 0x94 This register is valid only when the DW_apb_uart is
configured to have additional FIFO registers...
SFE on page 181 0x98 SFE register is valid only when the DW_apb_uart is
configured to have additional FIFO registers implemented...
SRT on page 182 0x9c SRT register is valid only when the DW_apb_uart is
configured to have additional FIFO registers implemented...
STET on page 184 0xa0 This register is valid only when the DW_apb_uart is
configured to have FIFOs implemented (FIFO_MODE...
TCR on page 188 0xac This register is used to enable or disable RS485 mode and
also control the polarity values for Driven...
DE_EN on page 191 0xb0 The Driver Output Enable Register (DE_EN) is used to
control the assertion and de-assertion of the...
RE_EN on page 192 0xb4 The Receiver Output Enable Register (RE_EN) is used to
control the assertion and de-assertion of...
DET on page 193 0xb8 The Driver Output Enable Timing Register (DET) is used to
control the DE assertion and de-assertion...
TAT on page 195 0xbc The TurnAround Timing Register (TAT) is used to hold the
turnaround time between switching of 're'...
DLF on page 197 0xc0 This register is only valid when the DW_apb_uart is
configured to have Fractional Baud rate Divisor...
REG_TIMEOUT_RST on page 206 0xd4 Name: Register timeout counter reset register This register
keeps the reset value of reg_timer counter...
CPR on page 208 0xf4 Component Parameter Register.This register is valid only
when UART_ADD_ENCODED_PARAMS = 1. If the...
UCV on page 212 0xf8 UCV register is valid only when the DW_apb_uart is
configured to have additional features implemented...
CTR on page 213 0xfc CTR is register is valid only when the DW_apb_uart is
configured to have additional features implemented...
5.1.1 RBR
■ Name: Receive Buffer Register
■ Description: Receive Buffer Register.
This register can be accessed only when the DLAB bit (LCR[7]) is cleared.
■ Size: 32 bits
■ Offset: 0x0
■ Exists: Always
x:0
RSVD_RBR x:y
RBR
Memory
Bits Name Access Description
x:y RSVD_RBR R RBR 31to9or8 Reserved bits and read as zero (0).
Value After Reset: 0x0
Exists: Always
Range Variable[x]: "(UART_9BIT_DATA_EN==1) ? \"23\" :
\"24\"" + "(UART_9BIT_DATA_EN==1) ? \"0x9\" : \"0x8\"" - 1
Range Variable[y]: "(UART_9BIT_DATA_EN==1) ? \"0x9\" :
\"0x8\""
Memory
Bits Name Access Description
5.1.2 DLL
■ Name: Divisor Latch (Low)
■ Description: Divisor Latch (Low).
If UART_16550_COMPATIBLE = No, then this register can be accessed only when the DLAB bit
(LCR[7]) is set and the UART is not busy - that is, USR[0] is 0; otherwise this register can be accessed
only when the DLAB bit (LCR[7]) is set.
■ Size: 32 bits
■ Offset: 0x0
■ Exists: Always
RSVD_DLL_31to8 31:8
7:0
DLL
Memory
Bits Name Access Description
31:8 RSVD_DLL_31to8 R DLL 31to8 Reserved bits and read as zero (0).
Value After Reset: 0x0
Exists: Always
Memory
Bits Name Access Description
5.1.3 THR
■ Name: Transmit Holding Register
■ Description: Transmit Holding Register.
This register can be accessed only when the DLAB bit (LCR[7]) is cleared.
■ Size: 32 bits
■ Offset: 0x0
■ Exists: Always
x:0
RSVD_THR x:y
THR
Memory
Bits Name Access Description
x:y RSVD_THR R THR 31to9or8 Reserved bits and read as zero (0).
Value After Reset: 0x0
Exists: Always
Range Variable[x]: "(UART_9BIT_DATA_EN==1) ? \"23\" :
\"24\"" + "(UART_9BIT_DATA_EN==1) ? \"0x9\" : \"0x8\"" - 1
Range Variable[y]: "(UART_9BIT_DATA_EN==1) ? \"0x9\" :
\"0x8\""
Memory
Bits Name Access Description
5.1.4 DLH
■ Name: Divisor Latch High
■ Description: Divisor Latch High (DLH) Register.
If UART_16550_COMPATIBLE = No, then this register can be accessed only when the DLAB bit
(LCR[7]) is set and the UART is not busy, that is, USR[0] is 0; otherwise this register can be accessed
only when the DLAB bit (LCR[7]) is set.
■ Size: 32 bits
■ Offset: 0x4
■ Exists: Always
RSVD_DLH 31:8
7:0
dlh
Memory
Bits Name Access Description
31:8 RSVD_DLH R DLH 31to8 Reserved bits and read as zero (0).
Value After Reset: 0x0
Exists: Always
7:0 dlh R/W Upper 8-bits of a 16-bit, read/write, Divisor Latch register that
contains the baud rate divisor for the UART.
The output baud rate is equal to the serial clock (pclk if one
clock design, sclk if two clock design (CLOCK_MODE ==
Enabled)) frequency divided by sixteen times the value of the
baud rate divisor, as follows: baud rate = (serial clock freq) /
(16 * divisor).
Note that with the Divisor Latch Registers (DLL and DLH)
set to zero, the baud clock is disabled and no serial
communications will occur. Also, once the DLH is set, at
least 8 clock cycles of the slowest DW_apb_uart clock
should be allowed to pass before transmitting or receiving
data.
Value After Reset: 0x0
Exists: Always
5.1.5 IER
■ Name: Interrupt Enable Register
■ Description: Interrupt Enable Register.
This register can be accessed only when the DLAB bit (LCR[7]) is cleared.
■ Size: 32 bits
■ Offset: 0x4
■ Exists: Always
RSVD_IER_31to8 31:8
6:5
7
4
3
2
1
0
RSVD_IER_6to5
ELCOLR
PTIME
EDSSI
ERBFI
ETBEI
ELSI
Memory
Bits Name Access Description
31:8 RSVD_IER_31to8 R IER 31to8 Reserved bits and read as zero (0).
Value After Reset: 0x0
Exists: Always
Memory
Bits Name Access Description
4 ELCOLR * Varies Interrupt Enable Register: ELCOLR, this bit controls the
method for clearing the status in the LSR register. This is
applicable only for Overrun Error, Parity Error, Framing Error,
and Break Interrupt status bits. 0 = LSR status bits are
cleared either on reading Rx FIFO (RBR Read) or On
reading LSR register. 1 = LSR status bits are cleared only on
reading LSR register. Writeable only when
LSR_STATUS_CLEAR == Enabled, always readable.
Values:
■ 0x0 (DISABLED): Disable ALC
■ 0x1 (ENABLED): Enable ALC
Value After Reset: 0x0
Exists: Always
Memory Access: "(LSR_STATUS_CLEAR==1) ? \"read-
write\" : \"read-only\""
Memory
Bits Name Access Description
5.1.6 FCR
■ Name: FIFO Control Register
■ Description: This register is only valid when the DW_apb_uart is configured to have FIFO's
implemented (FIFO_MODE != NONE). If FIFO's are not implemented, this register does not exist
and writing to this register address will have no effect.
■ Size: 32 bits
■ Offset: 0x8
■ Exists: FIFO_MODE != 0
RSVD_FCR_31to8 31:8
7:6
5:4
3
2
1
0
RFIFOR
XFIFOR
DMAM
FIFOE
TET
RT
Memory
Bits Name Access Description
7:6 RT W RCVR Trigger (or RT). This is used to select the trigger level
in the receiver FIFO at which the Received Data Available
Interrupt will be generated. In auto flow control mode, it is
used to determine when the rts_n signal will be de-asserted
only when RTC_FCT is disabled. It also determines when
the dma_rx_req_n signal will be asserted when in certain
modes of operation. For details on DMA support, refer to
'DMA Support' section of data book.
Values:
■ 0x0 (FIFO_CHAR_1): 1 character in FIFO
■ 0x1 (FIFO_QUARTER_FULL): FIFO 1/4 full
■ 0x2 (FIFO_HALF_FULL): FIFO 1/2 full
■ 0x3 (FIFO_FULL_2): FIFO 2 less than full
Value After Reset: 0x0
Exists: Always
Memory
Bits Name Access Description
5:4 TET * Varies TX Empty Trigger (or TET). Writes will have no effect when
THRE_MODE_USER == Disabled. This is used to select the
empty threshold level at which the THRE Interrupts will be
generated when the mode is active. It also determines when
the dma_tx_req_n signal will be asserted when in certain
modes of operation. For details on DMA support, refer to
'DMA Support' section of data book.
Values:
■ 0x0 (FIFO_EMPTY): FIFO Empty
■ 0x1 (FIFO_CHAR_2): 2 characters in FIFO
■ 0x2 (FIFO_QUARTER_FULL): FIFO 1/4 full
■ 0x3 (FIFO_HALF_FULL): FIFO 1/2 full
Value After Reset: 0x0
Exists: Always
Memory Access: "(THRE_MODE_USER==1) ? \"write-
only\" : \"read-only\""
3 DMAM W DMA Mode (or DMAM). This determines the DMA signalling
mode used for the dma_tx_req_n and dma_rx_req_n output
signals when additional DMA handshaking signals are not
selected (DMA_EXTRA == NO). For details on DMA
support, refer to 'DMA Support' section of data book.
Values:
■ 0x0 (MODE0): Mode 0
■ 0x1 (MODE1): Mode 1
Value After Reset: 0x0
Exists: Always
2 XFIFOR W XMIT FIFO Reset (or XFIFOR). This resets the control
portion of the transmit FIFO and treats the FIFO as empty.
This will also de-assert the DMA TX request and single
signals when additional DMA handshaking signals are
selected (DMA_EXTRA == YES). Note that this bit is 'self-
clearing' and it is not necessary to clear this bit.
Values:
■ 0x1 (RESET): Transmit FIFO reset
Value After Reset: 0x0
Exists: Always
Memory
Bits Name Access Description
1 RFIFOR W RCVR FIFO Reset (or RFIFOR). This resets the control
portion of the receive FIFO and treats the FIFO as empty.
This will also de-assert the DMA RX request and single
signals when additional DMA handshaking signals are
selected (DMA_EXTRA == YES). Note that this bit is 'self-
clearing' and it is not necessary to clear this bit.
Values:
■ 0x1 (RESET): Receive FIFO reset
Value After Reset: 0x0
Exists: Always
5.1.7 IIR
■ Name: Interrupt Identification Register
■ Description: Interrupt Identification Register
■ Size: 32 bits
■ Offset: 0x8
■ Exists: Always
RSVD_IIR_31to8 31:8
7:6
5:4
3:0
RSVD_IIR_5to4
FIFOSE
IID
Memory
Bits Name Access Description
Memory
Bits Name Access Description
3:0 IID R Interrupt ID (or IID). This indicates the highest priority
pending interrupt which can be one of the following types
specified in Values. For information on several levels into
which the interrupt priorities are split into, see the 'Interrupts'
section in the DW_apb_uart Databook.
Note: an interrupt of type 0111 (busy detect) will never get
indicated if UART_16550_COMPATIBLE == YES in
coreConsultant.
Bit 3 indicates an interrupt can only occur when the FIFOs
are enabled and used to distinguish a Character Timeout
condition interrupt.
Values:
■ 0x0 (MODEM_STATUS): modem status
■ 0x1 (NO_INTERRUPT_PENDING): no interrupt pending
■ 0x2 (THR_EMPTY): THR empty
■ 0x4 (RECEIVED_DATA_AVAILABLE): received data
available
■ 0x6 (RECEIVER_LINE_STATUS): receiver line status
■ 0x7 (BUSY_DETECT): busy detect
■ 0xc (CHARACTER_TIMEOUT): character timeout
Value After Reset: 0x1
Exists: Always
5.1.8 LCR
■ Name: Line Control Register
■ Description: Line Control Register
■ Size: 32 bits
■ Offset: 0xc
■ Exists: Always
RSVD_LCR_31to8 31:8
1:0
7
6
5
4
3
2
STOP
DLAB
PEN
EPS
DLS
BC
SP
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
1:0 DLS R/W Data Length Select (or CLS as used in legacy).
If UART_16550_COMPATIBLE == NO then, writeable only
when UART is not busy (USR[0] is zero), otherwise always
writable and always readable. When DLS_E in LCR_EXT is
set to 0, this register is used to select the number of data bits
per character that the peripheral will transmit and receive.
Values:
■ 0x0 (CHAR_5BITS): 5 data bits per character
■ 0x1 (CHAR_6BITS): 6 data bits per character
■ 0x2 (CHAR_7BITS): 7 data bits per character
■ 0x3 (CHAR_8BITS): 8 data bits per character
Value After Reset: 0x0
Exists: Always
5.1.9 MCR
■ Name: Modem Control Register
■ Description: Modem Control Register
■ Size: 32 bits
■ Offset: 0x10
■ Exists: Always
RSVD_MCR_31to7 31:7
6
5
4
3
2
1
0
LoopBack
AFCE
OUT2
OUT1
SIRE
DTR
RTS
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.10 LSR
■ Name: Line Status Register
■ Description: Line Status Register
■ Size: 32 bits
■ Offset: 0x14
■ Exists: Always
RSVD_LSR_31to9 31:9
8
7
6
5
4
3
2
1
0
ADDR_RCVD
THRE
TEMT
RFE
OE
DR
PE
FE
BI
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.11 MSR
■ Name: Modem Status Register
■ Description: Whenever bits 0, 1, 2 or 3 is set to logic one, to indicate a change on the modem control
inputs, a modem status interrupt will be generated if enabled via the IER regardless of when the
change occurred. The bits (bits 0, 1, 3) can be set after a reset-even though their respective modem
signals are inactive-because the synchronized version of the modem signals have a reset value of 0
and change to value 1 after reset. To prevent unwanted interrupts due to this change, a read of the
MSR register can be performed after reset.
■ Size: 32 bits
■ Offset: 0x18
■ Exists: Always
RSVD_MSR_31to8 31:8
7
6
5
4
3
2
1
0
DDCD
DDSR
DCTS
TERI
DCD
DSR
CTS
RI
Memory
Bits Name Access Description
Memory
Bits Name Access Description
6 RI R Ring Indicator.
This is used to indicate the current state of the modem
control line ri_n. That is this bit is the complement ri_n. When
the Ring Indicator input (ri_n) is asserted it is an indication
that a telephone ringing signal has been received by the
modem or data set.
In Loopback Mode (MCR[4] set to one), RI is the same as
MCR[2] (Out1).
Values:
■ 0x0 (DEASSERTED): ri_n input is de-asserted (logic 1)
■ 0x1 (ASSERTED): ri_n input is asserted (logic 0)
Value After Reset: 0x0
Exists: Always
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.12 SCR
■ Name: Scratchpad Register
■ Description: Scratchpad Register
■ Size: 32 bits
■ Offset: 0x1c
■ Exists: Always
RSVD_SCR_31to8 31:8
7:0
SCR
Memory
Bits Name Access Description
5.1.13 LPDLL
■ Name: Low Power Divisor Latch Low
■ Description: Low Power Divisor Latch Low Register.
This register is only valid when the DW_apb_uart is configured to have SIR low-power reception
capabilities implemented (SIR_LP_RX = Yes). If SIR low-power reception capabilities are not
implemented, this register does not exist and reading from this register address returns 0.
If UART_16550_COMPATIBLE = No, then this register can be accessed only when the DLAB bit
(LCR[7]) is set and the UART is not busy, that is, USR[0] is 0; otherwise this register can be accessed
only when the DLAB bit (LCR[7]) is set.
■ Size: 32 bits
■ Offset: 0x20
■ Exists: (SIR_LP_RX == 1) && (SIR_MODE == 1)
RSVD_LPDLL_31to8 31:8
7:0
LPDLL
Memory
Bits Name Access Description
Memory
Bits Name Access Description
7:0 LPDLL R/W This register makes up the lower 8-bits of a 16-bit,
read/write, Low Power Divisor Latch register that contains
the baud rate divisor for the UART which must give a baud
rate of 115.2K. This is required for SIR Low Power (minimum
pulse width) detection at the receiver.
The output low power baud rate is equal to the serial clock
(sclk) frequency divided by sixteen times the value of the
baud rate divisor, as follows:
Low power baud rate = (serial clock freq) / (16 * divisor)
Therefore a divisor must be selected to give a baud rate of
115.2K.
Note: When the Low Power Divisor Latch Registers (LPDLL
and LPDLH) are set to zero, the low power baud clock is
disabled and no low power pulse detection (or any pulse
detection for that matter) will occur at the receiver. Also, once
the LPDLL is set at least 8 clock cycles of the slowest
DW_apb_uart clock should be allowed to pass before
transmitting or receiving data.
Value After Reset: 0x0
Exists: Always
5.1.14 LPDLH
■ Name: Low Power Divisor Latch High
■ Description: Low Power Divisor Latch High Register
. This register is valid only when the DW_apb_uart is configured to have SIR low-power reception
capabilities implemented (SIR_LP_RX = Yes). If SIR low-power reception capabilities are not
implemented, this register does not exist and reading from this register address returns 0.
If UART_16550_COMPATIBLE = No, then this register can be accessed only when the DLAB bit
(LCR[7]) is set and the UART is not busy that is, USR[0] is 0; otherwise this register can be accessed
only when the DLAB bit (LCR[7]) is set.
■ Size: 32 bits
■ Offset: 0x24
■ Exists: (SIR_LP_RX == 1) && (SIR_MODE == 1)
RSVD_LPDLH_31to8 31:8
7:0
LPDLH
Memory
Bits Name Access Description
Memory
Bits Name Access Description
7:0 LPDLH R/W This register makes up the upper 8-bits of a 16-bit,
read/write, Low Power Divisor Latch register that contains
the baud rate divisor for the UART which must give a baud
rate of 115.2K. This is required for SIR Low Power (minimum
pulse width) detection at the receiver.
The output low power baud rate is equal to the serial clock
(sclk) frequency divided by sixteen times the value of the
baud rate divisor, as follows:
Low power baud rate = (serial clock freq) / (16 * divisor)
Therefore a divisor must be selected to give a baud rate of
115.2K.
Note: When the Low Power Divisor Latch Registers (LPDLL
and LPDLH) are set to zero, the low power baud clock is
disabled and no low power pulse detection (or any pulse
detection for that matter) will occur at the receiver. Also, once
the LPDLH is set, at least 8 clock cycles of the slowest
DW_apb_uart clock should be allowed to pass before
transmitting or receiving data.
Value After Reset: 0x0
Exists: Always
RSVD_SRBRn 31:y
x:0
SRBRn
Memory
Bits Name Access Description
Table 5-20 Fields for Register: SRBRn (for n = 0; n <= 15) (Continued)
Memory
Bits Name Access Description
RSVD_STHRn 31:y
x:0
STHRn
Memory
Bits Name Access Description
Table 5-21 Fields for Register: STHRn (for n = 0; n <= 15) (Continued)
Memory
Bits Name Access Description
5.1.17 FAR
■ Name: FIFO Access Register
■ Description: FIFO Access Register
■ Size: 32 bits
■ Offset: 0x70
■ Exists: Always
RSVD_FAR_31to1 31:1
0
FAR
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.18 TFR
■ Name: Transmit FIFO Read
■ Description: This register is valid only when the DW_apb_uart is configured to have the FIFO access
test mode available (FIFO_ACCESS = YES). If not configured, this register does not exist and reading
from this register address returns 0.
■ Size: 32 bits
■ Offset: 0x74
■ Exists: FIFO_ACCESS == 1
RSVD_TFR_31to8 31:8
7:0
TFR
Memory
Bits Name Access Description
5.1.19 RFW
■ Name: Receive FIFO Write
■ Description: This register is valid only when the DW_apb_uart is configured to have the FIFO access
test mode available (FIFO_ACCESS = YES). If not configured, this register does not exist and reading
from this register address returns 0.
■ Size: 32 bits
■ Offset: 0x78
■ Exists: FIFO_ACCESS == 1
RSVD_RFW_31to10 31:10
7:0
9
8
RFWD
RFPE
RFFE
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.20 USR
■ Name: UART Status register
■ Description: UART Status register.
■ Size: 32 bits
■ Offset: 0x7c
■ Exists: Always
RSVD_USR_31to5 31:5
4
3
2
1
0
RFNE
BUSY
TFNF
RFF
TFE
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.21 TFL
■ Name: Transmit FIFO Level
■ Description: TFL register is valid only when the DW_apb_uart is configured to have additional FIFO
status registers implemented (FIFO_STAT = YES). If status registers are not implemented, this
register does not exist and reading from this register address returns 0.
■ Size: 32 bits
■ Offset: 0x80
■ Exists: (FIFO_STAT == 1) && (FIFO_MODE != 0) && (ADDITIONAL_FEATURES == 1)
RSVD_TFL_31toADDR_WIDTH 31:y
x:0
tfl
Memory
Bits Name Access Description
5.1.22 RFL
■ Name: Receive FIFO Level
■ Description: RFL register is valid only when the DW_apb_uart is configured to have additional FIFO
status registers implemented (FIFO_STAT = YES). If status registers are not implemented, this
register does not exist and reading from this register address returns 0.
■ Size: 32 bits
■ Offset: 0x84
■ Exists: (FIFO_STAT == 1) && (FIFO_MODE != 0) && (ADDITIONAL_FEATURES == 1)
RSVD_RFL_31toADDR_WIDTH 31:y
x:0
rfl
Memory
Bits Name Access Description
5.1.23 SRR
■ Name: Software Reset Register
■ Description: This register is valid only when the DW_apb_uart is configured to have additional
shadow registers implemented (SHADOW = YES). If shadow registers are not implemented, this
register does not exist and reading from this register address returns 0.
For more information on the amount of time that serial clock modules need in order to see new
register values and reset their respective state machines, refer to the 'Clock Support' subsection in the
data book.
■ Size: 32 bits
■ Offset: 0x88
■ Exists: SHADOW == 1
RSVD_SRR_31to3 31:3
2
1
0
RFR
XFR
UR
Memory
Bits Name Access Description
Memory
Bits Name Access Description
0 UR W UART Reset.
This asynchronously resets the DW_apb_uart and
synchronously removes the reset assertion. For a two clock
implementation both pclk and sclk domains will be reset.
Values:
■ 0x0 (NO_RESET): No Uart Reset
■ 0x1 (RESET): Uart reset
Value After Reset: 0x0
Exists: Always
5.1.24 SRTS
■ Name: Shadow Request to Send
■ Description: SRTS register is valid only when the DW_apb_uart is configured to have additional
shadow registers implemented (SHADOW = YES). If shadow registers are not implemented, this
register does not exist and reading from this register address returns 0.
■ Size: 32 bits
■ Offset: 0x8c
■ Exists: SHADOW == 1
RSVD_SRTS_31to1 31:1
0
SRTS
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.25 SBCR
■ Name: Shadow Break Control Register
■ Description: SBCR register is valid only when the DW_apb_uart is configured to have additional
shadow registers implemented (SHADOW = YES). If shadow registers are not implemented, this
register does not exist and reading from this register address returns 0.
■ Size: 32 bits
■ Offset: 0x90
■ Exists: SHADOW == 1
RSVD_SBCR_31to1 31:1
0
SBCB
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.26 SDMAM
■ Name: Shadow DMA Mode Register
■ Description: This register is valid only when the DW_apb_uart is configured to have additional FIFO
registers implemented (FIFO_MODE != None) and additional shadow registers implemented
(SHADOW = YES). If these registers are not implemented, this register does not exist and reading
from this register address returns 0.
■ Size: 32 bits
■ Offset: 0x94
■ Exists: (FIFO_MODE != 0) && (SHADOW == 1)
RSVD_SDMAM_31to1 31:1
0
SDMAM
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.27 SFE
■ Name: Shadow FIFO Enable Register
■ Description: SFE register is valid only when the DW_apb_uart is configured to have additional FIFO
registers implemented (FIFO_MODE != None) and additional shadow registers implemented
(SHADOW = YES). If these registers are not implemented, this register does not exist and reading
from this register address returns 0.
■ Size: 32 bits
■ Offset: 0x98
■ Exists: (FIFO_MODE != 0) && (SHADOW == 1)
RSVD_SFE_31to1 31:1
0
SFE
Memory
Bits Name Access Description
5.1.28 SRT
■ Name: Shadow RCVR Trigger Register
■ Description: SRT register is valid only when the DW_apb_uart is configured to have additional FIFO
registers implemented (FIFO_MODE != None) and additional shadow registers implemented
(SHADOW = YES). If these registers are not implemented, this register does not exist and reading
from this register address returns 0.
■ Size: 32 bits
■ Offset: 0x9c
■ Exists: (FIFO_MODE != 0) && (SHADOW == 1)
RSVD_SRT_31to2 31:2
1:0
SRT
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.29 STET
■ Name: Shadow TX Empty Trigger Register
■ Description: This register is valid only when the DW_apb_uart is configured to have FIFOs
implemented (FIFO_MODE != NONE) and THRE interrupt support implemented
(THRE_MODE_USER = Enabled) and additional shadow registers implemented (SHADOW = YES).
If FIFOs are not implemented or THRE interrupt support is not implemented or shadow registers are
not implemented, this register does not exist and reading from this register address returns 0.
■ Size: 32 bits
■ Offset: 0xa0
■ Exists: (FIFO_MODE != 0) && (THRE_MODE_USER == 1) && (SHADOW == 1)
RSVD_STET_31to2 31:2
1:0
STET
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.30 HTX
■ Name: Halt TX
■ Description: Halt TX
■ Size: 32 bits
■ Offset: 0xa4
■ Exists: Always
RSVD_HTX_31to1 31:1
0
HTX
Memory
Bits Name Access Description
5.1.31 DMASA
■ Name: DMA Software Acknowledge Register
■ Description: DMA Software Acknowledge Register
■ Size: 32 bits
■ Offset: 0xa8
■ Exists: Always
RSVD_DMASA_31to1 31:1
0
DMASA
Memory
Bits Name Access Description
5.1.32 TCR
■ Name: Transceiver Control Register
■ Description: This register is used to enable or disable RS485 mode and also control the polarity
values for Driven enable (de) and Receiver Enable (re) signals.
This register is only valid when the DW_apb_uart is configured to have RS485 interface implemented
(UART_RS485_INTERFACE_EN = ENABLED). If RS485 interface is not implemented, this register
does not exist and reading from this register address returns zero.
■ Size: 32 bits
■ Offset: 0xac
■ Exists: UART_RS485_INTERFACE_EN == 1
RSVD_TCR_31to5 31:5
4:3
2
1
0
XFER_MODE
RS485_EN
DE_POL
RE_POL
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.33 DE_EN
■ Name: Driver Output Enable Register
■ Description: The Driver Output Enable Register (DE_EN) is used to control the assertion and de-
assertion of the DE signal.
This register is only valid when the DW_apb_uart is configured to have RS485 interface implemented
(UART_RS485_INTERFACE_EN = ENABLED). If RS485 interface is not implemented, this register
does not exist and reading from this register address will return zero.
■ Size: 32 bits
■ Offset: 0xb0
■ Exists: UART_RS485_INTERFACE_EN == 1
RSVD_DE_EN_31to1 31:1
0
DE_Enable
Memory
Bits Name Access Description
5.1.34 RE_EN
■ Name: Receiver Output Enable Register
■ Description: The Receiver Output Enable Register (RE_EN) is used to control the assertion and de-
assertion of the RE signal.
This register is only valid when the DW_apb_uart is configured to have RS485 interface implemented
(UART_RS485_INTERFACE_EN = ENABLED). If the RS485 interface is not implemented, this
register does not exist and reading from this register address will return zero.
■ Size: 32 bits
■ Offset: 0xb4
■ Exists: UART_RS485_INTERFACE_EN == 1
RSVD_RE_EN_31to1 31:1
0
RE_Enable
Memory
Bits Name Access Description
5.1.35 DET
■ Name: Driver Output Enable Timing Register
■ Description: The Driver Output Enable Timing Register (DET) is used to control the DE assertion
and de-assertion timings of 'de' signal.
This register is only valid when the DW_apb_uart is configured to have RS485 interface
implemented (UART_RS485_INTERFACE = ENABLED). If RS485 interface is not implemented, this
register does not exist and reading from this register address will return zero.
■ Size: 32 bits
■ Offset: 0xb8
■ Exists: UART_RS485_INTERFACE_EN == 1
RSVD_DE_DEAT_31to24 31:24
23:16
15:8
7:0
DE_De-assertion_Time
RSVD_DE_AT_15to8
DE_Assertion_Time
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.36 TAT
■ Name: TurnAround Timing Register
■ Description: The TurnAround Timing Register (TAT) is used to hold the turnaround time between
switching of 're' and 'de' signals.
This register is only valid when the DW_apb_uart is configured to have the RS485 interface
implemented (UART_RS485_INTERFACE_EN = ENABLED). If RS485 interface is not implemented,
this register does not exist and reading from this register address will return zero.
■ Size: 32 bits
■ Offset: 0xbc
■ Exists: UART_RS485_INTERFACE_EN == 1
RE_to_DE 31:16
DE_to_RE 15:0
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.37 DLF
■ Name: Divisor Latch Fraction Register
■ Description: This register is only valid when the DW_apb_uart is configured to have Fractional Baud
rate Divisor implemented (FRACTIONAL_BAUD_DIVISOR_EN = ENABLED). If Fractional Baud
rate divisor is not implemented, this register does not exist and reading from this register address
will return zero.
■ Size: 32 bits
■ Offset: 0xc0
■ Exists: FRACTIONAL_BAUD_DIVISOR_EN == 1
RSVD_DLF 31:y
x:0
DLF
Memory
Bits Name Access Description
5.1.38 RAR
■ Name: Receive Address Register
■ Description: Receive Address Register
■ Size: 32 bits
■ Offset: 0xc4
■ Exists: UART_9BIT_DATA_EN == 1
RSVD_RAR_31to8 31:8
7:0
RAR
Memory
Bits Name Access Description
Memory
Bits Name Access Description
7:0 RAR * Varies This is an address matching register during receive mode. If
the 9-th bit is set in the incoming character then the
remaining 8-bits will be checked against this register value.
If the match happens then sub-sequent characters with 9-th
bit set to 0 will be treated as data byte until the next address
byte is received.
Note:
- This register is applicable only when
'ADDR_MATCH'(LCR_EXT[1] and 'DLS_E' (LCR_EXT[0])
bits are set to 1.
- If UART_16550_COMPATIBLE is configured to 0, then RAR
should be programmed only when UART is not busy.
- If UART_16550_COMPATIBLE is configured to 0, then RAR
can be programmed at any point of the time. However, user
must not change this register value when any receive is in
progress.
Value After Reset: 0x0
Exists: Always
Memory Access: "(UART_9BIT_DATA_EN==1) ? \"read-
write\" : \"read-only\""
5.1.39 TAR
■ Name: Transmit Address Register
■ Description: Transmit Address Register
■ Size: 32 bits
■ Offset: 0xc8
■ Exists: UART_9BIT_DATA_EN == 1
RSVD_TAR_31to8 31:8
7:0
TAR
Memory
Bits Name Access Description
7:0 TAR * Varies This is an address matching register during transmit mode. If
DLS_E (LCR_EXT[0]) bit is enabled, then DW_apb_uart will
send the 9-bit character with 9-th bit set to 1 and remaining
8-bit address will be sent from this register provided
'SEND_ADDR' (LCR_EXT[2]) bit is set to 1.
Note:
- This register is used only to send the address. The normal
data should be sent by programming THR register.
- Once the address is started to send on the DW_apb_uart
serial lane, then 'SEND_ADDR' bit will be auto-cleared by
the hardware.
Value After Reset: 0x0
Exists: Always
Memory Access: "(UART_9BIT_DATA_EN==1) ? \"read-
write\" : \"read-only\""
5.1.40 LCR_EXT
■ Name: Line Extended Control Register
■ Description: Line Extended Control Register
■ Size: 32 bits
■ Offset: 0xcc
■ Exists: UART_9BIT_DATA_EN == 1
31:4
TRANSMIT_MODE 3
2
1
0
RSVD_LCR_EXT
ADDR_MATCH
SEND_ADDR
DLS_E
Memory
Bits Name Access Description
Memory
Bits Name Access Description
3 TRANSMIT_MODE R/W Transmit mode control bit. This bit is used to control the type
of transmit mode during 9-bit data transfers.
Memory
Bits Name Access Description
2 SEND_ADDR R/W Send address control bit. This bit is used as a control knob
for the user to determine when to send the address during
transmit mode.
Note:
1 ADDR_MATCH R/W Address Match Mode.This bit is used to enable the address
match feature during receive.
Memory
Bits Name Access Description
0 DLS_E R/W Extension for DLS. This bit is used to enable 9-bit data for
transmit and receive transfers.
Value After Reset: 0x0
Exists: Always
Volatile: true
5.1.41 UART_PROT_LEVEL
■ Name: UART Protection level
■ Description: UART Protection level register
■ Size: 32 bits
■ Offset: 0xd0
■ Exists: (SLAVE_INTERFACE_TYPE > 1 && PSLVERR_RESP_EN==1 && HC_PROT_LEVEL==0) ? 1
:0
RSVD_UART_PROT_LEVEL 31:3
2:0
UART_PROT_LEVEL
Memory
Bits Name Access Description
5.1.42 REG_TIMEOUT_RST
■ Name: Register timeout counter reset value
■ Description: Name: Register timeout counter reset register This register keeps the reset value of
reg_timer counter register. The reset value of the register is REG_TIMEOUT_DEFAULT The default
reset value can be further modified if HC_REG_TIMEOUT_VALUE = 0. The final programmed value
(or the default reset value if not programmed) determines what value the reg_timeout counter
register starts counting down from. A zero on the counter will break the hung transaction with
PSLVERR high
■ Size: 32 bits
■ Offset: 0xd4
■ Exists: (( (SLAVE_INTERFACE_TYPE>0 && PSLVERR_RESP_EN==1 &&
REG_TIMEOUT_WIDTH>0) ? 1 : 0)==1) ? 1 : 0
RSVD_REG_TIMEOUT_RST 31:y
x:0
REG_TIMEOUT_RST
Memory
Bits Name Access Description
Memory
Bits Name Access Description
x:0 REG_TIMEOUT_RST R/W This field holds reset value of REG_TIMEOUT counter
register.
Value After Reset: REG_TIMEOUT_VALUE
Exists: [<functionof> "(HC_REG_TIMEOUT_VALUE==0) ?
1 : 0"]
Volatile: true
Range Variable[x]: REG_TIMEOUT_WIDTH - 1
5.1.43 CPR
■ Name: Component Parameter Register
■ Description: Component Parameter Register.This register is valid only when
UART_ADD_ENCODED_PARAMS = 1. If the UART_ADD_ENCODED_PARAMS parameter is not
set, this register does not exist and reading from this register address returns 0.
■ Size: 32 bits
■ Offset: 0xf4
■ Exists: UART_ADD_ENCODED_PARAMS == 1
31:24
23:16
15:14
3:2
1:0
13
UART_ADD_ENCODED_PARAMS 12
11
10
9
8
7
6
5
4
ADDITIONAL_FEAT
RSVD_CPR_31to24
RSVD_CPR_15to14
APB_DATA_WIDTH
RSVD_CPR_3to2
SIR_LP_MODE
FIFO_ACCESS
THRE_MODE
AFCE_MODE
DMA_EXTRA
FIFO_MODE
FIFO_STAT
SIR_MODE
SHADOW
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
Memory
Bits Name Access Description
5.1.44 UCV
■ Name: UART Component Version
■ Description: UCV register is valid only when the DW_apb_uart is configured to have additional
features implemented (ADDITIONAL_FEATURES = YES). If additional features are not
implemented, this register does not exist and reading from this register address returns 0.
■ Size: 32 bits
■ Offset: 0xf8
■ Exists: ADDITIONAL_FEATURES == 1
UART_Component_Version 31:0
Memory
Bits Name Access Description
31:0 UART_Component_Version R ASCII value for each number in the version, followed by *.
For example 32_30_31_2A represents the version 2.01*
Value After Reset: UART_COMP_VERSION
Exists: Always
5.1.45 CTR
■ Name: Component Type Register
■ Description: CTR is register is valid only when the DW_apb_uart is configured to have additional
features implemented (ADDITIONAL_FEATURES = YES). If additional features are not
implemented, this register does not exist and reading from this register address returns 0.
■ Size: 32 bits
■ Offset: 0xfc
■ Exists: ADDITIONAL_FEATURES == 1
Peripheral_ID 31:0
Memory
Bits Name Access Description
6
Programming the DW_apb_uart
Write characters to be
transmitted to transmit
Write “1” to LCR[7] FIFO by writing to THR
(DLAB) bit
More
Write “0” to LCR[7] Yes
(DLAB) bit data to
transmit?
No
Write to LCR to set up
transfer characteristics Clear THR empty
such as data length, interrupt by reading
number of stop bits, IIR register
parity bits, and so on
If FIFO_MODE != NONE
(FIFO mode enabled),
write to FCR to enable
FIFOs and set Transmit
FIFO threshold level
The flow diagram in Figure 6-2 shows the programming sequence for setting up the DW_apb_uart for
reception.
If FIFO_MODE != NONE
(FIFO mode enabled),
write to FCR to enable
FIFOs and set Receive
Write to Modem Control FIFO threshold level
Register (MCR) to
program SIR mode, auto
flow, loopback, modem
control outputs
Write to IER to enable
required interrupts
To clear interrupt:
Data from THR register is sent as data byte with the 9th bit set to 0
For address, software must ensure that the 9th bit is set to 1.
For data, software must ensure that the 9th bit is set to 0.
Yes
- When this 9-bit address information reaches the top of RxFIFO, LSR[9] is
set to 1 and corresponding interrupt gets generated. - DW_apb_uart
updates IIR[3:0] to 0110 indicating Receiver Line Status interrupt.
- Software must wait for the interrupt and read LSR register to know the cause
of the interrupt.
- Software performs address matching after noticing that LSR[8] is set to 1.
- Software performs address matching.
- Software, irrespective of address match, needs to read the subsequent data
bytes from RBR register. If address match fails, then software has to discard
the data.
Note In the FIFO mode, if UART_9BIT_DATA_EN=1, the character timeout also considers the 9th
bit.
7
Verification
This chapter provides an overview of the testbench and tests available for DW_apb_uart verification. (Also
see “Verification Environment Overview” on page 22). Once the DW_apb_uart has been configured and the
verification environment set up, simulations can be automatically ran.
The DW_apb_uart verification testbench is built with DesignWare Verification IP (VIP). Make
Note sure you have the supported version of the VIP components for this release, otherwise, you
may experience some tool compatibility problems. For more information about supported tools
in this release, see the following web page:
DesignWare Synthesizable Components for AMBA 2, AMBA 3 AXI, and AMBA 4 AXI
Installation Guide
Vera Tests
(test stimuli and results)
test_DW_apb_uart.v
APB Checkers
BFM SIO
Monitors
UartLocal DMA
(DUT driver) BFM
UartRemote
(VIP driver)
Scoreboard
= Vera shell
desired register settings, transferring of data, toggling of the modem interface signals, loopback
mode, interrupts, and so on in the DUT(UART). Since the information directing the required
simulations are shielded by UartLocalClass away from AHB BFM, revised versions of the latter Vera
component can be easily accommodated by updating UartLocalClass.
■ VIP Driver, or UartRemoteClass – Performs a similar role to that of UartLocalClass, translating the
information provided by Testbench API into corresponding SIO_TxRx BFM commands in order to
effect the desired simulation behaviors. Note that controls complementary to that of the
UartLocalClass are performed in the UartRemoteClass, such that if the DUT performs transmits, then
the SIO_TxRx BFM attempts receptions. UartRemoteClass also serves to shield the rest of the
verification environment from revised versions of this VIP component.
■ AHB BFM – VIP harness BFM required to imitate as an AHB master. All actual register accesses
(reads and writes) required by a current test are performed using AHB BFM commands. Existing
class definitions for this BFM are re-used.
■ DMA BFM – Exercises the DMA interface of the DUT/UARTv3.0. It behaves as another AHB master,
issuing commands to perform reads and writes from/to the UART. These activities are coordinated
within the UartLocalClass.
■ Checkers – Examine the behavior of the DUT through the DUT signal interfaces, and evaluate the
outcome of the prescribed tests targeted at the DUT. The verification tests determine the degree to
which the DUT is verified, and is therefore linked to one (or more) test monitors in the test
environment. These Checkers operate independently of the main flow in the test code. This form of
messaging uses two classes, TestmonAlertClass and TestmonExecuteClass.
■ SIOMonitor – Serial monitor VIP from the SIO VIP package. When appropriately parameterized, the
SIO_Mon examines the serial bit patterns exchanged between the DUT and the SIO_TxRx.
■ SIOTxRx BFM – Vera model of a UART capable of serial data exchanges with any other UART.
■ APB Slave BFM – Used to ensure that violations in the APB accesses are appropriately captured and
logged.
■ Scoreboard – Tracks the data that are exchanged between the UART and the SIOTxrx models. This
allows verification of the actual contents transmitted and/or received on either side in either
direction.
8
Integration Considerations
After you have configured, tested, and synthesized your component with the coreTools flow, you can
integrate the component into your own design environment.
8.2 Coherency
Coherency is where bits within a register are logically connected. For instance, part of a register is read at
time 1 and another part is read at time 2. Being coherent means that the part read at time 2 is at the same
value it was when the register was read at time 1. The unread part is stored into a shadow register and this
is read at time 2. When there is no coherency, no shadow registers are involved.
A bus master may need to be able to read the contents of a register, regardless of the data bus width, and be
guaranteed of the coherency of the value read. A bus master may need to be able to write a register
coherently regardless of the data bus width and use that register only when it has been fully programmed.
This may need to be the case regardless of the relationship between the clocks.
Coherency enables a value to be read that is an accurate reflection of the state of the counter, independent of
the data bus width, the counter width, and even the relationship between the clocks. Additionally, a value
written in one domain is transferred to another domain in a seamless and coherent fashion.
Upper Byte
Bus Width
9 - 16 1 NCR NCR
17 - 24 2 2 NCR
25 - 32 3 2 (or 3) NCR
There are three relationship cases to be considered for the processor and peripheral clocks:
■ Identical
■ Synchronous (phase coherent but of an integer fraction)
■ Asynchronous
Shadow
pwdata[7:0] 8 32 32
Shadow [7:0]
ByteWen[0] EN
pwdata[23:16] 8
Shadow [23:16]
ByteWen[2] EN
UpperByteWen EN LD
LoadCnt
The following figure shows a 32-bit register that is written over an 8-bit data bus, as well as the shadow
registers being loaded and then loaded into the counter when fully programmed. The LoadCnt signal lasts
for one cycle and is used to load the counter with CntLoadValue.
pclk
paddr A0 A1 A2 A3
penable
pwdata[7:0] 0A 0B 0C 0D
Shadow[7:0] 0A
Shadow[15:8] 0B
Shadow[23:16] 0C
LoadValue[31:0] 0D0C0B0A
UpperByteWen
LoadCnt
Counter[31:0] 0D0C0B0A
Each of the bytes that make up the load register are stored into shadow registers until the final byte is
written. The shadow register is up to three bytes wide. The contents of the shadow registers and the final
byte are transferred into the CntLoadValue register when the final byte is written. The counter uses this
register to load/initialize itself. If the counter is operating in a periodic mode, it reloads from this register
each time the count expires.
By using the shadow registers, the CntLoadValue is kept stable until it can be changed in one cycle. This
allows the counter to be loaded in one access and the state of the counter is not affected by the latency in
programming it. When there is a new value to be loaded into the counter initially, this is signaled by
LoadCnt = 1. After the upper byte is written, the LoadCnt goes to zero.
The following figure shows an RTL diagram for the circuitry required to implement the coherent write
when the bus and peripheral clocks are synchronous.
Shadow
pwdata[7:0] 8 32 32
Shadow [7:0]
ByteWen[0] EN
pwdata[23:16] 8
Shadow [23:16]
ByteWen[2] EN
UpperByteWen EN LD
1
LoadCnt
OR
The following figure shows a 32-bit register being written over an 8-bit data bus, as well as the shadow
registers being loaded and then loaded into the counter when fully programmed. The LoadCnt signal is
extended until a change in the toggle is detected and is used to load the counter.
pclk
counter_clk
paddr A0 A1 A2 A3
penable
pwdata[7:0] 0A 0B 0C 0D
Shadow[7:0] 0A
Shadow[15:8] 0B
Shadow[23:16] 0C
CntLoadValue[31:0] 0D0C0B0A
LoadCnt
toggle
toggle_edge_detect
Counter[31:0] 0D0C0B0A
Shadow
pwdata[7:0] 8 32 32 32
Shadow [7:0]
ByteWen[0] EN
ByteWen[1] EN
pwdata[23:16] 8
Shadow [23:16]
NewValue
ByteWen[2] EN &
red_counter_clk
UpperByteWen EN EN LD
(or ByteWen[3])
1 SafeNewValue
ClrNewValue
Reset
ClrNewValue
Reset red_counter_clk EN
Rising
counter_clk Edge red_counter_clk Toggle
1
Detect
ClrNewValue Edge
Detect
pclk
pclk
Shaded and edge detect registers are all
connected to the Bus clock. Others are
connected to the Peripheral clock.
When the clocks are asynchronous, you need to transfer the contents of the register from one clock domain
to another. It is not desirable to transfer the entire register through meta-stability registers, as coherency is
not guaranteed with this method. The circuitry needed requires the processor clock to be used to re-time the
peripheral clock. Upon a rising edge of the re-timed clock, the new value signal, NewValue, is transferred
into a safe new value signal, SafeNewValue, which happens after the edge of the peripheral clock has
occurred.
Every time there is a rising edge of the peripheral clock detected, the CntLoadValue is transferred into a
SafeCntLoadValue. This value is used to transfer the load value across the clock domains. The
SafeCntLoadValue only changes a number of bus clock cycles after the peripheral clock edge changes. A
counter running on the peripheral clock is able to use this value safely. It could be up to two peripheral
clock periods before the value is loaded into the counter. Along with this loaded value, there also is a single
bit transferred that is used to qualify the loading of the value into the counter.
The timing diagram depicted in the following figure does not show the shadow registers being loaded. This
is identical to the loading for the other clock modes.
pclk
counter_clk
UpperByteWen
paddr A3
penable
pwdata[7:0] 0D
NewValue
ntLoadValue[31:0] 0D0C0B0A
red_counter_clk
ntLoadValue[31:0] 0D0C0B0A
SafeNewValue
toggle
ClrNewValue
Counter[31:0] 0D0C0B0A
The NewValue signal is extended until a change in the toggle is detected and is used to update the safe
value. The SafeNewValue is used to load the counter at the rising edge of the peripheral clock. Each time a
new value is written the toggle bit is flipped and the edge detection of the toggle is used to remove both the
NewValue and the SafeNewValue.
Lower Byte
Bus Width
9 - 16 0 NCR NCR
Lower Byte
Bus Width
17 - 24 0 0 NCR
25 - 32 0 0 NCR
Depending on the bus width and the register width, there may be no need to save the upper bits because the
entire register is read in one access, in which case there is no problem with coherency. When the lower byte
is read, the remaining upper bytes within the counter register are transferred into a holding register. The
holding register is the source for the remaining upper bytes. Users must read LSB to MSB for this solution to
operate correctly. NCR means that no coherency circuitry is required, as the entire register is read with one
access.
There are two cases regarding the relationship between the processor and peripheral clocks to be considered
as follows:
■ Identical and/or synchronous
■ Asynchronous
SafeCntVal
CntVal[31:8]
EN
LowerByteRen ReadCntVal[31:0]
CntVal[31:8]
ByteRen[3:0]
Counter
Block
Shaded registers are clocked
with the processor clock.
pclk
clk1
penable
prdata[7:0] 03 02 01 00 0H 0G
LowerByteRen
Note You must read LSB to MSB when the bus width is narrower than the counter width.
Once a read transaction has started, the value of the upper register bits need to be stored into a shadow
register so that they can be read with subsequent read accesses. Storing these upper bits preserves the
coherency of the value that is being read. When the processor reads the current value it actually reads the
contents of the shadow register instead of the actual counter value. The holding register is read when the
bus width is narrower than the counter width. When the LSB is read, the value comes from the shadow
register; when the remaining bytes are read they come from the holding register. If the data bus width is
wide enough to read the counter in one access, then the holding registers do not exist.
The counter clock is registered and successively pipelined to sense a rising edge on the counter clock.
Having detected the rising edge, the value from the counter is known to be stable and can be transferred
into the shadow register. The coherency of the counter value is maintained before it is transferred, because
the value is stable.
The following figure illustrates the synchronization of the counter clock and the update of the shadow
register.
CntVal ShdwCntVal
SafeCntVal
EN
LowerByteRen ReadCntVal
EN
Safe To Update
Sync & Rising
Edge Detect Sync and shaded registers are
clocked with the processor clock.
8.3 Performance
This section discusses performance and the hardware configuration parameters that affect the performance
of the DW_apb_uart.
Maximum Configuration 1 with pclk: 200 MHz 7075 gates 117 nW 200.558 uW
APB4: sclk: 35 MHz
APB_DATA_WIDTH 8
FIFO_MODE 2048
CLOCK_MODE 2
AFCE_MODE 1
THRE_MODE_USER 1
SIR_MODE 1
CLK_GATE_EN 1
FIFO_ACCESS 1
DMA_EXTRA 1
DEBUG 1
SLAVE_INTERFACE_TYPE 2
A
Synchronizer Methods
This appendix describes the synchronizer methods (blocks of synchronizer functionality) that are used in
the DW_apb_uart to cross clock boundaries.
This appendix contains the following sections:
■ “Synchronizers Used in DW_apb_uart” on page 244
■ “Synchronizer 1: Simple Double Register Synchronizer” on page 245
■ “Synchronizer 2: Simple Double Register Synchronizer with Configurable Polarity Reset” on
page 245
■ “Synchronizer 3: Simple Double Register Synchronizer with Acknowledge” on page 246
The DesignWare Building Blocks (DWBB) contains several synchronizer components with
Note functionality similar to methods documented in this appendix. For more information about the
DWBB synchronizer components go to:
https://www.synopsys.com/dw/buildingblock.php
Synchronizer Module
File Sub Module File Synchronizer Type and Number
Note The BCM21 is a basic multiple register based synchronizer module used in the design. It can be
replaced with equivalent technology specific synchronizer cell.
Figure A-1 Block Diagram of Synchronizer 1 With Two Stage Synchronization (Both Positive Edge)
test
D Q width
Missampling Disabled
test
Missampling width width width
data_s Delay Block D Q D Q data_d
(per-bit basis)
D Q width
Missampling Enabled
Figure A-2 Block Diagram of Synchronizer 2 With Two Stage Synchronization (Both Positive Edge)
test
D Q width
Missampling Disabled
test
Missampling width width width
data_s Delay Block D Q D Q data_d
(per-bit basis)
D Q width
Missampling Enabled
B
Internal Parameter Descriptions
Provides a description of the internal parameters that might be indirectly referenced in expressions in the
Signals, Parameters, or Registers chapters. These parameters are not visible in the coreConsultant GUI and
most of them are derived automatically from visible parameters. You must not set any of these parameters
directly.
Some expressions might refer to TCL functions or procedures (sometimes identified as function_of) that
coreConsultant uses to make calculations. The exact formula used by these TCL functions is not provided in
this chapter. However, when you configure the core in coreConsultant, all TCL functions and parameters
are evaluated completely; and the resulting values are displayed where appropriate in the coreConsultant
GUI reports.
RXFIFO_RW (UART_9BIT_DATA_EN == 1) ? 11 : 10
RX_RAM_DATA_WIDTH RXFIFO_RW
SRBRN_REG_SIZE (UART_9BIT_DATA_EN == 1) ? 9 : 8
STHRN_REG_SIZE (UART_9BIT_DATA_EN == 1) ? 9 : 8
TXFIFO_RW (UART_9BIT_DATA_EN == 1) ? 9 : 8
TX_RAM_DATA_WIDTH TXFIFO_RW
UART_ADDR_SLICE_LHS 8
UART_COMP_TYPE 32'h44570110
UART_COMP_VERSION 32'h3430322a
C
Application Notes
Q. When I read the Component Parameter register (CPR), it always returns a value of 0. Why does this occur?
A. The CPR is only valid when DW_apb_uart is configured to have the Component Parameter register
implemented (UART_ADD_ENCODED_PARAMS is set to Yes). If the Component Parameter
register is not implemented, this register does not exist and reading from this register address
returns 0.
Q. Why is there IIR[3:0]=0x7, an additional busy detect interrupt in comparison to the 16550 National
specification?
A. Busy functionality helps to safe guard against errors if the LCR, DLL, and/or DLH registers are
changed during a transaction even though they should only be set during initialization (as stated in
the National specification for DLL/DLH, section 8.3 p.16).
Q. Why are there two resets in DW_apb_uart?
A. When operating in asynchronous serial clock mode, dedicated reset signals for the different clock
domains are required. All the logic operating on pclk is reset by presetn, while the logic operating on
sclk is reset by s_rst_n.
■ The presetn and s_rst_n signals must be synchronous to the pclk and sclk clock signals,
Note respectively.
■ For correct operation, the logic on both clock domains should be reset simultaneously;
resetting only one clock domain results in undetermined behavior. When de-asserting the
reset signals, s_rst_n should be de-asserted first.
The software reset (when this feature is enabled) resets both pclk and sclk logic; although this signal
is generated in the pclk domain, internal synchronization ensures it can be safely used in the sclk
domain without the risk of metastability.
When operating in synchronous serial clock mode all logic is reset by the presetn signal.
Q. Is it possible to do burst (back-to-back) FIFO reads/writes? For example, can the write and enable lines be held
for two consecutive clocks to do back-to-back transfers?
A. DW_apb_uart does accommodate burst FIFO reads and writes using the SRBR (Shadow Receive
Buffer Register) and STHR (Shadow Transmit Holding Register).
Q. What activity occurs on the sout and sir_out_n signals in UART and IR mode?
A. The serial data out signal sout is driven high if DW_apb_uart is in loopback mode or serial infrared
mode. Otherwise, it is assigned to the current bit of the character that is being transmitted.
Q. Is there a way to find out whether DW_apb_uart is operating in either normal serial data mode or in Infrared
mode?
A. The only way to find out whether DW_apb_uart is operating in either normal serial data mode or in
Infrared mode is to check the Modem Control Register (MCR) bit 6. If MCR[6]=0, IrDA SIR Mode
disabled. If MCR[6]=1, IrDA SIR Mode is enabled. This bit is writable only when SIR_MODE is
enabled.
Q. Is DW_apb_uart completely compliant with the 16750 specification from Texas Instruments?
A. No, DW_apb_uart is not completely compliant with the 16750 TI specification. DW_apb_uart does
not support features such as sleep mode (has an enable bit in the IER) and low-power mode (has an
enable bit in the IER), which seem to be for a uart/clock oscillator control within their chip.
Q. What is the safest way to hold DW_apb_uart in reset or non-response state when it is being initialized so that
no characters during this time period are received/transmitted?
A. When you are in the initialization stage, there are two ways to ensure that no characters during this
time period are received/transmitted:
a. Set DLL and DLH to 0; configure the control registers for transfer, for instance, set LCR register
(data size, stop bits, and so on); set the MCR register; set the FCR register to enable FIFOs; and set
IER register to enable interrupts. Once this is completed, write to the divisor registers DLL and
DLH to set the bit rate and then write the data to be transmitted into the THR register.
b. There is a loopback mode (MCR[4]) that provides a local loopback feature. When this bit is set to
logic 1, the transmitter Serial Output (SOUT) is set to a logic 1 state, the receiver Serial Input (SIN)
is disconnected, and the output of the Transmitter Shift Register is “looped back” into the
Receiver Shift Register input. So DW_apb_uart does not receive anything because the sin signal is
disconnected.
Put DW_apb_uart in loopback mode; setup the control registers for transfer (for instance, write
the divisor registers to set the bit rate); set LCR register (data size, stop bits, and so on); set MCR
register; set FCR register to enable FIFOs; and set IER register to enable interrupts. Once this is
completed, write 0 in MCR[4] (no loopback mode) and then write the data to be transmitted into
the THR register.
Q. After initialization of DW_apb_uart, if you want to program the baud rate, how can you make sure you do not
receive/send any characters during this configuration time?
A. After initialization of DW_apb_uart, once TX/RX has started, if you want to reprogram the baud
rate, make sure that the serial transfer has been completed. The safest way to accomplish this is to
poll USR[0] (Busy) bit, and when DW_apb_uart is not busy, change the register values.
Q. What is the functionality of the SIR_MODE and SIR_LP_MODE configuration parameters?
A. IrDA 1.0 SIR mode specifies a maximum baud rate of 115.2 Kbaud. But if you want to operate using
the low-power pulse duration (SIR_LP_MODE=1) of 1.63us, you must run at 115.2K baud.
DW_apb_uart automatically handles this by being configured with asynchronous clock support.
If SIR_MODE is set to 1, you can have a baud rate anywhere from 9.6K to 115.2K with 3/16 nominal
pulse width support. However, if SIR_LP_MODE is set to 1, you must run at 115.2K.
If you set CLOCK_MODE to 2, SIR_MODE to 1, and run at 115.2K, you are getting functionality for
SIR_LP_MODE set to 1. If you set a baud rate higher or lower then 115.2K in SIR_LP_MODE, it still
generates 3/16 pulse width but does not work properly because it violates the requirement of 1.63us
for low-power IrDA SIR mode.
D
Glossary
active command queue Command queue from which a model is currently taking commands; see also
command queue.
application design Overall chip-level design into which a subsystem or subsystems are integrated.
BFM Bus-Functional Model — A simulation model used for early hardware debug. A
BFM simulates the bus cycles of a device and models device pins, as well as
certain on-chip functions. See also Full-Functional Model.
big-endian Data format in which most significant byte comes first; normal order of bytes in a
word.
blocked command stream A command stream that is blocked due to a blocking command issued to that
stream; see also command stream, blocking command, and non-blocking
command.
blocking command A command that prevents a testbench from advancing to next testbench
statement until this command executes in model. Blocking commands typically
return data to the testbench from the model.
command channel Manages command streams. Models with multiple command channels execute
command streams independently of each other to provide full-duplex mode
function.
command stream The communication channel between the testbench and the model.
component A generic term that can refer to any synthesizable IP or verification IP in the
DesignWare Library. In the context of synthesizable IP, this is a configurable block
that can be instantiated as a single entity (VHDL) or module (Verilog) in a design.
configuration The act of specifying parameters for a core prior to synthesis; can also be used in
the context of VIP.
configuration intent Range of values allowed for each parameter associated with a reusable core.
core developer Person or company who creates or packages a reusable core. All the cores in the
DesignWare Library are developed by Synopsys.
core integrator Person who uses coreConsultant or coreAssembler to incorporate reusable cores
into a system-level design.
coreAssembler Synopsys product that enables automatic connection of a group of cores into a
subsystem. Generates RTL and gate-level views of the entire subsystem.
coreConsultant A Synopsys product that lets you configure a core and generate the design views
and synthesis views you need to integrate the core into your design. Can also
synthesize the core and run the unit-level testbench supplied with the core.
coreKit An unconfigured core and associated files, including the core itself, a specified
synthesis methodology, interfaces definitions, and optional items such as
verification environment files and core-specific documentation.
cycle command A command that executes and causes HDL simulation time to advance.
decoder Software or hardware subsystem that translates from and “encoded” format back
to standard format.
design context Aspects of a component or subsystem target environment that affect the
synthesis of the component or subsystem.
DesignWare cores A specific collection of synthesizable cores that are licensed individually. For
more information, refer to www.synopsys.com/designware.
dual role device Device having the capabilities of function and host (limited).
endian Ordering of bytes in a multi-byte word; see also little-endian and big-endian.
Full-Functional Mode A simulation model that describes the complete range of device behavior,
including code execution. See also BFM.
GTECH A generic technology view used for RTL simulation of encrypted source code by
non-Synopsys simulators.
implementation view The RTL for a core. You can simulate, synthesize, and implement this view of a
core in a real chip.
interface Set of ports and parameters that defines a connection point to a component.
MacroCell Bigger IP blocks (6811, 8051, memory controller) available in the DesignWare
Library and delivered with coreConsultant.
master Device or model that initiates and controls another device or peripheral.
non-blocking command A testbench command that advances to the next testbench statement without
waiting for the command to complete.
peripheral Generally refers to a small core that has a bus connection, specifically an APB
interface.
RTL Register Transfer Level. A higher level of abstraction that implies a certain gate-
level structure. Synthesis of RTL code yields a gate-level design.
static controller Memory controller with specific connections for Static memories such as
asynchronous SRAMs, Flash memory, and ROMs.
synthesis intent Attributes that a core developer applies to a top-level design, ports, and core.
technology-independent Design that allows the technology (that is, the library that implements the gate
and via widths for gates) to be specified later during synthesis.
Testsuite Regression A collection of files for stand-alone verification of the configured component. The
Environment (TRE) files, tests, and functionality vary from component to component.
VIP Verification Intellectual Property — A generic term for a simulation model in any
form, including a Design View.
wrap, wrapper Code, usually VHDL or Verilog, that surrounds a design or model, allowing easier
interfacing. Usually requires an extra, sometimes automated, step to create the
wrapper.
zero-cycle command A command that executes without HDL simulation time advancing.
Index
A definition 253
active command queue core
definition 253 definition 254
activity core developer
definition 253 definition 254
application design core integrator
definition 253 definition 254
Auto CTS, timing of 55 coreAssembler
Auto flow control 52 definition 254
Auto RTS, timing of 54 coreConsultant
definition 254
B
coreKit
BFM definition 254
definition 253
Customer Support 12
big-endian
cycle command
definition 253
definition 254
Block descriptions 20
Block diagram D
DW_apb_uart functional 19 decoder
blocked command stream definition 254
definition 253 design context
blocking command definition 254
definition 253 design creation
definition 254
C
Design View
Coherency definition 254
about 229
DesignWare cores
read 236
definition 254
write 230
DesignWare Library
command channel
definition 254
definition 253
dual role device
command stream
definition 254
definition 253
DW_apb_uart
component
description 25
definition 253
features 21
configuration overview 15
definition 253 testbench
configuration intent overview of 226
E definition 255
endian monitor
definition 254 definition 255
Environment, licenses 23 N
F non-blocking command
Full-Functional Mode definition 255
definition 254 O
Functional description 25 Overview 15
G P
GPIO peripheral
definition 254 definition 255
GTECH Programmable THRE interrupt 56
definition 254 Protocol
H IrDA 1.0 SIR 42
hard IP RS232 25
definition 254 R
HDL Read coherency
definition 255 about 236
I and asynchronous clocks 238
IIP and synchronous clocks 237
definition 255 RS232, serial protocol 25
implementation view RTL
definition 255 definition 255
instantiate S
definition 255 SDRAM
Integrating, DW AMBA components 249 definition 255
interface SDRAM controller
definition 255 definition 255
Interrupts 50 Simple double register synchronizer 245
IP Simulation
definition 255 of DW_apb_uart coreKit 226
IrDA 1.0 SIR protocol 42 slave
IrDA SIR data format, timing of 43 definition 255
L SoC
definition 255
Licenses 23
SoC Platform
little-endian
AHB contained in 15
definition 255
APB, contained in 15
M defined 15
MacroCell soft IP
definition 255 definition 255
master static controller
definition 255 definition 255
model subsystem
SolvNet 4.02a
258 Synopsys, Inc.
DesignWare.com July 2018
DesignWare DW_apb_uart Databook Index
definition 255
Synchronizer
simple double register 245
synthesis intent
definition 255
synthesizable IP
definition 256
T
technology-independent
definition 256
Testsuite Regression Environment (TRE)
definition 256
THRE (Transmitter Holding Register Empty) 18
THRE interrupt 56
Timing
auto CTS 55
auto RTS 54
IrDA SIR data format 43
TRE
definition 256
V
Verification
of DW_apb_uart coreKit 226
VIP
definition 256
W
workspace
definition 256
wrap
definition 256
wrapper
definition 256
Write coherency
about 230
and asynchronous clocks 235
and identical clocks 231
and synchronous clocks 232
Z
zero-cycle command
definition 256
SolvNet 4.02a
260 Synopsys, Inc.
DesignWare.com July 2018