Из Википедии, бесплатной энциклопедии
  (Перенаправлено с UART )
Перейти к навигации Перейти к поиску
Блок-схема для UART

Универсальный асинхронный приемопередатчик ( УАПП / Ju ɑːr т / ) представляет собой компьютерное устройство для асинхронной последовательной передачи данных, в которой формат данных и скорость передачи данных могут быть сконфигурированы. Он отправляет биты данных один за другим, от наименее значимого к наиболее значимому, обрамленные стартовыми и стоповыми битами, так что канал связи обрабатывает точную синхронизацию. Уровни электрической сигнализации обрабатываются схемой драйвера, внешней по отношению к UART. Два общих уровня сигнала - это RS-232 , 12- вольтовая система, и RS-485 , 5-вольтовая система.

Это было одно из первых устройств компьютерной связи, которое использовалось для подключения телетайпов к пульту оператора . Это также была ранняя аппаратная система для Интернета .

UART обычно представляет собой отдельную интегральную схему (или часть ), используемую для последовательной связи через последовательный порт компьютера или периферийного устройства . Одно или несколько периферийных устройств UART обычно интегрируются в микросхемы микроконтроллера . Специализированные UART используются для автомобилей , смарт-карт и SIM- карт . Ранние телетайпы использовали токовые петли .

Родственное устройство, универсальный синхронный и асинхронный приемопередатчик (USART), также поддерживает синхронную работу.

Передача и получение последовательных данных [ править ]

Универсальный асинхронный приемопередатчик (UART) принимает байты данных и последовательно передает отдельные биты. [1] В пункте назначения второй UART повторно собирает биты в полные байты. Каждый UART содержит регистр сдвига , который является основным методом преобразования между последовательной и параллельной формами. Последовательная передача цифровой информации (битов) по одному проводу или другой среде менее затратна, чем параллельная передача по нескольким проводам.

UART обычно не генерирует и не принимает внешние сигналы, используемые между различными элементами оборудования. Отдельные интерфейсные устройства используются для преобразования сигналов логического уровня UART в уровни внешней сигнализации и обратно, которые могут быть стандартизованными уровнями напряжения, уровнями тока или другими сигналами.

Связь может быть симплексной (только в одном направлении, без возможности для принимающего устройства отправлять информацию обратно на передающее устройство), полнодуплексной (оба устройства отправляют и принимают одновременно) или полудуплексной (устройства по очереди передают и принимают ).

Фрейминг данных [ править ]

Диаграмма, показывающая время UART

Состояние ожидания, отсутствие данных - высокое напряжение или питание. Это историческое наследие телеграфии, когда линия держится высоко, чтобы показать, что линия и передатчик не повреждены. Каждый символ оформлен как младший логический стартовый бит, биты данных, возможно, бит четности и один или несколько стоповых битов. В большинстве приложений младший бит данных (тот, что слева на этой диаграмме) передается первым, но есть исключения (например, печатный терминал IBM 2741 ).

Стартовый бит сигнализирует получателю о приближении нового персонажа. Следующие пять-девять битов, в зависимости от используемого кодового набора, представляют символ. Если используется бит четности, он будет помещен после всех битов данных. Следующие один или два бита всегда находятся в состоянии отметки (высокий логический уровень, т. Е. «1») и называются стоповыми битами. Они сигнализируют получателю, что персонаж закончен. Поскольку стартовый бит имеет низкий логический уровень (0), а стоповый бит имеет высокий логический уровень (1), всегда существует как минимум два гарантированных изменения сигнала между символами.

Если линия удерживается в состоянии низкого логического уровня дольше, чем время символа, это состояние разрыва, которое может быть обнаружено UART.

Получатель [ править ]

Все операции оборудования UART управляются внутренним синхросигналом, который работает с кратной скоростью передачи данных, обычно в 8 или 16 раз больше скорости передачи данных. Приемник проверяет состояние входящего сигнала на каждом тактовом импульсе, ища начало стартового бита. Если кажущийся начальный бит длится как минимум половину битового времени, он действителен и сигнализирует о начале нового символа. В противном случае он считается ложным импульсом и игнорируется. После ожидания еще одного битового времени снова производится выборка состояния линии, а результирующий уровень синхронизируется в регистр сдвига. По истечении необходимого количества битовых периодов для длины символа (обычно от 5 до 8 битов) содержимое сдвигового регистра становится доступным (параллельно) принимающей системе. UART установит флаг, указывающий, что доступны новые данные,а также может генерировать процессорпрерывание, чтобы запросить передачу полученных данных хост-процессором.

Связанные UART не имеют общей системы синхронизации, кроме сигнала связи. Как правило, UART повторно синхронизируют свои внутренние часы при каждом изменении линии данных, которое не считается ложным импульсом. Получая таким образом информацию о времени, они надежно получают, когда передатчик отправляет с немного другой скоростью, чем должен. Упрощенные UART этого не делают; вместо этого они повторно синхронизируются только по заднему фронту стартового бита, а затем считывают центр каждого ожидаемого бита данных, и эта система работает, если скорость широковещательной передачи данных достаточно точна, чтобы обеспечить надежную выборку стоповых битов.

Стандартной функцией UART является сохранение самого последнего символа при получении следующего. Эта «двойная буферизация» дает принимающему компьютеру все время передачи символа для извлечения принятого символа. Многие UART имеют небольшую буферную память FIFO между регистром сдвига приемника и интерфейсом хост-системы. Это дает хост-процессору еще больше времени для обработки прерывания от UART и предотвращает потерю полученных данных на высоких скоростях.

Передатчик [ править ]

Операция передачи проще, поскольку синхронизация не должна определяться по состоянию линии и не связана с какими-либо фиксированными временными интервалами. Как только отправляющая система помещает символ в регистр сдвига (после завершения предыдущего символа), UART генерирует стартовый бит, сдвигает необходимое количество бит данных в строку, генерирует и отправляет бит четности (если используется ) и отправляет стоповые биты. Поскольку полнодуплексный режим требует, чтобы символы отправлялись и принимались одновременно, UART используют два разных регистра сдвига для передаваемых и принимаемых символов. Высокопроизводительные UART могут содержать буфер FIFO передачи (первым пришел - первым вышел), чтобы позволить процессору или контроллеру DMA помещать несколько символов в пакете в FIFO вместо того, чтобы помещать по одному символу в сдвиговый регистр.Поскольку передача одного или нескольких символов может занять много времени по сравнению со скоростью процессора, UART поддерживает флаг, показывающий состояние занятости, чтобы хост-система знала, есть ли хотя бы один символ в буфере передачи или регистре сдвига; «Готов к следующему символу (-ам)» может также сигнализироваться прерыванием.

Заявление [ править ]

Передающие и принимающие UART должны быть настроены на одинаковую скорость передачи битов, длину символа, четность и стоповые биты для правильной работы. Принимающий UART может обнаружить некоторые несовпадающие настройки и установить бит флага «ошибка кадрирования» для хост-системы; в исключительных случаях принимающий UART будет генерировать беспорядочный поток искаженных символов и передавать их в хост-систему.

Типичные последовательные порты, используемые с персональными компьютерами, подключенными к модемам, используют восемь бит данных, без контроля четности и один стоповый бит; для этой конфигурации количество символов ASCII в секунду равно скорости передачи данных, деленной на 10.

Некоторые очень недорогие домашние компьютеры или встроенные системы обходятся без UART и используют ЦП для выборки состояния входного порта или прямого управления выходным портом для передачи данных. Хотя микросхема UART очень нагружает ЦП (так как синхронизация ЦП имеет решающее значение), ее можно не устанавливать, что позволяет сэкономить деньги и место. Эта техника известна как бит-стук .

История [ править ]

В некоторых ранних телеграфных схемах использовались импульсы переменной длины (как в коде Морзе ) и вращающиеся часовые механизмы для передачи буквенных символов. Первыми устройствами последовательной связи (с импульсами фиксированной длины) были вращающиеся механические переключатели ( коммутаторы ). Различные коды символов, использующие 5, 6, 7 или 8 бит данных, стали обычным явлением в телетайпах, а затем и в компьютерной периферии. Телетайп стал отличным универсальным устройством ввода-вывода для небольшого компьютера.

Гордон Белл из DEC разработал первый UART, занимающий всю печатную плату , называемую линию блок , для PDP серии компьютеров , начиная с PDP-1 . [2] [3] По словам Белла, основным нововведением UART было использование выборки для преобразования сигнала в цифровую область, что позволило обеспечить более надежную синхронизацию, чем в предыдущих схемах, в которых использовались аналоговые устройства синхронизации с регулируемыми вручную потенциометрами . [4] Чтобы снизить стоимость проводки, объединительной платы и других компонентов, в этих компьютерах впервые реализовано управление потоком с использованием символов XON и XOFF, а не аппаратных проводов.

Компания DEC объединила конструкцию линейного блока в ранний однокристальный UART для собственного использования. [2] Western Digital разработала это в первый широко доступный однокристальный UART, WD1402A, примерно в 1971 году. Это был ранний пример интегральной схемы среднего размера . Еще одним популярным чипом был SCN2651 из семейства Signetics 2650 .

Примером UART начала 1980-х годов был National Semiconductor 8250, который использовался в оригинальной плате адаптера асинхронной связи IBM PC . [5] В 1990-х годах были разработаны более новые UART со встроенными буферами. Это позволило повысить скорость передачи без потери данных и не требуя такого частого внимания со стороны компьютера. Например, популярный National Semiconductor 16550 имеет 16-байтовый FIFO и породил множество вариантов, включая 16C550, 16C650, 16C750 и 16C850 .

В зависимости от производителя для обозначения устройств, выполняющих функции UART, используются разные термины. Intel назвала свое устройство 8251 «Программируемым коммуникационным интерфейсом». Технология MOS 6551 была известна под названием «Адаптер интерфейса асинхронной связи» (ACIA). Термин «интерфейс последовательной связи» (SCI) впервые был использован в Motorola примерно в 1975 году для обозначения устройства асинхронного последовательного интерфейса start-stop, которое другие называли UART. Zilog произвел ряд контроллеров последовательной связи или SCC.

Начиная с 2000-х годов, большинство компьютеров, совместимых с IBM PC, удалили свои внешние COM-порты RS-232 и использовали порты USB, которые могли отправлять данные быстрее. Для пользователей, которым по-прежнему нужны последовательные порты RS-232, сейчас широко используются внешние мосты USB-UART . Они объединяют в себе аппаратные кабели и микросхему для преобразования USB и UART. Cypress Semiconductor и FTDI - два важных коммерческих поставщика этих микросхем. [6] Хотя порты RS-232 больше не доступны для пользователей за пределами большинства компьютеров, многие внутренние процессоры и микропроцессорыимеют встроенные UART в свои микросхемы, чтобы дать разработчикам оборудования возможность взаимодействовать с другими микросхемами или устройствами, которые используют RS-232 или RS-485 для связи.

Структура [ править ]

UART обычно содержит следующие компоненты:

  • генератор тактовых импульсов, обычно кратный скорости передачи битов, чтобы обеспечить выборку в середине периода битов
  • регистры сдвига ввода и вывода
  • управление передачей / приемом
  • логика управления чтением / записью
  • Автоматическое измерение скорости передачи данных (необязательно)
  • буферы передачи / приема (необязательно)
  • буфер системной шины данных (опционально)
  • Буферная память FIFO ( FIFO ) (опционально)
  • Сигналы, необходимые для стороннего контроллера DMA (необязательно)
  • Интегрированный контроллер DMA для управления шиной (опционально)

Особые условия трансивера [ править ]

Ошибка переполнения [ править ]

«Ошибка переполнения» возникает, когда получатель не может обработать только что поступивший символ до того, как появится следующий. Различные устройства имеют разное количество буферного пространства для хранения полученных символов. Контроллер CPU или DMA должен обслуживать UART, чтобы удалить символы из входного буфера. Если ЦП или контроллер DMA не обслуживает UART достаточно быстро и буфер заполняется, произойдет ошибка переполнения и входящие символы будут потеряны.

Ошибка недогрузки [ править ]

«Ошибка опустошения» возникает, когда передатчик UART завершил отправку символа, а буфер передачи пуст. В асинхронных режимах это рассматривается как указание на то, что не осталось данных для передачи, а не как ошибка, поскольку могут быть добавлены дополнительные стоповые биты. Эта индикация ошибки обычно встречается в USART, поскольку в синхронных системах недоработка более серьезна.

Ошибка кадрирования [ править ]

UART обнаружит ошибку кадрирования, когда он не видит «стоповый» бит в ожидаемое время «стопового» бита. Поскольку «начальный» бит используется для идентификации начала входящего символа, его синхронизация является ссылкой для оставшихся битов. Если линия данных не находится в ожидаемом состоянии (высокий), когда ожидается «стоп» бит (в соответствии с количеством битов данных и четности, для которых установлен UART), UART будет сигнализировать об ошибке кадрирования. Состояние «разрыва» в строке также сигнализируется как ошибка кадрирования.

Ошибка четности [ править ]

Ошибка четности возникает, когда четность количества единичных битов не совпадает с четностью, указанной битом четности. Использование бита четности необязательно, поэтому эта ошибка возникает только в том случае, если проверка четности включена.

Условие разрыва [ править ]

Условие прерывания происходит , когда на вход приемника находится в «пространстве» (низкий логический уровень, то есть, «0») уровне дольше , чем какой - то период времени, как правило, в течение более чем времени характер. Это не обязательно ошибка, но для получателя это выглядит как символ всех нулевых битов с ошибкой кадрирования. Термин «разрыв» происходит от сигнализации токовой петли , которая была традиционной сигнализацией, используемой для телетайпов . Состояние «разнесения» линии токовой петли обозначается отсутствием протекания тока, а очень длительный период отсутствия тока часто вызван обрывом или другим повреждением линии.

Некоторое оборудование намеренно передает «космический» уровень дольше персонажа в качестве сигнала внимания. Когда скорости передачи сигналов не совпадают, никакие значащие символы не могут быть отправлены, но длинный сигнал «прерывания» может быть полезным способом привлечь внимание несоответствующего приемника к каким-либо действиям (например, самопроизвольному сбросу). Компьютерные системы могут использовать уровень длительного «перерыва» в качестве запроса на изменение скорости передачи сигналов, чтобы поддерживать доступ по телефонной линии с несколькими скоростями передачи сигналов. DMX512 протокол использует условие останова , чтобы сигнализировать о начале нового пакета.

Модели UART [ править ]

Двойной UART или DUART объединяет два UART в одну микросхему. Точно так же четырехкратный UART или QUART объединяет четыре UART в один пакет, такой как NXP 28L194. Восьмеричный UART или OCTART объединяет восемь UART в один пакет, например Exar XR16L788 или NXP SCC2698.

UART в модемах [ править ]

Модемы для персональных компьютеров, которые подключаются к разъему на материнской плате, также должны иметь на карте функцию UART. Оригинальный чип 8250 UART, поставляемый с персональным компьютером IBM, имел по одному символьному буферу для приемника и передатчика, что означало, что коммуникационное программное обеспечение плохо работало на скоростях выше 9600 бит / с, особенно при работе в многозадачной системе или при обработке прерываний. с дисковых контроллеров. В высокоскоростных модемах использовались UART, которые были совместимы с исходным чипом, но включали дополнительные буферы FIFO, что давало программному обеспечению дополнительное время для ответа на входящие данные.

Взгляд на требования к производительности при высоких скоростях передачи данных показывает, почему 16-, 32-, 64- или 128-байтовый FIFO необходим. Спецификация Microsoft для системы DOS требует, чтобы прерывания не отключались более чем на 1 миллисекунду за раз. Некоторые жесткие диски и видеоконтроллеры нарушают эту спецификацию. 9600 бит / с доставляют символ примерно каждую миллисекунду, поэтому 1-байтовый FIFO должен быть достаточным при этой скорости в системе DOS, которая соответствует максимальному времени отключения прерывания. Ставки выше этого могут получить новый символ до того, как будет извлечен старый, и, таким образом, старый символ будет потерян. Это называется ошибкой переполнения и приводит к потере одного или нескольких символов.

16-байтовый FIFO позволяет получить до 16 символов, прежде чем компьютер должен будет обработать прерывание. Это увеличивает максимальную скорость передачи данных, которую компьютер может надежно обрабатывать, с 9600 до 153 000 бит / с, если у него есть мертвое время прерывания 1 миллисекунда. 32-байтовый FIFO увеличивает максимальную скорость до 300 000 бит / с. Второе преимущество наличия FIFO заключается в том, что компьютеру требуется обслуживать только 8–12% прерываний, что дает больше процессорного времени для обновления экрана или выполнения других рутинных операций. Таким образом, отклик компьютера также улучшится.

См. Также [ править ]

  • Autobaud
  • Бод
  • Битрейт
  • Сравнение синхронной и асинхронной сигнализации
  • MIDI
  • Синхронная последовательная связь

Ссылки [ править ]

  1. Адам Осборн, Введение в микрокомпьютеры Том 1: Основные концепции , Osborne-McGraw Hill, Беркли, Калифорния, США, 1980 ISBN  0-931988-34-9, стр. 116–126
  2. ^ a b К. Гордон Белл, Дж. Крейг Мадж, Джон Э. Макнамара, Компьютерная инженерия: взгляд DEC на проектирование аппаратных систем , Digital Press, 12 мая 2014 г., ISBN 1483221105 , стр. 73 
  3. ^ Эллисон, Дэвид. «Куратор, Отдел информационных технологий и общества, Национальный музей американской истории, Смитсоновский институт» . Устные и видеоистории Смитсоновского института . Проверено 14 июня 2015 года .
  4. ^ Устная история Гордона Белла , 2005, доступ 2015-08-19
  5. ^ Технический справочник 6025008 (PDF) . Справочная библиотека аппаратного обеспечения персонального компьютера. IBM. Август 1981. С. 2–123.
  6. ^ «Продукты FTDI» . www.ftdichip.com . Проверено 22 марта 2018 .
  7. ^ Взаимодействие с PDP-11/05: UART , blinkenbone.com, по состоянию на 19 августа 2015 г.
  8. ^ "Zilog Спецификация продукта Z8440 / 1/2/4, Z84C40 / 1/2/3/4. Последовательный контроллер ввода / вывода" (PDF) . 090529 zilog.com
  9. ^ "Zilog Document Download" (PDF) . www.zilog.com . Проверено 22 марта 2018 .
  10. ^ "Часто задаваемые вопросы: драйверы 16550A UART и TurboCom 1994" . Проверено 16 января, 2016 .
  11. ^ T'so, Theodore Y. (23 января 1999). «Re: Последовательная связь с 16650» . Почтовый архив . Проверено 2 июня 2013 года .
  12. ^ bill.herrin.us - Руководство Hayes ESP 8-port Enhanced Serial Port Manual , 2004-03-02

Дальнейшее чтение [ править ]

  • Последовательный порт завершен: COM-порты, виртуальные COM-порты USB и порты для встроенных систем ; 2-е издание; Ян Аксельсон; Lakeview Research; 380 страниц; 2007; ISBN 978-1-931-44806-2 . 
  • Последовательный порт завершен: программирование и схемы для каналов и сетей RS-232 и RS-485 ; 1-е издание; Ян Аксельсон; Lakeview Research; 306 страниц; 1998; ISBN 978-0-965-08192-4 . 
  • Последовательный порт и микроконтроллеры: принципы, схемы и исходные коды ; 1-е издание; Гжегож Немировски; CreateSpace; 414 страниц; 2013; ISBN 978-1-481-90897-9 . 
  • Последовательное программирование (Wikibook) .

Внешние ссылки [ править ]

  • FreeBSD Serial and UART Tutorial , включает стандартные определения сигналов, историю микросхем UART и распиновку для часто используемого разъема DB25.
  • Учебник UART для робототехники содержит множество практических примеров.