Краткий курс - Самоучитель - AVR - быстрый старт с нуля

Задача - упражнение   4
 

Связь,  Интерфейсы ...

Компьютер - это мощный, универсальный инструмент для разработки и отладки электронных устройств и на AVR  PIC и других МК тоже. 

Важно научится соединять электронику с компьютером.   
 

Цель задачи: 

1) Рассмотреть способ связи вашего электронного  устройства
с компьютером для обмена данными.

2) Познакомится с методом отладки вашего реально спаянного
устройства на МК - нахождение ошибок программы и "железа" с
помощью вывода контрольных сообщений по ходу  программы.  


 

 

Поиск   GOOGLE   по  Краткому Курсу AVR

Подставьте нужное вам слово, запрос и получите результат.

 

- Книги и учебники по электронике и микроконтроллерам там

- Как и чем "прошить" микроконтроллер   AVR  читайте на стр. 7

- Подробно про LPT, COM, MIDI портах ПК рассказано в "подвале" этой страницы ! Там же про RS232, RS485, i2c, IrDA, CAN, PS2, 1-WIRE, X10, LVDS ...

Для связи ПК и вашего устройства необходим физический интерфейс.

Очень удобен и прост интерфейс RS232.

В ПК RS-232 бывает в виде COM-портов. Если у вашего ПК нет СОМ портов то используйте адаптер на микросхеме FT232 R ( или аналогичных PL2303, CP2102 ) - он подключается к USB вашего ПК и в системе появляется виртуальный СОМ порт, а на выводах FT232 R соответствующие сигналы UART.

Напряжение на выходе данных из COM-порта ПК (это ножка 3 в 9-ти штырьковом
разъеме - рисунки ниже !) по стандарту RS232 таково:

логическая "1"    от -5 до -15 вольт  

логический "0"    от +5 до +15 вольт

На самом деле сигналы в COM называются по другому ! 
Я их назвал "логический" по аналогии названия в МК.   

Напряжения измеряются относительно вывода 5 который является "землей"
или "общим проводом" интерфейса и обычно соединен с металлическим
корпусом COM-разъема.

USART (или UART - универсальный приемо--передатчик осуществляющий кроме прочего и обмен данными по протоколу RS232 ) МК желает принимать на ножку RxD лишь напряжения допустимые для ножек МК (см стр. 2 курса).

Кроме того для входа МК  "0" это напряжение близкое к нулю а "1" это напряжение близкое к напряжению питания МК (см стр. 2 курса).

 

     
 

Для согласования напряжений и логических уровней COM-порта 
и USART МК используют микросхемы типа MAX232

Я советую вам использовать современную микросхему ! 

Например sn65c3232E - ее можно питать напряжением от 3 до 5.5 вольт - при этом она поддерживает скорость передачи данных 
до 1 Mbs.

Вместо микросхемы можно использовать схему на 
транзисторах и "рассыпухе" - пример в АпНоуте 
AVR910 

 
     

 

 

Обычно ПК у вас один а устройств много

значит :

Достаточно одной микросхемы в составе кабеля адаптера  МК - ПК 
аналогично "шнурку" для связи ПК с мобильным телефоном.

 

     
 

Вы можете использовать готовый 
шнур-кабель от сотового телефона !

В интернете много схем кабелей для GSM телефонов, в них можно найти назначение контактов со стороны телефона - этой стороной кабель подключается прямо к USART  МК телефона. 

проблема в том, что обычно микросхема реализующая преобразование уровней сигнала - max232 (скорее ее более дешевый аналог) заправлена в вилку включаемую в сотовый, и вам придется проводки подключить к маленьким контактам этой вилки.

Еще нужно убедится что у данных телефонов именно rs232 
используется, опять же исходя из схем кабелей.

В кабеле для Siemens легко подключиться голыми медными проводками, там каждая ламелька разъема лежит в своем желобке, а проводки уже паять к гибкому проводу с колодкой на штырьки в плате с МК. затем замотать все изолентой. Таким образом кабель сможет выполнять в дальнейшем свое прямое назначение.

вот по этим ссылкам есть схемы кабелей:

allsiemens.ru

3ton.com/besik/cables.html

gsm.net.ua/siem.html


Обычно в адаптеры впаян стабилизатор питания 78L05 и питаются они от контактов 7 или 6,  9-штырькового разъема COM порта ПК, надо померить вольтметром чтоб хотя бы на одном из них было положительное напряжение более 8 вольт относительно "общего" контакта 5. 

Если этого нет то нужно отсоединить провода от этих контактов и подключить к ним внешнюю батарейку на 9-12 вольт.

Вот у Ericsson 6ХХ/7ХХ питание адаптера идет от телефона - нам это удобней.

 
     

 

 

Не трудно собрать свой адаптер по типовой схеме включения микросхемы из ДШ. 

Вот схема для MAX232:

- в схеме можно использовать конденсаторы от 0.47 до 10 мкФ, но лучше посмотрите ДатаШит вашей микросхемы на предмет номиналов конденсаторов. 

- ST232 дешевый клон max232 всего за 1.4 $ 

- вы можете обойтись без конденсаторов вовсе если используете например MAX233 или DS275 (схема ниже) - но они стоят подороже. 

С лева на схеме показан разъем для подключения к МК AVR. на плату впаивают 4-х штырьковую вилку. Штырьки подключаются к МК по названиям по ДатаШиту. 

Адаптера имеет разъем с 4-мя отверстиями для подключения к устройству на МК. 

Правильное подключение разъема удобно пометить лаком для ногтей. 

По линии TxD данные передаются от МК в ПК (через MAX232),
по линии RxD  МК принимает данные от ПК.

Микросхема адаптера питается от вашего устройства на МК.

Длину проводов от МК до микросхемы адаптера не делайте больше 20 см.
я их сделал из плоского кабеля - шлейфа для IDE.

Со стороны ПК я использовал провод от COM-"мышек" - длины какой был. 

 

     
 

НАПОМНЮ :

9 штырьковый разъем COM
-порта ПК принимает данные на ножку 2,  с ножки 3 дынные передаются от ПК, а ножка 5 является "землей" или общим проводом. 

Для 25 штырькового разъема это будут соответственно выводы 3, 2 и 7.

 
     


Вот еще пара схем:

перемычки 4-6 и 7-8 необязательны !

 

 

Для проверки интерфейса rs232 (проверить полный путь сигнала до контактов подключаемых к вашему МК или устройству) соедините проводники идущие к ножкам микроконтроллера RхD и TхD между собой отключив их от МК. Теперь символы отправляемые с компьютера должны возвращаться в него. Если этого не происходит ищите неисправность в схеме вашего адаптера.

 

Для проверки COM-порта ПК соедините его выводы RD и TD. Теперь символы отправляемые на COM-порт должны возвращаться в него. Если этого не происходит смотрите в BIOS и настройку COM.

Для отправки и приема данных можно использовать гипертерминал Windows или более удобные программы которые будут названые ниже и море других утилит для COM-порта..

 

 

     
 

Если вы еще не скачали ВСЕ
примеры применения МК AVR
 
- АпНоуты 

прошу вас, сделайте это ОБЯЗАТЕЛЬНО - 

ЭТО СПРАВОЧНИК именно по AVR  -  именно для вас !

Найдите время ВНИМАТЕЛЬНО ознакомится с ними.

 
     

 

 

Если на вашем ПК нет COM-портов, а есть только USB 

Использовать кабель для сотового телефона содержащий микросхему преобразователь USB -> COM. 

Или сделайте адаптер USB-COM сами на микросхеме FT232RL или CP2102   -  по схема в  даташитах или закажите готовые USB адаптеры почтой.  

После установки драйверов на вашем ПК появится виртуальный COM-порт - с ним будут нормально работать программы перечисленные ниже и другие для COM-порта.

 

     
 

Если в вашем компьютере нет COM-портов - вы можете принимать данные на звуковой вход и просматривать в звуковом редакторе.

Скорость передачи не делайте более 9600 kbps.

 
     

 

    Наиболее безопасно использовать для связи ПК и МК оптоизолированый интерфейс.  

Его нетрудно спаять самому.  Вот простая схема на недорогих оптопарах 4N35  - она надежно работает на скорости передачи до 19200.  Положительное питание левой части поступает с ножки 7 COM-порта. 

 

     Я использую оптоизолированный интерфейс RS232 на более  быстрых оптопарах 6N135 - он надежно работает на скорости 115200 с микроконтроллерами питание которых VCC от 3 до 6 вольт. Должен работать и с более высокой скоростью, так как оптопары рассчитаны на 1 Мегабод.

Вот архив со схемой и платой в EAGLE.   Если вы используете удлиняющий шнур от COM-порта ПК всего с 3-мя проводами, то вам не доступны выводы обеспечивающие питание левой части схемы, и нужно подключить внешний источник питания 5-15 вольт к вилке "EXTRA+12V". Я использую 9 вольтовую батарейку типа "крона".

 

Реклама недорогих радиодеталей почтой:

 

 

Как и Чем принимать и анализировать 
данные на ПК ?

Можно использовать стандартный терминал Windows - я не пробовал. 


Советую вам скачать и использовать программы специально 
созданные для отладки устройств подключаемых к COM.

 

1)    Бесплатная, русская программа  ComVC  - может сканировать COM и LPT порты ПК .  На сайте автора есть еще полезные программы для LPT и уроки программирования работы с портами ПК.  Автор - Валерий Ковтун.


2)  
COM Port Toolkit   для Windows 95/98/Me/NT/2000/XP


Мощная программа [Размер около 1400 Kб и все по-русски!] - позволяет гибко управлять обменом с вашим устройством, естественно сохраняет все на жесткий диск. 
Имеет очень полезный режим монитора (снифер rs232) - программа не занимает COM порт, а просто захватывает все данные передаваемые по COM и может захватывать обмен одновременно по всем портам ! 

Идеально для анализа данных обмена любых устройств подключенных к ПК.

Показывает направление передачи данных, и присваивает посылкам время по часам ПК с разрешением 1 мС.

     
 

Вы можете сохранить результат захвата в виде .html

просто щелкните на поле лога обмена правой кнопкой 
мышки и выберите соответствующий пункт меню!

 
     


Внимание !
  - вы можете сами писать макросы управляющие обменом на простом Си подобном языке. 

Есть готовые макросы !  

Цитата: 

" ... Макросы используются программой для автоматизации рутинных задач передачи и модификации данных. Вы можете использовать их после добавления в каталог '\Macros' программы COM Port Toolkit. Макросы, выложенные ниже, являются хорошим примером для написания собственных скриптов для COM Port Toolkit.


CRC16pl.gc Вычисление CRC16 по полиномиальному алгоритму. 
(пример использования макроса 'при отправке') Михаил В. Голиков 

emu_barrier.gc Эмуляция работы прибора. 
(пример использования макроса 'при приеме') Михаил В. Голиков 

MODBUS_CRC16.gc Вычисление CRC16 MODBUS Михаил Н. Страшевский 

StringWithHex.gc Инкапсуляция байтов в HEX внутри строковых данных. Валерий В. Вишняк  ..."


Скачайте любой макрос и подивитесь их простоте.

 

 

3)    Далее простенькая программка - LookRS232  

полнофункциональная 15-дневная Демо версия. Я ее использовал 
с удовольствием, примеры принятых данных есть в задаче 07.  

 

4)   Очень мощные

Advanced Serial Data Logger for Windows 9x/Me/NT/2000/XPо

Advanced Serial Data Logger input RS232 data directly into file, Excel, Access or any Windows application. 

Advanced Serial Data Logger provides real-time data collection from any serial device or instrument. Send and receive RS232 data across a RS232 port or RS485 port with hardware converter.

и... 

Advanced Serial Port Monitor

A program that could mostly be used to check the flow of data through the computers COM ports under governing the operating system Windows. 

Supports: full duplex mode, flexible adjusting of parameters, output received data to file, automatic and manual mode, free data source, serial and RS232 sniffer (spy) mode. 

OS: Windows 95, 98, ME, NT 4.0, 2000, XP.

Обе программы хороши , как и 2) имеют режим "шпиона" - сами не занимаю порт а пишут в файл что шлет ПК в порт общаясь с подключенным устройством и что от туда получает, удобно для расшифровки протокола обмена различных устройств - сотовый телефон, модем, всякая всячина.

Обе программы имеют язык макросов. 

Программа повыше полнофункциональна в демо режиме и имеет плагины 
для конвертации полученных данных в формат Excel и Access .

 

 

 

Отладка МК устройства с помощью
адаптера
MK < - > ПК  USB-UART


Идея проста как лапоть, но работает хорошо ! 

В программе расставляются тестовые сообщения выводимые 
через описанный выше адаптер на ПК. 

Таким образом Мы видим в каком месте программы находимся, 
и где зависаем или спотыкаемся ! 

Можно выводить на ПК значения важных и нужных переменных !

вот так примерно:

Настраиваем скорость и включаем передачу USART:

#include <stdio.h>
// для любого компилятора  

Для AT90Sxxxx вот так:



UCR=0x00; // UART Off - выключить

// UART Baud rate: 115200 при частоте 3,68 МГц
UBRR=0x01; 
// 8 Data, 1 Stop, No Parity
/* значение в регистре определяет скорость 
работы UART в бодах. 

Нужное значение удобно получить с помощью генератора начального кода.
А можно рассчитать по ДШ. 

В ДШ смотрите и доступные для данного МК скорости работы USART

*/


UCR=0x08; // UART Transmitter: On - Включить

 

 

Для  ATmegaXX  (с одним USART) вот так:

// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous

UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;

// USART Baud rate: 9600 для 4 MHz 
UBRRH=0x00;
UBRRL=0x19;

 
Теперь UART готов передавать данные.

 

 

     
 

Еще один способ вывода отладочной информации
на COM-порт ПК вы можете посмотреть в курсе
для начинающих   avr.nikolaew.org

 
     

 

 

Пример отладки привожу из своего опыта. 

Готовя задачу 07, я подключил память AT45DB161 к готовому устройству содержащему AT90s8535 - это был один из кучки адаптеров AVRISP присланных мне добрыми американцами. 

Монтаж там очень миниатюрный (smd 0603) и не смотря на все ухищрения я просмотрел что ножка МК PB1 заземлена через резистор 1,5 кОм - а к ней я подключил вывод RDY микросхемы памяти. 

Когда память свободна от выполнения внутренних операций на этой ножке должна возникать лог. "1" - высокий уровень  напряжения - близкий к напряжению питания +5 вольт. 

По поведению светодиодов (были уже на моей плате)

     
 

Светодиоды - тоже очень хорошее 
средство отладки-диагностики ! 

Используйте разные режимы горения светодиодов 
для индикации состояния вашего устройства!

 
     

я обнаружил, что МК виснет в процедуре стирания памяти.

Вот кусок программы из задачи 07 в котором я разместил 
контрольные сообщения - я буду писать из красным

while (block_counter < 512)
{
PORTB &= ~DF_CHIP_SELECT; 
// enable DataFlash

// тестовое сообщение
putsf("TP 0001"); // выводится 8 байт !!!


SPDR = BLOCK_ERASE;
while (!(SPSR & temp)); 
// wait for data transfer to be completed


putsf("TP 0002"); 

SPDR = (char)(block_counter>>3); //
точно по стр. 4 ДШ
while (!(SPSR & temp)); 
// wait for data transfer to be completed


putsf("TP 0003"); 

SPDR = (char)(block_counter<<5); //
точно по стр. 4 ДШ
while (!(SPSR & temp)); 
// wait for data transfer to be completed


putsf("TP 0004"); 

SPDR = 0x00; // don't cares
while (!(SPSR & temp)); 
// wait for data transfer to be completed


putsf("TP 0005"); 

PORTB |= DF_CHIP_SELECT; 
// disable DataFlash


block_counter++; 

putsf("TP 0006"); 

while(!(PINB & (1<<1))); 
// wait until block is erased
 

putsf("TP 0007"); 

}   // все 512 блоков по 8 страниц стерты.


Я откомпилировал программу с тестовыми сообщениями, запустил программу LookRS232 на ПК для приема данных от МК, и прошил МК новой прошивкой. 

Включил МК и программа заработала. 

Скоро на экране ПК появились сообщения:

TP 0001 TP 0002 TP 0003 TP 0004 TP 0005 TP 0006

Последним пришло сообщение TP 0006 - значит не выполняется участок между Тестовыми Точками (TestPoint) 6 и 7. 

 

Я стал анализировать этот код между этими точками:

putsf("TP 0006"); 

while(!(PINB & (1<<1))); 
// wait until block is erased
 

putsf("TP 0007"); 

 

Строка программы:

while(!(PINB & (1<<1)));  

это "цикл-ожидание" (см. стр. 5 курса - Си для МК) появления на ножке МК  PB1 уровня лог. "1" - раз программа останавливается на этой строчке значит почему-то уровень на этом выводе МК остаётся лог. "0". 

Я измерил вольтметром напряжение на ножке PB1, оно оказалось 0,54 вольта - логический "0" (см. стр. 2 курса) в чистом виде !  

Выключил устройство и померил сопротивление от ножки PB1 на "землю" и на питание. Сопротивление на землю оказалось 1,52 кОм. тогда я взял лупу стал разбираться "плотнее", что куда идет от этой ноги и обнаружил чип резистор на "землю" - отпаял его. 

Померил сопротивление снова - теперь все в порядке - теперь 
оно почти бесконечно большое.

Запустил программу на ПК по новой и включил МК - все заработало - на экране побежала строка:

TP 0001 TP 0002 TP 0003 TP 0004 TP 0005 TP 0006 TP 0007 

и далее по программе ...

 

Принцип надеюсь вам ясен - ведь он прост.

Однако нужно тщательно продумывать размещение тестовых
сообщений - они не должны искажать ход программы по времени! 


После окончания отладки можно либо удалить тестовые сообщения, либо закомментировать их - т.е. поставить перед ними две черточки  //  - т.е. сделать их комментариями.

 

     
 

Советую сделать профессионально

При отладке в начале программы пишут:

#define DEBUG

а тестовые сообщения пишут вот так:

#ifdef DEBUG
putsf("Test Mess"); 
#endif

Теперь код написанный красным будет выполнятся. 

 

А когда устройство уже отлажено вам нужно закомментировать 
строку -
#define DEBUG  двумя черточками - вот так:

// #define DEBUG

и теперь при компиляции код написанный красным НЕ будет выполнятся. 


Это очень удобно когда программа большая и тестовые 
сообщения во множестве расположены в разных частях 
программы, даже в разных файлах проекта ! 

всего двумя черточками  //   вы отключаете или включаете все тестовые сообщения сразу !

 
     


Тестовые сообщения могут быть разными, в зависимости от допустимости их длины по времени, желательно их делать длинными с понятным текстом вызывающим ассоциацию с соответствующим участком программы. 

В местах критичных к времени выполнения можно делать короткие тестовые сообщения, либо вовсе не делать вначале отладки. 

А уже убедившись что проблема именно в этом скоростном участке - вставить скоростные метки: т.е. в качестве тестового сигнала выводить по 1 символу не тратя времени на вызов функции вывода. 


Вот так например для AVR серии AT90sXXXX:

while (!USR.5); /* ждем окончания передачи предыдущего байта (символа) если не уверены что он уже был отправлен */

UDR = ( число от 0 до 255 но желательно соответствующее   печатаемому на экране символу - см. таблица символов ASCII); 
// передаем нужный тестовый символ

 

Для ATmega названия регистров отличаются 

и соответственно конструкция для ATmega8 будет такой: 

while (!(UCSRA.5)); /* ждем очистки регистра данных USART - т.е. окончания передачи предыдущего байта (символа)
в ДШ это написано так: 
      while ( !(UCSRA & (1<<UDRE)) );  
где UDRE это 5-1 бит в регистре UCSRA */

UDR = ('5'); /* поместить число соответствующее символу 5 в регистр данных USART - он называется UDR - это стартует передачу символа на ножке TxD. и в принимающем терминале появится символ  5  */


так в нужном месте программы мы вывели контрольное сообщение 
состоящее из одного символа.

Если вы уверены по тексту вашей программы, что между выводом тестовых символов  проходит достаточно времени для их передачи то можно написать просто:

UDR = ('5'); 

 

     
 

На передачу одного символа (в формате 8N1 - установленном нами выше при настройке UART) тратится время в Сек : 

10 разделить на скорость USART в бод/сек. 

Для запаса делите не 10 а 11 или 12 - не промахнетесь!

 
     

 

 

Внимание !       функция :

putsf("что-то");

передает на 1 символ больше чем количество символов между кавычками !

 

     
 

Если UART MK настроен как сказано выше, то 

для вывода чисел в нужном вам виде в компиляторах ImageCraft ICC и  CodeVisionAVR вы можете использовать функцию форматированного вывода  -   printf()

Если переменная   val    содержит число 166   то 

printf("val = %d",val);

Выведет на терминал ПК:       val = 166

и ...

printf("val = 0x%X",val);

Выведет на терминал ПК:    val = 0xA6


Подробней о 
printf() читайте в следующей задаче 
и в  Help'ах  к  компиляторам.

 
     

 

 

 

Всё !   Задача закончена.

 

Если вам что-то не понятно, пожалуйста перечитайте 
задачу еще раз просмотрите рекомендованный материал.  

 

 

Дальше  ->  Задача 5

 

В которой я рассказываю и показываю как: 

1)  Создать программу для ATmega16 принимающую и передающую данные обмениваясь ими с ПК через COM-порт по интерфейсу rs232  с помощью USART встроенного в МК серии ATmega.

2)  угл'У'бить навыки создания программы в CVAVR и продОлжить 

 
                       использование Си для микроконтроллеров


3)  Подключить и "порулить" символьным ЖКИ -
LCD 16x2

 

 

 



 

          

 
 
ключевые слова: программирование микроконтроллеров, как написать программу для микроконтроллера, обучение программированию микроконтроллеров, микроконтроллеры atmega128, как запрограммировать микроконтроллер, как прошить микроконтроллер, отладка программы для AVR, моделирование работы электронных схем, электронные проекты, хобби, язык си для микроконтроллеров, язык программирования си
AT76C712 , AT76C713 , AT90CAN128 , AT90CAN128 Automotive , AT90CAN32 , AT90CAN64 , AT90PWM2 , AT90PWM3 , AT90S1200 , AT90S2313 , AT90S2323 , AT90S2343 , AT90S4433 , AT90S8515 , AT90S8535 , ATmega128 , ATmega1280 , ATmega1281 , ATmega16 , ATmega161 , ATmega162 , ATmega163 , ATmega164 , ATmega165 , ATmega168 , ATmega168 Automotive , ATmega169 , ATmega2560 , ATmega2561 , ATmega32 , ATmega323 , ATmega324 , ATmega325 , ATmega3250 , ATmega329 , ATmega3290 , ATmega406 , ATmega48 , ATmega48 Automotive , ATmega64 , ATmega640 , ATmega644 , ATmega645 , ATmega6450 , ATmega649 , ATmega6490 , ATmega8 , ATmega8515 , ATmega8535 , ATmega88 , ATmega88 Automotive , ATtiny11 , ATtiny12 , ATtiny13 , ATtiny15L , ATtiny2313 , ATtiny25 , ATtiny26 , ATtiny28L , ATtiny45 , ATtiny85

 

Интерфейсы RS232, RS485, I2C, 1-wire, IrDA ...

Описание интерфейсов CAN, I2C, RS485, USB, LVDS - примерные параметры !

Интерфейс Макс.
скорость
Тип Длина
линий
связи
Топология
CAN 1 Mbps Дифференциальная
пара
1000m полудуплекс, многоточечная
Centronics   Параллельный 1,8m полудуплекс, точка-точка
I2C 100, 400 и
3400  Kbps
Логические уровени. Две линии SDA и SCL с "подтяжками" к питанию резисторами по 4.7 кОм обычно.

Аппаратная реализация i2c в AVR называется TWI

1 m полудуплекс, многоточечная
1-wire   1 проводник с "подтяжкой" к питанию резистором 4.7 кОм обычно. По нему же питаются и подключаемые устройства. Второй проводник - "Общий".    
IrDA 115 Kbps
4 Mbps
Беспроводная 15m
1m
 
LVDS 655 Mbps
1.923  Gbps
Дифференциальная
пара
   
MIDI 31250 bps Токовая петля 15m  
RS-232 115 Kbps 4 провода при аппаратном контроле передачи, но часто используют только 2 провода. 15m дуплекс,
точка-точка
RS-485 10 Mbps Дифференциальная
пара
1200m полудуплекс, многоточечная
USB 1.1 12 Mbps Дифференциальная
пара
5m полудуплекс, точка-точка
USB 2.0 480 Mbps Дифференциальная
пара
  полудуплекс, точка-точка


Ориентировочные значения максимально допустимого резистора подтяжки
              для шины  i2c (TWI)  в зависимости от емкости линии.

 

X10   Домашняя автоматизация - "Умный дом" - интерфейс X-10  X10 есть в апноуте AVR236

Статьи по промышленным интерфейсам

 

 

USB       В 1994 году, группа  компаний, в т.ч. Compaq, Hewlett-Packard, Intel, Lucent, Microsoft, NEC и Philips, объявили о совместной разработке технических требований к новому "чуду" - интерфейсу USB. USB – аббревиатура от Universal Serial Bus, что означает универсальная последовательная шина. Первоначальное ее назначение касалось организации простого и универсального подключения между телефонами и компьютерами. Однако, по мере совершенствования спецификаций, USB-интерфейс становится основным интерфейсом для подключения любого периферийного оборудования  к ПК, а в современном виде USB дополнен возможностью организовать связь между двумя устройствами, минуя ПК.

Ключевыми факторами, способствующих популяризации интерфейса USB, являются следующие:

  1. Последовательная передача означает малое число интерфейсных сигналов (4 провода).
  2. Высокая скорость обмена данными: до 480 Мбит/с
  3. Наличие линии питания среди интерфейсных сигналов (5В, 500 мА)
  4. Поддержка функции автоматического определения внешнего устройства при подключении (plug-&-play).
  5. Возможность подключения к шине при включенном питании (hot plug).
  6. Расширяемость USB-порта. С помощью специального устройства – размножителя (hub) – имеется возможность подключения к одному USB-порту до 127 устройств.
  7. Поддержка передачи аудио, видео, голосовой информации в реальном масштабе времени.
  8. Наличие электронных компонентов, интегрирующих как физический, так и логический уровни.
  9. Поддержка большинством популярных операционных систем.

Обзор архитектуры USB

Архитектура шины USB выполнена аналогично локальной сети на витой паре, т.е. как многоуровневая звезда [1]. При этом, шина USB соединяет внешние USB-устройства с главным USB-портом (host). Топология многоуровневой звезды подразумевает, что центром каждого разветвления (звезды) является размножитель (hub). Каждая связь выполняет двухточечное соединение между главным USB-портом и размножителем/функцией или между размножителем и другим размножителем/функцией. На рисунке 1 представлена топология шины USB.

Топология шины USB
Рисунок 1 – Топология шины USB

Вследствие задержек в распространении сигналов в размножителях и кабелях максимальное количество разветвлений (звезд) ограничено 7, включая корневой уровень. Обратите внимание, что из 7 только на 5 уровнях могут быть установлены некорневые размножители, составляющих путь связи между любым устройством и главным USB-портом. Состаное устройство занимает два уровня (см. рис. 1). На 7-ом уровне могут находиться только функции.

Главный USB-порт. В любой USB-системе может быть только один главный USB-порт. Устройство, которое соединяет главную компьютерную систему с USB-интерфейсом называется главный контроллер (Host Controller). Корневой размножитель входит в состав главной системы для организации нескольких точек подключения.

USB-устройство. В качестве USB-устройства может выступать либо размножитель, формирующий дополнительные точки подключения к USB-шине, либо функция, представляющее собой устройство для расширения возможностей главной системы, например, клавиатура, джойстик, сканер и т.п.

Следует отметить об одном ограничении, связанным с представленной на рис.1 топологией. Оно касается невозможности соединения между собой двух функций. В виду практической целесообразности такого режима обмена данными, например, при печати под непосредственным управлением цифровой камеры, разработан дополнительный стандарт USB On-The-Go (USB OTG) [2]. Организация USB OTG-связи подразумевает участие в обмене информацией только двух устройств, при этом как минимум одно из них должно поддерживать двухоперационность (dual-role). Двухоперационность означает возможность взятия на себя функции "главного" внешним устройством для инициации сеанса связи с подключенным к нему другим внешним устройством.

Интерфейс USB является 4-проводным, но в разъеме USB OTG имеется дополнительный вывод, который служит для локального подключения идентификационного резистора. Назначение и расположение выводов представлено в таблице 1.

Поскольку, в физическом USB-соединении участвует только два объекта, где один – сторона А, а второй –сторона В, то соответственно разделяются и USB-разъемы: Standard-A, Mini-A (вилка, розетка), соединяемые только на стороне А и Standard-B, Mini-B (вилка, розетка), соединяемые только на стороне В. В USB OTG-системах, где допускается работа как главного, так и как устройства, может быть установлена розетка Mini-AB, которая допускает присоединение вилки и Mini-A и Mini-B.

Таблица 1. Назначение и расположение выводов в разъеме

Номер контакта в разъеме Наименование сигнала Маркировка Назначение
USB 2.0 USB OTG
1 1 VBUS Красный Напряжение питание шины
2 2 D- Белый Линия последовательной приема-передачи данных с коммутацией к общему
3 3 D+ Зеленый Линия последовательной приема-передачи данных с коммутацией к плюсу питания
- 4 ID Идентификационный резистор к GND Идентификационная линия
4 5 GND Черный Общий

В зависимости от величины скорости связи каждая USB-шина работает в одном из режимов:

  1. Low Speed (LS) – низкоскоростной режим со скоростью связи 1,5 Мбит/сек.
  2. Full Speed (FS) – полноскоростной режим со скоростью связи 12 Мбит/сек.
  3. Hi-Speed (HS) – высокоскоростной режим со скоростью связи 480 Мбит/сек.

 

 

Последовательные интерфейсы

Последовательный интерфейс для передачи данных исполь-
зует одну сигнальную линию, по которой информационные
биты передаются друг за другом последовательно. Отсюда -
название интерфейса и порта. Английские термины - Serial
Interface
и Serial Port (иногда их неправильно переводят как
"серийные"). Последовательная передача позволяет сокра-
тить количество сигнальных линий и увеличить дальность
связи. Характерной особенностью является применение не-
ТТЛ сигналов. В ряде последовательных интерфейсов при-
меняется гальваническая развязка внешних (обычно вход-
ных) сигналов от схемной земли устройства, что позволяет
соединять устройства, находящиеся под разными потенциа-
лами. Ниже будут рассмотрены интерфейсы RS-232C, RS-
422А, RS-423A, RS-485, токовая петля, MIDI, а также
СОМ-порт.

2.1. Способы последовательной передачи

Последовательная передача данных может осуществляться в
асинхронном или синхронном режимах. При асинхронной пе-
редаче каждому байту предшествует старт-бит, сигнализи-
рующий приемнику о начале посылки, за которым следуют
биты данных и, возможно, бит паритета (четности^). Завер-
шает посылку стоп-бит, гарантирующий паузу межцу посыл-
ками (рис. 2.1). Старт-бит следующего байта посылается в
любой момент после стоп-бита, то есть между передачами воз-
можны паузы произвольной длительности. Старт-бит, имею-
щий всегда строго определенное значение (логический 0), обес-
печивает простой механизм синхронизации приемника по
сигналу от передатчика. Подразумевается, что приемник и
передатчик работают на одной скорости обмена. Внутренний
генератор синхронизации приемника использует счетчик-де-
литель опорной частоты, обнуляемый в момент приема нача-
ла старт-бита. Этот счетчик генерирует внутренние стробы,
по которым приемник фиксирует последующие принимаемые

биты. В идеале стробы располагаются в середине битовых
интервалов, что позволяет принимать данные и при незна-
чительном рассогласовании скоростей приемника и пере-
датчика. Очевидно, что при передаче 8 бит данных, одного
контрольного и одного стоп-бита предельно допустимое рас-
согласование скоростей, при котором данные будут распоз-
наны верно, не может превышать 5%. С учетом фазовых ис-
кажений и дискретности работы внутреннего счетчика
синхронизации реально допустимо меньшее отклонение час-
тот. Чем меньше коэффициент деления опорной частоты внут-
реннего генератора (чем выше частота передачи), тем больше
погрешность привязки стробов к середине битового интерва-
ла, и требования к согласованности частот становятся более
строгими. Чем выше частота передачи, тем больше влияние
искажений фронтов на фазу принимаемого сигнала. Взаимо-
действие этих факторов приводит к повышению требований
к согласованности частот приемника и передатчика с ростом
частоты обмена.

21.jpg
 

Рис. 2.1. Формат асинхронной передачи

Формат асинхронной посылки позволяет выявлять возмож-
ные ошибки передачи'.

^ Если принят перепад, сигнализирующий о начале посыл-
ки, а по стробу старт-бита зафиксирован уровень логи-
ческой единицы, старт-бит считается ложным и прием-
ник снова переходит в состояние ожидания. Об этой
ошибке приемник может и не сообщать.

й" Если во время, отведенное под стоп-бит, обнаружен уро-
вень логического нуля, фиксируется ошибка стоп-бита.

55й Если применяется контроль четности, то после посылки
бит данных передается контрольный бит. Этот бит до-

3 Зак.№530

полняет количество единичных бит данных до четного
или нечетного в зависимости от принятого соглашения.
Прием байта с неверным значением контрольного бита
приводит к фиксации ошибки.

Контроль формата позволяет обнаруживать обрыв линии:

при этом принимаются логический нуль, который сначала
трактуется как старт-бит, и нулевые биты данных, потом
срабатывает контроль стоп-бита.

Для асинхронного режима принят ряд стандартных скоро-
стей обмена:
50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600,
19 200, 38 400, 57 600 и 115 200 бит/с. Иногда вместо еди-
ницы измерения "бит/с" используют "бод" (baud), но при
рассмотрении двоичных передаваемых сигналов это некор-
ректно. В бодах принято измерять частоту изменения со-
стояния линии, а при недвоичном способе кодирования (ши-
роко применяемом в современных модемах) в канале связи
скорости передачи бит (бит/с) и изменения сигнала (бод)
могут отличаться в несколько раз (подробнее см. в прило-
жении А).

Количество бит данных может составлять 5, 6, 7 или 8 (5- и
6-битные форматы распространены незначительно). Коли-
чество стоп-бит может быть 1, 1,5 или 2 ("полтора бита"
означает только длительность стопового интервала).

Асинхронный обмен в PC реализуется с помощью СОМ-пор-
та
с использованием протокола RS-232C.

Синхронный режим передачи предполагает постоянную ак-
тивность канала связи. Посылка начинается с синхробайта,
за которым сразу же следует поток информационных бит.
Если у передатчика нет данных для передачи, он заполняет
паузу непрерывной посылкой байтов синхронизации. Оче-
видно, что при передаче больших массивов данных наклад-
ные расходы на синхронизацию в данном режиме будут ниже,
чем в асинхронном. Однако в синхронном режиме необхо-
дима внешняя синхронизация приемника с передатчиком,
поскольку даже малое отклонение частот приведет к ис-
кажению принимаемых данных. Внешняя синхронизация
возможна либо с помощью отдельной линии для передачи
сигнала синхронизации, либо с использованием самосин-

хронизирующего кодирования данных, при котором на сто-
роне приемника из принятого сигнала могут быть выделены
импульсы синхронизации. В любом случае синхронный ре-
жим требует дорогих линий связи или оконечного оборудо-
вания. Для PC существуют специальные платы - адаптеры
SDLC (дорогие), поддерживающие синхронный режим об-
мена. Они используются в основном для связи с большими
машинами (mainframes) IBM и мало распространены. Из
синхронных адаптеров в настоящее время применяются адап-
теры интерфейса V.35.

22.jpg
 

Рис. 2.2. Стандарты последовательного интерфейса

На физическом уровне последовательный интерфейс имеет
различные реализации, различающиеся способом передачи
электрических сигналов. Существует ряд родственных меж-
дународных стандартов: RS-232C, RS-423A, RS-422A и
RS-485. На рис. 2.2 приведены схемы соединения приемни-
ков и передатчиков, а также показаны ограничения на дли-
ну линии (L) и максимальную скорость передачи данных (V).

Несимметричные линии интерфейсов RS-232C и RS-423A
имеют самую низкую защищенность от синфазной помехи,
хотя дифференциальный вход приемника RS-423A несколь-

ко смягчает ситуацию. Лучшие параметры имеет двухточеч-
ный интерфейс RS-422A и его магистральный (шинный)
аналог RS-485, работающие на симметричных линиях свя-
зи. В них для передачи каждого сигнала используются диф-
ференциальные сигналы с отдельной (витой) парой прово-
дов.

В перечисленных стандартах сигнал представляется потен-
циалом.
Существуют последовательные интерфейсы, где
информативен ток, протекающий по общей цепи передат-
чик-приемник - "токовая петля" и MIDI. Для связи на ко-
роткие расстояния приняты стандарты беспроводной инф-
ракрасной связи. Наибольшее распространение в PC
получил простейший из перечисленных - стандарт RS-232C,
реализуемый СОМ-портами. В промышленной автоматике
широко применяется RS-485, а также RS-422A, встречаю-
щийся и в некоторых принтерах. Существуют преобразо-
ватели сигналов для согласования этих родственных ин-
терфейсов.

2.2. Интерфейс RS-232C

Интерфейс предназначен для подключения аппаратуры,
передающей или принимающей данные {О ОД - оконечное
оборудование данных или АПД - аппаратура передачи дан-
ных; DTE - Data Terminal Equipment), к оконечной аппарату-
ре каналов данных (АКД', DCE - Data Communication
Equipment).
В роли АПД может выступать компьютер, прин-
тер, плоттер и другое периферийное оборудование. В роли
АКД обычно выступает модем. Конечной целью подключе-
ния является соединение двух устройств АПД. Полная схе-
ма соединения приведена на рис. 2.3. Интерфейс позволяет
исключить канал удаленной связи вместе с парой устройств
АПД, соединив устройства непосредственно с помощью нуль-
модемного кабеля (рис. 2.4).

Стандарт описывает управляющие сигналы интерфейса, пе-
ресылку данных, электрический интерфейс и типы разъе-
мов. В стандарте предусмотрены асинхронный и синхрон-
ный режимы обмена, но СОМ-порты поддерживают только

асинхронный режим. Функционально RS-232C эквивалентен
стандарту МККТТ V.24/ V.28 и стыку С2, но они имеют раз-
личные названия сигналов.

23.jpg
 

Рис. 2.4. Соединение по RS-232C нуль-модемным кабелем

2.2.1. Электрический интерфейс

Стандарт RS-232C использует несимметричные передатчи-
ки и приемники - сигнал передается относительно общего
провода - схемной земли (симметричные дифференциаль-
ные сигналы используются в других интерфейсах - напри-
мер, RS-422). Интерфейс НЕ ОБЕСПЕЧИВАЕТ ГАЛЬВАНИ-
ЧЕСКОЙ РАЗВЯЗКИ
устройств. Логической единице
соответствует напряжение на входе приемника в диапазоне
-12...-3 В. Для линий управляющих сигналов это состояние
называется ON( "включено"), для линий последовательных
данных - MARK. Логическому нулю соответствует диапазон
+3...+12 В. Для линий управляющих сигналов состояние
называется OFF ("выключено"), а для линий последователь-
ных данных - SPACE. Диапазон -3...+3 В - зона нечувстви-
тельности, обусловливающая гистерезис приемника: состоя-
ние линии будет считаться измененным только после
пересечения порога (рис. 2.5). Уровни сигналов на выходах
передатчиков должны быть в диапазонах -12...-5 В и
+5...+12 В для представления единицы и нуля соответствен-
но. Разность потенциалов между схемными землями (SG)
соединяемых устройств должна быть менее 2 В, при более
высокой разности потенциалов возможно неверное воспри-
ятие сигналов.

Интерфейс предполагает наличие ЗАЩИТНОГО ЗАЗЕМЛЕ-
НИЯ
для соединяемых устройств, если они оба питаются от
сети переменного тока и имеют сетевые фильтры.

Подключение и отключение интерфейсных кабелей устройств
с автономным питанием должно производиться при отклю-
ченном питании.
Иначе разность невыровненных потенциа-
лов устройств в момент коммутации может оказаться при-
ложенной к выходным или входным (что опаснее) цепям
интерфейса и вывести из строя микросхемы.

24.jpg
 

Рис. 2.5. Прием сигналов RS-232C

Для интерфейса RS-232C специально выпускаются буфер-
ные микросхемы приемников (с гистерезисом и передатчи-
ком двуполярного сигнала). При несоблюдении правил за-
земления и коммутации они обычно являются первыми
жертвами "пиротехнических" эффектов. Иногда их устанав-
ливают в "кроватках", что облегчает замену. Цоколевка мик-
росхем формирователей сигналов RS-232C приведена на
рис. 2.6. Часто буферные схемы входят прямо в состав ин-
терфейсных БИС. Это удешевляет изделие, экономит место
на плате, но в случае аварии оборачивается крупными фи-
нансовыми потерями. Вывести из строя интерфейсные мик-
росхемы замыканием сигнальных цепей маловероятно: ток
короткого замыкания передатчиков обычно не превосходит
20 мА.

25.jpg
 

Рис. 2.6. Формирование сигналов RS-232C: а - приемник 1489
(А - вход RS-232, С - управление гистерезисом (ТТЛ), Y - выход
ТТЛ); б - передатчик 1488 (А, В - входы ТТЛ, Y - выход RS-232,
VDD = +12 В, VEE = -12 В); в - таблица состояния выходов
передатчика (*1В - логическая 1)

Стандарт RS-232C регламентирует типы применяемых разъе-
мов.

На аппаратуре АПД (в том числе на СОМ-портах) принято
устанавливать вилки (male - "папа") DB-25P или более ком-
пактный вариант - DB-9P. Девятиштырьковые разъемы не
имеют контактов для дополнительных сигналов, необходи-
мых для синхронного режима (в большинстве 25-штырько-
вых разъемов эти контакты не используются).

На аппаратуре АКД (модемах) устанавливают розетки
(female - "мама") DB-25S или DB-9S.

Это правило предполагает, что разъемы АКД могут подклю-
чаться к разъемам АПД непосредственно или через переход-
ные "прямые" кабели с розеткой и вилкой, у которых кон-
такты соединены "один в один". Переходные кабели могут
являться и переходниками с 9- на 25-штырьковые разъемы
(рис. 2.7).

26.jpg
 

Рис. 2.7. Кабели подключения модемов

Если аппаратура АПД соединяется без модемов, то разъемы
устройств (вилки) соединяются между собой нуль-модемным
кабелем
(Zero-modem или Z-modem), имеющим на обоих кон-
цах розетки, контакты которых соединяются перекрестно по
одной из схем, приведенных на рис. 2.8.

27.jpg
 

Рис. 2.8. Нуль-модемный кабель: а - минимальный, б - полный

Если на каком-либо устройстве АПД установлена розетка -
это почти стопроцентный признак того, что к другому уст-
ройству оно должно подключаться прямым кабелем, анало-
гичным кабелю подключения модема. Розетка устанавли-
вается обычно на тех устройствах, у которых удаленное
подключение через модем не предусмотрено.

В табл. 2.1 приведено назначение контактов разъемов СОМ-
портов (и любой другой аппаратуры АПД). Контакты разъема
DB-25S определены стандартом EIA/TIA-232-E, разъем
DB-9S описан стандартом EIA/ TIA-574. У модемов назва-
ние цепей и контактов такое же, но роли сигналов (вход-
выход) меняются на противоположные.

Подмножество сигналов RS-232C, относящихся к асинхрон-
ному режиму, рассмотрим с точки зрения СОМ-порта PC.
Следует помнить, что активному состоянию сигнала ("вклю-
чено") и логической единице передаваемых данных соответ-
ствует отрицательный потенциал (ниже -3 В) сигнала ин-
терфейса, а состоянию "выключено" и логическому нулю -
положительный
(выше +3 В). Назначение сигналов интер-
фейса приведено в табл. 2.2.

Обозначение
цепи

Контакт
разъема

Номе
кабе
разъ"

рпровс
ля выно
вмаРСи

W

СНОГО

контакта

Направление
I/O

внутр

   

RS-232

Стык 2

DB-25S

DB-9S

I*

2*

3*

4*

 

PG

101

7

5

(10)

(10)

(10)

1

-

SG

102

7

5

5

9

1

13

-

TD

103

2

3

3

5

3

3

0

RD

104

3

2

2

3

4

5

I

RTS

105

4

7

7

4

8

7

0

CTS

106

5

8

8

6

7

9

I

DSR

107

6

6

6

2

9

11

I

DTR

108/2

20

4

4

7

2

14

0

DCD

109

8

1

1

1

5

15

I

RI

125

22

9

9

8

/"

о

18

I


 

1*- шлейф 8-битных мультикарт.

2*- шлейф 16-битных мультикарт и портов на системных платах.
3* - вариант шлейфа портов на системных платах.
4*- широкий шлейф к 25-контактному разъему.

Сигнал

Назначение

PG

Protected Ground - защитная земля, соединяется с кор-
пусом устройства и экраном кабеля

SG

Signal Ground - сигнальная (схемная) земля, относи-
тельно которой действуют уровни сигналов

ТО

Transmit Data - последовательные данные - выход пе-
редатчика

RD

Receive Data - последовательные данные - вход при-
емника

RTS

Request To Send - выход запроса передачи данных:
состояние "включено" уведомляет модем о наличии у
терминала данных для передачи. В полудуплексном
режиме используется для управления направлением -
состояние "включено" служит сигналом модему
на переключение в режим передачи


 

Сигнал

Назначение

CTS

Clear To Send - вход разрешения терминалу передавать
данные. Состояние "выключено" аппаратно запрещает
передачу данных. Сигнал используется для аппарат-
ного управления потоками данных

DSR

Data Set Ready - вход сигнала готовности от аппа-
ратуры передачи данных (модем в рабочем режиме
подключен к каналу и закончил действия по согла-
сованию с аппаратурой на противоположном конце
канала)

DTP

Data Terminal Ready - выход сигнала готовности тер-
минала к обмену данными. Состояние "включено" под-
держивает коммутируемый канал в состоянии соеди-
нения

DCD

Data Carrier Detected - вход сигнала обнаружения несу-
щей удаленного модема

Rl

Ring Indicator - вход индикатора вызова (звонка).
В коммутируемом канале этим сигналом модем сигна-
лизирует о принятии вызова


 

2.2.2. Управление потоком данных

Для управления потоком данных (Flow Control) могут ис-
пользоваться два варианта протокола - аппаратный и про-
граммный. Иногда управление потоком путают с квитиро-
ванием, но это разные методы достижения одной цели -
согласования темпа передачи и приема. Квитирование
(Handshaking) подразумевает посылку уведомления о полу-
чении элемента, в то время как управление потоком предпо-
лагает посылку уведомления о невозможности последующе-
го приема данных.

Аппаратный протокол управления потоком RTS/CTS
(Hardware Flow Control) использует сигнал CTS, который поз-
воляет остановить передачу данных, если приемник не готов
к их приему (рис. 2.9). Передатчик "выпускает" очередной
байт только при включенной линии CTS. Байт, который уже
начал передаваться, задержать сигналом CTS невозможно (это
гарантирует целостность посылки). Аппаратный протокол
обеспечивает самую быструю реакцию передатчика на состо-
яние приемника. Микросхемы асинхронных приемопередат-
чиков имеют не менее двух регистров в приемной части -

сдвигающий, для приема очередной посылки, и хранящий, из
которого считывается принятый байт. Это позволяет реали-
зовать обмен по аппаратному протоколу без потери данных.

28.jpg
 

Рис. 2.9. Аппаратное управление потоком

Аппаратный протокол удобно использовать при подключе-
нии принтеров и плоттеров, если они его поддерживают
(рис. 2.10). При непосредственном (без модемов) соедине-
нии двух компьютеров аппаратный протокол требует пере-
крестного соединения линий RTS - CTS.

Если аппаратный протокол не используется, у передающего
терминала должно быть обеспечено состояние "включено"
на линии CTS перемычкой RTS - CTS. В противном случае
передатчик будет "молчать".

29.jpg
 

Рис. 2.10. Кабель подключения принтера с протоколом RTS-CTS

Программный протокол управления потоком XON/XOFF пред-
полагает наличие двунаправленного канала передачи данных.
Работает протокол следующим образом: если устройство,
принимающее данные, обнаруживает причины, по которым
не может их дальше принимать, оно по обратному последо-
вательному каналу посылает байт-символ XOFF (13h). Про-
тивоположное устройство, приняв этот символ, приостанав-
ливает передачу. Когда принимающее устройство снова
становится готовым к приему данных, оно посылает символ

XON (llh), приняв который противоположное устройство
возобновляет передачу. Время реакции передатчика на из-
менение состояния приемника по сравнению с аппаратным
протоколом увеличивается по крайней мере на время пере-
дачи символа (XON или XOFF) плюс время реакции програм-
мы передатчика на прием символа (рис. 2.11). Из этого сле-
дует, что данные без потерь могут приниматься только
приемником, имеющим дополнительный буфер принимае-
мых данных и сигнализирующим о неготовности заблаго-
временно (имея в буфере свободное место).

210.jpg
 

Рис. 2.11. Программное управление потоком XON/XOFF

Преимущество программного протокола заключается в от-
сутствии необходимости передачи управляющих сигналов
интерфейса - минимальный кабель для двустороннего об-
мена может иметь только 3 провода (см. рис. 2.8а). Недо-
статком, кроме требования наличия буфера и большего вре-
мени реакции (снижающего общую производительность
канала из-за ожидания сигнала XON), является сложность
реализации полнодуплексного режима обмена. В этом слу-
чае из потока принимаемых данных должны выделяться (и
обрабатываться) символы управления потоком, что ограни-
чивает набор передаваемых символов. Минимальный вари-
ант кабеля для подключения принтера (плоттера) с прото-
колом XON/XOFF приведен на рис. 2.12.

Кроме этих двух распространенных стандартных протоко-
лов, поддерживаемых и ПУ, и ОС, существуют и другие.
Некоторые плоттеры с последовательным интерфейсом ис-
пользуют программное управление, но посылают не стан-
дартные символы XON/XOFF, а слова (ASCII-строки). Такой
обмен на уровне системной поддержки протокола практи-
чески не поддерживается (эти плоттеры непосредственно

"разговаривают" с прикладной программой). Конечно, можно
написать драйвер СОМ-порта (перехватчик INT 14h), но не-
обходимость обработки в нем текстовых сообщений от уст-
ройства вывода обычно не вызывает восторга у системного
программиста. Кабель для подключения совпадает с приве-
денным на рис. 2.12.

211.jpg
 

Рис. 2.12. Кабель подключения принтера по протоколу XON/XOFF

2.3. Интерфейс "токовая петля"

Распространенным вариантом последовательного интерфей-
са является токовая петля. В ней электрическим сигналом
является не уровень напряжения относительно общего про-
вода, а ток в двухпроводной линии, соединяющей приемник
и передатчик. Логической единице (состоянию "включено")
соответствует протекание тока 20 мА, а логическому нулю -
отсутствие тока. Такое представление сигналов для описан-
ного формата асинхронной посылки позволяет обнаружить
обрьго линии - приемник заметит отсутствие стоп-бита (об-
рыв линии действует как постоянный логический нуль).

Токовая петля обычно предполагает гальваническую развяз-
ку
входных цепей приемника от схемы устройства. При этом
источником тока в петле является передатчик (этот вариант
называют активным передатчиком). Возможно и питание от
приемника (активный приемник), при этом выходной ключ
передатчика может быть также гальванически развязан с ос-
тальной схемой передатчика. Существуют упрощенные ва-
рианты без гальванической развязки, но это уже вырожден-
ный случай интерфейса.

Токовая петля с гальванической развязкой позволяет пере-
давать сигналы на расстояния до нескольких километров.
Расстояние определяется сопротивлением пары проводов и
уровнем помех. Поскольку интерфейс требует пары прово-
дов для каждого сигнала, обычно используют только два сиг-
нала интерфейса. В случае двунаправленного обмена при-
меняются только сигналы передаваемых и принимаемых
данных, а для управления потоком используется программ-
ный метод XON/XOFF. Если двунаправленный обмен не тре-
буется, используют одну линию данных, а для управления
потоком обратная линия задействуется для сигнала CTS (ап-
паратный протокол) или встречной линии данных (про-
граммный протокол).

Преобразовать сигналы RS-232C в токовую петлю можно с
помощью несложной схемы (рис. 2.13). Здесь принтер под-
ключается по токовой петле к СОМ-порту с аппаратным
управлением потоком. Для получения двуполярного сигна-
ла, требуемого для входных сигналов СОМ-порта, приме-
няется питание от интерфейса.

При надлежащем ПО одной токовой петлей можно обеспечить
двунаправленную полудуплексную связь двух устройств. При
этом каждый приемник "слышит" как сигналы передатчика
на противоположной стороне канала, так и сигналы своего
передатчика. Они расцениваются коммуникационными паке-
тами просто как эхо-сигнал. Для безошибочного приема пе-
редатчики должны работать поочередно.

212.jpg
 

Рис. 2.13. Подключение принтера с интерфейсом "токовая петля"
к СОМ-порту

2.4. Интерфейс MIDI

Цифровой интерфейс музыкальных инструментов MIDI
(Musical Instrument Digital Interface) является двунаправ-
ленным последовательным асинхронным интерфейсом с ча-
стотой передачи 31,25 Кбит/с. Этот интерфейс, разработан-
ный в 1983 году, стал фактическим стандартом для
сопряжения компьютеров, синтезаторов, записывающих и
воспроизводящих устройств, микшеров, устройств специаль-
ных эффектов и другой электромузыкальной техники.

В интерфейсе применяется токовая петля 10 мА (возможно
5 мА) с гальванической развязкой входной цепи. Это исклю-
чает связь "схемных земель" соединяемых устройств через
интерфейсный кабель, устраняя помехи, крайне нежелатель-
ные для звуковой техники. Снижению интерференционных
помех служит и выбор частоты передачи, которая совпадает
с одним из значений частот квантования, принятых в циф-
ровой звукозаписи.

Асинхронная посылка содержит старт-бит, 8 бит информации
и 1 стоп-бит, контроль четности отсутствует. Старший бит
посылки является признаком "команда/данные". Его нуле-
вое значение указывает на наличие семи бит данных в млад-
ших разрядах. При единичном значении биты [6:4] содер-
жат код команды, а биты [3:0] - номер канала. Команды могут
быть как адресованными конкретному каналу, так и широ-
ковещательными безадресными. К последней группе отно-
сятся команды старта, стопа и отметки времени, обеспечи-
вающие синхронизацию устройств (система синхронизации
MIDI Sync и МТС - MIDI Time Code).

Интерфейс определяет три типа портов: MIDI-In, MIDI-Out
и MIDI-Thru.

Входной порт MIDI-In представляет собой вход интерфейса
"токовая петля 10 мА", гальванически развязанного от при-
емника оптроном с быстродействием не хуже 2 мкс. Устрой-
ство отслеживает информационный поток на этом входе и
реагирует на адресованные ему команды и данные.

Выходной порт MIDI-Out представляет собой выход источ-
ника тока 10 мА, гальванически связанного со схемой уст-

ройства. Ограничительные резисторы предохраняют выход-
ные цепи от повреждения при замыкании на землю или ис-
точник 5 В. На выход подается информационный поток от
данного устройства. В потоке может содержаться и транс-
лированный входной поток.

Транзитный порт MIDI-Thru (не обязателен) служит для ре-
трансляции входного сигнала.

В качестве разъемов применяются 5-контактные разъемы DIN,
распространенные в бытовой звуковой аппаратуре. На всех
устройствах устанавливаются розетки, на кабелях - вилки. Все
соединительные кабели MIDI унифицированы (рис. 2.14).
Контакт 2 - экран кабеля - соединяется с общим проводом
только на стороне передатчика (на разъемах MIDI-Out и
MIDI-Thru).

213.jpg
 

Рис. 2.14. Соединительные кабели MIDI

В маркировке входов и выходов, указанной около разъемов,
бывают разночтения. Одни производители пишут "In" или
"Out" в соответствии с функцией разъема данного устрой-
ства (и это, правильно), тогда любой кабель соединяет "In" и
"Out". Другие считают, что подпись должна обозначать функ-
цию подключаемого устройства. Тогда кабель будет соединять
разъемы с обозначениями "In" - "In" и "Out" - "Out".

Интерфейс позволяет объединить группу до 16 устройств в
локальную сеть. Топология должна подчиняться правилу:

вход MIDI-In одного устройства должен подключаться к
выходу MIDI-Out или MIDI-Thru другого. При планирова-
нии MIDI-сети необходимо руководствоваться информа-
ционными потоками и связью устройств. Управляющие
устройства - клавиатуры, секвенсоры (в режиме воспроиз-

ведения), источники синхронизации - должны находиться
перед управляемыми. Если устройства нуждаются в двуна-
правленном обмене, они соединяются в кольцо. Возможно
применение специальных мультиплексоров, позволяющих
логически коммутировать несколько входных потоков в один
выходной. Вырожденным случаем кольца является двуна-
правленное соединение двух устройств. Несколько вариан-
тов соединения приведено на рис. 2.15.

В PC MIDI-порт имеется на большинстве звуковых адапте-
ров, его сигналы выведены на неиспользуемые контакты (12
и 15) разъема игрового адаптера. Для подключения устройств
MIDI требуется переходной адаптер, реализующий интер-
фейс "токовая петля". Переходной адаптер обычно встраи-
вается в специальный кабель, схема которого приведена на
рис. 2.16. Некоторые модели PC имеют встроенные адапте-
ры и стандартные 5-штырьковые разъемы MIDI.

214.jpg
 

Рис. 2.15. Варианты топологии сети MIDI: a - цепь,
б - кольцо с мультиплексором

В PC для интерфейса MIDI применяются порты, совмести-
мые с контроллером MPU-401 (Roland) в режиме UART.
В пространстве ввода/вывода MPU-401 занимает два смеж-
ных адреса MPЈ/ (обычно ЗЗОп)иМР[/+^:

^ Порт DATA (адрес MPU+0) - запись и считывание байт,
передаваемых и принимаемых по интерфейсу MIDI.

Порт STATUS/COMMAND (адрес MPU+1) - чтение со-
стояния / запись команд (запись - только для интеллек-
туального режима). В байте состояния определены сле-
дующие биты:

Бит 7 - DSR (Data Set Ready) - готовность (DSR=0) при-
нятых данных для чтения. Бит устанавливается в "I",
когда все принятые байты считаны из регистра данных.

Бит 6 - DRR (Data Read Ready) - готовность (DRR=0)
UART к записи в регистр данных или команд. Условие
готовности к записи не возникнет, если приемник имеет
непрочитанный байт данных.

215.jpg
 

Рис. 2.16. Вариант схемы кабеля-адаптера MIDI

На некоторых системных платах применяются БИС контрол-
леров интерфейсов, в которых UART, используемая для
СОМ-порта, конфигурированием через BIOS SETUP может
быть переведена в режим MIDI-порта.

 

 
 
 ПОЧТОЙ по России !
  Программаторы USB AVR PIC ARM 8051
, прошивание микроконтроллеров AVR PIC LPC ARM 8051 на заказ, изготовление "любительских" печатных плат по ЛУТ технологии, сборка электронных наборов - Мастер Кит и других, закупка для вас радио деталей электронных компонентов в "Тэрраэлектроника" + добавлю резисторы и конденсаторы + отправка почтой, изготовление электронных устройств для вас на заказ не дорого по вашим схемам или разработаю сам, другие услуги для радио электронщиков любителей, для мастеровых людей и хоббийщиков RC моделистов и для строящих Роботов, компоненты для самодельных станков с ЧПУ.                                      

      На сайте  -  "МК ПОЧТОЙ народ РУ"
 

 

 


Программатор для AVR на USB

           


Собран и проверен -
стоит всего 500 рублей  
в Москве, а по России пересылка почтой всего 100 рублей.

В подарок к программатору вы бесплатно получаете дополнительный микроконтроллер ATmega8 -16PU и уникальный DVD с материалами по электронике и библиотекой КНИГ !

Микроконтроллер ATmega8 прошитый для этого программатора можно приобрести отдельно  за 120 рублей + схема и и рисунок платы.

Программатор позволяет питать ваше устройство от USB.

Скачать документацию на программатор.

Обращайтесь к Семенову Михаилу.


 

 

 
Электронные компоненты ПОЧТОЙ из "Тэрраэлектроника" - мои услуги - это 350 рублей для заказов до 1500 руб. оплаты в Тэрру, 450 руб. для заказов на сумму 1500-3000 рублей и 650 рублей для заказов стоимостью более 3000 рублей.  После получения денег я выкупаю ваш заказ в "Тэрраэлектроника" или получаю если его оплатили вы сами и отправляю его вам почтой.  Укомплектую резисторами и конденсаторами.
 

 

 
Программатор отладчик для всех микроконтроллеров PIC на USB - PICkit2

Полный аналог собран мной и проверен в работе - только корпус прямоугольный без закруглений а разъемы такие же, кнопка КРАСНАЯ, все функции фирменного - всего 899 руб.


 

Микроконтроллер PIC18F2550 прошитый для самостоятельного изготовления программатора  PICkit2 можно приобрести отдельно за 239 рублей  + схема и и рисунок платы.

Прочитайте подробно о  PICkit2 и о его возможностях.

Средняя цена фирменного - 1550 рублей !

 


Программаторы изготовлены качественно, надежно
, высылаются полностью собранные, протестированные и готовые к работе. К программаторам получаемым по почте приложен бесплатно
DVD диск с драйверами для программаторов, ПО для разработки программ для AVR PIC ARM 8051  и огромным количеством документации от производителей МК и множеством книг по микроконтроллерам и электронике на русском языке, учебными материалами для начинающих.  
 

 

Вы можете приобрести уникальный DVD
всего за  199 рублей с пересылкой по России.

Скачайте содержание этого DVD и ознакомьтесь.

 

 

 
Прошивка, программирование микроконтроллеров AVR PIC ARM 8051 LPC на заказ  вашими прошивками. Вы присылаете прошивку - я проверяю, что файл читается программатором и сообщаю вам номер счета, вы переводите деньги, я покупаю нужный МК, прошиваю и отправляю вам.

Цена услуги со стоимостью услуги по покупке МК

25 рублей при прошивке 21 микроконтроллера и более

35 рублей за 11-20 МК
45 рублей за 5-10 МК
65 рублей за 2-4 МК
80 рублей за 1 МК

Для популярных AVR   ATmega8  ATmega16 ATmega169  ATtiny2313  AT90s2313  ATtiny13  и популярных PIC16F84  PIC18F452  PIC18F2550  PIC18c508  PIC16F628  PIC24FJ64GA002  dsPIC30F2010  dsPIC30F2020  dsPIC30F2012  стоимость прошивки одного МК  - 60 рублей.

 

 

Цены могут уменьшаться при комбинации ЛЮБЫХ услуг  например получение различных компонентов  в "Тэрраэлектроника" + прошивка AVR  PIC из этой закупки естественно будет стоить дешевле.
 


Есть прошивки ко многим конструкторам наборам МастерКит и других производителей - стоимость таких прошивок подлежит отдельной оплате. Спрашивайте какие прошивки вам нужны.

6) Я могу купить вам наборы электронные МастерКит и других производителей - собрать и настроить и отправить вам, цена услуги от 500 рублей.

7) Изготовление печатных плат по лазерно утюжной технологии - ЛУТ - по вашим рисункам для печати на лазерном принтере. 

8) Изготовить, спаять нужную вам схему, электронное устройство.

9) Разработать нужное вам устройство по КОНКРЕТНОМУ техническому заданию.

10) Разработать новую прошивку для любых электронных устройств или наборов МастерКит и аналогичных.

 

 

 

2.5. СОМ-порт

Последовательный интерфейс СОМ-порт (Communication
Port - коммуникационный порт) появился в первых моделях
IBM PC. Он был реализован на микросхеме асинхронного при-
емопередатчика Intel 8250. Порт имел поддержку BIOS
(/Л/Т 74/?), однако широко применялось (и применяется) взаи-
модействие с портом на уровне регистров. Поэтому во всех PC-
совместимых компьютерах для последовательного интерфейса
применяют микросхемы приемопередатчиков, совместимые с

i8250. В ряде отечественных PC-совместимых (почти) компь-
ютеров для последовательного интерфейса применялась мик-
росхема КР580ВВ51 - аналог 18251. Однако эта микросхема
является универсальным синхронно-асинхронным приемопе-
редатчиком (УСАПП или USART - Universal Asynchronous
Receiver-Transmitter). Совместимости с PC на уровне регист-
ров СОМ-порта такие компьютеры не имеют. Хорошо, если у
соответствующих компьютеров имеется "честный" драйвер
B/OS /Л/Т 14h, а не заглушка, возвращающая состояние модема
"всегда готов" и ничего не делающая. Совместимость на уров-
не регистров СОМ-порта считается необходимой. Многие раз-
работчики коммуникационных пакетов предлагают работу и
через B/OS /Л/Т 14h, однако на высоких скоростях это неэффек-
тивно. Говоря о СОМ-порте PC, по умолчанию будем подра-
зумевать совместимость регистровой модели с i8250 и реали-
зацию асинхронного интерфейса RS-232C.

2.5.1. Использование СОМ-портов

СОМ-порты чаще всего применяют для подключения
манипуляторов
(мышь, трекбол). В этом случае порт исполь-
зуется в режиме последовательного ввода; питание произво-
дится от интерфейса. Мышь с последовательным интерфей-
сом - Serial Mouse -может подключаться к любому исправному
порту. Для согласования разъемов порта и мыши возможно при-
менение переходника DB-9S-DB-25P или DB-25S-DB-9P. Для
мыши требуется прерывание, для порта СОМ1 - IRQ4, для
COM2 - IRQ3. Жесткая привязка номера IRQ к номеру порта
обусловлена свойствами драйверов. Каждое событие - пере-
мещение мыши или нажатие-отпускание кнопки - кодируется
двоичной посылкой по интерфейсу RS-232C. Применяется асин-
хронная передача; двуполярное питание обеспечивается от уп-
равляющих линий интерфейса (табл. 2.3).

Сигнал

Контакты

DB-9

DB-25

Data

2

3

GND

5

7

+V (питание)

4,7

4,20

-V (питание)

3

9


 

Две разновидности Serial Mouse - MS-Mouse и PC-Mouse
(Mouse Systems Mouse) - требуют соответствующих драй-
веров, многие мыши имеют переключатель MS/PC. Мышь
с "чужим" драйвером либо не отзывается, либо "скачет" за-
гадочным образом. Эти разновидности используют различ-
ные форматы посылок: при одинаковой скорости 1200 бит/с,
одном стоп-бите и отсутствии контроля четности Microsoft
Mouse использует 7 бит данных, a PC-Mouse - 8 бит. Мышь
посылает пакет при каждом изменении состояния - переме-
щении, нажатии или отпускании кнопки. Пакет, передавае-
мый MS-Mouse, состоит из трех байт (табл. 2.4). PC-Mouse
передает 5 байт (табл. 2.5). Здесь LB (Left Buttom), MB
(Middle Buttom) и RB (Right Buttom) означают состояние
левой, средней и правой кнопок, Х[7:0] и Y[7:0] - биты от-
носительного перемещения мыши с момента предыдущей
посылки по координатам Х и Y. Положительным значениям
соответствует перемещение по координате Х вправо, а по
координате Y вниз для MS-Mouse и вверх для PC-Mouse.
Отсюда становятся понятными беспорядочные перемещения
курсора на экране при несоответствии драйвера типу мыши.

Биты

D6

D5

D4

D3

02

01

00

1-й байт

1

LB

RB

Y7

Y6

Х7

Х6

2-й байт

0

Х5

Х4

ХЗ

Х2

Х1

хо

3-й байт

0

Y5

Y4

Y3

Y2

Y1

YO


 

Биты

07

Об

05

04

03

02

01

DO

1-й байт

1

о

о

0

о

LB

MB

RB

2-й байт

Х7

Х6

Х5

Х4

ХЗ

Х2

Х1

ХО

3-й байт

Y7

Y6

Y5

Y4

Y3

Y2

Y1

YO

4-й байт

Совпадает со 2-м байтом

5-й байт

Совпадает с 3-м байтом


 

Для подключения внешних модемов используется полный
(9-проводный) кабель АПД-АКД, схема которого приведена
на рис. 2.7. Этот же кабель используется для согласования

разъемов (по количеству контактов); возможно применение
переходников 9-25, предназначенных для мышей. Для ра-
боты коммуникационного ПО обычно требуется использо-
вание прерываний, но здесь есть свобода выбора номера (ад-
реса) порта и линии прерывания. Если предполагается работа
на скоростях 9600 бит/с и выше, то СОМ-порт должен быть
реализован на микросхеме UART 16550A или совместимой.
Возможности работы с использованием FIFO-буферов и об-
мена по каналам DMA зависят от коммуникационного ПО.

Для связи двух компьютеров, удаленных друг от друга на
небольшое расстояние, используют и непосредственное со-
единение их СОМ-портов нуль-модемным кабелем (рис. 2.8).
Использование программ типа Norton Commander или
Interink MS-DOS позволяет обмениваться файлами со ско-
ростью до 115,2 Кбит/с без применения аппаратных преры-
ваний. Это же соединение может использоваться и сетевым
пакетом Lantastic, предоставляющим более развитый сервис.

Подключение принтеров и плоттеров к СОМ-порту требу-
ет применения кабеля, соответствующего выбранному про-
токолу управления потоком: программному XON/XOFF или
аппаратному RTS/CTS. Схемы кабелей приведены на рис. 2.10
и 2.12. Аппаратный протокол предпочтительнее. Прерыва-
ния при выводе средствами DOS (командами COPY или
PRINT) не используются.

СОМ-порт используется для подключения электронных
ключей
(Security Devices), предназначенных для защиты от
нелицензированного использования ПО. Эти устройства мо-
гут быть как "прозрачными", позволяя воспользоваться тем
же портом для подключения периферии, так и полностью
занимающими порт.

СОМ-порт при наличии соответствующей программной под-
держки позволяет превратить PC в терминал, эмулируя си-
стему команд распространенных специализированных тер-
миналов (VT-52, VT-100 и т. д.). Простейший терминал
получается, если замкнуть друг на друга функции BIOS об-
служивания СОМ-порта (INT 14h), телетайпного вывода
(/Л/Т 10h) и клавиатурного ввода (INT 16h). Однако такой тер-
минал будет работать лишь на малых скоростях обмена (если,

конечно, его делать не на Pentium), поскольку функции BIOS
хоть и универсальны, но не слишком быстры.

Интерфейс RS-232C широко распространен в различных ПУ
и терминалах. СОМ-порт может использоваться и как дву-
направленный интерфейс, у которого имеется 3 программно-
управляемые выходные линии и 4 программно-читаемые
входные линии с двуполярными сигналами. Их использова-
ние определяется разработчиком. Существует, например, схе-
ма однобитного широтно-импульсного преобразователя, по-
зволяющего записывать звуковой сигнал на диск PC,
используя входную линию СОМ-порта. Воспроизведение
этой записи через обычный динамик PC позволяет передать
речь. В настоящее время, когда звуковая карта стала почти
обязательным устройством PC, это не впечатляет, но когда-
то такое решение было интересным.

СОМ-порт используют для беспроводных коммуникаций

с применением излучателей и приемников инфракрасного
диапазона - IR (Infra Red) Connection. Этот интерфейс по-
зволяет осуществлять связь между парой устройств, уда-
ленных на расстояние, достигающее нескольких метров. Раз-
личают инфракрасные системы низкой (до 115,2 Кбит/с),
средней (1,152 Мбит/с) и высокой (4 Мбит/с) скорости.
Низкоскоростные системы служат для обмена короткими
сообщениями, высокоскоростные - для обмена файлами
между компьютерами, подключения к компьютерной сети,
вывода на принтер, проекционный аппарат и т. п. Ожида-
ются более высокие скорости обмена, которые позволят
передавать "живое видео". В 1993 году создана ассоциация
разработчиков систем инфракрасной передачи данных IrDA
(Infrared Data Association), призванная обеспечить совмес-
тимость оборудования от различных производителей. В
настоящее время действует стандарт IrDA 1.1. Имеются соб-
ственные системы фирм Hewlett Packard - HP-SIR (Hewlett
Packard Slow Infra Red) - и Sharp - ASK (Amplitude Shifted
Keyed IR). Основные характеристики интерфейсов следу-
ющие:

т IrDA SIR (Slow Infra Red), HP-SIR - 9,6-115,2 Кбит/с;

^ IrDA MIR (Middle Infra Red) - 1,2 Мбит/с;

^ IrDA FIR (Fast Infra Red) - 4 Мбит/с;

^ Sharp ASK - 9,6-57,6 Кбит/с.

На скоростях до 115 200 бит/с для инфракрасной связи ис-
пользуются UART, совместимые с 16450/16550. В современ-
ных системных платах на использование инфракрасной связи
может конфигурироваться порт COM2. В этом случае на пе-
реднюю панель компьютера устанавливается внешний при-
емопередатчик - "инфракрасный глаз", который подключа-
ется к разъему IR-Connector системной платы.

На средних и высоких скоростях обмена применяются спе-
циализированные микросхемы, ориентированные на интен-
сивный программно-управляемый обмен или DMA с воз-
можностью прямого управления шиной.

Инфракрасные излучатели не создают помех в радиочастот-
ном диапазоне и обеспечивают конфиденциальность пере-
дачи. ИК-лучи не проходят через стены, поэтому зона при-
ема ограничивается небольшим легко контролируемым
пространством. Инфракрасная технология привлекательна
для связи портативных компьютеров со стационарными ком-
пьютерами или док-станциями. Инфракрасный интерфейс
имеют некоторые модели принтеров.

2.5.2. Микросхемы асинхронных приемопередатчиков

Преобразование параллельного кода в последовательный для
передачи и обратное преобразование при приеме данных вы-
полняют специализированные микросхемы UART (Universal
Asynchronous Receiver-Transmitter - универсальный асинхрон-
ный приемопередатчик). Эти же микросхемы формируют и
обрабатывают управляющие сигналы интерфейса. СОМ-пор-
ты IBM PC XT/AT базируются на микросхемах, совместимых
на уровне регистров с UART 18250 - 8250/16450/16550А. Это
семейство представляет собой усовершенствование начальной
модели, направленное на повышение быстродействия, сниже-
ние потребляемой мощности и загрузки процессора при ин-
тенсивном обмене. Отметим следующее:

т 8250 имеет ошибки (появление ложных прерываний),
учтенные в XT BIOS.

"; 8250А - ошибки исправлены, в результате чего потеряна
совместимость с BIOS. Работает в некоторых моделях AT,
но непригоден для скорости 9600 бит/с.

т 8250В - исправлены ошибки 8250 и 8250А, восстановле-
на ошибка в прерываниях - возвращена совместимость
с XT BIOS. Работает в AT под DOS (кроме скорости
9600 бит/с).

Микросхемы 8250х имеют невысокое быстродействие по об-
ращениям со стороны системной шины. Они не допускают
обращения к своим регистрам в смежных шинных циклах
процессора - для корректной работы с ними требуется вве-
дение программных задержек между обращениями CPU.

В компьютерах класса AT применяют микросхемы UART
следующих модификаций:

а? 16450 - быстродействующая версия 8250 для AT. Оши-
бок 8250 и полной совместимости с XT BIOS не имеет.
Требуется для работы OS/2 с СОМ-портами.

^ 16550 - развитие 16450. Может использовать канал
DMA для обмена данными. Имеет FIFO-буфер, но
некорректность его работы не позволяет им воспользо-
ваться.

т 16550А - имеет работающие 16-байтные FIFO-буферы
приема и передачи и возможность использования DMA.
Именно этот тип UART должен применяться в AT при
интенсивных обменах на скоростях 9600 бит/с и выше.
Совместимость с этой микросхемой обеспечивает боль-
шинство микросхем контроллеров портов ввода/вывода,
входящих в современные чипсеты.

Микросхемы UART 16550А с программной точки зрения
представляют собой набор регистров, доступ к которым
определяется адресом (смещением адреса регистра относи-
тельно базового адреса порта) и значением бита DLAB (бита 7
регистра LCR). В адресном пространстве микросхема зани-
мает 8 смежных адресов. Список регистров UART 16550А и
способы доступа к ним приведены в табл. 2.6. Микросхе-
мы 8250 отличаются отсутствием регистра FCR и всех воз-
можностей FIFO и DMA.

Доступ

Регистр

Чтение/запись
R/W

Смещение

DLAB

Имя

Название

Oh

0

THR

Transmit Holding Register

WO

Oh

0

RBR

Receiver Buffer Register

RO

Oh

1

DLL

Divisor Latch LSB

R/W

Ih

1

DLM

Divisor Latch MSB

R/W

Ih

0

IER

Interrupt Enable Register

R/W

2h

X

IIR

Interrupt Identification
Register

RO

2h

X

FCR

FIFO Control Register

WO

3h

X

LCR

Line Control Register

R/W

4h

X

MCR

Modem Control Register

R/W

5h

X

LSR

Line Status Register

R/W'

6h

X

MSR

Modem Status Register

R/W*

7h

X

SCR

Scratch Pad Register

R/W


 

* Некоторые биты допускают только чтение. Запись в регистр может
привести к сбою протокола.

THR - промежуточный регистр данных передатчика (только
для записи). Данные, записанные в регистр, будут пересланы
в выходной сдвигающий регистр (когда он будет свободен),
из которого поступят на выход при наличии разрешающего
сигнала CTS. Бит 0 передается (и принимается) первым. При
длине посылки менее 8 бит старшие биты игнорируются.

RBR - буферный регистр принимаемых данных (только для
чтения). Данные, принятые входным сдвигающим регистром,
помещаются в регистр RBR, откуда они могут быть считаны
процессором. Если к моменту окончания приема очередно-
го символа предыдущий не был считан из регистра, фикси-
руется ошибка переполнения. При длине посылки менее
8 бит старшие биты в регистре имеют нулевое значение.

DLL - регистр младшего байта делителя частоты.

DLM - регистр старшего байта делителя частоты. Делитель
определяется по формуле D==115200/V, где V - скорость пе-

редачи, бит/с. Входная частота синхронизации 1,8432 МГц
делится на заданный коэффициент, после чего получается
16-кратная частота передачи данных.

IER - регистр разрешения прерываний. Единичное значение
бита разрешает прерывание от соответствующего источника.

Назначение бит регистра IER:

^ Биты 7-4=0 - не используются.

^ Бит 3 - Mod IE-no изменению состояния модема (лю-
бой из линий CTS, DSR, Rl, DCD).

йа Бит 2 - RxL IE-no обрыву/ошибке линии.
^ Бит 1 - TxD IE - по завершении передачи.

ай Бит 0 - RxD IE-no приему символа (в режиме FIFO -
прерывание по тайм-ауту).

IIR - регистр идентификации (только для чтения) прерыва-
ний и признака режима FIFO. Для упрощения программного
анализа UART выстраивает внутренние запросы прерывания
по четырехуровневой системе приоритетов. Порядок приори-
тетов (по убыванию): состояние линии, прием символа, осво-
бождение регистра передатчика, состояние модема. При воз-
никновении условий прерывания UART указывает на
источник с высшим приоритетом до тех пор, пока он не будет
сброшен соответствующей операцией. Только после этого
будет выставлен запрос с указанием следующего источника.

Назначение бит регистра IIR:

^ Биты [7:6] - признак режима FIFO:

11 -режим FIFO 16550A,

10 - режим FIFO 16550,

00 - обычный.

^ Биты [5:4] - не используются.
:в? Бит 3 - прерывание по тайм-ауту (не в режиме FIFO).

т Биты [2:1] - причина прерывания с наивысшим приори-
тетом (в обычном, не FIFO-режиме):

11 - ошибка/обрыв линии; сброс - чтением регистра со-
стояния линии,

10 - принят символ; сброс - чтением данных,
01 - передан символ (регистр THR пуст); сброс - запи-
сью данных,

00 - изменение состояния модема; сброс - чтением ре-
гистра состояния модема.

^ Бит 0 - признак необслуженного запроса прерывания:

1 - нет запроса,
О -есть запрос.

Идентификация прерываний в режиме FIFO, IIR [3:1]:

^ Oil - ошибка/обрыв линии; сброс - чтением регистра
состояния линии.

^ 010 - принят символ; сброс - чтением регистра данных
приемника.

^ 110 - индикатор тайм-аута (за 4-кратный интервал вре-
мени символа не передано и не принято ни одного сим-
вола, хотя в буфере имеется по крайней мере один).
Сброс - чтением регистра данных приемника.

^ 001 - регистр THR пуст; сброс - записью данных.

^ 000 - изменение состояния модема (CTS, DSR, R1 или
DCD), сброс - чтением регистра MSR.

FCR - регистр управления FIFO (только для записи).
Назначение бит регистра FCR:

^ Биты [7:6] - ITL (Interrupt Trigger Level) - уровень запол-
нения FIFO-буфера, при котором вырабатывается пре-
рывание:

00-1 байт (по умолчанию),
01-4 байта,

10 -8байт,

11 -14 байт.

^ Биты [5:4] зарезервированы.
^ Бит 3 - разрешение операций DMA.

^ Бит 2 -RESETTF(Reset Transmitter FIFO) - сброс счетчи-
ка FIFO-передатчика (записью единицы; сдвигающий
регистр не сбрасывается).

^ Бит 1 - RESETRFfReset Receiver FIFO) - сброс счетчика
FIFO-приемника (записью единицы; сдвигающий регистр
не сбрасывается).

- Бит 0 - TRFIFOE(Transmit And Receive FIFO Enable) - раз-
решение (единицей) режима FIFO для передатчика и
приемника. При смене режима FIFO-буферы автомати-
чески очищаются.

LCR - регистр управления линией (настройки параметров
канала).

Назначения бит регистра LCR:

^ Бит 7 - DLAB (Divisor Latch Access Bit) - управление до-
ступом к делителю частоты.

^ Бит 6 - BRCON( Break Control) - формирование обрыва
линии (посылка нулей) при BRCON=i.

^ Бит 5 - STICPARf Sticky Parity) - принудительное форми-
рование бита паритета:

О - контрольный бит генерируется в соответствии с па-
ритетом выводимого символа,

1 - постоянное значение контрольного бита: при
lEVENPAR^i - нулевое, при EVENPAFf^O - единичное.

s® Бит 4 - EVENPARf Even Parity Select) - выбор типа конт-
роля: 0 - нечетность, 1 - четность.

т Бит 3 - PAREN( Parity Enable) - разрешение контрольно-
го бита:

1 - контрольный бит (паритет или постоянный) разре-
шен,

О - запрещен.
is Бит 2 - STOPS (Stop Bits) - количество стоп-бит:

0-1 стоп-бит,

1-2 стоп-бита (для 5-битного кода стоп-бит будет иметь
длину 1,5 бита).

т Биты [1:0] - SERIALDBf Serial Data Bits) - количество бит
данных:

00 -5 бит, 01 -6 бит, 10 -7 бит, 11 -8 бит.

MCR - регистр управления модемом.
Назначение бит регистра MCR-.

ш Биты [7:5]=0 - зарезервированы.

*§ Бит 4 - LME(Loopback Mode Enable) - разрешение режи-
ма диагностики:

О - нормальный режим,
1 - режим диагностики (см. ниже).

ж Бит 3 - 1Е( Interrupt Enable) - разрешение прерываний с
помощью внешнего выхода OUT2; в режиме диагностики
поступает на вход MSR. 7:

О - прерывания запрещены,
1 - разрешены.

^ Бит 2 - OUT1C(OUT1 Bit Control) - управление выходным
сигналом 1 (не используется); в режиме диагностики по-
ступает на вход MSR.6.

^ Бит 1 - RTSC (Request To Send Control) - управление

выходом RTS; в режиме диагностики поступает на вход

MSR.4:

1 - активен (-V),

О - пассивен (+V).
^ Бит 0 - DTRCfData Terminal Ready Control) - управление

выходом DTR; в режиме диагностики поступает на вход

MSR.5:

1 - активен (-V),

О - пассивен (+V).

LSR - регистр состояния линии (точнее, состояния приемо-
передатчика).

Назначение бит регистра LSR:

^ Бит 7 - FIFOE( FIFO Error Status) - ошибка принятых дан-
ных в режиме FIFO (буфер содержит хотя бы один сим-
вол, принятый с ошибкой формата, паритета или обры-
вом). В ne-FIFO-режиме всегда 0.

^ Бит 6 - TEMPT(Transmitter Empty Status) - регистр пере-
датчика пуст (нет данных для передачи ни в сдвиговом
регистре, ни в буферных, THR или FIFO).

?§ Бит 5 - THRE(Transmitter Holding Register Empty) - регистр
передатчика готов принять байт для передачи. В режиме
FIFO указывает на отсутствие символов в FIFO-буфере
передачи. Может являться источником прерывания.

^ Бит 4 - BD (Break Detected) - индикатор обрыва линии
(вход приемника находится в состоянии 0 не менее, чем
время посылки символа).

т Бит 3 - FE(Framing Error) - ошибка кадра (неверный стоп-
бит).

^ Бит 2 - РЕ (Parity Error) - ошибка контрольного бита (па-
ритета или фиксированного).

^ Бит 1 - ОЕ(Overrun Error) - переполнение (потеря сим-
вола). Если прием очередного символа начинается до того,
как предыдущий был выгружен из сдвигающего регист-
ра в буферный или FIFO, прежний символ в сдвигаю-
щем регистре теряется.

^ Бит 0 - DR(Receiver Data Ready) - принятые данные гото-
вы (в DHR или FIFO-буфере). Сброс - чтением приемника.

Индикаторы ошибок - биты [4:1] - сбрасываются после чте-
ния регистра LSR. В режиме FIFO признаки ошибок хранят-
ся в FIFO-буфере вместе с каждым символом. В регистре они
устанавливаются (и вызывают прерывание) в тот момент, когда
символ, принятый с ошибкой, находится на вершине FIFO
(первый в очереди на считывание). В случае обрыва линии в
FIFO заносится только один "обрывной" символ, и UART
ждет восстановления и последующего старт-бита.

MSR - регистр состояния модема.
Назначение бит регистра MSR:

т Бит 7 - DCD (Data Carrier Detect) - состояние линии DCD.
та Бит 6 - Rl(Ring Indicator) - состояние линии Rl.
ак Бит 5 - DSR(Data Set Ready) - состояние линии DSR.
ss Бит 4 - CTS(Clear To Send) - состояние линии CTS.

т Бит 3 - DDCD(Delta Data Carrier Detect) - изменение со-
стояния DCD.

ss Бит 2 - TERI(Trailing Edge OfRing Indicator) -спад огиба-
ющей Rl (окончание звонка).

^ Бит 1 - DDSR (Delta Data Set Ready) - изменение состоя-
ния DSR.

ss? Бит 0 - DCTS (Delta Clear To Send) - изменение состоя-
ния CTS.

Признаки изменения (биты [3:0]) сбрасываются по чтению
регистра.

SCFt - рабочий регистр (8 бит), на работу UART не влияет,
предназначен для временного хранения данных (в 8250 от-
сутствует).

В диагностическом режиме (при LME=i) внутри UART орга-
низуется внутренняя заглушка:

^ Выход передатчика переводится в состояние логической 1.
^ Вход приемника отключается.

^ Выход сдвигающего регистра передатчика логически со-
единяется со входом приемника.

^ Входы DSR, CTS, RI и DCD отключаются от входных линий
и внутренне управляются битами DTRC, RTSC, OUT1C, IE.

•^ Выходы управления модемом переводятся в пассивное
состояние (логический ноль).

Переданные данные в последовательном виде немедленно
принимаются, что позволяет проверять внутренний канал
данных порта (включая сдвигающие регистры) и отработку
прерываний, а также определять скорость работы UART.

2.5.3. Ресурсы и конфигурирование СОМ-портов

Компьютер может иметь до четырех последовательных пор-
тов СОМ 1-COM4 (для машин класса AT типично наличие
двух портов). СОМ-порты имеют внешние разъемы-вилки
DB25P
или DB9P, выведенные на заднюю панель компьюте-
ра (назначение выводов приведено в табл. 2.1).

СОМ-порты реализуются на микросхемах UART, совмести-
мых с семейством 18250. Они занимают в пространстве вво-
да/вывода по 8 смежных 8-битных регистров и могут рас-
полагаться по стандартным базовым адресам. Порты
вырабатывают аппаратные прерывания. Возможность разде-
ляемого использования одной линии запроса несколькими

портами (или ее разделения с другими устройствами) зави-
сит от реализации аппаратного подключения и ПО. При ис-
пользовании портов, установленных на шину ISA, разделяе-
мые прерывания обычно не работают.

Управление последовательным портом разделяется на два
этапа - предварительное конфигурирование (Setup) аппарат-
ных средств порта и текущее (оперативное) переключение
режимов работы прикладным или системным ПО. Конфи-
гурирование СОМ-порта зависит от его исполнения. Порт
на плате расширения конфигурируется джамперами на са-
мой плате. Порт на системной плате конфигурируется через
BIOS Setup.

Конфигурированию подлежат следующие параметры:

^ Базовый адрес, который может иметь значения 3F8h, 2F8h,
3E8h (ЗЕОЬ, 338h) или 2E8h (2EOh, 238h). При инициа-
лизации BIOS проверяет наличие портов по адресам
именно в этом порядке и присваивает обнаруженным
портам логические имена СОМ1, COM2, COM3 и COM4.
Для PS/2 стандартными для портов СОМЗ-СОМ8 явля-
ются адреса 3220h, 3228h, 4220h, 4228h, 5220h и 5228h
соответственно.

^ Используемая линия запроса прерывания: для СОМ1 и
COM3 обычно используется IRQ4 или IRQ11, для COM2
и COM4 - IRQ3 или IRQ 10. В принципе номер прерыва-
ния можно назначать в произвольных сочетаниях с ба-
зовым адресом (номером порта), но некоторые програм-
мы и драйверы (например, драйверы последовательной
мыши) настроены на стандартные сочетания. Каждому
порту, нуждающемуся в аппаратном прерывании, назна-
чают отдельную линию, не совпадающую с линиями за-
проса прерываний других устройств. Прерывания необ-
ходимы для портов, к которым подключаются устройства
ввода, UPS или модемы. При подключении принтера или
плоттера прерываниями пользуются только многозадач-
ные ОС (не всегда), и этот дефицитный ресурс PC мож-
но сэкономить. Также прерываниями обычно не пользу-
ются при связи двух компьютеров нуль-модемным
кабелем.

^ Канал DMA (для UART 16450/16550, расположенных на
системной плате) - разрешение использования и номер
канала DMA. Режим DMA при работе с СОМ-портами
используют редко.

Режим работы порта по умолчанию (2400 бит/с, 7 бит дан-
ных, 1 стоп-бит и контроль четности), заданный при ини-
циализации порта во время BIOS POST, может изменяться
в любой момент при настройке коммуникационных программ
или командой DOS MODECOMx: с указанием параметров.

2.5.4. Неисправности и тестирование СОМ-портов

Неполадки с СОМ-портами случаются (выявляются) при
установке новых портов или неудачном подключении внеш-
них устройств.

Проверка конфигурирования

Тестирование последовательных портов (как и параллельных)
начинают с проверки их опознавания системой. Список ад-
ресов
установленных портов обычно появляется в таблице,
выводимой BIOS перед загрузкой ОС. Список можно по-
смотреть с помощью тестовых программ или прямо в BIOS
Data AREA с помощью отладчика.

Если BIOS обнаруживает меньше портов, чем установлено
физически, вероятно, двум портам присвоен один адрес или
установлен нестандартный адрес какого-либо порта. Пробле-
мы могут возникать с адресами портов COM3 и COM4: не
все версии BIOS будут искать порты по альтернативным
адресам 3EOh, 338h, 2EOh и 238h; иногда не производится
поиск по адресам 3E8h и 2E8h. Нумерация найденных пор-
тов, отображаемая в заставке, может вводить в заблуждение:

если установлены два порта с адресами 3F8h и 3E8h, в за-
ставке они могут называться СОМ1 и COM2, и по этим име-
нам на них можно ссылаться. Однако те же порты в застав-
ке могут называться и СОМ 1 и COM3 (поскольку 3E8h
является штатным адресом для COM3), но попытка сослать-
ся на порт COM3 будет неудачной, поскольку в данном слу-
чае адрес 3E8h будет находиться в ячейке 0:402h BIOS Data
Area,
соответствующей порту COM2, а в ячейке порта COM3
(0:404h) будет нуль - признак отсутствия такового порта.

4 Зак.№530

"Объяснить" системе, где какой порт, можно вручную лю-
бым отладчиком, занеся правильные значения базовых ад-
ресов в ячейки BIOS Data Area (это придется делать каждый
раз после перезагрузки ОС перед использованием "потерян-
ного" порта). Существуют тестовые утилиты, позволяющие
находить порты (например, Port Finder).

Если двум портам назначен один и тот же адрес, тестовая
программа обнаружит ошибки порта только с использова-
нием внешней заглушки (External LoopBack). Программное
тестирование порта без заглушки не покажет ошибок,
поскольку при этом включается диагностический режим
(см. описание UART) и конфликтующие (по отдельности ис-
правные) порты будут работать параллельно, обеспечивая со-
впадение считываемой информации. В реальной жизни нор-
мальная работа конфликтующих портов невозможна.
Разбираться с конфликтом адресов удобно, последователь-
но устанавливая порты и наблюдая за адресами, появляю-
щимися в списке.

Если физически установлен только один порт и его не обна-
руживает BIOS, причины те же, что с LPT-портом: либо он
отключен при конфигурировании, либо вышел из строя.
Неисправность может устраниться при вынимании/вставке
платы адаптера в слот системной шины.

При работе с СОМ-портом задействуются соответствующие
аппаратные прерывания - их используют при подключении
модема, мыши и других устройств ввода. Неработоспособ-
ность этих устройств может быть вызвана некорректной на-
стройкой запроса прерывания. Здесь возможны как конф-
ликты с другими устройствами, так и несоответствие номера
прерывания адресу порта.

Функциональное тестирование

В первом приближении СОМ-порт можно проверить диаг-
ностической программой (Checkit) без использования за-
глушек. Этот режим тестирования проверяет микросхему
UART (внутренний диагностический режим) и вырабатыва-
ние прерываний, но не входные и выходные буферные мик-
росхемы, которые являются более частыми источниками не-
приятностей. Если тест не проходит, причину следует искать

или в конфликте адресов/прерываний, или в самой микро-
схеме UART.

Для более достоверного тестирования рекомендуется исполь-
зовать внешнюю заглушку, подключаемую к разъему СОМ-
порта (рис. 2.17). В отличие от LPT-порта у СОМ-порта
количество входных сигналов превышает количество выход-
ных, что позволяет выполнить полную проверку всех цепей.
Заглушка соединяет выход приемника со входом передат-
чика. Обязательная для всех схем заглушек перемычка RTS-
CTS позволяет работать передатчику - без нее символы не
смогут передаваться. Выходной сигнал DTR обычно исполь-
зуют для проверки входных линий DSR, DCD и RI.

216.jpg
 

Рис. 2.17. Заглушка для проверки СОМ-портов (LoopBack)

Если тест с внешней заглушкой не проходит, причину сле-
дует искать во внешних буферах, их питании или в шлей-
фах подключения внешних разъемов. Здесь может помочь
осциллограф или вольтметр. Последовательность проверки
может быть следующей:

1. Проверить наличие двуполярного питания выходных схем
передатчиков (этот шаг логически первый, но поскольку
он технически самый сложный, его можно отложить на
крайний случай, когда появится желание заменить бу-
ферные микросхемы).

2. Проверить напряжение на выходах TD, RTS и DTR: после
аппаратного сброса на выходе TD должен быть отри-
цательный потенциал около -12 В (по крайней мере
ниже -5 В), а на выходах RTS и DTR - такой же положи-
тельный. Если этих потенциалов нет, возможна ошибка

подключения разъема к плате через шлейф. Распростра-
ненные варианты:

ш шлейф не подключен;

^ шлейф подключен неправильно (разъем перевернут
или вставлен со смещением);

^ раскладка шлейфа не соответствует разъему платы.

Первые два варианта проверяются при внимательном
осмотре, третий же может потребовать некоторых усилий.
В табл. 2.1 приведены три варианта раскладки 10-проводного
шлейфа разъема СОМ-порта, известных автору; для СОМ-
портов на системных платах возможно существование и
других. Теоретически шлейф должен поставляться в соот-
ветствии с разъемом платы, на которой расположен порт.

Если дело в ошибочной раскладке, то эти три выходных
сигнала удастся обнаружить на других контактах разъе-
мов (на входных контактах потенциал совсем небольшой).
Если эти сигналы обнаружить не удалось, очевидно, вы-
шли из строя буферные формирователи.

3. Соединив контакты линий RTS и CTS (или установив за-
глушку), следует попытаться вывести небольшой файл на
СОМ-порт (например, командой COPYC:\AUTOEXEC. BAT
СОМ
7;). С исправным портом эта команда успешно вы-
полнится за несколько секунд с сообщением об успеш-
ном копировании. При этом потенциалы на выходах RTS
и DTR должны измениться на отрицательные, а на выхо-
де TD должна появиться пачка двуполярных импульсов
с амплитудой более 5 В. Если потенциалы RTS и DTR не
изменились, ошибка в буферных формирователях. Если
на выходе RTS (и входе CTS) появился отрицательный
потенциал, а команда COPY завершается с ошибкой, ско-
рее всего, вышел из строя приемник линии CTS (или
опять-таки ошибка в шлейфе). Если команда COPY ус-
пешно проходит, а изменения на выходе TD не обнару-
живаются (их можно увидеть стрелочным вольтметром,
но оценить амплитуду импульсов не удастся), виноват
буферный передатчик сигнала TD.

Замена микросхем приемников и передатчиков существен-
но облегчается, если они установлены в "кроватки". Перед
заменой следует с помощью осциллографа или вольтметра
удостовериться в неисправности конкретной микросхемы.
Расположение выводов микросхем приведено на рис. 2.6.

Если буферные элементы включены в состав интерфейсной
БИС (что теперь весьма распространено), то такой порт ре-
монту не подлежит (по крайней мере в обычных условиях).
Неисправный СОМ-порт, установленный на системной плате,
можно попытаться отключить в BIOS SETUP, но порт мог
сгореть и вместе со схемой своего отключения - тогда он
останется "живым мертвецом" в карте портов ввода/вывода
и прерываний. Иногда он полностью выводит из строя сис-
темную плату.

Источниками ошибок могут являться разъемы и кабели.
В разъемах встречаются плохие контакты, а кабели кроме воз-
можных обрывов могут иметь плохие частотные характери-
стики. Частотные свойства кабелей обычно сказываются при
большой длине (десятки метров) на высоких скоростях об-
мена (56 или 115 Кбит/с). При необходимости использова-
ния длинных кабелей на высоких скоростях сигнальные про-
вода данньк должны быть перевиты с отдельными проводами
"схемной земли".

Питание от интерфейса, или Почему может не работать мышь

При подключении к СОМ-порту устройств с небольшим энер-
гопотреблением возникает соблазн использования питания от
выходных линий интерфейса. Если линии управления DTR и
RTS не используются по прямому назначению, их можно за-
действовать как питающие с напряжением около 12 В. Ток
короткого замыкания на "схемную землю" ограничен буфер-
ной микросхемой передатчика на уровне 20 мА. При иници-
ализации порта эти линии переходят в состояние "выключе-
но", то есть вырабатывают положительное напряжение. Линия
TD в покое находится в состоянии логической единицы, так
что на выходе вырабатывается отрицательное напряжение.
Потенциалами линий можно управлять через регистры СОМ-
порта (выход TD вырабатывает положительное напряжение,
если установить бит BRCON).

Двуполярным питанием от линий интерфейса (+V от DTR и
RTS, -V от TD) пользуются все манипуляторы, подключае-
мые к СОМ-портам. Зная это, в случае неработоспособнос-
ти мыши с данным портом следует проверить напряжения
на соответствующих контактах разъема. Бывает, что с конк-
ретным портом не работает только конкретная мышь (мо-
дель или экземпляр), хотя другие мыши с этим портом и
эти же мыши с другими портами работают нормально. Здесь
дело может быть в уровнях напряжений. Стандарт требует
от порта выходного напряжения не менее 5 В (абсолютного
значения), и, если данный порт обеспечивает только этот
минимум, некоторым мышам не хватит мощности для пита-
ния светодиодов (главных потребителей энергии).

Порт получает двуполярное питание через системную плату
от блока питания компьютера. Отсутствие на выходе блока
питания напряжения +12 В обычно обнаружится по нера-
ботоспособности дисков. Отсутствие напряжения -12 В "за-
метят" только устройства, подключенные к СОМ-портам.
Блок питания теоретически контролирует наличие этих на-
пряжений на своем выходе (сообщая о неполадках сигна-
лом Power Good, вызывающим аппаратный сброс). Встреча-
ются упрощенные схемы блоков питания, у которых
контролируются не все напряжения. Кроме того, возможны
плохие контакты в разъеме подключения питания к систем-
ной плате.

2.5.5. Функции BIOS для СОМ-портов

В процессе начального тестирования POST BIOS проверяет
наличие последовательных портов (регистров UART 8250 или
совместимых) по стандартным адресам и помещает базовые
адреса обнаруженных портов в ячейки BIOS Data
Area
0:0400, 0402, 0404, 0406. Эти ячейки хранят адреса пор-
тов с логическими именами СОМ 1-COM4. Нулевое значе-
ние адреса является признаком отсутствия порта с данным
номером. В ячейки 0:047С, 047D, 047Е, 047F заносятся кон-
станты, задающие тайм-аут для портов.

Обнаруженные порты инициализируются на скорость обме-
на 2400 бит/с, 7 бит данных с контролем на четность

(even), 1 стоп-бит. Управляющие сигналы интерфейса DTR
и RTS переводятся в исходное состояние ("выключено" -
положительное напряжение).

Порты поддерживаются сервисом BIOS INT 14h, который обес-
печивает следующие функции:

^ ООЬ - инициализация (установка скорости обмена и фор-
мата посылок, заданных регистром AL; запрет источни-
ков прерываний). На сигналы DTR и RTS влияния не ока-
зывает (после аппаратного сброса они пассивны).

^ Olh - вывод символа из регистра AL (без аппаратных пре-
рываний). Активируются сигналы DTR и RTS, и после
освобождения регистра THR в него помещается выводи-
мый символ. Если за заданное время регистр не освобож-
дается, фиксируется ошибка тайм-аута и функция завер-
шается.

^ 02h - ввод символа (без аппаратных прерываний). Акти-
вируется только сигнал DTR (RTS переходит в пассивное
состояние), и ожидается готовность принятых данных,
принятый символ помещается в регистр AL. Если за за-
данное время данные не получены, функция завершает-
ся с ошибкой тайм-аута.

^ 03h - опрос состояния модема и линии (чтение регист-
ров MSR и LSR). Эту гарантированно быструю функцию
обычно вызывают перед функциями ввода/вывода во из-
бежание риска ожидания тайм-аута.

При вызове INT 14h номер функции задается в регистре АН,
номер порта (0-3) - в регистре DX(0 - СОМ 1, 1 - COM2...).
При возврате из функций 0,1 и 3 регистр АН содержит байт
состояния линии
(регистр LSR), AL - байт состояния моде-
ма (MSR).
При возврате из функции 2 нулевое значение
бита 7 регистра АН указывает на наличие принятого симво-
ла в регистре AL', ненулевое значение бита 7 - на ошибку
приема, которую можно уточнить функцией 3.

Формат байта состояния линии (регистр АН):

^ Бит 7 - ошибка тайм-аута (после вызова функции 2 -
признак любой ошибки).

^ Бит 6 - регистр сдвига передатчика пуст (пауза передачи).

^ Бит 5 - промежуточный регистр передатчика пуст (го-
тов принять символ для передачи).

SB Бит 4 - обнаружен обрыв линии.

вя Бит 3 - ошибка кадра (отсутствие стоп-бита).

а? Бит 2 - ошибка паритета принятого символа.

ш Бит 1 - переполнение (потеря символа).

^ Бит 0 - регистр данных содержит принятый символ.

Формат байта состояния модема (регистр AL):

^ Бит 7 - состояние линии DCD.

^ Бит 6 - состояние линии RI.

?й Бит 5 - состояние линии DSR.

si Бит 4 - состояние линии CTS.

т Бит 3 - изменение состояния DCD.

^ Бит 2 - изменение огибающей RI.

as Бит 1 - изменение состояния DSR.

ss Бит 0 - изменение состояния CTS.
Формат регистра AL при инициализации:

^ Биты [7:5] - скорость обмена:

000-110; 010-300; 100-1200; 110-4800,

001-150; 011-600; 101-2400; 111-9600 бит/с.
^ Биты [4:3] - контроль паритета:

01 - число единиц нечетное,

11 -четное,

00 и 10 - без контроля.

^ Бит 2 - количество стоп-бит: 0-1 бит, 1-2 бита
(на скорости 110 бит/с - 1,5 стоп-бита).

т Биты [1:0] - длина посылки: 00-5 бит, 01-6 бит,
10-7 бит, 11-8 бит.

2.5.6. СОМ-порт и РпР

Современные ПУ, подключаемые к СОМ-порту, могут под-
держивать спецификацию РпР. Основная задача ОС заклю-
чается в идентификации подключенного устройства, для чего
разработан несложный протокол, реализуемый на любых
СОМ-портах чисто программным способом (рис. 2.18):

217.jpg
 

Рис. 2.18. Запрос идентификатора устройства РпР

1. Порт инициализируется с состоянием линий DTR=OA/,
RTS=OFF, TXD=Mark - состояние покоя (Idle).

2. Некоторое время (0,2 с) ожидается появление сигнала
DSR, которое указало бы на наличие устройства, подклю-
ченного к порту. В простейшем случае устройство имеет
на разъеме перемычку DTR-DSR, обеспечивающую ука-
занный ответ. Если устройство обнаружено, выполняют-
ся манипуляции управляющими сигналами DTR и RTS
для получения информации от устройства. Если ответ не
получен, ОС, поддерживающая динамическое реконфи-
гурирование, периодически опрашивает состояние порта
для обнаружения новых устройств.

3. Порт программируется на режим 1200 бит/с, 7 бит дан-
ных, без паритета, 1 стоп-бит, и на 0,2 с снимается сиг-
нал DTR. После этого устанавливается DTR=1, а еще
через 0,2 с устанавливается и RTS=1.

4. В течение 0,2 с ожидается приход первого символа от ус-
тройства. По приходе символа начинается прием иден-
тификатора (см. ниже). Если за это время символ не
пришел (рис. 2.18), выполняется вторая попытка опроса
(см. п. 5), несколько отличающаяся от первой.

5. На 0,2 с снимаются оба сигнала (DTR=0 и RTS=0), после
чего они оба устанавливаются (DTR=1 и RTS==1).

6. В течение 0,2 с ожидается приход первого символа от ус-
тройства, по приходе символа начинается прием иденти-
фикатора (см. ниже). Если за это время символ не пришел,
то в зависимости от состояния сигнала DSR переходят к
проверке отключения Verify Disconnect (при DSR^O) или
в дежурное состояние Connect Idle (при DSR=1).

7. В дежурном состоянии Connect Idle устанавливается
DTR=1, RTS=0, порт программируется на режим 300 бит/с,
7 бит данных, без паритета, 1 стоп-бит. Если в этом со-
стоянии обнаружится DSR=0, ОС следует уведомить об
отключении устройства.

Посимвольный прием идентификатора устройства имеет
ограничения по тайм-ауту в 0,2 с на символ, а также общее
ограничение в 2,2 с, позволяющее принять строку длиной до
256 символов. Строка идентификатора РпР должна иметь мар-
керы начала (28h или 08h) и конца (29h или 09h), между ко-
торыми располагается тело идентификатора в стандарти-
зованном формате. Перед маркером начала может находиться
до 16 символов, не относящихся к идентификатору РпР. Если
за первые 0,2 с ожидания символа (шаг 4 или 6) маркер на-
чала не пришел, или же сработал тайм-аут, а маркер конца не
получен, или же какой-либо символ принят с ошибкой, про-
исходит переход в состояние Connect Idle. Если получена кор-
ректная строка идентификатора, она передается ОС.

Для проверки отключения (Verify Disconnect) устанавливает-
ся DTR=1, RTS=0 и через 5 с проверяется состояние сигнала
DSR. При DSR=1 происходит переход в состояние Connect
Idle
(см. п. 7), при DSR^O происходит переход в состояние
Disconnect Idle, в котором система может периодически
опрашивать сигнал DSR для обнаружения подключения уст-
ройства.

Описанный механизм разрабатывался фирмой Microsoft с
учетом совместимости с не-РпР-устройствами - невозмож-
ность их вывода из строя и устойчивость системы к сообще-
ниям, не являющимся РпР-идентификаторами. Например,
обычная Microsoft Mouse при включении питания от интер-
фейса ответит ASCII-символом "М" (трехкнопочная - стро-
кой "МЗ").

 

Параллельные интерфейсы

Параллельные интерфейсы характеризуются тем, что в них
для передачи бит в слове используются отдельные сигналь-
ные линии, и биты передаются одновременно. Параллельные
интерфейсы используют логические уровни ТТЛ (транзистор-
но-транзисторной логики), что ограничивает длину кабеля из-
за невысокой помехозащищенности ТТЛ-интерфейса. Гальва-
ническая развязка отсутствует. Параллельные интерфейсы
используют для подключения принтеров. Передача данных
может быть как однонаправленной (Centronics), так и двунап-
равленной (Bitronics). Иногда параллельный интерфейс ис-
пользуют для связи между двумя компьютерами - получает-
ся сеть, "сделанная на коленке" (LapLink). Ниже будут
рассмотрены протоколы интерфейсов Centronics, стандарт
IEEE 1284, а также реализующие их порты PC.

1.1. Интерфейс Centronics и LPT-порт

Для подключения принтера по интерфейсу Centronics в PC
был введен порт параллельного интерфейса - так возникло
название LPT-порт (Line PrinTer - построчный принтер).
Хотя сейчас через этот порт подключаются не только по-
строчные принтеры, название "LPT" осталось.

1.1.1. Интерфейс Centronics

Понятие Centronics относится как к набору сигналов и про-
токолу взаимодействия, так и к 36-контактному разъему на
принтерах. Назначение сигналов приведено в табл. 1.1, а вре-
менные диаграммы обмена с принтером - на рис. 1.1.

Интерфейс Centronics поддерживается принтерами с парал-
лельным интерфейсом. Его отечественным аналогом явля-
ется интерфейс ИРПР-М.

Традиционный порт SPP (Standard Parallel Port) является
однонаправленным портом, через который программно реа-
лизуется протокол обмена Centronics. Порт вырабатывает

аппаратное прерывание по импульсу на входе Ack#. Сигна-
лы порта выводятся на разъем DB-25S (розетка), установ-
ленный непосредственно на плате адаптера (или системной
плате) или соединяемый с ней плоским шлейфом. Название
и назначение сигналов разъема порта (табл. 1.2) соответству-
ют интерфейсу Centronics.

Сигнал

I/O*

Контакт

Назначение

Strobe"

I

1

Строб данных. Данные фиксируют-
ся по низкому уровню сигнала

Data [0:7]

I

2-9

Линии данных. Data 0
(контакт 2) - младший бит

Ack#

0

10

Acknowledge - импульс подтверж-
дения приема байта (запрос на
прием следующего). Может исполь-
зоваться для формирования
запроса прерывания

Busy

0

11

Занято. Прием данных возможен
только при низком уровне сигнала

PaperEnd

о

12

Высокий уровень сигнализирует
о конце бумаги

Select

о

13

Сигнализирует о включении прин-
тера (обьгано в принтере соединя-
ется резистором с цепью +5 В)

AutoLF#

I

14

Автоматический перевод строки.
При низком уровне принтер,
получив символ CR (Carriage Re-
turn - возврат каретки), автомати-
чески выполняет и функцию Lf
(Line Feed - перевод строки)

Error"

о

32

Ошибка: конец бумаги, состояние
OFF-Line или внутренняя ошибка
принтера

lnit#

I

31

Инициализация (сброс в режим
параметров умолчания, возврат
к началу строки)

Select ln#

 

36

Выбор принтера (низким уровнем).
При высоком уровне принтер не
воспринимает остальные сигналы
интерфейса

GND

-

19-30, 33

Общий провод интерфейса


 

11.jpg
 

Рис. 1.1. Передача данных по протоколу Centronics

Контакт
DB-25S

Номер
провода
в кабеле

Назначение

I/O*

Reg. Bit**

Сигнал

1

1

0/1

CR.O\

Strobe"

2

3

0(1)

DR.0

DataO

3

5

0(1)

DR.1

Data 1

4

7

0(1)

DR.2

Data 2

5

9

0(1)

DR.3

Data3

6

11

0(1)

DR.4

Data 4

7

13

0(1)

DR.5

Data 5

8

15

0(1)

DR.6

Data 6

9

17

0(1)

DR.7

Data 7

10

19

1***

SR.6

Ack#

11

21

1

SR.A

Busy

12

23

1

SR.5

PaperEnd

13

25

1

SR.4

Select

14

2

0/1

CR.1\

Auto LF#

15

4

1

SR.3

Error*

16

6

0/1

CR.2

lnit#

17

8

0/1

CR.3\

Select ln#

18-25

10, 12,14,
16, 18.20,
22, 24, 26

-

^

~"


 

* I/O задает направление передачи (вход/выход) сигнала порта.
0/1 обозначает выходные линии, состояние которых считыва-
ется при чтении из портов вывода; (I) - выходные линии, со-
стояние которых может быть считано только при особых условиях
(см. ниже).

** Символом "\" отмечены инвертированные сигналы (1 в регистре
соответствует низкому уровню линии).

*** Вход Ack# соединен резистором (10 кОм) с питанием +5 В.

1.1.2. Традиционный LPT-порт

Адаптер параллельного интерфейса представляет собой на-
бор регистров, расположенных в пространстве ввода/вы-
вода. Регистры порта адресуются относительно базового
адреса порта, стандартными значениями которого явля-
ются 3BCh, 378h и 278h. Порт может использовать линию
запроса аппаратного прерывания, обычно IRQ7 или IRQ5.
Порт имеет внешнюю 8-битную шину данных, 5-битную
шину сигналов состояния и 4-битную шину управляющих
сигналов,

BIOS поддерживает до четырех (иногда до трех) LPT-пор-
тов (LPT1-LPT4) своим сервисом - прерыванием INT 17h,
обеспечивающим через них связь с принтером по интерфей-
су Centronics. Этим сервисом BIOS осуществляет вывод сим-
вола (по опросу готовности, не используя аппаратных пре-
рываний), инициализацию интерфейса и принтера, а также
опрос состояния принтера.

Стандартный порт имеет три 8-битных регистра, располо-
женных по соседним адресам в пространстве ввода/вывода,
начиная с базового адреса порта (BASE).

Data Register (DR) - регистр данных, адрес=ВЛ5Е. Данные,
записанные в этот порт, выводятся на выходные линии ин-
терфейса. Данные, считанные из этого регистра, в зависимо-
сти от схемотехники адаптера соответствуют либо ранее за-
писанным данным, либо сигналам на тех же линиях, что не
всегда одно и то же. Если в порт записать байт с единицами
во всех разрядах, а на выходные линии интерфейса через
микросхемы с выходом типа "открытый коллектор" подать
какой-либо код (или соединить ключами какие-то линии со
схемной землей), то этот код может быть считан из того же
регистра данных. Таким образом на многих старых моделях
адаптеров можно реализовать порт ввода дискретных сигна-
лов, однако выходным цепям передатчика информации при-
дется "бороться" с выходным током логической единицы
выходных буферов адаптера. Схемотехника ТТЛ такие ре-
шения не запрещает, но если внешнее устройство выполне-
но на микросхемах КМОП, их мощности может не хватить
для "победы" в этом шинном конфликте. Однако современ-

ные адаптеры часто имеют в выходной цепи согласующий
резистор с сопротивлением до 50 Ом. Выходной ток коротко-
го замыкания выхода на землю обычно не превышает 30 мА.
Простой расчет показывает, что в случае короткого замыка-
ния контакта разъема на землю при выводе "единицы" на
этом резисторе падает напряжение 1,5 В, что входной схе-
мой приемника будет воспринято как "единица". Так что
такой способ ввода не будет работать на всех компьютерах.

На некоторых адаптерах портов выходной буфер отключа-
ется перемычкой на плате. Тогда порт превращается в обык-
новенный порт ввода.

Status Register (SR) - регистр состояния; представляет со-
бой 5-битный порт ввода сигналов состояния принтера (биты
SR.4-SR.7), адрес==8ЛЗЕ+7. Бит SR. 7 инвертируется - низ-
кому уровню сигнала соответствует единичное значение бита
в регистре, и наоборот.

Назначение бит регистра состояния (в скобках даны номера
контактов разъема):

^ SR. 7 - Busy - инверсные отображения состояния линии
Busy (11): при низком уровне на линии устанавливается
единичное значения бита - разрешение на вывод очеред-
ного байта.

^ SR.6 - Ack (Acknowledge) - отображения состояния ли-
нии Ack# (10).

^ SR.5 - РЕ (Paper End) - отображения состояния линии
Paper End (12). Единичное значение соответствует высо-
кому уровню линии - сигналу о конце бумаги в принтере.

ш SR.4 - Select - отображения состояния линии Select (13).
Единичное значение соответствует высокому уровню ли-
нии - сигналу о включении принтера.

s8 SR.3 - Error - отображения состояния линии Error (15).
Нулевое значение соответствует низкому уровню линии -
сигналу о любой ошибке принтера.

®? SR.2 - PIRQ - флаг прерывания по сигналу Ackft (толь-
ко для порта PS/2). Бит обнуляется, если сигнал Ack#
вызвал аппаратное прерывание. Единичное значение ус-

танавливается по аппаратному сбросу и после чтения ре-
гистра состояния.

^ SR[1:OJ - зарезервированы.

Control Register (CR) - регистр управления, wpec^BASE+2.
Как и регистр данных, этот 4-битный порт вывода допуска-
ет запись и чтение (биты 0-3), но его выходной буфер обычно
имеет тип "открытый коллектор". Это позволяет корректно
использовать линии данного регистра как входные при про-
граммировании их в высокий уровень. Биты О, 1, 3 инвер-
тируются.

Назначение бит регистра управления:

SB CR[7:6] - зарезервированы.

т CR.5 - Direction - бит управления направлением переда-
чи (только для портов PS/2). Запись единицы переводит
порт данных в режим ввода. При чтении состояние бита
не определено.

^ CR.4 - AcklntEn (Ack Interrupt Enable) - единичное зна-
чение разрешает прерывание по спаду сигнала на линии
Ack# - сигнал запроса следующего байта.

is CR.3 - Select In - единичное значение бита соответству-
ет низкому уровню на выходе Select ln# (17) - сигналу,
разрешающему работу принтера по интерфейсу Centronics.

^ CR.2 - Init - нулевое значение бита соответствует низко-
му уровню на выходе 1п'Л# (16) - сигналу аппаратного
сброса принтера.

т CR. 1 - Auto LF - единичное значение бита соответствует
низкому уровню на выходе Auto LF# (14) - сигналу на
автоматический перевод строки (LF - Line Feed) по при-
ему байта возврата каретки (CR). Иногда сигнал и бит
называют AutoFD или AutoFDXT.

^ CR.O - Strobe - единичное значение бита соответствует
низкому уровню на выходе Strobeft (1) - сигналу стро-
бирования выходных данных.

Запрос аппаратного прерывания (обьлно IRQ7 или IRQ5) вы-
рабатывается по отрицательному перепаду сигнала на выво-
де 10 разъема интерфейса (Ack#) при установке CR.4=i. Во

избежание ложных прерываний контакт 10 соединен резис-
тором с шиной +5 В. Прерывание вырабатывается, когда
принтер подтверждает прием предыдущего байта. Как уже
было сказано, BIOS это прерывание не использует и не об-
служивает.

Процедура вывода байта по интерфейсу Centronics включает
следующие шаги (в скобках приведено требуемое количе-
ство шинных операций процессора):

^ Вывод байта в регистр данных (1 цикл IOWR#).

^ Ввод из регистра состояния и проверка готовности уст-
ройства (бит SR. 7 - сигнал Busy). Этот шаг зацикливает-
ся до получения готовности или до срабатывания про-
граммного тайм-аута (минимум 1 цикл IORD#).

ш По получении готовности выводом в регистр управления
устанавливается строб данных, а следующим выводом строб
снимается (2 цикла IOWR#). Обычно, чтобы переключить
только один бит (строб), регистр управления предвари-
тельно считывается, что добавляет еще один цикл IORD#.

Видно, что для вывода одного байта требуется 4-5 операций
ввода/вывода с регистрами порта (в лучшем случае, когда
готовность обнаружена по первому чтению регистра состоя-
ния). Отсюда вытекает главный недостаток вывода через
стандартный порт - невысокая скорость обмена при значи-
тельной загрузке процессора. Порт удается разогнать до ско-
ростей 100-150 Кбайт/с при полной загрузке процессора, что
недостаточно для печати на лазерном принтере. Другой не-
достаток - функциональный - сложность использования в
качестве порта ввода.

Стандартный порт асимметричен - при наличии 12 линий
(и бит), нормально работающих на вывод, на ввод работают
только 5 линий состояния. Если необходима симметричная
двунаправленная связь, на всех стандартных портах рабо-
тоспособен ^ежгш полубайтного обмена - Nibble Mode. В этом
режиме, называемом также Hewlett Packard Bitronics, одно-
временно передаются 4 бита данных, пятая линия исполь-
зуется для квитирования. Таким образом, каждый байт пе-
редается за два цикла, а каждый цикл требует по крайней
мере 5 операций ввода/вывода.

1.1.3. Расширения параллельного порта

Недостатки стандартного порта частично устраняли новые
типы портов, появившиеся в компьютерах PS/2.

Двунаправленный порт 1 (Type 1 parallel port} -интерфейс,
введенный в PS/2. Такой порт кроме стандартного режима
может работать в режиме ввода или двунаправленном ре-
жиме. Протокол обмена формируется программно, а для
указания направления передачи в регистр управления пор-
та введен специальный бит CR.5:0 - буфер данных работа-
ет на вывод, 1 - на ввод. Не путайте этот порт, называемый
также enhanced bi-directional, с ЕРР. Данный тип порта при-
жился и в обычных компьютерах.

Порт с прямым доступом к памяти (Type 3 DMA parallelport)
применялся в PS/2 моделей 57, 90, 95. Был введен для по-
вышения пропускной способности и разгрузки процессора
при выводе на принтер. Программе, работающей с портом,
требовалось только задать в памяти блок данных, подлежа-
щих выводу, а затем вывод по протоколу Centronics произ-
водился без участия процессора.

Позже появились другие адаптеры LPT-портов, реализую-
щие протокол обмена Centronics аппаратно - Fast Centronics.
Некоторые из них использовали FIFO-буфер данных -
Parallel Port FIFO Mode. He будучи стандартизованными, та-
кие порты разных производителей требовали использования
собственных специальных драйверов. Программы, исполь-
зующие прямое управление регистрами стандартных портов,
не умели более эффективно их использовать. Такие порты
часто входили в состав мультикарт VLB. Существуют их ва-
рианты с шиной ISA, в том числе встроенные.

1.2. Стандарт IEEE 1284

Стандарт на параллельный интерфейс IEEE 1284, принятый
в 1994 году, определяет порты SPP, ЕРР и ЕСР. Стандарт
определяет 5 режимов обмена данными, метод согласования
режима, физический и электрический интерфейсы. Соглас-
но IEEE 1284, возможны следующие режимы обмена дан-
ными через параллельный порт:

^ Режим совместимости (Compatibility Mode) - однонаправ-
ленный (вывод) по протоколу Centronics. Этот режим со-
ответствует стандартному порту SPP.

^ Полубайтный режим (Nibble Mode) - ввод байта в два
цикла (по 4 бита), используя для приема линии состоя-
ния. Этот режим обмена может использоваться на лю-
бых адаптерах.

^ Байтный режим (Byte Mode) - ввод байта целиком, ис-
пользуя для приема линии данных. Этот режим работает
только на портах, допускающих чтение выходных дан-
ных (Bi-Directional или PS/2 Type 1).

т Режим ЕРР (Enhanced Parallel Port) (EPP Mode) - дву-
направленный обмен данными. Управляющие сигналы
интерфейса генерируются аппаратно во время цикла об-
ращения к порту. Эффективен при работе с устройства-
ми внешней памяти и адаптерами локальных сетей.

^ Режим ЕСР (Extended Capability Port) (ECP Mode) - дву-
направленный обмен данными с возможностью аппарат-
ного сжатия данных по методу RLE (Run Length Encoding)
и использования FIFO-буферов и DMA. Управляющие
сигналы интерфейса генерируются аппаратно. Эффекти-
вен для принтеров и сканеров.

В компьютерах с LPT-портом на системной плате режим -
SPP, ЕРР, ЕСР или их комбинация - задается в BIOS Setup.
Режим совместимости полностью соответствует стандартно-
му порту SPP. Остальные режимы подробно рассмотрены
ниже.

1.2.1. Физический и электрический интерфейсы

Стандарт IEEE 1284 определяет физические характерис-
тики приемников и передатчиков сигналов. Специфика-
ции стандартного порта не задавали типов выходных схем,
предельных значений величин нагрузочных резисторов и
емкости, вносимой цепями и проводниками. На относи-
тельно невысоких скоростях обмена разброс этих парамет-
ров не вызывал проблем совместимости. Однако расши-
ренные (функционально и по скорости передачи) режимы

требуют четких спецификаций. IEEE 1284 определяет два
уровня интерфейсной совместимости. Первый уровень
(Level I) определен для устройств медленных, но исполь-
зующих смену направления передачи данных. Второй уро-
вень
(Level II) определен для устройств, работающих в
расширенных режимах, с высокими скоростями и длин-
ными кабелями. К передатчикам предъявляются следую-
щие требования:

^ Уровни сигналов без нагрузки не должны выходить за
пределы -0,5... +5,5 В.

^ Уровни сигналов при токе нагрузки 14 мА должны быть
не ниже +2,4 В для высокого уровня (Уон) и не выше
+0,4 В для низкого уровня (VoiJ на постоянном токе.

ii Выходной импеданс Ro, измеренный на разъеме, должен
составлять 50±5 Ом на уровне VoH~VoL. Для обеспечения
заданного импеданса используют последовательные резис-
торы в выходных цепях передатчика. Согласование им-
педанса передатчика и кабеля снижает уровень импульс-
ных помех.

^ Скорость нарастания (спада) импульса должна находить-
ся в пределах 0,05-0,4 В/нс.

Требования к приемникам:

^ Допустимые пиковые значения сигналов -2,0...+7,0 В.

^ Пороги срабатывания должны быть не выше 2,0 В (V^)
для высокого уровня и не ниже 0,8 В (Vi^) для низкого.

а Приемник должен иметь гистерезис в пределах 0,2...1,2 В
(гистерезисом обладают специальные микросхемы - триг-
геры Шмитта).

^ Входной ток микросхемы (втекающий и вытекающий) не
должен превышать 20 мкА, входные линии соединяются
с шиной питания +5 В резистором 1,2 кОм.

^ Входная емкость не должна превышать 50 пФ.

Когда появилась спецификация ЕСР, фирма Microsoft ре-
комендовала применение динамических терминаторов на
каждую линию интерфейса. Однако в настоящее время сле-
дуют спецификации IEEE 1284, в которой динамические

терминаторы не применяются. Рекомендованные схемы
входных, выходных и двунаправленных цепей приведены
на рис. 1.2.

Стандарт IEEE 1284 определяет три типа используемых
разъемов. Типы A (DB-25) и В (Centronics-36) используются
в традиционных кабелях подключения принтера, тип С -
новый малогабаритный 36-контактный разъем.

12.jpg
 

13.jpg
 

Рис. 1.2. Оконечные цепи линий интерфейса IEEE 1284:

а - однонаправленных, б - двунаправленных

Традиционные интерфейсные кабели имеют от 18 до 25 про-
водов, в зависимости от числа проводников цепи GND. Эти
проводники могут быть как перевитыми, так и нет. К экра-
нированию кабеля жестких требований не предъявлялось.
Такие кабели вряд ли будут надежно работать на скорости
передачи 2 Мбайт/с и при длине более 2 м. Стандарт
IEEE 1284 регламентирует свойства кабелей.

^ Все сигнальные линии должны быть перевитыми с от-
дельными обратными (общими) проводами.

^ Каждая пара должна иметь импеданс 62±б Ом в частот-
ном диапазоне 4-16 МГц.

^ Уровень перекрестных помех между парами не должен
превышать 10%.

^ Кабель должен иметь экран (фольгу), покрывающий не
менее 85% внешней поверхности. На концах кабеля эк-
ран должен быть окольцован и соединен с контактом
разъема.

Кабели, удовлетворяющие этим требованиям, маркируются
надписью "lEEEStd 1284-1994 Compliant^. Они могут иметь
длину до 10 метров, обозначения типов приведены в табл. 1.3.

Тип

Расшифровка

Разъем 1

Разъем 2

АМАМ

Type A Male - Type A Male

А(вилка)

А(вилка)

AMAF

Туре A Male - Type A Female

А(вилка)

А (розетка)

АВ

Type A Male - Туре В Plug
(стандартный кабель
к принтеру)

А(вилка)

В

АС

Type A Male - Type С Plug
(новый кабель к принтеру)

А(вилка)

С

ВС

Type В Plug - Type С Plug

В

С

СС

Туре С Plug - Type С Plug

С

С


 

1.2.2. Режимы передачи данных

IEEE 1284 определяет пять режимов обмена, один из кото-
рых полностью соответствует стандартному выводу по про-
токолу Centronics. Стандарт определяет способ, по которому
ПО может определить режим, доступный и хосту (PC), и
ПУ (или присоединенному второму компьютеру). Режимы
нестандартных портов, реализующих протокол обмена
Centronics аппаратно (Fast Centronics, Parallel Port FIFO Mode),

могут и не являться режимами IEEE 1284, несмотря на на-
личие в них черт ЕРР и ЕСР.

При описании режимов обмена фигурируют следующие по-
нятия:

^ Хост - компьютер, обладающий параллельным портом.

^ ПУ - периферийное устройство, подключаемое к этому
порту.

^ Ptr - в обозначениях сигналов обозначает передающее ПУ.
is Прямой канал - канал вывода данных от хоста в ПУ.
^ Обратный канал - канал ввода данных в хост из ПУ.
Полубайтный режим ввода - Nibble Mode

Предназначен для двунаправленного обмена. Может рабо-
тать на всех стандартных портах. Порты имеют 5 линий вво-
да
состояния, используя которые ПУ может посылать в хост
байт тетрадами (nibble - полубайт, 4 бита) за два приема.
Сигнал Ack#, вызывающий прерывание, которое может ис-
пользоваться в данном режиме, соответствует биту 6 регис-
тра состояния, что усложняет программные манипуляции с
битами при сборке байта. Сигналы порта приведены в
табл. 1.4, временные диаграммы - на рис. 1.3.

14.jpg
 

Рис. 1.3. Прием данных в полубайтном режиме

Прием байта данных в полубайтном режиме состоит из сле-
дующих фаз:

1. Хост сигнализирует о готовности приема данных уста-
новкой низкого уровня на линии HostBusy.

2. ПУ в ответ помещает тетраду на входные линии состоя-
ния.

3. ПУ сигнализирует о готовности тетрады установкой низ-
кого уровня на линии PtrClk.

4. Хост устанавливает высокий уровень на линии HostBusy,
указывая на занятость приемом и обработкой тетрады.

5. ПУ отвечает установкой высокого уровня на линии PtrClk.

6. Шаги 1-5 повторяются для второй тетрады.

Контакт

Сигнал SPP

I/O

Описание

14

AutoFeed#

0

HostBusy - сигнал квитирования.
Низкий уровень означает готовность к
приему тетрады, высокий подтверждает
прием тетрады

17

Sdectln#

0

Высокий уровень указывает на обмен
в режиме IEEE 1284 (в режиме SPP
уровень низкий)

10

Ack#

1

PtrClk. Низкий уровень означает
готовность тетрады, высокий - ответ
на сигнал HostBusy

11

Busy

I

Прием бита данных 3, затем бита 7

12

РЕ

I

Прием бита данных 2, затем бита 6

13

Sdect

I

Прием бита данных 1, затем бита 5

15

Error"

I

Прием бита данных 0, затем бита 4


 

Полубайтный режим сильно нагружает процессор, и поднять
скорость обмена выше 50 Кбайт/с не удается. Безусловное
его преимущество в том, что он работает на всех портах. Его
применяют в тех случаях, когда поток данных невелик (на-
пример, для связи с принтерами). Однако при связи с адап-
терами локальных сетей, внешними дисковыми накопителя-
ми и CD-ROM прием больших объемов данных требует
изрядного терпения со стороны пользователя.

Двунаправленный байтный режим - Byte Mode

В данном режиме данные принимаются с использованием
двунаправленного порта, у которого выходной буфер дан-

ных может отключаться установкой бита С/?.5=1. Как и пре-
дыдущие, режим является программно-управляемым - все
сигналы квитирования анализируются и устанавливаются
драйвером. Сигналы порта описаны в табл. 1.5, временные
диаграммы - на рис. 1.4.

Контакт

Сигнал SPP

Имя
в байтном
режиме

I/O

Описание

*

Strobe"

HostClk

0

Импульс (низкого уровня)
подтверждает прием байта
в конце каждого цикла

14

AutoFeed#

HostBusy

о

Сигнал квитирования.
Низки уровень означает
готовность хоста принять
байт; высокий уровень
устанавливается по приему
байта

17

Selecting

1284Active

о

Высокий уровень указывает
на обмен в режиме
IEEE 1284 (в режиме SPP
уровень низкий)

16

lnit#

lnit"

о

Не используется; установ-
лен высокий уровень

10

Ack#

PtrClk

I

Устанавливается в низкий
уровень для индикации
действительности данных
на линиях Data [0:7].
Низкий уровень устанавли-
вается в ответ на сигнал
HostBusy

11

Busy

PtrBusy

I

Состояние занятости пря-
мого канала

12

PE

AckDataReq*

1

Устанавливается ПУ для
указания на наличие обрат-
ного канала передачи

13

Select

Xflag*

I

Флаг расширяемости

15

Error#

DataAvail#*

I

Устанавливается ПУ для
указания на наличие обрат-
ного канала передачи

2-9

Data [0:7]

Data [0:7]

I/

0

Двунаправленный (прямой
и обратный) канал данных


 

* Сигналы действуют в последовательности согласования (см. далее).

15.jpg
 

Рис. 1.4. Прием данных в байтном режиме

Фазы приема байта данных:

1. Хост сигнализирует о готовности приема данных уста-
новкой низкого уровня на линии HostBusy.

2. ПУ в ответ помещает байт данных на линии Data [0:7].

3. ПУ сигнализирует о действительности байта установкой
низкого уровня на линии PtrClk.

4. Хост устанавливает высокий уровень на линии HostBusy,
указывая на занятость приемом и обработкой байта.

5. ПУ отвечает установкой высокого уровня на линии PtrClk.

6. Хост подтверждает прием байта импульсом HostCIR.

7. Шаги 1-6 повторяются для каждого следующего байта.

Побайтный режим позволяет поднять скорость обратного
канала до скорости прямого канала в стандартном режиме.
Однако он может работать только на двунаправленных
портах.

Режим ЕРР

Протокол ЕРР (Enhanced Parallel Port - улучшенный парал-
лельный порт) был разработан компаниями Intel, Xircom и
Zenith Data Systems задолго до принятия IEEE 1284. Он
предназначен для повышения производительности обмена по
параллельному порту. ЕРР был реализован в чипсете
Intel 386SL (микросхема 82360) и впоследствии принят мно-
жеством компаний как дополнительный протокол параллель-
ного порта. Версии протокола, реализованные до принятия
IEEE 1284, отличаются от нынешнего стандарта (см. далее).

Протокол ЕРР обеспечивает четыре типа циклов обмена:

^ запись данных;

ш чтение данных;

^ запись адреса;

^ чтение адреса.

Назначение циклов записи и чтения данных очевидно. Ад-
ресные циклы используются для передачи адресной, каналь-
ной и управляющей информации. Циклы обмена данными
отличаются от адресных циклов применяемыми стробирую-
щими сигналами. Назначение сигналов порта ЕРР и их связь
с сигналами SPP объясняются в табл. 1.6.

Контакт

Сигнал SPP

Имя в ЕРР

I/O

Описание

1

Strobe"

Write#

0

Низкий уровень - цикл
записи, высокий - цикл
чтения

14

AutoLF#

DataStb#

0

Строб данных. Низкий
уровень устанавливается
в циклах передачи данных

17

Selecting

AddrStbft

о

Строб адреса. Низкий уро-
вень устанавливается в ад-
ресных циклах

16

lnit"

Reset"

о

Сброс ПУ (низким уровнем)

10

Ack#

INTR#

I

Прерывание от ПУ

11

Busy

Wait#

 

Сигнал квитирования.
Низкий уровень разрешает
начало цикла (установку
строба в низкий уровень),
переход в высокий - раз-
решает завершение цикла
(снятие строба)

2-9

Data [0:7]

AD[0:7]

I/O

Двунаправленная шина
адреса/данных

12

PaperEnd

AckDataReq*

I

Используется по усмотрению
разработчика периферии

13

Select

Xflag*

I

Используется по усмотрению
разработчика периферии

15

Error#

DataAvail#*

'

Используется по усмотрению
разработчика периферии


 

* Сигналы действуют в последовательности согласования (см. далее).

2 Зак.№530

ЕРР-порт имеет расширенный набор регистров (табл. 1.7),
который занимает в пространстве ввода/вывода 5-8 смеж-
ных байт.

Имя регистра

Смещение

Режим

R/W

Описание

SPP Data Port

+0

SPP/EPP

W

Регистр данных SPP

SPP Status Port

+1

SPP/EPP

R

Регистр состояния SPP

SPP Control Port

+2

SPP/EPP

W

Регистр управления SPP

EPP Address
Port

+3

EPP

R/W

Регистр адреса EPP.
Чтение или запись в
него генерирует связан-
ный цикл чтения или
записи адреса EPP

EPP Data Port

+4

EPP

R/W

Регистр данных EPP.
Чтение (запись) гене-
рирует связанный цикл
чтения (записи) дан-
ных EPP

Not Defined

+5...+7

EPP

N/A

В некоторых кон-
троллерах могут исполь-
зоваться для 16-/
32-битных операций
ввода/вывода


 

В отличие от программно-управляемых режимов, описанных
ранее, внешние сигналы fPP-порта для каждого цикла об-
мена формируются аппаратно по одной операции записи или
чтения в регистр порта. На рис. 1.5 приведена диаграмма иик-
ла записи
данных, иллюстрирующая внешний цикл обмена,
вложенный в цикл записи системной шины процессора (иног-
да эти циклы называют связанными). Адресный цикл запи-
си отличается от цикла данных только стробом внешнего ин-
терфейса.

Цикл записи данных состоит из следующих фаз:

1. Программа выполняет цикл вывода (IOWR#) в порт 4 (EPP
Data Port).

2. Адаптер устанавливает сигнал Write* (низкий уровень),
и данные помещаются на выходную шину LPT-порта.

3. При низком уровне Wart# устанавливается строб данных.

4. Порт ждет подтверждения от ПУ (перевода Wait# в вы-
сокий уровень).

5. Снимается строб данных - внешний ЕРР-цикл завер-
шается.

6. Завершается процессорный цикл вывода.

7. ПУ устанавливает низкий уровень Wait#, указывая на
возможность начала следующего цикла.

16.jpg
 

Рис. 1.5. Цикл записи данных ЕРР

Пример адресного цикла чтения приведен на рис. 1.6. Цикл
чтения данных отличается только применением другого стро-
бирующего сигнала.

17.jpg
 

Рис. 1.6. Адресный цикл чтения ЕРР

Главной отличительной чертой ЕРР является выполнение
внешней передачи во время одного процессорного цикла вво-

да/вывода. Это позволяет достигать высоких скоростей об-
мена (0,5...2 Мбайт/с). ПУ, подключенное к параллельному
порту ЕРР, может работать со скоростью устройства, под-
ключаемого через слот ISA. Протокол блокированного кви-
тирования (interlocked handshakes) позволяет автоматичес-
ки настраиваться на скорость обмена, доступную и хосту, и
ПУ. ПУ может регулировать длительность всех фаз обмена
с помощью всего лишь одного сигнала Wait#. Протокол ав-
томатически подстраивается под длину кабеля - вносимые
задержки приведут только к удлинению цикла. Поскольку
кабели, соответствующие IEEE 1284 (см. выше), имеют оди-
наковые волновые свойства для разных линий, нарушения
передачи, связанного с "состязаниями" сигналов, происхо-
дить не должно. При подключении сетевых адаптеров или
внешних дисков к ЈPP-nopTy можно наблюдать непривыч-
ное явление: снижение производительности по мере удли-
нения интерфейсного кабеля.

Естественно, ПУ не должно "подвешивать" процессор на
шинном цикле обмена. Это гарантирует механизм тайм-аутов
PC, который принудительно завершает любой цикл обмена,
длящийся более 15 мкс. В ряде реализации ЕРР за тайм-аутом
интерфейса следит сам адаптер - если ПУ не отвечает в те-
чение определенного времени (5 мкс), цикл прекращается и
в дополнительном (не стандартизованном) регистре состоя-
ния адаптера фиксируется ошибка.

Устройства с интерфейсом ЕРР, разработанные до принятия
IEEE 1284, отличаются началом цикла: строб DataStb# или
AddrStb# устанавливается независимо от состояния WAIT#.
Это означает, что ПУ не может задержать начало следующе-
го цикла (хотя может растянуть его на требуемое время).
Такая спецификация называется ЕРР 1.7 (предложена
Xircom). Именно она применялась в контроллере 82360.
Периферия, совместимая с ЕРР 17, будет нормально рабо-
тать и с контроллером ЕРР 1284, но периферия в стандарте
ЕРР 1284 может отказаться работать с контроллером ЕРР 1.7.

С программной точки зрения контроллер ЯРР-порта выгля-
дит просто (см. табл. 1.7). К трем регистрам стандартного
порта, имеющим смещение 0, 1 и 2 относительно базового

адреса порта, добавлены два регистра (ЕРР Address Port и
ЕРР Data Port), чтение и запись в которые вызывает генера-
цию связанных внешних циклов.

Назначение регистров стандартного порта сохранено для со-
вместимости fPP-порта с ПУ и ПО, рассчитанными на при-
менение программно-управляемого обмена. Поскольку сиг-
налы квитирования адаптером вырабатываются аппаратно,
при записи в регистр управления СП биты 0, 1 и 3, соответ-
ствующие сигналам Strobeft, AutoFeed# и Selecting должны
иметь нулевые значения. Программное вмешательство мог-
ло бы нарушить последовательность квитирования. Некото-
рые адаптеры имеют специальные средства защиты (ЕРР
Protect),
при включении которых программная модифика-
ция этих бит блокируется.

Использование регистра данных ЕРР позволяет осуществлять
передачу блока данных с помощью одной инструкции REP
INSB
или REP OUTSB. Некоторые адаптеры допускают 16-/
32-битное обращение
к регистру данных ЕРР. При этом адап-
тер просто дешифрует адрес со смещением в диапазоне 4-7
как адрес регистра данных ЕРР, но процессору сообщает о раз-
рядности 8 бит. Тогда 16- или 32-битное обращение по ад-
ресу регистра данных ЕРР приведет к автоматической гене-
рации двух или четырех шинных циклов по нарастающим
адресам, начиная со смещения 4. Эти циклы будут выпол-
няться быстрее, чем то же количество одиночных циклов.
Таким образом обеспечивается производительность до
2 Мбайт/с, достаточная для адаптеров локальных сетей, вне-
шних дисков, стриммеров и CD-ROM. Адресные циклы ЕРР
всегда выполняются только в однобайтном режиме.

Важной чертой ЕРР является то, что обращение процессора
к ПУ осуществляется в реальном времени - нет буфериза-
ции. Драйвер способен отслеживать состояние и подавать
команды в точно известные моменты времени. Циклы чте-
ния и записи могут чередоваться в произвольном порядке
или идти блоками. Такой тип обмена удобен для регистро-
ориентированных ПУ
или ПУ, работающих в реальном вре-
мени, -
сетевых адаптеров, устройств сбора информации и
управления и т. п.

Режим ЕСР

Протокол ЕСР (Extended Capability Port - порт с расши-
ренными возможностями) был предложен Hewlett Packard
и Microsoft для связи с ПУ типа принтеров или сканеров.
Как и ЕРР, данный протокол обеспечивает высокопроизво-
дительный двунаправленный обмен данными хоста с ПУ.

Протокол ЕСР в обоих направлениях обеспечивает два типа
циклов:

^ циклы записи и чтения данных;

^ командные циклы записи и чтения.

Командные циклы подразделяются на два типа: передачу
канальных адресов и передачу счетчика RLC (Run-Length
Count).

В отличие от ЕРР, вместе с протоколом ЕСР сразу появился
стандарт на программную (регистровую) модель его адапте-
ра, изложенный в документе "The IEEE 1284 Extended
Capabilities Port Protocol and ISA Interface Standard" ком-
пании Microsoft. Этот документ определяет свойства прото-
кола, не заданные стандартом IEEE 1284:

^ компрессию данных хост-адаптером по методу RLE;

^ буферизацию FIFO для прямого и обратного каналов;

^ применение DMA и программного ввода/вывода.

Компрессия в реальном времени по методу RLE (Run-Length
Encoding) позволяет достичь коэффициента сжатия 64:1 при
передаче растровых изображений, которые имеют длинные
строки повторяющихся байт. Компрессию можно использо-
вать, только если ее поддерживает и хост, и ПУ.

Канальная адресация ЕСР применяется для адресации мно-
жества логических устройств, входящих в одно физическое.
Например, в комбинированном устройстве факс/принтер/
модем, подключаемом только к одному параллельному пор-
ту, возможен одновременный прием факса и печать на прин-
тере. В режиме SPP, если принтер установит сигнал занятос-
ти, канал будет занят данными, пока принтер их не примет.
В режиме ЕСР программный драйвер просто адресуется к
другому логическому каналу того же порта.

Протокол ЕСР переопределяет сигналы SPP (табл. 1.8).

Контакт

Сигнал SPP

Имя в ЕСР

I/O

Описание

1

Strobe"

HostClk

0

Используется в паре
с PeriphAck для передачи
в прямом направлении
(вывод)

14

AutoLF#

HostAck

о

Указывает тип цикла
(команда/данные) при
передаче в прямом на-
правлении. Использует-
ся в паре с PeriphClk для
передачи в обратном на-
правлении

17

Selecting

1284Active

о

Высокий уровень указы-
вает на обмен в режиме
IEEE 1284 (в режиме
SPP уровень низкий)

16

lnit#

 

о

Низкий уровень пере-
ключает канал на пере-
дачу в обратном направ-
лении

ReverseRequest*

10

Ack#

PeriphQk

1

Используется в паре
с HostAck для передачи
в обратном направлении

11

Busy

PeriphAck

I

Используется в паре
с HostClk для передачи
в обратном направлении.
Индицирует тип коман-
да/данные при передаче
в обратном направлении

12

PaperEnd

AckReverse#

I

Переводится в низкий
уровень как подтверж-
дение сигналу
ReverseRequest#

13

Select

Xflag*

I

Флаг расширяемости

15

Error#

PeriphRequest#*

I

Устанавливается ПУ для
указания на доступность
(наличие) обратного ка-
нала передачи*

2-9

Data [0:7]

Data [0:7]

I/O

Двунаправленный канал
данных


 

* Сигналы действуют в последовательности согласования (см. далее).

Адаптер ЕСР тоже генерирует внешние протокольные сиг-
налы квитирования аппаратно, но его работа существенно
отличается от режима ЕРР.

На рис. 1.7а приведена диаграмма двух циклов прямой пе-
редачи: за циклом данных следует командный цикл. Тип цлкла
задается уровнем на линии HostAck: в цикле данных - вы-
сокий, в командном цикле - низкий. В командном цикле байт
может содержать канальный адрес или счетчик RLE. Отли-
чительным признаком является бит 7 (старший): если он
нулевой, то биты 0-6 содержат счетчик RLE (0-127), если
единичный - то канальный адрес. На рис. 1.76 показана пара
циклов обратной передачи.

18.jpg
 

19.jpg
 

Рис. 1.7. Передача в режиме ЕСР: a - прямая, б - обратная

В отличие от диаграмм обмена ЕРР, на рис. 1.7 не приведе-
ны сигналы циклов системной шины процессора. В данном
режиме обмен программы с ПУ разбивается на два относи-
тельно независимых процесса, которые связаны через FIFO-
буфер. Обмен драйвера с FIFO-буфером может осуществ-
ляться с использованием как DMA, так и программного

ввода-вывода. Обмен ПУ с буфером аппаратно выполняет
адаптер ЕСР. Драйвер в режиме ЕСР не имеет информации
о точном состоянии процесса обмена, но здесь обычно важ-
но только то, завершен он или нет. Прямая передача данных
на внешнем интерфейсе состоит из следующих шагов:

1. Хост помещает данные на шину канала и устанавливает
признак цикла данных (высокий уровень) или команды
(низкий уровень) на линии HostAck.

2. Хост устанавливает низкий уровень на линии HostClk,
указывая на действительность данных.

3. ПУ отвечает установкой высокого уровня на линии
PeriphAck.

4. Хост устанавливает высокий уровень линии HostClk, и
этот перепад может использоваться для фиксации дан-
ных в ПУ.

5. ПУ устанавливает низкий уровень на линии PeriphAck для
указания на готовность к приему следующего байта.

Поскольку передача в ЕСР происходит через FIFO-буферы,
которые могут присутствовать на обеих сторонах интерфей-
са, важно понимать, на каком этапе данные можно считать
переданными. Данные считаются переданными на шаге 4,
когда линия HostClk переходит в высокий уровень. В этот
момент модифицируются счетчики переданных и принятых
байт. В протоколе ЕСР есть условия, вызывающие прекра-
щение обмена между шагами 3 и 4. Тогда эти данные не долж-
ны рассматриваться как переданные.

Из рис. 1.7 видно и другое отличие ЕСР от ЕРР. Протокол
ЕРР позволяет драйверу чередовать циклы прямой и обрат-
ной передачи, не запрашивая подтверждения на смену на-
правления. В ЕСР смена направления должна быть согласо-
вана: хост запрашивает реверс установкой ReverseRequest#,
после чего он должен дождаться подтверждения сигналом
AckReverse#. Поскольку предыдущий цикл мог выполнять-
ся по прямому доступу, драйвер должен дождаться завер-
шения прямого доступа или прервать его, выгрузить буфер
FIFO, определив точное значение счетчика переданных байт,
и только после этого запрашивать реверс.

Обратная передача данных состоит из следующих шагов:

1. Хост запрашивает изменение направления канала, уста-
навливая низкий уровень на линии ReverseRequest#.

2. ПУ разрешает смену направления установкой низкого
уровня на линии AckReverse#.

3. ПУ помещает данные на шину канала и устанавливает
признак цикла данных (высокий уровень) или команды
(низкий уровень) на линии PeriphAck.

4. ПУ устанавливает низкий уровень на линии PeriphClk,
указывая на действительность данных.

5. Хост отвечает установкой высокого уровня на линии
HostAck.

6. ПУ устанавливает высокий уровень линии PeriphClk; этот
перепад может использоваться для фиксации данных хос-
том.

7. Хост устанавливает низкий уровень на линии HostAck для
указания на готовность к приему следующего байта.

Режимы и регистры ЕСР-порта *

Программный интерфейс и регистры ЕСР для адаптеров
IEEE 1284 определяет спецификация Microsoft. Определе-
ны режимы (табл. 1.9), в которых может функционировать
адаптер. Они задаются полем Mode регистра ECR (биты [7:5]).

Регистровая модель адаптера ЕСР (табл. 1.10) использует
свойства архитектуры стандартной шины и адаптеров ISA -
для дешифрации адресов портов ввода/вывода задействуются
только 10 младших линий шины адреса. Поэтому, например,
обращения по адресам Port, Port+400h, Port+800h... будут вос-
приниматься как обращения к адресу Port, лежащему в диа-
пазоне 0-3 FFh. Современные PC и адаптеры декодируют
большее количество адресных бит, поэтому обращения по
адресам 0378h и 0778h будет адресованы двум различным
регистрам. Помещение дополнительных регистров ЕСР "за
спину" регистров стандартного порта (смещение 400-402h)
преследует две цели. Во-первых, эти адреса никогда не ис-
пользовались традиционными адаптерами и их драйверами,
и их применение в ЕСР не приведет к сужению доступного

адресного пространства ввода/вывода. Во-вторых, этим обес-
печивается совместимость со старыми адаптерами на уров-
не режимов 000-001 и возможность определения присутствия
ЯСР-адаптера через попытку обращения к его расширенным
регистрам.

Режим

Название

Описание

000

SPPmode

Стандартный (традиционный) режим

001

Bi-directional mode

Двунаправленный порт (тип 1 для PS/2)

010

Fast Centronics

Однонаправленный с использованием
FIFO и DMA

Oil

ECP Parallel Port mode

ECP

100

EPP Parallel Port
mode*

Перевод в режим EPP

101

Зарезервировано

-

110

Test mode

Тестирование работы FIFO
и прерываний

111

Configuration mode

Доступ к конфигурационным регистрам


 

* Этот режим не входит в спецификацию Microsoft, но трактуется как
EPP контроллером SMC FDC37C665/666 и многими другими.

Каждому режиму ECP соответствуют (и доступны) свои
функциональные регистры. Переключение режимов осуще-
ствляется записью в регистр ECR. "Дежурными" режимами,
включаемыми по умолчанию, являются 000 или 001. В лю-
бом из них работает полубайтный режим ввода. Из этих ре-
жимов всегда можно переключиться в любой другой, но из
старших режимов (010-111) переключение возможно толь-
ко в 000 или 001. Для корректной работы интерфейса перед
выходом из старших режимов необходимо дождаться завер-
шения обмена по прямому доступу и очистки FIFO-буфера.

В режиме 000 (SPP) порт работает как стандартный одно-
направленный программно-управляемый SPP.

В режиме 001 (Bi-Di PS/2) порт работает как двунаправлен-
ный порт PS/2 типа 1. От режима 000 отличается возмож-
ностью реверса канала данных по биту CR.5.

Режим 010(Fast Centronics) предназначен только для высо-
копроизводительного вывода через FIFO-буфер с использо-
ванием DMA. Сигналы квитирования по протоколу Ceritromcs
вырабатываются аппаратно. Сигнал запроса прерывания
вырабатывается по состоянию FIFO-буфера, но не по сиг-
налу Аск# (запрос одиночного байта "не интересует" драй-
вер быстрого блочного вывода).

Режим 011 является собственно режимом ЕСР, описанным
ранее. Поток данных и команд, передаваемых в ПУ, поме-
щается в FIFO-буфер через регистры ECPDFIFO и ECPAFIFO
соответственно. Из FIFO они выводятся с соответствующим
признаком цикла (состояние линии HostAck). Принимаемый
поток данных от ПУ извлекается из FIFO-буфера через ре-
гистр ECPDFIFO. Получение адреса в командном цикле от
ПУ не предусматривается. Обмен с регистром ECPDFIFO мо-
жет производиться и по каналу DMA.

Компрессия по методу RLE при передаче выполняется про-
граммно. Для передачи подряд более двух одинаковых байт
данных в регистр ECPAFIFO записывается байт, у которого
младшие 7 бит содержат счетчик RLC (значение RLC=127
соответствует 128 повторам), а старший бит нулевой. После
этого в ECPDFIFO записывается сам байт. Отсюда очевидно,
что вывод данных с одновременным использованием комп-
рессии и DMA невозможен. Принимая эту пару байт (ко-
мандный байт и байт данных), ПУ осуществляет декомп-
рессию. При приеме потока от ПУ адаптер ЕСР декомпрессию
осуществляет аппаратно и в FIFO-буфер помещает уже де-
компрессированные данные.

Режим 100 (ЕРР) - один из способов включения режима ЕРР.

Режим 110 (Test Mode) предназначен для тестирования взаи-
модействия FIFO и прерываний. Данные могут переда-
ваться в/из регистра TFIFO с помощью DMA или программ-
ным способом. На внешний интерфейс обмен не
воздействует. Адаптер отрабатывает операции вхолостую на
максимальной скорости интерфейса (как будто сигналы
квитирования приходят без задержек). Адаптер следит за
состоянием буфера и по мере необходимости вырабатыва-
ет сигналы запроса прерывания. Таким образом программа

может определить максимальную пропускную способность
канала.

Режим 111 (Configuration mode) предназначен для доступа к
конфигурационным регистрам. Вьвделение режима защища-
ет адаптер и протокол от некорректных изменений конфи-
гурации в процессе обмена.

Смещение

Имя

R/W

Режимы ЕСР*

Название

000

DR

R/W

000-001

Data Register

000

ECPAF1FO

R/W

Oil

ЕСР Address FIFO

001

SR

R/W

Все

Status Register

002

CR

R/W

Все

Control Register

400

SDFIFO

R/W

010

Parallel Pwt Data FIFO

400

ECPDFIFO

R/W

Oil

ЕСР Data FIFO

400

TFIFO

R/W

110

Test FIFO

400

CNFGA

R

111

Configuration Register A

401

CNFGB

R/W

111

Configuration Register В

402

ECR

R/W

Все

Extended Control Register


 

* Регистры доступны только в указанных режимах (режим задается би-
тами 7-5 регистра ECR).

Регистр данных DR используется для передачи данных только
в программно-управляемых режимах (000 и 001).

Регистр состояния SR передает значение сигналов на соот-
ветствующих линиях (как в SPP).

Регистр управления CR имеет назначение бит, совпадающее
с SPP. В режимах 010, Oil запись в биты 0, 1 (сигналы
AutoLFft и Strobe*) игнорируется.

Регистр ECPAF1FO служит для помещения информации ко-
мандных циклов (канального адреса или счетчика RLE, в за-
висимости от бита 7) в FIFO-буфер. Из буфера информа-
ция будет выдана в командном цикле вывода.

Регистр SDFIFO используется для передачи данных в режи-
ме 010. Данные, записанные в регистр (или посланные по
каналу DMA), передаются через буфер FIFO по реализо-
ванному аппаратно протоколу Centronics. При этом должно
быть задано прямое направление передачи (бит CR.5=0).

Регистр DFIFO используется для обмена данными в режи-
ме 011 (ЕСР). Данные, записанные в регистр или считанные
из него (или переданные по каналу DMA), передаются че-
рез буфер FIFO по протоколу ЕСР.

Регистр TFIFO обеспечивает механизм тестирования FIFO-
буфера в режиме 110.

Регистр ECPCFGA позволяет считывать информацию об адап-
тере (идентификационный код в битах [7:4].

Регистр ECPCFGB хранит информацию, необходимую драй-
веру. Запись в регистр не влияет на работу порта.

Регистр ECR - главный управляющий регистр ЕСР.

Назначение бит регистра ECR'.

т ECR[7:5] -ЕСР MODE - задает режим ЕСР.

т ECR.4 - ERRINTREN^t (Error Interrupt Disable) - запреща-
ет прерывания по сигналу Еггог# (при нулевом значении
бита по отрицательному перепаду на этой линии выра-
батывается запрос прерывания).

^ ECR.3 - DMAEN (DMA Enable) - разрешает обмен по ка-
налу DMA.

т ECR.2 - SERVICEINTR (Service Interrupt) - запрещает сер-
висные прерывания, которые вырабатываются по оконча-
нии цикла DMA (если он разрешен), по порогу заполне-
ния/опустошения FIFO-буфера (если не используется
DMA) и по ошибке переполнения буфера сверху или снизу.

^ ECR. 1 - FIFOFS (FIFO Full Status) - сигнализирует о за-
полнении буфера; при FIFOFS=1 в буфере нет ни одно-
го свободного байта.

т ECR. О - FIFOES (FIFO Empty Status) - указывает на пол-
ное опустошение буфера; комбинация FfFOFS=FIFOES=i
означает ошибку работы с FIFO (переполнение сверху
или снизу).

Когда порт находится в стандартном или двунаправленном
режимах (000 или 001), первые три регистра полностью со-
впадают с регистрами стандартного порта. Так обеспечива-
ется совместимость драйвера со старыми адаптерами и ста-
рых драйверов с новыми адаптерами.

По интерфейсу с программой fCP-порт напоминает ЕРР:

после установки режима (записи кода в регистр ECR) обмен
данными с устройством сводится к чтению или записи в со-
ответствующие регистры. За состоянием FIFO-буфера на-
блюдают либо по регистру ECR, либо по обслуживанию сер-
висных прерываний от порта. Весь протокол квитирования
генерируется адаптером аппаратно. Обмен данными с ЕСР-
портом (кроме явного программного) возможен и по пря-
мому доступу к памяти (каналу DMA), что эффективно при
передаче больших блоков данных.

1.2.3. Согласование режимов IEEE 1284

ПУ в стандарте IEEE 1284 обычно не требуют от контроллера
реализации всех режимов, предусмотренных стандартом. Для
определения режимов и методов управления конкретным
устройством стандарт предусматривает последовательность
согласования (negotiation sequence).
Последовательность по-
строена так, что старые устройства, не рассчитанные на при-
менение IEEE 1284, на нее не ответят, и контроллер оста-
нется в стандартном режиме. Периферия IEEE 1284 может
сообщить о своих возможностях, и контроллер установит
режим, удовлетворяющий и хост, и ПУ.

Во время фазы согласования контроллер выставляет на ли-
нии данных байт расширяемости (extensibility byte), запра-
шивая подтверждение на перевод интерфейса в требуемый
режим или прием идентификатора ПУ (табл. 1.11). Иден-
тификатор передается контроллеру в запрошенном режиме
(любой режим обратного канала, кроме ЕРР). ПУ использу-
ет сигнал Xflag (Select в терминах SPP) для подтверждения
запрошенного режима обратного канала, кроме полубайтно-
го. Полубайтный режим поддерживается всеми устройства-
ми IEEE 1284. Бит Extensibility Link request послужит для
определения дополнительных режимов в будущих расшире-
ниях стандарта.

Бит

Описание

Допустимые
комбинации

   

бит [7:0]

7

Request Extensibility Link - зарезервирован

10000000

6

Запрос режима ЕРР

01000000

5

Запрос режима ЕСР с RLE

00110000

4

Запрос режима ЕСР без RLE

00010000

3

Зарезервировано

00001000

2

Запрос идентификатора устройства
с ответом в режиме:

 
 

полубайтный

00000100

 

байтный

00000101

 

ЕСР без RLE

00010100

 

ЕСР с RLE

0011 0100

1

Зарезервировано

00000010

0

Запрос полубайтного режима

00000001

none

Запрос байтного режима

00000000


 

Последовательность согласования (рис. 1.8) состоит из сле-
дующих шагов:

1. Хост выводит байт расширяемости на линии данных.

2. Хост устанавливает высокий уровень сигнала Selecting и
низкий - AutoFeed#, что означает начало последователь-
ности согласования.

3. ПУ отвечает установкой низкого уровня сигнала Ack# и
высокого - Errorft, PaperEnd и Select. Устройство, "не по-
нимающее" стандарта 1284, ответа не даст, и дальнейшие
шаги не выполнятся.

4. Хост устанавливает низкий уровень сигнала Strobe# для
записи байта расширяемости в ПУ.

5. Хост устанавливает высокий уровень сигналов Strobeft и
AutoLF#.

6. ПУ отвечает установкой в низкий уровень сигналов
PaperEnd и Еггог^, если ПУ имеет обратный канал пере-
дачи данных. Если запрошенный режим поддерживается
устройством, на линии Select устанавливается высокий
уровень, если не поддерживается - низкий.

7. ПУ устанавливает высокий уровень на линии Ack# для
указания на завершение последовательности согласова-
ния, после чего контроллер устанавливает требуемый ре-
жим работы.

110.jpg
 

Рис. 1.8. Последовательность согласования режимов IEEE 1284

1.2.4. Развитие стандарта IEEE 1284

Кроме основного стандарта IEEE 1284, который уже при-
нят, в настоящее время в стадии проработки находятся но-
вые стандарты, дополняющие его. К ним относятся:

^ IEEE Р1284.1 "Standard for Information Technology for
Transport Independent Printer/Scanner Interface (TIP/SI)".
Этот стандарт разрабатывается для управления и обслу-
живания сканеров и принтеров на основе протокола NPAP
(Network Printing Alliance Protocol).

n IEEE P1284.2 "Standard for Test, Measurement and
Conformance to IEEE Std. 1284" - стандарт для тестиро-

вания портов, кабелей и устройств на совместимость с
IEEE 1284.

ai IEEE P12843 "Standaixl for Interface and Protocol Extensions
to IEEE Std. 1284 Compliant Peripheral and Host Adapter
Ports" - стандарт на драйверы и использование устройств
прикладным программным обеспечением (ПО). Уже при-
няты спецификации BIOS для использования ЕРР драй-
верами DOS. Прорабатывается стандарт на разделяемое
использование одного порта цепочкой устройств или груп-
пой устройств, подключаемых через мультиплексор.

^ IEEE P1284.4 "Standard for Data Delivery and Logical
Channels for IEEE Std. 1284 Interfaces" направлен на реа-
лизацию пакетного протокола достоверной передачи дан-
ных через параллельный порт. Основой служит прото-
кол MLC (Multiple Logical Channels) фирмы
Hewlett-Packard, однако совместимость с ним в оконча-
тельной версии стандарта не гарантируется.

1.3. Применение параллельных интерфейсов
и LPT-портов

Параллельные интерфейсы применяются в компьютерах раз-
ных семейств и классов, здесь мы ограничимся рассмотре-
нием IBM PC-совместимых компьютеров.

1.3.1. Использование параллельных интерфейсов

Распространенным применением LPT-порта является под-
ключение принтера и плоттера.
Остановимся на аппаратных
аспектах - режиме порта и кабеле подключения. Практически
все принтеры могут работать с портом в режиме SPP, но при-
менение расширенных режимов дает свои преимущества:

т Двунаправленный режим (Bi-Di) не повышает произво-
дительность, но служит для сообщения о состоянии и па-
раметрах принтера.

^ Скоростные режимы (Fast Centronics) повышают произво-
дительность принтера, но могут потребовать качественного
кабеля (см. далее). От принтера не требуется каких-либо
дополнительных "интеллектуальных" способностей.

^ Режим ЕСР - потенциально самый эффективный, имеет
системную поддержку во всех версиях Windows. На не-
которых принтерах реализован не полностью (может от-
сутствовать аппаратная компрессия). ЕСР поддерживают
принтеры HP DeskJet моделей бхх, LaserJet 4 и далее,
современные модели фирмы Lexmark. Требует примене-
ния кабеля, по частотным свойствам соответствующего
IEEE 1284.

Простейший вариант кабеля подключения принтера - 18-про-
водный кабель с неперевитыми проводами. Он используется
для работы в режиме SPP. При длине более 2 м желательно,
чтобы хотя бы линии Strobe# и Busy были перевиты с от-
дельными общими проводами. Для скоростных режимов мо-
жет оказаться непригодным, причем сбои могут происходить
нерегулярно и лишь при определенных последовательностях
передаваемых кодов. Встречаются кабели Centronics, у кото-
рых отсутствует связь контакта 17 разъема PC с контактом 36
разъема принтера. При попытке подключения таким кабелем
принтера, работающего в стандарте 1284, появится сообще-
ние о необходимости применения "двунаправленного кабе-
ля". Принтер не может сообщить системе о поддержке рас-
ширенных режимов, на что рассчитывают драйверы принтера.

Неплохие электрические свойства имеют ленточные кабели,
у которых сигнальные цепи (управляющих сигналов) чере-
дуются с общими проводами. Но их применение в качестве
внешнего интерфейса непрактично (нет второго защитного
слоя изоляции, высокая уязвимость) и неэстетично (круг-
лые кабели смотрятся лучше).

Идеальным вариантом являются кабели, в которых все сиг-
нальные линии перевиты с общими проводами и заключены
в общий экран - то, что требует IEEE 1248. Такие кабели
гарантированно работают на скоростях до 2 Мбайт/с, их
длина может достигать 10 м.

В табл. 1.12 приводится распайка кабеля подключения прин-
тера с
разъемом XI типа A (DB25-P) со стороны PC и Х2
типа В (Centronics-36) или типа С (миниатюрный) со сторо-
ны принтера. Использование общих проводов (GND) зави-
сит от качества кабеля (см. выше). В простейшем случае

(18-проводный кабель) все сигналы GND объединяются в
один провод. Качественные кабели требуют отдельного об-
ратного провода для каждой сигнальной линии, однако в
разъемах типа А и В для этого недостаточно контактов (см.
табл. 1.12, где в скобках указаны номера контактов разъема
PC типа А, которым соответствуют обратные провода). В
разъеме типа С обратный провод (GND) имеется для каж-
дой сигнальной цепи; сигнальным контактам 1-17 этого
разъема соответствуют контакты GND 19-35.

XI,разъем
PC типа А

Сигнал

Х2, разъем
PRN типа В

Х2, разъем
PRN типа С

1

Strobe#

1

15

2

DataO

2

6

3

Data1

3

7

4

Data2

4

8

5

Data3

5

9

6

Data4

6

10

7

Data5

7

11

8

Data6

8

12

9

Data7

9

13

10

Ack#

10

3

11

Busy

11

1

12

PaperEnd

12

5

13

Select

13

2

14

AutoLF#

14

17

15

Error*

32

4

16

lnit#

31

14

17

Selecting

36

16

18

GND(1)

19

33

19

GND (2 3)

2021

2425

20

GND (4 5)

2223

2627

21

GND (6 7)

2425

2829

22

GND (8 9)

2627

3031

23

GND (11 15)

29

1922

24

GND (10 12 13)

28

20 21 23

25

GND (14 16 17)

30

32 34 35


 

Ряд отечественных (и стран бывшего СЭВ) принтеров име-
ет интерфейс ИРПР (IFSP в документации на принтеры
ROBOTRON). Он является близким родственником интер-
фейса Centronics, но со следующими отличиями:

as Линии данных инвертированы.
^ Протокол квитирования несколько иной.

^ Ко всем входным линиям (на принтере) подключены пары
согласующих резисторов: 220 Ом к питанию +5 В и 330 Ом
к общему проводу. Это позволяет использовать длинные
кабели, но перегружает большинство интерфейсных адап-
теров PC.

^ Сигналы ошибки и конца бумаги отсутствуют.

Интерфейс ИРПР может быть программно реализован че-
рез обычный LPT-порт, но для устранения перегрузки вы-
ходных линий согласующие резисторы из принтера жела-
тельно удалить. Порт, перегруженный по выходу, может
преподносить всякого рода сюрпризы (естественно, непри-
ятные и трудно диагностируемые).

Для связи двух компьютеров по параллельному интерфейсу
применяются различные кабели в зависимости от режимов
используемых портов. Самый простой и медленный - полу-
байтный режим, работающий на всех портах. Для этого ре-
жима в кабеле достаточно иметь 10 сигнальных и один об-
щий провод. Распайка разъемов кабеля приведена в табл. 1.13.
Связь двух PC данным кабелем поддерживается стандартным
ПО типа Interink из MS-DOS или Norton Commander.

Для машин PS/2 с двунаправленным портом фирма IBM вы-
пускала переходное устройство в комплекте с программой Data
Migration Facility. Переходник устанавливался на разъем LPT-
порта PS/2, а к его разъему Х2 типа Centronics присоединял-
ся обычный принтерный кабель, подключаемый к LPT-порту
любого PC. Так предлагалось решить проблему переноса фай-
лов со старых компьютеров, оснащенных 5" дисководами, на
компьютеры PS/2 с дисководами 3,5". Распайка такого пере-
ходника приведена в табл. 1.14. Как видно, данный переход-
ник нельзя использовать при связи через Interink или Norton
Commander. Если обе соединяемые машины имеют двуна-

правленные порты, переходник обеспечивает симметричную
двунаправленную связь. По скорости обмена превосходит
вышеописанное полубайтное соединение в 2 раза. Это соеди-
нение не соответствует двунаправленному режиму IEEE 1284.

XI, разъем РС#1

Х2, разъем РС#2

Бит

Контакт

Контакт

Бит

DR.O

2

15

SR.3

DR.1

3

13

SR.4

DR.2

4

12

SR.5

DR.3

5

10

SR.6

DR.4

6

11

SR.7

SR.6

10

5

DR.3

SR.7

11

6

DR.4

SR.5

12

4

DR.2

SR.4

13

3

DR.1

SR.3

15

2

DR.O

GND

18-25

18-25

GND


 

Разъемы XI и Х2 - DB25-P (вилки).

XI

Х2

Контакт

Бит

Бит

Контакт

1

CR.O

SR.6

10

2

DR.O

DR.O

2

3

DR.1

DR.1

3

4

DR.2

DR.2

4

5

DR.3

DR.3

5

6

DR.4

DR.4

6

7

DR.5

DR.5

7

8

DR.6

DR.6

8

9

DR.7

DR.7

9

10

SR.6

CR.O

1

12

SR.5

CR.3

36

17

CR.3

SR.5

12

18-25

GND

GND

19-30, 33


 

Разъемы XI - DB25-P (вилка), Х2 - Centmnics-36 (розетка).

Высокоскоростная связь двух компьютеров может выпол-
няться и в режиме ЕСР (режим ЕРР неудобен, поскольку
требует синхронизации шинных циклов ввода/вывода двух
компьютеров). В табл. 1.15 приведена распайка кабеля. В
отличие от предыдущих таблиц, описывающих кабели для
программно-управляемых режимов, в ней приведены имена
сигналов, которые аппаратно генерируются адаптерами пор-
тов. Этот же кабель может использоваться и для связи в байт-
ном режиме. Такая связь поддерживается Windows 95.

Разъем XI

Разъем Х2

Контакт

Имя в ЕСР

Имя в ЕСР

Контакт

1

HostClk

PeriphClk

10

14

HostAck

PeriphAck

11

17

1284Active

PeriphRequest#

15

16

ReverseRequest*

AckReverse*

12

10

PeriphClk

HostClk

1

11

PeriphAck

^MostAck

14

12

AckReverse*

ReverseRequest#

16

13

Xflag

/-

-

15

PeriphRequest#

1284Active

17

2-9

Data [0:7]

Data [0:7]

2-9


 

Подключение сканера к LPT-порту эффективно, только если
порт обеспечивает хотя бы двунаправленный режим (Bi-Di),
поскольку основной поток - ввод. Лучше использовать порт
ЕСР, если этот режим поддерживается сканером (или ЕРР,
что маловероятно).

Подключение внешних накопителей (lomega Zip Drive, CD-
ROM и др.), адаптеров ЛВС и других симметричных уст-
ройств ввода/вывода имеет свою специфику. В режиме SPP
наряду с замедлением работы устройства заметна принци-
пиальная асимметрия этого режима: чтение данных проис-
ходит в два раза медленнее, чем (весьма небыстрая) запись.
Применение двунаправленного режима (Bi-Di или PS/2
Type 1}
устранит эту асимметрию - скорости сравняются.
Только перейдя на ЕРР, можно получить нормальную ско-

рость работы. В режиме ЕРР подключение к LPT-порту по-
чти не уступает по скорости подключению через ISA-кон-
троллер. Это справедливо и при подключении устройств со
стандартным интерфейсом шин к LPT-портам через преоб-
разователи интерфейсов (например, LPT - IDE, LPT - SCSI,
LPT - PCMCIA).

В табл. 1.16 описано назначение выводов разъема LPT-пор-
та в различных режимах и их соответствие битам регистров
стандартного порта.

Контакт

I/O

Бит*

SPP

ECP

ЕРР

1

0/1

CR.O\

Strobe#

Hostdk

Write#

2

0/1

DR.0

DataO

DataO

DataO

3

0/1

DR.1

Data-l

Data1

Data1

4

0/1

DR.2

Data 2

Data 2

Data 2

5

0/1

DR.3

Data3

Data3

Data3

6

0/1

DR.4

Data 4

Data 4

Data 4

7

0/1

DR.5

Data 5

Data 5

Data 5

8

0/1

DR.6

Data 6

Data 6

Data 6

9

0/1

DR.7

Data 7

Data 7

Data 7

10

I

SR.6

Ack#

PeriphClk

INTR#

11

I

SR.7\

Busy

PeriphAck

Wait"

12

I

SR.5

PaperEnd

AckReveree*

^*

13

I

SR.4

Select

Xflag

**

14

0/1

CR.1\

AutoLF#

HostAck

DataStb#

15

I

SR.3

Error"

PeriphRequest#

**

16

0/1

CR2

hit"

ReverseRequest*

Reset*

17

0/1

CR.3\

Selecting

1284Active

AddrStb#


 

* Символом "\" отмечены инвертированные сигналы (1 в регистре
соответствует низкому уровню линии).

** - означает "определяется пользователем".

1.3.2. Конфигурирование LPT-портов

Управление параллельным портом разделяется на два этапа -
предварительное конфшурирование (Setup) аппаратных средств

порта и текущее (оперативное) переключение режимов рабо-
ты прикладным или системным ПО. Оперативное переклю-
чение возможно только в педелах режимов, разрешенных при
конфигурировании. Этим обеспечивается возможность согла-
сования аппаратуры с ПО и блокирования ложных переклю-
чении, вызванных некорректными действиями программы.

Конфигурирование LPT-порта зависит от его исполнения.
Порт, расположенный на плате расширения (мультикарте),
устанавливаемой в слот ISA или ISA+VLB, конфигурирует-
ся джамперами на самой плате. Порт на системной плате
конфигурируется через BIOS Setup.

Конфигурированию подлежат следующие параметры:

^ Базовый адрес - 3BCh, 378h или 278h. При инициализации
BIOS проверяет наличие портов по адресам именно в этом
порядке и, соответственно, присваивает обнаруженным
портам логические имена LPT1, LPT2, LPT3. Адрес 3BCh
имеет адаптер порта, расположенный на плате MDA или
HGC. Большинство портов по умолчанию конфигуриру-
ются на адрес 378h и могут переключаться на 278h.

^ Используемая линия запроса прерывания: для LPT - IRQ7,
для LPT2 - IRQ5. Традиционно прерывания от принтера
не используются, и этот дефицитный ресурс можно
сэкономить. Однако при использовании скоростных ре-
жимов ЕСР (или Fast Centronics) работа через прерыва-
ния может заметно повысить производительность и сни-
зить загрузку процессора.

т Использование канала DMA для режимов ЕСР и Fast
Centronics -
разрешение и номер канала DMA (по умол-
чанию - 3).

Режимы работы порта:

и SPP - порт работает только в стандартном однонаправ-
ленном программно-управляемом режиме.

is PS/2, он же Bi-Directional - отличается от SPP возмож-
ностью реверса канала (установкой СЯ.5=7).

^ Fast Centronics - аппаратное формирование протокола Cen-
tronics с
использованием FIFO-буфера и, возможно, DMA.

т ЕРР - в зависимости от использования регистров порт
работает в режиме SPP или ЕРР.

ж ЕСР - по умолчанию включается в режим SPP или PS/2,
записью в ECR может переводиться в любой режим ЕСР,
но перевод в ЕРР записью в ECR кода 100 не гарантиру-
ется.

^ ЕСР+ЕРР - то же, что и ЕСР, но запись в ECR кода режи-
ма 100 переводит порт в ЕРР.

Выбор режима ЕРР, ЕСР или Fast Centronics сам по себе не
приводит к повышению быстродействия обмена с подклю-
ченными ПУ, а только дает возможность драйверу и ПУ
установить оптимальный режим в пределах их "разумения".
Большинство современных драйверов и приложений пыта-
ются использовать эффективные режимы, так что "подре-
зать им крылья" установкой простых режимов без веских
оснований не стоит.

Принтеры и сканеры могут пожелать режима ЕСР. Windows
(3-х, 95 и NT) имеет системные драйверы для этого режима.
В среде DOS печать через ЕСР поддерживается только спе-
циальным загружаемым драйвером.

Сетевые адаптеры, внешние диски и CD-ROM, подключае-
мые к параллельному порту, могут использовать режим ЕРР.
Для этого режима специальный драйвер пока еще не приме-
няется; использование ЕРР включается в драйвер самого под-
ключаемого устройства.

Большинство современных ПУ, подключаемых к LPT-пор-
ту, поддерживает стандарт 1284 и РпР. Для поддержки этих
функций компьютером с аппаратной точки зрения достаточ-
но иметь контроллер интерфейса, поддерживающий стан-
дарт 1284. Если подключаемое устройство поддерживает РпР,
оно по протоколу согласования режимов 1284 способно "до-
говориться" с портом о возможных режимах обмена. Под-
ключенное устройство должно сообщить операционной сис-
теме (ОС) все необходимые сведения о себе - идентификатор
производителя, модель и набор поддерживаемых команд.
Более подробная информация может содержать идентифи-
катор класса, подробное описание и идентификатор устрой-

ства, с которым обеспечивается совместимость. В соответ-
ствии с принятой информацией ОС может предпринять дей-
ствия по установке требуемого ПО для поддержки данного
устройства.

1.3.3. Неисправности и тестирование параллельных
портов

Тестирование параллельных портов разумно начинать с про-
верки их наличия
в системе. Список адресов установленных
портов появляется в таблице, выводимой BIOS на экран пе-
ред загрузкой ОС. Список можно посмотреть и с помощью
тестовых программ или прямо в B/OS Data Area с помощью
отладчика.

Если BIOS обнаруживает меньше портов, чем установлено
физически, скорее всего, двум портам присвоен один адрес.
При этом работоспособность ни одного из конфликтующих
портов не гарантируется: они будут одновременно выводить
сигналы, но при чтении состояния конфликт на шине ско-
рее всего приведет к искажению данных. Программное тес-
тирование порта без диагностической заглушки (Loop Back)
не покажет ошибок, поскольку при этом читаются данные
выходных регистров, а они у всех конфликтующих (по от-
дельности исправных) портов совпадут. Именно такое тес-
тирование производит BIOS при проверке на наличие пор-
тов. Разбираться с такой ситуацией следует, последовательно
устанавливая порты и наблюдая за адресами, появляющи-
мися в списке.

Если физически установлен только один порт, a BIOS его
не обнаруживает, то либо порт отключен при конфигуриро-
вании, либо он вышел из строя (скорее всего из-за наруше-
ний правил подключения). Иногда вам везет, и неисправ-
ность устраняется при "передергивании" платы в слоте -
там возникают проблемы с контактами.

Наблюдаются и такие "чудеса" - при "теплой" перезагруз-
ке DOS после Windows 95 порт не виден (и приложения не
могут печатать из MS-DOS). Однако после повторной пере-
загрузки ПО^Гпорт оказывается на месте. С этим явлением
легче смириться, чем бороться.

Тестирование портов с помощью диагностических программ
позволяет проверить выходные регистры, а при использова-
нии специальных заглушек - и входные линии. Поскольку
количество выходных линий порта (12) и входных (5) раз-
лично, то полная проверка порта с помощью пассивной за-
глушки принципиально невозможна. Разные программы те-
стирования требуют применения разных заглушек (рис. 1.9).

111.jpg
 

Рис. 1.9. Схема заглушки для тестирования LPT-порта
программой Checkit

Большинство неприятностей при работе с LPT-портами до-
ставляют разъемы и кабели. Для проверки порта, кабеля и
принтера можно воспользоваться специальными тестами из
популярных диагностических программ (Checkit, PCCheck
и т. п.), а можно и попытаться вывести на принтер какой-
либо символьный файл.

т Если вывод файла с точки зрения DOS проходит (копи-
рование файла на устройство с именем LPTn или PRN со-
вершается быстро и успешно), а принтер (исправный) не
напечатал ни одного символа - скорее всего, это обрыв
(неконтакт в разъеме) цепи Strobed.

^ Если принтер находится в состоянии On Line, но появ-
ляется сообщение о его неготовности, причину следует
искать в линии Busy.

^Если принтер, подключенный к порту, в стандартном ре-
жиме (SPP) печатает нормально, а при переходе в ЕСР
начинаются сбои, следует проверить кабель - соответству-
ет ли он требованиям IEEE 1284 (см. выше). Дешевые

кабели с неперевитыми проводами нормально работают
на скоростях 50-100 Кбайт/с, но при скорости 1-
2 Мбайт/с, обеспечиваемой ЕСР, имеют полное право не
работать, особенно при длине более 2 м.

йя Если при установке драйвера РпР-принтера появилось
сообщение о необходимости применения "двунаправлен-
ного кабеля", проверьте наличие связи контакта 17 разъе-
ма DB-25 с контактом 36 разъема Centronics. Хотя эта
связь изначально предусматривалась, в ряде кабелей она
отсутствует.

^ Если принтер искажает информацию при печати, возмо-
жен обрыв (или замыкание) линий данных. В этом слу-
чае удобно воспользоваться файлом, содержащим после-
довательность кодов всех печатных символов. Вот пример
программы на языке Basic:

10 OPEN "b-incod.chr" FOR OUTPUT AS #1
20 FOR J-2 TO 15
30 FOR 1=0 TO 15
40 PRINT#1. СНР$(1б*]+1);

50 NEXT I
60 PRINT#1
70 NEXT J
80 CLOSE #1
90 END

Файл BINCOD.CHR, созданный данной программой, представ-
ляет собой таблицу всех печатных символов (управляющие
коды пропущены), расположенных по 16 символов в строке.
Если файл печатается с повтором некоторых символов или
их групп, по периодичности повтора можно легко вычис-
лить обирванный провод данных интерфейса. Этот же файл
удобно использовать для проверки аппаратной русифика-
ции принтера.

Аппаратные прерывания от LPT-порта используются не все-
гда. Даже DOS-программа фоновой печати PRINT работает с
портом по опросу состояния, а ее обслуживающий процесс
запускается по прерыванию от таймера. Поэтому неисправ-
ности, связанные с цепью прерывания от порта, проявляют-

ся не часто. Однако по-настоящему многозадачные ОС (на-
пример, NetWare) стараются работать с портом по прерыва-
ниям. Протестировать линию прерывания можно, только
подключив к порту ПУ или заглушку. Если к порту с неис-
правным каналом прерывания подключить адаптер локаль-
ной сети, то он, возможно, будет работать, но с очень низ-
кой скоростью: на любой запрос ответ будет приходить с
задержкой в десятки секунд - принятый из адаптера пакет
будет приниматься не по прерыванию (сразу по приходу), а
по внешнему тайм-ауту.

1.3.4. Функции BIOS для LPT-порта

BIOS обеспечивает поддержку LPT-порта, необходимую для
организации вывода по интерфейсу Centronics.

В процессе начального тестирования POST BIOS проверяет
наличие параллельных портов по адресам 3BCh, 378h и 278h
и помещает базовые адреса обнаруженных портов в ячейки
BIOS Data Area 0:0408h, 040Ah, 040Ch, 040Eh. Эти ячейки
хранят адреса портов LPT1-LPT4, нулевое значение адреса
является признаком отсутствия порта с данным номером. В
ячейки 0:0478, 0479, 047А, 047В заносятся константы, зада-
ющие тайм-аут для этих портов.

Поиск портов обычно ведется достаточно примитивно - по
базовому адресу (в регистр данных предполагаемого порта)
выводится тестовый байт (ААЬ или 55h), затем производит-
ся ввод по тому же адресу. Если считанный байт совпал с
записанным, предполагается, что найден LPT-порт; его ад-
рес помещается в ячейку BIOS Data Area. Базовые адреса пор-
тов могут быть впоследствии изменены программно. Адрес
порта LPT4 BIOS самостоятельно установить не может, по-
скольку в списке стандартных адресов поиска имеются толь-
/ ко три указанных.

Обнаруженные порты инициализируются - записью в ре-
гистр управления формируется и снимается сигнал lnit#,
после чего записывается значение OCh, соответствующее ис-
ходному состоянию сигналов интерфейса. В некоторых слу-
чаях сигнал lnit# активен с момента аппаратного сброса до
инициализации порта во время загрузки ОС. Это можно за-

метить по поведению включенного принтера во время пере-
загрузки компьютера - у принтера надолго гаснет индика-
тор On-Line. Следствие этого явления - невозможность рас-
печатки экранов (например, параметров BIOS Setup) no
клавише Print Screen до загрузки ОС.

Программное прерывание BIOS INT 17h обеспечивает следу-
ющие функции поддержки LPT-порта:

is OOh - вывод символа из регистра AL по протоколу
Centronics (без аппаратных прерываний). Данные поме-
щаются в выходной регистр, и, дождавшись готовности
принтера (снятия сигнала Busy), формируется строб.

sa Olh - инициализация интерфейса и принтера (установка
исходных уровней управляющих сигналов, формирова-
ние импульса lnit#, запрет аппаратных прерываний и пе-
реключение на вывод двунаправленного интерфейса).

^ 02h - опрос состояния принтера (чтение регистра состо-
яния порта).

При вызове INT 17h номер функции задается в регистре АН,
номер порта - в регистре DX(Q - LPT1, 1 - LPT2...). При воз-
врате регистр АН содержит код состояния - биты регистра
состояния SR[7:3] (биты 6 и 3 инвертированы) и флаг тайм-
аута в бите 0. Флаг тайм-аута устанавливается при неудач-
ной попытке вывода символа, если сигнал Busy не снимает-
ся в течение времени, определенного для данного порта в
ячейках тайм-аута. В этом случае, согласно протоколу
Centronics, строб данных не вырабатывается.

Перехват прерывания INT 17h является удобным способом
внедрения собственных драйверов принтера. Потребность в
них может возникать при подключении к порту принтера с
интерфейсов ИРПР или необходимости перекодировки сим-
волов.

 

3. Специальные интерфейсы

В этой главе рассматриваются следующие интерфейсы
IBM PC-совместимых компьютеров: интерфейсы устройств
ввода (клавиатуры и манипуляторов), аналоговый и диск-
ретный интерфейсы игрового адаптера, аудиоинтерфейсы и
интерфейсы мониторов.

3.1. Интерфейс клавиатуры

Для подключения клавиатуры предназначен последователь-
ный синхронный интерфейс, состоящий из двух обязатель-
ных сигналов, KB-Data и KB-Clock. Необязательный сигнал
KB-Reset сбрасывает клавиатуру низким уровнем сигнала.
Интерфейс на системной плате XT реализован аппаратной
логикой - регистром сдвига, параллельный выход которого
подключается ко входам порта А системного интерфейса
i8255. По приему байта от клавиатуры вырабатывается ап-
паратное прерывание IRQ2, обработчик которого может про-
читать принятый байт из порта 60h. С помощью бит 7 и 6
порта 61h возможны программная блокировка и сброс кла-
виатуры соответственно. Сброс клавиатуры XT осуществля-
ется обнулением линии KB-Clock.

Интерфейс клавиатуры AT построен на микроконтроллере
18042, обеспечивающем, в отличие от XT, двунаправленный
интерфейс с клавиатурой. Передача информации к клавиа-
туре используется для управления индикаторами ее состоя-
ния и программирования параметров (автоповтор, набор
скан-кодов).

Хотя электрический интерфейс клавиатур XT и AT совпа-
дает (за исключением двунаправленного обмена в AT), ло-
гические форматы посылок существенно отличаются. POST
способен производить диагностику клавиатуры. Подключе-
ние клавиатуры неподходящего типа или отсутствие клавиа-
туры он воспримет как ошибку. Если проверка клавиатуры

разрешена в BIOS Setup, то по этой ошибке POST будет
дожидаться получения кода клавиши F1.

Вид разъемов клавиатур (со стороны задней панели) и назна-
чение контактов приведены на рис. 3.1. Конструктивно воз-
можны два варианта разъема -обычная 5-контактная розетка
DIN или малогабаритная розетка mini-DIN (PS/2). На этот
же разъем через плавкий предохранитель поступает напряже-
ние питания клавиатуры +5 В. Электрически и логически ин-
терфейс клавиатуры PS/2 повторяет AT, поэтому для согла-
сования типа разъема применяют специальные переходники.
Предпочтительнее использовать переходники, выполненные
в виде мягкого кабеля с разъемами. Монолитный переход-
ник, особенно с АТ-клавиатуры на PS/2-разъем, хуже тем, что
малейшее движение кабеля вызывает большой момент силы,
выламывающий переходник из маленького гнезда PS/2.

31.jpg
 

Рис. 3.1. Разъемы подключения клавиатур XT, AT - а и PS/2 - б
(вид со стороны контактов)

Питание от разъема клавиатуры часто используется такими устройствами, как внеш-
ние накопители или адаптеры локальных сетей, подключаемыми к параллельному
порту. Плавкий предохранитель, установленный на системной плате, может не вы-
держать броска тока, потребляемого этими устройствами. При этом откажется ра-
ботать и клавиатура - ее индикаторы не мигнут при включении.

Программируемый микроконтроллер 18042 имеет встроенное
ПО, которое хранится в масочном внутреннем ПЗУ и обес-
печивает вырабатывание запроса прерывания по приему скан-
кода от клавиатуры и отработку управляющих команд от
ЦП. Кроме управления клавиатурой, через программно-
управляемые и программно-читаемые линии внешних пор-
тов контроллера формируются сигналы управления венти-
лем Gate А20, аппаратного системного сброса, а также
считываются сигналы от конфигурационных джамперов си-
стемной платы. Контроллер 18242В, кроме интерфейса кла-

виатуры, поддерживает аналогичный интерфейс дополни-
тельного устройства, например PS/2-Mouse. Контроллер
имеет два порта, доступ к которым осуществляется через
команды контроллера.

Порт ввода, доступный по команде СО/?, используется для
чтения состояния джамперов и ключа:

т Бит 7 - если 0, то клавиатура заблокирована ключом
(KeyLock).

^ Бит б - исходный видеорежим: 0=CGA, 1=MDA.
^ Бит 5 - системная перемычка: 0=замкнута.
т Бит 4 - системное ОЗУ: 0=512 Кбайт и более, 1-256 Кбайт.
^ Бит 1 - вход данных дополнительного интерфейса.
^ Бит 0 - вход данных интерфейса клавиатуры.

Порт вывода, доступный для записи и чтения по командам
D1h и DOh соответственно, имеет следующее назначение бит:

^ Бит 7 - последовательные данные клавиатуры.
?i Бит 6 - синхронизация клавиатуры.

^ Бит 5 - запрос прерывания от дополнительного интер-
фейса (IRQ12).

^ Бит 4 - запрос прерывания от клавиатуры (IRQ1).
т Бит 3 - синхронизация дополнительного интерфейса.

^ Бит 2 - последовательные данные дополнительного ин-
терфейса.

т Бит 1 - вентиль линии адреса А20 (Gate А20).

т Бит 0 - альтернативный сброс процессора (без форми-
рования общего сигнала сброса).

Контроллер расположен в пространстве ввода/вывода по
адресам 60h и 64h, причем по чтению скан-кода клавиату-
ры из порта 60h сохраняется совместимость с XT. Назначе-
ние регистров контроллера клавиатуры приведено в табл. 3.1.
Регистр данных контроллера в режиме записи используется
для подачи команд, относящихся к клавиатуре и собственно
контроллеру. Признаком готовности контроллера является
нулевое значение бита 1 регистра состояния (порт 064h).

Порт,

Назначение

R/W

 

060 RW

Порт данных 8042

064 R

Регистр состояния 8042:

 

Бит 7 - ошибка четности

 

Бит 6 - тайм-аут приемника/общий тайм-аут*

 

Бит 5 - тайм-аут передатчика/выходной буфер

 

дополнительного интерфейса полон*

 

Бит 4: 1 - клавиатура на замке

 

БитЗ:

 

1 - команда,

 

0 - данные

 

Бит 2:

 

0 - Power ON,

 

1 - Reset OK (состояние завершения

 

системного сброса)

 

Бит 1:

 

1 - входной буфер полон,

 

0 - готовность к приему команды/данных

 

Бит 0: 1 - выходной буфер полон

064 W

Регистр команд 8042


 

* Второе назначение бита относится к контроллеру 18242В, имеющему
дополнительный интерфейс для подключения PS/2-Mouse.

Общие команды контроллера 18042:

т DF - разрешить управление линией А20.
т DD - запретить управление линией А20.
^ D1 - запись в порт вывода 18042.
т 00 - чтение порта вывода 18042.
т СО - чтение порта ввода 18042.
т АЕ - разрешение клавиатуры.
^ AD - запрещение клавиатуры.
т AC - чтение ОЗУ контроллера.

ss AB - тест синхронизации и данных.

ш АА - внутренний тест контроллера.

т 60 - запись в контроллер.

^ 20 - чтение контроллера.
Команды управления клавиатурой AT:

т. FF - Reset - сброс и тест клавиатуры.

^ FE - Resend - повтор последней передачи.

^ FB-FD - Set Key Types - установка автоповтора отдель-
ных клавиш.

т F7-FA -Set All Keys - установка операции автоповтора
клавиатуры.

т F6 - Set Default - сброс в начальное состояние и разре-
шение сканирования.

ш F5 - Default Disable - сброс в начальное состояние и за-
прет сканирования.

^ F4 - Enable KB - клавиатура ответит байтом подтверж-
дения АСК и продолжит сканирование.

^ F3 - Set Typematic Rate/Delay - задание задержки и час-
тоты повтора кодов. Последующий байт данных имеет
следующий формат:

Бит 7=0.
Биты [6:5] - задержка, мс:

00=250, 01=500, 10-750. 11=1000.
Биты I^OJ^OO-lFh - скорость повторов, 1/с:

00h=30.0 05h=18,5 OAh=12,0 12h=6,0
01h=26,7 06h=17,l OCh-10,0 14h=5,0
02h=24,0 07h=16,0 ODh=9,2 17h=4,0
03h=21,8 08h=15,0 OFh=8,0 lAh=3,0
04h-20,0 09h=13,3 lOh-7,5 lFh=2,0

m F2 - Read ID Code - запрос на двухбайтный идентифи-
катор.

^ ЕЕ - Echo - эхо-диагностика: возвращает OEEh.

ffi ED - Set/Reset Mode Indicators - управление индикато-
рами клавиатуры. Последующий байт данных:

Бит 0: 1=включить Scroll Lock.

Бит 1: 1 ^включить Num Lock.

Бит 2: 1=включить Caps Lock.
AD - запрет сканирования.
т АЕ - разрешение сканирования.

По нажатии клавиши ее скан-код попадает в регистр дан-
ных. По отпускании в регистр данных попадает сначала пре-
фикс отпускания, затем - скан код. В XT префикса нет, по
отпускании передается скан-код с единицей в бите 7.

Из регистра данных контроллера кроме скан-кодов возмож-
но получение ответов на команды, префикса кода отпуска-
ния клавиши (FO) или кодов особых случаев:

as FA - АСК - подтверждение приема команды.
йй АА - Test OK - внутренний тест прошел.
т FD - Diagnostic Failure - ошибка внутреннего теста.
^ ЕЕ - Echo Response - ответ на эхо-команду.

а? 00, FF - Buffer Error - переполнение буфера или неиден-
тифицированная клавиша.

3.2. Интерфейсы манипуляторов

Устройство ввода мышь (mouse) передает в систему инфор-
мацию о своем перемещении и нажатии-отпускании кнопок.
Обычная конструкция имеет свободно вращающийся мас-
сивный обрезиненный шарик, передающий вращение на два
координатных диска с фотоэлектрическими датчиками - две
открытые оптопары (светодиод - фотодиод), в оптический
канал которых входит вращающийся диск с прорезями.

По интерфейсу с компьютером различают три основных вида
мышей: Bus Mouse, Serial Mouse и PS/2-Mouse. Ожидается
появление мышей с интерфейсом USB.

Bus Mouse (шинная мышь) - вариант, применявшийся в первых
мышах. Содержит только датчики и кнопки; обработка их сигна-
лов производится на специализированной плате адаптера. Муль-

типортовые карты (СОМ-, LPT- и GAME-порты), на которых
установлен и адаптер Bus Mouse, встречаются редко. Кабель
9-проводный, разъем специальный (см. рис. 3.2 и табл. 3.2), хотя
на первый взгляд напоминает разъем PS/2-Mouse.

Контакт

Сигналы

Контакт

Сигналы

1

Vcc (+5 В)

6

Ш - левая кнопка

2

Ха - датчик Х

7

t/b - средняя кнопка

3

ХЬ - датчик Х

8

Rb - правая кнопка

4

Ya - датчик Y

9

GND

5

Yb - датчик Y


 

32.jpg
 

Рис. 3.2. Разъем Bus Mouse

Serial Mouse - мышь с последовательным интерфейсом, под-
ключаемая через 25 или 9-штырьковый разъем СОМ-порта
(табл. 2.3). Имеет встроенный микроконтроллер, который об-
рабатывает сигналы от координатных датчиков и кнопок.
Каждое событие кодируется двоичной посылкой по интер-
фейсу RS-232C (см. 2.5.1).

PS/2-Mouse - мышь, появившаяся с компьютерами PS/2.
Ее интерфейс и 6-штырьковый DIN мини-разъем аналогич-
ны клавиатурному (рис. 3.3). Адаптер и разъем PS/2-Mouse
устанавливается на современных системных платах brand-
name. Контроллер такой мыши может входить в контрол-
лер клавиатуры или занимать дополнительные адреса в про-
странстве ввода/вывода. Для PS/2-Mouse используется
прерывание IRQ12.

33.jpg
 

С интерфейсами Serial Mouse и PS/2-Mouse иногда возни-
кают недоразумения. Хотя оба они последовательные, но
имеют принципиальные различия в уровнях сигналов, спо-
собе синхронизации, частоте и формате посылок:

^ Интерфейс PS/2 использует однополярный сигнал с уров-
нями ТТЛ, питание мыши - однополярное с напряжени-
ем +5 В относительно шины GND. Интерфейс RS-232C,
применяемый в Serial Mouse, использует двухполярный
сигнал (см. 2.1.1) с уровнями срабатывания +3 В
и -3 В, требует двухполярного питания.

ж Синхронный интерфейс PS/2-Mouse использует две раз-
дельные сигнальные линии, одну - для передачи данных,
другую - для сигналов синхронизации. Serial Mouse ис-
пользует асинхронный способ передачи данных по одной
линии.

Ясно, что совместимости между этими интерфейсами нет.
Тем не менее, выпускаются и продаются переходники (пас-
сивные!), позволяющие выбирать способ подключения мыши.
Они предназначены только для универсальных мышей, у ко-
торых встроенный контроллер по напряжению питания спо-
собен распознать, к какому интерфейсу его подключили, и
установить соответствующий тип своего выходного интер-
фейса. Универсальные мыши не особо распространены, по-
этому часто приходится слышать о неудачньк попытках при-
менения таких переходников к обычным Serial Mouse или
PS/2-Mouse.

Дополнительную путаницу вносят мыши для компьютеров
Macintosh, которые имеют разъем, с виду напоминающий
PS/2. Однако разъемы эти разные,'да и интерфейс совер-
шенно иной.

Манипулятор трекбол (trackball) ("шар") представляет со-
бой перевернутую мышь, шарик которой вращают пальца-
ми. Иногда встраивается в клавиатуру.

3.3. Интерфейс игрового адаптера - GAME-порт

Интерфейс игрового адаптера занимает особое место в клас-
сификации. Он позволяет вводить значения дискретных

(4 бита) и аналоговых сигналов (сопротивления 4 резисто-
ров). Изначально порт был предназначен для подключения
джойстиков и других игровых устройств ввода (Paddle), но
может применяться и для подключения "серьезных" датчи-
ков. Метод измерения сопротивления основан на програм-
мном определении длительности импульса, пропорциональ-
ной сопротивлению. Преобразование начинается по выводу
любого байта в регистр адаптера (20 lh), при этом биты 0-3
устанавливаются в 1. Время измеряется до возврата в нуле-
вое состояние бит 0-3, соответствующих четырем аналого-
вым каналам. Если аналоговый вход закорочен на шину GND
или цепь измеряемого сопротивления разорвана, соответству-
ющий бит не обнулится. Поэтому в программе преобразова-
ния должен быть предусмотрен тайм-аут. Для измеряемых
сопротивлений в диапазоне 0-100 кОм время определяется
по формуле

Т=24,2+ llxR,

где Т - время (в микросекундах), a R - сопротивление (в ки-
лоомах).

Точность и линейность преобразования невысока, преобра-
зование выполняется не быстро (до 1,12 мс) и сильно загру-
жает процессор. Однако в отличие от "настоящих" аналого-
цифровых преобразователей этот достается даром - игровой
адаптер входит в состав практически всех комбинированных
плат последовательных и параллельных портов, звуковых
карт или системных плат.

Порт имеет разъем-розетку DB-15S. Назначение выводов и
соответствие сигналов битам регистра приведены в табл. 3.3.
Резисторы подключаются к шине питания +5 В, кнопки - к
шине GND (рис. 3.4). Замыканию кнопок соответствуют нули
в битах 5-7. Аналоговые каналы можно использовать для
дискретного ввода, если их входы подключить к кнопкам,
замыкающим их на шину GND, и к резисторам, "подтягива-
ющим" их к уровню + 5 В. Два джойстика (А и В) подклю-
чаются через Y-образный переходник-разветвитель. На зву-
ковых картах через разъем "Game" вместе с джойстиками
могут подключаться и внешние MIDI-устройства через спе-
циальный кабель-адаптер, обеспечивающий гальваническую

развязку входного сигнала и ограничение выходного тока (см.
рис. 2.16). Для интерфейса MIDI используются контакты 12
и 15, ранее предназначавшиеся для шин GND и +5V. Такое
назначение делает безопасным подключение адаптера MIDI
к "чистому" игровому порту и обычного джойстика к игро-
вому порту с сигналами MIDI.

34.jpg
 

Рис. 3.4. Подключение датчиков к игровому адаптеру

Бит

Назначение

Контакт

7

Джойстик В кнопка #2

14

6

Джойстик В кнопка #1

10

5

Джойстик А кнопка #2

7

4

Джойстик А кнопка # 1

2

3

Джойстик В Y-координата

13

2

Джойстик В Х-координата

11

1

Джойстик А Y-координата

6

0

Джойстик А Х-координата

3

-

GND

4, 5, (12)

-

+5В

1, 8, 9,(15)

-

MIDI-Rx - вход (на звуковой карте)

15

-

MIDI-Tx - выход (на звуковой карте)

12


 

3.4. Аудиоинтерфейсы

В первых PC этот интерфейс был однонаправленным - тра-
диционный канал управления звуком (PC Speaker) представ-
лял собой примитивный синтезатор. Теперь для звуко-
воспроизведения (и звукозаписи) используется ставший
стандартным двунаправленный цифровой аудиоканал. Роль
PC Speaker сводится к подачам гудков при загрузке, иден-
тификации ошибок во время POST, а также к сопровожде-
нию сообщений об ошибках.

3.4.1. PC Speaker

Стандартный канал управления звуком PC Speaker рассчи-
тан на подключение высокоомного малогабаритного дина-
мика. Логическая схема канала приведена на рис. 3.5. Звук
формируется из тонального сигнала от второго канала сис-
темного таймера, которым можно программно управлять.
Частоту сигнала можно изменять, программируя коэф-
фициент деления счетчика-таймера, который расположен в
пространстве ввода/вывода по адресу 042h. При записи (и
чтении) 16-битный двоичный код передается парой (обяза-
тельно!) 8-битных операций (сначала младший байт, потом
старший). Разрешая/запрещая формирование сигнала про-
граммно-управляемым битом 0 системного порта 61h, мож-
но подавать сигналы определенной длительности. Такой спо-
соб формирования звука не загружает процессор и позволяет
исполнять незамысловатые мелодии. С учетом инерции слуха
быстрым переключением частот можно достигать эффекта
многоголосия.

Более интересные звуки можно извлекать, используя прин-
цип широтно-импульсной модуляции, программно осуще-
ствляемой через бит 1 порта 61h. В этом случае динамик
выполняет роль фильтра низких частот (инерционного зве-
на) демодулятора. Процессоры, начиная с 80286, способны
формировать поток управляющих сигналов, который позво-
ляет воспроизводить музыкальный или речевой сигнал с ка-
чеством карманного радиоприемника. Однако такое форми-
рование звука практически полностью загружает процессор.
Качество воспроизведения сильно зависит от частотных

свойств динамика. Предпочтительнее более крупные дина-
мики, у которых лучше воспроизведение нижних частот, - с
ними можно добиться даже разборчивости речи. Драйвер для
звукоизвлечения существует также и для Windows З.х/95, но
в стандартную поставку Windows не входит.

35.jpg
 

Рис. 3.5. Канал управления звуком

3.4.2. Цифровой аудиоканал

Кроме стандартного канала управления звуком, фактичес-
ки стандартизованными являются средства работы с аудио-
сигналом, имеющиеся на плате Sound Blaster фирмы
Creative Labs (табл. 3.4). Звуковые карты обычно имеют
16-битную шину ISA (8-битные нежелательны), PCI или
PC Card, новые модели поддерживают РпР. Звуковая кар-
та в своем составе имеет цифровой канал записи-воспроиз-
ведения моно- и стереофонического сигнала, микшер, син-
тезатор и MIDI-порт.

Цифровой аудиоканал обеспечивает возможность моно- или
стереофонической записи и воспроизведения аудиофайлов
с уровнем качества от кассетного магнитофона до аудио-CD.
Запись производится оцифровкой сигнала с частотой диск-
ретизации 5-44,1 кГц. Разрядность используемых ADC и
DAC (аналого-цифровых и цифроаналоговых преобразо-
вателей) варьируется от 8 до 16 бит. Более совершенные схе-
мы имеют встроенные средства компрессии сигнала, на-
пример, по методу адаптивной дельта-импульсно-кодовой
модуляции (ADPCM). В этом случае в цифровом виде хра-
нятся не значения выборок, а специальным образом обрабо-
танные разности величин соседних выборок, что позволяет
(при сохранении качества) значительно уменьшить объем
записи. Компрессия аудиосигнала применяется, например,
в кодеках MPEG и голосовых модемах. На стандартных
аудио-CD компрессия не применяется.

Для передачи потока данных по шине в цифровой аудиока-
нал и обратно используются 8- и/или 16-битные каналы
DMA. Звуковой канал использует аппаратные прерывания
и порты ввода/вывода. Для организации телефонной связи
по сети (например, IPhone) нужен полнодуплексный режим
(Full Duplex), реализуемый далеко не на всех картах.

Адрес*

R/W

Назначение

SB+0 (388Ь)

R

FM music status

SB+0 (388h)

W

FM music address register

SB+1 (389h)

W

FM music data register

SB+2 (38Ah)

W

Advanced FM music address register

SB+3 (38Bh)

W

Advanced FM music data register

SB+4

W

Mixer, I/O setup address register

SB+5

R/W

Mixer, I/O setup data register

SB+6

W

DSP reset

SB+8

W

FM music address register

SB+9

W

FM music data register

SB+OAh

R

DSP read data

SB+OCh

W

DSP write data or command

SB+OCh

R

DSP write buffer status

SB+ODh

R

DSP timer interrupt clear

SB+OEh

R

DSP data available status

SB+OFh

R

16-bit voice interrupt clear

SB+(10h...l3h)

 

Reserved

MPU+0

R/W

MPU-401 data

MPU+1

R

MPU-401 status

MPU+1

W

MPU-401 command


 

* 38xh - адреса регистров FM music для плат Adiib.
SB - базовый адрес Sound Blaster (220h, 240h, 260h, 280h).
MPU - базовый адрес MIDI-порта (300h, 330h).

Оцифрованный звук хранится в файлах. Размер файла за-
висит от длительности записи, разрядности преобразования,
частоты квантования и количества каналов (моно или сте-
рео). Эти файлы редактируются ПО, которое позволяет вы-
вести на экран подобие осциллограмм записанных сиг-
налов.

Микшер с программным управлением обеспечивает регули-
ровку входных и выходных сигналов, а также настройку тем-
бра по низким и высоким частотам. Микшер позволяет сме-
шивать входные сигналы от нескольких источников.

Синтезатор обеспечивает имитацию звучания музыкальных
инструментов и воспроизведение различных звуков. В зву-
ковых картах в основном используют два метода синтеза -
частотный и волновой.

FM Music Synthesizer - синтезатор с частотной модуляцией
(Frequency Modulated) имеет несколько каналов (голосов).
Каждый канал содержит несколько синусоидальных гене-
раторов (операторов), управляющих параметрами (часто-
та, амплитуда) друг друга. Частотный синтезатор при не-
большом числе операторов не обеспечивает хорошего
синтеза.

Более совершенные платы имеют WT Music Synthesizer -
синтезаторы на основе таблицы волн (Wave Table) - их на-
зывают также волновыми синтезаторами, - хранящие в сво-
ей постоянной памяти образцы некоторых звуков натураль-
ных инструментов. При воспроизведении звука выходной
сигнал пересчитывается встроенным процессором на соот-
ветствующие параметры частоты и амплитуды. Для хране-
ния большего количества образцов возможна установка
ОЗУ. Волновые синтезаторы обеспечивают высокое каче-
ство синтеза.

Для подключения внешних MIDI-устройств звуковые кар-
ты имеют порт MIDI (Musical Instrument Device Interface).
Интерфейс - токовая петля с питанием от передатчика и
гальванической развязкой входных цепей приемника (см.
главу 2) - выведен на контакты 12, 15 разъема игрового адап-
тера. Обычно MIDI-порт эмулирует UART MPU-401, ис-
пользующий два порта ввода/вывода и прерывание.

Для создания специальных эффектов (хор, реверберация и
т. п.) на более сложных звуковых картах применяются про-
цессоры обработки сигналов DSP (Data Signal Processor).

Звуковая карта имеет набор разъемов для подключения вне-
шних сигналов (входные - микрофон, линейный вход, CD-
ROM; выходные - линейный выход, выход на колонки или
наушники), некоторые платы имеют цифровой вход от CD-
ROM. Встроенный усилитель имеет мощность до 4 Вт на ка-
нал. Колонки (Speakers) для PC имеют специальный маг-
нитный экран или улучшенную конструкцию магнитной
системы динамиков, чтобы предотвратить воздействие маг-
нитного поля на монитор. Активные колонки (Active
Speakers)
имеют встроенный усилитель и требуют внешнего
питания. Полоса частот колонок PC недостаточна для Hi-Fi
воспроизведения. Более качественные системы имеют две
колонки для средних и высоких частот и одну большую (саб-
вуфер) - для низких.

Для выдачи MIDI-команд существуют специальные MIDI-
клавиатуры,
простейшие фиксируют и передают только факт
нажатия-отпускания клавиш, более сложные имеют динами-
ческие датчики, реагирующие на силу и скорость нажатия.
Динамическая клавиатура в сочетании с хорошим WT-син-
тезатором обеспечивает достаточно полную имитацию фор-
тепиано и других инструментов. MIDI-интерфейс имеют
многие профессиональные и полупрофессиональные клавиш-
ные синтезаторы.

Подключение к звуковой карте внешних устройств осуще-
ствляется через малогабаритные стереоразъемы - "джеки"
(Jack) - на задней панели:

si Line In - линейный вход от магнитофона, тюнера, проиг-
рывателя, синтезатора и т. п. Чувствительность поряд-
ка 0,1-0,3 В.

йй Micin - микрофонный вход, чувствительность 3-10 мВ.

^ Line Out - линейный выход сигнала на внешний усили-
тель или магнитофон, уровень сигнала порядка 0,1-0,3 В.

^ Speaker Out - выход на акустические системы или голов-
ные телефоны. Подключать к нему внешний усилитель

мощности нецелесообразно, поскольку здесь искажения
больше, чем на линейном выходе.

Ґs Joystick/MIDI - разъем подключения джойстика. Для под-
ключения MIDI-устройств необходим кабель-адаптер (см.
рис. 2.16).

Для подключения внутренних устройств CD-ROM к анало-
говым входам используются четырехштырьковые разъемы,
различающиеся как шагом между выводами, так и их назна-
чением. Часто ставят рядом несколько разъемов с параллель-
но соединенными сигнальными контактами. Но это может
не сработать, если кабель имеет другое расположение сигна-
лов. Тогда можно переустановить контакты на разъеме ка-
беля, для чего иголкой нажимают на фиксирующий выступ
контакта, после чего контакт вытягивают в сторону кабеля
и переставляют в другое гнездо. Сигнальные контакты аудио-
входов см. на рис. 3.6. Разъем может иметь ключ с противо-
положной стороны (по ошибке сборщика кабеля или по внут-
реннему стандарту его производителя). Задача подключения
облегчается тем, что требует правильной расстановки толь-
ко двух сигнальных контактов. Контакты общего провода
выделяются тем, что на плате соединяются с шиной, а на
кабеле - с экраном. Положение левого и правого каналов
аудио-CD в большинстве случаев непринципиально.

36.jpg
 

Рис. 3.6. Внутренние разъемы подключения аудиосигналов

3.5. Интерфейсы видеомониторов

В традиционной технике цветного телевизионного вещания
(PAL, SECAM или NTSC) видеосигнал непосредственно не-
сет информацию о мгновенном значении яркости, а цвето-
вая информация передается в модулированном виде на до-
полнительных частотах. Таким образом обеспечивается
совместимость черно-белого приемника, игнорирующего цве-

товую информацию, с цветным передающим каналом. Од-
нако для вывода графической информации с высоким раз-
решением ни одна из традиционных вещательных систем не
подходит, поскольку они имеют существенно ограниченную
полосу пропускания цветовых каналов.

Для графики низкого разрешения, при которой частоты син-
хронизации были близки к стандартным телевизионным,
использовался интерфейс Composite Video. По коаксиально-
му кабелю (75 Ом) передавался полный стандартный видео-
сигнал с размахом около 1,5 В. В видеотехнике этот сигнал
называют низкочастотным, имея в виду то, что по нему по-
дается прямой, а не модулированный сигнал. Соответству-
ющий ему вход имеется не у каждого телевизора. При нали-
чии дополнительного радиочастотного модулятора RFM
(Radio Frequency Modulator) можно было подключаться к
антенному входу стандартного телевизионного приемника,
но при этом еще более снижалось реальное разрешение гра-
фики. Для композитного интерфейса используют коаксиаль-
ные разъемы RCA ("колокольчик"), широко применяемые
в видео- и аудиотехнике.

Для мониторов при высоком разрешении можно использо-
вать только прямую подачу сигнала на входы видеоусили-
телей базовых цветов - RGB-вход (Red Green Blue - крас-
ный, зеленый и синий). Интерфейс между видеоадаптером
и монитором может быть как дискретным (с сигналами ТТЛ),
так и аналоговым.

3.5.1. Дискретный интерфейс RGB TTL

Первые мониторы для PC имели цифровой интерфейс с
уровнями ТТЛ (табл. 3.5) - RGB TTL Для монохромного
монитора использовали лишь два сигнала - видео (вклю-
чить/выключить луч) и повышенной яркости. Таким обра-
зом, монитор мог отобразить три градации яркости:

хотя 22=4, но "темный пиксел" и "темный с повышенной
яркостью" неразличимы. В цветных мониторах класса CD
(Color Display)
имелось по одному сигналу для включения
каждого луча и общий сигнал повышенной яркости. Таким
образом, можно было задать 16 цветов. Следующий класс -
улучшенный цветной дисплей ECD (Enhanced Color Display)

имел цифровой интерфейс с двумя сигналами на каждый
базовый цвет. Сигналы позволяли задавать одну из 4 града-
ций интенсивности; общее количество кодируемых цветов
достигло 26=64. Сигналы RED, GREEN, BLUE и Red, Green,
Blue обозначают, соответственно, старшие и младшие биты
базисных цветов.

Строчная и кадровая синхронизация монитора осуществля-
ется сигналами H.Sync и V.Sync. Монохромные адаптеры
MDA и HGC, работающие с высоким разрешением (720х350
пикселов), используют высокую частоту развертки. Адаптер
CGA работает с низкими частотами (параметры синхрони-
зации близки к телевизионным). Адаптеры и мониторы EGA
могут работать с любыми из этих частот. Для облегчения
переключения режимов генератора развертки монитора ис-
пользуют сигнал V.Sync: полярность импульсов определяет
диапазон частот развертки текущего видеорежима. Для всех
разновидностей интерфейса RGB TTL используется разъем
DB-9S.

Контакт

Монитор

MDA/HGC

CGA

EGA Color/Mono

1

GND

GND

GND

2

GND

GND

Red

3

-

RED

RED

4

-

GREEN

GREEN

5

-

BLUE

BLUE

6

Intensiv.

Intensiv.

Green/lntens.

7

Video

Reserved

Blue/Video

8

+H.Sync.

+H.Sync.

+H.Sync.

9

-V.Sync.

+V.Sync.

-(+)V.Sync.


 

3.5.2. Аналоговый интерфейс RGB

Из-за ограничений цифрового интерфейса пришлось перей-
ти на аналоговый интерфейс, перенеся цифроаналоговые

преобразователи сигналов базовых цветов из монитора на
графический адаптер. Такой интерфейс с 8-разрядными
ЦАП для каждого цвета в настоящее время позволяет вы-
водить 16,7 миллиона цветов (True Color). Этот интерфейс
называется RGB Analog, в нем базовые цвета передаются
аналоговыми сигналами с отдельными обратными линия-
ми по витым парам. Черному цвету соответствует нулевой
потенциал на линиях всех цветов, полной яркости каждого
цвета соответствует уровень +0,7 В. Сигналы управления,
состояния и синхронизации передаются сигналами ТТЛ.
Впервые аналоговый интерфейс был применен на адаптере
PGA фирмы IBM, где для него использовался 9-контакт-
ный разъем DB-9S (табл. 3.6). В дальнейшем, начиная с
адаптеров VGA, стали применять малогабаритный 15-кон-
тактный разъем с таким же внешним размером (табл. 3.7).
По назначению сигналов эти интерфейсы в основном со-
впадают, и существуют даже переходные кабели с 15- на
9-контактные разъемы (табл. 3.8). В адаптере PGA исполь-
зуется совмещенная синхронизация (Composite Sync) сигна-
лом (H+V)Sync., этот режим поддерживают и многие совре-
менные мониторы.

Контакт

Сигнал

1

Red

2

Green

3

Blue

4

(H+V)Sync

5

Mode Control

6

Red Return

7

Green Return

8

Blue Return

9

GND


 

Контакт
DB-15

Видеоадаптер

Монитор

MCGA/VGA/SVGA/XGA

Mono

Color

1

Red

-

Red

2

Green

Video

Green

3

Blue

-

Blue

4

ID2

-

-

5

GND/DDC Return1

SelfTest/DDC
Return

SelfTest/DDC
Return

6

Red Return

Key

Red Return

7

Green Return

Video Return

Green Return

8

Blue Return

-

Blue Return

9

Ключ (нет контакта)

-

-

10

GND

GND

GND

11

IDO

-

GND

12

ID1/SDA1

-/SDA

GND/SDA

13

H.Sync/(H+V)Sync2

H.Sync/(H+V)Sync

H.Sync/(H+V)Sync

14

V.Sync

V.Sync

V.Sync

15

SCL'

SCL

SCL


 

Сигналы DDC Return, SDA и SCL используются только при поддержке
DDC. При этом контакт 9 может использоваться для питания логики
монитора.

Сигнал (H+V)Sync используется при совмещенной синхронизации
(Composite Sync).

Контакт DB9

Сигнал

Контакт DB15

1

Red

1

2

Green

2

3

Blue

3

4

H.Sync

13

5

V.Sync

14

6

Red Return

6

7

Green Return

7

8

Blue Return

8

9

GND

10, 11


 

Несмотря (в прямом смысле) на наличие ключа - D-об-
разного кожуха - 15-контактные разъемы ухитряются встав-
лять в перевернутом положении, при этом один из контак-
тов среднего ряда подгибается, а потом и ломается
(штырьки этих разъемов тоньше и слабее, чем у 9-контакт-
ных). Естественно, монитор, подключенный таким образом,
работать не будет.

В компьютерах Macintosh монитор, совместимый по пара-
метрам с VGA, имеет разъем DB-15P (такой же, как и у
Game-порта PC). Назначение его выводов приведено в
табл. 3.9.

Контакт

Сигнал

1

Red Return

2

Red

3

Comp. Sync

4

IDO

5

Green

6

Green Return

7

ID1

8

He используется

9

Blue

10

ID2

11

Sync. GND

12

V.Sync

13

Blue Return

14

H.Sync GND

15

H.Sync


 

Кроме передачи изображения по интерфейсу передают ин-
формацию, необходимую для автоматизации согласования
параметров и режимов монитора и компьютера. "Интере-
сы" компьютера представляет дисплейный адаптер, к кото-
рому и подключается монитор. С его помощью обеспечива-
ются идентификация монитора, необходимая для РпР, и
управление энергопотреблением монитора.

Для простейшей идентификации в интерфейс ввели три ло-
гических сигнала IDO-ID2, по которым адаптер мог опреде-
лить тип подключенного монитора IBM (табл. 3.10). Со сто-
роны монитора эти линии либо подключались к шине GND,
либо оставлялись неподключенными. Однако из этой систе-
мы идентификации использовали лишь сигнал ID1, по кото-
рому определяют подключение монохромного монитора.
Монохромный монитор может быть опознан адаптером и
иначе - по отсутствию нагрузки на линиях Red и Blue.

Дисплей

IDO

ID1

ID2

Монохромный 12" IBM8503

NC

GND

NC

Цветной 12" IBM8513

GND

NC

NC

Цветной 14" IBM8512

GND

NC

NC

Цветной 15" IBM8514

GND

NC

GND


 

Параллельную идентификацию мониторов заменила после-
довательная по каналу цифрового интерфейса VESA DDC
(Display Data Channel). Этот канал построен на интерфейсе
PC (DDC2B) или ACCESS Bus (DDC2AB), которые исполь-
зуют всего два ТТЛ-сигнала SCL и SDA. Интерфейс DDC1
является однонаправленным - монитор посылает адаптеру
блок своих параметров по линии SDA (контакт 12), которые
синхронизируются сигналом V.Sync (контакт 14). На время
приема блока параметров адаптер может повысить частоту
V.Sync до 25 кГц (генератор кадровой развертки по такой
высокой частоте синхронизироваться не будет). Интерфейс
DDC2 является двунаправленным; для синхронизации ис-
пользуется выделенный сигнал SCL (контакт 15). Интерфейс
DDC2AB отличается тем, что допускает подключение ПУ, не
требующих высокой скорости обмена, к компьютеру по по-
следовательной шине ACCESS Bus. При этом внешний разъем
шины выносится на монитор (см. табл. 7.3).

Блок параметров расширенной идентификации дисплея EDID
(Extended Display Identification) имеет одну и ту же струк-
туру для любой реализации DDC (табл. 3.11).

Смещение,
байт

Длина,
байт

Назначение

0

8

Заголовок (индикатор начала потока
EDID)

8

10

Идентификатор изделия (назначается
производителем)

18

2

Версия EDID

20

15

Основные параметры и возможности
дисплея

35

19

Установленные параметры
синхронизации

54

72

Дескрипторы параметров
синхронизации (байты 4-18)

126

1

Флаг расширения

127

1

Контрольная сумма


 

Для управления энергопотреблением монитора в соответствии
со стандартом VESA DPMS (Display Power Management
Signaling) используются сигналы кадровой и строчной син-
хронизации V.Sync и H.Sync (табл. 3.12).

Режим

H.Sync

V.Sync

On

Активен

Активен

Standby

Неактивен

Активен

Suspend

Активен

Неактивен

Off

Неактивен

Неактивен


 

Разъемы, применяемые в современных адаптерах и монито-
рах SVGA, не предназначены для передачи высокочастотных
сигналов. Пределом для них является примерно 150 МГц, что
для высокого разрешения и высокой частоты регенерации
недостаточно. Поэтому на больших профессиональных мо-
ниторах с высокими разрешением и частотами синхрониза-
ции и на соответствующих адаптерах имеются BNC-разьемы
для соединения с помощью коаксиальных кабелей.

5 Зак.№530

3.5.3. Комбинированный интерфейс EVC

Для расширения частотного диапазона и, учитывая тенден-
цию к использованию последовательных шин USB и
FireWire, для подключения ПУ к системному блоку компь-
ютера VESA предложила новый тип разъема EVC (Enhanced
Video Connector). Кроме обычного аналогового интерфейса
RGB и канала DDC2 разъем EVC имеет контакты для ви-
деовхода, входные и выходные стереоаудиосигналы, шины
USB и FireWire, а также линии питания постоянного тока
для зарядки аккумуляторов портативных ПК. Разъем имеет
две секции: высокочастотную для присоединения четырех
коаксиальных кабелей и низкочастотную на 30 контактов
(рис. 3.7). Контакты высокочастотной секции, хотя и не яв-
ляются коаксиальными, позволяют передавать сигналы с
частотами до 2 ГГц. Контактом экранов является крестооб-
разная перегородка. При использовании 75-омных коакси-
альных кабелей на частоте 500 МГц гарантируется уровень
отражений и перекрестных помех не выше 2%. Контакты С1,
С2 и С4 используются для передачи цветовых сигналов R,
G и В соответственно, контакт СЗ служит для передачи син-
хросигнала пикселов. Низкочастотная секция описана в
табл. 3.13. Разъем поделен на компактные зоны для каждой
группы сигналов, правда, шины USB и 1394 используют об-
щий контакт для экрана. Назначение контактов видеовхода
(S-Video или композитный, PAL или NTSC) может програм-
мироваться по каналу DDC2.

37.jpg
 

Рис. 3.7. Разъем EVC (розетка)

Стандарт определяет три уровня реализации: базовый, муль-
тимедийный и полный. Базовый включает только видеосиг-
налы и DDC, в мультимедийном должны быть аудиосигна-
лы. При использовании коннектора в полном объеме монитор
превращается в коммутационный центр, который соединя-
ется с компьютером одним кабелем, а все остальные ПУ

(включая клавиатуру, мышь, принтер) подключаются к мо-
нитору. Разъем может использоваться для подключения
портативного ПК к док-станции. EVC собирает сигналы от
разных подсистем - графической, видео, аудио, последова-
тельных шин и питания. Этот общий разъем, устанавливае-
мый на корпусе системного блока, может соединяться с раз-
ными платами внутренними кабелями через помежуточные
разъемы.

Контакт

Цепь

Контакт

Цепь

Контакт

Цепь

1

Audio Output,
Right

11

Changing
power input, +

21

Audio input,
left

2

Audio Output,
Left

12

Chai-ging
power input, -

22

Audio input,
right

3

Audio Output,
Return

13

Video input,
Yor
composite in

23

Audio input,
return

4

Sync Return

14

Video input,
return

24

Stereo sync
(TTL)

5

Horizontal
Sync (TTL)

15

Video input,
С in

25

DDC return

6

Vertical Sync
(TTL)

16

USB data +

26

DDC data
(SDA)

7

RESERVED 1

17

USB data -

27

DDC, clock
(SCL)

8

RESERVED 2

18

USB/1394
common
mode shield

28

+5 В

9

1394 pair A,
data-

19

1394 Vg

29

1394 pair В,
clock +

10

1394 pair B,
data+

20

1394 Vp

30

1394 pair В,
clock-

 

 

Интерфейс АТА

Интерфейс АТА- AT Attachment for Disk Drives - разрабаты-
вался в 1986-1990 гг. для подключения накопителей на жест-
ких магнитных дисках к компьютерам IBM PC AT с шиной
ISA. Стандарт, выработанный комитетом ХЗТ10, определя-
ет набор регистров и назначение сигналов 40-контактного
интерфейсного разъема. Интерфейс появился в результате
переноса контроллера жесткого диска ближе к накопителю,
то есть создания устройств со встроенным контроллером -
IDE (Integrated Device Electronic). Стандартный для AT кон-
троллер жесткого диска был перенесен на плату электрони-
ки накопителя с сохранением регистровой модели. При этом
удлинилась связь с устройством со стороны системной шины,
которую непосредственно выводить на длинный ленточный
кабель было нецелесообразно. Это сказалось бы на скорости
работы шины, надежности и цене. Из всех сигналов шины
ISA выбрали минимальный набор сигналов, часть из кото-
рых буферизовали на небольшой плате, устанавливаемой в
слот, а часть направили прямо на разъем ленточного кабеля
нового интерфейса. Из сигналов системной шины потребо-
вались следующие:

^ шина данных - используется полностью;

т шина адреса - 3 младших бита поступают в интерфейс,
старшие биты и сигнал AEN проходят через дешифратор,
вырабатывающий сигналы выбора устройства CSO# и
CS1#;

^ шина управления - используются сигналы чтения и за-
писи портов и аппаратного сброса, запрос прерывания,
пара сигналов канала DMA, сигналы готовности и
управления разрядностью передачи.

Поскольку стандартный контроллер AT позволял подклю-
чать до двух накопителей, эту возможность получил и ин-
терфейс АТА. Однако теперь два накопителя стали означать
и два контроллера. Их подключили к одной интерфейсной

шине, а для программной совместимости бит выбора нако-
пителя (DEV) в регистре номера головки и номера устрой-
ства (Drive/Head register) стали использовать для выбора ус-
тройства. Для взаимодействия пары устройств на шине ввели
несколько дополнительных сигналов. Так появился интерфейс
АТА для подключения устройств IDE к шине ISA. Позже их
стали подключать и к локальным шинам, но набор сигналов
интерфейса и протоколы обмена сохранились. Достаточно
универсальный набор сигналов позволяет подключать любое
устройство со встроенным контроллером, которому в про-
странстве портов ввода/вывода достаточно того же набора
регистров и которое способно поддержать режим выбора уст-
ройства через вышеупомянутый бит. Принятая система ко-
манд и регистров, являющаяся частью спецификации АТА,
ориентирована на блочный обмен данными с устройствами
прямого доступа. Для иных устройств существует специфи-
кация ATAPI, основанная на тех же аппаратных средствах, но
позволяющая обмениваться пакетами управляющей инфор-
мации (PI - Package Interface). Пакетный интерфейс позво-
ляет расширить границы применения шины АТА.

Адресация в АТА тоже имеет "дисковые корни": для нако-
пителей изначально указывали адрес цилиндра (Cylinder),
головки (Head) и сектора (Sector) - так называемая трех-
мерная адресация CHS.
Позже по ряду причин стали разли-
чать физическую (реальную для накопителя) и логическую
(по которой с устройством общается программа) адресацию
CHS.
При этом одно и то же устройство могло иметь раз-
личную логическую геометрию (но, естественно,
CxHxSnor < CxHxStjHo). Преобразование логической адреса-
ции в физическую выполняется встроенным контроллером
устройства. Позже пришли к линейной адресации логических
блоков LBA
(Logical Block Addressing), где адрес блока (сек-
тора) определяется 28-битным числом.

В спецификации АТА фигурируют следующие компоненты:

^ Хост-адаптер - средства сопряжения интерфейса АТА с
системной шиной (набор буферных схем между шинами
ISA и АТА). Хостом мы будем называть компьютер с хост-
адаптером интерфейса АТА.

^ Кабель-шлейф с двумя или тремя 40-контактными IDC-
разъемами. В стандартном кабеле одноименные контак-
ты всех разъемов соединяются вместе.

^ Ведущее устройство (Master) - ПУ, в спецификации АТА
официально называемое Device-0 (устройство 0).

^ Ведомое устройство (Slave) - ПУ, в спецификации офи-
циально называемое D^ice-У (устройство 1).

Если к шине АТА подключено одно устройство, оно должно
быть ведущим. Если подключены два устройства, одно долж-
но быть ведущим, другое - ведомым. О своей роли (ведущее
или ведомое) устройства "узнают" с помощью предваритель-
но установленных конфигурационных джамперов. Если при-
меняется "кабельная выборка" (см. ниже), роль устройства
определяется его положением на специальном кабеле-шлейфе.

Оба устройства воспринимают команды от хост-адаптера од-
новременно. Однако исполнять команду будет лишь выбран-
ное
устройство. Если бит DEV^O, выбрано ведущее устрой-
ство, если DЈV=1 - ведомое. Выходные сигналы на шину АТА
имеет право выводить только выбранное устройство. Такая
система подразумевает, что, начав операцию обмена с одним
из устройств, хост-адаптер не может переключиться на об-
служивание другого
до завершения начатой операции. Парал-
лельно могут работать только устройства IDE, подключаемые
к разным шинам (каналам) АТА. Спецификация АТА-4 оп-
ределяет способ обхода этого ограничения (см. 6.6).

Выполняемая операция и направление обмена данными меж-
ду устройством и хост-адаптером определяются предвари-
тельно записанной командой. Непременным компонентом ус-
тройства является буферная память. Ее наличие позволяет
выполнять обмен данными в темпе, предлагаемом хост-адап-
тером (в пределах возможности устройства), без оглядки на
внутреннюю скорость передачи данных между носителем и
буферной памятью ПУ.

Для подключения устройств IDE существует несколько раз-
новидностей интерфейса:

^ АТА, он же AT-BUS - 16-битный интерфейс подключения
к шине компьютера AT. Наиболее распространенный

8 Зак.№530

40-проводной сигнальный и 4-проводной питающий интер-
фейс для подключения дисковых накопителей к компью-
терам AT. Для миниатюрных (2,5" и менее) накопителей
используют 44-проводной кабель, по которому передается
и питание.

^ PC Card ATA - 16-битный интерфейс с 68-контактным
разъемом PC Card (PCMCIA) для подключения к блок-
нотным PC.

т XT IDE (8-бит), он же XT-BUS - 40-проводный интер-
фейс, похожий на ATA, но несовместимый с ним.

^ МСА IDE (16-бит) - 72-проводный интерфейс, предназ-
наченный специально для шины и накопителей PS/2.

^ АТА-2 - расширенная спецификация ATA. Включает 2 ка-
нала, 4 устройства, PIO Mode 3, multiword DMA mode 1,
Block mode, объем диска до 8 Гбайт, поддержка LBA и CHS.

ш Fast АТА-2 разрешает использовать Multiword DMA
Mode 2 (13,3 Мбайт/с), PIO Mode 4.

^ АТА-3 - расширение АТА-2. Включает средства парольной
защиты, улучшенного управления питанием, самотести-
рования с предупреждением приближения отказа -
SMART (Self Monitoring Analysis and Report Technology).

^ ATA/ATAPI-4 - расширение АТА-3, включающее режим
Ultra DMA со скоростью обмена до 33 Мбайт/с и пакет-
ный интерфейс ATAPI.

^ E-IDE(EnhancedЮЕ) - расширенный интерфейс, введенный
фирмой Western Digital. Реализуется в адаптерах для шин
PCI и VLB. Позволяет подключать до 4 устройств (к двум
каналам), включая CD-ROM и стриммеры (ATAPI). Поддер-
живает PIO Mode 3, multiword DMA mode 1, объем диска
до 8 Гбайт, LBA и CHS. С аппаратной точки зрения прак-
тически полностью соответствует спецификации АТА-2.

Устройства ATA IDE, E-IDE, АТА-2, Fast АТА-2, АТА-3 и ATA/
ATAPI-4 электрически совместимы. Степень логической со-
вместимости достаточно высока (все базовые возможности
ATA доступны). Однако для полного использования всех рас-
ширений необходимо соответствие спецификаций устройств,
хост-адаптера и его ПО. В настоящее время наиболее широко

распространен и четко стандартизован интерфейс, официаль-
но называемый А ТА -2, о котором в основном и пойдет речь.

6.1. Электрический интерфейс

Все информационные сигналы интерфейса передаются через
40-контактный разъем, у которого ключом является отсут-
ствующий на вилке и закрытый на розетке контакт № 20. Ис-
пользование в качестве ключа выступа на корпусе розетки и
прорези в бандаже вилки стандартом не приветствуется. Для
соединения устройств спецификация требует применения
плоского многожильного кабеля (Flat cable stranded 28 AWG)
типа ЗМ 3365-40 или эквивалентного. Возможно применение
экранированного кабеля (Flat cable stranded 28 AWG ЗМ 3517-
40 shielded). Длина кабеля не должна превышать 0,46 м (18"),
допустимая емкость проводников не более 35 пФ. Термина-
торы стандартом не предусматриваются (они имеются в каж-
дом устройстве и хост-адаптере), но если кабель с тремя разъе-
мами (розетками) используют для подключения одного
устройства, то и его, и хост-адаптер рекомендуется подклю-
чать к противоположным концам кабеля. Состав информа-
ционных сигналов интерфейса АТА приведен в табл. 6.1. Все
сигналы АТА являются логическими со стандартными ТТЛ-
уровнями. Вид кабеля приведен на рис. 6.1. Одноименные
контакты всех разъемов соединяются своими проводами.
Встречается (редко) шлейф с кабельной выборкой (рис. 6.2).
В нем провод 28 в шлейфе перерезан, так что контакт 28
(CSEL) для ведущего устройства заземлен через хост-адаптер,
а для ведомого - не подключен. Кабель должен соответство-
вать системе адресации, выбранной для обоих устройств. Для
устойчивой работы в режиме Ultra DMA рекомендуется при-
менение 80-проводных кабелей, обеспечивающих чередование
сигнальных цепей и проводов схемной земли (эти кабели
"разделываются" на обычные 40-контактные разъемы).
Устройства и адаптеры, рассчитанные на использование Ultra
DMA, должны иметь в сигнальных цепях последовательные
согласующие резисторы с сопротивлением для различных це-
пей 22, 33 или 82 Ом. Спецификация АТА "узаконивает"
40-контактный сигнальный и 4-контактный разъемы пита-
ния (рис. 6.36), но для малогабаритных устройств питание
может подаваться по 44-проводному интерфейсному кабелю.

61.jpg
 

Сигнал

Тип1

Контакт

Контакт

Тип1

Сигнал

RESET*

I

1

2

-

GND

DD7

I/OTS

3

4

I/OTS

DD8

DD6

I/OTS

5

6

I/OTS

DD9

DD5

I/OTS

7

8

I/OTS

DD10


 

Сигнал

Тип1

Контакт

Контакт

Тип'

Сигнал

DD4

I/OTS

9

10

I/OTS

DD 11

DD3

I/OTS

11

12

I/OTS

DD12

DD2

I/OTS

13

14

I/OTS

DD13

DD 1

I/OTS

15

16

I/OTS

DD14

DDO

I/OTS

17

18

I/OTS

DD15

GND

-

19

20

-

Клкм
(нет штырька)

DMARQ

OTS2

21

22

-

GND

DIOW#
/STOP3

I

23

24

-

GND

DIOFW
/HDMARDY#
/HSTROBE з

I

25

26

 

GND

IORDY
/DDMARDY*
/DSTROBE 3

OTS2

27

28

I/O

SPSYNC/CSEL

DMACK#

I

29

30

-

GND

INTRQ

OTS2

31

32

ООК

IOCS16#

DA1

I

33

34

I.04

PDIAG#
/CBLID з

DAO

I

35

36

I

DA 2

CSO#

I

37

38

I

CS1#

DASP#

I/O OK5

39

40

-

GND

+5 В (Logic)

-

416

426

-

+5 В (Motor)

GND

-

436

446

-

Зарезервирован


 

1 Тип сигнала для устройства: I - вход, О - выход, I/O - двунаправ-
ленный, TS - трйстабильный, ОС - открытый коллектор.

2 У старых устройств сигнал может иметь тип ОС (при разнотипных
сигналах на одной шине возможен конфликт).

3 Сигналы, приведенные после символа /, используются только в режиме
Ultra DMA (ATA-4).

4 У ведущего устройства - вход, у ведомого - выход.

5 У ведомого устройства - только выход.

6 Контакты 41-44 используются только для миниатюрных дисков.

 

В документации на устройства могут применяться несколь-
ко отличающиеся обозначения сигналов. Здесь приведены
обозначения из стандарта ATA/ATAPI-4. Сигналы имеют
следующее назначение:

RESET# (Device reset) - сброс устройства (инвертированный
сигнал сброса системной шины). Сигнал длительностью не
менее 25 мкс вырабатывается после установления питающих
напряжений.

DA[2:0] (Device Address) - три младших бита системной
шины адреса, используемые для выбора регистров устройств.

DD[15:0] (Device Data) -двунаправленная 16-битная шина
данных между адаптером и устройствами. При 8-битных
обменах используются младшие биты D[7:0].

DIOFW (Device I/O Read) - строб чтения портов ввода/вы-
вода. Данные фиксируются по положительному перепаду
сигнала.

DIOW# (Device I/O Write) - строб записи портов ввода/вы-
вода. Данные фиксируются по положительному перепаду
сигнала.

IORDY (I/O channel ready) - готовность устройства завер-
шить цикл обмена. Низким уровнем сигнала во время цик-
ла обмена устройство может ввести такты ожидания шины.
Сигнал требуется при обмене в РЮ MODE 3 и выше.

IOCS16# - разрешение 16-битных операций. Обращение ко
всем регистрам, кроме регистра данных, всегда 8-битное. Для
PIO MODE О, 1, 2 при активном сигнале обращения 16-бит-
ные, при неактивном - 8-битные. Для PIO MODE 3, 4 и
DMA все обмены 16-битные, кроме дополнительных байт
(выходящих за границу 512-байтного сектора) "длинного"
считывания и записи.

DMARQ (DMA ReQuest) - запрос обмена по каналу DMA (сиг-
нал необязательный). При разрешении обмена сигнал (высо-
кий уровень) вводится устройством по готовности к обмену.
Введя сигнал DMARQ, устройство должно дождаться подтвер-
ждения от хост-адаптера сигналом DMACK#, после чего мо-
жет снять запрос DMARQ. Для очередной передачи запрос дол-
жен быть введен снова. В режиме Multi-Word DMA запрос может

удерживаться на время передачи всех данных. Выход должен
быть тристабильным, в активном состоянии (0 или 1) он
может быть только у выбранного устройства во время рабо-
ты с DMA. В АТА-1 для этого сигнала мог использоваться
как тристабильный, так и стандартный ТТЛ-выход. Работа
на одной шине устройств с разнотипными выходами DMARQ
может привести к конфликтам.

DMACK# (DMA aCKnowledge) - подтверждение DMA. Сиг-
нал вырабатывается хост-адаптером как подтверждение цикла
передачи. Передача слова данных управляется сигналами
DIOR# или DIOW#. Во время обмена по каналу DMA сигна-
лы IOCS16#, CSO# и CS1# не используются, обмен всегда
производится 16-битными словами.

INTRQ (Device interrupt) - запрос прерывания. Выход дол-
жен быть тристабильным, активный сигнал (логическую 1)
вырабатывает только выбранное устройство, когда у него
имеется необслуженный запрос прерывания и его выраба-
тывание не запрещено битом nIEN в регистре Device Control.
Запрос сбрасывается по сигналу RESET#, установке бита
SRST в регистре Device Control, записи в регистр команд или
чтении регистра состояния. При обменах PIO запрос уста-
навливается в начале передачи каждого блока (сектора или
группы секторов при многосекторных операциях). Ис-
ключения: по командам Format Track, Write Sector(S), Write
Buffer
и Write Long в начале передачи первого блока данных
запрос прерывания не вырабатывается. При обменах DMA
запрос прерывания вырабатывается только по завершении
операции.

CSO# (СЫр Select 0) - сигнал выбора блока командных ре-
гистров (Command Block Registers). Для первого канала он
вырабатывается при наличии на системной шине адреса пор-
та ввода/вывода в диапазоне lFOh~lF7h (сигнал также на-
зывают CS1FX#).

CS1# (Chip Select 1) - выбор блока управляющих регист-
ров (Control Block Registers). Для первого канала он выраба-
тывается при наличии на системной шине адреса порта
ввода/вывода в диапазоне 3F6h-3F7h (часто этот сигнал на-
зывается CS3FX#/

PDIAGft (Passed diagnostics) - сигнал о прохождении диаг-
ностики. Ведущее устройство наблюдает за этим сигналом,
который ведомое устройство должно выработать в ответ на
сброс или команду диагностики. Если ведомое устройство
обнаружено (по сигналу DASP#), ведущее устройство ожи-
дает сигнал в течение 31с после сброса и 6 с после команды
диагностики. Если за это время сигнал не появился, веду-
щее устройство отмечает этот факт установкой бита 7 реги-
стра ошибок. Если ведомое устройство не обнаружено, ве-
дущее обнуляет регистр состояния ведомого устройства и
сообщает свое состояние сразу после завершения собствен-
ной самодиагностики. Сигнал служит только для связи двух
устройств и хост-адаптером не используется (в АТА-4 кон-
такт задействован для сигнала CBLID#).

CBUD# (Cable assembly type identifier) - идентификация типа
кабеля. В 80-проводной сборке контакт 34 на разъеме хост-
адаптера соединяется с шиной GND, а контакты 34 разъемов
устройств соединяются между собой, но связи с разъемом
хост-адаптера не имеют. После прохождения сброса (когда
сигнал PDIAG# снимается) хост может определить наличие
80-проводного кабеля по низком/уровню сигнала.

DASP# (Device Active, Slave Present) - сигнал двойного на-
значения: индикатор активности устройства и присутствия
ведомого устройства. Устройства имеют выход типа "откры-
тый коллектор" с нагрузочным резистором 10 кОм к шине
+5 В. После сброса по сигналу RESET# или при инициали-
зации по включении питания оба устройства в течение 1 мс
должны деактивировать этот сигнал, после чего не позже чем
через 400 мс его вводит ведомое устройство для сообщения
о своем присутствии. Ведущее устройство не активирует этот
сигнал в течение 450 мс. Сигнал деактивируется ведомым
устройством после получения им команды или через 31 с
автоматически (смотря что произойдет раньше). После это-
го сигнал может быть введен любым устройством как инди-
катор активности. Адаптер использует этот сигнал для вклю-
чения светодиодного индикатора доступа к диску.

SPSYNC/CSEL (Spindle Synchronization/Cable Select) - син-
хронизация шпинделя/выборка кабелем. Сигнал двойного

назначения, которое должно быть единым для обоих уст-
ройств. Сигнал SPSYNC позволяет синхронизировать шпин-
дели устройств (актуально для RAID-массивов); использу-
ется по усмотрению производителя накопителя. Сигнал CSEL
позволяет устройствам определять свой адрес по положению
на специальном кабеле с разрывом провода 28 между разъе-
мами двух устройств (малораспространенная "кабельная
выборка"). Эта линия на хост-адаптере заземлена, и веду-
щее устройство получает заземленную линию, а ведомое -
не подключенную. Состояние сигнала (если он управляется
хост-адаптером) должно удерживаться по крайней мере 31с
после сигнала RESET*.

При использовании режима Ultra DMA четыре линии полу-
чают новое назначение сигналов:

^ STOP (Stop Ultra DMA burst) - останов передачи паке-
та Ultra DMA.

^ DDMARDY# (Device Ultra DMA ready) - готовность ус-
тройства при приеме пакета Ultra DMA (управление по-
током).

^ DSTROBE (Host Ultra DMA data strobe) - строб данных
устройства при передаче пакета хосту. Данные переда-
ются по обоим перепадам DSTROBE.

т HDMARDY# (Host Ultra DMA ready) - готовность хос-
та при приеме им пакета Ultra DMA (управление по-
током).

^ HSTROBE (Host Ultra DMA data strobe) - строб данных
хоста при передаче пакета устройству. Данные переда-
ются по обоим перепадам HSTROBE.

Для компьютеров класса XT существует 8-битная версия ин-
терфейса, называемая XT-IDE, реже - XT-Bus. Этот интер-
фейс (табл. 6.2), как и АТА, реализован на 40-проводном
кабеле, и многие его сигналы совпадают с 16-битной шиной
АТА. Интерфейс XT-IDE можно рассматривать как подмно-
жество АТА, хотя прямой совместимости нет. Ряд устройств
АТА имеют джампер выбора режима XT/AT (в накопите-
лях Seagate на это указывает окончание АХ в обозначении
модели).

Сигнал Тип' Контакт Контакт Сигнал
RESET* I 1 2 GND
DD7 I/OTS 3 4 GND
DD6 I/OTS 5 6 GND
DD5 I/OTS 7 8 GND
DD4 I/OTS 9 10 GND
DD3 I/OTS 11 12 GND
DD2 I/OTS 13 14 GND
DD 1 I/OTS 15 16 GND
DDO I/OTS 17 18 GND
GND - 19 20 Ключ
(нет штырька)
AEN I 21 22 GND
DIOW# I 23 24 GND
DIOR# I 25 26 GND
DMACK# I 27 28 GND
DMARQ ooc 29 30 GND
INTRQ OTS2 31 32 GND
DA 1 I 33 34 GND
DAO I 35 36 GND
CSO# I 37 38 GND
DASP# I/O ОС3 39 40 GND


 

' Тип сигнала для устройства: I - вход, О - выход, I/O - дву-
направленный, TS - тристабильный, ОС - открытый коллектор.

2 У старых устройств сигнал может иметь тип ОС (при разнотипных
сигналах на одной шине возможен конфликт).

3 У ведомого устройства - только выход.

6.2. Регистры устройств

Каждое устройство АТА имеет стандартный набор регист-
ров,
адресуемых сигналами от хост-адаптера (CSOff, CS1#,
DA2, DA1, DAO, DIOR# и DIOW#). Набор регистров (табл. 6.3)

состоит из двух блоков, выбираемых сигналом CSO^/CS1#.
Блок командных регистров служит для посылки команд уст-
ройству и чтения информации о его состоянии. Блок управ-
ляющих регистров
используется для управления устройством
и получения более подробной информации о его состоянии.
На действительность содержимого регистров командного бло-
ка и альтернативного регистра состояния указывает нулевое
значение бита BSY регистра состояния. Если устройство под-
держивает управление энергопотреблением, в "спящем" ре-
жиме содержимое этих регистров недействительно.

Адрес Назначение
(R - чтение, W - запись)
CSOff CS1# DA2 DA1 DAO
1 1 X X X Не используется
(шина данных в третьем
состоянии)
Control Block Registers - блок управляющих регистров
1 0 0 X X Не используется (шина данных
в третьем состоянии)
1 0 1 0 X Не используется (шина данных
в третьем состоянии)
1 0 1   0 R: Alternate Status (AS) -
альтернативный регистр
состояния
W: Device Control (DC) - регистр
управления устройством
1 0 1 1 1 Не используется1
Command Block Registers - блок командных регистров
0 1 0 0 0 R/W: Data (DR) - регистр
данных
0 1 0 0 1 R: Error (ER) - регистр ошибок
W: Features (FR) - регистр свойств
о 1 0 1 0 R/W: Sector Count (SC) - регистр
счетчика секторов
0 1 0 1 1 R/W: Sector Number (SN) -
регистр номера сектора LBA
[7:0]2


 

Адрес Назначение
(R - чтение, W - запись)
CSO" CSIff DA2 DA1 ОАО
Command Block Registers - блок командных регистров
0 1 1 0 0 R/W: Cylinder Low (CL) - регистр
младшего байта номера цилиндра
LBA[15:8]2
0 1 1 0 1 R/W: CyhnderHigh (CH) -
регистр старшего байта номера
цилиндра LBA[23:16]2
0 1 1 1 0 R/W: Deuice/Head (DH) - регистр
номера устройства
и головки LBA[27:24]2
0 1 1 1 1 R: Status (SR) - регистр состояния
W: Command (CR) - регистр
команд
о 0 X X X Недопустимый адрес


 

' Регистр выпадает из блока. Рекомендуется, чтобы на сигнал чтения
по этому адресу устройство не отвечало. Если устройство отвечает,
то оно не должно управлять битом DD7 во избежание конфликта
с контроллером НГМД.

2 Регистры сектора, цилиндра и головки в режиме LBA содержат ука-
занные биты логического адреса.

Регистр состояния SR отражает текущее состояние устрой-
ства в процессе выполнения команд. Чтение регистра состо-
яния разрешает дальнейшее изменение его бит и сбрасывает
запрос аппаратного прерывания.

Назначение бит регистра SR:

т Бит 7 - BSY(Busy) указывает на занятость устройства. При
BSY=1 устройство игнорирует попытки записи в команд-
ный блок регистров, а чтение этих регистров дает неопре-
деленный результат. При BSY=0 регистры командного блока
доступны, а устройство может изменять только значение
бит IDX, DRDY, DF, DSC и CORR. Бит устанавливается при
аппаратном/программном сбросе устройства и по получе-
нии команды. Бит может устанавливаться на кратковре-
менный интервал, так что хост может этого не заметить.

is Бит 6 - DRDY(Device Ready) указывает на готовность ус-
тройства к восприятию любых кодов команд. Если со-
стояние бита изменилось, оно не может измениться
обратно до чтения регистра состояния. При DRDY=0 уст-
ройство воспринимает только команды Execute Device
Diagnostic
и Initialize Device Parameters, прекращая выпол-
нение текущей команды и сообщая об этом флагом ABRT
в регистре ошибок и ERR в регистре состояния. Другие
команды приводят к непредсказуемым результатам.

^ Бит 5 - DF(Device Fault) - индикатор отказа устройства.

^ Бит 4 - DSC(Device Seek Complete) - индикатор завер-
шения поиска трека. В командах, допускающих перекры-
тие (см. 6.6), бит называется SERV (Service Required) -
устройство требует обслуживания.

^ Бит 3 - DRQfData Request) - индикатор готовности к об-
мену словом или байтом данных.

^ Бит 2 - CORR(Corrected Data) - индикатор исправлен-
ной ошибки данных.

^ Бит 1 - IDX (InDeX) - индекс, трактуется особо каждым
производителем.

^ Бит 0 - ERR (Error) - индикатор ошибки выполнения пре-
дыдущей операции. Дополнительная информация содер-
жится в регистре ошибок. Если установлен бит ERR, до
приема следующей команды, программного или аппарат-
ного сброса устройство не изменит состояние этого бита,
а также регистра ошибок, регистра количества секторов
и регистров цилиндра, головки и номера сектора.

В стандарте АТА-4 для некоторых команд биты 4 и 5 могут
иметь иное назначение, а биты 1 и 2 объявлены устаревшими.

Альтернативный регистр состояния AS имеет те же биты,
что и основной, но его чтение не приводит ни к каким изме-
нениям состояния устройства.

Назначение регистра команд CR очевидно из названия. Уст-
ройство начинает исполнять команду сразу, как только ее
код записан в данный регистр.

Регистры номера цилиндра (старшего СН и младшего байта
CL) и номера сектора SN имеют двоякое назначение в зави-
симости от выбранной системы адресации (CHS или LBA).

Они инициализируются хост-адаптером, а в случае возник-
новения ошибки при операции устройство поместит в них
адрес, по которому встретилась ошибка.

Регистр номера устройства и головки DH кроме хранения
части адресной информации служит для выбора ведущего
или ведомого устройства и метода адресации.

Назначение бит регистра DH:

йя Биты 7 и 5 зарезервированы.

т Бит 6 - L - единичным значением указывает на приме-
нение режима адресации LBA. При нулевом значении би-
та используется режим CHS.

as Бит 4 - DEV (Device) - выбор устройства. При DEV=0
выбрано ведущее, при DEH=1 - ведомое.

^ Биты [3:0] имеют двоякое назначение в зависимости от
выбранной системы адресации. В режиме CHS они со-
держат номер головки, в режиме LBA - старшие биты
логического адреса. Как и предыдущие, этот адресный
регистр инициализируется хост-адаптером, а в случае
возникновения ошибки при операции устройство помес-
тит в них адрес, по которому встретилась ошибка.

До принятия АТА-2 считалось, что адресные регистры дол-
жны модифицироваться и после успешного выполнения опе-
рации, отражая текущее значение адреса в носителе.

После включения питания, сброса или выполнения диаг-
ностики устройство в блоке командных регистров содержит
сигнатуру, определяющую его тип:

т SC=01h, S/V=01h, CL=OOh, CH==OOh, DH-OOh - устройст-
ва ATA;

Щ SC=01h, SA/=01h, CL=Uh, CH=EBh, DH=OOh или Olh -

устройства ATAPI.

Регистр данных DR может использоваться как 8-битный
или 16-битный в зависимости от типа данных, передаваемых
в текущей команде.

Из регистра управления устройством CR используются толь-
ко два бита.

Назначение бит регистра CR:

ш Биты [7:3] зарезервированы.

iss Бит 2 - SRST(Software Reset) - программный сброс, дей-
ствует все время, пока бит не будет снят. Оба устройства
на шине воспринимают программный сброс одновре-
менно. На устройства ATAPI не действует.

^ Бит 1 - nlEN(Interrupt Enable) - инверсный бит разреше-
ния прерывания. При нулевом значении бита выбранное
устройство может вырабатывать сигнал INTRQ через три-
стабильный выход.

^ Бит 0 всегда должен быть нулевым.

Регистр ошибок ER хранит состояние выполнения последней
операции или диагностический код. После завершения опе-
рации на наличие ошибки указывает бит ERR регистра со-
стояния.

Назначение бит регистра ER:

^ Бит 7 зарезервирован.

^ Бит 6 - UNC(Uncorrectable Data Error) -неисправимая
ошибка данных.

^ Бит 5 - МС (Media Changed) - смена носителя. После
смены носителя первая команда обращения отвергается
и устанавливается данный бит. После сброса бита следу-
ющие команды будут выполняться нормальным образом.

^ Бит 4 - IDNFfID Not Found) - указывает на ненайденный
идентификатор сектора.

^ Бит 3 - ABRT(AbortedCommand) - устанавливается, если
команда отвергнута как недействительная или в случае
возникновения иной ошибки.

^ Бит 2 - MCR(Media Change Requested) - индикатор за-
проса смены носителя. После обнаружения запроса сме-
ны носителя следующие команды Door Lock будут воз-
вращать бит ошибки ERR и установленный бит MCR. Бит
MCR сбрасывается командами Door Unlock, Media Eject или
аппаратным сбросом.

^ Бит 1 - TKONF(Track 0 Not Found) - указывает на то, что
по команде Recalibrate не удалось найти нулевой трек.

^ Бит 0 - AMNF( Address Mark Not Found) - не найден ад-
ресный маркер данных в заголовке сектора.

После включения питания, сброса или команды Execute Device
Diagnostic
регистр ошибок содержит диагностический код.

Регистр свойств FR используется в зависимости от команды. В
команде Set Features через него задается код подкоманды. Не-
которые устройства могут игнорировать запись в этот регистр.
До принятия АТА-2 в этот регистр помещали значение реко-
мендуемого номера цилиндра для предкомпенсации записи.

Регистр счетчика секторов SC содержит число секторов, уча-
ствующих в обмене. Хост инициализирует этот регистр до
подачи команды (нулевое значение соответствует 256 секто-
рам). По успешному завершению операции доступа' к дан-
ным регистр должен обнулиться. Если команда завершилась
с ошибкой, в регистре будет число секторов, которые долж-
ны быть переданы для успешного завершения предыдущего
запроса. Команды Initialize Device Parameters или Write Same
могут переопределить значение этого регистра.

6.3. Система команд

Стандарт АТА задает систему команд, ориентированную на
накопители на магнитных дисках. В табл. 6.4 графа "Прото-
кол" определяет протокол передачи данных, требуемых для
команды (см. 6.5): PI - ввод данных от устройства в режиме
PIO, РО - вывод данных в устройство в режиме PIO, Р - про-
токол передачи командного пакета (16 байт вывода в режиме
PIO), DM - обмен данными по каналу DMA, DMQ - обмен
DMA с очередями, ND - нет обмена данными, DR - протокол
сброса, VS - специфично для устройства. Графа "Тип" опреде-
ляет характеристику команды: О - обязательная для всех уст-
ройств,/? -обязательная для ATAPI,/? - дополнительная, С -
специфическая. Графа "Код" содержит шестнадцатеричный
код, загружаемый в регистр команды. Коды, помеченные звез-
дочкой, поддерживаются для совместимости со старым ПО.
В графе "Использование регистров" приняты следующие обо-
значения: СУ - регистры цилиндров, SC - регистр счетчика
секторов, DH - регистр номера устройства и головки, SN -
регистр номера сектора, FR - регистр свойств. Назначение
регистров: у - регистр содержит параметры для команды (для
регистра номера устройства и головки используются оба пара-

Команда Протокол Тип Код Использование регистров
FR sc SN CY он
Door Unlock -
разрешить смену
носителя3
VS Д DFh         D
Device Reset - сброс
устройства ATAPI2
DR п 08h - - - - D
Download
Microcode -
загрузка микрокода
внутреннего ПО4
РО Д 92h У У У У D
Execute Device
Diagnostic -
диагностика
ND о 90h         DOS
Flush Cache -
выгрузка кэша записи
на носитель (время
выполнения может
достигать 30 с)2
ND Д E7h         D
Format Track -
форматирование
трека3
VS с 50h         D8
Get Media Status -
получение
информации
о состоянии носителя
(наличие, смена,
защита записи)2
ND Д DAh         D
Identify Device -
идентификация
устройства
(не пакетного)
PI о Ech         D
Identify Device
DMA-
идентификация
устройства с ответом
в режиме DMA5
DM Д EEh         D
Identify Packet
Device -
идентифи-
кация устройства
(пакетного)2
PI п Alh         D


 

Команда Протокол Тип Код Использование регистров
FR sc SN CY ОН
Idle - переход в со-
стояние ожидания
ND Д 97h
E3h
- У - - D
Idle Immediate -
немедленный
переход в состояние
ожидания
ND д 95h
Elh
        D
Initialize Device
Parameters -
инициализация
параметров
устройства
ND о 91h   у     у
Media Eject -
извлечь носитель4
ND д EDh - - - - D
Media Lock -
заблокировать
носитель (не
ATAPI)2
ND д DEh         D
Media Unlock -
разблокировать
носитель (не
ATAPI)2
ND д DFh         D
Nop - холостая
команда
ND д OOh - - - - У
Packet - посылка
командного пакета2
Р п AOh у у У у D
Read Buffer-
чтение буфера
PI д E4h - - - - D
Read DMA
(w/retry) -
чтение
по DMA с повторами
DM д C8h   у у у у
Read DMA (w/o
retry) -
чтение по
DMA без повторов
DM д C9h   у у у у
Read DMA Queued -
чтение по DMA
с возможностью
постановки команды
в очередь
и освобождения
шины2
DMQ д C7h у y8 у у у


 

Команда Протокол Тип Код Использование регистров
FR SC SN CY DH
Read Long
(w/retry) -
"длинное" чтение
с повторами3
PI Д 22h   У У У У
Read Long (w/o
retry) -
"длинное"
чтение без повторов3
PI д 23h   у У У У
Read Multiple -
множественное
чтение
PI Д C4h   у У У У
Read Native
Address -
чтение
максимального
адреса сектора (за-
водской установки)2
ND д F8h         D
Read Sector(s)
(w/retry) -
чтение
секторов с повторами
PI о 20h   у У У У
Read Sectors)
(w/o retry) -
чтение
секторов без повторов
PI о 21h   у у у у
Read Verify
Sectorfs)
(w/retry) -
верификационное
чтение секторов
с повторами
ND о 40h   У У У у
Read Verify
Sector(s)
(w/o retry) -
верификационное
чтение секторов
без повторов
ND о 41h   у у у у
Recalibrate -
рекалибровка (поиск
нулевого трека)3
ND д Ixh         D
Security Disable
Password -
отмена
защиты (с посылкой
пароля)6
РО д F6h         D


 

Команда Протокол Тип Код Использование регистров
FR sc SN CY он
Security Erase
Prepare -
подготовка к защит-
ному стиранию6
ND Д F3h         D
Security Erase Unit -
защитное стирание
(с посылкой пароля)6
РО д F4h         D
Security Freeze
Lock -
блокировка
команд защиты6
ND Д F5h -   ^- ^~ D
Security Set
Password -
установ-
ка пароля защиты6
РО д Flh         D
Security Unlock -
снятие защиты6
РО д Flh - - - - D
Seek - поиск ND о 7xh - - У у У
Service - передача
данных и/или
состояния команды,
освободившей шину2
Рили
DMQ
д A2h         D
Set Features -
установка свойств
ND д Efh У - - - D
Set Max Address -
установка макси-
мального адреса2
ND д F9h   У8 У У У
Set Multiple Mode -
установка множест-
венного режима
ND д C6h   У     D
Steep - перевод
в "спящий" режим
ND д 99h
E6h
- - - - D
SMART - группа
команд мониторинга6
ND,PI д BOh у У8 У8 У8 "D
Standby - перевод
в дежурный режим
ND д 96h
E2h
- у - - D
Standby
Immediate -
немед-
ленный перевод
в дежурный режим
ND д 94h
EOh
        D


 

Команда Протокол Тип Код Использование регистров
FR sc SN CY он
Write Buffer -
запись в буфер
РО Д E8h - - - - D
Write DMA
(w/retry) -
запись
по DMA с повторами
DM д CAh   У У У У
Write DMA
(w/o retry) -
запись
no DMA без повторов
DM Д CBh   у у у у
Write DMA
Queued -
запись
no DMA с возмож-
ностью постановки
команды в очередь
и освобождения
шины2
DMQ д CCh У У8 У У У
Write Long
(w/retry)-
<длинная" запись
с повторами3
РО д 32h7   у у у У
Write Long
(w/o retry)
•"длинная" запись
без повторов3
РО д 33h7   У У У У
Write Multiple -
множественная
запись
РО д C5h7   у у у у
Write Same - запись
с размножением
РО д E9h у у у у у
Write Sectorfs)
(with retry) -
запись
секторов с повторами
РО о 30h7   у у у у
Write Sectorfs)
(without retry) -
запись секторов
без повторов
РО о 31h7   у у у у
Write Verify - запись
с верификацией
РО д 3Ch7 - у у у у


 

' В АТА-3+ команда не определена.
2 Только для АТА-4.

3 В АТА-4 команда не определена.

4 Для АТА-2 и выше.

5 Только для АТА-3.

6 Для АТА-3 и выше.

7 Коды поддерживаются для совместимости.

8 Использование регистра зависит от производителя.

6.3.1. Основные команды

К этой группе относятся команды АТА для доступа к дан-
ным. Для устройств, существенно отличающихся от НЖМД,
имеется альтернативный способ доставки команд и парамет-
ров - команда Packet. По этой команде, используя вывод в
режиме PIO, хост-адаптер передает пакет с блоком дескрип-
тора команды.
Подробнее о пакетном интерфейсе см. в 6.7.

Минимальной адресуемой единицей команд чтения и запи-
си
является 512-байтный сектор.

Команды чтения секторов в режимах обмена PIO - Read
Sectorfs)
и DMA - Read DMA позволяют считывать после-
довательно расположенные секторы, количество которых за-
дано в регистре SC, а адрес начального сектора - в регист-
рах СН, CL, DH и SN. Команды чтения бывают с повторами
или без них. В первом случае, если при чтении сектора об-
наружена неисправимая ошибка, устройство автоматически
делает несколько повторных попыток чтения. После испол-
нения команды в случае неисправимой ошибки блок команд-
ных регистров содержит адрес сектора с ошибкой. Если уст-
ройство использует ЕСС-код, то некоторые ошибки чтения
оно исправляет без повторов, но указывает на этот факт в
регистре ошибок.

Команда чтения в блочном режиме передачи Read Multiple
отличается от обычного (с обменом PIO) тем, что запросы
прерывания вырабатываются не на каждый сектор, а на блок
секторов, размер которого задан командой Set Multiple Mode.
Кроме того, в случае появления неисправимой ошибки чте-
ния содержимое блока командных регистров не определено
(не указывает на сбойный сектор). За счет сокращения чис-
ла прерываний, которые должен обслужить процессор, блоч-
ный режим в многозадачной системе позволяет повысить

производительность на 30%. Производительность обмена за-
висит от размера блока. Размер, оптимальный для устрой-
ства, может не быть оптимальным для ОС.

Команда "длинного" чтения Read Long считывает сектор
данных вместе с контрольными байтами. При ее вызове ре-
гистр SC должен указывать на запрос только одного секто-
ра. Блок данных считывается 16-битными словами, а конт-
рольные байты - 8-битными. Некоторые устройства АТА-1
неспособны быстро передавать байты ЕСС вслед за данны-
ми. Для их считывания используют 8-битный обмен в ре-
жиме PIO Mode 0.

Команда верификации Read Verify Sectors) в отличие от
обычного чтения не передает данные от устройства. В слу-
чае ошибки на адрес сбойного сектора указывает блок ко-
мандных регистров. Запрос прерывания выполняется после
исполнения команды.

Команды записи Write DMA, Write Sectors), Write Long, Write
Multiple
работают аналогично соответствующим им коман-
дам чтения и также имеют версии с повторами и без. Ко-
манда записи с верификацией Write Verify аналогична команде
Write Sectors), но для каждого сектора после записи выпол-
няется контрольное считывание. Для логической инициали-
зации (очистки области) дисков имеется команда записи Write
Same,
которая позволяет содержимое 512 байт, принятых от
хоста, записать в группу секторов. Если в регистр свойств
занесен код 22h, область записываемых секторов определя-
ется регистрами командного блока. Если в регистр свойств
занесен код DDh, запись производится во все доступные сек-
торы устройства.

Команды чтения и записи буфера Read Buffer и Write Buffer
служат для обмена в режиме PIO с 512-байтной буферной
памятью устройства (но не сектором носителя).

Команда форматирования трека Format Track по входным пара-
метрам специфична для каждого устройства, и ее использова-
ние не рекомендуется. Многие устройства ее отвергают как
недопустимую. Поскольку команда форматирования традици-
онно ориентирована на один трек, форматирование дисков
АТА в режиме трансляции геометрии, при котором физическая

организация не совпадает с логической, невозможно. В накопи-
телях с зонным форматом записи форматирование логичес-
кого трека будет "накрывать" переменное число физических.

Вспомогательное назначение имеют команды поиска. По ко-
манде поиска Seek устройство устанавливает головки на за-
данный цилиндр/трек и считывает идентификатор сектора.

Команда рекалибровки Recalibrate заставляет устройство
найти нулевой цилиндр. Если устройству это не удается,
устанавливается бит ошибки Track O Not Found. Эту коман-
ду обычно применяют при обработке ошибок: часто после
такого "встряхивания" ошибка не повторяется. После ус-
пешного выполнения команды блок командных регистров
содержит адрес первого сектора диска в формате, завися-
щем от режима адресации (LBA или CHS).

Для накопителей со сменными носителями в АТА-2 были
предназначены команды загрузки и выгрузки, подтверждения
смены носителя, блокировки и разблокировки устройства -
Boot - Post-Boot, Boot - Pre-Boot, Media Eject, Acknowledge
Media Change, Door Lock, Door Unlock.
Их реализация специ-
фична для каждой модели устройства. В АТА-4 набор этих
команд сокращен. Смену носителя вызывает только коман-
да Media Eject (для устройств ATAPI - пакетная команда
Start/Stop Unit). Здесь может работать один из двух меха-
низмов защиты от несанкционированной смены носителя.
При использовании уведомления о смене носителя Removable
Media Status Notification
нажатие кнопки на накопителе сме-
ны носителя не вызывает, этот факт и состояние носителя
могут определяться по команде Get Media Status. Этот меха-
низм включается и отключается соответствующими подко-
мандами Set Features', по любому сбросу устройства он от-
ключается. Когда механизм уведомления отключен, работает
другой: для запрета/разрешения смены носителей от кноп-
ки устройства (только для непакетных устройств) применя-
ют команды Media Lock/Media Unlock, они же используются
для определения состояния (наличия, защиты записи и факта
смены носителя).

Для запоминающих устройств на флэш-памяти в АТА-4 вве-
ли команды, начинающиеся с аббревиатуры CFA (Compact

Flash Association - ассоциация производителей компактных
флэш-карт). Специфика этих устройств заключается в за-
писи: запись обеспечивается лишь в предварительно стер-
тые ячейки (сектор), хотя есть устройства, автоматически
осуществляющие стирание при записи. Операция записи
выполняется существенно медленнее, чем чтения, скорость
которого приближается к скорости динамической памяти.
Операция стирания занимает еще больше времени. Интерес
представляет информация о состоянии сектора: стертый или
нет и сколько раз выполнялась запись.

6.3.2. Служебные команды

В системе команд имеются средства идентификации и
управления свойствами
устройств. Команда идентификации
Identify Device позволяет считать из контроллера блок из 256
слов, характеризующих устройство АТА. Устройства с па-
кетным интерфейсом эту команду должны отвергать, для них
имеется команда Identify Packet Device (см. 6.7). Блок пара-
метров может храниться как в энергонезависимой памяти
устройства, так и на самом носителе в месте, недоступном
для обычных обращений. Состав полей блока для непакет-
ных устройств приведен в табл. 6.5. Графа "F/V" определяет
свойства соответствующих полей: F - содержимое фиксиро-
вано, V - содержимое меняется в зависимости от состояния
устройства или выполненных команд, Х - специфично для
данного устройства (может быть и F, и V), R - зарезервиро-
ванные поля. Для устройств со сменными носителями зна-
чения полей F могут меняться при смене носителя.

Слово F/V Назначение
о F Оби^ конфигурационная информация
Бит 15: 0 для всех устройств АТА
Бит 7: 1 - устройство со сменным носителем
Бит 6: 1 - устройство (контроллер) с несменным
носителем
Бит 0 - зарезервирован
Значение остальных бит специфично для устройств
1 F Число логических цилиндров


 

Оюво F/V Назначение
2 R Зарезервировано
3 F Число логических головок
4 X Специфично
5 X Специфично
6 F Число логических секторов на логическом треке
7-9 X Специфично
10-19 F Серийный номер (20 символов ASCII), если слово 10
ненулевое, иначе - специфичная информация
20 X Специфично
21 X Специфично
22 F Число дополнительных байт в командах "длинного"
чтения и записи (в АТА-4 объявлено устаревшим)
23-26 F Версия встроенного ПО (8 символов ASCII), если
слово 23 ненулевое, иначе - специфичная
информация
27-46 F Номер модели (40 символов ASCII), если слово 27
ненулевое, иначе - специфичная информация
47 X Биты 15-8 специфичны (в АТА-4 - 80h)
  F Биты 7-0 - возможности множественных операций:
0 - зарезервирован, Olh-FFh - максимальное
количество секторов, передаваемых за сеанс
48 R Зарезервировано
49 R
F

R

F

F
F

Возможности.

Биты 15-14 - зарезервированы для Identify Packet
Device

Бит 13 - значения таймера режима Standby:
1 - соответствуют стандарту,
0 - задаются особо

Бит 12 зарезервирован для Identify Packet Device

Бит 11:
1 - IORDY поддерживается (для PIO Mode 3 и
выше - обязательно),
0 - IORDY может поддерживаться

Бит 10: 1 - сигнал IORDY может быть запрещен
командой Set Features

Бит 9 =1 (в АТА-4 используется для Identify Packet
Device,
в АТА-2 - как указание
на поддержку LBA и действительности слов 60-61)


 

Слово F/V Назначение
  F
X
Бит 8=1 (в АТА-4 используется для Identify Packet
Device,
в АТА-2 - как указание
на поддержку DMA)

Биты 7-0 специфичны

50 F Возможности (АТА-4):
Бит 15°0
Бит 14-1
Биты 13-1 - зарезервирован
Бит О"! указывает на специфичное значение
минимума для Standby Timer
51 F
X
Биты 15-8: длительность цикла обмена в режиме PIO.
Если значение параметра не соответствует
режимам 0, 1 или 2, используется PIO Mode 0

Биты 7-0 специфичны

52 F
X
Специфично.
В АТА-2 биты 15-8: временной режим цикла
одиночного обмена DMA (Single Word DMA). Если
значение параметра не соответствует режимам 0, 1
или 2, используется Mode 0. Если поддерживаются
слова 62 или 63, значение поля игнорируется

Биты 7-0 специфичны

53 R
F

F

V

Биты 15-3 зарезервированы
Бит 2:
1 - поля в слове 88 действительны,
О-нет

Бит 1:
1 - поля в словах 64-70 действительны,
О-нет.
Любое устройство, поддерживающее PIO Mode 3
и старше или Multiword DMA Mode 1 и выше,
должно использовать эти поля

Бит 0:
1 - поля в словах 54-58 действительны,
0 - поля могут быть действительны

54 V Текущее число логических цилиндров. Для устройств
АТА-1, если команда Initialize Device Parameters
не применялась, значение слова специфично
55 V Текущее число логических головок. Для устройств
АТА-1, если команда Initialize Device Parameters
не применялась, значение слова специфично


 

Слово F/V Назначение
56 V Текущее число логических секторов на трек. Для
устройств АТА-1, если команда Initialize Device
Parameters
не применялась, значение слова
специфично
57-58 V Текущая емкость в секторах (произведение слов 54,
55, 56)
59 R
V

V

Биты 15-9 зарезервированы

Бит 8: 1 - установка для многосекторной передачи
действительна

Биты 7-0: текущая установка максимального числа
секторов для многосекторных команд

60-61 F Общее число секторов, адресуемых пользователем
(только в режиме LBA)
62 V
F
Для АТА-4 специфично, в АТА-2 - режим одиночного
обмена DMA:
Биты 15-8: активный режим:
бит 8=1 - Mode 0,
бит 9=1 - Mode 1 и т. д. Единичное значение может
иметь только один бит

Биты 7-0 - поддерживаемые режимы:
бит 0=1 - Mode 0,
бит 1=1 - Mode 1 и т. д.

63 V
F
Режим множественного обмена Multiword DMA:
Биты 15-8: активный режим, аналогично слову 62

БИТЬ! 7-0: поддерживаемые режимы, аналогично
слову 62

64 R
F
Биты 15-8 зарезервированы

Биты 7-0 - поддерживаемые прогрессивные режимы
программного обмена (Advanced PIO):
бит 0=1 - PIO Mode 3,
бит 1=1 -PIO Mode 4,
биты 2-7 - зарезервированы

65 F Минимальная длительность цикла передачи
множественного DMA
(в наносекундах)
66 F Рекомендованная длительность цикла передачи
множественного DMA
(в наносекундах). При
многосекторной передаче обеспечивает оптимальную
скорость, при которой устройство не будет тормозить
поток снятием запроса DMARQ


 

Слово F/V Назначение
67 F Минимальная длительность цикла передачи РЮ без
использования сигнала готовности
(в наносекундах)
68 F Минимальная длительность цикла передачи РЮ с
использованием сигнала готовности
(в наносекундах)
69-70 R Зарезервировано для поддержки перекрытия команд
и очередей
71-74 R Зарезервировано для команды Identify Packet Device
75 F Глубина очереди команд-.
Биты 15-5 - зарезервированы
Биты 4-0 - максимальная глубина очереди
76-79 R Зарезервировано
80 F Номер основной версии интерфейса (если не OOOOh или
FFFFh):
1 -АТА-1,
2 - АТА-2,
4 - ATA/ATAPI-4...
81 F Младший номер версии интерфейса (если не OOOOh или
FFFFh)
82 F Поддержка команд и свойств (если слова 82 и 83
не равны OOOOh или FFFFh):
Бит 15 - не используется
Бит 14 - команды Nop
Бит 13 - команды Read Buffer
Бит 12 - команды Write Buffer
Бит 11 - не используется
Бит 10 - ограничение доступного пространства
Бит 9 - команда Device Reset
Бит 8 - вырабатывание прерывания во время
выполнения команды Service
Бит 7 - прерывание по освобождению шины
Бит 6 - кэширование с упреждающим
чтением
Бит 5 - кэширование записи
Бит 4 - команда Packet
Бит 3 - управление энергопотреблением
Бит 2 - смена носителя
Бит 1 - команды Security
Бит 0 - SMART


 

Слово F/V Назначение
83 F Поддержка команд и свойств (как и слово 82):
Бит 15-0
Бит 14 = 1
БИТЬ! 13-5 зарезервированы
Бит 4 - уведомление о смене
носителя
Бит 3 - расширенное управление
энергопотреблением
Бит 2 - команды CFA
Бит 1 - команды Read/Write DMA Queued
Бит 0 - команда Download Microcode
84 F Поддержка команд и свойств (если слова 82, 83 и 84 не
равны OOOOh или FFFFh):
Бит 15 ° 0
Бит 14 = 1
Биты 13-0 зарезервированы
85-87 F Разрешенные команды и свойства; поля и правила
аналогичны словам 82-84
88 R

R

V

Режим Uttm DMA
Биты 15-11 зарезервированы
Биты 10-8: активный режим Ultra DMA:
бит 8-1 - Mode 0, бит 9"1 - Mode 1 и т. д.
Единичное значение может иметь только
один бит

Биты 7-3 зарезервированы
Биты 2-0: поддерживаемые режимы одиночного
обмена DMA бит 0=1 - Mode 0, бит 1=1 - Mode 1
и т. д.

89 F Время защитного стирания: О-не указано; значение
1 - 254, умноженное на 2, дает время в минутах,
255 - более 508 мин
90 F Время расширенного защитного стирания (аналогично
слову 89)
91 V Текущий уровень
Advanced Power Management
92-126 R Зарезервировано
127 R

F

Биты 15-2 -зарезервированы
Биты 1 -0 - уведомление о смене носителя:
00 - не поддерживается,
01 - поддерживается,
1х - зарезервированы


 

Слово F/V Назначение
128 V Состояние защиты:
    Биты 15-9 зарезервированы
    Бит 8 - уровень защиты:
    0 - высокий,
    1 - максимальный
    Биты 7-6 - зарезервированы
    Бит 5: 1 - поддержка расширенного защитного
    стирания
    Бит 4: 1 - счетчик попыток иссяк
    Бит 3: 1 - команды защиты блокированы
    Бит 2: 1 - устройство заблокировано
    Бит 1: 1 -защита разрешена
    Бит 0: 1 - защита поддерживается
129-159 X Специфично
160-255 R Зарезервировано


 

Команда установки параметров Initialize Device Parameters за-
дает режим трансляции логической геометрии в системе CHS.
Регистр SC указывает число логических секторов на трек, а
в поле номера головки регистра DH указывается уменьшен-
ное на единицу число логических головок. Если запрошенный
режим трансляции устройство не поддерживает, оно выдаст
ошибку "команда отвергнута" (прежняя спецификация АТА
не четко описывала эту ситуацию, и некоторые системы не
обнаруживали отказ при данной команде). После запроса
неподдерживаемого режима трансляции устройство блоки-
рует доступ к носителю с ошибкой ID Not Found до запроса
поддерживаемого режима трансляции. Устройство обязано
поддерживать режим, описанный словами 1, 3 и 6 блока его
параметров. Некоторые устройства АТА-1 требовали, чтобы
данная команда выполнялась до доступа к носителю.

Команда установки свойств Set Features (специфичная для
устройства) подразумевает помещение кода подкоманды
(табл. 6.6) в регистр свойств.

Код Назначение
01h1 Разрешение 8-битного обмена
02h Разрешение кэширования записи


 

Код пв^г-вчснмс
03h Установка режима передачи по значению регистра SC
(табл. 6.7)
04h' Разрешение автоматического переназначения дефектных
блоков
05h Разрешение расширенного управления энергопотреблением
(уровень в регистре SC)
31h Запрет уведомления о смене носителя
33h' Запрет повторов
44h' Установка количества дополнительных байт в командах
Read Long/Write Long
54h1 Установка количества сегментов кэша по значению регистра
SC
55h Запрет упреждающего чтения
5Dh Разрешение прерывания по освобождению шины
5Eh Разрешение прерывания при выполнении команды Service
66h Запрет возврата к параметрам по умолчанию
при включении питания
77h1 Запрет ЕСС
81 h1 Запрет 8-битного обмена
82h Запрет кэширования записи
84h1 Запрет автоматического переназначения дефектных блоков
85h Запрет расширенного управления энергопотреблением
88h1 Разрешение ЕСС
99h1 Разрешение повторов
9Ah1 Ограничение тока потребления значением в регистре SC,
умноженным на 4 (мА)
AAh Разрешение упреждающего чтения
ABh1 Установка максимального количества кэшируемых блоков
по регистру SC
BBh1 Установка 4-байтной длины дополнительного поля
для команд Read Long/Write Long
CCh Разрешение возврата к параметрам по умолчанию
при включении питания
DDh Запрет прерывания по освобождению шины
DEh Запрет прерывания при выполнении команды Service


 

1 В АТА-4 подкоманда изъята.
9 Зак.№530

После включения питания или аппаратного сброса установ-
ленные свойства заменяются на принятые по умолчанию. Ре-
зультат подкоманд можно и закрепить, подав подкоманду 66h
(отмена - подкоманда с кодом CCh).

Биты [7:0] Режим обмена
00000000 Режим PIO, принятый для устройства по умолчанию
00000001 Режим PIO, принятый для устройства по умолчанию;
запрет IORDY
00001 mm Режим PIO Mode x* с сигналом IORDY
00010 ппп Режим одиночного DMA Mode x
00100 ппп Режим множественного DMA Mode x
01000 ппп Режим Ultra DMA Mode x
10000 mm Зарезервированы


 

* x определяется значением поля ппп

Команда задания параметров блочного режима передачи Set
Multiple Mode
через регистр SC указывает число секторов,
передаваемых с одним запросом прерывания. Значению SC==0
соответствует запрет блочного режима. После включения
питания или аппаратного сброса блочный режим запрещен.

Команда диагностики Execute Device Diagnostic, адресуясь все-
гда к ведущему устройству, выполняется одновременно обоими
устройствами. О ее результате ведомое устройство сообщает
ведущему (сигналом PDIAG#). Состояние обоих устройств опре-
деляется по диагностическому коду (табл. 6.8), который счи-
тывается из бит [6:0] регистра ошибок нулевого устройства.

Фиктивная команда Nop, не изменяя содержимого регистров,
позволяет считать информацию о состоянии устройства, вы-
полнив всего одну 16-битную запись по адресу в регистре DH.
Команда всегда возвращает бит ошибки "команда отвергну-
та". В АТА-4 команда объявлена обязательной для устройств
ATAPI и всех, поддерживающих перекрывающиеся команды.
Она имеет подкоманды, указываемые в регистре свойств. Под-
команда с кодом 00 сбрасывает всю оставшуюся очередь, а с
кодом 01 (NOP Auto Poll) на очередь не влияет.

Код Ведущее устройство Ведомое устройство
 
Olh Нормально Нормально или отсутствует
OOh, 02h-7Fh Неисправно Нормально или отсутствует
81h Нормально Неисправно
80h, 82h-FFh Неисправно Неисправно


 

6.3.3. Дополнительные сервисные функции

Устройства АТА и ATAPI могут поддерживать управление
энергопотреблением, защищать данные от несанкциониро-
ванного доступа, выполнять мониторинг своего состояния
для предупреждения об угрозе отказа и перезаписывать
встроенную микропрограмму.

Средства управления энергопотреблением - Power Management -
не обязательны. Различают следующие состояния, перечис-
ленные в порядке возрастания энергопотребления:

Sleep - "заснувшее" устройство - потребляет минимум энер-
гии, "разбудить" его может только сброс. Время "пробуж-
дения" - не более 30 с.

Standby Mode (дежурный режим) - устройство способно при-
нимать команду по интерфейсу, но для доступа к носителю
может потребоваться столь же большое время. В это состоя-
ние устройство может перейти как по команде, так и по тай-
меру (Standby Timer), отсчитывающему время от последнего
запроса, полученного в состоянии ожидания или активном
состоянии. Время срабатывания таймера программируется;

он может быть запрещен.

Idle Mode (состояние ожидания) - устройство способно сразу
начать обслуживание обращения к носителю, не слишком
быстро, так как некоторые узлы отключены.

Active Mode (активный режим) - устройство все запросы об-
служивает за кратчайшее время.

Команда проверки режима энергопотребления Check Power
Mode через
регистр SC возвращает состояние: SC=0 - уст-
ройство находится в состоянии Standby или переходит в него,
SC^SS - устройство активно или в состоянии ожидания.

Команда Idle переводит устройство в режим ожидания из
активного или дежурного режимов, а также через регистр
SC программирует таймер дежурного режима (табл. 6.9).

Команда Idle Immediate непосредственного перевода в режим
ожидания таймер не программирует.

Содержимое SC Тайм-аут
О(ООЬ) Тайм-аут запрещен
x=l-240(01h-FOh) (хх5)с
х-241-251 (Flh-FBh) ((х-240)х30) мин
252(FCh) 21 мин
253 (FDh) Период, заданный производителем
(в пределах 8-12 ч)
254 (FEh) Зарезервировано
255(FFh) 21 мин 15 с


 

Команда Steep является единственным способом перевода
устройства в "спящий" режим. После получения команды
устройство генерирует запрос прерывания. Хост должен счи-
тать регистр состояния, что сбросит прерывание и позволит
устройству "заснуть". "Разбудить" устройство можно толь-
ко аппаратным или программным сбросом. Состояние, в ко-
торое оно перейдет, определяется типом сброса и програм-
мируется. Поскольку не каждый хост "знает", что после
команды нужно прочитать регистр состояния, устройство ав-
томатически сбросит запрос прерывания и "заснет" через
определенный период времени (не менее 2 с).

Команда Standby переводит устройство в дежурный режим
потребления и через параметр в регистре SC программирует
таймер. Команда Standby Immediate таймер не программирует.

Устройства могут поддерживать расширенное управление
энергопотреблением АРМ (Advanced Power Management). При
этом задается уровень АРМ Level, определяющий степень
активности: Olh - минимальное потребление, FEh - макси-
мальная производительность. Уровень выше 80h не позво-

ляет устройству останавливать двигатель. АРМ управляет-
ся подкомандами Set Features. Устройства с пакетным ин-
терфейсом для управления энергопотреблением могут ис-
пользовать также команды пакетного протокола.

Начиная с АТА-3 в стандарт введена группа команд защиты.
Защищенное устройство по включению питания или аппа-
ратному сбросу будет находиться в заблокированном состо-
янии, при котором любой доступ к информации на носите-
ле запрещен. Система защиты поддерживает два пароля -
главный (Master Password) и пользовательский (User Password).
Главный пароль устанавливается изготовителем или продав-
цом устройства. Пароль устанавливается командой Security
Set Password,
этой же командой устанавливается защита. В
передаваемом блоке данных (512 байт) нулевое слово явля-
ется управляющим:

ш Бит 0 определяет тип пароля (0 - User, 1 - Master);

^ Бит 8 определяет степень защиты (0 - High, 1 - Maximum).

Слова 1-16 содержат пароль, остальные игнорируются. При
установке главного пароля состояние защиты не меняется.

Разблокировать устройство позволяет команда Security
Unlock,
при этом необходимо указать пароль пользователя.
Если пароль утерян, можно использовать главный пароль,
но доступ к данным будет предоставлен, только если была
выбрана степень защиты High. Если была выбрана степень
защиты Maximum, разблокировать устройство по главному
паролю можно только командой Security Erase Unit, но при
этом вся информация с носителя будет стерта. Чтобы за-
страховаться от случайного стирания, непосредственно пе-
ред этой командой должна быть выполнена команда Security
Erase Prepare.
Команда Security Freeze Lock блокирует вы-
полнение любых команд защиты до следующего сброса. Для
осложнения подбора пароля (его длина составляет 32 байт)
служит счетчик неудачных попыток разблокировки, по сра-
батывании которого команды разблокировки будут отвер-
гаться до выключения питания или аппаратного сброса. От-
менить защиту разблокированного устройства можно
командой Security Disable Password (предъявив один из двух
паролей).

Команды защиты в АТА-4 дополнены ограничением макси-
мального адреса, доступного пользователю (сообщаемого
в блоке параметров идентификации), командой Set Max
Address.
Узнать реальный максимальный адрес позволяет
команда Read Native Address.

Для предупреждения о возможном отказе устройства слу-
жит технология SMART (Self-Monitoring, Analysis and
Reporting Technology - технология самонаблюдения, анали-
за и сообщений). Предсказуемые отказы (Predictable Failure)
появляются в результате выхода параметров за некоторый
порог. Отслеживаемые параметры: время разгона до заданной
скорости, время позиционирования, процент ошибок пози-
ционирования, высота полета головок, производительность
(зависящая от числа повторов), количество использованных
резервных секторов и др. Мониторинг может осуществлять-
ся двояко: в рабочем режиме (On-Line) одновременно с вы-
полнением команд хоста (при некотором возможном замед-
лении). Мониторинг Off-Line выполняется устройством в
паузе между "полезными" командами, не снижая произво-
дительности. Если во время выполнения этой процедуры
придет внешняя команда, то мониторинг прервется на вре-
мя исполнения команды, но начало исполнения команды
может задержаться на время до двух секунд. Значения ат-
рибутов, за которыми ведется наблюдение, сохраняются в
энергонезависимой памяти устройства.

Для непакетных устройств имеется команда Smart (пакет-
ные используют для этих целей собственный протокол), под-
команды которой задаются через регистр свойств. Из этих
подкоманд стандартизованы следующие:

^ Smart Read Data (DOh) - чтение блока данных SMART;

^ Smart Enable/Disable Attribute Autosave (D2h) -управле-
ние автосохранением атрибутов;

^ Smart Save Attribute Values (D3h) - сохранение значений
атрибутов;

^ Smart Execute Off-Line Immediate (D4h) - немедленное
выполнение мониторинга Off-Line;

^ Smart Enable Operations (D8h) - разрешение команд и
внутренних функций SMART;

^ Smart Disable Operations (D9h) - запрет команд и функ-
ций SMART;

^ Smart Return Status (DAh) - опрос результатов монито-
ринга. Если какой-либо порог перейден, регистры СН и
CL будут иметь значения C2h и 4Fh соответственно, если
все в порядке - 2Ch и F4h.

Команда загрузки микрокода Download Microcode позволяет
модифицировать firmware - встроенное ПО устройства. В
зависимости от кода в регистре свойств загруженный мик-
рокод будет действовать до выключения питания (Ffl=01h)
или постоянно (РД=07п). Количество загруженных блоков
задается регистром SN (старший байт) и SC (младший байт).
Таким образом может быть загружено от 0 до 33 553 920 байт,
что более чем достаточно для встроенного ПО. Некоррект-
ная модификация кода может привести к выходу устрой-
ства из строя.

6.4. Протоколы взаимодействия хоста
и устройства

Обычный протокол взаимодействия хоста с устройством
выглядит следующим образом:

1. Хост читает регистр состояния устройства, дожидаясь
нулевого значения бита BSY. Если присутствуют два уст-
ройства, хост обращается к ним "наугад" - состояние
будет сообщать последнее выбранное устройство.

2. Дождавшись освобождения устройства, хост записывает
в регистр DH байт, у которого бит DEV указывает на ад-
ресуемое устройство. Здесь кроется причина невозмож-
ности параллельной работы двух устройств на одной шине
АТА: обратиться к устройству можно только после осво-
бождения обоих устройств.

3. Хост читает основной или альтернативный регистр со-
стояния адресованного устройства, дожидаясь признака
готовности (DRDY=i),

4. Хост заносит требуемые параметры в блок командных
регистров.

5. Хост записывает код команды в регистр команд.

6. Устройство устанавливает бит BSY и переходит к испол-
нению команды. Дальнейшие действия зависят от прото-
кола передачи данных, заданного командой (см. графу
"Протокол" в табл. 6.4).

Для команд, не требующих передачи данных (ND):

7. Завершив исполнение команды, устройство сбрасывает
бит BSY и устанавливает запрос прерывания (если он не
запрещен). К этому моменту в регистрах состояния и
ошибок уже имеется информация о результате исполне-
ния. Выполнение завершается.

Единичное значение бита BSY может промелькнуть между
шагами 6 и 7 так быстро, что хост его не зафиксирует, но
для фиксации факта выполнения команды или ее части и
предназначен запрос прерывания.

Для команд, требующих чтения данных в режиме PIO (Р1):

7. Подготовившись к передаче первого блока данных по
шине АТА, устройство устанавливает бит DRQ. Если была
ошибка, она фиксируется в регистрах состояния и оши-
бок. Далее устройство сбрасывает бит BSY и устанавли-
вает запрос прерывания (если он не запрещен).

8. Зафиксировав обнуление бита BSY (или по прерыванию),
хост считывает регистр состояния, что приводит к сбро-
су прерывания от устройства.

9. Если хост обнаружил единичное значение бита DRQ, он
производит чтение первого блока данных в режиме PIO
(адресуясь к регистру данных). Если обнаружена ошиб-
ка, считанные данные могут быть недостоверными.

После передачи блока данных возможно одно из следующих
действий:

^ Если на шаге 8 ошибка не обнаружена, а требуется пере-
дача следующего блока, устройство устанавливает бит BSY,
и данная последовательность повторяется с шага 7.

^ Если есть ошибка или передан последний блок данных,
устройство сбрасывает бит DRQ и выполнение команды
завершается.

Для операций записи данных после шага 6 для устройства
начинается активная фаза записи на носитель, что отмеча-
ется установкой бита BSY.

Для команд, требующих записи данных в режиме РЮ (РО и Р):

7. Подготовившись к приему первого блока данных по шине
АТА, устройство устанавливает бит DRQ (если нет оши-
бок) и сбрасывает бит BSY. Если была ошибка, она фик-
сируется.

8. Зафиксировав обнуление бита BSY, хост считывает регистр
состояния.

9. Если хост обнаружил единичное значение бита DRQ, он
производит запись первого блока данных в режиме РЮ
по адресу в регистре данных.

10. После передачи блока данных возможно одно из следую-
щих действий:

^ Если обнаружена ошибка, устройство сбрасывает бит DRQ,
устанавливает запрос прерывания и выполнение коман-
ды завершается. Переданные по шине данные остаются
необработанными устройством (не записываются на но-
ситель).

^ Если ошибка не обнаружена, устройство устанавливает
бит BSY и переходит к следующему шагу.

11. Устройство обрабатывает принятый блок данных, затем:

" если нет ошибок и обработанный блок - последний, уст-
ройство сбрасывает бит BSY и устанавливает запрос пре-
рывания, на чем выполнение команды успешно заверша-
ется;

^ если обнаружена ошибка, выполнение команды заверша-
ется таким же образом, но с установкой бит ошибок;

^ если нет ошибок и требуется передача следующего бло-
ка, выполняются следующие шаги:

12. По готовности приема следующего блока устройство уста-
навливает бит DRQ, сбрасывает бит BSY и устанавливает
запрос прерывания.

13. По обнулению бита BSY (или по прерыванию) хост счи-
тывает регистр состояния.

14. Обнаружив бит DRQ, хост выполняет запись очередного
блока в регистр данных, и последовательность повторя-
ется с шага 11.

Команды с передачей данных в режиме DMA выполняются
похожим образом, но:

^ Вместо PIO используется прямой доступ к памяти. Хост
должен проинициализировать канал DMA до записи кода
в регистр команд, чтобы по появлении сигнала DMARQ
начался обмен.

1s Запрос прерывания даже в многосекторных передачах
производится один раз - по выполнении команды.

6.5. Протоколы и режимы передачи данных

Программа общается с устройствами АТА через регистры,
используя инструкции ввода/вывода IN и OUT. Для переда-
чи данных с максимальной скоростью применяют программ-
ный доступ к регистру данных или DMA. Тип обмена зада-
ется командой. Программный доступ обязателен для всех
устройств. Команды режима DMA устройствами могут не
поддерживаться.

Программный доступ PIO (Programmed Input/Output) вы-
полняется в виде следующих друг за другом операций чте-
ния или записи в пространстве ввода/вывода по адресу ре-
гистра данных. В отличие от программно-управляемого
ввода/вывода, применяемого, например, для общения с LPT-
портом, передача блока данных в режиме PIO производится
без программного опроса какого-либо бита готовности для
передачи каждого слова. Готовность устройства проверяется
перед началом передачи блока, после чего хост производит
серию операций в определенном темпе. Темп определяется
выбранным режимом PIO Mode. Для режимов определены

допустимые параметры временной диаграммы цикла обме-
на (табл. 6.10). Обмен PIO программно реализуется с помо-
щью инструкций ввода/вывода строк REP INS или REP OUTS
с
занесенным в регистр СХ количеством слов (или байт) в
передаваемом блоке. Эти инструкции обеспечивают макси-
мально возможную скорость обмена для данного процессо-
ра и системной шины. "Обуздать" процессор в соответствии
с выбранным режимом входит в задачу адаптера АТА, кото-
рый использует для удлинения цикла сигнал готовности
шины (для ISA - IOCHRDY). Традиционные режимы 0, 1 и 2
имеют временные параметры, фиксируемые только хост-адап-
тером. Для прогрессивных режимов АТА-2 (PIO Mode 3 и
старше) устройство может затормозить обмен, используя
сигнал готовности IORDY. Программный обмен на все время
передачи блока занимает и процессор, и системную шину.

PIO
mode
МимимаяьмА"

ГяП-М^ЧОЛвтЧ^С

время цикла, нс

Скорость
передачи,
Мбайт/с
Интерфейс
0 600 3,3 АТА
1 383 5,2 АТА
2 240 8,3 АТА
3 180 11,1 E-IDE, АТА-2
(используется IORDY)
4 120 16,6 E-IDE, Fast АТА-2
(используется IORDY)


 

Обмен по каналу DMA занимает исключительно шины ввода/
вывода и памяти. Процессору требуется выполнить только
процедуру инициализации канала, после чего до прерывания
от устройства в конце передачи блока он свободен (этим мо-
гут воспользоваться многозадачные системы). Стандартные
каналы DMA шины ISA для интерфейса АТА практически
не используются из-за низкой пропускной способности. Вы-
сокопроизводительные адаптеры АТА могут иметь собствен-
ные более эффективные контроллеры. Режимы обмена по ка-
налу DMA бывают одиночными и множественными. При
одиночном режиме (Single Word DMA) устройство для переда-

чи каждого слова вырабатывает сигнал запроса DMARQ и сбра-
сывает его по сигналу DMACK#, подтверждающему цикл об-
мена. При множественном режиме (Multiword DMA) на сиг-
нал DMARQ хост отвечает потоком циклов, сопровождаемых
сигналами DMACK#. Если устройство не справляется с пото-
ком, оно может приостановить его снятием сигнала DMARQ, а
по готовности установить его снова. Множественный режим
позволяет развить более высокую скорость передачи.

Новейшее достижение - режим Ultra DMA, позволяющий до-
стигнуть скорости передачи 33 Мбайт/с и обеспечить досто-
верность передачи, чего не делалось ни в PIO, ни в стандарт-
ных режимах DMA (а зря!). Стандартом АТА-4 определено 3
режима Ultra DMA (0, 1 и 2), выбор режима осуществляется
командой Set Features. В режимах Ultra DMA сигналы DMARQ
и DACK# сохраняют свое назначение, а вот смысл сигналов
DIOR#, DIOW# и IORDY на время передачи пакета (Ultra DMA
Burst) существенно меняется (см. 6.1). В пакете данные на
шине сопровождаются стробом, генерируемым источником
данных, причем для синхронизации используются оба пере-
пада сигналов. Это позволяет повысить пропускную способ-
ность шины, не увеличивая частоту переключении сигналов
сверх 8,33 с'1 (этот предел для обычного кабеля достигается в
режиме PIO Mode 4 и Multiword DMA Mode 2). Каждое пе-
реданное слово участвует в подсчете CRC-кода, который пе-
редается в конце пакета. Подсчет ведется и источником
данных, и приемником. При несовпадении принятого и ожи-
даемого кода фиксируется ошибка передачи. Передача в па-
кете может приостанавливаться, если приемник снимет сиг-
нал готовности (DDMARDY# или HDMARDY#). Передача пакета
может прекращаться по инициативе устройства (снятием сиг-
нала) или хоста (сигналом STOP). Противоположная сторона
должна подтвердить окончание цикла сигналом STOP или
DMARQ соответственно.

Правильный выбор режима обмена обеспечивает надежность
и производительность. Все устройства поддерживают режим
PIO Mode 0, в котором считывается блок параметров иден-
тификации. В блоке имеются поля, описывающие режим
обмена по умолчанию и более эффективные режимы обме-
на, поддерживаемые устройством. Командой Set Features

можно изменить параметры режима. Иногда накопитель не
обеспечивает надежной передачи данных в заявленном вы-
сокоскоростном режиме. Если данные начинают пропадать,
первым делом следует понизить режим обмена.

Параметры стандартных режимов обмена по DMA приведе-
ны в табл. 6.11.

Режим МмиЫиЯЯШПА ВПАЛАв

^•--n^4DAB-w^ W^W^^W

цикла,нс

Скорость передачи,
Мбайт/с
Single word DMA Mode 0 960 2,08
Single word DMA Mode 1 480 4,16
Single word DMA Mode 2 240 8,33
Multiword DMA Mode 0 480 4,12
Multiword DMA Mode 1 150 13,3
Multiword DMA Mode 2 120 16,6
Ultra DMA Mode 0 240* 16,6
Ultra DMA Mode 1 160* 25
Ultra DMA Mode 2 120* 33


 

* В пакете данных режима Ultra DMA за каждый такт передаются два
слова данных, один по фронту синхронизирующего сигнала, другой -
поспаду.

BIOS определяет режим обмена с каждым устройством с уче-
том ограничений, заданных в Setup. Старые диски, не сооб-
щающие своих параметров, могут не работать со старшими
режимами PIO. На одном шлейфе (канале АТА) могут при-
сутствовать устройства с разным режимом обмена - специ-
фикация это допускает. Однако реально могут возникать
аппаратные или программные ограничения. Некоторые чип-
сеты не позволяют независимо программировать режим об-
мена для устройств канала. В таком случае при подключе-
нии двух разных устройств (например, PIO Mode 1 и 3)
обмен с обоими устройствами будет происходить со ско-
ростью меньшего (PIO Mode 1). Поэтому не рекомендуется
к одному каналу АТА (порту IDE, что то же самое) подклю-
чать быстрый винчестер и медленный CD-ROM. Иногда за-
вязка режимов обмена двух устройств обусловлена ограни-

ченным набором параметров конфигурации в BIOS. Быстрые
режимы множественного обмена по DMA реализуются толь-
ко драйверами ОС. "Глупый" драйвер может попытаться на-
вязать медленный режим обоим устройствам канала, так что
смешивать разные устройства не стоит и по этой причине.

Протокол обмена PIO хорош только для однозадачных ОС.
Для многозадачных ОС
больший интерес представляет обмен
по DMA, если, конечно, поддерживаемый режим обеспечива-
ет приемлемую скорость обмена (с{>авните табл. 6.10 и 6.11).

6.6. Средства многозадачности (ДТА-4)

Главным недостатком интерфейса АТА в многозадачных си-
стемах является то, что когда одно устройство на шине ис-
полняет команду, другое использоваться не может. В этом
АТА существенно уступает SCSI, где устройства на время
длительной внутренней операции могут освобождать шину
и имеется эффективный механизм организации очередей про-
цессов ввода/вывода. Спецификация АТА-4 определяет воз-
можности параллельного выполнения команд обоими ус-
тройствами и создания очередей.

Перекрытие команд - Overlapped Feature - позволяет устрой-
ству, занятому длительной внутренней операцией, освобо-
дить шину. Для этого устройство должно сбросить биты DRQ
и BSY регистра состояния. По окончании выполнения опе-
рации устройство устанавливает бит SERVB своем регистре
состояния. Если хост намерен использовать шину для обра-
щения к другому устройству, он должен запретить прерыва-
ния от устройства, установив бит nIEN в регистре управле-
ния. После того как хост вернется к обслуживанию
устройства, он должен послать ему команду NOP с подко-
мандой 01 для получения информации о состоянии. При
этом он может разрешить прерывание, которое произойдет
по готовности устройства к продолжению. Обнаружив уста-
новленный бит SERV, хост посылает команду Service, кото-
рая вызовет продолжение исполнения команды, во время
которой шина освобождалась. Принятый механизм продол-
жения менее эффективен, чем в SCSI, - он требует привле-
чения хоста для обнаружения готовности устройства. Пере-

крытие допускается только для команд NOP (с подкоман-
дой 01), Packet, Read DMA Queued, Service и Write DMA
Queued.

Устройства могут поддерживать очереди команд, но только
для команд, допускающих перекрытие (эти свойства тесно
связаны). Если при наличии команд в очереди устройство
получает команду, не входящую в этот список, команда от-
вергается (с соответствующим битом в регистре ошибок) и
очередь сбрасывается. Глубина очереди, поддерживаемой
устройством, сообщается в блоке параметров идентифика-
ции. Команды ставятся в очередь с уникальным идентифи-
катором-тегом, который передается через регистр счетчика
секторов. После исполнения команды Service значение тега
для обслуживаемой команды считывается из того же регис-
тра, что позволяет ее идентифицировать. Если устройство
получает команду со значением тега, которое уже присут-
ствует в очереди, и новая, и старая команды отвергаются
(состояние не определено). При возникновении любой ошиб-
ки вся очередь сбрасывается. Следующая команда в очередь
посылается лишь при освобожденной шине. Перед посыл-
кой хост должен запретить прерывания, а разрешить их мо-
жет только после посылки новой команды. Если для выпол-
нения команды устройству не нужно освобождать шину,
команда будет выполнена немедленно, а находящиеся в оче-
реди команды, освободившие шину, будут выполнены поз-
же. Очереди SCSI более эффективны как по набору команд
(в очередь ставятся процессы, которые могут представлять
собой цепочки команд), так и по гибкости управления. SCSI
также обеспечивает независимость исполнения одних команд
очереди от результатов выполнения других.

6.7. Пакетный интерфейс АТДР1

Для подключения к интерфейсу АТА накопителей CD-ROM
и стриммеров (а также других устройств) набора регистров
и системы команд АТА недостаточно. Для них существует
аппаратно-программный интерфейс ATAPI (АТА Package
Interface - пакетный интерфейс АТА). Устройство ATAPI
поддерживает минимальный набор команд АТА, который

неограниченно расширяется 16-байтным командным паке-
том,
посылаемым хост-контроллером в регистр данных уст-
ройства по команде Packet. Структура командного пакета
пришла от SCSI, что обеспечивает схожесть драйверов для
устройств со SCSI и ATAPI. Классификация устройств совпа-
дает с принятой в SCSI (см. табл. 5.12), класс устройства
сообщается им в начале блока параметров идентификации.

Интерфейс ATAPI может использоваться с неинтеллектуаль-
ными адаптерами АТА, поскольку для хост-адаптера поддержка
ATAPI может выполняться чисто программно. Сложные кон-
троллеры АТА, имеющие кэш-память и собственный процес-
сор, неориентированные на интерфейс ATAPI, могут не дога-
даться, что в регистр данных устройства кроме 512-байтных
блоков данных можно записывать 16-байтный с командным
пакетом. Устройства ATAPI имеют следующие особенности:

^ Команду Identify Device они должны отвергать, чтобы хост
не пытался к ним обратиться как к АТА-устройствам. Для
идентификации устройств ATAPI предназначена специ-
альная команда Identify Packet Device, а блок параметров,
сообщаемых устройством, трактуется иначе (табл. 6.12).

^ Для программного сброса устройства ATAPI предназна-
чена команда Device Reset, которую устройства АТА от-
вергают. Программный сброс через регистр управления
не прекращает выполнения команды Packet

^ Специфические команды вместе с необходимыми пара-
метрами передаются по команде Packet, код которой яв-
ляется недействительным для устройств АТА.

Слово F/V Назначение
о F Общая конфигурационная информация
Биты [15:14] = 10 для всех устройств ATAPI
Бит 13 - зарезервирован
Биты 12-8 - набор поддерживаемых команд
(класс устройства)
Бит 7: 1 - устройство со сменным носителем
Бит 6-5:
00 - устройство установит DRQ в течение
3 мс после получения комавды Packet,


 

Слово F/V Назначение
    01 - устройство введет INTRQ по установке
DRQ после получения команды Packet,
10 - устройство установит DRQ в течение
50 мкс после получения команды Packet,
11 -зарезервировано
Биты 4-2 - зарезервированы
Биты 1-0 - длина командного пакета:
00-12 байт,
01 -16 байт,
1х - зарезервировано
1-9 R Зарезервировано
10-19 F Серийный номер (20 символов ASCII), если
слово 10 не нулевое; иначе - специфичная
информация
20-22 R Зарезервировано
23-26 F Версия встроенного ПО (8 символов ASCII), если
слово 23 не нулевое; иначе - специфичная
информация
27-46 F Номер модели (40 символов ASCII), если
слово 27 не нулевое; иначе - специфичная
информация
47-48 R Зарезервировано
49   Возможности:
  F Бит 15: 1 - поддержка чередующегося
(interleaved) DMA
  F Бит 14: 1 - поддержка очередей команд
  F Бит 13: 1 - поддержка перекрывающихся
команд
  F Бит 12: 1 - требуется программный сброс
(устарело)
  F Бит 11:
1 - IORDY поддерживается (для PIO Mode 3
и выше - обязательно),
0 - IORDY не обязано поддерживаться
  F Бит 10: 1 - сигнал IORDY может быть запрещен
командой Set Features
  F Бит 9: 1 - поддержка LBA
  F Бит 8: 1 - поддержка DMA
  X Биты 7-0 специфичны


 

Слово F/V Назначение
50 R Зарезервировано
51 F
X
БИТЬ! 15-8: номер PIO Mode
Биты 7-0 специфичны
52 R Зарезервировано
53 R
F

F
V

Биты 15-3 зарезервированы
Бит 2:
1 - поля в слове 88 действительны,
О-нет

Бит1:
1 - поля в словах 64-70 действительны,
0-нет
Устройство, поддерживающее PIO Mode 3
и старше или Multiword DMA Mode 1 и выше,
должно использовать эти поля

Бит 0:
1 - поля в словах 54-58 действительны,
0 - поля могут быть действительны

54-62 R Зарезервировано
63 R

R
V

Режим множественного обмена Multiword DMA:
Биты 15-11 зарезервированы
Биты 10-8: активный режим: бит 8=1 - Mode 0,
бит 9=1 - Mode 1 и т. д. Единичное значение
может иметь только один бит

Биты 7-3 зарезервированы
Биты 2-0: поддерживаемые режимы: бит 0=1 -
Mode 0, бит 1-1 - Mode 1 и т. д.

64 R
F
Биты 15-8 зарезервированы

Биты 7-0 - поддерживаемые прогрессивные
режимы, программного обмена (Advanced PIO):
бит 0=1 - PIO Mode 3, бит l-l - PIO Mode 4,
биты 2-7 - зарезервированы

65 F Минимальная длительность цикла передачи
множественного DMA
(в наносекувдах)
66 F Рекомендованная длительность цикла передачи
множественного DMA
(в наносекувдах).
При многосекторной передаче обеспечивает
оптимальную скорость, при которой устройство
не тормозит поток снятием запроса DMARQ


 

Слово F/V Назначение
67 F Минимальная длительность цикла передачи PIO
без использования сигнала готовности
(в наносекундах)
68 F Минимальная длительность цикла передачи PIO
с использованием сигнала готовности
(в наносекундах)
69-70 R Зарезервированы для поддержки перекрытия
команд и очередей
71 F Типовое время от получения команды Packet до
освобождения шины (в наносекундах)
72 F Типовое время от получения команды Service
до сброса BSY (в наносекундах)
73-74 R Зарезервирован о
75 F Глубина очереди команд: биты 15-5 -
зарезервированы, биты 4-0 - максимальная
глубина очереди
76-79 R Зарезервировано
80 F Номер основной версии интерфейса
(если не OOOOh или FFFFh):
1 - АТА-1,
2 - АТА-2 и т. д.
81 F Младший номер версии интерфейса
(если не OOOOh или FFFFh)
82 F Поддержка команд и свойств (если слова 82
и 83 не равны OOOOh или FFFFh):
Бит 15 - не используется
Бит 14 - команды Nop
Бит 13 - команды Read Buffer
Бит 12 - команды Write Buffer
Бит 11 - не используется
Бит 10 - ограничение доступного пространства
Бит 9 - команда Device Reset
Бит 8 - вырабатывание прерывания во время
команды Service
Бит 7 - прерывание по освобождению шины
Бит 6 - кэширование с упреждающим чтением
Бит 5 - кэширование записи
Бит 4 - команда Packet
Бит 3 - управление энергопотреблением
Бит 2 - смена носителя
Бит 1 - команды Security
Бит 0 - SMART


 

Слово F/V Назначение
83 F Поддержка команд и свойств (как и слово 82):
Бит 15=0
Бит 14 = 1
Биты 13-5 -зарезервированы
Бит 4 - уведомление о смене носителя
Биты 3-1 - зарезервированы
Бит 0 - команда Download Microcode
84 F Поддержка команд и свойств (если слова 82, 83
и 84 не равны ООООЬ или FFFFh):
Бит 15-0
Бит 14 = 1
Биты 13-0-зарезервированы
85-87 F Разрешенные команды и свойства - поля
и правила аналогичны словам 82-84
88 R

R
V

Режим Ultra DMA:
Биты 15-11 -зарезервированы
Биты 10-8 - активный режим Ultra DMA:
бит 8°1 - Mode 0,
бит 9=1 - Mode 1 и т. д. Единичное значение
может иметь только один бит

Биты 7-3 - зарезервированы
Биты 2-0 - поддерживаемые режимы
одиночного обмена DMA:
бит 0=1 - Mode 0,
бит i=°i - Mode 1 и т. д.

89-126 R Зарезервировано
127 R
F
Биты 15-2 -зарезервированы
Биты 1-0 - уведомление о смене носителя:
00 - не поддерживается,
01 -поддерживается,
1х - зарезервированы
128 V Состояние защиты:
Биты 15-9 - зарезервированы
Бит 8 - уровень защиты:
0 - высокий,
1 -максимальный
Биты 7-6 - зарезервированы
Бит 5: 1 - поддержка расширенного защитного
стирания
Бит 4: 1 - счетчик попыток иссяк
Бит 3: 1 - команды защиты блокированы


 

Слово F/V Назначение
    Бит 2: 1 - устройство заблокировано
Бит 1:1- защита разрешена
Бит 0: 1 - защита поддерживается
129-159 X Специфично
160-255 R Зарезервировано


 

При подаче команды Packet регистр свойств FR содержит
признаки команды:

^ Бит 0 - DMA - является указанием на использование
DMA или Ultra DMA для обмена данными.

^ Бит 1 - OVL - является признаком возможности пере-
крывающегося выполнения.

Регистры СН и CL содержат лимит счетчика байт данных,
передаваемых по каждому введению DRQ в режиме PIO. Если
команда не предусматривает обмена данными, поле игнори-
руется. Если общее число требуемых байт данных превыша-
ет лимит, значение лимита задается четным. Если оно равно
или меньше лимита, лимит нечетен. Значение лимита FFFFh
воспринимается устройством как FFFEh. Лимит счетчика,
как и бит DMA, к передаче пакета отношения не имеет.

Регистр DH используется только для выбора устройства. Для
устройств, поддерживающих очереди команд, биты [7:3] ре-
гистра SC содержат тег (Tag).

После подачи команды регистр SC кроме тега будет содер-
жать следующие биты:

^ Бит 2 - PEL (Release) - признак освобождения шины (для
перекрывающихся команд).

^ Бит 1 - I/O (Input/Output) - указатель направления пе-
редачи данных (0 - передача к устройству, 1 - к хосту).

т Бит 0 - C/D (Command/Data) - признак передачи коман-
ды (1) или данных (0).

В регистре состояния некоторые биты получают новое на-
значение:

^ Бит 5 - DMRDY(DMA Ready) - при ОЯО=1 использует-
ся как признак готовности к обмену в режиме (Ultra)

DMA. При DRQ=0 является признаком отказа устрой-
ства DF (Device Fault).

^ Бит 4 - SERV (Service) - признак готовности к обслужи-
ванию команды, освободившей шину.

^ Биты 1, 2 не используются.

щ Бит 0 - СНК (Check) - признак ошибки.

Остальные биты сохранили обычное назначение.

После подачи команды Packet хост определяет состояние
устройства, прочитав его регистры. Возможны следующие
варианты:

^ Ожидание команды Packet в регистре SC биты C/D= 1,
1/0=0, REL=0, поле Tag содержит ранее установленное зна-
чение. В регистре состояния BSY-0, DMRDY=0, СНК=0,
DRQ=i,
бит SERV может указывать на наличие команды,
ожидающей обслуживания.

т Передача данных: в регистре SC биты C/D=Q, REL=0, I/O
указывает на направление передачи. Регистры СН, CL при
использовании PIO содержат счетчик байт данных. В ре-
гистре состояния BSY=0, DRQ-i, СНК=0, DMRDY указы-
вает на использование DMA, бит SERV может указывать
на наличие команды, ожидающей обслуживания.

^ Освобождение шины: в регистре SC биты C/D=0, 1/0=0,
REL=i,
поле Tag содержит тег. В регистре состояния
BSY=0, DMRDY=0, СНК=0, DRQ=0, бит SERV может ука-
зывать на наличие команды, ожидающей обслуживания.

йй Запрос обслуживания: в регистре SC биты C/D=0, //0=0,
REL=i, поле Tag содержит тег. В регистре состояния
BSY=0, DMRDY=0, CHK-0, DRQ-0, бит SERV=i.

m Успешное завершение: в регистре SC биты C/D=1,1/0=1,
REL=0,
поле Tag содержит тег. В регистре состояния
BSY=0, DRDY=i, CHK=0, DRQ=0, бит SERV может указы-
вать на наличие команды, ожидающей обслуживания.

m Завершение с ошибкой (только после передачи последнего
байта пакета): в регистре SC биты C/D=1, //0=1, REL=0,
поле Tag содержит тег. В регистре состояния BSY=0,
DRDY=i, DRQ^O,
DF=1 при отказе устройства, CHK=i, если

регистр ошибок содержит код ошибки" бит SERV может
указывать на наличие команды, ожидающей обслужива-
ния. В регистре ошибок биты 0 и 1 трактуются в зависи-
мости от команды, бит 2 - признак отвергнутой команды
(ABR7), биты [7:4] могут содержать уточненное состояние.

Структуру командного пакета см. в 5.5. При любой длине
блока дескрипторов, определяемой кодом команды (нулевой
байт пакета), передаваемый пакет имеет длину 16 байт, но
используется только указанное количество байт. Систему
команд и структуру пакетов стандарт ATA/ATAPI-4 не опи-
сывает, но для каждого класса устройств существует стан-
дартизованный набор команд с определенной структурой
пакетов.

6.8. Адаптеры шины АТА и категории
устройств IDE

Простейший адаптер АТА содержит только буферы сигна-
лов шины и дешифратор зоны адресов. Все регистры кон-
троллера и схемы кодирования размещены в самом устройст-
ве IDE. Шина АТА требует выделения системных ресурсов -
двух областей портов ввода/вывода и линии прерывания;

дополнительно может использоваться канал DMA. Интер-
фейсу АТА первого канала выделили ресурсы, ранее исполь-
зовавшиеся контроллером жестких дисков. Второму каналу
назначили ресурсы альтернативного контроллера жестких
дисков. Позже определили ресурсы еще для двух каналов
(табл. 6.13). Традиционному контроллеру жестких дисков
выделялся канал DMA3, но он является 8-битным, в то вре-
мя как шина АТА требует 16-битного канала DMA. Произ-
водительности стандартных каналов DMA для шины АТА
явно недостаточно. На системных платах с шиной PCI стан-
дартом является установка двухканального адаптера, зани-
мающего ресурсы каналов 1 и 2. Этот адаптер обеспечивает
шинам АТА 16-битные каналы DMA, поддерживающие вы-
сокоскоростные режимы обмена (см. табл. 6.11). В идеаль-
ном варианте двухканальные контроллеры имеют шины, пол-
ностью изолированные друг от друга буферными и
логическими схемами. В самом дешевом варианте они ис-

пользуют общие буферы для линий данных и управляющих
сигналов и отдельные только для некоторых сугубо индиви-
дуальных сигналов. С точки зрения логики, здесь все в по-
рядке, но следует учитывать нагрузочную способность (вли-
яние паразитных параметров): суммарная длина обоих
шлейфов не должна превышать 46 см, а суммарная емкость
каждой линии со всеми устройствами не должна превышать
35 пФ. Иначе на высокоскоростных режимах обмена возмож-
ны неконтролируемые искажения передаваемых данных.

Канал CSO CS1 IRQ
1 IFOh-lFZh 3F6h-3F7h 14
2 170h-177h 376h-377h 15 или 10
3 lE8h-lEfh 3EEh-3Efh 12 или 11
4 168h-16Fh 36Eh-36Fh 10 или 9


 

Поскольку скорость программного обмена задается хост-адап-
тером, интересно индивидуальное программирование PIO
Mode для каждого канала/устройства. Ряд чипсетов этого не
допускает и при инициализации назначает общий минималь-
ный режим. В результате подключение "тихоходного" уст-
ройства замедляет обмен быстрого соседнего устройства.

Адаптеры АТА часто размещают на звуковых картах для под-
ключения накопителей CD-ROM. По умолчанию им назна-
чают ресурсы каналов 3 или 4. К этим каналам можно под-
ключать винчестеры, но будет ли их там искать BIOS во время
POST - вопрос. Современные версии BIOS позволяют хра-
нить конфигурационные параметры четырех жестких дисков,
более старые версии - двух. Четыре канала АТА фзически
позволяют подключить до восьми накопителей, но работа с
ними лимитирована программными ограничениями.

Расширенные адаптер могут иметь аппаратные средства
поддержки высокоэффективных режимов передачи (PIO,
DMA, Bus Master), буферные регистры записи и собствен-
ную кэш-память. Сложные адаптеры аппаратно поддержи-
вают "зеркальные" диски. Некоторые адаптеры позволяют
соединять несколько физических дисков в один логический

на уровне вызовов BIOS (в настоящее время актуальнее об-
ратная задача).

Существуют гибридные адаптеры для подключения АТА
HDD к шинам XT и МСА или, например, к LPT-порту.

Интерфейс АТА позволяет подключать устройства различ-
ных категорий,
отличающихся "уровнем интеллекта" встро-
енного контроллера. Первые дисковые накопители IDE от-
носятся к категории неинтеллектуальных устройств -
Non-Intelligent IDE. Они не выполняли трансляцию нумера-
ции секторов - их логические параметры совпадали с физи-
ческими. Команды идентификации устройства и установки
параметров не выполнялись. Дефектные блоки, отмеченные
в заводском списке, были видны пользователю. Низкоуров-
невое форматирование выполнялось непосредственно по ко-
манде, так что неудачное форматирование могло понизить
производительность из-за нарушения оптимальных устано-
вок чередования и смещения.

Более интеллектуальные устройства - Intelligent АТА IDE.
Они способны выполнять расширенные АТА-команды -
идентификацию устройства и установку параметров. Под-
держивается трансляция физических параметров в логичес-
кие. Дефектные сектора скрыты от пользователя (до исчер-
пания резерва). Низкоуровневое форматирование возможно
только при установке логической геометрии, совпадающей с
физической. Однако форматирование опять-таки "сносит"
заводскую оптимизацию. Для ускорения обмена эти устрой-
ства поддерживают блочные режимы передачи Read Multiple
и Write Multiple, а также высокоскоростные режимы обмена
РЮ и DMA.

К следующей категории относятся устройства с зонным фор-
матом записи - Intelligent Zoned Recording IDE. Поскольку
они имеют различное количество секторов на разных треках
(для повышения плотности хранения), трансляция геомет-
рии является для них обязательной (спецификация АТА не
предусматривает сообщения устройством способа разбиения
на зоны и формата каждой зоны, так что обращаться к ним
можно только по логическому трехмерному (CHS) или ли-
нейному (LBA) адресу).

Устройства IDE отличаются также по интеллектуальности
контроллера: автоматический мониторинг внутренних пара-
метров (SMART), температурная коррекция системы пози-
ционирования, поддержка управления энергопотреблением
и различные усовершенствования, направленные на повы-
шение производительности.

6.9. Конфигурирование устройств

Устройства АТА перед подключением к шине должны быть
корректно сконфигурированы. Конфигурирование подразу-
мевает выбор типа интерфейса и определение адреса устрой-
ства. Тип интерфейса - XT или AT - определяется моделью
накопителя. В изделиях фирмы Seagate тип обозначается
последней буквой в шифре модели: А - АТА (16 бит), Х -
для XT (8 бит), а сочетание АХ означает возможность вы-
бора AT/XT с помощью джампера.

Существует два способа задания адреса устройства - с по-
мощью кабельной выборки или явным заданием адреса на
каждом из устройств. Режим кабельной выборки включается
перемычкой CS (Cable Select - кабельная выборка). В этом
случае оба устройства на шине конфигурируются одинако-
во-в режим CS, а адрес устройства определяется его поло-
жением на специальном кабеле-шлейфе (рис. 6.2). Кабель-
ная выборка будет работать, если она поддерживается и
задана на всех устройствах канала, включая хост-адаптер, ко-
торый обеспечивает заземление контакта 28. При этом спо-
собе задания адресов исключается синхронизация шпинде-
лей накопителей (актуально в RAID-массивах) через тот же
провод контакта 28. Кабельная выборка применяется редко.
Ее условное преимущество - унификация конфигурирова-
ния устройств, а недостаток - привязка физического поло-
жения устройств к кабелю - ведущее устройство должно
быть ближе к адаптеру, чем ведомое. Возможно подключе-
ние адаптера к среднему разъему, а устройств - к крайним,
но это не всегда удобно.

Более распространен режим явной адресации, при котором
используется обычный "прямой" кабель (см. рис. 6.1). В этом
случае перемычка CS не устанавливается, а адрес устрой-

ства задается перемычками, состав которых варьируется. В
принципе, достаточно лишь указать устройству его номер
(0/1), но в устройствах, разработанных до стандарта АТА,
ведущему устройству "подсказывали" о наличии ведомого
(по интерфейсу АТА оно могло бы это определить само по
сигналу DASP^). Итак, на устройствах IDE можно увидеть
следующие джамперы:

^ M/S (Master/Slave - ведущее/ведомое) - переключатель
адреса. Если на шине присутствует одно устройство, оно
должно быть сконфигурировано как ведущее. Если на
шине два устройства - одно должно быть ведущим, дру-
гое - ведомым. Иногда джампер обозначается как "<^/D"
(диск С:/диск D:), но для второго канала IDE такое на-
звание некорректно. Когда появились первые IDE-диски
емкостью 1 Гбайт, для преодоления барьера в 504 Мбайт
некоторые модели допускали конфигурирование в виде
двух устройств (0 и 1) половинной емкости. В таком ре-
жиме на их IDE-шлейф второе физическое устройство
подключать нельзя.

^ SP (Slave Present), DSP (Drive Slave Present), "Master but
Slave is not ATA-compatible", "Master but Slave uses only
PDIAG-signal" - устанавливается на ведущем устройстве
для указания на присутствие ведомого. Если переключа-
тель установлен, а ведомое устройство не подключено,
POST даст сообщение об ошибке. Джампер применяется
для дисков, не использующих сигнал DASP#.

^ ACT (Drive Active) - устанавливается на Master (встре-
чается редко).

Для полностью АТА-совместимых дисков перемычка ставится
только на ведомое устройство, а его присутствие ведущее
определит автоматически.

Разобраться с джамперами старых устройств трудно, если нет
документации. У современных устройств лишние джамперы
упразднили, а существующие комментируются на наклейке-
шильдике. Если джамперы устанавливаются рядом с интер-
фейсным разъемом, вероятно, они расположены в соответствии
со стандартом АТА (рис. 6.4). Здесь буквой k обозначены по-
зиции ключевых (пропущенных) выводов, контакты 1-40 ис-

пользуются для интерфейса, а контакты А-Н - для установ-
ки джамперов (табл. 6.14).

62.jpg
 

Рис. 6.4. Джамперы на разъемах интерфейса АТА:

а - SFF8212, б - SFF8057, в - SFF8058

Выборка SFF8212 SFF8057 SFF8058
Используемые контакты A...D Е...Н A...F
Кабельная выборка B-D E-F А-В
Master - G-H E-F
Master при наличии Slave - G-H, E-F E-F
Slave А-В - C-D


 

Следует учитывать, что перестановка джамперовчасто воспринимается устройством
только по включении питания. Кроме того, установка на один шлейф двух разно-
типных не-АТА-устройств часто невозможна.

 

 

 

 

Сайт управляется системой uCoz