Аппаратные интерфейсы ПК | страница 13
10 | Ack# | I | SR.6 | PtrClk. Низкий уровень означает готовность тетрады, высокий — ответ на сигнал HostBusy |
11 | Busy | I | SR.7 | Прием бита данных 3, затем бита 7 |
12 | РЕ | I | SR.5 | Прием бита данных 2, затем бита 6 |
13 | Select | I | SR.4 | Прием бита данных 1, затем бита 5 |
15 | Error# | I | SR.3 | Прием бита данных 0, затем бита 4 |
Рис. 1.1. Прием данных в полубайтном режиме
Прием байта данных в полубайтном режиме состоит из следующих фаз:
1. Хост сигнализирует о готовности приема данных установкой низкого уровня на линии >HostBusy
.
2. ПУ в ответ помещает тетраду на входные линии состояния.
3. ПУ сигнализирует о готовности тетрады установкой низкого уровня на линии >PtrClk
.
4. Хост устанавливает высокий уровень на линии HostBusy, указывая на занятость приемом и обработкой тетрады.
5. ПУ отвечает установкой высокого уровня на линии >PtrClk
.
6. Шаги 1–5 повторяются для второй тетрады.
Полубайтный режим сильно нагружает процессор, и поднять скорость обмена выше 50 Кбайт/с не удается. Безусловное его преимущество в том, что он работает на всех портах. Его применяют в тех случаях, когда поток данных невелик (например, для связи с принтерами). Однако при связи с адаптерами локальных сетей, внешними дисковыми накопителями и CD-ROM прием больших объемов данных требует изрядного терпения со стороны пользователя.
1.3.2. Двунаправленный байтный режим — Byte Mode
В этом режиме данные принимаются с использованием двунаправленного порта, у которого выходной буфер данных может отключаться установкой бита >CR.5
=1. Как и предыдущие, режим является программно-управляемым — все сигналы квитирования анализируются и устанавливаются драйвером. Сигналы порта описаны в табл. 1.3, временные диаграммы — на рис. 1.2.
Таблица 1.3. Сигналы LPT-порта в байтном режима ввода-вывода
Контакт | Сигнал SPP | Имя в байтном режиме | I/O | Бит | Описание |
---|---|---|---|---|---|
1 | Strobe# | HostClk | O | CR.0\ | Импульс (низкого уровня) подтверждает прием байта в конце каждого цикла |
14 | AutoFeed# | HostBusy | О | CR.1\ | Сигнал квитирования. Низкий уровень означает готовность хоста принять байт; высокий уровень устанавливается по приему байта |
17 | SelectIn# | 1284Active | О | CR.3\ | Высокий уровень указывает на обмен в режиме IEEE 1284 (в режиме SPP уровень низкий) |
16 | Init# | Init# | O | CR.2 | Не используется; установлен высокий уровень |
10 | Ack# | PtrClk | I | SR.6 | Устанавливается в низкий уровень для индикации действительности данных на линиях Data[0:7]. В низкий уровень устанавливается в ответ на сигнал HostBusy |
11 | Busy | PtrBusy | I | SR.7\ | Состояние занятости прямого канала |
12 | PE | AckDataReq¹ |