Проблема, возникающая при таком способе обмена данными, — это невозможность добиться от двух внутренних генераторов, осуществляющих синхронизацию передачи данных на приемном и передающем концах линии, одинаковой частоты и фазы генерируемых сигналов. Проблема решается принудительной синхронизацией тактового генератора на приемном конце при помощи особого условия начала асинхронной передачи — стартового бита.
Все время, пока не ведется передача информации, на линии присутствует стоп-сигнал единичного уровня. Перед началом передачи каждого байта передается старт-бит, сигнализирующий приемнику о начале посылки данных, за которым следуют информационные биты. Стартовый бит всегда передается нулевым уровнем с длительностью, как у информационных битов.
Внутренний генератор синхронизации приемника использует счетчик-делитель опорной частоты, обнуляемый в момент приема начала бита. Этот счетчик генерирует внутренние стробы, по которым приемник фиксирует последующие принимаемые биты. В идеале стробы располагаются в середине битовых интервалов, что позволяет принимать данные и при незначительном рассогласовании скоростей приемника и передатчика. Очевидно, что при передаче 8 битов данных, одного контрольного и одного стоп-бита предельно допустимое рассогласование скоростей, при котором данные будут распознаны верно, не может превышать 5 %. В некоторых случаях после передачи битов данных может передаваться бит паритета (четности). Завершается передача данных стоп-сигналом.
Минимальная длительность стопового сигнала должна быть 1,5 длительности информационных битов, но обычно используют паузу между соседними пакетами данных, равную двум длительностям информационного бита.
Временная диаграмма сигналов при асинхронной передаче данных приведена на рис. 5.24.
Рис. 5.24.
Формат асинхронной посылки позволяет выявлять следующие возможные ошибки передачи:
— если принят перепад, сигнализирующий о начале посылки, а по стробу старт-бита зафиксирован уровень логической единицы, то старт-бит считается ложным и приемник снова переходит в состояние ожидания. Об этой ошибке приемник может и не сообщать;
— если во время, отведенное под стоп-бит, обнаружен уровень логического нуля, то фиксируется ошибка стоп-бита;
— если применяется контроль четности, то после посылки битов данных передается
Наиболее распространенным в настоящее время является последовательный асинхронный порт, работающий по стандарту RS-232. Временная диаграмма этого порта приведена на рис. 5.25. Используются уровни сигналов НОВ, что позволяет контролировать обрыв линии.
Рис. 5.25.
Существует ряд международных стандартов на асинхронные последовательные интерфейсы: RS-232C, RS-423A, RS-422A и RS-485. На рис. 5.26 приведены схемы соединения приемников и передатчиков, а также показаны ограничения на длину линии (L) и максимальную скорость передачи данных (V) по этим интерфейсам.
Несимметричные линии интерфейсов RS-232C и RS-423A имеют самую низкую защищенность от синфазной помехи, хотя дифференциальный вход приемника RS-423A несколько смягчает ситуацию. Лучшие параметры имеет двухточечный интерфейс RS-422A и его магистральный (шинный) аналог RS-485, работающие на симметричных линиях связи. В них для передачи каждого сигнала используются дифференциальные сигналы с отдельной (витой) парой проводов.
Рис. 5.26.
Последовательный асинхронный порт, работающий по стандартам RS-232, RS-423A и RS-422A, позволяет соединять между собой только два устройства. Это связано с тем, что при параллельном соединении двух передатчиков их выходные каскады могут выйти из строя. В ряде случаев требуется объединить несколько устройств. Для того чтобы выходные каскады передатчиков последовательных портов не выходили из строя, необходимо применять специальные меры, которые обсуждались в предыдущих главах. Эти меры реализованы в интерфейсе RS-485.
Таймеры предназначены для формирования временных интервалов, позволяя микропроцессорной системе работать в режиме реального времени.
Таймеры представляют собой обычные цифровые счетчики, которые подсчитывают импульсы от высокостабильного генератора частоты. К системной шине микропроцессора таймеры подключаются при помощи параллельных портов.