Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
16550 UART
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Integrated circuit serial port implementation}} {{Use dmy dates|date=February 2020|cs1-dates=y}} {{anchor|A|AF|AFN|C|CF|D}} [[Image:Exar16550onItronixPCB.jpg|thumb|[[Exar Corporation|Exar]] 16550]] The '''16550 UART''' ([[universal asynchronous receiver-transmitter]]) is an [[integrated circuit]] designed for implementing the interface for [[serial communications]]. The corrected -A version was released in 1987 by [[National Semiconductor]].<ref name="Michael_1987"/> It is frequently used to implement the [[serial port]] for [[IBM PC compatible]] personal computers, where it is often connected to an [[RS-232]] interface for modems, serial [[Computer mouse|mice]], printers, and similar peripherals. It was the first serial chip used in the [[IBM PS/2]] line, which were introduced in 1987.<ref name="upgrpc"/><ref name="Gilluwe_1997"/><ref name="Paul_2002_CTMOUSE"/> The part was originally made by National Semiconductor. Similarly numbered devices, with varying levels of compatibility with the original National Semiconductor part, are made by other manufacturers. A UART function that is register-compatible with the 16550 is usually a feature of multifunction I/O cards for IBM PC-compatible computers and may be integrated on the motherboard of other compatible computers. Replacement of the factory-installed [[8250 UART]] was a common upgrade for owners of IBM PC, XT, and compatible computers when high-speed modems became available. Above 9600 baud, owners discovered that the serial ports of the computers were not able to handle a continuous flow of data without losing characters. Exchange of the 8250 (having only a one-byte received data buffer) with a 16550—and occasionally patching or setting system software to be aware of the [[FIFO (computing and electronics)|FIFO]] feature of the new chip—improved the reliability and stability of high-speed connections. == Features == Main features of the 16550 include: * The ability to convert data from serial to parallel, and from parallel to serial, using [[shift register]]s. * An on-chip bit rate ([[baud]] rate) generator to control transmit and receive data rate. * Handshake lines for control of an external [[modem]], controllable by software. * An [[interrupt]] function to the host [[microprocessor]]. * An on-chip FIFO [[buffer (computer science)|buffer]] for both incoming and outgoing data; this gives the host system more time to respond to an interrupt generated by the UART, without loss of data. Both the [[computer hardware]] and [[software]] interface of the 16550 are backward compatible with the earlier [[8250 UART]] and [[16450 UART]]. The current version (since 1995) by [[Texas Instruments]] which bought National Semiconductor is called the 16550D.<ref name="upgrpc"/> The 16550A and newer is pin-compatible with the 16450, but the Microsoft diagnostics program ([[Microsoft Diagnostics|MSD]]) supplied with MS-DOS 6.x, Windows 9x, Windows Me, and Windows 2000 often report the 16450 chip as an 8250 chip.<ref name="upgrpc"/> == The FIFO buffer == [[File:NS16550AFN UART chip.jpg|thumb|National Semiconductor NS16550AFN]] One drawback of the earlier 8250 UARTs and 16450 UARTs was that interrupts were generated for each byte received. This generated high rates of interrupts as transfer speeds increased. More critically, with only a 1-byte buffer there is a genuine risk that a received byte will be overwritten if interrupt service delays occur. To overcome these shortcomings, the 16550 series UARTs incorporated a 16-byte FIFO buffer with a programmable interrupt trigger of 1, 4, 8, or 14 bytes. The 16550 also incorporates a transmit FIFO, though this feature is less critical as delays in interrupt service would only result in sub-optimal transmission speeds and not actual data loss. The 16550A(F) version was a must-have to use modems with a data transmit rate of 9600 baud. Dropouts occurred with 14.4 kbit/s ([[ITU-T V.32bis|V.32bis]] and higher) units and as compression was added with [[ITU-T V.42|V.42]] getting more data per interrupt was critical as data speed continued to increase. === Issue with the buffer === The original 16550 had a bug that prevented this FIFO from being used. National Semiconductor later released the 16550A which corrected this issue. Not all manufacturers adopted this nomenclature, however, continuing to refer to the fixed chip as a 16550.<ref name="PCComp"/> According to another source, the FIFO issue was corrected only in the 16550AF model, with the A model still being buggy. (The C and CF models are okay too, according to this source.) The 16550AFN model added DMA transfers.<ref name="Nickalls_1995"/> == See also == * [[Universal asynchronous receiver-transmitter]] (UART) ==References== {{Reflist|refs= <ref name="Michael_1987">{{Cite encyclopedia |title=A Comparison of the INS8250, NS16450 and NS16550A Series of UARTs |author-last=Michael |author-first=Martin |encyclopedia=Microcommunication Elements Databook |publisher=[[National Semiconductor]] |date=1987 |series=AN-493 |location=Santa Clara, CA, USA |pages=[https://archive.org/details/bitsavers_nationaldamunicationsElementsDataBook_19316911/page/n203 4] |url=https://archive.org/details/bitsavers_nationaldamunicationsElementsDataBook_19316911 |access-date=2020-02-07 |quote=The primary difference between these two parts is in the operation of the FIFOs. The NS16550 will sometimes transfer extra characters when the CPU reads the RX FIFO. Due to the asynchronous nature of this failure there is no work-around and the NS16550 should NOT be used in the FIFO mode. The NS16550A has no problems operating in the FIFO mode and should be used on all new designs.}}</ref> <ref name="upgrpc">{{cite book |title=Upgrading and Repairing PCs |date=2003 |pages=965 |access-date=2016-04-16 |url=https://books.google.com/books?id=E1p2FDL7P5QC&pg=PA965 |publisher=[[Que Publishing]]|isbn=9780789729743 }}</ref> <ref name="PCComp">{{cite web |url=http://www.pccompci.com/uarts.html |title=What are UART and How Do They Affect Performance? |access-date=2020-02-07 |url-status=live |archive-url=https://web.archive.org/web/20200207194229/https://www.pccompci.com/uarts.html |archive-date=2020-02-07}}</ref> <ref name="Nickalls_1995">{{cite book |author-first1=Richard W. D. |author-last1=Nickalls |author-first2=R. |author-last2=Ramasubramanian |title=Interfacing the IBM-PC to Medical Equipment: The Art of Serial Communication |url=https://archive.org/details/interfacingibmpc0000nick |url-access=registration |date=1995 |publisher=[[Cambridge University Press]] |isbn=978-0-521-46280-8 |pages=[https://archive.org/details/interfacingibmpc0000nick/page/25 25]–26}}</ref> <ref name="Gilluwe_1997">{{cite book |author-first=Frank |author-last=Van Gilluwe |title=Undocumented PC |edition=2 |date=1997 |publisher=[[Addison Wesley]] |isbn=0-20147950-8}}</ref> <ref name="Paul_2002_CTMOUSE">{{cite web |title=Re: [fd-dev] ANNOUNCE: CuteMouse 2.0 alpha 1 |author-first=Matthias R. |author-last=Paul |work=freedos-dev |date=2002-04-06 |url=https://marc.info/?l=freedos-dev&m=101807226917577 |access-date=2020-02-07 |url-status=live |archive-url=https://web.archive.org/web/20200207130948/https://marc.info/?l=freedos-dev&m=101807226917577&w=2 |archive-date=2020-02-07}} (NB. Has various information on 8250 chip bugs.)</ref> }} ==Further reading== * {{cite web |title=PC16550D - Universal Asynchronous Receiver/Transmitter with FIFOs |publisher=[[Texas Instruments]] |version=Revision C |id=SNLS378C |date=May 2015 |orig-year=June 1995 |url=http://www.ti.com/lit/ds/symlink/pc16550d.pdf |url-status=dead |archive-url=https://web.archive.org/web/20180826215135/http://www.ti.com/lit/ds/symlink/pc16550d.pdf |archive-date=2018-08-26}} * {{cite web |title=Serial UART information |author-first=Lammert |author-last=Blies |url=http://www.lammertbies.nl/comm/info/serial-uart.html |access-date=2018-09-23 |url-status=dead |archive-url=https://web.archive.org/web/20200207194832/https://www.lammertbies.nl/comm/info/serial-uart |archive-date=2020-02-07}} ==External links== * [https://en.wikibooks.org/wiki/Serial_Programming/8250_UART_Programming Serial Programming/8250 UART Programming] {{Computer-bus}} [[Category:Input/output integrated circuits]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Anchor
(
edit
)
Template:Cite web
(
edit
)
Template:Computer-bus
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Use dmy dates
(
edit
)