|
16950 Configurable UART with FIFO
IP Core
General
Description:
The 16950 is a soft core of a
Universal Asynchronous Receiver/Transmitter (UART) functionally
identical to the OX16C950. The 16950 allows serial transmission in two
modes: UART mode and FIFO mode. In FIFO mode internal FIFOs are
activated allowing 128 bytes (plus 3 bits of error data per byte in the
RCVR FIFO) to be stored in both receive and transmit modes. 16950
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 CPU. The CPU 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). D16950 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 n ×
clock for driving the internal transmitter logic. Provisions are also
included to use this n × clock to drive the receiver logic. The D16950
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. 16950 core
includes all 16450, 16550, 16650 and 16750 features and additional
functions. 16950 has ICR registers that gives additional capabilities of
configuration of UART work. Data transmission may be synchronize by
external clock connected to RI ( for receiver and transmitter) or to DSR
( only for receiver) pin. NMR register allows to enable 9-bit mode
transmission with or without special character. Writing and reading
from/to FIFO may be controls by trigger level registers. Trigger level
registers may be set any value from 1 to 127.
The 16950 includes fully automated testbench with complete set
of tests allowing easy package validation at each stage of SoC
design flow.
The 16950 is a technology independent design that can be implemented in
a variety of process technologies.
In the FIFO mode, there is a selectable autoflow control feature that
can significantly reduce software overload and increase system
efficiency by automatically controlling serial data flow through the RTS
output and the CTS input signals.
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 16950 core implementation and verification are very
simply, by eliminating a number of clock trees in complete system.
|
Key Features:
- Software compatible with 16450, 16550,16650,16750
and 16950 UARTs
- Configuration capability
- Separate configurable BAUD clock line
- Majority Voting Logic
- Two modes of operation: UART mode and FIFO mode
- In the FIFO mode transmitter and receiver are
each buffered with 128 byte FIFO to reduce the number of
interrupts presented to the CPU
- In UART mode receiver and transmitter are
double buffered to eliminate a need for precise synchronization
between the CPU and serial data
- Configurable FIFO size up to 512 levels
- 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,
DCD)
- Programmable Hardware Flow Control through RTS
and CTS
- Programmable Flow Control using DTR and DSR
- Programmable in-band Flow Control using XON/XOFF
|
- Programmable special characters detection
- Trigger levels for TX and RX FIFO
- Interrupts and automatic in-band and out-off-band
flow control
- Fully programmable serial-interface characteristics:
- 5-, 6-, 7-, 8- or 9-bit characters
- Even, odd, or no-parity bit generation and
detection
- 1-, 1½-, or 2-stop bit generation
- Internal baud generator
- Detection of bad data in receiver FIFO
- Clock prescaler from 1 to 31,875
- Enhanced isochronous clock option
- 9- bit data mode
- Software reset
- 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 simula-tion
- Full prioritized interrupt system controls
- Fully synthesizable
- Static synchronous design and no internal tri-states
|
|
Applications:
- Serial Data communications
applications
- Modem interface
- Embedded microprocessor boards
|
Configuration Modes:
The following parameters of the 16950
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.
FIFO Size:
Normal 16/128
Large, up to 512 |
Units
Receiver Control
Receiving starts when the falling edge on
Serial Input (SI) during IDLE State is detected. After starting the SI
input is sampled every 16 internal baud 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.
Receiver FIFO
The Rx FIFO is 16 levels (16550) or 64
levels (16750) deep, it receives data until the number of bytes in the
FIFO equals the selected interrupt trigger level. At that time if Rx
interrupts are enabled, the UART will issue an interrupt to the CPU. The
Rx FIFO will continue to store bytes until it will be completely full.
It will not accept any more data when it is full. Any more data entering
the Rx shift register will set the Overrun Error flag.
Transmitter FIFO
The Tx portion of the UART transmits data
through SO as soon as the CPU loads a byte into the Tx FIFO. The UART
will prevent loads to the Tx FIFO if it is currently full. Loading to
the Tx FIFO will again be enabled as soon as the next character is
transferred to the Tx shift register. These capabilities account for the
largely autonomous operation of the Tx. The UART starts the above
operations typically with a Tx interrupt.
Transmitter Control
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 register or Transmitter FIFO. Transmission
control contains THR register and transmitter shift register.
Data Bus Buffer
The data Bus Buffer accepts inputs from
the system bus and generates control signals for the other D16950
functional blocks. Address bus ADDR(2:0) selects one of the register to
be read from/written into. Both RD and WE signals are active low, and
are qualified by CS; RD and WE are ignored unless the D16950 has been
selected by holding CS low.
Modem Control Logic
Modem Control Logic controls the
interface with the MODEM or data set (or a peripheral device emulating a
MODEM).
Baud Generator
The 16950 contains a programmable 16 bit
baud generator that divides clock input by a divisor in the range
between 1 and (216–1). 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 16950 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. In addition prescaler register is provided which can
further divide the clock by values in the range 1,0 to 31,875 in steps
of 0,125. Other additional is Time Clock Register (TCR) which allows set
the sampling clock between 4 and 16 values. This options of baud rate
capable any input clock frequency up to 60MHz.
Interrupt Controller
16950 consists fully prioritized
interrupt system controller. It is enabled by INTSEL pin. It controls
interrupt requests to the CPU and interrupt priority. Interrupt
controller contains Interrupt Enable (IER) and Interrupt Status (ISR)
registers.
Licensing Options:
Comprehensible and
clearly defined licensing methods
without royalty fees make using the IP Core easy and simple..
-
Single Design license
allows implementation of IP Core in single
FPGA bitstream and/or ASIC design.
-
Unlimited Designs license, allows
implementation of
IP Core in unlimited number of FPGA bit-streams and ASIC designs. In all cases number of IP Core instantiations
within a design, and number of manufactured chips are unlimited.
- Single Design
license for VHDL or Verilog Source Code
- Encrypted, or plain text EDIF called Netlist
- Unlimited Designs license for HDL Source or Netlist
Price:

|
Deliverables:
-
Source code:
- VHDL Source Code or/and
- VERILOG Source Code or/and
- Encrypted, or plain text EDIF
-
VHDL & VERILOG test bench
environment:
- Active-HDL automatic simulation macros
- ModelSim automatic simulation macros
- Tests with reference responses
-
Technical documentation:
- Installation notes
- HDL core specification
- Datasheet
-
Synthesis scripts
-
Example application
-
Technical support
- IP Core implementation support
- 3 months maintenance (delivery of the IP Core updates,
minor
and major versions changes, delivery of the
documentation updates)
- Phone & email support
|
|
16950 implementation results for ALTERA devices. |
|
Implementation |
Speed Grade |
Utilized Area [LC] |
Frequency [MHz] |
|
CYCLONE |
-6 |
1041 + 2 RAM |
123 |
|
CYCLONE II |
-6 |
984 + 2 RAM |
127 |
|
CYCLONE III |
-7 |
982 + 2 RAM |
115 |
|
STRATIX |
-5 |
1041 + 2 RAM |
127 |
|
STRATIX II |
-3 |
679 + 2 RAM |
185 |
|
STRATIX III |
-2 |
680 + 2 RAM |
222 |
|
STRATIX GX |
-5 |
1041 + 2 RAM |
118 |
|
STRATIX II GX |
-3 |
681 + 2 RAM |
190 |
|
16950 implementation results for XILINX devices.
|
|
Implementation |
Speed Grade |
Utilized Area [Slices] |
Frequency [MHz] |
|
SPARTAN-II |
-6 |
657 |
57 |
|
SPARTAN-IIE |
-7 |
657 |
57 |
|
SPARTAN-III |
-5 |
655 |
83 |
|
SPARTAN-IIIE |
-5 |
655 |
90 |
|
VIRTEX |
-6 |
637 |
54 |
|
VIRTEX-2 |
-6 |
637 |
100 |
|
VIRTEX-4 |
-12 |
635 |
143 |
|
HiTech Global, LLC
2059 Camden Ave. Suite # 160
San Jose, CA 95124 - USA
Tel : + 1 408 781-7778
Fax: + 1 408 268-4173
info@hitechglobal.com
|
|











|