Modem is an acronym for Modulator Demodulator. A modem is a device that converts data from digital computer signals to analog signals that can be sent over a phone line. This is called modulation. The analog signals are then converted back into digital data by the receiving modem. This is called demodulation.

A modem is fed digital information, in the form of ones and zeros, from the CPU. The modem then analyzes this information and converts it to analog signals, that can be sent over a phone line. Another modem then receives these signals, converts them back into digital data, and sends the data to the receiving CPU.

Analog vs. Digital

“Analog” refers to information being presented continuously, while “digital” refers to data defined in individual steps. Analog information’s advantage is its ability to fully represent a continuous stream of information. Digital data, on the other hand, is less affected by unwanted interference, or noise. In digital computers, data is stored in individual bits, which have a value of either 1 (on) or 0 (off). If graphed, analog signals are shaped as sine waves, while digital signals are square waves. Sound is analog, as it is always changing. Thus, in order to send information over a phone line, a modem must take the digital data given it by the computer and convert it into sound, an analog signal. The receiving modem must convert these analog signals back into the original digital data.

Data Compression

In order to transmit data at a speed greater than 600 bits per second (bps), it is necessary for modems to collect bits of information together and transmit them via a more complicated sound. This allows the transmission of many bits of data at the same time. Computers are capable of transmitting information to modems much faster than the modems are able to transmit the same information over a phone line. This gives the modem time to group bits together and apply compression algorithms to them. Two common compression protocols by which this is accomplished are MNP-5, which has a compression ratio of 2:1, and v.42bis, which has a 4:1 compression ratio. MNP-5, however, produces a great deal of overhead in its compression, so it actually makes the transmission of pre-compressed (ZIP, for example) files much longer. V.42bis can sense if compression is unnecessary, so can speed up transfer of pre-compressed files as well. If V.42bis is unavailable, it is best to disable MNP-5 data compression when transferring pre-compressed files.

Error Correction

Error correction is the method by which modems verify that the information sent to them has been undamaged during the transfer. Error-correcting modems break up information into small packets, called frames. The sending modem attaches a checksum to each of these frames. The receiving modem checks whether the checksum matches the information sent. If not, the entire frame is resent. Though error correction may slow down data transfer on noisy lines, it does provide greater reliability. MNP2-4, as well as V.42, are error correction protocols. These protocols determine how the modems verify data. As with data compression protocols, for an error correction protocol to be used, it must be supported by both modems in the connection.

Flow Control

Often, one modem in a connection is capable of sending data much faster than the other can receive. Flow control allows the receiving modem to tell the other to pause while it catches up. Flow control exists as either software, or XON/XOFF, flow control, or hardware (RTS/CTS) flow control. With software flow control, when a modem needs to tell the other to pause, it sends a certain character, usually Control-S. When it is ready to resume, it sends a different character, such as Control-Q. Software flow control’s only advantage is that it can use a serial cable with only three wires. Since software flow control regulates transmissions by sending certain characters, line noise could generate the character commanding a pause, thus hanging the transfer until the proper character (such as Control-Q) is sent. Also, binary files must never be sent using software flow control, as binary files can contain the control characters. Hardware, or RTS/CTS, flow control uses wires in the modem cable or, in the case of internal modems, hardware in the modem. This is faster and much more reliable than software flow control.

UARTs and Data Buffering

UARTs, or Universal Asynchronous Receiver/Transmitters, are the method by which computers send information to a serial device, such as a modem. A UART is an integrated circuit (chip) that converts parallel input into serial output. The CPU communicates with the serial device by writing in the UART’s registers. UARTs have FIFO, or First-In, First-Out buffers through which this communication occurs. First-In First-Out means that the first data to enter the buffer is the first to leave. Without the FIFO, information would be scrambled when sent by a modem.

The first UART was National Semiconductor’s INS-8250. This was soon upgraded to the faster 16450. Both the 8250 and 16450 only had a 1-byte FIFO, however. This meant that if information was traveling too fast for the CPU to handle it, it would be overwritten. It is nearly impossible for either of these UARTS to handle the transfer speeds of today’s modems, most notable under Desqview and Windows, where the processor is kept busy, allowing data in the FIFO to be overwritten. The solution to this is the modern 16550A UART, which has fixed a bug in the original 16550. The 16550 has a 16-byte FIFO. Thus, up to 16 bytes can be written to the UART’s registers before anything is deleted. This allows the CPU to catch up if it has been busy dealing with other tasks. 16550 UARTs are necessary for high speed communications under Windows or for DOS applications running in a Windows shell.