Documentation
 ASIC datasheet 
Products Summary
D16450-APB

Configurable UART with APB interface



The D16450-APB is a soft Core of a Universal Asynchronous Receiver/Transmitter (UART) functionally identical to the TL16C450. The D16450-APB performs serial-to-parallel conversion on data characters received from a peripheral device or a MODEM, and parallel-to-serial conversion on data characters received from the parallel bus. The D16450-APB provides APB interface on parallel side of the core. Device connected through APB interface can read the complete status of the UART at any time during the functional operation. Status information reported includes the type and condition of the transfer operations being performed by the UART, as well as any error conditions (parity, overrun, framing, or break interrupt). The D16450-APB includes a programmable baud rate generator that is capable of dividing the timing reference clock input by divisors of 1 to (216-1), and producing a 16 × clock for driving the internal transmitter logic. Provisions are also included to use this 16 × clock to drive the receiver logic. The D16450-APB has complete MODEM control capability, and a processor-interrupt system. Interrupts can be programmed to the user's requirements, minimizing the computing required to handle the communications link.
The D16450-APB includes fully automated testbench with complete set of tests allowing easy package validation at each stage of SoC design flow.
The D16450-APB is a technology independent design that can be implemented in a variety of process technologies.

The separate BAUD CLK line allows to set an exact transmission speed, while the UART internal logic is clocked with the PCLK frequency.

The core is perfect for applications, where the UART Core and microcontroller are clocked by the same clock signal and are implemented inside the same ASIC or FPGA chip, as well as for standalone implementation, where several UARTs are required to be implemented inside a single chip, and driven by some off-chip devices. Thanks to universal interface D16450-APB core implementation and verification are very simply, by eliminating a number of clock trees in complete system.


Key Features

Applications

  • Compliant with AMBA specification, Revision 2.0
  • Software compatible with 16450 UART
  • Configuration capability
  • Separate configurable BAUD clock line
  • Majority Voting Logic
  • Adds or deletes standard asynchronous communication bits (start, stop, and parity) to or from the serial data
  • Independently controlled transmit, receive, line status, and data set interrupts
  • False start bit detection
  • 16 bit programmable baud generator
  • Independent receiver clock input
  • MODEM control functions (CTS, RTS, DSR, DTR, RI, and DCD)
  • Fully programmable serial-interface characteristics:
    • 5-, 6-, 7-, or 8-bit characters
    • Even, odd, or no-parity bit generation and detection
    • 1-, 1½-, or 2-stop bit generation
    • Internal baud generator
  • Complete status reporting capabilities
  • Line break generation and detection. Internal diagnostic capabilities:
    • Loop-back controls for communications link fault isolation
    • Break, parity, overrun, framing error simulation
  • Full prioritized interrupt system controls
  • Fully synthesizable
  • Static synchronous design and no internal tri-states
  • Serial Data communications applications
  • Modem interface
  • Embedded microprocessor boards


Configuration


The following parameters of the D16450-APB core can be easy adjusted to requirements of dedicated application and technology. Configuration of the core can be prepared by effortless changing appropriate constants in package file. There is no need to change any parts of the code.

Baud generator
  • enable
  • disable
External RCLK source
  • enable
  • disable
External BAUDCLK source
  • enable
  • disable
Asynchronous input buffer
  • enable
  • disable
Modem Control
  • enable
  • disable
SCR register
  • enable
  • disable



Symbol

 presetn
 pclk
 pwdata (7:0)
 pwrite
 penable
 psel
 paddr (2:0)
prdata (7:0) 
so 
 rclk
 si
intr 
 baudclken
 baudclk
baudout 

Pins description

PinTypeDescription
presetninputActive low APB global reset
pclkinputAPB global clock
pwdata (7:0)inputAPB write data bus
pwriteinputAPB write strobe
penableinputIndicates the second cycle of APB transfer
pselinputAPB slave select
paddr (2:0)inputAPB address bus
rclkinputReceiver clock
siinputSerial data input
baudclkeninputBaud generator clock enable
baudclkinputBaud generator clock
prdata (7:0)outputAPB read data bus
sooutputSerial data output
introutputInterrupt request output
baudoutoutputBaud generator output

Block diagram

APB Interface
pwdata (7:0)
prdata (7:0)
pwrite
penable
psel
paddr (2:0)
Transmitter controller
so
Receiver Control
rclk
si
Interrupt Controller
intr
Baud Generator
baudout
baudclken
baudclk
presetn
pclk

Units

APB Interface

APB Interface performs the interface functions between D16450 internal blocks and APB bus. Allows easy connection of the core to existing APB systems.

Transmitter controller

Transmitter Control module controls transmission of written to THR (Transmitter Holding register) character via serial output SO. The new transmission starts on the next overflow signal of internal baud generator (the worst case delay is: 1 baudout cycle) after writing to THR. Transmission control contains THR register and transmitter shift register.

Receiver Control

The D16X50 receiver has its own independent clock input RCLK. Receiving starts when the falling edge on Serial Input (SI) during IDLE State is detected. After starting the SI input is sampled every 16 RCLK cycles as it is shown in figure below. When the logic 1 state is detected during START bit it means that the False Start bit was detected and receiver back to the IDLE state.

Interrupt Controller

D16X50 UARTs consists fully prioritized interrupt system controller. It controls interrupt requests to the CPU and interrupt priority. Interrupt controller contains Interrupt Enable (IER) and Interrupt Identification (IIR) registers.

Baud Generator

The UART contains a programmable 16 bit baud generator that divides clock input by a divisor in the range between 1 and (216–1). The output frequency of the baud generator is 16× the baud rate. The formula for the divisor is:

divisor=frequency/(16*baudrate)

Two 8-bit registers, called divisor latches DLL and DLM, store the divisor in a 16-bit binary format. These divisor latches must be loaded during initialization of the UART in order to ensure desired operation of the baud generator. When either of the divisor latches is loaded, a 16-bit baud counter is also loaded on the CLK rising edge following the write to DLL or DLM to prevent long counts on initial load.

Family summary

UART FeatureD16450D16550D16750D16552D16752D16950
FIFO Size-2*162*644*16x*2*642*128
Multichannel option---++-
Separate BAUD Clock line++++++
Modem Control++++++
False Start Bit detection++++++
Status report++++++
Internal diagnostic capabilities++++++
Prioritized interrupt system++++++
Break generation and detection++++++
Fast mode CLK/4--o-o+
Half-Duplex RS485--o-o+
RS485 buffer enable--o-o+
IRDA support---+-+
Additional CLK prescaler----+-
1284 Parallel Port---+--
Hardware flow control RTS/CTS--+-++
Software flow control Xon/Xoff----++
Isochronous mode-----+
Detector o bad data in receiver FIFO-+++++
Special character detection----++
Software channel reset-----+
4 byte device ID-----+
Trigger levels for receiver and transmitter-----+
Hardware flow control DTS/DTR-----+
Optional FIFO size extension to 512 bytes--+-+-


The main features of each UART family member have been summarized in table above. It gives a briefly member characterization helping user to select the most suitable IP Core for its application.