Открыть сервис

Стоповый бит

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

История

Стоповый бит является неотъемлемой частью протоколов асинхронной последовательной передачи данных, которые начали активно развиваться в середине XX века с появлением телетайпов и первых компьютерных интерфейсов. В отличие от синхронной передачи, где данные передаются непрерывным потоком с использованием общего тактового сигнала, асинхронная передача не требует отдельной линии для синхронизации. Вместо этого каждый передаваемый символ обрамляется стартовым и стоповым битами, которые обеспечивают временную привязку приёмника к передатчику.

Первые стандарты асинхронной передачи, такие как протоколы для телетайпов (например, Baudot code), уже использовали стоповые биты. С развитием микропроцессорной техники и появлением интерфейсов RS-232, UART (Universal Asynchronous Receiver/Transmitter) и других, формат кадра, включающий стоповый бит, стал стандартом де-факто. В 1960-х годах Ассоциация электронной промышленности (EIA) стандартизировала интерфейс RS-232, который до сих пор широко используется в промышленности и телекоммуникациях.

Устройство и принцип работы

В асинхронной последовательной передаче данные передаются по одному биту за раз по одной линии. Каждый кадр (посылка) состоит из следующих элементов:

  1. Стартовый бит — сигнал, переводящий линию из пассивного (высокого) уровня в активный (низкий). Он сигнализирует приёмнику о начале передачи символа.
  2. Биты данных — от 5 до 9 бит, представляющие передаваемый символ (обычно 7 или 8 бит для ASCII-кода). Младший бит передаётся первым.
  3. Бит чётности (опционально) — бит, используемый для контроля ошибок. Может быть чётным, нечётным, маркерным или пробельным.
  4. Стоповый бит — один или несколько бит, возвращающих линию в пассивное (высокое) состояние. Он обозначает конец кадра и даёт приёмнику время для обработки принятого символа и подготовки к приёму следующего.

Приёмник, обнаружив стартовый бит, синхронизирует свой внутренний тактовый генератор с передатчиком и начинает последовательно считывать биты данных с заданной скоростью (битрейтом). После приёма последнего бита данных (и, при наличии, бита чётности) приёмник ожидает появления стопового бита. Если стоповый бит не обнаружен в ожидаемое время, это может свидетельствовать об ошибке кадрирования (framing error).

Количество стоповых бит

Стандартными значениями количества стоповых бит являются 1, 1,5 и 2 бита.

  • 1 стоповый бит — наиболее распространённый вариант, используемый в большинстве современных приложений (например, в UART микроконтроллеров, терминалах Linux). Обеспечивает максимальную скорость передачи данных, так как минимизирует служебные накладные расходы.
  • 1,5 стоповых бита — используется в некоторых старых протоколах, например, в телетайпах с механическими печатающими устройствами. Длительность стопового бита в 1,5 раза превышает длительность обычного бита. В современных системах встречается редко.
  • 2 стоповых бита — применяется в системах с низкой точностью тактовых генераторов или при передаче на большие расстояния, где возможны значительные искажения сигнала. Дополнительный бит даёт приёмнику больше времени для синхронизации и восстановления после ошибок. Также используется в некоторых протоколах, таких как MIDI.

Выбор количества стоповых бит зависит от требований к надёжности и скорости передачи. В современных высокоскоростных интерфейсах (например, USB, Ethernet) асинхронная передача с отдельными стоповыми битами не используется, так как они перешли на синхронные или самосинхронизирующиеся протоколы.

Применение

Стоповый бит является ключевым элементом многих протоколов и интерфейсов, работающих в асинхронном режиме:

  • RS-232 — классический интерфейс для подключения периферийных устройств (модемов, принтеров, мышей) к компьютерам. Формат кадра включает 1 стартовый бит, 7 или 8 бит данных, опциональный бит чётности и 1 или 2 стоповых бита.
  • UART — универсальный асинхронный приёмопередатчик, встроенный в большинство микроконтроллеров и микропроцессоров. Используется для связи с датчиками, дисплеями, GPS-модулями, Bluetooth-модулями и другими устройствами.
  • I²C (Inter-Integrated Circuit) — хотя I²C является синхронным протоколом (использует линию тактового сигнала SCL), он также использует концепцию стартового и стопового условий для обозначения начала и конца передачи. В данном случае «стоповое условие» — это не отдельный бит, а определённая последовательность сигналов на линиях SDA и SCL.
  • MIDI (Musical Instrument Digital Interface) — протокол для связи музыкальных инструментов и компьютеров. Использует асинхронную последовательную передачу со скоростью 31,25 кбит/с, 8 битами данных, без бита чётности и с 2 стоповыми битами.
  • Телетайпы и старые терминалы — исторически использовали различные форматы, часто с 1,5 или 2 стоповыми битами.

Критика и ограничения

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

  • Накладные расходы — каждый передаваемый символ требует дополнительных служебных бит (стартовый и стоповый). Для 8-битного символа с 1 стоповым битом накладные расходы составляют 2 бита на 8 бит данных, то есть 20% от общего объёма передаваемой информации. Это снижает эффективную пропускную способность канала.
  • Синхронизация на коротких дистанциях — асинхронная передача требует, чтобы тактовые генераторы передатчика и приёмника были достаточно точными. При длительных передачах без перерывов (например, при передаче больших файлов) возможен дрейф тактовой частоты, что приводит к ошибкам кадрирования.
  • Ограниченная скорость — из-за накладных расходов и необходимости точной синхронизации асинхронная передача с отдельными стоповыми битами обычно ограничена скоростями до нескольких мегабит в секунду. Для более высоких скоростей (гигабиты и выше) используются синхронные протоколы с встроенной синхронизацией (например, 8b/10b кодирование).

Интересные факты

  • В некоторых старых протоколах, таких как телетайпный код Бодо, стоповый бит мог быть длиннее одного бита, чтобы дать механическому принтеру время вернуть каретку в исходное положение.
  • В протоколе LIN (Local Interconnect Network), используемом в автомобильной электронике, стоповый бит является частью кадра, но его длительность может варьироваться в зависимости от версии протокола.
  • В современных высокоскоростных интерфейсах, таких как USB 3.0 и PCI Express, вместо асинхронной передачи с отдельными стоповыми битами используется кодирование данных, при котором тактовая частота восстанавливается из самого потока данных (например, 8b/10b или 128b/130b кодирование).

Источники

  • Стандарт EIA RS-232 (ANSI/TIA-232-F)
  • Документация на микросхемы UART (например, 16550 UART)
  • «Computer Networks» by Andrew S. Tanenbaum
  • «Serial Port Complete» by Jan Axelson
  • Спецификация протокола MIDI (MIDI 1.0 Detailed Specification)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →