Диагностика портов ЭВМ
«Диагностика
портов ЭВМ»
Последовательная передача
данных
Микропроцессорная система без средств ввода и вывода
оказывается бесполезной. Характеристики и объемы ввода и вывода в системе
определяются, в первую очередь, спецификой ее применения — например, в
микропроцессорной системе управления некоторым промышленным процессом не
требуется клавиатура и дисплей, так как почти наверняка ее дистанционно
программирует и контролирует главный микрокомпьютер (с использованием
последовательной линии RS–232C).
Поскольку данные обычно представлены на шине
микропроцессора в параллельной форме (байтами, словами), их последовательный
ввод–вывод оказывается несколько сложным. Для последовательного ввода
потребуется средства преобразования последовательных входных данных в
параллельные данные, которые можно поместить на шину. С другой стороны, для
последовательного вывода необходимы средства преобразования параллельных
данных, представленных на шине, в последовательные выходные данные. В первом
случае преобразование осуществляется регистром сдвига с последовательным входом
и параллельным выходом (SIPO), а во втором — регистром сдвига с параллельным
входом и последовательным выходом (PISO).
Последовательные данные передаются в синхронном или
асинхронном режимах. В синхронном режиме все передачи осуществляются под
управлением общего сигнала синхронизации, который должен присутствовать на
обоих концах линии связи. Асинхронная передача подразумевает передачу данных
пакетами; каждый пакет содержит необходимую информацию, требующуюся для
декодирования содержащихся в нем данных. Конечно, второй режим сложнее, но у
него есть серьезное преимущество: не нужен отдельный сигнал синхронизации.
Существуют специальные микросхемы ввода и вывода,
решающие проблемы преобразования, описанные выше. Вот список наиболее типичных
сигналов таких микросхем:
D0–D7 —
входные–выходные линии данных, подключаемые непосредственно к шине процессора;
RXD —
принимаемые данные (входные последовательные данные);
TXD —
передаваемые данные (выходные последовательные данные);
CTS — сброс
передачи. На этой линии периферийное устройство формирует сигнал низкого
уровня, когда оно готово воспринимать информацию от процессора;
RTS — запрос
передачи. На эту линию микропроцессорная система выдает сигнал низкого уровня,
когда она намерена передавать данные в периферийное устройство.
Все сигналы программируемых микросхем
последовательного ввода–вывода ТТЛ–совместимы. Эти сигналы рассчитаны только на
очень короткие линии связи. Для последовательной передачи данных на значительные
расстояния требуются дополнительные буферы и преобразователи уровней,
включаемые между микросхемами последовательного ввода–вывода и линией связи.
Общие сведения о
интерфейсе RS–232C
Интерфейс RS–232C является наиболее широко
распространенной стандартной последовательной связью между микрокомпьютерами
и периферийными устройствами. Интерфейс, определенный стандартом Ассоциации
электронной промышленности (EIA), подразумевает наличие оборудования двух видов:
терминального DTE и связного DCE.
Чтобы не составить неправильного представления об
интерфейсе RS–232C, необходимо отчетливо понимать различие между этими видами
оборудования. Терминальное оборудование, например микрокомпьютер, может
посылать и (или) принимать данные по последовательному интерфейсу. Оно как бы
оканчивает (terminate) последовательную линию. Связное оборудование —
устройства, которые могут упростить передачу данных совместно с терминальным
оборудованием. Наглядным пример связного оборудования служит модем
(модулятор–демодулятор). Он оказывается соединительным звеном в
последовательной цепочке между компьютером и телефонной линией.
Различие между терминальными и связными устройствами
довольно расплывчато, поэтому возникают некоторые сложности в понимании того, к
какому типу оборудования относится то или иное устройство. Рассмотрим ситуацию
с принтером. К какому оборудованию его отнести? Как связать два компьютера,
когда они оба действуют как терминальное оборудование. Для ответа на эти
вопросы следует рассмотреть физическое соединение устройств. Произведя
незначительные изменения в линиях интерфейса RS–232C, можно заставить связное
оборудование функционировать как терминальное. Чтобы разобраться в том, как это
сделать, нужно проанализировать функции сигналов интерфейса RS–232C (таблица
1).
Таблица 1. Функции сигнальных линий
интерфейса RS–232C.
Номер контакта
|
Сокращение
|
Направление
|
Полное название
|
1
|
FG
|
—
|
Основная
или защитная земля
|
2
|
TD (TXD)
|
К DCE
|
Передаваемые
данные
|
3
|
RD (RXD)
|
К DTE
|
Принимаемые
данные
|
4
|
RTS
|
К DCE
|
Запрос
передачи
|
5
|
CTS
|
К DTE
|
Сброс
передачи
|
6
|
DSR
|
К DTE
|
Готовность
модема
|
7
|
SG
|
—
|
Сигнальная
земля
|
8
|
DCD
|
К DTE
|
Обнаружение
несущей данных
|
9
|
—
|
К DTE
|
(Положительное
контрольное напряжение)
|
10
|
—
|
К DTE
|
(Отрицательное
контрольное напряжение)
|
11
|
QM
|
К DTE
|
Режим
выравнивания
|
12
|
SDCD
|
К DTE
|
13
|
SCTS
|
К DTE
|
Вторичный
сброс передачи
|
14
|
STD
|
К DCE
|
Вторичные
передаваемые данные
|
15
|
TC
|
К DTE
|
Синхронизация
передатчика
|
16
|
SRD
|
К DTE
|
Вторичные
принимаемые данные
|
17
|
RC
|
К DTE
|
Синхронизация
приемника
|
18
|
DCR
|
К DCE
|
Разделенная
синхронизация приемника
|
19
|
SRTS
|
К DCE
|
Вторичный
запрос передачи
|
20
|
DTR
|
К DCE
|
Готовность
терминала
|
21
|
SQ
|
К DTE
|
Качество
сигнала
|
22
|
RI
|
К DTE
|
Индикатор
звонка
|
23
|
—
|
К DCE
|
(Селектор
скорости данных)
|
24
|
TC
|
К DCE
|
Внешняя
синхронизация передатчика
|
25
|
—
|
К DCE
|
(Занятость)
|
Примечания:
1. Линии 11, 18, 25 обычно считают незаземленными.
Приведенная в таблице спецификация относится к спецификациям Bell
113B и 208A.
2. Линии 9 и 10 используются для контроля отрицательного
(MARK) и положительного (SPACE) уровней
напряжения.
3. Во избежание путаницы между RD (Read
— считывать) и RD (Received Data — принимаемые данные) будут
использоваться обозначения RXD и TXD, а не RD и TD.
Стандартный последовательный порт RS–232C имеет форму
25–контактного разъема типа D (рис 1).
Рис. 1. Назначение линий 25–контактного разъема типа D для
интерфейса RS–232C
Терминальное оборудование обычно оснащено разъемом со
штырьками, а связное — разъемом с отверстиями (но могут быть и исключения).
Сигналы интерфейса RS–232C подразделяются на следующие
классы.
Последовательные данные (например, TXD, RXD).
Интерфейс RS–232C обеспечивает два независимых последовательных канала данных:
первичный (главный) и вторичный (вспомогательный). Оба канала могут работать в
дуплексном режиме, т.е. одновременно осуществляют передачу и прием информации.
Управляющие сигналы квитирования (например, RTS, CTS).
Сигналы квитирования — средство, с помощью которого обмен сигналами позволяет DTE
начать диалог с DCE до фактической передачи или приема данных по
последовательной линии связи.
Сигналы синхронизации (например, TC, RC).
В синхронном режиме (в отличие от более распространенного асинхронного) между
устройствами необходимо передавать сигналы синхронизации, которые упрощают
синхронизм принимаемого сигнала в целях его декодирования.
На практике вспомогательный канал RS–232C применяется
редко, и в асинхронном режиме вместо 25 линий используются 9 линий (таблица 2).
Таблица
2. Основные линии интерфейса RS–232C.
Номер
контакта
|
Сигнал
|
Выполняемая
функция
|
1
|
Подключение
земли к стойке или шасси оборудования
|
2
|
TXD
|
Последовательные
данные, передаваемые от DTE к DCE
|
3
|
RXD
|
Последовательные
данные, принимаемые DTE от DCE
|
4
|
RTS
|
Требование
DTE послать данные к DCE
|
5
|
CTS
|
Готовность
DCE принимать данные от DTE
|
6
|
DSR
|
Сообщение
DCE о том, что связь установлена
|
7
|
SG
|
Возвратный
тракт общего сигнала (земли)
|
8
|
DCD
|
DTE работает и
DCE может подключится к каналу связи
|
В большинстве схем, содержащих интерфейс RS–232C,
данные передаются асинхронно, т.е. в виде последовательности пакета данных.
Каждый пакет содержит один символ кода ASCII, причем
информация в пакете достаточна для его декодирования без отдельного сигнала
синхронизации.
Символы кода ASCII представляются семью
битами, например буква А имеет код 1000001. Чтобы передать букву А
по интерфейсу RS–232C, необходимо ввести дополнительные биты, обозначающие
начало и конец пакета. Кроме того, желательно добавить лишний бит для простого
контроля ошибок по паритету (четности).
Наиболее широко распространен формат, включающий в
себя один стартовый бит, один бит паритета и два стоповых бита. Начало пакета
данных всегда отмечает низкий уровень стартового бита. После него следует 7 бит
данных символа кода ASCII. Бит четности содержит 1 или 0 так, чтобы общее число
единиц в 8–битной группе было нечетным. Последним передаются два стоповых бита,
представленных высоким уровнем напряжения. Эквивалентный ТТЛ–сигнал при
передаче буквы А показан на рис. 2.
Рис.
2. Представление кода буквы А сигнальными уровнями ТТЛ.
Таким образом, полное асинхронно
передаваемое слово состоит из 11 бит (фактически данные содержат только 7 бит)
и записывается в виде 01000001011.
Используемые в интерфейсе RS–232C
уровни сигналов отличаются от уровней сигналов, действующих в компьютере.
Логический 0 (SPACE) представляется положительным напряжением в диапазоне
от +3 до +25 В, логическая 1 (MARK) — отрицательным напряжением в диапазоне от –3 до
–25 В. На рис. 3 показан сигнал в том виде, в каком он существует на линиях TXD и
RXD интерфейса RS–232C.
Рис. 3. Вид кода буквы А на сигнальных линиях TXD и
RXD.
Сдвиг уровня, т.е. преобразование
ТТЛ–уровней в уровни интерфейса RS–232C и наоборот производится специальными
микросхемами драйвера линии и приемника линии.
На рис. 4 представлен типичный
микрокомпьютерный интерфейс RS–232C. Программируемая микросхема DD1
последовательного ввода осуществляет параллельно–последовательные и
последовательно–параллельные преобразования данных. Микросхемы DD2 и
DD3 производят сдвиг уровней для трех выходных сигналов
TXD, RTS, DTR, а микросхема DD4 — для трех
входных сигналов RXD, CTS, DSR. Микросхемы DD2 и DD3 требуют
напряжения питания ±12 В.
Рис. 4. Типичная схема интерфейса RS–232C.
Параллельный порт
Устройство печати IBM
PC-подобных компьютеров обычно подключается к
параллельному интерфейсу. Для подключения используется стандартный разъем
Centronix, имеющий 36 контактных выходов (отечественный аналог
ИРПР-М). Допускается три варианта подключения принтеров к ПЭВМ:
- адаптер принтера
может находится на одной плате с адаптером монохромного дисплея, при
этом используются порты 3BCh - 3BEh;
- к ПЭВМ могут
подключены два отдельных адаптера для управления принтерами, использующие
порты 378h - 37Ah (первый адаптер) и 278h - 27Ah
(второй адаптер).
При программировании
принтера важно знать адрес базового порта ввода-вывода (первого порта
из трех); адреса базовых портов хранятся в области данных BIOS,
начиная с адреса 0:408h (LPT1) и далее по слову на принтер до LPT4.
Дальнейшее описание предполагает, что базовый адрес принтера равен 378h.
Порт Операция Описание
----------------------------------------------------------------
378h Запись
Регистр данных - сюда засылается байт, посылаемый на печать
Чтение Регистр
данных - позволяет считать последний переданный в принтер байт
379h Чтение
Регистр состояния принтера:
7 6 5 4 3 2 1 0
+--------------------+
¦
¦ ¦ ¦ ¦ ¦X¦X¦X¦ Биты:
+--------------------+
-----
¦ ¦ ¦ ¦ +---------> 3: 0=при печати возникла ошибка
¦ ¦ ¦ +------------> 4: 0=принтер в автономном режиме
¦ ¦ +---------------> 5: 1=сигнал "конец бумаги"
¦ +------------------> 6: 0=принтер готов к печати
¦ следующего символа
+---------------------> 7: 0=принтер занят, находится в
автономном режиме или
произошла ошибка
37Ah Чтение/
Регистр управления принтером:
Запись
7 6 5 4 3 2 1 0
+--------------------+
¦X¦X¦X¦
¦ ¦ ¦ ¦ ¦ Биты:
+--------------------+
-----
¦ ¦ ¦ ¦ +---> 0: бит запуска печати (см. ниже)
¦ ¦ ¦ +------> 1: 1=после возврата каретки выводить
¦ ¦ ¦ перевод строки (в MS-DOS
должен
¦ ¦ ¦ быть сброшен)
¦ ¦ +---------> 2: 1=инициализировать принтер
¦ +------------> 3: 1=разрешить вывод на печать (должен
¦ быть всегда установлен)
+---------------> 4: 1=разрешить прерывания от принтера
1. Для запуска
печати символа нужно на короткое время установить бит 0 регистра
управления, а затем сбросить его.
2. Прерывание
происходит по окончании вывода символа на печать: для первого принтера
на седьмом уровне контроллера прерываний (IRQ7, вектор
прерывания 0Fh), для второго принтера - на пятом уровне (IRQ5,
вектор 0Dh). Следует отметить также, что IRQ5
используется XT-контроллером жестких дисков для генерации своих
прерываний. Обычно этот бит не используется (сбрасывается), а проверка
готовности принтера производится на основании опроса регистра состояния.
Типичная последовательность
действий для вывода на печать одного символа такова:
- вывести передаваемый
байт в регистр данных;
- в цикле проверять
состояние принтера до устaновки бита 7 регистра состояния (здесь возможно использование
таймаута);
- проверить биты 3-5
регистра состояния на наличие ошибки;
- установить и
сразу же сбросить нулевой бит регистра управления, для этого подходит
следующая последовательность команд:
mov dx,37Ah ;адрес регистра управления
mov al,00001101b ;установить биты 0,2 и 3
out dx,al ;вывести команду
xor al,1 ;сбросить бит 0
out dx,al ;повторно вывести команду
- далее можно
прочитать и запрограммировать регистр состояния и перейти к печати
следуюего символа.
Несмотря на простоту
управления, принтер представляет из себя достаточно сложное устройство, имеющее
свой микропроцессор,
ПЗУ и ОЗУ.
Микропроцессор используется для обработки управляющих
последовательностей и
управления печатью. ПЗУ содержит описание рисунков символов в зависимости от
их кода и выбранной таблицы и программы на языке используемого
микропроцессора. ОЗУ используется для временного хранения введенных данных
и спроектированных пользователем символов. Ряд принтеров, помимо
интерфейса Centronix, могут поключаться и к последовательному интерфейсу.
Принтер обрабатывает ряд спецсимволов (таких, как звонок, забой,
горизонтальная и вертикальная табуляция), а также имеет достаточно сложную
систему команд для изменения режимов работы и управления печатью.
Обычно команды
начинаются с символа ESC (шестнадцатиричный код 1Bh) и имеют
длину от двух байт и более (существуют командные последовательности,
включающие по несколько килобайт информации, например команды
загрузки спроектированных пользователем шрифтов). Спецсимволы и байты
команд передаются принтеру так же, как и обычные символы,
предназначеные для печати, описанным выше способом. Подобный способ
управления удобен для программного изменения режимов работы устройства.
Учитывая, что выпуском принтеров для ПЭВМ занимается достаточно большое
число компаний и возможности принтеров постоянно совершенствуются, нет
смысла приводить полностью какую-либо систему команд, так как,
во-первых, она в разных марках и моделях принтеров различна, и,
во-вторых, достаточно полно описывается в документации на каждый конкретный
принтер.
Существует 2
основных стандарта на систему команд и таблицу используемых символов
(стандарты IBM и EPSON), которых в основном придерживаются
фирмы-изготовители, оставляя за собой право вносить в них изменения и
дополнения. Единого стандарта как на систему команд, так и на расположение и
рисунки символов второй половины таблицы ASCII (коды
129-255) нет. Наиболее часто используемые команды:
- установка вида шрифта
и режима печати;
- черновой текстовый
(draft) нормальной ширины (pica), узкий (condensed) или средней ширины (elita).
- качественный шрифт (NLQ, Proportional,
Orator, Script и т. д.);
-выбор таблицы символов из ПЗУ (обычно имеется
несколько таблиц, отличающихся расположением управляющих кодов, наличием и
расположением псевдографических символов или курсива);
- загрузка в ОЗУ
принтера спроектированных пользователем шрифтов и работа с ОЗУ принтера
(именно в этой группе команд, имеются наибольшие различия между разными
моделями);
- управление принтером
в режиме точечной графики;
- установка
служебных параметров (размеры отступов, страницы, шаг табуляции,
расстояние между строками) и изменение характеристик (сброс,
включение/отключение датчика конца бумаги, печать в одну или в две стороны и
т. п.).
Ряд характеристик и
режимов работы может выбираться как программно, так и аппаратно с использованием
кнопок и клавиш на лицевой панели и DIP-переключателей. Существуют
характеристики, изменить которые можно только аппаратно (например,
возможность загрузки шрифтов или размер используемого ОЗУ).