16550 UART

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Микросхема NS16550AFN

16550 UART (англ. universal asynchronous receiver/transmitter) — это интегральная микросхема для организации связи посредством последовательного интерфейса, разработанная корпорацией National Semiconductor. Она часто используется в IBM PC-совместимых компьютерах, где она обычно соединяется с интерфейсом RS-232.

Микросхема ST16C550CJ производства Exar на плате компьютера Itronix

Микросхема первоначально выпускалась корпорацией National Semiconductor. Другими производителями выпускались чипы с похожими названиями и разной степенью совместимости с оригинальной микросхемой от National Semiconductor. Последовательный интерфейса UART, совместимый на уровне регистров с 16550, обычно является составной частью многофункциональных плат ввода-вывода для IBM PC-совместимых и других компьютеров.

Замена установленной производителем микросхемы 8250 UART стала обыденной процедурой по усовершенствованию для владельцев IBM PC, XT и совместимых компьютеров, после того, как на рынке стали появляться высокоскоростные модемы. Владельцы этих компьютеров обнаружили, что при обмене данными на скоростях выше 9600 бод по последовательному порту компьютер не мог обрабатывать непрерывный поток данных без потери символов. Замена микросхемы 8250, имевшей всего 1 байт входного буфера, на 16550 с перенастройкой ПО на работу с новым чипом с поддержкой FIFO решали эту проблему: повышалась стабильность и надёжность соединения.

Основные функции 16550:

  • Возможность конвертировать данные из последовательной формы в параллельную и обратно с использованием регистров сдвига.
  • Тактовый генератор для задания скорости передачи и приёма данных.
  • Аппаратное управление потоком (линии подтверждения для программного управления внешним модемом).
  • Функция посыла запросов на прерывания к центральному процессору.
  • Встроенный в микросхему FIFO-буфер для входящих и исходящих данных, что даёт центральному процессору больше времени для ответа на запрос на прерывание и соответственно предохраняет от потери данных.

Программная и аппаратная части 16550 обратно совместимы с более ранними микросхемами 8250 UART и 16450 UART. Последняя версия микросхемы, разработанная National Semiconductor в 1995 году, имеет шифр 16550D.

FIFO[править | править код]

Главным недостатком более ранних микросхем 8250 и 16450 было то, что прерывания требовалось генерировать на каждый принятый байт. Это сильно увеличивало частоту генерируемых прерываний. Также была велика вероятность переполнения буфера — когда новый байт приходит раньше считывания старого. Для решения проблем в микросхемы серии 16550 был встроен 16-байтный FIFO-буфер с установкой прерывания после приёма 1, 4, 8 или 14 байт.

К сожалению, в первоначальном варианте микросхемы 16550 была допущена аппаратная ошибка, из-за которой невозможно было получить доступ к этому буферу. В следующей реализации 16550A эта ошибка была исправлена. Многие производители не стали использовать новое название, кодируя обновлённый чип прежним названием 16550.

При аппаратном контроле потока FIFO-буфер также используется, однако это не столь критично: в случае отсутствия этого буфера данные не теряются, а лишь происходит задержка в их передаче, то есть снижается фактическая скорость передачи.

См. также[править | править код]