Я знаю, что бит четности необязателен в последовательной связи, но как насчет стартового бита и стопового бита(ов), они также необязательны?
Являются ли стартовый бит и стоповый бит(ы) дополнительными в последовательной связи?
2 ответа
являются ли стартовый бит и стоповый бит(ы) необязательными в последовательной связи?
нет.
предполагаемый RS232 (или его TTL-вариант).
рассмотреть каждую "направление" независимо, игнорируя линии управления потоком. Есть один сигнал, который надо как-то донести "data", но она также должна быть в состоянии передать"нет данных".
передать "нет данных", мы просто оставляем сигнал high-logic 1. Так может быть бесконечно, и все счастливы.
как только мы хотим передать "data" мы должны сообщить удаленной стороне, используя только один двоичный сигнал, что данные вот-вот наступит.
Если бы мы не использовали стартовый бит и передали 0b11110000
, Это будет выглядеть примерно так (где серый неактивен, а зеленый-активные данные):
но... как приемник знает, чтобы начать получать? Она похожа на 0b00111100
:
Итак, вместо этого мы размещаем известный "это начало" бит спереди:
гениально!
но сейчас мы столкнулись с другой проблемой... Никакие два часа не тикают с одинаковой скоростью. В случае скромного UART, это то, что согласовано впереди время-оба конца ссылки "говорить " на очень почти такой же скорости...
дать ссылку больше шансов на работу, мы вводим "стоп", что, по сути, просто отдых... пауза. Два стоповых бита часто используются на старых аппаратных средствах, которые занимают больше времени для обработки принятого байта - один стоповый бит почти повсеместно сегодня.
как @ опилки любезно напомнил мне, остановка бит также важен, чтобы гарантировать, что мы можем успешно обнаружить и синхронизировать в конце одного кадра и начале следующего. Это было бы трудно, если бы первый кадр заканчивался нулем, сразу за ним следовал стартовый бит второго кадра.
... и там мы имеем его! Красиво оформленный фрагмент данных.
четность необязательна, поскольку она связана с обеспечением целостности данных, что облегчает обнаружение повреждения. Ничто в мире не идеально (иногда я удивляюсь, что что-нибудь работает), и зная, действительно ли данные, которые вы только что получили, очень полезны.
к сожалению, спецификация очень старая, и бит четности позволяет нам обнаружить только нечетное количество переворотов. Если есть четное число битовых переворотов, то четность не может обнаружить это.
сегодня мы имеем очень более предварительное обнаружение ошибки, коррекцию конца даже технологии, которые способны обнаружить (или даже исправить) количество коррупции.
протоколы, которые работают на UARTs сегодня, как правило, не используют бит четности, а предпочитают использовать контрольную сумму для обеспечения целостности передаваемых данных.
вы также часто увидите UART, используемые для интерфейса с устройством-последовательной консолью. В этом случае устройство взаимодействует с человеком, который либо не заметит, либо не позаботится о том, что данные повреждены (они могут просто перезапуститься команда.)
наконец, UARTs сегодня, как правило, используются на очень коротких связях, с хорошими сильными драйверами - шум и коррупция на физическом (электрическом) уровне гораздо меньше проблем.
оба стартовый и стоповый биты являются обязательными, и они служат простой цели-кадрирование данных для передачи.
строка данных обычно устанавливается в определенный бит (например, 0), когда отправитель находится в режиме ожидания. Как только он начнет взаимодействовать, он установит линию данных на инвертированный бит (стартовый бит, 1). Это сигнализирует получателю войти в ряд состояний. В последнем состоянии линия данных снова должна простаивать и сбрасывается обратно в исходный бит (стоповый бит, 0). Тот приемник снова прослушивает стартовый бит, и цикл повторяется.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]