UART (Universal Asynchronous Receiver/Transmitter) carries out the main portion serial communications in computers. It is basically the serial port seen in computer’s motherboard. It is meant for the conversion of data between parallel and serial formats. In a communication between computers and other peripheral devices, UART takes data in parallel form and converts into serial bits and sends it in a sequential order. At the receiving end, again UART combines the serial form of data into complete form of bytes. The transmission of bytes of data can be synchronous or asynchronous depending on the hardware that is being connected. For serial communication, it is Universal Synchronous-Asynchronous Receiver/Transmitter (USART) and for parallel communication, it is Universal Asynchronous Receiver/Transmitter (UART). Apart from parallel communication, in serial communication, there need to be common clock or strobe line to indicate the transfer of data followed by ‘read’ operation at receiving end.
UARTs basically are of two types: dumb UARTs and FIFO UARTs. Modems that are being used in the motherboard of computer have UART function embedded on it. Dumb UART, that is, 8250 UART by IBM XT introduced serial communication for the first time. The add-ons to the family of UARTs included 8250A, 8250B and 16450. The latter was introduced by AT to meet higher bus speeds. The versions keep on changing depending on the speed on the processor bus. The 16450 version could handle speed up to 38.4kbps. The need for newer versions arises so that the processor can be released from some tasks. The main issue with the series is that, an action has to be performed each time a data is transmitted between sender and receiver. To solve this issue, 16550 was introduced. It was the first UART with FIFO buffers, that too, on-board. Buffers had the capacity of 16 bytes storage, serving as incoming and outgoing buffers. But a bug in 16550 made all this efforts in vain and buffers went without use. Then came 16550A, the first UART type which could use its FIFO buffers for the intended function obtained a speed of 115.2kbps which made it useful for modems. Later developments introduced the use of Direct Memory Access (DMA) for the purpose of data transmission. Newer versions 16650, with FIFO buffers with 32 bytes capacity and 16750, have FIFOs with 64 bytes capacity introduced by TI. There are still more versions of UART like 16850, 16950, 16954, SCC2692, SCC2698B, and SCC28C94.
As already said, UART transmissions can be synchronous and asynchronous transmissions.
In Asynchronous transmission, the transmitter and receiver need not a share a common clock or strobe signal on transmitting data. Whereas, there are certain timing parameters to be satisfied by the transmitter and receiver in advance and additional bits are sent along with each word to synchronize the transmission. In Asynchronous transmission, a word transmitted consists of ‘start bit’, which indicates the beginning of the data followed by data bits. The purpose of start bit is to inform the receiver about the data to be sent and to alert the receiver clock to be in sync with the sender clock. Data bits starting from Least Significant Bit (LSB) is been sent after start bit and are either 0s or 1s. The bits are usually transmitted for the same amount of time. Receiver checks for the bits of data by half the time the transmitter takes to transmit a bit. There is no provision for the sender to know how far the receiver has looked into the send data rather transmitter transmits the next bit of data as and when the clock says to do so. When the transmitter has completed its transfer of data bits, it sends a parity bit, which can be used by the receiver for error checking in simple means. After parity bit, transmitter sends stop bit to indicate the completion of the word. In case of receiver, it checks for parity bit and stop bit. In case of parity bit, both the sender and receiver must agree on its usage. The receiver looks at stop bit for knowing the completion of word and in case if stop bit is not found then the receiver UART considers the word has undergone a framing error and informs the host processor. In case of asynchronous transmission, if there is no data bit to transmit then it can put the line in idle state. The figure shows the message format, the rightmost bit is the LSB. If there is parity bit, then it is sent before stop bit.
In synchronous transmission, both the sender and receiver should share a common signal, that is, clock, strobe or a timing signal, to indicate the receiver to carry out read operation on the next bit. In synchronous transmission, data should be transmitted at all instants of time, so in any case if there is no data to transmit, a fill character is sent. As synchronous transmission requires a clock signal to be shared between the transmitter and receiver, the circuit wiring becomes complicated and costly too. But still, this method is more easy and efficient way to transfer streams of data between the transmitter and receiver. Printers, even though not a serial device, when using synchronous transmission, sends data over a set of wires and clock signal is sent over a separate wire. When each bit of data is sent over separate wires, these devices are called the parallel devices. In PCs, synchronous transmissions are not supported with hardware meant serial communication.