Порты ввода-вывода преимущественно используются для управления про-тыми
внешними устройствами: если бит установлен, мотор крутится (заслонка открыта,
нагреватель включен и т. д.), и наоборот. Если же уст-оойство более сложное,
и работа с ним предполагает обмен последовательностями команд и ответов,
или просто большими объемами данных, простой порт оказывается не очень
удобен.
Основная проблема при использовании простого порта в качестве средства
обмена данными состоит в том, что принимающему устройству необходимо знать,
выставило ли передающее устройство на своих выходах новую порцию данных,
или еще нет. Три основных подхода к решению этой проблемы называются синхронной,
асинхронной и изохронной передачами данных.
При синхронной передаче мы либо предоставляем
дополнительный сигнал, строб (рис. 9.6), либо
тем или иным способом передаем синхросигналы по тем же проводам, что и
данные. Например, можно установить, что каждая следующая порция данных
должна хотя бы одним битом отличаться от предыдущей. При этом необходимо
предусмотреть протокол, посредством которого передатчик будет кодировать,
а приемник декодировать повторяющиеся последовательности символов. Например,
второй символ из пары одинаковых последовательных символов можно заменять
на специальный символ повторения, впрочем, в этом случае нам необходимо
предусмотреть и способ кодирования символа, совпадающего по значению с
символом повторения. Реальные способы совмещения кодирующих и синхронизующих
сигналов в одном проводе относительно сложны и их детальное обсуждение
было бы более уместно в книге, посвященной сетевым технологиям. Некоторые
простые способы кодирования с таким совмещением мы рассмотрим в разд.