| |
16550 UART Design
The Universal Asynchronous Receiver
and Transmitter (UART) core provides a means of serial communication
between system implemented on FPGA and external device. The core
implements RS-232 protocol. The UART supports separate FIFOs in
transmit and receive paths. The UART core does not provide flow control.
The register structure of the core is similar to industry standard
16550 UART.
Application
This IP core can be used in System on a Chip (SoC) designs as a
component instantiated into the main design for standard UART function.
Benefits
- Can be ganged to create multiple
UARTs in a single design(Example: multiple instantiations to create
multiple UARTs within a design)
- Cost saving by way of multiple UART
ASIC and PCB real estate & maintenance cost.
- Customization of number of UART
based on customer requirement
Features
- Compatible to 16550D standard
- FIFOs with 16 bytes depth in
Receiver and Transmitter paths.
- Supports Hardware flow control
- Programmable data width – available
options are 5bits, 6bits, 7bits, 8bits.
- Option for even, odd or no parity
bit generation in transmitter path and parity bit checker in receiver
path.
- Line-break generation and detection.
- Detect following errors: Receiver
overrun, parity, framing, break.
- Programmable STOP bits – available
options are 1 or 2 stop bits.
- Re-synchronization after framing
error.
- Programmable threshold for receiver
FIFO.
- Programmable baud rate.
- Interrupt generation to indicate
errors and status.
- Provides hardware prioritization of
interrupts with the Interrupt Identification register.
- Programmable interrupt control.
- Software control to access internal
registers.

|
Port
|
Direction
|
Description
|
|
cs_n
|
input
|
Chip selects.
|
|
reset
|
input
|
Reset.
|
|
ads_n
|
input
|
Port is activated to latch the
address in the internal register.
|
|
read_n
|
input
|
Read signal to read contents of
internal registers.
|
|
write_n
|
input
|
Write signal to write data into
internal registers.
|
|
address[2..0]
|
input
|
3bits address bus to access
internal registers.
|
|
data[7..0]
|
bidirectional
|
8bits data bus to gets data read
from the registers and supplied with data to be written into the
registers.
|
|
intr
|
output
|
Interrupt.
|
|
clock
|
input
|
System clock.
|
|
txd
|
output
|
Data is transmitted serially on
this port.
|
|
rxd
|
input
|
Data is received serially on
this port.
|
Register Bank
|
Register
Name
|
Register
bits description
|
|
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
Receiver
buffer
|
Received
data
|
|
Transmitter
holding
|
Transmit
data
|
|
Interrupt
enable
|
-
|
-
|
-
|
-
|
-
|
Line
Status interrupt
(EREI)
|
TxData
Ready
(ETRI)
|
RxData
Ready
(ERRI)
|
|
Interrupt
identification
|
-
|
-
|
-
|
-
|
Interrupt
ID
Bit(2)
|
Interrupt
ID
Bit(1)
|
Interrupt
ID
Bit(0)
|
Interrupt
pending
|
|
FIFO
control
|
Rxtrigger
(MSB)
|
Rxtrigger
(LSB)
|
-
|
-
|
-
|
TxFIFO
reset
|
RxFIFO
reset
|
-
|
|
Line
control
|
Divisor
Latch Access
Bit
(DLAB)
|
Set
break
(SBRK)
|
-
|
Even
Parity
Select
(EPE)
|
Parity
Enable
(PE)
|
No. of
STOP bits
(STB)
|
Word
length
Select
{WLS1)
|
Word length
Select
(WLS0)
|
|
Line status
|
Error in
RxFIFO
(RE)
|
TxEmpty
(TEMT)
|
TxFIFO
Empty
(THRE)
|
Break
Indicator
(RBI)
|
Framing
Error
(RFE)
|
Parity
Error
(RPE)
|
Overrun
Error
(ROE)
|
Data Ready
(RDR)
|
|
Divisor
(LSB)
|
Divisor
Lower Byte
|
|
Divisor
(MSB)
|
Divisor
Upper Byte
|
Licensing
Single Design license allows implementation of IP Core in single
Altera/Xilinx/Lattice FPGA bit stream in a single type of
product/design/project by the buyer.
Unlimited Designs license allows implementation of IP Core in unlimited
number of Altera/Xilinx/Lattice FPGA bit-streams in multiple
products/designs/projects by the buyer.
Deliverables
- Synthétisable RTL Netlist or VHDL
Source Code
- Documentation
|