All about UARTs Definition The UART(Universal Asynchronous Receiver/Transmitter), is a large scale integrated circuit which contains all the software programming necessary to fully control the serial port of a PC. A UART is a Universal Asynchronous Receiver/Transmitter electronic circuit which transmits and receives data through the serial port. It converts bytes into serial bits for transmission, and vice versa. It also generates and strips the start and stop bits appended to each character. Once a connection is established, the UART then reconstructs a byte of data based on the receiving line. If parity is in use, the UART will also check the parity for correctness and strip the parity bit off of the byte being passed to the computer. SingleByte FlFO's The Universal Asynchronous Receiver/Transmitters(UARTs) in most PCs, up till recently, used 8250 or 16450 UARTS. These are singlebyte FlFO(FirstIn,FirstOut) buffers. Below is a table of how fast the computer would have to respond to the different rates. The column 'Characters', is how often a character arrives at the listed speeds. COM port(bps) Characters 2400 4 milliseconds 9600 1 millisecond 19200 520 microseconds 38400 260 microseconds If the computer can not retrieve the data at the above speeds, then it will be overwritten. If this occurs, then that character will be lost. The UART does not only handle serial communications, it also takes care of other tasks, like disk interrupts, keyboard interrupts, screen refresh cycles, and many other items that involve timing with your system. So as you can see, the UART is doing a lot of other things which can limit how much incoming data it can handle. If the system can not keep up, this is when you see block errors and UART overrun errors. If you receive these errors, it's time to start looking into a buffered UART, such as a 16550. 16Byte FIFO Buffered UARTs, used in most newer systems today, like the 16550 UART, can deal with more tasks, due to it buffering abilities. The nice part about the 16550 UART, is that it has a 16 byte FlFO(First in, First Out) buffer. What this means, is the system processor only has to respond to the incoming data every sixteen bytes. As you can see, this is far better then the system having to deal with every character as it comes into the system. You may be wondering why you need a 16550 UART. Have you ever been on a bulletin board system and found that characters were dropping from the text being displayed? Or had UART overruns, or SubPacket to long errors when downloading files? If this is the case, chances are you need a better UART. DOS is less graphics intensive then Windows or OS/2, so the 16550 UART is not as important, but can still be needed depending on the speed of your modem. If you are running Windows or OS/2, and have background tasks running while doing data communication or faxing, chances are you will need one. In general, if you have a modem that is faster then 14.4k, you will need a 16550 UART. Also, the slower the machine, the more need there is for a 16550 UART, for as stated before, the UART frees the computer to do other tasks. At some point you are going to be asking the question 'What type of UART is in my system?'. With U.S. Robotics internal modems, the UART on the modem board are all 16550s. Externals do not have UARTS on them. With an external modem, you need to have a serial controller in the system, with the appropriate UART on it. Now a days, a lot of motherboards are coming with the UART on the main board. If you are not sure what type of UART is in your system, you can run Microsoft Diagnostics(MSD) and that will tell you what type of UART is in your system. To run this, assuming you have DOS 6.0 or higher, just type MSD<enter> and it should come up. If not, then go into your DOS directory and run it from there. If you do not have DOS, consult your operating system manual for information on how to check this. The early non 'A' 16550 UART(UARTs without an 'A' after the 16550) chips, are known to be buggy, so try and stay away from them. One problem they had was there were problems with the FIFO not working correctly. Nowadays, it's common to refer to a 16550AFN as a 16550(without the revision letters). UART History The Original UART was the 8250. By today's standards, this is a very slow chip. The 8250A revision added an extra register which allows software to detect that it is indeed an 8250 UART. Next was introduced the 16450 UART. It was faster then it predecessors, but not by much. One thing you need to look out for, is that software can not detect the 16450. It comes up as an 8250, so you may have to look at the chip to be sure what type it is. As mentioned in the last section, next came the straight 16550 UART. This chip has some issues with it and if you happen to still have one of these, you should not enable the UART. It should run without a problem in this state. The next group to come out are the 16550A('A' series), 16550AF(Fast), and the 16550AFN(new ceramic chip). Currently, these are the best chips to have. There buffering abilities are far superior to the 8250 and 16450. Work is currently being done on a 16650 and 16750 UART, but these are not readily available, and drivers that support them are limited. Windows Changes Once you have a 16550 UART, you need to change your Windows setup to utilize the new UART. Essentially what you will be doing, is turning on the buffering capabilities of the 16550 UART. In order to do this, you will either have to add or change the COMxFIFO line in the [386enh] section of your Windows SYSTEM.INI to read COMxFIFO=1 or COMxFIFO=2. The difference is, when COMxFIFO is equal to 1, it automatically assumes you have a 16550 UART and turns buffering on. If the UART is not there, it just ignores the line. When COMxFIFO is equal to 2, it detects whether or not you have a 16550 UART, and acts accordingly. If you know that you have a 16550 UART, then just set this equal to one. Remember that you replace the 'x' in COMxFIFO with the COM Port the modem is on. There are several communication drivers out there that can help fully utilize your 16550 UART. A couple of these are WFXCOMM and Cybercom, which can be downloaded off our BBS at (847)982-5092 or FTP Site at ftp.usr.com.