Теперь обратите внимание, что из порта ввода возможно только чтение, а в порт вывода возможна только запись. Поэтому для портов ввода и вывода можно отводить один и тот же адрес в адресном пространстве микропроцессора.
Порты выпускаются в качестве универсальных микросхем, но на заводе, где производятся эти микросхемы, неизвестно, сколько на самом деле потребуется линий ввода информации и сколько потребуется линий вывода информации. Количество же выводов у микросхемы ограничено. Поэтому в одной универсальной микросхеме размещаются и порт ввода, и порт вывода информации. Настройку линий порта на ввод или вывод информации предоставляют конечному пользователю. Такие порты называются портами ввода-вывода информации. Структурная схема параллельного порта ввода-вывода приведена на рис. 5.17.
Рис. 5.17.
Для подключения портов ввода или портов вывода информации к внешним выводам микросхемы в схеме, приведенной на рис. 5.17, используется коммутатор. Управляет этим коммутатором еще один (внутренний) параллельный порт вывода, регистр данных которого называется регистром управления параллельного порта ввода-вывода. Регистру управления и регистрам данных порта ввода-вывода обычно назначаются соседние адреса. Следует отметить, что обычно то, что регистр управления подключается через внутренний параллельный порт, не указывается, и вся схема, сколько бы в ней ни присутствовало портов, называется портом ввода-вывода.
В некоторых микропроцессорах для портов ввода-вывода выделяется отдельное адресное пространство. В этом случае для записи в порт и для чтения из порта используются отдельные сигналы чтения и записи. Чаще всего они называются «IOWR#» и «IORD#».
Параллельные порты, предназначенные для обмена данными между компьютерами, или компьютером и принтером, устроены несколько иначе. Основным отличием этого вида обмена является большой объем передаваемых данных: не один или даже несколько байтов информации, а длинные последовательности байтов, передаваемые через один и тот же параллельный порт. Дополнительно вводится специальный сигнал синхронизации CLK, который позволяет отличать один байт от другого.
Для формирования такого сигнала можно воспользоваться вторым параллельным портом и получить его программным способом, но обычно этот сигнал формируется аппаратно из сигнала «WR#» при записи очередного байта в параллельный порт вывода. Временная диаграмма обмена данными через параллельный порт приведена на рис. 5.18.
Рис. 5.18.
В данной книге приведены только основы работы параллельного порта.
Кому интересно познакомиться более детально с особенностями работы параллельных портов, может обратиться к специализированной литературе [14–17].
Последовательные порты предназначены для обмена информацией между микропроцессорами, а также между микропроцессорами и внешними устройствами, если критично количество соединительных проводов. В настоящее время широко используются два вида последовательных портов:
— синхронные последовательные порты;
— асинхронные последовательные порты.
Синхронные последовательные порты
При рассмотрении работы параллельного порта в режиме обмена данными с другим компьютером или принтером уже рассматривался режим последовательной передачи байтов. В последовательном порте режим последовательной передачи применяется не только к байтам, но и к отдельным битам внутри байта. В этом случае для передачи данных достаточно только одного провода. Передаваемая и принимаемая информация обычно представляется в виде однобайтовых или многобайтовых слов. Вес каждого бита в слове различен, поэтому кроме битовой синхронизации, аналогичной байтовой синхронизации для параллельного порта, требуется кадровая синхронизация. Она позволяет однозначно определять номер каждого бита в передаваемом слове. Временная диаграмма передачи кадра по синхронному последовательному порту приведена на рис. 5.19.
Рис. 5.19.
Такая временная диаграмма характерна для синхронных последовательных портов, которые используются чаще всего в сигнальных процессорах для обмена информацией с кодеками речи, аналого-цифровыми и цифроаналоговыми преобразователями. На временной диаграмме показаны два синхросигнала: тактовой синхронизации CLK и кадровой синхронизации FS. Кадровый синхросигнал формируется аппаратно из сигнала WR# при записи очередного байта в параллельный порт вывода. Полярность сигналов синхронизации зависит от конкретного типа применяемых микросхем, поэтому в большинстве последовательных портов возможна настройка полярности сигналов синхронизации.