Text
                    Авдеев В. А.
ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА интерфейсы, схемотехника, программирование
Рекомендовано УМО вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности 230101 «Вычислительные машины, комплексы, системы и сети»
Москва, 2009
УДК 681.3.06(07)
ВВК 32.973
А18
Al8 Авдеев В. А.
Периферийные устройства: интерфейсы, схемотехника, программирование. - М.: ДМК Пресс, 2009. - 848 с.: ил.
ISBN 978-5-94074-505-1
В книге с энциклопедической полнотой рассматриваются периферийные устройства персонального компьютера; принципы действия и применения разнообразных шин (PCI, SCSI, USB, IEEE 1394, I2C, SATA, SAS, PCI Express); интерфейсная схемотехника; интерактивные устройства ввода; способы обмена данными, видеоадаптеры и мониторы; печатающие устройства, сканеры, жесткие диски, дисководы CD и DVD, преобразователи информации, модемы и т. д.
Приведены основные сведения по защите информации от ошибок (коды Хэмминга, БЧХ и Рида-Соломона). Показаны рисунки динамических моделей некоторых периферийных устройств и шин, поясняющие принципы их работы. Изложены вопросы программирования некоторых периферийных устройств на регистровом уровне и составлены функциональные графы вариантов программных заданий. Рассмотрены способы построения пространственных интерфейсов ввода/вывода на базе микросхем коммутационных устройств.
Книга содержит большое количество схем и таблиц, способствующих лучшему пониманию соответствующей информации. Главы в основном имеют следующую структуру: основные терминологические определения, описание функциональных, аппаратных и параметрических классификационных признаков, справочное дополнение, контрольные вопросы и упражнения, список литературы.
Издание предназначено для студентов вузов и колледжей, изучающих компьютерную технику, а также для преподавателей и инженерно-технических работников.
УДК 681.3.06(07)
ББК 32.973
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.
ISBN 978-5-94074-505-1
© Авдеев А. В., 2009
© Оформление, ДМК Пресс, 2009
Содержание
Введение................................................ю
Глава 1. Базовый компьютер. Терминология...............12
1.1.	Типы шин..........................................12
1.2.	Центральная часть компьютера......................17
1.3.	Клавишное устройство ввода........................21
1.4.	Контроллер прямого доступа к памяти...............23
1.5.	Контроллер гибкого диска..........................25
1.6.	Дисковод гибкого диска............................27
1.7.	Жесткий диск......................................30
1.8.	Интерфейсы жесткого диска.........................33
1.9.	Системная шина с квитированием .................. 41
1.10.	Шина расширения................................. 44
Контрольные вопросы................................... 48
Литература.............................................51
Г лава 2. Многоуровневая система шин...................52
2.1.	Функциональная классификация шин..................52
2.2.	Архитектура компьютера............................69
2.3.	Базовая шина PCI................................. 74
2.4.	Интерфейс SCSI....................................86
2.5.	Модель шины SCSI.................................102
2.6.	Шина USB ........................................107
2.7.	Модель шины USB..................................132
2.8.	Шина IEEE1394....................................145
2.9.	Последовательный интерфейс SATA..................147
2.10.	Последовательный интерфейс SAS..................151
2.11.	Последовательный интерфейс PCI Express..........153
Контрольные вопросы...................................160
Литература............................................164
Г лава 3. Интерфейсная схемотехника...................166
3.1.	Основные определения.............................166
3.2.	Способы обмена данными...........................174
4	Содержание
3.3.	Дешифрация адреса................................182
3.4.	Формирование управляющих сигналов................188
3.5.	Интерфейсные формирователи.......................191
3.6.	Адаптер программного обмена......................192
3.7.	Интерфейс с мультиплексной шиной.................196
3.8.	Адаптер принтера.................................201
3.9.	Программа вывода данных на печать ...............204
3.10.	Варианты заданий ...............................208
3.11.	Энергонезависимая флэш-память...................209
Контрольные вопросы...................................213
Упражнения............................................216
Литература............................................217
Глава 4. Устройство - цель шины PCI...................218
4.1.	Основные определения.............................218
4.2.	Задание на проектирование цели...................221
4.3.	Общий вид схемы цели.............................222
4.4.	Схема приема адреса и команды....................229
4.5.	Цикл конфигурации ...............................232
4.6.	Экспериментальная часть..........................238
Контрольные вопросы...................................242
Литература............................................242
Глава 5. Прямой доступ к памяти.......................243
5.1.	Основные определения.............................243
5.2.	Общие сведения ..................................244
5.3.	Контроллер ПДП...................................246
5.4.	Внешний контроллер с режимом ПДП.................256
5.5.	Упрощенная схема КПДП............................262
5.6.	Программирование КПДП............................268
5.7.	Варианты заданий.................................272
Контрольные вопросы...................................272
Литература............................................273
Г лава 6. Периферийные интерфейсы ввода/вывода..........................................274
6.1.	Последовательный интерфейс RS-232 ...............274
6.2.	Асинхронная передача данных......................280
6.3.	Синхронная передача данных.......................282
6.4.	Асинхронный передатчик...........................282
6.5.	Асинхронный приемник.............................284
6.6.	Подключение портов УАПП к шине...................286
Содержание	5
6.7.	Морфологический граф заданий.......................288
6.8.	МикросхемаУАПП.....................................290
6.9.	Модели схем последовательной передачи данных.......293
6.10.	Параллельный интерфейс............................300
6.11.	Программируемый периферийный интерфейс............300
6.12.	Адаптер последовательно-параллельного интерфейса..305
6.13.	Адаптер ISA/ИРПР..................................306
6.14.	Тестирование последовательного порта (УАПП).......315
6.15.	Пример выполнения варианта задания................321
6.16.	Варианты заданий .................................324
6.17.	Интерфейс 12С.....................................326
6.18.	Последовательный интерфейс EIA-485 (RS-485) ......335
Контрольные вопросы.....................................338
Литература..............................................340
Глава 7. Защита данных от ошибок........................342
7.1.	Основные определения...............................342
7.2.	Проверка четности..................................346
7.3.	Коды Хэмминга......................................350
7.4.	Справочное дополнение..............................357
7.5.	Циклический контроль...............................364
7.6.	Коды БЧХ...........................................367
7.7.	Коды Рида-Соломона.................................383
7.8.	Каскадные коды ....................................386
Упражнения..............................................389
Контрольные вопросы.....................................390
Литература..............................................393
Г лава 8. Пространственные интерфейсы ввода/вывода............................................394
8.1.	Устройства связи вычислительных систем.............394
8.2.	Назначение пространственных интерфейсов............396
8.3.	Структура данных КУ................................398
8.4.	Элементная база пространственных интерфейсов.......400
8.5.	Структурная схема пространственного интерфейса.....402
8.6.	Матричное КУ.......................................404
8.7.	Трехкаскадное КУ...................................405
8.8.	Конфигурация многопроцессорной системы ............407
8.9.	Общий принцип функционирования системы.............410
Контрольные вопросы.....................................416
Справочное дополнение...................................416
Литература..............................................417
6	Содержание
Глава 9. Интерактивные устройства ввода...............418
9.1.	Основные определения.............................418
9.2.	Типы клавиш......................................419
9.3.	Клавиатура PC/XT.................................420
9.4.	Клавиатура PC/AT.................................423
9.5.	Манипулятор мышь.................................436
9.6.	Шаровые манипуляторы.............................437
9.7.	Ручки управления.................................438
9.8.	Программа «Коды клавиатуры» .....................440
9.9.	Варианты заданий.................................443
Справочное дополнение.................................446
Контрольные вопросы...................................449
Литература............................................450
Глава 10. Видеоадаптеры и мониторы....................451
10.1.	Основные определения............................451
10.2.	Типы видеоадаптеров.............................452
10.3.	Типы мониторов..................................454
10.4.	Растровые мониторы..............................455
10.5.	Адаптер VGA.....................................458
10.6.	Текстовый режим ................................460
10.7.	Графический режим...............................462
10.8.	Видеопроцессоры, графические ускорители.........472
10.9.	Дисплеи на жидких кристаллах....................474
10.10.	Демонстрационные модели........................483
10.11.	Программа управления курсором..................485
10.12.	Программа изучения знакогенератора.............501
10.13.	Программа выполнения текстового режима.........506
10.14.	Программа выполнения графического режима.......514
10.15.	Видеокарты 3D..................................521
Контрольные вопросы...................................527
Литература............................................529
Г лава 11. Печатающие устройства......................530
11.1.	Классификация принтеров.........................530
11.2.	Лазерные принтеры...............................532
11.3.	Светодиодные принтеры...........................538
11.4.	Струйные принтеры...............................545
11.5.	Матричные принтеры..............................547
11.6.	Адаптер принтера................................552
11.7.	Программа вывода данных на печать...............555
11.8.	Варианты заданий................................560
Содержание	7
Контрольные вопросы к теме «Лазерный принтер»...........560
Литература..............................................562
Г лава 12. Устройства ввода и регистрации информации.............................................563
12.1.	Дигитайзеры .....................................563
12.2.	Графопостроители.................................565
12.3.	Сканер. Основные определения.....................568
12.4.	Структурная схема сканера........................570
12.5.	Принцип действия сканера.........................577
12.6.	Электронный учебник «Сканер».....................580
Контрольные вопросы....................................584
Литература.............................................586
Глава 13. Принципы магнитной записи....................587
13.1.	Магнитные ленты..................................587
13.2.	Дисковые накопители..............................588
13.3.	Магнитные головки................................592
13.4.	Методы кодирования...............................594
13.5.	Форматирование дорожки...........................597
13.6.	Циклический избыточный контроль..................600
13.7.	Адресные метки...................................602
13.8.	Фазовая автоподстройка частоты...................605
Справочное дополнение..................................606
Контрольные вопросы....................................607
Литература.............................................608
Г лава 14. Г ибкие и жесткие диски.....................609
14.1.	Типы гибких дисков...............................609
14.2.	Организация данных на диске......................610
14.3.	Накопитель ГМД...................................611
14.4.	Контроллер НГМД..................................612
14.5.	Подключение КНГМД к шине ........................615
14.6.	Конструкция жесткого диска.......................616
14.7.	Размещение данных на жестком диске...............617
14.8.	Технические параметры НЖМД.......................618
14.9.	Порты адаптераЖД.................................619
14.10.	Контроллеры жесткого диска......................620
14.11.	Программирование гибкого диска..................627
14.12.	Программирование жесткого диска.................643
Контрольные вопросы....................................651
Литература.............................................652
8
Содержание
Глава 15. Оптические носители информации................653
15.1.	Назначение CD...................................653
15.2.	Конструкция и геометрия CD......................653
15.3.	Принципы оптического чтения/записи..............656
15.4.	Функциональные характеристики CD................658
15.5.	Аппаратурные характеристики.....................664
15.6.	Обобщенная схема дисковода CD...................666
15.7.	Технические характеристики......................669
15.8.	Цифровой универсальный диск (DVD)...............670
15.9.	Функциональные признаки.........................672
15.10.	Параметрическая классификация..................675
15.11.	Аппаратурные признаки..........................676
15-12. Программный интерфейс и руководство пользователя.678
15.13.	Многослойный диск FMD..........................681
Контрольные вопросы...................................683
Литература............................................686
Глава 16. Устройства преобразования информации............................................687
16.1.	Основные определения АЦП........................687
16.2.	Цифроаналоговые преобразователи.................692
16.3.	Аналого-цифровые преобразователи................694
16.4.	Устройства связи с объектом.....................701
16.5.	Интерактивная модель АЦП........................707
Контрольные вопросы...................................708
Литература............................................709
Глава 17. Модемное соединение компьютеров...............710
17.1.	Основные определения............................710
17.2.	Аналоговые модемы...............................715
17.3.	Функциональные признаки модемов ................719
17.4.	Параметрические признаки модемов................725
17.5.	Аппаратура аналогового модема...................726
17.6.	Цифровая связь ISDN ............................735
17.7.	Методы цифровой модуляции.......................737
17.8.	Технология *DSL.................................738
Контрольные вопросы...................................739
Литература............................................741
Приложение 1. Варианты выполнения программных заданий...................................742
Коды клавиатуры.......................................742
Вывод данных на печать. Адаптер принтера..............751
Содержание	9
Программирование последовательного порта (УАПП) ....764
Управление курсором. Контроллер ЭЛТ.................777
Знакогенератор. Режимы дисплея......................790
Текстовый режим дисплея. Управление сдвигами данных.803
Графический режим дисплея...........................811
Программирование контроллера НЖМД...................820
Литература..........................................829
Приложение 2. Проверочные вопросы к базовым темам.....................................830
Приложение 3. Ответы на контрольные вопросы и решения упражнений................................839
Приложение 4. Ответы на вопросы по темам базового курса.............................847
Введение
пыт развития вычислительной техники показывает, что основные функ-/ j циональные и параметрические характеристики компьютеров определя-IX ются входящими в их состав внешними и внутренними периферийными устройствами и интерфейсами (шинами) различных типов (системными, локальными, периферийными с параллельной и последовательной передачами данных).
Вместе с совершенствованием центрального процессора большое внимание уделяется развитию новой периферийной аппаратуры с использованием различных физических принципов (технологий), расширяющих их технические и эксплуатационные параметры. Причем наивысшие технологические достижения в разработке периферийных устройств меняются каждый год.
Предлагаемая книга, на наш взгляд, способствует развитию инженерного мышления, соответствующих практических навыков и обеспечивает образовательный интерес к изучению данной темы, так как позволяет получить опыт в проектировании и программировании периферийных устройств и узнать, как работают наиболее важные части компьютера.
Данная работа является продолжением и развитием предыдущей книги «Компьютеры: шины, контроллеры, периферийные устройства» (М.: Радио и связь, 2001. 480 с.).
В книге была предпринята попытка изложить сложный и разноплановый материал в едином систематизированном подходе: основные определения, функциональные, параметрические, аппаратурные классификационные признаки периферийных устройств (интерфейсов) и принципы их действия. Задача состояла в том, что надо было найти наиболее важные классификационные признаки, присущие всем устройствам (найти общее в несхожем), и признаки, которые одно устройство отличают от другого. Известны три метода классификации устройств: иерархический (патентная международная система классификации, имеющая несколько редакций), морфологический (классификация на уровне блоков и их связей) и параметрический (емкость, быстродействие, потребляемая мощность и т. д.). Но наиболее важной является предлагаемая функциональная классификация, описывающая способ функционирования устройств (шин). Морфологический метод требует просмотра большого числа технических решений, связанных с перестановкой блоков и их связей (мелкой детализацией). Функциональный метод базируется на наиболее важных основных признаках способов функционирования устройств.
Одному способу функционирования может быть поставлено в соответствие множество аппаратных решений. Функциональный метод не страдает излишней детализацией и является одним из методов создания новых устройств (поисковой системой новых патентных решений). Конкурентная борьба фирм связана с нахождением новых патентованных технических решений (пусть даже небольших).
В настоящее время наблюдается тенденция к переходу от одной параллельной шины общего назначения с большим числом линий связи (параллельнопоследовательный функциональный признак передачи данных) к нескольким двухпроводным каналам связи (последовательно-параллельный функционалы
Введение
11
ный признак передачи данных). Например, последовательная шина PCI Express имеет 1 -, 4-, 8-, 16-, 32-канальные варианты, а шина Hyper Transport позволяет выбирать двунаправленные каналы с различным числом линий связи (2, 4, 8 и т. д.) для передачи данных. Указанные выше функциональные признаки показывают, как передаются байты и биты по проводам связи.
Представлены некоторые рисунки динамических моделей работы схем и шин, иллюстрирующие принципы их работы. Другой особенностью книги является совместное изложение схемотехники периферийных устройств и программирования принципа их функционирования на языке ассемблера. Для принтера. контроллера прямого доступа к памяти, универсального асинхронного приемопередатчика приведены примеры и представлены функциональные графы, задающие варианты заданий с целью программирования их работы на регистровом уровне. Предусмотрены творческие варианты, в которых необходимо показать экранные интерфейсы, демонстрирующие работу программ с использованием адресуемых регистров. В конце книги показаны некоторые образцы таких работ.
В заключение отметим инновационные элементы, которые содержит книга:
•	в комплексном подходе изложены принципы построения периферийных устройств и принципы их программирования на регистровом уровне;
•	составлен функциональный граф классификации всех интерфейсов, способствующий развитию инженерного мышления и поиску новых патентных решений;
•	представлены 100 вопросов четырех типов к базовым темам с ответами в конце книги;
•	показаны иллюстрации интерактивных динамических моделей некоторых устройств (интерфейсов) и процессов;
•	разработаны пространственные интерфейсы на базе коммутационных устройств, ускоряющие обмен данными между устройствами;
•	приведены основные сведения по защите информации от ошибок (коды Хэмминга, БЧХ, Рида-Соломона) со значительным числом решаемых упражнений;
•	представлены образцы студенческих творческих лабораторных работ и т. д.
Хочется выразить признательность следующим коллегам: Михееву А., Скороходу Д., Черемушкину Д., - принявшим участие в создании динамических моделей некоторых устройств и процессов.
Автор также признателен ректору ЮФУ, профессору Захаровичу Владиславу Георгиевичу за большую помощь в издании этой книги.
Базовый компьютер. Т ерминология
1.1.	Типы шин
Шина - группа электрических линий связи, объединенных определенным функциональным назначением, служащая для передачи сигналов устройств компьютеров с целью организации их совместной работы.
В первых компьютерах применялись три основных типа шин: системные шины, локальные и периферийные. Пример использования шин в базовом компьютере представлен на рис. 1.1.
Для данного примера системная шина - это общая шина, с помощью которой устройства компьютера (центральный процессор, оперативная память, контроллеры, адаптеры и т. д.) гибко и эффективно соединены для передачи и приема информации.
Системная шина содержит слоты расширения (разъемы), необходимые для подключения плат контроллеров и адаптеров периферийных устройств.
В связи с этим системная шина называется еще открытой шиной, или шиной расширения, разработанной с учетом того, что пользователи, кроме стандартной периферийной аппаратуры, будут подключать свои разработанные устройства.
Работа компьютера с использованием системной шины организуется таким образом, что в какой-то момент времени одно устройство является активным (мастером, инициатором, задатчиком), а другое - пассивным устройством (исполнителем, целью).
Активными устройствами могут быть процессоры, контроллеры прямого доступа и периферийные устройства, работающие в режиме мастера (инициатора).
Активное устройство с помощью схемы арбитража, например размещенной в центральном процессоре, захватывает системную шину и выполняет передачу (прием) данных в требуемый исполнитель (из исполнителя).
Таким образом, системная шина - это сложная шина, которая содержит цепи для передачи адреса данных и сигналов управления, необходимых для реализации различных шинных операций: арбитража, прерывания, прямого доступа, пересылок данных, контроля, синхронизации и т. д.
Типы шин
13
АЛУ - арифметико-логическое устройство; РП - регистровая память, УУ - устройство управления, КВР -клавиатура; ПРИ - принтер; ГД - гибкий диск; ПДП - прямой доступ к памяти, EIDE - периферийная шина
Рис. 1.1. Схема базового компьютера
К системным шинам относятся следующие шины: ISA, EISA, Multibus, MCA, PCI и др. Большинство системных шин стандартизировано.
Стандарт - международное, национальное соглашение на производство различных компьютерных устройств, определяющее аппаратную, программную и конструктивную совместимость.
Например, системная шина ISA (Industry Standard Architecture, Промышленная стандартная архитектура) устанавливает определенные требования к подключению периферийных устройств. Устройства сопряжения (адаптеры или контроллеры) различных периферийных устройств содержат стандартную часть связи с шиной ISA, а другую нестандартную часть составляют адресуемые регистры, с помощью которых выполняется обмен информацией между центральным процессором и периферийным устройством.
Стандарт системной шины определяет: размеры и форму слота расширения, назначение сигналов контактов слота, временную диаграмму циклов шины при выполнении различных операций, электрические характеристики сигналов, требования к внешней печатной плате и т. д.
Периферийное устройство - устройство ввода/вывода, подключенное через адаптер или контроллер к процессору (оперативной памяти) с помощью системной шины. Различают внешние и внутренние периферийные устройства. Внешние периферийные устройства размещены вне корпуса компьютера и подключаются к нему с помощью внешних разъемов, расположенных на его корпусе.
14
Базовый компьютер. Терминология
Внутренние периферийные устройства конструктивно или выполняются в виде печатных плат, вставляемых в слоты расширения, или являются встроенными в системную (материнскую, планерную) плату компьютера.
Термин «системная плата» был введен фирмой IBM и определяет многослойную печатную плату, на которой установлены: центральный процессор, оперативная память, слоты расширения, постоянная память, контроллеры и другие компоненты компьютера. Внешние периферийные устройства (принтер, сканер, модем ит. д.) подключаются к компьютеру с помощью различных внешних периферийных шин (RS-232/485, Centronics, USB...), которые могут быть последовательными или параллельными. В последовательных периферийных шинах данные передаются последовательно бит за битом, а в параллельных переписывается целая группа битов за один такт.
Параллельные и последовательные периферийные шины также стандартизированы. Например, последовательная периферийная шина RS-232C определена стандартом Ассоциации электрической промышленности и предназначена для сопряжения аппаратуры передачи данных (модемов) и оконечного (терминального) оборудования данных (компьютера). Аббревиатура RS - Recommended Standard (рекомендуемый стандарт), число 232 - номер, буква «С» -серия данного стандарта. Американский стандарт RS-232C поддерживают (согласуются с ним) японские стандарты JIS и С6361 и отечественный стандарт «Стык С2».
Стандарт RS-232 соответствует стандарту V.24 и V.28 ITU -TSS (International Telecommunications Union - Technical Standards Sector, Международный телекоммуникационный Союз - Сектор технических стандартов). Рекомендации, относящиеся к модемам, имеют обозначения «V».
Кроме того, разработаны стандарты RS-422 и RS-423, позволяющие увеличить длину линий связи и скорость передачи данных. В коммуникационных контроллерах фирмы Motorola используется стандарт RS-422 для обслуживания последовательных каналов связи.
Параллельная внешняя однонаправленная периферийная шина Centronics (промышленный стандарт Centronics) является простой шиной типа «точка-точка» для подключения принтера к компьютеру. В этой шине передача данных направляется только в одну сторону от процессора к принтеру. В дальнейшем эта шина совершенствовалась и могла передавать данные в обе стороны.
Стандарт IEEE 1284 (Institute of Electrical and Electronic Engineers, Институт инженеров по электронике и радиоэлектронике) определяет все режимы работы этой параллельной двунаправленной периферийной шины, позволяющие подключать различные устройства ввода/вывода (принтеры, жесткие диски и т. д.).
В Российских государственных стандартах (ГОСТах), относящихся к области компьютерной техники, изложены общие вопросы терминологии, классификации и норм проектирования технических средств.
В силу различных конструктивных решений тактовая частота центрального процессора (процессорного ядра) значительно превосходит тактовую частоту системной шины материнской платы.
Например, старый процессор i80486 имел частоты своей работы 50 или 60 МГц, а частоты функционирования системных шин того времени ISA, EISA и MCA соответственно равны 8 МГц, 8.33 МГц и 10 МГц.
Процессор Pentium IVA использует тактовые частоты: 1,6; 1,8; 2 ГГц и поддерживает частоту главной шины (Host Bus) 400 МГц.
Типы шин	15
Увеличение частоты работы кремния чипа приводит к разогреву процессора, поэтому принимают специальные меры к снижению его температуры: уменьшают напряжение питания с 5 В до 1,5 В, устанавливают миниатюрный вентилятор и термодатчик предельной величины температуры.
Таким образом, достижение положительного эффекта (повышение быстродействия) связано с дополнительными аппаратными затратами (усложнением оборудования) и как следствие - с повышением стоимости изделия.
Большая разница в частотах работы процессора и системной шины привела разработчиков к мысли применения локальной шины, скорость функционирования которой выше скорости системной шины и приближается к скорости процессора. Первые локальные шины использовались для памяти, а потом их стали применять и для подключения видеоадаптеров (видеокарт), в которых для создания реалистичного изображения требовалось обрабатывать большие массивы данных с высокой скоростью. Видеоадаптер - устройство, преобразующее данные центрального процессора в текстовую и графическую информацию, выводимую на экран монитора. В технической литературе понятия «адаптер» и «контроллер» иногда считают синонимами, то есть полагают, что между ними нет четких различий. Однако адаптер - устройство сопряжения между процессором и периферийным устройством, которое связано с преобразованием информации (например, в видеоадаптере) и согласованием передаваемой информации, как в случае использования адаптера принтера. Контроллер - сложное устройство, обычно построенное на базе микропроцессора, управляющее работой подключенных к нему периферийных устройств. К основным функциям контроллера относятся: координация действий во времени, формирование потока данных, управление передачей данных и т. д.
Существует большое многообразие контроллеров, определяемое областью их применения: коммуникационные контроллеры, контроллеры управления технологическим оборудованием, контроллеры гибких и жестких дисков и др.
Карта - печатная плата с микросхемами, вставляемая в слот компьютера и предназначенная для обслуживания определенного устройства. Иногда употребляют термин «видеокарта».
Адаптеры или контролеры могут размещаться на плате расширения или могут быть встроены в системную плату.
Возникает вопрос: каким образом центральный процессор выбирает направление передачи информации по локальной шине или по системной шине? Существуют два основных способа распределения данных по различным устройствам (рис. 1.2) с использованием различных адресных пространств.
В первом случае в системе команд процессора можно использовать одну команду пересылки данных. Процессор анализирует адрес, применяемый в команде, и определяет, куда направлены данные: по системной или по локальной шине.
Во втором случае каждой шине выделяются свои адресные пространства, поэтому требуются две разные команды передачи данных.
Локальная шина существенно «разгружает» системную шину, которая является наиболее «узким местом» в компьютере, при этом общее его быстродействие повышается.
Аналогичным образом для повышения быстродействия компьютера к относительно медленной оперативной памяти стали добавлять внутренний и внеш-
Базовый компьютер. Терминология
Локальная
шина
Рис. 1.2. Распределение адресного пространства: а) разделение общего адресного пространства, б) отдельные (автономные) адресные пространства
ний кэш (быстродействующую локальную память, ускоряющую выполнение команд программы). В кэше сохраняются наиболее часто употребляемые данные и их адреса. Если процессор обнаруживает требуемый адрес, то он обращается к кэшу, в противном случае - к оперативной памяти.
Внутренний кэш входит в состав процессора, а внешний - подключается, например, к локальной шине.
Таким образом, в компьютере используется многоуровневый принцип использования шин и памяти, способ своеобразной «развязки» потоков движения и хранения информации. Похожая картина наблюдается с организацией потоков движения транспорта и их стоянок.
Различные фирмы изготавливают разнообразные видеоадаптеры. Для обеспечения их совместимости VESA (Video Electronic Standards Association, Ассоциация производителей видеоэлектронного оборудования) представила стандарт 32-битной локальной шины VLB (Video Local Bus, локальная шина видео) с тактовой частотой 33 МГц (40 МГц). Шина VLB содержит три слота расширения, скорость передачи 32-битных данных - 133 Мбайт/с (140 Мбайт/с) и предназначена для подключения видеоадаптеров, контроллеров жесткого диска, сетевых адаптеров и других быстродействующих устройств.
В свою очередь, фирмой Intel был предложен стандарт на локальную шину PCI (Peripheral Component Interconnect, взаимодействие периферийных компонентов) с исходной частотой 32 МГц и передачей 32- или 64-битных данных соответственно со скоростью 132 Мбайт/с или 264 Мбайт/с.
Кроме того, фирмой Intel разработана другая, более быстрая 32-битная локальная шина AGP (Accelerated Graphics Processing, Ускоренная графическая обработка), предназначенная для обработки трехмерных изображений, которая имеет тактовую частоту 66,6 МГц.
К основным характеристикам шин можно отнести: число передаваемых бит данных и адреса (разрядность), быстродействие и совместимость, например плата расширения шины ISA совместима с шиной EISA. Компьютерная аппаратура развивается так, что разработчики стараются сохранить предыдущие тех
Центральная часть компьютера
17
нические решения, то есть к старым функциям добавлять новые. Приведем несколько примеров использования совместимости устройств. Платы шины PCI совместимы с шиной AGP.
Развитие видеоадаптеров происходило с сохранением функций всех предыдущих видеоадаптеров.
Совершенствование структуры оперативной памяти по мере увеличения объема происходит с сохранением распределения информации в ее начальной области с целью обеспечения совместимости.
В клавиатуре АТ сохранили режим работы старой клавиатуры XT.
Появление новой шины USB привело к необходимости разработки преобразователей USB/RS-232 и USB/параллельная шина, чтобы пользователи, использующие аппаратуру с последовательными (RS-232) и параллельными периферийными шинами, могли подключать свои устройства к компьютеру с помощью разъема USB.
Микросхемы последовательных асинхронных адаптеров (универсальных асинхронных приемопередатчиков) 8250. 16450. 16550 совместимы на аппаратном (регистровом) уровне.
1.2.	Центральная часть компьютера
Процессор - основное арифметико-логическое (вычислительное и управляющее) устройство с внешней памятью, выполняющее программы, связанные с обработкой данных и управлением работой всех устройств компьютера. К основным характеристикам процессора относятся: разрядность, тактовая частота, тип корпуса (картриджа), технология изготовления ядра.
Например, 32-разрядный процессор Pentium IV обрабатывает данные с частотой 1,5 ГГц, использует сокет 432 (плоский штырьковой разъем) и изготавливается по 0.18-микронной технологии (минимально возможным размером переключательного элемента). В 1999 г. фирмой Intel был разработан 64-разрядный процессор с технологией изготовления ядра 0,18 мкм, тактовой частотой системной шины 266 МГц, трехуровневой организацией встроенного кэша и возможностью сопряжения 512 процессоров.
Оперативная память - устройство ввода/вывода и кратковременного хранения программ и данных, над которыми непосредственно выполняются операции процессора. Оперативная память является энергозависимой (при выключении питания информация теряется).
Важными характеристиками памяти являются тип (динамическая, страничная, синхронная, асинхронная), быстродействие (частота обращения к памяти при записи или считывании данных), информационная емкость (количество ячеек памяти, каждая из которых имеет определенное число разрядов).
Оперативная память состоит из модулей, представляющих собой печатные платы, на которых размещаются микросхемы памяти. Любой модуль устанавливается в специальный слот на системной плате.
Одновременно с появлением каждый раз новых чипов процессоров происходило увеличение объема оперативной памяти и наращивание информации, хранимой в ней, причем для сохранения совместимости с прежними процессорами использовалась и старая информация оперативной памяти. Поэтому в оперативной памяти можно выделить три области (сформировавшиеся
18
Базовый компьютер. Терминология
в процессе развития компьютерной техники): начальная, верхняя и расширенная память.
Упрощенная иллюстрация размещения информации и разделения адресного пространства процессора между оперативной памятью, памятью контроллера (адаптеров) и постоянной памятью показана на рис. 1.3.
Расширенная память
1024К
Верхняя память
640К
Начальная память
Windows, OS/2 или Unix
Зарезервированная область BIOS системной платы
BIOS и буферы плат расширения
Видеопамять
ROM-BIOS
ОК
Программы пользователя
Резидентные программы
Драйверы устройств
Данные BIOS
Векторы прерывания
Аппаратные средства
Постоянная память системной платы
Контроллеры и адаптеры
Видеоадаптеры
Рис. 1.3. Схема разделения адресного пространства памяти
Первые 640 Кбайт оперативной памяти использовались программами дисковой операционной системы (DOS). Диапазон памяти от 640 Кбайт до 1024 Кбайт (верхняя память) зарезервирован для обслуживания различных устройств компьютера (аппаратурный уровень), а диапазон от 1024 Кбайт и выше (расширенная память) - для хранения программ операционной системы Windows, OS/2 или Unix. Пространство памяти от 0 Кбайт до 1024 Кбайт стало стандартным с целью обеспечения полной совместимости различных процессоров. Кратко поясним назначение участков памяти.
Векторы прерывания - стартовые адреса программ обработчиков прерываний.
BIOS (Basic Input/Output System) - базовая система ввода/вывода, являющаяся частью операционной системы, управляющая работой устройств компьютера и взаимодействующая с прикладными программами.
Прикладные программы (приложения) - программы, предназначенные для работы под управлением операционной системы.
BIOS хранится в постоянной памяти, содержит набор процедур (пакет служебных программ) и выполняет следующие функции: загрузку операционной
Центральная часть компьютера	19
системы, инициализацию, тестирование, конфигурирование устройств компьютера, обслуживание аппаратных и программных прерываний. Данные BIOS -это данные о типе компьютера, объеме памяти, версии операционной системы, имеющемся оборудовании (числе и типе видеоадаптеров, гибких дисков, принтеров, игровых портов и т. д.).
Для модернизации BIOS стали использовать флэш-память (специальное ПЗУ с многократным перепрограммированием).
Флэш-память может быть перезаписана без участия программатора непосредственно в компьютере. Она характеризуется энергонезависимостью, электрическим стиранием информации с большой скоростью (частично или полностью) и малым временем доступа.
Драйверы - программы специального формата, управляющие работой устройств компьютера (принтера, накопителями гибкого и жесткого дисков, клавиатурой, мышью и т. д.).
Резидентные программы - программы, остающиеся в оперативной памяти после их выполнения и предохраняющиеся операционной системой от возможного их искажения другими программами, которые через прерывание получают к ним доступ. Например, резидентными являются программы сжатия информации диска, кэширования памяти, сетевых протоколов и т. д.
ROM-BIOS - базовая система ввода/вывода, которая постоянно содержится в памяти, доступной только для чтения.
Программы пользователей - программы, загружаемые в оперативную память в данный момент для выполнения.
Видеопамять - область памяти, размещенная в видеоадаптере, использующая адресное пространство оперативной памяти для вывода на экран графической и текстовой информации.
Каждому типу видеоадаптера отводятся определенные адресные участки оперативной памяти (видеобуфера), например видеоадаптеры VGA и SuperVGA (VGA - Video Graphics Array, Видеографическая матрица) занимают адресное пространство А000 - BFFF (128 Кбайт), видеоадаптер CGA (Color Graphics Adapter, Цветной графический адаптер) - адресное пространство В8000 - ВСООО (16 Кбайт) ит. д.
Операционная система - пакет программ, управляющих устройствами компьютера и осуществляющих взаимодействие пользователя с компьютером и программ между собой, то есть обеспечивающих связь программ, аппаратуры и пользователя с целью достижения удобства управления компьютером и расширения его функциональных возможностей. Операционная система выполняет следующие функции: диагностики компьютера, управления вводом/выводом, работы с файлами, организации диалога с пользователем, защиты и т. д.
Известны командная неграфическая система (DOS - Disk Operating System, Дисковая операционная система) и графическая операционная система Windows. DOS - неграфическая операционная система, наиболее приближенная к аппаратуре компьютера, основная часть программ которой хранится на диске, и использующая командную строку.
DOS выполняет символьные инструкции, вводимые в командную строку текстового экрана для запуска соответствующих программ. Кроме того, для удобства работы были разработаны специальные программы-оболочки (например, Norton Commander), которые позволяют исключить набор соответствующих сложных команд DOS, что облегчает и ускоряет работу пользователя на компьютере.

20
Базовый компьютер. Терминология
Windows - графическая операционная система, ориентированная на широкий круг пользователей и позволяющая значительно упростить их общение с компьютерами путем применения графических знаков (элементов изображения) и стандартного (единообразного) подхода для работы с приложениями. Windows требует использования 4-8 и более Мбайт оперативной памяти. 4-10 и более Мбайт дисковой памяти. OS/2 - многозадачная операционная система 32-разрядных процессоров, поддерживаемая IBM.
Unix - многопользовательская, многозадачная, переносимая на большинство компьютеров операционная система с графической версией.
Буферы плат расширения области оперативной памяти, предназначенные для хранения данных, передаваемых от одного устройства компьютера другому.
Буферы используются для согласования скорости передачи информации между устройствами с разным быстродействием. Например, сетевые платы имеют буферы объемом от 8 Кбайт до 64 Кбайт, размещенные в адресном пространстве оперативной памяти (процессора).
Контроллеры жестких дисков, некоторые видеоадаптеры и отдельные сканеры содержат микросхемы постоянной памяти, которые хранят программы для управления вводом/выводом информации. Участок адресов памяти (диапазон от 640 Кбайт до 1024 Кбайт) в основном зарезервирован за памятью, размещенной в адаптерах и контроллерах периферийных устройств.
Расширенная память используется операционными системами Windows, OS/2, Unix.
Таким образом, можно отметить, что процессор на разных уровнях связан с несколькими типами памяти различного назначения (рис. 1.4).
Рис. 1.4. Схема связи процессора с многоуровневой памятью
Клавишное устройство ввода	21
Каждая память имеет свое функциональное назначение, принцип построения и технические характеристики. Наибольшим быстродействием обладает кэш-память, непосредственно связанная с процессором и берущая на себя основную нагрузку по обслуживанию оперативной памяти. Память жестких дисков на сегодняшний момент времени имеет наибольшую емкость (больше, чем у оперативной памяти), но характеризуется меньшим быстродействием по сравнению с оперативной памятью. К постоянной памяти предъявляются высокие требования по чтению информации с малым временем доступа.
В связи с необходимостью обрабатывать большие массивы информации трехмерных графических изображений в реальном времени видеопамять имеет относительно большую емкость и два канала доступа к ней. Первый канал необходим для подключения процессора, а второй - видеоадаптера или графического процессора.
Сменная память компакт-дисков приобретает все большее значение, особенно с появлением многослойных DVD и развитием лазерной технологии.
Микросхемы КМОП (CMOS - Complementary Metal-Oxid Semiconductor, Комплементарный металлооксидный полупроводник) - тип интегральных схем, которые характеризуются относительно высоким быстродействием, но потребляют небольшой ток и поэтому выделяют мало тепла.
КМОП-память с резервным батарейным питанием используется для хранения параметров конфигурации компонентов компьютера, например жесткого диска, часов и календаря.
На рис. 1.5 представлена схема связи процессора и жесткого диска, которая обладает наибольшей длиной.
Рис. 1.5. Схема связи процессора и жесткого диска
Управление передачей данных между процессором и жестким диском осуществляет драйвер (программа) BIOS, являющийся частью операционной системы Windows.
1.3.	Клавишное устройство ввода
Клавиатура - устройство ручного ввода кодов номеров нажатых клавиш (скэн-кодов), содержащее матрицу (поле) датчиков клавиш и микропроцессор с буферной памятью.
22	Базовый компьютер. Терминология
Скан-код - порядковый номер клавиши.
На рис. 1.6 изображена упрощенная схема клавиатуры.
Матрица датчиков (ключей)
Рис. 1.6. Упрощенная схема клавиатуры
Микропроцессор клавиатуры выполняет следующие основные функции: сканирование (последовательный циклический опрос) матрицы датчиков (ключей), определение факта нажатия (отжатия) клавиши, нахождение скан-кода и помещение его в буфер FIFO, формирование последовательной кодовой посылки скан-кода специального формата и передача его в контроллер клавиатуры, прием и выполнение команд процессора, реализацию протокола связи.
Буфер FIFO (First In First Out, первым пришел - первым вышел) - буферная память с обслуживанием в порядке поступления данных. На рис. 1.7 изображена схема взаимодействия клавиатуры с процессором.
Клавиатура последовательно опрашивает матрицу датчиков клавиши, определяет факт нажатия клавиши, формирует соответствующие коды нажатия или отпускания (скан-коды) и передает их последовательными кодовыми посылками определенного формата в контроллер клавиатуры.
Контроллер клавиатуры выполнен на базе микропроцессора, содержащего внутреннюю память, осуществляет преобразование последовательных скан-кодов в параллельные коды нажатия (отжатия) системного формата и вырабатывает сигнал запроса прерывания, по которому процессор прекращает свою текущую работу и определяет адрес вектора прерывания.
Вектор прерывания - адрес обработчика прерывания (драйвера), выполняющего обслуживание периферийного устройства.
Драйвер клавиатуры представляет собой сложную программу, реализуемую процессором, которая в конечном итоге ее выполнения, для нажатия символьной клавиши, помещает в кольцевой буфер клавиатуры два байта: нулевой байт - код ASCII, а второй байт - скан-код.
Коды ASCII (American Standard Code for Information Interchange, Американский стандартный код для обмена данными) - таблица кодов от 0 до 127, в которой каждому числу, символу, управляющему знаку и т. д. ставится в соответствие код (например, цифре 0 - код 48, цифре 1 - код 49, цифре 2 - код 50, символу А - код 65, символу В - код 66, символу С - код 67). Значение от 0 до 31
Контроллер прямого доступа к памяти
23
образуют управляющие коды (например, для принтера код 10 - перевод строки, код 12 - переход страницы, код 13 - возврат каретки), которые не выводятся на печать. Диапазон от 32 до 127 используется для представления кодов ASCII чисел, символов, знаков препинания и т. д.
Расширенные коды ASCII - набор кодов, соответствующих диапазону от 128 до 255, которые обозначают научные, графические, иностранные символы.
1.4.	Контроллер прямого доступа к памяти
Контроллер прямого доступа к памяти (ПДП) - устройство, инициализируемое (настраиваемое) процессором и выполняющее аппаратным способом управление быстрой передачей данных между оперативной памятью и гибким диском через контроллер гибкого диска без участия процессора.
Микросхема контроллера ПДП содержит четыре однотипных канала (КО-КЗ), работающих в режиме разделения времени, то есть к этой микросхеме можно подключить четыре периферийных устройства, работающих в режиме ПДП.
Наивысшим приоритетом обладает канал КО, а наименьшим - канал КЗ. Микросхема допускает каскадирование (наращивание числа каналов) и программирование типа приоритета (фиксированного или циклического). Общая структура канала контроллера ПДП показана на рис. 1.8.
Каждый канал контроллера ПДП содержит счетчик текущего адреса, регистр режима и счетчик передаваемых байтов, программно доступные по системной
24
Базовый компьютер. Терминология
Рис. 1.8. Общая структура канала контроллера ПДП
шине со стороны процессора. Работа счетчика текущего адреса программируется на увеличение или уменьшение его содержимого в каждом цикле передачи байтов данных, а содержимое счетчика байтов автоматически уменьшается на единицу в этом же цикле. Как только значение счетчика байтов станет равным FFFFh (h - 16-ричное представление), формируется сигнал окончания счета.
Блок управления координирует работу всех каналов. Циклы ПДП на системной шине начинают выполняться с получением контроллером ПДП сигнала «Запрос ПДП», который поступает от контроллера гибкого диска. Контроллер ПДП, в свою очередь, устанавливает сигнал «Запрос шины», поступающий в процессор, и после приема сигнала «Разрешение шины» из процессора получает управление шиной. Затем контроллер начинает выполнять передачу данных.
На рис. 1.9 изображена организация прямого доступа к памяти.
Данные
Данные
Оперативная память
Гибкий
диск
Управление
(Адрес, Чтение/Запись)
Контроллер гибкого диска
Контроллер ПДП
Запрос прерывания
Инициализация
Запрос
ШИНЫ'''3
Процессор
^решение шины
Рис. 1.9. Организация прямого доступа к памяти
Контроллер гибкого диско
25
На этом этапе настройки процессор задает в контроллере ПДП начальный адрес ячейки оперативной памяти, начиная с которой будут считываться или записываться данные, код количества передаваемых байтов (слов), код режима работы, и освобождает системную шину. Получив управление системной шиной, контроллер ПДП выполняет управление передачей данных так, как это бы делал процессор, то есть устанавливает в каждом цикле шины адрес ячейки оперативной памяти и ее сигналы чтения и записи. Кроме того, контроллер ПДП с помощью соответствующих сигналов координирует свою работу с контроллером гибкого диска.
После завершения передачи блока данных контроллер ПДП соответствующим сигналом («Окончания счета») сообщает об этом контроллеру гибкого диска, и тот, в свою очередь, устанавливает сигнал запроса прерывания, указывающий процессору на то, что шина свободна и можно вводить из контроллера гибкого диска байты состояния, определяющие правильное окончание передачи блока данных.
1.5.	Контроллер гибкого диска
Контроллер гибкого диска - устройство, инициализируемое процессором и выполняющее соответствующие действия: управление операциями чтения или записи данных, поиск дорожки, считывание состояния носителя, форматирование; преобразование параллельного кода в последовательный при записи информации на дорожку гибкого диска; преобразование последовательного кода в параллельный при чтении данных с дорожки; кодирование (декодирование) данных с целью надежного определения положения битового интервала на дорожке.
Структурная схема контроллера гибкого диска показана на рис. 1.10.
Системная шина
Рис. 1.10. Структурная схема контроллера гибкого диска
26	Базовый компьютер. Терминология
Блок сопряжения - содержит стандартный набор схем, необходимый для связи с системной шиной и согласования электрических характеристик.
Блок регистров - предназначен для хранения информации о состоянии контроллера и гибкого диска, которая может быть программно считана процессором. Кроме того, в блок регистров процессором заносятся управляющая информация и параметры гибкого диска (номер дорожки, номер магнитной головки, номер сектора, длина сектора и т. д.). Дорожка - кольцо на диске, а сектор -участок дорожки.
С помощью регистра данных осуществляется обмен информацией между оперативной памятью и гибким диском. Передача данных в гибкий диск выполняется в следующем порядке (рис. 1.11).
~	_	_	Сдвиговый ~	Линия	—
Системная Блок	Регистр	Схема пред-	Гибким
—►	—►	—►регистр —►	—►передаваемых—►
шина	сопряжения	данных	компенсации	диск
передачи	данных
Рис. 1.11. Последовательность передачи данных в гибкий диск
На рис. 1.12 изображена последовательность приема данных с гибкого диска.
Схема
Гибкий	Линия	фазовой	Сдвиговый регистр Блок Системная
диск ►передаваемых ►автоподстройки * регистр ► данных ^сопряжения * шина данных	цягтптн	приема
Рис. 1.12. Последовательность приема данных с гибкого диска
Блок управления предназначен для формирования сигналов, необходимых для управления работой гибкого диска (выбора накопителя (дисковода), прижима магнитной головки к поверхности диска, поиска дорожки, направления движения, шага и т. д.).
Схема предкомпенсации необходима в связи с тем, что на внутренних дорожках (ближе к центру) информация записывается более плотно, чем на внешних дорожках (ближе к краю) гибкого диска. Поэтому схема предкомпенсации формирует сигналы, соответствующие различным участкам дорожки гибкого диска.
Другая проблема использования гибкого диска состоит в том, что положение информации на дорожке имеет плавающий характер. На это влияют нестабильность вращения гибкого диска и температурный фактор. Чтобы определить точное положение битого интервала на дорожке, используют схему автоподстройки частоты, которая с учетом положения информации на дорожке в данный момент времени формирует «плавающие» сигналы стробов, определяющие положение битов на дорожке с целью их правильного выделения.
В работе контроллера гибкого диска можно выделить три фазы, связанные с выполнением команд: фазу приказа (инициализации), фазу выполнения и фазу результата.
В фазе приказа процессор посылает в контроллер гибкого диска параметры (номера дорожки, магнитной головки, сектора и т. д.). Затем выполняется фаза
Дисковод гибкого диско
27
реализации команды. Например, если это команда «Читать данные», то выполняются циклы передачи блока данных. В фазе результата процессор считывает содержимое регистров состояния из блока регистров и определяет правильность передачи данных.
Термины «гибкий диск», «накопитель гибкого диска», «дисковод гибкого диска» являются синонимами.
Дискета - это круглый пластиковый диск с магнитным покрытием, помещенный в чехол.
Вначале дискета является чистой, и ее перед занесением данных форматируют (этап подготовки дискеты к записи данных).
Форматирование низкоуровневое - операция разметки и записи на дорожках служебной информации, необходимой для поиска данных сектора, контроля, синхронизации и задания местоположения данных с соответствующими идентификаторами.
Логическое форматирование связано с организацией данных на дискете (диске) в соответствии со стандартом операционной системы. Логическое форматирование необходимо для поиска файлов, размещенных на диске, задания параметров файла (имени и типа файла, времени и даты создания, длины файла и т. д.).
1.6.	Дисковод гибкого диска
Дисковод гибкого диска - устройство, предназначенное для записи и чтения данных сменной дискеты. На рис. 1.13 представлена в общем виде структурная схема дисковода гибкого диска.
Дисковод содержит двигатель вращения диска, который с помощью шпинделя (оси) заставляет диск совершать 300, 360 оборотов в минуту. Магнитные го-
Передаваемые
позиционирования
Рис. 1.13. Структурная схема дисковода
28	Базовый компьютер. Терминология
ловки (МГО и МП) закреплены на каретке, осуществляющей горизонтальное позиционирование вдоль поверхности диска под управлением шагового двигателя перемещения МГ. Как известно, поверхности диска содержат дорожки, которые разбиты на секторы, равные участки. Для доступа к сектору необходимо указать номер поверхности (МГО или МП), номер дорожки и номер сектора на этой дорожке. На рис. 1.14 показан принцип построения дискеты 3,5".
Магнитные головки через окно чехла имеют доступ к поверхности диска и работают в режиме разделения времени - в зависимости от того, на какой поверхности расположена требуемая дорожка. Для контакта магнитных головок с диском применяется электромагнитный соленоид прижима МГ.
В дисководе установлены датчики, формирующие следующие сигналы: «Защита от записи», «Дорожка 0», и «Индекс», - поступающие в контроллер гибкого диска. Сигнал «Защита от записи» вырабатывается, если шторка на конверте не закрыта. При установке магнитных головок на дорожку 0 формируется сигнал «Дорожка 0». Если произошел случайный сброс состояний контроллера гибкого диска, то теряется ориентация магнитных головок на поверхности диска. Для восстановления этой ориентации необходимо выполнить «рекалибровку», то есть установить магнитные головки на дорожку 0. Сигнал «Индекс» указывает на начало дорожки. Блок управления принимает сигналы от контроллера гибкого диска и формирует сигналы, управляющие работой всех узлов дисковода.
Кроме того, блок управления формирует в контроллер гибкого диска сигнал «Готовность», если включено питание, вставлена дискета и двигатель набрал заданное число оборотов.
На обмотку магнитной головки через коммутатор поступает ток записи, формируемой схемами записи в соответствии с передаваемыми битами данных. В зависимости от его направления выполняется соответствующая ориентация магнитных доменов дорожки.
Магнитный домен - элементарный участок дорожки, хранящий изменение магнитного потока. В режиме чтения данных в магнитной головке наводятся
Дисковод гибкого диско
разнополярные сигналы, которые через коммутатор поступают в схему чтения и через линию «Принимаемые данные» поступают в контроллер гибкого диска.
При выполнении какой-либо программы с помощью соответствующего прерывания осуществляется доступ к драйверу BIOS по обслуживанию дисковода.
Программное прерывание имеет несколько выполняемых функций: форматирования, чтения сектора, записи сектора, сброса дисковода и т. д.
Функции программного прерывания реализуются с помощью стандартной базовой дисковой таблицы, в которой задаются время шага, времена прижима и подъема магнитных головок, время холостого вращения двигателя, длина межсекторного промежутка в байтах, номер последнего сектора, размер данных, символы - заполнители пустого сектора и т. д.
На дисководе находятся два разъема: разъем питания и информационный разъем (рис. 1.156), а на рис. 1.15а показан плоский кабель, подключаемый к разъему.
Верхний провод с цветной маркировкой должен быть подключен к контакту 1 информационного разъема дисковода.
Дисковод дискеты использует питание 5 В, а напряжение 12 В - старый дисковод или привод жесткого диска.
По 34-жильному кабелю передаются следующие основные сигналы от контроллера гибкого диска к дисководу:
•	выбор дисковода:
•	включение мотора;
•	направление движения магнитных головок;
•	шаг;
•	передаваемые данные и т. д.
Кроме того, от дисковода к контроллеру передаются сигналы:
•	дорожка 0;
•	запрет записи;
•	принимаемые данные;
•	индекс.
30
Базовый компьютер. Терминология
Дисковод относится к устройствам быстрого доступа, выполняемого за счет перемещения магнитных головок для поиска нужной дорожки и вращения гибкого диска с целью нахождения требуемого сектора. Поэтому дисковод имеет следующие временные характеристики:
•	время шага (позиционирование) с одной дорожки на другую:
•	время загрузки (прижима) магнитных головок к поверхности диска.
Наибольшую величину имеет время позиционирования, которое разработчики стараются уменьшить, например за счет отказа от шаговых двигателей и перехода к соленоидам. Другие характеристики дисковода определяются в основном параметрами дискеты: емкостью (1,44 Мбайта или 2,88 Мбайта), количеством дорожек (80), количеством секторов дорожки (18,36) и размером сектора (512 байт).
Средняя скорость передачи гибкого диска определяется следующим образом: (Количество секторов х Размер сектора х Количество оборотов в минуту) / 60 = = Число байтов в секунду.
Если на чехле дискеты находится аббревиатура HD (High Density, Высокая плотность), то это указывает на емкость 1,44 Мбайта и формат 80 дорожек и 18 секторов на каждой дорожке.
Кратко рассмотрим развитие дисководов, состоящее в том, что происходит увеличение емкости дискеты до 10 Мбайт и выше за счет увеличения числа дорожек и секторов и плотности записи. Кроме того, используется вместо шагового двигателя линейный двигатель (электромагнитный соленоид), который сразу устанавливает магнитные головки на заданную дорожку без пошагового их перемещения и требует размещения серводанных на дискете для определения положения магнитных головок (требует систему с обратной связью в отличие от шагового привода - системы без обратной связи). В гибких дисках увеличение быстродействия достигается за счет повышения скорости оборотов двигателя, вращающего диск, и применения новых технологий, в том числе магнитооптических. В магнитооптической технологии для перемещения магнитных головок используются оптические системы, а для записи - магнитные способы. Кроме того, число секторов на дорожках поверхности диска выполняют переменным: больше на внешних дорожках (ближе к краю) и меньше на внутренних дорожках.
1.7.	Жесткий диск
Жесткий диск - обычно внутренняя долговременная (энергонезависимая) память хранения больших объемов информации (операционной системы, программ и данных), обеспечивающая высокую скорость доступа к данным и их сохранность при выключенном питании.
Жесткий диск имеет герметический корпус, в котором размещаются блок магнитных головок для чтения и записи информации, привод их движения, пакет дисков и двигатель вращения дисков.
Диски - это круглые стеклянные, керамические или алюминиевые пластины диаметром 1,8", 2,5", 3,5" или 5,5" (1" - один дюйм), на поверхности которых наносится тонкий слой кобальта (тонкопленочное покрытие), ферромагнетика (окиси хрома) или ферролака (оксида железа), применяемого в старых дисках.
Диски с тонкопленочным напылением более надежны и имеют большую плотность записи.
Жесткий диск	31
Количество дисков - 1-15 и больше, иногда внешние поверхности не используются с целью уменьшения размера корпуса жесткого диска. В других случаях на эти поверхности наносятся серводанные для ориентации блока магнитных головок, позиционирование которых осуществляется с помощью электромагнитного соленоида (подвижной катушки). По катушке пропускается ток определенной величины, и она перемещается вместе с блоком магнитных головок до заданного цилиндра.
Цилиндр - совокупность дорожек одного радиуса, имеющих один номер. По серводанным находится положение блока магнитных головок на поверхности дисков.
Привод с подвижной катушкой быстрее, чем привод с шаговым двигателем, так как является системой обратной связи, учитывающей серводанные, а значит, и сложнее (дороже).
Общий вид жесткого диска представлен на рис. 1.16.
Позиционер
Двигатель
Рис. 1.16. Общий вид жесткого диска
Диски вращаются со скоростью 5400, 7200, 12000 и выше об/мин. причем магнитные головки не соприкасаются с поверхностью диска. С целью исключения аварий применяют специальные подвески для хранения магнитных головок в нерабочем состоянии. Кроме того, в некоторых жестких дисках после завершения работы предусматривается специальная дорожка для парковки магнитных головок.
Быстродействие и плотность записи информации определяются конструкцией магнитной головки, при изготовлении которой используются специальный материал и тонкопленочная технология.
Миниатюрная магнитная головка имеет узкую прорезь с разнополярными полюсами, магнитный поток с этих полюсов замыкается через поверхность дорожки диска, и осуществляется соответствующая ориентация магнитных доменов. Магнитная головка позволяет на 1 дюйм (2,54 см) осуществить ориентацию 10 000 доменов и выше, что характеризует высокую продольную плотность записи данных на дорожке.
Различают жесткие диски с поворотным или линейным позиционером. На узких разделенных и гибких концах поворотного позиционера (рис. 1.17) размещены две магнитные головки (МГО и МГ1), причем МГО находится со стороны внешней поверхности, а МГ1 - со стороны внутренней поверхности диска.
На другом широком конце позиционера находятся две плоские обмотки (одна -снизу, а другая - сверху). Наружная обмотка позиционера закрыта металлической пластиной с двумя магнитами, закрепленной болтами внутри корпуса так,
Базовый компьютер. Терминология
что позиционер может совершать поворот на заданной угол вокруг своей оси. Движение позиционера в одну или другую сторону осуществляется изменением направления тока в обмотках позиционера.
Интерфейсы жесткого диско	33
Магнитные головки и обмотки позиционера связаны гибким электрическим шлейфом с печатной платой, размещенной внутри корпуса.
Внутренняя печатная плата содержит микросхему, осуществляющую коммутацию и усиление сигналов МГО и МГ1. Кроме того, печатная плата подключена другим гибким шлейфом к внешней печатной плате, которая с помощью болтов установлена на наружной стороне корпуса. На этой печатной плате находятся: процессор, ПЗУ, ОЗУ, сигнальный процессор, схемы управления позиционером и двигателем вращения, дисковой кэш с контроллером, схема сепарации данных, интерфейсный блок. Оборудование внешней платы зависит от типа интерфейса ST506/412, ESDI, IDE или SCSI.
Диск размещается на шпинделе полого ротора, содержащего круглый постоянный магнит и подвижную ось. вокруг которой он совершает вращательное движение. Ротор своей осью устанавливается в отверстие неподвижного катушечного статора, подключенного с помощью контактной платы к внешней плате жесткого диска. Катушечный статор создает бегущее магнитное поле, и ротор вместе с жестким диском совершает вращение, причем образующийся воздушный поток вызывает парение магнитных головок над поверхностями дисков.
Расстояние между дорожкой диска и магнитной головкой составляет сотые доли микрона. Чем меньше это расстояние, тем больше плотность записи информации на дорожку диска (уменьшается ток записи, и усиливаются сигналы чтения информации).
Ближе к центру диска предусмотрена нерабочая парковочная зона, куда устанавливаются магнитные головки позиционера после завершения работы жесткого диска.
Шаговый двигатель обеспечивает радиальное движение магнитных головок по шагам (по сигналу «Шаг» магнитные головки перемещаются с одной дорожки на другую). В приводах с шаговым двигателем отсутствует обратная связь для указания местоположения головок на поверхности диска. В этом случае контроллер диска непрерывно отслеживает местоположение магнитных головок на поверхности диска. По этой причине жесткие диски с шаговым двигателем являются простыми (недорогими) устройствами.
Линейный привод с соленоидом представляет собой электромагнит и имеет обратную связь, по которой поступают серводанные о местоположении головок на дисках. Серводанные записывают на специальных сервоповерхностях диска (обычно это внешние поверхности) или между дорожками (секторами) диска, за которыми следят соответствующие датчики.
В линейных приводах электромагнит тянет металлический стержень для подвода шарнира магнитных головок с пружиной к наружному цилиндру, в сторону центра диска с учетом серводанных.
Когда магнитное поле ослабевает на определенную величину, пружина шарнира возвращает магнитные головки к внешнему краю диска.
1.8.	Интерфейсы жесткого диска
Контроллер жесткого диска - устройство, выполняющее ввод/вывод информации (операционной системы, программ и данных) с жесткого диска.
Первые жесткие диски подключались к системной шине с помощью контроллеров (рис. 1.18), размещенных на плате.
Базовый компьютер.
Рис. 1.18. Схема связи первых жестких дисков
В схеме подключения четырех жестких дисков (3-0) используется интерфейс ST506/412, разработанный фирмой Seagate Tfechnologies.
Интерфейс - унифицированная система сопряжения (совокупность аппаратных, программных и конструктивных средств, определяемых стандартом и предназначенных для организации совместной работы устройств компьютера).
Шина этого интерфейса содержит 54 линии связи, причем данные из контроллера в каждый жесткий диск поступают по раздельным 20 линиям кабеля. Данные передаются в виде последовательных дифференциальных сигналов в одну и другую сторону (читаемые и записываемые данные).
Дифференциальная передача сигналов - передача сигналов с использованием специальных дифференциальных передатчика и приемника, связанных парой проводов, по которым передаются разнополярные сигналы, один из которых повторяет входной сигнал, а другой является его инверсией. Дифференциальный приемник устраняет синфазные помехи в проводах, что значительно повышает помехоустойчивость дифференциальной передачи (рис. 1.19).
Для распознавания значений битовых интервалов на приемной (передающей) стороне необходимо использовать какой-либо метод кодирования (декодирования) данных, например MFM.
Метод кодирования MFM (Modified Frequency Modulation. Модифицированная, частотная модуляция) - метод синхронизации передаваемых последовательных данных, при использовании которого сигналы синхронизации смешиваются (объединяются) с сигналами данных. В результате образуется последовательность, состоящая из битов данных и битов синхронизации, вызывающая соответствующие изменения тока записи в магнитной головке.
При чтении информации с дорожки биты синхронизации позволяют определить положение битов данных.
Кроме того, биты синхронизации вызывают изменение магнитного потока, что обеспечивает хорошую синхронизацию и высокую надежность считывания
Интерфейсы жесткого диско
35
Контроллер	Жесткий лиск
помеха
Рис. 1.19. Схема дифференциальной передачи
информации. Метод кодирования MFM не допускает записи длинных последовательностей данных без изменения магнитного потока. Длинные последовательности нулей (единиц), не вызывающие изменения магнитного потока, будут приняты схемами воспроизведения с ошибками. Считается, что схема воспроизведения позволяет правильно установить (прогнозировать) положение битового интервала на дорожке, если число нулей не превышает восьми.
Недостатком метода MFM является наличие дополнительных битов синхронизации в битовой последовательности данных, что приводит к уменьшению плотности записи самих данных на дорожку диска, но зато схема выделения данных (сепаратор данных) получается простой.
Шина управления ST506/412 содержит линии, на которых формируются выходные сигналы контроллера: выбора дисков (3-0) и магнитной головки (7-0), направления, шага и разрешения записи. Кроме того, контроллер жесткого диска принимает сигналы: индекса (начала дорожки), готовности (достижения заданной скорости оборотов диска), дорожки 0 (положения магнитных головок на внешней дорожке) и ошибки (сбойной ситуации в накопителе).
Технические характеристики интерфейса ST596/412 следующие: скорость передачи данных 5-7,5 Мбайта/с, размер данных - один бит (последовательный код), длина кабеля - 3 м, емкость - 40 Мбайт.
Дальнейшим развитием интерфейса ST506/412 явился интерфейс ESDI (Enhanced Small Device Interface, Расширенный интерфейс малых устройств). Интерфейс ESDI имеет дополнительные функции, позволяющие подключать не только жесткие диски, но и гибкие диски, магнитные ленты. Для интерфейса ESDI характерны некоторые особенности, существенно отличающие его от ST506/412. К этим особенностям относятся: перенос функции выделения данных из контроллера в жесткий диск, возможность передачи информации о конфигурации (типе подключаемого устройства), более высокая скорость передачи данных, работа с 256 магнитными головками и использование более длинных линий связи.
Интерфейс ESDI позволяет подключить до 8 устройств и имеет такое же количество проводников в кабелях, что и интерфейс ST506/412 (рис. 1.20).
36	Базовый компьютер. Терминология
Рис. 1.20. Схема интерфейса ESDI
В интерфейсе ESDI используются последовательная передача 16-битных команд, таких как поиск, чтение данных, запись данных, чтение состояния и т. д.
Передача данных выполняется с помощью дифференциальных передатчиков и приемников с использованием сигналов синхронизации, которые также передаются дифференциальным способом.
Таким образом, в этом интерфейсе каждый битовый интервал данных сопровождается битом синхронизации.
Основные сигналы интерфейса ESDI приведены на рис. 1.21.
Кроме того, для надежного распознавания значений (0.1) потока битов данных, передаваемых последовательными посылками по дифференциальным линиям, в интерфейсе ESDI используется метод кодирования NRZ (Not Return Zero, Без возвращения к нулю). Метод называется так потому, что дифференциальная шина сохраняет свое состояние (не возвращается к О) до тех пор. пока во входной последовательности не появится 1, то есть единичные значения входных данных вызывают переключение уровней на дифференциальной шине, а нулевые значения сохраняют состояние уровней. Длинная последовательность нулей может вызвать сбой (нарушение синхронизации), поэтому в некоторых случаях через определенное количество нулей вставляется единица.
Метод кодирования NRZ - метод синхронизации при передаче длинных последовательностей двоичных сигналов.
Это метод используется также в шинах USB и IEEE 13 94 с дифференциальной передачей данных.
Точнее говоря, существует несколько модификаций метода NRZ, в которых напряжение уровней сигналов изменяется от +V до -V и отсутствует нулевой уровень напряжения.
Технические характеристики интерфейса ESDI следующие: скорость передачи данных - до 24 Мбит/с, размер данных - один бит (последовательная передача), длина кабеля - 3 м, емкость - от 100 Мбайт и выше.
Интерфейсы жесткого диско	37
Конт	'роллер	Жестки: Индекс	й диск Последовательный код ч (16 бит + бит четности) Квитирование L > Запись ) Чтение
	Готовность	
	\з Выбор устройства	
	х8 Выбор магнитной головку	
	7,1 Команда	
	7 Запрос	
	Подтверждение	
	+ Данные	
	- Данные	
	+ Синхросигналы	
	- Синхросигналы	
	+ Данные	
	- Данные	
	+ Синхросигналы	
	'	- Синхросигналы	
		
Рис. 1.21. Основные сигналы интерфейса ESDI		
ESDI- жесткие диски содержат 35 или 54 секторов и применяются в серверах и мини-компьютерах.
Недостатком этого интерфейса являются относительно низкая скорость передачи данных, ограниченные функциональные возможности, связанные с ориентацией на магнитные носители информации.
Интерфейс IDE (Integrated Drive Electronics interface, Интегрированный интерфейс электронных устройств) является широко известным интерфейсом, имеющим еще и другое название - АТА (Advanced Technology Attachment. Усовершенствованная технология присоединения). Этот интерфейс прошел несколько ступеней развития, продолжает совершенствоваться и позволяет подключать также дисководы, CD и магнитные ленты (стриммеры).
Основное новшество интерфейса IDE по сравнению с интерфейсами ST506/ 412 и ESDI состояло в том, что значительная часть схем контроллера перенесена в жесткий диск. Поэтому для подключения IDE - жесткого диска применяется адаптер IDE. содержащий только дешифраторы базовых адресов и формирователи интерфейсных сигналов (рис. 1.22).
Второй вариант подключения дисков заключается в том, что разъем IDE является встроенным в материнскую плату.
Основные сигналы базового варианта интерфейса IDE показаны на рис. 1.23.
Интерфейс IDE напоминает интерфейс подключения какого-либо чипа к системной шине: наличие сигналов дешифрации базовых адресов (1F* и 3F*). сигналов доступа к адресуемым регистрам (А2 - АО), сигналов записи и чтения данных и т. д. (рис. 1.24).Технические характеристики базового варианта IDE:
38
Базовый компьютер. Терминология
Адаг	:тер	Жестки , Данные	й диск D15-D0 (D-Дата) -I/OW(Input/Output, Ввод/Вывод; W-Write, Запись) -I/OR(R-Read, Чтение) RDY (READY) ALE (Addres Latch Enable) IRQ14 (Interrupt Requests) A2, Al,AO (A-Address) CS1F*(CS-Chip Select) CS3F* RST (RESET)
	Запись	
	Чтение	
	Готовность	
	Фиксация адреса	
	Запрос прерывания	
	ч , Адрес: А2-А0	
	Z3	21 Выбор адреса 1F*	
	Выбор адреса 3F*	
	Сброс	
		
Рис. 1.23. Основные сигналы интерфейса IDE		
скорость передачи данных - 10 Мбит/с, размер данных - 8116 бит, длина кабеля - 1 м, количество жил - 40.
В системных шинах ISA, EISA, MCA и т. д. можно выделить три разделяемые шины: адреса, данных и управления. К этим шинам подключается адаптер IDE, который содержит две схемы дешифрации старшей части адресов 1F* и 3F*, определяющие соответственно выбор блоков регистров (одного из двух). В блоке регистров хранится информация о состоянии (наличии ошибки, занятости, сигнала индекс и т. д.). Кроме того, сюда в соответствующий регистр управления заносятся биты информации: разрешения прерывания, сброса, выбора магнитной головки.
Интерфейсы жесткого диско
39
Рис. 1.24. Общая схема адаптера и жесткого диска IDE
В регистрах доступа задаются: номер цилиндра, номер магнитной головки (поверхности) и номер сектора, то есть координаты каждого сектора определяются по схеме CHS (Cylinder, Head, Sector - Цилиндр, Головка, Сектор). Эту схему адресации использует BIOS. В другой схеме адресации применяется линейный способ задания номеров всех секторов от О до N (каждому сектору присваивается свой номер). Линейная адресация имеет аббревиатуру LBA (Logical Block Address - Логическая адресация блоков) и использует DOS.
Жесткий диск выполняет команды: форматировать, поиск, чтение сектора, запись сектора и т. д., которые передаются процессором в регистр команд. Регистр данных используется для временного хранения 16-битных данных, передаваемых в буферную память и, наоборот, принимаемых из буферной памяти.
В жестком диске используется своя буферная память для хранения информации одной или нескольких дорожек объемом от 32 Кбайт до 1024 Кбайт и больше, предназначенная для согласования скоростей работы жесткого диска и процессора и увеличения быстродействия диска путем использования программ кэширования для сохранения копий файла. Чтение файла из буферной памяти процессор выполняет быстрее, чем из жесткого диска.
Выбор того или иного регистра осуществляется с помощью трех младших битов адреса А2, А1, АО, сигналов операций чтения (-I/OR = 0), записи (-I/OW = 0) и сигналов выбора блоков -CS1F* и -CS3F*. Например, если -SC1F* =1, CS3F* - 0, А2= 1, Al = 1, А0=0, I/OR=0 и -I/OW = 1, то читается содержимое регистра состояния по адресу 3F6 или 3FE. В адаптере IDE используются драйверы (формирователи) и приемопередатчик.
Драйвер - шинный формирователь (усилитель мощности), обеспечивающий поддержание электрических параметров сигнала (большой ток), передаваемого по длинной линии кабеля, который характеризуется большой емкостной нагрузкой, искажающей слабый сигнал.
Базовый компьютер. Терминология
Приемопередатчик - двунаправленный шинный формирователь, обычно предназначенный для согласования электрических параметров внешней и внутренней шин данных и управления направлением передачи данных.
Справочное дополнение
Технология S.M.A.R.T. (Self-Monitoring and Reporting Technology, технология самоконтроля и оповещения) используется для оценки текущего состояния жесткого диска, которое характеризуются следующими параметрами: скоростью обмена данными, величиной зазора между магнитной головкой и поверхностью диска, скоростью поиска данных, количеством перемещений магнитной головки, количеством оборотов двигателя, числом включений (выключений) жесткого диска и т. д. Указанная технология имеет несколько версий:
•	контроль параметров жесткого диска и предсказание возможных ошибок:
•	сканирование жесткого диска в режиме холостого хода;
•	нахождение и восстановление информации в проблемном секторе.
Технология D.L. (Data Lifeguard, сохранение жизни данных) является дальнейшим развитием технологии предотвращения потери информации, которая выполняет в режиме холостого хода определение дефектных секторов с целью уменьшения числа повторных обращений к ним. В технологии D.L. используются коды коррекции ошибок ЕСС. При обнаружении ошибки выполняется тестирующая программа для нахождения дефекта диска, осуществляются запись сбойных секторов и перенос данных в резервные сектора.
RAID-массив (RAID - Redundant Array of Inexpensive Disks) - блок из нескольких жестких дисков, обеспечивающих надежное хранение данных (контролируемую неисправность) и (или) производительность системы. Известны различные уровни организации RAID-массивов от О до 5, каждый из которых разработан для соответствующей области применения. Например, уровень О (массив дисков с параллельным доступом) используется в системах видеомонтажа, требующих высокой скорости передачи данных. В уровне 1 применяется полное дублирование хранящейся в массиве дисков информации, то есть сохраняется целостность информации при отказе какого-либо диска.
Интерфейс АТА (Advanced Technology Attachment, усовершенствованная технология присоединения) известен также под другим названием - IDE (Integrated Drive Electronics Interface, интегрированный интерфейс дисковой электроники).
Интерфейс АТА непрерывно развивался и имеет несколько модификаций (стандартов): АТА/IDE, АТА2, АТАЗ, ULTRA АТАЗЗ/66, ULTRA АТА100 и др. Совершенствование АТА/IDE жесткого диска связано с увеличением емкости и быстродействия (длительности считывания секторов). Для интерфейсов АТА известны 5 режимов программных ввода/вывода (РЮ), которые характеризуются различными скоростями передачи данных: РЮ О (33 Мбайта/с); РЮ 1 (5,2 Мбайта/с),..., РЮ 4 (16,6 Мбайта/с). Недостатком режимов РЮ является то. что управление обменом данными выполняет сам процессор, и поэтому эти режимы подходят для однозадачных операционных систем. Для многозадачных операционных систем наиболее подходят режимы прямого доступа (ПДП), используемые в интерфейсах АТА. Известны также несколько однословных и многословных режимов ПДП, отличающихся количеством слов, читаемых за цикл работы шины. Режим ПДП выполняется аппаратным способом без участия про
Системная шина с квитированием
цессора и характеризуется высокой скоростью передачи данных, например интерфейс ULTRAATA 100 выполняет многословный режим ПДП и осуществляет передачу данных со скоростью 100 Мбайт/с. В спецификации ULTRA АТА 100 указываются: тактовая частота 50 МГц, скорость вращения диска 7200 об/мин, стеклянная подложка магнитных дисков и уменьшенный зазор между магнитной головкой и поверхностью диска.
Интерфейс ULTRA АТА 133 поддерживает скорость передачи данных 133 Мбайт/с, IDE-диски емкостью около 160-180 Гбайт и длину кабеля до 45 см.
Последовательный интерфейс Serial-АТА-150/300 (SATA-150/300) имеет следующие характеристики: скорость обмена данными 150 или 300 Мбайт/с, длина кабеля до 1 м, поддерживает «горячее» подключение устройств и совместимость с параллельным АТА на уровне команд.
1.9.	Системная шина с квитированием
Устаревшие интерфейсы Multibus и ISA приведены в этом разделе с целью показать в наиболее простой форме общие принципы подключения периферийных устройств к системным шинам, изложить накопленный схемотехнический опыт, который используется в более сложных современных интерфейсах. Кроме того, средства сопряжения этих интерфейсов аналогичны средствам подключения каких-либо блоков к шинам процессоров (микроконтроллеров) периферийных устройств. Поэтому этот раздел имеет практическую значимость.
Функциональные признаки шины Multibus с квитированием:
1.	Дисциплина обслуживания - однозвенная децентрализованная временная коммутация параллельного информационного канала, работающего по типу «задатчик-исполнитель».
2.	Структура информации - 8-, 16- или 32-битные адреса и данные заданного формата.
3.	Временное согласование - асинхронное, а точнее апериодическое, так как в шине используется обязательный интерфейсный сигнал квитирования. сообщающий о завершении цикла на шине.
4.	Арбитраж - фиксированный, определяемый местом подключения устройства к арбитру, и циклический (равноправный). Различают схемы параллельного и последовательного арбитража.
5.	Режимы обмена - прерывание и прямой доступ.
6.	Вид передачи с учетом направления - симплексный и полудуплексный.
7.	Контроль данных - в базовом варианте отсутствует.
8.	Способ передачи информации - параллельно по битам и последовательно по байтам (словам).
9.	Представление сигналов на шине - отрицательная логика (логической 1 соответствует низкий уровень напряжения, а логическому 0 - высокий уровень).
Системный интерфейс Multibus является магистральным (машинным и многопроцессорным) интерфейсом с квитированием. Интерфейсы с квитированием иногда называют асинхронными интерфейсами. Интерфейс Multibus удовлетворяет требованиям стандарта, принятым Институтом по электронике и электротехнике (IEEE), и является аналогом интерфейса IEEE 796. Различают интерфейс Multibus-1, проложивший путь к многошинному подходу построения
42	Базовый компьютер. Терминология
интерфейсов, и интерфейс Multibus-2, совершенствующий первый и расширяющий диапазон его применения (например, использования 32-разрядных микропроцессоров, реализации монопольного режима передачи данных, применения параллельных и последовательных системных шин и т. д.). В предлагаемой главе основное внимание уделяется интерфейсу Multibus-1 (в дальнейшем просто Multibus). Аналогом интерфейса Multibus является отечественный интерфейс И41. Интерфейс Multibus может быть использован для построения вычислительных систем на базе 32-разрядных (64-разрядных) микропроцессоров.
Для простого варианта персонального компьютера (ПК) задатчик (процессор) выполняет выбор ячейки ОП с помощью 20-разрядного адреса, устанавливаемого на линиях (односторонней шины адреса) А0-А19. С целью доступа к регистрам периферийного устройства (ПУ) используется 10-разрядный адрес А0-А19, причем разряд Ап является младшим. Передача данных осуществляется по двунаправленной шине данных D0-D15 (бит Do - младший). Логическая 1 на шинах адреса и данных представляется низким уровнем (Н), а логический О - высоким уровнем (В) сигнала (инверсная логика). Чтобы подчеркнуть этот факт, разряды адреса и данных изображаются на схемах с чертой над символом, например А0-А19 и Do-D7. Следующий пример показывает представление уровней адреса 378h (h -знак 16-ричной записи) регистра адаптера ПУ на шине адреса интерфейса.
Ад А8 А7 А6 А5 А4 Ад Ат Ад
110 11110 0 0
ВВНВВВВННН - прямая логика
ННВННННВВВ- инверсная логика
Интерфейс обеспечивает выполнение следующих процедур: арбитраж, прерывание и пересылку данных. Кроме того, обмен данными между задатчиком и исполнителем через интерфейс может быть выполнен в режимах безусловного и условного (с опросом флага готовности) программного обмена по инициативе процессора, обмена в режиме прерывания по инициативе ПУ процессора и обмена в режиме прямого доступа к памяти (ПДП), при котором аппаратно реализуется передача данных между ОП и ВЗУ.
Процедура прерывания имеет два варианта реализации: прерывание с интерфейсным вектором и прерывание с внеинтерфейсным вектором. В первом случае адрес вектора прерывания передается по шине данных интерфейса от исполнителя к задатчику, а во втором случае не передается. В ПК наиболее употребительным является внеинтерфейсное прерывание, при котором в контроллер прерывания задатчика поступают запросы прерывания по интерфейсным линиям INT0-INT7. Сигнал INT0 имеет наивысший приоритет, и его формирует системный таймер (часы) ПК. Запрос INT1 вырабатывает клавиатура. Прерывание заключается в переходе на программу обработки прерывания по 4-байтному коду (вектору прерывания), хранящемуся в памяти и определяющему программу обслуживания (драйвер) ПУ, требующего прерывание. Адрес вектора прерывания (адрес ячейки памяти) используется для нахождения этого вектора. Различают немаскируемые внутренние и внешние прерывания (например, при делении на 0, прерывание от процессора) и внешние (маскируемые) прерывания от адаптеров ПУ.
В интерфейсе реализуются следующие пересылки данных: запись в порт (ячейку памяти) и чтение из порта (ячейки памяти). Для реализации этих опера
Системная шина с квитированием	43
ций используются интерфейсные сигналы: чтение порта (IORC), чтение памяти (MRDC), запись в порт (IOWC), запись в память (MWTC), которые формируются задатчиком (3J. Обмен осуществляется в режиме квитирования с формированием исполнителем ответного сигнала ХАСК. Временные диаграммы чтения данных из порта (памяти) и записи данных в порт (память) представлены соответственно на рис. 1.25 и 1.26.
Адрес Чтение ? \ Данные	, Ответ	^50 нс^_ < /с	А0-А9 (A0-A19) \ IORC (MRDC) ч DO - D7 ' ХАСК
Рис. 1.25. Чтение данных		
Из временной диаграммы чтения видно, что сигнал IORC (MRDC) должен быть установлен не менее чем за 50 нс после выдачи адреса. Этот период времени необходим для компенсации переходных процессов, связанных с декодированием адреса исполнителем.
Кроме того, после снятия сигнала IORC (MRDC) адрес должен оставаться на линиях шины минимум 50 нс. Ответный сигнал ХАСК может совпадать по времени с моментом выдачи данных или следовать за ним. Сброс ХАСК выполняется после снятия IORC (MRDC). Сигнал ХАСК удерживается максимум 65 нс после снятия сигнала IOWC (IORC) или MWTC (MRDC). При записи адрес и данные должны быть установлены как минимум за 50 нс до появления сигнала IOWC (MWTC) и сняты спустя не менее чем через 50 нс после сброса IOWC (MWTC). Эта задержка связана, во-первых, с необходимостью декодирования адреса и, во-вторых, с целью возможности записи данных как по переднему, так и по заднему фронту сигнала IOWC (MWTC). На рис. 1.27 показана структурная схема подключения к интерфейсу следующих портов: регистра ввода (РВв) и регистра вывода (РВыв).
Термины Ввод или Вывод следует всегда рассматривать относительно процессора, то есть процессор выводит байт данных и записывает в порт РВыв ПУ или процессор читает содержимое порта РВв ПУ и вводит в собственные регистры.
44	Базовый компьютер. Терминология
Под портом понимается адресуемый триггер, регистр или схема. Схема (рис. 1.27) содержит шину адреса (ША), шину управления (ШУ), шину данных (ШД) интерфейса, дешифратор адреса (ДшА), дешифратор управляющих сигналов (ДшУС), приемопередатчик (ПП), 8-разрядные регистры РВв и РВыв и передатчик, формирующий ХАСК. Рассмотрим работу схемы в режиме вывода данных (записи в РВыв) в соответствии с временной диаграммой (рис. 1.26). Процессор устанавливает адрес Ао-А9 на ША и данные D0-D7 на ШД интерфейса. Адрес и данные поступают на все ПУ, подключенные к интерфейсу, но только одно ПУ с помощью ДшА декодирует собственный адрес, например 3C0h. В этом случае на выходе ДшА формируется сигнал ВыбПУ, разрешающий работу ДшУС. Данные проходят через ПП, открытый для передачи от В к А (от ШД к внутренней шине данных (ВШД)). ПП выполняет двустороннюю передачу данных в зависимости от сигнала на входе Т. Если Т= 1, то данные передаются с ВШД на ШД интерфейса. Если Т=0, то наоборот (ШД-^ВШД). Так как в этот момент времени сигнал ЧтРВыв=О (пассивный уровень), то данные проходят через ПП и поступают на входы РВыв. Через 50 нс после декодирования адреса (формирования сигнала ВыбПУ) процессор устанавливает сигнал записи IOWC. по которому дешифратор ДшУС вырабатывает сигнал ЗпРВыв= 1 (активный уровень), записывающий данные с ВШД в РВыв и формирующий сигнал квитирования ХАСК, сообщающий процессору о завершении операции. Если сигнал ХАСК не поступает в процессор, то считается, что произошла ошибка на интерфейсе.
1.10.	Шина расширения
Шина расширения ISA является синхронной (отсутствует квитирование) параллельной шиной, которая одна из первых была «открытой» для пользователей.
Функциональные признаки шины ISA:
1.	Дисциплина обслуживания - однозвенная децентрализованная временная коммутация параллельного информационного канала, действующего по типу «мастер-исполнитель».
2.	Структура информации - 8- или 16-битные данные заданного формата и 20- или 24-битный адрес.
Шина расширения	45
3.	Временное согласование - синхронное, но предусмотрена в случае необходимости задержка работы процессора на несколько тактов с помощью интерфейсного сигнала «Готовность канала ввода/вывода».
4.	Арбитраж - с помощью контроллера прямого доступа к памяти.
5.	Режимы обмена - прерывание и прямой доступ.
6.	Вид передачи с учетом направления - симплексный и полудуплексный.
7.	Контроль данных - отсутствует.
8.	Способ передачи информации - параллельно по битам и последовательно по байтам (словам).
9.	Представление сигналов на шине - положительная логика (логической 1 соответствует высокий уровень напряжения, а логическому 0 - низкий).
10.	Тактовая частота шины - 8 МГц.
Системная шина IBM PC/XT предназначена для работы с 8-разрядными микропроцессорами (МП), поэтому содержит 8 линий шины данных (D0-D7). Кроме того, системная шина включает 20-разрядную шину адреса (А0-А1д). Шина управления имеет линии, связанные с организацией ПДП, прерывания, доступа к портам (памяти) и т. д. Для подключения адаптеров (плат расширения) используются 62-контактные разъемы (слоты). Кроме того, синхронизация процессора и системной шины осуществляется от одного генератора тактовых сигналов с частотой 4,77 МГц.
Системная шина ISA (промышленная стандартная архитектура) - это 16-раз-рядная шина расширения, допускающая подключение как 8-разрядных, так и 16-разрядных адаптерных плат. Системная шина дополнительно содержит 36-контактный разъем для расширения функциональных возможностей (увеличение линий данных, адреса, прямого доступа и прерываний). Синхронизация работы процессора и шины ISA выполняется асинхронно, то есть разными тактовыми частотами сигналов. Тактовая частота работы шины ISA равна 8 МГц.
Шина ISA отличается от шины Multibus тем, что большое число сигналов имеет активный высокий уровень (поэтому используются обозначения А^-А, и Do-D15 без черты над символами) и отсутствует сигнал квитирования.
Шина ISA полностью совместима с системной шиной IBM PC/XT, то есть все платы адаптеров ПУ IBM PC/XT могут быть подключены к шине ISA. Рассмотрим основные интерфейсные сигналы, необходимые для подключения адаптерных плат к шине ISA. Сигналы на линиях шины адреса А0-А?3 устанавливаются мастером (имеют три состояния и активный высокий уровень). Для доступа к портам используются биты А0-Ад (в пределах материнской платы) или А0-А15. Двунаправленные линии D0-D15 образуют шину данных. Каждая линия Ц имеет три состояния: высокий (активный) уровень, низкий (пассивный) уровень и выключено. Сигнал разрешения адреса (AEN) устанавливается контроллером ПДП. Низкий уровень этого сигнала указывает на обычный ввод-вывод (обращение к портам), а высокий уровень - на выполнение циклов ПДП и запрещает декодирование адреса порта адаптера ПУ. Сигналы MEMR, MEMW, IOR, IOW (с активным низким уровнем) управляют операциями чтения и записи данных в ячейки памяти и порты адаптера ПУ. Сигнал «Готовность канала ввода-вывода» (I/O CH RDY) устанавливается источником и служит для согласования работы «медленных» ПУ с процессором. Низкий уровень этого сигнала удлиняет цикл шины ISA (процессор выполняет такты ожидания). Сигнал RESET (сброс) уста
46
Базовый компьютер. Терминология
навливается процессором (П) после включения источника питания и служит для перевода ресурсов компьютера в исходное (начальное) состояние. Сигналы системной частоты 8 МГц (CLK) могут быть использованы платами адаптеров ПУ. Все циклы шины пропорциональны CLK.
Рассмотрим временные диаграммы обычных циклов чтения и записи данных для 8-разрядных портов ввода-вывода (рис. 1.28 и 1.29).
Шинный цикл чтения данных реализуется каждый раз, когда процессор (П) выполняет команду IN (Ввод). Если адаптер ПУ декодировал собственный адрес Ао-А15 или А0-Ад (с учетом сигнала AEN=O), то с появлением сигнала IOR он выдает данные на шину Р0-Р7. Затем процессор считывает данные с шины Р0-Р7 до снятия сигнала IOR, и линия IOR переводится в пассивное состояние (высокий уровень). Шинный цикл записи инициируется при выполнении процессором команды OUT (Вывод). Процессор устанавливает адрес и данные на шины Ао-А15 (Ap-AJ и Р0-Р7. Затем процессор формирует низкий активный уровень сигнала IOW, сообщающий адаптеру опознавшему свой адрес с учетом сигнала AEN=O, о том, что ему следует записать информацию с шины Р0-Р7. Данные гарантиро-ванно установлены за 32 нс до снятия сигнала IOW и за 22 нс до появления сигнала IOW. Когда адаптер обнаруживает свой адрес, он записывает данные с шины Do-D7 в свой порт по спаду (снятию) сигнала IOW. Адрес устанавливается за 91 нс до появления сигнала IOW (IOR). Это время отводится на компенсацию эффекта гонок сигналов по линиям шины адреса и декодирования адреса. Структурная схема подключения двух портов адаптера ПУ к шине ISA мало чем отличается от структурной схемы сопряжения двух регистров с шиной MULTIBUS.
Шина расширения	47
Ha рис. 1.30 изображена структурная схема подключения регистров ввода и вывода (РВв и РВыв) к шине ISA.
Работа схемы описывается в соответствии с временными диаграммами (рис. 1.28 и 1.29) и аналогична принципу работы схемы (рис. 1.27). Следует обратить внимание, что в схеме запись в РВыв осуществляется по снятию сигнала IOW, логическая 1 на шине ISA представлена высоким активным уровнем, выходы регистра РВв с тремя состояниями и ПП не инвертируют сигналы данных.
Для захвата шины ISA внешней платой (задатчиком (3)) используются интер-фейсные сигналы: запрос ПДП (DRQJ, разрешение ПДП (DACKJ и сигнал ведущий (MASTER). На рис. 1.31 представлена схема связи контроллера ПДП материнской платы и внешней платы для реализации цикла захвата шины.
	DRQj	—
Контроллер	DACKj	Внешняя
ПДП	MASTER	плата (3)
Рис. 1.31. Схема связи контроллера ПДП и внешней платы (3)
В этом режиме внешняя плата устанавливает сигнал DRQP поступающий в резервный i-й канал контроллера ПДП, предварительно запрограммированного для каскадного соединения. Контроллер ПДП выполняет процедуру арбитража и осуществляет захват шины ISA. После этого контроллер ПДП устанавли-вает сигнал разрешения DACKp а внешняя плата - ответный сигнал MASTER, заканчивающий процедуру захвата шины.
При работе с устройствами ввода/вывода шина ISA реализует режим доступа к 16- или 8-битному исполнителю (16- или 8-битной внешней плате). Эти режимы имеют различные временные характеристики интерфейсных сигналов. При разработке дешифратора адреса 16- или 8-битной внешней платы необходимо учитывать минимальное время установки сигнала IOR после вывода битов адреса, равное 91 нс. За это время с учетом распространения сигналов по адрес
Базовый компьютер. Терминология
ной шине следует успеть опознать (декодировать) адрес контроллера. Минимальная длительность сигнала IOW (IOR) 8-битного исполнителя - 519 нс, а 16-битного исполнителя - 176 нс. Кроме того, важным временным соотношением является минимальное (гарантированное) время удержания данных после снятия сигнала IOW, которое для 8-битного исполнителя соответствует 185 нс [5]. Время появления переднего фронта сигнала IOW не является стандартным для разных моделей компьютеров и критическим, так как запись данных в порт исполнителя происходит по заднему фронту сигнала IOW.
При обработке или формировании интерфейсных сигналов исполнителем следует учитывать временные задержки применяемых микросхем (приемников) серии КР1533 (SN74ALS) и КР1554 (74АС). которые имеют следующие соответствующие пороговые величины: 15 нс и 10 нс. Временная задержка приемопередатчика КР580ВА86 равна 30 нс, КР559ИП 13-18нсиКР1533АП6- 10 нс.
Стандарт шины ISA предъявляет следующие требования к электрическим характеристикам передатчиков, приемников и микросхем, подключаемых к линиям этой шины. Выходной ток низкого уровня передатчиков должен быть не менее 24 мА. Входной ток низкого уровня приемников (микросхемы) необходим не более 0,8 мА. Этим требованиям удовлетворяют входы микросхем серии КР1554 (74АС), входы/выходы А и В приемопередатчиков КР1554АП6, входы/ выходы КР559ИПЗ и т. д. Кроме того, длина печатного проводника от контакта разъема до вывода микросхемы не должна быть больше 65 мм, и емкость любого контакта разъема относительно земли не должна превышать 20 пФ.
Контрольные вопросы
1.	Назовите группу электрических линий связи, объединенных определенным функциональным назначением.
2.	Международное национальное соглашение на производство компьютерного оборудования.
3.	Выберите шину, скорость функционирования которой приближается к быстродействию процессора:
1)	шина внешнего устройства;
2)	локальная;
3)	приборная:
4)	шина памяти.
4.	Быстродействующая память, ускоряющая выполнение команд процессора.
5.	Основное арифметико-логическое устройство, выполняющее команды.
1	9
Контрольные вопросы
49
6.	Сложное устройство, содержащее арифметико-логическое устройство, память, 8-битовые порты ввода/вывода, таймеры и другое оборудование.
7.	Название кода, определяемого порядковым номером:
1)	код ASCII;
2)	код Грея;
3)	код циклический;
4)	скан-код.
8.	Определите канал (К) контроллера прямого доступа к памяти с наивысшим приоритетом:
КЗ;
К2;
К1;
КО.
1)
2)
3)
4)
9.	Укажите последовательность задания входных и выходных сигналов контроллера прямого доступа к памяти (ПДП):
1)	подтверждение шины;
2)	запрос шины;
3)	запрос ПДП;
4)	подтверждение ПДП.
10.	Выберите действия, выполняемые при настройке контроллера прямого доступа к памяти:
1)	передача адреса памяти:
2)	передача какой-либо команды;
3)	задание количество передаваемых байтов (слов);
4)	установка режима работы;
5)	задание номера накопителя диска.
11.	Элементарный участок дорожки, хранящий изменение магнитного потока.
12.	Выберите признаки, относящиеся к контроллеру прямого доступа к памяти (ПДП):
1)	в циклах ПДП процессор участвует в работе совместно с контроллером;
2)	в циклах ПДП процессор не участвует в совместной работе с контроллером;
3)	в контроллере циклы ПДП выполняются программным способом;
4)	циклы ПДП в контроллере осуществляются с помощью аппаратуры.
13.	В компьютере прерывание осуществляется по инициативе:
1)	процессора;
2)	периферийного устройства;
3)	памяти.
50
Базовый компьютер. Терминология
14.	Выберите функции, выполняемые контроллером прямого доступа к памяти:
1)	передает данные из гибкого диска в оперативную память;
2)	управляет работой гибкого диска;
3)	управляет работой оперативной памяти;
4)	координирует действия контроллера гибкого диска.
15.	Назовите программы, остающиеся в оперативной памяти после их выполнения и защищаемые операционной системой:
1)	программы пользователей;
2)	резидентные;
3)	мультимедийные;
4)	копии.
16.	Укажите место хранения вектора прерывания клавиатуры:
1)	процессор;
2)	клавиатура:
3)	контроллер клавиатуры;
4)	память.
17.	Перечислите информацию, которой клавиатура обменивается с контроллером:
1)	номером прерывания;
2)	командой;
3)	состоянием;
4)	кодом ASCII;
5)	скан-кодом.
18.	Укажите сигналы, передаваемые от гибкого диска к его контроллеру:
1)	дорожка 0;
2)	шаг;
3)	индекс;
4)	направление движения головок.
19.	Выберите метод кодирования, используемый в гибких дисках:
1)	фазовый:
2)	с возвратом к нулю;
3)	без возврата к нулю;
4)	многоуровневый бинарный.
20.	Укажите основное новшество интерфейса IDE по сравнению с прежними интерфейсами:
1)	применение дифференциальной передачи;
2)	перенос основной части контроллера в накопитель;
3)	использование 40-битного кабеля;
4)	размещение разъема на системной плате.
Литература	51
Литература
1.	Скотт Мюллер. Модернизация и ремонт ПК: уч. пособие. 11-е изд. / пер. с англ. - М.: Изд. дом «Вильямс», 2000. - 1136 с.: ил.
2.	Колесниченко О. В., Шишигин И. В. Аппаратные средства PC. 5-е изд., пере-раб. и доп. - СПб.: БХВ - Петербург, 2004. - 1152 с.: ил.
3.	Минаси М. Модернизация и обслуживание ПК: полное руководство / пер. с англ. - Киев: Век +, М.: ЭНТРОП, 1999. - 1040 с.: ил.
4.	Авдеев В. А., Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства: уч. пособие. - М.: Радио и связь, 2001. - 480 с.: ил.
5.	Хоровиц П., Хилл У. Искусство схемотехники: в 3 т. Т. 2 / пер. с англ. 4-е изд., перераб. и доп. - М.: Мир, 1993. -371 с.: ил.
6.	Букчин Л. В., Безрукий Ю. Л. Дисковая подсистема IBM-совместимых персональных компьютеров. - М.: МП Бином, 1993. - 287 с.: ил.
7.	Мураховский В. И.. Евсеев Г. А. Железо ПК-2002: практ. руководство. - М.: ДЕСС КОМ, 2002. - 672 с.: ил.
8.	Новиков Ю. В., Калашников О. А., Гуляев С. Э. Разработка устройств сопряжения для персонального компьютера типа IBM PC: практ. пособие / под общ. ред. Ю. В. Новикова. - М.: ЭКОМ, 1997. - 224 с.: ил.
9.	http://www. Pcisig.com/
Многоуровневая система шин
2.1.	Функциональная классификация шин
-j s лассификация - это начало науки, занимающейся нахождением общих признаков в разнородных объектах. Примером удачной параметрической ж V классификации является периодическая система элементов Д. И. Менде-
леева. В настоящее время для систематизации объектов совершенствуется морфологический метод. При использовании морфологического метода в технике основное внимание уделяется классификации элементов (узлов, блоков) и их связей в устройствах, в частности классификации существенных признаков изобретательских технических решений. Однако при таком подходе из-за наличия большого числа разнотипных элементов (особенно это характерно для устройств вычислительной техники) не удается найти единого подходящего принципа классификации для устройств одного назначения.
Разработка всякого устройства начинается с создания способа его функционирования (принципа работы мысленной модели устройства). Таким образом, способ (алгоритм) функционирования является первичным, а устройство, построенное в соответствии с этим способом, - вторичным. Одному и тому же способу может быть поставлено в соответствие множество (подкласс) устройств с различными техническими характеристиками (быстродействием, сложностью оборудования, надежностью и т. д.).
Поэтому для классификации устройств, в том числе шин, следует использовать основные признаки способов их функционирования, чтобы избежать ненужной мелкой детализации и выяснить наиболее важные элементы.
Обычно для устройств вычислительной техники способы функционирования рассматриваются как процесс взаимосвязанных действий по преобразованию, хранению, анализу и передаче информации с помощью материальных объектов (дешифраторов, регистров, шин, сумматоров и т. п.). Однако такой подход в описании способов функционирования устройств не позволяет установить общие классификационные признаки.
Предлагается функциональная классификация, состоящая из нескольких уровней, каждый из которых содержит ряд классификационных признаков. К основным обязательным уровням относятся:
Функциональная классификация шин	53
•	дисциплины обслуживания;
•	структуры данных;
•	способы передачи битов, байтов, слов и т. д.;
•	методы согласования во времени (синхронизации) и т. д.
Кроме того, для устройств, например контроллеров, следует учитывать режимы (фазы) ввода, обработки и вывода данных. Для блоков, входящих в состав устройства, возможна своя функциональная классификация. Уровень дисциплины обслуживания (обработки) является переменным относительно классов устройств и постоянным внутри каждого класса (устройств одного назначения), например устройства приоритета с равноправной относительной и абсолютной приоритетной дисциплиной обслуживания.
Другой классификационный уровень связан со структурой данных. В области вычислительной техники для некоторых классов устройств имеется тенденция приводить в соответствие структуру данных со структурой надлежащих устройств. Если при вводе (выводе) данных используется одна структура данных, а при обработке - другая, то возникает необходимость в преобразовании структур данных, что приводит к значительным затратам времени и (или) аппаратурных средств, то есть структура данных существенно влияет на техническое решение при разработке устройства.
Следующий классификационный уровень связан со способом передачи данных. В общем случае можно выделить параллельно-параллельный, параллельно-последовательный. последовательно-параллельный и последовательно-последовательный способы передачи слов (байтов) и битов, например параллельно по словам (байтам) и последовательно по битам.
Очередной классификационный уровень содержит функциональные признаки временного согласования передаваемых при обрабатывании данных. На этом уровне можно выделить следующие способы согласования (координацию) во времени: синхронный, асинхронный, апериодический (с квитированием), изохронный.
Предлагаемую систему классификационных признаков, на наш взгляд, необходимо ввести в структуру описания устройства (объекта изобретения) в качестве ключевых слов для автоматизации поиска патентной информации. Обязательное перечисление классификационных (функциональных) признаков в разделе и указание области техники, к которой относится изобретение, могли бы дать большой информационный смысл. Это позволило бы четко определить назначение и область применения устройства, понять принцип его функционирования и правильно выбрать аналоги. Но самое главное - предлагаемая система классификации является методикой изобретательского творчества, так как способствует разработке новых устройств и автоматизации поиска аналогов, то есть содействует созданию банка знаний по патентным источникам информации (информационного обеспечения изобретательского творчества). Итак, поставленная задача имеет множество возможных решений, и трудность состоит в том, чтобы отбросить заведомо неверные; имеющаяся у пользователя информация может быть неполной или нечетко заданной. В процессе решения задачи необходимо будет консультировать пользователя и давать советы, анализировать и классифицировать данные, проводить поиск, обмениваться информацией, представлять ее в требуемой форме, прогнозировать, обосновывать действия. Поэтому для решения поставленной задачи необходимо использовать
54
Многоуровневая система шин
экспертную систему. Тогда задача поискового проектирования устройств вычислительной техники разобьется на две подзадачи:
1) выбор варианта (прототипа) технического решения и разработка способа его функционирования (экспертная система 1);
2) банк эвристических приемов (экспертная система 2).
Экспертная система 1 должна содержать систему МКИ (индексы патентной классификации), позволяющую классифицировать устройства, набор функциональных параметров (признаков), позволяющих представить каждое устройство в виде функционального кода (набора классификационных признаков) и совокупности технических характеристик. Экспертная система 1 позволит пользователю выбрать (разработать) способ функционирования устройства по функциональным признакам и найти наиболее близкое техническое решение (прототип), содержащееся в банке данных экспертной системы; просмотреть варианты всех близких проектных решений: выбрать желаемый положительный эффект (цель проектирования) для доказательства эквивалентности устройств, то есть экспертная система будет использоваться как автоматизированный интеллектуальный подсказчик способов функционирования устройств (генератор технических решений).
Инструментальное средство для создания экспертной системы поискового проектирования должно отвечать следующим требованиям:
•	обладать высокой степенью гибкости;
•	иметь ориентацию на обработку знаний;
•	взаимодействовать с пользователем на естественном языке;
•	объяснять рассуждения в ходе решения задачи;
•	оперировать неполными и неопределенными данными;
•	обеспечивать легкий доступ к средствам помощи и подсказок;
•	предлагать пользователю содержательные инструкции для ответа на подсказки;
•	использовать правила для описания логических связей между значениями параметров и выводом заключений. Возможность выражения знаний в форме продукционных правил позволит легко пополнять базу знаний экспертной системы, что дает возможность включения в систему экспертных знаний по другим классам устройств;
•	поддерживать прямую и обратную модели вывода;
•	иметь средство взаимодействия и доступа к базам данных, что позволит создать архив патентов и находить среди них прототип.
Такими возможностями программных средств обладает оболочка экспертной системы Персональный консультант плюс (PC PLUS), которая позволяет строить базы знаний для различных предметных областей на персональных компьютерах, совместимых с PC/AT IBM, совместно с базой данных, созданной с помощью dBase.
На рис. 2.1 представлен граф функциональной классификации шин.
Функциональный граф, содержащий 10 уровней и только 3 вершины в каждом уровне, уже определяет 54 756 вариантов построения интерфейсов. Системной шине ISA PC/AT соответствует выделенный маршрут в графе (функциональный код): 1.1, 2.1, (3.1, 3.2), 4.2, (5.1, 5.3), 6.1, (7.1, 7.2, 7.3, 7.5), 8.1, (9.1, 9.2), 10.1.
Следует отметить, что дополнительная детализация (увеличение числа вершин) на каждом уровне и (или) создание дополнительного функционального
Функциональная классификация шин
55
1 Дисциплина обслуживания
1 1. Однозвенная коммутация канала
1.2.	Многозвенная коммутация канала
1.3.	Передача данных без коммутации канала
1.4-	1 .N. Коммутация битов, пакетов, сообщений.
2 Тип коммутации
2	1. Временной.
2.2.	Пространственно-временной
2.3.	Пространственный
2.4.	Отсутствует
3	Арбитраж
3	1. Фиксированный.
3	.2. Циклический
3	.3.	Поллинг (опрос).
3	.4.	Не используется
4.	Способ передачи слов (байтов) и битов
4.1.	Последовательно-последовательный
4.2.	Последовательно-параллельный.
4.3.	Параллельно-последовательный.
4.4.	Параллельно-параллельный
5.	Временное согласование
5.1.	Синхронное.
5.2.	Асинхронное
5.3.	Апериодическое (с квитированием).
5	4. Изохронное
6	Структура данных
6	1. Список, элемент списка (адрес и данные).
6.2.	Файл.
6.3.	Пакет (блок).
6.4.	Сообщение
6.5.	Группы битов (код ASCII)
7 Режим обмена
7	1. Прерывание.
7.2.	Прямой доступ.
7.3.	Опрос флага готовности
7	4. Монопольный (пакетный)
7.5.	Безусловный (программный).
8	Мультиплексирование
8	1. Без совмещения.
8.2.	Совмещение адреса и данных
8.3.	Совмещение адреса, данных и команды.
8.4.	Совмещение адреса, данных, команды состояния и т. д.
8.5.	Полное мультиплексирование.
9.	Вид передачи с учетом направления
9.1.	Симплексный.
9.2.	Полудуплексный
9.3.	Дуплексный
10.	Представление битов данных
10.1.	Прямым униполярным сигналом.
10.2.	Инверсным униполярным сигналом
10.3	Биполярным сигналом.
10.4	Дифференциальным сигналом
10.5.	Импульсом тока.
Рис. 2.1. Граф функциональной классификации шин
56
Многоуровневая система шин
графа для какого-либо уровня приводит к значительному увеличению числа решений при реализации интерфейсов, в том числе и неизвестных. Например, при анализе первого уровня графа можно указать, что коммутация в общем случае каналов может быть централизованная или децентрализованная, произвольная (случайная) или разовая (список соединений известен заранее), однозвенная или многозвенная, полнодоступная (неполнодоступная) и т. д. Каждый признак (вершина), указанный в графе, приводит к определенному техническому решению соответствующего интерфейса, то есть функциональный признак в этом смысле должен быть существенным. Поэтому разделение шин по назначению (локальные, системные, периферийные, приборные и т. д.) не выделяется в функциональном графе в виде отдельного уровня. Эти шины определяются соответствующими маршрутами в функциональном графе. Например, периферийный (последовательный) интерфейс RS-232 описывается маршрутом в графе: 1.3 (дисциплина обслуживания - передача данных типа «точка-точка»); 4.1 (способ передачи - последовательная передача группы битов (8-5) и последовательная передача битов каждой группы); 5.1-5.3 (временное согласование -синхронное, апериодическое или асинхронное координирование во времени); 6.5 (структура данных - последовательная кодовая посылка стартстопного формата группы битов: код ASCII ... телеграфный код); 8.1 (отсутствие мультиплексирования); 9.1 (вид передачи с учетом направления - симплексный); 10.3 (представление бита данных биполярным сигналом).
Системные шины ISA и Multibus имеют незначительные функциональные отличия, состоящие в том, что шина ISA является синхронным, а в ряде случаев - апериодическим и с прямым униполярным представлением единичных битов адреса и данных, а шина Multibus - апериодическая шина (с квитированием) и с инверсным униполярным представлением единичных битов адреса и данных. Кроме того, имеется несходство в реализации процедуры арбитража: в системной шине для выполнения этой цели используется системный контроллер прямого доступа, а в шине Multibus - специальное устройство, состоящее из арбитра шины и блока параллельного или последовательного приоритета.
Условию арбитража соответствует свой функциональный граф, который здесь не показан.
Основным отличием системных интерфейсов от периферийных или приборных интерфейсов является выполнение в них функции коммутации шины (канала) данных (признаки 1.1 и 2.1). Рассмотрим уровни 1 и 2 более подробно, так как они имеют принципиальное значение и существенно влияют на структуру настоящих и будущих интерфейсов.
На рис. 2.2 изображена типичная структура 3-шинного системного интерфейса, в которой шина данных (ШДАН) и приемопередатчик (ПП) исполнителей (ИС) представляют собой децентрализованный (распределенный по ИС) двунаправленный многобитный мультиплексор/демультиплексор, то есть простейший временной коммутатор, выполняющий коммутацию канала данных.
В какой-либо момент времени пересылка данных выполняется между одним задатчиком и одним исполнителем. В этой структуре основное внимание было уделено уменьшению числа линий связи путем децентрализованного размещения частей временного коммутатора на платах исполнителей. Каждая часть временного коммутатора содержит ПП, дешифратор (селектор) адреса (ДшА) и дешифратор управляющих сигналов (ДшУС). формирующий сигналы чтения (Чт) и записи (Зп) соответствующих регистров (Р) ИС. Задатчик, получив доступ
Функциональная классификация шин
57
Рис. 2.2. Типичная структура системного интерфейса
к шинам, в режиме записи устанавливает адрес какого-либо регистра ИС на ШАДР и данные на ШДАН. Один из исполнителей опознает собственный адрес и формирует на выходе ДшА сигнал выбор (Выб), который разрешает работы приемопередатчика ПП и дешифратора ДшУС. Выбранный ПП пропускает данные к входам внутренних регистров ИС, причем нахождение одного из них по младшим битам адреса с заданием соответствующей операции Чт или Зп осуществляет ДшУС, когда задатчик устанавливает сигнал Зп по линии ШУПР. Таким образом, в режиме записи ППг-ППп представляют собой многошинный децентрализованный демультиплексор.
В режиме чтения активный задатчик направляет адрес и через некоторое время, необходимое для декодирования адреса, устанавливает сигнал чтения (Чт) на соответствующей линии ШУПР. Содержимое выбранного регистра ИС передается на ШДАН через ПП, открытый в обратном направлении сигналами Выб и Чт. После этого задатчик вводит значения битов ШДАН во внутренний регистр. В режиме чтения ППг-ППп составляют многошинный децентрализованный мультиплексор.
Другим крайним решением является структура пространственного интерфейса ввода/вывода, представленная на рис. 2.3 и содержащая системные шины (CUI -CIIIJ, число которых в общем случае равно числу задатчиков (Зг—Зк), и децентрализованный пространственный коммутатор, распределенный по 3-Зк и ИС-ИСп.
Каждой СШ1 соответствует арбитр (APBJ, на который поступают запросы от Зг-Зк, и АРБ1 разрешает доступ к СШ1 наиболее приоритетному задатчику, то есть каждый задатчик может получить доступ к любой системной шине. Каж-
58
Многоуровневая система шин
Рис. 2.3. Структура пространственного интерфейса ввода/вывода с несколькими системными шинами
дый задатчик, который также может быть исполнителем, и исполнитель содержат многошинный мультиплексор/демультиплексор (часть децентрализованного матричного коммутатора), позволяющий подключить любую системную шину к внутренней шине компонента системы. На рис. 2.4 показана структурная схема многошинного мультиплексора/демультиплексора, являющегося частью распределенного матричного коммутатора.
Как видно по рис. 2.3 и рис. 2.4, многошинный мультиплексор/демультиплексор в первом случае является централизованным временным коммутатором, а во втором случае - децентрализованным. С целью уменьшения числа линий связи схемные части арбитров могут быть также распределены по устройствам.
Возможно построение пространственно-временного интерфейса с децентрализованным матричным пространственно-временным коммутатором, в котором число системных шин меньше, чем число подключенных к этому интерфейсу задатчиков. Построение и анализ таких интерфейсов ввода/вывода в данной книге не рассматриваются и являются отдельной темой.
Коммутация каналов, сообщений и пакетов достаточно хорошо описана в литературе, посвященной технике связи.
Коммутация каналов заключается в выделении физического канала для связи компонентов системы. Коммутация сообщений, содержащих заголовок, адрес приемника, данные и т. д.. выполняется по маршруту, состоящему из узлов связи.
При коммутации пакетов фиксированной длины, составляющих сообщение, осуществляется также их передача по маршруту узлов связи, то есть в этом случае сообщение разбивается на пакеты.
Кроме того, отметим, что возможна, например, пространственная коммутация битов данных без построения физического канала связи.
Некоторых пояснений требует списковая структура данных, используемая в функциональном графе для классификации интерфейсов. Обычно в методах программирования употребляются данные, связанные между собой указателя-
Функциональная классификация шин
59
ШДАН,
ШАДР, ШУПР,
ШДАН,
шадр2 шупр2
ШДАНк
ШАДРк ШУПРк
Рис. 2.4. Структурная схема многошинного мультиплексора/демультиплексора
ми (адресами), составляющие список. Если система содержит несколько задатчиков (процессоров), решающих общую задачу, то данные задатчиков имеют указатели (адреса процессоров) направления передачи данных, то есть адрес и соответствующее ему данное (данные) являются элементами списка. В общем случае будем также считать адрес и соотносящиеся с ним данные элементами списковой структуры.
Классификационные признаки уровня временного согласования, связанного с передачей данных, имеют следующее объяснение.
При синхронной передаче данных каждый бит данных сопровождается синхросигналом, или ее начало и завершение происходят в фиксированные моменты времени, определяемые устройством управления. Поэтому системная шина ISA является в основном синхронной шиной.
Термин «асинхронный интерфейс» (асинхронная передача) имеет несколько интерпретаций. Иногда называют интерфейс с обязательным квитирующим (обратным) сигналом в циклах ввода и вывода асинхронным интерфейсом, что является, на наш взгляд, не совсем правильным определением.
Асинхронная передача данных - это передача с произвольными интервалами времени и нестрогими требованиями во времени ожидания данных.
Следует отметить, что обязательный сигнал квитирования в интерфейсе Multibus, сообщающий об успешном завершении операции, кроме того, исполь
60
Многоуровневая система шин
зуется для согласования «медленных» ПУ с работой процессора, то есть в случае его отсутствия в работе процессора вставляется заданное количество тактов ожидания. Эта возможность сигнала квитирования продлить на некоторое заданное время передачу данных (время ожидания) и позволяет называть ее асинхронной. В этом случае нарушается основное требование для асинхронной передачи - это передача с произвольными интервалами и в любой момент времени. Такая асинхронная передача выполняется в интерфейсе RS-232, который может не использовать сигнал квитирования. В интерфейсе RS-232 асинхронную передачу данных можно осуществлять в любой момент времени и со всякой продолжительностью. Кроме того, существуют асинхронные схемы без сигналов квитирования. Схемы, в которых окончание переходного процесса завершается формированием сигнала квитирования, называют апериодическими. Разработана апериодическая система логических элементов. Поэтому интерфейсы с обязательным сигналом квитирования будем называть апериодическими (с квитированием). Системный интерфейс Multibus и периферийный параллельный интерфейс Centronics являются апериодическими.
Сигнал квитирования в системных интерфейсах выполняет следующие функции:
•	сообщает об успешном завершении операции ввода или вывода;
•	указывает процессору о наличии данных на шине при вводе в него;
•	синхронизирует работу «медленных» электронных устройств с процессором (удлиняет цикл на шине).
В интерфейсе Centronics сигнал квитирования (АСК) имеет другое назначение - это готовность печатающего устройства, в том числе и механического, принять данные из процессора.
Системная шина ISA содержит линию I/O CH RDY (готовности канала ввода/ вывода) с необязательным соответствующим сигналом, позволяющую осуществить апериодическую передачу данных, то есть согласовать работу «медленного» ПУ с работой процессора путем вставки определенного числа тактов ожидания. Таким образом, если в шине ISA используется сигнал I/O CH RDY, то шина ISA в этом случае является апериодической. Поэтому системную шину ISA следует назвать синхронной, а в ряде случаев - апериодической.
Синхронная передача данных является более быстродействующей, чем асинхронная или апериодическая передача. Зато апериодическая координация действий на шине позволяет обнаружить ошибку на интерфейсе в случае отсутствия сигнала квитирования. Асинхронная передача не требует синхронизации каждого бита данных и разрешает передавать данные в произвольные моменты времени.
Изохронная передача данных - это периодическая (в равные промежутки времени) и непрерывная передача изохронных данных, потока данных, синхронизация которых зависит от интенсивности поступлений. Изохронная передача реализуется в универсальной шине USB, использующей дифференциальные сигналы.
Шина USB может быть отнесена к универсальным периферийным интерфейсам, так как позволяет подключать ПУ различных типов (мышь, клавиатуру, адаптер телефона, звуковую колонку, принтер и т. д.). Основное ее отличие от периферийных интерфейсов RS-232 и Centronics характеризуется функциональными признаками 1.2 и 2.1 (многозвенная коммутация канала с времен
Функциональная классификация шин	61
ным типом коммутации). Шина USB имеет древовидную структуру с узлами (хабами), к которым подключаются ПУ и (или) ветви (сегменты кабеля шины) для подключения к другим хабам. Таким образом, шина USB - это древовидная сеть ПУ (рис. 2.5а) с многозвенной временной коммутацией (б).
ДФ - дифференциальный формирователь ДП - дифференциальный приемник
Рис. 2.5. Древовидная структура шины USB: а) сеть, б) многозвенная коммутация
Связь между ПК (хостом) и ПУ образует многозвенный коммутационный канал. Протокол шины USB напоминает протокол локальной сети: посылается пакет с данными, в котором указывается адрес ПУ. После завершения передачи данных ПУ отвечает пакетом подтверждения, в котором отмечается результат этой передачи. Шина USB содержит две скрученные дифференциальные линии D+ и D-, по которым передаются дифференциальные сигналы данных (рис. 2.6).
Классификационные функциональные признаки шины USB, дающие представление о принципе ее работы, следующие:
•	многозвенная коммутация канала (1.2);
•	временной тип коммутации (2.1):
•	последовательно-последовательный способ передачи данных (4.1);
•	апериодическое и изохронное временное согласование (5.3, 5.4);
•	пакетная структура данных (6.3);
•	режимы обмена: прерывание (7.1), монопольный, пакетный (7.4);
•	полное мультиплексирование (8.5);
•	симплексный и полудуплексный виды передач (9.1. 9.2):
•	представление битов данных на шине дифференциальными сигналами (10.4).

Многоуровневая система шин
Последовательный периферийный интерфейс RS-232 был разработан для сопряжения с модемом и содержит последовательные линии передаваемых TxD и принимаемых данных RxD. На рис. 2.7 показана общая схема соединения ПК и модема, которая может работать в асинхронном или синхронном режиме.
Рис. 2.7. Общая схема соединения ПК и модема
Интерфейс RS-232 способен выполнять с учетом временного согласования следующие типы передач: асинхронную, асинхронную с квитированием, синхронную с бит-ориентированными или байт-ориентированными протоколами.
Обычно с помощью интерфейса RS-232 к ПК подключаются последовательные устройства: модем, мышь, трекбол, принтер и т. д. Простейший тип асинхронной передачи без квитирования для связи двух ПК показан на рис. 2.8.
ПК	ТхР	TxD	ПК
	RxD .	X	Z RxD.	
	SG		
	Сигнальная земля		
Рис. 2.8. Простая схема связи двух ПК
Для выполнения асинхронной передачи используется специальный программируемый формат последовательной кодовой посылки, содержащий стартовый и стоповые биты, необходимые для ее синхронизации.
При синхронной передаче каждый бит данных, передаваемый по линии TxD (RxD), сопровождается по соответствующей линии синхронизации синхросигналом.
Функциональная классификация шин
63
С целью увеличения помехозащищенности и снижения потребляемой мощности в нагрузке данные по односторонним линиям TxD (RxD) передаются и принимаются биполярными сигналами (рис. 2.9) с помощью специальных драйверов (формирователей) и приемников.
зона нечувствительности к электрическим шумам
Рис. 2.9. Представление кода данных на линиях TxD (RxD)
На рис. 2.10 показана схема связи драйвера (ДР) и приемника (ПР) интерфейса RS-232.
Если требованиям системы не удовлетворяет интерфейс RS-232, может быть использован один из следующих последовательных интерфейсов: RS-422, RS-423-или токовая петля, позволяющие увеличить длину связи и (или) скорость передачи данных.
Дифференциальный интерфейс RS-422 является также односторонним (с симплексным видом передачи по линии связи), позволяющим подключить к драйверу до 10 приемников. На рис. 2.11 изображена схема соединения дифференциальных драйвера (ДД) и приемника (ПР) симметричного интерфейса RS-422.
64
Многоуровневая система шин
Рис. 2.11. Схема соединения ДД и ДП линии RS-422
Дифференциальный принцип передачи увеличивает ее помехоустойчивость и длину связи.
На рис. 2.12 приведена схема линии связи RS-422 [6], содержащая дифференциальный приемник 75115 с настраиваемым временем отклика, и драйвер, реализованный на базе двух инверторов с открытым коллектором.
Существуют дифференциальные приемники с петлей гистерезиса и настраиваемой постоянной времени, эффективно устраняющие помехи на линии связи. Дальнейшим развитием этого интерфейса является интерфейс RS-485, допускающий подключение к одной линии нескольких источников и приемников (дуплексный вид передачи).
Несимметричный дифференциальный интерфейс RS-423 отличается от симметричного RS-422 наличием общего обратного земляного провода для нескольких сигнальных линий. На рис. 2.13 показана линия передачи RS-423.
Интерфейс ИРПС (интерфейс радиальный последовательный) с токовой петлей является менее стандартизированным интерфейсом, чем, например, RS-232. Этот интерфейс представляет собой источник и приемник тока, составляющие электрическую цепь. В такой цепи импульс тока, превышающий 17(20) мА, соответствует логической единице, а импульс тока меньше 2 мА - логическому нулю. Интерфейс «токовая петля» используется в технических системах для пе-
Функциональная классификация шин
65
Рис. 2.13. Линия передачи RS-423
редачи информации на значительные расстояния. В интерфейсе используются оптроны, представляющие собой комбинацию светоизлучателя и фотоприемника, например светодиода и фототранзистора. В зависимости от расположения источника тока в драйвере или приемнике существуют различные схемы интерфейса токовой петли. Один из вариантов схемы интерфейса с токовой петлей показан на рис. 2.14.
Кроме того, при построении интерфейса с токовой петлей драйверы и приемники могут быть активными или пассивными, возможно размещение оптрона только в приемнике или в драйвере и приемнике, применяется развязанный

Многоуровневая система шин
источник питания только для линии связи и т. д. В табл. 2.1 представлены некоторые технические характеристики последовательных интерфейсов.
Таблица 2.1
Тип интерфейса	Скорость (Кбит/с)	Длина(м)	Количество приемников
JRS-232 (стык С2)	20	16	1
RS-422	10 000	13	до 10
	1000	130	
	100	1300	
	130		
RS-423	100	10	ДО 10
	10	100	
	1	1300	
Токовая петля 20 мА	10	300	1 (может быть несколько)
(ИРПС)	1	2000	
Параллельный периферийный интерфейс Centronics предназначен для сопряжения ПК с принтером. На рис. 2.15 показана схема общего вида интерфейса Centronics.
Сигналы состояния
Сигналы управления
Рис. 2.15. Схема общего вида интерфейса Centronics
Процессор ПК устанавливает на шину D7-D0 данные, поступающие в принтер (его входной регистр данных). Затем процессор вторым своим выводом формирует сигнал строб (STR), записывающий данные (символ) во входной регистр данных принтера. При этом внутри принтера устанавливается сигнал прерывания, сообщающий его микропроцессору (МП), что входной регистр данных полон. МП считывает этот символ, анализирует его (это управляющий или выводимый на печать), помещает печатаемый символ в буфер и формирует сигнал IACK (подтверждение приема). Через прерывание или опрос сигнала IACK процессор может определить, что принтер готов принять очередной байт данных.
Основное отличие этого интерфейса состоит в том, что используется последовательно-параллельный способ передачи байтов и их битов.
Кратко рассмотрим функциональные признаки шины PCI. На рис. 2.16 представлена общая схема шины РС1.
Шина PCI с частотной синхронизацией 33 МГц предназначена для подключения дисков, графических дисплеев и содержит 32- или 64-битную мультиплексную шину адрес/данные (AD). Сигналы квитирования «готовность цели» (TRDY#)
Функциональная классификация шин	67
Рис. 2.16. Общая схема шины PCI
и «готовность инициатора» (TRDY#) имеют активный низкий уровень, на который указывает знак #. Если в режиме обмена хотя бы один из этих сигналов обладает высоким пассивным уровнем, то передача данных приостанавливается и в работе шины выполняются циклы ожидания. Таким образом, шина PCI использует апериодическое (с квитированием) временное согласование хоста и ПУ.
Цикл шины PCI содержит адресную фазу и одну или несколько фаз данных. В адресной фазе передается, например, 32-битный адрес по линиям AD и 4-бит-ный код команды по линиям С/BE# (записать в порт (память), читать порт (память) и т. д.). В фазе данных направляются 32-битные данные по линиям AD и сигналы разрешения байтов по линиям С/ВЕ#. В шине PCI предусмотрены процедуры арбитража и прерывания.
Функциональные возможности шины PCI с учетом функционального графа следующие: однозвенная коммутация канала (1.1), временной тип коммутации (2.1), фиксированный арбитраж (3.1), последовательно-параллельный способ передачи удвоенных (учетверенных) слов и их битов (4.2), апериодическое временное согласование (5.3) и т. д.
Интерфейс малых вычислительных систем (SCSI) относится к интерфейсам ввода/вывода (универсальным параллельным периферийным интерфейсам) и предназначен для сопряжения с ПК разнообразных ПУ (контроллеров НГМД, НЖМД, принтеров, адаптеров сети и т. д.).
Базовый вариант интерфейса SCSI позволяет подключить до восьми контроллеров ПУ, причем каждый из них может содержать 8 логических блоков, а любой логический блок - 256 логических подблоков.
На рис. 2.17 представлен общий вид интерфейса SCSI.
Интерфейс SCSI содержит две шины: 8-битовую дифференциальную шину данных и шину управления, основная часть сигналов которой показана на рис. 2.17. Шина данных используется в мультиплексном режиме для передачи команды (адреса), данных, состояния или сообщения, определение которых на шине выполняют коды сигналов управления C/D, I/O и MSG (табл. 2.2).
68
Многоуровневая система шин
Рис. 2.17. Общий вид интерфейса SCSI
Таблица 2.2			
C/D	I/O	MSG	Операция
0	0	0	Вывод данных
0	0	1	Вывод данных
0	1	0	Вывод команды
0	1	1	Ввод состояния
1	0	0	Резерв
1	0	1					
1	1	0	Вывод сообщения
1	1	1	Ввод сообщения			
В работе шины SCSI можно выделить следующие основные фазы: шина свободна, арбитраж, выборка исполнителя, состояние и сообщение. После сигнала сброс (RST) шина находится в фазе «шина свободна», определяемой пассивным уровнем сигнала BSY (шина занята). Из фазы «шина свободна» делается переход в фазу арбитража, когда инициатор (задатчик) осуществляет выбор исполнителя, устанавливая сигнал BSY и выводя на шину данных идентификационный бит, номер линии которого определяет приоритет в процедуре арбитража, причем максимальный номер имеет наивысший приоритет. После того как инициатор получает в свое распоряжение шину, он начинает фазу выборки исполнителя, состоящую в том, что инициатор устанавливает сигнал SEL и идентификационный бит на линии данных, номер которого равен идентификационному номеру устройства, установленному с помощью перемычек в каждом ПУ. Затем выполняются фазы передачи информации: команды, данных, состояния и сообщения, каждая из которых определяется кодом управления на линиях C/D, I/O и
Архитектуре компьютере
69
MSG (табл. 2.2). Передача данных осуществляется синхронным или апериодическим (с квитированием) временным согласованием. Для выполнения апериодического способа используются сигналы квитирования АСК и REQ.
В режиме записи инициатор выдает данные на шину данных и затем устанавливает сигнал АСК, причем данные сохраняются на шине до тех пор, пока исполнитель не сбросит сигнал REQ, а в режиме чтения исполнитель передает данные вместе с сигналом REQ и удерживает эти данные до тех пор, пока от инициатора не придет сигнал АСК.
В связи с тем. что к шине SCSI возможно подключение разнообразных ПУ. имеется большая система команд. В качестве примера приведем некоторые из них, предназначенные для магнитных дисков: чтение состояния (03h), запись данных (OAh), чтение данных (08h), поиск (OBh) и т. д.
Данные на шине SCSI передаются блоками. Поэтому в командах записи и чтения данных указываются логический номер блока и количество передаваемых данных. Для задания номера блока в этих командах используется 21-битный адрес и 8 битов для подсчета количества передаваемых блоков. В команде поиска указывается 21 -битный адрес.
Однокристальный хост-адаптер имеет программное обеспечение, управляющее работой ПУ, подключенных к шине SCSI, и средства сопряжения с системным интерфейсом, предусматривающие программный обмен и (или) обмен в режиме прямого доступа к памяти.
Следует отметить, что в интерфейсе SCSI, так же как и в системных интерфейсах, применяется децентрализованный временной коммутатор (8-битный децентрализованный мультиплексор - демультиплексор), так как двусторонняя 8-битная шина данных подключается к нескольким контроллерам ПУ. Однако отдельная шина адреса, выбирающая контроллер ПУ и регистры в нем, в интерфейсе SCSI отсутствует. Для выполнения этой функции в интерфейсе SCSI используется шина данных, то есть выполняется радиальный способ выбора ПУ.
2.2. Архитектура компьютера
В развитии архитектуры компьютера (от базовой до современной) сменилось несколько поколений, причем наивысшие технические достижения меняются каждый год.
Основными тенденциями развития компьютерной техники являются: увеличение быстродействия, расширение функциональных возможностей, миниатюризация, повышение степени интеграции чипсетов и их надежности.
В этом развитии важное значение приобретает организация связи компьютерных устройств для их совместимой работы. При этом наблюдается иерархия в построении таких соединений: сильная связанность близлежащих к процессору устройств и уменьшение связанности по мере их удаления. Сильно связанные устройства обладают наивысшим быстродействием при обмене информацией между собой, а слабо связанные устройства - меньшим быстродействием.
Таким образом, в архитектуре компьютера наблюдается стремление к многоуровневой системе шин различного быстродействия и назначения.
Если в базовом компьютере использовалась одна шина расширения, называемая системной и являющаяся одновременно шиной процессора, то в дальнейших разработках компьютеров предусматривают несколько шин расширения, имеющих различное быстродействие и применяемых с целью разделения воз
70	Многоуровневая система шин
можности подключения быстрых и медленных периферийных устройств. Такой подход в построении компьютера приводит к увеличению его производительности. Кроме того, изменения коснулись и проблемы подключения внешних периферийных устройств - к построению соединений типа «точка - много точек». Интерфейс RS-232 позволяет подключить только одно устройство, например модем, и поэтому относится к типу «точка-точка». Применение среднескоростной универсальной последовательной шины USB реализует возможность подключения большого числа периферийных устройств с автоматической их настройкой (тип соединения «точка - много точек»).
На рис. 2.18 и 2.19 представлены варианты архитектур, построенные на базе процессоров Pentium III [1] и Pentium IV.
550 МГц
Рис. 2.18. Архитектура компьютеров на базе Pentium III
Архитектура компьютера
71
Рис. 2.19. Архитектура компьютеров на базе Pentium IV
Основное внимание в представленных архитектурах уделим общему описанию используемых в них шин. Особенности процессора Pentium III по сравнению с процессорами предыдущего поколения состоят в том, что используется внешняя кэш-память, увеличена тактовая частота шины процессора, предназначенная для связи с оперативной памятью, частота работы которой так же увеличена.
Так как к оперативной памяти обращаются другие устройства, в частности графический видеоадаптер, чипсеты мостов, то частота работы ее шины в значительной степени определяет производительность компьютера. Обычно шина процессора является самой быстродействующей шиной в компьютере и содержит 64 линии для передачи данных, 32 линии - адреса и линии управления.
72	Многоуровневая система шин
В компьютерах пятого поколения предусмотрены несколько уровней шины: AGP, PCI и ISA.
Наиболее узким местом в компьютере (вычислительной системе) является шина процессора, которая при увеличении числа подключаемых к ней модулей (ресурсов) ограничивает производительность компьютера. Для решения проблемы перегрузки шины процессора, взаимодействующей с ОП, используют локальные шины, связывающие процессор с адаптерами ПУ. Если процессор имеет локальную и шину ввода/вывода (шину расширения), то необходимы два контроллера шины, управляющие их работой. Для локальной шины выделяется отдельное адресное пространство, и если адрес находится в локальном пространстве, то разрешается работа контроллера шины локального интерфейса.
Первые компьютеры с локальными шинами были не стандартизованы. В настоящее время известны две стандартные локальные шины: VL-bus (VLB), предложенная ассоциацией VESA (ассоциацией видеоэлектронного стандарта), и PCI (периферийный связующий компонент) фирмы INTEL. Шина VLB является более дешевой и простой, чем шина PCI, и позволяет подключать до трех адаптеров ПУ (контроллеры ВЗУ, видеоадаптеры и сетевые платы). Интерфейс VLB (версия 1) имеет соединитель (112 контактов), содержит 32 линии для передачи данных и 30 линий для передачи адреса и позволяет работать адаптерам ПУ с тактовой частотой до 33 МГц.
Шина PCI использует 124-контактный разъем (32-разрядная передача адреса и данных) или 188-контактный разъем (64-разрядная передача адреса и данных). Шина PCI предназначена для сопряжения высокоинтегрированных контроллеров ПУ, периферийных плат расширения и памяти. В шине PCI можно выделить следующие функциональные группы сигналов: системные (тактовые, сброс), адреса и данных (шинное событие состоит из адресной фазы, идущей перед одной или несколькими фазами данных), команды шины (4 битов, определяющих команду шины во время адресной фазы), контроля и арбитража интерфейса, прерываний, сообщений об ошибках и т. д.
Шина AGP (AGP - Accelerated Graphics Port) называется ускоренным графическим портом связи, так как содержит слот для подключения платы видеопроцессора (3D-акселератора). Шина AGP является дальнейшим совершенствованием шины PCI и имеет несколько версий своего развития.
Функциональные признаки шины AGP следующие:
1.	Конвейерный принцип передачи информации, который состоит в том. что вначале передаются адреса, а затем - данные, что сокращает время обмена данными между инициатором и получателем (целью).
2.	Частичное демультиплексирование при передаче адреса и данных. Для осуществления этой цели используется дополнительная 8-битовая шина, по которой за четыре такта передается 32-битный адрес. Для вывода данных инициатор использует отдельную 32-битовую шину.
3.	Режим DME (DME - Direct Memory Execution) - непосредственное выполнение операции в оперативной памяти, состоит в том, что ЗВ-акселератор имеет доступ по одним и тем же адресам к своей локальной и оперативной памяти, что облегчает и ускоряет обработку графической информации.
Параметрические признаки шины AGP следующие: скорость передачи данных определяется несколькими режимами (версиями):
•	режим 1* характеризуется скоростью передачи V = 66 * 4 = 264 Мбайта/с с учетом, что тактовая частота шины 66 МГц и передаются 4 байта данных;
Архитектура компьютера	73
•	режим 2* определяется скоростью передачи данных V = 528 Мбайт/с (в этом режиме данные передаются по переднему и заднему фронтам тактовых сигналов);
•	режим 4* осуществляет четыре передачи данных за один такт синхронизации, что позволяет реализовать скорость передачи, равную 1 Гбайту/с;
•	в режиме 8* предусматривается скорость передачи V = 2 Гбайта/с.
В шине AGP используется базовая частота 66,66 МП; и напряжение питания 3,3 В и (или) 1,5 В. Различают слоты и платы AGP универсальные, рассчитанные только на напряжение 3 В или 1,5 В. Для отличия плат предусмотрены специальные ключи. Контактные площадки платы AGP расположены в два этажа, как иу шины EISA.
Шина PCI (PCI - Peripheral Component Interconnect bus, шина взаимосвязи периферийных компонентов) имеет базовую частоту 33 МГц, и поэтому передача 4 байтов осуществляется со скоростью V ~ 33 х 4 ~ 132 Мбайта/с, что существенно меньше, чем скорость передачи данных шины AGP. Шина PCI с 64-бит-ным процессором увеличивает скорость передачи в 2 раза.
Особенностью шины PCI является то, что она не зависит от частоты работы шины процессора, то есть она функционирует одновременно с этой шиной, взаимодействуя с устройствами, подключенными к ней. Выпускаются платы 64-ил и 32-битные с напряжением питания 5 В (для стационарных компьютеров) или 3.3 В для портативных.
Известны несколько модификаций шины PCI (рис. 2.20).
250 Мбайт/с
133 Мбайт/с I		533 Мбайт/с I	1066 Мбайт/с	2,1 Мбайт/с	4,3 Мбайт	fc Для 1-го канала
I PCI (1.0)	I PCI (2.2)	PCI-X133	PCI-X266	PCI-X533	PCI - Express
32 бита	64 бита	64 бита	64 бита	64 бита	Последовательная
33 МГц	66 МГц	133 МГц	266 МГц	533 МГц	шина с несколькими
каналами
Рис. 2.20. Модификации шины PCI
В последнее время наметилась тенденция к использованию последовательных интерфейсов для связи с периферийным оборудованием.
В качестве примера можно указать на среднескоростную полудуплексную шину USB, высокоскоростную дуплексную шину IEEE 1394, шину SCSI-3, Serial АТА и шину PCI Express. Конечно, параллельная шина является более быстродействующей, чем последовательная, но в то же время она требует значительного пространства компьютера и не лишена недостатков (связанных с помехозащищенностью), особенно при высокой частоте ее работы. Высокая частота ограничивает длину линии параллельной шины, требует дополнительной развязки проводников в шине и аппаратных затрат для борьбы с помехами, что в конечном итоге приводит к высокой стоимости такой связи. В последовательных шинах применяется основной дифференциальный способ передачи дан-
74
Многоуровневая система шин
них с использованием низковольтного питания, который является более высокоэффективным средством для борьбы с синфазными помехами.
Функциональные признаки последовательной шины расширения ввода/вывода PCI Express:
•	дифференциальные передачи данных;
•	защита информации от ошибок (избыточный циклический контрольный код CRC);
•	управление питанием;
•	технология Р&Р (распознавание и настройка устройств);
•	пакетная передача данных и т. д.
Технические характеристики PCI Express:
•	количество каналов: 1, 2, 4, 8, 16 и 32;
•	дуплексная дифференциальная передача в каждом канале;
•	скорость передачи данных 250 Мбайт/с;
•	уровень сигнала 0,8 Не-
применение последовательных универсальных шин может привести к изменению архитектуры компьютера. Кроме того, на наш взгляд, будет наблюдаться стремление к более сильной связи процессора и оперативной (основной) памяти по принципу близкого расположения, пока это осуществляется только в отношении к кэш памяти. Для связи с периферийным оборудованием будут использоваться многоканальные высокоскоростные последовательные каналы связи, причем число разнотипных каналов будет уменьшено.
Процессор Intel Pentium IV, разработанный по 0,19-мкм технологии, с ядром North wood имеет тактовые частоты 1,6-2,0 ГГЦ и поддерживает тактовую частоту своей шины 400 МГц. Объем кэша составляет 512 Кбайт. Ожидается выпуск процессора Prescott, выполненного по 0,09-мкм технологии. Эта новая технология позволит использовать очень миниатюрные и самые быстродействующие КМОП-транзисторы с длиной затвора 1,2 нм, что значительно повысит быстродействие транзисторов.
Высокоскоростной последовательный интерфейс Serial АТА использует те же адресуемые регистры и команды, что и параллельный интерфейс АТА, то есть является программно совместимым с прежним параллельным интерфейсом. В новом интерфейсе отсутствуют понятия ведущий и ведомый жесткий диск. Принцип работы шины Serial АТА напоминает USB, IEEE 1394 и SCSI-3: используется дифференциальная дуплексная передача сигналов по четырем проводам (всего их 7), метод кодирования NRZ и отдельный кабель питания. Интерфейс Serial АТА обеспечивает скорость передачи 150 Мбайт/с.
2.3. Базовая шина PCI
Функциональные признаки базовой шины PCI:
1.	Дисциплина обслуживания - однозвенная временная коммутация параллельного мультиплексного информационного канала типа «инициатор-цель» с пакетной передачей данных.
2.	Структура данных - 32/64-битные адрес и данные.
3.	Временное согласование - синхронно-асинхронное (формирование большинства шинных сигналов синхронизируется тактовыми сигналами CLK,
Базовая шина PCI	75
кроме того, используются сигналы квитирования, вносящие такты ожидания в обмене данными между инициатором и исполнителем.
4.	Способ передачи - последовательный по удвоенным или учетверенным словам и параллельно по разрядам.
5.	Арбитраж - фиксированный и параллельный.
6.	Контроль данных - четный паритет.
7.	Представление сигналов на шине - три состояния с активным низким уровнем.
8.	Вид передачи - полудуплексный с мультиплексированием адреса и данных.
9.	Режим обмена - программный пакетный с возможностью прерывания.
10.	Доступ к адресным пространствам: памяти, ввода/вывода и конфигурации.
Параметрические характеристики базовой шины PCI:
1. Частота синхронизации - 33 МГц.
2. Скорость передачи данных - 33x4 =132 Мбайта/с.
Шина PCI предназначена для работы с напряжением питания 5 В или 3,3 В и может быть использована в серверах, настольных ПК, ноутбуках и лаптопах. Платы с разным питанием имеют специальные ключи в некоторых местах контактов, кроме того, особенностью шины PCI является то, что она не привязана к конкретному типу компьютера и разработана с учетом применения в новых системах. На рис. 2.21 представлена возможная конфигурация компонентов, подключенных к шине PCI.
Рис. 2.21. Схема подключения компонентов к шине PCI
Для шины PCI определены два типа устройства: инициатор (мастер, задатчик) и целевое (исполнитель) Инициатор устанавливает адрес (данные при записи), команду и формирует необходимые интерфейсные сигналы целевому устройству, причем адрес и данные передаются по мультиплексной шине AD(31-0) или
76	Многоуровневая система шин
AD(63-0). Дальше (с целью упрощения материала) основное внимание уделяется обязательным сигналам шины PCI, то есть рассматривается 32-битный вариант.
Рассмотрим назначение основных сигналов шины PCI. Символ #, стоящий после названия сигнала шины PCI, указывает на то, что активным уровнем этого сигнала является низкий уровень (логический О). Кроме того, обозначение, например (31-0), определяет группу линий (сигналов) с номерами от 31 до 0, t/s -двунаправленный сигнал ввода-вывода с тремя состояниями, s/t/s - активный по низкому уровню сигнал с тремя состояниями, in - стандартный сигнал ввода, out - стандартный активный формирователь, o/d - открытый сток для объединения сигналов (ИЛИ).
AD(31-0) t/s - мультиплексированная шина адреса/данных. Шинное событие (транзакция) состоит из одной фазы адреса и одной или нескольких следующих фаз данных.
С/ВЕ(3-0)# t/s - мультиплексированная шина команды/разрешения байтов. Во время фазы адреса выполняется передача команды (чтение или запись вво-да/вывода. чтение или запись в память и т. д.). а во время фазы данных - битов, указывающих на значимые (разрешенные) байты на шине AD, например С/ВЕ(3)# определяет байт 3 (AD31-AD24), С/ВЕ(0)# - байт 0 (AD7-AD0).
PAR t/s - четный паритет сигналов AD(31-0) и С/ВЕ(3-0)# для всех агентов шины PCI.
Линии AD(31-0), С/ВЕ(3-0)# и PAR относятся к линиям адреса и данных. Следующую группу линий соответствующих сигналов составляют линии сигналов управления интерфейсом.
FRAME# t/s - цикл кадра. Этот сигнал устанавливается инициатором и указывает на начало транзакции шины, снятие сигнала означает заключительную (финальную) фазу данных.
IRDY# s/t/s - готовность инициатора. Мастер формирует этот сигнал, если способен передать или принять данные. Сигнал IRDY# употребляется совместно с сигналом TRDY#. Фаза данных выполняется при наличии активных (низких) уровней сигналов IRDY# и TRDY#. Если хотя бы один из этих сигналов имеет пассивный (высокий) уровень, в работе инициатора вставляются такты ожидания.
TRDY# s/t/s - готовность цели показывает возможность выбранного устройства закончить текущую фазу данных. При чтении TRDY# указывает на достоверность передаваемых данных, а при записи - на готовность цели принять данные.
STOP# s/t/s - стоп. Сигнал цели сообщает мастеру о приостановке текущего события.
LOCK# s/t/s - блокировка. Когда LOCK# установлен мастером, операции могут происходить по любым адресам, кроме заблокированных.
IDSEL# in - выбор устройства инициализации. Сигнал формируется главным мостом или мостом PCI-PCI для выбора устройства при записи или чтении его памяти конфигурации.
DEVSEL# s/t/s - выбор устройства, для мастера этот сигнал показывает, что устройство (цель) на шине выбрано, а для цели - что мастер декодировал адрес и выбрал цель.
Следующая группа сигналов связана с арбитражем и используется только инициаторами для захвата шины.
Базовая шина PCI
77
REQ# t/s - запрос. Показывает арбитру, что инициатор требует шину PCL Каждый инициатор устанавливает собственный REQ#.
GNT# t/s - разрешение, устанавливается арбитром и поступает на вход соответствующего инициатора, которому этот сигнал принадлежит.
К сигналам, сообщающим об ошибках, относятся сигналы PERR# и SERR#.
PERR# s/t/s - ошибка четности формируется агентом, обнаружившим ошибку паритета. Минимальная продолжительность этого сигнала - один такт для каждой фазы данных.
SERR# o/d - системная ошибка, сообщает об ошибке паритета адреса, данных при выполнении на шине PCI специального цикла (передачи кодов сообщений, указывающих на состояние процессора (агента шины PCI)).
Системную группу сигналов составляют сигналы CLK и RST#.
CLK in - тактовые импульсы, которые управляют по переднему фронту формированием всех сигналов шины PCI, кроме сигналов сброса и прерывания.
RST# in - сброс, устанавливает регистры в начальное состояние.
В качестве необязательных сигналов рассмотрим только сигналы прерывания.
INTA# o/d - прерывание А. Сигнал запроса прерывания для однофункциональных агентов.
INTB# - INTD# o/d - запросы прерываний только для многофункциональных агентов шины PCI.
Команды шины, передаваемые во время адресной фазы по линиям С/ВЕ#, показаны в табл. 2.3.
Таблица 2.3	
Код(С/ВЕ)	Назначение команды
0000	Подтверждение прерывания
0001	Специальный цикл
0010	Чтение ввода/вывода
0011	Запись ввода/вывода
	0100	Резерв
	0101	Резерв
0110	Чтение памяти
0111	Запись в память
юоо	Резерв
1001	Резерв
1010	Чтение конфигурации
1011	Запись конфигурации
1100	Многократное чтение памяти
П01	Цикл двойного адреса
?110	Линейное чтение памяти
Тш	Запись в память и обнуление
Подтверждение прерывания - чтение (неявно адресованного) системного контроллера прерывания. При выполнении команды адрес в соответствующей фазе не используется, а во время фазы данных сигналы разрешения байтов показывают размер возвращаемого вектора.
Многоуровневая система шин
Специальный цикл обеспечивает простой механизм передачи сообщений на PCI, например состояния процессора или дополнительной сигнализации между агентами шины PCI. Команда не содержит явного адреса и передает сообщение всем агентам, среди которых находятся заинтересованные агенты, обрабатывающие полученную информацию. Чтение ввода/вывода - команда чтения данных агента, находящегося в адресном пространстве ввода/вывода. При выполнении команды все 32 бита адреса должны быть дешифрированы и сигналы С/ВЕ(3-0)# указывают на размер передаваемых данных.
Запись ввода/вывода - эта команда выполняет запись данных в выбранное устройство на шине PCI и в остальном совпадает с командой чтения ввода/вывода. Здесь следует отметить, что большинство плат ввода/вывода шины ISA используют 10-битный адрес.
Чтение памяти - чтение данных агента, расположенного в адресном пространстве памяти.
Запись в память - команда, употребляющая адресное пространство памяти.
Чтение конфигурации осуществляется из области конфигурации требуемого агента. Агент выбран, если его IDSEL активен.
Запись конфигурации заключается в передаче данных в конфигурационную память, выбранную сигналом IDSEL соответствующего агента.
Многократное чтение памяти используется мастером для частой передачи больших массивов данных, если есть программно доступный буфер данных (кэш).
Цикл двойного адреса необходим для выполнения передачи 64-битного адреса соответствующих агентов.
Линейное чтение памяти - команда, аналогичная команде чтения памяти, за исключением того, что мастер реализует больше, чем две 32-битные фазы данных. Эта команда применяется при частой передаче больших массивов данных.
Запись в память и обнуление позволяют оптимально использовать память, гарантируя минимум передач для заполнения одного кэша, и требуют размера кэша, заданного в конфигурационном регистре.
На шине PCI используется пакетный основной принцип передачи данных, состоящий из фазы адреса и одной или более фаз данных и применяемый в пространстве памяти или ввода/вывода.
Формирование пакетов выполняет шлюз, стоящий между процессором и шиной PCI, так как процессор в настоящее время реализует только одну фазу данных. Если к шине PCI подключено устройство с одной фазой данных, то оно (в случае многофазовой передачи) после первой фазы прерывает к себе доступ. Для корректной работы устройства все доступы ввода/вывода появляются на шине PCI, как только процессор сгенерирует их.
В пространстве ввода/вывода дешифрация адреса выполняется каждым устройством PCI, причем младшие разряды адреса AD1 и AD0 позволяют заранее (без задержки) определить разрешенный байт данных (табл. 2.4).
Устройства PCI, использующие адресное пространство памяти, должны проверять младшие биты адреса АГ^ и AD0, чтобы обеспечить нужный пакетный порядок. Для доступа к 32-битным данным (DW) памяти употребляются разряды адреса AD(31-2). При пакетной передаче необходимо после каждой фазы данных выполнять линейный инкремент адреса, если биты AD1 и AD0 равны 0. Кроме того, значение 01 соответственно этих же битов задает определенный режим переключения ячеек кэша.
Управление пересылкой данных выполняется с помощью трех сигналов: FRAME#, IRDY#, TRDY#. Сигнал FRAME# формируется мастером и указывает
Базовая шина PCI	79
Таблица 2.4					
AD1	AD0	C/BE3#	C/BE2#	C/BE1#	C/BE0#
0	0	★	★	★	0
0	1	★	★	0	1
1	0	★	0	1	1
110	11	1					
Примечание: 0 - сигнал C/BE# активен, *			- безразличное состояние.		
начало и конец события на шине. Если сигналы FRAME# и IRDY# сняты (высокие уровни), то интерфейс свободен (находится в пассивном состоянии).
Первый положительный (передний) фронт такта CLK определяет фазу адреса, во время которой направляются адрес и код команды от мастера к исполнителю. Если сигналы IRDY# и TRDY# имеют низкие (активные) уровни, то в соответствующем такте CLK выполняется передача данных. Снятие любого из этих сигналов вызывает появление тактов ожидания в работе мастера (приостанавливается передача данных). Кроме того, следует отметить, что все сигналы выбираются по переднему фронту сигнала CLK.
На рис. 2.22 представлена временная диаграмма чтения, в которой для упрощения рисунка показаны две фазы передачи (ПЕР) данных (ДАН1 и ДАН2) и один такт ожидания (ОЖИД), устанавливаемый мастером с помощью сигнала TRDY#.
80	Многоуровневая система шин
Обозначение ‘х‘ на диаграмме указывает на переключение сигнала на соответствующей линии шины PCI, то есть один агент прекращает управление сигналом, а другой - начинает. Исполнитель, опознав собственный адрес, устанавливает сигнал DEVSEL# и затем направляет данные по шине AD(31-0) к мастеру Сигнал DEVSEL# может быть установлен перед передачей данных или одновременно с ними. Сброс сигнала DEVSEL# совпадает со снятием сигнала TRDY#. В фазе данных сигналы C/BE# показывают разрешенные (РАЗР) байты на шине AD(31-0). По данным пакета мастер узнает, что следующая фаза последняя, и снимает сигнал FRAME#. Событие на шине завершается, если сигналы FRAME# и IRDY# неактивны.
Событие на шине может быть прекращено по инициативе мастера или цели. Если событие завершается мастером, то он снимает сигнал FRAME# при активном сигнале IRDY#, сообщая цели о предстоящей финальной фазе данных. Эта последняя фаза данных происходит при активных сигналах IRDY# и TRDY#. После чего сбрасывается сигнал IRDY#, и вместе с сигналом FRAME# он приобретает неактивный уровень, что означает пустое состояние шины.
Для прекращения события на шине со стороны цели используется сигнал STOP#, который должен быть активным, пока FRAME# не станет пассивным.
В случае, когда ни один исполнитель не отвечает мастеру, то он, если снят сигнал DEVSEL#, завершает событие на шине, при этом сбрасываются сигналы FRAME# и DEVSEL#. Временная диаграмма записи данных изображена на рис. 2.23.
Запись начинается установкой сигнала FRAME#. На рис. 2.23 показаны две фазы данных и один такт ожидания, который устанавливается путем снятия мастером сигнала IRDY#.
CLK
FRAME#
AD(31-0)
С/ВЕ(3-0)#
IRDY#
TRDY#
DEVSEL#
◄-----------------------------►
ФАЗА ФАЗА	ФАЗА
АДР	ДАН1	ДАН2
*	СОБЫТИЕ НА ШИНЕ	*
Рис. 2.23. Временная диаграмма записи
Базовая шина PCI	81
В основном операция записи аналогична операции чтения, за исключением того, что адрес и данные устанавливаются мастером. Последняя фаза данных определяется тем, что FRAME# пассивен, a IRDY# активен.
При наличии нескольких инициаторов на шине PCI предусмотрена процедура централизованного арбитража, которая возможна во время предыдущего доступа (скрытый арбитраж).
На рис. 2.24 показана временная диаграмма арбитража.
CLK
REQ#A
REQ#B
GNT#A
GNT#B
FRAME#
AD(31-0)
Рис. 2.24. Временная диаграмма арбитража
Диаграмма иллюстрирует взаимодействие двух агентов А и В на шине PCI. Вначале агент А устанавливает первым запрос REQ#A на управление шиной, поступающей в арбитр, и получает к ней доступ с приходом сигнала GNT#A от арбитра. С этого момента времени агент А формирует FRAME# и начинает передачу данных на шине. Сигнал REQ#A удерживается агентом, который желает продолжить событие на шине. Когда FRAME# агента А установлен, арбитр принимает запрос REQ#B агента В и сбрасывает сигнал GNT#A. С поступлением этого сигнала агент А заканчивает передачу данных на шине и снимает сигналы FRAME# и IRDY# (освобождает интерфейс).
При наличии сигнала арбитра GNT#B активного (низкого) уровня и при выполнении условия освобождения интерфейса агентом А (сигналы FRAME# и IRDY# имеют пассивный уровень) управление интерфейсом получает агент В. Если запрос REQ#B агента В снят, то это указывает арбитру на завершение события на шине агентом В и арбитр обслуживает запрос агента А. Арбитр может снять GNT# какого-либо агента В в любое время, если установлен более приоритетный запрос REQ# другого агента.
82
Многоуровневая система шин
Шина PCI реализует циклы подтверждения прерывания. Временная диаграмма цикла подтверждения прерывания показана на рис. 2.25.
Временная диаграмма выполняется при реализации инициатором команды подтверждения прерывания (0000) после получения сигнала запрета прерывания. В фазе адреса инициатор передает произвольное значение адреса и код команды (0000), а в фазе данных исполнитель устанавливает вектор (младший байт), разрешение которого определяется инициатором (1000). Исполнитель должен направить вектор инициатору, когда установлены TRDY# и DEVSEL#.
На шине PCI выполняется контроль четности всеми агентами в фазах адреса и данных, причем сигналы С/ВЕ(3-0)# участвуют также при контроле. Сигнал PAR формируется агентом, который управляет AD(31-0), и отстает на один такт от адреса или данных. На рис. 2.26 изображена временная диаграмма контроля четности при выполнении операций чтения и записи данных.
Базовая шина PCI	83
Во время выполнения операции чтения инициатор вырабатывает сигнал PAR# для информации, устанавливаемой во время фазы адреса (t3), и при записи для информации фазы адреса (t7) и данных (tj, а исполнитель формирует PAR# во время ввода данных (t5) в инициатор. В случае обнаружения ошибки паритета агент устанавливает сигнал PERR#.
Рассмотрим некоторые требования, предъявляемые к устройствам шины PCI. В качестве формирователей (приемников) сигналов шины следует использовать элементы, которые не потребляют ток в статическом состоянии, а потребляют его в моменты переключения. К таким элементам относятся КМОП (комплиментарные полевые кремниевые элементы), позволяющие существенно снизить потребление устройством энергии. Для построения интерфейсных схем (контроллеров) можно использовать программируемые логические интегральные схемы (ПЛИС), изготовленные по технологии КМОП, например ПЛИС фирмы Xilinx, или отечественные аналоги, выпускаемые Воронежским НИИЭТ.
Во внешней плате, подключаемой через слот (разъем) к шине PCI, большую часть тока потребляют подтягивающие резисторы (2,7 К при напряжении 5 V), стабилизирующие значения сигналов шины PCI. В слоте шины PCI имеются два контакта: PRSNT1# и PRSNT2#, коды на входах которых используются для индикации внешней платы в слоте и определения потребляемой мощности платой. Например, код 00 указывает, что внешняя плата присутствует и потребляемая мощность 7,5 W максимум. Таким образом, внешняя плата должна указывать максимальную потребляемую мощность. Слоты подключаются к четырем шинам питания: 5 V, 3,3 V, 12 V и -12 V. Максимальная потребляемая мощность каждой внешней платы равна 25 W. Формирователи должны иметь выходной ток низкого уровня (без резистора) - 3 мА или 6 мА с резистором. Максимальная емкость вывода компонента равна 10 пФ, и максимальная длина дорожки от соединителя платы до элемента - не более 3,8 см. Шинный сигнал должен быть ограничен одной нагрузкой.
Стандарт шины PCI предусматривает наличие отдельного адресного пространства конфигурации, используемого специальными программами. Для выполнения автоконфигурации, обработки катастрофических ошибок, инициализации устройств и мостов, подключенных к шине PCI, каждому устройству отводится 256-байтная память, имеющая следующий формат заголовка конфигурации (рис. 2.27).
В формате заголовка первые 16 байт являются стандартными для PCI-устройств, а следующие 48 байт могут иметь различные размещения в зависимости от базовых функций этих устройств. Специфические (произвольные) сведения об устройствах записываются в байтах памяти конфигурации в диапазоне 64-256.
Идентификаторы устройства и изготовителя определяют соответственно тип (номер) устройства и его изготовителя.
В поле состояния (16-битном регистре состояния) отмечаются события, происходящие на шине PCI. например установка устройством сигнала SERR# (системная ошибка), обнаружение устройством ошибки паритета (PAR), завершение целью транзакции с ошибкой (адресат-аборт), завершение мастером операции, на которую не отвечает цель (мастер-аборт) и т. д. Транзакция - событие на шине, состоящее из фазы адреса и одной или нескольких фаз данных.
Поле команды (16-битный регистр команды) выполняет некоторое управление работой устройства и использует младшие 10 битов, в которых разрешают-
84
Многоуровневая система шин
Рис. 2.27. Формат заголовка конфигурации
ся или запрещаются доступы к вводу-выводу, шине PCI, памяти, регистрам палитры видеоадаптера типа VGA и задаются другие функции управления.
Коды класса устройств содержат коды базового класса (старшие байты со смещением OBh). которые на крупном уровне определяют классы устройств.
Различают следующие классы устройств и их коды: контроллеры запоминающих устройств (Olh), сетевые контроллеры (02h), дисплейные адаптеры (03h), мультимедийные устройства (04h), контроллеры памяти (05h) и мосты (06h).
Средний байт (смещение OAh) кода класса содержит код подкласса устройств. Например, для базового класса Olh контроллеру SCSI соответствует подкласс 00h, контроллеру IDE - подкласс Olh. контроллеру гибкого диска - подкласс 02h и т. д.
Младший бит (смещение 09h) определяет интерфейс программирования на уровне регистра. Обычно этот байт равен 00h.
Базовый класс мостов (код 06h) имеет следующие подклассы: главный мост (00h), ISA-мост (Olh), EISA-мост (02h), МС-мост (03h), PCI-PCI-мост (04h) и прочие.
Базовая шина PCI
85
Номер версии задается изготовителем и может рассматриваться расширением номера устройства. Управление встроенным тестом, если он есть, осуществляется содержимым соответствующего регистра формата заголовка конфигурации. Кроме того, в этом регистре отмечаются результаты тестирования (биты завершения).
Тип заголовка указывает, является ли данное устройство однофункциональным или многофункциональным, и определяет структуру всех остальных байтов формата заголовка, начиная с адреса 1 Oh. Для приведенного формата заголовка код типа заголовка равен 00h.
Таймер, входящий в состав заголовка, подсчитывает число тактов шины РС1 и определяет время, выделенное мастеру, для освобождения шины при наличии других запросов на захват шины.
Размер кэша задается числом 32-битных данных и необходим с целью определения границы пакетной передачи данных.
Базовые адреса позволяют определить наличие различных устройств, присоединяемых к шине PCI, объем используемой памяти, адресное пространство контроллеров ввода/вывода. Шесть 32-битных регистров отведены под базовые адреса, начиная со смещения 1 Oh. Бит О в базовых регистрах указывает на его отношение к памяти (О) или вводу/выводу (1). В базовом регистре памяти указываются расположение базового адреса, например в 32-битных или 64-битных адресных пространствах, и значение базового адреса. Значение базового адреса ввода/вывода хранится в соответствующем регистре базового адреса с битом О, равным 1.
Смещение 30h указывает на базовый адрес расширения ПЗУ и разрешение дешифрации адреса.
Регистр установки таймера (2 байта) предназначен для задания длительности пакетного периода и частоты доступа к шине PCI. В регистре вывод прерывания (8 бит) определяет, какой сигнал прерывания используется устройством, например значение 1 соответствует сигналу INTA#, значение 2 - сигналу INTB# и т. д. Регистр линии прерывания хранит информацию о соединении вывода прерывания устройства со входом системного контроллера прерывания, то есть сообщается номер запроса системного контроллера прерывания.
Выбор адресного пространства конфигурации любого устройства PCI выполняется с помощью интерфейсного сигнала IDSEL. Сигнал IDSEL формирует главный мост (дизайнер системы) или мост PCI-PCI, и этот сигнал достоверен (устойчив) только в первом такте CLK установки сигнала FRAME# (в фазе адреса) при выполнении команды конфигурации. Для расширения числа подключаемых к шине устройств предусмотрена возможность соединения вывода IDSEL через резистор с одной из старших адресных линий (не используемых при доступе к памяти конфигурации) для выбора соответствующего устройства PCI. Каждый сигнал IDSEL выбирает соответствующее ему устройство PCI.
Временная диаграмма чтения памяти конфигурации представлена на рис. 2.28.
Так как шины PCI могут быть иерархического типа, состоящего из нескольких шин, разделенных мостами, то предусмотрены два типа доступа (041) со стороны моста (главного или PCI-PCI) к устройствам (целям) PCI. При доступе типа 0 (в пределах одной шины PCI) мост содержит два порта: 32-битный регистр адреса конфигурации (CF8h) и 32-битный регистр данных конфигурации (CFCh), с помощью которых выполняется обращение к памяти конфигурации устройства PCI. В регистре адреса конфигурации биты DTD0, равные значениям 00, определяют тип доступа 0. Биты D7-D9 задают номер регистра памяти кон-
86
Многоуровневая система шин
фигурации, биты Dlo-D8 - номер функции, если устройство PCI многофункциональное, и биты D15-Du - номер устройства PCI, который может быть преобразован только в одно единичное значение в фазе адреса на одной из линий AD31-ADM (сигнал IDSEL). Разъем шины PCI показан на рис. 2.29, в котором для удобства размещения номера выводов представлены в двух колонках.
Для подключения ПУ к шине PCI фирмой PLX Technology разработан однокристальный контроллер PCI9060 широкого назначения. На рис. 2.30 показана общая схема подключения необходимых компонентов к PCI 9060.
PCI 9060 выполняет режим мастера или исполнителя и предназначен для сопряжения с ПУ, в качестве которых могут быть использованы адаптеры (периферийные процессорные системы). Скорость передачи данных в режиме мастер равна 132 Мбайтам/с.
PCI 9060 поддерживает 32-, 16- или 8-битные раздельные или мультиплексные локальные шины. К шине PCI контроллер подключается без использования внешних формирователей и может устанавливать от нескольких источников запрос на прерывание по шине PCI или по локальной шине, работающей асинхронно по отношению к шине PCI, кроме того, к контроллеру через последовательный интерфейс подключается ППЗУ для передачи информации о конфигурации и инициализации микросхемы PCI 9060, выполненной по технологии КМОП и имеющей 208-выводной пластиковый корпус типа QFP.
2.4. Интерфейс SCSI
SCSI (Small Computer System Interface, системный интерфейс малых компьютеров) - параллельный универсальный высокоскоростной мультиплексированный интерфейс ввода/вывода со шлейфовым кабельным соединением большого спектра устройств (рис. 2.31).
Интерфейс SCSI	87
Ряд В	Номер	РядА	Ряд В	Номер	РядА
-12 В	1	-TSTRES	-С/ВЕЗ	26	IDSEL
Test Clock	2	+ 12 В	AD 23	27	+3,3 В
GND	3	TSTMSLCT	GND	28	AD 22
Test DO	4	Test DO	AD 21	29	AD 20
+5 В	5	+5 В	AD 19	30	GND
+5 В	6	-INTRA	+3,3 В	31	AD 18
-INTRB	7	-INTRC	AD 17	32	AD 16
-INTRD	8	+5 В	-C/BE 2	33	+3,3 В
-PRSNT1	9	Reserved	GND	34	-FRAME
Resen/ed	10	+VI/O	-IRDY	35	GND
-PRSNT2	11	Resen/ed	+3,3 В	36	-TRDY
GND/Ключ	12	GND / Ключ	-DEVSEL	37	GND
GND/Ключ	13	GND / Ключ	GND	38	-STOP
Resen/ed	14	Reserved	-Lock	39	+3,3 В
GND	15	-RST	ParityER	40	SDONE
Clock	16	+V I/O	+3,3 В	41	-SBOFF
GND	17	-GNT	SysERR	42	GND
-REQ	18	GND	+3,3 В	43	PAR
+V I/O	19	Resen/ed	-C/BE 1	44	AD 15
AD31	20	AD 30	AD 14	45	+3,3 В
AD 29	21	+3,3 В	GND	46	AD 13
GND	22	AD 28	AD 12	47	AD 11
AD 27	23	AD 26	AD 10	48	GND
AD 25	24	GND	GND	49	AD 9
+3,3 В	25	AD 24	GND / Ключ	50“	GND/Ключ
GND/Ключ	51““	GND / Ключ	GND	73	AD 56
AD 8	52	-C/BE	AD 55	74	AD 54
AD 7	53	+3,3 В	AD 53	75	+V I/O
+3,3 В	54	AD 6	GND	76	AD 52
AD 5	55	AD 4	AD 51	77	AD 50
AD3	56	GND	AD 49	78	GND
GND	57	AD 2	+V I/O	79	AD 48
AD1	58	ADO	AD 47	80	AD 46
+V I/O	59	+V I/O	AD 45	81	GND
-ACK 64	60	-REQ 64	GND	82	AD 44
+5 В	61	+5 В	AD 43	83	AD 42
+5 В	62	+5 В	AD 41	84	+V I/O
			GND	85	AD 40
			AD 39	86	AD 38
Resen/ed	63	GND	AD 37	87	GND
GND	64	-C/BE 7	+V I/O	88	AD 36
-C/BE	65	-C/BE 5	AD 35	89	AD 34
-C/BE	66	+V I/O	AD 33	90	GND
GND	67	PAR 64	GND	91	AD 32
AD 63	68	AD 62	Resen/ed	92	Reserved
AD 61	69	GND	Resen/ed	93	GND
+V I/O	70	AD 60	GND	94	Reserved
AD 59	71	AD 58			
AD 57	72	GND			
Примечание: *12, 13 - ключ для 3,3 В, **50, 51 - ключ для 5 В					
Рис. 2.29. Разъем шины PCI					
88
Многоуровневая система шин
Рис. 2.30. Общая схема подключения компонентов к PCI 9060
Хост-адаптер (главный) предназначен для подключения процессора к шине SCSI. В общем структура может содержать несколько хост-адаптеров. Хост-адаптер управляет шиной SCSI, взаимодействует с широким спектром периферийных устройств и устанавливается инициатором (активным устройством), которое организует совместную работу с каким-либо исполнителем (периферийным устройством: жестким диском, лазерным принтерам. CD-ROM’om, сканером. Каждый исполнитель содержит адаптер SCSI и контроллер самого периферийного устройства. Хост-адаптер освобождает системный процессор от рутинной работы по выполнению операций соответствующего внешнего устройства, то есть реализует большое количество команд.
Функциональные признаки шины SCSI:
1.	Дисциплина обслуживания - многозвенная коммутация информационного канала.
Интерфейс SCSI
89
2.	Тип коммутации - временной (устанавливается между инициатором и исполнителем).
3.	Арбитраж - фиксированный.
4.	Способ передачи слов (байт) и битов - последовательно-параллельный.
5.	Временное согласование - асинхронное или синхронное.
6.	Структура информации данных - команда, адреса и данные, сообщения, блоки информации специального формата.
7.	Режим обмена - программный (безусловный и условный с опросом байта состояния) и прямой доступ к памяти.
8.	Мультиплексирование - совмещение адреса, данных, команд и состояния.
9.	Вид передачи с учетом направления - полудуплексный и симплексный.
10.	Представление сигналов на шине - инверсным универсальным сигналом.
11.	Контроль данных - чет или избыточный циклический код (CRC).
12.	Контроль окружения - проверка разъемов, плат.
13.	Фазы (режимы) шины - шина свободна, арбитраж, выбор, передача информации (команд данных, состояния или сообщения).
Для функциональной классификации интерфейса SCSI используются признаки, представленные в разделе 2.1 и позволяющие осуществить сравнение интерфейсов между собой. Кратко поясним назначение некоторых из них. В общих случаях шина SCSI имеет многозвеньевуто коммутацию информационного канала. Кроме того, наличие удлинителей и коммутаторов позволяет создавать сетевые соединения SCSI-устройств. Многозвенную коммутацию информационного канала реализует и последовательная универсальная шина USB, которая с помощью хабов (расширителей) образует древовидные соединения (домашние сети), содержащие USB-устройства.
Временной тип коммутации определяет то, что при обмене данными на шине SCSI только одно устройство является инициатором, а другое - исполнителем, то есть сеанс связи с устройствами SCSI выполняется временным способом.
Как уже отмечалось, при наличии нескольких инициаторов, подключенных к шине, для захвата управления шиной одним из них выполняются фазы (операции) арбитража. Для осуществления этой части каждому устройству SCSI присваивается фиксированный индентификатор ID из диапазона 7-0, определяющий приоритет и адрес устройства. Захват шины может выполнять и цель в фазе «Перевыборка».
Шина SCSI является параллельной 8-, 16- или 32-разрядной шиной, по которой данные передаются последовательно по словам и параллельно по разрядам.
В шине SCSI выполняется асинхронная передача данных с использованием сигналов квитирования ACK# и REQ#.
В режиме ввода данных исполнитель устанавливает их на шину и сигнал REQ#. Данные удерживаются на шине, пока инициатор не передаст сигнал подтверждения ACK# (рис. 2.32).
В режиме вывода исполнитель устанавливает сигнал запроса REQ#, указывающий, что исполнитель может принять данные. Инициатор передает данные и сопровождает их сигналом АСК#. Данные удерживаются инициатором до тех пор, пока исполнителем не будет снят сигнал REQ# (рис. 2.33).
Синхронный режим заранее должен быть установлен для инициатора и исполнителя. В этом режиме исполнитель не ожидает появления сигнала ACK# для формирования сигнала REQ# перед приемом данных. Предварительно с помощью соответствующего сообщения при выполнении синхронного режима в исполнителе задаются число запросов REQ# без ожидания ACK# и период пе-
90
Многоуровневая система шин
Инициатор	Исполнитель
Момент записи данных в исполнителе
Рис. 2.32. Асинхронный режим ввода данных
Момент записи данных в исполнителе
Рис. 2.33. Асинхронный режим вывода данных
редачи (интервал времени) каждого байта. Сигналы ACK# передаются, но служат только для установления факта равенства числа REQ# и числа АСК#. Структура информации (данных), передаваемой по шине SCSI, определяется типом устройства, которому направляются эти данные. Например, если к шине SCSI подключен жесткий диск, то используется соответствующая структура блока данных и команд. Для устройств прямого доступа данные на шине SCSI передаются блоками. Поэтому в командах записи и чтения данных указываются логический номер блока (адрес) и количество передаваемых данных.
Команды имеют многобайтовую структуру, то есть содержат блоки описания команд (блоки дескрипторов), причем за некоторыми командами могут следовать блоки (байты) параметров, передаваемых в фазе данных.
Число байтов в командах равно 6, 10 или 12 и определяется кодом операции (первым байтом) команды. Например, для жесткого диска некоторые коды операций имеют следующие 16-ричные значения:
04 (форматирование), 28 (чтение), 2А (запись), 2В (поиск) и т. д.
В байтах команды Запись указываются:
байт 0 - код операции 2А:
байт 1 - номер логического устройства (биты 5 и 6) и номер (адрес) логического блока (байты 1-4);
Интерфейс SCSI
байт 2 - номер логического блока;
байт 3 - номер логического блока;
байт 4 - длина передачи (списка параметров биты 2-5);
байт 5 - флаг (бит 1), признаки связи команд в цепочку.
Система команд шины SCSI представлена на рис. 2.34.
Различают однобайтовые, двухбайтовые и расширенные сообщения. Каждое сообщение начинается с кода. Приведем некоторые 16-ричные значения однобайтовых сообщений:
00h (In) - процесс ввода/вывода завершен (Command Complete);
04h (In) - текущее соединение разрывается (Disconnect);
05h (Out) - синхронизация обнаружила ошибку (Error);
09h (Out) - последний байт принят с неверным паритетом (Parity Error);
OCh (Out) - сброс цепи и освобождение шины (Device Reset);
ODh (Out) - сброс текущего процесса (Abort Tag) и т. д.
Обозначение In указывает на ввод сообщения в инициатор, a Out - на вывод сообщения из инициатора. Инициатор с помощью сообщения Disconnect выполняет разрыв соединения или сброс текущего процесса (сообщение Aborting). Таким образом, с помощью сообщений организуется совместная сложная работа различных устройств на шине SCSI.
С использованием расширенных сообщений задаются:
•	параметры синхронного режима (первый байт определяет период посылки, а второй байт - допустимое смещение (отставание) REQ#/ACK#);
•	разрядность данных (1 байт, 2 байта, 4 байта) и т. д.
92
Многоуровневая система шин
Однокристальный хост-адаптер шины SCSI имеет программное обеспечение, управляющее работой периферийных устройств, подключенных к шине SCSI, и средства сопряжения с системным процессором, предусматривающие программный обмен и (или) обмен в режиме прямого доступа.
Интерфейс SCSI содержит 8( 16)-разрядную шину данных DB7-DB0 (DB15-DB0), которая используется в мультиплексном режиме для дуплексной передачи адресов, данных, состояния и сообщений.
В зависимости от представления сигналов битов данных различают следующие интерфейсы SCSI:
•	с сигналами ТТЛ (SE - Single Ended);
•	с низковольтными дифференциальными сигналами (LVD - Low Voltage Differential);
•	с высоковольтными дифференциальными сигналами (HVD - Low Voltage Differential).
Уровень представления сигнала на шине влияет на тип кабеля, его длину, качество линий связей (проводников) и тип разъема.
Приняты следующие обозначения типов разъемов (кабелей) шины SCSI (рис. 2.35).
Рис. 2.35. Обозначения разъемов SCSI
Интерфейс SE (асимметричный линейный) использует для каждого сигнала свой провод, передатчик, приемник и один общий провод (рис. 2.36).
передатчик	г	риемник
	 е		
Входной	Выходной
сигнал ТТЛ —		г>		 сигнал ТТЛ
Рис. 2.36. Линия интерфейса SE	
Недостатком интерфейса SE является низкая помехозащищенность от электрических наводок. Поэтому для высокоскоростной передачи данных применяют интерфейс LVD (рис. 2.37), в котором каждый сигнал передается по двум проводам (один провод - для прямой передачи сигнала, а другой - для передачи его дополнения).
Интерфейс SCSI
Дифференциальный приемник
Дифференциальный передатчик
Рис. 2.37. Дифференциальная линия интерфейса LVD
Дифференциальный принцип передачи существенно увеличивает помехоустойчивость к синфазным помехам (помехам, совпадающим по фазе и воздействующим на оба провода D+ и D-) и позволяет увеличить длину кабеля SCSI.
Для совместимости приоритетов SE, LVD и HVD разрабатываются различные преобразователи, например LVD/SE.
Контроль правильности передачи данных выполняется с помощью проверочного подсчета условия четности или с использованием циклического избыточного кода (стандарт Ultra 160/m SCSI), позволяющего обнаруживать все одиночные и двойные различные ошибки, нечетное число ошибок и ошибки пакета длиной до 32 разрядов. В стандарте Ultra 160/m SCSI увеличивается скорость передачи данных до 160 Мбайт/с, используется двойная синхронизация при передаче данных (передний и задний фронты синхросигналов) и предусматривается контроль окружения (проверка кабелей, терминаторов, разъемов пути применения автоматического тестирования).
Подключение устройств к шине SCSI
До появления шины SCSI периферийные устройства подключались к центральному процессору через слоты расширения, например к системной шине ISA, реализованной в виде печатных проводников материнской платой (рис. 2.38).
Шина SCSI выполняет ту же функцию подключения устройств к центральному процессору, но использует гибкий шлейф с разъемами (рис. 2.39).
В шине SCSI каждому устройству присваивается свой индентификатор ID (приоритет). Наивысший приоритет (7) имеет хост-адаптер, а низкий приоритет соответствует 0.
SCSI-устройства (индикаторы) подключаются к шине и используют свои ID в фазе арбитража с цепью захвата шины. Управление шиной получает тот инициатор, который имеет больший ID. SCSI-устройство может быть исполнителем, инициатором или инициатором и исполнителем, но в какой-то момент обмена данными одно устройство является всегда инициатором, а другое - исполнителем или целью, то есть обмен данными возможен только между двумя устройствами (рис. 2.40).
В 8-битной шине SISI хост-адаптер имеет ID=7, а остальным семи устройствам присваиваются номера ID из оставшегося диапазона 6-0. В 16-битной шине хосту-адаптеру присваивается ID=15 и т. д.
Кроме того, номер ID используется для адресации (выбора) соответствующего устройства на шине. Таким образом, ID образует (идентифицирует) устройство в фазе обмена данными и определяет его приоритет в фазе арбитража.
94
Многоуровневая система шин
Интерфейс SCSI
95
Шина SCSI DB7-DB0/DB15-DB0/DB31-DB0
Устройство SCSI может содержать 8 логических блоков (ЛБ), а каждый ЛБ - 256 субблоков. Каждый логический блок имеет свой LON (Logicoc Unit
Логический блок О
Логический блок 7
Number)
Рис. 2.40. Схема подключения устройств к шине SCSI
Адрес (ID) задается установкой джампера, переключателя или программной конфигурацией. Каждая фирма присваивает свой ID устройствам. Все устройства должны иметь ID. Чем больше ID, тем выше приоритет (рис. 2.41).
96	Многоуровневая система шин
Шлейфовое соединение SCSI-устройств требует установки терминаторов для надежной работы шины.
Терминатор - заглушка (резисторы), подключаемая к оконечному устройству или оконечным устройствам шлейфового (кабельного) соединения с целью подавления отраженных сигналов в высокочастотных линиях связи при передаче данных и «подтягивания» высокого уровня сигналов.
Различают активные и пассивные терминаторы. Активные терминаторы содержат резисторы, значения которых равны 121 и 154 Ом, и микросхему, например 1086ЬТ(рис. 2.42).
Рис. 2.42. Активный терминатор
Активный терминатор применяется, если используется длинный шлейф и подключаются несколько устройств. В этом случае микросхема 1086LT является усилителем мощности сигнала. Активный терминатор встраивается непосредственно в SCSI-устройство и может быть включен (on) или выключен (off) с помощью переключателя «Termination» или программным способом. Пассивный терминатор обычно применяется при подключении одного или двух устройств и содержит только резисторы для согласования каждой линии (рис. 2.43).
Линия SCSI
R1 121 Ом
—ЕЕ R2 154 Ом
Рис. 2.43. Пассивный терминатор
Интерфейс SCSI
97
Терминаторы иногда устанавливаются на разъемах внешних кабелей SCSI. Поэтому такие терминаторы называются внешними.
Некоторые устройства не имеют встроенных терминаторов. Тогда используются различные выпускаемые фирмами терминаторы, подключаемые в конце цепочки к шине SCSI. Существуют универсальные терминаторы, которые содержат разъем для подключения блока питания и светодиод, который, включаясь, указывает на необходимость подключения блока питания.
Если светодиод не включен, то терминатор работает как обычный пассивный элемент согласования. Итак, при использовании шины SCSI выполняются внутреннее и внешнее подключения SCSI-устройств. Некоторые SCSI-устройства устанавливаются внутри компьютера и соединяются с помощью шлейфа и внутренних разъемов, а другие SCSI-устройства подключаются к компьютеру с внешней стороны при помощи кабеля и внешних разъемов (рис. 2.44).
б
КОМПЬЮТЕР
Рис. 2.44. Способ подключения SCSI-устройств: а) внутренний; б) внешний
98
Многоуровневая система шин
Плата хост-адаптера имеет разъемы шины SCSI: 50-контактные разъемы для внутреннего и 50-кантактный разъем для внешнего подключения устройств SCSI (рис. 2.45).
Внешние разъемы SCSI, размещенные на корпусе компьютера, имеют гнездовой тип, а штыревая часть находится на разъеме SCSI-кабеля.
Для подключения принтера применяется 50-контактный разъем Centronics. Существуют толстые и тонкие кабели с разъемами Centronics. Толстый кабель используется для шины SCSI-2 и SCSI-1, а тонкий - только для SCSI-1.
Широко применяется кабель, с одной стороны которого употребляется миниатюрный разъем DB-50, а с другой - 50-контактный разъем Centronics. Существуют и другие типы кабелей с разъемами, например НР-50 или 68-контактные разъемы для SCSI-3 и т. д.
В связи с развитием шины SCSI (наличием разных стандартов) для их совместимости выпускаются различные типы кабелей, разъемы (50-50), (50-68), (68-68), (80-50) и (80-80), переходные адаптеры и терминаторы.
Сигналы шины SCSI
Рассмотрим основные (базовые) сигналы шины SCSI. В спецификации SCSI-1 определено 18 сигналов, а в спецификации SCSI-2 -уже 29 сигналов. Втабл. 2.5 приведены обозначения сигналов для 68-контактного разъема (HD-68 SCSI-2,3), причем указываются сигналы для двух вариантов: дифференциального (двухпроводного) и однопроводного (для сигналов с уровнями ТТЛ).
Все сигналы шины SCSI имеют низкий активный уровень, который обозначается значком #. Сигналы данных передаются по линии Data Bit (DB7-DB0 и DB15-DB0 соответственно для 8- и 16-разрядной шины SCSI). Сигнал Контроль четности устанавливается на линии Parity BitO. Квитирующий сигнал Запрос (REQ - Request) формируется целью при обмене данными по линии DB15-DB0 (DB7-DB0). Инициатор вырабатывает активирующий сигнал Подтверждение (АСК-Acknowledge) в этом же режиме обмена данными.
Интерфейс SCSI
99
Таблица 2.5					
Номер	Дифференциальный Сигнал ТТЛ		Номер	Дифференциальный	Сигнал ТТЛ
контакта	сигнал		контакта	сигнал	
1	+ Data Bit 12	Ground	35	- Data Bit 12	Data Bit 12 #
2.	+ Data Bit 13	Ground	36	- Data Bit 13	Data Bit 13 #
3.	+ Data Bit 14	Ground	37	- Data Bit 14	Data Bit 14 #
4	+ Data Bit 15	Ground	38	- Data Bit 15	Data Bit 15 #
5.	+ Parity Bit 1	Ground	39.	- Parity Bit 1	Parity Bit 0 #
6.	+ Data Bit 0	Ground	40	- Data Bit 0	Data Bit 0 #
7	+ Data Bit 1	Ground	41	- Data Bit 1	Data Bit 1 #
8.	+ Data Bit 2	Ground	42	- Data Bit 2	Data Bit 2 #
9.	+ Data Bit 3	Ground	43.	- Data Bit 3	Data Bit 3 #
10.	+ Data Bit 4	Ground	44.	- Data Bit 4	Data Bit 4 #
11.	+ Data Bit 5	Ground	45.	- Data Bit 5	Data Bit 5 #
12.	+ Data Bit 6	Ground	46.	- Data Bit 6	Data Bit 6 #
13.	+ Data Bit 7	Ground	47.	- Data Bit 7	Data Bit 7 #
14.	+ Parity Bit 0	Ground	48.	- Parity Bit 0	Parity Bit 0 #
15.	Ground	Ground	49.	Ground			Ground
16.	Diffsens	Ground	50.	Ground	Ground
17.	Term-n Power	Term-n Power	51.	Term-n Power	Term-n Power
18.	Term-n Power	Term-n Power	52.	Term-n Power	Term-n Power
19.	Reserved	Reserved	53	Reserved	Reserved
20.	Ground	Ground	54	Ground	Ground
21.	+ Attention	Ground	55	- Attention	
22.	Ground	Ground	56	Ground	Ground
23.	+ Busy	Ground	57	- Busy	Busy#	
24.	+ Acknowledge	Ground	58	- Acknowledge	Acknowledge #
25.	+ Reset	Ground	59	- Reset	Reset #
26.	+ Message	Ground	60.	- Message	Message #
27.	+ Select	Ground	61	- Select	Select #
28.	+ Con/Data	Ground	62	- Con/Data	Con/Data #
29.	+ Request	Ground	63.	- Request	Request #
30.	+ lnput/Outpt	Ground	64.	-Input/Output	Input/Output#
31.	+ Data Bit 8	Ground	65.	- Data Bit 8			Data Bit 8 #
32.	+ Data Bit 9	Ground	66.	- Data Bit 9	Data Bit 9 #
33.	+ Data Bit 10	Ground	67.	- Data Bit 10	Data Bit 10 #
34.	+ Data Bit 11	Ground	68.	- Data Bit 11	Data Bit 11 #
Сигнал Занято (BSY - Busy) устанавливается инициатором или целью с цепью сообщения другим устройством, что шина занята.
Сигнал Сброс (RST- Reset) вырабатывается любым устройством для приведения шины в начальное состояние.
Сигнал Внимание (ATN - Attention) формируется инициатором.
Сигнал Управления/Данные (C/D - Control/Data) устанавливается целью и указывает, какая информация находится на шине данных - управления или данных.
Сигнал Сообщение (MSG - Message) вырабатывается целью для сведения о том, что на шине данных содержится информация типа сообщения.
100
Многоуровневая система шин
Сигнал Выбор (SEL - Select) применяется инициатором для выбора исполнителя или целью для перевыборки инициатора.
Сигнал Дифференциальный (DIF - Diffsens) используется для разрешения работы дифференциальных приемопередатчиков.
Сигнал Ввод/Вывод (I/O - Input / Output) формируется целью и указывает на направление передачи данных по линиям DB (I - ввод в инициатор, а О - вывод данных из него).
Линия Termpwr - питание согласующих резисторов (терминаторов), установленных на обоих каналах шины.
Фазы шины SCSI (рис. 2.46)
Перед началом работы шины SCSI каждое устройство получает свой идентификатор ID, задающий адрес этого устройства и его приоритет. Обычно более медленные устройства получают и более высокий приоритет. Это сделано для того, чтобы более быстрое устройство (например, жесткие диски) не выключало из процесса работы медленные устройства из-за наличия фиксированного (неравноправного) приоритета.
По сигналу системного сброса или интерфейсному сигналу RST шина переходит в фазу (состояние) «Шина свободна» (рис. 2.16). Признаками, характеризующими эту фазу шины, является пассивное состояние (высокие уровни сигналов) сигналов BSY# =1 и SEL# =1, то есть эти сигналы указывают, что устройства на шине не работают.
Если какое-либо устройство мешает работать на шине, то выполняется фаза «Арбитраж», которая характеризуется установкой сигнала BSY # активным низким уровнем и IDI = 0 на линию DBi #. Фаза «Арбитраж» выполняется после того, как устройство, например инициатор, определило по сигналам BSY # = 1 и SEL # = 1, что шина свободна. Может случиться, что в фазе «Арбитраж» несколько устройств требуют доступа к шине. В этой фазе магистральная (общая) линия BSY # = 0 сообщает, что одно или несколько устройств желают захватить шину. Арбитраж выигрывает то устройство, у которого больше ID, то есть каждое устройство сравнивает свой ID с другими ID, установленными на шине DB. Напомним, что ID = 7 (DB7 # = 0) имеет высший приоритет, a ID = 0 (DB # = 0) - низкий. В фазе «Выбор» инициатор осуществляет выбор цели, чтобы передать ему байты команды, например команды Чтение или Запись. Для выполнения этой фазы инициатор вырабатывает сигнал SEL # = 0 и устанавливает IDJ на линию DBJ # = 0 (адрес требуемой цели).
Фаза «Перевыбор» осуществляется, когда цель желает восстановить связь с инициатором, который раньше передал ему команду. В этой фазе цель устанавливает сигналы SEL # =0 и I/O # = 0. В фазах «Команда», «Ввод данных», «Вывод данных», «Сообщение ввод», «Сообщение вывод», «Состояние» цель формирует соответствующие сигналы I/O#, C/D# и MSG#, то есть устанавливает запрос на передачу соответствующей информации со стороны инициатора (табл. 2.6).
В фазе «Команда» в соответствии с табл. 2.6 цель устанавливает сигналы запроса на передачу команды, и инициатор направляет 6, 10 или 12 байт команды.
Фазы «Ввод данных» и «Вывод данных» выполняются также по соответствующим запросам цели и реализуются с учетом временных диаграмм (рис. 2.32 и 2.33).
В фазе «Сообщение ввод» цель может указывать на успешность завершения передачи данных или на наличие ошибки.
Интерфейс SCSI
101
BSY#=1
SEL#=I
Устройство:
BSY# = 0
ID—>DB#
Устройство выигрывает арбитраж, если его ID - наибольший
Инициатор:
SEL# = O
ID->DB # = 0 (установка адреса требуемою j-ю устройства)
Цель:
I/O # = О
C/D# = I
MSG# = О
Вывод инициатором п байтов команды
Цель:	DB# —\	}----
1/0# =1	req#
C/D# = О
MSG# = О	АСК *
Цель:	DB #
1/0# =1
C/D#=l	REQ#
MSG# = 1	АСК#
Процесс ввод/вывода завершен (код OOh - Command Complcctc)
Цель:	Инициатор обнаружил
I/O # = 0	ошибку на шине
C/D# = 1 (код o5h - Initiator Detected)
MSG# = I
Инициатор:
ATN# = O
Рис. 2.46. Фазы шины SCSI
Если инициатор устанавливает сигнал ATN # = О, то это означает для цели, что следующей фазой будет «Вывод сообщения». Сигналы ATN# и RST# изменяют порядок фаз шины, причем RST# вводится в любой момент времени любым устройством, a ATN# - в любую фазу, кроме «Арбитража» и «Шина свободна».
102	Многоуровневая система шин
Таблица 2.6
Сигналы			Фаза	Направление передачи (И - инициатор, Ц- цель)	
1/0#	C/D#	MSG#			
0	0	0	Вывод данных (Data Out)	И -	
1	0	0	Ввод данных (Data In)	и<	-ц
0	1	0	Команда (Command)	и-	
1 0 1	1 0 0	0 1 1	Состояние (Status) Резерв Резерв	и<-ц	
0	1	1	Вывод сообщения (Message Out)	и-	
1	1	1	Ввод сообщения (Message In)	и<-ц	
Технические характеристики шины SCSI
Скорость передачи данных - 5, 10... до 320 Мбит/с
Разрядность шины - 8. 16. 32
Длина кабеля - 3, 6, 25 м
Количество подключаемых устройств - 8, 16, 32
Количество контактов разъема - 50, 68, 80
Стандарты шины SCSI
Окончательный вариант спецификации SCSI-1 (узкий SCSI) был применен в 1986 г. и, несмотря на целый ряд достоинств, определяемых унифицированным способом подключения разнообразных устройств, содержал серьезные недостатки, связанные с набором команд для различных устройств, с ограниченной разрядностью шины (8 бит) и малой пропускной способностью 5 Мбайт/с. В SCSI -1 использовались 50-контактный разъем и плоский шлейф кабеля.
Дальнейшим развитием шины явился стандарт SCSI-2 (широкая SCSI), в котором была предусмотрена более высокая тактовая частота до 10 МГц (в SCSI-1 тактовая частота была 5 МГц) и увеличен размер шины (16 бит), что привело к необходимости использовать 68-контактный разъем.
Кроме того, разработчикам аппаратуры был предложен стандартизированный набор команд, которые делились на группы: обязательные, команды прямого и последовательного доступов и т. д. Была предусмотрена возможность выполнения цепочки команд (очереди до 256 команд).
В стандарте SCSI-3 предусматривались:
•	двойная синхронизация при передаче данных, используются оба фронта синхросигналов;
•	контроль данных методом CRC (циклического избыточного кода):
•	контроль окружения (контроль кабелей, терминаторов, разъемов и т. д.);
•	низковольтная дифференциальная передача данных.
2.5. Модель шины SCSI
Рассмотрим последовательность действий устройств на шине SCSI при выполнении команды «Читать».
1.	В SCSI-устройстве имеется набор трех команд указателей, которые указывают на текущие байты команды, состояния и данных, то есть с помощью
Модель шины SCSI	103
этих указателей отмечается текущее состояние процесса. Аналогичным образом отмечается состояние прерванной программы в процессе, чтобы можно было вернуться в ту же точку ее выполнения.
2.	Инициатор устанавливает свои указатели и, если фаза «Шина свободна», переходит в фазу «Арбитраж». В этой фазе инициатор получает управление шиной.
3.	В фазе «Выбор» инициатор находит цель и формирует сигнал ATN # с посылкой сообщения «Identify out» (установления связи). Получив сообщение, цель устанавливает свои указатели текущего процесса.
4.	Цель задает фазу «Команда» и принимает от инициатора шесть байт команды «Чтение». Затем цель делает переход на пункт 5-й или на пункт 8-й.
5.	После анализа команды цель переходит в фазу «Ввод данных» и направляет данные инициатору.
6.	Цель устанавливает фазу «Состояние» и посылает байт состояния Good (00h).
7.	Цель в фазе «Сообщение» направляет сообщение «Процесс ввода/вывода завершен» (Command Complete) и освобождает шину.
8.	Если данные не готовы, то цель устанавливает фазу «Сообщение» и посылает сообщение «Disconnect» о разрыве соединения.
9.	При наличии готовых данных цель ждет фазы «Шина свободна».
10.	Цель выполняет фазу «Арбитраж».
11.	Цель получает управление шиной и переходит к фазе «Перевыбор».
12.	Затем цель в фазе «Ввод сообщений» посылает сообщение «Identify», то есть вызывает в инициаторе восстановление сохраненных указателей на продолжение прерванного процесса.
Демонстрационное упражнение
Выполнить ввод байта данных из устройства 3 в устройство 0. Команда «Чтения» - 28h, номер логического блока - 02h. Идентификатор устройства ID0=6, идентификатор устройства 3 ID3=4 (рис. 2.41).
Любое из устройств (уст0-уст3) может быть инициатором или целью (исполнителем).
1.	Задание приоритета (идентификатора) всем устройствам из диапазона: 6, 0, 5, 4.
С помощью мыши и клавиатуры заносим двоичные (можно 16-ричные) коды ID.
2.	Фаза «Шина свободна».
Мышью включается кнопка RST#, и все сигналы на линиях SCSI приобретают высокий пассивный уровень. Фаза «Шина свободна» определяется по сигналам BSY#=1 SEL#=1.
3.	Фаза «Арбитраж». Порядок действия:
3.1.	Фаза «Арбитраж» выполняется после фазы «Шина свободна» SEL# =1 BSY#=1.
3. 2. Со стороны устр0 необходимо с помощью мыши нажать кнопки BSY# и DB6#, то есть сообщить другим устройствам, что шина будет занята и устанавливается приоритетный идентификатор ID.
Устройство сравнивает свой ID=6 с ID других устройств, если они имеются. Выигрывает арбитраж устройство с большим ID, то есть устройство само определяет, является оно хозяином шины или нет. В нашем случае устройство (уст0) получает управление шиной, так как имеет самый большой ID. Предусматривается возможность случайной установки ID от других устройств в фазе «Арбитраж».
104
Многоуровневая система шин
4. Если устройство не выигрывает арбитраж» то оно ожидает фазы «Шина свободна» и повторяет фазу «Арбитраж».
Фаза «Выбор», рис. 2.47.
Принцип работы устройств в фазе «Выбор» следующий:
1. Устройство (устр0)» выигравшее арбитраж» переходит к фазе «Выбор» и устанавливает сигнал SEL# =0 и адрес исполнителя (сигнал DB4# =0). Для модели установка этих сигналов осуществляется с помощью мыши.
2. Другое устройство (уст3)» опознавшее свой адрес» формирует сигналы 1/0# =0» С /D# = 1» MSG# =0 для запроса со стороны инициатора (устр0) байтов команды» то есть для перехода шины в фазу «Команда».
Фаза «Команда»
Принцип действия устройств в фазе «Команда»:
Уст0 - инициатор.
Уст3 - цель (исполнитель).
Из уст0 передаются (выводятся) в уст3 6 байт (Б) команды «Читать». Формат команды «Читать»:
1Б- код операции (коп) 28Ь»
2Б - номер логического блока»
ЗБ-5Б-нули.
Модель шины SCSI
105
Перед выводом 6 байт команды «Читать» моделью проверяется условие выполнения фазы «Команда»: I/O# =0, C/D# =1 и MSG# =0.
Уст3 (исполнитель) после фазы «Выбор» автоматически устанавливает сигналы: 1/0# =0. C/D# =1, MSG# =0 для приема байтов команды (эти сигналы должны уже быть установлены).
Пользователь с помощью мыши и клавиатуры задает значение байтов команды (рис. 2.48).
Рис. 2.48. Фаза «Вывод данных»
После этого выбирается (нажимается) кнопка «Вывод команды», и на экране наблюдается передача 6 байт команды по линиям DB#7 - DB0# в асинхронном режиме, сопровождаемая каждый раз сигналами квитирования REQ# и АСК#. Запись каждого байта команды в уст3 (исполнитель) выполняется по отрицательному (переднему) фронту сигнала АСК#, формируемому устг (инициатором). На рисунке на экране показана передача первого байта 11010111 по линии DB7#, DB6#...Db#0. Затем демонстрируется передача второго байта (06h) и т. д., которые отображаются в уст3 в байтах команды.
Для передачи 1 -го байта команды необходимо предварительно мышью включить кнопку REQ# в соответствии с временной диаграммой асинхронного вывода данных. Затем на линиях DB#7-DB#0 автоматически появляется 1 -й байт
106
Многоуровневая система шин
команды. После этого следует выключить кнопку ACK# и по его отрицательному фронту 1 -й байт команды, принимаемый уст3.
Последовательность действий в фазе «Команда»:
1.	Записать байты соответствующей команды в буфер уст0. В рассматриваемом случае 1 -й байт 28h (код операции «Читать»), 2-й байт 03h (номер логического блока), а остальные байты 00h.
2.	Проверить наличие комбинации сигналов, определяющих фазу «Команда»: I/O# =0, C/D# =1, MSG# =0, установленных уст3 (исполнителем) после фазы «Выбор».
3.	Нажать мышью кнопку REQ# со стороны исполнителя (уст3). Квитирующий сигнал REQ# принимает низкий активный уровень.
4.	Включить мышью кнопку «Вывод команды». При этом на экране линий DB7#-DB0#0 появляются сигналы 1-го байта команды.
5.	Нажать мышью кнопку ACK# уст0. Сформированный сигнал ACK# по отрицательному фронту записывает 1 -й байт команды в буфер байтов команды исполнителя (уст3).
6.	Повторить пункты 3, 4 и 5 для вывода 2-го байта.
7.	Фаза «Команда» завершается установкой запроса со стороны цели на ввод (вывод) данных.
Фаза «Ввод данных»
Получив команду, цель берет на себя организацию ввода данных в инициатор, установив сигналы 1/0# =1, C/D# =0 и MSG# =0. В жестком диске емкость определяется количеством логических блоков и размером логического блока. Приняв номера логических блоков, диск преобразует их в номера секторов, а затем считывает их и направляет в инициатор. В нашем случае рассматривается общая упрощенная модель работы шины SCSI и не уточняется тип цели. Поэтому под логическими блоками (ЛБ0-ЛБ3) понимаются четыре байта буфера данных ввода, которые необходимо предварительно заполнить в соответствии с заданным упражнением с помощью мыши и клавиатуры. Таким образом, номер логического блока определяет номер байта данных ввода (Вв). Передача байта 2Ch из буфера осуществляется путем нажатия кнопки «Ввод данных» с помощью мыши и сопровождается квитирующими сигналами REQ# и АСК#, причем инициатор принимает байт данных по отрицательному фронту сигнала REQ#.
Последовательность действий в фазе «Ввод данных»:
1.	Инициатор проверяет комбинацию входных сигналов 1/0# =1, C/D# =0 и MSG# =0, указывающих на фазу ввода данных.
2.	Цель устанавливает байт данных на линиях DB7#-DB0#, считанный из буфера данных ввода в соответствии с номерном логического блока принятой ранее команды. Эта операция осуществляется путем выбора кнопки «Ввод данных» и щелчка мышью.
3.	Затем исполнитель (уст3) формирует квитирующий сигнал REQ#. Этот сигнал вырабатывается с помощью выбора соответствующей кнопкой и нажатия клавиши мыши.
4.	Прием байта данных в инициаторе выполняется по отрицательному фронту сигнала REQ#.
5.	В завершение операции ввода инициатор устанавливает сигнал АСК#. Это действие необходимо осуществить также с помощью кнопки и мыши.
Фаза «Сообщение» выполняется сразу после фазы «Ввод данных» или «Вывод данных» и инициируется установкой сигналов 1/0# =1, C/D# =1 и MSG# =1.
Шина USB
107
В фазе «Сообщение» следует выполнить следующие действия:
1.	Задать значение байта сообщения.
2.	Установить сигналы I/O# =1, C/D# =1 и MSG# =1.
3.	Нажать кнопку «Ввод сообщения». На экране видны сигналы на линиях DB7#-DB0# байта сообщения.
4.	Активировать кнопку квитирующего сигнала REQ#. По заднему фронту этого сигнала байт сообщения заносится в устройство (уст0).
5.	Затем нажимается кнопка ACK# для завершения операции.
Фаза «Вывод данных»
Порядок действия такой же, как и при выводе байтов команды, только необходимо задать в буфере уст0 выводимый байт данных.
Исполнитель (уст3) после получения команды «Запись» устанавливает сигналы 1/0# =0, C/D# =0 и MSG# =0.
Порядок действий:
1.	Задать байт данных в уст0.
2.	Установить 1/0# =0, C/D# =0 и MSG# =0.
3.	Нажать кнопку REQ#.
4.	Нажать кнопку «Вывод данных».
5.	Нажать кнопку АСК#. По отрицательному фронту ACK# байт данных фиксируется в буфере устд.
2.6. Шина USB
Функциональные признаки шины USB
В этом разделе описываются основные (ключевые) признаки функционирования.
Дисциплина обслуживания - многозвенная коммутация канала (рис. 2.49) шины USB.
108	Многоуровневая система шин
Связь между хостом и каким-либо устройством представляет собой многозвенный информационный канал, содержащий хабы и сегменты кабеля, каждый из которых имеет длину не более 5 м. Необходимая коммутация осуществляется с помощью переключателей портов хабов, выполняющих соответствующие соединения.
Способ коммутации - временной с централизованным управлением, типа «точка - много точек» (один хост и много устройств). В шине USB связь хоста с устройствами выполняется в режиме разделения времени (возможна передача данных между хостом и только одним каким-либо устройством). Хост (центральное устройство) является полным хозяином шины, а все подключенные к шине называются устройствами-исполнителями. Хост в соответствии с типом устройства выполняет определенный протокол передачи пакетных данных, в которых содержится информация о направлении и типе передачи, адресе получателя, данные и контрольный циклический код. Устройства взаимодействуют поочередно только с хостом и не могут передавать данные друг другу. По этой причине арбитраж в шине отсутствует.
Тип передачи байтов и битов - последовательно-последовательный, то есть последовательно передаются байты данных один за другим и последовательно -биты, размещенные в байтах (младший разряд байта поступает первым).
Временное согласование - асинхронная дифференциальная передача данных с произвольными интервалами времени и нестрогими требованиями ко времени ожидания (появления информации). Для сравнения приведем определение синхронной передачи данных: это передача, в которой каждый бит сопровождается (синхронизируется) тактовым сигналом. На рис. 2.50 показаны схемы асинхронной дифференциальной передачи (шина USB) и синхронной дифференциальной передачи.
Передаваемые элементы синхронизации: SOF, SYNC, PID
Рис. 2.50. Схемы:
а) асинхронной дифференциальной передачи, б) синхронной дифференциальной передачи
Шина USB	109
Синхронная передача является более быстродействующей, чем асинхронная передача, но требует дополнительных аппаратурных затрат. Асинхронная передача проще, но теряет быстродействие в связи с необходимостью вместе с данными передавать служебные признаки, синхронизирующие приемное устройство (запускающие его таймер (часы)). С этой целью хост USB включает часы шины с частотой 1 КГц (периодом 1 мс), передавая по шине каждую 1 мс пакет SOF (Start of Frame). Пакеты SOF синхронизируют часы каждого устройства. Интервалы времени, определяемые SOF, используются для передачи хостом пакетов данных. Кроме того, хост в начале пакетов данных передает соответствующие синхрокомбинацию (SYNC) и идентификаторы пакетов (PID), которые синхронизируют приемное устройство USB.
Структура данных - специальные пакеты различного формата, определяемые требованиями передачи данных, их контроля, синхронизации и настройки разнообразных типов устройств.
Режим обмена - программный (драйвер хоста выполняет все программные операции, необходимые для обслуживания устройств).
Мультиплексирование - передача адреса, данных, управления и состояния по одной и той же шине в режиме разделения времени.
Вид передачи с учетом направления - полудуплексный (данные передаются в обе стороны по двум дифференциальным линиям D+ и D- в различные моменты времени).
Типы (режимы) передач - данные большого размера (Bulk), изохронной, управления и прерывания.
Передача типа Bulk - случайно возникшая, непериодическая, большого размера передача, использующая любую доступную ширину диапазона (высокую частоту передачи). Ширина диапазона - количество данных, передаваемых в единицу времени.
Изохронная передача - передача, например, цифровых данных голоса, которые поступают в реальном масштабе времени и синхронизация которых зависит от интенсивности их поступления.
Управляющая передача - передача, обеспечивающая связь между хостом и устройством для вывода/ввода данных, конфигурации, команд и состояния.
Передача прерывания - передача маленьких объемов данных с низкой частотой и ограниченным временем ожидания, используемая устройством, чтобы сообщить хосту о необходимости его обслуживания.
Представление данных на шине - дифференциальными сигналами.
Метод кодирования - метод NRZI (Non Return to Zero Invent) кодирования последовательных данных, в котором бит 0 вызывает переключение уровня напряжения, а бит 1 - нет. Этот метод устраняет необходимость в синхронизирующих сигналах и позволяет в последовательности дифференциальных сигналов обнаружить положение нулевых и единичных битов.
Контроль данных - циклический избыточный контроль CRC(Cyclic Redundancy Check) - полиномная проверка данных при их записи или чтении, при котором код CRC передается вместе с данными и затем сравнивается с рассчитанным.
Состояния (фазы) шины - сброс, ожидание, дифференциальная 1, дифференциальный 0, конец пакета, устройство отсоединено и присоединено, передача данных.
ПО	Многоуровневая система шин
Параметрические признаки шины USB
Известны несколько версий шины USB, например версия 1.1, характеризуемая низкой скоростью передачи 1.5 Мбита/с и высокой скоростью 12 Мбит/с: версия 2.0, для которой низкая скорость передачи данных составляет 50 Мбит/с, а высокая - 480 Мбит/с.
Дифференциальная передача данных
В этом разделе описаны основные определения дифференциальных передач, которые широко используются как в USB-интерфейсах, так и во многих других шинах.
Дифференциальная (разностная) симметричная передача данных - передача данных с использованием специального дифференциального передатчика и приемника, соединенных двухпроводной линией связи: A(D+) и B(D-), по которой передаются разноуровневые сигналы, один из которых повторяет входной сигнал, а другой является его инверсией (рис. 2.51).
DI (Driver Input) - вход передатчика
DE (Driver Enable) - разрешение работы передатчика
A (D+) - прямой дифференциальный вхо/Увыход
В (D-) - инверсный дифференциальный вход/выход
RE (Receiver Enabled) - разрешение работы приемника
RO (Receiver Output) - выход приемника
Рис. 2.51. Дифференциальная симметричная передача данных
Передатчик имеет буферизированные выходы (состояние Z), которые управляются сигналом разрешения работы DE.
На линиях А и В существует разность потенциалов V(A-B), причем при «единичном» входном сигнале она положительна, а при «нулевом» входном сигнале -отрицательная. Разность потенциалов V(A-B) поступает на дифференциальные входы приемника, и на его выходе Ro формируются соответствующие передаваемые сигналы данных. Приемник преобразует дифференциальные сигналы в уровни сигналов ТТЛ (КМОП).
Для выполнения дифференциальной передачи данных разработаны соответствующие микросхемы: SN 5176 (Texas Instruments), Max 485 (Maxim), ADM 485 (Analog Devices), MC 3486 (передатчик) и MC 3487 (преемник) фирмы Motorola
Шина USB	111
и др. Почти все дифференциальные приемопередатчики имеют типовую схему (рис. 2.52).
Чувствительность приемника обычно составляет ±200 мВ, то есть если V(A-B) > +200 мВ, то приемник определяет логическую единицу («1»- высокий уровень), а если (А-В) < -200 мВ, то - логический нуль («0» - низкий уровень). На рис. 2.53 показан общий вид дифференциальных сигналов на линиях А и В.
Дифференциальная передача данных широко применяется в интерфейсах USB, IEEE 1394, EIA (Electrical Industry Association - Ассоциация электрической промышленности) -422, -423 и -485 (старое название RS-422, 423 и 485).
Полудуплексная передача данных - попеременная передача данных в двух направлениях в режиме разделения времени.
Дифференциальная шина USB выполняет полудуплексную передачу информации, то есть хост является передатчиком и приемником информации по двум линиям D+ и D- данных (рис. 2.54).
Дуплексная передача данных - одновременная передача в противоположных направлениях. Примером выполнения дуплексной передачи может служить дифференциальная шина IEEE 1394 (Fire Wire), которая содержит две пары линий для последовательных дифференциальных дуплексных передач данных (рис. 2.55).
112
Многоуровневая система шин
		D+ « Данные » D+		
	Хост IEEE 1394		Устройство IEEE 1394	
		D-	D-		
		D+	D+		
		D-	D-		
		◄	►		
	Данные			
Рис. 2.55. Дуплексная передача данных				
Симплексная передача данных - передача данных только в одном направлении (рис. 2.56).
Синфазные сигналы - одинаковые по уровню и фазе сигналы, поступающие на входы А и В дифференциального приемника (рис. 2.57).
Когда на оба выхода А и В действует один и тот же сигнал, то выходной сигнал дифференциального приемника равен О, то есть дифференциальный приемник подавляет синфазные сигналы (помехи), наводимые на линии А и В электромагнитными полями.
Несимметричный дифференциальный интерфейс - интерфейс, использующий общую обратную линию заземления для подключения нескольких дифференциальных приемников (рис. 2.58).
Шина USB
113
Операционный усилитель - это дифференциальный (разностный) усилитель постоянного тока» характеризующийся высоким входным сопротивлением» низким выходным сопротивлением и высоким коэффициентом усиления по напряжению (рис. 2.59).
Разность напряжений на входах Vx-V2 определяет дифференциальный разностный входной сигнал Vbx операционного усилителя [7].
Коэффициент усиления по напряжению:
K = VBbIX/VBX>
гДеЧ^-У,.
При наличии входного баланса можно допустить» что = V2 и входные токи на обоих входах равны О» тогда коэффициент К имеет большую величину (103-106). С увеличением напряжения V\ и уменьшением V2 происходит нарушение вход
114	Многоуровневая система шин
ного баланса и возрастает выходное напряжение Увых, и наоборот, с уменьшением V1 и увеличением V2 уменьшается Увых.
Различают инвертирующие и неинвертирующие операционные усилители (рис. 2.60).
Коэффициент усиления инвертирующего усилителя
К = VBbix / Vbx = ROC I Rbx’
где Roc - сопротивление обратной связи; Rbx - входное сопротивление.
ЕслиRoc = RbxиVbx = 3В, тоК = 1 иУвых = -ЗВ.
Амплитудная характеристика инвертирующего операционного усилителя имеет линейный характер до достижения напряжения насыщения (VH), которое обычно на 4 В меньше напряжения источника питания (рис. 2.61).
Рис. 2.61. Амплитудная характеристика инвертирующего операционного усилителя
Неинвертирующий операционный усилитель характеризуется коэффициентом усиления К = Увых / Vbx = (Rt + RJ / R2 и высоким входным сопротивлением.
Дифференциальный операционный усилитель представляет собой совокупность схем инвертирующего и неинвертирующего усилителей (рис. 2.62), усиливающий разность двух входных напряжений.
Шина USB
115
Рис. 2.62. Упрощенная схема дифференциального усилителя
Выходное напряжение дифференциального усилителя определяется как сумма двух составляющих напряжений, определенных ранее для инвертирующего и неинвертирующего усилителей.
При некоторых допущениях можно утверждать, что выходное напряжение изменяется пропорционально разности двух входных VBx2 и VBX1, то есть
VBbIX= R3/R1(VBX1-VBX2)’
где R3 / Rx - коэффициент усиления.
Соотношение показывает, что если VBxl = VBx2 (на входах присутствует синфазное напряжение), то Увых = О. Как уже отмечалось, дифференциальный усилитель значительно подавляет действие синфазных помех (помех, наводимых от электрических цепей).
Основные определения протокола передачи данных
В шине USB. имеющей сетевую архитектуру, принят пакетный принцип передачи информации. Основными элементами выполняемого протокола являются: фрейм (кадр), типы пакетов, определяемые идентификаторами, и режимы пакетных транзакций (данных большого размера, управления, прерывания и изохронных данных).
Фрейм (кадр) - группа пакетов, запланированных хостом для передачи, в которой, кроме того, задаются пакеты SOF (начало фрейма с указанием его текущего номера) и EOF (конец фрейма). Хост периодически через каждую 1 мс фор-
116
Многоуровневая система шин
(часы шины с частотой 1 кГц). На этапе конфигурации хост получает информацию о максимальном размере пакета устройства, а затем использует данную информацию, чтобы разместить эти данные в каждом фрейме.
Пакет SOF является маркером начала фрейма и опознается хабами и устройствами USB с целью координации (синхронизации) их дальнейших действий. В шине USB используется как бы сетевой маркерный принцип передачи данных, но только от одного главного устройства (хоста). Пакет SOF имеет формат, представленный на рис. 2.64.
8 бит	11 бит	5 бит
РЮ	FN	CRC5
RID (Identifier Pocket) - идентификатор пакета FN (Frame Number) - номер фрейма
CRC (Cyclic Redundancy Check) - контрольный циклический код (контрольная сумма)
Рис. 2.64. Формат пакета SOF
Пакет - ряд взаимосвязанных и передаваемых битов информации, предназначенных для выполнения заданной функции и имеющих строго заданный формат, в котором в общем случае указаны идентификатор пакета, передаваемые данные заданного размера и контрольные биты.
Для шины USB различают следующие пакеты (верхний ряд) и идентификаторы (нижний ряд), представленные на рис. 2.65.
Идентификатор пакета USB - начальное поле в пакете, определяющее тип пакета, его формат и способ выявления ошибок.
Эстафеты
Специальные
Данные
Квитирования
1011
0001
1101
отказ 1110
Получен точный пакет 0010
низоскорт. передача 1100
Данные 0 Данные 1 0011
Врем. Постоянный Преамбула отказ 1010
Ввода Вывода Установка 1001
АСК (Acknowledgement) - пакет подтверждения приема (положительная квитация) NAK (Negative acknowledgement) - пакет неподтверждения приема (отрицательная квитация)
Рис. 2.65. Пакеты и идентификаторы шины USB
Шина USB
117
Пакет DATA имеет два различных 4-битных идентификатора: DATA0 (код 0011) и DATA1 (код 1011), которые используются для определения наличия данных в пакете. При передаче данных эти идентификаторы чередуются для синхронизации принимающего устройства, то есть DATA0, DATAr DATA0, DATA1 и т. д. На рис. 2.66 представлен формат пакета данных.
8 бит	0-1024 байт	16 бит
PID	DATA	CRC16
DATAO	Размер данных	Контрольный
или	согласуется с	циклический
DATA1	типом устройства	код
Рис. 2.66. Формат пакета данных
Размер данных программируется, определяется типом передачи и устанавливается на этапе конфигурирования устройства. Стандарт шины USB ограничивает размеры пакета данных для высокоскоростных устройств 8, 16, 32 или 64 байтами, а низкоскоростные устройства могут иметь пакет не более 8 байт. Вначале (после сброса) хост использует пакет данных размером 8 байт, который является достаточным для стандартных операций, а после определения устройства по его конфигурационной информации может использоваться пакет большего размера. Таким образом, все данные делятся на равные части (пакеты), кроме последней части, которая содержит оставшиеся данные.
Поле данных защищено 16-битовым контрольным циклическим кодом, который представляет собой коэффициенты двоичного 16-битного полинома.
Формат идентификатора PID содержит 8 бит, причем биты D0-D3 задают тип пакета (формат и способ обнаружения ошибок соответствующего пакета), а биты D4-D7 являются инверсными значениями младших четырех битов и служат для контроля правильности передачи идентификатора (рис. 2.67).
D0	D1	D2	D3	DO	D1	D2	D3
Рис. 2.67. Формат идентификатора (PID)
Пакеты Token имеют одинаковый формат и различаются идентификаторами IN, OUT и SETUP (рис. 2.68).
Для выбора устройства и конечной точки в нем используются 7-битный адрес устройства и 4-битный адрес конечной точки.
Конечная точка - программно-доступная со стороны хоста часть устройства ввода/вывода. подключенная к шине USB. Низкоскоростные устройства содержат до двух конечных точек, а высокоскоростные - до 16.
Конечная точка О - часть каждого USB-устройства, в которой описываются сведения об этом устройстве: класс, подкласс, информация о поставщике, базовые адреса, тип канала и его пропускная способность, максимальный размер пакета, направление передачи данных и т. д.
Конечная точка О применяется для инициализации и конфигурирования устройства USB.
Пакет квитирования содержит только 8-битное поле PID и предназначен для проверки успешности передачи данных. Различают три типа этого пакета: АСК (подтверждение) - пакет получен без ошибок; NAK (неподтверждение) - временный отказ (пакет, показывающий на невозможность принять данные от хоста, например устройство не имеет данных для передачи хосту или для сообщения о временной паузе в передаче или приеме данных); STALL - ответный пакет, говорящий о постоянном отказе и необходимости вмешательства программы хоста.
Рассмотрим режимы передачи данных в шине USB и протоколы их выполнения.
Режим Bulk (балк) - непериодическое, случайно возникающее соединение хоста и устройства, используемое для передачи данных большого размера с максимально допустимой скоростью передачи данных. Режим Bulk может быть отсрочен до освобождения необходимой ширины диапазона.
Ширина диапазона - количество данных, передаваемых в единицу времени (измеряется в бит/с или байт/с), например 12 Мбит/с.
Протокол - набор правил, процедур или соглашений, связанных с форматами и синхронизацией данных при передаче их между устройствами. Другими словами, система параметров, форматов данных и последовательность действий. используемых устройствами.
Протокол передачи данных большого размера (Bulk) содержит три фазы передачи пакетов: Token (IN/OUT), данных (DATAq/DATAJ и квитирования (рис. 2.69).
Для приема пакета данных от устройств хост посылает ему пакет IN, содержащий адреса устройства и конечной точки ввода. Затем устройство направляет пакет данных или. если оно не готово, пакет NAK (временный отказ) или STALL (постоянный отказ). Завершается ввод пакета данных передачей со стороны хоста пакета АСК, сообщающего устройству об успешной передаче пакета данных. Если пакет содержит ошибки, то пакет АСК не посылается.
Шина USB
119
ВВОД
вывод
Рис. 2.69. Протокол режима Bulk
Вывод пакета данных в устройство начинается с посылкой в устройство пакета OUT (адресов устройства и конечной точки вывода). После этого хост направляет по шине USB пакет данных, который завершается уведомлением хоста одним из трех пакетов квитирования АСК, NAK или STALL, посылаемым устройством. Пакеты данных с идентификаторами DATA0 и DATA1 чередуются для синхронизации передатчика и приемника пакетов.
Режим прерываний (Interrupt) - короткие с низкой частотой, время от времени возникающие передачи по шине USB, инициируемые хостом и заключающиеся в вводе пакетов данных с идентификаторами DATA0 и DATAt или пакета NAK, если устройство не имеет новой информации или необходимо вмешательство хоста (пакет STALL), рис. 2.70.
Если конечная точка устройства использует режим прерываний, то это выполняется хостом по заданному протоколу с анализом состояний устройства и достоверности передачи данных.
Изохронный режим - непрерывная и периодическая передача изохронных данных в реальном масштабе времени, синхронизация которых зависит от интенсивности их поступления. Типичным примером изохронных данных являются голосовые данные, связанные с передачей телефонных сообщений. Для согласования принимаемых и передаваемых по шине USB изохронных данных в каждой конечной точке устройства располагается буфер памяти. Изохронные передачи не подвергают повторной передаче данных и не имеют фазы квитирования (рис. 2.71).
120
Многоуровневая система шин
Хост
Уст. USB
Ожидание
IN
DATAO/DATA1/NAK/STALL ---------------------
АСК
IN	ADDR	ENDP	CRC5
Ожидание
DATAO	DATA	CRC16	ACK
Рис. 2.70. Режим прерываний
ВВОД
вывод
Хост
Уст. USB	Хост
Уст. USB
Ожидание
IN
OUT
DATAO/DATA 1 (DATA)
DATAO/DATA 1 (DATA)
Ожидание
Ожидание
ВВОД
IN ADDR ENDP CRC5 DATAO DATA CRC16
ВЫВОД
OUT ADDR ENDP CRC5 DATAO DATA CRC16
Рис. 2.71. Изохронный режим
Изохронная передача может выполняться из устройства в хост и наоборот. Конфигурационные данные конечной точки содержат описание направления передачи данных и максимальный размер данных, необходимый для размещения их в соответствующих фреймах. В случае изохронной передачи максимальный размер пакета для шины USB составляет 1023 байта.
Режим управления (Control) обеспечивает следующие типы передачи между хостом и устройствами конфитурации, команды и состояния. Режим управления содержит две стадии установки (Status). При выполнении стадии установки происходит передача данных от хоста к конечной точке устройства (рис. 2.72).
Шина USB
121
Хост
Ожидание
УСТАНОВКА
Уст. USB
SETUP
DATAO(DATA)
ACK
Ожидание
Транзакция
Рис. 2.72. Режим установки
Режим установки использует пакет данных с идентификатором DATA0, в котором передается соответствующая управляющая информация. Если приняты достоверные данные, то устройство направляет хосту пакет АСК, в противном случае данные исключаются. Данные в передаче SETUP могут быть переданы в несколько транзакций. Хост резервирует часть каждого фрейма для передачи управляющих данных.
Транзакция (Transaction) - действие на шине USB по обслуживанию конечной точки. Транзакция состоит из пакета Token (эстафета), пакета DATA (данные) и пакета Handshake (квитирование).
Стадия состояния является последней стадией в последовательности транзакций и всегда использует идентификатор DATA1 в пакете DATA. Рассмотрим последовательность транзакции при управлении записью (вывод) и чтением (ввод) данных. Ввод и вывод всегда рассматриваются по отношению к хосту, то есть данные вводятся в хост из устройства и данные выводятся из хоста в устройство (рис. 2.73).
Возможна передача управляющей информации без стадии данных (рис. 2.74).
Запросы и его параметры посылаются хостом в установочном пакете. Обычно установочный пакет содержит 8 байт. В первом байте задается направление передачи от хоста к устройству или, наоборот, тип устройства и приемник этой информации (устройство, интерфейс устройства или конечная точка). Байт номер два определяет частные стандартные запросы: получить значения конфигурации (80h), получить интерфейс устройства (8lh), получить максимальный размер пакета (82h), установить адрес (00h) и т. д. Третий и четвертый байты используются для передачи параметров устройству согласно запросу. В пятом и
122
Многоуровневая система шин
Управление записью	Управление чтением
Хост	Уст. USB	Хост	Уст. USB
SETUP	г				SETUP	r	
DATAO(DATA)		l Стадия J		DATAO(DATA)	
АСК		| установки)		ACK	
OUT			<_	IN	
DATAI(DATA)				DATA 1 (DATA)	
АСК				ACK	
OUT				IN	
DATAO(DATA)		. Стадия < данных i		DATAO(DATA)	
АСК				ACK	
				-	
OUT	r				IN	
DATA0/1(DATA)				DATA0/1(DATA)	
ACK				ACK	
IN	—>	1	1	n	OUT	
*	DATAI(DATA)		l Стадия J	1	ш	DATA 1 (DATA)	
ACK		[ СОСТОЯНИЯ |	1,	ACK	
		>	)	1			
Стадия состояния при вводе
IN	ADDR	ENDP	CRC5	DATAO	DATA	CRC16	ACK
Стадия состояния при выводе
OUT	ADDR	ENDP	CRC5	DATAO	DATA	CRC16	ACK
Рис. 2.73. Управление записью и чтением данных
шестом байтах задается номер смещения, а в седьмом и восьмом - количество передаваемых байтов, если выполняется вторая стадия данных.
При подключении устройства к шине USB хост осуществляет посылку пакета SETUP с запросом «Чтение дескриптора» конечной точки О устройства. В случае
Шина USB
123
Рис. 2.74. Управление без стадии данных
начальной установки устройства или при повторном его подключении все устройства по умолчанию используют нулевой адрес (00h).
Дескриптор содержит совокупность конфигурационных сведений об устройстве.
После этого хост присваивает уникальный адрес устройству с помощью SETUP с запросом «Установка адреса».
Для выполнения хостом своих функций устройство должно быть подключено, запитано, иметь собственный уникальный адрес, не приостановлено и сконфигурировано (рис. 2.75).
Устройству присвоен адрес
Устройство сконфигурировано
Рис. 2.75. Состояния устройства
Сконфигурированная конечная точка использует только один из четырех рассмотренных режимов передачи данных, хотя некоторые оконечные точки могут быть рассчитаны до настройки на несколько возможных передач.
124
Многоуровневая система шин
Конфигурационные данные устройства USB хранят в его памяти, некоторые из них приведены в табл. 2.7.
Таблица 2.7
Смещение	Поле	Число байт	Описание
0	Длина	1	Размер конфигуратора в байтах
1	Тип конфигуратора	1	Тип конфигуратора устройства
2	Шина USB	2	Номер версии
4	Класс устройства	1	Код класс
5	Подкласс устройства	1	Код подкласс
6	Поставщик	2	Идентификатор поставщика
8	Продукт	2	Идентификатор продукта
10	Устройство	2	Номер выпуска устройства
Устройство USB может иметь несколько конфитураторов, в которых описываются свойства конфигурации (питается от шины или автономно), максимальное потребление тока в мА, число интерфейсов, поддерживаемых устройством, число конечных точек, тип режима передачи (изохронная, прерывание, управление, объемная (Bulk)) и т. д.
Справочное дополнение
Шина USB предназначена для сопряжения ПК с различными устройствами типа телефона, факса, модема, сканера, автоответчика, клавиатуры, мыши и т. д. Эта шина для настольных систем отвечает требованиям технологии plug and play и является среднескоростной, двунаправленной дешевой шиной, повышающей взаимосвязность компонентов ПК и расширяющей его архитектуру.
Основные свойства шины USB:
•	возможность подключения до 127 физических устройств;
•	автоматическое распознавание периферии;
•	образование различных конфигураций;
•	поддержка передачи голоса, звука и сжатого видео:
•	реализация как изохронных, так и синхронных типов передач с широким диапазоном скоростей;
•	наличие механизма обработки ошибок;
•	управление питанием и т. д.
Технология шины USB представлена на рис. 2.76 и имеет многоуровневую звездообразную структуру (древовидную конфигурацию).
Каждую звезду образует хаб (пункт присоединения), обеспечивающий подключение одного или нескольких функционеров (функ), периферийных устройств. Шина USB содержит один хост (контроллер), образующий корневой уровень и управляющий работой функционеров. Хаб является основным элементом в архитектуре USB. поддерживающей соединение нескольких хабов. В состав хаба входит один верхний потоковый порт ВПП, необходимый для подключения хаба к «хвосту», и несколько нижних потоковых портов (НПП), соединяющих его с другими хабами и (или) функционерами (рис. 2.77).
Шина USB	125
Рис. 2.76. Топология шины USB
Хаб выполняет следующие функции: обнаружение присоединения (отсоединения) другого хаба или функционера; управление питанием и конфигурированием устройств, подключенных к соответствующим НПП. Хаб содержит контроллер и репитер (управляемый протоколом переключатель портов между ВПП и НПП^НПЩ). Контроллер использует интерфейсные регистры для выполнения связи с хостом, который с помощью управляющих команд конфигурирует хаб и следит за его партнерами. На рис. 2.78 показана система типа «рабочий стол», содержащая хабы и функционеры.
Функционер представляет собой отдельное USB-устройство, которое кабелем подключается к какому-либо порту хаба. Хаб/функционер выполняется как устройство, содержащее встроенный хаб. Каждый функционер перед его использованием должен быть сконфигурирован хостом, который включает распределение диапазона частот и выбор специфических опций для конфигурации.
126
Многоуровневая система шин
USB-хост (центральная ЭВМ) осуществляет доступ к USB-устройствам с помощью хост-ко нтроллера, который выполняет следующие действия:
•	координацию потоков управления и данных между хостом и устройствами;
•	обнаружение подключенных (отключенных) устройств;
•	сбор информации о состоянии системы;
•	управление питанием.
Протокол шины выполняется следующим образом. Хост направляет по шине USB эстафетный пакет, в котором указываются тип пакета, направление транзакции (действия на шине), адрес устройства и номер конечной точки. Конечная точка - это уникально определяемая часть USB-устройства, содержащего несколько таких точек (конечных пунктов связи). Комбинация адреса устройства и номера конечной точки в этом устройстве позволяет выбрать каждую точку в отдельности. Любая конечная точка должна быть сконфигурирована перед употреблением и характеризуется частотой, временем ожидания доступа к шине, шириной полосы частот, максимальным размером пакета, типом и направлением передачи. Устройства с низким быстродействием содержат не более двух конечных точек, а устройства с высоким быстродействием - до 16 выходных точек.
После того как передача данных завершена, USB-устройство (приемник) отвечает пакетом подтверждения, в котором отмечается успешность этой передачи.
Сигналы данных D+ и D- и питание (V и G - земля) в шине USB передаются от точки к точке по четырем проводам 90-омного кабеля (рис. 2.79) с максимальной длиной 5 м. Номинальное напряжение питания - 5 В.
V 		—		 V
D+ -у-		-у- D+
D- -Л-		D-
G 		—		 G
Рис. 2.79. Кабель USB		
Шина USB	127
Хост (хаб) обеспечивает питанием устройства USB, которые подключены к нему. Кроме того, устройства USB могут иметь автономное питание. Питание по шине USB имеет ограниченную величину.
Шина USB обеспечивает два диапазона скоростей передачи информации: низкая скорость (1,5 Мбита/с) и высокая скорость (12 Мбит/с). Низкоскоростной режим применяется для взаимодействия с интерактивными устройствами (мышью, трекболом и т. п.), а высокоскоростной режим - с адаптером телефона, аудио- или видеоустройствами. Каждому пакету данных предшествует поле синхронизации, которое позволяет приемникам согласовывать во времени их таймеры (генераторы) для приема данных. Поле синхронизации содержит синхроимпульсы, закодированные по методу NRZI с битовым заполнением.
В шине USB используется метод кодирования NRZI (без возвращения к нулю с инверсией). В этом случае метод кодирования NRZI состоит в том, что если бит передаваемых данных равен О, то происходит изменение уровня напряжения, а если равен 1, то уровень напряжения сохраняется. На рис. 2.80 показан пример кодирования данных методом NRZI.
Таким образом, строка нулей вызывает переключение уровней сигналов, а строка единиц образует длительные отрезки уровней без всяких переходов, что может нарушить условие синхронизации при выделении каждого бита. Поэтому при передаче данных через каждые шесть последовательных единиц вставляется нуль, чтобы гарантировать достоверное определение каждого битового интервала при приеме в наиболее худшем случае, когда передаются единичные значения битов данных. Приемник декодирует код NRZI и отбрасывает вставленные биты нулей. На рис. 2.81 представлена временная диаграмма этапов кодирования данных.
На диаграмме вначале показаны необработанные данные, содержащие поле синхрокомбинаций и пакет данных, причем синхрокомбинация имеет 7 нулей и заканчивается единичным битом, после которого начинается пакет данных. Затем на диаграмме изображены заполненные данные, которые дополнительно содержат после шести единиц вставленный бит 0. В число шести единиц входит и последний единичный бит синхрокомбинации. После этого выполняется кодирование заполненных данных методом NRZI с учетом и поля синхрокомбинации. Правило заполнения требует, чтобы бит 0 был вставлен, даже если этот бит будет последним, перед сигналом ЕОР (конец пакета).
Связь между хостом и конечной точкой образует канал. Устройство USB может иметь конечную точку, поддерживающую только канал управления, или конечную точку, использующую канал для передачи данных.
128
Многоуровневая система шин
Синхрокомбинация
пакет данных
Необработанные данные
Заполненные данные
Код NRZI
О О О О О О О I
вставка О
U--------LJ
пакет данных
синхрокомбинация	п
шесть единиц
инхрокомбинаци:
пакет данных
Рис. 2.81. Временная диаграмма этапов кодирования данных
USB выполняет следующие типы передач по соответствующим каналам в одном или обоих направлениях:
•	управляющую спонтанную (непериодическую) передачу по типу запрос/ ответ, используемую для передачи команд/состояния и обычно применяемую с целью конфигурирования устройства в момент его подключения;
•	контейнерную передачу, случайно возникающую во времени, состоящую из большого числа данных, выводимых, например, в принтер или сканер;
•	передачу прерывания (непериодическую передачу данных с низкой частотой из устройства в любой момент времени, состоящую из одного или нескольких байтов, направляемых в главную ЭВМ и требующих обслуживания устройства);
•	изохронную (периодическую потоковую) передачу, обеспечивающую непрерывную связь между хостом и устройством в реальном времени с предварительной установленной скоростью и временем ожидания.
Все устройства USB содержат конечную точку О, к которой имеет доступ по умолчанию канал управления. Информация конечной точки О описывает устройство USB и состоит из следующих частей: стандарта, использующего дескрипторы устройства, его структуры, интерфейса и конечных точек; класса устройства и сведений о поставщике. Конечная точка О применяется для инициализации и конфигурирования устройства USB.
Через каналы перемещается информация между хостом и конечной точкой с использованием буферной памяти. Различают два режима работы канала: по-ток-данные, не имеющий определенной структуры, и сообщение-данные, передаваемые в соответствии с заданным порядком. Системное программное обеспечение (ПО) монопольно владеет каналом и представляет его другим ПО. Пользователь ПО запрашивает передачи по каналу, ждет их и затем уведомляется о завершении передач данных. Конечная точка сигналом NAK может сообщить хосту о том, что она занята.
Потоковые каналы передают пакеты данных, не имеющих структуру USB, в одном или другом направлении (однонаправленная передача). Потоковые каналы поддерживают контейнерную, изохронную передачу и передачу прерываний.
Шина USB	129
Управляющая передача разрешает доступ к какой-либо части устройства и предназначена для обмена информацией типа конфигурация / команды / состояние, между пользовательским ПО и функционером. Управляющая передача в общем случае содержит информацию запроса (установочный пакет), данные и возвращаемую в хост информацию состояния функционера. Установочный пакет имеет определенную структуру, состоящую из набора команд, необходимых для установления связи между хостом и устройством USB. Описание состояния устройства имеет также определенную структуру, а данные управления, следующие за установочным пакетом, не имеют какой-либо структуры и содержат информацию о запрошенном доступе. Управляющая передача выполняется как двунаправленный поток информации по каналам сообщений. Стандарт шины USB ограничивает размеры пакета данных для высокоскоростных устройств 8, 16, 32 или 64 байтами, а низкоскоростные устройства могут иметь пакет данных не более 8 байт. Установочный пакет всегда содержит 8 байт. Вначале (после сброса) хост использует пакет данных размером в 8 байт, который является достаточным для стандартных операций, а после определения типа конечной точки по ее конфигурационной информации может быть использован пакет большого размера для выполнения специфических операций. Таким образом, все данные при передаче делятся на равные части (пакеты), кроме последней части, которая содержит оставшиеся данные.
В том случае, если конечная точка занята определенное время, хост будет повторять к ней доступ через некоторое время. При обнаружении ошибки хостом выполняется повторная передача.
При скорости передачи данных 12 Мбит/с используется витая пара экранированного кабеля, а для скорости 1,5 Мбита/с - неэкранированный кабель с не-скрученной парой проводников. Сопряжение приемопередатчиков (ПП) с помощью кабеля USB в случае высокоскоростной (а) и низкоскоростной (б) передач изображено на рис. 2.82.
Рис. 2.82. Схемы сопряжения ПП хоста (хаба) и функционера (хаба) для высокоскоростной (а) и низкоскоростной (б) передач
130
Многоуровневая система шин
Из схем видно, что высокоскоростные устройства содержат резистор нагрузки (RJ на линии D+, а низкоскоростные - на линии D-, что позволяет определить тип подключенного устройства USB. Когда устройство USB не управляет линиями D+ и D-, то на линии с RH имеется напряжение около 3 В, а на другой -близкое к 0 В. Такое состояние шины называется пассивным состоянием.
Если устройство не подключено к нижнему порту хоста (хаба) (или отсутствует питание), то на обеих линиях D+ и D- устанавливается асимметричный низкий уровень напряжения (0,6 В), который используется для определения условия рассоединения или сообщения о конце пакета (ЕОР). Для высокоскоростных передач условием рассоединения является наличие асимметричного нуля в течение 2,5 мс (30 единиц времени передачи бита).
Считается, что связь с устройством установлена, если напряжение на одной из линий D+ (D-) достигает выше асимметричного высокого порога в 1,5 В за время 2,5 мс.
Определение факта рассоединения и связанности устройства USB показано на рис. 2.83.
Рис. 2.83. Установление факта рассоединения (а) и связи устройства USB (б)
Общее время передачи данных оценивается числом битов данных, умноженным на период (Т), определяемый скоростью передачи данных. На рис. 2.84 представлена временная диаграмма передачи данных по дифференциальным линиям данных D+ и D-.
В соответствии с кодом NRZI бит 0 вызывает переключение уровней напряжения, а бит 1 сохраняет соответствующие уровни напряжения на линиях D+ и D-. Длительность асимметричного нуля в ЕОР равна 2Т без учета времени задержки.
Шина USB
131
Начало пакета (SOF) определяется первым битом поля синхронизации, когда пассивное состояние линий D+ и D- переходит в активное. Устройства USB поддерживают режим приостановки, который вызывается тем, что пассивное состояние линий D+ и D- удерживается более 3 мс.
Командой хоста может быть установлен сигнал сброса, который распространяется через все хабы и приводит подключенные устройства в начальное состояние. Сигналом сброса является асимметричный нуль, удерживаемый на шине в течение 10 мс.
В зависимости от источника потребления питания различают следующие типы устройств:
•	хабы, получающие питание от шины и обеспечивающие питанием внутренние функциональные устройства и низшие порты;
•	хабы с автономным питанием, которые позволяют снабдить питанием пять модулей, каждый из которых потребляет 100 мА, составляющие нагрузку модуля;
•	маломощные (с нагрузкой одного модуля) и высокомощные (с нагрузкой пяти модулей) устройства, потребляющие питание из шины;
•	функциональные устройства, имеющие внешний источник питания.
Штепсели и разъемы USB
На рис. 2.85 показаны штепсели и разъемы, используемые для подключения устройств к компьютеру.
USB-штепсель
Рис. 2.85. Штепсели и разъемы USB
132
Многоуровневая система шин
Как уже указывалось, для передачи данных и питания устройств в USB используется четырехпроводный кабель, причем для скорости передачи 480 Мбит/с используется экранированная витая пара (рис. 2.86).
Назначение проводов и контактов кабеля USB показано в табл. 2.8.
Таблица 2.8
Номер контакта	Название сигнала	Провод
1	Vbus	Красный
2	D-	Белый
3	D+	Зеленый
4	GND	Черный
2.7.	Модель шины USB
Модель позволяет наглядным способом изучить принципы передачи двоичных данных по шине USB.
Модель состоит из двух блоков: «Хост USB» и «Устройство USB» (рис. 2.87).
Блок «Хост USB» содержит три поля, содержимое которых он последовательно передает блоку «Устройство USB». Поля представляют собой ячейки в количестве восьми штук на каждое поле. Щелчком мыши на ячейке можно изменить ее содержимое (1 или 0). Первое поле - это синхрокомбинация, второе - первый передаваемый байт, и третье - второй передаваемый байт.
Блок «Устройство USB» содержит два поля для фиксации полученных данных. Поля представляют собой ячейки в количестве восьми штук на каждое поле.
Модель шины USB
133
Устройство USB
Хост USB
Рис. 2.87. Модель передачи двоичных данных по шине USB
Значения, которые могут принимать ячейки, - 1 или О. Первое поле - первый передаваемый байт, второе - второй передаваемый байт. Также в блоке присутствует «Селектор синхрокомбинации» - используемый для временного согласования хоста и устройства.
Блок «Хост USB» содержит 3 узла:
•	схема вставки нуля;
•	формирователь кода NRZI;
•	схема подсчета числа единиц.
Блок «Устройство USB» содержит 3 узла:
•	схема отбрасывания нуля;
•	преобразователь кода NRZI;
•	схема подсчета числа единиц и обнаружения дополнительного нуля.
Рассмотрим принципы передачи двоичных данных между хостом и устройством.
Синхрокомбинация используется для временного согласования устройства USB и является началом каждого пакета информации. При передаче она под
134	Многоуровневая система шин
вергается кодированию методом NRZI (рис. 2.88), блок-схема формирования кода которого показана на рис. 2.89.
Рис. 2.88. Диаграмма формирования кода NRZI
Состояния К и J определяются по разности потенциалов на линиях D+ и D-. Байты передаются последовательно, начиная с младшего. Каждый пакет начинается с передачи байта синхрокомбинации, после которого передается пакетный идентификатор (PID - 8 бит).
Передаваемые байты данных проходят через схему вставки нуля и попадают на формирователь кода NRZL представление о принимаемой форме данных показано на рис. 2.90. Диаграмма передаваемых хостом сигналов показана на рис. 2.91, а блок-схема вставки нуля - на рис. 2.92.
Модель состояний шины USB
С помощью мыши и переключателей можно получить на экране соответствующие состояния шины USB (рис. 2.93).
Работа шины USB характеризуется различными состояниями, которые определяются с помощью дифференциальных приемопередатчиков, линейных приемопередатчиков и шинных таймеров, необходимых для совместной работы устройств, подключенных к шине USB (рис. 2.94).
Дифференциальный передатчик имеет состояние z (выключено), которое управляется сигналом разрешения вывода ОБ (OE-Output Enabec).
Шинный таймер отсчитывает интервалы времени SEO(EOP) и др.
Модель шины USB
135
Рис. 2.89. Блок-схема формирования кода NAZI
Линейные приемники предназначены для наблюдения за состоянием линий D+ и D- и определения, например, моментов времени отключения или включения высокоскоростных или низкоскоростных устройств. Для высокоскоростного устройства сопротивление нагрузки R подключается к линии D+, а для низкоскоростных - сопротивление R- к линии D-, что позволяет определить тип подключенного устройства USB. Когда устройство USB не управляет линиями D+ и D-, то на линии с сопротивлением R имеется напряжение около 3 В, а на другой - близкое к О В. Такое состояние шины называется пассивным состоянием.
Низкий уровень сигнала на линии USB в статическом режиме - не более 0,3 В, а высокий - не менее 2,8 В, причем приемник рассчитан на входное напряжение в диапазоне -0,5...+3,8 В. Состояние на шине USB характеризуется сочетанием линейных и дифференциальных сигналов (табл. 2.7).
136
Многоуровневая система шин
Рис. 2.91. Диаграмма сигналов, формируемых хостом
Модель шины USB	137
Рис. 2.92. Блок-схема вставки нуля
Программа, реализованная на Flash, представляет собой фильм. Фильм состоит из сцен с временными шкалами, на рис. 2.95 отмечена цифрой 1 линейка кадров. Кадры, например 2, могут проигрываться как по очереди, так и подчиняясь заданному алгоритму. На временную шкалу (в кадры) помещают объекты, называемые символами: графический символ, кнопка, видеоклип. Так же мож-
138
Многоуровневая система шин

D+—i,—i,------------и—«	,—
D_ Л ,__Х ЕОР 21
Состояние “Г. V и начало пакета (SOP - Start of Poo et)
Устройство отключено
Устройство подключено
• Состояние ’начало’ и ’конец ’ пакета (ЕОР - End of Pocket
Состояние 'Лмнейный нуль’ (SEO - single-ended zero)
Рис. 2.93. Экран состояний шины USB
Модель шины USB
139
Таблица 2.7	
Состояние	Форма сигналов на дифференциальных линиях
Состояние «J»,	D+	
состояние простоя	“J"
(дифференциальная 1,	D-		
ожидание)	
Состояние «К»	D+ ~\/ \/ 
(дифференциальный 0)	Л “к” Л
	
Состояние		 D+
«подключено	s'
полноскоростное		1	 D-
устройство»	*	й»
	£2.5 мс
Состояние	D+ 	к
«устройство отключено»	
	D- 	
	> 2.5 мс
Состояние	D+ \
SEO (signal-ended zero),	\
линейный нуль (сброс)	D- 	!—J- < 0.6 В
	
	Юме
Состояние	ЕОР
«конец пакета»	D+ ГЛ (2Т) Г7
	о Л	А	L	х
	простой
	, где Т - период передачи бита	Т Т Т
	V	v w
	1		1	1
Состояние	D+		
«начало пакета»	“j” ¥ ик” ¥
	D	U'	м	
	простой
Модели были разработаны в среде Macromedia Flash MX Professional 2004	
но, как и в других средах программирования, использовать в ее средствах стандартные компоненты. Панель компонент отмечена цифрой 5 (рис. 2.95). Каждый символ обладает индивидуальными свойствами.
Для облегчения работы с объектами используются слои. Слой определяет глубину объекта относительно других объектов (один над другим), направление движения, видимую область сцены. Также слои используются для описания поведения объектов.
Как положено любому фильму, у модели есть свой сценарий (алгоритм). Алгоритм поведения объекта описывается ActionScript’oM, и для его реализации Acti-onScript предлагает использование множества функций и обработчиков событий. Область для написания программного кода на рис. 2.95 отмечена цифрой 4.
Алгоритмы первой модели представлены на рис. 2.96-2.98.
Программный код в книге не приводится.
140
Многоуровневая система шин
• Г lash F.» кя.1 VHw foMrt М»»Гу Text Commands Control Debug Window Help «1 Mon 11:24 AM Q
Рис. 2.95. Элементы рабочей среды программы Flash
Справочное дополнение
Для подключения к порту USB предусмотрены соответствующие кабели с двумя разъемами на концах, причем один разъем служит для сопряжения с шиной USB, а другой является разъемом устройства со встроенной схемой сопряжения. Например, на рис. 2.99 показан кабель USB/IDE, предназначенный для связи с внешними накопителями, поддерживающими интерфейс IDE (жесткие диски, CD или DVD и другие устройства).
На рис. 2.100 представлена печатная плата сопряжения (мост) IDE/ USB.
Для построения устройств сопряжения IDE/ USB можно использовать микроконтроллер GL811 USB фирмы Genesys Logic. Кроме того, известен более сложный микроконтроллер CY7C68013, содержащий пять 8-битных портов ввода/ вывода, интерфейсы USB, 12С и RS-232.
Применение устройств с интерфейсом USB
На рис. 2.101 представлена схема подключения принтера USB с помощью преобразователя RS/USB(MHKpocxeMbi FT8U232AM [10]) к персональному компьютеру (ПК), имеющему последовательный порт (COM-port) с шиной RS-232.
На рис. 2.102 изображена схема сопряжения различных устройств USB с ПК с помощью расширителя (хаба).
Кроме того, выпускаются USB-хабы, содержащие несколько портов USB, последовательный и параллельный порты; USB-мониторы; USB-мыши; USB-кла-виатура: USB-колонки и т. д.
Модель шины USB
141
Рис. 2.96. Алгоритм программы, моделирующей процесс передачи
142
Многоуровневая система шин
Модель шины USB	143
Рис. 2.98. Алгоритм программы графического представления состояний шины
144
Многоуровневая система шин
Рис. 2.100. Плата сопряжения IDE/ USB
X/Y-преобразователь RS/USB
Рис. 2.101. Схема сопряжения последовательного порта ПК с принтером USB
На рис. 2.103 показана схема связи USB-сканера с ПК, содержащим параллельный (LPT) порт. Для выполнения этой цели можно использовать микросхему (мост) FT8U245AM [10].
На рис. 2.104 представлена схема сопряжения ПК и накопителя жесткого магнитного диска (НЖМД), содержащего интерфейс IDE, с помощью смарт-ка-беля USB/IDE (рис. 2.99).
Шина l€€€1394
145
Хаб - расширитель (активный или пассивный)
Рис. 2.102. Схема подключения устройств USB к ПК с использованием хаба
	ПК	LPT-port РВ >—>с				
			X/Y PB/USB	USB >—н:	Сканер USB	
		РВ - параллельная шина				
Рис. 2.103. Схема связи параллельного порта ПК и USB-сканера						
Смарт-кабель USMDE
Рис. 2.104. Схема подключения НЖМД IDE к ПК с USB-портом
2.8.	Шина IEEE1394
Высокоэффективная последовательная шина IEEE 1394 предназначена для подключения жестких дисков и видеосистем» требующих передачи данных со скоростью более 100 Мбит/с. Шина IEEE 1394 обеспечивает передачу данных со скоростью 200 и 400 Мбит/с» и разрабатываются ее модификации со скоростью
146	Многоуровневая система шин
передачи 1600 Мбит/с. Поэтому шина 1394 получила название «огневой провод» (FIRE WIRE). Шина IEEE 1394 объединяет устройства в древовидную структуру (домашнюю сеть) без петель и предусматривает применение мостов, концентраторов и повторителей. Мосты позволяют соединить несколько древовидных структур вместе, концентраторы (узлы) - несколько ветвей, а повторители используются для усиления сигналов, если длина кабеля превышает стандартный размер сегмента (4,5 м). Общая длина кабеля структуры равна 72 м, и расстояние между двумя узлами не должно превышать более 12 кабельных сегментов. В шине используется 6-жильный кабель, в котором два провода применяются для подачи питания, а две экранированные витые пары - для последовательной дуплексной передачи. Напряжение питания определятся диапазоном от 7.5 В до 40 В. Предусматривается гальваническая развязка компонентов и кабеля шины. Каждый узел структуры содержит несколько одинаковых разъемов, к которым с помощью специальных соединителей подключаются другие компоненты.
Шина IEEE 1394 позволяет подключить до 63 устройств. Адрес пакета содержит 64 бита, из которых 10 бит используются для выбора сети, 6 бит - на выбор устройства (адрес 63 зарезервирован) и 48 бит - на выбор порта внутри устройства. При подключении (отключении) устройства к шине или включении питания обеспечивается автоматическое конфигурирование системы.
Узел, обнаруживший изменение конфигурации, формирует сигнал сброса, который по длительности больше, чем длительность фрейма. Затем диспетчер устанавливает топологию дерева, образованного подключенными устройствами, выделяются идентификационные номера узлам, требуемые каналы и полосы. После этого выполняется работа шины, связанная с передачей данных.
Работа интерфейса разбивается на временные отрезки по 125 мкс, которые называются фреймами, используемые для передачи пакетов. Каждому устройству на этапе инициализации может быть отведено несколько логических каналов и требуемое время из общего количества фреймов. Протокол шины IEEE 1394 поддерживает изохронную и асинхронную передачи данных, причем для изохронной передачи (передачи без подтверждения получения данных целью) используется начальная часть фрейма, а для асинхронной передачи данных (команд) -остаток фрейма. При асинхронной передаче от передатчика к приемнику направляется пакет, содержащий их адрес и данные. После этого приемник возвращает пакет подтверждения, в котором отмечается достоверность передачи.
Если должна выполняться изохронная передача, то соответствующий объект запрашивает у диспетчера выделение полосы (пропускной способности). Диспетчер изохронных ресурсов выделяет каждому ресурсу номер канала (0-63), который является идентификатором соответствующего пакета. После завершения передачи освобождаются канал и полоса.
Стандарт IEEE 1394 описывается на трех уровнях: транзакции, связи и физическом.
На уровне транзакции выполняется протокол запросов (ответов) и обеспечивается минимизация аппаратных средств, необходимых для сопряжения шины IEEE 1394 с параллельными шинами компьютера. На уровне связи выполняются формирование пакетов, их передача и прием, а также управление и контроль изохронными передачами.
На физическом уровне осуществляются инициализация, арбитраж, кодирование и декодирование данных.
На рис. 2.105 показан один из вариантов структуры интерфейса IEEE1394.
Последовательный интерфейс SRTR
147
Шина PCI
Рис. 2.105. Один из вариантов структуры интерфейса IEEE 1394
Фирмой ADAPTEC выпускается контроллер, имеющий слот для соединения с шиной PCI, содержащий два порта шины IEEE 1394 (200 Мбит/с) и один порт шины SCSI. Разрабатываются микросхемы для подключения к шине IEEE 1394, например, CD-ROM или IDE-контроллеров НЖМД.
В заключение отметим отличительные признаки шины IEEE 1394 при сравнении ее с шиной USB: более высокая пропускная способность и возможность децентрализованного принципа обмена данными устройств, подключенных к шине.
2.9.	Последовательный интерфейс SATA
Serial АТА (Advanced Technology Attachment) - высокоскоростной последовательный интерфейс, предназначенный для устройств хранения информации HDD, CD и DVD с возможностью «горячего» подключения и замены.
Функциональная классификация интерфейса SATA
Дисциплина обслуживания - подключение устройств типа «точка-точка», к одному контроллеру с помощью одного кабеля SATA может быть присоединен один жесткий диск или дисковод CD (DVD), рис. 2.106.
При таком подключении отсутствует необходимость задания с помощью перемычек режима Master или Slave, присущего параллельной шине АТА.
Способ передачи данных - последовательный по байтам и последовательный по битам.
Временное согласование - асинхронная передача данных с произвольными интервалами времени и нестрогими требованиями ко времени ожидания.
Вид передачи с учетом направления - дуплексный, данные могут передаваться в обе стороны по четырем проводам. По двум проводам А+ и А- данные передаются в одну сторону, и по другим проводам В+ и В- данные посылаются в обратную сторону (рис. 2.107).
148
Многоуровневая система шин
Представление битов данных - дифференциальными сигналами: А+ и В+ -прямые представления входных сигналов, а А- и В— обратные значения этих же сигналов. Дифференциальная передача увеличивает помехозащищенность данных, так как устраняются синфазные помехи и можно снизить уровень сигналов до 250 мВ.
Структура передаваемых данных - пакеты различного назначения, определяемые протоколом передачи данных, синхронизацией, контролем и соответствующим управлением работой ЖД, CD или DVD.
Последовательный интерфейс SRTR	149
Мультиплексирование - передача адреса данных, команд и состояния по одной и той же шине. Отсутствует ограничение на величину номера цилиндра, что позволяет использовать большие по емкости диски.
Режим обмена - программный, обмен между контроллером и устройством осуществляется с помощью соответствующих портов под управлением драйвера контроллера, причем в ЖД-SATA используются те же регистры, что и в ЖД-РАТА (сохранена аппаратная совместимость).
Методы кодирования - кодирование NRZ и избыточные коды 8/10. При дифференциальной передаче или хранении в ЖД (CD, DVD) длинных последовательностей 1 и 0 применяют кодирование NRZ. определяющее положение 1 и 0 в таких последовательностях (рис. 2.108).
Код NRZ
Код данных
Дифференциальные сигналы
Недостаток такого кодирования состоит в том, что если встречается длинная последовательность нулей, то электроника на приемной стороне может дать сбой в определении положения битового интервала для нуля.
Слишком много единиц в коде (переключений дифференциального сигнала) также нежелательно, так как это ограничивает скорость передачи данных. Поэтому при кодировании ищут оптимальное число нулей (не больше и не меньше), соответствующих неизменяемому (постоянному) уровню дифференциального сигнала, и минимальное число единиц, соответствующих переключению дифференциального сигнала.
Эта задача решается с помощью кодирования 8/10 (аналогия с кодами CD 8/14). При кодировании 8/10 байты заменяются 10-битными кодами, дающими 1024 возможные комбинации, из которых выбираются 256 двоичных кодов с ограниченным числом нулей.
Защита данных от ошибок выполняется путем использования кодов CRC (циклических избыточных кодов), формируемых из блоков передаваемых данных с помощью порождающего полинома.
150	Многоуровневая система шин
Арбитраж - канальная операция SATA, возникающая при одновременном обращении к шине контроллера и устройства, желающих передать друг другу данные.
Параметрическая классификация SATA и РАТА представлена в табл. 2.8.
Таблица 2.8		
Параметры	SATA1	РАТА (Ultra АТА133)
Скорость (Мбайт/с)	150	133
Длина(м)	1	0,45
Число проводов	7	80
Емкость (Гбайт)	Размерность без ограничений	Мах 137 Г байт
Примечание: SATA2- 300 Мбайт/с, SATA3- 600 Мбайт/с		
Выводы:
•	SATA имеет почти такую же скорость передачи данных, как Ultra АТА 133;
•	применение тонкого кабеля SATA вместо большого плоского шлейфа РАТА и наличие двух небольших разъемов позволяют упростить подключение устройства к контроллеру, повышают надежность интерфейса за счет уменьшения числа контактов, позволяют увеличить частоту передачи данных и улучшают циркуляцию воздуха в компьютере;
•	SATA обладает пониженным энергопотреблением;
•	возможность сопряжения SATA с помощью соответствующего адаптера с РАТА (рис. 2.109) с учетом их регистровой совместимости.
Шина PCI
Рис. 2.109. Схемы сопряжения РАТА и SATA
Последовательный интерфейс SRS
151
Жесткий диск с шиной SATA содержит два разъема: 7-контактный разъем для передачи информации и 15-контактный разъем для подключения питания.
2.10.	Последовательный интерфейс SAS
Интерфейс SAS (Serial Attached SCSI, последовательное подключение SCSI) имеет следующие функциональные признаки.
Дисциплина обслуживания - подключение к контроллеру периферийного устройства (накопителя) по типу «точка-точка», что позволяет обеспечить высокую скорость передачи данных в системе сбора и хранения данных (рис. 2.110).
Предусматривается наращивание системы сбора и хранения данных с помощью SAS-экспандеров (расширителей-коммутаторов).
Контроллер (хост)
Порт1 Порт2
SAS SAS
£ Накопитель2
£ Накопитель!
Рис. 2.110. Простая система использования SAS
На рис. 2.11 1 представлена организация SAS-домена, включающая до 128 приводов жестких дисков и периферийных устройств различного назначения.
Домен - группа ресурсов, управляемая одним устройством.
Главный экспандер в домене является одним таким устройством и управляет работой всех других 128 SAS-устройств. Периферийные экспандеры позволяют связать инициаторы и дисководы накопителей в каждом узле домена.
Мультиплексирование - передача адреса, данных, команд и состояния по одной и той же шине.
Представление битов данных - дифференциальными сигналами.
Вид передачи данных с учетом направления - дуплексный (рис. 2.112), выполненный с помощью двух дифференциальных каналов, один из которых служит для передачи информации, а другой - для ее приема.
Дуплексные дифференциальные каналы могут объединяться для образования «широких» портов, содержащих несколько таких каналов, позволяющих увеличить пропускную способность порта.
Протокол SAS использует уникальные 64-битные имена - WWN (World Wide Name) для всех SAS-устройств. При «горячем» подключении нового устройства в систему или его выключении экспандер выполняет переконфигурацию и присваивает всем устройствам имена WWN. Затем выполняется со стороны экспандера этап инициализации SAS-устройств, состоящий в определении их конфигурационных данных и дальнейшей настройки. После этого осуществляется
152
Многоуровневая система шин
передача команд, данных и состояния по линиям SAS, объединенным в SAS-фреймы (аналогия с фреймами шины USB).
Параметрическая классификация PSCCI и SAS представлена в табл. 2.9.
Последовательный интерфейс PCI Cxpress
153
Таблица 2.9		
Параметры	PSCSI (Ultra SCSI320)	SAS
Скорость (Мбайт/с)	320	От 320 до 1200
Длина кабеля (м)	12	Сегмент - 8 (при наращивании до 120 м)
Количество подключаемых устройств	15	До 128 в домене
Ширина шины (количество линий данных)	16	4
2.11.	Последовательный интерфейс PCI Express
Основные определения
Шина PCI (Peripheral Component Interconnect, Соединение периферийных компонент) - 32/64-битная мультиплексная синхронная параллельная шина общего назначения с пакетной передачей данных. Шина PCI обеспечивает доступ к трем адресным пространствам: памяти, ввода/вывода и конфигурации. К шине PCI подключается до 10 плат расширения, в том числе контроллер PCI. Известны различные модификации этой шины, связанные с увеличением тактовой частоты, например PCI Х-533 с тактовой частотой 533 МГц.
Шина AGP (Accelerated Graphics Port, Улучшенный графический порт) - локальная 32-битная шина, предназначенная для сопряжения графического контроллера с северным мостом системной платы. Шина AGP является дальнейшим развитием шины PCI и характеризуется в базовом варианте 32-битной конвейерной параллельной передачей данных и 32-битным адресом, передаваемым параллельно-последовательно по отдельной 8-битной шине, четырьмя скоростями передачи данных от 1х (256 Мбайт/с) до 8х (2 Гбайта/с). К шине AGP возможно подключение одного или двух устройств (версия 3.0).
Шина PCI Express - последовательная пакетная асинхронная шина общего назначения, выполняющая соединения типа «точка-точка» и имеющая различные варианты построения в зависимости от числа используемых последовательных дуплексных дифференциальных каналов связи. Стандартизованы 1-, 2-, 4-, 8-, 16- и 32-канальные варианты. Каждый канал содержит четыре линии (по две дифференциальные пары, одна из которых работает на передачу, а другая - на прием данных).
Шина Hyper Transport - осуществляет связь между устройствами по типу «точка-точка» и содержит линии связи асинхронной передачи (Тх) и линии асинхронного приема (Rx). Структура данных этой шины - пакетная, включающая до 64 байт. Как и в шине PCI Express, в шине Hyper Transport используется принцип масштабируемости, позволяющий выбрать дуплексные (двунаправленные) каналы с различным числом линий связи (2, 4, 8, 16, 32 или 64) в каждом направлении и различной соответствующей пропускной способностью от 200 до 800 МГц. Кроме того, предусматривается совместимость устройств с различными каналами.
Масштабирование - возможность использования различного числа каналов шины PCI Express в зависимости от применения шины и как следствие увеличение ее пропускной способности. Например, пропускная способность одного канала шины PCI Express - 250 Мбайт/с, четырех каналов - 1000 Мбайт/с, ..., 16 каналов - 4000 Мбайт/с в каждом направлении (рис. 2.113).
154
Многоуровневая система шин
х1
250 Мбайт/с
А и Б устройства PCI Express
Рис. 2.113. Масштабирование скорости передачи данных
Если в шине PCI используются параллельная передача по байтам и последовательная передача битов в разных байтах (пространственный способ), то в шине PCI Express предусматривается набор каналов от последовательно-последовательной передачи (временной способ) до параллельно-последовательной передачи битов и байтов (пространственно-временной способ). Пространственный способ передачи данных связан с наличием большого числа контактов в слотах системной платы (32-битная шина PCI содержит 120 контактов в каждом разъеме) и такого же числа линий связи. Для 10 плат расширения (максимальная конфигурация) общее число контактов равно 1200, что существенно снижает надежность компьютера. Поэтому переход к пространственно-временному (параллельно-последовательному) способу передачи данных с учетом масштабирования позволяет оптимально подобрать пропускную способность канала для соответствующего устройства, существенно упростить аппаратурные затраты на организацию связи и повысить надежность компьютера.
Кодирование 8/10. Этот тип кодирования используется в PCI Express для выполнения той же цели, что и стаффинг (вставка 0 или 1) - для прерывания последовательности подрад идущих бит с одинаковым значением (длинных нулей или длинных единиц) при дифференциальной передаче данных (рис. 2.114).
Рис. 2.114. Иллюстрация замены байта 00h байтом в коде 8/10
При выборе 256 (28) 10-битных кодов из множества 210учитывают следующие требования: число 0 не должно быть большим (не больше и не меньше заданных чисел), в то же время число переключений (число единиц) должно быть минимальным. Число переключений влияет на скорость передачи битов по дифференциальным линиям.
Последовательный интерфейс PCI Cxpress	155
Кодирование NRZ - способ представления значений единичных и нулевых битов при дифференциальной передаче данных, причем единичные значения битов вызывают переключение дифференциальных сигналов, а нулевые - нет (рис. 2.1 13). По длительности уровня дифференциального сигнала определяют количество содержащихся в нем нулевых битов. Кодирование NRZ является са-мосинхронизирующимся методом кодирования данных. Кодирование NRZ используется после кодирования 8/10 перед выводом битов в коде NRZ на дифференциальные линии.
Кодирование CRC - вычисление циклического избыточного кода-остатка от деления полинома данных на порождающий полином. При передаче данных код остатка (код CRC) записывается после поля данных в каждом пакете. При приеме данных повторяют вычисления (операцию деления на порождающий полином). Если остаток от деления равен 0, то передача данных прошла успешно, если не равен 0, то произошла ошибка.
Дуплексная дифференциальная передача данных - передача данных по двум парам дифференциальных проводов в двух разных направлениях (рис. 2.115) с использованием дифференциальных передатчиков и приемников.
Рис. 2.115. Дуплексная дифференциальная передача
Дифференциальная передача - передача с использованием специальных дифференциальных передатчика и приемника, связанных парой скрученных проводов, по которым передаются разнополярные сигналы (D+ и D-), один из которых является входным сигналом D+, а другой - его инверсией D-. Дифференциальный приемник очень хорошо устраняет синфазные помехи в проводах, что повышает помехоустойчивость дифференциальной передачи.
PCI Express - последовательная шина ввода/вывода с возможностью наращивания (масштабируемости) дифференциальных независимых 4-проводных полнодуплексных каналов связи.
156
Многоуровневая система шин
Функциональная классификация шины PCI Express
Дисциплина обслуживания - организация связи компонентов внутри компьютера по типу «точка-точка». PCI Express является шиной ввода/вывода третьего поколения и имеет еще другое начальное название - 3GIO (Generation Input Output). Шина PCI Express предназначена для использования в настольных персональных компьютерах, серверах, ноутбуках и других устройствах для подключения видеокарт, сетевых контроллеров, RAID-контроллеров жестких дисков, ТВ-тюнеров и т. д.
Способы передачи данных - последовательно-последовательный с использованием одного канала связи (одноканальный вариант шины) и параллельнопоследовательный, связанный с применением нескольких каналов связи: 4, 8, 16, 32 (рис. 2.116).
Рис. 2.116. Способы передачи данных а; одноканальный (х1), б) многоканальный (х16)
На рис. 2.116 показана дуплексная (двухсторонняя) передача данных между устройствами А и Б, но возможна и симплексная передача пакета данных от одного устройства к другому с использованием всех каналов (линий) шины PCI Express (рис. 2.117).
На рис. 2.117 показано, как распределяются байты данных по четырем каналам, причем для каждого канала выполняются кодирование 8/10 и кодирование NRZ. Все каналы работают независимо и асинхронно.
Методы кодирования: кодирование 8/10 и кодирование NRZ. Кодирование 8/10 заключается в том, что каждый байт заменяется табличным 10-битным кодом. Аналогичный метод используется в дисководах CD (DVD), где для каждого байта выбирается 14-битный код с ограниченным набором числа нулей (не более 10 и не менее 4). Такое кодирование позволяет ограничить длинную последовательность нулей с целью исключить возможность сбоя схемной электроники, определяющей положение битового интервала (число нулей). Кодирование NRZ также широко применяется при передаче длинных последовательностей 0 и 1 или при их записи на дорожку жесткого диска (компакт-диска). Этот метод позволяет наиболее просто задать значение 0 и 1 для дифференциальной передачи сигналов или при их записи на жесткий диск (компакт-диск).
Структура данных - пакеты различного назначения, определяемые соответствующими устройствами PCI Express.
В общем случае формат пакета содержит заголовок, поле данных и избыточный циклический код CRC (раздел 7). В заголовке указываются: тип пакета (па-
Последовательный интерфейс PCI express
157
Распределение байтов
Кодирование Кодирование 8/10	NRZ
Рис. 2.117. Параллельно-последовательная передача байтов данных по четырем каналам
мять, ввод/вывод, конфигурация, сообщение и т. д.), получатель пакета (шина, устройство, функции устройства), адрес памяти, объем данных в пакете и т. д. Кроме того, перед заголовком передается порядковый номер пакета. Каждый пакет ограничивается начальным и конечным фреймами: начальный фрейм, номер пакета, заголовок, данные, CRC, конечный фрейм.
Временное согласование - асинхронная и независимая передача данных в каждом канале.
Представление бита данных - низковольтный дифференциальный сигнал (сигнальный уровень 0,8 В).
Физическая среда передачи данных - медные провода или оптические волноводы.
Шина PCI Express может быть использована в различных компьютерных конфигурациях (архитектурах), представленных на рис. 2.118и2.119. На рис. 2.118 показана простая архитектура использования шин PCI Express, которая содержит 16-канальную шину для связи с графическим контроллером, подключенным к процессору с помощью этой шины через чипсеты северного моста, и несколько более простых от 1-канальных до 4-канальных шин PCI Express. Таким образом, 16-канальная шина PCI Express является быстродействующей локальной шиной и имеет наиболее близкий доступ к шине процессора. Другие шины PCI Express с меньшим числом каналов используются для подключения более медленных периферийных устройств.
Применение многопортового коммутатора в компьютерной архитектуре (рис. 2.119) расширяет его функциональные возможности, так как позволяет осуществить более гибкую пространственную связь типа «точка - много точек».
Параметрические классификационные признаки:
Скорость передачи данных - 2,5 Гбита/с (250 Мбайт/с), 5 Гбит/с (PCI Express 2.0).
158
Многоуровневая система шин
Рис. 2.118. Простая архитектура использования PCI Express
Рис. 2.119. Архитектура, содержащая коммутатор PCI Express
Длина кабеля - до 10 м (Express 2.0).
Частота шины PCI Express - 100, 125 и 250 МГц.
Потребление энергии платой - 225-300 Вт (Express 2.0).
Число контактов в разъемах: PCI Express xl - 36, PCI Express х4 - 64, PCI Express x8 - 98, PCI Express x 16 - 164, PCI Express x32 - 294.
Относительно большое число контактов разъемов PCI Express связано не только с выполнением передачи данных, но и с определением типа установленной карты, реализацией «горячего подключения» разводкой питания +12 и +3,3 В и экранирующих проводов «земля» и т. д.
Последовательный интерфейс PCI Express
159
Справочное дополнение
На рис. 2.120 показана цоколевка слотов PCI Express xl и х4.
					
+12V					PRSNT1#
+12V					+12V
reserved					+12V
GND					GND
SMCLK					JTAG2
SMDAT					JTAG3
GND					JTAG4
+3.3V					JTAG5
JTAG1					+3.3V
+3.3Vaux					+3.3V	-
WAKE#					PWRGD <g
					I	E
					I 1 я
					
					£
reserved					GND	g
GND					REFCLK+ §
HSOp(O)					REFCLK- 8
HSOn(O)					GND	£
GND					HSIp(0) §
PRSNT2#					HSIn(0) о
GND				—	GND
HSOp(1)					reserved
HSOn(1)					GND
GND						HSIp(1)
GND HSOp(2)	—			—	HSIn(1) * GND	g
HSOn(2)					GND	“ HSIp(2) £
GND						
GND HSOp(3) HSOn(3) GND	—			—	HSIn(2) £ GND	|5 GND	§ HSIp(3) «
reserved PRSNT2# GND	—			—	HSIn(3) | GND	? reserved x
GND (Ground) - «земля»,
SMCLK и SMDAT (System Management Bus) - Clock и Data - опорный сигнал и сигнал данных,
JTAG1-JTAG5 -контакты интерфейса JTAG, WAKE# - линия сигнала пробуждения устройства,
PRSNTn# - (Present) - n-я линия обнаружения установленной платы PCI Express (по одной на каждый уровень — х1, х4, х8, х16), PWRGD - Power Good, REFCLK - Reference Clock, опорный тактовый сигнал шины, HSIp(k)-HSIn(k) - k-я линия приема данных, HSOp(k)-HSOn(k) - k-я линия передачи данных
Рис. 2.120. Цоколевка слотов PCI Express х1 их4
160	Многоуровневая система шин
Контрольные вопросы
Тест раздела «Шина SCSI»
1.	Укажите индентификатор, который имеет хост - адаптер шины SCSI:
1)	0;	2) 1;	3) 6;	4) 7.
2.	Назовите фазу шины SCSI, использующей индентификатор:
1)	«Шина свободна»;
2)	«Арбитраж»;
3)	«Сообщение»;
4)	«Команда».
3.	Идентификатор в шине SCSI применяется для задания:
1)	только приоритета;
2)	только адреса;
3)	приоритета и адреса;
4)	данных.
4.	Выберите правильное число байтов, которое имеет команда (дескрипторный блок) шины SCSI:
1)	4;	2) 6;	3) 8;	4) 16.
5.	Укажите, можно ли использовать идентификатор в фазе шины «Выбор» шины SCSI:
1)	да;	2) нет.
6.	Первый байт команды шины SCSI - это:
1)	номер исполнителя;
2)	номер логического блока;
3)	код операции;
4)	длина списка.
7.	Выберите тип, к которому относится интерфейс SCSI:
1)	приборный интерфейс;
2)	системный интерфейс;
3)	главный интерфейс;
4)	интерфейс малых вычислительных систем.
8.	Назовите количество устройств, которое может быть подключено к 8-битной шине SCSI, включая хост-адаптер:
1)	8:	2) 16;	3) 32;	4) 64.
9.	Назовите количество устройств, подключаемое к 16-битной шине SCSI:
1)	8;	2) 16;	3) 32;	4) 64.
10.	Укажите количество логических блоков, которое может содержать SCSI-устройство:
1)	8;	2) 16;	3) 32;	4) 64.
Контрольные вопросы	161
11.	Назовите максимальное количество субблоков логического устройства SCSI:
1)	32;	2) 64;	3) 128;	4) 256.
12.	Укажите устройства шины SCSI, которым назначается идентификатор:
1)	всем;
2)	исполнителям;
3)	инициаторам;
4)	хост-адаптерам.
13.	Назовите наивысший приоритет из следующих значений идентификаторов для шины SCSI;
1)	О;	2) 1;	3) 6;	4) 7.
14.	Выберите тип адреса, используемый для всех блоков данных интерфейсом SCSI:
1)	логический;
2)	физический;
3)	ассоциативный;
4)	произвольный.
15.	Назовите количество фаз, предусматриваемое протоколом шины SCSI:
1)	4;	2) 6;	3) 8;	4) 16.
16.	Фаза «Шина свободна» в шине SCSI определяется по следующим парам сигналов:
1)	SEL# = О, I/O#= 1;
2)	SEL# = 1,C/D#= 1;
3)	BSY# =0, SEL# = О;
4)	BSY# =1, SEL# =1.
17.	Укажите фазу шины SCSI, из которой выполняется переход в фазу «Арбитраж»:
1)	«Выбор»;
2)	«Шина свободна»;
3)	«Сообщение»:
4)	«Состояние».
18.	В фазе «Арбитраж» устройство SCSI устанавливает следующие сигналы:
1)	BSY# , ID1 ® DBj#;
2)	BSY#, SEL#;
3)	SEL#, I/O#;
4)	C/D#, BSY#.
19.	Выберите сигнал, относящийся к фазе передачи информации в шине SCSI:
1)	SEL#; 2) I/O#;	3) BSY#.
20.	Уровень представления сигналов на шине SCSI-2:
1)	биполярный;	2) униполярный; 3) дифференциальный.
162	Многоуровневая система шин
21.	Выберите пару сигналов шины SCSI, которая является квитирующей:
1)	BSY#, SEL#;
2)	SEL#, АСК#;
3)	BSY#, REQ#;
4)	REQ#.ACK#.
Тест раздела «Шина USB»
22.	Количество линий (проводников) в шине USB:
1)	2,	2) 6;	3) 4.
23.	Количество подключаемых устройств:
1)	512:	2) 127:	3) 256.
24.	Топология шины USB:
1)	кольцевая; 2) древовидная;	3) магистральная.
25.	Шина USB - это:
1)	параллельная шина:
2)	последовательная шина;
3)	комбинированная шина.
26.	Функция хоста USB:
1)	модуляция;
2)	конфигурация;
3)	фильтрация.
Тест раздела «Основные определения протокола передачи данных шины USB»
27.	Группа запланированных хостом для передачи пакетов, в которых задается начало, конец и ее номер, называется:
1)	фрейм:	2) протокол:	3) транзакция.
28.	Пакет квитирования содержит символ:
1)	EOT; 2) CAN; 3) АСК.
29.	В формат пакета SOF включен:
1)	номер конечной точки:
2)	номер кадра;
3)	адрес устройства.
30.	Укажите размер, который имеет идентификатор пакета:
1)	16 бит;	2) 4 бита;	3) 8 бит.
Тест раздела «Функциональные признаки шины»
31.	Основной элемент в архитектуре USB:
1)	модем;
2)	хаб;
3)	гун (генератор, управляемый напряжением).
Контрольные вопросы	163
32.	Кодирование NRZI изменяет уровень сигнала при наличии в коде данных бита, равного:
1)	О;	2) 1;	3) основан на другом принципе.
33.	Выберите правильную вставку дополнительного О:
1)	код данных: 11111010—> код с дополнительным 0: 111110010:
2)	код данных: 11111 101 — > код с дополнительным 0: 111111001;
3)	код данных: 11111 101 — > код с дополнительным 0: 111111001.
34.	Метод кодирования данных:
1)	FM; 2) NRZI; 3) RLL.
35.	Основной способ обработки ошибок:
1)	контрольная сумма;
2)	чет:
3)	циклический избыточный контроль.
36.	Временное согласование устройств:
1)	синхронное;
2)	асинхронное;
3)	асинхронно-синхронное.
Тест раздела «Дифференциальная передача данных»
37.	Тип передачи в шине USB с указанием направления:
1)	дуплексный;
2)	симплексный:
3)	полудуплексный.
38.	Способ передачи данных по шине USB:
1)	симметричный дифференциальный;
2)	стартстопный;
3)	несимметричный.
39.	Вставка дополнительного 0 в код данных выполняется для:
1)	контроля данных;
2)	частотной коррекции;
3)	достоверного обнаружения бита.
40.	Выберите диаграмму «устройство отключено»:
D-
164
Многоуровневая система шин
41.	Назовите типы режимов, не относящихся к режимам передачи в шине USB:
1)	изохронный:
2)	кольцевой:
3)	больших объемов.
42.	Покажите очередность появления сигналов на шине PCI в режиме чтения данных:
1)	IRDY#,TRDY#, DEVSEL#:
2)	FRAME#, адрес (А), команда (С):
3)	данные (D) и разрешенные байты (BE).
43.	Укажите сигналы квитирования шины PCI:
1)REQ#:
2)	TRDY#:
3)	GNT#:
4)	IRDY#.
44.	Выберите типы информации, передаваемые в адресной фазе шины PCI:
1)	данные:
2)	команда:
3)	код разрешенных байтов:
4)	адрес.
45.	Диффренциальный усилитель представляет собой комбинацию следующих операционных усилителей:
1)	инвертирующего и интегрирующего:
2)	неинвертирутощего и интегрирующего:
3)	инвертирующего и неинвертирующего;
4)	дифференцирующего и интегрирующего.
Литература
1.	Скотт Мюллер. Модернизация и ремонт ПК: уч. пособие. 11-е изд. / пер. с англ. - М.: Изд. дом «Вильямс», 2000. - 1136 с.: ил.
2.	Колесниченко О. В., Шишигин И. В. Аппаратные средства PC. 5-е изд., пере-раб. и доп. - СПб.: БХВ- Петербург, 2004. - 1152 с.: ил.
3.	Минаси М. Модернизация и обслуживание ПК: полное руководство / пер. с англ. - Киев: Век +. М.: ЭНТРОП. 1999. - 1040 с.: ил.
4.	Авдеев В. А., Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства: уч. пособие. - М.: Радио и связь, 2001. - 480 с.: ил.
5.	Мураховский В. И., Евсеев Г. А. Железо ПК-2002: практ. руководство. - М.: ДЕСС КОМ, 2002. - 672 с.: ил.
6.	Хоровиц П., Хилл У. Искусство схемотехники: в 3 т. Т. 2 / пер. с англ. 4-е изд., перераб. и доп. - М.: Мир. 1993. - 371 с.: ил.
Литература
165
7.	Сопряжение датчиков и устройств ввода данных с компьютерами IBM PC / пер. с англ., под. ред. У. Томпкинса, Дж. Уэбстера. - М.: Мир, 1992. - 592 с., ил.
8.	Гук М. Аппаратные средства IBM PC: энциклопедия. - СПб.: Питер Ком, 1999. - 816 с.: ил.
9.	http://www. Pcisig.com/
10.	Преобразователи интерфейса USB на микросхемах FT8U232AM, FT8U245AM / А. Лысенко, Р. Назмутдинов, И. Малыгин // Радио. 2003. № 6. С. 20,21.
Интерфейсная схемотехника
3.1.	Основные определения
-j	-у нтерфейс (ГОСТ 15974-74) - совокупность унифицированных аппарат-f f них. программных и конструктивных средств, необходимых для реализа-ции взаимодействия различных функциональных элементов в автоматизированных системах сбора и обработки информации при условиях, предписанных стандартом и направленных на обеспечение информационной, электрической и конструктивной совместимости указанных элементов.
Другое определение интерфейса: совокупность средств и правил, обеспечивающих логическое и физическое взаимодействие устройств и (или) программ системы.
Еще проще: интерфейс - это унифицированная система сопряжения.
На рис. 3.1 показана упрощенная схема интерфейса процессора и периферийного устройства.
При подключении любого периферийного устройства к шине процессора необходимо использовать блок стандартного сопряжения и нестандартный блок, содержащий адресуемые регистры и узел управления.
Блок стандартного сопряжения (интерфейсная логика) содержит: приемопередатчик (BD), дешифратор (селектор) адреса и дешифратор управляющих сигналов (рис. 3.2).
Рис. 3.1. Упрощенная схема интерфейса процессора и периферийного устройства
Основные определения
167
Шины
Т - Transmit (передавать); BD - Data Bus Bidirectional (двунаправленная шина данных);
CS - Chip Select (выбор кристалла); IOR - Input Output Read (чтение ввода-вывода);
IOW - Input Output Write (запись ввода-вывода); AEN - Address Enable (разрешение адреса);
SADR - Strobe Address (строб адреса); A - Address; D - Data; RD - Read (читать);
WR - Write (записать); RG - Register (регистр); «-» - низкий активный уровень
Рис. 3.2. Блок стандартного сопряжения
С целью упрощения рисунков будем рассматривать 10-битовый адрес и 8-битные данные.
Дешифратор адреса опознает уникальный адрес периферийного устройства (ПУ], декодируя старшую часть адреса общую для всех адресуемых регистров ПУ и формируя сигнал - выбор ПУ. Иногда в качестве дополнительного адресного сигнала формируется сигнал AEN или SADR.
Приемопередатчик BD предназначен для согласования электрических характеристик шины данных D7-D0 и внутренней шины данных BD7-BD0 и управления направлением передачей данных (при Т=0 передача с В на А).
При записи данных в адресуемые регистры приемопередатчик BD открыт в направлении от А до В, так как сигнал -IOR (чтение данных) отсутствует (сигнал -IOR имеет пассивный высокий уровень).
Дешифратор управляющих сигналов с учетом входных сигналов: -Выбор ВУ. -IOR или -IOW (запись данных) и двух младших битов адреса Aj и Ао формирует сигнал записи данных в соответствующий регистр (WR RG.) или чтение данных из соответствующего регистра (RD RG.).
Диаграммы записи и чтения данных представлены на рис. 3.3.
	Запись (OUT)	Чтение (IN)
Процессор	ПУ	Процессор	ПУ	
	Адрес	Адрес
Данные		Чтение (-IOR)
Запись (-IOW)		Данные
а	'	б	
Рис. 3.3. Диаграммы: а) записи; б) чтения данных		
168
Интерфейсная схемотехника
Ha шине процессора возможны следующие комбинации значений сигналов -IOR и -IOW (табл. 3.1.).
Таблица 3.1
-IOW	-IOR	Операция
0	1	Запись
1	0	Чтение
1	1	Ожидание
Комбинация -IOR=0 и -IOW=0 является недопустимой, так как эти активные сигналы являются взаимоисключающими, то есть на шине всегда выполняется одна операция.
Диаграмма записи данных (рис. 3.3а) осуществляется на шине, если процессор выполняет ассемблерную команду out, в которой задаются адрес регистра ПУ (получателя данных) и адрес регистра процессора (источника данных), например:
адрес порта пыпола
mov dx, DataPorl out dx, al
; засылаем в dx адрес порта
; выводим в порт данные
Диаграмма чтения данных (рис. 3.36) реализуется на шине, если процессор выполняет ассемблерную команду in:
адрес порта ввода
mov dx, Data Port out al, dx
данные
; передаем в dx адрес порта
; вводим в al содержимое порта
Ввод - передача данных от исполнителя (ПУ) к мастеру (процессору) по следующей схеме:
ПРОЦЕССОР <г- ДАННЫЕ <г- ПУ.
Вывод - передача данных от мастера (процессора) к исполнителю (ПУ), то есть данные передаются по схеме:
ПРОЦЕССОР ДАННЫЕ ПУ.
Термины «Ввод» и «Вывод» всегда следует рассматривать по отношению к мастеру (процессору) - это принятое среди разработчиков компьютерных устройств соглашение. Название «регистр ввода» указывает на то, что содержимое этого регистра передается (вводится) в процессор, а название «регистр вывода» - на то, что процессор посылает данные в этот регистр.
Основные определения
169
Процессор читает данные регистра ввода и принимает их в собственный регистр.
Порт:
1)	место (разъем) подключения периферийного устройства к компьютеру (порт клавиатуры, мыши, дисплея и т. д.);
2)	интерфейс сопряжения процессора с адресуемым регистром, формирователем, триггером.
На рис. 3.4 показана схема подключения модема к последовательному порту компьютера.
Интерфейс модем/компьютер включает в себя: разъемы, кабель RS-232, последовательный порт (микросхему универсального асинхронного приемопередатчика УАПП, выполняющую преобразование параллельного кода в последовательный заданного формата и наоборот), сопряженный с процессором компьютера. Для выполнения модемной связи компьютер и модем осуществляют соответствующий протокол совместной работы. Микросхема УАПП содержит около 10 адресуемых регистров.
Линия связи
Интерфейс RS-232
Рис. 3.4. Схема подключения модема к последовательному порту
Базовый адрес - младший из группы смежных адресов портов, через которые выполняется доступ к периферийному устройству. Например, последовательный порт (СОМ 1) имеет базовый адрес 3F8h и ему выделены следующие адреса: 3F8h-3FFh.
Для периферийных устройств, отвечающих требованиям РаР, базовый адрес назначается хост-контроллером интерфейса.
На рис. 3.5 представлен интерфейс портов (регистров) ввода и вывода.
Принцип работы схемы следующий. Запись байта данных осуществляется в регистр вывода RGDO в соответствии с временной диаграммой (рис. 3.3). Процессор выводит адрес на шину адреса, который затем декодируется (опознается) дешифратором адреса, и байт данных на шину данных. Приемопередатчик BD открыт в направлении от А к В (Т= 1), поэтому данные D7-D0 поступают по шине BD7-BD0 на входы регистра RGDO. После этого процессор устанавливает сигнал -IOW и дешифратор управляющих сигналов (ДшУС) формирует сигнал -WR, записывающий байт данных в регистр RGDO.
Чтение содержимого регистра RGDI выполняется также в соответствии с временной диаграммой (рис. 3.4). Процессор посылает по шине адрес, который опознается дешифратором адреса, и устанавливает сигнал чтения -IOR. Дешифратор ДшУС формирует с учетом сигнала -Выбор ПУ управляющий сигнал -RD, передающий содержимое регистра RGDI через приемопередатчик BD (Т=0
L
170
Интерфейсная схемотехника
RGDI - регистр ввода, RGDO - регистр вывода; -WR - запись, -RD - чтение; BD - приемопередатчик; ДшУС - дешифратор управляющих сигналов
Рис. 3.5. Интерфейс портов ввода и вывода
и направление передачи данных от В к А) на шину D7-D0, с которой данные вводятся в собственный регистр процессора, указанный в ассемблерной команде in.
Запись данных в регистр RGDO может выполняться по заднему или переднему фронту сигнала -IOW в зависимости от требований интерфейсного стандарта.
Передний фронт - для сигнала с активным низким уровнем - переход с 1 на 0, а для сигнала с активным высоким уровнем - с 0 на 1 (рис. 3.6).
Рис. 3.6. Фронты сигналов с активным низким (-IOW) и активным высоким (IOW) уровнями
Задний фронт - для сигнала с активным низким уровнем - переход с 0 на 1, а для сигнала с активным высоким уровнем - переход с 1 на 0.
Активный низкий уровень сигнала обозначается следующим образом: IIOW, -IOW, #IOW, /IOW в зависимости от типа интерфейса.
Основные определения	171
Положительный фронт - переход уровня сигнала с низкого на высокий.
Отрицательный фронт - переход уровня сигнала с высокого на низкий.
Запись данных в шине ISA (Industry Standard Architecture - стандартная промышленная архитектура) выполняется по заднему положительному фронту сигнала-IOW (рис. 3.7).
А9-А0
D7-D0
-IOW
портом
Рис. 3.7. Диаграмма шины ISA. а) вывод данных, б) ввод данных
В том случае, если момент записи данных выполняется по заднему положительному фронту сигнала -IOW, то необходимо учитывать фронт сигнала записи, формируемого дешифратором управляющих сигналов (рис. 3.8).
В шине PCI (Peripheral Component Interconnect - взаимодействие периферийных компонентов) обработка (фиксация) адреса и данных выполняется по положительному фронту сигнала CLK (рис. 3.9).
172
Интерфейсная схемотехника
Регистр - запоминающее устройство, предназначенное для временного хранения информации и имеющее заданную емкость. Каждый регистр имеет собственный формат и определенное функциональное назначение.
Различают следующие регистры (порты) периферийных устройств: данных, состояния, управления, команд, режимов и т. д. Любое периферийное устройство содержит от нескольких единиц до нескольких десятков регистров, выбор которых осуществляется младшими битами адреса. Так как микросхема имеет ограниченное число выводов, то иногда не хватает младших битов адреса для выбора всех регистров. В этом случае используют следующие два приема: в формате регистра задают адрес блока, для которого используется регистр, или в формате регистра управления задают определенный бит (1 или О), значение которого указывает, к какому регистру будет относиться следующий адрес.
Поясним первый случай. В микросхеме контроллера прямого доступа содержатся четыре канала (К3-К0). Каждый канал содержит определенное число одних и тех же адресуемых регистров, и для полной прямой адресации всех регистров не хватает младших четырех битов адреса (Ag-AJ. Поэтому для регистра режима указывается номер канала, к которому он относится (рис. 3.10).
	D7	D1	D0	
Рис. 3.10. Способ выбора регистра режима канала				
Во втором случае, например в микросхеме УАПП, в формате регистра управления бит D7 определяет назначение следующего передаваемого адреса: для выбора регистра данных или регистра делителя скорости (рис. 3.11).
Регистр управления
D7
I - по адресу 3F8h в регистр делителя скорости передается младший байт О - по адресу 3F8h выполняется доступ к регистру данных
Рис. 3.11. Выбор регистров по биту D7 регистра управления
Основные определения	173
Здесь следует отметить, что часто один и тот же адрес, например 3F8h, используется для выбора регистра вывода (передатчика) и регистра ввода (приемника), так как этот адрес применяется в разных циклах шины: записи (сигнал -IOW) и чтения (сигнал -IOR).
Выбор адресуемых регистров рассмотрим на примере микросхемы 18255 (программируемого параллельного интерфейса), которая содержит четыре 8-битовых порта: регистр управления, регистр А, регистр В и регистр С (рис. 3.12 и табл. 3.2).
-CS - выбор кристалла; -RD - чтение; -WR - запись; А1 и АО - биты адреса; W - доступ по записи; R - доступ по чтению; Z - состояние выключено, * - безразличное состояние
Рис. 3.12. Внешний вид микросхемы i8255
Таблица 3.2						
-CS	-RD	-WR	А1	АО	Порт	Доступ
0	1	0	0	0	РА	W
0	1	0	0	1	РВ	W
0	1	0	1	0		PC		W
0	1	0	1	1	РУ	W
0	0	1	0	0	РА	R
0	0	1	0	1	РВ	R
0	0	1	1	0	PC	R
0	1	1	★	★	Z	
1	★	★	★	★	Z	
Регистры (порты) А, В и С доступны по записи и чтению со стороны процессора в соответствии с табл. 3.2.
Рассмотрим запись байта данных в порт А. Пусть базовый адрес микросхемы, подключенной к шине процессора, - 300h (h - шестнадцатеричное значение).
174	Интерфейсная схемотехника
Двоичный эквивалент адреса 300h:
А9 А8 А7 А6 А5 А4 АЗ А2 Al АО
1 100000000
Из табл. 3.2 видно, что младшие биты адреса Ар Ао используются для выбора регистра (порта), а старшая часть адреса Ag-А, является общей для всех регистров, которая опознается дешифратором адреса для выбора микросхемы и разрешения работы приемопередатчика BD.
Процессор устанавливает адрес 1100000000 на шину адреса Ад-А0 и данные на шину D7-D0. Адрес А(-А; декодируется дешифратором адреса, сигнал с выхода которого разрешает работу микросхемы i8255. Данные D7-D0 поступают на входы всех портов микросхемы, но только регистр (порт РА) будет выбран для записи в него поступившего байта данных. Затем процессор устанавливает сигнал -IOW, по которому в порт РА (А1 АО = 00) осуществляется запись байта данных.
3.2.	Способы обмена данными
Различают три способа программного обмена данными между компьютерными устройствами: безусловный, условный (с опросом флага готовности) и прерывание.
Безусловный программный обмен - обычный способ ввода (вывода) данных из регистров (в регистры), который используется процессором с целью ввода сигналов от датчиков или с пульта оператора, вывода управляющих сигналов для электродвигателей, электромагнитов и других устройств.
Рассмотрим принцип построения упрощенной схемы программируемого параллельного интерфейса PPI (Program Parallel Interface), выполняющей только безусловный программный обмен (рис. 3.13).
В схеме применяется дешифратор управляющих сигналов DC, работа которого выполняется в соответствии с табл. 3.2. Для управления записью в регистр RGA служит сигнал -RW RGA = (-CS=0)*(-WR)*(A0=0)*(Al =0), где знак * - знак логического умножения. Аналогичным образом формируются и используются остальные сигналы дешифратора DC.
Работа приемопередатчика BDT была описана ранее. Следует только отметить, что если на входе Т сигнал -RD = 0, то направление передачи данных в приемопередатчике - с В на А, то есть сигналы с внутренней шины BD7-BD0 передаются на шину процессора D7-D0, а во всех других случаях направление передачи - с А на В, если выбрано устройство PPI.
Приемопередатчик BD9 имеет более сложную структуру, так как содержит байтовые входы DI, выходы Do и входы/выходы Do. Управление передачей данных в BD9 осуществляется с помощью сигнала на входе -Е, если Е = 0, то направление передачи со входов DI на входы/выходы DB (DI > DB), и наоборот, если Е = 1, то передача данных выполняется с входов/выходов DB на выходы Do. Приемопередатчик BD9 является своеобразным вентилем для пропускания электрических сигналов.
Кроме того, каждый порт PPI содержит шинный передатчик ВТ (Bus Transmitter), с помощью которого читается содержимое выбранного регистра RGA, RGB или RGC и затем данные поступают на внутреннюю шину BD7-BD0.
Способы обмена данными
175
О - вывод
Рис. 3.13. Упрощенная структурная схема PPI
Управление передачей данных в BD9 осуществляется регистром управления RG_ CTR, формат которого приведен на рис. 3.13. В этом регистре для программного управления работой каждого порта выделены три младших бита: Do для порта A, для порта В, D9 для порта С, в которых программируется соответствующая операция ввода или вывода (1 - ввод, О - вывод).
Принцип вывода данных из порта А можно представить следующей схемой:
D7-Do -> BDj (А—> В) -> BD7-BDo -> RGA—> BD2 (DI -> DJ -> PA7-PA0 I	I I
T = 1	WR_RGA E = О
Предварительно порт А был запрограммирован на вывод данных (в бит Do был занесен О со стороны процессора). Ввод данных можно также описать следующей схемой:
РАг-РА^ BD2 (DB Do) RGA-» ожидание -> ВТ -> BD7-BDO BDT D7-Do I	I	I
Е = 1	-RD- RGA	Т = О
176	Интерфейсная схемотехника
В этом случае данные с шины РА7-РА0 через приемопередатчик BD9 записываются RGA без использования какого-либо внешнего управляющего сигнала записи (запись осуществляется парафазными сигналами каждого бита данных). После некоторого времени ожидания процессор считывает содержимое порта А.
Таким образом, в этом режиме каждый регистр А, В или С предварительно программируется с помощью регистра управления RG_CTR на ввод и вывод данных. Недостатком этого режима являются ограниченные функциональные возможности, связанные с отсутствием интерфейса связи с периферийным устройством (невозможность определения наличия данных в порте при вводе их в процессор или отсутствие данных в порте при выводе их из процессора). В качестве достоинства безусловной передачи данных можно отметить простую схемную реализацию.
Условный программный обмен - обмен данными между процессором и ПУ, заключающийся в том, что ПУ устанавливает сигнал готовности (флаг), указывающий на возможность ввода или вывода данных. Например, принтер сигналом -АСК (Acknowledge - подтверждение) сообщает процессору о готовности принять данные. Сигнал готовности формируется ПУ, определяется форматом порта состояния и может быть программно считан процессором. Передача сигналов состояния ПУ в процессор требует наличия некоторого интерфейса между процессором и ПУ, наличия некоторых управляющих сигналов, сообщающих ПУ, что данные поступили в его регистр вывода, и сигналов, указывающих процессору о том, что регистр ввода полон (данные поступили из ПУ) и данные можно считывать.
Рассмотрим протокол связи между ПУ и процессором при выполнении условного программного обмена в режимах вывода (ввода) данных в порт А (из порта А), представленный на рис. 3.14.
ВЫВОД
Процессор	PPI	ПУ
OBFA(TC7)=I
Процессор
ВВОД
PPI	ПУ
РА7-РА0
А9-А0	*
D7-D0 ►
-IOW ►
РА7-РА0 > OBFA(PC7)=0 «-АСК(РС6)=0 яОВЬА(ТС7)=1
< IBFA(TC5)
А9-А0
-IOR
D7-D0
4
OBFA =
0. Процессор —* PPI
LPPI—*ПУ
-STB(PC4)
Установка IBFA=0
IBFA = <
0, ПУ-РР1
1. PPI —* Процессор
OBFA 1 - порт А пуст
IBFA = I - порт А полон
Рис. 3.14. Протокол связи условного программного обмена
Способы обмена данными	177
Координация работы процессора и ПУ в режиме вывод состоит в следующем (рис. 3.15).
Рис. 3.15. Схема координация действий процессора и ПУ в режиме вывод
Вначале по сигналу сброс RST, установленному процессором, в регистре RGC устанавливается триггер бита С7 (ТС7) и на его выходе формируется сигнал OBFA = 1 (буфер вывода пуст), что указывает процессору о пустом регистре RGA (позиция 1 протокола вывода).
Затем процессор выполняет действия 2, 3 и 4 диаграммы записи байта данных в регистр RGA. При этом дешифратор управляющих сигналов DC формирует сигнал - WR_RGA, по которому выполняется запись данных в RGA и сбрасывается триггер бита С7 (ТС7) регистра RGC (OBFA = О).
Правило 1: в режиме вывод при записи данных в адресуемый регистр всегда сбрасывается флаг готовности, установленный ранее.
Правило 2: установка флага готовности обычно осуществляется ПУ.
Правило 3: для режима вывода флаг готовности указывает процессору о том, что регистр вывода пуст, а для ПУ - когда он полон. ПУ по сигналу OBFA (РС7) = О определяет, что RCA полон, и считывает его содержимое.
После этого ПУ формирует сигнал подтверждения приема данных -АСК (пункт 7 протокола) на линии РС6, устанавливающий вновь бит С7 в единичное состояние (OBFA =1), сообщающий процессору о пустом регистре RGA, и т. д. Следует отметить, что процессор читает значение бита С7регистра RGC, выполняя цикл ввода на шине, формируя адрес, сигнал -IOR и прием данных из регистра RGC.
Функциональная схема выполнения условного программного обмена для порта РА с учетом протокола вывода представлена на рис. 3.16.
Если PPI выполняет безусловный и условный обмены данными, то следует уже различать режим О (по умолчанию) или режим 1. Поэтому в формате регистра управления RG_CTR задается тип выполняемого режима Mode 1 (рис. 3.17).
178
Интерфейсная схемотехника
BD7-BD0
РА07-РЛ00
•моае 1	-WRRGA -АСК(РСб)
РА07-РА00- выходы Do приемопередатчика BD2; ТС7 - триггер седьмого бита регистра RGC; ВТ - шинный передатчик
Рис. 3.16. Функциональная схема выполнения режима 1 (протокола вывода)
По умолчанию - выполняемое действие, если нет других указаний.
В режиме 1 линии порта PC используются только для передачи входных или выходных сигналов квитирования. Поэтому шинный приемопередатчик BD2 этого порта PC должен быть отключен сигналом Mode 1 высокого уровня, подаваемого на его управляющий вход -Е9 (рис. 3.14., аналогия с портом РА).
Квитирование - сигнал, выдаваемый в ответ на принятые данные.
Рассмотрим координацию действий процессора и ПУ в режиме ввода данных (рис. 3.18).
Работа этой схемы выполняется в соответствии с протоколом (рис. 3.15) режима ввода. В этом режиме ПУ устройство ввода передает данные в RGA по шинам РА7-РА0 и записывает их в этот регистр сигналом -STB (строб буфера), который, кроме того, устанавливает в единичное состояние пятый бит (ТС5) регистра RGC. На выходе триггера ТС5 формируется сигнал IBFA (буфер ввода заполнен), который может быть считан процессором. Процессор по низкому уровню определяет, что RGA полон, и осуществляет чтение данных, выполняя цикл ввода на шине (передача адреса, установка сигнала -IOR и прием данных) -это соответствует позициям 4, 5 и 6 протокола ввода (рис. 3.14). При выполнении операции чтения дешифратор управляющих сигналов DC вырабатывает
Способы обмена донными
179
IBFA =
Рис. 3.18. Схема координации действий процессора и ПУ в режиме ввода данных
1, RGA полон О, RGA пуст
сигнал -RD_RGA, осуществляющий чтение содержимого RGA на шину данных D7-Dq. Этим же сигналом выполняется сброс триггера ТРС5 регистра RGC. ПУ по сигналу IBFA (ТС5) = О узнает, что RGA пуст, и снова загружает его, устанавливая IBFA (ТС5) = 1 и т д.
Правило 4: в режиме ввода ПУ, записывая данные в регистр адаптера, устанавливает для процессора флаг готовности сигналом записи.
Правило 5: в режиме ввода флаг готовности указывает процессору на то, что регистр ввода полон.
Правило 6: при считывании содержимого регистра ввода сбрасывается флаг готовности сигналом чтения регистра.
Упражнение 3.1. Разработать подробную схему выполнения режима 1 (протокола ввода для регистра RGA) по аналогии со схемой (рис. 3.16).
Программный обмен с опросом флага готовности имеет более широкие функциональные возможности по сравнению с безусловным программным обменом, но требует дополнительных аппаратурных затрат. В качестве его недостатка следует отметить непроизводительную работу процессора по программному сканированию флага готовности ПУ (рис. 3.19).
Из диаграмм видно, что выполняются циклы чтения регистра состояния до тех пор, пока не произойдет установка соответствующего значения флага готовности.
В рассмотренных примерах флаги готовности (OBFA и IBFA) принимают значения О и 1, причем значение 1 вводится активным уровнем для процессора, а значение О - активным уровнем для ПУ.
Упражнение 3.2. Разработать схему выполнения режима 1 протокола вывода для регистра RGB.
Упражнение 3.3. Разработать схему выполнения режима 1 протокола ввода для регистра RGB.
Прерывание - программный обмен информацией между процессором и ПУ, выполняемый по инициативе ПУ и требующий дополнительных аппаратурных
180
Интерфейсная схемотехника
затрат. Режим прерывания является более производительным для процессора, так как в этом случае не тратится время на сканирование флага готовности и процессор может выполнять другую полезную работу. В этом режиме в регистре RGC использует еще один бит, который решает прерывание и устанавливается и сбрасывается со стороны процессора.
В качестве примера рассмотрим выполнение режима прерывания при выводе данных в регистр RGA и использование бита С3 регистра RGC для решения прерывания (рис. 3.20).
DC
РА7-РА0
RGA
-WRRGA
-WR_RGC
INTN
Рис. 3.20. Схема организации прерывания при выводе данных
Способы обмена данными	181
Для выполнения режима прерывания процессор осуществляет предварительную программную установку триггера 3-го бита регистра RGC, выполняя вывод байта данных 00001000, в котором третий бит D3 = 1. В цикле шины «Вывод» по сигналу дешифратора управляющих сигналов DC выполняется установка триггера ТС3 регистра RGC в единичное состояние и на его выходе формируется сигнал INTE (разрешение прерывания). Триггер ТС7 регистра RGC устанавливается в единичное состояние либо по сигналу сброса RST (первый раз), либо по сигналу подтверждения -АСК (РС6), который формируется каждый раз, когда ПУ считывает содержимое регистра RGA (на схеме это не показано). При наличии двух установленных сигналов OBFA (флага готовности) и INTE (разрешения прерывания) вырабатывается сигнал прерывания INT N, где N - номер запроса прерывания. определяющий его приоритет и поступающий в контроллер прерывания процессора. Чем меньше N, тем выше приоритет запроса прерывания. Запросы прерываний поступают от разных устройств (клавиатуры, принтера, дисков и т. д.), и процессор обслуживает их в порядке поступления и приоритета.
В рассматриваемом простом случае прерывание INT N сообщает процессору о том, что регистр RGA пуст и он может выводить байт данных.
Процессор прерывает свою работу над текущей программой, сохраняет ее параметры и переходит к программе обслуживания соответствующего прерывания.
Различают три типа прерываний: внутренние аппаратные, внешние аппаратные (от ПУ) и программные.
Контроллер прерываний - устройство, содержащее адресуемые порты и схему приоритета, обслуживающее аппаратные прерывания с учетом их приоритета и присваивающее им номера в соответствии с приоритетом, которые считываются процессором для их дальнейшей обработки. По номеру прерывания процессор вычисляет адрес вектора прерывания.
Вектор прерывания - указатель на адрес размещения программы обслуживания (драйвера) поступившего аппаратного прерывания.
Драйвер - программа, осуществляющая взаимодействие между процессором и ПУ (управляющая программа, обслуживающая соответствующее устройство).
Аналогичным образом можно разработать схему организации прерывания при вводе данных из регистра RGA в процессор. В этом случае сигнал прерывания INTQ = IBFA4NTE указывает процессору на то, что регистр RGA полон (ПУ записало в него данные) и можно считывать его содержимое.
Упражнение 3.4. Разработать схему выполнения режима прерывания для ввода данных из регистра RGA.
Для режима прерывания сформулируем следующие правила.
Правило 7: в режиме прерывания процессор разрешает прерывание, а ПУ устанавливает флаг готовности (два условия, необходимые для формирования запроса прерывания).
Правило 8: если выполняется вывод, то сигнал (запрос) прерывания указывает, что регистр вывода пуст или буферная память вывода не заполнена.
Правило 9: для режима ввода запрос прерывания сообщает процессору о том, что регистр ввода полон или буферная память данных содержит информацию и он может выполнять ее чтение.
Иногда для нескольких источников или получателей данных формируют один сигнал прерывания и используют специальный регистр идентификации прерываний, доступный по чтению со стороны процессора. При наличии нескольких прерываний процессор обслуживает их в заданном порядке приоритетности.
182
Интерфейсная схемотехника
Например, такой принцип реализован в микросхемах универсального асинхронного приемопередатчика (8250, 16450, 16550).
На рис. 3.21 показана схема взаимодействия устройств компьютера в режиме прерывания.
Номер
Рис. 3.21. Организация режима прерывания
А9 А9
А8	А8
АО АО
Рис. 3.22. Обозначение битов адреса а) с активным низким уровнем, б) с активным высоким уровнем
3.3.	Дешифрация адреса
Существуют два типа адресных шин различных интерфейсов. В первом типе шины используется активный низкий уровень для задания значений битов адреса, а во втором - высокий уровень (рис. 3.22). _
Черта над обозначением сигнала (А9) указывает на то, что здесь применяется низкий_ активный сигнал, хотя значение бита А9 может принимать 1 или 0. Точнее, логическая единица на шине адреса представляется низким уровнем, а логический нуль - высоким уровнем. Поэтому, чтобы отметить этот факт, биты адреса изображаются на схеме с чертой над символами А9, А8.. .АО или -А9, -А8.. .-АО.
С целью упрощения рисунков будем использовать 10-битный двоичный адрес.
Следующий пример показывает представление уровней адреса 3A0h (h - знак шестнадцатеричной записи) регистра (порта) ПУ (рис. 3.23).
А9	А8	А7	А6	А5	А4	АЗ	А2	А1	АО
0	0	0	1	0	1	1	1	1	1
Рис. 3.23. Представление уровней адреса 3Aoh
Дешифрация адреса
183
Такая инверсная (отрицательная) интерфейсная логика используется, например, в системном интерфейсе Multibus, и ее надо учитывать при разработке дешифраторов адреса.
В других интерфейсах (ISA, PCI) применяется прямая (положительная) интерфейсная логика, в которой логическая 1 представляется высоким уровнем, а логический О - низким (рис. 3.24).
А9	А8	А7	А6	А5	А4	АЗ	А2	А1	АО
1	1	10	10	0	0	0	0
Рис. 3.24. Двоичное представление адреса 3Aoh				
Далее будем использовать только прямую интерфейсную логику.
Кроме того, в некоторых интерфейсах биты адреса сопровождаются тем или иным управляющим сигналом, определяющим назначение передаваемых битов (в случае мультиплексирования шины) или задания режима (программного ввода/вывода или прямого доступа).
На рис. 3.25 показаны возможные варианты дешифрации адреса, причем биты А1 и АО не используются, они применяются отдельно для выбора регистров).
А9 А8 А2 SADR								SEL
	DCA	SEL	А9 А8 А2 AEN	DCA	SEL	А9 А8 А2	DCA	
SADR - строб адреса SEL - выбор ПУ а			AEN - разрешение адреса AEN=0 - ввод/вывод б			DC А - дешифратор адреса в		
Рис. 3.25. Варианты дешифрации адреса: а) параллельного LPT-порта; б) интерфейса ISA, в) микропроцессора								
Дешифрация адреса должна быть выполнена за фиксированное время, определяемое стандартом соответствующего интерфейса. Это время включает в себя время задержки сигналов на линиях шины адреса плюс время задержки на элементах дешифрации. В некоторых интерфейсах предусмотрен для процессора (главного контроллера) сигнал выбора устройства, который может приостановить действие процессора, пока не будет опознан адрес периферийным устройством (шина PCI).
Упражнение 3.5. Разработать дешифратор адреса ПУ на элементах ЛЕ1 и ЛА2. Адрес ПУ - 3C0h (рис. 3.26).
Решение:
А9	А8	А7	А6 А5 А4 АЗ А2	А1	АО
1	1	1	10000	*♦, Выбор регистров
184
Интерфейсная схемотехника
Рис. 3.26. Схемы дешифрации адреса, выполненные на элементах ИЛИ-HE и И-НЕ
Упражнение 3.6. Разработать дешифратор адреса ПУ на двух дешифраторах 3x8 (элементах ИД7). Адрес ПУ - 2Alh (рис. 3.27).
Решение:
А9	А8	А7	А6	А5	А4	АЗ	А2	А1	АО
1	0	1	0	1	0	0	0	*	* 4 Выбор регистров
Дешифрация адреса	185
Упражнение 3.7. Разработать дешифратор адреса ПУ на двух элементах СП 1 (схемах сравнения). Адрес ПУ - 05Bh (рис. 3.28).
Решение:
А9	А8	А7	А6	А5	А4	АЗ	А2	А1 АО
0	0	0	1	0	1	1	0	*	* , Выбор регистров V
Упражнение 3.8. Разработать дешифратор адреса ПУ на элементах СП 1 и ИД7 с возможностью произвольного выбора с помощью перемычек двух битов: АЗ и А2. Адрес ПУ - lF*h (рис. 3.29).
186
Интерфейсной схемотехнике
Решение:								
А9 А8	А7	А6	А5	А4	АЗ	А2	А1	АО
0	1	0	0	1	1	*	*	* V	* j Выбор регистров
ИД7
А9	АО	= О О
М------ А1
А6	АЭ
Рис. 3.29. Схема дешифратора адреса с возможностью выбора двух разрядов
Упражнение 3.9. Для шины адреса ISA выполнить самостоятельно. Показать установку перемычек для адресов: IFAh, IFBh, lF7h(pnc. 3.30).
Упражнение 3.10. По заданной схеме определить шестнадцатеричный адрес ПУ (АД = 00).
В заключение отметим, что в системах РаР каждому устройству процессором назначается базовый адрес, который программно загружается в регистр базового адреса на этапе инициализации периферийного устройства. Базовый адрес с помощью компаратора СОМР сравнивается с адресом, установленным на шине адреса, и если адрес опознается, то компаратор адресов СОМР формирует сигнал выбора ПУ HIT.
Для простого интерфейса схема дешифрации адреса с базовым адресом выглядит следующим образом (рис. 3.31).
Дешифрация адреса
187
Адрес ПУ = ?
Ответ. 3B0h
Рис. 3.30. Схема дешифрации адреса, построенная с использованием схемы сравнения и дешифратора
А9-А2
ВА9-ВА2’
HIT
COMP
-RD_RGBA
О вт
-WR RGBA
DC
А9-А2
А1, АО
RG ВА
2XZ
CPU - центральный процессор;
RGBA - регистр базового адреса;
СОМР - компаратор внешних адресов;
WR_RGBA - сигнал записи базового адреса;
BD - шинный передатчик;
HIT - совпадение
А9-А0
CPU
D7-D0
О BD О
-IOR
-IOW
-А В
Г 4cs
BD7-BD0
Рис. 3.31. Простой интерфейс с программируемым базовым адресом
188
Интерфейсноя схемотехнике
Вначале процессор CPU загружает базовый адрес в регистр RGBA, выполняя программный вывод, в котором базовый адрес передается по шине данных D7-Do. Регистр базового адреса RGBA относится к памяти конфигурации, и ему по стандарту интерфейса отведен фиксированный известный адрес. Регистр базового адреса доступен по записи и по чтению со стороны процессора. С целью упрощения рисунка другие порты (адресуемые регистры) в нем не показаны.
При выполнении операции ввода/вывода базовый адрес сравнивается с поступившим адресом в компараторе (селекторе) адреса СОМР, и в случае их совпадения на его выходе формируется сигнал выбора ПУ HIT, управляющий работой дешифратора управляющих сигналов DC и приемопередатчика BD.
3.4.	Формирование управляющих сигналов
Рассмотрим построение схемы дешифратора управляющих сигналов DC (рис. 3.32) для схемы рис. 3.13, работа которого описывается табл. 3.2.
-WR
-с	1 &	DC	0 1	0 -WR RGA 0 -WR RGB
АО	АО	।	2 3	-WR RGC :	WRRGCTR
А1	А 1		0	-RDRGA
	А 1		1	-RD RGB
-RD			2	-RD RGC
			3	—
-SEL*				
Рис. 3.32. Схема дешифратора управляющих сигналов
Дешифратор DC имеет две группы четырехвыводных выходов. Выбор каждого вывода в группе осуществляется с помощью двух битов адреса Аг и Aq, то есть комбинация А^ = 00 выбирает нулевой вывод (0), а комбинация А( Ао = 11 - третий вывод (3). Разрешение работы каждой группы выводов выполняется двумя входными управляющими сигналами. Причем для управления одной группой требуется прямой и инверсный сигналы, а для управления другой - два инверсных сигнала. Сигнал SEL формируется дешифратором старшей части адреса (Аэ-А2) и разрешает работу двух групп выводов. Первая группа выходов предназначена для формирования сигналов записи данных в соответствующий регистр, а вторая группа выходов - для формирования сигналов чтения.
Выработка каждого выходного сигнала определяется четырьмя выходными сигналами -SEL, А1, АО, -WR или -RD. Например, -WR RGА = (-SEL)*(A1=O)* (A0=0)*(-WR) или -RD_RGB = (-SEL)*(A1=O)* (А0= 1 )*(—RD), где знак * обозначает логическое умножение (рис. 3.33).
Часто для формирования управляющих сигналов используют постоянную память (рис. 3.34) или ПЛИС.
Программирование ROM осуществляется в соответствии с табл. 3.3.
Формирование управляющих сигналов
189
АО
А1
-WR RGA
-RD RGA
-WR RGCTR
Рис. 3.33. Функциональная схема дешифрации управляющих сигналов
		ROM	0	
			0 <	>	WR_RGA
АО		АО		1		RD_RGA
А1		А1		2		WR_RGB
-RD		А2		3	— -RD_RGB
-WR		АЗ		4 1		WR_RGC
	А4		5 с	— -RD_RGC
-SEL	<j	) Е		6 <	— -WRRGCTR
	1 ।	।	7 <	[>— -RDP- сигнал общего чтения
Рис. 3.34. Схема формирования управляющих сигналов с использованием ROM				
Таблица 3.3							
-Е	А4	АЗ	А2	А1	АО	Выходы ROM	Сигнал управления
-SEL	0	-WR	-RD	А1	АО	0 12 3 4	5 6 7
0	0	0	1	0	0	0 1111	1	1 1 -WR_RGA
0		1	0	0	0	0 1111	1	1 0 -RD_RGA
							
0	0	0	1	1	1	11111	1 0 1 -RW_RGCTR
Сигнал общего чтения -RDP считывается, если выполняется любая операция чтения какого-либо регистра (-RD_RGA, -RD_RGB или -RD_RGC).
Упражнение 3.11. Разработать принципиальную схему дешифратора управляющих сигналов с использованием табл. 3.2 и микросхем, изготовленных по КМОП-технологии: КР 1354 ИД 14, КР 1554 ЛН1, КР 1554 ЛЛ1 (рис. 3.35).
190	Интерфейсная схемотехника
Решение:
Рис. 3.35. Схема дешифратора управляющих сигналов, выполненных на микросхемах ИД7, ЛН1 и ЛЛ1
Упражнение 3.12. Разработать принципиальную схему дешифратора управляющих сигналов для шести регистров RG1-RG6, каждый из которых доступен по записи. Использовать микросхему КР 1554 ИД7. Базовый адрес 3A0h (рис. 3.36). Составить таблицу доступа к портам.
Решение:
			
АО—1 А1 — А2 — -WR	 -SEL	 «1 ” 	5J	АО А1 А2 L	DC	о (U--WR_RG1 1 <У4- -WR_RG2 2 6й- -WR_RG3 3 Q12 -WR_RG4 4 6й- -WR_RG5 5	-WR_RG6 6 J5- 7 1
1			
			
Рис. 3.36. Дешифратор управляющих сигналов			
Таблица 3.4					
АО	А1	А2	-WR	-SEL	Сигнал
0	0	0	0	0	-WR_RG1
0	0	1	0	0	-WR_RG2
0	1	0	0	0	-WR_RG3
0	1	1	0	0	-WR_RG4
1	0	0	0	0	-WR_RG5
1	0	1	0	0	-WR_RG6
Интерфейсные формирователи	191
Упражнение 3.13. Разработать структурную схему программного доступа к 32 регистрам (регистровой памяти). При большом числе регистров используют порт индекса (3B0h) и порт данных (3Blh) - рис. 3.37.
Решение:
DC -WR RGD	и
► W
WR ►	-RD RGD
► R RM
-RD ♦	►	-WR RI	Л
AO	►	5	D 31
▲
Л1	►
-CS(-SEL) • ►
w RGI
▲ A
BD
D7-D0<	В BD7-BD0
T
CS
RGI - регистр индекса, RM - регистровая память, RGD - регистр данных
Рис. 3.37. Схема программного доступа к регистровой памяти
3.5.	Интерфейсные формирователи
Для сопряжения ПУ с интерфейсом процессора используются передатчики (формирователи) и приемопередатчики, которые обеспечивают выходной ток требуемой величины, необходимый для передачи сигналов по линиям интерфейса. Линии интерфейса представляют собой резистивную, емкостную и индуктивную нагрузку, и для передачи сигналов по таким линиям с нужной крутизной необходимы достаточно мощные сигналы. Например, для интерфейса ISA требуется для передатчика обеспечить выходной ток низкого уровня > 24 мА, а для приемника - выходной ток низкого уровня <0,8 мА.
Ток потребления микросхемы КР 1554 АП4 < 8 мкА, а выходной ток низкого уровня < 86 мА, то есть это микросхема обеспечивает требуемые электрические параметры для подключения к линии шины ISA.
К числу передатчиков (формирователей) относятся следующие микросхемы (рис. 3.38):
•	КР 1554 АПЗ (два четырехразрядных формирователя с тремя состояниями на выходе с инверсией выходных сигналов и инверсным управлением);
•	КР 1554 АП4 (два четырехразрядных формирователя с тремя состояниями на выходе с прямым и инверсным управлениями):
•	КР 1554 АП5 (два четырехразрядных формирователя с тремя состояниями на выходе и инверсным управлением).
192
Интерфейсная схемотехника
Группу приемопередатчиков составляют следующие микросхемы (рис. 1.39):
•	КР 1554 АП6 (восьмиразрядный двунаправленный приемопередатчик с выходами, имеющими три состояния);
•	КР 1554 АП9 (приемопередатчик с инверсией информации и тремя состояниями);
•	КР 1554 АП 16 (приемопередатчик с инверсией только в одном направлении и тремя состояниями доступа к регистровой памяти).
В качестве приемопередатчиков (ПП) можно использовать микросхемы АП6 и т. д. На рис. 3.38 представлены сигналы управления ПП.
АП6
DO D1	ВО В1	BD	АО А1	BDO BD1
D7 I0R	В7 DIR		А7	BD7
ВыбПУ l2§.
Рис. 3.38. Сигналы управления ПП
3.6.	Адаптер программного обмена
Рассмотрим вопросы проектирования адаптера программного обмена, содержащего 8-битный регистр вывода (РВыв (W/R)), 8-битный регистр ввода (РВв (R)), триггер состояния (ТС (R)) и 2-битный регистр управления (РУ (W/R)). Обозначение (W/R) указывает на то, что соответствующий порт доступен со стороны процессора по записи (W) или чтению (R), а обозначение (R) - на то, что соответствующий порт доступен только по чтению. Режим чтения (R) для регистров РВыв и РУ является неосновным и введен с целью контроля правильности вывода данных. На рис. 3.39 представлена схема соединения ПУ и адаптера (АДП) программного обмена.
Порты адаптера подключаются к шинам данных (ШД), управления (ШУ) и адреса (ША) при помощи блока сопряжения (ВС), интерфейсной логики. Регистр РВыв используется для приема начального значения ПУ. Регистр РУ содержит два триггера, один из которых формирует сигнал Пуск, поступающий в ПУ и инициирующий его работу, а другой формирует сигнал разрешения прерывания (РП). Триггер состояния (ТС) указывает процессору на то, что ПУ завершило работу и получен результат этой работы, записанный со стороны ПУ в регистр РВв. Процессор через прерывание или опрос флага готовности (значения ТС) определяет наличие результата в регистре РВв и считывает его значение.
В качестве ПУ может быть использован специализированный вычислитель (аппаратурная подпрограмма), например определяющий значение функции по начальному значению аргумента, хранящегося в регистре РВыв, или многоканальный АЦП среднего быстродействия, для выбора одного из аналоговых каналов которого употребляется регистр РВыв, а регистр РВв применяется для хранения кода преобразованной аналоговой величины. На рис. 3.40 изображена структурная схема адаптера.
Адаптер программного обмена
193
Рис. 3.39. Схема соединения ПУ и адаптера
194
Интерфейсная схемотехника
Выберем из резерва 3E0h-3E7h адресного пространства ввода-вывода адреса 3E0h-3E3h и присвоим их портам. При этом старшие биты адреса SA9-SA2 являются общими для всех портов (эти старшие биты адреса определяют выбор ПУ), а младшие биты адреса SA1 и SAO представляются разными и предназначаются для выбора одного из четырех портов внутри адаптера.
В табл. 3.5 представлены порты адаптера, их адреса и указан тип доступа.
Таблица 3.5		
Порт	Адрес	Доступ
Регистр РВыв		ЗЕО	W/R	 	
Регистр РВв		ЗЕ1	R	 	
Регистр РУ		ЗЕ2	W/R	
Триггер ТС	ЗЕЗ	R
В структурной схеме дешифратор адреса (ДшА) предназначен для декодирования старшей (общей) части адреса SA9-SA2 с учетом сигнала AEN низкого уровня, разрешающего обычный ввод-вывод. На выходах дешифратора ДшА формируется сигнал выбор ПУ (ВыбПУ), указывающий на то, что ПУ опознало соответствующий адрес. Для построения принципиальной схемы дешифратора ДшА необходимо написать двоичный эквивалент старшей части адреса и указать их соответствующие адресные линии (рис. 3.41).
AEN SA9 SA8 SA7 SA6 SA5 SA4 SA3 SA2
0	111110	0	0
Рис. 3.41. Двоичный эквивалент старшей части адреса
Работа дешифратора управляющих сигналов (ДшУС) описывается табл. 3.6.
Таблица 3.6
ВыбПУ (CS)	_ SA,	SAo	IOR	IOW	Операция (ДшУС)
0	_ J0	0	1	0			ЗпРВыв		
0	_ 0	0	0	1			ЧтРВыв
0	_ 0	1	0	1			ЧтРВв		
0	_ 1	0	1	0 		ЗпРУ		
0	_ 1	0	0	1			ЧтРу
0	_ 1	1	0	1			ЧтТС		
Примечание: Зп	- запись, Чт-	чтение			
Таким образом, дешифратор ДшУС формирует сигнал при выполнении четы-рехусловий: выбрано ПУ, имеются в наличии сигналы SAI, SA0 и IOR (IOW).
Приемопередатчик (ПП) предназначен для согласования электрических характеристик шины SD7-SD0 и внутренней буферизированной шины BD7-BD0
Адаптер программного обмена
195
и управления направлением передачи данных. ПП передает данные из адаптера на шину только в случае, если выбрано ПУ и выполняется режим чтения, а в остальных случаях приемопередатчик ПП пропускает данные шины в КОН, но они могут быть записаны в порт адаптера только при наличии соответствующего сигнала дешифратора ДшУС. Если вход приемопередатчика Т=1, то направление передачи данных - с А на В.
Регистр РВыв предназначен для временного хранения данных (Д), передаваемых из процессора в ПУ. Для реализации контрольного чтения содержимого регистра РВыв используется передатчик (Пер) с тремя состояниями. Данные (Д), полученные в ПУ, передаются в регистр РВв и записываются в него сигналом строб (Стр), который одновременно устанавливает триггер ТС, сообщающий процессору о том, что регистр РВв полон. При чтении процессором содержимого регистра РВв триггер ТС сбрасывается в исходное состояние.
Сигнал прерывания IRQ 10 формируется адаптером, если установлен соответствующий бит разрешения прерывания (РП) в регистре РУ и триггер ТС (флаг готовности ПУ). Сигнал прерывания сообщает процессору, что регистр РВв полон.
Принцип работы адаптера заключается в следующем. Вначале процессор выполняет вывод байта данных в регистр РВыв (3E0h) и осуществляет пуск ПУ (установку бита пуск в регистре РУ (3E2h)). Затем через прерывание (предварительно был установлен бит разрешения прерывания РП в регистре РУ) или путем опроса флага готовности (единичное значение триггера ТС (3E3h)) процессор определяет, что регистр РВв полон. После этого процессором выполняется чтение содержимого регистра РВв (3Elh).
Схема ДшА может быть реализована на двух микросхемах СП1 (рис. 3.42) с учетом двоичного эквивалента старшей части адреса (рис. 3.41).
На рис. 3.43 представлена схема дешифратора ДшА, построенная на элементах ЛЕ1 и ЛА2 (а) или ЛА1 и ИД7 (б).
196
Интерфейсная схемотехника
а AEN- SA4 —	ЛЕ1				б				ИД7		
	J &		ЛА2				SA2		1	DMX	0 <	[Выб ПУ
SA3 —	-d						SA3		2		1 < 2 <	
SA2 —					SA9—	ЛА1	SA4		3		3 < 4 <	
SA9			& <	Выб ПУ			AEN	<	&			
сдв						SA8						5 <	
ЗАО						& <		Е			
CAT 						SA7	 SA6 —					6 <	
едд								SA5				7 <	
эЛО											
SA5				—								
Рис. 3.43. Схема дешифратора ДшА, построенная на элементах ЛЕ 1 иЛА2 (а) илиЛА1 и ИД7 (б)											
Схема дешифратора ДшУС, реализованная на микросхеме ИД4 в соответствии с таблицей, изображена на рис. 3.44.
ЗпРВыв
ЗпРУ
ЧтРВыв ЧтРВв ЧтРУ ЧтТС
Рис. 3.44. Схема дешифратора ДшУС
3.7.	Интерфейс с мультиплексной шиной
С целью ограничения числа выводов схемы (кристалла) и (или) уменьшения числа линий связи используют шины с мультиплексной передачей адреса и данных. Рассмотрим общий принцип построения интерфейса ввода/вывода для такого случая. На рис. 3.45 представлены временные диаграммы циклов ввода (а) и вывода (б) мультиплексной (совмещенной) шины.
Схема соединения компонентов системы, содержащей мультиплексную шину, показана на рис. 3.46.
Принцип функционирования системы с мультиплексной шиной происходит в соответствии с временными диаграммами (см. рис. 3.45). Процессор (П) направляет адрес (ADR) по шине AD, доступный всем адаптерам ПУ (КПУ). С целью
Рис. 3.46. Схема соединения компонентов системы с совмещенной шиной
упрощения схем используются 10-битный двоичный адрес порта КПУ и байтовая передача данных (DATA). Затем процессор устанавливает сигнал разрешения фиксации адреса (ALE). Этот сигнал необходим в КПУ для запоминания адреса в регистре-защелке при употреблении быстродействующей мультиплексной шины или для запоминания сигнала дешифрации старшей части адреса, выбирающего ПУ, и младших битов адреса, необходимых для идентификации порта в КПУ.
Если выполняется цикл ввода данных, то процессор (П) устанавливает сигнал чтение данных (IOR), по которому выбранное в соответствии с адресом КПУ выдает данные (DATA) на шину AD. Знаком * показано переключение направления передачи информации на шине AD, то есть вначале адрес направляется из процессора, а потом данные поступили в процессор.
В случае цикла вывода процессор устанавливает на шине AD адрес и данные. КПУ, которое опознало собственный адрес, при поступлении сигнала IOW запоминает данные в соответствующем порте.
На рис. 3.47 изображена структурная схема адаптера программного обмена (КПУ), подключенного к совмещенной шине.
Процессор через совмещенную шину и порты адаптера осуществляет управление работой ПУ. В табл. 3.7 приведены адреса и тип доступа к соответствующим портам адаптера.
Общий принцип взаимодействия компонентов системы следующий. Процессор выводит байт данных в регистр РД Выв (2F5h). Затем процессор делает вывод без передачи данных по адресу 2F6h. В результате выполнения этой операции дешифратор ДшУС формирует сигнал Пуск, который осуществляет запуск
Таблица 3.7		
Порты	Доступ	Адрес
Регистр РДВв	R		2F5h
Регистр РДВыв	W	
Триггер ТФГ	R		2F6h
Пуск	W	
Триггер ТРП	W	2F7h
Примечание: R - чтение, W - запись		
ПУ на выполнение соответствующей работы. После завершения работы ПУ передает результат в регистр РД Вв и записывает его по сигналу строб (STR), который одновременно устанавливает триггер флага готовности (ТФГ). Процессор путем опроса ТФГ (2F6h) или через прерывание (предварительно со стороны процессора установлен триггер разрешения прерывания (ТРП), порт 2F7h) узнает, что регистр РДВв полон, и считывает (вводит) из него байт данных в свой внутренний регистр, причем при чтении сбрасывается триггер ТФГ.
При записи или чтении данных во время адресной части цикла процессор, как уже отмечалось, устанавливает адрес, например 2F5h. Старшая (общая для всех портов) часть адреса AD7-AD2 декодируется дешифратором ДшА, который после опознания собственного адреса формирует на выходе сигнал ВыбПУ. Двоичный эквивалент AD9-AD2 -11111101.
Интерфейс с мультиплексной шиной	199
После этого процессор устанавливает сигнал ALE, который осуществляет запись сигнала ВыбПУ и младших битов адреса AD1 и ADO, выполняющих выбор портов внутри адаптера, в 3-битовый адресный регистр АР. Необходимость запоминания этих трех сигналов связана с тем, что после адреса процессор выводит данные (в цикле записи), которые через приемопередатчик ПП поступают на входы регистра РДВыв. В этот момент времени приемопередатчик ПП открыт в направлении с В на А, так как сигнал IOR отсутствует и на входе Т приемопередатчика установлен низкий уровень. Если вход Т=0, то направление передачи - с В на А (В -> А). И только при чтении данных приемопередатчик ПП разрешает передачу данных с А на В (А -> В). Запись данных в регистр РДВыв выполняется при установке процессором сигнала запись IOW. При этом на выходе дешифратора ДшУС формируется сигнал ЗпРДВыв при наличии сигналов: IOW, ТВыбПУ, ТА1=0 и ТА0=1. Аналогичным образом осуществляется чтение, например, регистра РДВв. О том, что содержимое регистра РДВв введено в процессор, ПУ определяет по сигналу АСК (выходу триггера ТФГ). Если триггер ТФГ сброшен, то регистр РДВв уже пуст. Функциональная схема дешифратора ДшА, адресного регистра АР и дешифратора ДшУС изображена на рис. 3.48.
СП1
ЛН1
ADO
ALE
А> -
А=
А<
ВыбПУ ; D c : R
♦ < S D * i . C ♦ R
S D ♦ z C »	: R
TM2
ТВыб ПУ
TA1
TAO
RESET
IOR
IOW
ТВыбПУ
TAO
TA1
AO
A1
&
G
ИД4
DMX
ТВыбПУ
TA1
TAO
0 :
1	ЧтРДВв
2	ЧтТФГ
3	:
0
1	ЗпРДВыв
2	. ПУСК
Q ЗпТРП
Рис. 3.48. Функциональная схема ДшА, АР и ДшУС
200
Интерфейсная схемотехника
Схема дешифратора ДшА реализована на элементах СП 1 и ЛИ6 и декодирует общую старшую часть адреса AD9-AD2. Адресный регистр (АР) выполнен на трех триггерах ТМ2, а дешифратор управляющих сигналов (ДшУС) - на демультиплексоре (DMX). Схема сравнения СП1 содержит переключатели (ПРК), которые позволяют изменять диапазон значений четырех битов адреса AD5-AD2. Схема дешифратора адреса ДшА декодирует двоичный код, представленный на рис. 3.49.
А9 А8 А7 А6 А5 А4 АЗ А2 1111110	1
Рис. 3.49. Двоичный код старшей части адреса
На рис. 3.50 показана схема дешифратор ДшА, которая формирует сигнал ВыбПУ низким активным уровнем. Этот сигнал запоминается в триггере ТВыбПУ, предварительно установленном сигналом RESET в единичное состояние.
Рис. 3.50. Схема дешифратора ДшА и триггера ТВыбПУ с запоминанием сигнала ВыбПУ
В том случае, если сигнал ALE установлен на все время цикла ввода или вывода (рис. 3.51), то можно для реализации АР использовать триггеры-защелки (регистры), запоминающие сигналы на входах D по уровню управляющего сигнала, поступающего на вход загрузки L.
Следует отметить, что сигнал ALE устанавливается процессором через время t после того, как выдан адрес (за это время гарантированно завершается де-шифрация адреса). На рис. 3.52 показана схема запоминания сигналов ВыбПУ, DA1 и DA0 с помощью D - L триггеров.
Адаптер принтера
201
AD9-AD2 API AD2	ДшА <		Е >—	1ыб	ГГ	У	D1 D2 D3 L	АР Т	Q 1 < 2 < 3 <	ТВыб ПУ TAI JA2
ALE	-ч	а-		—						
Рис. 3.52. Схема запоминания адресных сигналов с помощью D - L триггеров										
Фиксация сигналов в АР происходит до появления сигнала ALE, а с его установкой запрещается запись сигналов в АР. Схема ДшУС (рис. 3.48) функционирует в соответствии с табл. 3.8.
Таблица 3.8					
ВыбПУ	AD,	AD0	IOR	IOW	Операция (сигнал ДшУс)
0	0 _	1	0	1	ЧтРДВв
0	1	0	0	1	ЧтТФГ
0	0	1	1	0	ЗпРДВыв
0	1	0	1	0	Пуск
0	1	1	1	0	ЗпТРП
3.8.	Адаптер принтера
Рассматриваемый адаптер принтера предназначен для сопряжения его портов с системной шиной ISA и организации взаимной работы с принтером через периферийный параллельный интерфейс Centronics. Адаптер содержит 3 порта: 8-разрядный регистр данных (РД), 5-разрядный регистр управления (РУ) и шинный буфер (ШБЗ) ввода состояния принтера, адреса которых в 16-ричной записи соответственно 378Н, 37АН и 379Н. Структурная схема адаптера приведена на рис. 3.53.
Для декодирования старшей части адреса А2-А9 используется дешифратор адреса (ДшА), формирующий на выходе сигнал Bbi6PRN. Дешифратор управляющих сигналов (ДшУС) может быть реализован с помощью микросхемы ИД4 и
202
Интерфейсная схемотехника
ШД D0-D7
Рис. 3.53. Структурная схема адаптера принтера
вырабатывает на своих выходах сигналы чтения данных (ЧтД) из РД, запись данных (ЗпД) в РД, запись кода управления (ЗпУ) в РУ, чтение кода управления (ЧтУ) из РУ и чтение состояния принтера (ЧтС). Состояние принтера передается на внутреннюю шину данных BD3-BD7. ДшУС принимает два младших разря-да АО, А1 адреса, осуществляющих выбор желаемого порта, сигналы чтения (IOR) и записи (IOW).
Каждый выходной сигнал ДшУС является функцией (F) соответствующих четырех сигналов, например сигнал ЧтД=Е(А0, Al, IOR, Bbi6PRN). 8-разрядный приемопередатчик (ПП) осуществляет передачу данных в зависимости от уровня сигнала на входе Т. Если T=CS=0, то направление передачи - от В к А (В А), и наоборот, если Т= 1 и CS=0, то - от А к В (А —> В). При CS=1 ПП переходит в состояние «выключено» (Z). РД служит для приема кода символа из процессора П и передачи его в ПУ. Режимы чтения РД и РУ введены с целью контроля этих регистров. 5-разрядный РУ принимает информацию через ПП по сигналу ЗпУ. В табл. 3.9 приведено назначение разрядов РУ(Ь1), где (N=0..4).
Для ввода в процессор сигналов состояния принтера применяется режим считывания состояния, реализуемый выполнением команды IN. В этом режиме
Таблица 3.9		
РУ (0)	BDO	Строб записи (STR)
РУ (1)	BD1	Перевод бумаги на одну строку (AUT)
РУ (2)	BD2	Начальная установка (INIT)
РУ (3)	BD3	Запрос готовности (SELECT)	
РУ (4)	BD4	Разрешение прерывания (INT)
Адаптер принтера	203
по сигналу ЧтС через шинный буфер (ШБЗ) и приемопередатчик ПП осуществ-ляется передача в процессор информации о состоянии принтера: об ошибке (ERROR), о готовности к работе (SEL), о наличии бумаги (РЕ), о подтверждении приема (ASK), о занятости (BUSY). Сигналы состояния передаются соответственно по следующим разрядам внутренней шины данных: BD3, BD4, ..., BD7.
Сигнал прерывания IRQ7 формируется на выходе элемента И, на входы которого поступают: сигнал состояния АСК из принтера и сигнал INT четвертого бита РУ.
Выходные сигналы РД и РУ и входные сигналы состояния принтера соответствуют сигналам интерфейса Centronics (стандарту). Последовательность передачи данных по этому интерфейсу приведена на рис. 3.54.
Рис. 3.54. Последовательность передачи данных между адаптером и принтером
Очередной вывод кода символа из процессора выполняется по низкому уровню сигнала BUSY или с появлением сигнала АСК. Формирование сигнала прерывания IRQ7 указывает на то, что РД адаптера пуст и можно со стороны процессора передавать новый код символа.
Для печати какого-либо символа на принтере его необходимо поместить в РД адаптера путем выполнения процессором команды OUT. После этого в бит 0 РУ со стороны процессора заносится 1, которая осуществляет запись содержимого РД в буферный регистр принтера. Затем выполняется программный сброс бита 0 РУ. Сигналами готовности принтера принять очередной символ являются сигналы его состояния АСК или BUSY.
Функции рассмотренной схемы адаптера выполняет микросхема 82С11, выполненная по КМОП-технологии и обеспечивающая уровни сигналов ТТЛ-схем.
Интерфейс Centronics был специально разработан для сопряжения принтеров с ПК. Уровни входных и выходных сигналов интерфейса соответствуют уровням входных и выходных сигналов ТТЛ: 0-0.8 в 0-0.4 и 2-5.25 в 2.4-5.25. Подключение принтера к адаптеру ПК выполняется с помощью многопроводного кабеля длиной не более 3 м. Для подключения кабеля Centronics к процессору используется 25-контактный разъем, а для подключения к принтеру - 36-контактный разъем. В качестве передатчиков сигналов используют обычно мощные повторители сигналов с открытым коллектором, имеющие выходной ток Рых = 40 мА, а в качестве приемников - помехоустойчивые триггеры Шмитта с учетом пороговых напряжений срабатывания и отпускания.
Рассмотрим назначение некоторых сигналов интерфейса Centronics. Сигнал Data Strobe (STR) сообщает принтеру, что данные установлены на шине Data (D0-D7). Линии шины Data используются для передачи битов данных от адапте-
204	Интерфейсная схемотехника
pa к принтеру. Сигнал Acknowledge (IACK) указывает низким активным уровнем (»10 мкс), что принтер готов к приему очередного символа. Сигнал BUSY высокого активного уровня устанавливается принтером, если он не может принять данные. В том случае, если закончена бумага в принтере, он сообщает процессору об этом сигналом Paper End (РЕ). Если принтер выбран и активен, то он устанавливает сигнал Select (SEL). С целью перевода в принтере бумаги на одну строку вперед процессор через адаптер (РУ) формирует сигнал Auto feed (AUT). В том случае, если в принтере произошла ошибка, устанавливается низкого уровня сигнал ERROR. Сигнал Init (INT), удерживаемый около 50-100 мкс, вызы-вает инициализацию принтера. Активный низкий уровень сигнала Seleect Input (SELECT) осуществляет выбор устройства.
3.9.	Программа вывода данных на печать
Формулировка задания
Изучить принцип работы печатающего устройства (ПУ). Написать программу на ассемблере, осуществляющую вывод данных на печать с помощью портов адаптера (регистра данных, регистра управления и состояния). Программа выполняет опрос флага готовности ПУ (6-го или 7-го разряда порта состояния, адрес которого 379h) перед выводом очередного символа на печать, предварительно размещенного в регистре данных (378h) адаптера. Если ПУ готово принять символ (6-й разряд (АСК) порта состояния равен О или 7-й разряд (BUSY) порта состояния равен 1), то программа устанавливает разряд О (STR) регистра управления (37Ah). сигнал с выхода которого осуществляет запись символа в ПУ. После чего единичное значение разряда О регистра управления сбрасывается в исходное состояние. Данные, выводимые на печать, могут быть заданы в программе, вводятся в буфер с помощью клавиатуры с использованием соответствующего прерывания DOS или BIOS или размещены в виде текстового файла на диске.
Справочные сведения
В общем случае в ПК предусматривается наличие трех параллельных портов (LPT-LPTJ. Базовый (начальный) адрес LPT( хранится в области данных BIOS в ячейке 0040-0008: а для LPT2 - в ячейке 0040-000А и т. д. Наиболее употребительным является базовый адрес принтера, равный 378h, который соответствует регистру данных адаптера принтера. Базовый адрес - это младший адрес из группы адресов (378h-37Ah). Регистру состояния адаптера принтера присвоен адрес 379h. а регистру управления - адрес 37Ah. Форматы регистров состояния и управления имеют следующий вид.
Формат регистра состояния принтера:
О = при печати возникли ошибки
О = принтер в автономном режиме 1 = сигнал "конец бумаги"
О = принтер готов к печати следующего еймвола
О = принтер занят
Программа вывода данных на печать	205
Формат регистра управления принтером:
7 6 5 4 3 2 1 0
|х|х|х| II |~П Ь,’™:
0: 1 = бит запуска печати (см. ниже)
1: 1 = после возврата каретки выполняется перевод строки
---------2: 1 инициализировать принтер
------------3: 1 = разрешить вывод на печать (должен быть всегда установлен)
--------------4: 1 = разрешить прерывания от принтера
Рассмотрим протокол обмена данными между адаптером и принтером. Байт данных помещается в регистр данных (порт 378h) адаптера, с выходов которого он поступает в принтер. Затем устанавливается бит 0 (STR) регистра управления (порт 37Ah) и тут же сбрасывается. Сигналом STR выполняются запись байта данных во входной регистр принтера и формирование сигнала прерывания, указывающего микропроцессору принтера, что его входной регистр полон.
После этого программа сканирует бит 7 или бит 6 регистра состояния (порта 379h) с целью определить момент готовности принтера к приему следующего байта данных. Принтер может не печатать сразу байт данных, а хранит его в своем буфере до тех пор, пока не будет образована строка данных для печати. Кроме того, вывод данных на печать можно организовать и с помощью таймаута (определенного интервала времени), учитывающего задержку в готовности принтера. Более эффективно процессорное время используется в режиме прерывания, которое выполняется в том случае, если принтер готов принять очередной символ. Тогда адаптер при наличии сигнала разрешения прерывания (бита D4=l порта 37Ah) формирует сигнал прерывания IRQ7, поступающий в контроллер прерывания.
Несмотря на простоту управления, принтер представляет собой достаточно сложное устройство, имеющее свой микропроцессор, ПЗУ и ОЗУ.
Микропроцессор используется для обработки управляющих последовательностей и управления печатью. ПЗУ содержит описание рисунков символов в зависимости от их кода и выбранной таблицы и программы на языке используемого микропроцессора. ОЗУ применяется для временного хранения введенных данных и спроектированных пользователем символов. Ряд принтеров, помимо интерфейса Centronics, могут подключаться и к последовательному интерфейсу.
Принтер обрабатывает ряд спецсимволов (таких как звонок, забой, горизонтальная и вертикальная табуляции), а также имеет достаточно сложную систему команд для изменения режимов работы и управления печатью.
Обычно команды начинаются с символа ESC (шестнадцатеричный код 1 Bh) и имеют длину от двух байтов и более (существуют командные последовательности, включающие по нескольку килобайт информации, например команды загрузки спроектированных пользователем шрифтов). Спецсимволы и байты команд передаются принтеру так же, как и обычные символы, предназначенные для печати, - описанным выше способом.
206
Интерфейсная схемотехника
Подобный способ управления удобен для программного изменения режимов работы устройства. Учитывая, что выпуском принтеров для ПК занимается достаточно большое число компаний и возможности принтеров постоянно совершенствуются, нет смысла приводить полностью какую-либо систему команд, так как, во-первых, она в разных марках и моделях принтеров различна и, во-вторых, достаточно полно описывается в документации на каждый конкретный принтер.
Существует два основных стандарта на систему команд и таблицу используемых символов (стандарты IBM и EPSON), которых в основном придерживаются фирмы-изготовители, оставляя за собой право вносить в них изменения и дополнения. Единого стандарта как на систему команд, так и на расположение и рисунки символов второй половины таблицы ASCII (коды 129-255) нет. Наиболее часто используемые команды:
•	установка вида шрифта и режима печати;
•	черновой текстовый (draft), нормальной ширины (pica), узкий (condensed) или средней ширины (elita):
•	качественный шрифт (NLQ, Proportional, Orator, Script и т. д.);
•	выбор таблицы символов из ПЗУ (обычно имеются несколько таблиц, отличающихся расположением управляющих кодов, наличием и расположением псевдографических символов или курсива);
•	загрузка в ОЗУ принтера спроектированных пользователем шрифтов и работа с ОЗУ принтера (именно в этой группе команд имеются наибольшие различия между разными моделями);
•	управление принтером в режиме точечной графики;
•	установка служебных параметров (размеры отступов, страницы, шаг табуляции, расстояние между строками) и изменение характеристик (сброс, включение/отключение датчика конца бумаги, печать в одну или в две стороны ит. п.).
Ряд характеристик и режимов работы может выбираться как программно, так и аппаратно с использованием кнопок и клавиш на лицевой панели и DIP-переключателей. Существуют характеристики, изменить которые можно только аппаратно (например, возможность загрузки шрифтов или размер используемого ОЗУ).
В последних моделях ПК используется улучшенный параллельный двунаправленный 8-разрядный порт (ЕРР), который реализует рутинные операции, а процессор выполняет только передачу данных в буферную память ЕРР. Поэтому порт ЕРР выполняет передачу быстрее (режим Fast Centronics), чем LPT-порт. Порт ЕРР совместим с портом LPT и требует предварительной программной инициализации.
Другим стандартом параллельного порта является порт с расширенными возможностями (ЕСР), в котором сохранен режим Fast Centronics и реализованы новые функции, в частности сжатие данных.
Пример выполнения варианта задания
Вариант задания: выводимый на печать текст хранится в программе, для опроса готовности принтера используются бит 7 порта состояния и команда проверки TEST.
В приведенной ниже программе сегмент стека с именем и типом STACK используется для временного хранения содержимого регистров и для обеспечения
Программа вывода данных на печать
207
нормального возврата в систему по завершении программы. Под сегмент стека резервируются 48 слов (96 байт). Адрес первой выполняемой команды задается в операторе END в конце программы. Операторы вталкивания в стек значения регистра DS и нулевого содержимого регистра АХ совместно с оператором RET (в конце основной программы) предназначены для возврата в систему.
В начале текста программы порту данных (РД), состояния и управления (РУ) адаптера ПУ присвоены символические имена Data_Port, State_Port и Control_Port соответственно.
Выводимая строка символов имеет начальный адрес OUTS. В конце текстовой строки, заключенной в апострофы, следуют символы перевода строки, возврата каретки и код 0, указывающий на окончание печати.
Основная программа имеет имя TEST Первый выполняемый оператор памяти обозначен меткой START. Индексный регистр SI устанавливается на начало печатаемой строки. В регистр AL загружается байт из сегмента, адресуемого регистром CS (сегмент PROGS) по адресу OUTS + SI (начальный адрес строки + смещение). Затем производится сравнение этого байта с нулем (знаком завершения строки печатаемого текста). В случае неравенства вызывается подпрограмма печати символа, наращивается на единицу содержимое SI и выполняется переход на метку COIL (вызов очередного байта). Если очередной байт равен нулю, то осуществляется выход в систему командой RET (метка FINITA).
Печать одного символа реализована в виде отдельной процедуры с именем PRINT, которая выполняет печать символа, содержащегося в регистре AL, для ввода-вывода содержимого портов используется регистр DX. Прежде всего в порт данных (РД) выводится код печатаемого символа. Затем вводится содержимое порта состояния и анализируется флаг готовности (АСК).
Если флаг готовности сброшен, то осуществляется циклический переход на метку WAITT до тех пор, пока флаг готовности не станет равным 1. После этого в порт управления (РУ) последовательно выводятся два управляющих байта, в которых младший (нулевой) разряд вначале равен 1 (первый байт), а затем равен 0 (второй байт), то есть осуществляется запись содержимого РД адаптера в регистр контроллера ПУ. Возврат в основную программу производится после того, как символ напечатан.
При использовании текстового редактора исходная программа заносится в файл под именем L_PRN.ASM. Трансляция и компоновка осуществляются инструкциями:
masm L_PRN L_PRN link L PRN L PRN
Текст программы
.model tiny
Data_Port	equ	378h	;	адрес	порта	данных
State_Port	equ	379h	;	адрес	порта	состояний
Control_Port	equ	37Ah	;	адрес	порта	управления
proqr seqment assume cs:proqr,ds:proqr orq 100b
Start: Call testp int 20h outsl db ’	This is a printer Test	10,13,0
208
Интерфейсная схемотехника
testp	proc near	
	push ds xor ax, ax push ax mov si, 0	
coil:	mov al, cs:outsl[si]	;	чтение в AL выводимого байта
	cmp al, 0	;	конец сообщения?
	jz finita	;	переход на конец программы
	call print	;	подпрограмма печати байта
	inc si	; jmp coil	следующий символ
finita: pop ax pop dx ret		
testp	endp	
print	proc near	
	mov dx, Data_Port	;	засылаем в DX адрес порта данных
	out dx, al	;	выводим в порт печатаемый символ
	mov dx, State_Port	;	DX — адрес порта состояний
waitl:	: in al, dx test al,80h jz waitl mov dx, Control_Port mov al, ODh	
	out dx, al ; установить mov al, OCh out dx, al ; strobe = 0 ret	strobe =1
print	endp	
progr	ends end start	
3.10.	Варианты заданий
Варианты заданий получаются из функционального графа (рис. 3.55), содержащего три уровня: алгоритма, программы и данных, каждый из которых имеет несколько вершин (1-4).
Маршрут в графе, включающий по одной вершине из каждого уровня, образует вариант задания, например 1 а-2п-3д. Вершина 4 в каждом уровне введена для проявления творческой самостоятельности студентов.
Уровень алгоритма определяет опрос одного или нескольких битов порта состояния, например 1а - опрос бита 7 или бита 6. 2а - опрос бита 7 и 5 (в случае отсутствия бумаги вывести сообщение на экран), За - опрос бита 7 и 3 и т. д.
Уровень программы показывает командную реализацию опроса битов состояния, например Ш - опрос с использованием команды проверки (TEST), 2П -команды AND, ЗП - команды сравнения (СМР) и т. д.
Уровень данных указывает на источник печатаемых символов, например:
1	д - сообщение хранится в программе,
2	д- вводится с клавиатуры (с отображением на экране или без эхопечати), 3 д - сообщение в виде текстового файла хранится на жестком диске.
Энергозависимая флэш-память
209
Рис. 3.55. Функциональный граф вариантов заданий
J1
Приведенный текст программы 1 соответствует варианту 1а-1п-1д. Без учета вершины 4 функциональный граф дает 27 вариантов заданий.
3.11.	Энергонезависимая флэш-память
Основные определения
ПЗУ (ROM - Read - Only - Memory память только для чтения) - постоянное запоминающее устройство, информация которого не может быть изменена и сохраняется при отключении питания.
ППЗУ (EPROM - Erasable Programmable Read - Only - Memory перепрограммируемая память только для чтения) - перепрограммируемое постоянное запоминающее устройство, сохраняющее информацию при отключении питания и использующее для ее перезаписи специальное устройство - программатор. Для стирания содержимого ППЗУ необходимо ультрафиолетовое излучение.
ЭССПЗУ (EEPROM - Electrically Erasable Programmable Read - Only - Memory память только для чтения с электронным стиранием и программированием) -постоянное запоминающее устройство, сохраняющее информацию при отключении питания и содержимое которого может быть перепрограммировано в самом компьютере, то есть не требующее ультрафиолетового излучения и программатора.
Флэш-память (Flash-memory) - энергонезависимая полупроводниковая память с возможностью стирания и записи новой информации, являющаяся дальнейшим развитием ЭССПЗУ (EEPROM). Флэш-память наиболее часто используется для хранения Базовой операционной системы ввода/вывода (BIOS) и конфигурационных данных компьютерных устройств.
Флэш-накопитель USB (USB Flash-Drive) - малогабаритная сменная энергонезависимая память, сохраняющая данные после отключения питания, предназначенная для запоминания компьютерной информации, подключается к порту USB компьютера. Емкость флэш-накопителя более 1 Гбайта с интерфейсом 2.0 (USB 1.1) и скоростью чтения 4300 Кбит/с. Управление работой флэш-накопителя осуществляет встроенный контроллер.
Флэш-диски - полупроводниковые портативные надежные с низким энергопотреблением диски, применяемые в малогабаритном цифровом оборудова
210
Интерфейсная схемотехника
нии. Флэш-диски используются для замены в ряде случаев жестких дисков. Характеризуются по типу применяемого внешнего интерфейса (USB, АТА и др.). Флэш-диск обычно содержит ПЗУ, в котором хранится местная BIOS, позволяющая эмулировать принцип работы жесткого диска. Флэш-диск построен на базе флэш-памяти и дополнительно включает в себя:
•	блок связи с внешним интерфейсом;
•	блок обнаружения и коррекции ошибки;
•	блок инициализации;
•	блок управления;
•	другие блоки.
Емкость флэш-диска достигает нескольких сотен Мбайт.
ЭСППЗУ с последовательным доступом (EEPROM) - используют для доступа к своим данным последовательные интерфейсы (I2C, SPI, CBUS и др.). Микросхема такого ЭСППЗУ 16. 32 Кбита информации, но за счет используемого последовательного интерфейса возможно наращивание их числа с целью увеличения общей емкости.
Микросхемы ЭСППЗУ выполняют следующие функции:
•	автоматического увеличения адреса (инкремент):
•	гарантированного числа (10 000) циклов записи;
•	наращивания числа микросхем;
•	протокола последовательного интерфейса;
•	защиты от перегрузок энергии;
•	задания идентификационного номера в группе микросхем.
Фирмой SONY выпущен флэш-накопитель с интерфейсом USB, емкостью 128 Мбайт, особенность которого состоит в том, что накопитель содержит схему для чтения отпечатка пальца своего владельца, позволяющую получить доступ к информации накопителя.
Флэш-карты - сменные носители информации, построенные на базе флэш-памяти, максимальная емкость которых 64. 128. 512 Мбайт и более. Флэш-карты имеют небольшие габариты (не более 4,5 см в длину, менее 4 см в ширину). Для чтения/записи флэш-карт выпускаются малогабаритные устройства с интерфейсом USB. Флэш-карты вставляются в устройство подобно жесткому диску в дисковод компьютера, и со скоростью работы порта USB информация может быть записана или считана из флэш-карты в компьютер. Внешне такие флэш-карты напоминают гибкие диски и имеют также срезанный угол (ключ), исключающий неправильную установку карты.
Кроме того, выпускаются устройства для чтения/записи флэш-карт другого типа, позволяющие использовать дисковод гибкого диска 3,5”. Такое устройство имеет габариты конверта гибкого диска 3,5”, и в него сбоку вставляются портативная флэш-карта и миниатюрная батарейка, рассчитанная на 9 ч работы. При обращении к дисководу гибкого диска содержимое флэш-карты можно выводить на экран дисплея.
Разработана технология «Extreme Digital», являющаяся дальнейшим развитием флэш-карт. Японскими корпорациями выпущена флэш-карта размером с почтовую марку, хранящая около 8 Гбайт информации.
Ферроэлектрическая память (FRAM - Ferroelectric RAM) - энергонезависимая память, характеризующаяся возможностью многократной записи (около 1000 циклов), высоким быстродействием при чтении данных и низким напря
Энергозависимая флэш-память	211
жением питания (3 В). Для сравнения: память EEPROM или FLASH требует питания 10-12 В. Физический эффект, используемый в памяти, состоит в таком размещении атома внутри кристаллической решетки сегнетоэлектрической пленки, что смещение атома в одну сторону соответствует логической 1, а в другую сторону - логическому 0. Емкость памяти FRAM составляет 1 Мбит и выше. Технические характеристики FRAM позволяют сделать вывод, что эта память, возможно, придет на смену FLASH.
Функциональные признаки флэш-памяти
Дисциплина обслуживания - твердотельный портативный энергонезависимый носитель информации большой емкости, используемый в компьютерах, мобильных телефонах, фотоаппаратах, видеокамерах, мониторах и др.
Физический эффект - возможность долгого и надежного хранения заряда, например «плавающим» затвором п-МОП-транзистора (полевого транзистора).
Полевой транзистор - транзистор, управляемый электрическим полем, в котором используется только один вид тока, созданный электронами (п) или дырками (р). Поэтому полевой транзистор еще называют униполярным. В п-МОП-транзисторах под действием электрического поля управляющего затвора между истоком и стоком образуется n-канал, проводящий ток электронов. Этот ток зависит от величины положительного напряжения на управляющем затворе транзистора. Наиболее простая ячейка флэш-памяти использует один п-МОП-транзистор с дополнительным «плавающим» затвором, который создается из металла или поликристаллического кремния в изоляторе, под управляющим затвором (рис. 3.56).
В п-МОП-транзисторе с «плавающим» затвором наблюдаются два физических эффекта:
•	эффект размещения (инжекции) «горячих» электронов, образованных истоком в «плавающем»затворе:
•	эффект туннелирования заряда из «плавающего» затвора на сток (преодоление потенциального барьера).
212	Интерфейсная схемотехника
Первый эффект соответствует режиму программирования, записи логического О (накоплению заряда), а второй эффект - режиму снятия заряда (состоянию логической 1).
На рис. 3.57 представлены условное графическое изображение п-МОП-транзис-тора с «плавающим» затвором (а) и его размещение в матрице флэш-памяти (б).

УЗ - Управляющий затвор И - исток
С - сток
DC - дещифратор DCy
Рис. 3.57. Компоненты флэш-памяти
а) условное графическое изображение п-МОП-транзистора с «плавающим» затвором; б) размещение ячейки в матрице памяти
С помощью дешифратора DCx выбирается соответствующая строка матрицы памяти и выполняется считывание сигналов из выбранных ячеек памяти, которые поступают на селектор. Селектор, управляемый дешифратором DCy, осуществляет выбор к-битов данных, поступающих на выходы. Стирание записанной информации выполняется импульсом положительного напряжения, подаваемого на управляющий затвор.
Известны и другие, более сложные, многоуровневые типы ячеек флэш-памяти.
Каждая многоуровневая ячейка памяти хранит несколько битов данных за счет изменения величины заряда транзистора (величины его порогового напряжения). Дальнейшее увеличение параметров флэш-памяти (емкости, быстродействия) связано с применением новых технологий (нанотехнологий) в создании ячеек памяти, например с использованием в качестве «плавающего» затвора углеродных нанотрубок, применением нанотранзисторов, полимеров, биополимеров и т. д.
Способ доступа
Все операции чтения и записи обычно выполняются на уровне страниц или пакетов. Во флэш-памяти предусмотрены для выполнения этой цели две буферные памяти, с помощью которых осуществляется обращение к флэш-памяти. Кроме того, стирание информации также осуществляется страничным (блочным) способом.
Контрольные вопросы	213
Параметрическая классификация сменной флэш-памяти:
•	объем памяти (Мбайт) - 32-2048 и более;
•	время хранения данных (лет) - 10 и более;
•	защита от записи - схемная (с помощью переключателя на корпусе) или программная;
•	интерфейс - USB, IEEE 1394, АТА, SPI специализированный, параллельный;
•	вес (г) - 11, 14, 21 и менее;
•	скорость чтения (Мбайт /с) - 6, 8, 9;
•	скорость записи (Мбайт /с) - 5. 7:
•	размеры (мм) - 67x21x8, 75х22х 10, 36x43x4, 45x37x7, 34х24х 1 ;
•	напряжение питания (В) - 2,7; 3,6; 5.
Контрольные вопросы
1.	Назовите активный уровень сигнала -IOW;
1)	высокий;	2) низкий.
2.	Ассемблерная команда In осуществляет;
1)	пересылку данных; 2) вывод данных; 3) ввод данных.
3.	Передний фронт сигнала АСК - это переход;
1)	из 1 в 0;	2) из 0 в 1.
4.	Микросхема СП 1 сравнивает:
1)	два 16-битных числа;
2)	два 8-битных числа:
3)	два 4-битных числа.
5.	Микросхема ИД7 - это:
1)	мультиплексор; 2) регистр; 3) счетчик; 4) дешифратор.
6.	Запись бита данных в триггер с обозначением управляющего входа -/С выполняется по :
1)	уровню сигнала:
2)	заднему фронту сигнала;
3)	переднему фронту сигнала.
7.	Выберите правильное представление 16-ричного числа ЕА:
1)	1101 1110; 2) 1010 1101;	3)	10111111;	4)	1110	1010.
8.	Переведите двоичный код 1100 0101 в 16-ричное число:
1)	79;	2) DA; 3) С5;	4)	А7.
9.	Ассемблерная команда INC:
1)	увеличивает;
2)	сравнивает;
3)	уменьшает соответствующее значение.
214
Интерфейсная схемотехника
10.	Регистр DI процессора является:
1)	регистром общего назначения;
2)	указателем сегмента;
3)	индексным регистром;
4)	указателем стека.
11.	Определите правильность подключения приемопередатчика к шине данных ISA (SD7-SD0):
12.	Адаптер содержит четыре порта: РДВв1, РДВыв 1, РДВв2, РДВыв2 (Вв -ввод, Выв - вывод, РД - регистр данных). Назовите оптимальное число младших разрядов адреса, необходимое для выбора этих портов:
1) А0-А1;	2) А0-А2; 3) АО-АЗ.
13.	Выберите схему, которая, дешифрируя адрес 378h трех портов ввода/вывода шины ISA, правильно вырабатывает сигнал ВыборПУ.
1.
2.
3.
Контрольные вопросы
215
14.	В адаптере содержатся следующие адресные регистры: управления РУ (W), состояния PC (R), режима РР (W), адреса РА (W), данных РД (W/R). Операция доступа к портам имеет обозначения: W - запись, R - чтение, W/R- запись-чтение. Выберите оптимально адреса портов из заданного резерва:
1) ЗССН:	2) ЗС8Н:	3) 3CDH: 4) ЗСЕН: 5) 3CFH:
6)	ЗС9Н:	7) ЗСАН: 8) ЗСВН.
15.	Для схемы дешифратора управляющих сигналов трех портов определите таблицу входных сигналов, которая правильно формирует один из выходных сигналов:
-IOW
АО
А1
Выбор ПУ
1.	-IOW 0	АО 1	А1 0	ВыборПУ 0
2.	-IOW	АО	А1	ВыборПУ
	0	0	1	0
3.	-IOW	АО	А1	ВыборПУ
	1	0	0	0
4.	-IOW	АО	А1	ВыборПУ
	0	0	0	1
16.	Укажите устройство, устанавливающее бит флага готовности регистра состояния (ФГ PC):
1)	процессор: 2) адаптер: 3) ПУ.
17.	Выберите устройство, являющееся инициатором сброса бита ФГ:
а) процессор: б) адаптер:	в) ПУ.
18.	Установка бита разрешения прерывания регистра состояния (РП PC) осуществляется следующими устройствами:
а) процессором:	б) ПУ:	в) адаптером.
19.	Если в регистре состояния флаг готовности ввода равен 1(РС ФГ Вв=1), то это указывает, что:
а)	регистр данных вывода (РДВыв) пуст:
б)	регистр данных ввода (РДВв) пуст:
в)	РДВв полон:
г)	РДВыв полон.
216	Интерфейсная схемотехника
20.	Сигнал I/O CH RDY может быть использован в качестве:
1)	сигнала квитирования;
2)	сигнала, удлиняющего цикл шины;
3)	сигнала готовности принтера.
Упражнения
На рис. 3.58 представлен морфологический граф (МГ) вариантов построения адаптера, содержащего адресуемые 8-разрядный регистр данных вывода (РДВыв), 8-разрядный регистр данных ввода (РДВв) и 2-разрядный регистр состояния (PC). Морфологический граф содержит четыре уровня.
сш
ДшА
ДшУС
Адреса портов
23 (ЛА2, ЛН1)
43
РДВв	ЗСОН	ЗС2Н	ЗС4Н
РДВыв	ЗСОН	ЗС2Н	ЗС4Н
PC	ЗС1Н	ЗСЗН	ЗС5Н
Рис. 3.58. Морфологический граф вариантов построения адаптера
Первый уровень - системная шина (СШ) состоит из двух вершин 11 и 12. Второй уровень определяет тип микросхем, используемых для реализации дешифратора адреса (ДшА). Так, дешифратор ДшА можно построить на двух микросхемах ИД7 (вершина 21), на двух микросхемах сравнения СП1 (вершина 22) и на микросхемах ЛА2 и ЛН1 (вершина 23). Третий уровень задает тип микросхем, применяемых для построения дешифратора управляющих сигналов (ДшУС). Вершина 31 соответствует микросхеме дешифратора ИД4, а вершина 32 - ЛА1. Последний четвертый уровень определяет адреса портов, взятые из резерва. Этот уровень для простоты изображения графа содержит только три вершины (41, 42 и 43). Морфологический граф задает 36 вариантов построения принципиальной схемы адаптера. Каждый вариант определяется маршрутом в морфологическом графе, проходящим через вершину каждого уровня. Например, маршрут 11,21,31. 42 задает вариант подключения портов к шине ISA, дешифратор ДшА должен быть реализован на двух ИД7, дешифратор ДшУС - на ИД4, адрес регистра РДВв - ЗСОН, адрес регистра РДВыв - ЗСОН, и адрес регистра PC - ЗС1Н, причем регистр PC доступен по чтению со стороны П. ПУ записывает байт данных
Литература	217
в регистр РДВв и устанавливает бит готовности в регистре PC, а процессор - бит разрешения прерывания (РП). Кроме того, сигнал РП может быть считан процессором.
С целью быстрой проверки схемы необходимо выполнить следующие условия: избегать шинных соединений; показать обозначения сигналов на выходах дешифраторов ДшУС и ДшА, например сигналы ЧтРДВв, ЗпРДВыв, ВыбПУ ит. д.; рядом с дешифраторами ДшА и ДшУС представить соответственно двоичный эквивалент адреса и таблицу операций (рис. 3.59).
					
	WR	RD	Al	АО	операция
А9 А8 А7 А6 А5 А4 АЗ А2	1	0	0	0	ЧтРДВв
11110	0	0	1	0	1	0	0	ЗпРДВыв
	•	•	•	•	• • •
	•	•	•	•	• • • и
Рис. 3.59. Двоичный эквивалент адреса ЗС4Н и таблица операций дешифратора ДшУС "					
В качестве регистров РДВв и РДВыв предлагается использовать микросхемы ИР22, а для реализации PC - триггеры ТМ2.
Упражнение 1. Разработать структурную схему подключения клавиатуры 16х 16 к шине ISA.
Упражнение 2. Разработать принципиальную схему адаптера печатающего устройства.
Упражнение 3. Разработать структурную схему сопряжения компьютера-передатчика и компьютера-приемника с помощью шины ISA.
Литература
1.	Авдеев В. А., Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства: уч. пособие. - М.: Радио и связь, 2001. - 480 с.: ил.
2.	Хоровиц П., Хилл У. Искусство схемотехники: в 3 т. Т. 2 / пер. с англ. 4-е изд., перераб. и доп. - М.: Мир, 1993. -371с.: ил.
3.	Сопряжение датчиков и устройств ввода данных с компьютерами IBM PC / пер. с англ., под. ред. У. Томпкинса, Дж. Уэбстера. - М.: Мир, 1992. - 592 с., ил.
4.	Новиков Ю. В., Калашников О. А., Гуляев С. Э. Разработка устройств сопряжения для персонального компьютера типа IBM PC: практ. пособие / под общ. ред. Ю. В. Новикова. - М.: ЭКОМ, 1997. - 224 с.: ил.
Устройство -цель шины PCI	ж
4.1.	Основные определения
пецификация PCI (Peripheral Component Interconnect, взаимодействие пе-/ риферийных компонентов) - документ фирмы Intel, содержащий подробное L> описание мультиплексной шины и условий сопряжения разнообразных устройств в компьютере с учетом стандарта РаР и методики управления шиной (bus mastering).
Стандарт РаР (Plug and Play, вставь и играй) - стандарт программируемого конфигурирования устройств ввода/вывода с целью исключения конфликтов и упрощения их установки в компьютер. Стандарту РаР должны удовлетворять: системная плата, BIOS, операционная система и платы расширения. Компьютер РаР позволяет осуществить автоматическое распределение ресурсов (адресных пространств памяти и регистров ввода/вывода, каналов прямого доступа к памяти, линий запросов прерываний и прочего), тестирование и инициализацию устройств. В табл. 4.1 представлены ресурсы (параметры) конфигурирования.
Шина PCI - быстродействующая мультиплексная независимая от типа процессора 32-или 64-битная шина ввода/вывода данных с квитированием и па-
Таблица 4.1
Устройство	Адрес ввода/вывода	Базовый адрес ОЗУ	ПЗУ		Каналы ПДП	Прерывание
Контроллер клавиатуры	~60h-64h				IRQ 1
Контроллер гибкого диска	3F0h-3F7h			К2	IRQ6
Адаптер VGA		А0000, ВОООО, В8000	СОООО, Е0000		
Порт LPT 1 Centronics	378h-37Fh				IRQ7
Основные определения	219
кетной или одиночной передачей данных, имеющая доступ к адресным пространствам: ввода/вывода, памяти и конфигурации.
Инициатор (мастер) - активное устройство, владеющее шиной PCI и инициирующее ее действие путем установления сигналов FRAME# и IRDY#, выполнения фазы адреса (команды) и фазы данных в режиме записи.
Цель (исполнитель) - пассивное устройство, опознающее собственный адрес и подтверждающее это действие формированием сигнала DEVSEL#, выполняющее передачу (прием) данных, сопровождаемую сигналом TRDY#.
Мост - устройство передачи данных, соединяющее две или более компьютерные шины, например мост PCI-PCI. Основная функция моста - передать информацию от основной шины PCI к дополнительной. Кроме того, мост позволяет работать шинам независимо друг от друга.
Конфигурирование компьютерного оборудования - процесс бесконфликтной установки оборудования за счет распределения ресурсов. Различают конфигурирование ручное и автоматическое. Ручное конфигурирование осуществляется с помощью перемычек, надеваемых на штырьки платы, или путем установки DIP-переключателей в соответствующие положения. Например, в жестком диске можно DIP-переключателем задать режим ведущего или ведомого диска.
Автоматическое (программное) конфигурирование выполняется в соответствии со стандартом РаР, требующим от каждого подключаемого устройства программно-доступной памяти конфигурации.
Память конфигурации - память, предназначенная для выполнения следующих функций: идентификации оборудования, диагностирования (обработки ошибок), инициализации, управления режимами работы оборудования, распределения адресного пространства и т. д.
В качестве примера рассмотрим описание некоторых регистров памяти конфигурации моста 21050 (PCI-PCI), представленное в табл. 4.2.
Таблица 4.2
Адрес	Регистр	Диапазон битов	Значение	Доступ	Комментарий
ООП	Идентификатор устройства	31-16	0001И	R	Мост 21050 фирмы INTEL
	Идентификатор изготовителя	15-0	1011 h	R	Поставщик моста
04П	Состояние	31-16	*	R/W	Чтение состояния моста Запись для очистки
	Команда	15-0	*	R/W	Управление режимами работы мост а
08П	Класс	31-24	06П	R	Код базового класса
	Подкласс	15-8	04П	R	Код подкласса
	Номер версии	7-0	* *	R	Ревизия моста
ОСП	Встроенный тест	31-24	ООП	R	Тест отсутствует
	Тип заголовка	23-16	01 и	R	Определяет формат адресов 10H-3FH конфигурации
	Таймер	15-8	* *	W/R	Задает число тактов от установки FRAME#
	Размер кэша	7-0	* *	W/R	Установка размера строки
кэша
* Значение определяется форматом регистра состояния (команды)
** Переменное значение, R - чтение, W - запись
220	Устройство - цель шины PCI
Транзакция - событие (действие) на шине, состоящее из фазы адреса и одной или нескольких фаз данных.
Паритет - способ контроля передаваемых данных, состоящий в том, что в поле данных содержится дополнительный бит (чет или нечет). При нечетном контроле сумма всех битов, включая и дополнительный бит. должна быть нечетной, то есть если сумма битов данных нечетная, то дополнительный бит равен 0, и наоборот, если сумма битов данных четная, то дополнительный бит равен 1.
Методика управления шиной (bus mastering) - способ организации шины, связанный с распределением управления шиной между центральным процессором и периферийными устройствами, позволяющий ускорить передачу информации и освободить центральный процессор от множества операций ввода/ вывода.
Базовый адрес - младший из группы смежных адресов, например портов, через которые осуществляется доступ к периферийному устройству.
Базовая система ввода/вывода (BIOS - Basic Input - Output System) - совокупность программ, управляющих на низком уровне работой компьютерных устройств (видеоадаптера, клавиатуры, контроллера диска и т д.). Главная BIOS определяет наличие подключенных к процессору устройств, передает управление периферийным BIOS этих устройств для их инициализации и самотестирования. Если загрузка BIOS и проверка оборудования завершены успешно, то осуществляется загрузка операционной системы (ОС) с диска в системную область памяти компьютера для управления его работой. Загрузка ОС содержит несколько этапов:
•	включение питания компьютера:
•	выполнение инструкций главной BIOS, связанных с тестированием флэш-памяти BIOS, передачей управления периферийным BIOS, размещенных в соответствующих устройствах, для их инициализации и самотестирования, идентификацией всех устройств, проверкой процессора и системной памяти и загрузкой ОС.
Программы BIOS представлены фирмами AMI (American Megetrends. Inc.). AWARD, PHOENIX и др. и время от времени обновляются, что связано с разработкой новых устройств (процессоров, жестких дисков) и совершенствованием стандарта РаР.
Флэш-память - энергонезависимая память, которую можно перепрограммировать с помощью процессора непосредственно в компьютере, и наиболее подходящая для хранения BIOS.
Теневая память (Shadow Memory) - область оперативной памяти, используемая для размещения программы BIOS во время включения питания компьютера с целью увеличения быстродействия, так как обращение к флэш-памяти BIOS значительно медленнее, чем к оперативной памяти. Параметр настройки BIOS - Video ROM BIOS Shadow (видео BIOS в память) позволяет при его установке переносить BIOS из постоянной памяти видеокарты в оперативную память компьютера.
Утилита - служебная программа, предназначенная для обслуживания и настройки операционной системы и компьютера. Например, утилита AWARD позволяет получить информацию о BIOS и изменить некоторые параметры компьютера.
Задание на проектирование цели	221
Утилита настройки (Setup Utility) - служебная программа, используемая для настройки некоторых стандартных параметров, особенностей BIOS и чипсета, РаР, управления питания, встроенных устройств и т. д.
Для AMI BIOS запуск программы Setup выполняется в процессе загрузки операционной системы путем нажатия клавиши Del.
Путем установки переключателя Перезагрузить компьютер можно получить на экране монитора заставку BIOS, на которой указаны название фирмы-производителя BIOS, версия и год выпуска BIOS и приглашения для входа в Setup. После нажатия клавиши Del выполняется запуск программы Setup, причем нажатие необходимо произвести быстро, иначе осуществится перезагрузка операционной системы.
Основное меню программы Setup содержит следующие пункты:
•	стандартные настройки (установка даты и времени, типа и количества жестких дисков, геометрии дисков, типа видеоадаптера);
•	настройки особенных параметров (предупреждение о вирусе (включить или выключить), быстрое самотестирование, порядок загрузки операционной системы (С:, А: или другой), установка скорости повтора передачи скан-кода (символа) нажатой клавиши и других параметров клавиатуры, установка теневого BIOS видео, позволяющего перенести BIOS из ПЗУ видеокарты в системную память, что увеличивает скорость обработки изображений);
•	настройки особенностей чипсета (памяти, использования кэша, частоты шины и т. д.);
•	настройки сохранения энергии (гашение экрана, длительность времени сохранения энергии (частичный, ожидание, отключения питания));
•	настройка РаР PCI (ручное распределение ресурсов: адресов, линий прерываний и каналов ПДП);
•	настройка встроенных устройств (коммуникационных последовательных и режимов параллельных портов (стандартного, расширенного и т. д.));
•	настройка пароля (руководителя и пользователя), автоматического определения параметров жесткого диска и другие настройки.
Для перемещения по основному меню используются клавиши управления курсором (^,	?, I), а для выбора пункта-клавиша Enter. Кроме того, установ-
ка соответствующих параметров выбранного пункта осуществляется с помощью клавиш Page Up или Page Down.
4.2.	Задание на проектирование цели
Цель является простым устройством (выполняет одну функцию) и подключена непосредственно к основной шине PCI. Транзакция шины при обращении к цели содержит фазу адреса и фазу данных (отсутствует пакетный режим).
Тактовая частота шины - 33 МГц.
Цель выполняет следующие команды:
•	чтение ввода/вывода;
•	запись ввода/вывода;
•	чтение конфигурации;
•	запись конфигурации.
222
Устройство - цель шины PCI
Кроме того, для упрощения схемы цель должна обеспечивать только одиночную передачу 32-битного адреса (А31-А0), младшего байта данных(В7-В0) и контроль четности.
Память конфигурации содержит минимально необходимые сведения, размещенные в ее первых пяти 32-битных регистрах, в которых указываются идентификаторы устройства и поставщика, состояние, класс и подкласс устройства, отсутствие теста и базовый адрес устройства. Адреса 32-битных регистров конфигурации следующие: 00h, 04h, 08h, ОСЬ, lOh.
Цель реализует простой протокол связи с внешним устройством (ВУ), состоящий в проверке готовности ВУ принять данные, выводе данных и записи данных в ВУ путем программной установки управляющего сигнала строба записи (рис. 4.1).
Цель содержит три порта: 4-битный регистр управления, 8-битный регистр данных и 5-битный шинный драйвер передачи состояния ВУ.
С помощью регистра управления устанавливаются следующие сигналы: строб записи данных, сброс и инициализация ВУ. готовность цели и др.
Шинный драйвер позволяет ввести в инициатор сигналы состояния ВУ: наличие ошибки, готовности и т. д.
4.3.	Общий вид схемы цели
Цель представляет собой адаптер, состоящий из двух частей: интерфейсного блока (интерфейсной логики, являющейся общей, стандартной для всех ВУ, подключаемых к шине PCI) и портов ввода/вывода (адресуемых регистров и драйверов), образующих интерфейс ВУ (рис. 4.2).
Рассмотрим кратко назначение узлов схемы цели.
Приемопередатчик связывает шину AD(31-0) PCI с внутренней шиной BAD(31-0) цели. В цикле вывода (записи данных в порт) приемопередатчик пропускает данные на шину BAD(31-0) и в цикле ввод (чтение данных из порта) -передает данные на шину PCL Передача данных на шину PCI определяется выбором регистра (порта) и наличием команды чтения данных или конфигурации.
Регистр адреса предназначен для временного хранения 32-битного адреса (А(31-0)), причем момент фиксации достоверного адреса осуществляется с учетом сигналов CLK и FRAME# схемой управления.
Общий вид схемы цели
223
PCI
ЛАР(31-0)
д
приемопередатчик v
Интерфейсный блок
Порты ввода/вывода
RESET
IPSEL
FRAME# |
CLK I IRDY# «TRDY# I „DEVSEuJ
PAR
,PERR#
ВАР(31-0)
ВАР(З-О)
II г Регистр адреса
A(31-5)
:lk
Регистр	।
управления	.
ft ХСЗ-ХСО
ВА(31-4)
Селектор адреса
Дешифратор команд
-----
Регистр команд
Схема управления < А^4~2^
Регистры конфигурации
Схема паритета
Дешифратор разр-х байтов
WR D#
BAD(7-0) CLK
Регистр $ данных
BAD(7-3)
RD_S#
ХР7-ХР0
Шинный § драйвер 1	0 fCLK
XS7-XS3
1
0
Рис. 4.2. Общий вид схемы цели
Селектор адреса сравнивает содержимое регистра адреса с базовым адресом ввода/вывода, хранящимся в соответствующим регистре конфигурации, и формирует сигнал Hit (совпадение адресов). Регистр команд используется для временного хранения 4-битной команды, передаваемой по линиям С/ВЕ(3-0)#.
Дешифратор команд определяет режимы работы цели и направление передачи информации. Цель выполняет четыре команды: чтение ввода/вывода, запись ввода/вывода, чтение конфигурации и запись конфигурации.
Схема управления принимает интерфейсные управляющие сигналы, координирует работу всех узлов цели в различных режимах и формирует ответные управляющие сигналы: готовность цели (TRDY#) и выбор устройства (DEVSEL#), указывающий инициатору на то, что цель опознала свой адрес.
Регистры конфигурации хранят информацию, связанную с идентификацией устройства и изготовителя, кодами класса и подкласса устройства и базовым
224	Устройство - цель шины PCI
адресом ввода/вывода. Все регистры доступны по чтению со стороны инициатора, и только регистр базового адреса ввода/вывода доступен по записи. Кроме того, выходы регистра базового адреса ввода/вывода подключены к входам селектора адреса. Выбор соответствующего регистра выполняется в цикле конфигурации шины PCI 3-битным адресом А(4-2), а режим записи или чтения конфигурации определяет дешифратор.
Цель выполняет две команды записи в порты ввода/вывода (регистры данных и управления), одну команду чтения порта ввода/вывода (состояния), чтения регистров конфигурации и запись в регистр базового адреса памяти конфигурации.
В качестве примера опишем выполнение команды записи в регистр данных.
В фазе адреса шины PCI инициатор выставляет адрес А(31-0) на линиях AD(31-0), команду записи в порт ввода/вывода на линиях С/ВЕ(3-0)# и устанавливает сигнал FRAME#, указывающий на начало транзакции на шине.
Схема управления, получив сигнал FRAME#, по положительному фронту первого CLK формирует сигнал строба, по которому осуществляется фиксация адреса и команды соответственно в регистре адреса и регистре команды. После этого содержимое регистра адреса А(31-5) сравнивается со значением регистра базового адреса памяти конфигурации. Если сравниваемые адреса одинаковы, то селектор адреса формирует сигнал Hit (совпадение), который поступает в схему управления и определяет формирование сигнала DEVSEL# с учетом сигнала CLK.
Сигнал DEVSEL# сообщает инициатору, что адрес опознан целью, причем возможно быстрая (один такт), средняя (два такта) и медленная (три такта) по времени после фазы адреса выработка сигнала DEVSEL#, что связано с задержкой сигналов в селекторе адреса и гонкой сигналов адреса на линиях А(31-5). Сброс сигнала DEVSEL# осуществляется после снятия сигнала IRDY#.
В цикле конфигурации сигнала DEVSEL# устанавливается, если целью приняты сигналы IDSEL, FRAME# и биты адреса А( 1,0)=00.
Предполагается, что устройства PCI способны опознать адрес и установить сигнал DEVSEL# в течение одного или двух тактов CLK после адресной фазы.
Время задержки установки сигнала DEVSEL# отмечается в битах состояния (9-10) регистра конфигурации (адрес регистра 04h). Принята следующая кодировка синхронизации сигнала DEVSEL# (00 - быстрая, 01 - средняя и 10 - медленная).
Фаза данных выполняется после адресной фазы. На начало этой фазы указывает сигнал IRDY#, устанавливаемый инициатором. Сигнал IRDY# определяет для цели наличие данных на шине AD(31-0).
Сигналом WR_D# схемы управления разрешается запись в регистр данных, если выполнены следующие условия:
•	дешифрированы биты адреса А(3,2)=00;
•	установлен сигнал IRDY#;
•	сформирован сигнал Hit (выбрана цель);
•	дешифрирована команда записи ввода/вывода.
Момент записи сигналов AD(7-0) в регистр данных определяется наличием сигнала IRDY# и положительного фронта первого сигнала CLK (рис. 4.3а), если выполняется быстрая установка DEVSEL#, или по положительному фронту второго сигнала CLK (рис. 4.36).
Общий вид схемы цели
225
При средней установке DEVSEL#, связанной с большой задержкой дешифрации сигналов в селекторе адреса, необходимо на 1 такт задержать момент записи AD(7-0) в регистрах данных (рис* 4*4)*
Схема управления может быть построена на базе двух ПЗУ (рис* 4* 5) или ПЛМ (рис* 4*6)* Принятая система кодирования ПЛМ представлена в табл* 4*3*
Сигнал общее чтение RD_P# используется для соединения шины BAD(31-0) с шиной AD(31-0) каждый раз, когда выполняется ввод данных в системный процессор*
Схемой управления, кроме того, формируются сигналы TRDY# (готовность цели) и DEVSEL# (выбор устройства), синхронизируемые CLK* Эти сигналы с тремя состояниями имеют низкий уровень*
Сигнал TRDY# устанавливается целью и предназначен для инициирования циклов ожидания, когда данные не готовы для их передачи*
При выполнении команды чтение ввода/вывода сигнал TRDY# сообщает инициатору, что данные установлены целью на линиях AD(31-0)*
Таблица 4.3
Входные сигналы	Выходы	Операция
Hit# IDSEL# А4 АЗ	А2 WRJ/O# RD.I/O# WR_CONF# RD.CONF# 0 1 2	3456789 10
0	1	0 0	0 0	1	1	1	0 11	11111110 WR_D#
0	1	0	1	0 0	1	1	1	10 1	11111110 WR_C#
0	1	0 0	11	0	1	1	110	11111110 WR_S#
10	0 0	0	1	1	1	0	111	01111111 RD_00#
10	0 0	0	1	1	0	111	10111111 RD_04#
10	0 0	11	1	1	0	111	11011111 RD_08#
10	0	1	0	1	1	1	0	111	11101111 RD_0C#
10	0	1	11	1	1	0	111	11110111 RD_10#
10	10	0	1	1	0	1	111	111110 10 WR_10
		
886	Устройство - цель шины PCI
Общий вид схемы цели
227
А2	 АЗ	 А4	 WRJ/O#	 RDJ/O#				ПЗУ 0 < А1	1 < А2	2 ( 3 < АЗ А4 > Е	) WR.D#	А2  ^R-C#	АЗ — . RD S# ДА	 ? WR P# WR_CONF#	 RD.CONF#				ПЗУ	о < AO	1	< A1	2	' 3	< W	4< A3	5	< A4	6	' E	,	RD.00# >	RD_04# ,	RD_08#
								)	RD_0C#
									RD_10#
								)	WR_10# >	RD_P#
Hit# IRDY#				IDSEL# IRDY#	1	—c		
	1							
								
								
Рис. 4.5. Схема управления, построенная на базе двух ПЗУ
плм
А2 ---- АО
АЗ ---- А1
А4 ---- А2
WR_D# WR_C# _RD_S# _RD_00#
О
1
2
3
WRJ/O#----АЗ
RDJ/O#
А4
WRCONF#--- А5
RD.CONF# --- А6
9
10
RD0C#
RD_10#
WR_10#
_RD_P# WR_P#
IDSEL#
Hit# IRDY#

5
6
8
Сигналы дешифратора команд.
WRJ/O# - запись ввода/вывода, RDJ/O - чтение ввода/вывода, WRJDONF# - запись конфигурации; RDJDONF# - чтение конфигурации
Управляющие выходные сигналы:
WR_D# - запись данных; WR_C# - запись управления; RD_S# - чтение состояния; RDJ30# - чтение регистра конфигурации с адресом 00h; RD_04# - чтение регистра конфигурации с адресом 04h; RD_P# -общее чтение; WR_P# - общая запись
Рис. 4.6. Схема управления с ПЛМ
228
Устройство - цель шины PCI
Если выполняется команда записи ввода/вывода, то сигнал TRDY# указывает инициатору об успешном завершении операции вывода.
Сигнал TRDY# устанавливается одновременно с вводом или выводом данных, определяется сигналами: чтение ввода/вывода, записи ввода/вывода, чтение конфигурации и записи конфигурации, совпадения адресов Hit, выбор IDSEL -и синхронизируется CLK (рис. 4.7).
Рис. 4.7. Схема формирования TRDY#
Сброс сигнала TRDY# выполняется после снятия сигнала IRDY# или сигнала RESET#.
Для формирования сигнала TRDY# можно использовать сигналы, общие для чтения и записи конфитурации: RD_P# и WR_P# (рис. 4.8). - учитывающие все входные сигналы схемы, приведенной на рис. 4.7.
IRDY# RESET#
Рис. 4.8. Формирование TRDY# с учетом сигналов RD_P# и WR_P#
В заключение приведем временную диаграмму с одной фазой записи данных, на которой показана быстрая или средняя установка сигнала DEVSEL# (рис. 4.9), то есть быструю или среднюю по времени селекцию адреса.
4.4.	Схема приема адреса и команды
Фиксация адреса и команды выполняется в адресной фазе транзакции шины PCI (рис. 4.10).
Сигналы адреса (А) и команды (С) устойчивы в момент действия положительного фронта сигнала первого CLK при установленном сигнале FRAME#.
На рис. 4.11 представлена структурная схема адресного блока цели.
Адресный блок предназначен для приема адреса и формирования сигнала Hit при опознании собственного адреса. Адресный блок содержит приемопередатчик BD, регистр адреса RG_A и схему сравнения СМР. Для согласования электрических характеристик и управления передачей данных между шиной AD(31-0) PCI и внутренней шиной цели B_AD(31-0) используется приемопередатчик BD. Если сигнал RD_P# (общее чтение) равен 0, то направление передачи информа-
ции - с В на А (В>А). В соответствии с временной диаграммой (рис. 4.10) фиксация адреса (А) выполняется по положительному фронту первого CLK, если установлен сигнал FRAME# (равен 0).
Схема СМР сравнивает адрес А(31-5) с базовым адресом ВА(31-5), хранящимся в регистре базового адреса ввода/вывода памяти конфигурации, смещение которого 10h (рис. 4.12).
Схема сравнивает соответствующие биты: А5 с ВА5, А6 с ВА6,..., АЗ 1 с ВАЗ 1 и при равенстве одноименных битов формирует сигнал Hit совпадения адресов.
Рис. 4.12. Функциональная схема сравнения двух адресов
Схемы приема адреса и команды	831
Этот сигнал является определяющим для работы цели, так как в регистр адреса RG_A записываются другие адреса и данные и только один уникальный базовый адрес присвоен устройству во время конфигурации компьютера (системы). Формирование сигнала Hit указывает цели, что инициатор осуществляет доступ к нему для ввода или вывода данных.
Другой вариант построения схемы фиксации адреса показан на рис. 4.13.
FRAME#
CLK
RESET#
R
D
с
S
STR#
RG_A
B_AD(31-0)
DI
DO
AD(31-0)
v C
4 RST
Рис. 4.13. Схема фиксации адреса
Аналогичным способом осуществляется прием 4-битной команды в регистр команды RG_C (рис. 4.14).
RG_C
С/ВЕ(3-О)#
DO
С(З-О)
FRAME# --- 6Е
RESET# ———-----dR
Рис. 4.14. Структурная схема узла команд
В предлагаемом варианте простой цели используются 4 команды: чтение ввода/вывода (0010), запись ввода/вывода (ООП), чтение конфигурации (1010) и запись конфигурации (1011). Для формирования управляющих сигналов записи (WR) и чтения (RD) ввода/вывода (I/O) и конфигурации (CONF) можно применить обычный дешифратор (DC_C) 4x6 или логические элементы (рис. 4.15).
232
Устройство - цель шины PCI
Рис. 4.15. Схема формирования сигналов дешифрации команд a) DC 4x16; б) на элементах И-НЕ и ИЛИ-НЕ
4.5.	Цикл конфигурации
Каждое устройство PCI имеет свою память конфигурации (регистры конфигурации), выбор которой осуществляется с помощью собственного сигала IDSEL, то есть любое устройство PCI имеет линию IDSEL. Доступ к регистру конфигурации выполняется с помощью 6-битного адреса А(7-2), что позволяет осуществить выбор любого 32-битного регистра из 64. Для взаимодействия с регистрами конфигурации главный мост (контроллер) шины PCI содержит регистр адреса конфигурации, доступный по чтению и записи и имеющий адрес CE8h (рис. 4.16).
На рис. 4.16 изображена трансляция значения регистра адреса конфигурации для одной функциональной цели, подключенной к первичной шине PCI.
31 30	2423	1615	1110 8 7	2 1 0						
CE8h	..	Номер 1	Резерв	Номер шины	устройс,0а	Номер функции	Номер	. регистра		0 0	Регистр адреса конфигурации
1 и Разрешение вывода		 • • • 1				/		
	Только одна 1	Нули	Номер	. регистра		0 0	Шина PCI
31	1110 87	210						
Рис. 4.16. Формат регистра адреса конфигурации						
Цикл конфигурации	833
Содержимое регистра адреса конфигурации выводится на шину PCI в цикле конфигурации и определяет номер регистра конфигурации цели и номер функции. Для простого (однофункционального) устройства в битах 8-10 хранятся нули. Биты 15-11 (номер устройства) могут быть использованы для выбора памяти конфигурации собственного устройства PCI. Если система содержит несколько шин PCI, связанных мостами, то в битах 23-16 указывается номер шины. Временная диаграмма чтения конфитурации представлена на рис. 4.17.
Из диаграммы чтения памяти видно, что сигнал IDSEL достоверно установлен в течение адресной фазы транзакции шины PCI, поэтому его необходимо запомнить при наличии сигнала FRAME# и с учетом положительного фронта сигнала CLK (рис. 4.18).
834	Устройство - цель шины PCI
Рассмотрим упрощенный формат заголовка конфигурации, представленный на рис. 4.19.
Идентификатор устройства	Идентификатор изготовителя
Состояние	Команда
Код класса устройства	Номер версии	
Встроенный тест	Тип заголовка	Таймер строки КОШ О	
Базовый адрес ввода/вывода	
D31	D16 D15	DO Адрес
00h
04h
08h OCh
10h
Рис. 4.19. Упрощенный формат заголовка конфигурации
Идентификатор устройства (D(31-0)) - специальный уникальный код. задаваемый изготовителем. Например, шина PCI имеет код 0А03, а РаР BIOS - 0С00.
Идентификатор изготовителя выдается и регистрируется PCI SIG (организацией, разработавшей стандарт PCI). Многие устройства не имеют этого номера.
По идентификаторам устройства и изготовителя распознается устройство и находится соответствующий драйвер.
В регистре состояния (D(31—16)) отмечается информация о состоянии цели при выполнении команд шины PCI. В этом регистре устанавливаются, например, биты: D26 и D25 (кодируют быструю (00), среднюю (01) и медленную (11) синхронизацию формирования DEVSEL#), и бит D30 устанавливается целью, если ею сформирован сигнал SERR#. В рассматриваемом случае все биты регистра состояния равны 0 (не устанавливаются целью), хотя обычно этот регистр, имеющий смещение 06h, доступен не только по чтению, но и по записи данных.
Регистр команды обеспечивает для цели разрешение доступа к пространству ввода/вывода или памяти, быть инициатором, управление SERR# и т. д. Установка бита Dt позволяет осуществить доступ к пространству ввода/вывода. В общем случае регистр команды доступен по записи и чтению со стороны системного моста по смещению 04h.
Код класса устройства содержит три байта. Старший байт D(31-24) определяет класс цели, средний D(23-16) - подкласс, а младший D(15-8) - программный интерфейс регистрового уровня (обычно равен 0). Как уже отмечалось, все устройства разбиты на классы: контроллеры памяти (05h), сети (02h), дисплеи (03h) и т. д. Каждый класс содержит подкласс устройств. Например, базовый класс (06h) мостов состоит из следующих устройств: главный мост (подкласс 00h), мост ISA (подкласс 01 h), мост PCI-PCI (подкласс 04h), другие мостовые устройства (подкласс 80h).
Коды 07h-FEh зарезервированы для дополнительных классов устройств.
Регистр конфигурации различных функций включает управление встроенным тестом, таймером времени ожидания для инициатора шины PCI и разме
Цикл конфигурации
235
ром кэша. Тип заголовка (байт) задает формат заголовка. Если этот байт равен 00, то формат заголовка соответствует рис. 4.19.
В регистре базового адреса ввода/вывода хранится адрес, присваиваемый цели при включении питания, причем бит D0= 1 является индикатором ввода/ вывода, бит D1 - резерв, а биты D(31-2) составляют базовый адрес, состоящий из адреса устройства D(31-4) и адреса D(3,2) портов, находящихся внутри устройства.
В табл. 4.4 указано принятое для данной цели содержимое памяти конфигурации.
Таблица 4.4
Содержимое конфигурации					Адрес (смещение)						Доступ
D31	D30 ..	. D24	D23	D22 .	.. D4	D3	D2	D1	DO		
0	0	0	0	0	0	0	0	0	0	00h	RD
0	0	0	0	0	0	0	0	1	0	04h	RD
1	1	1	0	0	0	0	0	0	0	08h	RD
0	0	0	1	0	0	0	0	0	0	OCh	RD
*	★	*	*	*	*	*	*	0	1	10h	RD/WR
* * - назначаемые биты базового адреса
Возможны различные варианты построения памяти конфигурации, например с использованием мультиплексоров, постоянной памяти (кроме регистра базового адреса), ПЛМ или шинных драйверов.
На рис. 4.20 представлена схема памяти конфигурации, построенная на основе шинных драйверов Dr 1-Dr4 и регистра базового адреса RGBA. Входы драйверов жестко закоммутированы на формирование соответствующих кодов, взятых из табл. 4.2.
Для рассматриваемой цели возможно только чтение двойных слов. Регистр RGB А доступен по чтению и записи со стороны главного моста и, кроме того, своими выходами ВА(31-4) подключен к селектору адреса.
Схема управления, кроме ПЛМ и двух ПЗУ (рис. 4.5 и 4.6), предназначена для выдачи управляющих сигналов записи и чтения данных ввода/вывода. содержит формирователи интерфейсных сигналов TRSY# и DEVSEL#. Условия формирования сигнала DEVSEL# были рассмотрены ранее и в основном определяются временем дешифрирования адреса ввода/вывода. На рис. 4.21 показан формирователь сигнала DEVSEL# в случае быстрой дешифрации базового адреса ввода/вывода.
При средней по времени дешифрации базового адреса необходимо еще на один такт CLK задержать формирование сигнала DEVSEL#.
На рис. 4.22 изображен формирователь сигнала TRDY# в соответствии с общей схемой, представленной на рис. 4.18.
Принцип доступа к портам ввода/вывода показан на рис. 4.23. Важным условием записи информации в регистры RG_D и RG_C является наличие достоверных данных на линиях AD. Это условие определяется сигналом WR_D# или WR_C# и положительным фронтом сигнала CLK. Сигнал WR_D#(WR_C#) является функцией сигналов IRDY# и Hit, то есть когда выбрана цель и устойчивые данные находятся на линиях AD.
236
Устройство - цель шины PCI
BAD(31-0)
RD_OC#
RD_1 O#
WR_10#
RESET#
Рис. 4.20. Вариант схемы памяти конфигурации
Рис. 4.21. Формирователь сигнала DEVSEL#
Устройства, подключаемые к шине PCI, должны обеспечивать контроль четности для всех транзакций шины, которые используются с целью обнаружения однократных ошибок при передаче данных по линиям шины PCI. В режиме записи или чтения инициатор добавляет в адресной фазе к информации AD(31-0) и С/ВЕ(3-0)#, передаваемый по соответствующим линиям, бит паритета PAR с задержкой на один такт. В фазе данных при выполнении режима записи также формируется бит паритета с задержкой на один такт (рис. 4.24).
Цикл конфигурации	837
Рис. 4.22. Формирователь сигнала TRDY#
Рис. 4.23. Порты ввода/вывода цели а) регистр данных; б) регистр управления; в) драйвер состояния
Цель принимает сигналы, поступающие по линиям AD(31-0), С/ВЕ(3-0)# и PAR в фазах адреса (А) и данных (D), и выполняет контроль информации на четность. Если число единиц в полученной информации будет нечетно, то формируется сигнал ошибки PERR# с задержкой на один такт относительно сигнала PAR.
Структурная схема формирования сигнала PERR# для фазы данных представлена на рис. 4.25.
В режиме чтения данных ввода/вывода и конфигурации цель вырабатывает сигнал PAR (рис. 4.26).
В этом случае к битам AD(31-0) и С/ВЕ(3-0)# добавляется бит паритета PAR (0 или 1), чтобы сумма 1 в передаваемой информации была четной.
Принцип определения бита паритета PAR показан на рис. 4.27.
238
Устройство - цель шины PCI
BAD(31-0)
М2 PE
EE
С/ВЕ(3-0)#
WR P
Рис. 4.27. Формирование сигнала PAR
Схемы, представленные на рис. 4.26 и рис. 4.27, показывают только общий подход к формированию сигналов PERR# и PAR.
4.6.	Экспериментальная часть
При моделировании разрабатываемого устройства в САПР Max+Plus был создан проект под названием PCI_PROJECT. В результате были получены временная диаграмма работы устройства (рис. 4.28) и электрическая функциональная схема (рис. 4.29).
Экспериментальная часть
239
Приведенная временная диаграмма отражает работу устройства при выполнении им команд:
•	запись конфигурации;
•	чтение конфигурации;
•	запись ввода/вывода.
После компиляции проекта САПР создаются файлы отчета для выдачи пользователю ряда характеристик спроектированной ПЛИС, режимов компиляции проекта, отчета об ошибках (при их наличии) и прочего.
PC1_PROJECT.PIN. Файл содержит распределение по выводам корпуса микросхемы всех входных и выходных сигналов, а также сигналов специального назначения.
PC1_PROJECT.RPT. Этот файл отчета содержит основные свойства проекта. Например, такие как выбранное устройство, вид корпуса, ход разработки (удаленные блоки, сигналы и прочее), свойства входных и выходных шин (сигналов), процентно-количественные отношения использованных слоев, логических макроячеек, блоков памяти и прочего.
PC1_PROJECT.JED. Файл прошивки.
240
Устройство - цель шины PCI
Рис. 4.29. Электрическая функциональная схема устройства (начало)
Экспериментальная часть
841
242	Устройство - цель шины PCI
Контрольные вопросы
1. Укажите тип информации, передаваемой в адресной фазе шины PCI:
1)	данные;
2)	команда;
3)	код разрешенных байтов;
4)	адрес.
2.	Назовите информацию, передаваемую в фазе данных шины PCI:
1)	данные;
2)	команда;
3)	код разрешенных байтов;
4)	адрес.
3.	Укажите сигналы квитирования шины PCI:
1)	REQ#;	2) TRDY# , 3) GNT#; 4) IRDY#.
4.	Определите количество адресных пространств, используемых в шине PCI:
1)	1;	2) 2;	3) 3;	4) 4.
5.	Покажите очередность появления сигналов на шине PCI в режиме чтения данных:
1)	IRDY#,TRDY#, DEVSEL#;
2)	FRAME#, адрес (А), команда (С);
3)	данные (D) и разрешенные байты (BE).
Литература
1.	Авдеев В. А.. Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства.: уч. пособие. - М.: Радио и связь, 2001. - 480 с.: ил.
5.1.	Основные определения
ш ш рямой доступ к памяти (DMA - Direct memory access) - аппаратный способ f f быстрого обмена данными между периферийным устройством (внешней f / памятью) и оперативной памятью без участия процессора под управлением контроллера ПДП (DMA), при этом процессор освобождается для выполнения других задач.
Канал - часть контроллера ПДП, работающая в режиме разделения времени с другими каналами, соединенная с каким-либо периферийным устройством и управляющая пересылкой данных в память (из памяти). Микросхема 18237 контроллера ПДП содержит четыре канала К0-К4, каждый из которых в зависимости от приоритета включается в работу сигналом Запрос ПДП (DRQ N, где N - номер канала), формируемым соответствующим N-м периферийным устройством.
Приоритет - способ, определяющий очередность обслуживания шины каналами К0-К4 контроллера ПДП для выполнения передачи данных. Различают фиксированный и циклический приоритеты, которые программно выбираются в контроллере ПДП.
Фиксированный приоритет - очередность обслуживания каналов в зависимости от места (номера) их подключения к каналам контроллера ПДП. Наивысшим приоритетом обладает канал КО, а низшим - канал КЗ.
Циклический приоритет - временной последовательный (круговой) способ обслуживания каналов. Например, пусть текущая очередь каналов: KI, К2, КО, КЗ. Затем после окончания работы каналом К1 приоритетная очередность каналов станет: К2, КО, КЗ, К1 и т. д.
Каскадирование - программируемое соединение микросхем контроллеров ПДП с целью увеличения количества каналов. Каскадное соединение двух микросхем 8237 обеспечивает получение восьми каналов К0-К7, причем канал К4 используется только для каскадирования (объединения) двух микросхем. В компьютере каналы КО-КЗ обычно являются байтовыми, а каналы К5-К7- 16-битными.
Блочная передача - программируемый режим работы канала контроллера ПДП, связанный с передачей всего блока данных по занятой им шине.
Одиночная передача - программируемый режим работы канала контроллера ПДП, состоящий в том, что после передачи байта (двух байтов) контроллер
244
Прямой доступ к памяти
ПДП освобождает шину минимум на один цикл, но после обнаружения активного сигнала Запроса ПДП (DRQ N) от периферийного устройства осуществляет захват шины для выполнения очередной передачи.
Передача по требованию - программируемый режим работы канала контроллера ПДП, аналогичный блочной передаче, но отличающийся проверкой входного сигнала DRQ N. Если этот сигнал пассивный, то передача приостанавливается до тех пор, пока DRQ N не примет активного уровня.
Инициализация контроллера ПДП выполняется со стороны процессора и заключается в задании (программировании): стартового адреса ячейки оперативной памяти, режима передачи (одиночного, блочного или по требованию), количества передаваемой информации, открытия канала (разрешения его работы), режима записи (чтения) внешней памяти и т. д.
Маскирование канала - запрещение работы канала, выполняется по умолчанию, и для его открытия необходимо сбросить бит N маски канала KN в регистре маски контроллера ПДП.
Аппаратаый/программный запрос ПДП устанавливается сигналом DRQ N или программируется в регистре запросов для каждого канала контроллера ПДП, иногда для некоторых приложений инициируется программный запрос.
Сжатая синхронизация - программно устанавливаемый режим работы контроллера ПДП, сокращающий количество тактов синхронизации (применяется в том случае, если старшая часть битов адреса, например А8-А15, не будет автоматически изменяться в процессе передачи блока данных), кроме того, уменьшается на половину длительность сигналов записи в порт -IOW и записи в память -MEMW.
Инкремент/декремент адреса - автоматическое увеличение/уменьшение адреса (порядок запоминания данных) оперативной памяти в контроллере ПДП при очередной передаче порции данных, выполняется после получения сигнала готовности I/O CH RDY из оперативной памяти.
Передача типа «память-память» - программируемая в контроллере ПДП передача данных из одной области оперативной памяти (отправителя) в ее другую область (получатель): для выполнения этой операции используются каналы КО (в нем задается стартовый адрес отправителя) и К1, осуществляющий адресацию отправителя и текущий счет количества передаваемых байтов данных.
5.2.	Общие сведения
Обмен в режиме прямого доступа к памяти (ПДП) является наиболее быстродействующим и требующим значительных аппаратурных затрат. В режиме ПДП обмен данными выполняется между ПУ и оперативной памятью (ОП) без участия процессора и реализуется аппаратурным способом. В этом режиме процессор используется для инициализации (подготовки) контроллера ПДП. Режим ПДП обычно применяется для организации связи внешней памяти и ОП с целью передачи блоков данных. Контроллер ПДП (КПДП) в этом режиме захватывает интерфейс, направляет адрес ячейки в ОП, подсчитывает количество передаваемых байтов (слов), вырабатывает необходимые интерфейсные сигналы как мастер и координирует свою работу с работой контроллера внешней памяти (ВЗУ). На рис. 5.1 представлена схема сопряжения процессора (П), КПДП, контроллера ВЗУ (КВЗУ) и ВЗУ в режиме ПДП.
Общие сведения
245
IOW
Рис. 5.1. Схема сопряжения устройств в режиме ПДП
В начале режима ПДП процессор инициализирует КПДП: задает режим работы, передает начальный (стартовый) адрес ОП, число передаваемых байтов (слов) и т. д. Затем процессор выводит команды в контроллер внешнего запоминающего устройства КВЗУ, указывающие тип операции (запись, чтение или поиск и т. д.). После подготовки данных КВЗУ устанавливает сигнал запрос ПДП (DMA) DRQ N (N - номер канала). КПДП (микросхема 18237) содержит 4 канала, работающие в режиме разделения времени.
В свою очередь, КПДП формирует сигнал запрос шины HRQ, поступающий в процессор. Процессор освобождает интерфейс (переводит свои выходы в состояние выключено) и устанавливает сигнал подтверждения шины HLDA.
С этого момента времени мастером на интерфейсе становится КПДП, под управлением которого осуществляется передача данных через КВЗУ между ВЗУ и ОП по следующей схеме (рис. 5.2).
ВЗУ . Д— . КВЗУ . Д»"-“. ОП IRQ6 I	Управление t 1	1 П (INT13) —►ПЗУ (BIOS) —► КПДП
Рис. 5.2. Схема выполнения режима ПДП
Если в качестве ВЗУ используется накопитель гибких магнитных дисков (НГМД), то служебные функции базовой системы ввода/вывода (BIOS), управляющие работой дискеты и хранящиеся в ПЗУ, вызываются программным прерыванием INT 13Н
После захвата интерфейса КПДП передает в КВЗУ сигнал подтверждения ПДП DACK N, определяющий начало передачи данных. Сигнал Т/С (окончание счета) устанавливается КПДП после окончания счета числа пересылок данных. ПК PC/AT имеет 7 каналов ПДП (каскадное соединение двух микросхем 18237),
246
Прямой доступ к помяти
причем каналы 0-3 поддерживают передачу только 8-разрядных данных, а каналы 5-7 - 16-разрядных данных. Канал 0 в ПК PC/ХТ предназначен для регенерации динамической памяти, а канал 2 - для дисковых операций.
Последовательность основных действий устройств в режиме ПДП при чтении байта данных из ОП (рис. 5.1) следующая: КВЗУ (КНГМД) формирует сигнал DRQ 2; КПДП вырабатывает сигнал HRQ; процессор освобождает шину и устанавливает сигнал HLDA; КПДП, захватив шину, передает адрес в ОП; КПДП формирует сигнал DACK2, поступающий в КНГМД; КПДП вырабатывает сигнал MEMR, осуществляющий чтение выбранной ячейки ОП; содержимое ячейки ОП запоминается в регистре данных КНГМД по сигналу IOW, установленному КПДП; КПДП снимает сигнал HRQ (режим одиночной передачи); процессор сбрасывает сигнал HLDA; КПДП увеличивает на 1 значение адреса и уменьшает на 1 число передаваемых байтов данных с появлением сигнала I/O CH RDY из ОП. Если число передаваемых байтов не равно FFFFh, то последовательность действий повторяется до тех пор, пока не будет сформирован сигнал Т/С. Сигнал Т/С используется для формирования сигнала прерывания IRQ 6 (при наличии сигнала разрешения прерывания), сообщающего процессору о завершении передачи блока данных.
5.3.	Контроллер ПДП
В ПК PC/XT и PC/AT в качестве КПДП применяется микросхема 18237. Режим прямого доступа к памяти предназначен для передачи блоков данных между оперативной памятью и периферийным устройством (внешней памятью).
В этом режиме КПДП управляет работой шины, то есть является мастером, а оперативная память - исполнителем. В PC/AT для реализации режима ПДП используются ДВЕ микросхемы 18237 (DMA), соединенные каскадно (рис. 5.3).
DRQO DRQI DRQ2 DRQ3			DMA1 DRQO	DACKO DRQI	DACK1 DRQ2	DACK2 DRQ3	DACK3 HLDA	HRQ	DACKO DACKI DACK2 DACK3	
					
					
			DMA1 DRQO	DACKO DRQI	DACK1 DRQ2	DACK2 DRQ3	DACK3 HLDA	HRQ		
DRQ5 DRQ6 DRQ7 HLDA				DACK5 DACK6 DACK7	
Рис. 5.3. Каскадное соединение DMA1 и DMA2					
Контроллер ПДП	247
Каждая микросхема DMA содержит 4 канала (КО-КЗ), работающих в режиме разделения времени (в какой-либо момент времени только один канал является активным и обслуживает подключенное к нему периферийное устройство). Наивысшим приоритетом обладает канал О (КО). С увеличением номера канала приоритет уменьшается. Всякому каналу соответствует сигнал DRQN (N=0-3), называемый запросом ПДП, то есть периферийное устройство, требующее режима ПДП, устанавливает этот сигнал. Здесь усматривается некоторая аналогия с сигналами запросов прерывания. Если одновременно поступает несколько сигналов запросов ПДП, то внутренняя схема арбитража в DMA выбирает наиболее приоритетный сигнал DRQN. После этого DMA устанавливает общий для всех каналов сигнал HRQ (запрос шины) и после поступления от процессора сигнала HLDA (подтверждения на захват шины) DMA становится задатчиком (мастером) и формирует для N-ro периферийного устройства сигнал DACKN (подтверждение ПДП), разрешающий циклы ПДП. Для двух каскадно-соединенных DMA наивысший приоритет имеет сигнал DRQO, а сигнал DRQ7 - наименьший. Кроме того, для реализации каскадного соединения четвертый по общему счету канал в DMA2 используется только для этой цели (его необходимо запрограммировать на выполнение режима каскадирования). Назначение каналов КПДП в PC /АТ представлено в табл. 5.1.
Таблица 5.1
Каналы	Назначение
КО К1 К2 КЗ К4 К5 Кб К7	Резерв для PC/AT, регенерация памяти для PC/XT Резерв Работа с контроллером НГМД Резерв или для некоторых типов ПК работа с жестким диском Каскадирование Резерв Резерв Резерв
Каналы КО-КЗ используются для байтовых передач данных, а каналы К5-К7 -для передачи 16-битовых слов. Внешние платы (мастера) употребляют резервные каналы для получения доступа к системной шине. Для выполнения этой цели внешняя плата формирует сигнал DACKN и устанавливает сигнал MASTER, блокирующий выход КПДП на системную шину.
Рассмотрим схему формирования адреса (рис. 5.4).
Схема формирования адреса содержит внешние по отношению к DMA регистры страницы и регистр старшего адреса. Регистры страницы - это байтовые порты с адресами из диапазона 81 h-8Ah, загружаемые заранее процессором по шине XD7-XD0 на этапе инициализации КПДП. Адресация регистров страницы каналов К0-К7 показана в табл. 5.2.
Необходимость использования внешнего регистра старшего адреса связана с тем, что старшая часть адреса выводится из DMA по шине данных и запоминается в этом регистре по сигналам DMA. Младшая часть адреса выводится непосредственно по шине адреса DMA. На рис. 5.4 представлено, что в случае ис-
248
Прямой доступ к помяти
Л23 - Л 17 (Л 16)
AI6 (А15) - А9 (А8)
Л8(А7)-Л1 (ЛО)
Рис. 5.4. Схема формирования адреса
Таблица 5.2	
Канал	Адреса регистров страницы (h)
	КО 		87	 	 	
К1	83		 	
К2	81	 	 	
	КЗ	82	 	 	
	К5	88	 	 	
	Кб	89	 	 	
К7	8А
пользования одного из каналов К5-К7, связанных с 16-битовыми передачами, регистр страницы хранит адресные биты А23-А17, регистр старшего адреса -адресные биты А16-А9, а по адресной шине выводятся адресные биты А8-А1. Адресный бит АО в этом случае всегда равен О, так как слова имеют четный адрес. Байтовые передачи данных связаны с обычным распределением битов адреса. которые (рис. 5.4) указаны в скобках.
Внутренняя шина XD7-XD0 подключена к системной шине SD7-SD0 через соответствующий приемопередатчик (это подключение на рис. 5.4 не показано). Схема портов DMA изображена на рис. 5.5.
Перечень адресов регистров DMA1 и DMA2 приведен в табл. 5.3.
Регистр управления (команд) координирует работу DMA и доступен по записи со стороны процессора. Формат регистра управления представлен на рис. 5.6.
Биты DO и D1 определяют режим память-память, когда данные передаются из одной области оперативной памяти в другую область, причем этот обмен осуществляется через регистр данных (порт ODh) каналами КО и К1. В режиме память-память в КО задаются адрес памяти (источник данных) и количество передаваемых данных, а в К1 - адрес памяти (получателя данных). Сброс бита D1 регистра управления позволяет тиражировать один и тот же байт данных из одной области памяти в различные ячейки другой области памяти.
Сжатая синхронизация (D3=l) исключает некоторые такты в работе DMA, если старшая часть адреса (А8-А15) не изменяется. Циклический приоритет
Контроллер ПДП	249
Рис. 5.5. Схема портов DMA
Таблица 5.3				
Режимы W-запись R-чтение	Число бит Адреса			Назначение регистров (портов) (h)
	DMA1 (h)		DMA2	
W	8	08	0D	Регистр управления (команд)
R	8	08	0D	Регистр состояния
W	8	ОВ	D6	Регистр режима
W	4	0А	D4	Регистр одиночных масок	
W	4	0F	DE	Р е г и с т р масок	
W	4	09	D2	Регистр запросов		
W	*	0Е	DC	Сброс регистра маски
W	*	ОС	D8	Сброс триггера первый/последний (Тп/п)
R	8	0D	DA	Регистр данных
R/W	16	00	СО	Регистр текущего адреса канала 0/канала 4
R/W	16	01	С2	Регистр текущего числа циклов канала 0/канала 4
R/W	16	02	С4	Регистр текущего адреса канала 1/канала 5
R/W	16	03	С6	Регистр текущего числа циклов канала 1/канала 5
R/W	16	04	С8	Регистр текущего адреса канала 2/канала 6
R/W	16	05	СА	Регистр текущего числа циклов канала 2/канала 6
R/W	16	06	СС	Регистр текущего адреса канала 3/канала 7
R/W	16	07	СЕ	Регистр текущего числа циклов канала 3/канала 7
Примечание	?• * - порт без передачи данных			
250
Прямой доступ к помяти
D0
D1
D2
D3
D4
D5
D6
D7
-	I Разрешение режима память-память
-	I Фиксация адреса разрешена, 0 - запрещена
-	I Блокировка контроллера, 0 - разрешение
-	1 Сжатая синхронизация, 0 - нормальная
-	1 Циклический приоритет, 0 - фиксированный приоритет
-	1 Расширенный цикл записи, 0 - укороченный
-	I DREQ активен при низком уровне сигнала, 0 - при высоком уровне сигнала
-	1 DACK активен при низком уровне сигнала, 0 - при высоком уровне
Рис. 5.6. Формат регистра управления (команд)
(D4=l) заключается в равноправном (последовательном) обслуживании каналов DMA. Например, при D4=l возможна следующая очередность приоритетов: К1 КО КЗ К2, КО КЗ К2 К1, КЗ К2 К1 КО и т. д. Фиксированный приоритет (приоритет места) устанавливает степень приоритета в зависимости от номера канала, то есть канал КО обладает наивысшим приоритетом, а канал КЗ - низшим приоритетом.
При изменении старшей части адреса программируется расширенный цикл записи (удлиняются сигналы MEMW и IOW).Следует отметить, что КПДП фор-мирует пары сигналов: при чтении памяти MEMR и IOW и при записи в память IOR и MEMW, то есть в первом случае информация читается из ячейки оперативной памяти (сигналом MEMR), а потом записывается в регистр данных контроллера периферийного устройства (сигналом IOW). Во втором случае, наоборот, содержимое регистра данных контроллера периферийного устройства читается по сигналу IOR, а потом записывается в память по сигналу MEMW. По умолчанию задаются удлиненный цикл записи и нормальная синхронизация.
Биты D7 и D6 регистра управления определяют активный уровень сигнала (0 или 1).
Содержимое регистра состояния доступно по чтению со стороны процессора и имеет следующий формат (рис. 5.7).	___
Содержимое регистра текущего числа циклов (счетчика) канала N (N=0.3) уменьшается после каждого цикла ПДП, и как только оно станет равным FFFFh (обмен завершен), это состояние отмечается установкой бита DN регистра состояния и на выходе DMA формируется сигнал Т/С (окончание счета), используемый в контроллере периферийного устройства для формирования сигнала запроса прерывания.
В битах D4-D7 регистра состояния отмечается наличие программного запроса в регистре запросов DMA или аппаратного запроса DRQN. Программный запрос инициирует работу DMA так же, как и аппаратный запрос DRQN, и используется в прикладных программах, связанных с передачей массивов данных в оперативную память.
Контроллер ПДП
251
	D0	- 1 ТС канала 0 (обмен завершен), 0 - незавершен
	D1	- 1 ТС канала 1
	D2	- 1 ТС канала 2
	D3	- 1 ТС канала 3
	D4	- 1 Наличие программного или аппаратного запроса канала 0
	D5	- 1 Наличие программного или аппаратного запроса канала 1
	D6	- 1 Наличие программного или аппаратного запроса канала 2
	D7	- 1 Наличие программного или аппаратного запроса канала 3
Рис. 5.7. Формат регистра состояния		
Каждому каналу соответствует 8-битовый регистр режима, имеющий адрес OBh (D6h). Кроме того, в байте данных режима необходимо указать в битах D1 и DO номер канала DMA, для которого предназначен этот байт данных. Формат регистра режима изображен на рис. 5.8.
DO
D1
D2
D3
D4
D5
D6
D7
Номер канала: 00 - каналО, 01 - канал 1,10- канал 2,11-канал 3
ТТип цикла ПДП: 00 - проверка, 01 - запись в память, 10 -чтение из памяти, 11 - недопустимое значение
- I Режим автоинициализации
- 1 Декремент регистра текущего адреса (-1), 0 инкремент (+1)
Т Режимы обслуживания: 00 - передача по требованию, 01 - одиночная передача, 10 - блочная передача, 11 - каскадирование
Рис. 5.8. Формат регистра режима
Рассмотрим режимы обслуживания DMA. Блочная (монопольная) передача выполняется непрерывно до тех пор, пока содержимое регистра текущего числа циклов в KN не станет равным FFFFh (обмен завершен). Передача по требованию осуществляется так же, как и блочная, за исключением того, что она выполняется, пока удерживается сигнал DRQN. Снятие сигнала DRQN останавливает управление передачей данных, которая возобновляется с той же точки при
252
Прямой доступ к помяти
появлении сигнала DRQN. Наиболее употребительным режимом является одиночная передача, состоящая в том, что после передачи очередного байта DMA освобождает системную шину и начинает затем запрос шины для управления передачей следующего байта. Этот процесс продолжается до тех пор, пока содержимое регистра текущего числа циклов не станет равным FFFFh (обмен завершен). Режим каскадирования, как уже отмечалось, используется для увеличения числа каналов КПДП путем соединения нескольких DMA.
С помощью бита D5 программируется либо увеличение содержимого регистра текущего адреса KN, либо его уменьшение.
Если бит D4= 1 и сигнал Т/С (ЕОР) равен О (обмен завершен), то осуществляется автоматическая перезагрузка регистров базового адреса и базового числа циклов соответственно в регистры текущего адреса и текущего числа циклов.
Биты D3 и D2 позволяют программировать тип цикла ПДП: запись в память (01), при выполнении которой формируются сигналы IOR и MEMW; чтение из памяти (10), вырабатывающее сигналы MEMR и IOW.
Цикл «проверка» (псевдопередача) заключается в том, что выполняется цикл записи (чтения) с формированием адреса, но без передачи данных.
Регистру одиночных масок присвоен адрес OAh (D4h), табл. 5.3. По этому адресу направляется 3-битовая команда, в которой биты DI hDO указывают на номер бита в регистре одиночных масок, а бит D2 определяет значение этого бита (1 или 0). Формат команды доступа к биту показан на рис. 5.9.
D2 DI D0
1 - установка	^0 бит 0
0-сброс	01-бит 1
10-бит 2
11 - бит 3
Рис. 5.9. Формат команды доступа к биту
Установка программного запроса выполняется с помощью команды (рис. 5.9.), посылаемой в 4-битовый регистр запросов по адресу 09h (DMA1) или D2h (DMA2), причем бит D2=l указывает на наличие запроса. Для осуществления одновременной установки (сброса) битов регистра маски необходимо по адресу OFh (DMA1) или DFh (DMA2) направить команду доступа к битам (D3-D0), имеющую следующий формат (рис. 5.10).
По сигналу RESET (сброс) выполняется установка всех битов регистра маски, которые блокируют все программные или аппаратные запросы DMA. С помощью порта OEh (DMA1) или DCh (DMA2) (сброс регистра маски) можно разрешить обработку запросов DMA.
В DMA применяется двунаправленная 8-битовая шина данных, по которой происходит запись выводимых из процессора байтов данных в 16-битовые регистры выбранного канала. Для управления занесением байта данных в младшую часть (А7-А0) или старшую часть (А15-А8), например, регистра текущего
Рис. 5.10. Формат команды доступа кбитам маски
адреса используется триггер первый/последний (Тп/п), который при нулевом значении разрешает запись байта данных в младшую часть регистра, а при единичном значении - в старшую часть регистра. При инициализации DMA в начале программы следует один раз сбросить триггер Тп/п. который затем автоматически устанавливается (сбрасывается) при передаче каждого байта.
Регистр данных DMA предназначен для временного хранения байта данных, передаваемого в режиме память-память. После завершения передачи байтов данных последний байт может быть считан и введен в процессор.
Каждый канал DMA содержит четыре 16-битовых регистра. Регистр текущего адреса после передачи каждого байта (слова) автоматически уменьшается или увеличивается на единицу. В циклах ПДП биты А7-А0 выводятся по шине адреса DMA, биты А7-А0 - по шине адреса DMA, а биты А8-А15 - по шине данных.
Регистр текущего числа циклов (счетчик) задает количество передаваемых байтов (слов) и уменьшается на 1 после каждого цикла ПДП. Если содержимое этого регистра равно FFFFh, то это означает, что обмен данными завершен. Поэтому начальное значение, заносимое в регистр текущего числа циклов, должно быть уменьшено на 1.
Для реализации режима автоматизации в каждом канале имеются регистр базового адреса и регистр базового числа циклов, которые загружаются начальными значениями соответствующих текущих регистров и затем используются для повтора передачи данных.
В работе КПДП можно выделить два режима: режим связи с процессором (инициализации КПДП) и режим управления передачей данных между оперативной памятью и периферийным устройством (блочной передачей в циклах ПДП). В первом режиме процессор является мастером на системной шине, а КПДП - исполнителем. Режим инициализации КПДП выполняется, если сигналы CS=DRQ=0, то есть отсутствует режим ПДП. Для доступа к портам DMA используются 4 младших бита адреса АЗ-АО, сигналы CS, IOR и IOW. Здесь следует иметь в виду, что на адресные выводы АЗ-АО DMA2 подаются соответственно смещенные адресные сигналы ХА4-ХА1 (рис. 5.11).
Процессор при инициализации КПДП выполняет следующую последовательность действий.
1.	Программирует регистр режима заданного канала DMA (операцию запись или чтение, тип передачи, инкремент или декремент адреса).
2.	Вычисляет 24-битовый адрес памяти.
3.	Сбрасывает триггер первый/последний (Тп/п).
4.	Выводит младший и старший байты в регистр текущего адреса канала.
254	Прямой доступ к памяти
Рис. 5.11. Схема подключения к DMA младших битов адреса
5.	Устанавливает старшую часть адреса в требуемый регистр страницы.
6.	Направляет младший и старший байты в регистр текущего числа циклов канала.
7.	Сбрасывает бит маски выбранного канала DMA (открывает канал).
Во втором режиме (циклах ПДП) КПДП является мастером на шине, а оперативная память - исполнителем. На рис. 5.12 представлена упрощенная блок-схема циклов ПДП.
При выполнении режима ПДП DMA в соответствии с синхросигналами CLK переходит условно или безусловно из одного состояния, например, SO в другое состояние S1, выполняя соответствующие функции. Состояние SI является исходным (пассивным) состоянием DMA, при котором опрашиваются сигналы запросов ПДП (DRQN). С поступлением активного сигнала DRQN DMA переходит в состояние SO, формируя сигнал запроса шины (HRQ). После этого DMA ожидает приход сигнала подтверждения шины (HLDA). Сигнал HLDA устанавливает КПДП мастером на системной шине. Если старшая часть адреса (А 15-А8) не изменяется, то можно исключить программным способом состояние S1 (сжатая синхронизация), связанное с выводом старшей части адреса. С этой целью проверяется условие S1, указывающее на обход или переход к состоянию S1. Обход состояния S1 осуществляется в том случае, если в регистре управления DMA задана сжатая синхронизация. В состоянии SI DMA вырабатывает сигнал разрешения адреса AEN и выдает биты старшей части адреса А15-А8 по шине данных XD7-XD0. После перехода в состояние S2 DMA реализует следующие действия:
1)	выводит младшую часть адреса (А7-А0) по шине адреса;
2)	формирует сигнал строб адреса (ADSTB) для фиксации битов А15-А8 во внешнем регистре;
3)	вырабатывает сигнал подтверждения ПДП (DACK) в контроллер периферийного устройства: ______ _______ __________________________ ____
4)	устанавливает сигналы IOR и MEMW при записи в память или MEMR и IOW при чтении памяти;
5)	формирует сигнал ЕОР, если обмен завершен.
Для согласования с «медленной» памятью используется сигнал готовности (RDY). Пассивный уровень сигнала RDY вызывает в DMA состояние ожидания (SW). С появлением активного уровня сигнала RDY DMA анализирует осведомительный сигнал S3, и если запрограммирована сжатая синхронизация, то со-
Контроллер ПДП
255
стояние S3 исключается. Для нормальной синхронизации состояние S3 выполняется и формируются расширенные сигналы записи MEMW и IOW, учитывающие изменение старшей части адреса. В состоянии S4 DMA выполняет анализ
256	Прямой доступ к памяти
режимов обслуживания (одиночная передача, блочная передача или это передача по требованию) и в зависимости от сигнала ЕОР переходит в исходное состояние или на продолжение следующего цикла ПДП.
5.4.	Внешний контроллер с режимом ПДП
В качестве примера использования микросхемы КПДП (18237) и координации ее работы в составе системы рассмотрим обобщенную структурную схему внешнего контроллера (МК), представленную на рис. 5.13.
Рис. 5.13. Обобщенная структурная схема МК с ПДП
Программируемый МК предназначен для сопряжения процессора с ПУ различных типов и содержит: буферную память (БП), необходимую для согласования скоростей передачи данных между ПУ и процессором; внешний КПДП и микропроцессор (МП), однокристальный микроконтроллер, имеющий специальное программное обеспечение. Внешний КПДП участвует в управлении передачами данных между: БП и оперативной памятью (ОП) в циклах ПДП (для выполнения этой цели в системном КПДП используется канал 1, а во внешнем КПДП - канал 0), БП и процессором (канал 1 внешнего КПДП), БП и МП (канал 2 внешнего КПДП), БП и периферийным интерфейсом (канал 3 внешнего КПДП). Инициализацию внешнего КПДП осуществляет МП. который задает в соответствующих каналах начальный адрес БП, количество передаваемых байтов и нормальные режимы их работы (без сжатой синхронизации). При рассмотрении МК основное внимание будет уделяться организации взаимодействия процессора и МК (записи или чтения данных из БП) и системного КПДП с МК в циклах ПДП.
На рис. 5.14 изображена структурная схема передачи данных между ОП и БП в циклах ПДП.
Рассмотрим, например, цикл режима чтения блока данных из ОП и запись их в БП. Последовательность действий начинается с того, что МП инициализирует канал 0 внешнего КПДП и открывает его (сбрасывает бит маски). На вход актив-
Внешний контроллер с режимом ПДП
257
HLDA
---------1 рпдп DRQ 1---------—
------ & . ПАСКО
Системный
. КПДП (канач I) pDACK >
~|-IQR,-1OW 1
Адрес	'
”1” DRQ О
READY,
,-memw;
-МЕМК
ОП
SD7-SD0
Блок
| интерфейса
BD7-BD0
(	IIRQ
*	J>D7-PDOt
Внешний	*	1
КПДП (канат 0) j— и г
Адрес
Ы1
МП
IRQ 10
ЕОР ЧЩ
ЗпД
Рис. 5.14. Структурная схема передачи данных между ОП и БП
ного канала 0 поступает запрос DRQ0, и внешний КПДП формирует сигнал запрос шины (HRQ), поступающий в МП. После установки сигнала HLDA со стороны МП внешний КПДП получает управление, направляет начальный адрес в БП, формирует сигнал подтверждения ПДП (DACK0) и переходит в состояние ожидания до получения сигнала READY.
При наличии разрешения ПДП (РПДП), заранее установленного в блоке интерфейса со стороны процессора, на вход системного КПДП поступает запрос DRQ1. Системный КПДП захватывает интерфейс, выводит адрес в ОП, осуществляет чтение содержимого выбранной ячейки ОП по сигналу -MEMR, устанавливает сигнал -DACK1, разрешающий работу приемопередатчика и дешифратора ДшУС в блоке интерфейса, схемы которых будут представлены ниже. После этого системный КПДП формирует сигнал -IOW (запись в порт), по которому блоком интерфейса вырабатываются: сигнал записи данных (ЗпД) и сигнал готовности (READY), запускающий внешний КПДП на продолжение работы канала 0. Байт данных из ОП по шине SD7-SD0 поступает через открытый сигналом DACK1 приемопередатчик блока интерфейса на буферизованную шину ВП7-ВП0и_?аписывается в ячейку БП, выбранную адресом внешнего КПДП, по сигналу ЗпД блока интерфейса. С поступлением сигнала READY во внешний КПДП завершается его цикл работы, связанный с передачей одного байта (увеличивается или уменьшается текущий адрес БП, и уменьшается содержимое счетчика байтов). Если внешний КПДП запрограммирован на выполнение блочного режима работы, то осуществляется очередной цикл ПДП.
Описанная последовательность основных действий компонентов системы (диаграмма режима чтения ОП в циклах ПДП) показана на рис. 5.15.
Аналогичным образом выполняются чтение блока данных из БП и запись их в ОП, за исключением того, что в этом случае по сигналу -DACK1 блоком интерфейса (ДшУС) формируется сигнал чтения данных (ЧтД), по которому осуществляется выдача байта данных из БП по шине BD7-BD0 через блок интерфейса (приемопередатчик) по шине SD7-SD0 в ОП.
Системный КПДП вначале вырабатывает сигнал -IOR (чтение порта), который разрешает передачу данных из БП на шину ISA (открывает в соответствующем направлении приемопередатчик блока интерфейса) и формирует сигнал
258
Прямой доступ к памяти
Внешний
КПДП (канал 0)
Системный	Блок
КПДП (канал 1) интерфейса
Адрес	DRQ 1	Разрешение ПДП	Адрес
			
	Данные		READY
-MEMR			
			
	-DACK I	ЗпД	
	-IOW		
			
Инициализация
DRQ0 HRQ IILDA
DACK 0
Состояние ожидания
I. Счетчик байтов -I
2. Адрес +1 (-1)
RESET
Рис. 5.15. Диаграмма чтения ОП в циклах ПДП
READY. Затем системный КПДП устанавливает сигнал -MEMW, записывающий данные в выбранную ячейку ОП.
Упрощенная диаграмма режима записи данных в ОП представлена в циклах ПДП на рис. 5.16.
Циклы ПДП выполняются до тех пор, пока содержимое счетчика байтов в канале 0 внешнего КПДП не станет равным FFFFh, при этом на его выходе формируется сигнал ЕОР (окончание счета), участвующий в вырабатывании сигнала прерывания, например IRQ N, сообщающего процессору о завершении передачи блока данных. Для формирования сигнала IRQ N, кроме того, необходимы сигналы разрешения прерывания (РП) и сигнал -DACK1 (рис. 5.17).
Передача данных между процессором и БП многофункционального контроллера выполняется следующим образом. На рис. 5.18 показана структурная схема сопряжения процессора и МК, осуществляющая передачу данных между процессором и БП, управление работой которого выполняет внешний КПДП (канал 1).
Взаимодействие процессора и МК начинается с доступа его к порту (3E0h) сброса МК блока интерфейса, при этом внешний КПДП и МП сигналом INIT приводятся в исходное состояние и микропроцессором (МП) выполняется инициализация внешнего КПДП (канала 1) на прием данных в БП со стороны процессора. Затем процессор устанавливает триггер запроса (порт 3Elh) в блоке интерфейса и на его выходе формируется сигнал DRQ 1 (запрос ПДП канала 1), запускающий внешний КПДП на выполнение заданного режима. Внешний КПДП, получив сигнал DRQ 1, устанавливает сигнал HRQ (запрос шины) на соответствующий
внешний контроллер с режимом ПДП
259
О	п	Смете КПДП( Адрес	мный	Бл канал 1) интер DRQ 1	ок	£ фейса	Внеи П	КПДП( Адрес	иний канал 0) HLDA	
					* МП k ПАГ1/ Л	
						
		-IOR	чТд	READY		Состояние ожидания
						
		Данные			► 1. Счетчик байтов -1 2. Адрес+1 (-1)	
	-MEMW					
						
Рис. 5.16. Упрощенная диаграмма режима записи данных в ОП						
РП		1	И | II		1 »	IRQN
-РАСК 1				
ЁбР				
Рис. 5.17. Схема формирования сигнала IRQ N				
HLDA
Рис. 5.18. Структурная схема передачи данных мехду процессором и БП
260	Прямой доступ к памяти
вход МП. В свою очередь, МП направляет на внешний КПДП сигнал HLDA, передающий ему управление работой БП. После этого канал 1 внешнего КПДП выполняет соответствующие такты состояния, в результате чего устанавливается адрес ячейки БП и формируется сигнал DACK1, который поступает в блок интерфейса и устанавливает соответствующий триггер регистра состояния (порта 3E0h). Адрес удерживается на адресных выходах внешнего КПДП, который приостанавливает свою работу (состояние ожидания) до появления сигнала READY (готовности). Для упрощения (см. рис. 3.27) адрес БП выбран 8-битным (А7-А0). При необходимости употребления адреса А15-АО следует использовать внешний регистр старшего адреса, который загружается по шине данных внешнего КПДП битами А15-А8, а запись их выполняется сигналом ADSTB.
Процессор путем опроса порта состояния (3E0h) определяет, что адрес ячейки БП установлен (имеется в наличии сигнал -DACK1) и можно выводить информацию, которая может быть инструкциями для МП или данными. Число выводимых байтов информации задается в счетчике байтов канала 1 внешнего КПДП. Вывод байта данных с учетом порта данных (3E3h) осуществляется по шине SD7-SD0 через блок интерфейса (приемопередатчик) по буферизованной шине BD7-BD0 и сопровождаетсясигналом-IOW (запись данных). Блок интерфейса (ДшУС) формирует сигнал ЗпД, который осуществляет разрешение работы БП (выбор CS) и вырабатывает сигнал READY, запускающий внешний КПДП на продолжение работы. Затем сигналом MEMW внешнего КПДП выполняется запись данных в БП.
Диаграмма передачи данных из процессора в БП изображена на рис. 5.19.
Проц	Бл ессор интер Сброс МК	ок фейса 1N1T	Внеи КПДП (1	инии 1 X	М канал 1)	П
	(3E0h) И Установка ТЗ (3Elh) Опрос ТС (ЗЕОЬ)^	DRQ 1 DACK 1	► Адрес	Инициализация	
				HRQ	
				HLDA	
				Состояние ожидания > 1. Счетчик бай- тов -1 2. Адрес +1 (-1)	
					
	Адрес (3E2h)	Установка бита порта 3E0h	READY		
	Данные (3E2h)				
	-IOW	ЗЙД			
		CS	MEMW		
					
Рис. 5.19. Диаграмма передачи данных из процессора в БП					
Внешний контроллер с режимом ПДП
261
Почти таким же образом выполняется ввод данных из БП в процессор, за исключением того, что после завершения опроса порта состояния (3E0h) процессор устанавливает адрес порта данных (3E3h) и сигнал -IOR, по которому блок интерфейса (ДшУС) формирует сигнал чтения данных (ЧтД). Сигнал ЧтД осуществляет вывод данных из БП на шину SD7-SD0 и участвует в формировании сигнала READY. В табл. 5.4 приведено описание портов МК.
Таблица 5.4
Название порта	Адрес (h)	Доступ	Сигналы ДшУС
Сброс	ЗЕО	W	Сбр
Триггер запроса	ЗЕ1	W	Зап
Регистр состояния	ЗЕО	R	ЧтС
Данные (Д)	ЗЕЗ	W/R	ЗНД/ЧТД
Регистр разрешения (Р) ПДП и прерывания	ЗЕ2	W	ЗпР
Тип устройства (У)	ЗЕ2	R	ЧтР
Порт сброса (3E0h) используется без передачи битов данных. При выводе из процессора по адресу 3E0h на выходе дешифратора ДшУС формируется сигнал Сбр, который устанавливает внешний КПДП и МП в исходное состояние и вызывает инициализацию канала КО внешнего КПДП со стороны МП.
После этого процессор устанавливает триггер запроса (ТЗ), имеющий адрес ЗЕ lh, с передачей бита данных по шине SDO (BDO). На выходе триггера ТЗ формируется сигнал DRQ1 (запрос ПДП канала 1), поступающий на соответствующий вход внешнего КПДП. В результате взаимодействия внешнего КПДП с МП он получает доступ к БП и устанавливает адрес его ячейки.
Процессор опрашивает (читает в цикле) регистр состояния (3E0h), в котором фиксируются сигналы DACK0-DACK3 внешнего КПДП, указывающие на готовность БП к приему (передаче) данных. При выводе инструкций из процессора в БП в регистре состояния должен быть установлен признак DACK1, указывающий процессору на готовность БП к приему данных и направление передачи данных.
Запись (чтение) данных в БП осуществляется с помощью порта данных (3E3h).
Порт типа устройства (3E2h) представляет собой шинный формирователь (ШФ), на входы которого подается с помощью перемычек код типа устройства.
В двухбитном регистре разрешения (РР), имеющем адрес 3E2h (W), устанавливаются биты, разрешающие режимы ПДП и прерывания.
На рис. 5.20 представлена структурная схема МК, управление работой которого и передачами данных выполняется с помощью перечисленных выше портов.
Дешифратор ДшУС реализован на базе демультиплексора (ДМ) типа ИД4, особенностью работы которого является то, что выходные сигналы ЗпД или ЧтД формируются как в циклах ПДП при наличии системного сигнала -DACK, так и в режиме программного обмена процессора с БП, когда сигнал -DACK отсутствует. В обоих случаях на адресных входах А1 и АО присутствуют высокие уровни (код 11), позволяющие установить сигнал ЗпД или ЧтД, причем сигнал -IOR или -IOW в циклах ПДП формируется системным КПДП, а в режиме программного обмена - процессором.
262
Прямой доступ к памяти
5.5.	Упрощенная схема КПДП
Формулировка задания
Рассмотрим один из вариантов построения структурной схемы КПДП, в которой с целью ее упрощения отсутствует регистр управления, маскирования, программного запроса и обмена данными в режиме память-память, имеющиеся в наличии в микросхеме 18237. Кроме того, в схеме не реализуется функция циклического приоритетного доступа внешних устройств и опущены некоторые мелкие детали. Эта структурная схема позволяет рассмотреть принцип построения относительно сложной микросхемы, обслуживающей четыре канала прямого доступа. Структурная схема КПДП (рис. 5.21) содержит следующие блоки.
ПП1 - двунаправленный 8-битный приемопередатчик, предназначенный для управления направлением передачи данных и согласования электрических характеристик системной шины данных ISA SD7-SD0 и внутренней шины данных BD7-BD0.
Упрощенная схема КПДП
263
SD7-SD0
в
ПП
А
А
BD7-BD0
РР3-РР(
ER
А
Зп.Чт
INK

Э ФУС
—+—) В ЧтППД ч т
>ОЕ
-ЗпРР BD1.BD0
2
Р EW А
DEC
Ф
-ОЕ ПП
-Аое
DACK
-MRD
-MWD
-IORD
-IOWD


SD3-SD0
РС.-РС.
-ЗпСтр
А19-А16
-------э
-------э
-ЧтРС
Рис. 5.21. Структурная схема КПДП
264	Прямой доступ к памяти
РР3-РР0 - блок регистров режима с раздельной записью чтением. Выбор нужного регистра выполняется двухбитным кодом номера канала (HKi). В формате регистра режима задаются режим (проверка, запись, чтение), инкремент (INC) или декремент (DEC), автоинициализация и т. д.
ФУС - формирователь управляющих сигналов, вырабатывает следующие сигналы: чтение (-MRD) и запись (-MWD) оперативной памяти, чтение (-IORD) и запись (-IOWD) ввода/вывода.
Пер - передатчик, осуществляет вывод интерфейсных сигналов: -MEMR, -MEMW, -IOR, -IOW. Al 9-А16 на соответствующие линии шины расширения ISA.
Пр - приемник, характеризуется малым потреблением тока, предназначен для усиления принимаемых сигналов.
РС3-РС0 - блок регистров страницы с разделенной записью и чтением, предназначен для временного хранения старшей части адреса (А16-А19) каждого канала (К3-К0).
ФИ АСК - формирователь DACK в зависимости от кода номера канала (HKJ, вырабатывает активный низкий уровень одного из сигналов подтверждения ПДП (-DACK3, ...-DACKO).
PC - 8-битный регистр состояний, хранящий сигналы окончания счета (Т/С) и сигналы наличия запросов DRQ для каждого канала (KJ.
Б?! - буферный регистр, выполняет запоминания соответствующих входных сигналов запросов DRQ3-DRQ0, АЗ-АО и т. д. на время цикла ПДП.
Поступление новых сигналов может быть заблокировано сигналом с выхода триггера включения (ТВкл).
Шиф - шифратор, выполненный на базе ПЗУ и предназначенный с учетом 8-битной входной информации, поступающей на его адресные входы, для формирования: кода номера канала (HKi); кода номера регистра (HP); 3-битного кода режима КПДП и сигнала включения (Вкл) КПДП. Коды номера канала необходимы для выбора соответствующих регистров и имеют следующее представление: 00 - канал 0, 01- канал 1,10- канал 2 и 11 - канал 3. Код номера регистра дополнительно определяет адресные порты, например регистр режима (РР), триггер первый/последний (Тп/п) и т. д. Код режима является частью адресной информации памяти микрокоманд (ПМ) и задает следующие режимы КПДП для каждого канала в режиме связи с системным процессором:
•	запись и чтение адреса;
•	запись и чтение кода числа циклов.
ТВкл - триггер включения, выполняет блокирование поступления новых запросов в БР} до конца выполнения режима, сброс счетчика микрокоманд (СчМ) и разрешения работы дешифратора команд (ДшК).
ДшК - дешифратор команд, выполняет декодирование 3-битовых команд ПМ и формирует следующие сигналы: запись и чтение младшего байта, запись и чтение старшего байта, конец режима и разрешение работы дешифратора управляющих сигналов (ДшУС).
ВР2 - буферный регистр, предназначен для хранения системных сигналов -HLDA (подтверждение шины) и I/O CHRDY (готовности канала ввода/вывода).
ПМ - память микрокоманд, реализованная на базе ПЗУ и формирующая сигналы: HRQ (запрос шины), -AEN (разрешение адреса), 3-битный код команд и т. д.
СчМ - счетчик микрокоманд, необходимый для формирования последовательных адресных кодов ПМ в циклах ПДП, а также чтения и записи 16-битовой информации в КПДП со стороны системного процессора.
Упрощенная схема КПДП	265
Тп/п - триггер первый/последний, указывает на запись или чтение старшего или младшего байтов данных, меняет свое состояние при каждом доступе к 16-битным регистрам текущего адреса (РТА) или текущего числа циклов (РТЧЦ).
ТЗ ПДП - триггер запрета ПДП, устанавливаемый по сигналу RESET в единичное состояние для запрещения ПДП. Разрешить ПДП можно по команде OUT с адресом 008h, причем бит данных BD2 должен быть равен О.
ДшУС - дешифратор управляющих сигналов, который по номеру регистра, поступающему из Шиф, формирует сигналы: запись в регистр режима (-ЗпРР), запись в триггер запрета ПДП (-ЗпТЗ ПДП), сброс триггера первый/последний (Сбр Тп/п) и запись в триггер Тп/п (-Зп Тп/п).
РТАЗ-РТАО и РБАЗ-РБАО - соответственно блок 16-битных регистров текущего адреса и регистров базового адреса и регистров базового адреса каналов К3-Ко. предназначенных для приема со стороны системного процессора начального адреса оперативной памяти. В циклах ПДП содержимое РТАЗ-РТАО меняется с помощью счетчика Сч путем пересылки данных.
РТЧЦЗ-РТЧЦО и РБЧЦЗ-РБЧЦО - соответственно блок 16-битных регистров текущего числа циклов и регистров базового числа циклов, загружаемых системным процессором начальным значением. Во время ПДП содержимое РТЧЦЗ-РТЧЦО меняется после завершения каждого цикла путем передачи данных между РТЧЦ и Сч.
Сч - двоичный 16-битный счетчик, осуществляет изменение содержимого РТЧЦ и РТА в режиме ПДП.
РА - регистр адреса оперативной памяти, предназначен для временного хранения текущего адреса оперативной памяти, передачи его на шину адреса оперативной памяти и передачи его на шину адреса интерфейса ISA.
РМ - регистр микрокоманд, осуществляет фиксацию 8-битной микрокоманды, считанной из ПМ.
Инициализация КПДП
Перед началом работы КПДП его необходимо инициализировать путем выполнения следующих действий:
•	настройки выбранного канала путем записи в регистр режима (РР) необходимой информации;
•	вывода адреса страницы в соответствующий данному каналу регистр PC;
•	записи начального адреса оперативной памяти в требуемый регистр текущего адреса (РТА) канала Кр’
•	передачи кода числа циклов в регистр текущего числа циклов (РТЧЦ) канала Кг’
•	сброса триггера Тп/п и разрешения ПДП путем программного сброса триггера ТЗ ПДП.
Запись в регистр РР выполняется по команде OUT с адресом OBh, причем в самом посылаемом байте данных биты D1 и DO определяют номер канала (00 -Ко,О1 - Кг 10 - К9, 11 - К3), для которого устанавливается соответствующий режим. Старшая часть адреса SA9-SA4 дешифруется внешней схемой и с учетом управляющего сигнала записи ввода/вывода в КПДП поступает сигнал -ЗпПДП. указывающий на выбор ПДП и операцию записи данных. Младшая часть адреса SA3-SA0 направляется в КПДП для выбора соответствующего порта. В рассматриваемом случае SA3SA2SA1SAO=1O11. Этот код с учетом низкого активного
266
Прямой доступ к памяти
уровня сигнала -ЗпППД поступает через регистр БФ1 на адресные входы ПЗУ (Шиф) и считывает содержимое соответствующей ячейки памяти, в которой два бита хранят номер регистра (HP) режима, поступающий на дешифратор ДшУС. На выходе ДшУС формируется сигнал -ЗпРР. который записывает байт данных, поступивший через приемопередатчик ПП1 на входы блока РР3-РР0, в соответствующий РР причем выбор индекса регистра режима осуществляют биты данных D1 и DO, определяющие номер (индекс) канала.
Запись в регистр PCi производится по команде OUT с использованием одного из следующих адресов: 083h - запись адреса страницы Ко; 082h - Кг’ 08 lh - К9; 080h - К3, при этом по линиям данных SD3-SD0 передаются соответствующие биты адреса: SD3-SA19, SD2-SA18, SD1-SA17, SD0-SA16.
Выбор нужного регистра РС( (одного из четырех) осуществляется битами адреса SA1 и SA0, а момент записи данных определяется внешним сигналом записи страницы (-ЗпСтр), при формировании которого учитываются результат дешифрации адреса PC и наличие интерфейсного сигнала -IOW.
Запись в 16-битный PTAN производится командой OUT с употреблением следующих адресов: 000h -адрес РТАО, 002h - РТА1, 004 - РТА2, 006 - РТАЗ. Так как входная шина КПДП 8-битная (SD7-SD0), то вывод 16-битного кода начального адреса выполняется двумя командами OUT, причем первая команда передает младший байт адреса (А7-А0), а вторая команда - старший байт (А15-А8).
Более подробно выполнение команды OUT в этом случае показывает следующая схема последовательности действий, представленная на рис. 5.22.
-ЗпПДП, SA3-SA0—► £₽!—► Шиф (ПЗУ)—► код режима (100-запись в РТА)
-Вкл
НК. ,HP ПМ —► код команды
I
РМ
I
ОЕПП
ТВкл=0
SD7-SD0
-Зп мл.байта*---ДшК РТАЗ-РТАО
-Разр —► ДшУС—► -ЗпТп/п —►Тп/п=1
Рис. 5.22. Схема последовательности действий КПДП при записи байта адреса в регистр РТА
Из схемы последовательности действий видно, что входной сигнал -ЗпПДП и младшие биты адреса SA3-SA0 через регистр БР1 поступают на адресные входы шифратора (Шиф), выполненного на базе ПЗУ. На входах Шиф формируется трехбитный код режима (100 - запись в РТА) и сигнал включения (-Вкл), которые соответственно поступают на входы ПМ (ПЗУ) и триггер ТВкл. Триггер ТВкл сбрасывается в нулевое состояние и разрешает работу дешифратора ДшК, на входы которого поступает трехбитный код команды. К этому моменту времени сигналом ОЕПП1 открыт приемопередатчик ППТ и байт адреса с шины SD7--
Упрощенная схема КПДП	267
SDO поступает по внутренней шине BD7-BD0 на входы блока РТАЗ-РТАО и записывается в требуемом РТА( (младшую часть битов, А7-А0) сигналом -Зп мл.байта. Кроме того, выполняется установка в единичное состояние триггера Тп/п для приема следующего байта адреса в старшую часть битов PTAi (А15-А8).
Аналогичным образом осуществляется запись в регистр текущего числа циклов РТЧЦ путем выполнения двух команд OUT для записи вначале младшего байта, а потом старшего байта. При этом применяются следующие адреса: 00 lh -для записи в РТЧЦ канала 0, 003h - в РТЧЦ канала 1, 005h - в РТЧЦ канала 2 и 007h - в РТЧЦ канала 3.
Триггер ТЗПДП устанавливается в режим запрета ПДП по сигналу RESET Разрешение ПДП осуществляется командой OUT с адресом 008h, причем бит SD2 должен быть равен 0.
Сброс триггера Тп/п выполняется без передачи бита данных командой OUT с адресом OOCh. Доступ к регистрам контроллера, выполняемые операции и коды режима представлены в табл. 5.5.
Таблица 5.5
Адрес(И)	SA3	SA2	SA1	SA0	-4TDMA	-3nDMA	Операция
1	2	3	4	5	6	7	8
ОС	1	1	0	0	1	0	Сброс Тп/п
ов	1	0	1	1	1	0	Запись в РР
08	1	0	0	0	0	1	Чтение в PC
07	0	1	1	1	0	1	Чтение РТЧЦ К3
05	0	1	0	1	0	1	Чтение РТЧЦ К2
03	0	0	1	1	0	1	Чтение РТЧЦ К1
01	0	0	0	1	0	ч	Чтение РТЧЦ Ко
07	0	1	1	1	1	0	Запись РТЧЦ К3
05	0	1	0	1	1	0	Запись РТЧЦ К2
03	0	0	1	1	1	0	Запись РТЧЦ К1
01	0	0	0	1	1	0	Запись РТЧЦ Ко
ОВ	0	1	1	0	0	1	Чтение РТА К3
04	0	1	0	0	0	1	Чтение РТА К2
02	0	0	1	0	0	1	Чтение РТА К1
00	0	0	0	0	0	ч	Чтение РТА Ко
ОВ	0	1	1	0	1	0	Запись РТА К3
04	0	1	0	0	1	0	Запись РТА К2
02	0	0	1	0	1	0	Запись РТА К1
00	0	0	0	0	1	0	Запись РТА Ко
Циклы ПДП
Рассмотрим цикл ПДП в режиме чтения (чтение ВУ и запись в память). После того как выполнена инициализация КПДП и программно сброшен триггер ТЗ ПДП, указывающий на разрешение ПДП, сигналы запроса ПДП DRQ3-DRQ0 (один или несколько) воспринимаются Шиф, причем наивысшим приоритетом обладает сигнал DRQO, а низшим приоритетом - DRQ3. Таким образом, в циклах ПДП Шиф реализует функцию фиксированного приоритета, когда пред
268
Промой доступ к памяти
почтение отдается сигналу запроса ПДП с меньшим номером. С появлением одного или нескольких сигналов DRQ на входе Шиф формируется сигнал -Вкл, который сбрасывает триггер ТВкл в нулевое состояние, тем самым блокируется прием запросов DRQ в БРг до конца выполнения режима, сбрасывается счетчик микрокоманд (СчМ) и разрешается работа дешифратора ДшК. Кроме того, Шиф выдает двухбитный код текущего номера канала (HKJ, поступающий в блок РР3-РР0, блок РС3-РС0, блок РТА3-РТА0, блок РТЧЦ-РТЧЦ и формирователь ФБАСК. Помимо этого, Шиф формирует трехбитный код режима (ООО - цикл ПДП), который подается на соответствующие адресные входы памяти микрокоманд (ПМ). В свою очередь, ПМ через регистр РМ выдает сигнал запроса шины (HRQ). После этого с помощью счетчика СчМ, который последовательно считывает содержимое ПМ (ПЗУ), дешифратор ДшК последовательно формирует сигналы -Чт младшего байта и -Чт старшего байта, по которым начальный адрес памяти из РТА через счетчик Сч записывается в регистр РА.
Затем системный процессор подтверждает захват шины сигналом -HLDA, который запоминается в регистре ВР9 по синхросигналу SCLK и подается на вход ПМ, генерирующей через регистр РМ сигнал -AEN.
Сигналы -AEN и -HLDA участвуют в формировании сигнала разрешения выходных сигналов (-РВ), позволяющего установить биты адреса страницы (A 19-Al 5) из PCj и биты адреса А15-АО из регистра РА на шину адреса, сформировать сигнал DACK( на выходе ФО АСК вслед за установленным адресом.
По сигналу -AEN формирователь ФУС с учетом информации в выбранном регистре РР выдает сигнал -IOR (чтение ввода/вывода) и затем сигнал записи в память -MEMW.
Цикл ПДП завершается после поступления из памяти сигнала готовности I/O CH RDY, по которому ПМ снимает -AEN, затем сбрасывает адрес, управляющие сигналы -IOR, -MEMW и сигнал -DACK.
После этого содержимое счетчика (Сч) увеличивается (уменьшается) на 1 и по сигналу - Зп слова дешифратора команд (ДшК) адрес из Сч переписывается в РТАГ Кроме того, значение РТЧЦ заносится в Сч, где оно уменьшается на 1 и снова записывается в РТЧЦ.
Затем дешифратор ДшК формирует сигнал «-Конец», устанавливающий триггер ТВкл в единичное состояние, и становится возможным запись входных сигналов в регистр БРГ Описанные действия повторяются до тех пор, пока содержимое счетчика Сч не станет равным FFFFh, при этом на выходе счетчика Сч вырабатывается сигнал окончания счета (Т/С).
Логика действия КПДП иллюстрируется блок-схемой, представленной на рис. 5.23.
5.6.	Программирование КПДП
Разработать программу на ассемблере, выполняющую проверку контроллера прямого доступа к памяти (КПДП) в режимах записи (чтения) без передачи данных. После окончания заданного числа циклов ПДП необходимо вывести на экран дисплея содержимое регистра состояния, регистра текущего адреса, регистра текущего числа циклов.
Исходные данные:
Канал - 1 ;
Количество передаваемых данных - 128:
Блочный режим передачи.
Программирование КПДП
269
Рис. 5.23. Блок-схем а функционирования КПДП
.MODEL small
.STACK 100h
.DATA
CR	DB 13,10,0
MessageDB "Программа тестирования КПДП",13,10, \
"Канал1 DMA, передача 128 байтов данных.",\
"Режим блочной передачи (в состоянии контроля).",13,10,\
"Для продолжения нажмите любую клавишу...",0
MessOk	DB 13,10, "Проверка выполнена.", 0
MessStateReg DB 13,10, "Регистр состояния:",0
MessDataReg DB 13,10, "Регистр данных:",0
mov ax,@data
mov ds,ax
mov si,Offset Message Call WriteStr
mov ah,0 int 16h	; Чтение символа с клавиатуры
out Odh,al	; Программный сброс контроллера
mov si,Offset MessStateReg	
Call WriteStr	
in al,08h	; Чтение регистра состояния
Call WriteChar	
out Och,al	; Сброс триггера первый/последний
mov al,Oh	f
out 02h,al	; Устанавливаем адрес
mov al,Oh	г
out 02h,al	г
mov al,81h	; Направляем код: Блочная передача + контроль
	; канала 1 в регистр режима
out Obh,al	г
out Och,al	; Сброс триггера первый/последний
mov al,7Fh	; Помещаем код числа циклов в порт 03h
out 3h,al	г
mov al,Oh	г
out 3h,al	г
mov al,Oh	; Запись командного слова в регистр
out 08h,al	; управления г
mov al,05h	; Устанавливаем программный запрос
out 09h,al	; канала 1
in al,03	; Чтение текущего числа циклов
mov cl,al	г
in al,03	f
mov ch,al	f
in al,0dh	
mov dh,al	; Регистр данных
in al,08h	
mov dl,al	; Чтение регистра состояния
mov al,01h	; Снятие запроса ПДП канала 1
out 09h,al	
mov si,Offset MessOk
Программирование КПДП
271
Call WriteStr
mov si,Offset MessStateReg Call WriteStr mov al,dl Call WriteChar
mov si,Offset MessdataReg Call WriteStr mov al,dh Call WriteChar
mov si,Offset MessCycleReg Call WriteStr mov al,cl Call WriteChar mov ah,4ch int 21h
WRITECHAR PROC ;AL = char ; Начало процедуры вывода символа xor ah,ah push ax shr al,4 mov bx,ax mov al,Tables[bx] mov ah,0eh mov bh,0 int lOh pop ax and al,00001111b mov bx,ax mov al,Tables[bx] mov ah,0eh mov bh,0 int lOh mov ax,0E20h xor bx,bx int lOh ret
WRITECHAR ENDP
WriteStr PROC ; si -addr str ; Начало процедуры вывода строки mov ah,0Eh; UP: LODSB CMP AL, 0 JZ DOWN INT lOh JMP UP DOWN: ret WriteStr ENDP END
272
Прямой доступ к помяти
5.7. Варианты заданий
Варианты заданий представлены функциональным графом (рис. 5.24).
13 Режим обслуживания
23 Адрес памяти
Количество передаваемых байтов/слов
41
7 43 Номер канала
51
Изменение адреса (-CI/+2)
Рис. 5.24. Функциональный граф вариантов заданий
Вариант задания определяется маршрутом в графе, например 12-21-32-41-51. Первый уровень (вершины 11, 12, 13) графа задает режим обслуживания КПДП: блочный (11), одиночный (12), по требованию (13). Второй уровень графа (вершины 21, 22, 23) соответствует выбранному адресу памяти из адресного пространства пользователя. Третий уровень (вершины 31.32, 33) определяет количество передаваемых байтов/слов, например вершине 31 соответствуют 64 единицы информации, вершине 32 - 128, вершине 33 - 256. Четвертый уровень графа (вершины 41, 42, 43) обусловливает выбор номера канала (К1, КЗ, К7), а пятый уровень (вершины 51, 52) - изменение адреса (инкремент или декремент).
Контрольные вопросы
1. Определите канал (К) с наивысшим приоритетом контроллера прямого доступа к памяти:
1) КЗ;	2) К2;	3) К1;	4) КО.
2. Укажите последовательность задания входных и выходных сигналов контроллера прямого доступа к памяти (ПДП):
1)	подтверждение шины;
2)	запрос шины;
3)	запрос ПДП;
4)	подтверждение ПДП.
Литература
273
3.	Выберите действия, выполняемые при настройке контроллера прямого доступа к памяти:
1)	передача адреса памяти:
2)	передача какой-либо команды:
3)	задание количество передаваемых байтов (слов):
4)	установка режима работы:
5)	задание номера накопителя диска.
4.	Выберите признаки, относящиеся к контроллеру прямого доступа к памяти (ПДП):
1)	в циклах ПДП процессор участвует в работе совместно с контроллером;
2)	в циклах ПДП процессор не участвует в совместной работе с контроллером:
3)	в контроллере циклы ПДП выполняются программным способом;
4)	циклы ПДП в контроллере осуществляются с помощью аппаратуры.
5.	Назовите условие, при котором происходит освобождение шины КПДП:
1)	сброс HRQ:
2)	формирование HLDA;
3)	сброс DACKN.
Литература
1.	Авдеев В. А., Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства.: уч. пособие. - М.: Радио и связь. 2001. - 480 с.: ил.
2.	Ю-Чжен Лю, Гибсон Г. Микропроцессоры семейства 8086/8088. Архитектура, программирование и проектирование микрокомпьютерных систем / пер. с англ. - М.: Радио и связь, 1987. - 512 с.
3.	Микропроцессорный комплект К1810: структура, программирование, применение: справ. Книга / Ю.М. Казаринов и др., под ред. Ю. М. Казаринова. -М.: Высшая школа, 1990. - 269 с.: ил.
Периферийные интерфейсы ввода/вывода
6.1.	Последовательный интерфейс RS-232
Функциональные признаки интерфейса RS-232
1.	Дисциплина обслуживания - передача данных типа «точка-точка», возможно подключение к шине RS только одного устройства.
2.	Способ передачи данных - последовательно-последовательный, последовательно передаются байты и последовательно - биты.
3.	Временное согласование - асинхронное с использованием специального стартстопного формата данных или синхронное с применением интерфейсных сигналов синхронизации при передаче и приеме данных.
4.	Структура данных - определяется типом подключенного к шине устройства: например, коды ASCII, выводимые на принтер.
5.	Режим обмена - с использованием интерфейсных квитирующих сигналов.
6.	Вид передачи с учетом направления - дуплексный (в режиме разделения времени) или симплексный.
7.	Представление битов - биполярными сигналами: логическая 1 определяется уровнями напряжения от -3 В до -12 В, а логический О характеризуется уровнями напряжения от +3 В до +12 В.
8.	Контроль данных на шине - не предусмотрен.
Последовательный синхронно-асинхронный, периферийный интерфейс RS-232 (стык С2) предназначен для сопряжения оконечного оборудования данных (DTE) с аппаратурой передачи данных (DCE). Для обозначения персонального компьютера (ПК), терминала или любого устройства используется аббревиатура ООД(ВТЕ), а для обозначения, например, модема - АПД(ВСЕ).
Модем (модулятор-демодулятор) - устройство, преобразующее цифровые сигналы в аналоговые и наоборот. Модем используется для связи ООД по телефонным линиям связи (рис. 6.1).
Для подключения модема к ПК необходима плата связного контроллера (адаптера), преобразующего параллельный код в последовательный при передаче данных в модем и последовательный код в параллельный при передаче
Последовательный интерфейс RS-232	875
	ООД		АПД		АПД	оод		
	ПК	RS-232	Модем	Телефонная линия связи	Модем	RS-232	ПК	
								
	DTE		ОСЕ		DCE		DTE	
Рис. 6.1. Схема сопряжения двух ПК								
данных из модема в ПК в соответствии с заданным протоколом связи. Для построения связных контроллеров (СК), или COM-портов, используются микросхемы универсальных асинхронных и синхронно-асинхронных приемопередатчиков (УАПП, УСАПП). В табл. 6.1 представлены основные сигналы RS-232, в котором направление передачи сигнала указано относительно ООД
Таблица 6.1				
Контакты разъема		Обозначение сигналов	Назначение сигналов	Направление передачи
DB25	DB9			
8	1	DCD	Обнаружение несущей сигнала	I
3	2	-RxD	Принимаемые данные	I
2	3	-TxD	Передаваемые данные	0
20	4	DTR	Г отовность терминала	0
7	5	GND	Сигнальная земля	
6	6	DSR	Готовность модема	I
4	7	RTS	Запрос передатчика	0
5	8_	CTS	Свободно для передачи	I
22	9	Rl	Индикатор звонка	I
Примечание: 1 - ввод, 0		- вывод.		
Общий вид вилочной части разъемов DB25P(a) и DB9P показан соответственно на рис. 6.2.
Сигнал DCD (обнаружение несущей) положительным уровнем указывает ООД о наличии установленной связи.
По линиям -RxD и -TxD относительно ООД выполняется соответственно прием и передача последовательных данных.
Положительные уровни сигналов DTR (готовность терминала) и DSR (готовность модема) определяют соответственно, что устройства ООД и АПД подключены к линиям связи.
Сигнал RTS (запрос передатчика) положительного уровня формируется ООД перед подачей данных и сохраняется на все время передачи.
276
Периферийные интерфейсы ввода/вывода
Ответный сигнал CTS (свободно для передачи) устанавливается АПД до конца передачи с целью сообщения ООД о готовности к приему данных.
Сигнал RI (индикатор звонка) активизируется АПД при поступлении в него телефонного вызова. Линия GND (сигнальная земля) является второй линией передаваемых сигналов.
В интерфейсе RS-232 логическая единица для усилителя-приемника соответствует напряжению, находящемуся в диапазоне от -3 В до -25 В (маркеру), а логический нуль - в диапазоне от +3 В до +25 В (пробелу). Диапазон от -3 В до +3 В является диапазоном нечувствительности и необходим для устранения электрических шумов на линиях, длина которых не более 15 м.
Сигналы, в которых логическая единица представлена низким уровнем, называются биполярными. Биполярные сигналы RS-232 обладают лучшими энергетическими характеристиками, чем униполярные сигналы ТТЛ. Средняя мощность, выделяемая биполярными сигналами на нагрузочном резисторе, равна половине средней мощности униполярного сигнала, выделяемой на том же резисторе.
Рассмотрим сигналы сопряжения устройств с помощью интерфейса RS-232. На рис. 6.3 изображена схема связи ООД (ПК) и АПД (модема) в асинхронном режиме.
ООД(ПК) разъем	GND	М~1Д(модем) разъем
Hr-	RI	• о X ф g
	DTR	
	CTS	4 	л о
	ТхО	
3е ~7^	RTS	*• 3 	фф 7
	RxD	ф 2
2 е* с 		DSR		ф6
	DCD	
X. 1е*		* 1
Рис. 6.3. Схема связи ООД и АПД
Последовотельный интерфейс RS-232	277
Стандарт RS-232 разработан для соединения ПК и модема, и линии связи объединяют контакты с одинаковыми номерами. В том случае, когда необходимо выполнить безусловную передачу данных (без учета сигнала квитирования) в устройство, обеспечивающее прием данных с достаточной скоростью, может быть использован упрощенный вариант связи ООД и АЛД, например программатора ПЗУ (рис. 6.4). В представленной схеме ООД и АПД используют разъем DB9 и схемы УАПП с биполярными формирователями и приемниками.
Рис. 6.4. Упрощенная схема связи ООД и АПД
УАПП необходимы для согласования параллельного интерфейса с последовательным и содержат выводы, соответствующие обозначениям линий интерфейса RS-232.
Некоторые печатающие устройства имеют возможность подключения к последовательному порту (УАПП) ПК с помощью интерфейса RS-232. В этом случае печатающие устройства также используют микросхему УАПП с формирователями и приемниками биполярных сигналов, необходимыми для сопряжения с интерфейсом RS-232.
Для согласования работы печатающего устройства с ПК после приема каждого символа формирует сигнал АСК (подтверждение приема), после активизации которого ПК передает очередной символ, то есть сигнал АСК является сигналом готовности печатающего устройства к приему очередного символа. Здесь печатающее устройство рассматривается как ООД и для формирования сигнала АСК используется вывод (контакт) 4 разъема DB9 интерфейса RS-232.
На рис. 6.5 изображена схема связи ООД (ПК) и ООД (ПУ).
Для реализации связи двух ПК с помощью интерфейса RS-232 (связи типа ООД-ООД) применяется кабель нуль-модема, специальный кабель с коммутацией соответствующих линий интерфейса RS-232. Один из вариантов нуль-модема (пустого модема) представлен на рис. 6.6.
Для проверки интерфейса RS-232, УАПП, формирователей биполярных сигналов (микросхем 1488) и приемников биполярных сигналов (микросхем 1489) необходимо соединить контакты розеточной части разъема DB9S следующим образом (рис. 6.7).
278
Периферийные интерфейсы ввода/вывода
ООД(ПК)	ООД(ПУ)
Рис. 6.5. Схема связи ООД (ПК) и ООД (ПУ)
Розеточная часть DB9S вставляется в штырьковую часть DB9P разъема последовательного порта для соединения выхода микросхемы 1488 (выхода УАПП) с входом микросхемы 1489 (входом УАПП). Затем с помощью соответствующей ассемблерной программы выполняется проверка COM-порта, причем в программе бит D4 регистра управления модемом УАПП должен быть равен О (исключается режим внутренней проверки). Схема (см. рис. 6.7) позволяет дополнительно к другим схемам проверить работу формирователей и приемников биполярных сигналов. На рис. 6.8 представлена цоколевка микросхем 1488 и 1489.
Примечание: С - управление гистерезисом (ТТЛ), А и В - входы, Y - выход RS-232.
Таблица 6.2 - таблица истинности работы микросхемы 1488.
Последовательный интерфейс RS-232
279
Рис. 6.7. Схема проверки связного контроллера (последовательного порта)
-12В
А
Y
А
В
Y
GND
+12В
А
В
Y
А
В
Y
1488
А
С
Y
А
С
Y
GND
1489
+5В
А
С
Y
А
С
Y
Рис. 6.8. Цоколевка микросхем 1488 и 1489
Рассмотрим функционирование СОМ-порта и модема в асинхронном режиме. На рис. 6.9 показана схема связи COM-портов и модемов в асинхронном режиме.
При обнаружении тонального сигнала готовности (сигнала фиксированной частоты), поступающего из модема-приемника (пр), в модеме-передатчике (пер) устанавливается сигнал DCD (обнаружение модулируемой несущей). Сигнал DCD имеет положитель-
Таблица 6.2		
Входы		Выход
А	В	Y(B)
0		0		 +12
0	1	+ 12
1	0	+ 12
1	1	-12
ный (активный) уровень при приеме или передаче данных и указывает, что линией связи можно пользоваться. COM-порт (пер), получив сигнал DCD, устанавливает на все время передачи сигнал RTS (запрос передачи), разрешающий
модуляцию аналоговых сигналов в модеме (пер). Кроме того, сигнал RTS участвует в формировании ответного сигнала CTS (свободно для передачи), по-
280
Периферийные интерфейсы вводо/выводо
ООД	АПД	АПД	ООД
Рис. 6.9. Схема сопряжения COM-портов и модемов в асинхронном режиме
ступающего в СОМ-порт (пер) с некоторой задержкой по отношению к сигналу RTS. Сигнал CTS будет активен, пока не будет сброшен сигнал RTS. После получения сигнала CTS СОМ-порт (пер) выполняет последовательную передачу данных по линии 1\D.
На другом конце линии связи СОМ-порт (пр) осуществляет ввод данных с линии RxD, если установлен сигнал DCD, формируемый на выходе модема (пр). СОМ-порт (пер) выполняет передачу, а СОМ-порт (пр) - прием последовательных данных, имеющих стартстопный формат. COM-порт может работать в знаковом или блоковом режиме. При осуществлении знакового режима символ передается сразу, как только он был набран на клавиатуре. В блоковом режиме символ помещается в буферную память и хранится там до тех пор, пока не будет введен управляющий знак. Скорость передачи данных обычно программируется в УАПП или устанавливается автоматически после приема соответствующих символов. Значения скорости передачи следующие: 300, 600, 1200,..., 19 200 бит/с.
На рис. 6.10 представлена схема сопряжения COM-портов и модемов в синхронном режиме с учетом разъема DB25 и сигналов синхронизации передатчика (ТС) и приемника (RC).
Во время передачи битов данных сигналы синхронизации ТС определяют моменты перехода этих битов из высокого уровня в низкий и наоборот. Модем (пер) при наличии сигнала DCD передает в линию связи аналоговые сигналы, представляющие собой модулируемые данные и составляющие синхронизации. Модем (пр) постоянно настраивает сигналы синхронизации RC в соответствии с компонентами синхронизации, получаемыми из аналоговой линии связи. Отрицательные фронты сигналов синхронизации RC определяют середину битов данных. Прием данных по линии RxD осуществляется СОМ-портом (пр) при установленном сигнале DCD.
6.2.	Асинхронная передача данных
Асинхронная передача данных состоит в том, что допускаются любые промежутки времени между передаваемыми сигналами и используется специальный формат представления каждого символа.
На рис. 6.11 показан формат двоичного набора буквы В уровнями ТТЛ, а на рис. 6.12 изображено представление буквы В на линиях TkD (RxD) интерфейса RS-232.
Асинхронная передача данных
281
Передача	Прием
данных	данных
ООД	АПД	АПД	ООД
Рис. 6.10. Схема сопряжения COM-портов и модемов в синхронном режиме
V	
+12В		 	 	 	
+ЗВ	
		t
	
-ЗВ	
-12В		 	 	
Рис. 6.12. Представление буквы В на линиях TxD и RxD	
282
Периферийные интерфейсы ввода/вывода
Скорость асинхронной передачи меньше скорости синхронной передачи данных, так как в первом случае формат для каждого символа содержит дополнительные стартовый и стоповые биты, а во втором случае эти биты отсутствуют.
Асинхронная передача допускает некоторую рассинхронизацию (рассогласование) частот передатчика и приемника на несколько процентов (в пределах длительности бита), что является крайне недопустимым при синхронной передаче, в которой положение каждого бита четко определяется сигналом синхронизации. При скорости передачи, равной 600 бод (600 бит/с), длительность каждого бита - 1,66 мс.
УАПП, принимающий кодовые посылки, выполняет обнаружение и ввод каждого бита в середине его интервала (0,83 мс), что исключает прием краткосрочных помех на линии. Запускает в работу УАПП стартовый бит, а стоповые биты необходимы для разделения последовательных кодовых посылок, следующих друг за другом.
Количество информационных битов (5-8) и число стоповых битов (1; 1,5 и 2) программируются в УАПП. Кроме того, в УАПП может программироваться необязательный бит паритета.
При асинхронной передаче различают три типа ошибок: ошибка кадра, паритета (чет или нечет) и переполнения. Если на месте стопового бита обнаруживается низкий уровень, то это указывает на наличие ошибки кадра. При поступлении информации по линии связи до ввода предыдущей кодовой посылки из УАПП в ПК происходит ошибка переполнения (перегрузки). И наоборот, если ПК выводят информацию, а она по какой-то причине не считана в линию связи, то это также указывает на ошибку, связанную с перегрузкой УАПП. Эти три типа ошибок обнаруживает УАПП.
6.3.	Синхронная передача данных
При синхронной передаче данных для представления знака применяется 5-8 бит с необязательным битом паритета. Передаваемые символы в одном блоке данных имеют равное число бит. Произвольные временные интервалы между символами являются недопустимыми.
Для СК и модема используется одна частота синхронизации (тактовые сигналы синхронизации). Каждый блок данных начинается символами синхронизации, которые отличаются от символов данных. Модем (СК) принимает последовательные биты данных, анализирует их и обнаруживает символы синхронизации, которые определяют начало блока данных. В СК программируются число передаваемых бит, паритет, число и коды символов синхронизации. Чаще всего передаваемые биты данных СК синхронизируются сигналами, поступающими из модема (внешнего генератора сигналов).
Значения скорости передачи следующие: 1200, 2400...72 000 бит/с. Различают два протокола связи: байт-ориентированный и бит-ориентированный. В байт-ориентированном протоколе используются несколько символов синхронизации в начале блока данных, в бит-ориентированном протоколе применяется в начале каждого блока данных один знак, называемый флагом.
6.4.	Асинхронный передатчик
Рассмотрим устройство и работу УАПП, содержащего передатчик и приемник.
Асинхронный передатчик выполняет преобразование параллельного кода в последовательный со стартстопным форматом. Кроме того, асинхронный пе
Асинхронный передатчик	283
редатчик через прерывание (установку флага готовности) сигнализирует процессору о возможности вывода очередного символа.
Термины Ввод или Вывод рассматриваются относительно процессора, то есть процессор выводит байт данных и записывает в порт устройства, или процессор читает содержимое порта устройства и вводит в собственные регистры. Асинхронный передатчик включает в себя два адресуемых порта: 8-разрядный регистр данных вывода (РДВыв) и 2-разрядный регистр состояния вывода (РСВыв). Первый бит РСВыв доступен по записи и чтению со стороны процессора. Выходной сигнал этого бита разрешает прерывание (РП) со стороны асинхронного передатчика. Второй бит устанавливается асинхронным передатчиком, когда РДВыв пуст, и имеет название Флаг готовности (ФГ). После того как символ будет переписан в сдвиговый регистр (СР), асинхронный передатчик устанавливает бит ФГ, что указывает процессору на возможность вывода очередного символа.
На рис. 6.13 представлена структурная схема асинхронного передатчика, в которой с целью ее упрощения отсутствуют схема контроля и возможность программирования числа передаваемых бит данных и множителя скорости (Мн=16). Поэтому на выходе TxD асинхронного передатчика формируется последовательная кодовая посылка, содержащая 11 бит (стартовый бит, 8 информационных и 2 стоповых бита).
При включении питания по сигналу Сброс устанавливается бит ФГ РСВыв, указывающий процессору, что РДВыв пуст. Процессор определяет это состоя-
BD0-BD7 ЗпРДВыв	ФГ РП
(Готовность для передачи)
Рис. 6.13. Структурная схема асинхронного передатчика
284	Периферийные интерфейсы ввода/вывода
ние РДВыв через прерывание (РП=ФГ=1) или путем опроса ФГ (РП=О) регистра состояния. Затем процессор выполняет вывод байта данных, который записывается в РДВыв сигналом Зп РДВыв (схема сопряжения передатчика с системной шиной будет рассмотрена ниже). Кроме того, сигнал Зп РДВыв осуществляет сброс бита ФГ РСВыв и пуск блока управления (БУ) при наличии сигнала CTS (Готовность для передачи), приходящего из внешнего устройства, которому передается последовательная кодовая посылка.
Блок управления БУ, синхронизированный тактовыми сигналами (ТС), вырабатывает два управляющих сигнала: УС1 и УС2. Первым сигналом УС1 осуществляются сброс триггера стартового бита (ТСБ). предварительно установленного в единичное состояние сигналом Сброс, и передача содержимого РДВыв в СР. Вторым сигналом УС2 выполняются следующие действия: разрешается работа счетчиков Сч1 и Сч2 и устанавливается бит ФГ РСВыв. Для построения БУ используются два триггера.
Счетчик (4-разрядный Сч1) начинает подсчитывать сигналы ТС. После приема восьми сигналов ТС (середина бита кодовой посылки) на четвертом выходе Сч1 (соответствующего весу 8) формируется импульс сдвига (ИС), поступающий на СР и ТСБ и выполняющий сдвиг на один разряд девяти битов последовательной кодовой посылки, причем первым через формирователь (Ф) на линию TXD поступает стартовый бит. Таким образом, 4-разрядный счетчик Сч1 определяет Мн= 16, то есть длительность каждого бита кодовой посылки соответствует 16 сигналам ТС.
Счетчик Сч2 подсчитывает сигналы ТС. Как только содержимое Сч2 станет равным коду 11 (1011), дешифратор (Дш11) этого кода формирует сигнал Сбр, указывающий на завершение передачи 11 -разрядной кодовой посылки. Последние 2 стоповых бита образуются за счет подключения последовательного входа СР к напряжению, соответствующему логической единице (1). Сигнал дешифратора Дш1 1 выполняет сброс БУ, который, в свою очередь, запрещает работу счетчиков Сч1 и Сч2. На этом завершается цикл передачи байта данных на линию TkD.
6.5.	Асинхронный приемник
Асинхронный приемник выполняет прием последовательной кодовой посылки, имеющей стартстопный формат, и преобразование последовательного 8-раз-рядного кода в параллельный. Запуск асинхронного приемника осуществляется стартовым битом. Процессор определяет, что регистр данных ввода (РДВв) полон, через прерывание или опрос бита ФГ регистра состояния.
Структурная схема асинхронного приемника изображена на рис. 6.14. Принцип работы асинхронного приемника заключается в следующем.
Поступающий с линии данных RxD стартовый бит низкого уровня разрешает работу счетчика Сч1 (подсчет сигналов ТС), имеющего два сбросовых входа, включенных по схеме &. Сброс счетчиков Сч1 и Сч2 выполняется, если на обоих входах присутствуют сигналы высокого уровня. Таким образом, на первый вход R счетчика Сч 1 подан сигнал низкого уровня стартового бита, а на втором входе R сохраняется сигнал высокого уровня с дискриминатора длительности стартового бита (ДДСБ), реализованного на базе триггера. Предварительно (перед началом работы устройства) ДДСБ был установлен в единичное состояние сигналом Сброс.
Асинхронный приемник
285
ФГ
РП
BD0-BD7
ЧтРДВв
RxD
DO
ЗпРСВв
Рис. 6.14. Структурная схема асинхронного приемника
Если на линии RxD вместо стартового бита присутствует кратковременная помеха низкого уровня, то счетчик Сч 1 не успеет подсчитать восемь сигналов ТС (половина интервала бита) и на его выходе 8 (8-вес разряда) не появится импульс сдвига (ИС). В случае поступления стартового бита счетчик Сч1 формирует первый импульс ИС, который записывает стартовый бит в сдвиговый регистр (СР) и сбрасывает триггер ДДСБ. Теперь на выходе ДДСБ вырабатывается управляющий сигнал (УС) низкого уровня, поступающий на второй сбросовый вход счетчика Сч 1 и разрешающий дальнейший прием последовательной кодовой посылки в СР. Ввод кодовой посылки осуществляется через усилитель-приемник (ПР). Кроме того, выходной сигнал триггера ДДСБ разрешает работу счетчика Сч2, подсчитывающего импульсы ИС. Как только содержимое счетчика Сч2 станет равным 9 (1001), на выходе дешифратора Дш9 вырабатывается сигнал, указывающий на завершение приема последовательной кодовой посылки и устанавливающий триггер ДДСБ в единичное состояние. Высокий уровень выходного сигнала триггера ДДСБ переписывает содержимое регистра СР в регистр РДВв и устанавливает бит ФГ регистра PC. Через прерывание (РП=ФГ=1) или опрос ФГ=1 (РП=0) процессор считывает содержимое регистра РДВв. Чтение регистра РДВв выполняется сигналом Чт РДВ, который, кроме
286
Периферийные интерфейсы ввода/вывода
того, осуществляет сброс бита ФГ регистра РСВв. После ввода следующей последовательной кодовой посылки вновь устанавливается бит ФГ, указывающий на то, что РДВв полон. После чтения содержимого РДВв происходит сброс бита ФГ ит. д.
Формирование сигналов ТС для асинхронных передатчика и приемника выполняется с помощью схемы, содержащей генератор сигналов (ГС), счетчик (Сч) и наборное поле. Выходы счетчика Сч, осуществляющего деление частоты, подключены ко входам наборного поля. Установив перемычку в наборном поле, можно задать определенную частоту сигналов ТС (скорость передачи битов).
6.6.	Подключение портов УАПП к шине
На рис. 6.15 показана структурная схема сопряжения портов асинхронных передатчика и приемника с шиной ISA. В табл. 6.3 перечислены порты и указаны их адреса, взятые из карты распределения адресного пространства ввода/вывода для второй асинхронной передачи.
Таблица 6.3
Порт	Режим	Адрес	Сигнал ДшУС
РД Выв	Запись	2F8H	ЗпРДВыв
РД Вв	Чтение	2F8H	Чт РД Вв
PC Выв	Запись	2F9H	ЗпРСВыв
PC Выв	Чтение	2F9H	Чт PC Выв
РСВв	Запись	2FAH	ЗпРСВв
РСВв	Чтение	2FAH	Чт PC Вв
Для выбора устройства используются старшие разряды адреса А2-А9, являющиеся общими для всех портов (01111101), а для выбора порта внутри устройства - младшие разряды адреса АО, А1.
Регистру РД Выв (РД Вв) соответствуют разряды А0=А1 = 1, регистру PC Выв -разряды А0= 1 и А1 =0, а регистру PC Вв - разряды А0=0 и Al = 1.
В режиме вывод процессор устанавливает адрес на шину адреса А0-А9 и данные на шину данных D0-D7. Старшие разряды адреса А2-А9 и сигнал разрешения адреса (AEN) декодируются дешифратором адреса (ДшА), формирующим на выходе сигнал выбора устройства (SEL). Низкий уровень сигнала AEN указывает на обычный ввод/вывод, а высокий уровень - на режим прямого доступа к памяти. Байт данных с системной шины D0-D7 поступает на внутреннюю шину данных BD0-BD7, так как на входе DN приемопередатчика (ПП) установлен низкий уровень (сигнал IOR=0). В качестве ПП в схеме применяется микросхема 580ВА86, в которой осуществляется передача с шины BD0-BD7 на шину D0-D7 (А-^В), если сигнал на входе DN= 1. Через 92 нс, после того как гарантиро-ванно установлен адрес, процессор выдает управляющий сигнал IOW, поступающий на вход дешифратора управляющих сигналов (ДшУС). Дешифратор ДшУС с учетом разрядов адреса АО, А1 и сигнала SEL формирует на соответствующем выходе сигнал записи в порт, например ЗпРДВыв. Таким образом, сигнал ЗпРДВыв=8Е1_? AO*A1*IOW.
Подключение портов ПАПП к шине
287
в СРВыв
Рис. 6.15. Структурная схема сопряжения портов с шиной
Запись данных в порты происходит по спаду (снятию) сигнала IOW. Данные сохраняются в течение 185 нс после окончания сигнала IOW.
Системная шина ISA относится к синхронным интерфейсам, поэтому сигнал квитирования, указывающий на завершение операции ввода/вывода данных, отсутствует.
Аналогичным образом выполняется операция чтения данных. Процессор устанавливает адрес на шину А0-А9. Устройство обнаруживает свой адрес, формируя на выходе ДшА сигнал SEL. Затем через 92 нс процессор выдает управ
288	Периферийные интерфейсы ввода/вывода
ляющий сигнал чтения (IOR). Дешифратор ДшУС по фронту сигнала IOR формирует на одном из выходов сигнал чтения порта, например сигнал Чт РД Вв. по которому выполняется передача содержимого регистра РДВв на системную шину D0-D7 через ПП, открытый для передачи данных в направлении от А к В (сигнал на входе DN=1).
В схеме содержится узел прерывания (УП), который формирует сигнал прерывания IRQ3, соответствующий второму асинхронному порту, при наличии пары сигналов ФГ Выв и РП Выв или ФГ Вв и РП Вв.
Установка бита РП выполняется путем использования бита данных BD0 и адреса регистра состояния, то есть этот бит является портом с передачей бита данных.
6.7.	Морфологический граф заданий
На рис. 6.16 представлен морфологический граф вариантов построения схемы сопряжения портов асинхронных передатчика и приемника с системной шиной. Например, первый уровень (системная шина) состоит из двух вершин. Второй уровень определяет тип микросхем, используемых для реализации дешифратора адреса. Так, дешифратор адреса можно построить на двух микросхемах СП 1 (ИД7) или на одной микросхеме ИД7 и логических элементах и т. д.
Третий уровень задает тип микросхем, применяемых для построения дешифратора управляющих сигналов.
Последние четыре уровня (4-7) соответствуют присвоенным адресам портов. Морфологический граф определяет 24п вариантов построения принципиальной схемы сопряжения. На рис. 6.17 показан морфологический граф, задающий варианты проектирования схемы асинхронного передатчика (приемника).
Первый уровень (уровень множителя скорости) устанавливает множитель скорости (1, 16, 64), а второй уровень - число информационных бит в кодовой посылке (5-8).
Третий уровень соответствует типу контроля, применяемого в схеме асинхронного передатчика (приемника). Вершина 31 определяет контроль ошибки переполнения, вершина 32 - контроль ошибки кадра, вершина 33 - контроль ошибки паритета (чет или нечет), и вершина 34 - отсутствие контроля какой-либо ошибки.
Четвертый уровень задает число стоповых битов в последовательной кодовой посылке (1. 1.5, 2).
Представленный (см. рис. 6.17) морфологический граф устанавливает 144 варианта построения схемы асинхронного передатчика (приемника).
Каждый вариант определяется маршрутом морфологического графа, проходящим через вершину каждого уровня. Например, маршрут (12, 24, 34, 43) соответствует структурным схемам асинхронного передатчика и приемника, изображенным на рис. 6.13 и 6.14.
Изготавливаемые фирмами приемопередатчики являются универсальными (УАПП), то есть содержат программируемую логику.
В УАПП программируются множитель скорости, число информационных и стоповых бит, наличие бита паритета.
Для морфологического графа (рис. 6.16), например, маршрут (12, 22, 31, 41, 51.61,71) соответствует одному из вариантов реализации схемы сопряжения.
290	Периферийные интерфейсы ввода/вывода
Выбор элементной базы для реализации портов и подключение их к внутренней шине данных (рис. 6.15) являются несложным занятием и поэтому не рассматриваются.
6.8.	Микросхема УАПП
Для управления работой последовательного интерфейса СОМ-порта используется микросхема УАПП (Universal Asynchronous Receiver/Transmitter). Выпускаются несколько типов таких микросхем, например микросхемы фирмы National Semiconductor 8250, 16450, 16550 и др., которые называются совместимыми на уровне регистров. Обычно УАПП содержат два канала передачи данных (асинхронные передатчик и приемник), упрощенные принципы построения которых были рассмотрены ранее (6.4 и 6.5). Кроме того. УАПП содержит адресуемые регистры, необходимые для программирования последовательной кодовой посылки (количество битов данных, стоповых битов и типа контроля), управления скоростью передачи данных, координирования работы модема, линии и т. д.
В табл. 6.4 представлены адресуемые регистры СОМ1, имеющего базовый адрес 3F8h и реализованного на базе микросхемы NS16550.
Таблица 6.4
Адрес (h)	DLAB	Доступ	Название регистра
3F8	0	V/	Регистр передатчика
3F8	0	R	Регистр приемника
3F8	1	R/W	Регистр делителя скорости (младший байт)
3F9	1	R/W	Регистр делителя скорости (старший байт)
3F9	0	R/W	Регистр разрешения прерывания
3FA	*	F[	Регистр идентификации прерывания
3FA	*	W		Регистр управления FIFO
3FB	*	~ R/W	Регистр управления линией
3FC	*	R/W	Регистр управления модемом
3FD	*	R	Регистр состояния линии
3FE	*	R	Регистр состояния модема
3FF	*	R/W	Рабочий регистр
Примечание	: W - запись, R - чтение, *		- безразличное состояние
Микросхема NS16550 содержит 16-байтные буферы FIFO передатчика и приемника, позволяющие без потери данных осуществлять их обработку. Порты 3F8h и 3F9h имеют различное назначение в зависимости от бита D7 порта 3FBh (бита DLAB - Divisor Latch Access Bit).
Регистр передатчика предназначен для временного хранения байта данных, автоматически выводимого на линию TxD, а регистр приемника - для временного хранения вводимого байта данных с линии RxD.
Скорость (V) передачи данных (бит/с) задается значением делителя, равным 1 15200/V. Например, для V=9600 бит/с делитель равен OCh, причем 0 (старший байт) выводится в порт 3F9h (DLAB=1), а значение С - в порт 3FBh (DLAB=1). В табл. 6.5 приведены некоторые значения байтов делителя, определяющие соответствующие скорости передачи данных.
Микросхема УАПП
291
Таблица 6.5
ПортЗР8Ь DLAB=1	nopT3Fgh DLAB=1	Скорость передачи (бит/с)
~80h —	01 h	300
COh	OOh	600
60h	OOh	1200
OOP	OOh	9600 ~
Регистр разрешения прерывания используется для разрешения одного или нескольких прерываний в следующих случаях: приема символа (регистр приемника полон), завершения передачи (регистр передатчика пуст), ошибки при приеме данных, изменения состояния модема.
Регистр идентификации используется только для чтения с целью установления источников прерывания и признака режима FIFO. Режим FIFO задается битами D7 и D6 (D7D6=11 - режим FIFO микросхемы 16550А, D7D6=10 - режим FIFO микросхемы 16550, D7D6=00 - обычный режим).
Описание битов регистра управления FIFO представлено в табл. 6.6.
Таблица 6.6	
Биты	Назначение
]эо	1 - разрешение режима FIFO для передатчика и приемника
D1	1 - сброс счетчика FIFO-приемника
D2 		1 - сброс счетчика FIFO-передатчика
D3	1-разрешение операции ПДП
D5, D4	Резерв
D7, D6	Уровень заполнения FIFO, при котором формируются прерывания 00 - 1 байт (по умолчанию), 01-4 байта, 10-8 байтов, 11-14 байтов
Регистр управления линией используется для программирования числа передаваемых битов данных и стоповых битов, типа паритета и бита доступа (DLAB). Регистр управления модемом позволяет программно осуществить управление выходами DTR и DSR и установить режим проверки (бит D4= 1), в котором выход передатчика замыкается на вход приемника. В регистре состояния линии, доступном по чтению со стороны процессора, отмечается состояние УАПП: готовности передатчика принять выводимые данные (бит D5= 1 - регистр передатчика пуст), готовности приемника передать вводимые данные (бит D0= 1 - регистр приемника полон), ошибки кадра, паритета, переполнения, обрыва линии (наличие постоянного логического нуля), ошибки принятых данных в режиме FIFO (бит D7=l).
В регистре состояния модема отображается состояние линий CTS, DSR, RI и DCD. Рабочий байтовый регистр используется для временного хранения данных и в микросхеме 8250 не применяется. На рис. 6.18 представлена структурная схема УАПП.
Структурная схема содержит: блок интерфейсной логики (БИЛ), блок управления линией (БУЛ), блок управления скоростью (БУС), память (FIFO) приемки-
292
Периферийные интерфейсы ввода/вывода
D7-D0 <•
А 2-А О
CS	БИЛ
RD —
WR
F*RDY^	। ।
rRDY
БУЛ РСЛ
РУЛ
RS-232
T“D
S OUT
ПР
РД Пр	R"D
SIN
БУС
РДС МБ
СБ
БУМ
РУМ
PCM
DTR
DSR
RTS^
CTS
DCD
FIFO
приемник
БУП
РРП
РИП
FIFO передатчике
- INTR
Рис. 6.18. Структурная схемаУАПП
ка и передатчика, передатчик (ПЕР), приемник (ПР), блок управления модемом (БУМ), блок управления прерыванием (БУП). Блок интерфейсной логики предназначен для сопряжения УАПП с шиной процессора и содержит узлы, необходимые для сопряжения с шиной: приемопередатчик, формирователь управляющих сигналов записи (чтения) данных в порты (из портов). Блок управления линией координирует работу всех узлов УАПП с учетом содержимого регистров состояния и управления линией (РСЛ и РУЛ). С помощью блока управления скоростью программируется скорость передачи данных с использованием регистров делителя скорости (младшего (МБ) и старшего (СБ) байтов). Память (FIFO) приемника и передатчика применяется для временного хранения данных и согласования скоростей передаваемых и принимаемых данных. Передатчик осуществляет преобразование параллельного кода в последовательный код старт-стопного формата и передачу этого кода в линию связи. Для осуществления связи с процессором в передатчике применяется адресуемый регистр РД Пер. Приемник выполняет прием последовательный стартстопной кодовой посылки из линии в регистр РД Пр, преобразование ее в параллельный код и передачу этого кода в процессор. Блок управления модемом БУМ содержит регистр состояния и управления (РСМ и РУМ) модема. С помощью этих регистров определя
Модели схем последовательной передачи данных	293
ются состояние модема и управление его работой путем установки соответствующих битов. Блок управления прерыванием содержит два регистра: разрешения и идентификации прерывания (РРП и РИП).
6.9.	Модели схем последовательной передачи данных
Модель схемы асинхронного передатчика
Внешний вид интерактивной динамической модели представлен на рис. 6.19. Общий принцип работы схемы модели был рассмотрен в разделе 6.4. Программа модели (в книге не рассматривается) имеет несколько режимов работы, которые переключаются посредством выбора соответствующих пунктов меню.
Существуют два режима управления: автоматический и ручной. Автоматический - это демонстрационный режим, в котором моделью управляет виртуальный процессор. Выбирается следующей последовательностью пунктов меню: Emulator -о Control mode => Automatic. Пользователю в этом режиме доступно только запустить или остановить процесс эмуляции, нажав кнопку Start или Stop соответственно (одна и та же) на панели генератора импульсов
Рис. 6.19. Внешний вид модели схемы передатчика
294	Периферийные интерфейсы ввода/вывода
(Generator TI), а также изменять скорость эмуляции (скорость тактовых поступления импульсов) путем перетаскивания бегунка на той же панели.
В автоматическом режиме есть два режима: опрос (interrogation) и прерывание (interruption). Выбирается следующей последовательностью пунктов меню: Emulator Mode of operations Interrogation и Emulator Mode of operations Interruption. Эти режимы моделируют два способа работы процессора с устройством: по опросу флага готовности и по прерыванию.
Ручной режим - это режим, в котором раскрываются все возможности данной модели схемы по управлению со стороны пользователя. Нажатием кнопки Reset осуществляется сброс УАПП. Можно задавать передаваемый байт, вводя информацию в окно редактирования BD7-BD0. Затем необходимо нажать кнопку WRRGDO, и байт будет записан в регистр данных (RGDO). Можно задать Готовность приемника (CTS), выбрав соответствующее значение О или 1. Также можно установить с помощью мыши значение триггера разрешения прерываний (TrRI). Затем необходимо нажать кнопку запись WRTrRI. Индикаторы рядом с линиями отображают значения соответствующих сигналов. Ту же функцию выполняют и метки на изображениях триггеров, регистров и счетчиков.
В ручном режиме есть возможность задания серии или одиночных тактовых импульсов. Это задание осуществляется с помощью следующей последовательности пунктов меню: Emulator Control Mode Hand-operated Series TI и Emulator => Control Mode => Hand-operated => Single TI соответственно. В первом режиме тактовые импульсы задаются от генератора такого же, как и применяемого в режиме Automatic. Во втором режиме щелчок мышью на кнопке TI дает один тактовый импульс. Если левую кнопку нажать и не отпускать, то будет генерироваться серия импульсов, пока кнопка не будет отпущена.
Пункт меню Help => Model Help выводит краткую информацию о модели и принятых в ней обозначениях посредством Microsoft Internet Explorer, если в папке с программой есть файл Help.html.
Модель схемы асинхронной последовательной передачи
Внешний вид модели схемы представлен на рис. 6.20. Эта модель поясняет принцип асинхронной последовательной передачи между двумя соединенными УАПП (раздел 6.2). В левом углу рисунка на структурном уровне показан передатчик («ПАТ»), а приемник («UAR») представлен условно в виде блока, а в правом углу рисунка изображение приемника и передатчика выполнено наоборот.
Нажатием на одну из кнопок Reset моделируется сброс обоих УАПП. Кнопка Start/Pause запускает/останавливает процесс эмуляции.
Как и в предыдущей модели, можно задать байт на входе передатчика и записать в регистр данных («RGDO»), нажав кнопку WRRGDO. Чтение из регистра данных приемника («RGDI») осуществляется с помощью мыши нажатием кнопки RDRGDI.
Щелчок на таблице соответствия кодов и частот передачи (Coderate/Rate (bps)) моделирует выбор скорости передачи.
Линия в окне индикации между формирователями («F» и «R») условно показывает потенциал на линии «TkD/RxD», а в прямоугольнике выше условно показывается вид посылки в стартстопном формате.
Внешний вид модели схемы представлен на рис. 6.20. Эта модель поясняет принцип асинхронной последовательной передачи между двумя соединенными
Модели схем последовательной передачи данных
295
Рис. 6.20. Внешний вид модели схемы асинхронной передачи
УАПП. Каждая схема УАПП содержит передатчик («UAT») и приемник(«11АК»). Как и в предыдущей модели, метки отображают состояние соответствующих элементов.
Нажатием с помощью мыши на кнопоку Reset выполняется сброс обоих УАПП. Кнопка Start/Pause запускает/останавливает процесс эмуляции.
Как и в предыдущей модели, можно задать байт на входе передатчика и записать его в регистр данных («RGDO»), нажав кнопку WRRGDO. Чтение из регистра данных приемника («RGDI») осуществляется нажатием кнопки RDRGDI.
Щелчок мыши на соответствующей строке таблице соответствия кодов и частот передачи (Coderate/Rate(bps)) осуществляет выбор скорости передачи.
Линия в окне индикации между формирователями («F» и «R») условно показывает потенциал на линии «TkD/RxD», а в окне, расположенном выше, условно показывается вид посылки в стартстопном формате.
Модель схемы синхронной последовательной передачи
Внешний вид модели схемы представлен на рис. 6.21. Эта модель, поясняющая принцип синхронной последовательной передачи (рис. 6.10), содержит два соединенных УАПП. Как и в предыдущей модели, метки отображают состояние соответствующих элементов.
Нажатием на одну из кнопок Reset выполняется сброс обоих УАПП. Кнопка Start/Paus запускает или останавливает процесс эмуляции.
296
Периферийные интерфейсы ввода/вывода
Рис. 6.21. Модель схемы синхронной передачи
Как и в предыдущей модели, можно задать байт на входе передатчика и записать его в регистр данных («RGDO») путем нажатия кнопки WRRGDO. Чтение из регистра данных приемника («RGDI») осуществляется с помощью кнопки RDRGDI.
Щелчком мыши на соответствующей строке таблицы соответствия кодов и частот передачи (Coderate/Rate(bps)) можно выбрать скорость передачи данных.
Линия в окне индикации между формирователями («F» и «R») показывает уровень потенциал на линии «TkD/RxD», а в окне, расположенном выше, изображается вид посылки в стартстопном формате.
Второе окно индикации, размещенное ниже на схеме, показывает уровень потенциала на линии синхронизации.
Модель схемы асинхронного приемника
Внешний вид модели схемы приемника представлен на рис. 6.22, принцип работы которого был изложен в разделе 6.5.
Модель схемы содержит логические и запоминающие элементы, которые представлены прямоугольниками, соединенными линиями шин и проводников сигналов. Эти элементы являются пассивными и отображают состояние схемы. К активным относятся элементы ввода информации и кнопки. Элементы ввода имитируют состояние входов и выходов и линий схемы, а кнопки имитируют подачу одиночных сигналов активного уровня. Каждый элемент снабжен всплывающей подсказкой, возникающей при удержании над ним курсора мыши и поясняющей его смысловое значение.
Модели схем последовательной передачи данных
297
Рис. 6.22. Внешний вид модели схемы приемника
Возможны два режима работы схемы, определяемые одиночными тактовыми импульсами или автоматически генерируемыми тактовыми импульсами.
Задание режима осуществляется выбором соответствующего пункта меню Emulator => Mode.
В режиме одиночных импульсов необходимо подавать импульсы нажатием на кнопку Ti, а в автоматическом режиме появляется кнопка Start/Stop, которая запускает/останавливает генератор. Регулировка скорости подачи тактовых импульсов осуществляется с помощью регулятора Speed.
Входные данные для передачи вводятся в поле Input Data и заносятся на входную линию Line RxD нажатием клавиши Next byte (возможно непосредственное занесение данных на линию). По окончании приема байта устанавливается флаг готовности TrFR и высвечивается клавиша чтение регистра Read RGDI. Нажатием на эту клавишу осуществляется чтение полученного байта в поле Output Data. Затем вводятся новые данные для передачи, и действие повторяется.
Возможен режим полностью автоматической работы, при которой, помимо автоматической генерации тактовых импульсов, имитируется работа преемника при получении набора байтов. Этот режим включается выбором пункта меню Emulator => Automatic.
298
Периферийные интерфейсы ввода/вывода
Установка работы с генерацией прерываний осуществляется установкой сигнала 1 на линии BDO и записью его в триггер TrRI кнопкой WRTrRI.
Модель схемы делителя скорости
Предлагаемая модель позволяет показать принцип работы делителя скорости приемопередатчика. Делитель - одна из немаловажных частей УАПП, однако на всех предыдущих моделях он либо не показан, либо представлен условно.
Внешний вид модели схемы делителя скорости показан на рис. 6.23.

I niquencj divider
------* 2
-----* 3
—	0000000111111111
ULK/Ы
п ,
49Г1 2400
1200 ECO
0 0768 0,0304 0,0192 .00096
010
011
100
101
< I! Г, ,
5
CLK/128
АО г>А1
А2
_____ 11 11111000000000
CLK/256
Рис. 6.23. Модель схемы делителя скорости
Модель состоит из нескольких частей: генератора тактовых импульсов, счетчиков, мультиплексора, экранов сигналов, таблицы соответствия выходной частоты заданному значению в регистре скорости RGR.
Кнопка на генераторе запускает (останавливает) подачу тактовых импульсов, а бегунок позволяет задавать темп эмуляции. Экраны показывают временные диаграммы сигналов, поступивших на их вход. Щелчок мышью на строке таблицы соответствия задает значение в регистре RGR. Это значение может быть введено также посредством клавиатуры, после щелчка на окне ввода, расположенном на панели регистра RGR.
Модели схем последовательной передачи данных	299
Модель схемы приемопередатчика
Внешний вид модели структурной схемы асинхронного приемопередатчика представлен на рис. 6.24.
Рис. 6.24. Модель структурной схемы приемопередатчика
Эта модель является логическим продолжением вышеописанных моделей. Она показывает структурную схему приемопередатчика как единого устройства (чипа), содержащего следующие части: передающую, принимающую, а также интерфейсную.
Слева показаны входы и выходы чипа. Двойным щелчком на окне ввода соответствующего сигнала можно изменить его состояние на противоположное, управляя таким образом устройством.
Кнопка Start/Stop запускает/останавливает подачу синхроимпульсов «СЬК». Стрелка на приемопередатчике «Блока связи» показывает направление передачи данных - в устройство или из него. Окна вывода, обозначенные BD7...BD0, показывают состояние внутренней шины данных.
В блоке Порты в окнах вывода динамически отображается состояние соответствующих регистров (например, RGC показывает состояние регистра управления).
300	Периферийные интерфейсы ввода/вывода
В блоках Передатчик и Приемник показаны основные части (сдвиговый регистр, блок управления и т. п.) соответственно передатчика и приемника. Их состояние также отображается динамически.
Справа расположены два экрана, в которых отображается состояние линий RxD и TkD. Ключ между ними позволяет замкнуть линии принимаемых и передаваемых данных RxD и TkD для контроля правильности работы устройства. Инвертирование состояния ключа производится посредством щелчка мыши на нем.
6.10.	Параллельный интерфейс
Параллельные интерфейсы не подвержены строгому стандарту. Данные передаются между ПУ и адаптерами параллельно по разрядам. Если после передачи данных поступает только ответный сигнал квитирования, то такая передача называется асинхронной. Существует параллельный с квитированием стандартный интерфейс Centronics, предназначенный для связи принтера и его адаптера, который будет рассматриваться дальше. Если параллельная передача сопровождается только синхросигналом, то такой интерфейс называется синхронным. Параллельная передача (интерфейс) может быть связана лишь с вводом, выводом или вводом/выводом данных (предлагается схему сопряжения регистра РВв-Выв с процессором и внешним устройством ввода/вывода разработать самостоятельно). В качестве программируемого параллельного интерфейса может служить микросхема i8255, реализующая три режима (0, 1 и 2): обычный ввод или вывод, стробируемый ввод/вывод и двунаправленная шина (совмещается ввод и вывод через один регистр). Микросхема 18255 содержит четыре 8-разрядных порта РА, РВ, PC и регистр управления. Биты порта PC в режиме 1 и 2 используются как биты управления, формирующие сигнал квитирования. Первоначально микросхема 18255 была разработана для связи с принтером, но потом IBM отказалась от применения этой микросхемы в адаптере принтера. Микросхема 18255 находит применение в платах связи с объектом (сбора данных), мультиплексорах данных и т. д.
6.11.	Программируемый периферийный интерфейс
Общий вид микросхемы (PPI) 18255 представлен на рис. 6.25.
Микросхема PPI содержит три 8-битных порта РА, РВ и PC, доступных по записи и чтению (R) со стороны процессора. Кроме того, в состав оборудования PPI входит адресуемый регистр управления (РУ), в который микропроцессор только записывает информацию, задающую режим работы портов и направление передачи данных.
В табл. 6.7 показаны порты PPI и сигналы, необходимые для выбора этих портов. PPI выполняет три режима:
•	режим 0 (ввод/вывод общего типа);
•	режим 1 (стробируемый ввод/вывод);
•	режим 2 (двунаправленная передача).
В режиме 0 используются два 8-битных порта РА, РВ и два 4-битных порта PC (3-0), PC (7-4), которые можно запрограммировать на ввод или вывод данных. В этом режиме можно задать 16 конфигураций: РАТРВТРС(3-0)ТРС(7-4)Т,
Программируемый периферийный интерфейс	301
					
II	II II ш	> CS > RD )WR АО Al DO DI D7 RSI	PPI	PA7 PA6 РАО PC7 PC4 PC3 PCO PB7 PB6 PBO	II II II III 1	► Группа A ► Группа В
					
Рис. 6.25. Общий вид микросхемы PPI					
Таблица 6.7
CS	RD	WR	A,	Ao	Порт	Доступ
0	1	0	0	0	PA	W		
0	1	0	0	1	PB	w
0	1	0	1	0	PC	w
0	1	0	1	1	РУ	w
0	0	1	0	0	PA	R
0	0	1	0	1	PB	R
0	0	1	1	0	PC	R
0	1	1	★	★		Z		
1	*	*	★	★		Z
0	0	1	1	1	Запрещенная комбинация	
Z - состояние выключено, * - безразличное состояние
РАТРВ РС(3-0)ТРС(7-4)Т..РАТРВТРС(3-О)ТРС(7-4), где знаками Т и Т соответ-
ственно отмечены ввод и вывод данных.
Если в режиме 0 используется безусловный способ обмена, то в режиме 1- обмен в режиме опроса флага готовности или прерывания с использованием портов РА и РВ, а некоторые биты порта PC, входящие в состав группы, употребляются для формирования сигналов квитирования и прерывания.
В режиме 2 применяется только порт А для образования канала с двунаправленной передачей данных с квитированием и прерыванием.
Регистр РУ используется для хранения управляющего слова режима работы (его бит D7=l) или для хранения управляющего слова установки/сброса битов порта PC (его бит D7=0).
Формат управляющего слова режима работы представлен на рис. 6.26.
Порты РА и РС(7-4) образуют группу А. а порты РВ и РС(З-О) - группу В. В битах D6 и D5 формата управляющего слова задается режим работы порта РА, а в бите D4 указывается направление передачи данных (1 - данные вводятся
302
Периферийные интерфейсы ввода/вывода
Группа А	Группа В
1-ввод	0-режим 0
0-вывод	1-режим I
Рис. 6.26. Формат управляющего режима работы
в процессор, 0 - данные выводятся из процессора). Аналогичным образом объясняется назначение битов группы В.
На рис. 6.27 изображен формат управляющего слова установки/сброса битов порта PC.
D7=0		D3	D2	D1	DO
I	V*	1 - Установка бита
Не используется	Номер бита PC	0 - Сброс
Рис. 6.27. Формат управляющего слова установки/сброса битов PC
С помощью этого управляющего слова можно установить или сбросить любой бит порта PC. Управляющее слово установки/сброса бита используется для разрешения прерывания, то есть для установки соответствующих битов порта PC, предназначенных для этой цели.
Рассмотрим режим 1 PPI (ввод данных из порта РА). На рис. 6.28 показана схема соединения устройства ввода (Увв), PPI и МП в этом режиме.
В режиме 1 для порта А и при условии ввода данных Увв направляет байт данных по линиям РА7-РА0 и затем записывает его сигналом строб (STB), установленным на линии РС4. По сигналу STB, кроме того, формируется сигнал IBFA на линии РС5, который указывает МП. что порт РА полон. При чтении данных из порта А микропроцессором выполняется автоматический сброс сигнала IBFA. Для разрешения прерывания используется бит D4 порта PC. Если бит D4 порта PC равен 1 и установлен сигнал IBFA, то на линии РСЗ формируется сигнал прерывания INTA, сообщающий МП, что порт РА полон. Сигнал IBFA, равный 0, указывает УВв, что оно может передавать данные в порт РА. Так достигается координация действий МП, PPI и Увв. Неиспользуемые биты D5 и D4 порта PC группы А могут быть запрограммированы для ввода или вывода битов данных.
Аналогичным образом выполняется ввод данных из порта РВ в режиме 1. На рис. 6.29 представлена схема ввода данных из РВ в режиме 1.
Программируемый периферийный интерфейс	303
						
	МП	D7-D0	PPI	РА7 - РАО	УВв	
		РС5 (IBFA)		РС4 (STB)		
		RD	►		Я установка IBFA		
		(сброс IBFA) РСЗ (INTA)				
						
		PC5(IBFA) = -Г порт РА полон L 0 - Увв может передавать данные Бит D4 порта PC разрешает прерывание				
Рис. 6.28. Схема ввода данных из РА в режиме 1						
						
	МП	D7-D0	PPI	РВ7 - РВО	УВв	
		PCI (IBFA)		РС2 (STB)		
				установка IBFB		
		(сброс IBFB) PCO(INTB)				
						
		PCI(IBFB) = -Г 1-порт РВ полон L 0 - УВв может передавать данные Бит D2 = 1 порта PC разрешает прерывание				
Рис. 6.29. Схема ввода данных из РВ в режиме 1						
Неиспользуемые биты D4 и D5 порта PC в этом режиме мотут быть употреблены для ввода или вывода битов данных.
Схема вывода данных из МП в порт РА в режиме 1 изображена на рис. 6.30.
В этом режиме МП выводит данные с указанием адреса порта РА. Запись данных в порт РА выполняется сигналом WR, по которому, кроме того, формируется на линии PC 7 сигнал OBFA, сообщающий устройству вывода (Увыв) о наличии данных на линиях РА7-РА0. Устройство Увыв принимает данные и устанавли-вает ответный квитирующий сигнал АСК (подтверждение), сбрасывающий сигнал OBFA. Высокий уровень сигнала OBFA указывает МП. что порт РА пуст и можно выводить очередной байт данных. Формирование сигнала прерывания на линии РСЗ (INTA) возможно, если установлены: бит D6 порта PC, разрешаю-
304
Периферийные интерфейсы ввода/вывода
PC7(OBFA)= -£
1 - порт РА пуст
0 - У Выв может считывать данные
Бит D6 порта PC разрешает прерывание
Рис. 6.30. Схема вывода данных из МП в порт РА в режиме 1
щий прерывание, и сигнал OBFA = 1 (порт РА пуст). Биты D4 и D5 порта PC, относящиеся к группе А. могут быть запрограммированы на ввод или вывод.
Аналогичная схема по принципу действия представлена для порта РВ (рис. 6.31).
PC1(OBFA) =
Г” 1 - порт РИ полон
L 0 - УВыв может считывать данные
Рис. 6.31. Схема вывода данных из МП в порт РВ в режиме 1
В режиме 2 используется порт А, выполняющий ввод и вывод данных, то есть доступный по записи и чтению со стороны МП (рис. 6.32), благодаря чему образуется двусторонняя шина данных.
Если порт РА использует режим 2, то порт РВ может работать в режиме 0 или режиме 1.
Адаптер последовательно-параллельного интерфейса	305
						
	МП	D7-D0	PPI	РА7-РА0	Увв/Выв	
		PC5(IBFA)		РС4 (STB)		
		РСЗ (INTA) ◄			РС7 (OBFA) * РС6 (АСК) ◄			
Рис. 6.32. Схема ввода/вывода данных в режиме 2						
6.12.	Адаптер последовательно-параллельного интерфейса
Адаптер содержит две основные микросхемы: 18255 (PPI) и 18250 (PCI). В микросхеме PPI имеются четыре 8-битных адресуемых регистра (РА, РВ, PC и РУ), выбор которых выполняется с помощью битов адреса А1 АО. Доступ к 10 регистрам PCI (УАПП) осуществляется с учетом битов адреса A2A 1 АО и бита D7 регистра управления линией (D7 РУЛ). В табл. 6.8 представлены сигналы, необходимые для обращения к регистрам PCI: регистру делителя скорости (РДС) младшего байта (МБ) и старшего байта (СБ), регистру разрешения прерывания (РРП), регистру идентификации прерывания (РИП), регистру управления линией (РУЛ), регистру состояния линии (РСЛ) и регистру состояния модема (РСМ).
Таблица 6.8							
Аг	А.	Ар	□7РУЛ	-RD	-WR	Доступ	Обозначение
0	0	0	0			0	_ 1	2JV		РПЕР		
0	0	0	0			1	_ 0	R		РПР		
0	0	0	J			0	_ J	_JW		РДС (МБ)		
0	0	1	1			0	J	W	РДС (СБ)	_
0	0	1	0			0	_ J		W			РРП		
0	1	0	*	1	_ 0	R			РИП		
0	1	1	*	0	_ 1	W			РУЛ		
1	0	0	*	0	_ 1	2 vv			РУМ		
1	0	1	*	1	_ 0	R		РСЛ		
1	1	0	★	1	_ 0_	R			РСМ		
Примечание *-не используется.							
В соответствии с табл. 6.8 выбирается из резерва базовый (начальный) адрес 220h PCI (УАПП). Для доступа к любому из 10 регистров PCI достаточен адресный диапазон 22 Oh-226h. Поэтому с целью выбора одного из четырех регистров PCI используются адреса 228h-22Bh, то есть 228h является базовым адресом PPI.
306
Периферийные интерфейсы ввода/вывода
Таким образом, общими для всех портов являются адреса SA9-SA4, которые с учетом сигнала AEN и определяют сигнал выбор адаптера (SEL). Бит адреса SA3 используется для выбора микросхемы 18255 (SA3=1) или микросхемы 18250 (SA3=0). На рис. 6.33 изображена структурная схема адаптера последовательно-параллельного интерфейса.
В структурной схеме адаптера для связи микросхемы 18255 с периферией применяется приемопередатчик типа ИП6, входы/выходы DB которого подключаются к шине управления/данные (ШУ/Д). Для реализации интерфейса RS-232 микросхемы 18250 используются драйверы К170АП и приемники К170УП2.
6.13.	Адаптер ISA/ИРПР
Рассмотрим принцип построения адаптера ISA/ИРПР, особенностью которого является то, что в качестве дешифратора ДшУС используется ПЗУ и предусматривается возможность подключения одного из нескольких ПУ, каждое из кото
Адаптер ISA/ИРПР	307
рых может быть источником и приемником информации, источником или приемником. Основное внимание здесь будет уделено вопросам синхронизации двунаправленной передачи данных между процессором и ПУ через адаптер ISA/ИРПР. Связь ПУ с адаптером выполняется с помощью интерфейса радиального параллельного (ИРПР). Адаптер осуществляет режим программного обмена данными через прерывание или опрос флага готовности. Общая схема связи ПУ, адаптера (АДП) и шины ISA показана на рис. 6.34.
Шина ISA АДП	ПУ
Рис. 6.34. Общая схема связи ПУ, АДП и шины ISA
Адаптер содержит две основные части: приемник (Пр) и источник (Ис). Приемник выполняет чтение данных из ВУ и ввод данных в процессор, а источник -вывод данных из процессора и запись их в приемник ВУ.
Из схемы видно, что источник (приемник) может быть как в адаптере, так и в ВУ. Местонахождение приемника (источника) определяется режимом ввода или вывода. Как уже отмечалось, ПУ подключается к адаптеру через интерфейс ИРПР.
Интерфейс ИРПР имеет следующие основные сигналы:
SC-AL и SC-SL - стробы источника при вводе и выводе соответственно;
AC-AL и AC-SL- запрос приемника при вводе и выводе соответственно;
A0-AL и A0-SL- готовность приемника при вводе и выводе соответственно;
D7-AL.. .D0-AL - данные ввода;
D7-SL.. .D0-SL - данные вывода.
В обозначениях сигналов буква А указывает на режим ввода сигнала, а буква L- на активный низкий уровень, S - на режим вывода. С учетом обозначений сигналов схема связи ПУ и контроллера имеет вид, представленный на рис. 6.35.
Принцип действия ИРПР прост: при наличии сигнала готовности приемник Пр устанавливает сигнал запроса, а источник Ис отвечает передачей данных (Д) и с некоторой задержкой сигналом строб записи.
Адаптер содержит четыре адресуемых регистра, с помощью которых процессор обменивается данными с ПУ. Эти регистры имеют следующие обозначения:
•	2-битный регистр управления/состояния ввода (РУ/С Вв);
•	8-битный регистр данных ввода (РД Вв);
•	2-битный регистр управления/состояния вывода (РУ/С Выв);
•	8-битный регистр данных вывода (РД Выв).
С целью упрощения рисунков РУ/С взяты двухбитными.
308
Периферийные интерфейсы ввода/вывода
	АДП		ПУ	
	Пр (Ввод) Ис (Вывод)	SO-AL (ГОТ) AC-AL (ЗАП) D7-AL...D0-AL ” SC-AL (СТР) AO-SL (ГОТ) AC-SL (ЗАП) *	D7-SL...D0-SL SC-SL (СТР)	Ис (Чтение) Пр (Запись)	
				
Рис. 6.35. Схема связи ПУ и АДП				
Выбор соответствующего регистра в адаптере определяется индексом (последней 16-ричной цифрой адреса).
В табл. 6.9 представлены индексы и тип доступа соответствующих портов.
Таблица 6.9
Порт	Индекс (h)	Доступ	Сигналы ДшУС
РДВв	0	R	IN0
РД Выв	1	W	0UT1
РУ/С Вв	2	W/R	OUT2/IN2
РУ/С Выв	3	W/R	OUT3/IN3
Примечание: IN	- ввод, OUT - вывод		
Полный адрес порта ПУ, например РД Вв, равен 220h. К адаптеру может быть подключено одно из трех различных ПУ, базовые адреса которых 220h, 230h и 240h. Выбор заданного ПУ осуществляется с помощью перемычек и наборного поля, находящихся в дешифраторе ДшА, который будет рассмотрен ниже.
Форматы регистров РУ/С Вв и РУ/С Выв представлены на рис. 6.36.
Бит D1 РУ/С Вв (Выв) устанавливается (Уст) ПУ, и на выходе триггера формируется сигнал флаг готовности (ФГ) Вв (Выв), а бит D0 - процессором (П), и на выходе триггера формируется сигнал разрешения прерывания (РП) Вв (Выв).
Адаптер ISA/ИРПР	309
Если выполняется вывод данных, то сброс флага ФГВыв осуществляется при записи данных в РД Выв, и наоборот, если производится ввод данных, то сброс ФГ Вв выполняется при чтении данных из регистра РД Вв.
Структурная схема контроллера изображена на рис. 6.37.
Рис. 6.37. Структурная схема адаптера ISA/ИРПР
Дешифратор ДшА предназначен для декодирования адреса ПУ, подключенного к адаптеру. Дешифратор ДшА принимает старшую часть адреса и формирует на выходе сигнал SEL (выбор ПУ). Младшие биты адреса SA1 и SA0 используются для выбора одного из четырех регистров (портов). Дешифратор ДшУС вырабатывает следующие сигналы в соответствии с табл. 6.9:
• чтение РД Вв (IN0);
• запись в РД Выв (OUT1);
• запись в РУ/С Вв (OUT2);
• чтение РУ/С Вв (IN2);
• запись в РУ/С Выв (OUT3);
• чтение РУ/С Выв (IN3);
• общее чтение (IN).
Сигнал IN формируется, если вырабатывается INO. IN2 или IN3. Устройство ввода/вывода (УВВ) содержит четыре адресуемых регистра, с помощью которых процессор обменивается данными с ПУ.
Двоичный эквивалент старшей части адреса показан на рис. 6.38, где символом * * обозначены изменяемые биты базовых адресов (220h, 230h и 240h).
310
Периферийные интерфейсы ввода/вывода
AEN А9 А8 А7 А6 А5 А4 АЗ А2 0	10	0***00
Рис. 6.38. Двоичный эквивалент старшей части адреса
Схема дешифратора ДшА представлена на рис. 6.39 и позволяет с помощью перемычек задать базовый адрес одного из трех ПУ.
5в
SA0
SA1
IOR iow
А1
А2
SEL
АО PROM о 1 2 3 4 5 6 7
АЗ
А4
IN0 OUT1 JDUT2
IN2 OUT3
IN3 IN
R R
R
Е
Рис. 6.39. Схема дешифратора адреса ДшА
Схема дешифратора ДшА, изображенная на рис. 6.39, настроена на базовый адрес 230h.
На рис. 6.40 показанасхема дешифратора управляющих сигналов ДшУС, реализованная на базе ППЗУ емкостью 32x8.
Схема дешифратора ДшУС функционирует в соответствии с табл. 6.10.
При построении УВВ используется в качестве приемопередатчика микросхема 559ИПЗ, имеющая 4-битовые входы (DI), 4-битовые выходы (DO) и 4-битовые инверсные буферизированные входы/выходы (DB). Микросхема 559ИПЗ обладает следующими параметрами: для DB входной ток низкого уровня 2 мА и выходной ток низкого уровня 70 мА; для DO выходной ток низкого уровня 16 мА; время задержки t3 ср < 35 нс. На рис. 6.41 показана принципиальная схема микросхемы 559ИПЗ без изображения номеров выводов.
Входы/выходы DB обычно подключаются к соответствующим линиям шины данных системного интерфейса, входы DI - к выходам регистра РВв, а выходы DO - ко входам регистра РВыв. Для байтовой передачи данных необходимо использовать две микросхемы 559ИПЗ. На рис. 6.42 представлена структурная схема УВВ.
Установка (сброс) триггеров РУ/С Вв и РУ/С Выв рассматривается отдельно в схеме управления вводом. Структурная схема содержит два приемопередатчика BD 1 и BD2 (две микросхемы 559ИПЗ). Старшие биты D7-D4 РД Вв подклю-
Адаптер ISA/ИРПР	311
Рис. 6.40. Схема дешифратора ДшУС
Таблица 6.10														
Входы PROM						Выходы PROM								Операция
-Е	А4	АЗ	А2	А1	АО	7	6	5	4	3	2	1	0	
0	0	1	0	0	0	1	0	1	1	1	1	1	0	IN0
0	0	0	1	0	1	1	1	1	1	1	1	0	1	0UT1
0	0	0	1	1	0	1	1	1	1	1	0	1	1	0UT2
0	0	1	0	1	0	1	0	1	1	0	1	1	1	IN2
0	0	0	1	1	1	1	1	1	0	1	1	1	1	0UT3
0	0	1	0	1	1	1	0	0	1	1	1	1	1	IN3
312
Периферийные интерфейсы ввода/вывода
Рис. 6.42. Структурная схема УВВ
чены ко входу DI BD1 и передаются на линии SD7-SD4 шины ISA по сигналу ДшУС INO (чтение данных РД Вв).
Младшие биты D3-D0 РД Вв поступают на входы комбинированного мультиплексора (КМ), к которому присоединены также выходы регистров РУ/С Вв и РУ/С Выв. Управление коммутацией входов и выходов КМ выполняют сигналы SAI, SAO, INO и IN. Кроме того, входы DI подключаются ко входам/выходам DB в приемопередатчике BD2 сигналом общего чтения IN, так как через BD2 в различные моменты времени вводится в процессор содержимое РУ/С Вв, РУ/С Выв или младшие биты РД Вв. Из ПУ данные передаются по линиям D7-AL...D0-AL через триггеры Шмитта (ST7-ST0) на входы РД Вв и записываются в него сигналом строб записи (SC-AL) ИРПР.
Триггеры Шмитта имеют разные пороги включения и выключения и повышают помехоустойчивость схемы. При выводе данных из процессора они передаются по следующей схеме: SD7-SD0 -> DB (BD) -ч> DO (BD) -ч> РД Выв. Запись данных в РД Выв осуществляется сигналом OUT1, сформированным на соответствующем выходе ДшУС. С выходов РД Выв его содержимое передается с помощью передатчиков (Пер) по линиям D7-SL.. .DO-SL ИРПР в ПУ. Схема КМ изображена на рис. 6.43.
При чтении содержимого регистра РДВв по сигналу INO дешифратора ДшУС биты D2 и D3 через элементы И, а биты D1 и DO через коммутатор КМ поступают на входы DI микросхемы приемопередатчика 559ИПЗ (BD2). Управление коммутацией входов и выходов КП2 выполняют адресные биты SA1 и SAO (00) и сигнал общего чтения IN, комбинация которых в данном случае соответствует сигналу IN0.
Функциональная схема управления вводом, построенная на базе регистра РУ/С Вв, представлена на рис. 6.44.
Триггер разрешения прерывания (ТРП) устанавливается со стороны процессора с передачей бита данных по линии DO(O), где DO обозначает выход BD2,
314
Периферийные интерфейсы ввода/вывода
a (О) - соответствующий его вывод (рис. 6.43). Запись этого бита данных выполняется сигналом OUT2, который формируется на соответствующем выходе дешифратора ДшУ С (табл. 6.9).
Ввод данных из ПУ в процессор осуществляется по принципу запрос-ответ с помощью сигналов AC-AL (запрос приемника) и SC-AL (строб источника). В исходном состоянии сигнал SC-AL имеет пассивный высокий уровень сигнала, и поэтому триггер ТФГ находится в единичном состоянии. Адаптер, являющийся приемником, устанавливает AC-AL (Зап Пр) низким активным уровнем, в ответ на который ПУ (источник информации) выдает байт данных на линии D7-AL...DO-AL и с задержкой устанавливает SC-AL (строб записи). Строб SC-AL записывает байт данных в регистр РД Вв (см. рис. 6.38). и одновременно формируется сигнал флаг готовности ФГ Вв (D1) (см. рис. 6.40). Затем процессор путем опроса флага готовности (чтения триггера ТФГ Вв) или в режиме прерывания (установлены триггеры ТРП, ТФГ Вв и перемычка) IRQ 10 осуществляет чтение содержимого РД Вв по сигналу ДшУС IN0. Этим же сигналом IN0 производится сброс триггера ТФГ Вв (снимается AC-AL и IRQ 10 (в режиме прерывания)). В ответ на сброс AC-AL ПУ снимает сигнал SC-AL. в результате чего триггер ТФГ Вв устанавливается в единичное состояние и на его выходе вновь формируется AC-AL (Зап Пр). В случае неготовности ПУ (источника информации) сигнал SC-AL имеет высокий пассивный уровень, триггер ТФГ находится в нулевом состоянии и сигнал AC-AL на выходе триггера ТФГ Вв не вырабатывается. Рассмотренная последовательность действий процессора (П), адаптера (АДП) и ПУ при вводе данных показана на рис. 6.45.
На рис. 6.46 изображена функциональная схема управления выводом.
Вывод данных производится также по принципу запрос-ответ с помощью сигналов AC-SL (Зап Пр) и SC-SL (Стр Ис). В этом режиме КОН является источником (Ис) информации, а ПУ - приемником (Пр). В исходном состоянии сигнал SC-SL (Стр Ис), формируемый КОН, имеет высокий пассивный уровень, так как триггер
П	ДОП	ПУ(Ис)
(Пр) SC-AL=1
* SO-AL=O Уст AC-AL в ”0"
Уст Дна D7-AL..D0-AL
Уст SC-AL в "О"
•Уст ТФГ Вв ПРЕР (опрос ФГ)
•
• Форм IN0
Уст Д на SD7-SD0	ТТ D
• Сбр ТФГ Вв СбрАС-ALB’T
C6pSC-ALB* *T
Рис. 6.45. Последовательность действий при вводе данных процессора П АДП(Пр) и ПУ(Ис)
Тестирование последовательного порта (УАПП)
315
ТФГ Выв находится в нулевом состоянии. При необходимости приема данных ПУ (Пр) устанавливает сигналы AC-SL (Зап Пр) и AO-SL (1Ът Пр) активными низкими уровнями. Триггер ТФГ Выв сохраняет нулевое состояние, и поэтому на выходе элемента И формируется сигнал ФГ Выв (D1) высокого активного уровня.
Процессор в режиме прерывания (установлен триггер разрешения прерывания ТРП Выв) или по опросу флага готовности (чтения значения ФГ Выв (D1)) выполняет запись данных в РД Выв по сигналу OUT1, формируемому дешифратором ДшУС. Этим же сигналом устанавливается триггер ТФГ Выв. При этом после снятия сигнала OUT1 формируется сигнал SC-SL (Стр Ис) низкого активного уровня и сбрасывается сигнал IRQ11 (в режиме прерывания). Как только данные записаны в РД Выв, то они появляются на шине D7-SL...D0-SL интерфейса ИРПР. ПУ, получив сигнал SC-SL (Стр Ис), записывает данные и сбрасывает AC-SL (Зап Пр). В ответ на сброс AC-SL адаптер снимает SC-SL. После завершения цикла обработки байта данных ПУ устанавливает вновь сигнал AC-SL (Зап Пр), если сброшен сигнал SC-SL (SC-SL имеет высокий уровень). Последовательность действий при выводе данных процессора П, АДП (Ис) и ПУ (Пр) показана на рис. 6.47.
6.14.	Тестирование последовательного порта (УАПП)
Формулировка задания
Исследовать режим тестирования последовательного порта (СОМ). Необходимо написать программу на ассемблере, выполняющую инициализацию универсального асинхронного приемопередатчика (УАПП), на базе которого реали-
316	Периферийные интерфейсы ввода/вывода
П	АДП (Ис)	ПУ (Пр)
Уст AC-SL в "О"
♦	Уст ТФГ Выв
Прер (опрос ФГ)
Уст Д на SD7-SD0 ♦
♦	Форм OUT1
Уст Дна D7-SL...D0-SL ♦
♦	Сбр OUT1 (Уст SC-SL)
Сбр AC-SL
♦
Сбр SC-SL ♦
Рис. 6.47. Последовательность действий при выводе данных процессора П, ДДП(Ис) и ПУ (Пр)
зуется последовательный порт с интерфейсом RS-232, передачу данных в УАПП и прием этих же данных из УАПП.
Режим тестирования задается замыканием выхода передатчика УАПП на вход его приемника путем установки бита D4 регистра управления модемом, имеющего адрес 3FCh. Инициализация УАПП заключается в программировании скорости передачи данных и протокола обмена. Выполнив ввод содержимого порта 3FBh (регистра управления линией), программа может получить текущий режим УАПП. Для установки нового режима (числа бит данных, количества стоповых бит, типа принтера) необходимо изменить нужные поля и записать новый байт режима в порт 3FBh.
Если надо задавать новое значение скорости обмена данными, то перед записью байта режима следует установить его бит D7 в единичное состояние. Затем двумя последовательными командами вывода выполняется загрузка делителя частоты тактового генератора. При этом младший байт делителя скорости записывается в порт 3F8h, а старший байт - в порт 3F9h. Перед началом работы необходимо в регистр управления прерываниями (порт 3F9h) записать нули, если программа не использует прерывания. Перед выводом данных в регистр передатчика необходимо убедиться, что этот регистр пуст, то есть передача предыдущих данных завершена. Признаком пустоты регистра передатчика является установленный бит 5 (TxRDY=l) регистра состояния линии (порт 3FDh). Данные из регистра передатчика автоматически в стартстопном формате поступают в регистр приемника, и бит О (RxRDY) порта 3FDh устанавливается в единичное состояние, с помощью которого программа определяет, что регистр приемника полон.
Исходные данные, передаваемые через последовательный порт, могут быть введены с клавиатуры с помощью программных прерываний DOS или BIOS, заданы в программе или хранятся в виде текстового файла на диске. Вывод данных на экран из регистра приемника осуществляется путем использования программных прерываний.
Тестирование последовательного порта (УАПП)
317
Основные сведения.
Асинхронная последовательная передача состоит в том, что допускаются любые промежутки времени между передаваемыми символами и используется специальный формат представления каждого символа кодовой посылки.
Этот формат содержит: стартовый бит, необходимый для самосинхронизации в приемнике последовательной кодовой посылки; 5-8 информационных битов; необязательный бит паритета (чет или нечет) и 1, 1,5, 2 стоповых бита, служащих для разделения кодовых посылок друг от друга.
Асинхронная передача допускает некоторую рассинхронизацию (рассогласование) частот передатчика и приемника в пределах длительности бита, что является крайне не допустимым при синхронной передаче. Последовательная кодовая посылка по линии интерфейса RS-232 передается биполярными сигналами. Логическая единица представляется сигналами низкого уровня (-3...-12 В), а логический нуль - сигналом высокого уровня (+3... + 12 В).
Если нет передачи данных, то на линии установлен сигнал высокого уровня, то есть линия отмечена (marking). Линия считается пустой (spasing) при наличии на ней низкого уровня.
При инициализации (открытии) порта коммуникации устанавливаются все его параметры. Эти параметры включают в себя длину слова, число стоп-битов, установку четности и скорости обмена. Длина слова - это число битов, которое образует основную единицу данных. Хотя привычно работать с порциями по 8 битов, но для стандартных файлов ASCH (в которых все символы имеют коды, не превышающие ASCH 128) достаточно 7 битов, а для передачи численных данных - всего 4 бита.
В соств ПК могут входить до четырех последовательных портов COM 1-СОМ4, имеющих интерфейс RS-232.
Этим портам выделены следующие адреса:
СОМ 1: 3F8h-3FFh	COM3: 338h-33Fh
COM2: 2F8h-2FFh	COM4: 238h-23Fh
COMI вызывает прерывание IRQ4 (Int OCh), a COM2 - прерывание IRQ3 (Int OBh). COM3 и COM4 не имеют стандартных векторов прерываний.
Каждый последовательный порт содержит УАПП (Универсальный асинхронный приемопередатчик), используемый в ПК (модеме) для передачи и приема последовательных кодовых посылок стартстопового формата. В ПК применяются в качестве УАПП различные микросхемы, например 8250, NS16450. Для приема данных, поступающих со скоростью 38400 бит/с, в ПК устанавливают УАПП с буфером данных, например NS 16550А. Последовательный порт, реализуемый на базе УАПП, содержит 25- или 9-штырьковый разъем на задней стенке корпуса ПК. Этот разъем может использоваться для подключения мыши, графопостроителя или организации связи между ПК. Контакты RS-232 имеют следующие наименования, приведенные в табл. 6.11.
В УАПП можно задать следующие параметры обмена: количество битов данных и стоп-битов, вид четности и скорость обмена в бодах (бит/с).
Ниже описаны порты ввода/вывода для СОМ] (табл. 6.12), имеющего базовый адрес 3F8h. Порты 3F8h и 3F9h имеют разное назначение в зависимости от бита 7 порта 3F8h (бита DLAB - Divisor Latch Access Bit).
Значения байтов, инициализирующих скорости обмена данными, представлены в табл. 6.13.
318	Периферийные интерфейсы ввода/вывода
Таблица 6.11					
Название сигнала	Номер цепи CCITT	Номер контакта		Назначение	Направление
		9-шт	25-шт		
DCD	109	1	8	Связь модемов установлена	ВПК
RxD	104	2	3	Принимаемые данные	ВПК
TxD	103	3	2	Передаваемые данные	из ПК
DTR	108	4	20	Готовность ПК к работе	из ПК
SG	102	5	7	Сигнальная земля	-
DSR	107	6	6	Готовность модема к работе	ВПК
RTS	105	7	4	Запрос на передачу	из ПК
CTS	106	8	5	Готовность модема к передаче	ВПК
Rl	125	9	22	Индикатор вызова	ВПК
FG	101	-	1	Защитная земля	-
Таблица 6.12		
Порт	Операция	Назначение порта
3F8h	Запись	Регистр передатчика (предназначен для вывода байта данных)
	Чтение	Регистр приемника (хранит вводимый байт данных)
	Запись	Если DLAB=1, то сюда засылается младший байт скорости обмена (см. порт 3F8h)
3F9h	Запись	Если DLAB=1, то сюда засылается старший байт скорости обмена (см. nopT3F8h). Скорость задается значением делителя, равным 115200/V, где V - скорость в бодах. Например, для скорости 9600 бод делитель равен 115200/9600 = 12 = ОСИ, поэтому нужно вывести OCh в порт 3F8h и 0 в порт 3F9h
Таблица 6.13		
Скорость обмена	ПортЗРЭИ	ПортЗРвИ
110	04h	17h
300	01h	80h
600	00h	COh
1200	00h	60h
1800	OOh	40h
2400	OOh	30h
3600	OOh	20h
4800	OOh	18h
9600	OOh	OCh
Регистр управления прерываниями (порт 3F9h) доступен по записи и имеет следующий формат:
Тестирование последовательного порта (УАПП)	319
76543210 _
|о|о|о|о| Vl I I Б“™:
'— 0: I =прерывание по приему символа ।--- 1: 1=прсрыванис по завершению передачи символа
-------2: 1 прерывание по обрыву линии или ошибке в линии --------3: 1=прерывание по изменению состояния модема (любой из линий CTS, DSR, RI и DCD)
Регистр идентификации прерывания (порт 3FAh) доступен по чтению и имеет следующий формат:
7 6 5 4 3 2 1 0
|0|0|0|0|0|
Биты
0: Оесть отложенные прерывания
1-2: причина прерывания:
11=ошибка или обрыв линии; сбрасывается
чтением регистра состояния линии
(порт 3FDh);
10=принят символ; сбрасывается
чтением приемника (порт 3F8h);
01=передан символ; сбрасывается записью
символа в регистр передатчика (порт 3F8h);
ООизменение состояния модема
(линий CTS, DSR, RI и DCD); сбрасывается чтением регистра состояния модема (порт 3FEh);
Регистр состояния модема (порт 3FEh) доступен по чтению, биты (0-3) содержат следующий формат:
Биты:
0:	1 изменилось состояние линии CTS
1:	1 ^изменилось состояние линии DSR
2:	1=изменилось состояние линии R1
3:	1=изменилось состояние линии DCD
4:	состояние линии CTS
5:	состояние линии DSR
6:	состояние линии R1
7:	состояние линии DCD
Регистр управления линией (порт 3FBh) доступен по записи, значения битов которого могут быть следующие:
320	Периферийные интерфейсы ввода/вывода
7 6 5 4 3 2 1 0
I I I I I I Г~П Биты:
— О-1:	число битов данных: 00=5, 01 -6,
10=7, 118
-------2:	число стоп-битов: 0=1. I = 1.5 при 5
битах данных и 2 в противном случае -----------3-4:	тип четности: Х0=нет, 01=нечетная, 11=четная.
---------------5:	установка четности
0=отмена постоянной четности,
зависит от битов 3-4:
01 -бит четности всегда 1
11 -бит четности всегда 0 ХО-без бита четности
6:	1 -нммитнровать обрыв линии
(посылка нулей)
7:	бит DLAB:
1=норты 3F8h и 3F9h для за1рузкн
скорости обмена:
0=порты 3F8h и 3F9h в обычном режиме
Регистр управления модемом (порт 3FCh) работает в режиме записи, распределение битов которого следующее:
7 6 5 4 3 2 1 0
|о|о|о| I	1~Т~~I Биты:
L 0:	1 -установить выход DTR
।--- 1:	1 ^установить выход DTR
-----2:	1=установить OUT1 (неиспользуется)
---------3:	1-установить OUT2
(разрешить прерывания от RS-232)
------------4:	1 диагностический режим
(посылать выход на вход стыка)
Регистр состояния линии (порт 3FDh) доступен по чтению и имеет следующий формат:
Для подготовки УАПП к работе необходимо выполнить следующие действия:
•	установить бит DLAB порта 3F8h и загрузить делитель, задающий скорость обмена, в порты 3F8h и 3F9h;
•	инициализировать регистр управления линией (порт 3FBh), при этом сбросить бит DLAB;
•	инициализировать регистр управления модемом (порт 3FCh);
•	инициализировать регистр управления прерываниями (порт 3F9h).
В рассматриваемом контрольном задании вначале программа должна осуществить инициализацию (настройку) УАПП в соответствии с вариантом задания. Для реализации этой цели в регистре управления линией (3FBh) задается длина данных (5-8), число стоповых бит (1; 1,5, 2), тип паритета (чет или нечет) и доступ к другим регистрам (бит D7-DLAB). В регистре управления модемом (3FCh) устанавливается бит D4 в единичное состояние, что позволяет в УАПП замкнуть выход передатчика (TkD) на вход его приемника (RxD). Скорость передачи данных программируется путем занесения младшего байта и старшего байта делителя в следующие порты: 3F8h (DLAB=1) и 3F9h (DLAB=1). Кроме того, запреща-
Пример выполнения варианта задания	321
ется прерывание по приему и передаче символа, то есть выполняется сброс регистра управления прерываниями (3F9h, DLAB = О).
После этого программа реализует передачу данных, вводимых, например, с помощью клавиатуры путем использования соответствующего программного прерывания DOS или BIOS. Введенный символ загружается в регистр передатчика УАПП (порт 3F8h), если бит D5 (готовность передатчика) регистра состояния линии (3FDh) равен 1, то есть регистр передатчика пуст. Затем автоматически выполняется передача последовательной кодовой посылки с выхода передатчика УАПП на вход его приемника. Программа в цикле опрашивает бит DO (готовности приемника) регистра состояния линии (3FDh). Если этот бит DO равен 1, то это указывает на то, что регистр приемника полон и можно выводить символ на экран дисплея, используя соответствующее программное прерывание DOS или BIOS.
Более сложный вариант контрольного задания должен учитывать создание интерфейса пользователя: выбор скорости передачи данных из заданного набора, длину данных, число стоповых битов и т. д.
6.15.	Пример выполнения варианта задания
Скорость передачи данных - 600 бит/с.
Число битов данных - 8.
Бит паритета отсутствует.
Количество стоповых бит - 1.
Данные вводятся с помощью клавиатуры путем использования программного прерывания intl6h и выводятся на экран с помощью программного прерывания inti Oh. Выход из программы по ESC.
Code Segment assume cs:code,ds:code org lOOh
Start:	call cirscr
lea dx, greet call print call initcoml call initrg call work jmp exit ;-----------Инициализация COMI
Initcoml Proc			
mov	ax,	40h	;ES указывает на область данных BIOS
mov	es,	ax	
mov	dx,	es: [0]	/получаем базовый адрес СОМ1
add	dx,	3	/регистр контроля линии
mov	al,	10000000b	/устанавливаем бит 7
		out dx, al	
dec	dx		/старший байт делителя
dec	dx		/скорости обмена
mov	al,	0	/старший байт для 600 бод
out	dx,	al	
322
Периферийные интерфейсы ввода/вывода
dec dx
mov al, OCOh out dx, al ret
/младший байт для 600 бод
Initcoml Endp
;------ Инициализация регистра контроля линии
Initrg	Proc	
	add dx, 3	/указываем на регистр контроля линии
	mov al, 00000000b	/чистим al
	or al, 00000011b	/длина символа — 8 бит
	or al, 00000000b	/1 стоп-бит
	or al, 00000000b out dx, al	/не генерировать бит четности
	inc dx	/регистр управления модема
	mov al, lOh out dx, al	/замыкание выхода на вход
	sub dx, 3	/регистр разрешения прерываний
	mov al, 0 out dx, al ret	/прерывания запрещены
Initrg	Endp	
f	Проверка готовности COMI	
Check	Proc	
Try:	mov dx, es:[0] add dx, 5 in al, dx test al, lEh jz mO lea dx, error call print jmp exit	
mO:	test al, Olh jnz m4 test al, 20h jz try ret	
Check	Endp	
f		 Работа c	портом
Work	Proc	
m4 :	mov ah, 0 int 16h push ax push ax	/ввод символа
	mov dx, es:[0]	/извлечение адреса СОМ1
	add dx, 5 mov ex, 10	/регистр статуса линии
ml:	in al, dx	
	test al, 20h jz m2 loop ml	/готов к приему данных?
Пример выполнения варианта задания
323
m2 :	sub dx, 5	/регистр хранения данных
	pop ax	/занести передаваемый байт
	out dx, al	
	add dx, 5	/регистр статуса линии
m3:	in al, dx	/данные приняты ?
test al,l
Work	j z m3 sub dx, in al, mov ah, int lOh pop ax cmp al, jne m4 ret Endp	5 dx OEh lBh	/регистр хранения данных /прочитать принятые данные /вывести символ на экран /проверить на нажатие ESC
Print	Proc		
	mov ah,	9	
	int 21h		
Print f	ret	Endp Очистка	экрана 	
Cirscr	Proc
mov	ax,	619h
mov	bh,	07
mov	ex,	0
mov	dx,	184fh
int	lOh	
ret		
Cirscr	Endp
;---------------Выход
Exit: lea dx, finish call print mov ax, 4c00h
int 21h
/	Данные 	
Greet db ’	Практическое задание	’, ODh, OAh
db Тестирование последовательного порта'", ODh, OAh
db ’	’, ODh, OAh
db ’ работу выполнили:	’, ODh, OAh
db ’	’, ODh, OAh
db ’	’, ODh, OAh
db 1	’, ODh, OAh
db ’	’, ODh, OAh
db ’	’, ODh, OAh
db ’	Для выхода нажмите ESC	’, ODh, OAh, ’ $
Error db ’	Ошибка порта COMI	’,7, ODh, OAh, ’$’
Finish	db ODh, OAh, 7,'$'
Code Ends
End	Start
324
Периферийные интерфейсы ввода/вывода
6.16.	Варианты заданий
На рис. 6.48 показан функциональный граф, определяющий варианты заданий.
Первый уровень (уровень скорости обмена 9600-110 бит/с) определяет скорость обмена (байты делителя скорости), а второй уровень - число битов данных в последовательной кодовой посылке (5-8).
Третий уровень соответствует типу контроля, применяемого в УАПП. Вершина 31 определяет контроль четности, вершина 32 - нечетности, и вершина 33 -отсутствие бита паритета. Четвертый уровень задает число стоповых битов (1, 1,5, 2). Пятый уровень указывает на источник данных, которые могут быть введены с клавиатуры, храниться на диске или представлены в программе. Каждый вариант задания определяется маршрутом функционального графа, проходящим через вершину каждого уровня, например 11, 24. 31, 43. 51. В общем случае функциональный граф содержит 972 варианта заданий.
Справочное дополнение к шине RS-232
Интерфейс RS-232 - последовательный несимметричный интерфейс, линия связи -T*D или -R*D которого имеет вид, представленный на рис. 6.49.
Применение интерфейса RS-232
Интерфейс RS-232 может быть использован для сопряжения микроконтроллера (МК), содержащего встроенную схему УАПП (UART), с компьютером, имеющего порт USB, с помощью преобразователя (RS-232/USB).
На рис. 6.50 представлена схема устройства связи с объектом (УСО), в состав которой входят: аналого-цифровой преобразователь (АЦП) с мультиплексором (MX), цифроаналоговый преобразователь (ЦАП), микроконтроллер со встроенной схемой УАПП и байтовыми портами (PN, где N - номер порта) ввода/вывода. преобразователь RS-232/USB (X/Y), приемники (>), отвечающие требованиям формирования уровней сигналов RS-232.
УСО позволяет подключить аналоговые и цифровые входы/выходы к порту USB персонального компьютера (ПК) с помощью МК. МК обеспечивает обработку и формирование аналоговых и цифровых сигналов и осуществляет взаимодействие с компьютером через преобразователь RS/USB. Для сопряжения интерфейса RS-232 с интерфейсом USB предлагается микросхема FT8U232An компании FTDI, которая осуществляет выполнение достаточно сложного протокола шины USB. В этом случае МК может использовать специальный драйвер COM-порта (VCP_Virtual COM Port). На указанном сайте компании FTDI имеют
326
Периферийные интерфейсы ввода/вывода
ся драйверы VCR с поддержкой технологии Р&Р и без. При применении технологии Р&Р к микросхеме FT8U232An следует подключить предварительно запрограммированную память конфигурации EEPROM.
Хост USB ПК с помощью микросхемы FT8U232An управляет работой МК и получает конфигурационные параметры МК при их чтении из памяти EEPROM.
Для формирования биполярных сигналов RS-232 и преобразования их уровней имеются микросхемы (МАХ213СА1, ADM213EARS или SP213ECA) соответствующих компаний (Maxim, Analog Device или Sipex), в которых содержатся преобразователи напряжения 5 V +10VH-10V, необходимые для формирования биполярных сигналов RS-232.
Типовая принципиальная схема подключения FT8U232AM, рекомендованная изготовителем, описана в статье [Радио. - 2007. - №7. - С. 36-37].
6.17.	Интерфейс 12С
Основные определения
Мастер - ведущее устройство, устанавливающее внешние тактовые сигналы, адрес и управляющее работой шины.
Исполнитель - ведомое устройство, подключенное к шине, распознающее собственный адрес и выполняющее прием (передачу) данных из ведущего устройства (в ведущее устройство).
Передатчик - устройство, выводящее данные на шину.
Приемник - устройство, получающее данные с шины.
Синхронная последовательная передача:
1.	Последовательная передача, при которой каждый бит данных синхронизируется соответствующим тактовым сигналом. Обычно для выполнения синхронной последовательной передачи требуются линия передаваемых данных (DATA) и линия синхронизации (CLK).
2.	Работа системы управления, при которой передача данных начинается и завершается в фиксированные (определенные) моменты времени.
Асинхронная последовательная передача - передача данных в произвольные (непредсказуемые) моменты времени, но требующая наличия старт-условия и стоп-условия, ограничивающих передаваемые данные. Эти условия могут быть представлены в различных формах, например в микросхеме УАПП (разделы 6.2 и 6.8) формирование стартстопных битов в последовательной кодовой посылке данных или в шине ПС определенная комбинация уровней сигналов на линиях CLK и DATA.
Синхронно-асинхронная (комбинированная) последовательная передача, характеризующаяся одновременно передачей данных и тактовых сигналов в произвольные моменты времени (наличием старт стопных условий).
Выход с открытым коллектором (открытым стоком) - выход, работающий в режиме ключа (открыт/закрыт), формирующий активный низкий уровень (инверсная логика) и требующий применения подтягивающего резистора для получения высокого пассивного уровня. Выходы с открытым коллектором (стоком) можно объединять для получения «монтажного ИЛИ». При инверсной (отрицательной) логике логическая 1 бита данных на шине представляется низким уровнем, а логический 0 - высоким.
Квитирование - управляющее сообщение или сигнал, выдаваемые в ответ на принятые данные. Цель квитирования - подтвердить принятые данные.
Интерфейс l2C
327
Порт:
1. Место (разъем) подключения периферийного устройства к системе, например последовательный порт I2C, USB и т. д.
2. Интерфейс сопряжения процессора с адресуемым регистром, триггером, формирователем шины и т. д.
Шина 12С - шина взаимодействия периферийных устройств. Шина 12С - это последовательна двухпроводная синхронно-асинхронная шина с двухсторонней (полудуплексной) передачей блоков данных и инверсной (отрицательной) логикой представления битов данных (рис. 6.51).
тактовых сигналов
Рис. 6.51. Схема связи устройств с помощью шины 12С
Каждое устройство, подключенное к шине, может быть мастером (ведущим устройством), исполнителем (ведомым устройством) или мастером/исполнителем. Мастер последовательно передает бит за битом адрес исполнителя и бит режима, определяющий операцию запись или чтение. Исполнитель опознает свой адрес и в зависимости от бита режима принимает или последовательно передает байты данных. Биты адреса, режима и данных, входящие в информационный блок, передаются по линии данных SDA и соответственно сопровождаются тактовыми сигналами, устанавливаемыми мастером на линии SCL. Каждый информационный блок ограничивается условиями старта и стопа.
Условие старта определяется высоким уровнем напряжения на линии SCL и отрицательным фронтом сигнала на линии SDA.
Отрицательный фронт - переход уровня сигнала с высокого на низкий.
Условие стопа характеризуется высоким уровнем напряжения на линии SCL и положительным фронтом сигнала на линии SDA.
Положительный фронт - переход уровня сигнала с низкого на высокий.
Правильность приема каждого бита адреса и байта данных отмечается установкой бита подтверждение приема АСК, который также сопровождается тактовым сигналом на линии SCL. Бит АСК формируется исполнителем или мастером, если они являются приемниками данных.
Коллизия - одновременная передача данных по линии связи двумя ведущими устройствами.
328
Периферийные интерфейсы ввода/вывода
Арбитраж - способ приоритетного доступа к шине при наличии нескольких ведущих устройств, подключенных к ней, способ разрешения конфликтных си-
туаций (коллизий) при обращении к общему ресурсу нескольких абонентов.
Функциональные признаки интерфейса ПС
Дисциплина обслуживания. Интерфейс I2C (Inter-Integrated Circuit, шина взаимодействия периферийных устройств) - последовательный интерфейс, содержащий двунаправленную линию данных SDA (Serial Data) и двунаправленную линию тактовых сигналов SCL (Serial Clock), предназначенный для связи между собой различных функциональных блоков (микроконтроллера, памяти, микропроцессора, преобразователей и т. д.) в пределах одного устройства (одной платы).
Способ передачи данных - последовательно-последовательный с учетом передачи байтов и битов.
Временное согласование - комбинированное (синхронно-асинхронное). Синхронная последовательная передача характеризуется тем, что каждый бит данных сопровождается битом синхронизации (рис. 6.52).
Асинхронная последовательная передача не отвечает строгим временным требованиям (может быть начата в любой момент времени), и для временного согласования приемника и передатчика данных используются старт- и стоп-условие (рис. 6.53).
Старт-условие определяется наличием отрицательного фронта сигнала SDA и положительным уровнем сигнала SCL. Стоп-условие соответствует, наоборот, положительному фронту сигнала SDA и положительному уровню сигнала SCL. Напомним, что в микросхеме УАПП (разделы 6.2 и 6.8) для выполнения асинхронной передачи используется стартстопный формат для каждой последовательной кодовой посылки. В рассматриваемом случае старт- и стоп-условие
Интерфейс l2C
329
применяется для всего информационного блока данных, что существенно увеличивает скорость передачи данных.
Кроме того, при передаче данных могут использоваться состояния ожидания (wait) на шине, когда сигнал SCL передатчика отсутствует (принимает низкий уровень). В этом случае передача данных временно прекращается, происходит прерывание в работе приемника и с появлением тактовых сигналов передача данных продолжается.
Старт-условие применяется для пуска синхронизатора приемного устройства, а стоп-условие сообщает ему о завершении передачи данных. Похожий метод синхронизации используют клавиатура и ее контроллер, соединенные между собой двунаправленными линиями CLK и DATA.
Структура данных - информационный блок произвольной длины, содержащий 8- или 10-битный адрес, бит режима (запись или чтение) и байты данных. Информационный блок ограничивается стартовым и стоповым условиями на шине. Форматы адресов и байта данных представлены на рис. 6.54.
Формат 7-ми битного адреса
D7 D6
DO
Адрес исполнителя
Бит R/W:
1-чтение О - запись
Формат 10-ти битного адреса
D7	D6	D5	D4	D3	D2	D1	D0
1	0 А9
Бит R/W=
1-чтение
О - запись
D7	D6	D5	D4	D3	D2	D1	DO
А7 А6 А5 А4 АЗ А2 А1 АО
Формат байта данных
D7	D6	D5	D4	D3	D2	D1	DO
Рис. 6.54. Форматы адресов и байта данных
Блок содержит произвольный объем данных и 7-битный (один байт) или 10-битный (два байта) адрес, передаваемый первым на шину.
Протокол передачи данных. Вначале шина находится в состоянии ожидания (покоя), определяемом высоким уровнем напряжения на линиях SDA и SCL.
330
Периферийные интерфейсы ввода/вывода
После этого мастер выполняет условие старта: на линии SCL сохраняется высокий уровень, а на линии SDA формируется отрицательный фронт сигнала. Затем мастер выводит биты адреса и бит режима, синхронизируя их тактовыми сигналами на линии SCL (рис. 6.55).
Мастер
Запись (вывод)
Исполнитель
1<
Ожидание: SDA=SCL=H
2i Старт: SCL=H,SDA-^ Передача 7-ми битного адреса и _________бита R/W=0__________ Подтверждение приема (АСК)
4
5, Передача байта данных Подтверждение приема (АСК)
Передача байта данных Подтверждение приема (АСК)
Ni
N+2 > Стоп: SCL=H, SDA-^F < > Ожидание: SDA=SCL=H
N+1
Примечание:
Н - высокий уровень сигнала
- отрицательный фронт сигнала ДГ - положительный фронт сигнала
6
Рис. 6.55. Протокол записи данных
Исполнитель, опознавший свой адрес, устанавливает АСК с учетом соответствующего тактового сигнала SCL (рис. 6.56).
Аналогичным образом выполняется режим чтение (ввода) данных исполнителя - с той лишь разницей, что мастер после приема каждого байта устанавливает на линии SDA сигнал АСК (рис. 6.57).
Порт ПС содержит передатчик и приемник (рис. 6.58), выполняющие соответственно преобразование параллельного кода в последовательный с дальнейшей передачей его на линии SDA и последовательного кода в параллельный при приеме его с линии SDA.
Интерфейс PC	331
УС
Сокращения: ВШД- внутренняя шина данных, PC - регистр состояния, РУ - регистр управления, БУП -блок управления портом, Пер - передатчик, Пр - приемник
Рис. 6.58. Структурная схема порта 12С
Кроме того, передатчик формирует старт/стоп-условия на шине 12С, а приемник определяет наличие старт/стоп-условия на шине. В адресуемом регистре состоянии (PC) отмечаются признаки готовности передатчика к приему байта информации (адреса или данных) с внутренней шины данных (ВШД). Готовность приемника, получившего байт данных с линии SDA, также отмечается в регистре состояния. Установленные признаки готовности (флаги) в регистре PC указывают на то, что передатчик пуст (данные выведены на линию SDA) и приемник полон (данные поступили с линии SDA). В регистре PC отмечаются тип последнего байта (адрес или данные), режим чтения/записи, заполненность буферной памяти и другие состояния порта. Регистр управления РУ предназначен для задания режима работы порта (мастер или исполнитель с указанием формата адреса (7 или 10 бит)), включения в работу порта, порядка передачи битов, выбора полярности тактового сигнала и т. д.
Блок управления порта (БУП) координирует работу всех узлов порта и формирует управляющие сигнала УС. необходимые для их функционирования.
В общем случае шина 12С может выполнять режим сопряжения нескольких мастеров (активных устройств). Для выполнения этого режима (multimaster) выполняется процедура приоритетнного доступа ведущих устройств для управления шиной с помощью арбитра. Арбитраж выполняется на шине SDA и определяется уровнями сигналов, например двух ведущих устройств на линии SDA с учетом высокого уровня сигнала SCL. Ведущее устройство, установившее низкий уровень сигнала на линии SDA, выигрывает арбитраж, если другое ведущее устройство в этот момент выдает высокий уровень на SDA при положительном
332
Периферийные интерфейсы ввода/вывода
уровне сигнала SCL. Проигравшее арбитраж ведущее устройство отключается от линии SDA. Для выполнения процедуры арбитража мастер для каждого передаваемого бита осуществляет его повторное чтение для обнаружения состояния коллизии с другим мастером-устройством, требующим шины 12С.
На рис. 6.59 представлена схема сопряжения передатчика и приемника устройств 12С.
Синхронизация работы передатчика и приемника выполняется тактовыми сигналами ТС, которые формируются в передатчике и по линии SCL передаются в приемник. Сигналы ТС являются сигналами сдвига информации, хранимой в регистре СР. Биты этой информации поступают в сдвиговый регистр СР приемника в соответствии с сигналами ТС, поступающими с линии SCL. В блоке управления БУ передатчика содержатся два двоичных 4-битных счетчика СТ21 и СТ22. Счетчик СТ21 принимает синхросигналы (СС) из генератора (ГСС) и формирует сигналы ТС (импульсы сдвигов), поступающие с выхода его старшего бита, а счетчик СТ22 подсчитывает число сигналов ТС с целью определения байта информации (счет идет до 8). Пуск БУ выполняется внешним сигналом записи в буферную память Зп БП, по которому осуществляется запись байта информации из внутренней шины ВШД в буферную память. Буферная память может содержать один, два или несколько байтовых адресуемых регистров. В пе
Интерфейс lzC
333
ре датчике, как уже отмечалось, содержатся формирователь старт/стоп-условий и драйверы (?) с открытым коллектором (открытым стоком). Вначале в приемник передается байт адреса, включающий бит режима (W/R). Семибитный адрес поступает в регистр СР и после его фиксации сравнивается с собственным уникальным адресом, хранимым в регистре РА. На выходе селектора при совпадении адресов формируется сигнал равенства, поступающий в блок управления БУ. В БУ приемника также имеется 4-битный двоичный счетчик СТ2, необходимый для подсчета числа сигналов ТС, поступающих с линии SCL.
Параметрические признаки FC
Скорость передачи данных - 100, 400 Кбит/с.
Число подключаемых устройств - 128 при 7-битном адресе.
Максимальная длина шины 12С -2 м.
Входная емкость подключаемого устройства - не более 10 пФ.
Порт последовательного интерфейса 12С содержат: однокристальный микроконтроллер PIC14000 [6], видеоконтроллеры и некоторые коммуникационные контроллеры фирмы Motorola (контроллеры семейства МРС860). Кроме того, в книге [5] представлен большой спектр устройств шины 12С: микроконтроллеры (8ХС751, 8ХС852 и др.), аналого-цифровые и цифроаналоговые преобразователи, ЭСППЗУ и т. д.
Справочное дополнение
Последовательный периферийный интерфейс SPI (Serial Peripheral Interface) - дуплексный символьно-ориентированный интерфейс, содержащий линию тактовых сигналов, линию передачи данных и линию приема данных. Иногда к шине добавляют четвертую линию для выбора исполнителя. Порт SP1 содержится в коммутационных контроллерах, сетевых устройствах, различных микросхемах АЦП, ЦАП, мультиплексорах и т. д. К шине могут быть подключены несколько устройств, работающих в режиме мастер или исполнитель. Синхронизация передатчика и приемника выполняется одной тактовой частотой.
Шина MicroLAN - последовательная двухпроводная шина, использующая линию данных и заземление, реализующая соединение типа «точка - много точек», то есть одно ведущее устройство управляет работой нескольких исполнителей с логическими адресами, имеющих идентификационные номера. К шине MicroLAN подключаются различные датчики, таймеры, блоки энергонезависимой памяти и другие устройства.
Инфракрасная линия передачи данных IrDA (Infra-Red Data Association, Ассоциация передача данных в инфракрасном диапазоне) предназначена для выполнения оптической передачи данных типа «точка-точка». Стандарт IrDA определяет работу между компьютерами и принтерами, телефонным оборудованием и т. д. С помощью беспроводной связи в инфракрасном диапазоне (850-900 нм) в пределах прямой видимости на относительно небольших расстояниях с использованием микросхемы УАПП (раздел 6.8) и специальных инфракрасных приемника и передатчика (рис. 6.60).
Беспроводная передача данных Bluetooth (ГЬлубой зуб) - с использованием радиоканала по типу «точка-точка» или «точка - много точек» применяется для соединения мобильных устройств, создания учрежденческих или домашних сетей с многоуровневым протоколом. Название Bluetooth эта передача данных получила из-за прозвища короля викингов, объединившего в свое время Данию.
334
Периферийные интерфейсы ввода/вывода
Сведодиод
Процессор (------Э УАПП
Передатчик |—i i—• 5V
Приемник |—
Фотодиод
Рис. 6.60. Инфракрасная передача данных
Разработаны различные микрочипы Bluetooth, работающие в разрешенном диапазоне (2,4-2,48 ГГц) и обеспечивающие передачу нескольких голосовых каналов на расстоянии до 100 м. Скорость передачи данных в дуплексном режиме-420 Кбит/с. Стандартом Bluetooth предусмотрена трехуровневая защита информации. В операционной системе MS Windows Whistler предусмотрена поддержка технологии Bluetooth.
Соединение типа «точка-точка» и «точка - много точек»:
- Мастер
- Исполнитель
К мастеру, управляющему каналом, может быть подключено до семи устройств. Кроме того, каждый исполнитель может принадлежать и другому каналу.
Последовательный интерфейс CAN (Control Area Network) - двухпроводной дифференциальный надежный недорогой асинхронный интерфейс, используемый в промышленности, на транспорте и энергетике для подключения 30, 110 различных узлов (абонентов). Интерфейс CAN характеризуется скоростью передачи данных I Мбит/с на расстоянии 25 м и 10 Кбит/с на расстоянии 5000 м.
Протокол CAN определяет назначение передаваемых кадров (пакетов) данных, циклический контроль CRC, подтверждение правильности приема данных и арбитраж при обнаружении коллизии на шине при наличии нескольких мастеров и т. д.
Физическая среда. Спецификация определяет протокол CAN как не зависящий от типа физической среды - это может быть дифференциальное витая пара, оптоволокно, радиоканал и т. д.
Для выполнения протокола CAN разработаны специальные микросхемы, позволяющие строить различные системы управления оборудованием.
Защита данных от ошибок. В протоколе CAN используют несколько способов обнаружения ошибок: избыточный циклический код CRC: ошибка формата (проверяется размером формата сообщения); ошибка на уровне бита (передатчик проверяет свой сигнал на шине); ошибка подтверждения (приемник не подтвердил принятого сообщения) и ошибка битстаффинга.
Последовательный интерфейс CIA-485 (RS-485)
335
Стаффинг - вставка дополнительного бита после пяти подряд идущих одинаковых бит (5 нулей или 5 единиц). Стаффинг также используется в шине USB: после 6 единиц вставляется нуль, чтобы вызвать переключение дифференциального сигнала.
Структура данных. Информационное поле кадра, передаваемого CAN-узлом, содержит до 8 байтов данных, поле начала кадра (Start of Frame) и конца кадра (End of Frame), управляющее поле (Control Field), поле циклического избыточного кода (CRC Field) и поле подтверждения (АСК Field). Как уже отмечалось, в CAN-сообщении не указывается явно адрес получателя, а каждый приемник сам определяет полезность (нужность) полученного сообщения (при этом все узлы, подключенные к шине, принимают это сообщение). Известны несколько типов кадров, имеющих определенное функциональное назначение и передаваемых по этой шине CAN. Тйп кадра задается в его управляющем поле.
6.18. Последовательный интерфейс EIA-485 (RS-485)
Основные определения
Дифференциальная передача - передача с использованием специальных дифференциальных передатчика и приемника, связанных парой скрученных проводов, по которым одновременно передаются разнополярные сигналы, один из которых является входным сигналом, а другой - его дополнением (инверсией). Дифференциальный приемник устраняет синфазные помехи, наводимые в проводах, что существенно повышает помехоустойчивость дифференциальной передачи, устойчивой к шумам.
Синфазная помеха - униполярная помеха, сигнал которой воздействует одинаковым образом на оба входа D+ и D- дифференциального приемника и не проходит на его выход (устраняется).
Несимметричная дифференциальная передача (рис. 6.61) использует только один провод для передачи данных, а другим является общий провод («земля»).
Симметричная дифференциальная передача выполняется по двум разнополярным проводам D+ и D-, хотя общий повод («земля») используется, но он не участвует в передаче сигналов данных (рис. 6.62).
Симметричный дифференциальный интерфейс обладает лучшей помехозащищенностью. чем несимметричные интерфейсы. Интерфейс RS-422 определяет однонаправленную (симплексную) передачу, причем передатчик может быть подключен к 10 приемникам.
Интерфейс RS-485 является последовательным дифференциальным симметричным интерфейсом с двунаправленной (полудуплексной) передачей данных и обеспечивает подключение до 32 приемников с целью реализации различных шинных конфигураций (рис. 6.63).
Состояние логической единицы (Mark) - напряжение на выходе D- является отрицательным по отношению к напряжению на выходе D+.
Состояние логического нуля (Space) - напряжение на выходе D- является положительным по отношению к напряжению на выходе D+.
Между проводами D+ и D- имеется разность потенциалов. Если она положительная, то это соответствует логической 1, а для логического О разность потенциалов D+ и D- является отрицательной (рис. 6.64).
336
Периферийные интерфейсы ввода/вывода
Передатчик	Приемник
Нессиметричный дифференциальный интерфейс RS-423
Рис. 6.61. Несимметричные интерфейсы RS-232 и RS-423
Принято считать, что если напряжение на линии D+ превышает на +200 тВ напряжение на линии D-, то приемник (R) определяет логическую 1. В том случае, если напряжение на линии меньше -200 тВ, то приемник фиксирует логический 0. Выходы D+ и D- иногда имеют обозначения соответственно А+ и В-.
Функциональная характеристика интерфейса RS-485
Дисциплина обслуживания. Интерфейс RS-485 используется в системах сбора, управления и распределения информации и выполняет передачу данных типа «точка - много точек».
Способ передачи данных - последовательно-последовательный (передача соответственно байтов и битов).
Временное согласование - асинхронное или апериодическое (используется дополнительная линия для передачи сигнала квитирования «запрос передачи» (RTS)).
Последовательный интерфейс CIA-485 (RS-485)
337
Рис. 6.64. Определение разности потенциалов
Структура данных определяется разработчиком системы и в спецификации не указывается.
Вид передачи с учетом направления - полудуплексный, хотя возможно и построение 4-проводной многоточечной сети.
Представление битов данных - дифференциальными сигналами.
Технические характеристики: максимальная скорость передачи данных 10 Мбит/с и максимальное расстояние 1200 м.
Пример подключения двух микроконтроллеров (МК) к шине RS-485 показан на рис. 6.65.
В состав оборудования МК входит универсальный асинхронный приемопередатчик (УАПП), распределенные выход TxD и вход RxD которого подключаются к приемопередатчику (преобразователю сигналов ТТЛ/КМОП в дифференциальные сигналы и наоборот). Управление приемом или передачей данных осуществляется с помощью сигналов pl.O и р.1.1 порта ввода/вывода pl микроконтроллера. В УАПП выполнятся преобразование параллельного кода
338
Периферийные интерфейсы ввода/вывода
Рис. 6.65. Сопряжение двух МК с помощью RS-485
в последовательный с выводом его на линию в старстопном формате и осуществляется обратное преобразование последовательного старстопного кода в параллельный при его приеме с линии RxD. Иногда между УАПП и приемопередатчиком выполняют гальваническую развязку с помощью оптрона.
Контрольные вопросы
1.	Определите длительность периода импульса сдвига ИС, если в УАПП использовать трехбитный счетчик Сч1 (рис. 6.13):
1) 16;	2) 24;	3) 12;	4) 8.
2.	Укажите назначение триггера стартового бита ТСБ (рис. 6.13):
1)	фиксация половины длительности стартового бита (SB) и разрешение работы счетчиков СТ1 и СТ2;
2)	сброс счетчиков СТ1 и СТ2;
3)	сброс триггера флага готовности;
4)	передача содержимого регистра на шину BD7-BD0.
3.	Назовите количество битов последовательной кодовой посылки, поступающей в сдвиговый регистр СР приемника УАПП (рис. 6.14):
1)11;	2)9;	3)8;	4)7.
4.	Если сигнал флаг готовности ФГ= 1 в регистре состояния ввода, то это определяет, что:
1)	регистр данных ввода пуст;	3) произошел разрыв линии;
2)	регистр данных ввода полон;	4) сдвиговый регистр СР пуст.
5.	Укажите устройство, устанавливающее в 1 триггер разрешение прерывания:
1)	внешнее устройство:
2)	УАПП;
3)	процессор;
4)	триггер стартового бита.
Контрольные вопросы	339
6.	Укажите назначение усилителя-приемника (формирователя), если линия RxD является линией RS-232:
1)	преобразование аналогового сигнала в уровни сигнала ТТЛ;
2)	преобразование сигналов токовой петли;
3)	преобразование биполярных сигналов в однополярные сигналы ТТЛ:
4)	в качестве элемента с 3-м состоянием.
7.	Назовите количество адресуемых регистров, которое содержит микросхема УАПП(8250):
1)6;	2)8;	3)10;	4)16.
8.	Укажите назначение бита D7(DLAB) регистра управления линией УАПП:
1)	имитировать разрыв линии;
2)	реализовать доступ к регистрам делителя скорости;
3)	установить выход DTR в 1-е состояние;
4)	выполнить режим проверки.
9.	Выберите группу значений стоповых битов, которые программируются в УАПП:
1)	1; 2; 1,5;	2) 1; 2; 3;	3) 2; 3; 4;	4) 0; 1; 2.
10.	Режим проверка (замыкание выхода передатчика на вход приемника) в УАПП задается установкой бита D4:
1)	регистра управлением модемом:
2)	регистра управления линией;
3)	регистра данных передатчика;
4)	регистра управления прерыванием.
11.	Укажите правильный формат последовательной кодовой посылки:
1)	стартовый бит. бит паритета, пять бит данных, один столовый бит:
2)	стартовый бит, бит паритета, четыре бита данных, два стоповых бита;
3)	стартовый бит, бит паритета, шесть бит данных;
4)	стартовый бит, семь бит данных, бит паритета, один столовый бит.
12.	Последовательная кодовая посылка из УАПП передается по линии:
1)	R*D; 2) DTR; 3) T*D; 4) RTS.
13.	Если УАПП запрограммирована на передачу шести бит данных, двух стоповых битов и одного бита паритета со скоростью 1200 бит/с, то укажите число кодовых посылок, передаваемых в секунду:
1) 120;	2) 240;	3) 600;	4) 300.
14.	Определите количество причин прерывания в УАПП:
1)1;	2)2;	3)3;	4)4.
15.	Выберите группу сигналов, которые используются для доступа к регистру данных передатчика УАПП:
1)	А2-А0, -WR, -CS;	3) АЗ-АО, -WR, -CS;
2)	А2-А0. -RD. -CS:	4) АЗ-АО, -RD, -CS.
340	Периферийные интерфейсы вводо/выводо
16.	Назовите типы ошибок, обнаруживаемых в УАПП:
1)	паритета, переполнения, кадра (формата);
2)	контрольной суммы, потери предыдущего символа;
3)	неверного стоп-бита, контрольно-циклического кода;
4)	четности, контрольной суммы.
DTR, CTS, RTS, DCD;
DTR, DSR, RI, CTS;
DSR, CTS, DCD, RI;
DSR. CTS. RTS. RI.
17.	Определите сигналы, устанавливаемые в регистре состояния УАПП:
1)
2)
3)
4)
8251, 8250, 16450;
8250, 16450, 16550;
8251, 16450, 8255;
8251, 8255. 16550.
18.	Укажите микросхемы УАПП, совместимые на уровне регистров:
1)
2)
3)
4)
19.	Назовите функцию, выполняемую УАПП:
1)	преобразует параллельный код в последовательный и наоборот;
2)	формирует код Манчестера;
3)	выполняет кодирование последовательных данных методом NRZ;
4)	модулирует и демодулирует сигналы.
20.	Укажите регистр УАПП, используемый для программирования размера данных:
1)	регистр управления модемом;
2)	регистр данных передатчика;
3)	регистр управления линией:
4)	регистр делителя скорости.
21.	Выберите правильное значение скорости передачи данных УАПП (бит/с): 1)700;	2)2500;	3)3600;	4)4200.
22.	Определите формат передаваемой кодовой посылки, если в регистре управления линией хранится код 00000000:
1)	8 бит данных, два стоповых бита, бит паритета отсутствует;
2)	7 бит данных, один стоповый бит, бит паритета - нечет;
3)	6 бит данных, два стоповых бита, бит паритета - чет;
4)	5 бит данных, один стоповый бит, бит паритета отсутствует.
Литература
1.	Авдеев В. А.. Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства.: уч. пособие. - М.: Радио и связь, 2001. - 480 с.: ил.
2.	Ю-Чжен Лю, Г. Гибсон. Микропроцессоры семейства 8086/8088. Архитектура, программирование и проектирование микрокомпьютерных систем / пер. с англ. - М.: Радио и связь, 1987. - 512 с.: ил.
Литература	341
3.	Фергусон Дж., Макари Л., Уилльямз П.. Обслуживание микропроцессорных систем / пер. с англ. - М.: Мир, 1989. - 336 с.: ил.
4.	Джордейн Р. Справочник программиста персональных компьютеров IBM PC, XT и AT / пер. с англ., Предисл. Н. В. Гайского. - М.: Финансы и статистика, 1992. - 544с.: ил.
5.	Семенов Б. Ю. Шина ПС в радиотехнических конструкциях / Б. Ю. Семенов. -М.: Солон-Р, 2002. - 129 с.
6.	Микроконтроллеры. Вып. 2: однокристальные микроконтроллеры PIC 12С5Х, PIC12C6X, PIC16X8X, PIC 14000, М 16 С/61/62 / пер. с англ. Б. Я. Прокопенко, под ред. Б. Я. Прокопенко. - М.: ДОДЕКА, 2000. - 336 с.
Защита данных от ошибок
7.1.	Основные определения
Помехоустойчивое кодирование - способ преобразования данных из одной формы представления в другую более избыточную форму с целью увеличения надежности передачи или хранения информации. Избыточность - отношение числа дополнительных (проверочных) битов к общему числу всех передаваемых битов.
Ошибки - искажения принятых битов. Кратность ошибок определяется числом сбойных бит принятого кода. Иногда ошибки называют выпадениями.
Пример 1. Передаваемый код 0101
Принятый код 0011
Кратность ошибок равна 2.
Кратковременные ошибки называют случайными независимыми ошибками, а долговременные - пакетом ошибок. Неустойчивая (перемеживающая-ся) ошибка - ошибка, действующая кратковременно. Распределение ошибок характеризуется частотой и длиной.
Мощность двоичного кода G- число всех комбинаций n-битного кода, определяемое как G=2n.
Пример 2. Рассмотрим следующую единичную 3x3 матрицу:
1 100
2 010
3 001
которая является порождающей матрицей линейных двоичных кодов:
1-100 1Ф2-110 1©2©3-111
2-010 1ФЗ-101
3-001 2ФЗ-011
Порождающая матрица группы кодов - совокупность линейных двоичных векторов этой матрицы, с помощью которых путем сложения их по модулю 2 может быть получен набор линейных кодов.
Основные определения
343
Пример 3. Задана порождающая (3x6) матрица с единичной (3x3) подматрицей:
1	2	3	4 5	6
110	0	110
2	0	10	10	1
3	0	0	1	0 1	1
Необходимо найти все двоичные комбинации, получаемые с помощью матричного кодирования:
000 -> 000000
001	100110
010	010101
011 -> 110011
100 -> 001011
101 -> 101101
110	011110
111 -> 111000
Линейные коды - коды, кодирование и декодирование которых осуществляется с помощью линейной операции суммирования по модулю 2 (XOR), например коды с проверкой на чет или нечет. Линейные коды относятся к классу блочных кодов.
Причины ошибок: ошибки от действия электрических и магнитных полей, радиочастотных помех. Ошибки, связанные с дефектами оптических магнитных и электронных носителей информации и условиями эксплуатации (температура, пыль); ошибки, возникающие от действия космических лучей и «-частиц. Ошибки характеризуются как постоянные (отказы) и случайные (сбои).
Блочные коды - (гл, п) коды с обнаружением или исправлением ошибок, где т - общее число битов на выходе кодера, ап- число битов данных, поступающих на вход кодера (рис. 7.1).
Dr.rDo------► Кодер
> Декодер --------► Dn1-D0
Рис. 7.1. Определение блочного кода
Выходной блочный код длиннее входного кода [т > п) и выбирается из множества слов соответствующей длины, причем метод этого выбора и определяет корректирующие возможности блочного кода.
Кодер и декодер (кодек) могут быть реализованы программным или схемным способом.
Коды Хэмминга, Рида-Соломона и другие циклические коды являются блочными кодами, которые будут рассмотрены ниже.
Разделимые (систематические) линейные (блочные) коды - коды, каждый из которых содержит две части: первая часть состоит из передаваемых битов данных, а вторая часть - из проверочных битов, например коды с проверкой на четность.
В неразделимых (несистематических) линейных кодах проверочные биты смешаны с битами данных, например, коды Хэмминга: k^Ok^Ol, где к -проверочный бит.
344
Защита данных от ошибок
Суммирование по модулю 2 (исключающее или XOR) - побитовое сложение двоичных кодов без переносов:
©101111
011010
110101’
Двоичный полином - представление двоичного кода в виде полинома, в котором фиктивная переменная х в соответствующей степени заменяет число 2 с той же степенью.
Например, двоичный код 10101 = 24 • 1 + 23 • 0 + 22 • 1 + 21 • 0 + 2° • 1 может быть представлен в виде полинома х4 + л2 + 1.
Над двоичными полиномами выполняют алгебраические операции: деление, умножение и вычитание, которое заменяется суммированием по модулю 2.
Кодовое расстояние (расстояние Хэмминга) определяется числом несовпадающих битов в группе двоичных кодов. Минимальное кодовое расстояние равно минимальному значению, которым один код отличается от другого. Кодовое расстояние группы кодов находится попарным сложением по модулю 2 соответствующих одноименных битовых значений кодов и выявлению минимального числа единиц в двоичных комбинациях результатов (минимального веса).
Вес определяется числом единиц в коде, например код 0111 имеет вес, равный трем.
Пример 4. Группа кодов: 1011, 0001,0110
Суммирование:
1011 ^1011	0001
Ф ©	©
0001 оно оно
1010	1101	0111
Минимальное кодовое расстояние d = 2.
Рассмотрим для 3-битного двоичного кода всевозможные его сочетания, число которых равно 23 = 8: 000, 001, 010, ..., 111. Кодовое расстояние для этой группы кодов d = 1 и такой код не позволяет обнаружить ошибку, так как искажение любого бита приводит к появлению другого разрешенного кода из этой группы. В этом случае отсутствует избыточность кода, позволяющая использовать только разрешенные кодовые комбинации из большей группы разрешенных и запрещенных двоичных кодов. Избыточность кода способствует увеличению минимального кодового расстояния внутри кодовой группы и, следовательно, к расширению корректирующей способности используемых кодов.
Вывод: чем больше минимальное кодовое расстояние, тем выше способность кодов исправлять ошибки. С другой стороны, большая избыточность кодов приводит к усложнению аппаратуры устройства и к снижению его быстродействия.
Пример 5. В шине USB используется 8-битный идентификатор пакета, который содержит 4-битный код операции и 4-битный код контроля (инверсные биты кода операции, рис. 7.2).
В коде идентификатора использованы избыточные контрольные биты, позволяющие обнаружить, например, ошибку в каком-либо одном бите. Кодовое расстояние для всех кодов идентификаторов d = 2 и способствует выявлению всех одиночных ошибок. Кроме того, достоинством такой проверки является простота реализации, так как каждый бит дополняется еще таким же битом, но с инверсией его значения.
Основные определения
345
D7 D6 D5 D4 D3 D2 D1 DO
1	0	0	1	0	1	1	0
Биты операции Биты контроля
Рис. 7.2. Формат идентификатора пакета USB
Пример 6. Рассмотрим еще один простой образец использования избыточного кода с обнаружением и исправлением одиночной ошибки, в котором каждый передаваемый бит утраивается (мажоритарный принцип). На приемной стороне значение каждого бита определяется по большинству входных соответствующих битов (два из трех), если один бит ошибочный, то два других - верные. Код с тройным повторением имеет минимальное кодовое расстояние d = 3, что позволяет исправить одну ошибочную битовую позицию.
Из рассмотренных примеров можно сделать вывод (без доказательства), что минимальное кодовое расстояние
d = p+ 1,
где р - число обнаруживаемых ошибок.
Кроме того,
d = 2q + 1,
где q - число исправляемых ошибок.
Для n-битного кода с кодовым расстоянием d и числом кодовых комбинаций т известны следующие оценки:
d = l,m = 2n;
d = 2,m = 2n~* 1;
2n
d = 3,m<----;
1 + n
d = 2q + l,m<2n(l + ^Cj1,
где Cln- число сочетаний из ппо i.
Пример 7. Из общего числа 4-битных комбинаций выбрать только комбинации с кодовым расстоянием d = 3. Находим верхнее значение разрешенных кодовых комбинаций
Выбираем две разрешенные кодовые комбинации 0001 и ОНО (пример 2), у которых d = 3.
Действие кодовых комбинаций одиночных ошибок (1000, 0100, 0010, 0001) вызывает появление соответственно двух групп запрещенных кодовых комбинаций:
1001, 0101, ООН, 0000;
1110, 1010, 0100, 0111,
346
Защита данных от ошибок
с помощью которых можно установить местоположение одиночной ошибки и исправить ее на инверсное значение. Дешифрация запрещенных комбинаций указывает на наличие ошибки в том или ином бите соответствующей разрешенной комбинации.
Пример 8. Определить вес Ри минимальное кодовое расстояние d кодов, полученных в примере 3:
		001011	= 3		
100110	= 3	101101	= 4		
010101	= 3	011110	= 4		
110011	= 4	111000	= 3		
©10011° 010101 110011	d = 4	^ЮОИО 110011 010101	d = 3	е1°011° 101101	®100110 001011
011110
©
111000 о
ci — 3
100110
Минимальное кодовое расстояние заданной группы кодов d = 3, что позволяет обнаруживать и корректировать одиночные ошибки.
Взаимосвязь между числом проверочных битов к и минимальным кодовым расстоянием d устанавливают следующие граничные оценки:
d-1
2
к > log2 (1 +	) - граница Хэмминга;
i=l
к > 2d - 2 - log2 d - граница Плоткина и т. д.
7.2.	Проверка четности
Функциональные признаки проверки четности:
1.	Дисциплина обслуживания - обнаружение одиночной (однобитовой) ошибки и нечетного числа сбоев.
2.	Применение - передача данных и хранение данных в памяти.
3.	Структура данных - линейный код.
4.	Операция кодера и декодера - суммирование по модулю 2 (XOR).
5.	Тип кода - параллельный или последовательный.
6.	Кодовое расстояние - d= 1.
Пример 9.
Биты данных:	D7	D6	D5	D4	D3	D2	D1	D0	БП
Значения 1:	1	0	1	1	1	0	1	0	1
Значения 2:	0	0	1	0	1	0	1	1	0
В первом случае (Значения 1) число 1 в битах D7-D0 равно 5, поэтому бит паритета (БП) равен 1 (общее число 1 - четное), а во втором случае число 1 в битах D7-D0 равно 4. поэтому БП=0 (общее число 1 с учетом БП также четное).
Обычно БП программируется, например, в микросхеме УАПП (UART) как чет (пример 5) или нечет (пример 6) или на его отсутствие.
Проверка четности
347
Пример 10.
Биты данных:	D7	D6	D5	D4	D3	D2	D1	DO	БП
Значения 1:	1	0	1	1	1	0	1	0	0
Значения 2:	0	0	1	0	1	0	1	1	1
В БП хранится значение нечетности.
В случае возникновения ошибки паритета схема контроля формирует сигнал немаскируемого прерывания, работа устройства прекращается и выводится сообщение об ошибке.
Метод контрольного суммирования является самым простым методом и состоит в том, что осуществляется поразрядное суммирование по модулю 2 (М2) всех кодов (байтов) массива данных.
На рис. 7.3 показан пример нахождения контрольной суммы 4-х байтов.
										
а	Байты	Содержимое								
		D7	D6	D5	D4	D3	D2	DI	DO	
	Бо	1	0	1	0	1	0	1	0	
	Б,	0	1	1	0	1	0	1	1	
	Б?	0	0	1	0	0	1	0	0	
	Бз	1	0	0	0	1	1	1	0	
	Сумма по М2	0	1	1	1	0	0	1	1	
										
б	Байты	Содержимое								
		D7	D6	D5	D4	D3	D2	DI	DO	
	Бо	1	0	•	0	1	0	1	0	
	Б,	0	1	1	0	1	0	1	1	
	Бз	0	0	1	0	0	1	0	0	
	Б3	1	0	0	0	1	1	1	0	
	Сумма по М2	0	1	•	0	1	0	1	1	
										
Рис. 7.3. Пример нахождения контрольной суммы: а) правильная контрольная сумма; б) контрольная сумма с ошибкой в бите D5										
При передаче байтов по информационному каналу или при хранении их в памяти выполняется вычисление контрольной суммы, которая в дальнейшем используется в качестве эталона. Затем при приеме байтов из канала (Бо, Бг ..., Бп и байта с контрольной суммы) выполняется сравнение эталона с новым значением контрольной суммы, которое показывает, что в бите D5 произошла ошибка и требуется его коррекция. Недостатком такого способа является плохое обнаружение групповых ошибок, например, если в байте Б3 бит D5 также изменил свое значение с О на 1, то вычисленная сумма совпадет с эталоном. Известны различные способы улучшения обнаруживающей способности этого метода, например, разбиение массива передаваемых байтов на т блоков и нахождение для каждого блока контрольной суммы. В этом случае формируется т контрольных сумм (сг с2, ..., cj.
Метод контроля четности является наиболее употребительным методом и заключается, как уже указывалось, в добавлении к п-битному коду дополни
348	Защита данных от ошибок
тельного (п + 1)-го контрольного бита к, принимающего значение О или 1 в соответствии с выполнением следующего условия:
1	[1, если б1©б2©...©б =0
[О, если 6j ©б2 ©...© бп =1
Например, если передается код 10110110 по линии связи, то контрольный бит к = 1, так как число 1 в коде является нечетным (сумма по модулю 2 равна 1), то есть по линии связи передается 9-битный код 101101101, в котором используется четное число 1. При приеме 9-битного кода выполняется проверка его на четность и при искажениях одного любого бита или нечетного числа битов суммирование по М2 значений битов кода укажет на наличие ошибки (к = 1 - наличие ошибки). При искажении четного числа бит (2, 4, 6 и т. д.) ошибки не обнаруживаются, так как они компенсируют друг друга.
Контроль нечетности состоит в добавлении к п-битному коду (п+ 1)-го контрольного бита к (б1б2...бпк), значение которого определяется из следующего выражения:
[1, если б, ©б9 ©...© бп =0
[О, если 6j ©б2 ©...©бп =1
то есть число 1 в передаваемом коде с учетом контрольного бита должно быть нечетным. Если при приеме битов значение суммы их к = О, то это указывает на наличие ошибки. Недостатком метода контроля четности (нечетности) является возможность обнаружения только одиночных (однократной) ошибки и отсутствие способности к коррекции этой ошибки (не определяется местоположение этой ошибки). В этом случае говорят, что неизвестна позиция стирания ошибки.
На рис. 7.4 представлен канал связи с проверкой на четность.
Общий принцип действия канала следующий. Входной код данных б j-бп через усилители (>) передается по линиям связи и одновременно сопровождается
Проверка четности
349
контрольным битом к, найденным с помощью схемы суммирования по модулю 2 (М2). Если биты передаются без ошибки, то возможны два случая. В первом случае бит к = О (число 1 в коде данных четное) и на приемной стороне формируется выходной сигнал к“ = О (ошибка отсутствует). Во втором случае бит k= 1 (число 1 в коде бп-б1 данных нечетное) и на приемной стороне также формируется сигнал к“ = О (ошибка отсутствует). При наличии сбоя в каком-либо бите б( ошибки или нечетного числа ошибок (выпадение в нескольких битах) формируется сигнал k“ = 1 (ошибка).
На рис. 7.5 показан общий принцип проверки на четность в последовательном канале связи.
Рис. 7.5. Последовательный канал связи с проверкой на четность
Последовательный канал связи содержит усилители (>), сдвиговые регистры (RGr RG2) и триггеры (Т1, Т2). Сдвиг информации в регистрах и триггерах осуществляется с помощью сигналов синхронизации СС. Триггеры Тг и Т2 предназначены для хранения контрольных битов. На приемной стороне выполняются следующие действия: в регистр RGT выполняется запись кода бп-бг; определяется контрольный бит к с помощью схемы М2, осуществляется запись бита кв триггер Тг и после этого производится сдвиг информации на линию связи, причем каждый бит данных сопровождается сигналом синхронизации (синхронная последовательная передача). На приемной стороне схема М2 формирует сигнал к“, определяющий наличие или отсутствие ошибки.
Для обнаружения ошибок в хранимой в блоке памяти (БП) информации также применяется блок контроля (БК) на четность, содержащий многовходовую схему суммирования по модулю 2 (М2) и триггер (Т), запоминающий ошибку паритета EPAR. При записи данных в БП схема М2 формирует контрольный бит к, который запоминается в ячейки БП для каждого байта (слова). При считывании каждый байт (слово) сопровождается контрольным битом, поступающим в блок контроля (БК). При наличии, например, одиночной ошибки общее число единиц становится нечетным и схема М2 формирует сигнал ошибки EPAR (рис. 7.6).
350
Защита данных от ошибок
Сокращения
ПП - приемопередатчик.
БП - блок памяти;
БУ - блок управления;
А - адрес;
D - данные,
EPAR - ошибка партета, MW - сигнал записи;
MR - сигнал чтения, W/R - запись/чтение, SEL- выбор
Рис. 7.6. Схема контроля БП
7.3.	Коды Хэмминга
Функциональные признаки кодов Хэмминга:
1.	Дисциплина обслуживания - обнаружение и исправление одиночной ошибки.
2.	Применение - передача данных и хранение данных в памяти.
3.	Структура данных - неразделенный или разделенный линейный код.
4.	Операция кодера - суммирование по модулю 2.
5.	Операции декодера - суммирование по модулю 2, дешифрация кода ошибки и инвертирование испорченного бита.
6.	Тип кода - параллельный или последовательный.
7.	Кодовые расстояние - d > 3.
Суть метода исправления одиночной ошибки состоит в том, что формируются к контролируемых групп из передаваемых п битов данных, каждая из которых проверяется на четность (обнаружение одиночной ошибки). Таким образом, каждая n-битовая комбинация дополняется к битами контроля. Затем на приемной стороне вычисляются к проверочных выражения и в случае искажения какого-либо бита данных полученные значения указывают на его номер.
Пример 11. Пусть общее число битов т = 7, тогда к = log2(m + 1) = 3. Кодом Хэмминга (7, 4) является следующая комбинация, в которой нумерация битов начинается с единицы:
Коды Хэмминга	351
D7	D6	D5	D4	D3	D2	D1
1	1	О	к4	1	к2	к1
k4 = D7©D6©D5 = l©l©0 = 0,
где k2 = D7©D6©D3 = l©l©l = l,
kl = D7©D5©D3 = l©0©l = 0.
Следовательно, передаваемый код-
D7 D6 D5	D4	D3 D2 D1
110	0	110
Пример 12. Допустим, что при приеме кода в бите D7 произошла ошибка, то есть код принял следующий вид:
D7 D6 D5	D4	D3 D2 D1
0	10	0	110
В результате вычисления проверочных выражений составленных для нахождения номера ошибочного бита, получаем:
k4 = D7©D6©D5©D4 = 0©l©0©0 = l,
k2 = D7©D6©D3©D2 = 0©l©l©l = l,	(1)
kl = D7©D5©D3©Dl = 0©0©l©0 = l.
Таким образом, k4k2kl = l 11, что указывает на ошибку в 7-м бите (D7).
Проверочные выражения для контрольных битов к4, к2 и к1 получены в соответствии с табл. 7.1, которая составлена с учетом тех битов кодовой комбинации, в номерах которой находятся соответственно для к 1-2°, для к2-2\ для к4-22 и т. д.
Таблица 7.1
Номера Номера битов кодовой комбинации контрольных битов
к1(2°)	1=2°	3=2°+2’	5=2°+22 7=2°+2’+22 9=2°+23 11		13	15 17		19	21	23	25	27
к2(2’)	2	3	6	7	10	11	14	15	18	19	22	23	26	27
к4(2')	4	5	6	7	12	13	14	15	20	21	22	23	28	29
к8(2-’)	8	9	10	11	12	13	14	15	24	25	26	27	28	29
к16(2'1)	16	17	18	19	20	21	22	23	24	25	26	27	28	29
В табл. 7.1 в первой строке для пяти элементов показано представление номера бита в виде суммы степеней цифры 2, во всех других случаях номер бита задан десятичной цифрой, которая также может быть разложена в виде суммы степеней цифры 2 (представлена в двоичной форме).
Таким образом, в первой строке таблицы указаны номера битов кодовой комбинации, имеющие единицу в младшем разряде (2°). Вторая строка содержит номера битов кодовой комбинации, в состав которых входит цифра 21, а третья строка -номера битов кодовой комбинации, двоичные коды которых имеют 22 и т. д.
Каждый контрольный бит является битом проверки на четность соответствующей группы битов данных. Например, контрольный бит kl проверяет на четность биты данных с номерами 1, 3, 5, 7 и т. д., а контрольный бит к2 - биты данных с номерами 2, 3, 6, 7 и т. д.
352
Защита данных от ошибок
Для контроля 16-битного кода данных используется код Хэмминга (21, 16), в котором 5 бит являются контрольными с проверкой на четность, соответствующих групп битов данных (табл. 7.1).
Упражнение 1. Приведите пример размещения 16-битного кода данных 1001 0001 ООН 1000 в формате кода Хэмминга с указанием значений контрольных битов:
1	2	3 4	5 6	7 8	9 10 11 12 13 14 15 16 17 18 19 20 21
		1		0	0	1		0	0	0	1	0	0	1		1	1	0	0	0
kl k2	k4	k8	kl6 Ответ: 1 2	3 4	5 6	7 8	9 10 11 12 13 14 15 16 17 18 19 20 21																				
0	0	1	1	0	0	1	0	0	0	0	1	0	0	1	0	1	1	0	0	0
kl k2 k4	k8	kl6
Упражнение 2. Выберите код Хэмминга с правильным заданием значений контрольных битов, места размещения которых помечены штриховкой.
1	2	3	4	5	6	7	1		2	3	4	5	6	7
1	1	1	0	0	0	1		0	1	1	0	0	0	1
1	2	3	4	5	6	7		1	2	3	4	5	6	7
0	0	1	0	0	0	1		1	1	1	0	0	0	1
Ответ: 3.
На рис. 7.7 показана упрощенная схема использования кода Хэмминга (7, 4) для передачи по линии связи.
Рассмотрим матричное представление кода Хэмминга (7, 4), которое может быть полезным при кодировании данных:
D1
D2
kl		"1	0	1	0	1	0	f	D3
k2	=	0	1	1	0	0	1	1	D4
k4		0	0	0	1	1	1	1	D5
D6
D7
Код Хэмминга - код типа (ш, п), где т- общее число битов в коде и п- число битов данных в нем, позволяющий обнаружить и исправить одиночную ошибку. Для исправления одиночной ошибки необходимо выполнение следующего условия п< 2к- к- 1, где к = т- п- число контрольных битов из которого можно найти к, например, если п = 4, то к = 3, если п = 7, то к = 4 и т. д.
Рассмотрим простой пример: пусть п= 4 и к= 3 (рис. 7.8).
Биты контроля D7-D5 найдены следующим образом.
Так как т= 7, то в соответствии с рис. 7.9 определим значения трех битов D7, D6 и D5, указывающих в каком из семи битов произошла ошибка.
Коды Хэмминга
353
Рис. 7.7. Упрощенная схема использования кода Хэмминга
Биты контроля			Биты данных			
D7	D6	D5	D4	D3	D2	D1
0	1	0	1	0	1	0
Рис. 7.8. Пример кода Хэмминга (7, 3)
D7 D6 D5 D4 D3 D2 D1
к4	1	1	1	1	0	0	0
к2	1	1	0	0	1	1	0
к1	1	0	1	0	1	0	1
Рис. 7.9. Матричное представление позиций ошибки
Из рис. 7.9 находим проверочные выражения: k4 = D7®D6®D5®D4, k2 = D7©D6®D3©D2, kl = D7®D5®D3®Dl
(1)
354
Защита данных от ошибок
Если ошибка не произошла, то к4 = к2 = к! = О и биты контроля D7, D6 и D5 определяются с помощью системы уравнений (1):
0 = D7©D6©D5©D4,
0 = D7©D6©D3©D2,	^2)
O = D7©D5©D3©D1.
Из решения системы уравнений (2) находим:
D7 = D4©D2©D1,
D6 = D4©D3©D1,	(3)
D5 = D4©D3©D2.
После подстановки значений битов D4-D1 в систему 3 получаем: D7 = О, D6 = 1 и D5 = О.
Известные схемы кодера и декодера кода Хэмминга (7, 4) показаны на рис. 7.10.
Если регистром RG кодера принят код D4D3D2D1 = 1010, то биты контроля D7D6D5 = 010 (рис. 7.10а).
При приеме кода D7D6D5D4D3D2D1 =01010101 в регистр декодера значения битов позиции ошибки равны:
kl = D7©D5©D3©Dl = 0©0©0©0 = 0,
k2 = D7©D6©D3©D2 = 0©l©0©l = 0,
k4 = D7©D6©D5©D4 = 0©l©0©l = 0,
что указывает на достоверный прием данных.
Пусть в бите D4 произошел сбой, то есть код данных D4D3D2D1 принял значение 0010. Тогда в декодер поступает код D7D6D5D4D3D2Dl=0100010 и на выходах сумматоров М2 формируются значения kl = 0©0©0©0 = 0, k2 = 0© 1 © ©0©1=0, k4 = 0©l©0©0=l.B соответствии с кодом k4k2k 1 = 100 на 4-м выходе дешифратора DC вырабатывается сигнал, корректирующий ошибочный бит D4 (инвертирующий ошибочный бит D4).
Структурная схема асинхронной последовательной передачи, использующей кодер и декодер, изображена на рис. 7.11.
Принцип работы схемы состоит в следующих действиях:
1.	Из системной шины с помощью интерфейсного блока выполняется запись битов данных в регистр вывода (Рвыв), являющийся портом вывода, которому присвоен адрес. Одновременно с этим же сигналом осуществляется пуск блока управления (БУ).
2.	В БУ разрешается работа счетчика Сч1, на выходе которого формируются тактовые сигналы (ТС), определенной длительности. На счетный вход Сч1 поступают сигналы синхронизации от генератора. Назначение Сч2 состоит в подсчете ТС с целью вывода заданного количества битов последовательной кодовой посылки, передаваемой в линию связи. Формат этой посылки представлен на рис. 16.18 и содержит стартовый бит, биты данных, биты контроля и стоповый бит.
3.	Предварительно БУ осуществляет запись содержимого регистра Рвыв через схему кодера в регистр сдвига (PC) и сброс триггера стартового бита (ТСБ).
4.	С помощью тактовых сигналов (ТС) выполняется сдвиг кодовой посылки в линию связи, начиная со стартового бита. Если используется кодер кода Хэмминга (7, 4), то кодовая посылка содержит 9 бит с учетом двух стартово-
Коды Хэмминга	355
Рис. 7.10. Схемы кодера (а) и декодера (б) кода Хэмминга (7,4)
356
Защита данных от ошибок
го и стопового битов. Сдвиг информации завершается, если содержимое Сч2 станет равным 9. Единица на входе PC используется для формирования стопового бита, разделяющего смежные посылки.
Справочное дополнение	357
5.	На приемной стороне стартовый бит (СБ) поступает в БУ и разрешает работу счетчика Сч 1, который подсчитывает определенное число сигналов синхронизации генератора и только после этого формирует тактовые сигналы (ТС) сдвига, выполняющие прием кодовой посылки в регистр PC. Счетчик Сч2 подсчитывает число принимаемых битов данных (9), суммируя ТС.
6.	После приема кодовой посылки БУ через схему декодера осуществляет запись содержимого регистра PC в регистр ввода (Рвв). Сигналом запись, кроме того, в интерфейсном блоке устанавливается флаг готовности, сообщающий о том, что регистр Рвв полон и можно вводить данные в системную шину путем чтения адресуемого регистра ввода.
В заключение следует отметить, что все биты кодовой посылки имеют одинаковую длительность, прием каждого бита осуществляется в середине битового интервала и генераторы передатчика и приемника работают с одинаковой частотой^. Если в декодере обнаруживается некорректируемая ошибка, то декодер сообщает об этом в интерфейсный блок, в котором отмечаются состояния приемника.
7.4.	Справочное дополнение
Поле GF - число элементов, используемых для образования различных комбинаций некоторого множества. Например, поле GF(2) состоит только из двух элементов: О и 1, а поле GF(16) - из 16-ти элементов: О, 1, 2, ..., Е, Е Для элементов поля определены соответствующие операции умножения и сложения.
Поле Галуа - поле GF(q), где q - число конечных элементов.
Приведенный многочлен - многочлен, у которого старший коэффициент равен 1.
Наименьшее общее кратное двух многочленов - приведенный многочлен наименьшей степени, делящийся на оба этих многочлена.
Наибольший общий делитель двух многочленов - приведенный многочлен наибольшей степени, делящийся на оба этих многочлена.
Корень многочлена р(х) - элемент р. если Р(р) = О.
Пусть р(х) = х* + х+ 1, тогда в поле GF(4) р(0) = О + О + 1 = 1, р(1) = 1 + 1 + 1 = 1, р(2) = 23 + 2 + 1 =2 и р(3) = З3 + 3 + 1 = 3.
Многочлен р(х) не имеет корней в поле GF(2) и GF(4).
Примеры конечных полей:
X	0	1		+	0	1		+	0	1	2	3		X	0	1	2	3
0	0	1		0	0	1		0	0	1	2	3		0	0	0	0	0
1	1	0		1	1	0		1	1	0	3	2		1	0	1	2	3
		GF(2)						2	2	3	0	1		2	0	2	3	1
								3	3	2	1	0		3	0	3	1	2
GF(4)
Если для поля GF(q) задан простой многочлен степени ц то можно построить поле Галуа, содержащее qn элементов (многочленов) степени п-1.
Пример 13. Построить поле GF(4) по полю GF(2), используя примитивный многочлен р(х) = х2 + х + 1.
Элементы поля задаются многочленами: О, 1, х и х +1.
358	Защита данных от ошибок
Простой многочлен - приведенный неприводимый многочлен.
Примитивный многочлен - простой многочлен р(х) поля GF(q), который при расширении поля по модулю р(х), соответствующий многочлену х элемент поля является примитивным.
Примитивный элемент поля GF(q) - элемент а. позволяющий представить другие элементы поля в виде степени элемента ос, например ос1, ос2, ос3 и т. д.
Неприводимый многочлен - многочлен р(х), делящийся только на многочлены оср(х) и ос, где ос - произвольный ненулевой элемент поля GF(q).
Примеры простых и примитивных многочленов:
х25+х3 4-1 х26+х64-х2+х + 1 х27 + X5 + х2 + X +1 х28 4-х3 4-1
х8 + х4 + х3 + X2 +1
Для проверки примитивности (простоты) этих многочленов используется способ их разложения на множители методом проб и ошибок (для небольших степеней) или с помощью компьютера.
Поле GF(N) - множество различных комбинаций, состоящих из N элементов, над которыми выполняются операции сложения и умножения по модулю N.
Пример 14. Поле GF(2) = {0,1}.
Таблицы истинности операций сложения (+) и умножения (•) по модулю 2:
Пример 15. Сложение двоичных кодов и полиномов в поле GF(2).
Позиция	5	4	3	2	1	0		5	4	3	2	1	0
Слагаемое 1	1	0	0	1	1	0		X5			4-Х2	4-Х	
Слагаемое 2	1	1	0	1	0	1		X5	4-Х4		4-Х2		+1
Результат	0	1	0	0	1	1			X4			4-Х	+1
Последовательная схема суммирования по модулю 2.
D5 D4 D3 D2 D1 DO	XOR	D5 D4 D3 D2 D1 DO
для многочленов высоких степеней
Справочное дополнение
359
Пример 16. Умножение двоичных кодов и полиномов в поле GF(2).
Позиция	7	6	5	4	3	2	1	0
Множимое			1	0	0	1	1	0
Множитель						1	1	1
Частичные произведения			1	0	0	1	1	0
		1	0	0	1	1	0	
	1	0	0	1	1	0		
Результат	1	1	1	1	0	0	1	0
(л5 + л2 + х)-(л2 + л:+ 1)=х7 + л6 + л5 + х4 + х
7	6	5	4	3	2	1	0
		X5			+Л2	+х	
					X2	+х	+1
		X6			X2	+х	
	Л6			X3	X2		
X7			X4	X3			
X7	Л6	X6	X4			+х	
Умножение полиномов выполняется по алгебраическим правилам с учетом сложения их коэффициентов по модулю 2:
1 • х2 + 1 • х2 = О; О • х2 + О • х2 = О; 1 • х2 + О • х2 = х2; -1 • х2 = х2.
Последовательные схемы умножения по модулю 2.
Схема умножения на л2 + х+ 1
ТС-1 актовые сш налы
360	Защита данных от ошибок
Таблица работы схемы				
тс	Вход	То	т.	Выход
		0	0	0
ТС1	1	1	1	1 -X7
ТС2	0	0	1	1 -А6
тез	0	0	0	1 -А6
ТС4	1	1	1	1 -А4
ТС5	1	1	0	_о-^
ТС6	0	0	1	
ТС7	0	0	0	1 — X
На вход поступает код 100110 = ^ + ^ + х.
После семи сдвигов на выходе формируется код 1111001 = х7 + У’ + л6 + л4 + х.
Примечание: сигнал (0 или 1), поступивший на вход Д-триггера задерживается на 1 такт, и только потом появляется на его выходе.
Схема умножения на х2 + х + 1 с помощью сдвигового регистра Меггитта.
Схемы умножения являются несистематическими кодерами, на выходах которых формируется код Хэмминга.
Параллельная схема умножения по модулю 2.
DO D1 D2 D3 D4 D5
Справочное дополнение
361
Процесс умножения:
RGB	RGS
0	0	0	0	0	0	1	1	1	Z=1
+ 0	1	1	0	0	1	1	1	1	
-► 0	0	1	1	0	0 —►	1	1	1	Z=1
+ 0	1	0	1	0	1	1	1	1	
-► 0	0	1	0	1	0 —►	1	1	1	Z=1
+ 0	1	0	0	1	1	1	1	1	
-► 0	0	1	0	0	1 —►	1	1	1	
Произведение
Обозначение + и + указывают соответственно на сложение и сдвиг значений регистров RGB и RGS.
Сдвиг кода на 1 бит в сторону старших разрядов соответствует умножению его на 2, на 2 бита - умножению на 4 и т. д.
DO D1 D2 D3 D4 D5
0	1	1	1	0	0
Начальное состояние
21+22+23=14
Х1+х2+х3
DO D1 D2 D3 D4 D5
0	0	1	1	1	0
Сдвиг на 1 бит
22+23+24=28 Х2+х3+х4
DO D1 D2 D3 D4 D5
0	0	0	1	1	1
Сдвиг на 2 бита
23+24+25=56 Х3+х4+х5
Сдвиг кода на 1 бит в сторону старших разрядов соответствует умножению его полинома на х, а сдвиг на 2 бита - умножению на х2 и т. д.
Пример 17. Деление двоичных кодов и полиномов в поле GF(2).
х остаток
X5 + X2 + х = (х2 + X1 + 1) • (х3 + X2) + X
5	4	3	2	1	0	
1 1	0 1	0 1	1	1	0	111
						1100
	1	1	1			
	1	1	1			
			0	1	0	остаток
38	36	2
iooi 16=1111100+16
38 = 36 + 2
362
Защита данных от ошибок
Последовательная схема деления на х2 + х1 + 1.
ТС - тактовые сигналы
Если на вход регистра сдвига поступает старшими разрядами вперед код 100110, которому соответствует полином х’ + хЧхто после шести тактов в регистре хранится остаток х( 10).
Принцип работы схемы:
Такты	Вход	т0_	Т	Выход
		0	0	
ТС1	1	1	0	0
ТС2	0	0	1	1	X3
тез	0	1	1	1	X2
ТС4	1	0	0	0	
ТС5	1	1	0	0
ТС6	0	0	1	- остаток (х)
Перед выводом остатка из регистра необходимо отключить обратную связь.
Последовательные схемы деления на х3 + х1 + х°.
Принцип работы схемы:
Входной код: 6543210	Такты	Вход		L	L	Выход
1100100			0	0	0	0
Полином:	ТС1	1	1	0	0	0	_
Х^ + Х5 + Х2	ТС2	1	1	1	0	0
	тез	0	0	1	1	1
	ТС4	0	1	1	1	1
	ТС5	1	0	0	1	1
	ТС6	0	1	1	0	0
	ТС7	0	0	1	1	1
Остаток - 110
Справочное дополнение
363
Входной код: 6543210	Такты	Вход	Тс,	Т,	Т2	Выход
1110100			0	0	0	о“
Полином:	ТС1	1	1	0	0	0
Л6 + Л6 + Л4 + X2	ТС2	1	1	1	0	0
	тез	1	1	1	1	1
	ТС4	0	1	0	1	1
	ТС5	1	0	0	0	0
	ТС6	0	0	0	0	0
	ТС7	0	0	0	0	0
			Остаток -		000	
Проверка работы схемы
1 1 0 0 1 ( + 10 11 |	) (	)|1 о	1	1	Делитель	1	1 1	0	1	( 1 1	1	Х’+х’+х0	1	0 1	1	|	) 011011 1 1 0
1111 + 10 11		Ю11	10 11 10 11	
1 0 0 0 + 10 11		0 0 0 0 0 0 0 0	
1 1	I (	) - остаток	0 0 0 - остаток	
Замечание: обычно полином принято представлять в порядке убывания степени слева направо, а в изображении схемы полином расположен в обратном порядке, так как вход схемы находится слева, а выход - справа. Различные соглашения в изображении схем и полиномов приводят к некоторому несоответствию.
Схема кодера с порождающим полиномом л3 + х+ 1 использует способ деления входного кода на этот полином. Для схемы рассмотрены два случая: первый -прием кода с ошибкой (образуется ненулевой остаток), а во втором - прием кода без ошибки (остаток равен нулю).
Выход
D
У —
У=
1 - получение остатка О - вывод остатка
	
Вход
- нет ошибки О - ошибка
Входной код с ошибкой: 6543210 1100100 Полином:
Такты	Вход	То	Т,	Т2	Выход
		0	0	0	0
ТС1	£	j	1	_0	£
ТС2	1	1	0	1	1
тез	1	0	1	0	0
ТС4	0	0	0	1	0
ТС5	0	1	1	0	1
ТС6	1	1	0	1	1
ТС7	0	1	0	0	1
Остаток-001
|	364 Защита данных от ошибок
Входной код без ошибки*	Такты	Вход	т0	т.		Выход
6543210			0	0	0	0
1100010	ТС1	1 		1	2	0 _		1_
Полином:	ТС2	1_		1			 0	1 _		1_
Л6 + X6 + X1	тез		1			 0		£			1_
	ТС4 _			0	д	£	_0
	ТС5		 0 		0 			 0	1 _		0
	ТС6	1 		0 			 0		 0 			0
	ТС7	0	0	0	0	0
Остаток - ООО
В схеме используется входной код с параметрами (7, 4), где 7 - общая длина кода, 4 - длина кода данных и 3 - число контрольных битов.
Параллельная схема деления на х3 + х1 +
DO D1 D2 D3
0 0 10
остаток
Регистр делимого (младшие четыре бита) и регистр частного являются сдвиговыми регистрами. Принцип работы схемы заключается в проверке значения старшего бита z делимого при каждом такте и выполнений операций сложения (сдвига) или только сдвига (при z = О).
7.5.	Циклический контроль
Функциональные признаки циклического контроля:
1.	Дисциплина обслуживания - обнаружение и исправление одиночных и пакетов ошибок.
Циклический контроль
365
2.	Применение - передача данных, хранение данных в носителях информации (жестких дисках, компакт-дисках и т. д.) и использование в микроконтроллерах.
3.	Структура данных - циклический избыточный код, относящийся к блочным или полиномиальным кодам.
4.	Операции кодера и декодера - сдвиг и суммирование по модулю два (XOR).
5.	Тип кода - параллельный или последовательный.
6.	Кодовое расстояние - d > 3.
7.	Циклические коды - это линейные коды, которые образованы путем циклического сдвига.
Пример 18. Циклические коды:
10011, 11001, 11100, 01 ПО ит. д.
Двоичный полином - представление двоичного кода в виде полинома с фиктивной переменной хс соответствующими степенями (весами двоичного кода).
Пример 19. Коду 10011 = 24 • 1 + 23-0 + 22-0 + 21- 1 + 2° • 1 соответствует полином х4 • l+x^O + x^O + x1- 1 +	• 1 = л4 + х + 1.
Порождающий полином - примитивный (неприводимый) полином, который не может быть задан в виде произведения полиномов с меньшими степенями. Примитивный полином делится только на 1 и на себя.
Известен список некоторых порождающих полиномов:
х4+х3+х2 + 1,
Порождающий полином используется для формирования циклических избыточных кодов. Порождающие полиномы находятся путем, например, разложения многочлена х" - 1 на неприводимые многочленные множители, другие полиномы - с помощью компьютера. Наибольшая степень порождающего многочлена определяет число контрольных битов, например, порождающий многочлен х5 + х4 + х3 + 1 задает (15, 10) - коды, где 15 - общая длина кода с контрольными битами, 10 - длина бит данных и пять контрольных битов, а полином х6 + х5 + + х4 + 1 - (31, 25) коды с шестью контрольными битами. Чем больше степень порождающего многочлена, тем больше длина блока данных, проверяемого с помощью контрольного циклического кода и больше длина исправляемого пакета, например, многочлен степени 13 определяет блок (1023, 1010) с длиной исправляемого пакета равной 4.
В жестких дисках длина проверяемого блока данных (сектора) составляет 512 байтов. Для проверки этого блока данных используют порождающий многочлен л?2 + х23 + х21+х11+х2 + лос длиной контрольного циклического кода(КЦК) 32 бита (4 байта), то есть проверяемый блок в байтах имеет параметры (516, 512), рис. 7.12.
В цифровых аудиодисках применяют циклический 23-битный код для обнаружения ошибок в 96-битных данных и порождающий полином д?3 + х5 + х4 + х+1.
366
Защита данных от ошибок
Данные	КЦК
512 байтов	4 байта
Рис. 7.12. Бл ок данных ЖД
Структурная схема контроля блока данных (сектора размером 512 байтов), представлена на рис. 7.13.
В структурной схеме используется 4-байтовый циклический сдвиговый регистр с элементами XOR, строящими в цепях обратной связи регистра (на рисунке не показаны). Под управлением микропроцессора из буферной памяти в режиме записи выводится блок данных (512 байтов), который байт за байтом поступает в регистр RGP преобразующий параллельный код байта в последовательный. В циклическом сдвиговом регистре по методу полинома формируется 4-байтный контрольный циклический код (КЦК). Вначале из буферной памяти в контроллер жесткого диска (КЖД) поступают 512 байтов данных, а затем через регистр RG2 к ним добавляются четыре байта КЦК, записываемые на дорожку жесткого диска вместе с байтами данных. В режиме чтения из жесткого диска через контроллер КЖД передается 512 байтов данных и 4 байта КЦК, поступающие в буферную память и через RGt в циклический сдвиговый регистр, который выполняет деление полинома данных на порождающий полином, задаваемый циклическим сдвиговым регистром. Операция деления выполняется с помощью сдвиговых операций и суммирования по модулю 2 (XOR), заменяющих операции вычитания. Результат деления (частное) не учитывается, а 4-байтовый остаток, получаемый в циклическом сдвиговом регистре, представляет собой КЦК. Если
Коды БЧХ 367
при чтении (512+4) байтов отсутствуют ошибки, то содержимое циклического сдвигового регистра равно О (результат деления равен О). При наличии ошибок в байтах данных (ненулевой остаток) микропроцессор анализирует КЦК, записанный вместе с данными в буферную память, и определяет возможность ее коррекции путем выполнения соответствующей программы, реализующей специальный алгоритм коррекции, если длина ошибки не больше 11 битов.
При записи данных на жесткий диск 512 одинаковых байтов AAh (h - 16-рич-ная запись) в циклическом сдвиговом регистре формируется КЦК, равный 88CAA093h. КЦК, как уже отмечалось, представляет собой остаток от деления байтов данных на порождающий полином. При чтении данных с жесткого диска может быть получен в циклическом сдвиговом регистре ненулевой остаток от деления, соответствующий полином, который называется синдромом ошибки, позволяющий исправить ошибки в данных. Известны разнообразные программные декодеры циклических кодов с коррекцией ошибок, выполняющие, например, следующие действия: вычисление синдрома ошибок, нахождение полинома ошибок на основе какого-либо алгоритма, определение корней этого полинома и исправление (инвертирование) испорченных битов данных с помощью битовой маски, определяющей типы ошибок.
7.6.	Коды БЧХ
Описание кодов БЧХ (циклических кодов) начнем еще раз с понятия поля GF (2) = = {0,1}- циклического поля, для которого определены следующие операции сложения и умножения (рис. 7.14).
+	0	1
0	0	1
1	1	0
★	0	1
0	0	0
1	0	1
Рис. 7.14. Операции сложения и умножения поля GF(2)
Поля GF(2) содержит два элемента 0 и 1, над которыми выполняются операции сложения и умножения по модулю два, например 1 + 1= 0и1*1 = 1. Для полей GF операции вычитания заменяется сложением по модулю два.
Пример 20. Построить циклические коды с использованием полинома х7 -1 над полем GF (2).
Полином х7-1 можно разложить по известным таблицам [2] на неприводимые полинома (порождающие) полиномы:
х7-1 = (х+ 1 Ха5 + х2 + 1) (а5 + х + 1).
Различные комбинации неприводимых полиномов позволяет образовать различные группы циклических кодов, отличающихся параметрами (т, и), где т-общая длина кода, п - длина кода данных и к = т- п- число контрольных битов. Для рассматриваемого примера т = 7 (определяется степенью полинома разложения) и число контрольных битов к зависит от степени неприводимого полинома, являющегося делителем х™- 1 (табл. 7.2).
368
Защита данных от ошибок
Таблица 7.2
Порождающие полиномы	Значения		Параметры кода
	п	к	
х + 1	6	1	(7,6)
X3 + X + 1	4	3	(7,4)
X3 + X2 + 1	4	3	(7,4)
(X + 1)( X3 + X + 1) = X4 + X3 + X2 + 1	3	4	(7,3)
(X + 1)( X3 + X2 + 1) = X4 + X2 + X + 1	3	4	(7,3)
(Л3 + X + 1 )( X3 + X2 + 1) = X6 + Л6 + X4 + X3 + X2 + X1	1	6	(7, 1)
Рассмотрим принцип кодирования данных с помощью порождающего полинома а3 + х2 +1, которому соответствует код 1101. Пусть код данных равен 0010.
Этому коду данных соответствует полином х. Чтобы получить кодированное сообщение длины семь, необходимо умножить х на а3 и разделить полученное произведение х4 на порождающий полином а3 + х2 + 1:
х4: а3 + х2 + 1 = хс остатком а3 + х + 1; 10000 :1101 = 11с остатком 111.
Затем следует кодом остатка дополнить код данных и кодируемое сообщение длины семь имеет следующий вид:
0001 111
Контрольный циклический код.
Код данных
В табл. 7.3 приведены некоторые значения кодируемых данных на основе порождающего полинома а3 + х2 + 1 (кода 1101).
Таблица 7.3
Второй код	Полином	Второй код	Полином	Второй код	Полином
данных	кода данных	остатка	кода остатка	сообщения	сообщения
001	1	101	х2 + 1	0001101	Л3 + X2 + 1
0010	X	111	X2 + X2 + 1	0001111	Л3 + X2 + X + 1
001 1	х+ 1	010	X	0011010	Л4 + Л3 + X
*	А-	*	*	*	*
*	А-	•й-	*	*	*
*	А-	-А-	-А-	к	-А-
1111	X3 + X2 + X + 1	111	X2 + X + 1	11111111	А6+Лб+Х4 + + Х2 + Х+ 1
Поле GF (22) = GF (4) = {0. 1. 3} = {0, 1, х, х+ 1}
Циклическое поле GF (4) строится над полем GF (2) с учетом, например примитивного полинома Р(х)= х2 + х + 1, то есть элементы поля GF (2) входят в множество элементов поля GF (4). Так как х является корнем полинома, то х2 + х + 1 =0.
Поэтому х2 = х+ 1,х2+х= 1и 1 + х2 = х. Кроме того, а3 = х2 *х1 = х2 + х= х(х+ 1) = 1.
На рис. 7.15 показаны операции сложения и умножения поля GF (4).
В табл. 7.4 представлены элементы поля GF (4), найденные с использованием примитивного полинома р(х) = х2 + х + 1.
Коды БЧХ	369
			Сложение						Умножение			
	+	0	1	X	х+1		X	0	1	X	х+1	
	0	0	1	X	х+1		0	0	0	0	0	
	1	1	0	х+1	X		1	0	1	X	х+1	
	X	X	х+1	0	1		X	0	X	х+1	1	
	х+1	х+1	X	1	0		х+1	0	х+1	1	X	
												
Рис. 7.15. Операции сложения и умножения поля GF (4)												
Таблица 7.4			
Число	Код	Полином	Степень
0	00	0	0
1	01	1	х°
2	10	X	X1
3	11	х+ 1	X2
Поле GF(23) = GF(8) = {О, 1, 3, 4, 5, 6, 7} = {О, 1, х, л2, х+ 1, л2 + х, х2 + х + 1, х2 + 1}.
Циклическое поле GF (8) можно образовать с помощью примитивного полинома Р(х) = х3 + х + 1 (табл. 7.5).
Таблица 7.5			
Число	Код	Полином	Степень
0	 		000	0	0
1	001	1	х°, X7
2	010	X	X
4	100	X2	X2
3	011	х+ 1	X3
6	110	X2 + X	X4
7	111	х2 + х+ 1	X6
5	101	X2 + 1	X6
Так как х- корень полинома р(х), то х3 + х + 1 =0, откуда х3 = х + 1 (табл. 7.3). Кроме того, х4 = х3*х1 = (х+ 1)* х= х2 + х, л? = л3 * л2 = (х + 1)* л2 = л? + л2 =х2 + х + 1 и Хб = Х4*Л2 = (Л2+Л)*Ла = Л4 + Л3=Л2+Х+Х + 1 =х* + 1.
На рис. 7.16 представлены некоторые фрагменты операций сложения и умножения поля GF (8).
Пример 21. Умножение в поле GF (8)
X2 + Х+ 1
X2 +Х+ 1
X2 + Х+ 1
л? + л2 + х	а0
X4 + X3 + Л2
X4 +х2+1=х2+х+х2+1=х+1
370
Защита данных от ошибок
							
	+	0	1	X		Л2 +Х + 1	
	0	0	1	X		Л2 +Х+ 1	
	1	1	0	х + 1		Л2 +х	
	X	X	х+ 1	0		х2+ 1	
							
	х? + х + 1	Л2 +Х+ 1	х* + х	л?+ 1		0	
							
	+	0	1	X		Л2 +Х+ 1	
	0	0	0	0		0	
	1	0	1	X		X2 + X + 1	
	X	0	X	X?		*?+1	
							
	X2 + X + 1	0	х2 + х + 1	X2 + 1		х+ 1	
							
Рис. 7.16. Фрагменты операций сложения и умножения поля GF (8)							
Циклическое поле GF (24) = GF (16) = {0, 1, 2,., 15} = {0, 1,.., х3 + 1}
Поле GF (16) можно образовать с помощью полинома х4 + х + 1 (табл. 7.6).
Таблица 7.6			
Число	Код	Полином	Степень
0	0000	0	0
1	0001	1	а0, а15
2	0010	X	а1
4	0100	X2	а2
8	1000	X3	а3
3	0011	х+ 1	а4
6	0110	х2 + х	а5
12	1100	X3 + X2	а6
11	1011	х3 + х + 1	а7
5	0101	х2 + 1	а8
10	1010	X3 + X	а9
7	0111	X2 +Х+ 1	а10
14	1110	X3 + X2 + X	а11
15	1111	X3 +Х2 + Х+ 1	а12
13	1101	X3 + X2 + 1	а13
9	1001	X3 + 1	а14
Таблица сложения и умножения полиномов поля GF (24) можно составить по известным правилам, показанные для полей GF (4) и GF (8).
Коды БЧХ 371
Для табл. 7.5 могут быть определены минимальные полиномы поля GF(2) для элементов а поля GF(16).
Минимальный полином р(х) - это простой полином имеющий минимальную степень и корень из {а, а2, а3...} (рис. 7.17).
а2-------► х+1
а1, а2, а4, а8, а10----► х4 + х + 1
а3, а6, а9, а12------► х4 + а3 + х2 + х+ 1
а5, а10------► а2 + х + 1
а7, а11, а13, а15------► х4 + а3 + 1
Рис. 7.17. Минимальные полиномы с соответствующими корнями
Из рис. 7.17, например видно, что полином л2 + х + 1, имеет корни а5 и а10. Действительно, подставив а5 в полином а2 + х+ 1 = О, имеем а10 + а5 + 1 = О, причем из таблицы находим а10 = а2 + а + 1, а а5 = а2 + а, то есть а5 есть корень полинома х2 + х + 1 = О (а2 + а + 1 + а2 + а + 1 = О). Минимальные полиномы для формирования кодов с общей длиной, равной 15 битам, находятся путем разложения полинома х15 - 1 на простые минимальные полиномы: х + 1,х2 + х+ 1,х4 + х+ 1,х4 + х3 + 1 и X4 + А3 + X2 + Х+ 1.
Разработаны таблицы подобных разложений. Путем перемножения минимальных простых полиномов можно проверить правильность такого разложения:
X15 - 1 = (х+ IJfA2 + Х+ 1КХ4 + Х+ IXx4 + А3 + 1)(^ + А3 + А2 + Х + 1).
С помощью этих простых полиномов создаются до 30 порождающих полиномов, напримерG(x) = (х2 + х+ IJfx4 + х3+1) = а6 + а3 + х2 + х+ 1, G(x) = (х+ 1)(х2 + х+ 1) = = А3 + 1, G(x) = X4 +Х+ 1, G(x) = А4 + А3 + 1 ИТ. д.
Известны несколько способов нахождения минимальных полиномов [2]. Один из них состоит в том, что примитивные элементы а, а2, ..., а14 являются корнями соответствующих много членов. Так, элементы а5 и а10 с кратными числу 5 порядками приходятся корнями полинома р5(х) = (х- а5)(х- а10). Выполним умножение с использованием табл. 7.6, находим р5(х) = а2 + ос1Ох+ а5х+ а15 = а2 + + х(а10 + а5) + 1 = х2 + х+ 1, причем а10 = х2 + х+ 1, а а5 = х2 + х (табл. 7.6).
Кратные корни а3, а6, а9 и а12 также являются корнями полинома р3(х) = (х -- а3)(х- а6)(х- а9)(х- а12) = х4 + а3 + х2 + х+1. Таким образом, можно определить, что для корней а, а2, а4, а8 и а10 существует минимальный полином
р2(х) = (х- а)(х- а2)(х- а4)(х- а8)(х- а10) = х4 + х+ 1 ит. д.
Представления поля GF (24), показанные в табл. 7.6, используются для нахождения циклических кодов класса БЧХ (Боуза - Чоудхури Хоквингема) с различными параметрами и свойствами.
Пример 22. Умножение в поле GF (16).
а3 + 1
*	а3+ 1
А3 + 1
372	Защита данных от ошибок
Пример 23. Умножение в поле GF (16)
X7 * *Q - Х1 * х15 - х1.
Если взять другой порождающий примитивный ПОЛИНОМ X4 + X3 + 1, то можно получить иное представление циклического поля GF (16), характеризующегося теми же свойствами, что и поле GF (16) с порождающим полиномом х4 + х + 1.
Рассмотрим принципы построения схем умножения и деления в поле GF (2) с использованием регистров сдвига (триггеров типа D) и схем сложения по модулю 2 (М2).
Пример 24. Схемы деления на порождающие полиномы соответственно х3 + ч-х2 ч- 1, х2 + х+ 1 ил3 ч-хч- 1.
В этих схемах обратная связь к элементу М2 подключается в позиции, соответствующей ненулевому коэффициенту и количество триггеров определяется степенью полинома. Анализируя эти схемы легко понять принцип их построения.
Пример 25. Схемы умножения на порождающие полиномы соответственно X3 Ч- X2 Ч- 1, X4 ч- х+ 1 их'ч-хч- 1.
Вход
Вход
Выход
Выход
Выход
Вход
Коды БЧХ
373
В схемах умножения количество триггеров определяется степенью полинома и соединение с элементов М2 выполняется в позиции, соответствующей нулевому коэффициенту порождающего полинома.
Основные типы циклических кодов показаны на рис. 7.18.
Циклические коды
Хэмминга
▼
Б оуза -Чоудхури -Хоквингема
I
Рида-Соломона
Каскадные
Рис. 7.18. Основные типы циклических кодов
В зависимости от вида поля GF(q) известны коды Хемминга [2] с различными параметрами [тп, п), приведем некоторые из них:
GF(2): (7, 4), (15, И), (31, 26);
GF(4): (5, 3), (21, 18);
GF(8): (9, 7), (73, 70);
GF(16): (17, 15), (273, 270);
Коды Хэмминга, как уже отмечалось, это коды типа (т, п) с расстоянием d = 3, которые обнаруживают и исправляют одну ошибку.
Для кода Хэмминга определено выражение п = [2т/т + 1] = m-lg(n + 1), имеющее целочисленные решения при п = 4, 11, 26 и т. д., определяющие соответствующие параметры кодов (7, 4), (15, 11), (31, 26).
Коды Хэмминга составляются либо с помощью порождающих матриц, либо используется полиномиальная форма их представления, то есть задание их как циклических кодов с применением порождающих примитивных полиномов.
Один из вариантов порождающей матрица для кода Хэмминга (7.4) может, представлена в виде:
D7D6D5D3 D2D1D0 1Г1	О	О	О	О	1	Г
2 0	1	0	0	1	0	1
3 0	0	1	0	1	1	0
4 0	0	0	1	1	1	1
которая позволяет образовать 24 кодовых сообщений.
Порождающая матрица G состоит из двух частей: первая часть (столбцы D7-D3) - единичная подматрица 4x4 и вторая часть - проверочная подматрица (столбца D2-D0). Столбцы проверочной подматрицы находятся путем суммирования по модулю 2 соответствующих столбцов единичной матрицы: D2 = D6 + + D5 + D3, D1 = D7 + D5 + D3 и DO = D7 + D6 + D3. Для матрицы G7 4 минимальное расстояние d = 3, которое находится суммированием по модулю 2 соответствующих строк матрицы:
374	Защита данных от ошибок
Номер сообщения	Номер суммируемых строк	Кодовое расстояние
1	1 + 2	сУ= 4
2	1 +3	сУ= 4
3	1 + 4	d=3
	4			2 + 3			d=3	
5		2 + 4			d=3	
6		3 + 4			d=3	
7	1+2 + 3	d=3
8_	1+2 + 4	d=±
9	1+3 + 4	d=4
	10		2 + 3 + 4		d=4	
11	1+2+3+4	d=7
Кодовые сообщения определяются путем суммирования определенных строк порождающей матрицы, что позволяет закодировать 11 сообщений. К этому количеству добавляются 4 сообщений (строки 1-4) из самой матрицы и одно нулевое сообщение.
Кодирование сообщений можно представить в виде умножения кода данных (вектора) на порождающую матрицу, которое состоит в суммировании соответствующих строк порождающей матрицы, например первой и третьей:
Сообщение = [1010]
1 о о о
О
1
О
О
о о
1 о
о о о
1
о
1
1
1
1
о
1
1
1
1 о
1
= [101010 1].
Проверочная матрица Н находится путем транспонирования подматрицы проверочных битов и перемены расположения единичных и проверочной под
матрицы:
О
Н= 1
1
11110 0
0 110 10
10 10 0 1
Если в сообщении 1010101 произошла в одном бите ошибка (код сообщения 0010101), то путем умножения вектора сообщения на транспонируемую проверочную матрицу И7, можно определить номер ошибочного бита:
	0 1 Г	
	1 0 1	
	1 1 0	
[0010101]*	1 1 1	=[o 1 1].
	1 0 0	
	0 1 0	
	0 0 1	
Полученный в результате умножения код, совпадает с кодом 1-й строки матрицы 1~Р, что указывает на наличие ошибки в 1-м бите сообщения. Если ошибка
Коды БЧХ
375
в принятом сообщении отсутствует, то код результата умножения должен быть равным нулю. Хотя порождающая матрица есть сжатое представление линейных кодов Хэмминга, но построение кодеров и декодеров на их основе связано с большими затратами оборудования, чем при использовании кодеков циклических кодов Хэмминга.
На рис. 7.19 показаны схемы кодеров, реализованные на базе шифратора и ПЗУ.
Рис. 7.19. Схемы кодеров, построенные на основе а) шифратора и сумматоров по модулю 2; б) ПЗУ
Построение шифратора выполняется в соответствии с порождающей матрицей G. В ПЗУ кодека хранится готовая таблица кодируемых сообщений, которые читаются при поступлении на адресные входы АЗ-АО соответствующих кодов данных.
Один из вариантов схемы декодера, использующего транспонированную проверочную матрицу, представлен на рис. 7.20.
Сигналы исправления ошибок
Рис. 7.20. Схемы декодера
376
Защита данных от ошибок
Как уже отмечалось, циклический код Хэмминга можно построить, используя порождающий полином, например G(x) = х3 + к + 1, который получен путем разложения полиномах7 - 1 неприводимые полиномы: х7 - 1 = (х + Цх3 + х + 1)(х* + х + 1).
Порождающая матрица G циклических кодов может быть представлена в виде:
6 5 4 3 2 1 0
10 110
0 10 11
0 0 10 1
0 0 0 1 0
О 01 р.
О О р2 1 О Рз’ 1 1]р4
где рДх) = x3G(x) = х3 + х4 + х3, р2(х) = x2G(x) = х3 + х3 + х2, р3(х) = xG(x) = х4 + х2 + х, р4(х) = = G(x) = х3 + х+ 1.
Коды Боуза - Чоудхури - Хоквингема (сокращенно БЧХ) - это класс циклических кодов, для которых могут быть найдены порождающие полиномы, исправляющие заданное количество ошибок. Конструктивное расстояние для кодов БЧХ d = 2t + 1, где t - количество исправляемых ошибок. Порождающий полином G(x) кода БЧХ является минимальным (наименьшей степени), для которого определены примитивные элементы а, а2, ..., a2L из поля GF(q'n), являющиеся его корнями. Основная задача при построении кодов БЧХ найти по заданным ши t нужный порождающий минимальный полином соответствующей степени.
Пример 26. Коду БЧХ с параметрами (15, 7) соответствует порождающий полином G(x) = х3 + х7 + х3 + х4 + 1. Степень G(x) равна 8, поэтому т- п = 8 (т- общая длина кода, а п- длина кода данных). Степень порождающего полинома определяет количество контрольных бит. Общая длина кода (сообщения), равная 15, задается полином х15 - 1 поля GF(24), являющегося расширением поля GF(2). Путем разложения полинома х15 - 1 находится минимальный порождающий полином х3 + х7 + х3 + х4 + 1.
Пример 27. Определите для передаваемого кода данных контрольные биты с помощью порождающего полинома х3 + х7 + х3 + х4 + 1. Нахождение контрольных битов выполняется по известному способу: полином кода данных умножается на х3 и полученное произведение делится на порождающий полином. Остаток от деления (х3 + х4 + х2) * х3 на х3 + х7 + х3 + х4 + 1 представляет собой контрольный циклический код. В результате деления этих полиномов получается остаток х3 + х4 + х2, что соответствует 8 - битному двоичному коду
7 6 5 4 3 2 1 0
0 0 1 1 0 1 0 0.
Таким образом, передаваемое закодированное сообщение имеет следующий вид:
14 13 12 11 10 9 8 7 6 5 4 3 2 1 О
101010000110100
Биты данных Контрольные биты
Коды БЧХ	377
Операция деления:
х|4 + х'* + х10	|х* + х7+х6 + х4+1
х14 4-х'3 4-х12 4-х10 4-х6
х,3 + х12 + х" + х9 + х5
х12 4-х11 4-х9 4-х6 4-х5
х12+хИ+х.0+хН+х4
х10 4-х9 4-х8 4-х6 4-х5 4-х4
X10 4-Х9 4-х8 4-х6 4-х2 --------------<----1- э	5 4 3 2 1 0
X 4-х 4-х- -► 110100 у	4 -Г *
остаток	код
Пример 28. Проверка правильности построения закодированного сообщения заключается в делении полинома сообщения на порождающий полином. Остаток от такого деления должен быть равен 0.
X13 4-Х6 4-Х5 4-Х4 4-Х2
X13 4- X12 4- X*' 4- X9 4- X5
X12 4-Х11 4-Х9 4-Х6 4-Х4 4-Х2
X12 4-х" 4-Х10 4-Х8 4-Х4
х'° 4-Х9 4-Х8 4-Х6 4-Х2
х'° 4-Х9 4-Х8 4-Х6 4-Х2
Остаток О
Замечание: деление двоичных кодов соответствующих полиномов не дает тех же результатов, что и при выполнении операции деления полиномов (например, остаток не будет равен 0).
Пример 29. Построить схему деления 15-битовых сообщений на порождающий ПОЛИНОМ Х84-Х74-Л64-Х44- 1.
378
Защита данных от ошибок
	Вход	То	Т,	Т2	Тз	L	Т5	Т6	Т7
		0	0	0		 0		 0_	£		_0 			0 	
	1	1	0	0		 0		 0	£	0 			0	
	0	0	1	0		 0		 0	0 		0 			0
	1	1	0	1	0	0	0	0	0
	0	0	1	0		1	0	0	0 			0
	1	1	0 		1	0	£	0	0 			0	
	0 			£	1 		0 			£	_ 0	_1		0 			0	
	£ _	_ £	£	£			 0		£	0	1 			0
	£			£		£		0	£	£	£	0	£
	0 			 1	0	~0 			 0	0 		0 		0	т
	1	0 		1	0	0	1		0	1	1
	1	0 		0	1	0	1	1	1	0
	0 			 0	0	0	1	0	1	£	£
	£	£	0	0	0		 0	£		0	0
	0 _		£		£		0 			 0		£	£		£			0	’
	0	0	0	0	0	0	0	0	0
На вход схемы поступает закодированное сообщение 101010000110100 с контрольными битами. Так как сообщение передано без ошибки, то остаток от деления равен 0. В таблице показаны состояния триггеров Т7-Т0 при поступлении каждого входного бита сообщения. Процесс деления занимает 15 тактов.
Пример 30. Рассмотрим второй вариант схемы деления 15-битовых входных сообщений на порождающий полином ^ + х7 + ^ + х^ + 1.
Пример 31. Методика нахождения порождающего полинома [1] состоит из следующих этапов:
1.	В зависимости от длины кода сообщения выбирается полином х"1 - 1 степени т. Например, для построения кодов Хэмминга с параметрами (7,4) задается полином х7 - 1, а для кодов БЧХ с параметрами (15,7) - х15 - 1.
Знак минус (-) можно заменить на плюс (+), так как вычитание в полях Галуа заменяется сложением по модулю 2.
2.	Определяется поле GF(qm) с примитивными элементами поля {а, а2, а3, ..., а2*}. В таблице 7.6 показан пример построения поля GF(24).
3.	Для поля GF(qm) находятся минимальные полиномы с корнями из {а, а2, а3, ..., а2*}, причем минимальному полиному Р.(х) соответствует корень а*. Построение минимальных полиномов показано в разделе, описывающего представление поля GF(oc4).
Коды БЧХ
379
4.	Порождающий полином с необходимыми параметрами (m,n) получается из следующего выражения: G(x) = НОЩРДх), Р2(х) P2t(x)]* где НОК-наименьшее общее кратное минимальных полиномов. Для целых чисел НОК - это наименьшее положительное число, которое делится на эти числа, а для полиномов - это наименьший приведенный полином, делящийся на эти полиномы. Приведенный полином имеет старший коэффициент, равный 1.
Как уже отмечалось ранее, порождающий полином для кодов БЧХ с параметром (15,7) находится как
G(x) = НОКрРДх), Р2(х), Р3(х), Р4(х)],
где РДх) = х4 + х + 1, Р2(х) = х4 + х + 1, Р3(х) = х4 + х5 + х2+1и Р4(х) = х4 + х + 1.
Таким образом,
G(x) = (х4 + х+ IJfx4 + х3 + х2 + х + 1) = х8 + х7 + х6 + х4 + 1.
Пример 32. Рассмотри схему с вылавливанием двух ошибок, декодер кода БЧХ (15,7), представленный на рис 7.21.
Функциональные признаки схемы:
1)	поле определения циклических кодов GF(24).
2)	код БЧХ с параметрами (15,7).
3)	порождающий полином: х8 + х7 + х6 + х4 + 1.
4)	входное сообщение без ошибок:
14 13 12 11 10 9 8 7 5 4 3 2 1 О х"+х'2++*•+х*+>?—► 101010001 10100
5)	входное сообщение с 2-мя ошибками:
13 12 11 10 98765432 1 0
ХМ + ^3 + ^2 + ^1+Л40 + А? + х« + д?_> 1 jj jj 00001 10100 Ошибочные биты х13 и х11 подчеркнуты.
6)	контрольный циклический код:
7 6 5 4 3 2 1 0
л»+х*+л?—>001 10100
7)	остаток в регистре после 15-ти тактов:
380	Защита данных от ошибок
7 6 5 4 3 2 1 О
^+^—►01010000
8)	код синдрома выявления первой ошибки:
7 6 5 4 3 2 1 0
10100000
9)	код синдрома выявления второй ошибки:
7 6 5 4 3 2 1 0
10000000
Работа схемы для исправления двух ошибок занимает в общем случае 45 тактов: 15 тактов для определения синдрома остатка, 15 тактов для кода синдрома первой ошибки и 15 тактов для кода синдрома второй ошибки.
В некоторых случаях исправление ошибки может быть выполнено в пределах 16-30 тактов.
В схеме ключ К замыкается на тактах 16-45.
Рассмотрим работу схемы с помощью следующей таблицы:
Такты	Вход		Значения триггеров							
	Степень	Бит	то		L	Тз	Т4	L	Т._	Т7
1	Xм	1	0	0	0	0	0	0	0		0_
			1		0		0	0	1		0			1			1_
2	X13	1	0	1	0	0	0	1	0	1
3	X12	1	0	0	1	0	0	0	1	0
										
15	х°	0	0		0		0	0	1	0	1		0_
16	Xм	0	0	0	0	0	0	1	0	1
17		X13	0	0	0	0	0	0	0	1		0_
18	X12	0	0	0	0	0	0	0	0	1
19	X11	0	0	0	0	0	0	0	0	0
20	X10	0	0	0	0	0	0	0	0	0
21	х9	0	0	0	0	0	0	0	0	0
22			0	0	0	0	0	0	0	0	0
23	х!	0	0	0	0	0	0	0	0	0
На выходе элемента & схемы формируется сигнал S = 1 коррекции синдрома. Условие коррекции:
1) Т7= 1;
2) Т6-Т0 = О или в триггерах Т6-Т0 хранится одна 1.
Для исправления ошибки сигнал коррекции задерживается на один такт и изменяет следующий бит сообщения на выходе сдвигового регистра.
В рассматриваемом примере сигнал коррекции S сформирован в 1-м такте, а исправляет бит х13 во 2-м такте. Аналогичным образом осуществляется коррекция ошибочного бита х11.
Следует отметить, что значения триггеров Т7-Т0 в первых трех тактах получены путем анализа схемы и поступающих старших битов сообщения, а значения триггеров в 15-м такте получены путем следующих вычислений.
Коды БЧХ
381
Полином х14 + х12 + х10 + л6 + л4 + х2 умножается на л8 и делится на порождающий полином л8 + х7 + л6 + х4 + 1 с целью получения остатка:
(х14 + х13 + х11 + х10 + х6 + х4 + х2) • х8 = х13 + х12 + х10 + х10 + х7 + х6 + х6 + х4 + х3
X13 + X12 + X10 + X7 + х6 + х5 + X4 + х3 Х,34-Х12 4-Х1' 4-Х9 4-Х5
X* 4-Х7 4-Х6 4-Х4 4-1
X 5 4- X 3
х,,+х,0+х9 + х7 + х6 + х4+х3
X11 4-х10 4-х9 4-х7 4-х3
6	4	76543210
X +х4-^01010000
Остаток записывается в 15-ю строку таблицы.
Пример 33. Рассмотрим другой известный способ исправления ошибок, который связан с делением неверного сообщения на порождающий полином и сравнение веса (ш) остатка с числом (t) исправляемых ошибок. Если w > t, то осуществляется сдвиг кода полинома влево на 1 бит и выполняется снова деление полученного полинома на порождающий полином. Этот процесс продолжается до тех пор, пока w < t. После этого полином остатка прибавляется к последнему полиному и код этого полинома сдвигается вправо на 4 бита.
Входное сообщение содержит 2 ошибки (биты х13 их11) и соответствует сообщению примера 31. Последовательность действий для исправления ошибок представлена на рис. 7.22.
х14 + х13 + х12 + х" + х10 + х5 + х4 + х2| х* + х7 + х6+х4 + 1
х'4+х'3+х'2+х'|) + х6	х6 + х’ + х2 + 1
х" 4-х6 4-Х5 4-Х4 4-Х2
X11 4-Х10 4-Х9 4-Х7 4-Х3
X10 4- X9 4- X7 4- X6 4- X5 4- X4 4- X3 4- X2
X10 4-XQ 4-Х8 4-Х6 4-Х2
X8 4-Х7 4-Х5 4-Х4 4-Х3
X8 4-X7 4-X6 4-X4 4-X'
x6 + x5 + x3 + x’-> W=4>t
х14 + х” + х12 + х" + X6 + х5 + х3 +1 | х*+х7 + х6 + х4 + 1
х'4 + х'3 + х'2 + х',) + х6	X6 + х’ + X + 1
х" +х'° + х5+х3 + 1
X11 4-х10 4-х9 4-Х7 4-Х3
9	7	S «
X 4-Х 4-Х 4-1 о	К	7 Ч
X 4-х 4-х 4-Х' 4-х
X8 4-Х 4-1
X8 4-Х7 4-Х6 4-Х4 4-1
X7 4-Х6 4-Х4 4-Х
w=4>t
382	Защита данных от ошибок
х'4 + х'3+х8 + х7 + х5+х2+х + 1 | х +х +х +х +1
х14 + х13 + х'2 +х10 + х6	х6 + х4 + х3 + х2 + 1
х" +х7 +Х6 + Х* + х4 + х2 + х + 1
х11+х'° + х9 + х7 + х3
х'° + X9 + X6 + х5 + х4 + X3 + х2 + X + 1
х^ + X9 + X8 + х6 4- х~
х8 + х5 +х4 + х3 + х + 1
х8 + х7 + х6 + X4 + 1
х7+х6 + х5 + х3 + х—► w=5>t
х14 + х9 + х8 + х6 + х3 + х2 + X +1 | х8+х +х +х +1
х|4 + х13+х'2+х'° + х6	х6+х5 + х3 + х
х13 + х12 +х'° + х9 + х8 + х3 + х2 + X + 1
х|3 + х12 +х" +х9 + х5
х11 + х10 + х8 + х5 + х3 + х2 + X + 1
х" + х'° + х9 + х7 + х3
X9 + X8 + х7 + х5 + х2 + X + 1
х9 + х8 + х7 + х5 + х
X2 +1----► w=2=t
Суммирование последнего полинома с полиномом остатка:
х14 + х9 + х8 + х6 + х3 + х2 + х + 1
х2 +1
1514 131211 10 9876543 21
х'4 + X9 + X8 + X6 + X3 + X2 + X-► 100001101001010
Исправленное сообщение после сдвига кода вправо на четыре бита (рис. 7.22).
1514 1312 1110 95765 43 21
101010000110100
х,4 + х,2+х,0 + х5+х4+х2
Рис. 7.22. Последовательность действий для исправления ошибок
Структурная схема устройства исправления ошибок декодера рассмотренного примера показана на рис. 7.23.
Принцип работы схемы декодера выполняется в соответствии с рассмотренной последовательностью действий для исправления ошибок.
Регистр сообщения принимает код сообщения, который затем поступает на делитель, выполненный на основе регистра сдвига с обратными связями и элементами М2. Если сообщение без ошибок, то в делителе код остатка равен нулю. При наличии сбойных битов в делителе образуется код остатка. С помощью де-
Коды Рида-Соломоно
383
Сообщение
V Т
Регистр сообщения -<
Буферный регистр
А
Сумматор М2
Делитель
Код остатка
Дешифратор количества I
Ошибка
Схема сравнения
I
Сигналы управления
А А
►
► Блок управления
I	*
ТС	Пуск
Рис. 7.23. Структурная схема декодера
шифратора количества единиц находится вес tv остатка. Вес tv сравнивается с количеством исправляемых ошибок t в схеме сравнения и если w > t, то содержимое в регистре сообщения сдвигается влево на 1 бит и выполняется снова процесс деления. Описанная процедура выполняется до тех пор, пока вес ш не станет меньше или равен t. После этого код остатка суммируется по модулю М2 с результатом последнего сдвига и через буферный регистр заносится в регистр сообщения. Затем выполняется циклический сдвиг вправо на определенное количество битов и в регистре сообщения формируется исправленное сообщение.
7.7.	Коды Рида-Соломона
Коды Рида-Соломона (PC) являются кодами над полем GF(q), для которого т= 1 и п = qm - 1 = q - 1, способные исправлять различные комбинации ошибок. Порождающий полином кодов PC представляется в виде произведения G(x) =
384	Защита данных от ошибок
= (х- а)(х- а2),..., (х- ad-1), где а - примитивный элемент поля GF(q). Поэтому коды PC имеют длину п с d-1 контрольными битами.
Из этого определения следует, что коды PC являются важным подклассом кодов БЧХ, получаемых при т= 1 (здесь т является степенью q).
Пример 34. Построить код PC (15,10), исправляющий 3 ошибки. Так как t = 3, то d = 2t- 1 =5. В этом случае порождающий полином находится из следующего выражения:
G(x) = (х- сс)(х — ос2)(х — ос3)(х — ос4)(х — а5).
С учетом представления элементов поля GF(16), показанного в табл.7.6,
G(x) = х5 + (а5 + а4 + а3 + а2 + ocjx4 + (а9 + а8 + а3).*3 + (а12 + а11 + а7 + а6)х2 +
+ (а14 + а13 + а12 + а11 + а10)х + а15.
Выражение для G(x) получается непосредственным перемножением минимальных функций (х + а1) и приведением подобных членов с учетом замены вычитания сложением по модулю 2, например для х4 получаем следующее выражение:
(а2*4 + ах4 + а3*4 + ос4.*4 + ос5*4) = х4(а5 + а4 + а3 + а2 + а).
Из табл. 7.6. видно, что
а5 = х2 + х; а4 = х4 + 1; ос3 = х3; а2 = х2 и а = х,
тогда
(л2 + X + X + 1 + Л3+Л2 + Х)=Л3+Х + 1=0С7.
После выполнения подобных преобразований порождающий полином
G(x) = х5 + а7*4 + ос10.*3 + осх+ 1.
Так как X - п = 5, то п = 10, причем Л = 15 - общая длина сообщения, п = 10 -длина кода данных и 5 - количество контрольных бит.
Учитывая, что символ из поля GF(16) равен четырем битам, то многочлену сообщения в случае последовательной передачи соответствует код, равный 60 битам, а полиному данных - код, состоящий из 40 бит.
Пример 35. С целью увеличения быстродействия делитель входного сообщения на порождающий полином G(x) может быть построен по следующей схеме (рис. 7.24).
I	а	с?"	а'
RGo	RG| RG? у	RGi у	RGu
yz	у/	z	7
► х ► М2 X	х- х ► М2 х- х - М2 х- х - М2
4	4	4	4	4	4	4	4	*
Iho.i
Порождающий полином :G(x) = х5 + ос7х4 + а"'х1 + ах +1
- схема умножения на а'
Рис. 7.24. Последовательно-параллельная схема делителя (кодера)
Коды Ридо-Соломоно
385
Схема построена по известному принципу, изложенному ранее, только вместо триггеров используются 4-битовые регистры RG4 - RG0, число которых равно степени полинома G(x). Параллельная схема умножения на ос1' выполняются следующим образом. Рассмотрим принцип построения схемы умножения на ос. При создании схемы умножения используются представления элементов в поле GF(16), которые показаны в табл. 7.6. Представим произвольный элемент поля GF(16) в виде b = Ь3а3 + Ь2ос2 + t^oc + Ьо и найдем произведение ос • Ь = Ь3ос4 + Ь2ос3 + + кос2 + кос = к (ос + 1) + кос3 + кос3 + кос = кос3 + кос2 + (к + к)ос + к (рис. 7.25).
L	U	7 Z	1	U	Z	1	v о СИ	О	7
вз в2 — в, —' во 	' Рис. 7.2!	М2 5. Схема yi	мно:	—► в’з ► в 2 ► в’г —► во жения на а
Аналогичным образом определяем
a7b = (b2 + b0)a3 + (b3 + bja2 + (b3 + Ь0)а + b3 + bt + Ьо.
По найденному произведению ос7Ь можно построить схему умножения на ос7 (рис. 7.26).
Параллельная схема суммирования выполняется так, как представлено на рис. 7.27.
Схема декодирования с вылавливанием ошибок может быть построена с использованием принципа, показанного на рис. 7.20 с учетом параллельной передачи четырех битов поля GF(16).
386
Зощито донных от ошибок
Рис. 7.27. Параллельная схема суммирования
Для кодов PC и БЧХ известны различные алгебраические процедуры исправления ошибок [1, 2], которые здесь не рассматриваются.
7.8.	Каскадные коды
Каскадные коды являются эффективными комбинированными кодами, состоящими из внутренних и внешних кодов и предназначенными для увеличения помехозащищенности информации.
Сущность построения каскадных кодов лучше всего понять на простом примере [2].
Пример 36. Двухкаскадный код (рис. 7.28) содержит в качестве внутреннего кода 2-й код Хэмминга (7. 4), а внешним кодом является кодом Рида-Соломона (15, 7), элементы которого определились полем GF(24).
t<4
Внешний код PC (15,7)
t = l
Внутренний код Х(7 4)
канал связи
Внутренний код Х(7,4)
Г<4
Внешний код PC (15,7)
t - число ошибок
Рис. 7.28. Схема передачи двухкаскадного кода
Код Хэмминга (Х(7,4)) исправляет одну ошибку, акодРС (15,7)-до четырех ошибок. Рассмотрим построение каскадного кода (105, 28), показанного на рис. 7.29.
Из рис. 7.29 видно, что блок данных из 28 битов данных кодов PC (15.7) содержит семь 4-битовых подблоков. Затем из каждого подблока формируется код Хэмминга.
Каскадные коды	387
_	Контрольные биты
Биты данных
। 4 бита	। 4 бита ।	, 4 бита ।	। 4 бита	। 4 бита ।	। 4 бита !
1	1	I 2 I 	• • 1	1	1	1	1	2	1 •'	'• 1	8	1
♦	♦	♦	♦	♦	♦
Код X (7.4) X (7.4)	X (7.4^	х (7.4)	^х (7.4)	X (7.4)^	X (7.4)
7x7=	=49 бит		7x8=	56 бит	
Рис. 7.29. Построение каскадного кода (105, 28)
В общем случае, если внутренний код имеет параметры (X. и), а внешний код-(М, Л/), то двухкаскадный код определяется параметрами (ХМ, nN), где X и Мхарактеризуют общую длину сообщений соответственно внутреннего и внешнего кодов, а п и N- длину кодов данных в этих сообщениях соответственно для внутреннего и внешнего кодов:
РС(15,7)
Х(7,4)
п=4	п=3
Н---------- М = 15------------►)
В рассматриваемом примере двухкаскадный циклический код (ХМ, nN) = (105,28), таккакХ = 7, М= 15, п = 4 и А = 7.
В каскадном коде, таким образом применяются различные способы кодирования, в результате чего возможно исправление большого числа ошибок (пакетов ошибок) за счет получения блокового кода большой длины.
На приемной стороне после получения каскадного кода вначале декодируется внутренний код, а затем и внешний. Принятое сообщение может иметь ошибочные биты или стирания:
1 001 1_1 -..-1 01.01 ... 01 1,
где ошибочные биты подчеркнуты, а стирания показаны прочерком. Если приемник не определил значение бита, то он считается стертым. После декодирования сообщения внутренним и внешним кодерами оно может быть восстановлено:
Исправленные биты
101101001110001 ...0 1 1
Стертые биты
Перемежение - способ повышения помехоустойчивости кодов при действии пакетов ошибок. Перемежение может выполняться на уровне битов или на уровне блоков битов. Например, пусть Ар А^, А3, А4, ... и Вр В2, В3, В4, ... два блока битов кода PC, тогда после перемежения код PC имеет следующий вид:
АР Ajj, А3, А4, Br В2, В3, В4, А5, Ag, А7, А8, В5, В6, В7, В8 ...
После перемежения в заданном порядке блоки кодов разносятся друг от друга в пространстве и во времени.
388
Защита данных от ошибок
В дисководах CD для защиты, например звуковой информации от ошибок и выпадений используется каскадный двухступенчатый принцип кодирования с помощью кода Рида-Соломона и перемежения данных (кода CIRC). Сам код Рида-Соломона (CRC) эффективно используется для исправления случайных независимых ошибок. Перемежение заключается в перестановке сообщений, так чтобы пакетные ошибки разнести в пространстве и превратить их в независимые.
Один из вариантов достаточно сложного каскадного двухступенчатого кодирования и декодирования показан на рис. 7.30.
Вход
Вюрая ciyrieiib
Первая ciyncHb
Код CIRC
Код ЧС1НОС1И
I
Код четности и код CIRC
Формирование
► ОСОКОЙ О1ЧС1ОВ для
2-х каналов
Кодер 8х 14
Первая ступень
Вторая ciyiienb
► Декодер 8х 14
▼
Исправление случайных ошибок с помощью кодов CIRC и четности
Исправление пакетов ошибок с
помощью кодов CIRC и четности
т	Выход
ЦАП	►
Рис. 7.30. Каскадный двухступенчатый кодек CD
Принцип работы кодека CD выполняется следующим образом. Аналоговый звуковой сигнал поступает на вход преобразователя АЦП, формирующего 16-битовые цифровые отсчеты. Затем происходит формирование информационных блоков отсчетов для двух каналов. После этого осуществляется перемежение (перестановка) символов отсчетов и формируются строки матрицы, поступающие на первую ступень кодера, осуществляющего каскадное кодирование с использованием кодов Рида-Соломона (28, 24) для исправления одиночной ошибки и символов четности с общим кодовым расстоянием ступени d = 5. На второй ступени каскадного кодирования также используются коды четности и Рида-Соломона (32, 28). Кодовое расстояние d второй ступени тоже равно 5.
После этого в кодере 8/14 осуществляется кодирование информации с целью записи и размещения ее надиске, позволяющее затем обнаружить и считать эту информацию. Кодер 8/14 преобразует 8-битовые коды в 14-битовые, содержащие не меньше двух и не больше десяти нулей, позволяющие электронике надежно считать длинные последовательности с большим числом нулей.
При считывании информации с CD выполняется обратное преобразование в декодере 8x14 14-битовых кодов в 8-битовые. Затем в первой ступени декодера осуществляется исправление случайных ошибок каскадным кодом с помощью кодов CIRC и символов четности, при этом выполняется обратное перемежение. Вторая ступень обрабатывает в основном пакеты ошибок и исправляет
Упражнения	389
до четырех стираний при d = 5. Исправленная информация после этого поступает в преобразователь ЦАП, на выходе которого формируется аналоговый звуковой сигнал.
Упражнения
32 10 Упражнение 1. Для порождающего полинома G(x) = л3 + х + 1 и кода данных 1011 найти 7-битовый код сообщения.
6543210
Упражнение 2. Проверить правильность принятого сообщения 1110100, порождающий полином которого G(x) = х3 + х + 1.
Упражнение 3. Построить схему деления на полином л3 + х + 1с использованием регистров сдвига и элементов М2.
Решение.
Упражнение 4. Для схемы упражнения 3 заполнить таблицу истинности ра-6543210
боты этой схемы для кода сообщения 1110100.
Таблица истинности
Такт	Вход То Т, Т2
1	1
2	1
3	1
4	О
5	1
6	О
7	О
Упражнение 5. Для порождающего полинома G(x) = х4 +х + 1 и кода данных 109 8765432 10 11101101011 найти 15-битовый код сообщения.
Упражнение 6. Проверьте правильность принятого сообщения, рассмотренного в упражнении 5.
Упражнение 7. Пусть в передаваемом сообщении произошла ошибка - хи. Тогда сообщение из упражнения 5 примет вид: х14 + х13 + х12 + х11 + х10 + лв + х7 + + х5 + х4 + х3. Определите наличие ошибки в принятом сообщении.
390
Защита данных от ошибок
Упражнение 8. Постройте схему деления (на основе регистра сдвига и элементов М2) входного сообщения на порождающий полином х4 + х + 1.
Упражнение 9. Составьте таблицу истинности работы схемы упражнения 8 для входного сообщения:
10111298 7 6 54 3 2 1 0
1110110111000.
Упражнение 10. Определите для конструктивного, минимального кодового расстояния d = 7 число исправляемых ошибок.
1)	1:
2)	2;
3)	3;
4)	4.
Упражнение 11. Представьте код 10101 в виде полинома фиктивной переменной х.
1)	X5 + X2 + XJ
2)	х5 + х2 + х1:
3)	х4 + х3 + х°:
4)	х4 + х2 + х°.
Упражнение 12. Найдите результат умножения двух полиномов (х3 + х + 1)(х + 1).
1)	х3 + х2 + 1;
2)	х4 + х3 + х2 + 1;
3)	х4 + х3 + х;
4)	х4 + х2 + 1.
Ответ: 4.
Контрольные вопросы
1.	Код с параметрами (7.4) является кодом с исправлением
1)	четырех ошибок:
2)	двух ошибок:
3)	одной ошибки:
4)	трех ошибок.
2.	Укажите, для какой пары кодов кодовое расстояние равно 2.
1)	10110:	3) 10111:
01010	10000
2)	10111:	4) 01111.
ПОП	00010
3.	Покажите количество бит контрольного кода, определяемого порождающим полиномом х4 + х + 1.
1) 8:	2) 7:	3) 4:	4) 3.
4.	Назовите тип кода с порождающим полиномом х4 + х3 + Зх + 1.
1)	код БЧХ (БЧХ - Боуза-Чоудхури-Хоквингема);
2)	код Голея:
Контрольные вопросы
391
3)	код PC (PC - Рида-Соломона);
4)	код Хэмминга.
5.	Определите вес следующего кода 101111001.
1) 7;	2) 6;	3) 5;	4) 3.
6.	Укажите в каких кодах правильно представлен бит паритета (БП) четности.
D7 D0БП
1)	1011101 1;
2)	1110111 1;
3)	1001111 1:
4)	1011110 1.
7. Укажите последовательность действий для получения закодированного сообщения, если код данных 1010 и порождающий полином х4 + х + 1.
1)	умножим (х3 + х) на х4;
2)	разделим (х3 + xjx4 на х4 + х + 1 и получим полином остатка R(x);
3)	преобразуем код 1010 в полином х3 + х;
4)	прибавим к л3 + х полином остатка R(x).
8. Для заданных порождающих полиномов определите код БЧХ.
1)	х4 + х+ 1;
2)	х4 + б3^ + х2 + бх + б3;
3)	б4:х? + б3х* + б6х+б4;
4)	лв + х7 + х6 + х4+1.
9.	Назовите коды, порождающий полином которых находится с помощью линейных многочленов.
1)	код с паритетом четности;
2)	код Хэмминга;
3)	код БЧХ;
4)	код Рида-Соломона.
10.	Для кода с параметрами (15, 11) укажите длину кода сообщения, длину кода данных и число контрольных бит.
1)	число контрольных бит 11;
2)	число контрольных бит 4;
3)	длина кода сообщения 14;
4)	длина кода сообщения 15;
5)	длина кода данных 14;
6)	длина кода данных 15.
11.	Выберите по порядку характеристики порождающего полинома G(x) для циклического кода длины и.
1)	G(x) делит полином х" - 1 ;
2)	G(x) делит полином xn+1 - 1;
3)	G(x) полином наибольшей степени;
4)	G(x) полином наименьшей степени;
5)	G(x) примитивный полином;
6)	G(x) полином, делящийся на другие.
392	Защита данных от ошибок
12.	Назовите код длины четыре.
1) 101110;	2) 100011;	3) 10000;	4) 1000.
13.	Определите мощность кода G(26).
1) 32;	2) 64;	3) 128;	4) 256.
14.	Укажите номера пар кодов с минимальным расстоянием для следующих кодов: 101 1, ООП, 1001 и 1010.
1)	+1011	4)	+ ООП
ООП	1001
2)	1011	5)	ООП
1001	1010
3)	1011	6)	1001
1010	10Ю
15.	Если к коду 101010 добавить бит паритета, то назовите его минимальное расстояние.
1)	4,	2) 3;	3) 2;	4) 1.
16.	Определите число t исправляемых ошибок для кода БЧХ с порождающим полиномом х8 + х7 + л6 + х4 + 1.
1)	t=8;	2) t=6;	3) t=4;	4) t = 2.
17.	Выберите операции, определяющие линейный циклический код над полем GF(2).
1)	арифметическое сложение;
2)	сложение по модулю 2;
3)	сдвиг;
4)	логические.
18.	Устройство кодирования и декодирования данных.
19.	Множество кодовых элементов, для которых определимы операции сложения и умножения.
20.	Последовательность, зависящая не от истинных информационных битов, а от конфигурации ошибок.
21.	Способ увеличения помехозащищенности кодов от пакетов ошибок, например кодов Рида-Соломона.
|П| I I I I I I |~Г~ГЁ1
22.	Для полинома х15 - 1, поля GF(24) и его минимального полинома л? + х7 + х6 + + х4 + 1. найти соответственно длину сообщения, длину кода данных и число контрольных бит.
1)15,7,8;	2)15,8,7;	3)8,7,15;	4)7,8,15.
Литература	393
Литература
1.	Блейхут Р. Теория и практика кодов, контролирующих ошибки / пер. с англ. -М.: Мир, 1986. - 576 с.: ил.
2.	Питерсон У., Уэлдон Э. Коды, исправляющие ошибки / пер. с англ., под ред. Р. Л. Добрушина, С. Н. Самойленко. - М.: Мир, 1976.
3.	Перспективы развития вычислительной техники: в 11 кн.: справ, пособие / под ред. Ю. М. Смирнова. Кн. 9: Внешние запоминающие устройства на магнитном носители / В. Г. Макурочкин, С. Л. Горбацевич, А. И. Луньков и др. -М.: Высшая школа, 1989. - 175 с.: ил.
4.	НакадзимаХ., Огава X. Цифровые грампластинки / пер. с япон. - М.: Радио и связь, 1988. - 168 с.: ил.
5.	Селлерс Ф. Методы обнаружения ошибок в работе ЭЦВМ / пер. с англ. - М.: Мир, 1972. - 310 с.: ил.
Пространственные интерфейсы ввода/вывода
8.1.	Устройства связи вычислительных систем
ычислительная система - это система, состоящая из ряда процессоров (П) и периферийных устройств, имеющая общую оперативную память (ОП) U и работающая под управлением одной операционной системы. Вычислительная система наиболее подходит для реализации сложных научно-технических задач (решения задач матфизики, оптимального управления, параметрической оптимизации и т. п.), выполнения многозадачного пакетного режима и (или) осуществления многопользовательского доступа к ресурсам системы. При создании вычислительной системы самой трудной задачей является задача построения устройства связи ресурсов для их совместной работы. В качестве устройств связи могут быть использованы общая системная шина, коммутационное устройство (КУ) или многоканальная оперативная память. Достоинством структуры с общей шиной являются простота реализации и невысокая стоимость системы, а недостатком - небольшое быстродействие, ограничивающее число процессоров, подключаемых к шине. Для того чтобы снять нагрузку на общую интерфейсную шину, являющуюся самым «узким» местом в системе, используют кэш-память, доступ к которой со стороны происходит в течение короткого времени. Данные процессора (П) дублируются в кэш-памяти, а затем после ее заполнения переписываются в ОП. На рис. 8.1 представлена структурная схема устройства связи, реализованного на базе общей системной шины.
Для организации доступа активных устройств (П) к общей системной шине предназначен арбитр шины, получающий запросы от процессора и выполняющий их приоритетное обслуживание. Обычно арбитр шины использует два режима обслуживания запросов: фиксированный и циклический приоритеты. При фиксированном режиме приоритет определяется идентификационным номером процессора. Циклический приоритет является переменным и позволяет реализовывать равнодоступное обращение процессора к системной шине. Для построения мультипроцессорных систем некоторыми фирмами предполагается набор микросхем, выполняющих управление кэшем, ОП и системной шиной. Наиболее важной частью таких систем является системная шина. Мультипроцессорная система М/РАХ содержит 128-разряднуто шину данных, 32-разряд-
ную шину адреса и 28-разрядную шину управления. Известны системы с двухшинной архитектурой, причем одна шина используется для связи с процессором, а другая - для связи ПУ и процессора.
Недостатком вычислительных систем с общей системной шиной лишены системы, в которых устройства связи (УС) реализованы на базе КУ (рис. 8.2).
Известны КУ различных типов: матричные, многокаскадные, с централизованным или децентрализованным доступом для установления соединения, блокируемые, полнодоступные, временные, пространственно-временные и т. д. На рис. 8.2 показана структурная схема УС, выполненная на базе КУ.
LL1P|
Рис. 8.2. Структурная схема УС с коммутационным устройством
396
Пространственные интерфейсы ввода/вывода
В этой схеме используются связные контроллеры (CK^CKJ, подключенные через соответствующие шины расширения ШР1-ШРп к П1-Пп. Кроме того, СКг-СКп информационными выходами Х1-Хп и входами Y1-Yn соединены с КУ. Установление (сброс) заданных соединений осуществляется блоком управления коммутацией (БУК). Каждый из СКг-СКп получает приоритетный доступ к БУК и передает ему адресную информацию, необходимую для построения нужной связи. БУК проверяет состояние абонента-приемника (CKJ и, если он свободен, устанавливает соединение и сообщает об этом абоненту-передатчику (CKJ, который после этого осуществляет передачу данных. Протокол установления связи напоминает последовательность действий телефонных абонентов: вызов, набор номера (передача адреса), ожидание состояния вызываемого абонента и передача данных. Координацию работы БУК осуществляет системный процессор (СП), который, кроме того, может выводить списки адресной информации для построения нужных соединений, когда эти соединения заранее известны. Для реализации многопользовательского режима к каждому процессору П подключены соответствующие терминалы Tf Таким образом, УС выполняет пространственное одновременное соединение множества шин расширения, то есть реализуется пространственный интерфейс ввода-вывода.
Для уменьшения числа линий связи между процессорами иногда предлагается использовать иерархическую систему связи между процессорами: сильная связность соседних процессоров и слабая - удаленных.
Устройства связи, построенные на базе многоканальной ОП, имеют число каналов, равное числу устройств, которые к ней подключаются. В этом случае средства коммутации могут быть распределены между устройствами или выполнены в виде централизованного КУ с приоритетным доступом к каждому каналу ОП.
8.2.	Назначение пространственных интерфейсов
Для решения научно-технических задач, допускающих распараллеливание вычислений, или (и) для выполнения работ нескольких пользователей (режима коллективного обслуживания) наиболее употребительны многопроцессорные системы (МС).
Большинство известных МС используют общую шину расширения (временной интерфейс, в котором в каждый момент времени взаимодействуют инициатор и исполнитель) для связи процессоров между собой, ограничивающую скорость передачи данных в системе. Попытки увеличить разрядность общей шины или использовать несколько шин не решают проблему транспортировки данных.
С увеличением быстродействия, степени интеграции, разрядности и числа процессоров эта проблема становится важной и актуальной.
Существует мнение, что связанные системы по типу «каждый с каждым» не пригодны в связи с увеличением числа линий, пропорциональным квадрату числа процессоров. Поэтому с целью уменьшения числа линий предлагается иерархическая система связей, однако, не решающая задачу полнодоступного и быстрого сопряжения процессоров.
С развитием соответствующей элементной базы и степени ее интеграции возможно построение экономных пространственных интерфейсов ввода-вывода (ПИ), допускающих одновременную многократную и произвольную передачу данных между процессорами (несколькими инициаторами и исполнителями).
Назначение пространственных интерфейсов
397
Последовательные (параллельные) ПИ могут быть реализованы на базе коммутационных устройств (КУ) различных типов.
При решении сложных научно-технических задач на многопроцессорных системах (решение задач матфизики. моделирование динамических процессов, оптимального управления и т. д.) список соединения процессоров известен заранее (режим разовой коммутации).
В режиме коллективного обслуживания абонентов соединения между ресурсами системы возникают и распадаются произвольно во времени, как это происходит между телефонными абонентами.
Такой режим взаимодействия абонентов соответствует одиночной (случайной) коммутации. Одиночная и разовая коммутация требуют различных подходов в организации управления работой КУ. В первом случае каждый абонент (ресурс системы) выполняет доступ к КУ с целью осуществления желаемого соединения. Во втором случае известный список поступает в КУ со стороны системного (центрального) процессора, а ресурсы системы (процессоры, оперативная память) подключены к КУ и не участвуют в реализации соединений. Таким образом, универсальное КУ должно обеспечивать режимы разовой и одиночной коммутации.
Как уже отмечалось, шина расширения (магистральный системный интерфейс) представляет собой временной распределенный по ресурсам системы коммутатор, предназначенный для передачи адреса, данных и сигналов управления, в котором в каждый момент времени работают один инициатор и один исполнитель.
В пространственном интерфейсе, построенном на базе пространственного коммутатора, наиболее просто реализовать пространственную многошинную архитектуру для передачи данных и сигналов управления (квитирования).
Пространственный интерфейс позволяет использовать несколько инициаторов (передатчиков информации) и несколько исполнителей (приемников информации) для их одновременной работы. В большинстве случаев применения пространственного интерфейса нет необходимости для передачи адреса от инициатора к исполнителю, так как этот адрес используется для установления соединения в пространственном коммутаторе между соответствующими инициатором и исполнителем.
Пространственный интерфейс ввода-вывода, кроме того, может быть применен как для построения многопроцессорного сервера, так и для локальной сети. В обычной локальной сети, состоящей из сервера и рабочих станций, память одной рабочей станции недоступна другой, кроме того, возникает проблема разрешения конфликтного доступа. Локальная сеть с пространственным интерфейсом ввода-вывода устраняет указанные недостатки и может использовать функции обычной локальной сети (территориальное удаление рабочих станций, наличие собственной операционной системы для каждой рабочей станции, передача кадра заданного формата) или функции многопроцессорной системы (наличие общей операционной системы, передача адреса и данных ит. д.). Недостатком локальной сети с пространственным интерфейсом ввода-вывода является относительная сложность коммутационного оборудования, поэтому область ее применения - та, где требуются высокая производительность и живучесть сети. Известная локальная сеть (ЛС) представляет собой множество различных абонентных ЭВМ, связанных между собой с помощью единого временного сетевого интерфейса, называемого моноканалом. Пропускная
398
Пространственные интерфейсы ввода/вывода
способность моноканала - до 10-20 Мбит/с. Моноканал содержит коаксиальный (оптико волоконный) кабель или свитую пару проводников. Наличие одного моноканала снижает производительность ЛС, так как сеанс связи выполняется только между двумя абонентами в текущий момент времени. Кроме того, в таких ЛС обнаружение конфликтной ситуации на линии связи осуществляется про-граммно-аппаратным способом, что также снижает производительность ЛС.
Рассматриваемый в этом разделе сетевой пространственный интерфейс ввода-вывода (устройство сопряжения связных контроллеров с программируемой коммутацией и последовательной одновременной передачей данных) свободен от указанных недостатков известных ЛС.
Взаимодействие связных контроллеров с помощью пространственного интерфейса ввода-вывода напоминает последовательность действий между телефонными абонементами автоматической телефонной станции (АТС). При снятии телефонной трубки в АТС поступает сигнал «Вызов». Если АТС готова получить информацию, то она выдает сигнал «Ответ станции». После этого абонент, используя номеронабиратель, передает номер (адрес) вызываемого абонента, который может быть занят или свободен. Если вызываемый абонент свободен, то между абонентами устанавливается передача данных (разговорное состояние) до тех пор, пока один из абонентов не положит трубку. Аналогичным образом выполняется взаимодействие между связными контроллерами и КУ: запрос КУ, получение разрешения, передача адреса вызываемого связного контроллера, анализ его состояния и передача данных, если он свободен. Причем при передаче информации между связными контроллерами можно использовать обычный формат кадра данных, применяемый в ЛС.
Для произвольного и полнодоступного сопряжения множества шин расширения компьютеров наиболее употребительными являются последовательные пространственные интерфейсы, позволяющие существенно упростить сложность коммутационного оборудования.
8.3.	Структура данных КУ
К числу основных вопросов, решаемых при создании систем обработки информации, относятся вопросы коммутации процессоров в соответствии с информационным графом вычислительного процесса. Информационным графом вычислительного процесса называется ориентированный граф G, в котором каждая вершина помечена выполняемой задачей и каждая дута (упорядоченная пара вершин) соответствует переменным задачи и определяет их задание и использование. На рис. 8.3 изображен гипотетический информационный граф G, в котором каждый выход вершины обозначен символом X. (i = 1,5), а каждый вход вершины - символом У (j = 1,5).
С целью упрощения рисунков граф G представлен без неординарных связей, в которых выход какой-либо вершины соединяется с выходами других вершин. Информационный граф G может быть представлен матричной и списковой структурами данных.
Матричная структура данных представления графа G показана на рис. 8.4.
Наличие 1 в (i, j)-m элементе этой матрицы означает соединение i-й вершины X. с J-м входом соответствующей вершины, а 0 - отсутствие соединения (пустые клетки матрицы). Матричной структуре данных графа G сопоставляется матричный коммутатор, условное изображение которого представлено на рис. 8.5
К, X, X, *4	y2 /	К < /	к < ! к	Ys k	>	< /	
						
						
	л X- *					
						
						
Рис. 8.5. Условное иг		юбражение матричного коммутатора				
(точками помечены требуемые соединения соответствующих информационных входов и выходов).
Списковая структура данных представления графа G изображена на рис. 8.6, в котором каждому выходу X. (I = 1,5) вершины ставится в соответствие адрес Ахе а каждому входу Y.(j = 1,5) вершины - адрес Ау. и порядок связи каждого выхода задается указателем (адресом входа), с которым он соединен.
Списковой структуре данных сопоставляются списковые КУ. которые здесь не рассматриваются, а только используется списковая структура данных для организации настройки (установления связей) матричных КУ.
400	Пространственные интерфейсы ввода/вывода
Рис. 8.6. Списковая структура данных представления графа G
8.4.	Элементная база пространственных интерфейсов
Как уже отмечалось, пространственные интерфейсы ввода-вывода могут быть реализованы на базе КУ различных типов.
В Таганрогском НИИ МВС, лаборатории БИС коммутаторов разработаны и освоены в серийном производстве микросхемы К1509 КП 1 и К1029 КП2 (микросхемы матричных коммутаторов), предназначенные для построения однокаскадных (матричных) и многокаскадных КУ с централизованным доступом (режимом настройки на требуемые соединения). Кроме того, на промышленной технологической базе изготовлены экспериментальные образцы микросхем универсального матричного коммутатора (УМК) с встроенным контролем информации. Исходной (базовой) микросхемой является микросхема К1509 КП1, структурная схема которой представлена на рис. 8.7 и содержит буферы ввода и вывода (БВв и БВыв), триггеры (Т), ключи (К) и дешифраторы (Дш Ах и Дш Ау).
Микросхема К1509 КП 1 - матричный коммутатор 16x16, содержащий 16 информационных входов Х-Х16 и 16 информационных выходов Уг-У16. Для установления соединения информационного входа X. с информационным выходом J. необходимо подать 4-разрядный адрес Ах. входа X. и 4-разрядный адрес Ау; выхода У. Кроме того, для выполнения этой операции следует на входах тх (CS) и тпу (STB) установить соответствующие сигналы. Эти входы необходимы для построения матричных коммутационных полей большей емкости. Стробирующий сигнал ту является, кроме того, сигналом записи «1» в соответствующий триггер матричного коммутатора (сигналом установления соединения). Таким образом, для установления соединения следует на соответствующих входах микросхемы установить требуемые коды сф,, ау и сигналы тпх = ту = 1. Для сброса желаемого соединения входах. и выхода Y.устанавливается адрес Ау. выхода Y. и сигналы ту = 1 и тх = 0 (состояние входов ах является безразличным). Для выполнения сброса соединений всех выходов Y- У1е требуется 16 тактов. Микросхема К1509 КП 1 относится к классу КУ с разделенными полюсами (информационными входами и выходами), в каждом столбце триггеров которых, соответствующихj-му выходу, может храниться только одна единица (одно соединение).
Передача данных выполняется как в асинхронном (V= 0), так и в синхронном (V= 1) режиме с использованием тактовых сигналов CLK. Перевод всех выходов микросхемы в высокоомное состояние осуществляется входным сигналом Q = 0.
Функциональная классификация микросхем приведена в табл. 8.1.
Элементная база пространственных интерфейсов
401
тх (STB)
Рис. 8.7. Структурная схема микросхемы К1509 КП 1
Таблица 8.1		
Уровни	Признаки	Микросхемы
Дисциплина обслуживания	Матричная полнодоступная неординарная коммутация цифровых или аналоговых сигналов	КП1, КП2.УМК
Режим установления (сброса) связи		
Доступ	Централизованный, совмещенный с передачей данных	КП1, КП2.УМК
Структура данных	Списковая	- « -
Способ согласования во времени	Синхронный	- « -
Способ передачи адресов	Параллельно по словам и разрядам, последовательно по словам и параллельно по разрядам	- « -
Режим хранения коммутационных данных		
Структура данных	Матричная	КП 1, КП2.УМК
Иерархия памяти	Запоминающая матрица (ЗМ), наличие дополнительной ЗМ	КП2, УМК
Режим передачи данных		
Структура данных	Определяется пользователем, например формат последовательной кодовой посылки RS-232	КП1, КП2.УМК
Способ согласования во времени	Синхронный, асинхронный		- « -
Способ передачи данных	Симплексный, параллельный по словам и последовательный по разрядам	- « -
402
Пространственные интерфейсы ввода/вывода
Параметрическая классификация микросхемы представлена в табл. 8.2.
Таблица 8.2
Признаки	Микросхемы		
	КП1	КП2	УМК
	К1509	К1029	КБ1077КП1
Число информационных входов и выходов	16х 16	16х 16	32x32, 16х 16, 16х 16
Частота информационных сигналов (МГц)	10	10	10
Потребляемая мощность (Вт)	0.7	0.7	0.7
Напряжение питания (В)		5± 10 %	
Состояния выходов		0.1.Z	
Смена программы коммутации (такты)	16	16.1	16,32,1
Технологическая классификация микросхем показана в табл. 8.3.
Таблица 8.3
Признаки
Структуры выполнения
Схемы согласования
Микросхемы
КП1	КП2	УМК
п-канальные МДП	КМДП	КМДП
ТТЛ	ТТЛ. МДП	ТТЛ. МДП
8.5.	Структурная схема пространственного интерфейса
Пространственный интерфейс (ПИ) ввода-вывода предназначен для полнодоступного (программного) сопряжения множества шин расширения компьютеров и выполняет следующие основные функции:
•	протокола обмена:
•	аппаратной реализации решения проблемы конфликтной ситуации, связанной с обращением нескольких абонентов (компьютеров-передатчиков) к одному абоненту (компьютеру-приемнику).
На рис. 8.8 представлена общая структурная схема ПИ.
Пространственный интерфейс содержит связные контроллеры СКг-СКп, подключенные с помощью слотов к шинам расширения ШР -ШР , например ISA (PCI). Кроме того, СКг- СКп соединены с информационными входами Х1-Хп и выходами Y -Y коммутационного устройства (КУ).
Установление соединения (сброс) осуществляется блоком управления коммутацией (БУК), содержащим регистры адреса РАх Мх и РАу Му. С целью отслеживания состояний выходов Y -Y КУ (свободны или заняты) в БУК введен блок состояний (БС). Каждый СК. может осуществлять прием или передачу информации через КУ. Взаимодействие СК с шиной расширения ШР. выполняется через порты (физически адресуемые регистры). К ШР1-ШРп подключаются системные
Структурная схема пространственного интерфейса
403
Рис. 8.8. Общая структурная схема ПИ
платы или непосредственно процессоры. Координацию работы ПИ осуществляет программным способом системный процессор (СП), который, кроме того, может передать (принять) данные в любой СК. с помощью СКп+ г и КУ. Для выполнения приоритетного доступа СКг-СКп к БУК используется блок приоритета (БП) с равноправной (циклической) и (или) фиксированной дисциплиной обслуживания.
Известны другие, более простые методы выбора устройства: последовательная приоритетная цепочка и опрос (полинг).
Протокол обмена данными СКг-СКп напоминает взаимодействие телефонных абонентов с АТС (одиночная, случайная коммутация). При необходимости сеанса связи СК. (передатчик) устанавливает сигнал запроса (3.). После получения сигнала разрешения (Р.) СК устанавливает адрес Ау Му на шину ШАу Му (адрес СК. (приемника)). В свою очередь, БП формирует на шине ШАх Мх адрес Ах Мх, соответствующий сигналу 3., и сигнал общего запроса (ОЗ). По сигналу ОЗ и адресу Ау Му СП анализирует состояние выхода Y КУ путем чтения содержимого блока состояния (БС). В том случае, если выход У. свободен (не занят СК.), с помощью регистров РАх Мх и РАу Му устанавливается связь между X. входом и выходом Y. КУ и в БС отмечается факт занятости выхода Y.(СК).
404
Пространственные интерфейсы ввода/вывода
Рассматриваемый ПИ может реализовывать и разовую коммутацию СКг-СКп,
когда список соединений известен заранее. В этом случае СП выводит программу коммутации непосредственно в БУК и устанавливает требуемые соединения с помощью КУ. Передача данных между СК. и СК; осуществляется последовательными кодами в стартстопном формате или параллельными кодами.
8.6.	Матричное КУ
Базовым элементом пространственного интерфейса является КУ. Рассмотрим принцип построения матричного КУ с учетом микросхем матричных коммутаторов. На рис. 8.9 показана структурная схема матричного КУ, содержащая микросхемы матричных коммутаторов MKn-MKrs, адресные регистры РАх и РАу и дешифраторы строк и столбцов микросхем Дш Мх и Дш Му.
Выходы МКу-МК^ через монтажное ИЛИ подключены к У информационному выходу матричного КУ. В работе матричного КУ можно выделить два основных режима: режим настройки (установления требуемых соединений) и режим пе
Трехкаскадное KU	405
редачи данных. В режиме настройки в КУ выводятся адреса информационных входов Ах Мх и адреса Ау Му информационных выходов. Для каждой пары адресов Ах Мх и Ау Му (с целью записи соединения) устанавливаются стробовые сигналы СТРг = СТР2 = 1. Адреса Ах и Ау определяют выбор соответствующих информационного входа Xt и информационного выхода Yj во всех микросхемах МКиМКг< а выбор конкретной микросхемы (строки и столбца) осуществляется адресами Мх и Му.
Для сброса соединения информационного выхода Y. в матричное КУ выводится адрес Ау Му и устанавливаются сигналы СТРг = 1 и СТР2 = 0.
Недостатком матричного КУ является сложность коммутационного оборудования. Например, при построении последовательного ПИ для 128 абонентов требуются 64 микросхемы К1509КП1 или 16 микросхем УМК.
С целью упрощения матричного КУ передача данных между связными контроллерами (СК) выполняется последовательными кодами, имеющими старт-стопный формат. На рис. 8.10 представлен упрощенный матричный интерфейс с квитированием.
Рис. 8.10. Последовательный матричный интерфейс с квитированием
В схеме используются два матричных коммутатора (МК), один из которых применяется для передачи, например, последовательных кодовых посылок от связного контроллера - передатчика (СК ПЕР.) по линии 1\D, через точку коммутации МК и линию RxD в связной контроллер - приемник (СК ПР). Другой МК необходим для передачи сигнала квитирования от СК ПР. к СК ПЕР , указывающего на то, что СК ПР. пуст и можно передавать следующую последовательную кодовую посылку. Установление соединений в обоих МК выполняется одновременно одной и той же адресной информацией.
8.7.	Трехкаскадное КУ
Матричное КУ, содержащее N информационных входов и N информационных выходов, характеризуется числом точек коммутации Vm = №. С целью уменьшения точек коммутации используют многокаскадные схемы КУ. На рис. 8.11 представлен общий вид трехкаскадной схемы.
406
Пространственные интерфейсы ввода/вывода
Рис. 8.11. Общий вид трехкаскадной схемы
Теорема Клоза утверждает, что трехкаскадная схема с параметрами и, т, г является полнодоступной и неблокирующей, если т> 2п- 1. Учитывая применение микросхем МК для построения трехкаскадной схемы, полагаем т = 2п и непосредственным подсчетом находим число точек коммутации трехкаскадной схемы VT=2n2r + i^2n + 2n2n Так как r=N/ и, то VT = 2(2Nn+ (W/n)). ЕслиЛГ=256и в качестве МК используется микросхема К1509КП1 (16 х 16), то для построения матричного КУ потребуется 256 микросхем, а для построения полнодоступного трехкаскадного КУ - 96 микросхем. В этом случае в трехкаскадной схеме первый и третий каскады содержат МК, реализованные на двух параллельно соединенных микросхемах КП 1 (16 х 32).
Рассмотрим принцип установления соединений в трехкаскадной схеме. На рис. 8.12 изображена полнодоступная трехкаскадная схема, содержащая информационные входы X -X и выходы У -Y .
В трехкаскадной схеме задан список соединений: X-YQ, Х3-У4, Х4-У3, Х5-У2, Х6-Уг то есть заданы списки адресов Axlt. Муу и Ау3. My3j информационных входов первого и третьего каскадов, причем Ах1. - адрес i-ro входа МКу первого каскада, а Му - адрес МКу, содержащего этот вход. Аналогичным образом определяется адрес выхода третьего каскада Ау3. My3j.
Анализ трехкаскадной схемы показывает, что адрес Ау1г каждого выхода МКу первого каскада определяет адрес МК2г второго каскада и адрес входа MK3s третьего каскада. Так, например, второй выход МКП подключен к МК22 второго каскада, которая, в свою очередь, соединена со вторыми входами МК3]-МК33. Выбрать конкретный MK3j третьего каскада можно по заданной адресной информации Ay3.My3j, в которой, кроме того, адрес My3j определяет адрес выхода Ay2j соответствующего МК2г второго каскада. Точно так же адрес МК (Муу) задает адрес сопоставляемых входов МК21-МК24 второго каскада. Предлагаемый способ установления соединений значительно уменьшает программу коммутации в схеме.
С учетом этого анализа для IV = 256 и при использовании микросхем КП 1 на рис. 8.13 изображена схема адресных связей трехкаскадного КУ.
Схема содержит: микросхемы матричных коммутаторов МК., размещенных по трем каскадам, дешифратор Дш Муг выбора микросхемы МК первого каскада. дешифратор Дш Му2 выбора микросхемы МКг второго каскада, дешифратор Дш Му3 выбора микросхемы МК; третьего каскада, регистр адреса входа MKt первого каскада (РАх) и регистр адреса выхода МК третьего каскада (РАу). Из рис. 8.13 видно, что адрес Муг выборамикросхемы МК. первого каскада, кроме того, задает адрес входа ах в МК. (j = 1,32) второго каскада.
Конфигурация многопроцессорной системы
407
Адрес Ау} выбора выхода (ау) МК. первого каскада дополнительно определяет выбор микросхемы МКг второго каскада. Адрес Му3 выбора микросхемы МК^ третьего каскада, кроме того, используется для нахождения выхода ау МКг второго каскада. Для установления соединений в первом, втором и третьем каскадах необходимо подать на соответствующие входы 8-разрядный адрес входа А Вх (Ах1Му1) и 8-разрядный адрес выхода А Вых (Ау3Му3). Кроме того, аппаратным или программным способом с помощью буфера состояния (БС) выходов первого каскада задаются адреса свободных выходов первого каскада при установлении соответствующих соединений. БС предназначен для вывода адреса свободного выхода первого каскада и имеет простую реализацию (содержит буферную память и приоритетный шифратор).
Таким образом, для установления соединения входа Х.и выхода Y в трехкаскадную схему выводятся адреса АхгМух (входа), Ау3Му3 (выхода) и устанавливаются сигналы СТР = 1 и Мх = 1. Адрес Аут направляется из БС.
Для сброса соответствующего соединения подаются адреса A^Mt/p Ау3Му3 и сигналы Мх = 0 и СТР = 1.
8.8.	Конфигурация многопроцессорной системы
Общая конфигурация многопроцессорной системы с программируемой коммутацией приведена на рис. 8.14. В минимальной конфигурации система содержит микропроцессоры МП0-МП126, а в максимальной конфигурации использу-
408
Пространственные интерфейсы ввода/вывода
1-й каскад	2-й каскад	3-й каскад
16x32	16x 16	32x 16
Рис. 8.13. Схема адресных связей трехкаскадного КУ
ются платы МП0-МП126, каждая из которых подключена к CKI (I = 0-126) с помощью системной шины.
Кроме того, многопроцессорная система включает в себя два однотипных матричных коммутационных устройства КУ0 и КУР образующих коммутационную систему (КС).
КУ0 предназначено для организации полнодоступных пространственных связей между СК0-СК126 с целью передачи данных в асинхронном режиме последовательным кодом, имеющим стартстопный формат.
КУ г одновременно с КУ0 выполняет коммутацию линий квитирования АСК10-АСК1126 (входы Kyj и АСКО0-АСКО126 (входы КУт).
На рис. 8.15. представлена схема связи СК. (передатчика данных) и СК, (приемника данных) в режиме квитирования.
Из рис. 8.15 видно, что в КУ0 устанавливается связь между t-м входом (DI.) и J-м выходом (DO.) в КУ. с помощью замкнутой точки коммутации (ТК„), а в КУг -междуJ-м входом (АСК„) и i-м выходом (АСК.).
Управление соединением соответствующих пар СК (замыканием ТК) осуществляет блоком управления коммутационной системы (БУКС), которое одновременно замыкает ТК„ в КУ0 и ТК в КУр причем для замыкания ТК,. КУХ переставляется адресная информация выбора входа и выхода.
После передачи последовательной кодовой посылки стартстопного формата из СК. в СК, последний сообщает сигналом квитирования АСК, что посылка успешно принята. СК, свободен и можно передавать следующую посылку.
Конфигурация многопроцессорной системы
409
Рис. 8.14. Общая конфигурация многопроцессорной системы
DOj
Рис. 8.15. Схема связи СК;.и СК
410
Пространственные интерфейсы ввода/вывода
УУКС выполняет следующие функции:
•	управляет соединением и сбросом соответствующих ТК КУ0 и КУГ‘
•	следит за состоянием СК0-СК196 (свободен или занят):
•	организует приоритетный доступ СК0-СК196 к КС:
•	осуществляет тестирование КУ0 и КУ L и проверку состояний СК0-СК196.
Для реализации последней функции БУКС, так же как и СК, подключен к КС, то есть использует вход DI197. выход DO197 в КУ0 и вход АСК1197, выход АСКО197 в КУг.
С целью осуществления последовательной передачи данных СК и БУКС используют универсальный асинхронный (синхронный) приемопередатчик UART (USART).
Для выполнения разнообразных функций, связанных с управлением работой СК и КС, наиболее пригоден микроконтроллер, содержащий порты ввода-вывода и встроенную схему USART.
Поставленным требованиям отвечает микроконтроллер 8XC196NP/NU.
8.9. Общий принцип функционирования системы
Процесс функционирования можно описать как ряд последовательных действий.
1.	Система, одна из общего состава, требует обмена. Осуществляет она это посредством запроса i-ro связного контроллера СК. к управляющему устройству, с целью установления соединения с абонентом, с которым требуется обмен (чтение или запись).
2.	Устройство управления коммутационной системой, если оно свободно (нет запросов от других, более приоритетных контроллеров), сообщает об этом контроллеру, пославшему запрос сигналом подтверждения доступа.
3.	В ответ на сигнал подтверждения контроллер передает адрес абонента, с которым ему необходим контакт.
4.	Получив адрес абонента, устройство управления коммутационной системой должно проверить, не занят ли абонент. Эта процедура осуществляется при помощи проверки флага или сигнала занятости. Проверка осуществляется так:
-	УУКС выставляет общий для всех СК сигнал «запрос на сигнал занятости»:
-	СК анализируют данные на шине адреса, на который в данный момент стоит адрес требуемого абонента:
-	СК-абонент опознает свой адрес и подает на линию «сигнал занятости» свое состояние:
-	СК-инициатор, получив подтверждение о том, что абонент свободен, осуществляет связь с ним.
На рис. 8.16 представлен обобщенный алгоритм функционирования устройства.
Рассмотрим общие принципы взаимодействия микроконтроллера (МС) и связных контроллеров (СК).
На рис. 8.17 представлен интерфейс СК00-СК1515 и микроконтроллера. МС выполняет координацию действий СК, требующих сеанса связи через коммутационную систему. Дешифратор Дшу предназначен для выбора столбца СК. для этого МС через порт Р1 .(3-0) передает адрес Ау на входы Дшу. После установления этого адреса через вывод Р1.7 передается сигнал разрешения, стробирующий Дшу и мультиплексоры Мх0, Мхг
Общий принцип функционирования системы
411
Рис. 8.16. Обобщенный алгоритм функционирования устройства
Предварительно на входы этих мультиплексоров через порт Р1.(6-4) направляется 4-битный адрес Ах, выбирающий строку связных контроллеров. Затем МС опрашивает вывод Р2.3 с целью определения наличия запроса (Зап) со стороны СК. Запрос может быть выставлен одним или несколькими СК, находящимися в выбранной строке. Поэтому с целью приоритетного выбора одного из не-
412
Пространственные интерфейсы ввода/вывода
Рис. 8.17. Интерфейс CKnn-CK1R и МС 1 т	о О	1 э 1э
скольких СК, установивших запрос на сеанс связи, МС устанавливает на выводе Р7.7 сигнал подтверждения выбора (Пв). Сигнал Пв поступает на нижнюю строку СК (СК150-СК1515). Дальше этот сигнал транзитом (последовательно) находит СК в выбранном столбце с помощью Дшу. Другим способом, более быстрым для приоритетного выбора СК, может быть использование дополнительного дешифратора Дшх, который указывает с помощью адреса Ах на выбор требуемой строки СК.
Мультиплексор Мх0 необходим для определения конца передачи Кп (сеанса связи), то есть МС проверяет наличие сигнала Кп через вывод Р2.2. Выбранный связной контроллер с целью установления окончания передачи данных и факта его свободного состояния отмечается в памяти МК.
На рис. 8.18 представлена схема подключения к МС памяти ОЗУ (ПЗУ) и блока дешифрации адреса, то есть представлена максимальная конфигурация МС (с использованием внешней памяти). На этом рисунке показаны схема сброса (СС), генератор тактовых импульсов (ГТИ), передатчик (Пер), приемник (Пк), необходимые для подключения КС и передачи последовательных данных по линиям TD и RD. Линии TD и RD подключены к встроенному в МС УАП. МК имеет трехшинную структуру DATA BUS. Для выбора страницы памяти употребляются старшие разряды адреса А1д-А16, которые поступают на вход блока дешифратора адреса (БДА). На выходе БДА формируются сигналы CS0#-CS9#.
На рис. 8.19 изображена схема сопряжения МС и коммутационной системы (КС). На этом рисунке БДА формирует сигналы CS^- CS6# для выбора соответственных регистров.
На рис. 8.20 представлена функциональная схема устройства. Основным узлом функциональной схемы является микроконтроллер МС.
Вход Р2.2 используется для приема сигнала конец передачи (кп) со стороны связных контроллеров.
Вход Р2.3 предназначен для приема сигнала запроса связных контроллеров.
На выходе Р2.6 формируется сигнал занят/свободен (1 - свободен).
На выходе Р2.7 формируется сигнал подтверждение выбора, поступающего к связным контроллерам.
Выходы Р1.4-Р1.6 используются для передачи адреса выбранной строки связных контроллеров, поступающего на мультиплексоры МХ0 и МХГ
414
Пространственные интерфейсы ввода/вывода
На выходе Р1.7 формируется сигнал разрешение, поступающий на вход дешифратора Дшу.
Выходы Р1.0-Р1.3 используются для вывода адреса выбора колонки связных контроллеров Ау0-Ау3.
Для синхронизации микроконтроллера используются резонаторы С1,С2 емкости 20 МЩ, подключенные ко входам ХТАЬрХТАЦ.
Последовательные передаваемые данные в стартстопном формате направляются по линии 1\D. а принимаемые данные со стороны коммутационной системы направляются на вход RxD.
Общий принцип функционирования системы
415
Квитирующие входные и выходные сигналы принимаются (выдаются) на входы Р2.5, Р2.4.
Данные выводятся и принимаются по линиям микроконтроллера AD0-AD15, а адрес выдается А1д-А0, в микроконтроллере используется разделенная шина адреса и данных.
Рассмотрим табл. 8.4 дешифрации старших битов адреса А14-А17.
Таблица 8.4				
^17	^16	^15	^14	CS
1	0	0	0	cs0
1	0	0	1	CS,
1	0	1	0	cs2
1	0	1	1	cs3
1	1	0	0	cs4
1	1	0	1	cs6
1	1	1	0	cs6
416
Пространственные интерфейсы ввода/вывода
В соответствии с этой таблицей формируется сигнал выбора кристалла адресуемых узлов ПЗУ и регистров коммутационной системы. Следует отметить, что микроконтроллер использует страницы памяти по 64 Кбайта, причем страница «О» размещается внутри самого микроконтроллера. Каждая страница выбирается четырьмя старшими битами адреса А16-А19.
В предлагаемой схеме используются 1 и 2 страницы распределения адресного пространства.
ROM имеет два блока памяти: четный и нечетный. Выбор четного блока выполняется с помощью четных адресов, а нечетного - с помощью нечетных адресов. Четные адреса содержат Ао = О, а нечетные Ао = 1.
Оба блока ПЗУ работают в режиме байтового или словарного чтения, то есть считывается либо байт, либо 16-битное слово. Управление режимом считывания осуществляется с помощью J3, если перемычка подключена к земле, то на вход ОЕ второго блока ROM подается низкий уровень, всегда соответствующий четному адресу, а если перемычка подключена к выходу инвертора, то учитывается бит адреса Ао = 1.
Контрольные вопросы
1. Перечислите базовые устройства, необходимые для построения устройства связи в многопроцессорных системах:
1)	модем;
2)	общая системная шина;
3)	моноканал:
4)	коммутационное устройство.
2.	Укажите недостаток матричного коммутатора в сравнении с общей шиной:
1)	низкое быстродействие;
2)	большие аппаратурные затраты;
3)	отсутствие возможности одновременной передачи данных;
4)	необходимость передачи адреса исполнителя.
3.	Выберите структуру данных хранения соединений в матричном коммутаторе:
1)	списковая;
2)	матричная;
3)	пакетная;
4)	блочная.
4.	Матричный коммутатор является:
1)	полно доступной схемой;
2)	неполнодоступной схемой;
3)	условно-блокируемой схемой.
Справочное дополнение
В качестве примера использования матричного коммутатора в компьютерах можно указать на рабочую станцию среднего класса (компьютер SGI), содержащую 1 или 2 процессора, адаптер Ethernet, графический контроллер, шину PCI.
Литература	417
устройства ввода/вывода и т. д. Матричный коммутатор содержит семь управляемых быстродействующих портов, к которым подключаются перечисленные ранее компоненты компьютера. Если раньше модули компьютера подключались к общей шине и работали в режиме разделения ее времени, то в рассматриваемом компьютере передача информации между устройствами выполняется параллельным способом, то есть одновременно. Матричный коммутатор выполняет функции маршрутизатора пакетов данных, арбитра конфликтного доступа устройств к коммутатору для установления между ними соответствующей связи.
Кроме того, известен другой коммутатор домашней сети (CHIP 10/2002), характеризуемый следующими показателями: количество портов - 5; передача данных со скоростью 10 и 100 Мбит/с: автономный блок питания.
Литература
1.	Ларионов А. М. и др. Вычислительные комплексы системы и сети: уч. для вузов. -Л.: Энергоатомиздат, 1987. - 288 с.
2.	Авдеев В. А., Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства. - М.: Радио и связь, 2001. - 480 с.: ил.
3.	Бро дин В. Б., Шагурин И. И. Микроконтроллеры. Архитектура, программирование, интерфейс. - М.: ЭКОМ, 1999. - 400с.: ил.
Интерактивные устройства ввода
9.1.	Основные определения
Американский стандартный код для обмена информацией (код ASCII,
American Standart Code for Information Interchange) - стандартный код, в котором буквам, числам, управляющим символам и т. д. присваиваются соответствующие числовые значения.
Стандарт ASCII содержит лишь 128 символов, 7-разрядные коды которых обозначаются 0-127. В ПК обычно используется вдвое больше символов. Поэтому в настоящее время программистами принято считать стандартные коды 0-127 и 128-255 8-разрядными кодами ASCII.
Стандартные коды ASCII (0-127) состоят из двух частей. Первая часть включает 32 символа с кодами 0-31, которые используются для управления периферийными устройствами и не выводятся на экран дисплея. Например, для управления устройством печати используются код 13 (возврат каретки), код 10 (перевод строки), код 12 (перевод страницы) и т. д.
Вторая часть содержит коды 32-127, соответствующие буквам алфавита, цифрам и знакам препинания. Причем для одинаковых букв верхнего и нижнего регистров соотносятся разные коды (например, букве В соответствует код 66, а букве b - код 98).
Расширенные коды ASCII - дополнительные коды от 128 до 255, которыми обозначены специальные (иностранные, научные и графические) символы. К группе иностранных символов (коды 128-154 и 160-167) относятся символы, применяемые в европейских языках, символы изображения знаков валюты разных стран и символы знаков пунктуации.
Символ - цифровое представление буквы, числа или какого-либо знака.
Скэн-код (Scan code) - порядковый номер клавиши, код которого генерируется при нажатии или отпускании клавиши клавиатуры. Прерывание клавиатуры вызывает преобразование скэн-кодов в коды ASCII или расширенные коды.
Формат скэн-кода содержит одинаковые по длительности: стартовый бит, байт данных, бит паритета и один столовый бит.
Стартовый бит - нулевой бит, предшествующий последовательной передаче байта данных, указывает на прерывание маркерного единичного промежуточ
Типы клавиш	419
ного состояния линии, устанавливаемое между передачами данных. Стартовый бит используется на приемной стороне для запуска его синхронизатора.
Стоповый бит - бит завершения последовательной передачи формата скэн-кода, переводящий линию в единичное маркерное состояние. После стопового бита может быть возобновлена передача стартового бита очередного скэн-кода.
Бит паритета (четности) - дополнительный бит, добавляемый к байту данных для обнаружения возможных ошибок.
Буфер клавиатуры - область памяти, отводимая для хранения и организации циклической очереди, в которую по прерывании клавиатуры помещаются коды ASCII клавиш и их скэн-коды.
Код нажатия - тип скэн-кода, формируемый при нажатии клавиши.
Код отпускания - тип скэн-кода, генерируемый при отпускании клавиши.
Прерывание клавиатуры - аппаратное прерывание, формируемое при нажатии или отпускании клавиши. По прерывании вызывается обработчик прерывания (драйвер), который помещает скэн-коды и соответствующие им коды ASCII в буфер клавиатуры.
Частота автоповтора - скорость повторной передачи последовательного кода при удержании нажатой клавиши.
9.2.	Типы клавиш
Клавиатура PC/ХТ имеет 83 клавиши. Клавиатура АТ содержит 84 клавиши. Ее основное отличие от клавиатуры PC - в том, что она стала доступной со стороны системного процессора. Это техническое усовершенствование делает клавиатуру АТ не совместимой с клавиатурой PC, хотя и используются одни и те же разъемы.
Кроме того, фирма IBM изготавливает улучшенную клавиатуру, количество клавиш которой равно 101 (102). Эта клавиатура является модернизацией клавиатуры АТ, но также остается не совместимой с клавиатурой PC /ХТ. В улучшенной клавиатуре используется другое размещение клавиш.
Каждая клавиша имеет порядковый номер, и при ее нажатии клавиатурой генерируется однобайтное число, называемое скэн-кодом и соответствующее номеру клавиши. Например, в клавиатуре PC клавиша Esc имеет номер 1, клавиша цифры 1 - номер 2, ..., клавиша Del - номер 83.
Всю совокупность клавиш можно разделить на два типа. Клавишам первого типа после преобразования скэн-кодов соответствуют коды ASCII (клавиши ASCII), а клавишам второго типа - расширенные коды (специальные клавиши и их комбинации).
При одновременном нажатии клавиш Alt+Fl генерируется 2-байтный расширенный код 0:104. Младший байт расширенного кода всегда содержит нуль, а старший байт - скэн-код (код сканирования) клавиши. Каждой клавише (комбинации клавиш) поставлен в соответствие номер, по которому формируется скэн-код. Например, клавиша F1 имеет номер 59, и ей соответствует расширенный код 0:59. Функциональные клавиши наиболее часто используются командами операционной системы.
Каждая клавиша содержит переключатель, который может быть механического (мембранного) или бесконтактного типа. В механических (контактного типа) клавишах возникает эффект дребезга контакта, требующий своего устра
420
Интерактивные устройство ввода
нения. В бесконтактных клавишах используется емкостная или индуктивная технология. При нажатии клавиши в емкостной клавиатуре изменяется емкость этой клавиши. Допустим, в отпущенном состоянии емкость равна 20-24 пФ, а при нажатии уменьшается до 2-6 пФ. Изменение емкости вызывает поток заряда в цепях, связанных с клавишей. В клавиатуре, использующей индуктивный принцип, каждая клавиша содержит индуктивный датчик, работа которого заключается в следующем. При нажатии клавиши подвижная часть датчика (металлическая пластина) приближается к неподвижной части (индуктивности), выполненной печатным монтажом, и вызывает изменение индуктивности, в результате чего формируется сигнал срабатывания датчика. Возвращение клавиши в исходное состояние выполняется с помощью пружины.
9.3.	Клавиатура PC/XT
Информация, вводимая с клавиатуры при нажатии клавиши, подвергается нескольким преобразованиям до получения ее соответствующей программой. Рассмотрим вопросы ввода, синхронизации и преобразования информации клавиш на программном и аппаратном уровнях.
При нажатии или отпускании клавиши клавиатурой формируется и передается байтный код, называемый скэн-кодом. В скэн-коде нажатия 7-й разряд равен 0, а в скэн-коде отпускания 7-й разряд равен 1. Младшие 7 бит (разряды 0-6) скэн-кода определяют номер, присвоенный каждой клавише. Клавиша символа А имеет порядковый номер 30 (16-ричное значение 1Е), поэтому скэн-код нажатия этой клавиши равен ООО 1 1110, а скэн-код отпускания -10011110. В ПК IBM АТ принят другой формат представления скэн-кода клавиши. Если клавиша выполняет отжатие, то перед скэн-кодом передается код F0H. Рассмотрим принцип работы клавиатуры PC/XT.
Из клавиатуры скэн-код клавиши выводится последовательным кодом в адаптер клавиатуры, который преобразует его в параллельный код и передает в порт А (адрес 60Н. где Н - 16-ричное значение) микросхемы Intel 8255 (КР580 ВВ55). содержащей три порта: А, В и С. Одновременно с передачей кода в порт А адаптер клавиатуры формирует сигнал прерывания IRQ 1 (второй по приоритетности сигнал прерывания), поступающий в программируемый контроллер прерывания, в микросхему Intel 8259 (КР1810 ВН59А). Наивысший по приоритету сигнал прерывания IRQ0 формирует таймер, чтобы сохранить верными показания системных часов.
Контроллер прерывания передает в процессор код типа (номера) прерывания (прерывание 9, прерывание от клавиатуры), который вызывает программу обработки прерывания (драйвер), выполняющую чтение скэн-кода из порта А, чтобы определить, какая клавиша нажата (отпущена). Каждому прерыванию (внешнему или внутреннему) поставлено в соответствие число (номер прерывания), например прерыванию от клавиатуры - 9, для управления устройством печати - 15 и т. д. Кроме того, любому прерыванию соответствуют два слова (ячейки) памяти, в которых хранится вектор прерывания. В первом слове хранится значение IP (указателя команды), а во втором - CS (сегмент кода), определяющие адрес программы, обслуживающей прерывание. Чтобы найти место вектора прерывания в памяти, необходимо номер прерывания умножить на 4. так как под каждый вектор отводятся 4 байта. Например, для прерывания 9-й вектор имеет адрес 9x4=36 (0024Н). Таким образом, стартовый адрес под
Клавиатура PC/XT
421
программы обработки прерывания от клавиатуры хранится в двух ячейках памяти, адрес первой из которых - 0024Н.
Из подпрограммы обработки прерывания скэн-код передается в ROM-BIOS (базовую систему ввода-вывода), в которой подпрограммы, обслуживающие клавиатуру, переводят его в 2-байтный код. Для клавиш первого типа (клавиш ASCII) младший байт 2-байтного кода содержит код ASCII, а старший - скэн-код нажатой клавиши (скэн-код отжатой клавиши отбрасывается). Например, для клавиши Р, порядковый номер которой 25, 2-байтный код равен 80:25, где 80 -код ASCII символа Р, а 25 - скэн-код клавиши Р. Специальным клавишам второго типа (комбинациям клавиш) соответствуют 2-байтные расширенные коды. Например, клавише Del, порядковый номер которой 83, соответствует 2-байт-ный расширенный код 0:83, где 83 - скэн-код клавиши Del. При преобразовании скэн-кода решается задача нахождения соответствующего ему кода ASCII или расширенного кода. Задача поиска кода ASCII решается с помощью таблицы, размещенной в сегменте данных. Если скэн-код был равен 32, то из 256-байтной таблицы берется байт номер 32, равный 68 (44Н) и соответствующий D.
Затем подпрограммы ROM-BIOS помещают 2-байтный код в буфер клавиатуры (область памяти с младшими адресами 0000:041 Е), имеющий емкость до 15 вводимых символов. В буфере коды ожидают своей очереди, пока не будут запрошены программой, ожидающей ввода информации с клавиатуры.
Перевод (трансляция) скэн-кода выполняется не для всех клавиш. При поступлении скэн-кодов от клавиш регистров Shift, Alt, Ctrl и клавиш переключателей (Caps Lock. Scroll Lock. Num Lock) в байты памяти с адресами 417Н и 418Н записывается информация о состоянии этих клавиш. Например, в байте состояния с адресом 417Н, если разряд 3 равен 1, это указывает на активное состояние клавиши Alt (клавиша нажата). Если разряд 3 равен 0, то это соответствует неактивному (отжатому) состоянию клавиши Alt.
При поступлении скэн-кода ROM-BIOS сначала анализирует состояние клавиш регистров и переключателей, чтобы определить код а или А. и только после этого код символов помещается в буфер клавиатуры.
Кроме того, ROM-BIOS при трансляции скэн-кодов проверяет их на различные комбинации клавиш переключателей и регистров, например Ctrl-Alt-Del, Ctrl-Num Lock и Shift-Prt Sc.
Эти клавишные наборы заставляют ROM-BIOS выполнить определенные действия без записи скэн-кодов в буфер клавиатуры. Так. комбинация Ctrl-Alt-Del, как известно, выполняет перезагрузку DOS, комбинация Ctrl-Num Lock -приостановку работы программы (фиксация клавиатуры) до тех пор, пока не будет нажата клавиша с печатаемым символом, комбинация Shift-Prt Sc выводит содержимое экрана на устройство печати. Если клавиша нажата больше полсекунды, то клавиатура, следящая за длительностью нажатия, с частотой 10 раз в секунду генерирует скэн-код нажатия этой клавиши без промежуточных скэн-кодов отжатия, что позволяет упростить драйвер, который распознает разницу между нажатием и автоматическим повторением. Если, например, клавиша С удерживается долго, то ROM-BIOS формирует серию символов С, которые будут переданы программе. С другой стороны, если удерживается долго клавиша регистра, то ROM-BIOS анализирует только первый скэн-код этой клавиши, а все остальные коды она игнорирует.
Клавиатура имеет много повторяющихся клавиш: две клавиши Shift, по две цифры, два плюса (минуса), две точки и т. д.
422	Интерактивные устройства ввода
Скэн-коды повторяющихся клавиш разные, но ROM-BIOS транслирует их (скэн-коды) в одни и те же коды ASCII, и для их различия в старшем (вспомогательном) байте сохраняется значение скэн-кода. Только для клавиш Shift в байте состояния с адресом 417Н отмечается в разряде 1 состояние левой клавиши Shift, а в разряде О - состояние правой клавиши Shift. На рис. 9.1 показана схема связи клавиатуры и процессора.
Вектор Адрес вектора 2 - байтный код прерывания прерывания в буфер клавиатуры
1P,CS (24Н)
Рис. 9.1. Схема связи клавиатуры и процессора
Клавиатура содержит контроллер 18048, представляющий собой однокристальную микроЭВМ, в состав которой входят внутренние ОЗУ емкостью 64 байта, 8-разрядное АЛУ, ППЗУ и три 8-разрядных порта с тремя состояниями. Перед установкой в клавиатуру микроЭВМ программируется и обеспечивает управление схемой опроса матрицы клавиш, прием и анализ состояния опрашиваемой клавиши, устранение эффекта дребезга контактов, буферизацию кодов клавиш, выполнение протокола связи, осуществление автотестирования матрицы клавиш с целью обнаружения залипших клавиш и контроля ОЗУ. В ПК АТ используют другой контроллер 18042. который выполняет почти те же функции, что и контроллер ПК PC/XT.
В работе схемы (см. рис. 9.1) можно выделить следующие основные моменты (цифры показывают последовательность действий в схеме).
Клавиатура PC/AT	423
Процессор осуществляет прием скэн-кода и после этого производит сброс регистра адаптера клавиатуры и сигнала прерывания IRQ 1. Этот сброс процессор выполняет с помощью разряда 7 порта В (В[7]= 1) микросхемы 8255 (580 ВВ55), называемой иногда трехканальным портом. Процессор сначала устанавливает В[7]=1, а затем сбрасывает этот разряд В[7]=0 (разрешает работу адаптера клавиатуры). Порт В имеет адрес 06 lh. Кроме того, процессор через разряд 6 порта В (В[6]=1) разрешает формирование сигналов синхронизации со стороны клавиатуры.
Процессор выполняет по таблице преобразование скэн-кода в 2-байтный код с кодом ASCII или расширенным кодом или установку соответствующих бит в байтах состояния для клавиш регистров и переключателей. Процессор записывает 2-байтный код клавиши в буфер клавиатуры, если имеется свободное место.
Между прерываниями клавиатуры процессор может выполнять десятки тысяч команд, так что прерывания не отнимают у него слишком много времени. Хорошая машинистка способна вводить до 400 символов в минуту, то есть через каждые 150 мс процессор должен успевать считывать и запоминать символ. Благодаря механизму прерывания процессор выполняет чтение скэн-кода из регистра адаптера за 10 мкс, а в оставшееся от 150 мс время он осуществляет другие действия.
В клавиатуре ПК PC/АТ управление ее работой выполняется через порт ввода-вывода (64Н или 60Н), предназначенный для вывода команд и данных и для чтения состояния клавиатуры. Приведем некоторые команды контроллера клавиатуры: сброс и запуск теста (0FFH), привести клавиатуру в исходное состояние и разрешить сканирование (0F6H), запись в порт вывода (0D1H), чтение порта ввода (0C0H) и т. д.
9.4.	Клавиатура PC/AT
Клавиатура является основным устройством ввода алфавитно-цифровых и управляющих данных, необходимых для функционирования ПК. Известны несколько типов клавиатур с различными функциональными возможностями. Например, 83-клавишная клавиатура PC/XT, реализованная на базе контроллера 8048, имеет ограниченные средства по диагностике и обнаружению ошибок. В PC/AT 84-клавишная клавиатура использует микросхему 8042 с расширенными функциями. Эта клавиатура характеризуется другим расположением отдельных клавиш, наличием программного доступа и дополнительных средств по обнаружению и анализу ошибок. Расширенная 101-клавишная клавиатура использует также микросхему 18042 и употребляется в ПК PC/AT и PS/2. Дальше будет рассматриваться только 101(102)-клавишная клавиатура.
На рис. 9.2 изображена схема связи клавиатуры и контроллера (18042), размещенного на системной плате.
Клавиатура подключена к контроллеру системной платы 4-проводным экранированным кабелем. Два двунаправленных провода предназначены для передачи синхросигналов (CLK) и данных (DATA). Третий провод является сигнальным заземлением (GND), а четвертый - линией питания (5В).
По линии DATA передаются данные в виде последовательных кодовых посылок (команды, параметры, коды нажатия и отжатия, коды подтверждения), причем каждый бит данных сопровождается битом синхронизации по линии CLK.
424
Интерактивные устройство ввода
Рис. 9.2. Схема связи клавиатуры и контроллера
Для управления работой клавиатуры контроллер посылает по линии DATA команды (установки и сброса индикаторов состояния, прочитать индикатор задания частоты повтора клавиши и т. д.). Клавиатура после приема команды отвечает кодом подтверждения, то есть обмен осуществляется по принципу запрос-ответ. Если после команды со стороны контроллера поступает параметр, то клавиатура также устанавливает код подтверждения. Аналогичным образом клавиатура передает в контроллер по линии DATA код нажатия (отжатия) клавиши с обратным получением кода подтверждения. Обмен данными между клавиатурой (контроллером) и системным процессором выполняется в режимах прерывания (IRQ 1) и опроса битов готовности, размещенных в байте по адресу 0040:0097h, в котором значение 10h означает полученное подтверждение, а значение 20h - повторение передачи.
Расширенная клавиатура имеет три режима работы, каждый из которых устанавливается с помощью соответствующих команд.
Режим 1 задается командой FOh с байтом конфигурации (параметром) Olh. В этом режиме используются 9-битовые коды нажатия (отжатия) клавиш клавиатуры PC /ХТ, которые не требуют преобразования и используются непосредственно процедурой INT 16h BIOS с функциями 00h, Olh и 02h.
Режим 2 устанавливается по умолчанию и употребляет 11 -битовые последовательные кодовые посылки нажатия (отжатия), которые преобразуются контроллером в коды, необходимые BIOS. Для обработки данных новых клавиш, которых нет в клавиатуре PC/XT, следует использовать функции 10h, 1 lh и 12h процедуры INT 16h BIOS.
Режим 3 использует специальные коды клавиш, которые могут быть преобразованы только прикладными программами. Этот режим устанавливается командой FOh с байтом конфигурации 3.
Конструктивно клавиатура выполнена в виде отдельного устройства, содержащего набор клавиш, матрицу переключателей клавиш, микропроцессор (МП), буфер (FIFO) на 17 байтов, генератор синхросигналов (ГС), индикацию и интерфейс связи с контроллером (18042), размещенные на системной плате (рис. 9.3).
Данные в режиме 2 передаются по линии DATA 11 - битной последовательной кодовой посылкой, имеющей стартстопный формат, причем каждый бит данных сопровождается синхросигналом на линии CLK. В кодовой посылке 1 бит является стартовым, затем следуют 8 битов данных, которые замыкают биты паритета (нечет) и столовый (рис. 9.4).
Клавиатура PC/AT
425
Рис. 9.3. Структурная схема клавиатуры
В режиме 1 используется 9-битовая кодовая посылка без битов паритета и стопового, а стартовый бит равен 1.
Если клавиша нажата, то клавиатура передает в контроллер скэн-код этой клавиши. Скэн-код - это порядковый номер нажатой клавиши. Кроме того, клавиатура выводит этот же скэн-код при отпускании клавиши, но предварительно передается код FOh.
Кроме того, если клавиша удерживается нажатой, то клавиатура генерирует скэн-код с программируемой скоростью и задержкой повторения.
Микропроцессор (МП) клавиатуры (18042) выполняет следующие основные функции:
•	автотестирование матрицы переключателей клавиш, внутренних ПЗУ и ОЗУ с передачей кода AAh в системную плату при успешном результате или кода FCh - в случае ошибки;
•	опрос состояний DATA и CLK, чтобы определить отсутствие запрета;
•	сканирование переключателей клавиш с целью установления факта нажатия или отпускания какой-либо клавиши;
•	выбор таблицы скэн-кодов;
•	реализацию протокола связи с контроллером;
426	Интерактивные устройства ввода
•	буферизацию кодов клавиш;
•	формирование последовательных кодовых посылок при нажатии или отпускании клавиш;
•	задание частоты повтора кода клавиши.
Буфер FIFO («первый вошел - первый ушел») предназначен для временного хранения кодов нажатия и отжатия до принятия их контроллером. При переполнении буфера в его фиксированную ячейку помещается код FFh в режиме 1 или код 00h - в режимах 2 и 3, и очередной скэн-код в этом случае не выводится. Светодиоды индикации отображают состояние, например, включения клавиш Num Lock (блокировки цифр), Caps Lock (блокировки прописных букв) или Scroll Lock (блокировки прокрутки). Генератор синхросигналов используется для синхронизации работы МП клавиатуры. Клавишам соответствует определенный тип переключателя. Различают механические переключатели, электрические, использующие эффект Холла, индуктивные, сенсорные, емкостные и мембранного типа. Переключатели представлены в виде матрицы, которую МП последовательно опрашивает с целью обнаружения нажатия какой-либо клавиши. На рис. 9.5 показана схема взаимодействия компонентов, связанных с обработкой клавиатурных данных. Клавиатура имеет собственное программное обеспечение, выполняющее перечисленные выше функции МП. При выводе данных клавиатура опрашивает состояние линий DATA и CLK с открытым коллектором. Если на линии CLK установлен контроллером запрещающий низкий уровень, то данные, например коды нажатия, не передаются в контроллер, а посылаются в буфер FIFO на временное хранение (см. рис. 9.3). Коды нажатия (отжатия) из буфера FIFO посылаются в контроллер при возникновении на линии CLK высокого разрешающего уровня напряжения.
Рис. 9.5. Схема взаимодействия компонентов ПК
Клавиатура PC/AT	427
Так достигается согласование во времени работы клавиатуры и контроллера, связанной с обменом данными. Если данные клавиатуры получены с ошибкой паритета, то контроллер автоматически посылает команду RESEND (повторить). В свою очередь, когда контроллер готов к передаче данных в клавиатуру, он устанавливает на линии DATA низкий уровень стартового бита и разрешает (увеличением уровня напряжения) формирование синхросигналов CLK со стороны клавиатуры.
При включении питания или поступлении команды контроллера FFh (сброс) клавиатура выполняет базовый тест, связанный с проверкой переключателей клавиш, внутренних ОЗУ и ПЗУ. Если базовый тест завершен успешно, то в контроллер передается код Aah (код ответа) и осуществляется сканирование переключателей клавиш. И наоборот, в случае ошибки в контроллер выводится код FCh.
Контроллер представляет собой однокристальный микрокомпьютер, взаимодействующий с процессором с помощью портов и аппаратного прерывания IRQ 1. Доступ к портам выполняется по адресным сигналам Ао (младший бит адреса), CS (выбор кристалла) и сигналам управления RD (чтения порта), WR (запись в порт), а также с помощью команд. Передача данных между контроллером и процессором осуществляется по внутренней шине данных XDQ-XD7, подключенной к системной шине данных SD0-SD7 через приемопередатчик (на рис. 9.5 это соединение не показано). Контроллер выполняет преобразование полученных от клавиатуры кодов нажатия (отжатия) клавиш в системные (стандартные для обработчика прерываний) скэн-коды, причем двухбайтовый код отпускания клавиши заменяется байтовым, у которого бит D7 = 1. Процессор устанавливает наличие в контроллере кодов нажатия (отпускания) через прерывание IRQ 1, по которому определяется адрес вектора прерывания (36 или 24h, то есть номер прерывания 9 умножается на 4), указывающий на фиксированную ячейку оперативной памяти (0000:0024), хранящую 4-байтовый вектор прерывания (стартовый адрес обработчика прерывания). Кроме того, процессор с помощью обработчика прерывания выполняет анализ системного скэн-кода нажатия и преобразование его в двухбайтовый код, помещаемый в буфер клавиатуры (FIFO) оперативной памяти (RAM).
Буфер клавиатуры RAM реализует режим кольцевой очереди и может хранить 15 двухбайтовых кодов нажатия, причем для обычных клавиш (алфавитно-цифровых), которым соответствуют коды ASCII, в буфере клавиатуры отводятся два байта, первый из которых является кодом ASCII, а второй -скэн-кодом (порядковым номером этой клавиши). Второй байт необходим для различения одинаковых клавиш.
При нажатии специальных клавиш, например F1-F12, INS, DEL и т. д., которым присвоен двухбайтный расширенный код, в буфер клавиатуры RAM помещаются также 2 байта, первый из которых равен 00, а второй содержит порядковый номер этой клавиши (скэн-код). Буфер клавиатуры представлен на рис. 9.6.
Начальный адрес буфера клавиатуры - 0040:001Е, а конечный адрес -0040:003С. Буферу клавиатуры RAM соответствуют все двухбайтовые ячейки памяти с адресами 0040:001А и 0040:001С, первая из которых является указателем головы заносимых данных (определяет первые введенные 2 байта данных). а вторая - указателем хвоста (см. рис. 9.6). В этих ячейках обычно используется только младший байт. По мере занесения данных в сторону увеличения адреса буфера клавиатуры RAM меняется соответственно и значение указателя
428	Интерактивные устройства ввода
					’А'	’В’	•с		’Н’	’Г		
0040:001Е 20 22 24 26 28 2 А 2С 36 38 ЗЛ 0040:003С
Рис. 9.6. Циклический буфер клавиатуры RAM
хвоста. После заполнения конца буфера клавиатуры данные заносятся в его начальные ячейки памяти, если они были удалены при чтении данных из буфера клавиатуры, приводящем к изменению значения (позиции) указателя головы. В результате подобных действий значения указателя хвоста оказываются меньше значения указателя головы. Кроме того, в буфере клавиатуры используется дополнительная двухбайтовая ячейка (пустая позиция), которая содержит код возврата каретки (13) и код ввода (28) и предшествует ячейке буфера, соответствующей указателю головы.
Если значения указателей головы и хвоста равны, то буфер клавиатуры пуст. Поэтому для очистки буфера клавиатуры следует установить равные значения в указателях головы и хвоста. В том случае, если буфер клавиатуры уже заполнен, а поступают другие данные, вырабатывается звуковой сигнал переполнения. Наличие данных в буфере клавиатуры с целью их ввода можно определить по неравенству значений в указателях головы и хвоста.
Состояния нажатия и отпускания переключательных клавиш Caps Lock, Num Lock, Scroll Lock. Ins. Shift и т. д. отражаются в фиксированных ячейках RAM (байтах состояния), имеющих адреса 0040:0017 и 0040:0018. Кроме того, информация о состоянии расширенной клавиатуры отмечается в ячейках с адресами 0040:0096 и 0040:0097. В этих ячейках задаются состояние правых клавиш Ctrl, Alt и состояние индикаторов. При прерывании клавиатуры, если была нажата переключательная клавиша, устанавливается соответствующий бит одного из байтов состояния. Обработчик прерывания INT9h проверяет каждый раз состояние переключательных клавиш, чтобы правильно интерпретировать вводимый код клавиши, например «С» или «с».
При нажатии (отпускании) клавиши аппаратное прерывание IRQ 1 вызывает обработчик прерывания INT09h, который выполняет следующие основные функции:
•	сохранение содержимого регистров процессора;
•	считывание и анализ номера клавиши из контроллера;
•	преобразование этого номера с использованием таблиц в код ASCII и системный скэн-код;
•	оповещение контроллера о завершении чтения номера клавиши;
•	сбрасывание запроса в контроллере прерывания:
•	передачу двухбайтного кода в буфер клавиатуры RAM;
•	управление динамиком и буфером клавиатуры RAM и восстановление регистров процессора.
Клавиатура PC/AT
429
Кроме того, для некоторых комбинаций клавиш: Ctrl-Alt-Del (перезагрузка операционной системы), Ctrl-Break (формирование прерывания INTIBh с установкой бита D7 в байте 0040:007 lh), Alt-SysRq (вызов подфункции 85h прерывания INT15h) и т. д.. выполняющих специальные функции, обработчик прерывания INT09h не использует скэн-коды в буфере клавиатуры RAM. Для других переключательных клавиш: Caps Lock, Num Lock и т. д. - при их нажатии (отпускании) обработчик прерывания INT09h изменяет содержимое байтов состояния, размещенных в фиксированных ячейках RAM,
Обработчик (драйвер) программного прерывания INT16h употребляет функции:
•	чтение кода нажатой клавиши (00h);
•	проверка состояния буфера клавиатуры (Olh):
•	чтение байта состояния клавиатуры (02h):
•	установка скорости повторения кода клавиши (03h):
•	считывание кода нажатой клавиши (1 Oh):
•	проверка состояния буфера клавиатуры (1 lh):
•	чтение байтов состояния клавиатуры (12h).
Функции 00h-02h предназначены для старой клавиатуры.
Функция 00h по значению указателя головы удаляет двухбайтный код из буфера клавиатуры, причем первый байт (код ASCII) помещается в регистр AL, а второй байт (скэн-код) - в регистр АН процессора. Если буфер клавиатуры пуст, то функция 00h ожидает нажатия клавиши (появления двухбайтного кода) и только потом передает управление программе.
Функция Olh позволяет исключить время ожидания нажатия клавиши путем проверки нажатия двухбайтных кодов в буфере клавиатуры. Эта функция сообщает только о готовности ввода с клавиатуры (устанавливает признак ZF=1, если буфер клавиатуры пуст).
Функция 02h предназначена для чтения байта состояния клавиатуры, который помещается в регистр AL.
Формат байта состояния (0040:0017) изображен на рис. 9.7.
Биты
D7 1 - включен режим Insert
D6 1 - включен режим Caps Lock
D5 1 - включен режим Num Lock
D4 1 - включен режим Scroll Lock
D3 1 - нажата клавиша Alt
D2 1 - нажата клавиша Ctrl
D1	1 - нажата левая клавиша Shift
DO 1 - нажата правая клавиша Shift
Рис. 9.7. Формат байта состояния
Функция 03h управляет задержкой и частотой (скоростью) повторения кода клавиши. Значение частоты повторения (число из диапазона 0-31) задается в регистре BL, а в регистре ВН - задержка повторения (0-250 мс, 1-500 мс, ..., 3-1000 мс).
430
Интерактивные устройства ввода
В новой клавиатуре, имеющей 101 (102) клавишу, используется функция OOh, 01 h и 02h старой клавиатуры. Эта расширенная клавиатура, как уже отмечалось, применяется в ПК PC/AT и PS/2.
Функция 10h используется вместо функции OOh, если расширенная клавиатура работает в режиме 2, что позволяет получить коды для дополнительных клавиш. Общее назначение, входные и выходные параметры функций OOh и 10h совпадают. Аналогичным образом используется функция llh вместо Olh. Функция 12h заменяет функцию 02h, если расширенная клавиатура работает в режиме 2. При выполнении функции 12h байты состояния размещаются в регистрах AL и АН, причем в регистре AL хранится первый байт состояния (см. рис. 8.7). а в регистре АН - второй байт состояния (0040:0018), формат которого показан на рис. 9.8.
Биты
D7
D6
D5
D4
D3
D2
D1
DO
1 - включен режим Insert
1 включен режим Caps Lock
1 - включен режим Num Lock
1 включен режим Scroll Lock
1 - включен режим «Пауза»
1 нажата клавиша Sys Req
1 - нажата правая клавиша Alt
1 нажата правая клавиша Ctrl
Рис. 9.8. Формат второго байта состояния
Рассмотрим структурную схему контроллера, показанную на рис. 9.9.
Входной буфер подключается к шине XD0-XD7 и содержит два 8-битовых регистра данных и команд, доступных по записи и имеющих соответственно адреса 60h и 64h. Информация записывается во входной буфер, если сброшен бит D! регистра состояния (64h), содержащего флаг входного буфера (IBF), который устанавливается в единицу при записи информации во входной буфер. Данные из входного буфера (регистра данных) передаются в клавиатуру, и выполняется автоматический сброс IBF.
Выходной буфер включает 8-битовый регистр, адрес которого 60h. Содержимое этого регистра считывается, если бит Do регистра состояния (64h) равен единице (установлен флаг выходного буфера OBF), что указывает на наличие данных в выходном буфере (выходной буфер полон). При чтении выходного буфера бит Do (OBF) регистра состояния (64h) автоматически сбрасывается.
Читаемый регистр состояния (64h) предназначен для хранения информации о состоянии контроллера и интерфейса. Формат регистра состояния (64h) представлен на рис. 9.10.
Доступ к другим портам контроллера выполняется с помощью специальных команд, так как из-за ограниченного числа контактов микросхемы 18042 они не имеют адресов. Команды COh(R), D0h(R), Dlh(W), и EOh(R) (см. рис. 9.9) используются соответственно для чтения входного и выходного портов, записи в выходной порт и чтения порта То, (чтения состояния линий CLK и DATA интерфейса клавиатуры). Эти команды должны быть переданы в регистр команд входного буфера по адресу 64h.
Клавиатура PC/AT
431
XDO-XD7
CLK	DATA	COh(R), DOh(R), Dlh(W)	I - команды
		EOh(R), 20h(R), 60h(W)	1 - команды
		(W)	- запись
		(R)	- чтение
		60h, 64h	- адреса
Рис. 9.9. Структурная схема контроллера
Биты
D7 1 - ошибка нечетного паритета
D6 1 - прием байта из клавиатуры не завершен
D5 1 - передача байта в клавиатуру не завершена
D4 0 - клавиатура заблокирована (защитный замок закрыт)
D3 О-в выходном буфере данные
1 - в выходном буфере команда
D2 0 - сброс по включению питания
1 - программный сброс
D1 0 - входной буфер пуст (IBF)
DO 1 - выходной буфер полон (OBF)
Рис. 9.10. Формат регистра состояния
Входной порт контроллера предназначен для чтения информации о конфигурации системы» используемой программами ВЮС. Формат входного порта показан на рис. 9.11.
Выходной порт доступен по записи (W) и чтению (R) и хранит значения выходных линий. Формат выходного порта представлен на рис. 9.12.
Значения порта состояния линий То и Тг считываются командой EOh(R), причем бит То соответствует входному значению линии CLK, а бит Тг - входному значению линии DATA.
432
Интерактивные устройства ввода
Биты		
D7	1	- ошибка нечетного паритета
D7	0	- клавиатура заблокирована ключом
D6	0 1	-	цветной адаптер -	монохромный адаптер
D5	0	-	переключатель установлен -	переключатель не установлен
D4	0	- не используются вторые 256К RAM - используются вторые 256К RAM
D3, D2.D1, DO - резерв
Рис. 9.11. Формат входного порта
Биты	
D7	- значение линии DATA при передаче данных в клавиатуру
D6	- значение линии CLK при передаче данных в клавиатуру
D5 1	- входной буфер пуст
D4 1	- выходной буфер полон
D3, D2	- резерв
D1	- состояние адресной линии А20
DO 0	- системный сброс
Рис. 9.12. Формат выходного порта
Кроме того» контроллер содержит управляющий байт» доступный по чтению с помощью команды 20h(R) и по записи с использованием команды 60h(W).
Для считывания управляющего байта необходимо вначале записать команду 20h(R) в регистр команды (64h), а затем получить управляющий байт из выходного буфера (60h). Запись управляющего байта выполняется следующим образом. Предварительно в регистр команд (64h) входного буфера заносится команда 60h(W)» а после этого содержимое управляющего байта - в регистр данных (60h) входного буфера. Формат управляющего байта изображен на рис. 9.13.
Различают команды контроллера (некоторые из них были уже рассмотрены: COh(R). DOh(R). Dlh(W) и т. д.)» команды управления клавиатурой и коды ответов клавиатуры.
Биты
D7 0 - резерв
D6 1 - режим совместимости клавиатуры с IBM PC
(вызывает преобразование 2-байтовых кодов отпускания в 1-байтовые)
D5 1 - используются коды клавиатуры IBM PC/XT
О - используются 2-битовые коды АТ
D4 1 - отключение клавиатуры
О - разрешение
D3 1 - запрещается защитный замок
D2 - значение этого бита записывается в бит D2 регистра состояния
D1 0 - резерв
DO 1 - разрешение прерывания, если выходной буфер полон
Рис. 9.13. Формат управляющего байта
Клавиатура PC/AT	433
Команда контроллера выводится процессором в регистр команд (64h) входного буфера, и если у команды есть байт данных, то он загружается сразу после команды в регистр данных (60h) входного буфера.
Команды контроллера приведены в табл. 9.1.
Таблица 9.1
Код	Назначение команды
20h	Чтение управляющего байта
60h	Запись управляющего байта
AAh	Выполнение внутреннего теста
ABh	Тест интерфейса
ADh	Отключение (блокировка) клавиатуры
AEh	Разрешение (деблокирование) клавиатуры
COh	Чтение входного порта
DOh	Чтение выходного порта
D1h	Запись в выходной порт
EOh	Чтение порта То, Т1
FOh-FFh	Сброс выходного порта
Рассмотрим назначение команд контроллера. Команда AAh вызывает выполнение внутреннего теста контроллера. Если тест завершается успешно, то в выходной буфер (60h) помещается код 55h. Тест интерфейса (линий CLK и DATA) осуществляется командой Авй, и в выходном буфере хранится результат тестирования (00 - ошибок нет, 01(03) - линия CLK(DATA) имеет нулевой уровень, 02(04) - на линии CLK(DATA) установлен высокий уровень). По команде ADh производится отключение клавиатуры (данные не передаются и не принимаются), а по команде AEh разрешается работа клавиатуры (сбрасывается бит D4 управляющего байта). Команда COh осуществляет чтение входного порта и занесение его содержимого в выходной буфер (60h).
Предварительно следует убедиться, что выходной буфер пуст, то есть проверить бит DJ0BF) регистра состояния (64h). Чтение выходного порта исполняется командой DOh, которая помещает его содержимое в выходной буфер, если он пуст. Запись в выходной порт выполняется по команде D lh, за которой следует вывести байт по адресу 60h регистра данных, причем бит 0 выходного порта не должен быть равным нулю, иначе будет системный сброс. Для считывания значений порта То и Тх (значений входных линий CLK и DATA) в выходной буфер употребляется команда EOh. Команды FOh-FFh указывают своим кодом, какие четыре младших бита выходного порта следует сбросить, причем значение 0 определяет сброс бита.
Команды управления клавиатурой выводятся системным процессором как данные в регистр данных (60h) входного буфера контроллера, откуда затем передаются в клавиатуру. Клавиатура обязательно подтверждает прием команды управления, кроме команд EEh и FEh.
Команды управления клавиатурой представлены в табл. 9.2.
Команда «установить индикатор состояния» (EDh) является двухбайтовой командой. изменяющей состояние индикаторов клавиатуры.
Первый байт (EDh) поступает в клавиатуру, которая прекращает сканирование переключателей клавиш, передает код подтверждения приема (FAh) и ожи-
434
Интерактивные устройства ввода
Таблица 9.2	
Код	Назначение команды
EDh	Установить индикаторы состояния
EEh	Эхо (диагностика)
FOh	Установка таблицы скэн-кодов
FFlyFI h	Холостые (недействительные) команды
F2h	Чтение идентификатора
F3h	Задание частоты повтора и задержки
F4h	Разрешение клавиатуры
F5h	Блокировка клавиатуры
F6h^	Установка значения по умолчанию
F7h±FAh	Определение действий всех клавиш
FBhT FDh	Определение действий отдельных клавиш
FEh	Повторить передачу
FFh	Сброс клавиатуры
дает поступления второго байта конфигурации параметра, задающего установку индикатора. Второй байт имеет формат, изображенный на рис. 9.14.
Биты
D7-D3 0 - резерв
D2	1 - включен индикатор Caps Lock
D1	1 - включен индикатор Num Lock
DO 1 - включен индикатор Scroll Lock
Рис. 9.14. Формат второго байта
Клавиатура, получив второй байт, подтверждает его прием ответным кодом FAh, устанавливает индикаторы и начинает сканирование переключателей клавиш. Диагностическая команда эхо (EEh) вызывает обратную передачу клавиатурой этого же кода EEh.
При получении клавиатурой одной из холостых команд EFh или Flh она направляет в контроллер «код повтора» (FEh).
В клавиатуре хранятся таблицы кодов клавиш различных режимов. Для выбора одной из трех таблиц в клавиатуру посылается двухбайтная команда. Первый байт FOh указывает на соответствующую операцию и настраивает клавиатуру на прием второго байта. Клавиатура отвечает кодом подтверждения (FAh), принимает второй байт, содержащий одно из трех значений -01, 02 или 03 -для выбора набора кодов клавиш. Если второй байт имеет код 00, то клавиатура отвечает кодом подтверждения (FAh) и посылает байт, указывающий на текущий режим (номер таблицы кодов клавиш).
Команда «чтение идентификатора» (F2h) поступает в клавиатуру и вызывает последовательную ответную передачу кода подтверждения (FAh) и двух байтов идентификатора (83ABh).
Задание частоты повтора кода клавиши и времени задержки после первой передачи кода клавиши осуществляется двухбайтной командой F3h. Клавиа
Клавиатура PC/AT	435
тура, получив эту команду (первый байт), прекращает сканирование переключателей клавиш, отвечает кодом подтверждения (FAh) и ожидает поступления второго байта с заданными параметрами. Для продолжения сканирования переключателей клавиш в клавиатуру передается команда F4h (разрешение клавиатуры), получение которой подтверждается кодом FAh, сбрасывается выходной буфер и выполняется сканирование переключателей клавиш.
Команда F5h (блокировка клавиатуры) при поступлении в клавиатуру вызывает следующие ее действия:
•	возвращение кода повторения (FAh):
•	сбрасывание выходного буфера:
•	установление набора кодов клавиш для режима 3;
•	прекращение сканирования и ожидание очередных команд.
Для установок начальных значений (по умолчанию) применяется команда F6h, которая по действию напоминает команду F5h, за исключением того, что клавиатура не блокируется и продолжает сканирование.
С поступлением команды определения действий всех клавиш клавиатура реализует следующие функции:
•	передачу кода «подтверждение» (FAh);
•	сброс выходного буфера и соответствующую установку клавиш для режима 3 (F7h - все клавиши только повторяемые, F8h - все клавиши посылают только коды нажатия (отпускания), F9h - все клавиши генерируют только коды нажатия, FAh - все клавиши повторяемые и посылают коды нажатия (отпускания)).
Определение действий отдельных клавиш осуществляется двухбайтными командами (FBh, FCh, FDh). Первый байт является байтом команды для клавиатуры, которая возвращает код подтверждения (FAh), сбрасывает выходной буфер и ожидает поступления второго байта идентификации клавиши (кода сканирования позиции клавиши). Команда FBh делает клавишу повторяемой, FCh - определяет для клавиши только коды нажатия (отпускания), a FDh - для клавиши только коды нажатия.
Команда FEh (повторить передачу) посылается в клавиатуру, если произошла ошибка. По команде FEh клавиатура повторяет передачу последнего байта, переданного в контроллер.
Сброс клавиатуры выполняется командой FFh. В этом случае клавиатура посылает код подтверждения (FAh) и осуществляет внутренний тест. Если тест завершен успешно, то в контроллер направляется код AAh. в противном случае -код FCh.
Коды ответов клавиатуры представлены в табл. 9.3.
Таблица 9.3
Код	Назначение команды
00h, FFh Ошибка клавиши, переполнение буфера клавиатуры
FAh	Подтверждение
83ABh	Идентификатор клавиатуры
EEh	Эхо (диагностический код)
AAh, FCh	Завершение теста
FEh	Повторить передачу
436
Интерактивные устройства ввода
Коды ответов клавиатуры вводятся в системный процессор из выходного буфера (60h) контроллера. В случае переполнения 16-байтного буфера клавиатура посылает в контроллер код OOh, если выполняется режим 2 или 3, или код FFh, если установлен режим 1. Кроме того, клавиатура направляет код ошибки OOh в режиме 2 или 3 при обнаружении неисправного переключателя клавиши или код ошибки FFh, если выполняется режим 1.
Код подтверждения передается в контроллер клавиатуры при получении команд управления, кроме EEh или FEh.
Идентификатор клавиатуры содержит два байта, которые посылаются как ответ при получении команды F2h (чтение идентификатора), причем первым посылается младший байт.
Диагностический код EEh (эхо) направляется клавиатурой при получении команды EEh контроллера.
Если внутренний тест клавиатуры завершен успешно, то в контроллер посылается код AAh, если с ошибкой - то код FCh.
При получении клавиатурой неправильных данных или с ошибкой паритета в контроллер передается код FEh (повторить передачу).
9.5.	Манипулятор мышь
Манипулятор мышь [2] относится к устройствам интерактивной связи человека с машиной.
При перемещении мыши по плоской поверхности выполняется движение курсора по экрану монитора, то есть курсор отслеживает перемещение «мыши» с помощью выполнения соответствующей программы. Манипуляторы мышь получили широкое распространение при работе с программами, содержащими машинную графику (Windows, AutoCAD и т. п.). Подключение манипулятора мышь к ПК выполняется либо с помощью специальной платы (шинная мышь), либо через последовательный порт (СОМ). Различают следующие типы манипуляторов этого класса: механические, оптомеханические и оптические. На рис. 9.15 показано условное изображение механического (а) и оптического (б) манипуляторов мышь, поясняющее принцип их работы.
Рис. 9.15. Условное изображение механической (а; и оптической (б) мыши
Шаровые манипуляторы	437
Рассмотрим принцип работы механической мыши. При перемещении мыши по столу (специальному коврику) начинает вращаться каучуковый шар, размещенный в основании корпуса. С шаром соприкасаются два вращающихся ролика (Рг и Р9), установленные под утлом 900 друг к другу. При движении «мыши» в горизонтальном направлении (по оси X) вращается ролик Р9, а при движении в вертикальном направлении (по оси У) - ролик Р . Детекторы Дг и Д, вращения роликов передают соответствующие импульсы на плату с электронной схемой, сигналы кодов с которой поступают в ПК. Как уже указывалось, большинство манипуляторов используют последовательный порт RS-232C. Кроме того, имеются беспроводные (бесхвостые) мыши, использующие инфракрасное излучение для передачи кодов в приемник, подключенный к последовательному порту. На корпусе мыши находится одна или несколько клавиш (К), код которых также поступает в ПК. Обслуживающая программа определяет текущее положение мыши относительно известных положений и состояние ее клавиш и выполняет соответствующие действия. Нажатие одной клавиши мыши может быть эквивалентно нажатию клавиши Enter клавиатуры, нажатие другой - клавиши Esc клавиатуры. Программные файлы представляются на экране в виде картинок (пиктограмм), которые выбираются путем подвода курсора на их место и нажатия клавиши мыши. В Windows устанавливаются чувствительность мыши и время двойного щелчка, используемого для запуска программы. Кроме того, выпускаются специализированные многокнопочные мыши.
Принцип действия оптической мыши, в которой подвижный шарик отсутствует, заключается в следующем. Такая мышь содержит два фотодатчика ФД1 и ФДГ каждый из которых содержит фотоэлемент (фотоприемник) и светодиод (фотопередатчик). Один светодиод излучает красный свет, а другой - инфракрасный. Кроме того, фотодатчик ФД1 принимает только красный свет, а ФД9 -лишь инфракрасный. Фотоэлемент и светодиод ФД. размещены под утлом друг к другу так, чтобы отраженный от поверхности свет попадал на фотоэлемент. Светодиоды освещают двухцветную сетку, нанесенную на специальную подложку. При перемещении мыши происходит отражение света, интенсивность которого меняется в зависимости от приближения (удаления) к линии (от линии). Изменение интенсивности одного или другого света показывает направление движения мыши по оси X или У. Схема платы мыши передает соответствующие сигналы X и У фотоэлементов в ПК, в котором драйвер мыши их анализирует и управляет движением курсора на экране.
Кроме того, выпускаются оптомеханические мыши, содержащие шарик и фотооптические датчики, которые являются как бы частью клавиатуры (подключаются через специальный блок). Сигналы мыши воспринимаются как сигналы клавиатуры. В этом случае не используется последовательный порт и упрощается некоторым образом программа обработки сигналов мыши.
9.6.	Шаровые манипуляторы
Шаровой манипулятор (трекбол) [2] иногда называют перевернутой механической мышью, так как перемещение курсора связано с ручным вращением выступающего над поверхностью шарика, расположенного в верхней части корпуса манипулятора. Трекболы применяются в системах автоматического проектирования, обработки изображений и управления игровыми программами. Движение шарика в трекболе преобразуется в сигналы отсчетов по осям X и У. По каж
438	Интерактивные устройства ввода
дому из направлений формируется до 480 импульсов на один оборот шарика, частота импульсов пропорциональна скорости вращения. Трекбол является оптомеханическим устройством, содержащим оптические датчики с фотодиодами (приемниками света), расположенными так, чтобы определить, каким образом вращается шарик: вверх, вниз, влево или вправо. Датчик формирует сигналы с уровнем ТТЛ: +Х, -X, +У, -У. На рис. 9.16 представлена упрощенная схема интерфейса шарового манипулятора (ШМ).
В схеме интерфейса трекбола содержатся два реверсивных счетчика СчХ и СчУ, содержимое которых может быть считано через шинные буферы (ШБ) на шину данных (ШД) соответственно сигналами чтения ЧтХ и ЧтУ. Для запрещения переполнения счетчиков при вращении шарика в одном и том же направлении применяются дешифраторы предельных значений (переходов от 0 к 255 и от 255 к 0), ДПЗ! и ДП32.
В других шаровых манипуляторах используются два потенциометра. При вращении шарика происходит изменение значений сопротивлений потенциометров, которое пропорционально влияет на длительность сигналов. Некоторые фирмы выпускают мини-трекболы для портативных ПК, устанавливаемые сбоку от клавиатуры.
9.7.	Ручки управления
Ручки управления (джойстики) [2] курсором делятся на два основных типа: потенциометрические и контактные. В потенциометрических ручках применяются два потенциометра, подвижные контакты которых связаны универсальным шарниром с ручкой. Если ручка находится в правом верхнем углу, то это соответствует наибольшим значениям сопротивлений, а если ручка помещена в нижний левый угол - минимальным значениям сопротивлений. При центральном положении ручки подвижные контакты устанавливаются посередине потенциометров и значения сопротивлений равны середине диапазона (рис. 9.17).
Для ввода значений R ручки в ПК может быть использована следующая структурная схема адаптера (рис. 9.18).
Структурная схема адаптера игрового порта содержит дешифратор адреса (ДшА), который при опознании собственного адреса (201Н) формирует сигнал SEL. Шинный буфер (ШБ) используется для согласования с электрическими параметрами шины управления (ШУ). Таймер содержит 4 ждущих мультивибратора и позволяет одновременно принимать значения R от двух ручек. Длительность сигнала на каждом t-м выходе таймера (1=1.4) связана определенным
соотношением с величиной соответствующего R. Приемопередатчик предназначен для согласования с электрическими параметрами шины данных (ШД) интерфейса и для передачи сигналов от кнопок и таймера в ПК при наличии сигнала «чтение» (ЧТ). Работа адаптера заключается в следующем. Командой OUT с адресом 201Н запускаются по сигналу запись (ЗП) все четыре мультивибратора таймера. После чего командой IN с этим же адресом осуществляется ввод сигналов от кнопок пуска ручек и сигналов с переменной длительностью соответствующих R. Длительность сигналов преобразуется в ПК в цифровой код с помощью таймеров и регистров и используется в игровой программе. Каждая
440
Интерактивные устройства ввода
ручка содержит два потенциометра X и У и две кнопки, подключаемые непосредственно к 15-штырьковому разъему DB-15 ПК. Кроме таймера, для преобразования сигналов от потенциометров можно использовать многоканальный аналогов©-цифровой преобразователь (АЦП), формирующий на выходах цифровой код одного из потенциометров, который в данный момент времени подключен к АЦП.
Ручка управления контактного типа содержит 4 переключателя (верхний, нижний, левый и правый), которые замыкаются при переводе ручки в соответствующее положение. Если ручка перемещается в диагональном направлении, то замыкается надлежащая пара контактов. Сигналы от четырех переключателей и от кнопки запуска поступают через 9-штырьковый разъем на вход адаптера, принцип построения которого аналогичен адаптеру потенциометрической ручки.
9.8.	Программа «Коды клавиатуры»
Формулировка задания
Целью настоящей работы является практическое закрепление знаний по организации ввода информации с клавиатуры с помощью языка ассемблера и прерываний MS-DOS и BIOS.
Необходимо написать программу, отображающую на экране 16-разрядные коды вводимых с клавиатуры символов, используя соответствующие методы преобразования и функции программных прерываний.
Основные сведения
Программные прерывания позволяют получить доступ к различным процедурам, существенно облегчающим работу программиста. Эти процедуры при задании соответствующих функций выполняют вывод информации на дисплей, принтер, ввод данных с клавиатуры и т. д.
Программирование с помощью прерываний иногда называют программированием на среднем уровне. Существуют различные типы прерываний. Основное внимание в этой работе уделяется прерыванию int 16h (int 10h) и int 21h. Прерывание int 16h вызывает служебные функции BIOS для стандартной клавиатуры, a int 10h вызывает служебные функции BIOS по выдаче изображения. Такие же по возможности функции обеспечивает и DOS. Так, прерывание int 21h осуществляет вызов всех служебных функций DOS. Код требуемой функции необходимо задать в регистре АН. Данные, которые следует вывести с помощью DOS, заносятся в DL (DX), а введенная DOS информация помещается в регистр AL. В табл. 9.4 приведены некоторые функции прерывания DOS INT 2 lh.
Таблица 9.4
АН	Вывод	Ввод
01		AL
02	DL	
06	DL	AL
08		
09	DX	
Функции
Ввод с клавиатуры в режиме ЭХО
Вывод 1 символа на экран дисплея
Непосредственный ввод-вывод с использованием пульта управления
Ввод с клавиатуры с отображением процесса без ЭХА
Вывод последовательности символов на экран дисплея
Программа «Коды клавиатуры»	441
Для функций 1, 2 и 8 при нажатии клавиш Ctrl+C управление возвращается DOS.
Программа вывода символа А на экран дисплея содержит три команды:
MOV DL,'А'
MOV АН,2 INT 21L
; загрузка А
; вывод 1 символа на экран
; вызов процедуры
Следующий фрагмент программы выполняет запись в регистр AL считываемого символа с клавиатуры. Если DL равен OFFh, то AL готов для приема символа. Кроме того, флаг ZE равный О, указывает на завершение ввода с клавиатуры байта в AL.
Next:
MOV DL,0FFh
MOV АН,6
INT 21h JZ Next CALL Display
условие готовности
ввод с клавиатуры
если ZF=1 переход на подпрограмму
Прерывание INT 10h выполняет 16 функций выдачи изображения на экран дисплея. Функция 00 устанавливает режим выдачи изображения. Загрузка кода этой функции выполняется в регистр АН, а задание текстового или графического режима выполняется в регистре AL. Функция 03 определяет 16-цветный текстовый режим при выводе символа на экран в формате 80 строк х 25 символов.
Эту установку функции и режима выполняет следующая программа:
MOV АН,00
MOV AL,03 INT 10h
/задание функции 00 /загрузка режима 80x25
При установке режима, кроме того, BIOS очищает и буфер памяти экрана.
Для различных типов адаптеров дисплея выбираются режимы из диапазона 0-15.
Информацию о текущем видеорежиме можно получить (прочитать) с помощью следующих команд:
MOV АН,15 /установка функции 15 INT 10h
При этом в AL помещается текущий режим дисплея, в АН - число символов в строке, а в ВН - номер активной страницы.
Функция 14 осуществляет запись символа в режиме телетайпа. Символ помещается на текущее место курсора, а курсор сдвигается на одну позицию. В регистре АН задается код 14, в регистре AL- записываемый символ ASCII, и в регистре ВН - номер активной страницы для текстового режима.
Программа вывода символа на экран дисплея имеет вид:
MOV	AL,'B'	/загрузка В
MOV	AH, 14	/режим телетайпа
MOV	BH, 0	/страница 0
MOV	DX, 0	/строка 0, столбец
INT	lOh	
Процедура для работы с клавиатурой вызывается с помощью прерывания int 16h. Этих процедур три (0-2). Для вызова процедуры номер ее (номер функции) задается в регистре АН.
Функция О осуществляет чтение с клавиатуры очередного символа. Каждый символ клавиатуры в буфере представляется в виде двух байтов. Первый (глав
442
Интерактивные устройство ввода
ный) байт, записываемый в AL, равен О для специальных клавиш (например, F1-F10) либо коду ASCII - для обычных. Второй (вспомогательный) байт, находящийся в регистре АН, равен номеру расширенного кода специальных клавиш либо скэн-коду стандартных клавиш для ASCII-символов. Если символа нет в буфере, то процедура ждет его появления.
Рассмотрим программу, которая ждет от клавиатуры появления символа в AL. Если в AL код О, то в АН находится номер расширенного кода.
mov ah,О int 16h cmp al, 0 je ext_cod
;ожидание символа
;проверка на расширенный кол /переход на подпрограмму
Функция 1 выполняет проверку на наличие символа в буфере. Если ZF = 1, то это указывает на отсутствие символа, а О - на его наличие. При наличии символа он размещается в регистрах AL и АН так же, как и для функции О.
Например:
mov ah, 1 int 16h jz no_cod cmp al, 0 je ext_cod
/проверяем наличие символа
/переход, если нет символа /проверка на расширенный код /переход на подпрограмму
Функция 1 позволяет получить состояние регистровых клавиш, которое берется из ячейки памяти с адресом 417 и помещается в AL.
При нажатии любой из клавиш клавиатура передает в адаптер клавиатуры код, равный порядковому номеру клавиши и называемый скэн-кодом (кодом сканирования). Например, при нажатии клавиши А клавиатурой посылается код 30 (lEh). Этот код преобразуется BIOS в двухбайтовый. Для обычных клавиш первый байт содержит код ASCII, а второй - скэн-код. Например, для клавиши А первый байт имеет код 41h (верхний регистр), а второй байт - код lEh.
Скэн-код специальной клавиши преобразуется BIOS в двухбайтный код, первый байт которого содержит 0, а второй байт - номер расширенного кода. Например, нажатию клавиши F1 соответствует двухбайтовый код OOh; 3Bh (59 = 3Bh).
Прилгер выполнения варианта задания
Code Segment para ’code’ Assume cs: code, ds: code org lOOh begin: mov ah,00	/ ввод кода
int 16h push ax cmp al,0 jne gol push ax mov dl,’O’ / вывод символа О mov ah,2 int 21h mov dl,’ ’	/ вывод пробела
int 21h pop ax jmp begin
Варианты заданий
443
gol:
	mov	dh, al		
	mov	cl, 4	; выделение старшей	тетрады
	shr	al, cl		
	add	al,30h		
	cmp	al,39h	; преобразование	
	j be	go2		
	add	al,7		
до2 :				
	mov	dl,al	; вывод символа	
	mov	ah, 2		
	int	21h		
	mov	dl,dh	; выделение младшей	тетрады
	and	dl,OFh		
	add	dl,30h		
	cmp	dl,39h	; преобразование	
	j be	доЗ		
	add	dl,7		
доЗ :				
	mov	ah, 2	; вывод символа	
	int	21h		
	mov	dl, 10	; перевод строки	
	int	21h		
	mov	dl, 13		
	int	21h		
	pop	ax		
	cmp	al, 27	; код ESC	
	j ne	begin		
	mov	ax,4C00h	; завершить процесс	
	int	21h		
Code	Ends			
	end	begin		
Одним из вариантов задания может служить модификация введенной программы путем ввода подпрограмм преобразования и вывода кода на заданное место экрана дисплея. Кроме того, вместо COM-программы можно написать ЕХЕ-программу.
9.9.	Варианты заданий
На рис. 9.19 изображен функциональный граф, задающий в минимальном объеме 36 вариантов решения задачи определения шестнадцатеричных кодов клавиш клавиатуры с выводом этих кодов на экран дисплея.
Первый уровень (вершины 1-3) является системным уровнем.
Вершина 1 определяет функцию BIOS, вершины 2 и 3 - функции DOS, используемые в программе.
Второй уровень (вершины 4-6) соответствует уровню преобразования кода клавиатуры в шестнадцатеричную форму.
Вершина 4 указывает на алгоритм перекодировки, использующий таблицу 0-F и индекс.
Применению команды XLAT в программе перевода соответствует вершина 5.
Арифметический метод преобразования определяет вершина 6.
Вариант задания определяется маршрутом, соединяющим четыре вершины (по одной из каждого уровня), например вариант задания 1, 4, 7, 9.
Рассмотрим подробнее определение вершин морфологического графа.
Необходимые функции BIOS и DOS. соответствующие вершинам 1-3. изложены в разделе 1.2.
Вершине 4 соответствует алгоритм перекодировки, использующий таблицу и индекс.
В морфологическом графе вершина 5 определяет применение команды преобразования XLAT. Эта команда использует содержимое регистра AL как смещение относительно начала 256-байтовой таблицы TABLE, перемещаемый адрес начала которой задается регистром ВХ. Байт таблицы, определяемый этим смещением, заменяет исходное содержимое AL. Смещение О определяет начальный байт таблиц. В качестве примера использования команды XLAT рассмотрим фрагмент программы преобразования десятичных чисел от О до 15 в соответствующие им шестнадцатеричные числа от О до Е
TABLE	db	'0,	H U ff| CO LQ
	mov	ax,	CS
	mov	ds f	ax
	mov	si,	0
	mov	ex,	16
	mov	bx,	offset table
NEXT:	mov	ax,	si
	XLAT		
	mov	dl,	al
	call	displ AY	
	inc	s i	
	loop	next	
В этой программе выполняются следующие действия.
Содержимое DS помещается в CS, так как область TABLE находится в сегменте кодов.
Варианты заданий
445
Для выполнения команды XLAT необходимо поместить в ВХ адрес начала таблицы. Затем содержимое SI пересылается в АХ (AL), и по команде XLAT происходит преобразование десятичного числа в шестнадцатеричное. Преобразованное значение формируется в AL. Содержимое AL перезаписывается в DL и выводится на экран дисплея. Команда INC увеличивает содержимое SI на 1. Затем при выполнении команды LOOP содержимое регистра СХ уменьшается на 1. Если СХ = О, то управление передается на метку NEXT, а если СХ = О, то это конец выполнения программы. Вершина 6 морфологического графа соответствует арифметическому преобразованию двоичных кодов в шестнадцатеричную форму без применения таблицы. Алгоритм заключается в выделении старшей тетрады. Если старшая тетрада меньше или равна 9, то к ней добавляется 30h, а если больше, то добавляется 37h. Аналогичным образом обрабатывается младшая тетрада.
Определение кода нажатой клавиши возможно с помощью прерывания BIOS int 16h с функцией АН = 00 и прерывания DOS int 21 h с функцией АН = 06 или АН = 08.
Прерывание int 16h с функцией АН = 00 помещает в регистр AL код ASCII нажатой клавиши, причем если нажата функциональная (специальная) клавиша, то в регистре AL содержится нуль, а в регистре АН - скэн-код нажатой клавиши.
Прерывание int 21 h с функцией АН = 06 возвращает в AL код нажатой клавиши. Если клавиша не была нажата (буфер клавиатуры пуст), то устанавливается флаг нуля (ZF = 1). В случае AL = 0 (нажата функциональная клавиша) необходимо повторить вызов функции.
Процедура прерывания int 2 lh с функцией АН = 08 ждет, пока не будет нажата клавиша (флаг ZF не устанавливается), и возвращает ее код в регистр AL.
Вывод символа на экран выполняется с помощью прерывания DOS int 21 h с функцией АН = 2 или с помощью прерывания BIOS int 10h (АН =14).
446	Интерактивные устройства ввода
Справочное дополнение
Таблица кодов ASCII
Символ	Десятичное	Шестнадцатиричное	Двоичное
(null)	0	00	00000000
©	1	01	00000001
е	2	02	00000010
	3	03	00000011
♦	4	04	00000100
	5	05	00000101
А	6	06	00000110
•	7	07	00000111
□	8	08	00001000
о	9	09	00001001
Б]	10	0А	00001010
сГ	11	ОВ	00001011
?	12	ОС	00001100
	13	0D	00001101
	14	0Е	00001110
о	15	0F	00001111
►	16	10	00010000
◄	17	11	00010001
	18	12	00010010
и	19	13	00010011
п	20	14	00010100
§	21	15	00010101
——	22	16	00010110
t	23	17	00010111
т	24	18	00011000
г	25	19	00011001
—>	26	1А	00011010
<—	27	1В	00011011
1	28	1С	00011100
<—>	29	1D	00011101
▲	30	1Е	00011110
▼	31	1F	00011111
(space)	32	20	00100000
!	33	21	00100001
	34	22	00100010
#	35	23	00100011
$	36	24	00100100
%	37	25	00100101
Справочное дополнение
447
Продолжение таблицы кодов ASCII
Символ	Десятичное	Шестнадцатиричное	Двоичное
&	38	26	00100110
	39	27	00100111
(	40	28	00101000
)	41	29	00101001
*	42	2А	00101010
+	43	2В	00101011
	44	20	00101100
-	45	2D	00101101
	46	2Е	00101110
/	47	2F	00101111
0	48	30	00110000
1	49	31	00110001
2	50	32	00110010
3	51	33	00110011
4	52	34	00110100
5	53	35	00110101
6	54	36	00110110
7	55	37	00110111
8	56	38	00111000
9	57	39	00111001
	58	ЗА	00111010
	59	ЗВ	00111011
<	60	ЗС	00111100
=	61	3D	00111101
>	62	ЗЕ	00111110
?	63	3F	00111111
@	64	40	01000000
А	65	41	01000001
В	66	42	01000010
С	67	43	01000011
D	68	44	01000100
Е	69	45	01000101
F	70	46	01000110
G	71	47	01000111
Н	72	48	01001000
I	73	49	01001001
J	74	4А	01001010
К	75	4В	01001011
L	76	4С	01001100
М	77	4D	01001101
I
448
Интерактивные устройства ввода
Продолжение таблицы кодов ASCII
Символ	Десятичное	Шестнадцатиричное	Двоичное
N	78	4E	01001110
О	79	4F	01001111
Р	80	50	01010000
Q	81	51	01010001
R	82	52	01010010
S	83	53	01010011
Т	84	54	01010100
и	85	55	01010101
V	86	56	01010110
W	87	57	01010111
X	88	58	01011000
Y	89	59	01011001
Z	90	5A	01011010
[	91	5B	01011011
\	92	5C	01011100
]	93	5D	01011101
Л	94	5E	01011110
—	95	5F	01011111
	96	60	01100000
а	97	61	01100001
b	98	62	01100010
с	99	63	01100011
d	100	64	01100100
е	101	65	01100101
1	102	66	01100110
g	103	67	01100111
h	104	68	01101000
i	105	69	01101001
j	106	6A	01101010
k	107	6B	01101011
1	108	6C	01101100
m	109	6D	01101101
n	110	6E	01101110
0	111	6F	01101111
P	112	70	01110000
q	113	71	01110001
r	114	72	01110010
s	115	73	01110011
t	116	74	01110100
Контрольные вопросы	449
Продолжение таблицы кодов ASCII
Символ	Десятичное	Шестнадцатиричное	Двоичное
U	1 17	/5	01110101
V	1 18	/6	01110110
W	1 19	77	01110111
X	120	78	01111000
У	121	79	01111001
Z	122	7А	01111010
{	123	7В	01111011
	124	7С	01111100
}	125	7D	01111101
	126	7Е	01111110
о	127	7F	01111111
Контрольные вопросы
1.	Стандартные коды ASCII содержат символы: 1)0-127;	2)0-31;	3)128-256;	4)0-255.
2.	Дайте определение скэн-коду:
1)	код ASCII;
2)	расширенный код;
3)	код сканирования;
4)	порядковый номер клавиши.
3.	Укажите технологию, не используемую в переключателях клавиш:
1)	емкостная;
2)	индуктивная;
3)	механическая;
4)	акустическая.
4.	Назовите количество проводов, которое содержит кабель клавиатуры: 1)3;	2)4;	3)5;	4)6.
5.	Укажите количество битов, которое содержит по умолчанию кодовая посылка, передаваемая от клавиатуры к контроллеру:
1)9;	2)10;	3)11;	4)12.
6.	Определите функцию, не выполняемую контроллером, к которому подключена клавиатура:
1)	сканирование переключателей клавиш:
2)	формирование сигналов прерывания;
3)	передачу номера прерывания;
4)	преобразование кодов нажатия (отжатия).
450
Интерактивные устройства ввода
7.	Укажите функцию, не выполняемую клавиатурой:
1)	автотестирование матрицы переключателей клавиш;
2)	формирование последовательных кодовых посылок при нажатии (отпускании) клавиш;
3)	опрос состояний линий data и elk;
4)	анализ системного скэн-кода и преобразование его в двухбайтный код.
8.	Укажите тип временного согласования клавиатуры и контроллера:
1)	синхронный;
2)	асинхронный;
3)	синхронно-асинхронный.
9.	Назовите два байта, хранимые в буфере клавиатуры, соответствующие обычной (символьной) клавише:
1)	код ASCII, скэн-код;
2)	скэн-код, код ASCII;
3)	код 00. скэн-код;
4)	код 00, код ASCII.
10.	Определите содержимое буфера клавиатуры при нажатии специальной клавиши, например F1:
1)	код ASCII, скэн-код;
2)	код ASCII, код 00;
3)	код 00, код ASCII;
4)	код 00, скэн-код.
11.	Укажите функцию, не выполняемую обработчиком прерывания Int 9h:
1)	передача двухбайтного кода в буфер клавиатуры;
2)	сохранение содержимого регистров процессора;
3)	сбрасывание запроса прерывания;
4)	вычисление адреса вектора прерывания.
Литература
1.	Авдеев В. А., Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства: уч. пособие. - М.: Радио и связь, 2001. - 480с.: ил.
2.	Сопряжение датчиков и устройств ввода данных с компьютерами IBM PC / пер. с англ., под ред. У. Томпкинса. Дж. Уэбстера. - М.: Мир. 1992. - 592с.: ил.
3.	Ю-Чжен Лю, Гибсон Г. Микропроцессоры семейства 8086/8088. Архитектура, программирование и проектирование микрокомпьютерных систем / пер. с англ. - М.: Радио и связь, 1987. - 512с.: ил.
Видеоадаптеры
и мониторы
10.1.	Основные определения
Атрибут символа - информация, определяющая цвет символа, фона и интенсивность их свечения.
Видеобуфер - область памяти, содержащая данные, выводимые на экран
монитора.
Векторные дисплеи - устройства, являющиеся более сложными по оборудованию, чем растровые дисплеи. Векторные дисплеи для получения используют графические примитивы (неделимые элементы изображения).
Пиксел - элемент (точка) растра, минимальная единица изображения, цвет и яркость которой можно изменять.
Палитра - набор цветов, реализуемый в соответствующем режиме дисплея.
Двойное сканирование - повторение каждой горизонтальной строки при эмуляции текстовых режимов CGA в VGA, то есть символ форматом 8x8 отображается как 8x16.
Регистр-защелка - регистр с записью данных по уровню управляющего сигнала. Наиболее употребительным режимом этого регистра является фиксация данных до появления этого сигнала (его инверсным значением).
Растровые дисплеи - дисплеи, в которых изображение на экране образуется построчно и для получения немерцающего изображения выполняется его регенерация, например с частотой 50 Гц.
Разрешающая способность экрана - число пикселей, отображаемых в горизонтальной строке, умноженное на количество этих строк.
Плата видеопроцессора - плата, содержащая типовые микросхемы компьютера: видеопроцессор, память, ПЗУ - и наиболее приспособленная для обработки графической информации, например плата 8514/А.
Плата ввода и вывода изображений - плата захвата изображений, преобразующая стандартный телевизионный сигнал от видеомагнитофона в цифровую форму и имеющая выходы на видеоадаптер.
Частота регенерации изображения - частота (сколько раз в секунду), с которой повторяется содержимое экрана (частота обратного невидимого вертикального хода луча).
452
Видеоадаптеры и мониторы
Чересстрочная развертка - развертка, выполняемая за два прохода. При первом проходе вычерчиваются нечетные строки первого кадра, а при втором -четные строки второго кадра, размещаемые между нечетными строками. Чересстрочная кадровая развертка наиболее употребительна для получения качественных движущихся изображений, так как образ экрана обновляется быстрее, чем при режиме строчного отображения.
10.2.	Типы видеоадаптеров
Видеосистема имеет две основные части: видеоадаптер и монитор (дисплей). В DOS видеоадаптер называется консолью (CON), другой составной частью которой является клавиатура. Видеоадаптер может быть реализован в виде отдельной платы или встроен в видеосистему. Развитие адаптеров (видеоадаптеров) происходит путем совершенствования предыдущего адаптера (расширения функциональных возможностей) и сохранения программной совместимости. Существуют следующие типы видеоадаптеров (стандартов): монохромный адаптер дисплея и принтера (MDA), цветной графический адаптер (CGA), усовершенствованный графический адаптер (EGA), видеографическая матрица (VGA) и т. д. Некоторые показатели адаптеров приведены в табл. 10.1.
Таблица 10.1
Показатели адаптеров	MDA	CGA	EGA	VGA
Режимы	Текстовый	Текстовые,	Текстовые,	Текстовые,
		графические	графические	графические
Монитор	Монохромный	RGB-монитор,	RGB-монитор	Аналоговый
		композитный,		цветной или
		бытовой		монохромный
Символьная позиция	9x14	8x8	8x14	9x16
Разрешающая	720x350	640x200	640x350	640x480,
способность				800x600
графического режима Интерфейс	Цифровые	Цифровые	Цифровые	Аналоговые
	ТТЛ-сигналы	ТТЛ-сигналы	ТТЛ-сигналы	видеосигналы R.G.B
Цветовая палитра	Монохромная	16 цветов,	64 цвета,	262 144 цвета,
		первичных	первичных	первичных
		4 цвета	16 цветов	256 цветов
Разрешающая способность в графическом режиме определяется числом пикселей столбцов и строк. Стандарт VGA обладает лучшими показателями: высокой разрешающей способностью и возможностью видеть одновременно 256 цветов. Адаптер VGA содержит видеопамять объемом 256 Кбайт или 512 Кбайт хранящую экранные образы. В табл. 10.2 показан список режимов VGA.
Из табл. 10.2 видно, что улучшение одного показателя осуществляется за счет ухудшения другого. Например, возможность наблюдать 256 цветов приводит к снижению разрешающей способности (с 640x480 до 320x200). Разрешающая способность в текстовом режиме задается числом символов в строке и чис-
Типы видеоадаптеров
453
Таблица 10.2
Режим	Разрешающая способность
Текстовый	40x25
Текстовый	80x25
Графический	320x200
Г рафический	640x200
Текстовый	80x25
Г рафический	320x200
Г рафический	640x200
Г рафический	640x350
Г рафический	640x350
Г рафический	640x480
Г рафический	640x480
Г рафический	320x200
Количество базовых цветов
16
16
4
2
2
16
16
2
16
2
16
256
лом строк. Для изготовителей видеосистем комитетом по стандартам видеоэлектроники (VESA) утверждены следующие четыре стандарта: 640x480 с 256 цветами, 800x600 с 16 цветами, 800x600 с 256 цветами и 1024x768 с 16 цветами. Некоторые платы VGA дополнительно реализуют стандарты: 800x600 с 16 цветами и 640x480 с 256 цветами.
Если в адаптерах MDA и CGA текстовая таблица шрифтов находится в ПЗУ (знакогенераторе), то в адаптерах EGA и VGA таблицы шрифтов размещены в фиксированных областях ОП (в адресном пространстве процессора) и могут быть модифицированы. Текстовый знакогенератор EGA и VGA использует таблицы шрифтов из 256 символов, находящихся в банке 2 ОП. Каждая таблица содержит 256 32-байтных двоичных наборов.
Адаптер SVGA (Супер VGA) имеет первоначальную разрешающую способность 800x600 и 16 цветов. Стандарт SVGA был предложен ассоциацией VESA и в дальнейшем дополнительно содержал следующие разрешающие способности: 1024x768, 1280x1024. Сейчас под стандартом SVGA понимается расширенный стандарт VGA, использующий увеличенный объем видеопамяти и расширенный BIOS, который включает сведения о поддерживаемых видеорежимах и производителе платы.
Кроме того, спецификация SVGA для задания номера режима применяет числа, начиная с 100h. Например, режиму 100h соответствует графический режим с разрешающей способностью 640x480 и 256 цветами, режиму 107h - графический режим 1280x1024 с 256 цветами, режиму 10Ch - текстовый режим с форматом 132x60.
Адаптер SVGA предусматривает аналоговое управление монитором (может содержать дополнительный TTL-разъем) и имеет более высокую скорость обмена данными, чем адаптер VGA. Обычно в качестве магистрального интерфейса адаптеров используются следующие шины: ISA, EISA, VLB, PCI, MCA и AGP.
Стандарт XGA (расширенная графическая матрица) был разработан фирмой IBM для поддержки графических интерфейсов пользователей, например Windows. Стандарт XGA определяет 18 видеорежимов, включающих режимы VGA.
К новым режимам стандарта XGA относятся текстовый режим номер 14, имеющий символьную позицию 132x25 и разрешающую способность 1056x400 с 16 цветами.
454	Видеоадаптеры и мониторы
Два других дополнительных графических режимов 640x480 (количество первичных цветов 256 или 65 535) и 1024x768 (количество первичных цветов 16 или 256) не имеют номеров, поэтому недоступны через BIOS. К новым режимам можно обратиться с помощью регистров видеоадаптера, подключенного к шине MCA (Микроканала), содержащего видеопамять емкостью 0,5 Мбайта (1 Мбайт) и имеющего сложные аппаратные средства для поддержки графики. Идентификатор адаптера XGA хранится в его специальной 7-байтовой ячейке памяти. Ассоциацией VESA предложен стандарт VXE, учитывающий возможность использования стандарта XGA другими фирмами.
10.3.	Типы мониторов
В видеосистемах применяются следующие типы мониторов. Монохромный цифровой монитор прямого управления, принимающий из адаптера сигналы: горизонтальной синхронизации (HSYNC), вертикальной синхронизации (VSYNC) и видеосигнал. В композитном монохромном мониторе используется входной композитный видеосигнал, компонентами которого являются видеосигнал и сигналы синхронизации. Для композитного цветного монитора в композитный видеосигнал добавляются компоненты, несущие информацию о цвете. Бытовой телевизор требует наличия в адаптере высокочастотного модулятора, подключаемого к его антенному входу. Аналоговые R-, G-, В-мониторы используются для совместной работы с адаптерами VGA. Мультисканирующие мониторы позволяют подключать различные цифровые или аналоговые видеоадаптеры автоматически или с помощью установок соответствующих переключателей монитора.
Различают векторные и растровые мониторы. В растровых мониторах получение изображения выполняется путем изменения яркости точек в требуемые моменты времени при равномерном движении электронного луча по строкам экрана слева направо и сверху вниз. В векторных мониторах изображение, например, символа, осуществляется на экране в пределах знакового места, а затем погашенный луч перемещается на новое место. Наибольшее число современных мониторов - растрового типа.
Кроме того, используются мониторы с регенерацией или запоминанием изображения. В первых мониторах для получения немерцающего изображения выполняется аппаратным способом его регенерация с частотой 50, ..., 100 Гц, а во вторых - используются специальные запоминающие трубки. Недостатком мониторов с запоминанием изображения является отсутствие возможности частичного стирания элементов изображения.
Для издательских систем выпускают полностраничные и двухстраничные мониторы, которые могут устанавливаться горизонтально или вертикально. В горизонтальном положении на экране отображаются две страницы текста, а в вертикальном размещается полная страница текста.
Видеомониторы для ПК изготавливают такие фирмы, как NEC, Sony, IBM и др. Растровые видеомониторы характеризуются типом видеоадаптера (VGA, SVGA, XGA и т. д.), размером экрана по диагонали (36, 38, 48, 53 и т. д.), числом первичных (одновременно наблюдаемых) цветов (16, 64, 256), числом цветов в палитре (256, 4096, 262 144), шагом точек (0.25, 0.28, 0.31, 0.41 мм), максимальной разрешающей способностью (1024x768, 640x480, 1600x1280), частотой смены кадров (70, ..., 100 Гц), частотой строчной развертки (15, ..., 70 кГц),
Растровые мониторы
455
полосой пропускания импульсных видеоусилителей (80, ..., 100 МГц), интерфейсом, маской и габаритным размером.
10.4.	Растровые мониторы
Наиболее широкое распространение получили растровые мониторы. Изображение на экране монитора образуется с помощью большого числа люминофорных экранных точек (пикселей - элементов изображения). При попадании на люминофорные точки (полоски) электронного луча они начинают светиться. Цветной монитор содержит три электронные пушки, каждая из которых попадает электронным лучом только на свою цветную точку: красную (R), зеленую (G) или синюю (В). Для точного попадания на соответствующие точки R, G, и В электронные лучи проходят через отверстия в маске трубки, которые определяют расстояния между пикселями на экране, влияющие на четкость изображения. Таким образом, цветной пиксель содержит три точки R, G, и В люминофора (рис. 10.1).
Рис. 10.1. Траектория лучей
456
Видеоадаптеры и мониторы
При движении лучей по строке происходит изменение яркости каждого из сотен пикселей. Во время обратного горизонтального и вертикального ходов лучи гасятся. Совокупность строк (прямых ходов лучей) образует растр экрана (рис. 10.2). Для получения немерцающего изображения выполняется регенерация растра с частотой 50-70 Гц.
Свечением пикселей управляет видеосигнал, поступающий в монитор. В адаптерах MDA, CGA и EGA для этого используются уровни ТТЛ. Наличие узкого положительного сигнала вызывает свечение пикселя, а отсутствие - гашение. В адаптерах VGA применяют аналоговые сигналы, управляющие свечением цветных пикселей. Получение растрового изображения на экране синхронизируется сигналами горизонтальной (строчной) HSYNC и вертикальной (кадровой) VSYNC синхронизаций.
Различают режимы строчного и чересстрочного отображения. В чересстрочном режиме в первом этапе вычерчиваются нечетные строки развертки, а на втором - четные строки. Чересстрочная развертка наиболее подходит для изображения движущихся объектов, а строчная (последовательная) развертка - для статических объектов.
Упрощенная структурная схема растрового видеомонитора показана на рис. 10.3.
Рис. 10.3. Упрощенная структурная схема растрового видеомонитора
Обычно для интерфейсного соединения видеоадаптера и видеомонитора используются разъемы D-9 или D-15, например разъем типа СНП 101. Подключение интерфейсных линий к контактам разъема D-15 представлено в табл. 10.3.
Разъем видеоадаптера VGA изображен на рис. 10.4.
С помощью линий ID2-ID0 видеоадаптер VGA определяет тип подключаемого к нему монитора. В зависимости от полярности сигналов синхронизации HSYNC и VSYNC задаются режимы с разными строками развертки (350, 400 и 480). Например, отрицательная полярность сигналов HSYNC и VSYNC соответствует режиму, имеющему 480 строк развертки.
Растровые мониторы
457
Таблица 10.3	
Номер контакта	Назначение линии
1	Красный видео (R)
2	Зеленый видео (G)
3	Синий видео (В)
4	_ Идентификатор 2 (ID2)	
5	Земля (G)
6	Земля (возврат красного)
7	Земля (возврат зеленого)
8	Земля (возврат синего)
9	_ Ключ (пустое отверстие)	
10		Земля (возврат синхросигнала)	
11	Идентификатор 0 (ID0)
12	Идентификатор 1 (ID1)
13	Горизонтальная синхронизация (HSYNC)
14	Вертикальная синхронизация (VSYNC)
15	Резерв
R(возврат)
G (возврат)
В (возврат) Key
SYNC (возврат)
R
(3 IT
ID2
GND
1J_
13
U
1Д 10*"
IDO
ID1
HSYNC VSYNC Резерв
1
2
6
7
4
7
8
9
Рис. 10.4. Разъем видеоадаптера VGA
Буферный блок схемы видеомонитора предназначен для согласования его уровней сигналов с видеоадаптером и предварительной обработки сигналов.
Блок цветности используется для регулировки яркости, цветовой насыщенности, контрастности и для формирования цветовых видеосигналов R, G и В, которые через выходные усилители поступают на соответствующие пушки электронно-лучевой трубки (ЭЛТ).
Выходные усилители осуществляют усиление сигналов основных цветов R, G и В до уровня, необходимого для модуляции токов лучей с помощью катодов трубки.
Модули строчной и кадровой разверток предназначены для создания отклоняющих токов строчной и кадровой частоты, поступающих в отклоняющую си
458
Видеоадаптеры и мониторы
стему (ОС) ЭЛТ, и формирования импульсных напряжений, необходимых для стабилизации размера кадра по вертикали и горизонтали экрана.
Блок питания содержит выпрямитель напряжения сети, устройство пуска, стабилизации и защиты от перегрузок и обеспечивает сигналы питания всех модулей и блоков видеомонитора.
К основным органам настройки относятся регуляторы яркости, контрастности, частоты, размера и смещения по горизонтали (строкам) и вертикали (кадрам).
10.5.	Адаптер VGA
Структурная схема адаптера VGA [2] представлена на рис. 10.5.
Синхроимпульсы
Рис. 10.5. Структурная схема адаптера VGA
Адаптер VGA содержит ПЗУ, например микросхему 127256 (Intel), имеющую емкость 32 Кбайта и хранящую систему BIOS, которая поддерживает функционирование процессора с адаптером VGA. Начальный адрес ячеек ПЗУ равен COOOrOOOOh, а конечный адрес - 1000:3FFFh.
BIOS имеет следующие основные компоненты: программу инициализации адаптера, драйверы управления работой адаптера, наборы знакогенераторов для различных режимов с матрицами 8x8, 8x14 и 9x16 и таблицы видеопараметров для задания специальных режимов БИС адаптера.
Адаптер VGA	459
Секвенсер (контроллер синхронизации) координирует работу всех блоков адаптера. В состав секвенсера входят пять программно-доступных регистров, с помощью которых задаются режимы синхронизации, режимы работы видеопамяти (VRAM), выбор банка VRAM и т. д. Доступ к регистрам осуществляется через порт 3C4h (индекса) и порт 3C5h (данных).
Секвенсер обеспечивает циклический доступ процессора к банкам памяти во время обратного хода луча по строке экрана. Для обращения процессора к VRAM секвенсер формирует сигнал готовности (I/O CH RDY).
В адаптерах MDA и CGA в качестве контроллера электронно-лучевой трубки (ЭЛТ) используется микросхема 6845 фирмы Motorola, предназначенная для управления формированием сигналов HSYNC и VSYNC, курсора и изменения адреса видеопамяти синхронно с образованием растра. Эта микросхема содержит 18 программно-доступных регистров, обращение к которым выполняется с помощью двух портов (регистра индекса 3D4H и регистра данных 3D5H). В контроллере ЭЛТ четыре регистра (R0-R3) используются для задания параметров строчной развертки (число символов в строке, ширина и начальная позиция HSYNC). Кроме того, четыре регистра (R4-R7) определяют характеристики кадровой развертки (число строк, ширина VSYNC и т. д.). Два регистра R8 и R9 предназначены соответственно для управления чересстрочным режимом и хранения адреса конечной строки растра. Регистры R0-R9 инициализируются BIOS при включении питания. При смене режимов BIOS модифицирует эти регистры. Регистры R10 (начальная строка) и RI 1 (конечная строка) применяются для программирования формы курсора, а регистры R12 (старший байт) и R13 (младший байт) отслеживают стартовый адрес выводимого на экран символа. Адрес позиции курсора указывают регистры R14 (старший байт) и R15 (младший байт), а адрес позиции светового пера - R16hR17. Регистры R12 и R13 могут быть использованы для выполнения горизонтального и вертикального сдвигов изображения на экране.
В адаптере EGA применяется БИС, содержащая регистры микросхемы 6845 и имеющая дополнительные регистры. Эта БИС формирует сигнал прерывания (INTR) в момент времени начала вертикального гашения луча (обратного хода), сообщая процессору о возможности доступа к видеопамяти. Кроме того, БИС позволяет осуществлять доступ к двум несмежным областям видеопамяти. Каждый регистр БИС дополнен девятым битом переполнения.
В адаптере VGA (СБИС) также сохраняется преемственность с БИС ЭЛТ EGA (сохранены программно-доступные регистры, обращение к которым выполняется с помощью портов 3D4H и 3D5H). Кроме того, введены дополнительные регистры, связанные с реализацией новых режимов, содержащих 400 и 480 строк. Большая часть регистров доступна по записи и по чтению со стороны П, и регистры развертки можно защитить от записи информации. Адаптер VGA может эмулировать работу адаптера CGA, при этом в текстовом режиме повторяется каждая строка (процесс двойного сканирования), то есть символ с позицией 8x8 при двойном сканировании имеет позицию 8x16.
Видеобуфер или видеопамять (VRAM) использует часть адресного пространства системного процессора и расположен в видеоадаптере. Доступ к видеобуферу со стороны процессора может быть прямой (непосредственный), реализуемый в адаптерах MDA и CGA, и косвенный с использованием регистров-защелок, применяемый в адаптерах EGA и VGA. Для получения немерцающего изображения контроллер ЭЛТ адаптера периодически считывает содержимое видеобуфе-
460	Видеоадаптеры и мониторы
pa с частотой 50-70 Гц и преобразует его в видеосигнал (цифровой или аналоговый), поступающий в монитор. Емкость видеобуфера находится в интервале от 4 Кбайт (MDA) до 256 (512) Кбайт (VGA).
Рассмотрим адресацию видеобуфера. В адаптере MDA 4 Кбайта занимают неизменяемое адресное пространство от BOOOiOOOOh, а в адаптере CGA 16 Кбайт-от B800:0000h. В адаптере EGA используются 4 области адресного пространства в зависимости от битов 3 и 2 шестого вспомогательного регистра графического контроллера. Если эти биты принимают значения 00 или 01, то адресный диапазон начинается от AOOOiOOOOh. Коды 10 или 11 указанных битов соответственно определяют адресный диапазон от BOOOiOOOOh или B800:0000h. Для исключения всего видеобуфера из адресного пространства П следует сбросить бит 1 выходного регистра (порта ЗС2Н). Управление выбором адресного пространства VGA выполняется так же, как и в EGA, за исключением разрешения (запрещения) адресации. В текущий момент времени обычно на экран выводится только часть информации видеопамяти, называемой экранной страницей. Если емкость видеобуфера равна 16 Кбайтам (CGA), то для текстового режима 80x25 видеобуфер содержит четыре страницы (80 х 25 х 2 = 4 Кбайта). В текстовом режиме в видеобуфере хранятся код символа и код атрибута (2 байта). Для построения видеобуфера применяются микросхемы памяти, имеющие два независимых (параллельных) канала доступа к ее ячейкам. Один канал используется процессор для записи или чтения содержимого видеобуфера, а другой необходим контроллеру ЭЛТ для регенерации изображения на экране.
В адаптерах EGA и VGA применяется графический контроллер для управления передачей данных между видеобуфером и процессор - между видеобуфером и атрибутным контроллером. Графический контроллер содержит 9 программно-доступных регистров, обращение к которым выполняется с помощью портов ЗСЕН (индекса) и 3CFh (данных). Атрибутный контроллер в адаптере VGA преобразует символьные атрибуты текстового режима и пиксельные данные графического режима в восьмиразрядные индексы для выбора регистра цвета ЦАП. Доступ к 20 регистрам атрибутного контроллера осуществляется через порты 3C0h (индекса) и 3Clh (данных).
10.6.	Текстовый режим
После загрузки компьютера дисплей начинает работать в текстовом режиме. В этом режиме видеобуфер хранит код символа и код атрибута. Младшие четыре разряда кода атрибута определяют цвет символа (биты I, R, G и В, где I - интенсивность свечения). Старшие четыре разряда задают цвет фона (биты I/B, R, G и В, где I/В - интенсивность или мигание символа), программируются битом 5 регистра управления режимом (порта 3D8h).
Используя 3 основных цвета R, G и В, можно получить 8 цветовых комбинаций. Управляя еще и интенсивностью (I) свечения, образуют 16 цветовых комбинаций с помощью кода IRGB. В табл. 10.4 представлено базовое кодирование цветов (палитра цветов).
В адаптере CGA байт атрибута непосредственно управляет выбором цветов символа и фона, а в адаптере EGA каждые четыре бита атрибута используются как индекс для выбора одного из 16 режимов палитры, 6-разрядный код Rr Gg Bb которого поступает в монитор. В этом коде для каждого цвета применяются два бита (00 - цвет выключен, 01 - слабый цвет, 10 - обычный и 11 - яркий).
Текстовый режим
461
Таблица 10.4					
Номер цвета	4-битный код				Название цвета
	1	R	G	в	
0	0	0	0	0	Черный
1	0	0	0	1	Синий
2	0	0	1	0	Зеленый
3	0	0	1	1	Голубой
4	0	1	0	0	Красный
5	0	1	0	1	Вишневый
6	0	1	1	0	Коричневый
7	0	1	1	1	Белый
8	1	0	0	0	Серый
9	1	0	0	1	Ярко-синий
10	1	0	1	0	Ярко-зеленый
11		0		1	Ярко-голубой
12	1	1	б	У	Ярко-красный
13	1	1	0	1	Ярко-вишневый
14	1	1	1	0	Желтый
15	1	1	1	1	Яр ко-белый
Такое кодирование увеличивает число цветов до 64. Адаптер VGA содержит дополнительно 256 18-разрядных регистров цвета ЦАП, выбор каждого из которых осуществляется 8-разрядным кодом, причем младшие 6 или 4 бита считываются из регистра палитры, используемого также в EGA, а старшие 2 или 4 бита берутся из регистра выбора цвета. Объединением битов (6 и 2, 4 и 4) управляет бит 7 регистра управления режимом. Каждый 18-разрядный регистр цвета ЦАП содержит три 6-разрядных поля R. G и В. которые соответственно поступают на ЦАП R, ЦАП G и ЦАП В, аналоговые сигналы которых передаются в монитор. Этапы дешифрирования битов атрибута в VGA показаны на рис. 10.6.
4 бита атрибута
18-разрядный код <
ЦАП R ЦАП G ЦАП В
регистр выбора цвета
4
-------► 16 регистров палитры
18z___	_
—256 регистров выбора цвета
Рис. 10.6. Этапы дешифрации битов атрибута
В адаптерах MDA и CGA символы видеобуфера, которые отображаются (рис. 10.7).
хранятся в последовательных ячейках на прямоугольные координаты экрана
462
Видеоадаптеры и мониторы
OOOOh
OOAOh
Рис. 10.7. Отображение видеобуфера на экране
В видеобуфере в младшем байте с четным (меньшим) адресом хранится код символа, а в старшем байте с нечетным (большим) адресом - код атрибута. Схема отображения кода символа на экран имеет следующий вид:
Код символа -4 ПЗУ (знакогенератор) -4 Сдвиговый регистр -> Экран.
На экран в символьную позицию построчно отображается матрично-пиксельное изображение символа (рис. 10.8).
Матрица 8x8
Рис. 10.8. Матрично-пиксельное изображение символа
Видеобуфер адаптеров EGA и VGA содержит четыре параллельных банка памяти (0-3), начальный адрес которых B800:0000h или А000:OOOOh, причем отображаемые на экране данные хранятся в банках 0 и 1, а в банке 2 - таблицы шрифтов знакогенератора. Байты символов с четными адресами размещаются в банке 0, а байты атрибутов с нечетными адресами - в банке 1. Управление обращением к банкам 0 и 1 осуществляет контроллер ЭЛТ.
10.7.	Графический режим
Графический режим - это режим с адресацией всех точек экрана, позволяющий получать сложные, цветные и движущиеся изображения и связанный с обработкой процессором больших массивов информации. В этом режиме каждый
Г рофический режим	463
байт видеобуфера хранит цветные значения одного или нескольких пикселей. Если пиксель кодируется п битами видеобуфера, то на экране одновременно можно наблюдать 2п цветов. В адаптере CGA графический режим 320x200 использует 2 бита для кодирования цвета пикселя, то есть на экране одновременно можно наблюдать 4 цвета из 16 цветов палитры. В каждом байте видеобуфера CGA хранятся значения четырех пикселей, причем левый младший пиксель в байте соответствует старшим байтам D7 и D6. В адаптере CGA реализуется прямое соответствие (без преобразования) между битами видеобуфера и пикселями экрана, а в адаптерах EGA и VGA - косвенное отображение с использованием 16 регистров палитры, как и в текстовом режиме. На рис. 10.9 показаны схемы отображения содержимого видеобуферов CGA, EGA и VGA на экраны мониторов.
Видеобуфер -> Экран CGA
Видеобуфер Регистры палитры Экран EGA Видеобуфер Регистры палитры Регистры ЦАП^ Экран VGA
Рис. 10.9. Схемы отображения видеобуферов на экраны CGA, EGA, VGA
Следует отметить, что во всех этих трех случаях сохраняется линейное отображение видеобуфера (страницы) на экран, то есть двоичному полю (коду) видеобуфера ставится в соответствие пиксель (элемент изображения) на экране.
Хранение значений пикселей в видеобуферах CGA, EGA и VGA выполняется следующим образом (рис. 10.10).
CGA
В800:
OOOOh
2000h
100 четных строк
8000 байт
100 нечетных строк
8000 байт
Экран
—► Стр. 0
—► Стр. 1
—► Стр. 2
г-> Стр. 3
EGA, VGA
Видеобуфер
Рис. 10.10. Представление видеобуферов CGA, EGA и VGA в графическом режиме
В CGA графические данные хранятся в двух блоках видеобуфера. Первый блок с начальным адресом В800:0000h предназначен для хранения значений пикселей 100 четных строк, а второй блок с начальным адресом B800:2000h -100 нечетных строк. Видеобуфер VGA и EGA, как уже отмечалось, в текстовом режиме состоит из четырех блоков, или двоичных плоскостей, 0-3, адресуемых
464
Видеоадаптеры и мониторы
параллельно, то есть адрес относится к четырем байтам соответственно четырех плоскостей. Если в CGA возможен прямой доступ к видеобуферу, то в EGA и VGA непосредственное обращение к видеобуферу исключено. При чтении содержимого видеобуфера VGA (EGA), связанного с выполнением команд MOV. CMP, LODS и т. д., происходит параллельная выборка четырех байтов, которые загружаются в соответствующие регистры-защелки, то есть байт из двоичной плоскости 0 загружается в регистр-защелку 0, и т. д. Каждый байтовый срез четырех регистров хранит 4-разрядные значения пикселя. В EGA используются 4 бита для хранения значения пикселя, а в VGA - 8 бит. Регистры-защелки содержат 8 четырехразрядных значений пикселей.
При выполнении команд MOV, CMP, LODS и т. д. процессор осуществляет запись данных в видеобуфер при указании в них соответствующего адреса. При этом реализуется параллельная модификация байт во всех четырех плоскостях с учетом содержимого четырех регистров-защелок и байта данных процессора. Регистры-защелки представляют собой ортогональную память, допускающую обращение как по байтам, так и по разрядам (пикселям) всех байтов, что упрощает программирование графического режима. Передачами данных между процессором, регистрами-защелками и видеобуфером управляет графический контроллер со средствами маскирования, реализующий с помощью программно-доступных регистров пиксельные и байтные операции.
Как уже отмечалось, графический режим называют режимом АРА (All Points Addressable) с адресацией всех точек. В этом режиме видеопамять хранит битовый образ пиксельного представления изображения на экране. Каждый байт видеопамяти хранит значение одного или значения нескольких пикселей, причем нумерация битов и пикселей противоположная, то есть самому левому, младшему, пикселю соответствуют старшие биты байта. Число одновременно наблюдаемых цветов на экране определяется числом битов, соответствующих каждому пикселю. Так, например, в 16-цветном графическом режиме под любой пиксель отводятся четыре бита. Если разрешающая способность цветного режима АРА 640x480, то необходимый объем страницы видеопамяти равен (640 х 480 х 4) х 18 = 153 600 байтов. Характеристики графических режимов адаптера VCA приведены в табл. 10.5.
Из табл. 10.5 видно, что на рост емкости страницы видеопамяти влияют увеличение разрешающей способности и количество одновременно наблюдаемых
Таблица 10.5
Номер	Разрешающая	Начальный	Число	Цвета	Текстовый	Размер
режима	способность	адрес	байтов		формат	матрицы
		видеопамяти	в странице			символа
4.5	320x200	В8000	2000	4	40x25	8x8
6	640x200	В8000	16 000	2	80x25	8x8
D	320x200	А0000	32 000	16	40x25	8x8
Е	640x200	А0000	64 000	16	80x25	8x8
F	640x350	А0000	56 000	Моно	80x25	8x14
10	640x350	А0000	1 12 000	16	80x25	8x14
1 1	640x480	А0000	38 000	2	80x30	8x16
12	640x480	А0000	153 600	16	80x30	8x16
13	320x200	А0000	64 000	256	40x25	8x8
Графический режим
465
цветов. Режимы 4, 5 и 6 необходимы для реализации стандартов CGA, а режимы D, G, F и 10 - для поддержания стандарта EGA. Стандарту VGA принадлежат режимы 11, 12, 13, из которых наиболее употребительным является режим 12. Видеопамять в зависимости от режима может иметь одну, две или четыре битовых плоскости. Битовые плоскости иначе еще называют банками. На рис. 10.11 показана организация видеопамяти в виде четырех битовых плоскостей (0-3) для режимов D, Е, 10, 12 (рис. 10.11а), двух плоскостей, например 0 и 2 для режимов 4 и 5 (рис. 10.116) и одной плоскости для режимов 6 и 11 (рис. 10.11в).
В	Байт
(значения восьми пикселов)
2-х цветные режимы 6 и 11
Рис. 10.11. Организация видеопамяти для различных режимов
При наличии в видеопамяти нескольких битовых плоскостей выполняется их параллельная адресация, то есть осуществляется одновременная выборка байтов всех плоскостей по одному и тому же адресу и занесение их в регистры-защелки.
466
Видеоадаптеры и мониторы
На рис. 10.12 для 16-цветного режима изображена схема связи битовых плоскостей с соответствующими 8-битовыми режимами-защелками R0-R3.
Байт (значение восьми пикселов)
Битовый срез (значение пиксела)
Рис. 10.12. Схема связи двоичных плоскостей 0-3 видеопамяти с регистрами-защелками R0-R3
Считанный из битовых плоскостей битовый срез байтов определяет количество одновременно наблюдаемых цветов. Таким образом, цвет пикселя на экране обусловливается четырьмя битами (рис. 10.11а), двумя битами (рис. 10.116) или одним битом (рис. 10.11 в) с учетом 16 шестибитовых регистров палитры атрибутного контроллера, то есть указанные 4, 2 или 1 бит задают номер цвета в соответствующем регистре палитры. Для двух- или четырехцветного режимов используются первые 2 или 4 регистра палитры. Затем 6-битовое значение выбранного регистра палитры преобразуется в 8-битовый индекс (адрес) для доступа к одному из 256 18-битовых регистров ЦАП. Каждый 18-битовый регистр хранит определенный цвет и содержит 3 шестибитовых части, соответствующие красному, зеленому и синему цветам. В регистры ЦАП записывается таблица цветов, которую можно программно изменить.
В режиме 13 атрибутный контроллер не участвует. В этом случае каждый байт видеопамяти поступает непосредственно в ЦАП для выбора желаемого цвета пикселя с помощью таблицы цветов. В адаптере VGA обработку данных, передаваемых между процессором и видеопамятью, выполняет графический контроллер, содержащий 9 регистров, доступ к которым осуществляется через регистр данных (3CFh) и регистр индекса (ЗСЕЬ), выбирающего желаемый регистр. К числу регистров графического контроллера относятся: регистр установки/сброса (индекс 0), индекс разрешения установки/сброса (индекс 1), регистр сдвига данных (индекс 3), регистр режима (индекс 5) и регистр маски битов (индекс 8).
Адаптер реализует 3 режима записи и 2 режима чтения из видеопамяти. По умолчанию BIOS устанавливает режим записи 0 и режим чтения 0. При осуществлении режима записи необходимо предварительно в регистры-защелки за
Графический режим
467
грузить текущее содержимое байтов видеопамяти. В регистре режима биты 0-1 задают режимы записи (00 - режим записи 0, ...» 11 - режим записи 3), бит 3 указывает на режим чтения (0 - режим чтения 0, 1 - режим чтения 1).
Рассмотрим выполнение наиболее сложного режима записи 0. Для реализации этого режима секвенсер адаптера содержит регистр маски карты (индекс 2). Секвенсер координирует передачу данных из видеопамяти или графического контроллера в атрибутный контроллер и имеет 5 программно-доступных регистров, обращение к которым выполняется с помощью регистра данных (3C5h) и регистра индекса (3C4h), предназначенного для выбора конкретного регистра по его индексу.
Регистр маски битов (индекс 8) графического контроллера используется для защиты соответствующих битов регистров-защелок от воздействия содержимого регистра данных процессора, например AL. Если в регистре маске битов разряды DO = D1 = D3 = 0, то в регистрах-защелках запрещается изменение битов DO, Dl и D3. Единичное значение какого-либо бита регистра маски битов разрешает модификацию соответствующих битов в регистрах-защелках.
Рассмотрим следующий пример. Пусть необходимо представить пиксель коричневого цвета в строке 0 и столбце 1 экрана в режиме записи 0. На рис. 10.13 изображена схема очистки текущего содержимого регистров-защелок. Рисунок показывает выбор первых байтов в битовых плоскостях видеопамяти по его начальному адресу [3]. Затем в регистре-маске устанавливается код 010...0Ь, маскирующий все биты, кроме шестого, в регистрах-защелках. После этого необходимо выполнить чтение содержимого видеопамяти в регистры-защелки путем выполнения команды MOV AL.ES:[BX], причем содержимое регистра AL здесь игнорируется. После этого в регистр AL заносится нулевое значение и выполняется команда MOV ES:[BX],AL, которая очищает шестой битовый срез в регистрах-защелках (шестые биты в первых байтах двоичных плоскостей (3-0) видеопамяти).
Рисунок 10.14 показывает вывод пикселя коричневого цвета на экран.
Вначале устанавливается код ОНО в регистре маски карты, задающий коричневый цвет выводимой точки. Код в регистре маски карты определяет цвет
468
Видеоадаптеры и мониторы
Регистр маски карты
Регистр режима
: Установка маски карты
MOV DX,3C4h	;задаем регистр адреса
MOV AL.2	досылаем указатель
OUTDX,AL
INC DX	устанавливаем регистр
данных
MOV AL,6	направляем код маски
OUTDX.AL
; изображение точки
MOVAL,OFFh
MOV ES: [BX],AL ;запись в VRAM
Рис. 10.14. Схема вывода пикселя на экран и фрагмент программы
пикселя на экране. После этого любое значение с D6 = 1 в регистре AL при выполнении команды MOV ES:[BX], AL устанавливает требуемую точку коричневого цвета на экран. Если в регистре маски карты поместить код ООО 1 или 0010, то это будет соответствовать изображению на экране точки синего или зеленого цвета.
При выполнении операции записи пикселя в видеопамять необходимо выполнить следующие действия:
•	установить тип графического режима с помощью функции 0 прерывания Int 10h;
•	задать режим записи 0 в регистре режима графического контроллера.
После этого для осуществления режима записи 0 устанавливается адрес нулевых байтов видеопамяти и устанавливаются биты в регистре маски битов, кроме бита, соответствующего заданному пикселю. Затем выполняются чтение содержимого требуемых битов видеопамяти в регистры-защелки и последующая очистка их битового среза. В заключение производятся установка регистра маски карты для задания желаемого цвета и запись точки в видеопамять.
Здесь следует отметить, что при выполнении процессором команд: MOV RG,VRAM, CMP RG, VRAM или AND RG,VRAM - из четырех двоичных плоскостей видеопамяти по одному и тому же заданному в команде адресу видеопамяти извлекаются четыре байта, которые затем автоматически помещаются в соответствующие регистры-защелки.
Аналогичным образом при выполнении, например, команды MOV VRAM, RG производятся модификация содержимого регистров-защелок и параллельная запись их в битовые плоскости по заданному в команде адресу видеопамяти. В режиме записи 0 на формирование данных, выводимых из регистров-защелок в битовые плоскости видеопамяти в режимах D, Е, 10 и 12, влияет содержимое
469
Графический режим
регистра маски битов, регистра маски карты, регистра установки/сброса, регистра разрешения установки/сброса, регистра данных процессора и регистра сдвига данных (рис. 10.15).
Видеопамять (VRAM)
Регистр уст/сбр (индекс 0)
Регистр разрешения уст/сбр (индекс 1)
ВЗ_________ВО D4 D3 _________D0
| о 11 Г~| |о о |
Регистр сдвига
ВЗ	ВО	данных
| 1 О О ~Г~| (индекс 3)
Графический контроллер (индекс -» 3CEh, код -» 3CFh)
ВЗ	ВО
| 1 10 ~~б~]
Регистр маски карты (индекс 2)
Секвенсер (индекс -» 3C4h, код -» 3C5h)
Рис. 10.15. Структурная схема реализации режима записи О
Регистр установки/сброса, содержащий биты ВО-ВЗ по числу регистров-защелок, управляет установкой единичных значений или сбросом в нулевое состояние битов выбранных регистров-защелок. Так, если в регистре установки/ сброса бит ВЗ = 0 и бит ВО = 1, то все немаскируемые биты третьего регистра-защелки сбрасываются в нулевое состояние, а немаскируемые биты нулевого регистра-защелки устанавливаются в единичное состояние. Работа регистра установки/сброса координируется регистром разрешения установки/сброса. Если, например, в регистре разрешения установки/сброса бит ВЗ = 1, то это соответствует разрешению работы бита ВЗ регистра установки/сброса.
Регистр установки/сброса обладает более приоритетным воздействием на значения регистров-защелок, чем регистр маски карты, то есть разрешенный бит регистра установки/сброса запрещает действие одноименного бита регистра масок карты. Если в регистре маски карты какой-либо бит равен нулю, то этот бит защищает соответствующий регистр-защелку от записи в него значения регистра данных процессора с учетом того, что одноименный бит регистра установки/сброса неразрешен.
470
Видеоадаптеры и мониторы
Таким образом, передача содержимого регистра данных процессора осуществляется в немаскируемые биты немаскируемого регистра-защелки с запрещенным сбросом или установкой его битов.
Более сложные операции над содержимым регистров-защелок выполняются с использованием регистра сдвига данных, в формате которого биты 0-2 определяют количество сдвигов вправо в выбранном регистре-защелке и биты 3-4 задают логические функции И, ИЛИ и исключающее ИЛИ. По умолчанию биты регистра сдвига равны 0.
Наиболее простым является режим записи 1. В этом режиме содержимое регистров-защелок передается в соответствующие выбранные байты битовых плоскостей видеопамяти без использования дополнительных регистров маскирования. Режим записи 1 наиболее пригоден для организации сдвигов изображения на экране путем считывания байтов битовых плоскостей видеопамяти в регистры-защелки и перезаписи их в видеопамять по новому адресу. На рис. 10.16 показаны схема реализации режима записи 1 и фрагмент программы копирования содержимого одной строки в другую.
Режим записи 1, как и любой другой режим, устанавливается по известной методике, связанной с доступом к регистру режима графического контроллера:
MOV DX f 3CEh	; задаем регистр индекса
MOV AL f 5	; указываем индекс регистра режима
OUT DX , AL
INC DX	; устанавливаем адрес регистра данных
MOV AL , 1
OUT DX f AL
Рис. 10.16. Схема реализации режима записи 1
и фрагмент программы копирования из одной области VRAM в другую
В режиме записи 2 младшие четыре бита регистра AL процессора выполняют те же функции, что и разряды 4-битного регистра маски карты в режиме записи 0, то есть определяют цвет пикселя экрана (рис. 10.17).
470
Видеоадаптеры и мониторы
Таким образом, передача содержимого регистра данных процессора осуществляется в немаскируемые биты немаскируемого регистра-защелки с запрещенным сбросом или установкой его битов.
Более сложные операции над содержимым регистров-защелок выполняются с использованием регистра сдвига данных, в формате которого биты 0-2 определяют количество сдвигов вправо в выбранном регистре-защелке и биты 3-4 задают логические функции И, ИЛИ и исключающее ИЛИ. По умолчанию биты регистра сдвига равны 0.
Наиболее простым является режим записи 1. В этом режиме содержимое регистров-защелок передается в соответствующие выбранные байты битовых плоскостей видеопамяти без использования дополнительных регистров маскирования. Режим записи 1 наиболее пригоден для организации сдвигов изображения на экране путем считывания байтов битовых плоскостей видеопамяти в регистры-защелки и перезаписи их в видеопамять по новому адресу. На рис. 10.16 показаны схема реализации режима записи 1 и фрагмент программы копирования содержимого одной строки в другую.
Режим записи 1, как и любой другой режим, устанавливается по известной методике, связанной с доступом к регистру режима графического контроллера:
MOV DX f 3CEh	; задаем регистр индекса
MOV AL f 5	; указываем индекс регистра режима
OUT DX , AL
INC DX	; устанавливаем адрес регистра данных
MOV AL , 1
OUT DX f AL
Рис. 10.16. Схема реализации режима записи 1
и фрагмент программы копирования из одной области VRAM в другую
В режиме записи 2 младшие четыре бита регистра AL процессора выполняют те же функции, что и разряды 4-битного регистра маски карты в режиме записи 0, то есть определяют цвет пикселя экрана (рис. 10.17).
Графический режим
471
карты
Рис. 10.17. Схема реализации режима записи 2
Программа установок пикселя заданного цвета на экране в режиме записи 2 почти аналогична программе того же назначения, что и для режима записи О. В режиме записи 2 может быть использован и регистр установки/сброса (на рис. 10.17 этот регистр не показан).
В режиме записи 3 байт данных в регистре AL процессора может быть сдвинут вправо на заданное число битов, которое определено в регистре сдвига данных. После этого полученный результат объединяется по И с содержимым регистра маски битов и затем используется в качестве маски битов регистров-защелок. Действие разрешенных битов регистра установки/сброса аналогично действию битов этого регистра в режиме записи 0.
Адаптер VGA (EGA) выполняет два режима чтения - 0 и 1.
В режиме чтения 0 необходимо заранее установить регистр выбора карты (индекса 4), выбирающий битовую плоскость. Биты 0 и 1 этого регистра задают номер битовой плоскости 0-3 для режима чтения 0. На рис. 10.18 показана схема реализации режима чтения 0.
Режим чтения 0 или 1 определяется значением бита 3 регистра режима графического контроллера. Для доступа к этому регистру необходимо записать индекс 5 в регистр адреса (порт 3CEh), а в регистр данных (порт 3CFh) - значение бита 3, равное 0 или 1.
Режим чтения 1 заключается в том, что каждый битовый срез регистров-защелок считанных четырех байтов из битовых плоскостей 0-3 видеопамяти сравнивается с 4-битовым кодом заданного цвета, предварительно записанного в регистр сравнения цвета (индекс 2). В том случае если сравниваемые коды совпадают, то в регистре AL процессора соответствующий бит устанавливается в 1, в противном случае - сбрасывается в 0. Таким образом, режим чтения 1 позволяет определить цвет пикселя на экране. Для выполнения этого режима, кроме того, применяется 4-битовый регистр безразличия цвета, позволяющий игнорировать некоторые биты кода цвета. Регистру безразличия цвета присвоен
472
Видеоадаптеры и мониторы
Регистр выбора карты (индекс 4 -*3CEh, 0 —3CFh)
Рис. 10.18. Схема реализации режима чтения 0
индекс 7, засылаемый в регистр адреса (порт 3CEh). Сброс бита этого режима с помощью порта 3CFh приводит к игнорированию соответствующей битовой плоскости. На рис. 10.19 показана схема выполнения режима чтения 1.
10.8.	Видеопроцессоры, графические ускорители
Видеоадаптеры MDA VGA не освобождают системный процессор от громоздких вычислений, связанных с вычерчиванием на экране графических изображений (обработкой больших массивов графической информации и передачей их в видеобуфер). Для специальных (профильных) применений, в которых используется сложная графика с быстрой сменой экранных изображений, выпускают графические сопроцессоры и ускорители, разгружающие системный процессор от вычислений и передач данных в видеобуфер. Фирмой IBM изготавливается плата 8514/А, содержащая видеопроцессор и видеобуфер емкостью 512 Кбайт. Плата 8514/А не обеспечивает стандарт VGA и имеет максимальную разрешающую способность 1024x768 пикселей с 256 цветами. Кроме того, эта плата выполняет режим 640x480 с 256 цветами. Многие фирмы выпускают видеопроцессоры, совместимые с 8514/А. Системный процессор передает команды (графические примитивы) в видеопроцессор, такие как вычерчивание отрезка, изменение масштаба, пересылка данных и т. д. Видеопроцессор наиболее приспособлен для реализации таких операций, чем системный процессор, что приводит к увеличению скорости отображения информации на мониторе.
Видеопроцессоры, графические ускорители	473
Рис. 10.19. Схема реализации режима чтения 1
Фирма Texas Instruments также производит семейство видеопроцессоров TMS 34010 и TMS 34020, которые являются более дорогими, чем 8514/А, и эмулирует режимы VGA. Платы TMS 340 не имеют такой разрешающей способности, как 8514/А, но являются более универсальными в реализации разных видеорежимов. Широкое распространение имеют платы, построенные на графическом ускорителе 86С911 (процессоре ускорения графики, микросхеме фирмы S3), спрос на которые растет в связи с повышением производительности Windows.
Таким образом, различают графические видеопроцессоры и графические ускорители. Графические видеопроцессоры могут выполнять программу, написанную на каком-либо языке (имеют собственное программное обеспечение), и содержат большой объем видеопамяти до 1 или 4 Мбайт.
Более дешевыми являются графические ускорители, которые не программируются, работают быстрее обычных видеоадаптеров и предназначены для реализации конкретных функций, например графических функций Windows (скроллинга экрана, формирования отрезка прямой, заполнения областей и т. д.). Графические ускорители обычно подключаются к локальным шинам PCI или VLB и выполняют различные графические режимы с учетом построчной развертки монитора. К графическим ускорителям относится видеоплата, использующая БИС 86С911 фирмы S3 Inc.
474
(Зидеоодоптеры и мониторы
10.9.	Дисплеи на жидких кристаллах
Основные определения
Люминофор - вещество, излучающее свет под действием, например, энергии электронного луча или ультрафиолетового излучения. Люминофор используется в электронно-лучевых трубках и плазменных панелях. В цветных мониторах применяются люминофоры, светящиеся красным, зеленым или синим цветом. Люминофор подвержен выгоранию и определяет срок службы пикселей плазменного монитора.
Плазма - электрический разряд в газе, сопровождающийся образованием ионов и свободных электронов. При соединении свободных электронов с атомами в плазме происходит ультрафиолетовое излучение.
Для образования плазмы в плоских мониторах используют матрицы миниатюрных стеклянных ячеек (сосудов), содержащих электроды и люминофор и заполненных газом (ксеноном, неоном, гелием или их смесью). При подаче на электроды какой-либо ячейки порогового напряжения возникает плазменное состояние с выделением ультрафиолетового излучения, вызывающее свечение люминофора.
Жидкокристаллический дисплей (LCD - Liquid Crystal Display^-устройство визуального отображения информации, содержащее ячейки пассивных (не излучающих свет) жидких кристаллов (ЖК), изменяющих ориентацию своих вытянутых и прозрачных молекул под действием электрического поля и поляризаторов, управляющих прохождением света от внешнего источника (подсветки).
Подсветка конструктивно расположена с задней стороны ЖК-панели (прямая подсветка) и может дополнительно содержать впереди себя полупрозрачный рефлектор, отражающий, кроме того, внешний свет с лицевой стороны. Известны подсветки различных типов: светодиодные, электролюминесцентные, флуоресцентные с холодным катодом (ламповые). В ЖК-панелях применяют и боковые подсветки, свет от которых поступает на плоскую панель с помощью световодов.
Различают следующие типы ЖК-кристаллов: нематические, смектические и холестерические.
ЖК-нематики (LC-nematic) - жидкие кристаллы, в которых молекулы располагаются параллельно вектору приложенного внешнего электрического поля. Существуют также ЖК-холестерики, молекулы которых закручиваются по спирали под влиянием температуры.
В смектических ЖК молекулы располагаются перпендикулярно вектору внешнего электрического поля.
Твист-эффект - электрооптический эффект поворота ЖК-молекул на 90 и более градусов.
Твист-нематики (Twisted Nematic) - жидкие кристаллы, характеризующиеся двумя состояниями. В первом состоянии при наличии электрического поля молекулы ЖК-ячейки ориентируются параллельно вектору поля и не пропускают поляризованный свет от внешнего источника (темный пиксел). Во втором состоянии электрическое поле отсутствует (белый пиксел) и молекулы ЖК под действием верхнего и нижнего взаимоперпендикулярных поляризаторов закручиваются таким образом, что вызывает такой же поворот плоскости света, и он проходит верхний и нижний поляризаторы, между которыми заключены ЖК-молекулы.
Дисплеи на жидких кристаллах	475
Эффект «гость-хозяин» - эффект, состоящий в том, что под действием электрического поля в ЖК («хозяине») обеспечивается краситель («гость»), а при отсут- I ствии электрического поля ЖК приобретает цвет красителя. Этот эффект применяют при использовании дисплеев в условиях повышенной освещенности.
Динамическое рассеивание - эффект в отражающих жидких кристаллах, связанный с хаотической ориентацией молекул под действием электрического поля и приводящий к рассеиванию света. При отсутствии электрического поля ЖК прозрачен и пропускает свет на электрод-зеркало.
Яркость изображения - параметр, характеризующийся числом канделей (кд), приходящихся на 1 м2, например яркость монохромного дисплея - не менее 100 кд/м2. Яркость ЖК-дисплеев - 150-200 кд/м2.
Кандела (candela - латинское наименование) - единица силы света. Сокращенное обозначение - cd (кд).
Коэффициент контрастности - изменение уровня видеосигнала от максимального до минимального, например коэффициент контрастности ЖК-дисплея - 150:1.
ЖК-индикаторы - устройства сегментного или матричного типов со статическим или мультиплексным методом управления (рис. 10.20).
1	J111J
2	□□□ 3 □□□□ 4□□□□
« □□□□ 7 
8	□□□□□ 1 2 3 4 5
б
Рис. 10.20. ЖК-индикаторы сегментного (а) и матричного (б) типов
При статическом управлении на каждый сегмент подается напряжение от отдельного драйвера. Для уменьшения числа драйверов применяют в многоразрядных индикаторах общее соединение определенных сегментов и используют мультиплексный метод управления для выбора определенного сегмента. Степень мультиплексирования определяет число используемых ступенчатых уровней напряжения.
Матричный ЖК-модуль - устройство отображения буквенно-цифровых данных, содержащее: контроллер, оперативную память, драйверы строк и столбцов, светодиодную, электролюминесцентную или флуоресцентную подсветку. Контроллер содержит внутреннюю постоянную память, управляет режимами работы ЖК-панели и выполняет следующие команды: обмена данными с опера
476
Видеоодаптеры и мониторы
тивной памятью; установки режимов работы ЖК-панели; управления позицией курсора и др. Оперативная память хранит данные ЖК-панели, а внутренняя память - наборы генерируемых символов (матричное представление). Оперативная память программно-доступна со стороны внешнего процессора и контроллера. Контроллер предназначен для регенерации изображения на экране, отображения символов, считанных из постоянной памяти, и управления работой драйверов. Драйверы строк и столбцов по сигналам контроллера обеспечивают формирование ступенчатых уровней напряжения, определяемых числом мультиплексирования.
Конструкция ЖК-ячейки: источник света, пленка поляризатор, стеклянная пластина с TFT, прозрачные электроды, ЖК-молекулы, прозрачные электроды, цветные фильтры RGB, стеклянная пластина, пленка поляризации с защитным покрытием.
Различают следующие типы ЖК-матриц: TN, IPS и MVA/PVA.
TN-матрица (Twisted Nematic) характеризуется следующими функциональными признаками:
1)	ориентация ЖК-молекул в электрическом поле параллельна его силовым линиям;
2)	расположение осей поляризации света на двух пластинах (верхней и нижней) - перпендикулярное друг другу (под углом 90°);
3)	размещение электродов осуществляется на двух - верхней и нижней - пластинах.
STN-матрица (Super TN) имеет более высокую скорость реакции, чем TN-матрица, и ей свойствен следующий отличительный признак: оси поляризации света на двух пластинах расположены под углом более 200°.
TN матрица характеризуется удовлетворительными цветопередачей и контрастностью и относительно небольшим углом обзора (120°).
IPS-матрица (In-Plane Switching) содержит следующие функциональные признаки:
1)	ориентация ЖК-молекул в электрическом поле параллельна его силовым линиям;
2)	расположение осей поляризации света на двух пластинах (верхней и нижней) - перпендикулярное друг другу (под углом 90°):
3)	электроды размещены на одной - нижней - пластине по ее краям.
В IPS-матрице ЖК-молекулы не скручены в спираль, а расположены параллельно друг другу, и под действием электрического поля двух электродов они так же параллельно поворачиваются на 90° и пропускают свет через верхнюю пластину (оси поляризации молекул и верхней пластины совпадают). При отсутствии электрического поля ЖК-молекулы расположены перпендикулярно оси поляризации верхней пластины и не пропускают свет (ячейка имеет черный цвет).
Качественные показатели IPS-матрицы: хороший угол обзора (175°), отличный цвет, но имеет более высокую стоимость, чем TN-матрица, и поэтому используется в мониторах с большой диагональю.
VA-матрица (Vertical Alignment) имеет следующие функциональные признаки:
1)	ориентация смектических ЖК-молекул в электрическом поле перпендикулярна его силовым линиям. В этом случае ячейка пропускает свет (пиксель
Дисплеи на жидких кристаллах	477
светится), так как верхняя пластина имеет ось поляризации, совпадающую с ориентацией повернутых под действием поля ЖК-молекул;
2)	расположение осей поляризации параллельных ЖК-молекул и верхней пластины при отсутствии электрического поля - перпендикулярное друг другу (под углом 900), поэтому свет не проходит (темный пиксел);
3)	размещение электродов выполняется на двух - верхней и нижней - пластинах.
MVA-матрица (Multi-Domain VA) - мультидоменная матрица, каждая ячейка которой содержит специальные выступы, меняющие ориентацию доменов ЖК-молекул в разные направления, расширяя таким образом угол обзора.
Домен ЖК-молекул - набор параллельных ЖК-молекул, ориентированных в одном направлении.
Основные показатели MVA-матрицы; время реакции больше, чем у TN, контрастность и яркость значительно больше, структура ячейки гораздо сложнее по сравнению с TN.
Время отклика - параметр, определяющий время переключения ячейки с одного цвета на другой.
Пиксель - элемент (точка) растра, минимальная единица изображения, цвет и яркость которой программируются. При максимальном разрешении пиксель плоского дисплея содержит три ячейки ЖК с тремя цветными светофильтрами.
Разрешающая способность экрана - число пикселей, отображаемых в горизонтальной строке, умноженное на число этих строк. Как правило. ЖК-дисплеи используют оптимальное базовое разрешение для получения качественного изображения, которое определяется размером экрана и пикселя.
Растровые дисплеи - дисплеи, в которых изображение на экране образуется построчно и для получения немерцающего изображения выполняется его регенерация (восстановление) с частотой 50-120 Гц.
Частота кадровой развертки - частота регенерации изображения на экране ЖК-дисплея. В связи с тем что ячейки ЖК обладают относительно большой инерционностью, то частота кадровой развертки обычно составляет 60, 70 Гц. Под инерционностью понимается время возврата к исходному состоянию (эквивалентно длительности подсвечивания люминофора).
Кросс-эффект - эффект взаимного влияния на оптическое состояние одних ячеек ЖК на другие, состоящий в появлении темных полосок в выбранных пикселях. Устранение кросс-эффекта связано с применением электродов с низким удельным сопротивлением, увеличением частоты кадровой развертки, со сменой полярности напряжений на шинах строк и столбцов.
Функциональные характеристики ЖК-дисплеев
Описание физического эффекта ЖК-молекул. На основе твист-эффекта различают ячейки ЖК с отражающим или проникающим световым потоком. На рис. 10.21 показана схема, иллюстрирующая принцип действия ячейки с отражающим световым потоком. Ячейки содержат две стеклянные пластины (поляризатор и анализатор) с нанесенными на их поверхности взаимно перпендикулярными бороздками. В первом случае (рис. 10.21а) ячейка ЖК прозрачна, так как свет поляризуется и следует за молекулами ЖК, которые закручиваются на 90°. Достигнув анализатора, свет попадает на отражатель, помещенный за нижней пластиной. При наличии электрического поля (рис. 10.21 б) свет не проходит ячейку, так как ориентация молекул становится другой (параллельно силовым линиям поля) и не совпадает с плоскостью поляризации анализатора.
478
Видеоадаптеры и мониторы
Свет произвольной
Свет нс проходит, так как молекулы располагаю лея параллельно под действием вектора напряженности Е электрическою поля)
ЖК-ичейка прозрачна
Свет следует за вращением молекул (поворот плоскости поляризации на 90") и направлен к отражателю
ЖК-ячейка непрозрачна
Рис. 10.21. Принцип действия ячейки ЖК: а) свет проходит: б) свет не проходит
В ячейке с проникающим световым потоком бороздки поляризатора и анализатора параллельны друг другу, поэтому при отсутствии электрического поля свет не проходит ячейку. При наличии электрического поля ориентация молекул совпадает с плоскостью поляризации анализатора и свет пропускается сквозь ячейку.
Типы ячеек ЖК. Различают пассивные и активные ячейки ЖК. В пассивной ячейке электроды адресации нанесены непосредственно с внутренней стороны на стеклянные подложки, между которыми размещается слой ЖК-материала. На внешних сторонах стеклянных подложек закреплены поляризаторы (пленки полимеров), определяющие плоскости ориентации молекул ЖК. Недостатками пассивных ячеек ЖК являются сложность формирования управляющих сигналов, низкий коэффициент мультиплексирования, небольшое напряжение сигналов адресации, наличие кросс-эффекта и т. д.
TFT-монитор (Thin Film Transistor - тонкопленочный транзистор) - высококачественный монитор, содержащий матрицу ЖК-ячеек, электроды каждой из которых подключены к шинам строк и столбцов с помощью одного или нескольких тонкопленочных транзисторов (рис. 10.22).
Эта трудная задача решается различными технологическими способами, например при помощи нанесения поликристаллического кремния на стеклянную подложку и дальнейшего обжига с использованием лазера.
В ноутбуках и настольных ЖК-мониторах обычно используется активная матрица, каждая точка (точечный элемент) которой адресуется цифровым способом и в которой смена информации выполняется построчно. Точечный элемент состоит из трех частей, определяемых числом базовых цветов: R (Red -красный), G (green - зеленый), В (blue - синий). Каждая часть (составляющая) точечного элемента содержит ЖК и один или два рабочих тонкопленочных
Дисплеи на жидких кристаллах
479
Рис. 10.22. Матрица ячеек ЖК с TFT
транзистора, выбираемых при изготовлении из группы отбракованных транзисторов. При подаче напряжения на электроды тонкопленочных транзисторов выполняется ориентация молекул ЖК. Второй транзистор в составляющей части элемента делает эту ориентацию более точной. Поляризованный поток света проходит ориентированные молекулы ЖК и попадает на цветовые фильтры R, G и В, обеспечивая соответствующий цвет точки (пикселя) изображения на экране ЖК-монитора. Таким образом, фильтры R, G, В соответствуют люминофорам R, G, В электронно-лучевой трубки (ЭЛТ). По сути дела, ЖК-монитор является цифровым аналогом монитора с ЭЛТ В ЖК-мониторе также для каждой точки изображения в буферном запоминающем устройстве задаются 6 или 8 бит, которые поступают на видеоЦАП, сигнал с выхода которого определяет цвет этой точки.
Структурная схема LCD-монитора содержит: микропроцессор, видеоусилитель и АЦП, LCD-контроллер, интерфейс LCD-панели, блок питания и LCD-na-нель(рис. 10.23).
Рис. 10.23. Схема LCD-монитора
480	Видеоадаптеры и мониторы
Микропроцессор координирует действие всех устройств монитора в зависимости от сигналов HSYNC и VSYNC и формирует строчные Н и кадровые V синхросигналы, необходимые для выполнения масштабирования LCD-контроллером. Для синхронизации микропроцессора используется внутренний генератор. Кроме того, к микропроцессору подключена энергонезависимая память конфигурации, данные Р&Р которой передаются микропроцессором в компьютер.
Аналоговые видеосигналы основных цветов AR, AG, АВ поступают через видеоусилитель на входы трехканального 8-битного АЦП, работа которого синхронизируется микропроцессором. На выходах АЦП формируются 8-битные коды PR, PG, РВ, которые поступают на входы LCD-контроллера. В свою очередь, LCD-контроллер формирует 16-битные коды R. G и В и сигналы синхронизации, поступающие через интерфейс на входы дешифраторов LCD-панели, осуществляющих выбор каждого пикселя панели.
Блок питания вырабатывает необходимые стабилизированные напряжения для всех устройств дисплея.
Дисплейные интерфейсы. Для обработки больших объемов информации заданного формата (1280x1024. 2560x2048) требуется высокая скорость ее передачи на ЖК-панель (сотни мегабайт в секунду). Для выполнения этой задачи обычно используют последовательную дифференциальную передачу сигналов низкого напряжения, обладающую высокой помехозащищенностью и достаточно эффективно устраняющую синфазные электромагнитные помехи.
Дифференциальный интерфейс LVDS (Low Voltage Differential Signaling -дифференциальные сигналы низкого напряжения) - высокопроизводительный последовательный интерфейс для управления ЖК-дисплеями высокого разрешения. На рис. 10.24 представлена схема передатчика и приемника дифференциальных сигналов LVDS.
В передатчике выполняется преобразование параллельного кода в последовательный. Каждая пара дифференциальных линий передает 6-битный код соответствующего цвета, а сигналы синхронизации (CLK) формируются схемой фазовой автоподстройки частоты (ФАЧ) с учетом фаз сигналов R, G, В. На приемной стороне выполняется обратное преобразование - последовательных кодов в параллельные, которые с помощью схемы управления и драйверов строк и столбцов выполняют выбор каждого пикселя ЖК-панели для задания их цветовых характеристик.
Кроме интерфейса LVDS, разработаны и другие интерфейсы, например TMDS (Transmission Minimized Differential Signaling - дифференциальные сигналы с минимизированными переходами), в которых минимизируется число переключений сигналов в дифференциальных линиях с помощью специальной схемы избыточного кодирования информации, позволяющей повысить надежность и скорость передачи данных.
Параметрическая классификация
Угол обзора - размер поля зрения в градусах относительно линии, перпендикулярной к центру панели, при наблюдении под которым контрастность изображения в центре снижается до 10:1 от оригинального значения и происходит искажение цветовой палитры (рис. 10.25). Большинство производителей LCD-мониторов определяют угол обзора не менее 160° (80° + 80°).
Размер экрана - диагональный размер видимой области экрана, указывается в дюймах (15”, 17” и более). Размер экрана и растра ЖК-панелей, в отличие от
Дисплеи на жидких кристаллах
481
Передатчик	Приемник
Рис. 10.24. Схема дифференциального интерфейса
Рис. 10.25. Угол обзора
экрана ЭЛТ, совпадают, кроме того, отсутствуют геометрические искажения, присущие экранам ЭЛТ.
Время отклика - суммарное время переключения пикселя с черного на белый и обратно с учетом изменения яркости от 10% до 90% (время «зажигания» и «гашения» пикселя). Время отклика составляет от нескольких миллисекунд до нескольких десятков миллисекунд.
482
Видеоодоптеры и мониторы
Разрешение - одно оптимальное разрешение, задаваемое размерами панели и пикселя. Возможны другие значения разрешений, поддерживаемые дисплеем (неоптимальные) и определяемые масштабированием. Разрешение характеризуется количеством пикселей в одной строке, умноженным на количество строк. Например, 1024x768 или 1280x1024.
Яркость - яркость белого цвета в центре панели при «зажигании» пикселей максимальными сигналами. Чем больше яркость панели, тем лучше. Яркость характеризуется числом канделей (кд), приходящих на 1 м2 (1 кд- 1 свеча - сила света). Регулировка яркости выполняется либо регулировкой тока в лампе подсветки (лампе дневного цвета с холодным катодом), либо с помощью сигнала постоянной составляющей, подаваемого на матрицу ЖК-панели. Яркость ЖК-па-нели составляет 100, 150, 200 и более кд/м2.
Контрастность - отношение уровня белого цвета к уровню черного цвета в центре экрана. Коэффициент контрастности задается в виде отношения, например, 150:1, 200:1 и 400:1 (для сравнения: контрастность ЭЛТ - от 350:1 до 1000:1). Так как ЖК-ячейки являются пассивными элементами, управляющими прохождением света от подсветки, то не удается достичь высокой степени контрастности по сравнению с элементами, излучающими свет (светодиодами, люминофорами, газоразрядными ит. д.).
Количество отображаемых цветов - цветовая палитра (цветопередача). Типовое число, приводимое многими производителями, составляет 16,7 миллиона цветов, что соответствует 18 битам на пиксель R, G и В (по 6 бит на каждый цвет).
Частота вертикальной развертки - 60-120 Гц достаточно для получения немерцающего изображения.
Пиксельные ошибки. На некоторых LCD мониторах имеются «мертвые точки». Это происходит из-за дефектных транзисторов, то есть конкретный транзистор не может управлять световым потоком. Он либо всегда блокирует свет, либо всегда пропускает.
Типовые характеристики ЖК-мониторов:
1)	тип матрицы - TN IPS PVA,
2)	время отклика(мс) - 20-16; 65-35; 8 и менее;
3)	размер (дюймы) - 15, 17, 19, 20 и более;
4)	угол обзора (градусы) - 120-160: больше 160: 178 и более:
5)	контрастность - 300:1, 400:1, 500:1, 200:1, 1000:1 ;
6)	палитра - 16,2 млн цветов;
Технические характеристики TFT-LCD-монитора View-Sonic VX2025wm:
1)	размер экрана в дюймах - 20,1;
2)	тип матрицы - Wide MVA;
3)	физическое разрешение - 1680х 1050;
4)	контрастность - 800:1 ;
5)	яркость - 300 кд/м2;
6)	угол обзора- 176°:
7)	количество цветов - 167 млн;
8)	разъемы-SVGA, DVI, CD-ROM;
9)	питание - 35 Вт.
Демонстрационные модели	483
10.10. Демонстрационные модели
Образование палитры цветов с помощью базовых RGB-цветов
Известно, что любой цвет является композицией трех основных цветов -красного (Red), зеленого (Green) и синего (Blue). В зависимости от того, какой «вес» имеет каждый из этих цветов, получается все многообразие цветов окружающего нас мира. В цифровой технике «вес» каждого цвета должен быть представлен некоторой дискретной величиной. В простейшем случае для кодирования каждого из основных цветов достаточно по 1 биту (1 = цвет включен, 0 = цвет выключен), называемых битами R, G, В. Из трех основных цветов с двоичным кодированием получаются 8 цветовых комбинаций, показанных в окне. Для простоты понимания покажем на рис. 10.26 и 10.27 соответственно первый и последний кадры.
Твист-эффект ЖК-молекул
Твист-эффект - электрооптический эффект поворота жидкокристаллических молекул.
Основные цвета и их композиции Q
Пуск!
о
К содержанию
И гвестно, что любой цвет является композицией трех основных цветов -красного (Red), зеленого (Green) и синего (Blue) В зависимости от того, какой "вес1 имеет каждый из этих цветов, получаются все многообразие цветов окружающего нас мира. В цифровой технике "вес" каждого циста должен бить представлен некоторой дискретной величиной. В простейшем случае для кодирования каждого из основных цветов достаточно по 1 биту (I _ цвет включен, 0 цвет выключен), называемых битами R, G, В. Из трех основных цветов с двоичным кодированием получается X цветовых комбинаций, показанных в следующем ролике. Для просмотра нажмите кнопку "Пуск"
Котировки и условные обозначения цветов:
ООО - White - Белый 001 - Blue - Синий 010 - Green - Зеленый 100 - Red - Красный 011 - Cyan - Голубой 101 Magenta - Пурпурный 110 - Yellow - Жглтый
Рис. 10.26. Первый i адр овна
484
Видеоадаптеры и мониторы
Основные цвета и их композиции
К содержанию
Известно что любой цвет является композицией трех основных цветов -красного (Red), зеленого (Green) и синего (Blue). В зависимости от того, какой 'вес" имеет каждый из зтих цветов, получаются все многообразие цветов окружающего нас мира. В цифровой технике "вес" каждого цвета должен быть представлен некоторой дискретной величиной. В простейшем случае для кодирования каждого из основных цветов достаточно по 1 биту (I = цвет включен 0 = цвет выключен), называемых битами R, G, В. Из трех основных цветов с двоичным кодированием получается 8 цветовых комбинаций, показанных в следующем ролике. Для просмотра нажмите кнопку "Пуск".
Ко гнровки и условные обознцчення цветов:
ООО - White - Белый 001 - Blue - Синий 010 - Green - Зеленый 100 - Red - Красный 011 - Cyan - Голубой 101 - Magenta - Пурпурный 110- Yellow - Желтый
Рис. 10.27. Последний кадр окна
Твист-эффект применяется в отдельных символьных и матричных индикаторах, а также в плоских мониторах.
Различают ЖК-индикаторы с твист-эффектом, работающие на просвет или с отражением света. В ЖК-индикаторах, работающих на просвет, плоскости поляризации параллельны друг другу. При отсутствии электрического поля свет не проходит, а пропускается только при наличии электрического поля, которое соответственно ориентирует ЖК-молекулы.
В ЖК-индикаторах с отражением света применяются поляризатор и анализатор, сдвинутые на 900 и больше относительно друг друга, и отражатель, установленный за анализатором. В этом случае при отсутствии электрического поля свет проходит через ЖК-ячейку, а при наличии электрического поля свет не проходит.
Рассмотрены два случая - поведение ЖК-молекул при выключенном и включенном электрическом поле (рис. 10.28 и 10.29 соответственно).
Растровый принцип развертки изображения
Принцип растровой развертки изображения показан на примере ЭЛТ-монитора. Имеется текстовый режим 80x25: 80 символов и 25 строк. Каждый символ представляется матрицей (знакоместо) размером 8x8 точек. Символы создают-
Программа управления курсором
485
Свет следует за вращением молекул (поворот плоскости поляризации на 90°)
ЖК-ячейка прозрачна
Твигг-- электрооптическим •ффскт поворота на 90° и больше жидкокристаллических молекул.
Твист-эффект применяется в отдельных символьных и матричных индикаторах, а также в плоских мониторах.
Различают ЖК-индикаторы с твист-эффектом, работающие Ня просвет или с отражением света. В ЖК-индикаторах работающих на просвет, плс скости поляризации параллельны друг другу. При отсутствии электрического поля свет нс проходит, а пропускается только при наличии электрического поля, которое соответственно ориентирует ЖК-молекулы
В ЖК-индикаторах с отражением света применяются поляризатор и анализатор евдинугые на 90° и больше относительно друг друга, и отражатель, ус гановленный за анализатором. В этом случае при отсутствии электрического поля свет проходит через ЖК-ячейку а при наличии электрического поля свет нс проходит. (Для включения выключения электрического поля нажимайте кнопки В кд! ’ВыклГ)
Рис. 10.28. Поведение ЖК-молекул при отсутствии поля (ключ разомкнут)
ся путем подсвечивания соответствующих точек матрицы. Два правых столбца матрицы не используются, они отделяют в строке один знак от другого.
Регенерация - повторение растровой развертки с частотой, обеспечивающей сохранение изображения на экране ЭЛТ.
Растр - совокупность прямых (горизонтальных) ходов луча ЭЛТ.
В данном окне представлен прямой ход луча при различных значениях частоты регенерации.
На рис. 10.30 и 10.31 представлен внешний вид монитора при значениях частоты регенерации соответственно 10 Гц и 50 Гц.
10.11. Программа управления курсором
Формулировка задания
Цель этой работы заключается в изучении принципов образования различных форм курсора и управления его позиционированием. Разработанная программа на языке Ассемблера должна выполнять функции 01, 02, 03 прерывания BIOS INTI Oh по управлению курсором. При разработке программы использовать прямой доступ к регистрам контроллера ЭЛТ видеоадаптера.
486
Видеоадаптеры и мониторы
Свет нс проходит, так как молоку ты располагаются параллельно под действием вектора напряженности Е электрического поля)
Твист-эффект - электрооптический эффект поворота на 90° и больше жидкокристаллических молекул.
Твист-эффект применяется в отдельных символьных и матричных индикаторах, а также в плоских мониторах.
Различают ЖК-индикаторы с твист-эффсктом, работающие «и просвет или с света. В ЖК-индикаторах, работающих на просвет, плоскости поляризации параллельны друг другу. При отсутствии электрического поля свет НС проходит, а пропускается только при наличии электрического поля, которое соответственно ориентирует ЖК-молекулы.
В ЖК-индикаторах с отражением света применяются поляризатор и анализатор, свдинутыс на 90° и больше относительно друг друга, и отражатель, установленный за анализатором В этом случае при отсутствии электрического поля свет проходит через ЖК-ячейку, а при наличии электрического поля свет нс проходит. (Для включения выключения электрического поля нажимайте кнопки "Вкл^'Выкл!")
ЖК-ччейкя непрозрачна
Рис. 10.29. Поведение ЖК-молекул при наличии поля (ключ замкнут)
Основные сведения
В текстовых режимах курсор предназначен для визуального наблюдения на экране места размещения символа, то есть функция курсора состоит в указании активной части экрана. Формирование курсора и отслеживание его позиции на экране осуществляет контроллер ЭЛТ, входящий в состав адаптера дисплея. Для этого контроллер ЭЛТ содержит следующие регистры: регистр RIO (OAh) начальной строки развертки курсора, регистр RI 1 (OBh) конечной строки развертки курсора, регистр R14 (OEh) старшего байта позиции курсора и регистр R15 (OFh) младшего байта позиции курсора. Доступ к указанным и другим регистрам контроллера ЭЛТ осуществляется с помощью регистра индекса (порт 3D4h) и регистра данных (порт 3D5h). Содержимое регистра индекса используется для выбора соответствующего регистра контроллера ЭЛТ, а через регистр данных выполняется запись (чтение) данных в выбранный регистр контроллера ЭЛТ. В регистрах R10 и RI I для формирования размера курсора используются биты 0-4. Доступ к регистрам контроллера ЭЛТ адаптера VGA (EGA) можно осуществить по команде OUT DX, АХ, в которой в DX задается адрес 3D4h, в AL -номер регистра и в АН - код выводимого значения.
Рассмотрим образование различных форм курсора для адаптера VGA. Если символьной позиции соответствует матрица 8х, то возможны следующие формы курсора (рис. 10.32).
Программа управления курсором
487
Матрица символа. Регенерация
Текстовый режим 80x25: 80 символов и 25 строк Каждый символ представляется матрицей (знакоместо) размером 8x8 точек Символы создаются путем подсвечивания соответстствукчцих точек матрицы Два правых столбца матрицы нс используются, они отделяют в строке один знак от другого.
Введем определения:
Регенерация - повторение растровой развертки с частотой, обеспечивающей сохранение изображения на экране ЭЛТ.
РлСТр - совокупность прямых (горизонтальных) ходов луча ЭЛТ.
В данном ролике представлен прямой ход луча при различных значениях частоты регенерации (Для просмотра выберите одно из значений частоты, а затем нажмите кнопку '* Воспроизведение Пау за")
Рис. 10.30. Внешний вид монитора при частоте регенерации 10 Гц
BIOS в области данных дисплея содержит данные текущей формы курсора. По адресу 0040:0060h находится байт, указывающий на начальную строку курсора. Конечная строка курсора содержится в байте, хранящемся по адресу 0040:0061h. При смене значений в регистрах R10 и RI 1 необходимо модифицировать эти значения в указанных байтах переменной CUR-MODE. Процедура BIOS изменяет эту переменную на исходное значение (начальная строка - ODh и конечная строка - 00h), то есть обычно курсор мигает в двух нижних строках развертки.
Так как матрицы символьных позиций для текстовых режимов имеют различные размеры (8x8, 8x14 и 9x16), то в адаптере VGA выполняется масштабирование (эмуляция) курсора. Процедура BIOS предусматривает коррекцию формы курсора при смене режимов (матриц символов с различной высотой) так, чтобы размер курсора не изменялся. Если в области данных дисплея бит D0 байта, имеющего адрес 0040:008711, равен 1, то эмуляция запрещена. При сбросе этого бита разрешается эмуляция курсора.
В адаптере VGA биты D6 и D5 (не равные 0) регистра RI 1 управляют сдвигом курсора вправо.
Если D6 и D5 равны 01, 10 или 11, то курсор соответственно сдвигается на одну, две или три символьные позиции относительно позиции, задаваемой ре-
488
Видеоадаптеры и мониторы
Частота рпснерапнм
О О О О О
101ц	201ц	301ц	40 Гц 50 I ц
&
Вос промене u-нне llav *а
О
К си юрканию
Марина символа. PeiенераНмЯ
Текстовый режим 80x25: 80 символов и 25 строк Каждым символ представляется матрицей (дязтыссто) размером 8x8 точек Символы создаются путем подсвечивания соответстствующих точек матрицы. Два правых столбца матрицы не используются, они отделяют в строке один знак от др> того.
Введем определения-
Рсченерацня - повторение растровой развертки с частотой, обеспечивающей сохранение изображения на экране ЭЛТ.
Растр - совокупность прямых (горизонтальных) ходов луча ЭЛТ.
В данном ролике представлен прямой ход луча при различных значениях частоты регенерации (Для просмотра выберите одно из значений частоты, а затем нажмите кнопку ' Воспроизведснис/Пауза*')
Рис. 10.31. Внешний вид монитора при частоте регенерации 50 Гц
R10=0
R10=2
R10=5
RI 1=7
RI 1=2
RI 1=4
Рис. 10.32. Демонстрация форм курсора для различных значений регистров R10 и R11
Программа управления курсором	489
гистрами R14 и R15. Для перемещения курсора в заданное место необходимо задать соответствующие значения (смещение относительно начала видеобуфера) в регистрах R14 и R15. Позиция курсора на экране в текстовом режиме 80x25 определяется числом (N), взятым из диапазона 0-1999. Удобно задавать позицию курсора номером столбца и номером строки, например столбец 79 и строка 1. Тогда N = (1 х 80) + 79 = 159, то есть номер строки (координату X) надо умножить на 80 и прибавить номер столбца (координату Y). При вызове процедур программных прерываний BIOS или DOS содержимое R14 и R15 заменяется на значения, хранящиеся в области данных дисплея BIOS, начиная с адреса 0040:0050h. Для восьми экранных страниц BIOS использует соответственно восемь таких значений, отражающих текущее положение курсора для каждой из страниц. Каждое такое значение в старшем байте содержит номер строки, а младший байт - номер столбца позиции курсора. Независимо от текущей активной страницы можно изменять значение курсора (выполнять невидимое его позиционирование) другой пассивной страницы и заполнять ее выводимыми данными. После этого можно осуществить быстрое переключение на новую активную страницу.
Чтобы выключить курсор, необходимо в регистр R10 записать код 20h, который задает начальную строку курсора за пределами символьной матрицы. Другой способ состоит в выводе курсора за пределы экрана, то есть заключается в использовании регистров R14 и R15.
Можно представить другую форму иного курсора (псевдокурсора) путем использования соответствующего байта атрибута символа и выключения настоящего курсора. В этом случае программа выводит какой-либо символ, например с атрибутом мигания в текущую позицию выключенного курсора.
Пример выполнения варианта задания
DATA SEGMENT
str_menuO db	’ПЕРЕМЕЩЕНИЕ КУРСОРА’	;19
str_menul db	’ИЗМЕНЕНИЕ КУРСОРА’	; 17
str_menu2 db	’ПСЕВДОКУРСОР’	;17
str_menu3 db	’ВЫХОД’	;5
atr_menuO db	6Eh
atr_menul db	lEh	; \
atr_menu2 db	lEh	; I
atr_menu3 db	lEh	; |\
atr_menull db	lEh	;	I/
atr_menul2 db	lEh	;	I
atr_menu21 db	lEh	;	/
atr_menu22 db	lEh	;	—
Cursor_Pos db	OOh
C_C_Message db ’нижняя линия клавиши -4
M_C_Message db ’перемещение курсора ocyi
выкл — "F5" ’
это байты атрибутов надписей меню
t верхняя PgUp PgDn’
.ествляется клавишами ?, 4, г вкл/
M_D Message db ’перемещение мигающего псевдокурсора осуществляется клавишами Т,4,<^,—>’
C_S_Message db '
Ld db 8
Lu db 0
ULine db 0
DLine db 0
/начальная строка сканирования ;конечная строка сканирования
DATA ENDS
490
Видеоадаптеры и мониторы
CODE SEGMENT
ASSUME CS : CODE, DS : DATA My_Start: mov ax,DATA mov ds,ax
очистка экрана и установка своего видеорежима (текст 80*25)-----
mov ah,00h mov al,03h int lOh My_Startl;	;b ah=00h,B al=03h(видеорежим 80*25) ; установка видеорежима
t	
mov ah,09h	;в ah=09h
mov bh,OOh	;в bh=00h (номер экранной страницы)
mov al,’ ’	/в а1=’ ’
mov bl,00011111b mov cx,7D0h	;в bl-атрибут фона
int lOh	/установка на экране синего фона
f	
mov ah,02h	;в ah=02h
mov dx,01h	;в dx-координаты курсора
int lOh	/установка курсора в заданное положение
mov ah,09h	/в ah=09h
mov bh,OOh	/в bh=00h (номер экранной страницы)
mov al,’-’	/в а1=’=’ (выводимый символ)
mov bl,00011111b	/в bl-атрибут фона
mov ex,78	/в сх=78(количество повторяющихся знаков)
int lOh mov ah,02h	/изображение верхней линии меню
mov dh,02	/в dh=02 (строка)
mov dl,01	/в dl=01 (колонка)
int lOh mov ah,09h mov ex,78	/установка курсора в заданное положение
int lOh mov ah,02h mov dh,22 mov dl,01	/вычерчивание промежуточной линии меню
int lOh mov ah,09h mov ex,78	/перемещение курсора в заданное положение
int lOh mov ah,02h mov dh,2 4 mov dl,01	/изображение последующей линии меню
int lOh mov ah,09h mov bh,OOh mov al,’-' mov bl,00011111b mov ex,78	/перемещение курсора в требуемое положение
int lOh	/вычерчивание нижней линии меню
mov dx,00h mov al,’|’ mov ex,Olh M 1:	/перемещение курсора в координаты 0,0
Программе управления курсором
491
inc	dh	
mov	ah,02h	
int	lOh	/установка курсора в необходимое положение
mov	ah,09h	
int	lOh	/изображение вертикальной линии меню
cmp	dh,23	
jne	M 1	
mov	dl,79	
mov	dh,00h	
M 2		
inc	dh	
mov	ah,02h	/установка курсора для прорисовки следующей
int	lOh	/вертикальной линии
mov	ah,09h	
int	lOh	/выдача вертикальной линии на экран
cmp	dh,23	
jne	M 2	
mov	ah,02h	
mov	dx,00h	/установка курсора для прорисовки
int	lOh	/угловых частей меню
mov	ah r OAh	/ в ah=OAh
mov	al,’+’	
int	lOh	/изображение левой верхней угловой части
mov	ah,02h	
mov	dh,00h	
mov	dl,79	
int	lOh	/установка курсора в необходимое положение
mov	ah,OAh	
mov	al,’+’	
int	lOh	/изображение правой верхней угловой части
mov	ah,02h	
mov	dh,24	
mov	dl,00h	
int	lOh	/установка курсора в требуемое положение
mov	ah,OAh	
mov	al,’+’	
int	lOh	/вычерчивание левой нижней угловой части
mov	ah,02h	
mov	dh,24	
mov	dl,79	
int	lOh	/установка курсора в необходимое положение
mov	ah,OAh	
mov	al,’+’	
int	lOh	/вычерчивание правой нижней угловой части
f		заполнение заглавия меню
mov	ax, ds	
mov	es, ax	/при выводе es=ds
Menu_l:		
mov	bh,00h	/в bh=00h (номер видеостраницы)
mov	ah,13h	/в ah=13h (функция)
mov	al,01h	/в al=01h (подфункция)
mov	dh,01	/в dh=01 (строка)
mov	bp,offset str_menuO	/в es:bp (начало выводимой строки)
mov	bl,atr_menuO	/в bl-атрибут
mov	dl,4	/в dx-начальная позиция курсора
492
Видеоадаптеры и мониторы
;в сх-длина строки
mov	ex, 19
int	lOh
mov	bp,offset str_menul
mov	bl,atr_menul
mov	dl,26
mov	ex, 17
int	lOh
mov	bp,offset str_menu2
mov	bl,atr_menu2
mov	dl,48
mov	ex, 17
int	lOh
mov	bp,offset str_menu3
mov	bl,atr_menu3
mov	dl,72
mov	ex, 5
int	lOh
mov	ah,02h
mov	dh,25
mov	dl,80
int	lOh
/вывод пункта меню на экран
/вывод пункта меню ’’изменение курсора”
/на экран
/вывод пункта меню "псевдокурсор"
/на экран
/вывод пункта меню "выход"
/на экран
Мепи_3: mov ah,08h int 21h cmp al,13 jne Menu_4 cmp Cursor_Pos,03h jne Menu_31 jmp EXIT Menu_31: cmp Cursor_Pos,Olh jne Menu_32 call Chang_Cursor jmp My_Startl Menu_32:
cmp Cursor_Pos,02h jne Menu_33 call MoveSCursor jmp My_Start Menu_33:
cmp Cursor_Pos,0Oh jne Menu_3 call Move_Cursor jmp My_Startl Menu_4: cmp al,0 jne Menu_3 mov ah,08h int 21h cmp al,75 jne Menu_5 находимся
cmp Cursor_Pos,OOh jne Menu_41
/установка курсора за пределы экрана выбор пункта меню-----------------------------
/в ah=08h (функция)
/ожидание ввода символа
/если нажат ENTER, определяется пункт /меню, на котором остановлен выбор /если Cursor_Pos=03h,то выход /из программы
/если Cursor_Pos=01h,то переход /к процедуре Chang_Cursor, /осуществляющей изменение формы курсора
/если Cursor_Pos=02h,то переход /к процедуре MoveSCursor, /осуществляющей создание псевдокурсора
/если Cursor_Pos=00h,то переход /к процедуре Move_Cursor, /осуществляющей перемещение курсора
/в ah=08h (функция)
/ожидание ввода символа
/если нажата стрелка "влево"
/определяется, на каком пункте меню мы
/если Cursor_Pos не равен OOh, то
/уменьшаем позицию курсора на 1
Программа управления курсором
mov Cursor_Pos,03h jmp Menu_6
Menu_41: dec Cursor_Pos jmp Menu_6
Menu_5 : cmp al,77 jne Menu_3 cmp Cursor_Pos,03h jne Menu_51
mov Cursor_Pos,OOh jmp Menu_6
Menu_51: inc Cursor_Pos
Menu_6: cmp Cursor_Pos,OOh jne Menu_61 mov atr_menuO,6Eh jmp Menu_611 Menu_61: mov atr_menuO,lEh Menu_611:
cmp Cursor_Pos,Olh jne Menu_62 mov atr_menul,6Eh jmp Menu_621 Menu_62: mov atr_menul,lEh Menu_621:
cmp Cursor_Pos,02h jne Menu_63 mov atr_menu2,6Eh jmp Menu_631 Menu_63: mov atr_menu2,lEh Menu_631:
cmp Cursor_Pos,03h jne Menu_64 mov atr_menu3,6Eh jmp Menu_641 Menu_64: mov atr_menu3,lEh Menu_641: jmp Menu_l
493
;в противном случае Cursor_Pos=03h
/уменьшение Cursor_Pos на 1
/если нажата стрелка "вправо”
;если Cursor_Pos не равен 03h, то /увеличиваем позицию курсора на 1 ;в противном случае Cursor_Pos=00h
/наращивание Cursor_Pos на 1
/если Cursor_Pos=00h,то
/байт атрибутов надписей меню равен 6Eh
/в противном случае равен lEh
/если Cursor_Pos=01h,то
/байт атрибутов надписей меню равен 6Eh
/в противном случае равен lEh
/если Cursor_Pos=02h,то
/байт атрибутов надписей меню равен 6Eh
/в противном случае равен lEh
/если Cursor_Pos=03h,то
/байт атрибутов надписей меню равен 6Eh
/в противном случае равен lEh
/--------------------очистка экрана-----------------
EXIT: mov ah,OOh	/в ah=00h
mov al,03h	/в al=03h (видеорежим)
int lOh	/установка видеорежима
/-----------------завершение программы--------------
mov ah,4Ch int 21h Chang_Cursor Proc Near mov bh,00h	/в bh=00h (видеостраница)
mov ah,13h	/в ah=13h (функция)
494
Видеоадаптеры и мониторы
mov al,01h	;b al=01h (подфункция)
mov dh,23	
mov bp,offset C_C_Message	;es:bp - начало строки
mov bl,lEh	/атрибут выводимого Help
mov dl,2	;в dx - начальная позиция курсора
mov ex, 7 6	;в сх - количество символов в строке
int lOh	/вывод на экран контекстного Help
mov ah,02h	
mov dh,12	/в dx - начальная позиция курсора
mov dl,40	
int lOh	/устанавливается начальное положение курсора
mov AH,1	
mov CH,Lu	/в СН - начальная строка сканирования
mov CL,Ld	/в CL - конечная строка сканирования
int 10H	/установка размера курсора
	
С C 1:	
mov ah,08h	
int 21h	/считывается в al код нажатой клавиши
cmp al,OOh	/если al не равно OOh,
je С C 2	/то проверяется нажатие клавиши ESC(выход)
cmp al,27	
jne С C 1	
jmp C_C_Exit	
С C 2:	
mov ah,08h	
int 21h	/считывается в al код нажатой клавиши
cmp al,72	/проверка на нажатие клавиши ’’вверх"
jne C_C_3	
cmp Ld,0	/проверка конечной строки сканирования
je C_C_6	/на равенство нулю
dec Ld	/наращивается конечная строка сканирования
jmp C_C_6	
C_C_3:	
cmp al, 80	/проверка на нажатие клавиши ’’вниз"
jne C_C_4	
cmp Ld, 16	/проверка конечной строки сканирования
je C_C_6	/на равенство максимальному значению
inc Ld	/уменьшается конечная строка сканирования
jmp C_C_6	
C_C_4 :	
cmp al,73	/проверка на нажатие клавиши "Page Up"
jne C_C_5	
cmp Lu,0	/проверка начальной строки сканирования
je C_C_6	/на равенство нулю
dec Lu	/наращивается начальная строка сканирования
jmp C_C_6	
C.C.5:	/проверка на нажатие клавиши "Page Down"
cmp al,81	
jne C_C_6	
cmp Lu,16	/проверка начальной строки сканирования
je C_C_6	/на равенство максимальному значению
inc Lu	/уменьшается начальная строка сканирования
C_C_6:	
mov dx,3d4h	/адресация индексного порта контроллера
Программе управления курсором
495
mov al,0ah out dx,al		/выборка 10-го регистра
inc dx		;адресация порта данных контроллера
mov al,Lu		/занесение значения начальной
out dx,al		/строки сканирования
mov dx,3d4h		/адресация индексного порта контроллера
mov al,0bh out dx,al		/выборка 11-го регистра
inc dx		/адресация порта данных контроллера
mov al,Ld		/занесение значения конечной
out dx,al jmp C_C_1 C_C_Exit: ret		/строки сканирования
Chang_Cursor Endp OldX dw 0		/координата х предыдущей позиции курсора
OldY dw 0		/координата у предыдущей позиции курсора
Char dw 0		/ сохраненный символ
MoveSCursor Proc Near		
mov bh,00h		/в bh=00h (видеостраница)
mov ah,13h		/в ah=13h (функция)
mov al,Olh mov dh,23		/в al=01h (подфункция)
mov bp,offset M_D	_Message	/es:bp - начало строки
mov bl,lEh		/атрибут выводимого Help
mov dl,2		/в dx - начальная позиция курсора
mov ex,76		/в сх - количество символов в строке
int lOh		/вывод на экран контекстного Help
mov dl,40 mov dh,12 mov ah,02h		/в dx - начальная позиция курсора
int lOh	 сохранение	/устанавливается начальное положение курсора
f		символа в позиции курсора
mov dx,30 mov [OldX],dx		/ X - координата курсора
mov ex,10 mov [OldY],ex call GetChar		/ Y- координата курсора
mov di,09F2Dh call PutChar A_31: mov ah,08h		/прорисовка курсора
int 21h		/считывание в al кода нажатой клавиши
cmp al,27 jne A_33 jmp M_D_EXIT		/если нажата клавиша ESC, то выход
A_33: cmp a1,0		/если содержимое al не равно 0,
jne A_31 mov ah,08h		/то ожидается повторное нажатие клавиш
int 21h cmp al,75 jne A_34		/если нажата клавиша "влево”,
dec dx A 34:		/уменьшается значение координаты dx на 1
496
Видеоадаптеры и мониторы
cmp al,77 jne А_35 inc dx А_35 : стр al,80 jne А_36 inc ex
A_36: cmp al,72 jne A_37 dec ex
A_37:
;-----------------восстановление
pusha mov dx,[OldX] mov ex,[OldY] mov di,[Char] call PutChar popa call GetChar mov di,09F2Dh call PutChar
;-------------------символ, нахе
mov [OldX],dx mov [OldY],ex jmp A—31 M D EXIT:
/если нажата клавиша "вправо”,
/увеличивается значение координаты dx на 1 /если нажата клавиша "вниз",
/увеличивается значение координаты сх на 1 /если нажата клавиша "вверх",
/уменьшается значение координаты сх на 1
символа в старой позиции-----------------
/сохранение символа из новой позиции /прорисовка курсора в новой позиции /сохранение текущих координат курсора, /чтобы в дальнейшем восстановить дящийся на этом месте------------------
/------------------ при выходе затирание псевдокурсора--------------
mov dx,[OldX] mov ex,[OldY] mov di,[Char] call PutChar ret MoveSCursor Endp
/------------------Чтение из видеопамяти символ + атрибут-----------
/ dx=X cx=Y [Char]=char GetChar Proc Near pusha push es /mov ax,ex imul ex,ex,160	/ cx=cx*160
mov ex,ax shl dx,1	/ dx=dx*2
add cx,dx	/ cx=cx+dx — смещение в видеопамяти
mov bx,cx push 0B800h pop es mov ax,es:[bx] mov [Char],ax pop es popa ret GetChar Endp /---------------- Запись в видеопамять символ+атрибут---------------
/ dx=X cx=Y di=Char PutChar Proc Near
Программа управления курсором
497
pusha push es imul cx,cx,160 shl dx,l add cx,dx mov bx,cx push 0B800h pop es mov es:[bx],di pop es popa ret PutChar Endp Trigger db 0 Move_Cursor Proc Near mov [Trigger],0 mov [ULine],0 mov [DLine]z14 call SetCursorSize mov bh,00h mov ah,13h mov al,01h mov dh,23
mov bp,offset M_C_Message mov bl,lEh mov dl,2 mov ex, 7 6 int lOh mov dl,40 mov dh,12 mov ah,02h int lOh
A_21: mov ah,08h int 21h cmp al,27 jne A_23 jmp M_C_EXIT A_2 3: cmp a1,0 jne A_21 mov ah,08h int 21h cmp al,3Fh jne Not5 xor [Trigger], 15 Not5 : pusha mov al,[Trigger] mov [ULine],al mov [DLine],14 call SetCursorSize popa cmp al,75 jne A_24 dec dl
A 24:
; cx=cx*160
; dx=dx*2
; cx=cx+dx — смещение в видеопамяти
/флаг нажатия клавиши
/для исчезновения курсора
/начальная строка сканирования /конечная строка сканирования
/в bh=00h (видеостраница)
/в ah=13h (функция)
/в al=01h (подфункция)
;es:bp - начало строки
/атрибут выводимого Help
;в dx - начальная позиция курсора
;в сх - количество символов в строке
/вывод на экран контекстного Help /в dx - начальная позиция курсора
/устанавливается начальное положение курсора /считывание в al кода нажатой клавиши
/если нажата клавиша Esc,то выход
/если содержимое al не равно 0,
/то ожидается повторное нажатие клавиш
/считывание в al кода нажатой клавиши /если нажата клавиша Р5,то курсор /исчезает
/начальная строка сканирования /конечная строка сканирования /изменение размеров курсора
/если нажата клавиша "влево” /уменьшается координата dl
	498	Видеоадаптеры и мониторы
	cmp al,77	/если нажата клавиша '’влево"
	jne A—25 inc dl	/увеличивается координата dl
А_25: cmp al,80		/если нажата клавиша "вниз"
jne А_2 6 inc dh		/увеличивается координата dh
А_2 6: стр al,72		/если нажата клавиша "вверх"
jne А_27 dec dh		/уменьшается координата dh
A_27: mov ah,02h int lOh jmp A—21 M_C_EXIT: ret Move_Cursor Endp SetCursorSize Proc Near		/установка месторасположения курсора
pusha mov dx,3d4h		/адресация индексного порта контроллера
mov al,0ah		/выборка 10-го регистра
out dx,al inc dx		/адресация порта данных контроллера
mov al,[ULine]		/занесение значения начальной
out dx,al		/строки сканирования
mov dx,3d4h		/адресация индексного порта контроллера
mov al,0bh		/выборка 11-го регистра
out dx,al inc dx		/адресация порта данных контроллера
mov al,[DLine]		/занесение значения конечной
out dx,al popa ret SetCursorSize Endp CODE ENDS END My_Start		/строки сканирования
Краткое описание программы
После запуска программы на экране появляются пункты меню, которые включают в себя:
1)	Перемещение курсора;
2)	Изменение курсора;
3)	Псевдокурсор;
4)	Выход.
Первый пункт подразумевает перемещение курсора по экрану в зависимости от нажатых клавиш Т,	Перемещая курсор, можно его включать, нажав
клавишу 5 на дополнительной клавиатуре. При повторном нажатии этой клавиши курсор появляется. С помощью второго пункта можно изменять форму курсора, используя клавиши Т, i, Page Up, Page Down.
Под третьим пунктом меню подразумевается создание своего псевдокурсора с каким-либо атрибутом. В нашем случае это «-» с атрибутом мигания. Псевдокурсор можно перемещать по экрану с помощью клавиш Т, i,
Программа управления курсором
499
По нажатию клавиши Esc можно произвести выход из текущего пункта меню и выбрать следующий, используя Enter.
Для реализации данной программы были использованы следующие процедуры.
Процедура ChangCursor осуществляет изменение размеров курсора.
Входными переменными являются:
•	Lu - начальная строка сканирования:
•	Ld - конечная строка сканирования:
Размеры курсора изменяются от О до 16.
Клавишами Т, i можно изменить конечную строку сканирования, a Page Up и Page Down - начальную.
Процедура Move Cursor используется для исчезновения курсора по нажатии клавиши 5 на дополнительной клавиатуре.
Trigger - флаг для отслеживания нажатой клавиши. В случае ее нажатия Trigger = 15, то есть курсор исчезает. При повторном нажатии Trigger = О, то есть курсор появляется.
Процедура SetCursorSize - изменение размеров курсора.
Uline - начальная строка сканирования.
Dline - конечная строка сканирования.
Процедура MoveSCursor используется при создании псевдокурсора.
Входные данные:
•	OldX - координата X предыдущей позиции:
•	OldY - координата Y предыдущей позиции.
Данная процедура осуществляет следующие действия:
1)	сохранение символа в позиции курсора:
2)	перемещение курсора в зависимости от нажатых клавиш Т, i,
3)	восстановление символа в старой позиции:
dx=[OldX]
cx=[OldY]
di=[Char]
4)	сохранение символа из новой позиции и вычерчивание псевдокурсора:
5)	сохранение текущих координат курсора для дальнейшего восстановления символа, находящегося на этом месте:
[OldX]=di
[OldY]=cx
Из данной процедуры идет обращение к процедурам GetChar, PutChar. При выходе из пункта «Псевдокурсор» созданный псевдокурсор убирается.
Процедура GetChar - чтение из видеопамяти символа и атрибута.
Входные переменные: dx = х, сх = Y, [Char] = char.
Для определения местонахождения символа в видеопамяти (es:[bxj) необходимо выполнить следующие действия:
сх = сх +160
dx = dx*2
bx = сх
Процедура PutChar - запись в видеопамять символа и атрибута. Использует те же действия, что и процедура GetChar.
Входные переменные: dx = х, сх = Y, di = char.
500
Видеоадаптеры и мониторы
Варианты заданий
В общем случае программа управления курсором должна отвечать требованиям четырехуровневого морфологического графа:
•	установки курсора в заданную позицию (позиционирование курсора);
•	изменения формы курсора;
•	выключения и включения курсора;
•	создания псевдокурсора (логического курсора).
Функциональный граф вариантов заданий представлен на рис. 10.33.
Уровень позиционирования
Уровень включения (выключения) сигнала
Уровень изменения формы
Уровень псевдокурсора (логического курсора)
Рис. 10.33. Функциональный граф вариантов заданий
В программе соответствующего варианта может быть учтено любое расположение уровней, кроме того, допускается исключение некоторых уровней (не более двух).
Без учета вершины 11 граф устанавливает 36 вариантов задания.
Для первого уровня вершина 1 для графа определяет позиционирование курсора в соответствии с нажатием выбранных клавиш клавиатуры (вверх, вниз, влево, вправо). Вершина 2 обусловливает применение в программе некоторого интерфейса пользователя, указывающего на необходимость ввода номеров строки и столбца новой позиции курсора. Вершина 3 соответствует фиксированному позиционированию курсора из одной заданной точки экрана в другую.
На втором уровне вершина 4 определяет метод выключения курсора путем задания его координат за пределами экрана, а вершина 5 - путем записи, например, кода 20h в регистр R10.
Третий уровень изменения формы курсора, содержащий вершины 6-8, аналогичен (по назначению вершин) первому уровню. Вершина 6 соответствует назначению формы курсора по нажатии выбранных клавиш, причем начальная строка сдвигается, например, клавишами вверх и вниз, а конечная строка-клавишами плюс (вверх) и минус (вниз). Вершина 7 указывает на наличие в программе запросов по вводу с клавиатуры номеров начальной и конечной строк курсора. Вершина 8 определяет задание в программе фиксированной формы курсора, отличающейся от начального размера.
Программа изучения знакогенератора
501
Четвертый уровень (вершины 9-11) устанавливает типы псевдокурсоров. Вершина 9 соответствует выводу символа в негативе в позицию невидимого курсора. Вершина 10 обусловливает применение мигающего символа в позиции выключенного курсора, а вершина 11 (творческий вариант) определяет создание собственного псевдокурсора, например в командной строке или путем расширения его на несколько символьных позиций экрана. Здесь следует напомнить, что для монохромного режима негативное изображение символа задается атрибутом, имеющим код 112, мерцание и подчеркивание символа - кодом 129, мерцание и обычное изображение - кодом 135, мерцание и яркий символ -кодом 143 и т. д.
10.12.	Программа изучения знакогенератора
Формулировка задания
Необходимо написать программу на ассемблере, отображающую на экран дисплея увеличенный образ символа, взятого из таблицы знакогенератора и соответствующего, например, символу нажатой клавиши. В качестве эквивалента изображения увеличенного символа на экране необходимо использовать заданный знак кода ASCII.
Основные сведения
Для преобразования кодов символов в их точечные образы на экране предназначен знакогенератор, который работает в текстовом и графическом режимах. Текстовый режим знакогенератора выполняется аппаратным способом и использует образы символов (таблицы определения символов), размещенных во втором банке видеопамяти, загрузку таблиц шрифтов в который при инициализации выполняет BIOS. Текстовый знакогенератор применяет таблицы шрифтов, каждая из которых содержит 256 символов. Для адаптера VGA второй банк видеопамяти хранит 8 таблиц. Любая таблица имеет размер 8 Кбайт (блок) и использует следующие смещения: OOOOh, 2000h, 4000h, ... , EOOOh. Начальный адрес видеобуфера равен В800:OOOOh или B000:0000h. Каждому символу в таблице соответствует 32-байтный максимальный набор. Если для описания матричного образа символа используется меньше байтов, то остальные байты не учитываются знакогенератором. В компьютерах PC и АТ таблица кодов ASCII (0-127) находится по адресу F000:FA6Eh, а для адаптеров EGA и VGA начальный адрес таблицы определяется вектором прерывания 43h, причем высоту выводимых символов задает переменная по адресу 0040:008511.
Вторая половина таблицы кодов ASCII (128-256) для компьютеров PC и АТ (PS/2) указывается вектором прерывания IFh, имеющим адрес 0000:007Ch. Адаптер VGA в текстовых и графических режимах использует матрицы символов 8x8, 8x14, 9x14, 9x16. В режимах 9x14, 9x16 аппаратный знакогенератор этого адаптера прибавляет дополнительный пиксель справа для каждой строки матрицы образа символа. Обычно девятый пиксель повторяет значение восьмого пикселя или задается фоном. С помощью бита D2 регистра управления режимом (R16) атрибутного контроллера адаптера можно изменять значение девятого пикселя.
Рассмотрим принципы пиксельного представления каждого символа на экране дисплея. На рис. 10.34 показан битовый набор 8x8 (а) для описания символа У и пиксельное изображение этого символа (б).
502
Видеоадаптеры и мониторы
Рис. 10.34. Табличное и пиксельное представления символа Y
Из рис. 10.34а видно, что описание символа Y содержит 8 байт: OOh, OOh, B6h,..., FCh. Каждый байт управляет высвечиванием пикселей в соответствующем ряду знакоместа символа. В этом случае для описания 128 символов потребуется 1024 байт, а для описания 256 символов - 2048 байт. Как уже отмечалось, в адаптере VGA используются текстовые и графические режимы с матрицами 8x8, 8x14 и 8x16, при инициализации одного из которых из ПЗУ в банк 2 видеопамяти переписывается соответствующая таблица определения символов. Обычно стандартная таблица пересылается в нулевой банк (смещение 0000h) банка 2. Если в банке 2 содержится несколько таблиц, то для выбора одной из них может быть применен бит D3 байта атрибута, используемый для управления яркостью символа. Изменение назначения этого бита осуществляется битами D1, D0 и D3, D2 регистра выбора набора символов (порт 3C5h секвенсера). Секвенсер координирует работу видеопамяти и разрешает работу с восемью шрифтами, два из которых могут одновременно отображаться на экран.
Для записи необходимых данных в регистр выбора набора символов предназначен адресный регистр (порт 3C4h), в который следует записать индекс 03 выбора регистра набора символов. Биты D1 и D0 определяют номер таблицы (банков) символов, если бит D3 атрибута равен 0, а биты D3 и D2 - номер таблицы, если бит D3 атрибута равен 1. В том случае если значения пары битов D1, D0 и D3, D2 совпадают, то бит 3 определяет яркость символа и используется только блок 0 банка 2 видеопамяти. Можно изменить стандартный набор символов, который потом восстанавливается передачей стандартной таблицы из ПЗУ.
В заключение отметим, что в адаптере VGA размер матриц образов символов устанавливается отдельно от видеорежимов, которые делятся на текстовые и графические. Для управления знакогенератором используется функция 1 lh прерывания inti Oh BIOS. Функция 1 lh содержит 15 групп. Например, подфункции 00h-04h выполняют загрузку таблицы определений символов в банк 2 видеопамяти для соответствующих режимов. Подфункция 00h предназначена для загрузки таблицы пользователя, подфункция Olh- для загрузки таблицы BIOS с матрицами символов 8x14, подфункция 02h - для загрузки таблицы BIOS с матрицами символов 8x8. подфункция 04h - для загрузки таблицы BIOS с матрицами символов 8х 16 и подфункция 03h - для выбора текущих таблиц. Для выполнения функции 1 lh и подфункции Olh необходимо в регистре процессора АН установить значение 11 h, в регистре AL - 01 h, а в регистре BL - номер табли
Программа изучения знакогенератора	503
цы (блока) в банке 2 видеопамяти. Функция OOh прерывания inti Oh осуществляет установку режима дисплея, причем в регистре АН процессора задается сама функция (АН = OOh), а в регистр AL заносится номер режима.
Режимы адаптера VGA описываются следующей табл. 10.6.
Таблица 10.6					
Режим		Разрешающая	Число цветов	Количество	Размер
Номер	Тип	способность		символов	матрицы
oj	Текст	360-400				И'	40x25	9x16
2,3	Текст	720-400				И'	80x25		9x16 	
4,5	Г рафика	320-200				4	40x25		8x8
6 		Г рафика	640-200				2_			_ 80x25		8x8
7	Текст	720-400			Моно	80x25		9x16
D	Графика	320-200				16	40x25		8x8
E	Г рафика	640-200				£6	80x25		0х0_
F	Г рафика	640-350			Моно	_ 80x25		j8xT4
10	Г рафика	640-350				W	80x25	8x14
11 		Г рафика	640-480				2_	80x30		8x16
13	Г рафика	320-200	256	40x25	8x8
При задании режима очищается экран (видеобуфер), загружаются регистры контроллера ЭЛТ видеоадаптера, устанавливается цветовая палитра. При включении питания по умолчанию вводится текстовый режим 3 с размером знаковой матрицы 9x16.
Пример выполнения варианта задания
Программа использует код ASCII нажатой клавиши символа для доступа к его матричному образу (набору), размещенному в ПЗУ (таблице определения символов (0-127)). Начальный адрес этой таблицы F000:FA6Eh. Затем осуществляются выделение каждой строки набора (матрицы образа символа) и побитная ее обработка с помощью кода маски 1000 0000 и операции сдвига на один бит. Если значение выделенного бита строки матрицы равно 1, то в видеопамять вводится символ заполнения (ASCII 219), соответствующий единичному биту (пикселю) матрицы образа заданного символа. Выход из программы - по нажатии клавиши Esc.
Zseg	EQU	OFOOOh
Zofs	EQU	0FA6Eh
Msk	EQU	10000000B
Fill	EQU	219
Code	Segment 'Code 1
org lOOh assume cs:Code,ds:Code Begin:	jmp Start
Message	db 'Символ	?: $’
Symb	db ?
;---------------Процедура установки позиции курсора
Set_Curpos Proc Near push ax
mov bh,0 int lOh pop dx pop bx pop ax ret Set_Curpos EndP ;------------------Процедура очистки экрана------------
Clear Proc Near push ax push bx push ex push dx mov ax,600h mov bh,7 mov cx,0 mov dh, 40 mov dl,7 9 int lOh pop dx pop ex pop bx pop ax ret Clear	EndP
;--------------------Основная программа----------------
Start:	call Clear
mov dx,0 call Set_Curpos mov ah,9 lea dx,Message int 21h ;--------------------Обработка символа-----------------
Symbol:mov ax,Zseg	; Задаем базовый адрес ПЗУ
mov ds,ах mov si,ZOfs mov ah,0 int 16h cmp al,27 jz Quit mov cl,8 mul cl add si, ax mov dh,15 mov dl,20 call Set_Curpos mov ex,8 Line:	mov al,ds:[si] mov ah,al mov dl,8 Point: push ax and al,msk	; в DS, его ; смещение в SI ; читаем символ ; если Esc — выход ; В ПЗУ 8 байт кода символа ; смещение ; 8 линий в символе ; Читаем код символа ; копируем ; 8 точек в линии ; сравниваем с маской,
Программа изучения знакогенератора	505
jnz Pixel	; если 1 ,то ставим точку
mov ah,0Eh mov al,’ ’ int lOh	; иначе пробел
jmp NextPX Pixel:	mov ah,0Eh mov al,Fill int lOh	; точка
NextPX:pop ax shl ah,l	; сдвигаем код символа
mov al,ah dec dl	; смотрим, напечатаны ли все линии
jz NextLn	; если нет, то следующая
jmp Point NextLn:inc dh mov dl,20	; линия
call Set_Curpos inc si	
Loop Line jmp Symbol r		Выход	
Quit:	mov ax,4c00h int 21h Code	Ends End Begin	
Варианты заданий
Функциональный граф вариантов заданий представлен на рис. 10.35.
Задание на разработку программы определяет маршрут в графе» например маршрут 1-3-5-9. Функциональный граф устанавливает 30 вариантов заданий без учета вершины 8» определяющей параметры творческого задания.
506
Видеоадаптеры и мониторы
Первый уровень, содержащий вершины 1 и 2, указывает соответственно, что символы могут быть введены с клавиатуры либо могут находиться в области данных программы. Вершина 3 следующего уровня сопоставляется с ПЗУ (BIOS), хранящим таблицу определений символов, а вершина 4 - с банком 2 видеопамяти. содержащим до восьми таблиц символьных образов.
Третий уровень устанавливает размер матрицы символа:
вершина 5 - размер 8x8, вершина 6 - размер 8х 14, а вершина 7 - размер 8x16 (9x16). Кроме того, вершина 8 указывает на необходимость применения в разрабатываемой программе собственной таблицы определения символов. Вершина 9 четвертого уровня графа задает масштаб 1:1 изображения символа на экране, то есть каждому пикселю на экране соответствует выбранный символ-заполнитель, например символ с кодом 176 (177, 219 и т. д.). Вершина 10 соответствует масштабу 1:2 представления символа. В этом случае каждому пикселю сопоставляются два символа-заполнителя, размещенных по оси X координатной системы экрана. Вершина 11 обусловливает использование масштаба 1:2, требующего заменить каждый пиксель двумя символами, расположенными по оси У.
10.13.	Программа выполнения текстового режима
Формулировка задания
Разработать программу на ассемблере, которая в общем случае выполняет следующие функции:
•	вывод текстовых данных на экран;
•	вертикальный и горизонтальный сдвиг текста;
•	сдвиг экранных страниц;
•	переключение между станицами.
Основные сведения
Как известно, видеоадаптеры выполняют текстовые и графические режимы. При включении питания устанавливается текстовый режим с форматом 80x25. В текстовом режиме каждый байт символа сопровождается соответствующим байтом атрибутов, задающим сведения о цвете символа, фона и интенсивности свечения. Символ размещается в видеопамяти в байте с четным адресом, а атрибут - в байте с нечетным адресом. На рис. 10.36 показано кодирование байта атрибута.
R - красный
G - зеленый
В - синий
I - интенсивность
Цвет фона
Рис. 10.36. Формат байта атрибутов
Программа выполнения текстового режима	507
Различают стандартные коды атрибутов цветного и монохромного режимов (табл. 10.7 и 10.8). Основными цветами являются красный (R), зеленый (G) и синий (В). Комбинации этих цветов позволяют получить восемь основных цветов. С учетом степени яркости формируют 16 цветов.
В формате байта атрибута биты R, G и В указывают на номер одной из 16 шестибитовых палитр контроллера атрибутов, в которых по умолчанию устанавливаются стандартные цвета. Эти цвета в адаптере EGA можно изменить и выбрать любой из 64 цветов. В адаптере VGA шестибитовое значение регистра палитры, дополненное до 8 битов, кроме того, выбирает один из 256 18-битовых регистров цвета ЦАП. Поэтому представленные в табл. 10.7 типовые цвета образуются, когда в этих регистрах хранятся стандартные значения. Содержимое каждого 18-битового кода регистра цвета ЦАП состоит из 3 шестибитовых значений R, G и В цветов, что позволяет получить 262 144 комбинации произвольных цветов. Рассмотрим использование видеопамяти в текстовом режиме для адаптера VGA.
Таблица 10.7
Цветной атрибут
Код	Изображение	Код	Изображение
0	Черный	8	Серый
1	Синий	9	Яркий синий
2	Зеленый	10	Яркий зеленый
3	Г олубой	11	Яркий голубой
4	Красный	12	Яркий красный
5	Пурпурный	13	Яркий вишневый
6	Коричневый	14	Яркий желтый
7	Белый	15	Яркий белый
Таблица 10.8			
Монохромный атрибут Код	Изображение		Код	Изображение
0	Нет изображения	112	Негативное изображение
1	Подчеркивание	129	Мигание с подчеркиванием
7	Обычный	135	Обычное изображение с миганием
9	Яркий с подчеркиванием	137	Мигание с повышенной яркостью
15	Повышенная яркость	140	Негативное изображение с миганием
Напомним, что видеопамять содержит четыре банка (двоичные плоскости), причем нулевой банк хранит байты символов, первый банк - байты атрибутов, а второй банк - таблицы определений символов знакогенератора. Доступом к видеопамяти управляет контроллер ЭЛТ, позволяющий линейно отображать содержимое банка 0 на экран дисплея с учетом байтов атрибутов, размещенных в банке 1.
508	Видеоадаптеры и мониторы
Различные режимы используют соответствующие адресные области памяти.
В табл. 10.9 представлены режимы видеоадаптера VGA и их начальные адреса.
Таблица 10.9
Режим
О, 1, 2, 3, 4, 5, 6
7
D, Е, F, 10, 11, 12, 13
Начальный адрес
В8000
В0000
А0000
В видеопамяти байты хранятся в виде цепочки, а при выводе на экран они автоматически разворачиваются в виде последовательных символьных строк, в знаковой позиции каждой из которых может быть размещен матричный образ символа. Местоположение символа на экране определяется по следующей формуле:
Смещение = (Номер строки х 80 + Номер столбца) х 2.
В этой формуле смещение берется относительно начала видеопамяти для текстового режима с форматом 80x25 и множитель 2 отмечает наличие байта символа и его байта атрибута.
Функции 08-0Ah прерывания inti Oh BIOS предназначены для записи или чтения символов. Чтобы считать символ и атрибут в позиции курсора (функция 08h), предварительно задается положение курсора с помощью функции 02h BIOS. Функция 08h возвращает в регистр АН атрибут и в регистр AL символ в соответствии с координатами курсора на заданной странице. Функция 09h осуществляет запись символа и атрибута в позицию курсора заданное число раз. При записи одного символа в регистре СХ следует установить 1. Функция OAh выполняет запись только символа в позицию курсора.
Часть видеопамяти, выводимой на экран, образует страницу. Например, для режима с форматом 80x25 требуются 4000 байтов в странице. Понятно, что в видеопамяти может храниться несколько экранных страниц в зависимости от режима. Так, например, для адаптера VGA в режимах 0 и 1 число байтов в странице равно 2000, в режимах 2, 3 и 7 - 4000 байт, в режимах 4, 5 и 6 - 16 000 байт ит. д.
В каждый момент времени только одна дисплейная страница является активной, а видеоадаптер может выполнять быстрое переключение страниц.
Начало выводимой на экран области видеопамяти определяют по содержимому переменной в области данных BIOS по адресу 0040:004Eh и регистров R12 и R13 контроллера ЭЛТ, управляющих страницами дисплея. Иногда в оперативной памяти образуют псевдостраницы, из которых потом быстро передают данные в соответствующие экранные страницы видеопамяти. Граничные (стартовые) адреса страниц для видеопамяти, имеющей начальный адрес В800, и режима с форматом 80x25 следующие: страница 0 - смещение 0000h, страница 1 - смещение 0800h. страница 2 - смещение 1000h и т. д. Чтобы задать соответствующую страницу, необходимо в регистры R12 (старший байт) и R13 (младший байт) контроллера ЭЛТ записать одно из указанных выше смещений.
Рассмотрим вертикальные сдвиги текстового экрана (скроллинг (прокрутку) окна вверх и вниз). При скроллинге вверх на одну строку и вниз экрана появля
Программа выполнения текстового режима
509
ется новая строка. Аналогичным образом выполняется скроллинг окна вниз. В текстовом режиме с форматом 80x25 для сдвига экрана на одну строку вверх необходимо в видеопамяти переместить вверх содержимое текущей страницы на 160 байт (80 символов х 2) с учетом байтов атрибутов. Увеличение адреса видеопамяти приводит к сдвигу изображения экрана вверх, а уменьшение адреса -к сдвигу изображения вниз. Сдвиг текстовых данных можно выполнить двумя способами: программным и аппаратным. Программный способ связан с непосредственным переносом символов и атрибутов в видеопамяти. Аппаратный способ является более быстродействующим и заключается в использовании регистров R12 и R13 контроллера ЭЛТ видеоадаптера. Если увеличить содержимое регистров R12nR13Ha 80, то это будет соответствовать сдвигу изображения экрана на одну строку вверх, то есть изображение будет начинаться не с нулевой, а уже с первой строки. Значение стартового адреса в регистрах R12 и R13 не учитывает байты атрибутов - это следует иметь в виду при написании программы. Таким образом, при аппаратном сдвиге данные не перемещаются в видеопамяти, а только указывается ее начальный адрес, с которого данные выводятся на экран.
Функции 06h и 07h прерывания inti Oh BIOS применяются для выполнения соответственно скроллинга вверх и вниз. Для выполнения этих функций необходимо задать параметры, определяющие прямоугольник (окно) экрана, информация которого сдвигается на заданное число строк. Эти параметры указывают на верхний левый и нижний правый углы окна стандартным способом: текстовые строка и столбец верхнего левого угла и текстовые строка и столбец нижнего правого угла. Для очищаемых строк задается атрибут пробелов заполнения.
Если число строк сдвига равно 0, то область скроллинга очищается. Процедура прокрутки BIOS использует программный способ сдвига данных.
Горизонтальные сдвиги влево и вправо выполняются только путем перемещения символов и атрибутов в видеопамяти. Для сдвига экрана влево на 3 столбца необходимо переставить содержимое страницы видеопамяти на 6 байт с учетом байтов атрибутов в сторону уменьшения адресов видеопамяти (вниз). При выполнении первого сдвига символ столбца 0 и строки 1 перемещается на строку 0 и столбец 79 и т. д. После выполнения этой процедуры необходимо очистить правые три колонки, заполнив их пробелами, или с помощью функции вертикального сдвига inti Oh. Аналогичным способом выполняется сдвиг экрана вправо путем перемещения его содержимого вверх (в сторону увеличения адресов видеопамяти).
Пример выполнения задания
При выполнении программы на экран выдается указанное в области данных сообщение, и после нажатия любой клавиши экран заполняется фоновой окраской, определяемой кодом ASCII 176. После этого на экране изображается диагональ символов. Нажатие клавиши управления курсором вызывает перемещение диагонали по экрану. Очистка экрана и выход в DOS выполняются нажатием клавиши Esc. Листинг программы представлен в COM-формате и содержит процедуры изображения диагонали по новым и старым координатам, установки невидимого и видимого курсора, записи символа в позицию курсора и обслуживания клавиатуры. Компилировать текст программы следует как com (tlink it ax.obj).
510	Видеоадаптеры и мониторы
Code Segment ’Code’ org lOOh assume cs:Code,ds:Code,es:Code Begin: jmp Start Messagedb ’’ db ’	Проверочное задание №7’, 13,10
db ’ ’’Текстовый режим дисплея. ’ 1310 db ’	Управление сдвигами’,13,10
db ’ отображаемых данных”’,13,10 db ’ ’,13,10 db ’ Представление диагонали символов на экране.’ db 13,10,’ Прямая запись символов в видеопамять.’ db 13,10,’ Сдвиг диагонали символов клавишами’ db ’управления курсора.’,13,10,’’,13,10 db ’ Выход из программы по нажатии клавиши "Esc"’ db 13,10,' Для продолжения работы программы’,13,10 db ’	следует нажать любую клавишу’,13,10,13,10,’$’
NewX	db	0	;	Новая координата	X
NewY	db	0	;	Новая координата	Y
OldX	db	0	;	Старая координата X
OldY	db	0	;	Старая коодината	Y
;---------------Процедура считывания кода нажатой клавиши---------
;-----------Возвращает в АХ: Scan и ASCII-код нажатой клавиши-----
ReadKey Proc Near xor ax,ax int 16h ret REadKey EndP ;-------------Процедура установки видимого курсора----------------
ShowCursor Proc Near mov ah,l mov ex,0708h int lOh ret ShowCursor EndP ;-------------Процедура установки невидимого курсора--------------
HideCursor Proc Near mov ah,l mov cx,20h int lOh ret HideCursor EndP ;-----------Процедура записи в видепамять символа и его цвета-----
;-----аналогична функции 09h видео-BIOS без установки страницы-
;------------------------Входные параметры:----------------------
;------------DH-столбец DL-строка СХ-число повторений------------
;----------------------АН-цвет AL-код символа--------------------
PutCharAttr Proc Near push es push ex push bx
Программа выполнения текстового режима	511
push dx	
push ах mov ax,0B800h mov es,ax	; Устанавливаем сегмент видеопамяти
xor ax,ax mov bx,160	; Заносим в ВХ множитель
push dx	; Сохраняем координаты
mov al,dl	; Заносим в AL координату Y
xor dx,dx mul bx	; Умножаем Y на 160
pop dx mov bl,dh	; Заносим в BL координату X
shl bl,l	; Умножаем X на 2
add ax,bx	; Складывем и получаем указатель в буфере
mov bx,ax pop ax Cycle: jcxz EndClk	; Если счетчик циклов равен 0,то выходим
mov word ptr es:[bx],ax	; Записываем символ по смещению
add bx,2	; Переходим к следующему символу
dec ex	; Уменьшаем счетчик символов
jmp Cycle	; Повторяем цикл
EndClk:pop dx pop bx pop ex pop es ret PutCharAttr EndP ;	Процедура записи в	видеопамять диагонали по новым координатам—
OldDraw Proc Near mov dh,byte ptr OldX	; Устанавливаем старые координаты
mov dl,byte ptr OldY mov ah,7Oh	; Устанавливаем цвет символа
mov al,176	; Устанавливаем код символа
call Draw	; Вызываем процедуру отображения диагонали
ret
OldDraw EndP
Процедура записи в видеопамять диагонали фоновых символов
NewDraw Proc Near		
mov	dh,byte ptr NewX	; Устанавливаем новые координаты
mov	dl,byte ptr NewY	
mov	ah,70h	; Устанавливаем сегмент видеопамяти
mov	al,41h	; Устанавливаем код символа
call	L Draw	; Вызываем процедуру отображения диагонали
mov	byte ptr 01dX,dh	; Запоминаем новые координаты
mov	byte ptr 01dY,dl	
ret NewDraw EndP		
;---------Процедура записи в видеопамять диагонали символов--------
;---------------------Входные параметры:------------------------
;---------------------DH-столбец DL-строка----------------------
;---------------------АН-цвет	AL-код символа-------------------
Draw Proc Near
push dx	;	Сохраняем координаты
mov cx,20	;	Устанавливаем счетчик	цикла	1-го	уровня
L0: push	сх	;	Сохраняем текущее положение	счетчика
	512	Видеоадаптеры и мониторы
	mov ex,4	; Устанавливаем счетчик цикла 2-го уровня
	L3:	push ex	; Сохраняем текущее положение счетчика
mov cx,l		; Устанавливаем число повторений
cmp dh,80		; Если X за пределами экрана, то не ; отображаем
jae LEI cmp dl,25		; Если X за пределами экрана, то не ; отображаем
jae LEI call PutCharAttr		; Отображаем символ в видеопамять
LEI:	pop ex dec ex		; Восстанавливаем счетчик цикла 2-го уровня
inc dh jexz L4 jmp L3		; Проверка на конец цикла
L4:	pop ex dec ex		; Восстанавливаем счетчик цикла 1-го уровня
inc dl j cxz LI jmp LO LI:	pop dx		; Проверка на конец цикла
ret Draw EndP		
7		Основная программа
Start: lea dx,Message mov ax,0900h int 21h call ReadKey call HideCursor		; Выводим начальное сообщение
mov ax,70B0h		; Устанавливаем цвет и символ заполнения
xor dx,dx		; Устанавливаем координаты начала экрана ; (0,0)
mov ex,2000 call PutCharAttr Clk:	call NewDraw		; Количество повторений — на весь экран
call ReadKey		; Ждем нажатия клавиши
Right: cmp ax,4D00h		; Проверка на нажатие клавиши "вправо”
jne Left cmp NewX,79 je Clk inc NewX		; Перемещаем вправо на 1 символ
jmp Cnt Left: cmp ax,4B00h		; Проверка на нажатие клавиши "влево"
jne Up cmp NewX,0 je Clk dec NewX		; Перемещаем влево на 1 символ
jmp Cnt Up:	cmp ax,4800h		; Проверка на нажатие клавиши "вверх"
j ne Down cmp NewY,0 je Clk dec NewY		; Перемещаем вверх на 1 символ
jmp Cnt Down: cmp ax,5000h		; Проверка на нажатие клавиши "вниз"
Программа выполнения текстового режима
513
jne Escape cmp NewY,24 je Clk inc NewY	; Перемещаем вниз на 1 символ
jmp Cnt Escape:cmp ax,OllBh je Quit Cnt:	call OldDraw
jmp Clk ;-------------------------Выход--------------------------
Quit: xor dx,dx mov ax,0720h mov ex,20OOh call PutCharAttr call ShowCursor mov ax,4c00h int 21h Code Ends End Begin
Варианты заданий
На рис. 10.37 показан функциональный граф вариантов заданий.
Вариант задания определяется маршрутом в графе» например» 1-4-8-12-15-18. Без учета вершин 5 и 10 функциональный граф устанавливает 288 заданий. Вершина 1 указывает на ввод символов с помощью клавиатуры» а вершина 2 -на наличие символов в программе. Необходимо использовать разные атрибуты»
514
Видеоадаптеры и мониторы
заданные в таблице. Уровень способа записи символов содержит: вершину 3, соответствующую записи символа по курсору: вершину 4 - записи символа непосредственно в видеопамять и вершину 5 - записи символа по псевдокурсору. Вершина 6 определяет размещение символов в виде первой диагонали, вершина 7 - второй диагонали, вершина 8 - строки символов, вершина 9 - столбца символов, а вершина 10 - собственного изображения. Вершины 5 и 10 соответствуют творческому заданию. Уровень управления сдвигами состоит из двух вершин 11 и 12. Вершина 11 назначает параметрический способ управления сдвигами так, как это выполняется, например, для функции 6 прерывания inti Oh BIOS, то есть указываются координаты области сдвига. Вершина 12 соответствует управлению сдвигами с помощью клавиш курсора. Уровень направления вертикального сдвига содержит вершинэ 13 (сдвиг вверх), 14 (сдвиг вниз) и 15 (сдвиг вверх и вниз).
Аналогичным образом определяются вершины уровня направления горизонтального сдвига: вершина 16 соответствует сдвигу влево, вершина 17 - сдвигу вправо и вершина 18 - сдвигам влево и вправо. Программа должна быть выполнена на низком уровне (ассемблере). К творческим вариантам задания можно также отнести организацию сдвига только части изображения (левой, центральной или правой), переключение текстовых страниц с регулировкой скорости их появления и изменение цвета выводимых на экран символов.
10.14.	Программа выполнения графического режима
Формулировка задания
Разработанная программа на ассемблере должна выполнять следующие функции:
•	установки заданного графического режима;
•	представления на экране требуемого графического изображения с соответствующими цветами;
•	управления полным или частичным вертикальным и горизонтальным сдвигами изображения.
Основные сведения
В графическом режиме видеопамять хранит двоичный образ, соответствующий пикселтному изображению на экране. Причем каждый пиксель на экране представлен одним или несколькими битами видеопамяти, определяющими цвет пикселя (число одновременно наблюдаемых цветов). Графические режимы адаптера VGA представлены в табл. 10.10.
Наиболее употребительным является 16-цветный графический режим № 12. а режим № 13 позволяет получить большее число оттенков цветов (256). В этих режимах каждый пиксель на экране соответственно использует 4 бита или 8 бит видеопамяти.
Двоичный образ изображения видеопамяти линейно отображается на экран монитора, то есть экранную страницу видеопамяти можно представить в виде матрицы с прямоугольной системой координат, причем начальный адрес страницы соответствует левому верхнему углу экрана. Позиция пикселя на экране также определяется координатами (х,у), где х - столбец, а у - строка развертки. Координатам (х,у) пикселя соответствуют смещение адреса видеопамяти и сме-
Программа выполнения графического режима	515
Таблица 10.10					
Номер режима	Разрешающая способность	Начальный адрес видеопамяти	Первичные цвета	Формат текста	Размер матрицы символа
4,5	320x220	В8000	4	40x25	8x8
6	640x220	В8000	2	80x25	8x8
D 		320x200	А0000	16	40x25 		8x8
Е	640x200	А0000	16	80x25	8x8
F	640x350	А0000	Моно	80x25	8x14
10		640x350 		А0000	16	80x25	8x14
11		640x480 		А0000	2	80x30	8x16
12	640x480	А0000	16	80x30	8x16
13	320x200	А0000	256	40x25	8x8
щение в адресуемом байте данных видеопамяти, так как каждый байт видеопамяти для, например, 16-цветного режима хранит значения 8 пикселей, а строка развертки состоит из 80 байт. Исключение составляет 256-цветный режим, в котором каждый байт видеопамяти хранит значение одного пикселя.
Таким образом, по координатам (х,у) можно вычислить смещение, определяющее расположение видеопамяти битового значения соответствующего пикселя.
Формирование цвета пикселя на экране монитора (кроме режима 13) в адаптере VGA выполняется по следующей схеме: видеопамять а регистры палитры а регистры ЦАП-экран. В режиме 13 байт пикселя непосредственно используются в качестве индекса для выбора соответствующего 18-битного регистра ЦАП с помощью регистра маски ЦАП.
Вывод текста в графических режимах выполняется так же, как и в текстовых, использующих необходимые общие процедуры BIOS. Но, в отличие от текстовых режимов, изображение символов графических режимов осуществляется программным способом, как будто бы это графический рисунок. Рассмотрим преобразование координат пикселя в соответствующий адрес размещения его битового значения в видеопамяти (рис. 10.38).
Рис. 10.38. Формат графического экрана
516	Видеоадаптеры и мониторы
Положение пикселя на экране определяется прямоугольными координатами (X,Y), где X - горизонтальная позиция пикселя (номер столбца), a Y - вертикальная позиция пикселя (номер строки), взятые соответственно, например, из диапазонов 0-639 и 0-349 (рис. 10.38).
В графическом режиме начальный адрес 7-го бита первого байта страницы видеопамяти соответствует пикселю (точке), размещенному в левом углу экрана. Таким образом, каждому пикселю соответствует бит в битовой плоскости видеопамяти (кроме графического режима 13h). Позиция этого бита определяется размещением его в байте и смещением этого байта относительно начального адреса страницы видеопамяти. В 16-цветных режимах Е, 10 и 12 каждый байт содержит значение 8 пикселей, а каждая строка - 80 байт. Для этих режимов адреса (смещения) байта, содержащего пиксель с координатами (X,Y), определяется с помощью следующего выражения:
80xY + int( —
18 /
где X и Y - координаты пикселя, взятые соответственно из диапазонов 0-639 и 0-349. Этот принцип преобразования координат экрана с целью нахождения адреса бита пикселя в видеопамяти сохраняется и для других графических режимов, кроме режима 13h, в котором каждый байт видеопамяти соответствует значению одного пикселя. В этом случае задача упрощается и необходимо только определить смещение этого байта относительно адреса страницы видеопамяти.
Пример выполнения варианта задания
Задание:
Вывести на экран фигуру «D» и обеспечить ее передвижение по экрану, управляя клавишами курсора Я, а, б, в.
Выполнение:
В области данных программы заданы координаты выводимой фигуры.
Используется графический режим 10h (640 х 350, VGA 4 битовых плоскости).
Используемые регистры графического контролера:
•	индексный регистр (порт 3CEh);
•	режим чтения/записи (порт 3CFh (индекс 5));
•	регистр битовой маски (порт 3CFh (индекс 8));
•	регистр блока синхронизации:
•	индексный регистр (порт 3C4h);
•	регистр маски карты цвета (порт 3C5h (индекс 2)).
Алгоритм записи:
1)	установить маску цвета;
2)	прочитать байт из видеопамяти (ВП);
3)	установить маску битов;
4)	запись (режим 0) байта в видеопамять (0 - стереть pixel, FFh - установить pixel).
Гх ।
Формула для расчета смещения байта в видеопамяти: 80 х Y + int — . \ 8 у
Формула для расчета маски бита: lshl((X and 7) xor 7).
Программа выполнения графического режима	517
Программа:
stack	segment stack
db 128	dup(?)
stack	ends
data segment	
baseX	dw 250
newbaseX	dw 25 0
baseY	dw 100
newbaseY	dw 10 0
len	equ 50
deltax	equ 5
deltaY	equ 5
data ends	
code segment	
assume cs	:code, ds:data, ss:_stack
jmp start	
/	установка пикселя на экран
setpixel ]	proc	;вычислим смещение байта от начала ВП Y*80+int(x/
8)	
mov	Ьх,80
mov ax,di	
mul	Ьх
mov bx,si	
shr	bx, 1
shr	bx, 1
shr	bx, 1
add	Ьх, ах
mov	al,es:[bx]	;чтение байта из ВП, установим регистр маски битов
mov	dx,3ceh	/адресный регистр контроллера
mov	al,8	/регистр битовой маски (БМ)
out	dx,al	/установка адресуемого регистра
inc	dx	/регистр данных
вычислим маску бита в байте 1 shl ((х and 7) xor 7)
mov push сх mov cx,si and	ax, 1 ex, 7
xor	ex, 7
shl	ax, cl
pop	ex
out	dx,al	/запись маски в регистр БМ
ret	
setpixel	endp
/		вывод фигуры на экран	
drawfigure	; proc	/установим маску цвета
mov dx,3c4h	/адресный регистр секвенсера	
mov al,2	/регистр маски цвета
out	dx, al
inc	dx	/регистр данных
mov	al,0fh	/все биты
out	dx, al
вывод левой ветви
mov si,newbaseX mov di,newbaseY mov cx,len/15*10
518	Видеоадаптеры и мониторы
ml:	call setpixel
mov byte ptr es:[bx],0ffh /запись в ВП
dec	si
inc	di
loop	ml
;------------------------вывод правой ветви-------
mov si,newbaseX mov di,newbaseY mov cx,len/15*10 m2:	call setpixel
mov byte ptr es:[bx],0ffh inc	si
inc	di
loop	m2
;---------------------------вывод нижней ветви
mov si,newbaseX mov di,newbaseY sub si,30 add di,30 mov ex,15/10*len+ll m3:	call setpixel
mov byte ptr es:[bx],0ffh inc	si
loop	m3
ret
drawfigure endp
;----------------------стирание фигуры с экрана
clearfigure proc	/установим маску цвета
mov	dx,3c4h	/адресный регистр секвенсера
mov	al,2	/регистр маски цвета
out	dx, al	
inc	dx	/регистр данных
mov	al,0fh	/в се биты
out	dx,al
;-----------------------стирание левой ветви
mov	si,baseX
mov	di,baseY
mov	ex,len/15*10
гп4 :	call setpixel
mov byte ptr es:[bx],0 /запись в ВП dec	si
inc	di
loop	m4
;----------------------------вывод правой ветви
mov si,baseX mov di,baseY mov ex,len/15*10 m5:	call setpixel
mov byte ptr es:[bx],0 inc	si
inc	di
loop	m5
;----------------------------вывод нижней ветви
mov	si,baseX
mov	di,baseY
Программе выполнения графического режима
519
mov m6: call	ex,15/10*len setpixel
mov inc loop ret	byte ptr es:[bx],0 si m6
clearfigure endp
;--------------------------работа с клавиатурой
getevent proc
push bx
push dx
mov dx,newbaseX
mov bx,newbaseY
11:	mov ah,0ch
mov al,8
int	21h
cmp al,27
jne pop pop jmp 12:	12 dx bx exit cmp al,0
jne	11
mov ah,8
int cmp al,72 je jmp 13:	21h /стрелка вверх 13 14 sub bx,deltaY
cmp jl jmp 131 :	bx, 0 131 110 mov bx,0
jmp 14:	110 cmp al,80	/стрелка вниз
je jmp 15:	15 16 add bx,deltaY+len
cmp jg sub jmp 151 :	bx,349 151 bx,len 110 mov bx,349-len
jmp 16: cmp je jmp 17:	110 al,75	/стрелка влево 17 18 sub dx,deltaX+len
cmp jl add jmp 171:	dx,0 171 dx,len 110 mov dx,len
jmp 18:	110 cmp al,77	/стрелка вправо
520
Видеоадаптеры и мониторы
j е	19
jmp	11
19:	add dx,deltaX+len
cmp	dx,639
jg	191
sub	dx,len
jmp	110
191:	mov	dx,639-len
110:	mov	newbaseX,dx
mov newbaseY,bx pop	dx
pop	bx
ret getevent endp start: mov	ax,data
mov	ds,ax
;------------------устанавливаем графический режим lOh
mov	ah,0
mov	al,10h
int	lOh
;----------------------устанавливаем режим записи 0-------
mov dx,3ceh mov al,5	/адресный регистр /регистр режима
out	dx,al inc	dx mov al,0 out	dx,al	/регистр данных /режим 0
push OaOOOh pop	es m:	call	/es — начало ВП drawfigure
call	getevent
call	clearfigure
;----------------------запомним координаты вершин-
push newbaseX
pop	baseX
push newbaseY
pop	baseY
jmp	m
exit: ;----------------------возврат в текстовый режим
mov	ah, 0
mov	al,3
int	lOh
;---------------------------завершение задачи-------
mov	ah,4ch
int	21h
code ends end start
Варианты заданий
Задания определяются функциональным графом (рис. 10.39).
Функциональный граф устанавливает 288 вариантов заданий. Вариант разрабатываемой программы соответствует маршруту в графе, например 1-5-9-11-14. Творческий вариант задания может быть определен выбором соб-
Видеокарты 3D
521
ственной фигуры изображения на экране. Кроме того, к творческому варианту возможно отнести программу, создающую при помощи клавиши простейшие графические изображения на экране и выводящую эти изображения на принтер, работающий в графическом режиме.
10.15. Видеокарты 3D
Основные определения
Программные интерфейсы приложений трехмерной графики: Direct 3D, Open GL и Glide.
Программный интерфейс приложений (API - Application Program Interface) используется для управления соответствующим оборудованием.
Программный интерфейс Direct X фирмы Microsoft поддерживается большинством современных видеокарт и осуществляет взаимодействие между операционной системой и аппаратурной (видеокартами). DirectX имеет многослойную структуру и обеспечивает доступ к звуковым картам, джойстикам, устройствам двух- и трехмерным изображений, создание анимации, сервис для разработчиков игр и т. д. Программный интерфейс Direct X непрерывно совершенствуется и имеет несколько программно совместимых версий 1.0-10.0 и т. д.
522	Видеоадаптеры и мониторы
Шейдеры (Shaders) - программы или аппаратные модули, позволяющие управлять процессом построения изображения. Различают программы (аппаратные модули) обработки вершин текстур, например треугольников Vartex Shaders, и обработки налагаемых текстур на уровне пикселей (Pixel Shaders). Обе программы входят в Direct X, пиксельные шейдеры имеют несколько версий своего совершенствования (увеличение функциональных возможностей и быстродействие): Pixel Shader 1.0, 2.0..., связанных с развитием DirectX.
Текстура (texture) - изображение, накладываемое на поверхность, состоящее из текселов (texcel - элемент текстуры). Текстуры хранятся в текстурной памяти. Для представления одного пикселя требуются несколько текселей. Текстуры - это двумерные изображения (поверхности), отображаемые на примитивы (простые геометрические объекты).
Пиксель (Pixel) - элемент (точка) растра (элемент изображения), минимальная единица изображения, цвет и яркость которой можно изменять.
Рендеринг (Rendering) - процесс (конвеер) визуализации трехмерных изображений на уровне растровых объектов, состоящих из текселов и пикселей. Конвейер рендеринга выполняется аппаратным способом (видеокартой) и содержит следующие три этапа: тесселяцию (триангуляцию), геометрическую обработку и растеризацию. Рендеринг заключается в преобразовании плоской модели в трехмерное изображение с добавлением цветов и теней.
Геометрическая обработка содержит несколько ступеней: преобразование координат (вращение, перемещение и изменение размеров), решение задачи освещенности объекта, преобразование чисел (данных о вершинах) с плавающей точкой в фиксированную точку, отбрасывание задних граней и т. д., процесс определения положения примитивов в пространстве и определение их размеров.
Растеризация является достаточно сложным этапом конвейера рендеринга, выполняемым на пиксельном уровне, и включает в себя текстурирование, сх-смещение (моделирование эффектов прозрачности и полупрозрачности), z-буферизацию (значение третьей координаты (глубины) каждой вершины) и т. д. Здесь осуществляется окончательное формирование кадрового буфера -процесс преобразования примитивов (простых геометрических объектов) в пиксельные представления их на экране.
В процессе отображения текстуры на экран монитора возникают артефакты.
Артефакт - недостаток (побочный эффект) в изображении на экране: шум (изменяется текстура), лестничный эффект (зубчатость), муар (инородный рисунок текстуры). Для устранения артефактов применяют фильтрацию.
Билинейная фильтрация заключается в том, что в наиболее простом методе используются 4 смежных тексела для формирования одного пикселя при отображении текстуры на экран монитора. Для улучшения фильтрации применяют и другие, более сложные методы.
Вершина - составляющая объекта, задающая его местоположение в трехмерном пространстве с помощью координат: х, у, z.
Примитивы - простые геометрические объекты, с помощью которых строятся более сложные объекты. Примитивы определяются с помощью вершин и их координат.
TMU - Texture Mapping Unit, блок (чип) наложения текстур, взаимодействующий со своим буфером памяти.
Наложение рельефа (Bump mapping) - технология моделирования рельефных поверхностей путем использования карт освещенности или задания рельефа в виде множества высот (карт смещения).
Видеокарты 3D	523
Z-буфферизация (z-buffering) - область видеопамяти, хранящей значение глубины изображения (для каждого пикселя), метод удаления скрытых поверхностей. Новый пиксель не записывается в буфер, если его значение выше значения пикселя в z-буфере (он невидим). Показателем качества z-буфера являются его разрешающая способность, то есть количество бит, отводимое для представления z-координат (24, 32 и т. д.).
Альфа-смещение (Alpha blending) - технология создания эффекта полупрозрачности для демонстрации тумана, тени и т. д. Это достигается путем смешивания цветовых значений пикселя (R, G, В) с a-значением для задания степени прозрачности (интенсивности свечения пикселя).
Трилинейная фильтрация (Trilinear filtering) использует метод интерполяции для получения качественного изображения. В этом случае для определения цвета пикселя используются восемь текселов.
Векторный процессор - процессор, выполняющий типовую обработку последовательностей данных, представляющих собой элементы (векторы) матриц.
Конвейерная обработка связана с разделением вычислительного процесса на последовательность этапов, когда результаты текущего этапа, полученные одним устройством, передаются для продолжения вычислений на следующем этапе другим устройством, при этом первое устройство оказывается свободным и начинает обработку новых данных. Конвейерная обработка используется в векторных и матричных процессорах. Конвейерная обработка - это один из способов параллельной обработки данных для увеличения производительности системы, когда общий поток данных разделяется на несколько потоков, каждый из которых последовательно обрабатывается отдельным устройством.
Скалярный процессор - процессор, эффективно выполняющий арифметические операции и обрабатывающий скалярные величины (положительные и отрицательные числовые данные). Скалярный тип данных не содержит компонентов в отличие от векторной величины, значение которой определяется размером и направлением в пространстве. Векторное исчисление можно выполнять с помощью скалярных произведений.
Конвейерный способ обработки информации применяется в работе графической карты и заключается в использовании нескольких вершинных конвейеров (7 или 8) и пиксельных конвейеров (12, 20 или 24), определяемом соответствующим количеством работающих процессоров.
Рассмотрим базовый вариант ЗБ-видеокарты, представленной на рис. 10.40.
Эта схема с целью увеличения быстродействия усложнялась за счет повышения тактовой частоты ядра, увеличения числа вершинных и пиксельных процессоров. В графическом ускорителе GeForce 8800 сделан переход к шейдерной архитектуре (аппаратной реализации шейдеров). В этой архитектуре используются для обработки графической информации в конвейерном режиме: 128 скалярных процессоров (8 шейдерных, каждый их которых содержит 16 скалярных), 64 блока билинейной фильтрации, 6 блоков для выполнения растровых операций, выполняется одновременная запись результатов в восемь буферов кадров и т. д. Конвейер включает в себя установку исходных данных, которые затем поступают на выполнение вершинных, растерных, геометрических и пиксельных операций.
Видеопамять содержит: буфер текстур, z-буфер, a-буфер, память ЦАП и буфер кадров. Буфер текстур используется для хранения двумерных изображений (поверхностей), отображаемых на геометрические примитивы. Текстуры характе-
524
Видеоадаптеры и мониторы
Рис. 10.40. Базовый вариант ЗБ-видеокарты
ризуются определенной цветовой насыщенностью (яркостью). Для хранения координат z (значений глубины) применяется z-буфер, характеризующийся количеством бит представления каждой z-координаты. Моделирование эффектов степени прозрачности выполняется с помощью a-значений, содержащихся в a-буфере и определяющих окончательный цвет пикселей, хранимых в буфере кадров.
Память ЦАП (RAMDAC) предназначена для хранения 18-битных значений цветов R, G, В (по 6 битов на каждый цвет), выводимых на цифроаналоговые преобразователи (ЦАП). Буфер кадров содержит окончательно сформированные растровые данные с учетом графического разрешения и глубины цвета для соответствующего режима монитора, например 1600x1200 при 32-битном значении каждого пикселя.
Геометрическим процессором выполняются функции, связанные с: триангуляцией (разбиением поверхности объекта на плоские элементы, например треугольники), преобразованием координат (вращение, перемещение, изменение размеров), решением задачи освещенности объекта и т. д.
Блок рендеринга осуществляет процесс растрового преобразования: отображение пикселей экрана на соответствующие геометрические объекты (примитивы), обработка полутонов (цветовых переходов), формирование текстур, уда
Видеокорты 3D
525
ление скрытых поверхностей, формирование растровых данных, формирование растровых данных для буфера кадров.
Рассмотрим в общей форме коверный процесс обработки графической информации для построения изображения на экране с помощью видеокарты. С учетом данных об объекте, полученных от системного процессора, задается местоположение объекта (вершины) в трехмерном пространстве с помощью координат: х, у и z. На этом этапе выполняются операции преобразования над вершинами (вращение, перемещение, изменения размеров, расчет освещения). Следующий этап связан выполнением сборки примитивов: треугольников, линий ит. д., то есть производится объединение вершин в геометрический абстрактный объект. После этого осуществляется отображение абстрактного геометрического объекта на плоскости экрана с сохранением значений 3-й координаты в z-буфере. Этот процесс называется растеризацией, так как выполняется преобразование примитивов в экранные пикселы с наложением текстур и затемнений. На этой стадии обработка ведется пиксельными шейдерами. Затем выполняется сх-смещение, состоящее в том. что каждому пикселю R. G, В добавляется значение сх, определяющее степень прозрачности пикселя (сх = 1 - пиксель прозрачный, а = О - непрозрачный и сх -> О - затуманивание). Эта ступень обрабатывается блоком ROP (Raster Operations). Из z-буфер отбрасываются пиксели, которые находятся на скрытых поверхностях закрытыми другими объектами, и окончательно формируется кадровый буфер.
Видеопамять: SDRAM, SGRAM, DDR SDRAM/SGRAM и RDR RAM.
Память SDRAM - синхронная (synchronous) динамическая оперативная память с произвольным (случайным) доступом, используемая в качестве системной памяти или в графических адаптерах. К основным свойствам SDRAM относятся небольшие временные задержки по сравнению с DRAM при обращении к памяти. Это достигается путем организации пакетного (страничного) режима работы, переключения банков памяти, конвейерной адресации.
Синхронная графическая память SGRAM (Synchronous Graphics RAM) характеризуется еще большим сокращением временных задержек за счет их полного контроля.
Память типа DDR SDRAM/SGRAM/Double Data Rate SDRAM/SGRAM/SGRAM, технология удвоенной передачи данных использует передачу данных по двум фронтам (положительному и отрицательному) тактового сигнала, но адреса и команды по-прежнему передаются по положительному фронту тактового сигнала. К другим типам памяти, которые могут быть использованы в графических контроллерах, можно отнести: ферроэлектрическую память FeRAM (Ferroelectric RAM) и RDRAM (Rambus DRAM).
Память FeRAM - энергонезависимая ферроэлектрическая память фирм NEC или Fujitsu.
Технология Rambus связана с уменьшением разрядности шины и увеличением тактовой частоты, что значительно уменьшает временные задержки памяти.
Технология RDRAM (Rambus DRAM) имеет несколько направлений, но наибольший интерес представляет высокоскоростная память Direct Rambus (RDRAM. Direct RDRAM).
Технические характеристики памяти DDR1,2 RAM
Емкость памяти (Мбайт) - 128-1000 (DDR1) и 256-2000 ( DDR2).
Пропускная способность (Мбайт/с) - 1600, 2100, 2700, 3200 (DDR1) и 3200, 4300, 5300, 6400 (DDR2).
526
Видеоодоптеры и мониторы
Тактовая частота (МГц) - 200, 266, 333, 400 (DDR1) и 400, 533, 667, 800 (DDR2).
Время доступа (нс) - 5-7 (DDR1) и 5 (DDR2).
Количество внутренних банков - 4 (DDR1) и 4-8 (DDR2).
Напряжение питания (В) - 2,5-2,9.
Частота, с которой происходит смена изображения на экране монитора, зависит от быстродействия видеопамяти. На емкость видеопамяти влияет разрешение экрана и глубина цвета (количество бит, определяющих цвет пикселя).
Функциональные признаки графической видеокарты
Дисциплина обслуживания - создание реалистичных трехмерных изображений путем обработки и преобразования абстрактных графических объектов: вершин, примитивов и текстур.
Структура данных: вершины, примитивы, текстуры, тексели, растровые кадры, состоящие из пикселей.
Способ обработки данных - конвейерный принцип построения изображения.
Ввод и вывод данных определяются внешними интерфейсами: DVI, VGA. PCI Express и т. д.
Программный интерфейс приложений (API): Direct, Open GL, Glide.
Согласование во времени: асинхронное, множество данных образуют очередь для каждого вычислительного блока, ввод и вывод данных выполняются независимо для каждого вычислительного блока, и промежуточные данные хранятся в соответствующих буферах видеопамяти.
Тип памяти: DDR SDRAM/SGRAM. DRD RAM и др.
Преобразование информации выполняется с помощью цифроаналоговых преобразователей с памятью (RAM DAC), формирующих аналоговые интерфейсные сигналы R, G и В.
Захват аналогового видеосигнала (TV-in). Некоторые видеокарты поддерживают функцию с TV-IN (ввод видеосигналов с видеокамер, телевизионного тюнера, видеопроигрывателя), что позволяет использовать монитор компьютера в качестве телевизора. Кроме того, производятся телевизионные аппараты, которые могут работать в качестве мониторов компьютеров.
Формирование аналогового видеосигнала (TV - Out). Известны видеокарты, выполняющие функции ТВ-тюнера. ТВ-тюнер осуществляет прием телевизионного сигнала, выделение из него с помощью декодера сигналов RGB, синхросигналов HSYNC, VSYNC и формирование изображения на экране монитора с помощью кадровой и строчной разверток.
Аппаратурные и параметрические классификационные признаки
Чипсет GeForce 6600 GT( компания NVIDIA) с частотой ядра 300, 500 МП;.
Память: DDR3 емкостью 128 МБайт и частотой 1000 МГц.
Шина памяти: 128 бит.
Разъемы: VGA (D-sub), S-Video конвектор (TV-Out), DVI, VIVI, SLI.
Охлаждение: радиатор графического процессора, вентилятор, медные радиаторы на чипах памяти, чипы памяти без радиаторов.
Интерфейс: PCI Express.
Чипсет Radeon х700 Pro компании АП с частотой ядра около 420 МП;.
Память: DDR3 емкостью 128 или 256 Мбайт и частотой 370 или 860 Мгц.
Шина памяти: 128 или 256 бит.
Контрольные вопросы
527
Плата видеокарты: содержит 9 слоев (для сравнения: системная плата имеет всего 4 слоя).
Охлаждение: общий радиатор для графического процессора и памяти, два радиатора, расположенных по обе стороны платы и соединенных специальной трубкой, радиатор с миниатюрным вентилятором, кулер и алюминиевые радиаторы на чипах памяти.
Интерфейсы разъема SLI используются для установления последовательной связи между компьютерами или для подключения по коммутируемым (телефонным) линиям к компьютеру, соединенному с Интернетом. Кроме того, интерфейс SLI применяется для сопряжения двух видеокарт с целью увеличения общей производительности.
Разъем (S-Video-коннектор) TV-Out предназначен для подключения видеокарты к телевизору, имеющему разъем S-Video. В том случае если телевизор не имеет такого разъема, используются специальные переходники.
Интерфейс разъема DVI (Digital Video Interactive, цифровое интерактивное видео) поддерживает «горячее» подключение, дифференциальную передачу аналоговых сигналов R, G, В и строчные синхроимпульсы. Определены два типа разъемов: DVI-I и DVI-D (D - Digital). Разъем DVI-I (Integrated) включает в себя 24 трехразрядных контактов для передачи цифровых сигналов и 5 контактов для передачи цифровых сигналов. В интерфейсе DVI применяется протокол TMDS(for Transmition Minimazed Differntial Signaling), выполняющий следующие основные функции:
•	преобразование параллельного кода в последовательный и кодирование байтового кода 10-битным с целью уменьшения числа переключений фронтов дифференциальных сигналов;
•	тактирование данных.
В заключение рассмотрим технические характеристики графической видеокарты GeForce 8800.
Чип: GeForce 8800 с частотой ядра 575 МП;.
Помяты GDDR4 с частотой 1,8 ГГц.
Ширина памяти: 384 бита.
Программный интерфейс подключений (API): DirectX 10.
Количество скалярных блоков: 128.
Количество текстурных блоков (TMU): 32.
Количество блоков билинейной фильтрации: 64.
Количество блоков ROP (Raster Operations, растровых операций): 6.
Количество шейдерных процессоров: 8.
Разъемы: 2RAMDAC, 2 DVI, HDTV (высокая плотность TV), HDMI.
Контрольные вопросы
1.	ЖК-ячейки являются элементами матрицы панели:
1)	активными;	2)	пассивными.
2.	Молекулы ЖК-нематиков меняют ориентацию под действием:
1)	температуры;	3)	электрического поля;
2)	света;	4)	магнитного поля.
528
Видеоодоптеры и мониторы
3.	Особенностью TFT-панелей является использование
1)	светодиодов;	3) фототранзисторов;
2)	фотодиодов;	4) тонкопленочных транзисторов.
4.	Размер ЖК-экрана и размер растра:
1)	совпадают; 2) не совпадают.
5.	TFT-дисплеи превосходят ЭЛТ-мониторы по следующим показателям:
1)	контрастности;	4) отсутствию геометрических искажений;
2)	числу режимов разрешения; 5) качеству (чистоте) цвета;
3)	сведению цветов:	6) времени отклика.
6.	Для связи ЖК-панели с контроллером используется следующий дисплейный интерфейс:
1)	LVDS; 2) PCI; 3) USB; 4) IEEE 1394.
7.	В TFT-дисплеях для устранения мерцания изображения
1)	применяется кадровая развертка;
2)	не применяется кадровая развертка.
8.	Для связи TFT-дисплея с видеоадаптером компьютера применяются:
1)	цифровой RGB-интерфейс:
2)	аналоговый RGB-интерфейс;
3)	композитный;
4)	высокочастотный модулятор.
9.	Название эффекта ЖК-нематика
10.	Название количества воспроизводимых на экране цветов:
I I I I I I I I
11.	ЖК-дисплей по сравнению с ЭЛТ-монитором имеет мощность:
1)	высокую; 2) низкую;	3) потребляемую.
12.	Коэффициент усиления дифференциального усилителя для синфазных сигналов
1)	равен 0:	2) не равен 0.
13.	Дифференциальный усилитель представляет собой комбинацию следующих операционных усилителей:
1)	инвертирующего и интегрирующего;
2)	неинвертирующего и интегрирующего;
3)	неинвертирующего и интегрирующего;
4)	дифференцирующего и интегрирующего.
14.	Пиксель цветного ЖК-дисплея содержит
1)	одну ячейку ЖК;	3) три ячейки ЖК;
2)	две ячейки ЖК; 4) четыре ячейки ЖК.
529
Литеротуро
15.	Яркость изображения на экране характеризуется числом
1)	кд/м2; 2) лм/Вт; 3) лм/ср; 4) Вт/ср.
Литература
1.	Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT / пер. с англ. - М.: Финансы и статистика, 1992. - 544 с.
2.	Голенкова Ж. К.. Заблоцкий А. В.. Мархасин М. Л. и др. Руководство по архитектуре IBM PC AT / под общ. ред. М. Л. Мархасина. - Минск: ООО «Консул», 1993.-949 с.
3.	Григорьев В. Л. Видеосистемы ПК фирмы IBM. - М.: Радио и связь, 1993. -192с.
4.	Холидей К. Секреты ПК / пер. с англ. Коваль Г. И., Кравчук В. А. - Киев: Диалектика. 1996.-414 с.
5.	Нортон П., Сандлер К., БаджетТ. Персональный компьютер изнутри / пер. с англ. - М.: Бином, 1995. - 448 с.
6.	Гук М. Аппаратные средства IBM PC: энциклопедия. - СПб: Питер Ком, 1999.-816с.
7.	Авдеев В. А., Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства.: учеб, пособие. - М.: Радио и связь. 2001. - 480 с.: ил.
8.	Нортон П. Персональный компьютер фирмы IBM и операционная система MS-DOS / пер. с англ. - М.: Радио и связь, 1991. -416 с.
9.	Колесниченко О. В., Шишигин И. В. Аппаратные средства PC. 5-е изд., пе-рераб. и доп. - СПб.: БХВ-Петербург, 2004. - 1152 с.: ил.
10.	Библиотека электронных компонентов. Вып. 8: Жидкокристаллические индикаторы фирмы Data International. - М.: ДОДЭКА. 1999. - 64 с.: ил.
Печатающие устройства
11.1.	Классификация принтеров
На рис. 11.1 изображен граф классификации основных типов принтера. По способу регистрации информации принтеры разделяют на принтеры ударного и безударного действия. В принтерах ударного действия изображение на носителе (бумаге) образуется путем удара печатающего элемента через красящую ленту или посредством нанесения красителя на знакопечатающий элемент (литеру) перед его ударом по бумаге. По методу формирования
Способ регистрации
Формирование символов
Принцип действия
Способ печати
Рис. 11.1. Граф классификации основных типов принтеров
Классификация принтеров	531
символов ударные принтеры разрабатываются двух типов: знакопечатающие (литерный с готовыми символами жестко заданной формы) и знакосинтезирующие (называемые матричными, игольчатыми или мозаичными).
В таких принтерах изображения символов или графика получаются в результате удара головок (молоточков) литероносителя или иголок печатающей головки. В качестве литероносителей чаще всего применяются шаровые, цилиндрические печатающие головки с размещенными литерами на их поверхностях или лепестковые шрифтоносители, обычно представляющие собой диск с радиально расположенными лепестками, на концах которых крепятся литеры. Выбор литеры в принтерах с посимвольным способом печати осуществляется путем механического перемещения ее в требуемую позицию, а ее удар обеспечивается с помощью электромагнитного привода.
В знакосинтезирующих принтерах изображение символа формируется с помощью иголок печатающей головки принтера, наносящих удар через красящую ленту по бумаге с помощью электромагнитов. Принтеры ударного типа характеризуются электромеханическим принципом действия и реализуют посимвольный или построчный способ печати. В построчных игольчатых принтерах содержится планка с расположенными по всей ее длине иглами, которые позволяют напечатать всю строку.
Технические характеристики знакосинтезирующих принтеров следующие:
•	тип принтера (матричный, струйный, термический),
•	скорость печати текста, символ/с (250, 480, 600, ..., 800);
•	разрешающая способность графики, точек/мм (9,4 х 8,5, 10 х 8,5, 14 х 14...);
•	число знаков в строке (80, 132, 136);
•	емкость буферной памяти в Кбайтах (3, 8, 50, 60, 256, ...);
•	число наборов знаков (1, 2, 3, 4,...);
•	количество элементов печатающей головки (9, 12, 20, 24, 32, ...).
Кроме того, к техническим характеристикам знакосинтезирующих принтеров относятся: уровень шума, наличие цветов, габариты размеров и срок службы головки и красящей ленты.
Другим важным классом являются следующие основные безударные принтеры: струйные, термические, термографические, лазерные с электрографическим принципом печати. Струйные принтеры характеризуются невысоким уровнем шума, высокой скоростью печати, например принтер BJC-70 фирмы Canon имеет скорость печати (количество страниц в минуту) в черновом режиме, равную 4 стр./мин, а принтер Stylus Color фирмы Epson в том же режиме -8 стр./мин. В струйных принтерах печатающая головка имеет специальные сопла, через которые выполняется выброс чернил. Число цветных сопел в головке струйного принтера BJC-70 равно 64, а в головке принтера Stylus Color - 48. Разрешающая способность тех же принтеров в графическом режиме, определяемая количеством точек, которое может быть напечатано в одном дюйме, соответственно равна 360 и 720. Струйные принтеры имеют различные принципы реализации (одноканальные, многоканальные, с непрерывной капельной или дискретной печатью, цветовые).
Термические принтеры используют специальную термочувствительную бумагу, на которой оставляют отпечаток точечные нагревательные элементы термопечатающей головки. Термические принтеры гарантируют хорошее качество печати, получение готовых изображений, обеспечивают разрешающую
532
Печатающие устройства
способность до 12 точек на мм и выполняют посимвольный или построчный способ печати. Для посимвольного принципа печати термические принтеры позволяют получить скорость формирования символа до 30 знаков в секунду.
В лазерных принтерах применяется принцип электростатической ксероксной (копировальной) технологии. При этом лазерные принтеры содержат в качестве оптического устройства лазеры и вращающийся фотобарабан, позволяющий переносить изображение на бумагу. На фотобарабане с помощью лазера засвечиваются точки (происходит изменение электрического заряда), то есть получается электростатическое изображение страницы информации. Основными техническими характеристиками персональных лазерных принтеров являются:
•	скорость печати, измеряемая числом страниц в минуту, например для формата А4 скорость печати - 4, 6, 8, 10 и более стр./мин;
•	емкость буферной памяти в Мбайтах (1,4,6, 10...);
•	разрешающая способность в графическом режиме (24 точки на мм и более);
•	тип процессора, тактовая частота в МГц (AMD 29030/25, Motorola RISC/24 ит. д.);
•	интерфейс последовательного и (или) параллельного порта (USB, RS-232, Centronics).
11.2. Лазерные принтеры
Основные определения
Лазерный принтер - периферийное печатающее устройство вывода безударного действия с высокой разрешающей способностью, создающее текстовое и графическое изображение с помощью электрографического процесса (принципа электростатической ксероксной технологии).
Ксерография - процесс сухой печати (xeras - сухой, graphos - писать (лат.)).
Электрографическая (электростатическая) фотография - способ регистрации, состоящий в выполнении следующих основных действий:
•	получение скрытого электростатического изображения на носителе с фо-тополупроводниковым слоем;
•	формирование визуального изображения с помощью мелкодисперсного красящего вещества (тонера);
•	перенос изображения на бумагу;
•	закрепление изображения на бумаге, например термическим способом.
Лазер - когерентный источник усиленного света (света одной частоты). В лазерных принтерах применяют полупроводниковые и газовые He-Ne лазеры.
Светодиодный способ печати заключается в использовании светодиодной линейки с управляемой интенсивностью света, сфокусированного с помощью линз на фотоноситель.
Тонер-картридж - сменная кассета с порошком (тонером), применяемая в лазерных приборах для получения визуального изображения.
Тонер - мелкодисперсный красящий порошок, состоящий из полимера, резины и сажи. Кроме того, в состав тонера входят магнитные частички.
Фотопроводники - барабаны или ленты, покрытые светочувствительным полупроводниковым слоем, изготовленным на базе селена или органического
Лазерные принтеры	533
фотовещества, изменяющим свой заряд под действием света и образующим на поверхности потенциальный рельеф в соответствии с печатным изображением.
Спектральная чувствительность - способность фотопроводника реагировать на диапазон длин волн электромагнитного излучения источника света.
Фотоэлектрическая чувствительность - величина, определяющая скорость формирования изображения (потенциального рельефа под действием света).
Разрешающая способность - определяется числом точек на дюйм (dpi - dots per inch). Лазерный принтер имеет горизонтальное и вертикальное разрешения, например 1200 х 600 dpi.
Вертикальное разрешение характеризуется шагом барабана (1/600 дюйма).
Горизонтальное разрешение определяется числом точек в строке барабана (1 /1200 дюйма), то есть точностью перемещения лазерного луча.
Коротрон - зарядное устройство, содержащее, например, тонкую проволоку и сетку, на которые подается высокое напряжение для получения коронного разряда.
Структурная схема лазерного принтера
Структурная схема лазерного принтера изображена на рис. 11.2 и содержит два основных блока: устройство сопряжения и контроллер управления. Базовым компонентом устройства сопряжения является центральный процессор, построенный на основе микропроцессора МС 68000 фирмы Motorola. В последнее время в лазерных принтерах используются процессоры RISC или CISC. Дешевле и быстрее RISC-процессоры, имеющие ограниченный список команд, а CISC-процессоры характеризует широкий список команд. В более быстродействующих лазерных принтерах применяется процессор фирмы Intel 80960 с тактовой частотой 33 МГц. Центральный процессор выполняет команды языков принтера PCL (Printer Control Language), Adobe Postcript, HP-GL (Hewlett Packard Graphics Language) и др.
Лазерный принтер имеет собственное программное обеспечение, встроенный интерпретатор и язык, определяющий команды и формат данных.
Он выполняет программы, хранящиеся в ПЗУ или флэш- памяти (перепрограммируемой постоянной памяти), которая, кроме того, хранит таблицы шрифтов. Процессор принтера освобождает компьютер от громоздких вычислений по формированию данных, выводимых на печать. Дополнительные наборы шрифтов (кодовые таблицы) размещаются во внешних картриджах, которые с помощью интерфейса картриджей шрифтов подключаются к шине центрального процессора.
С помощью кнопок и индикаторов панели управления осуществляется реализация различных режимов работы лазерного принтера: распечатки различных типов шрифтов, самотестирования принтера, доступа к меню памяти и меню конфигурации, сброс текущих шрифтов и данных, возврат к внутренним установкам и т. д.
Сопряжение лазерного принтера с компьютером осуществляется путем использования параллельного или последовательного интерфейса. В качестве параллельного интерфейса раньше применяли в соответствии со стандартом IEEE 1284 требуемые режимы параллельного порта для сопряжения с лазерным принтером. Стандарт 1284 устанавливает типы используемых разъемов и протокол обмена в режиме вывода/ввода.
534
Печатающие устройства
УСТРОЙСТВО СОПРЯЖЕНИЯ
Рис. 11.2. Структурная схема лазерного принтера
Лазерные принтеры
535
При подключении лазерного принтера к LPT-порту компьютера необходимо выбрать в основном меню программы Setup Utility пункт Integrated peripherals (Встроенные устройства), указать элемент Quboard Parallel Port (Режим работа встроенного параллельного порта) и установить режим EPP - Enhan-sed Parallel Port [Расширенный режим), который позволяет передавать информацию в обе стороны. Если использовать обычный режим Centronics (SSP -Standart Parallel Port), который устанавливается по умолчанию, то подключенный лазерный принтер работать не будет. В настоящее время для подключения лазерного принтера применяют параллельный интерфейс SCSI, обладающий лучшими функциональными возможностями и техническими характеристиками, чем параллельный интерфейс LPT-порта.
В качестве последовательного интерфейса лазерного принтера можно использовать интерфейс RS-232 С, RS-422A, наиболее употребительным является интерфейс USB.
Кроме того, устройство сопряжения лазерного принтера содержит видеоинтерфейс, в состав которого входят блоки памяти, подготавливающие образ страницы, выводимой на печать и включающей двоичные матрицы знаков. Через видеоинтерфейс подготовленная информация поступает в контроллер управления, который и организует печать всей страницы целиком. Для представления графических изображений с разрешением 600 точек на дюйм (24 точки в одном миллиметре) на листе формата А4 требуется емкость памяти 4 Мбайта с учетом неиспользуемых кромок бумаги.
Адресный контроллер устройства сопряжения выполняет доступ к ячейкам ОЗУ динамического типа, хранящего информацию, выводимую на печать и служебную, в частности информацию о шрифтах. Для организации режимов записи и чтения, а также для регенерации памяти используется контроллер синхронизации.
Другим сложным компонентом лазерного принтера является контроллер управления, который координирует работу всех блоков принтера: управляет работой двигателей, лазерного блока, высоковольтного блока, осуществляет режимы передачи, проявления и закрепления изображения и т. д. Высоковольтный блок управляет работой коротрона, который предназначен для нанесения равномерного статического заряда на поверхность барабана, то есть для реализации функции зарядки барабана.
Простой коротрон может быть выполнен из тонкой малоокисляющейся проволоки, на которую подается высокий потенциал из высоковольтного блока. Между коротроном и барабаном образуется высокое напряжение в несколько киловольт, что приводит к ионизации воздуха. Некоторые принтеры содержат озоновые фильтры, которые необходимы для уменьшения уровня озона. Аналогичные действия наблюдаются в работе кинескопа, на анод которого подается из высоковольтного блока (строчного трансформатора) высокое напряжение, вызывающее коронный разряд.
Существуют разнообразные типы коротронов, позволяющие получить более качественный заряд на поверхности барабана (фоторецептора), например использование проволоки вместе с сеткой, на которую также подается высокое напряжение. Разработаны и другие, более сложные коротроны, требующие применения постоянных и переменных высоких напряжений.
Лазерный блок, управляемый контроллером, содержит лазер, формирующий тонкий световой луч, попадающий на зеркало сканирования (многогранную
536
Печатающие устройства
призму), вращающуюся с высокой скоростью (7-15 тыс. об/мин). Отраженный лазерный луч через систему зеркал попадает на барабан и по всей его длине изменяет заряд. После этого барабан поворачивается на один шаг (доли дюйма) и организовывается новый проход лазерного луча по длине заряженного барабана. Этот поворот барабана и определяет вертикальное разрешение принтера. Лазер представляет собой когерентный источник света, излучающий свет одной частоты (длины) и построчно преобразующий заряд каждой строчки барабана в соответствии с изображением страницы, хранящейся в памяти принтера. Страница может содержать графическое изображение вместе с текстом.
Барабан лазерного принтера предназначен для получения скрытой копии изображения с помощью лазера. Барабан - металлический полый цилиндр с фотопроводящим (светочувствительным полупроводником) поверхностным материалом, в качестве которого может быть использован селен или оксид цинка. Фотопроводником является полупроводник, который уменьшает свое удельное сопротивление под действием света. Существуют разные технологии изготовления фоторецептора (некоторых полупроводников) барабана, например применяется множественный вариант, содержащий слой для переноса заряда, слой для генерации заряда и изоляционный слой для исключения утечки заряда. В последнее время для повышения ресурса барабана стали применять фото-чувствительный барабан, изготовленный из аморфного кремния.
Управление приводами механизмов выполняется с помощью основного электродвигателя, который через зубчатую передачу вращает барабан, воздействует на муфту валиков регистрации, валиков вывода бумаги и валиков захвата бумаги.
Принцип действия лазерного принтера
Процесс печати одной строки состоит в следующем. Лазер с помощью зеркал высвечивает строку барабана и заряжает ее в соответствии со строкой страницы изображения. Затем по желобу подается порошок тонера, который притягивается к заряженным участкам барабана. При этом могут быть использованы два метода печати: черным по белому и белым по черному. В первом случае строка заряжается в тех местах, которые лазер высвечивает (предварительно барабан был разряжен), а во втором случае, наоборот, барабан сначала был заряжен, а затем с помощью лазера выполняется разрядка тех участков, которые соответствуют элементам изображения.
После этого из лотка подается электрически заряженная бумага, которая притягивает порошок тонера. Затем под действием температуры и давления тонер закрепляется на поверхности бумаги, а незакрепленный порошок удаляется с помощью скребка и переносится вновь в желоб. Описанный цикл повторяется для каждой строки страницы при вращении барабана. На рис. 11.3 представлена схема, поясняющая принцип действия лазерного принтера.
Процессор лазерного принтера обладает собственным программным обеспечением, встроенным интерпретатором и языком, определяющим команды и формат данных (описание страниц и уплотнение данных), поступающих из компьютера. На рис. 11.4 показан порядок взаимодействия компьютера и принтера.
Прикладная программа получает доступ к принтеру с помощью драйвера, преобразующего данные прикладной программы в команды принтера. Для различных принтеров предлагаются соответствующие драйверы для их обслужи-
Лазерные принтеры
537
Рис. 11.3. Схема, поясняющая принцип действия лазерного принтера:
1 - процессорный модуль, 2 - лазер, 3 - световой луч; 4 - зеркало, 5 - фотобарабан, 6 - кабель интерфейса; 7 - ионизатор; 8 - девелопер; 9 - резервуар с тонером, 10 - лист бумаги, 11 - накопитель, 12 - валик, 13 - зарядное устройство;
14 - устройство нагрева; 15 - фиксирующие валики; 16 - приемное устройство
Прикладная программа —> Драйвер (набор команд, данные) —>
Интерпретатор команд —» Образ страницы
Рис. 11.4. Порядок программного взаимодействия компьютера и принтера
вания, причем некоторые принтеры для расширения области их применения могут работать с несколькими драйверами. Каждый принтер характеризуется языком (набор команд и данных), который он использует при совместной работе с драйверами компьютера. Этот набор команд и данных обрабатывается интерпретатором принтера, и в конечном итоге формируется двоичный образ в памяти принтера.
Лазерные принтеры поддерживают три типа шрифтов: встроенные (хранятся в ПЗУ), загружаемые программные (используют ОЗУ принтера) и картриджные (хранятся в ПЗУ специальных модулей, подключаемых непосредственно к слоту принтера для расширения его функциональных возможностей). В некоторых лазерных принтерах имеются разъемы для подключения платы с жестким диском или ППЗУ (флэш-памятью) для хранения разнообразных шрифтов (наборов символов заданного размера и изображения). Лазерные принтеры используют большое число встроенных шрифтов (35, 45, ...), среди которых применяются и масштабируемые шрифты, позволяющие получить символы желаемого размера.
Для достижения более качественного изображения (исключения зазубрин) в лазерных принтерах употребляется схема, управляющая интенсивностью свечения луча, что приводит к изменению размера точки изображения и как следствие - к сглаживанию края изображения.
538
Печатающие устройства
В схеме поверхность фотобарабана (5) покрыта светочувствительным полупроводниковым слоем (оксидом цинка или сплавом селена), которая заряжается с помощью высоковольтного ионизатора (7), то есть на поверхности образуется электростатический заряд. При освещении какой-либо точки поверхности фотобарабана тонким лучом лазера происходит разряд в этой точке (уменьшение потенциала), так как она становится проводящей. В соответствии с данными, поступающими из компьютера, выполняется изменение интенсивности лазерного луча при облучении поверхности фотобарабана, поэтому на ней создается потенциальный рельеф (скрытое электрическое изображение страницы информации). Затем выполняется этап проявления невидимого изображения с помощью барабана-девелопера (8) и тонера (пылеобразной краски), помещенного в резервуар (9). Краска притягивается к тем частям поверхности барабана, где имеется электростатический заряд, и таким образом формируется изображение. Лист бумаги (10) из накопителя (11) с помощью валиков поступает через зарядное устройство (13), которое заряжает бумагу противоположным зарядом. При вращении фотобарабана тонер с его поверхности притягивается заряженной бумагой, и на нее переносится изображение. После этого бумага проходит устройство нагрева (14), в котором под действием температуры и с помощью фиксирующих цилиндров (15) происходят закрепление изображения на бумаге и поступление ее в накопитель бумаги (16). Резервуар с тонером, девелопер и фотобарабан в некоторых принтерах конструктивно объединены в одно устройство - картридж, который подлежит замене при пустом резервуаре. В других принтерах имеется только резервуар с тонером, что снижает себестоимость печати одной страницы.
11.3.	Светодиодные принтеры
К классу лазерных принтеров относят и светодиодный принтер (LED-принтеры, LED - Light Emitting Diode), у которого вместо лазерного источника света применяется светодиодная панель. Считается, что светодиодная технология более надежна, проще, чем лазерная, и поэтому является более дешевой. Общая схема светодиодного способа печати показана на рис. 11.5.
Прибор Page Printer КХ-4400 [2] содержит светодиодную печатающую головку, содержащую 2496 светодиодов, образующих 89 групп, каждая из которых состоит из 64 светодиодов. Конструктивно светодиоды расположены в виде линейки, свет от которой попадает на две фокусирующие линзы. Каждая группа светодиодов управляется своей схемой, на которую поступают сигналы изображения образа знака, то есть с помощью драйверных схем выполняется выключе-ние/включение точек света, который фиксируется линзами на полупроводниковую поверхность светочувствительного барабана. Предварительно барабаны заряжаются с помощью высоковольтного ионизатора (коротрона заряда), размещенного вблизи барабана (рис. 11.6). Коротрон подключен к высоковольтному блоку, который формирует следующие напряжения: - 5 КВ, + 5 КВ и -580 В соответственно для коротрона заряда, коротрона переноса и барабана.
Основными компонентами схемы светодиодного лазерного принтера являются центральный процессор, программируемая логическая матрица и контроллер управления. Центральный процессор выполняет специальное программное обеспечение, координирующее работу всех компонентов принтера и обрабатывающее тексты и форматы.
Светодиодные принтеры
539
Программируемая логическая матрица реализует следующие функции управления:
•	памятью, драйверными схемами и светодиодной печатающей головкой;
•	прерываниями и лицевой панелью;
•	параллельным интерфейсом и т. д.
Контроллер управления обеспечивает электрографический процесс печати и работу электродвигателя. Для управления электродвигателем контроллер формирует четыре сигнала, сдвинутые по фазе на 90°.
Узел закрепления содержит нагревательную лампу с термостатом, которая отключена, если открыта дверца картриджа. Температура узла закрепления не должна превышать 200 °C.
Высоковольтный блок содержит импульсные и высоковольтные трансформаторы и преобразует напряжения 24 В в высоковольтные напряжения после запуска электродвигателя. Вначале высоковольтным блоком вырабатывается -5 КВ для коротрона заряда, затем -500 В для проявления и + 5 КВ - для коротрона переноса.
Для продвижения бумаги используется электромагнитный соленоид, управляемый сигналами контроллера.
Узел считывания предназначен для удаления изображения (экспозиции) на барабане.
Функционирование светодиодного прибора
Принцип действия светодиодного прибора (СП) показан на рис. 11.7.
Работа СП во многом совпадает с работой лазерного принтера и содержит следующие этапы:
1)	заряд;
2)	формирование изображения;
Печатающие устройства
540
Рис. 11.6. Структурная схема светодиодного лазерного принтера
3)	экспонирование;
4)	проявление;
5)	перенос (заряд бумаги);
6)	отделение бумаги;
7)	закрепление;
8)	очистка.
Светодиодные принтеры
541
Бумага
Входной лоток для бумаги
Коротрон заряда
Коротрон	Валики вывода
переноса	бумаги
Рис. 11.7. Принцип действия СП
Рассмотрим более подробно эти этапы.
1.	С помощью высоковольтного коротрона заряда (ионизатора) на селеновой поверхности барабана создается равномерный электрический заряд (система «белым по черному»).
2.	Светодиодная печатающая головка (панель) обслуживает с переменной интенсивностью барабан в соответствии с изображением, хранящимся в электронной странице. При этом происходит изменение заряда на поверхности барабана и образуется невидимое электростатическое изображение.
3.	Этап экспонирования заключается в образовании скрытого изображения на фотопроводящем слое барабана. При попадании света на фотопроводящий слой происходит разряд носителей заряда. Причем светодиодная печатающая головка освещает целую строку на поверхности барабана. Барабан вращается вокруг своей оси, и на его поверхности путем управления через драйверные системы включением/выключением светодиодов формируется точечный образ соответствующего знака (рис. 11.8).
О - Точка заряжена (2) - Точка разряжена
Рис. 11.8. Изображение знака «Н» на поверхности барабана
4.	Проявление - это процесс получения визуального изображения на барабане, на который наносится тонер валиком девелопера. Тонер притягивается в тех местах поверхности барабана, где имеется заряд. Там, где заряд отсутствует, тонер не закрепляется.
5.	С помощью валика подачи бумага поступает к барабану и проходит возле коротрона переноса, который сообщает ей заряд, создающий электричес
542
Печотоющие устройство
кое поле и притягивающее тонер. Бумага прилипает к барабану, и за два его оборота изображение переносится на бумагу.
6.	Этап отделения бумаги от барабана выполняется различными способами: механическими (специальными приспособлениями) и электрическими, позволяющими уменьшить силу притяжения бумаги к барабану.
7.	Закрепление изображения на бумаге осуществляется термомеханическим способом с помощью специальной кварцевой лампы и термовалика, выполняющих нагрев и прижим бумаги с нанесением на нее изображения.
8.	Очистка состоит в удалении тонера с поверхности барабана с помощью специального скребка или мягкой щетки с вакуумной откачкой.
Функциональная классификация лазерных принтеров
Функциональная классификация содержит признаки, которые определяют способ функционирования устройства. В американских патентах очень четко и лаконично описываются способы (принципы) действия устройств с учетом различных схем, реализующих эти способы. В европейских патентах акцент делается на описание устройства, то есть на состав оборудования и организацию связей компонентов устройства. Таким образом, можно различать функциональную и аппаратную классификации. Задача классификации состоит в поиске основных признаков, которые были бы общими для всех устройств, и признаков. присущих только данному классу устройств.
Для лазерных принтеров можно выделить следующие существенные функциональные признаки.
1.	Дисциплина обслуживания - лазерная печать элементов кодового набора (букв, цифр, специальных знаков и т. д.) и изображений.
2.	Интерфейсы лазерных принтеров - параллельные (SCSI, Centronics) последовательные (USB. RS-422A), беспроводные инфракрасные (IrDA, Infrared Data Association), сетевые (Ethernet).
3.	Методы регистрации (физический эффект) - электрографический (электрофотографический).
4.	Способ формирования текста - полная страница.
5.	Технология разрешения - обычная или RET-технология (RET, Resolution Enhancement Technology), повышающая качество изображения. RET-технология заключается в управлении интенсивностью лазерного луча с помощью алгоритмов частотно-модулированного или стохастического растрирования, что позволяет изменить уровень заряда. Кроме того, используется технология улучшения качества печати PQET при 300 dpi. Известна другая технология разрешения TurboRes Enhanced, которая состоит в том, что каждая точка имеет вид полоски, размер которой может меняться с помощью соответствующей схемы.
6.	Структура информации - наборы шрифтов (кодовые таблицы) и наборы команд.
7.	Языки описания данных - HP-GL (Hewlett - Packard Graphics Language), PostScript, PCL (Printer Control Language) и т. д. Работа компьютерных устройств (клавиатуры, дисков, видеоадаптеров) выполняется с помощью соответствующих команд. В лазерных принтерах используют также команды, которые задают различные фигуры, поворот изображений, маскирование, списки шрифтов и т. д.
Светодиодные принтеры
543
8.	Типы шрифтов - растровые или векторные. Шрифты (фонт) - набор символов заданного стиля и размера, хранимых в ПЗУ картриджа в растровой или векторной форме. В растровой форме символ определяется совокупностью точек (растровой матрицей), а в векторной форме - совокупностью линий, описывающих контур знака. Размер шрифта измеряют в пунктах. Один пункт равен 0,353 мм. Стандартные значения размера шрифта 8, 9, 10, 12, ....48 пунктов.
9.	Технология метода печати - лазерная или световая.
10.	Направление печати - односторонняя или двухсторонняя.
11.	Масштабирование шрифта - получение желаемых размеров символов шрифта до заданного числа пунктов.
12.	Эмуляция других печатающих устройств - автоматическое переключение языков эмулируемых принтеров (Epson FX-850, IBM Proprinter XL...).
13.	Драйверы-Windows 95/98/NT/2000/Me/iMaciBook/G3/G4.
14.	Представление цвета - монохромное или CMYK (С - Cyan (циан), М -Magenta (пурпурный), Y-yellow (желтый) и K-Black (черный)). Цветное изображение образуется наложением четырех цветов, поэтому цветное изображение лазерного принтера получается за четыре прохода. Во время каждого прохода наносится тонер определенного цвета, который смешивается на барабане с другими цветами.
15.	Система печати - «белым по черному» или «черным по белому». В первом случае барабан предварительно заряжается, а затем лазером выполняется разрядка определенных участков поверхности барабана для получения нужного изображения. Во втором случае, наоборот, вначале поверхность барабана разряжается, а потом лазер заряжает необходимые места барабана.
Аппаратурная классификация лазерных принтеров
Любое компьютерное устройство содержит компоненты в различных сочетаниях, которые связаны с обработкой, хранением, анализом и передачей информации.
С целью аппаратурной (структурной) классификации лазерных принтеров укажем следующие признаки.
1.	Обработка информации - осуществляется микропроцессорами МС 68000 фирмы Motorola, 80960 СЕ фирмы Intel и AMD 29030, RISC и CISC-процессорами, микроконтроллерами Power PC 401 GF/50MBj.
2.	Хранение информации - выполняется с помощью ОЗУ (DIMM), ПЗУ, жестких дисков и флэш-памяти. Память содержит слоты (1 OOpin) для модулей DIMM 16, 32, 64 или 128 Мбайт.
3.	Сопряжение с компьютером - реализуется интерфейсными устройствами (ПЛМ, ПЛИС) SCSI, USB, Centronics, RS-232C, RS-422A, Ir DA и сетевыми адаптерами.
4.	Технология разрешения - улучшенное качество печати достигается применением специальной микросхемы, которая управляет интенсивностью свечения лазерного луча, что позволяет изменять степень заряда точки фотобарабана.
5.	Типы шрифтов - встроенные, загружаемые и кардрижные. Встроенные шрифты хранятся в ПЗУ принтера, и их содержимое не изменяется. Загру
544
Печотоющие устройство
жаемые шрифты размещаются в ОЗУ и командами программы могут быть изменены. Кроме того, используются внешние кардрижные шрифты.
6.	Фоторецепторы (носители информации) - селеновый барабан, светочувствительная фотоприемная лампа.
7.	Источник света - лазерный полупроводник, светодиодная линейка.
8.	Управление узлами принтера - главным двигателем, высоковольтными блоками, драйверными схемами с помощью различных микроконтроллеров.
9.	Подача бумаги - выходной лоток (кассета).
10.	Панель управления и индикации - клавиши и видеокристаллический индикатор.
11.	Типы картриджа - тонер или барабан, тонер и чистящий блок (картридж EPL). На рис. 11.9 представлен картридж, содержащий барабан и тонер.
Рис. 11.9. Картридж с барабаном и тонером
12.	Привод - печатающий механизм. Большинство лазерных принтеров используют принципы привода фирмы Canon. Привод влияет на скорость печати, габарита, разрешения и т. д.
Параметрическая классификация
Наиболее распространенной является параметрическая классификация, позволяющая сравнить лазерные принтеры по следующим техническим характеристикам.
1.	Разрешающая способность - различают горизонтальное и вертикальное разрешения принтера. Вертикальное разрешение определяется шагом барабана и составляет 1 /600 (1/300) дюйма. Горизонтальное разрешение зависит от частоты управляющих сигналов, поступающих на лазер, и измеряется числом точек в одном дюйме строки барабана, например 2400 или 1200 dpi (точек в дюйме). Поэтому разрешение указывают в виде двух чи
Струйные принтеры	545
сел (2400 х 600) с учетом горизонтального и вертикального разрешений. Чем больше разрешающая способность, тем выше качество печати.
2.	Объем памяти - так же как и в видеопамяти мониторов, в которой экранная страница памяти зависит от размера графического режима (например. 320 х 200). максимальное разрешение лазерного принтера определяет объем памяти. Примеры для дома и малого офиса имеют объем памяти 4, 8 или 12 Мбайт с возможностью наращивания. Минимальный объем оперативной памяти черных принтеров - 512 Кбайт. Для формирования цветных графических изображений требуется память 32, 64 Мбайт и выше.
3.	Скорость печати - для лазерных принтеров этот параметр измеряется числом страниц в минуту, выдаваемых приводом печати. Недорогие лазерные принтеры печатают со скоростью 4, 6 или 8 страниц в минуту, а дорогие сложные модели - свыше 40 стр./мин для простых информационных страниц. Цветные принтеры имеют меньшую скорость печати по сравнению с черными (2, 3, 6.... Стр./мин).
4.	Емкость подающего лотка - принтеры для дома и малого офиса имеют лотки для автоподачи бумаги емкостью 150. 250 листов бумаги формата А4. Применяются многофункциональные устройства подачи, использующие разные форматы бумаги.
5.	Формат бумаги - наиболее распространение форматы: А4, А5, В5, Legal, Letter и задаваемые пользователем.
6.	Срок службы (ресурс) барабана - время годности барабана в среднем составляет 20 000-60 000 страниц.
7.	Ресурс картриджа - срок годности картриджа определяется числом страниц, выводимых на печать, и составляет 3, 7, 15 тыс. страниц. Некоторые принтеры имеют картридж, содержащий барабан вместе с тонером. Гарантирования емкость картриджа - 2500 - 3500 страниц.
8.	Уровень шума - в режиме ожидания - печать: 28-48 дБ (децибел).
9.	Потребляемая мощность - энергопотребление: 100. 400. 500 Вт.
11.4.	Струйные принтеры
Струйные принтеры обеспечивают хорошее качество печати, низкий уровень шума (40 дБ), большую скорость печати (до 9 страниц в минуту) и высокую разрешающую способность (от 300 х 300 до 1200 х 600, 1440 х 720), используют количество цветов от 4 до 7 и более и формат бумаги А4. Наибольшим спросом пользуются портативные струйные принтеры. В струйных принтерах применяются чернильные картриджи (сменные емкости для хранения чернил), которые конструктивно могут быть выполнены совместно с головкой принтера или в виде отдельного резервуара.
Печатающая головка содержит набор тонких сопел с диаметром отверстия 0,01...0,1мм, расположенных вертикально и выбрасывающих капли чернил, действие которых напоминает печать матрицы знака с помощью игл матричного принтера. Число сопел определяется типом принтера (от 16 до 64 и более).
Основной недостаток струйных принтеров - высыхание чернил внутри сопла. Поэтому для устранения этого недостатка в некоторых принтерах предусмотрена специальная парковка печатающей головки или очистка засорившихся сопел. Кроме того, с целью исключения растекания чернил на бумаге
546
Печотоющие устройство
иногда предусматриваются подогрев бумаги, применение быстровысыхающей специальной бумаги и чернил.
Известны два основных метода нанесения чернил на бумагу: пьезоэлектрический и термический.
На рис. 11.10 иллюстрируется принцип действия струйного принтера.
б Многослойный
Кристалл
Чернила Резистор
пьезоэлемент
Чернила
Рис. 11.10. Принцип действия струйного принтера с термической i б) пьезоэлектрической головками
Термическая головка - сложное устройство, содержащее кремниевый кристалл микроконтроллера с отверстиями, по которым чернила поступают на микрорезистор (нагревательный элемент), охватывающий направляющее сопло. При протекании тока по нагревательному элементу образуются газовые пузырьки, которые выталкивают капли чернил из сопла. Также термический принцип применяется в головках, содержащих специальные пигментные чернила, находящиеся на четырехслойной ленте. При нагревании красящее вещество плавится и переходит в жидкое состояние с образованием капель, выталкиваемых из сопла. В этом случае также употребляется микросхема контроллера, координирующая работу термической головки и обеспечивающая высокое разрешение 1200 х 600 точек на дюйм при черно-белой печати и 600 х 600 при цветной печати.
В пьезоэлектрических струйных принтерах в настоящее время используется метод формирования капель по запросу, при реализации которого отсутствует непрерывная струя чернил. В этом случае с помощью диафрагмы пьезоэлемента под действием электрического сигнала возбуждается ударная волна, которая выбрасывает каплю чернил из отверстия сопла. Такой принцип действия головок используется в струйных принтерах, например фирм Simens, Epson и др. В последних моделях струйных принтеров фирмы Epson употребляются многослойные миниатюрные пьезоэлементы печатающей головки, которые повышают скорость выброса капель чернил, точность попадания и уменьшение размера капель и требуют меньшего напряжения питания.
В цветных струйных принтерах используются либо отдельные картриджи для каждого цвета, либо комбинированные картриджи, содержащие четыре отдельные емкости для хранения чернил следующих основных цветов: черного, желтого, пурпурного и голубого. В обоих случаях различные цвета создаются путем смешивания основных цветов.
Обычно струйные принтеры являются программно совместимыми с матричными принтерами, то есть можно использовать один драйвер. В некоторых програм-
Матричные принтеры
мах, управляющих печатью струйных принтеров, используются специальные алгоритмы, улучшающие качество печати и координирующие цветовую палитру.
11.5.	Матричные принтеры
Принципы построения струйных и матричных принтеров имеют много общего, и, кроме того, они совместимы на регистровом программном уровне. Основное их отличие заключается в использовании различных печатающих головок. Поэтому рассматриваемые в этом разделе схемы полезны и для изучения схем струйных принтеров, следует иметь только в виду, что современный принтер содержит 2 или 3 больших чипа, в которых реализованы все аппаратурные элементы рассматриваемых схем.
Матричные принтеры являются знакосинтезирующими устройствами ударного и последовательного действия, содержащими печатающий механизм с головкой, использующей 9, 18, 24 или 48 игл. Принтеры с 48 иглами (высокой разрешающей способностью, 12 точек на мм) создают более четкие символы. В цветных матричных принтерах применяется многоцветовая лента, имеющая черную, красную, голубую и желтую полосы. При печати изменяется положение ленты, что позволяет получить соответствующий цвет символов на бумаге. Наиболее широкое распространение получили матричные принтеры фирмы Epson (особенно FX-85), которые поддерживаются многими прикладными программами и управляющие команды которых эмулируются даже без ударных принтеров. Матричные принтеры позволяют получить несколько копий одновременно и используют бумагу нестандартных размеров при низкой скорости, их скорость достигает 80-400 символов в секунду.
Рассмотрим знакосинтезирующее печатающее устройство (ПУ), которое является последовательным устройством ударного типа с матрицей знака 9x7. В ПУ применяется печатающий механизм с головкой, содержащей рубиновую направляющую с вертикально расположенными иглами. Расстояние между иглами - 0,3 мм. Иглы управляются электромагнитами и через красящую ленту наносят удары по бумаге, отмечая соответствующие точки знака. Определенная комбинация точек изображает мозаику знака (рис. 11.11). Общий вид структурной схемы ПУ изображен на рис. 11.12.
Рис. 11.11. Мозаика и описание символа Н
548
Печотоющие устройство
В ПУ используются следующие датчики:
•	начала строки:
•	отсутствия бумаги.
Пульт оператора содержит 4 кнопки:
•	ТЕСТ;
•	КР (работа в комплексе);
•	ПС (перевод строки);
•	ПФ (перевод формата).
Кроме того, на пульте оператора имеются индикаторы:
•	КР (работа в комплексе);
•	АВР (отсутствие бумаги);
•	ПИТ (наличие напряжения +5 В).
ПУ сопряжено с адаптером с помощью интерфейса периферийного оборудования, в качестве которого могут быть использованы параллельный интерфейс ИРПР-М (Centronics) и последовательный интерфейс RS-232 (стык С2). Выбор периферийного интерфейса выполняется с помощью специальных переключателей, находящихся на плате ПУ.
ПУ содержит буферную память, генератор знаков и программно управляется со стороны системного процессора через адаптер ПУ.
Мотричные принтеры	549
Принятые знаки запоминаются в буферной памяти, затем происходят включение привода и движение печатающей головки над бумагой.
Во время движения головки код символа поступает в генератор знака, выполненный на базе ПЗУ и хранящий матрицы знаков. Генератор знаков формирует сигналы управления электромагнитами головки. Привод бумаги включает в работу специальные управляющие символы ПС (перевод строки). ПФ (перевод формата) и т. д.
Работа ПУ определяется сигналами периферийного интерфейса, пульта операторов и датчиков. В зависимости от значений входных сигналов ПУ формирует сигналы, управляющие приводами транспортировки бумаги, красящей ленты и печатающей головки. Код символа, посылаемый по интерфейсу, поступает в буфер данных ОЗУ. ПУ включает привод печатающей головки, и начинается ее равномерное движение из крайнего левого положения в правое. При этом срабатывают датчики начала строки, сигнализируя о ее начале. Затем происходит печатание мозаики знаков в соответствии с содержимым генератора знаков ПЗУ. Иглы наносят удары через красящую ленту на бумаге, вычерчивая точечное изображение знака.
Блок БЦУ выполнен на базе МП, ОЗУ и ПЗУ. После включения питания выполняется программа начальной установки, заключающаяся в переводе в исходное состояние всех узлов, занесении рабочих параметров из ПЗУ в ОЗУ (заданы режимы работы отдельных узлов) и позиционировании печатающей головки (ПГ) к началу строки.
Наиболее часто используются следующие три параметра: номер модификации шрифта, интервал между строками и левое поле.
Затем МП выполняется программа, которая анализирует состояние буферной памяти (БП), схем управления шаговыми двигателями и ПГ. При наличии в БП (части ячеек ОЗУ) информации происходит вывод ее на печать. В режиме КР ПУ получает от ПЭВМ буквенно-цифровые символы, осуществляющие перевод строки, перевод формата, возврат каретки и т. д.
В связи с ограниченным набором управляющих символов используются, кроме того, управляющие последовательности (ESC-последовательности), образующие набор управляющих команд ПУ.
Управляющие последовательности позволяют программисту задавать:
•	плотность печати по горизонтали и вертикали:
•	величину левого и правого полей;
•	изменение режимов печати графической информации;
•	шрифт (набор символов);
•	способ печати (прямой и обратный ход);
•	скорость печати и т. д.
Рассмотрим работу и составные части ПУ. БЦУ координирует работу всех узлов ПУ и управляет обменом информации с ПЭВМ.
Структурная схема БЦУ приведена на рис. 1 1.13 и 11.14. Основным элементом является микропроцессор (CPU), который работает по управляющей программе, «зашитой» в ПЗУ (ROM) принтера. Кроме того, в ПЗУ содержатся тестовая программа и знакогенератор. ОЗУ (RAM) служит для буферизации данных (в качестве БП), поступающих из адаптера ПУ ПЭВМ, организации стека, хранения промежуточных результатов, загружаемых знакогенераторов и т. д. Системный контроллер и формирователь шины данных (F) обеспечивает буфериза-
550
Печатающие устройства
INT
RESET
Рис. 11.13. Структурная схема блока БЦУ
цию двунаправленной шины данных D0-D7 и формирование в соответствии с выходными сигналами микропроцессора сигналов управления IOW, MEMW, ЮЙ, MEMRhINTA.
Генератор фаз (GF) обеспечивает формирование синхронизирующих сигналов F1 и F2, необходимых для работы МП.
Дешифратор (DC) обеспечивает формирование сигналов выборки микросхем ПЗУ, ОЗУ и устройств ввода-вывода.
Регистр (RQ1) предназначен для временного хранения информации изображения одного столбца знака для печати его ПГ. Печать знака выполняется 8 или 9 иглами.
Таймер (Т1) предназначен для управления ПГ и шаговым двигателем перемещения каретки. Таймер (Т2) осуществляет синхронизацию последовательного порта (IOS) сигналами RxC и ТхС. Каждый таймер содержит счетчики, режимы работы которых программируются со стороны CPU.
Матричные принтеры
551
Рис. 11.14. Структурная схема БЦУ
552	Печатающие устройства
Программируемый контроллер прерываний (PIC) принимает запросы на прерывание INT0-INT9 от семи источников прерывания:
•	при аварии ПГ:
•	от датчика начала строки;
•	для управления ПГ;
•	по правой границе перемещения каретки;
•	от клавиш пульта управления;
•	от параллельного интерфейса;
•	от последовательного интерфейса.
PIC формирует сигнал запроса на прерывание INT, поступающий на вход CPU, а также выдает байты, содержащие адрес подпрограммы обработки соответствующего прерывания, по сигналу INTA.
Подключение ПУ к ПЭВМ осуществляется с помощью параллельного интерфейса Centronics (ИРПР-М) иди через последовательный интерфейс RS-232 (стык С2), реализованный на базе последовательного порта IOS программируемого универсального асинхронного передатчика. Параметры IOS (формат данных, число стоповых битов, тип паритета, наличие контроля, скорость обмена) определяются с помощью переключателей блока пульта управления.
Последовательный код принимаемого байта поступает на линии RxD в IOS, который формирует сигнал запроса прерывания INT6, поступающий в CPU ПУ. CPU, получив INT6, переходит к обработке подпрограммы последовательного интерфейса, в которой производится чтение из IOS байта данных. На выходе DTR формируется сигнал, сообщающий ПЭВМ о готовности ПУ принять информацию от ПЭВМ.
Интерфейс Centronics реализован на базе регистра (RG2) и формирователя сигналов интерфейса. Сигнал адаптера ПУ на линии STR осуществляет запись байта данных на шине DATA0-DATA7 в RG2, после чего формируется сигнал INT5, указывающий CPU, что RG2 полон.
Сигналы BUSY или АСК сообщают ПЭВМ о готовности ПУ принять данные. ПУ может быть занято при вводе данных, состоянии ошибки или заполненном буфере. После обработки байта данных ПЭВМ ПУ формирует сигнал АСК, означающий, что ПУ готово принять данные.
Блок пульта управления предназначен для формирования сигналов управления режимами работы ПУ и задания некоторых параметров печати и параметров обмена с ПЭВМ.
Блок управления механизмом печати осуществляет управление электромагнитами ПГ, двигателями привода каретки, привода бумаги, движения ленты.
11.6.	Адаптер принтера
Обычно принтеры подключают к параллельному порту (LPT) ПК. В тех случаях, когда принтер удален на большое расстояние от ПК, с целью уменьшения числа линий связи используется последовательный порт (СОМ). Некоторые принтеры содержат средства сопряжения с интерфейсом SCSI (интерфейсом малых вычислительных систем). Рассматриваемый адаптер струйного или матричного принтера предназначен для сопряжения его портов с системной шиной ISA и организации взаимной работы с принтером через периферийный параллельный интерфейс Centronics. Адаптер содержит три порта: 8-разрядный регистр дан
Адаптер принтера	553
ных (РД), 5-разрядный регистр управления (РУ) и шинный буфер (ШБЗ) ввода состояния принтера, адреса которых в шестнадцатеричной записи соответственно 378Н, 37АН и 379Н. Структурная схема адаптера приведена на рис. 11.15.
111Д D0-D7
Рис. 11.15. Структурная схема адаптера принтера
Для декодирования старшей части адреса А2-А9 используется дешифратор адреса (ДшА). формирующий на выходе сигнал Bbi6PRN. Дешифратор управляющих сигналов (ДшУС) может быть реализован с помощью микросхемы ИД4 и вырабатывает на своих выходах сигналы чтения данных (ЧтД) из РД, запись данных (ЗпД) в РД, запись кода управления (ЗпУ) в РУ, чтение кода управления (ЧтУ) из РУ и чтение состояния принтера (ЧтС). Состояние принтера передается на внутреннюю шину данных BD3-BD7. ДшУС принимает два младших разряда АО. А1 адреса, осуществляющих выбор желаемого порта, сигналы чтения (IOR) и записи (IOW).
Каждый выходной сигнал ДшУС является функцией (F) соответствующих четырех сигналов, например сигнал ЧтД = F(AO, Al, IOR, Bbi6PRN). 8-разрядный приемопередатчик (ПП) осуществляет передачу данных в зависимости от уровня сигнала на входе Т. Если Т = CS = О, то направление передачи от В к А (В -4 А), и наоборот, если Т = 1 и CS = О, то - от А к В (А -4 В). При CS = 1 ПП переходит в состояние «выключено» (Z). РД служит для приема кода символа из процессора П и передачи его в ПУ. Режимы чтения РД и РУ введены с целью контроля этих регистров. 5-разрядный РУ принимает информацию через ПП по сигналу ЗпУ. В табл. 11.1 приведено назначение разрядов Py(N), где (N = О...4).
554
Печатающие устройства
Таблица 11.1
РУ (0)	BD0	Строб записи (STR)
РУ(1)	BD1	Перевод бумаги на одну строку (AUT)
РУ(2)	BD2	Начальная установка (INIT)
РУ(3)	BD3	Запрос готовности (SELECT)
РУ(4)	BD4	Разрешение прерывания (INT)
Для ввода в процессор сигналов состояния принтера применяется режим считывания состояния, реализуемый выполнением команды IN. В этом режиме по сигналу ЧтС через шинный буфер (ШБЗ) и приемопередатчик ПП осуществляется передача в процессор информации о состоянии принтера: об ошибке (ERROR), о готовности к работе (SEL), о наличии бумаги (РЕ), о подтверждении приема (ASK), о занятости (BUSY). Сигналы состояния передаются соответственно по следующим разрядам внутренней шины данных: BD3, BD4,..., BD7.
Сигнал прерывания IRQ7 формируется на выходе элемента И, на входы которого поступают: сигнал состояния АСК из принтера и сигнал INT четвертого бита РУ.
Выходные сигналы РД и РУ и входные сигналы состояния принтера соответствуют сигналам интерфейса Centronics (стандарту). Последовательность передачи данных по этому интерфейсу приведена на рис. 11.16.
Очередной вывод кода символа из процессора выполняется по низкому уровню сигнала BUSY или с появлением сигнала АСК. Формирование сигнала прерывания IRQ7 указывает на то, что РД адаптера пуст и можно со стороны П передавать новый код символа.
Для печати какого-либо символа на принтере его необходимо поместить в РД адаптера путем выполнения процессором команды OUT. После этого в бит О РУ со стороны процессора заносится 1, которая осуществляет запись содержимого РД в буферный регистр принтера. Затем выполняется программный сброс бита О РУ. Сигналами готовности принтера принять очередной символ являются сигналы его состояния АСК или BUSY.
Программа вывода данных на печать
555
Функции рассмотренной схемы адаптера выполняет микросхема 82С11, выполненная по КМОП-технологии и обеспечивающая уровни сигналов ТТЛ-схем.
Интерфейс Centronics был специально разработан для сопряжения принтеров с ПК. Уровни входных и выходных сигналов интерфейса соответствуют уровням входных и выходных сигналов ТТЛ: 0-0,8 в 0-0,4 и 2-5,25 в 2,4-5,25. Подключение принтера к адаптеру ПК выполняется с помощью многопроводного кабеля длиной не более 3 м. Для подключения кабеля Centronics к процессору используется 25-контактный разъем, а для подключения к принтеру - 36-контактный разъем. В качестве передатчиков сигналов используют обычно мощные повторители сигналов с открытым коллектором, имеющие выходной ток Ювых = 40 мА, а в качестве приемников - помехоустойчивые триггеры Шмитта с учетом пороговых напряжений срабатывания и отпускания.
Рассмотрим назначение некоторых сигналов интерфейса Centronics. Сигнал Data Strobe (STR) сообщает принтеру, что данные установлены на шине Data (D0-D7). Линии шины Data используются для передачи битов данных от адаптера к принтеру. Сигнал Acknowledge (АСК) указывает низким активным уровнем (»10 мкс), что принтер готов к приему очередного символа. Сигнал BUSY высокого активного уровня устанавливается принтером, если он не может принять данные. В том случае, если закончена бумага в принтере, он сообщает процессору об этом сигналом Paper End (РЕ). Если принтер выбран и активен, то он устанавливает сигнал Select (SEL). С целью перевода в принтере бумаги на одну строку вперед процессор через адаптер (РУ) формирует сигнал Auto feed (AUT). В том случае, если в принтере произошла ошибка, устанавливается низкого уровня сигнал ERROR. Сигнал Init (INT), удерживаемый около 50-100 мкс, вызывает инициализацию принтера. Активный низкий уровень сигнала Seleect Input (SELECT) осуществляет выбор устройства.
11.7.	Программа вывода данных на печать
Формулировка задания
Изучить принцип работы струйного (матричного) печатающего устройства (ПУ). Написать программу на ассемблере, осуществляющую вывод данных на печать струйного (матричного) принтера с помощью портов адаптера (регистра данных, регистра управления и состояния). Программа выполняет опрос флага готовности ПУ (6-го или 7-го разряда порта состояния, адрес которого 379h) перед выводом очередного символа на печать, предварительно размещенного в регистре данных (378h) адаптера. Если ПУ готово принять символ (6-й разряд (АСК) порта состояния равен 0 или 7-й разряд (BUSY) порта состояния равен 1), то программа устанавливает разряд 0 (STR) регистра управления (37Ah), сигнал с выхода которого осуществляет запись символа в ПУ. После чего единичное значение разряда 0 регистра управления сбрасывается в исходное состояние. Данные, выводимые на печать, могут быть заданы в программе, вводятся в буфер с помощью клавиатуры с использованием соответствующего прерывания DOS или BIOS или размещены в виде текстового файла на диске.
Основные сведения
В общем случае в ПК предусматривается наличие трех параллельных портов (LPT1-LPT3). Базовый (начальный) адрес LPT1 хранится в области данных BIOS
556
Печатающие устройства
в ячейке 0040-0008, а для LPT2 - в ячейке 0040-000А и т. д. Наиболее употребительным является базовый адрес принтера, равный 378h, который соответствует регистру данных адаптера принтера. Базовый адрес - это младший адрес из группы адресов (378h-37Ah). Регистру состояния адаптера принтера присвоен адрес 379h, а регистру управления - адрес 37Ah. Форматы регистров состояния и управления имеют следующий вид.
Формат регистра состояния принтера:
О = при печати возникли ошибки
О = принтер в автономном режиме 1 = сигнал "конец бумаги"
0 = принтер готов к печати следующего символа
О = принтер занят
Формат регистра управления принтером:
7 6 5 4 3 2 1 0
I = бит запуска печати (см. ниже)
I:	I = после возврата каретки
выполняется перевод строки
2:	I = инициализировать принтер
3:	I = разрешить вывод на печать (должен быть всегда установлен)
4:	I = разрешить прерывания
от принтера
Рассмотрим протокол обмена данными между адаптером и принтером. Байт данных помещается в регистр данных (порт 378h) адаптера, с выходов которого он поступает в принтер. Затем устанавливается бит 0 (STR) регистра управления (порт 37Ah) и тут же сбрасывается. Сигналом STR выполняются запись байта данных во входной регистр принтера и формирование сигнала прерывания, указывающего микропроцессору принтера, что его входной регистр полон.
После этого программа сканирует бит 7 или бит 6 регистра состояния (порта 379h) с целью определить момент готовности принтера к приему следующего байта данных. Принтер может не печатать сразу байт данных, а хранит его в своем буфере до тех пор. пока не будет образована строка данных для печати. Кроме того, вывод данных на печать можно организовать и с помощью таймаута (определенного интервала времени), учитывающего задержку в готовности принтера. Более эффективно процессорное время используется в режиме
Программа вывода данных на печать
557
прерывания, которое выполняется в том случае, если принтер готов принять очередной символ. Тогда адаптер при наличии сигнала разрешения прерывания (бита D4 = 1 порта 37Ah) формирует сигнал прерывания IRQ7, поступающий в контроллер прерывания.
Несмотря на простоту управления, принтер представляет собой достаточно сложное устройство, имеющее свой микропроцессор, ПЗУ и ОЗУ.
Микропроцессор используется для обработки управляющих последовательностей и управления печатью. ПЗУ содержит описание рисунков символов в зависимости от их кода и выбранной таблицы и программы на языке используемого микропроцессора. ОЗУ применяется для временного хранения введенных данных и спроектированных пользователем символов. Ряд принтеров, помимо интерфейса Centronics, могут подключаться и к последовательному интерфейсу.
Принтер обрабатывает ряд спецсимволов (таких как звонок, забой, горизонтальная и вертикальная табуляции), а также имеет достаточно сложную систему команд для изменения режимов работы и управления печатью.
Обычно команды начинаются с символа ESC (шестнадцатеричный код 1 Bh) и имеют длину от двух байт и более (существуют командные последовательности, включающие по нескольку килобайт информации, например команды загрузки спроектированных пользователем шрифтов). Спецсимволы и байты команд передаются принтеру так же, как и обычные символы, предназначенные для печати, описанным выше способом.
Подобный способ управления удобен для программного изменения режимов работы устройства. Учитывая, что выпуском принтеров для ПК занимается достаточно большое число компаний и возможности принтеров постоянно совершенствуются, нет смысла приводить полностью какую-либо систему команд, так как, во-первых, она в разных марках и моделях принтеров различна и, во-вторых, достаточно полно описывается в документации на каждый конкретный принтер.
Существуют два основных стандарта на систему команд и таблицу используемых символов (стандарты IBM и EPSON), которых в основном придерживаются фирмы-изготовители, оставляя за собой право вносить в них изменения и дополнения. Единого стандарта как на систему команд, так и на расположение и рисунки символов второй половины таблицы ASCII (коды 129-255) нет. Наиболее часто используемые команды:
•	установка вида шрифта и режима печати:
•	черновой текстовый (draft), нормальной ширины (pica), узкий (condensed) или средней ширины (elita),
•	качественный шрифт (NLQ, Proportional, Orator, Script и т. д.):
•	выбор таблицы символов из ПЗУ (обычно имеется несколько таблиц, отличающихся расположением управляющих кодов, наличием и расположением псевдографических символов или курсива):
•	загрузка в ОЗУ принтера спроектированных пользователем шрифтов и работа с ОЗУ принтера (именно в этой группе команд имеются наибольшие различия между разными моделями):
•	управление принтером в режиме точечной графики;
•	установка служебных параметров (размеры отступов, страницы, шаг табуляции, расстояние между строками) и изменение характеристик (сброс, включение/отключение датчика конца бумаги, печать в одну или в две стороны ит. п.).
558
Печатающие устройства
Ряд характеристик и режимов работы может выбираться как программно, так и аппаратно с использованием кнопок и клавиш на лицевой панели и DIP-переключателей. Существуют характеристики, изменить которые можно только аппаратно (например, возможность загрузки шрифтов или размер используемого ОЗУ).
В последних моделях ПК используется улучшенный параллельный двунаправленный 8-разрядный порт (ЕРР), который реализует рутинные операции, а процессор выполняет только передачу данных в буферную память ЕРР. Поэтому порт ЕРР выполняет передачу быстрее (режим Fast Centronics), чем LPT-порт. Порт ЕРР совместим с портом LPT и требует предварительной программной инициализации.
Другим стандартом параллельного порта является порт с расширенными возможностями (ЕСР), в котором сохранен режим East Centronics и реализованы новые функции, в частности сжатие данных.
Пример выполнения варианта задания
Вариант задания: выводимый на печать текст хранится в программе, для опроса готовности принтера используются бит 7 порта состояния и команда проверки TEST [7].
В приведенной ниже программе сегмент стека с именем и типом STACK используется для временного хранения содержимого регистров и обеспечения нормального возврата в систему по завершении программы. Под сегмент стека резервируются 48 слов (96 байт). Адрес первой выполняемой команды задается в операторе END в конце программы. Операторы вталкивания в стек значения регистра DS и нулевого содержимого регистра АХ совместно с оператором RET (в конце основной программы) предназначены для возврата в систему.
В начале текста программы порту данных (РД), состояния и управления (РУ) адаптера ПУ присвоены символические имена Data_Port, State_Port и Control_Port соответственно.
Выводимая строка символов имеет начальный адрес OUTS. В конце текстовой строки, заключенной в апострофы, следуют символы перевода строки, возврата каретки и код О, указывающий на окончание печати.
Основная программа имеет имя TEST. Первый выполняемый оператор памяти обозначен меткой START. Индексный регистр SI устанавливается на начало печатаемой строки. В регистр AL загружается байт из сегмента, адресуемого регистром CS (сегмент PROGS) по адресу OUTS + SI (начальный адрес строки + смещение). Затем производится сравнение этого байта с нулем (знаком завершения строки печатаемого текста). В случае неравенства вызывается подпрограмма печати символа, наращивается на единицу содержимое SI и выполняется переход на метку COIL (вызов очередного байта). Если очередной байт равен нулю, то осуществляется выход в систему командой RET (метка FINITA).
Печать одного символа реализована в виде отдельной процедуры с именем PRINT, которая выполняет печать символа, содержащегося в регистре AL. для ввода-вывода содержимого портов используется регистр DX. Прежде всего в порт данных (РД) выводится код печатаемого символа. Затем вводится содержимое порта состояния и анализируется флаг готовности (АСК).
Если флаг готовности сброшен, то осуществляется циклический переход на метку WAIT1 до тех пор, пока флаг готовности не станет равным 1. После этого
Программа вывода данных на печать	559
в порт управления (РУ) последовательно выводятся два управляющих байта, в которых младший (нулевой) разряд вначале равен 1 (первый байт), а затем равен О (второй байт), то есть осуществляется запись содержимого РД адаптера в регистр контроллера ПУ. Возврат в основную программу производится после того, как символ напечатан.
При использовании текстового редактора исходная программа заносится в файл под именем L_PRN.ASM. Трансляция и компоновка осуществляется инструкциями:
masm L_PRN L_PRN
link L_PRN L_PRN
Текст программы
.model tiny	
Data_Port equ 378h	; адрес порта данных
State_Port equ 379h	; адрес порта состояний
Control_Port equ 37Ah progr segment assume cszprogr,dszprogr org lOOh Start: Call testp int 20h	; адрес порта управления
outsl db " 	 This is a testp proc near push ds xor ax, ax push ax mov si, 0	printer Test 	", 10,13,0
coil: mov al, cs:outsl[si]	; чтение в AL выводимого байта
cmp al, 0	; конец сообщения?
jz finita	; переход на конец программы
call print	; подпрограмма печати байта
inc si jmp coil finita: pop ax pop dx ret testp endp print proc near	; следующий символ
mov dx, Data_Port	; засылаем в DX адрес порта данных
out dx, al	; выводим в порт печатаемый символ
mov dx, State_Port waitl: in al, dx test al,80h jz waitl mov dx, Control_Port mov al, ODh	; DX — адрес порта состояний
out dx, al mov al, OCh	; установить strobe =1
out dx, al ret print endp progr ends end start	; strobe = 0
560
Печатающие устройства
11.8.	Варианты заданий
Варианты заданий получаются из функционального графа (рис. 11.17), содержащего три уровня: алгоритма, программы и данных, каждый из которых имеет несколько вершин (1-4).
Уровень алгоритма (а)
Уровень программы (п)
Уровень данных
(д)
Рис. 11.17. Функциональный граф вариантов заданий
Маршрут в графе, включающий по одной вершине из каждого уровня, образует вариант задания, например 1а-2п-3д. Вершина 4 в каждом уровне введена для проявления творческой самостоятельности студентов.
Уровень алгоритма определяет опрос одного или нескольких битов порта состояния, например 1а - опрос бита 7 или бита 6, 2а - опрос бита 7 и 5 (в случае отсутствия бумаги вывести сообщение на экран), За - опрос бита 7 и 3 и т. д.
Уровень программы показывает командную реализацию опроса битов состояния, например Ш - опрос с использованием команды проверки (TEST), 2П -команды AND, ЗП - команды сравнения (СМР) и т. д.
Уровень данных указывает на источник печатаемых символов, например:
1	д. - сообщение хранится в программе;
2	д. - вводится с клавиатуры (с отображением на экране или без эхопечати);
3	д. - сообщение в виде текстового файла хранится на жестком диске.
Приведенный текст программы 1 соответствует варианту 1а-1п-1д. Без учета вершины 4 функциональный граф дает Т7 вариантов заданий.
Контрольные вопросы к теме «Лазерный принтер»
1.	Назовите материал, используемый для покрытия поверхности фотобарабана:
1)	оксид железа; 2) оксид цинка; 3) кобальт; 4) селен.
2.	В системе «Черным по белому» лазер в соответствии со строкой изображения:
1)	заряжает барабан;
2)	разряжает барабан;
Контрольные вопросы к теме «Лазерный принтер»	561
3)	закрепляет тонер;
4)	ионизирует воздух.
3.	В системе «Белым по черному» тонкий световой луч лазера, попадая на барабан в точке прикосновения:
1)	увеличивает заряд;
2)	уменьшает заряд;
3)	оставляет заряд без изменения;
4)	закрепляет тонер.
4.	Укажите интерфейс, используемый лазерным принтером:
1)	IDE; 2) PCI; 3) AGP; 4) USB.
5.	Укажите назначение коротрона принтера:
1)	заряд фотобарабана;
2)	заряд тонера;
3)	заряд бумаги;
4)	заряд девелопера.
6.	Перечислите последовательность этапов лазерной технологии «белым по черному»:
1)	заряд;	4) перенос;	6) закрепление;
2)	экспонирование;	5) отделение;	7) очистка.
3)	проявление;
7.	Назовите разрешение, являющееся типичным для лазерного принтера:
1)	320x200;	2) 1024x768:	3) 1280x 1024:	4) 600x600.
8.	Определите принтер, использующий электрографический процесс:
1)	струйный; 3) лазерный;
2)	матричный;	4) лепестковый.
9.	Назовите физический принцип, применяемый в лазерных принтерах:
1)	термический;	3)	акустический;
2)	электромагнитный;	4)	электростатический.
10.	Выберите типы шрифтов (знакогенераторов):
1)	загружаемые;	4)	картриджные;
2)	текстовые;	5) закрытые.
3)	встроенные;
11.	Способы регистрации (виды печати) в принтерах безударного действия:
1)	лазерный; 2) светодиодный.
12.	Укажите режим стандарта IEEE 1284, применяемый для лазерного принтера:
1)	SPP;	2) ЕСР;	3) ЕРР;	4) Nibble Made.
13.	Определите язык, используемый в лазерном принтере:
1)	PCL;	2) HTML;	3) C++;	4) Java.
562	Печатающие устройства
14.	Назовите параметр, на который не влияет привод (печатающий механизм) лазерного принтера:
1)	размер:	3) разрешение;
2)	скорость печати;	4) емкость памяти.
15.	Назовите выражение, определяющее обычно скорость печати:
1)	количество строк в секунду;
2)	число бит в секунду;
3)	количество страниц в минуту;
4)	число выводимых байтов в минуту.
16.	Укажите цель применения девелопера:
1)	нанесение тонера;	3) заряд бумаги;
2)	очистка;	4) нагрев бумаги.
17.	Укажите способ измерения ресурса фотобарабана:
1)	временем работы:
2)	числом включений/включений принтера;
3)	количеством страниц;
4)	количеством использованных картриджей.
18.	Выберете компоненты, входящие в состав оборудования лазерного прин-
тера:
1)	каретка;
2)	лазерный блок;
3)	ОЗУ;
4)	ПЗУ;
5)	привод;
6)	линейка ПЗС;
7)	АЦП;
8)	центральный процессор;
9)	контроллер управления;
10)	ламповый источник света;
11)	высоковольтный блок.
Литература
1.	Авдеев В. А., Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства. - М.: Радио и связь, 2001 . - 480с.: ил.
2.	Платонов Ю. М., Гапеенков А. А. Ремонт зарубежных принтеров. Серия «Ремонт», вып. 31. - М.: Солон, 2000. -272 с.: ил.
3.	Колесниченко О. В., Шишигин И. В. Аппаратные средства PC. 4-е изд., пере-раб. и доп. - СПб.: БХВ-Петербург. 2000. - 1024 с.: ил.
4.	Минаси Марк. Модернизация и обслуживание ПК: Полное руководство / пер. с англ. - Киев: Век+, М.: ЭНТРОП, 1999. - 1040 с.: ил.
5.	Гук Михаил. Аппаратные средства IBM PC: энциклопедия. - СПб.: Питер Ком, 1999. - 816 с.: ил.
6.	Колесниченко О., Шарыгин М., Шишигин И. Лазерные принтеры. - СПб.: BHV-Санкт-Петербург, 1997. -272 с.: ил.
7.	Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT / пер. с англ. М.: Финансы и статистика, 1992. - 544 с.: ил.
Устройства ввода и регистрации информации
12.1. Дигитайзеры
-j s графической информации (ГИ) относятся: принципиальные электриче-fy ские схемы, архитектурные чертежи, графики и т. д. Для ввода ГИ в ком-I V* пьютер необходимо выполнить поиск элементов изображения с помощью различного рода датчиков, а затем осуществить преобразование полученных координат в двоичные сигналы. Устройства ввода графической информации (УВГИ) делятся на полуавтоматические и автоматические. В полуавтоматических УВГИ поиск и выделение элементов изображения осуществляются оператором. а преобразование найденных координат в цифровые сигналы - автоматически. В автоматических УВГИ поиск и выделение элементов изображения выполняются либо путем сканирования ГИ, либо за счет отслеживания линии (границы областей) ГИ. В полуавтоматических УВГИ используют следующие физические методы: электромеханический, электростатический, электромагнитный, фотоэлектрический и др. Кроме того, полуавтоматические УВГИ подразделяются на устройства с жестко закрепленным указателем координат и с подвижным. В полуавтоматических УВГИ с электромеханическим методом действия используются две подвижные каретки, одна из которых передвигается по оси X, а другая - по оси У. На каждой каретке установлен датчик перемещения по соответствующей оси, показания которого отмечаются в счетчике. Содержимое счетчиков X и У определяет координаты визира на планшете. Визир содержит оптику для наводки на элемент изображения или миниатюрную телевизионную передающую камеру, выполняющую увеличение кодируемого участка изображения. В других полуавтоматических УВГИ указатель координат свободно перемещается по дисплейному планшету. Такие УВГИ называются дигитайзерами.
Дигитайзеры передают точные координаты пера на поверхности планшета. Эти устройства используются для кодирования и создания графических изображений, поэтому находят применение в системах автоматического проектирования. Кроме того, дигитайзеры эмулируют работу мыши. Дигитайзер содержит планшет, подключенный к последовательному порту ПК, и наводчик или перо, соединенное с планшетом. Чаще всего планшет имеет автономный блок
564
Устройства ввода и регистрации информации
питания. Планшет представляет собой прямоугольную систему координат для позиционирования наводчика (пера), определяющего абсолютное положение курсора на экране. В этом случае не надо смотреть, куда перемещается курсор при движении наводчика. Наводчик имеет 4 кнопки для выполнения определенных команд: копировать, сохранить и т. д. Некоторые наводчики содержат до 16 кнопок. Для установки наводчика на элемент изображения в нем содержится визир с перекрестием. Перо имеет корпус с кнопками и напоминает авторучку. На конце пера находится миниатюрный переключатель выбора, который при нажатии в некоторых случаях соответствует клавише Enter. Драйвер дигитайзера не входит в состав DOS и приобретается отдельно.
Основные характеристики дигитайзера: точность выбора элемента изображения, разрешающая способность (минимальное расстояние между элементами) и т. д.
Позиция пера (наводчика) определяется с помощью электромагнитного, резистивного и акустического планшетов. Дигитайзер с электромагнитным декодированием показан на рис. 12.1.
Рис. 12.1. Дигитайзер с электромагнитным декодированием
1 - планшет, 2 - перо (наводчик), 3 - катушка, 4 - проволочная сетка, 5 - кабель ПК, 6 • кабель планшета
Электромагнитный планшет содержит координатную сетку из ортогональных изолированных проводников с одинаковыми промежутками. Если перо является передатчиком, а планшет - приемником, то перо содержит в своем корпусе катушку индуктивности. При соприкосновении наконечника пера с поверхностью планшета в катушке возникает электромагнитный импульс, который передается сетке планшета. Электронные схемы планшета сканируют горизонтальные и вертикальные проводники сетки и обнаруживают приблизительно
Грофопостроители	565
точку появления сигнала (проводники X и У). Затем электронные схемы уточняют позицию наконечника пера с помощью временных задержек между переданным и принятыми сигналами. Самая большая временная задержка находится посередине между проводниками сетки. В других типах дигитайзеров передатчиком является сетка, по которой протекает переменный электрический ток, создающий электромагнитное поле, а приемником является перо с катушкой индуктивности. Этот тип дигитайзера более подвержен помехам.
В акустических дигитайзерах местоположение наконечника пера вычисляется по звуку (щелчку), издаваемому наконечником при соприкосновении с поверхностью планшета. Наконечник пера содержит искровой разрядник, создающий звуковую волну. В этом случае определение координат выбранной точки производится путем измерения времени распространения акустической волны до приемников, расположенных по краям планшета.
При подключении дигитайзера необходимо установить в соответствующей прикладной программе: номер последовательного порта (СОМ), тип модели дигитайзера, режим (относительные или абсолютные координаты), способ обмена (режим прерывания или опрос флага готовности) и вид указателя - наводчик или перо.
Автоматические УВГИ предназначены для ввода в ПК сложной ГИ: топографических карт, аэрофотосъемок и т. д. В следящих УВГИ применяется оптоэлектронный узел, предназначенный для слежения за линией изображения и управления движением по ней. Сканирующие УВГИ конструктивно выполняют в виде планшетов или барабанов и используют в них сканирующие устройства растрового типа (электромеханические или ЭЛТ).
12.2. Графопостроители
Способы регистрации информации делят на механические и немеханические. Механические способы подразделяются на способы, связанные с нанесением красящего вещества на носитель, и способы, в которых происходит снятие слоя вещества с носителя. Немеханические способы являются более быстродействующими, чем механические, и требуют более сложного и дорогого оборудования для реализации. В немеханических способах можно выделить способы, в которых выполняется нанесение красящего вещества на поверхность носителя, и способы, изменяющие состояние вещества носителя. Немеханические способы основаны на физико-химических явлениях, возникающих в специальных носителях информации под действием светового потока, электромагнитного поля и т. д. Нанесение красящего вещества на носитель выполняется с помощью электрического или магнитного поля (электростатического или феррографи-ческого способа). Наиболее быстродействующими являются электрохимический, фотографический, электротермический, электроискровой способы, связанные с изменением состояния вещества носителя.
Плоттеры (графопостроители) - устройства вывода информации из ПК, выполняющие преобразование и запись графических данных на соответствующий носитель. В качестве носителей обычно используются бумага (писчая, чертежная, картографическая), картон, пленки, кальки и др. Плоттеры применяются в системах автоматического проектирования с соответствующими графическими программами (CAD) и языками взаимодействия системного про
566
Устройства ввода и регистрации информации
цессора с плоттерами, содержащими инструкции по перемещению пера из одной точки в другую, поднятию и опусканию пера ит. д.
Плоттеры используют несколько форматов бумаги А0-А4. Чем больше размер бумаги (форматы А0-А1), тем дороже плоттер. Поэтому различают крупноформатные (А0-А1), среднеформатные (А1-А2) и малоформатные (АЗ-А4) плоттеры.
По конструкции электромеханические плоттеры подразделяются на планшетные (рис. 12.2а), барабанные (рис. 12.26) и роликовые (рис. 12.2в). Планшетные плоттеры характеризуются высокой точностью и скоростью работы и практичны для малых форматов бумаги.
Рис. 12.2. Электромеханические плоттеры:
а - планшетные, б - барабанные; в - роликовые 1 - направляющие, 2 - пишущий узел (каретка); 3 - перья, 4 - бумага; 5 - барабан; 6 - прижимной ролик;
7 - подающий ролик; 8 - вакуум; 9 - вакуумные отверстия (присоски)
В планшетных плоттерах бумага не движется, а перемещается только каретка, а в барабанных подвижными являются каретка и бумага. В барабанных плоттерах каретка с пером перемещается по ширине движущейся бумаги по барабану. В случае использования больших форматов бумаги наиболее употребительным является барабанный плоттер, но его точность может быть меньше, чем у планшетного, в связи с движением бумаги.
В роликовых плоттерах для обеспечения движения бумаги вместо барабана применяются фрикционные и прижимные ролики с вакуумной камерой, содер
Грофопостроители
567
жащей отверстия-присоски. Кроме того, в зависимости от принципа образования ГИ выделяют векторные и растровые плоттеры. В векторных перьевых плоттерах ГИ формируется как совокупность отрезков прямых линий, а в растровых - путем использования построчного или постраничного вывода элементов изображения на носитель информации. К растровым плоттерам относятся плоттеры со струйным, электростатическим или электрохимическим способом регистрации.
В ПК обычно используются электромеханические перьевые малоформатные плоттеры векторного типа, содержащие устройство управления, планшет, пишущий узел с фломастерами или шариковыми (графитными) стержнями, механизм пишущих элементов для представления линий различной толщины, пульт управления, привод перемещения пишущего узла с помощью серво- или шаговых двигателей и последовательный интерфейс типа RS-232 (RS-488) или параллельный мультиплексированный интерфейс SCSI и др., необходимые для подключения к последовательному (СОМ) или параллельному порту ПК.
Основными компонентами устройства управления являются: микропроцессор (микроЭВМ), ПЗУ и ОЗУ. Микропроцессор имеет собственное программное обеспечение и координирует работу всех блоков плоттера. В ПЗУ хранятся программы формирования различных графических изображений: кривых, окружностей различных диаметров, диаграмм, гистограмм и т. д. ОЗУ предназначено для хранения команд и данных микропроцессора при их обработке и управляющей информации, поступающей из ПК. Для работы плоттера в составе ПК разработаны специальные прикладные программы, например CAD (автоматическое проектирование), графические программы, планировщики проектов и др., которые используются в программах пользователя. Каждая прикладная графическая программа содержит информацию о предварительной конфигурации плоттера, в которую входят требования к подключению, например к последовательному порту (параметры связи), размер бумаги, нумерация перьев. В качестве параметров последовательной связи рассматриваются: скорость передачи данных, количество битов данных, число стоповых битов (или символов синхронизации) и тип контроля данных.
Различными фирмами выпускаются следующие типы плоттеров: одноперьевые или многоперьевые, электростатические, термографические, лазерные и др.
Недостатком одноперьевых плоттеров является то, что для выполнения цветных графических изображений обязательно приостанавливается работа плоттера и выполняется смена пера с другим цветом.
В многоперьевых плоттерах перья размещаются по кругу, образуя карусель, либо по горизонтали. Смена перьев производится по командам процессора ПК. Невысокая скорость перьевых плоттеров связана с их механическими приводами.
Более быстродействующими являются электростатические плоттеры, которые создают чертеж посредством точек, используя известный растровый метод построения изображения как на экране монитора. В таких плоттерах для построения растрового изображения используется процессор с соответствующим программным обеспечением. В электростатических плоттерах применяется специально обработанная бумага, содержащая слой диэлектрика и проводящий слой, или чертежная пленка. Пишущий узел заряжает элементы (точки) носителя (рулонную бумагу) и создает скрытое изображение. Затем выполняется этап проявления изображения с помощью жидкого тонера, отрицательно заряженные частицы которого притягиваются к элементам изображения, имею
568
Устройство вводе и регистроции информоции
щим положительный знак заряда. Разрешающая способность электростатического плоттера - 400 точек на дюйм (Г* = 2,54 см).
Аналогично электростатическим плоттерам функционируют термические и лазерные плоттеры, которые также используют точечный растровый способ созданий изображений.
Термические плоттеры требуют применения специальной бумаги, и графическое изображение получается путем температурного воздействия на элемент носителя.
К основным техническим характеристикам плоттера относятся:
•	тип плоттера (планшетный, барабанный, роликовый);
•	количество пишущих элементов (4, 6, 8, 10);
•	максимальный размер рабочего поля, в мм (210 х 970, 297 х 420, 432 х 594 ИТ. д.);
•	точность позиционирования, в мм (±0,1, ±0,2, ±0,3, ...);
•	емкость буферной памяти, в Кбайтах (например, 1,2, 18, 32...);
•	скорость черчения, в мм/с (например, 150, 250, 400, 500);
•	габаритные размеры, в мм (96 х 381 х 198, 127 х 368 и т. д.);
•	масса плоттера, в кг (5-20);
•	потребляемая мощность (350 Вт).
12.3.	Сканер. Основные определения
Сканер (Scanner) - оптико-механическое устройство, предназначенное для преобразования оптического изображения рисунка.
Сканирование (Scan) - процесс горизонтальной и вертикальной разверток изображения с целью получения растровой матрицы.
Растр (Raster) - представление изображения в виде битового массива, как точечной матрицы.
Уровни серого цвета (Gray level) - оттенки серого цвета, которым соответствуют определенные коды, позволяющие изменять диапазон яркости.
Порог чувствительности (Threshold) - величина, с которой сравнивается количество отраженного света. Если эта величина меньше, чем количество отраженного света, то это соответствует белому цвету или оттенку (градации) серого, и наоборот - черному цвету.
Оцифровка изображения (Digitize graphics) - преобразование аналоговой информации в числовую.
Аналого-цифровой преобразователь (ADC - Analogoe-to-digital converter) -устройство, формирующее и-разрядные цифровые коды в заданные отсчеты времени в соответствии с непрерывно изменяющимся входным аналоговым сигналом. Чем больше отсчетов времени и чем больше и, тем точнее представление аналогового сигнала.
Компаратор (Comparator) - схема, сравнивающая амплитуды двух сигналов, один из которых- обычно пороговый (опорный), и формирующая выходные сигналы, определяющие, больше, равно или меньше значение одного сигнала относительно другого.
ПЗС - прибор с зарядовой связью (CCD - Charge-coupled device) - специализированное оптическое запоминающее устройство, хранящее заряды, величина которых пропорциональна падающему на них свету. Преобразователь оптического изображения в электрический сигнал.
Сканер. Основные определения
569
ФЭУ - фотоэлектронный умножитель (РМТ - Photo multiplier tube) - прибор, регистрирующий фотоны светового потока и использующий принцип умножения (усиления) фототока. ФЭУ относятся к классу фотоэмиссионных устройств и являются очень чувствительными фотодатчиками.
Интерполяция (Interpolation) - метод увеличения разрешения, заключающийся в нахождении промежуточных значений координат точек.
Светодиод (LED - Light-emitting diode) - полупроводниковый диод, излучающий свет при протекании через него тока.
Фотодиод (Photodiode) - датчик, формирующий выходной фототок (электронно-дырочные пары) под действием света.
КДИ - контактный датчик изображения (CIS - Contact Image Sensor) - с помощью чувствительных элементов, каждый из которых распознает свою точку и управляет светодиодом. Структура CIS реализована на базе КМОП, отличается от ПЗС (МОП) меньшим потреблением тока и отсутствием линз и зеркал.
RGB - способ формирования цветов путем смешивания долей трех основных цветов: красного(И - red), зеленого (G - green) и синего (В - blue), применяемый в большинстве типов сканеров и мониторов.
CMYK - прием образования любого цвета с помощью комбинаций четырех цветовых составляющих: голубой (С - cyan), пурпурной (М - magenta), желтой (Y-yellow) и черной (К-black).
Палитра (Pallete) - диапазон цветов или таблица кодов соответствующих цветов. Например, 16 цветов можно закодировать четырьмя битами (0000 - черный, 0001 - синий, ..., 1111 - ярко-белый).
Цветовая гамма (Colour gamma) - множество цветов, образованных путем смешивания основных цветов.
Разрешение (Resolution) - количество элементов (точек) при визуальном отражении графической информации, приходящихся на единицу длины. Для сканеров и принтеров разрешение измеряется числом точек на дюйм (dpi - dots per inch). Сканер имеет разрешение 600, 1200 dpi и больше. Для экрана сканирование выполняется с разрешением 72 dpi. для струйного принтера - 150-200 dpi. для лазерного принтера - 300 dpi. Увеличение разрешения приводит к увеличению размера файла.
Полутон (Half-tone) - оттенки серого цвета, соответствующие разной плотности темных точек изображения.
Цветовое разрешение (Colour resolution) - параметр, определяющий максимальное количество различных цветов одновременно воспроизводимых на экране монитора. Этот параметр иногда называется глубиной цвета. Минимальное требование Windows - 256 цветов. Это означает, что для кодирования цвета пиксела выделяется 8 бит.
Пиксел (Picture cell) - элемент (точка) изображения, цвет и яркость которого программируются.
Спектр (Spectre) - совокупность цветовых полос (радужное представление цветов). образующихся при прохождении светового луча через преломляющую среду.
Светофильтр (Light filter) - устройство, использующее различные эффекты (селективное преломление, отражение, поглощение и т. д.) для выбора нужных волн (изменение спектра).
Видимый свет (Visible light) - электромагнитные колебания с диапазоном волн от 400 до 750 нм (например, фиолетовый свет - 400 нм, зеленый - 500 нм, оранжевый - 600 нм).
570	Устройства ввода и регистрации информации
Фототранзистор (Phototransistor) - устройство обнаружения фотонов света, обладающий большим коэффициентом усиления фототока (тока базы транзистора).
Планшетный сканер (Flatted) - настольный сканер, в котором относительно неподвижного документа перемещается сканирующая головка (каретка), содержащая источник света, оптическую систему разной сложности и фотодатчики, преобразующие отраженный свет от растровой строки документа в электронные заряды, пропорциональные интенсивности света.
Листовой (роликовый) сканер (Sheetfed) - настольный сканер, имеющий роликовый механизм подачи сканируемых документов для чтения их с помощью закрепленных фотодатчиков и источника света.
Барабанный сканер (Drum) - сканер, содержащий вращающийся с высокой скоростью барабан, на котором закрепляется документ. Считывание изображения документа выполняется фотоприемником, в качестве которого чаще используются ФЭУ. Для прозрачного документа источник света размещается внутри барабана, а для отражающего - снаружи, вблизи с приемником.
Объектив (Object-lens) - часть оптического устройства, содержащая одну или несколько линз и обеспечивающая большое увеличение. В сканерах используются фотографические объективы с коротким фокусным расстоянием.
Полутонирование (Halftoning) - режим имитации непрерывного тона во время печати и вывода данных изображения на экран. Режим полутонирования используется в том случае, если на 1 пиксел - 1 или 2 бита данных.
Муар (Moire) - паразитный узор, связанный с неправильной установкой параметров растра при выводе отсканированного цифрового изображения. Муар убирается опцией Descreen или Screen frequency.
Линиатура растра (Liniature raster) - параметр растра, определяющий частоту (плотность) линий растра. Измеряется числом линий, приходящихся на 1 дюйм (Lpi - lines per inch). Выбирается с учетом разрешающей способности устройства вывода.
Цветовая модель (type) - функция программы сканирования, с помощью которой выбираются следующие модели: черный и белый (lineart), градации серого (gray scale), палитра (Colors: R,G,B) и т. д.
Автоматическая подстройка контраста и коррекция цвета (Auto Contrast & Color Correction) - команда утилиты сканера Microtex ScanMaker.
Фильтр (Filter) - функция программы сканирования для размытия (фильтр Blur) или повышения контрастности (фильтр Unsharp Mask - нерезкая маска).
Стандарт ISIS (Image and Scanner Interface Specification) - описывает взаимодействие программ обработки изображений и сканеров, поддерживаемый многими фирмами.
Стандарт TWAIN (аббревиатура TWAIN ничего не обозначает) - аппаратный драйвер сканеров, который используется программами обработки изображений, распознавания текста и т. д.
12.4.	Структурная схема сканера
На рис. 12.3 показана структурная схема сканера.
Структурная схема содержит два микроконтроллера МК1 и МК2, организация совместной работы которых осуществляется с помощью шин адреса (ША), данных (ШД) и управления (ШУ).
Структурная схема сканера
571
Документ
двигателем
Рис. 12.3.Структурная схема сканера
Микроконтроллер МК1 предназначен для управления преобразованием оптического изображения в цифровую форму. МК1 выполняет следующие функции:
•	управление работами ПЗС и АЦП (прибора с зарядовой связью и аналого-цифрового преобразователя);
•	передачи данных через блок USB в компьютер;
•	обработки сигналов изображения.
В ОЗУ МК1 хранится отсканированное изображение документа.
Микроконтроллер МК1 выполняет последовательность операций над данными изображения, передаваемых с выхода АЦП (8 бит на пиксел) и поступающих в МК1.
Перед тем как передать данные изображения в компьютер, МК1 осуществляет следующие действия:
1)	оттеночную коррекцию (Shading Correction);
2)	гамма-коррекцию (Gamma Correction);
3)	цветовую коррекцию (Color Correction);
4)	коррекцию размера (Zoom);
5)	полутоновую коррекцию (Halftoning).
Оттеночная коррекция выполняется путем предварительного определения сканером значений точек белого и черного стандартных цветов. С этой целью при включенной лампе сканер читает белый край документа и находит соответ
572
Устройства ввода и регистрации информации
ствующее значение точки белого (самая яркая точка изображения). Затем сканирующая каретка возвращается в исходную позицию, закрытую от документа, и находится значение точки черного (самая темная точка изображения). Эти значения (двоичные коды 8-битного АЦП) использует МК 1 для определения диапазона оттенков от черного до белого (от 255 до О). Нахождение значений точек черного и белого влияет на оттеночный диапазон и контрастность изображения.
Для значений точек черного (100%) и белого (0%) изображение получается резко контрастным, а при других значениях наблюдается более плавный переход от черного к белому.
Гамма-коррекция используется для поправки средних тонов. Коэффициент гамма < 1 вызывает затемнение средней яркости, а гамма > 1 - соответствие этих участков. По умолчанию устанавливается обычно гамма =1,8, когда детали изображения хорошо видны в различных участках спектра.
Цветовая коррекция заключается в необходимости учитывать цветовые характеристики следующих устройств вывода: электронно-лучевой трубки (ЭЛТ) монитора, точечно-матричного принтера, термопринтера и струйного принтера.
В ЭЛТ для образования палитры используются основные первичные цвета: пурпурный - М (Magenta), голубой - С (Cyan), желтый - У (Yellow) и черный - К (black). Поэтому в сканере предусматриваются четыре режима цветовой коррекции с учетом этих типов устройств вывода, причем для принтеров принимаются во внимание метод печати и тип чернил.
Цветовая коррекция заключается в обработке данных изображения в МК 1 сканера с целью достижения оптимального соответствия с цветовыми характеристиками используемых устройств вывода.
Коррекция размера состоит в увеличении или уменьшении размера выходного изображения, который может быть найден между 50% и 200%.
Реальному размеру сканируемого изображения соответствует 100%. Если размер указывается 200%, то площадь сканируемого изображения увеличивается в 4 раза по сравнению с оригиналом. Значения для главного и предварительного сканирований могут быть установлены независимо друг от друга.
Полутоновая коррекция применяется для имитирования непрерывного тока и наиболее подходит для устройств вывода, которые не поддерживают многобитных данных для каждого пиксела. Сканер выполняет несколько режимов полутоновой коррекции. Полутоновый режим А (стандартная процедура) состоит в том, что сканер преобразовывает изображение в постоянно-тоновый вывод, поддерживающий четкость изображения. В полутоновом режиме В сканер преобразует изображение в непостоянно-тоновый вывод, который наиболее подходит для покрытия больших поверхностей. Режим С применяется для газетных изображений. В этом случае градации тона представлены пучками тока точек различного количества. Кроме того, применяются режимы, в которых каждой полутоновой точке соответствует матрица 4x4 пикселей, в которой можно программировать отдельные полутона. Тогда растрированное изображение представляется в виде совокупности отдельных полутоновых точек (ячеек).
Микроконтроллер МК2 с помощью блока управления двигателем организует построчное перемещение каретки сканирования по всему документу, координацию общей работы всех устройств сканера и управление работой шин: ША, ШД и ШУ. На подвижной каретке размещается источник света, объектив. ПЗС-датчики и мотор. Документ освещается источником света, и через объектив оптической системы световое изображение попадает на ПЗС-датчики, которые
Структурная схема сканера
573
могут быть выполнены в виде одной или трех линеек. Если используется одна линейка ПЗС-датчиков, то для получения цветного изображения выполняются три прохода каретки для каждой строки документа. В другом случае одновременно считываются три цветовых компонента R. G. В для каждой точки, которые затем поступают на АЦП. ПЗС работает таким образом, что заряд каждой точки растровой линии последовательно сдвигается к выходу и передается на вход АЦП. Восьмиразрядный АЦП для каждого цвета позволяет получить палитру, содержащую 256 цветов, а всего с учетом трех цветовых компонентов (R, G, В) возможно образование 224 цветовых оттенков.
Для подключения сканера к компьютеру используется интерфейс USB. последовательная универсальная шина, с которой МК1 соединен с помощью блока USB. Блок USB осуществляет преобразование параллельного кода в последовательный при передаче данных в компьютер и наоборот - последовательного кода в параллельный при приеме данных из компьютера. Кроме того, блок USB выполняет сложный протокол взаимодействия с шиной USB.
Многие сканеры используют параллельный интерфейс SCSI для сопряжения с компьютером. В этом случае компьютер содержит плату SCSI-контроллера, подключенного к системной шине, например PCI, и имеющего внешний разъем SCSI на стенке корпуса. Между компьютером и сканером выполняется определенный протокол для передачи данных, в котором можно выделить несколько диаграмм состояний. Диаграмма вывода компьютером кода управления без параметров состоит из двух шагов (рис. 12.4): компьютер передает код управления без параметра, а сканер отвечает кодом АСК (Acknowledgement) или кодом NACK (Negative Acknowledgement).
Компьютер
Сканер
Код управления
без параметров
АСК или NACK
2
Рис. 12.4. Вывод кода управления без параметров
АСК (06 Н) - положительная квитанция-символ, указывающая на то, что код управления принят без ошибки. NACK (15 Н) - отрицательная квитанция-символ, сообщающая о наличии ошибки в коде управления (недопустимом коде управления).
В случае передачи компьютером кода управления с параметрами между компьютером и сканером выполняется следующая последовательность шагов (рис. 12.5).
Запрос данных сканера выполняется следующим образом (рис. 12.6).
Режим монохромного чтения блока данных сканера представлен следующей диаграммой (рис. 12.7).
574	Устройства ввода и регистрации информации
Компьютер		Сканер	
1	Код управления		
	без параметров		
	АСК или NACK		2
3 А	Получен АСК Параметры		
4	АСК или NACK		с
			О
Рис. 12.5. Вывод кода управления с параметрами			
Компьютер		Сканер	
1		Код управления	
	с запросом данных Блок данных		2
			
Рис. 12.6. Запрос данных сканера			
На каждый блок данных сканера компьютер отвечает символами АСК или CAN. CAN (Cancel) - символ отмены приема блока данных, а АСК - символ подтверждения приема блока данных.
Режим цветного чтения одной растровой линии документа показан на рис. 12.8. Аналогичным образом выполняется передача блоков данных других растровых линий документа.
Таким образом, для каждой растровой линии документа передаются блоки данных зеленого (G), красного (R) и синего (В) цветов.
Рассмотрим форматы блоков данных. На рис. 12.9 изображен формат блока данных для одной линии.
В этом формате, в поле Счетчик байтов, указано, какое количество байтов содержится в поле Данные. Заголовок определяет начало блока данных. В байте состояния отмечаются атрибуты цвета (G, R, В), опции, флаг ошибок и т. д.
Структурная схема сканера
575
Компьютер
Сканер
Код управления
монохромного чтения
Блок данных
2
4
5
7
Рис. 12.7. Режим монохромного чтения
Кроме того, предусмотрен формат блока данных для нескольких линий (рис. 12.10).
Количество линий (п) определяет значение поля Счетчика линий.
Функции, выполняемые сканером, представлены в табл. 12.1.
Таблица 12.1		
Функция	Команда	Название
Формат данных	ESCD	От 1 до 8 бит на пиксель каждого цвета
Выходное разрешение ESCR		От 50 до 1200 dpi с шагом в 1 dpi
Размер	ESCH	От 50% до 200% с шагом в 1 %
Читаемая площадь	ESCA	Смещение и читаемая длина
Цветовой режим	ESCC	Последовательность цветовых линий, монохромный режим, порядок следования цветных страниц
Цифровой полутон	ESCB	Режимы цветового полутонирования
Цветовая коррекция	ESCM	Установки для устройств ввода
Яркость	ESCL	7 уровней
Резкость	ESCQ	5 уровней
Гамма-коррекция	ESCZ	6 установок для устройств ввода
Режим сканирования	ESCG	Нормальная, высокая скорость
576	Устройства ввода и регистрации информации
Комп 1 3 5 8	ьютер	Ска Код управления	|нер 2 4 6 7
	цветного чтения Блок данных G	
	АСК или CAN	
	Получен АСК	— Блок данных R	
	АСК или CAN	
	Блок данных В ^К	
	АСК или CAN	
		
Рис. 12.8. Режим цветного чтения		
			Данные 1-й линии
Заголовок	|
1 байт | Счетчик байтов Состояние 2 байта
1 байт
Рис. 12.9. Формат блока данных одной растровой линии
				Данные п линий
Заголовок	]	I
1 байт | Счетчик байтов Счетчик линий Состояние 2 байта	2 байта
1 байт
Рис. 12.10. Формат блока данных п линий
Принцип действия сканера
577
Формат данных определяет число битов (от 1 до 8), используемых для воспроизведения цвета каждого пиксела. В монохромном режиме каждому пикселу соответствует 1 бит байта данных, значение которого «1» соответствует белому цвету, а «О» - черному цвету. Установка режима 2 бита на пиксел определяет 4 уровня цвета, то есть в байте данных размещаются цвета четырех пикселей. Кроме того, предусматривается режим, когда каждому пикселу соответствует байт данных, что позволяет задать 256 оттенков серого и получить результат фотографического качества.
12.5.	Принцип действия сканера
Общий принцип функционирования сканера состоит из выполнения следующих основных действий:
•	калибровки преобразовательных систем;
•	перемещения сканирующей головки (каретки);
•	опроса фотодатчиков;
•	аналого-цифрового преобразования сигнала фотодатчиков;
•	обработки данных изображения;
•	передачи информации в компьютер.
Существуют разнообразные типы сканеров, которые характеризуются различными функциональными возможностями и областью применения. Основное внимание в этом разделе уделено описанию планшетных сканеров, имеющих наибольшее применение.
Рассмотрим упрощенные схемы сканеров, поясняющие их принцип действия.
Схема черно-белого, или полутонового, сканера представлена на рис. 12.11.
Рис. 12.11. Схема черно-белого или полутонового сканера
Источник белого света (лампа), объектив и ПЗС размещены в каретке, которая передвигается по направляющей и осуществляет оптическое сканирование строк документов. Отраженное оптическое изображение строки заполняется в ПЗС в виде зарядов разной величины, зависящей от интенсивности отраженного света. Затем эти заряды формируются в виде аналогового сигнала, сдвигаются к выходу и поступают на вход АЦП или компаратора.
В черно-белом сканере в дискретные моменты времени выполняется сравнение входного сигнала, поступаемого с выхода ПЗС, опорного (порогового) сигна
578	Устройства ввода и регистрации информации
ла. В результате сравнения на выходе компьютера формируется сигнал нулевого уровня, соответствующий белому цвету или единичного уровня - черному цвету.
Полутоновый сканер содержит АЦП, позволяющий различать оттенок (уровни) серого цвета. АЦП преобразует аналоговый сигнал в n-разрядный код и таким образом способствует распознаванию в общем случае 2П уровней серого цвета.
На качество получаемого изображения влияет оптическая система, ПЗС и АЦП. Причем ПЗС может быть выполнен в виде линейки фоточувствительных элементов или матрицы. Если используется матричная ПЗС, то любая строка изображения содержит равные квадраты, каждый из которых имеет свои оттенки серого.
Растровое представление документа показано на рис. 12.12.
Каждому пикселу строки документа соответствует свой фотодиод линейки ПЗС, который под действием фотонов отраженного света формирует ток, заряжающий конденсатор на определенную величину.
Линейка ПЗС содержит несколько секций (рис. 12.13).
Первая секция предназначена для приема оптического изображения, формирования зарядов и их накопления (хранения).
Вторая секция выполняет функцию регистра сдвига и под действием двух серий тактовых сигналов F1 и F2 (сдвинутых относительно друг друга) осуществляет транспортировку зарядов к выходу. Третья секция формирует аналоговый сигнал напряжения или тока, который усиливается перед вводом его в АЦП.
В цветных сканерах вместо источника белого цвета применяются лампы красного, зеленого и синего цветов (рис. 12.14).
Схема содержит три флюорисцентные лампы - красную (R), зеленую (G) и синюю (В). Для каждой растровой строки документа поочередно включается та
Принцип действия сканера
579
Рис. 12.13. Схема линейки ПЗС
Документ
Рис. 12.14. Схема цветной сканирующей головки
или иная лампа и высвечивается соответствующая компонента цвета, которая, отражаясь, запоминается в линейке ПЗС.
Существуют цветные сканеры, в которых применяются источник белого света и три поворотных светофильтра (рис. 12.15).
Такой сканер осуществляет три прохода сканирования документа с целью получения цветного изображения. Самые простые светофильтры изготавливаются из тонких листов желатина, они имеют недолгий срок работы и используют эффект селективного поглощения, но являются более дорогими.
В других цветных сканерах с источником белого цвета для разделения белого цвета на цветовые компоненты R. G и В применяют специальную призму (рис. 12.16).
Специальная призма реализует эффект дихроизма - окраски кристаллов при пропускании через нее белого света в зависимости от расположения оптической оси. За счет преломления исходного пучка света в призме выполняется пространственное его разложение на компоненты R, G и В, которые поступают на соответствующие линейки ПЗС.
12.6.	Электронный учебник «Сканер»
Программный продукт состоит из трех частей, связанных в единый электронный учебник.
При запуске программы появляется стартовое окно, показанное на рис. 12.17.
Раздел «Изучить материал»
Первая часть представляет собой изучение теоретических основ об устройстве сканера. Нажав кнопку Изучить материал, пользователь попадает в подпрограмму, где он может последовательно пролистывать страницы текста с теоретическим материалом. На рис. 12.18 показано окно с теоретической частью.
Электронный учебник «Сканер»
581
Электронный учебник
Устройство сканера
| Изучить материал^ [ Проверить знания^ | Изучить модель ~|
Рис. 12.17. Стартовое окно программы
1.3.	Принцип действия сканера
Общий	функционирования сканера состоит из выполнения следующих основных действии.
-	калибровки преобразовательных систем;
-	перемещение сканирующей головки (каретки);
-	опроса фотодатчикое;
-	аналого-цифрового преобразования ситала фотодатчиюв
-	обработка данных изображения;
-	передами информации в компьютер.
Существуют разнообразные типы сканеров, которые характеризуются рвзлы* ыми функциональном» возмаа костями и областью применения. Основное внимание а этом разделе удалено описанию планшетных сканеров, имеющих наибольшее применение.
Рассмотрим упрощенные схемы сканеров, поясняющие их принцип действия.
Схема черно-белого или полутонового сканера представлена на рис. 1.9.
Документ
Рис. 1 9. Схема черно-белого или полутонового сканера
Источник белого света (лампа), объектив и ПЗС размещены в каретке, которая передвигается по направляющей осуществляет оптическое сканирование строк документов. Отраженное оптическое изображение строки заполняется в ПЗС в виде зарядов разной величины, зависящей от интенсивности отраженного света. Затем эти заряды формируются в виде аналогового ситала. сдвигаются к выходу и поступают на вход АЦП или компаратора
◄◄ ►►
Рис. 12.18. Окно теоретической части
582
Устройство ввода и регистрации информации
В данной части пользователь может переключаться между страницами кнопками, расположенными в правом нижнем углу. Вернуться в стартовое меню
можно, нажав кнопку в правом верхнем углу.
Раздел «Изучить модель»
В этой части пользователь может изучить модели планшетного сканирования, просматривая ролики, в которых показаны движение каретки и формирование растрового изображения при сканировании документа. Внешний вид окна с моделью показан на рис. 12.19.
Документ 0 1 2 3 4 5 6 7 8 9 10 11 1213 14 1516 1 2 3 4
13 14 15 16
Растровое представление документа 0 1 2 3 4 5 6 7 8 9 10 11 121314 1516 1 2 3
5	••••	••	••
7 8 9 10 11 12 13 14 15 16
Пример планшетного сканирования
Рис. 12.19. Пример планшетного сканирования
В данном окне пользователь наблюдает за движением каретки и образованием растрового изображения при сканировании документа. Он может управлять роликом, нажимая кнопки Проигрывать, Пауза и Перейти в начало. На экране в верхнем правом углу есть кнопка для возврата в стартовое меню. Также под кнопками управления роликом находится кнопка для перехода к другой модели Обработка ПЗС. Нажав ее. пользователь перейдет к просмотру другого ролика, показывающего, как происходит обработка зарядов ПЗС. Эта модель показана на рис. 12.20.
Обработка зарядов ПЗС
Рис. 12.20. Обработка зарядов ПЗС
В этом окне можно также управлять роликом, нажимая кнопки Проигрывать, Пауза и Перейти в начало. Здесь показана схема, как происходит обработка зарядов ПЗС. Слева показано состояние линейки ПЗС во время сканирования, а справа - данные в памяти.
Раздел «Проверить знания»
Эта часть программного продукта посвящена контролю знаний пользователя. Она представляет собой тестирование, включающее в себя 14 вопросов данной темы.
Окно тестирования выглядит так, как показано на рис. 12.21.
Вверху располагается вопрос, ниже перечисляются варианты ответов. Пользователь должен отметить галочкой правильные ответы и нажать кнопку Ок для перехода к следующему вопросу. После того как пользователь ответит на все вопросы, будет выведен отчет о количестве правильных ответов. Также в тестировании попадаются вопросы, где нужно отвечать без вариантов ответов. Это показано на рис. 12.22.
В этом случае пользователь должен ввести правильный ответ в текстовое поле и затем нажать кнопку Ок.
584	Устройства ввода и регистрации информации
Контрольные вопросы
1.	Укажите цвета видимого спектра:
1)	фиолетовый:	4) ультрафиолетовый;
2)	желтый;	5) инфракрасный.
3)	зеленый;
2.	Выберите основные источники света, применяемые в сканерах:
1)	дуговые угольные;
2)	дуговые ксеноновые;
3)	капиллярные ртутные;
4)	галогенные;
5)	флуоресцентные;
6)	светодиодные.
3.	Назовите основные типы фотодатчиков сканеров:
1)	фоторезисторы;	4) ФЭУ;
2)	фототиристоры;	5) КДИ.
3)	МОП (ПЗС);
j Контрольные вопросы	585
4.	Укажите тип преобразователя, используемого в сканерах:
1)	ЦАП; 2) АЦП; 3) кодер; 4) декодер.
5.	Назовите тип сканера, в котором бумага перемещается относительно сканирующей головки:
6.	Назовите тип сканера с плоской стеклянной рабочей поверхностью:
7.	Укажите количество уровней серого цвета, которое имеет сканер с 8-битным АЦП:
1) 64;	2) 128;	3) 256;	4) 512.
8.	Определите количество бит, приходящихся на 1 пиксел, для сканера с 64 градациями яркости:
9.	Выберите основные цветовые компоненты, используемые для образования цветовой палитры:
586
Устройства ввода и регистрации информации
1)	красный голубой зеленый
2)	синий красный зеленый
3)	пурпурный серый синий желтый
4)	черный пурпурный голубой желтый
10.	Укажите технологию, по которой выполнена линейка ПЗС:
1)	МОП;	2) КМОП; 3) ТТЛ;	4) ЭСЛ.
11.	Определите интерфейсы, применяемые для связи сканера с компьютером:
1)	PCI;	2) SCSI;	3) IDE;	4) USB;	5) AGP.
12.	Выберите программные стандарты (драйверы), используемые для управления работой сканера:
1)	TWAIN;	2) ISIS;	3) MiraScan; 4) CuneiForm;	5) FineReader.
13.	Укажите программы автоматического распознавания символов:
1)	TWAIN;	2) ISIS:	3) MiraScan: 4) CuneiForm:	5) FineReader.
14.	Укажите назначение первой цифры в записи разрешения 600 х 1200 dpi:
1)	вертикальное разрешение;
2)	горизонтальное разрешение;
3)	оптическое разрешение;
4)	механическое разрешение.
Литература
1.	GT-5000 // Action Scanner II Service Manual. Product Descrption.
2.	Авдеев В. А., Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства: уч. пособие. - М.: Радио и связь, 2001. - 480 с.: ил.
3.	Кэролайн Холидей. Секреты ПК / пер. с англ. Г. И. Коваль, В. А. Кравчук. -Киев: Диалектика, 1996. - 414 с.: ил.
4.	Колесниченко О. В., Шишигин И. В. Аппаратные средства PC. 5-е изд., пере-раб. и доп. -СПб.: БХВ-Петербург, 2004. - 1152 с.: ил.
Принципы магнитной записи
13.1.	Магнитные ленты
-< -j аиболее известными носителями информации являются магнитные лен-i-J ты, гибкие и жесткие диски. Обычно магнитные ленты используются для f f хранения больших объемов информации.
Магнитная лента содержит полистироловую основу, на которую нанесены магнитные вещества, например окисел железа (ферролак). На ленте размещено множество дорожек, каждой дорожке соответствует своя головка записи/чте-ния. При движении ленты на нее выполняется запись параллельным способом, например для девятидорожечной ленты одновременно записываются восемь информационных битов и один контрольный бит. Размещение информации на ленте определяется соответствующим стандартом, для того чтобы ленту можно было использовать в различных ленточных накопителях. Магнитные ленты длиною несколько сотен метров хранятся и используются в специальных катушках различного типа кассет. Принцип записи с изменением направления тока I (потока Ф) для одной головки показан на рис. 13.1.
В режиме записи маленькие участки слоя ферромагнетика намагничиваются при пропускании тока по обмотке головки. Направление и интенсивность
588
Принципы магнитной записи
намагничивания дорожки ленты определяются направлением и интенсивностью магнитного потока в воздушном зазоре магнитопровода, который, в свою очередь, зависит от направления и величины тока в обмотке головки. При движении ленты на ней остаются магнитные отпечатки разного направления, изменения магнитных потоков которых в режиме чтения наводят электродвижущую силу (ЭДС) в обмотке головки (рис. 13.2).
Рис. 13.2. Принцип чтения данных с дорожки ленты
Накопители на магнитной ленте (стримеры) выпускаются внутреннего или внешнего конструктивного исполнения.
Развитие кассетных ленточных накопителей связано с увеличением количества дорожек (20, 40, 144 и больше), плотности записи (20 000, 40 000, 60 000 бит на дюйм и выше), разработкой специальных головок записи/чтения с большой напряженностью магнитного поля, повышением скорости движения ленты до 1000 мм/с и длины ленты (100, 200, 400 м).
Кассетные накопители подключаются к интерфейсу IDE или SCSI.
Емкость кассетных накопителей рассматривается с учетом возможности сжатия информации и без сжатия и достигает больших величин (800, 1000, 4000 Мбайт без сжатия).
В качестве методов кодирования информации, которые будут рассмотрены дальше, применяются методы модифицированной частотной модуляции (MFM) и метод группового кодирования ограниченной длины (RLL).
13.2.	Дисковые накопители
Рассмотрим принципы записи информации на магнитные носители - гибкие и жесткие диски.
Поверхность диска представляет собой магнитное оксидное или тонкопленочное металлизированное покрытие. Существуют три магнитных металла: железо, никель и кобальт.
Оксидное железное дешевое покрытие использовалось в старых дисках, оно характеризуется меньшей плотностью записи информации на дорожку по сравнению с дорогим металлизированным кобальтовым покрытием. Для получения тонкого магнитного слоя применяют технологию напыления на основании диска в вакууме кобальтовой смесью.
Дисковые накопители
589
На плотность записи информации влияют: толщина слоя магнитного покрытия (чем меньше толщина, тем выше плотность), материал носителя, расстояние размещения магнитной головки над поверхностью диска, зазор и ширина сердечника магнитной головки и способ записи (продольный или вертикальный). Поэтому тенденция развития дисковой памяти состояла в поиске тонких магнитных покрытий, создании сверхминиатюрных магнитных головок, увеличении скорости вращения дисков и уменьшении расстояния между магнитной головкой и носителем, что позволяло повышать емкость и быстродействие магнитной памяти.
Материал магнитного носителя также играет важную роль в создании сверхплотных дисков, например для дискеты стандарта ED емкостью 2,88 Мбайта в качестве носителя используется феррит бария, который имеет слой чуть толще, чем у обычных дискет, для выполнения вертикальной магнитной записи, позволяющей более плотно записывать информацию.
Таким образом, различают продольный, вертикальный и поперечный способы записи информации на диске, выполняемые с различной плотностью.
Для выполнения продольного способа записи используются различные типы магнитных головок.
Магнитная головка - преобразователь электрических сигналов в магнитные при записи на диск и магнитных сигналов в электрические при чтении информации с диска.
На рис. 13.3 представлена схема кольцевой индуктивной магнитной головки, которая использовалась в первых магнитных накопителях.
Индуктивность - способность обмотки автоматически создавать магнитное поле.
Ток I, протекая по обмотке с числом витков W, создает в ферритовом сердечнике магнитный поток Ф. Магнитный поток Ф замыкается через участок повер-
Ферритовый сердечник (прессованый оксид железа)
Силовая линия магнитного потока Ф
Расстояние головка (носитель)
Защитное покрытие (карбид кремния)
Основание (алюминий, стеклокерамика)
Толщина запоминающего слоя (оксид железа, кобальтового сплава)
Рис. 13.3. Схема индуктивной магнитной головки
590	Принципы магнитной записи
хности магнитного носителя и намагничивает домен в том же направлении (оставляет магнитный след).
Домен - минимальная площадь поверхности носителя, запоминающая ориентацию магнитного потока головки. На размер домена влияют зазор записи «а», расстояние головка/носитель «в» и толщина защитного покрытия около 0,025 мкм, изготовленного из карбида кремния.
Величина поля (напряженность) Н в зазоре определяется следующей зависимостью:
H~IW/a,
которая показывает, что эта величина при небольшом зазоре «а» полностью характеризуется магнитодвижущей силой IW.
Магнитная запись может быть представлена следующей схемой:
I(t)^<D(t)^H(t)^M(t),
где M(t) - остаточная намагниченность носителя и t - время.
Здесь следует отметить, что ферритовый сердечник позволяет значительно усилить напряженность своего магнитного поля по сравнению с внешним магнитным полем, создаваемым током. В режиме записи магнитная головка преобразует электрические сигналы в магнитные.
Временная диаграмма записи информации на магнитный носитель имеет следующий вид (рис. 13.4).
На диаграмме показано изменение тока записи, поступающего в обмотку магнитной головки. В соответствии с током I(t) выполняется перемена намагниченности M(t) носителя информации. Внизу диаграммы предоставлен магнитный эквивалент двоичного кода, записываемого на дорожку диска.
Векторы намагниченности S > N разделены зонами перехода, которые также влияют на плотность записи информации. Вертикальный способ записи уменьшает зоны перехода, что позволяет увеличить плотность записи.
На плотность записи влияют разрешающие способности головки и магнитного носителя, а также кодовые комбинации, записываемые на носитель.
Индуктивные магнитные головки являются головками записи/считывания.
накопители
591
При движении магнитной головки вдоль дорожки диска в режиме считывает происходит изменение магнитного потока в головке и на выходах обмотки появляется напряжение.
Режим считывания можно представить следующей схемой:
M(t) -> Ф(Ц -> e(t),
где e(t) - ЭДС, возникающая в обмотке головки.
В соответствии с законом Ленца можно выразить ЭДС как
e(t) = -W(d<£/dt),
где W - число витков катушки и Ф - магнитный поток домена носителя.
Это уравнение показывает, что напряжение на выходах обмотки пропорционально числу витков и скорости изменения магнитного потока.
Изменение ориентации магнитных доменов вызывает изменение магнитного потока, и головка воспринимает эту перемену.
Временная диаграмма считывания информации с дорожки диска изображена на рис. 13.5.
Л
NSS NN SSNN S
Рис. 13.5. Диаграмма считывания информации
-----L
Сердечник головки выполнен из магнитомягкого материала, имеющего небольшое сопротивление для магнитного потока, который в режиме чтения образуется от магнитного поля ориентированного домена дорожки диска и замыкается через сердечник (рис. 13.6).
Таким образом, в режиме чтения головка преобразует магнитные сигналы в электрические.
Когда домены ориентированы в одном направлении S -> N, S -»N ... или N <— S, N <— S, ..., то изменение магнитного потока Ф(1) в сердечнике не происходит и в обмотке не наводится ЭДС e(t). Поэтому возникает проблема нахождения битового интервала на дорожке диска в длинной последовательности 0(1) и определения значения этого бита. Эта проблема решается различными методами кодирования, которые будут рассмотрены дальше. Кроме того, необходимо учитывать: небольшие величины e(t) и Ф(Ц. влияние температуры и неравномерность вращения диска, влияющие на размер информационной части дорожки, имеющей плавающий характер, особенно в старых дисках.
592
Принципы магнитной записи
В индукционных магнитных головках образуется остаточная намагниченность, которая, с одной стороны, помогает при считывании информации, а с другой - приводит к некоторому ее стиранию.
Поперечная плотность записи определяется количеством дорожек, приходящихся на дюйм (TPI - Tracks per inch, дорожек на дюйм). Чем больше показатель TPI, тем больше данных хранится на диске. Поперечная плотность записи зависит от параметров магнитной головки, в частности от ширины (размера «с») головки (рис. 13.3). Ширина дорожки больше ширины головки из-за рассеивания магнитного поля возле воздушного зазора.
Дискеты стандарта HD (HD - High-Density, высокая плотность, 1,44 Мбайта) имеют 135 TPI и ширину дорожки 0,19 мм.
Чувствительность магнитной головки - возможный диапазон отклонения головки от центра дорожки в радиальном направлении. Для дисковода 3,5" эта чувствительность составляет 0,15 мм.
Для измерения чувствительности применяются специальные тестовые программы и тестовый диск, на котором записана информация на известном расстоянии от центра дорожки. Тестовые программы сравнивают полученные значения с теми, которые заранее известны.
13.3.	Магнитные головки
Первые магнитные головки изготавливались из прессованного оксида железа. Затем появились композитные (стеклоферритовые) головки, у которых ферритовый сердечник находился под слоем специального стекла. Воздушный зазор таких головок был меньше, чем у просто ферритовых. Были разработаны головки с металлическим напылением, обеспечивающие более узкий зазор и хорошую намагниченность, причем зазор у таких головок заполняется немагнитным материалом, сохраняющим постоянный размер зазора и сглаживающим острые края головки.
Стремление к миниатюризации головок с целью увеличения плотности записи привело к появлению тонкопленочных магнитных головок, при изготовлении которых использовались технологические достижения микроэлектронной техники.
Магнитные головки	593
Тонкопленочная индуктивная головка выполнена на основе железоникелевой пластинки (рис. 13.7), на которой расположены с двух сторон печатные обмотки и магнитные пленки, образующие зазор, заполненный немагнитным материалом.
Рис. 13.7. Общий вид тонкопленочной головки
Магниторезистивные головки MR (MR - Magnito-Resistive) используют магниторезистивный эффект, состоящий в том, что через датчик головки постоянно протекает слабый измерительный ток. В магниторезистивном датчике меняется сопротивление, когда головка проходит над участками с разными значениями намагниченности (диполями с разной ориентацией), что вызывает изменение измерительного тока. Чувствительность такой магнитной головки гораздо выше, чем у тонкопленочной. Однако магниторезистивные головки являются более сложными, так как дополнительно содержат тонкопленочную головку для записи со своим зазором и магниторезистивную также со своим зазором, предназначенную только для считывания информации. Кроме того, магниторезистивные головки экранируют для устранения электропомех.
Увеличение плотности информации на дорожке диска достигается применением вертикального способа записи.
На рис. 13.8 изображена схема вертикальной записи.
Вертикальная запись достигается путем использования специальной магнитной головки с очень узким записывающим полюсом (широкий полюс служит только для замыкания силовых линий) и многослойного носителя, содержащего защитное покрытие, запоминающий слой, проводящий материал и основание.
По внешнему виду диски с вертикальной записью не отличаются от дисков с продольной записью.
Особенностью вертикальной записи по сравнению с продольной, кроме того, является еще и то. что зоны переходов на дорожке получаются узкими и ровными, а при продольной записи они имеют размытый, нечеткий контур. Уменьшение размеров зон переходов также позволяет увеличить плотность записи.
594
Принципы магнитной записи
13.4.	Методы кодирования
При записи информации на магнитную дорожку используются различные методы кодирования, которые необходимы с целью распознавания данных при их чтении с дорожки, то есть методы кодирования обеспечивают синхронизацию данных в режиме воспроизведения.
Длинным последовательностям нулей или единиц соответствуют последовательности доменов, ориентированных в одном направлении. В этом случае не происходит изменения магнитного потока при чтении информации и схема (сепаратор данных) определения битового интервала может дать сбой. Методы кодирования предназначены для исключения записи большого числа нулей, не вызывающих изменения магнитного потока в головке. Самым простым методом кодирования является метод частотной модуляции (FM) одинарной плотности (FM - Frequency Modulation).
При кодировании методом FM (рис. 13.9) сигналы битов данных помещаются между сигналов синхронизации.
На диаграмме сигналы записи представляют собой код FM, а ток записи образуется путем использования метода кодирования NRZ, заключающегося в том, что единичное значение (высокий уровень) вызывает переключение тока записи. а нулевое (низкий уровень) сохраняет предыдущее изменение уровня, то есть переключение уровня происходит только по положительному фронту сигналов записи.
Код NRZ влияет на направление тока записи и необходим для кодирования значений 1 и 0 в последовательных цепочках битов с целью дальнейшего их распознавания. В режиме распознавания сигналы чтения поступают в сепаратор данных, где происходит выделение битов данных (отбрасываются сигналы синхронизации) с помощью сигналов «Окно данных».
Достоинством метода FM является его простая реализация, а недостатком -низкая плотность записи. Дальнейшее развитие этого метода было связано
Методы кодирования
595
с уменьшением числа сигналов синхронизации, записываемых на магнитную дорожку. Этот метод получил название модифицированной частотной модуляции (MFM - Modified Frequency Modulation) и заключается в следующем.
Если бит данных равен 1, то стоящий перед ним сигнал синхронизации не записывается, и если бит данных равен 0, но предыдущий бит данных равен 1, то сигнал синхронизации также не записывается.
Проще говоря, сигнал синхронизации помещается только между нулевыми битами данных (рис. 13.10).
Метод кодирования MFM является методом с удвоенной плотностью записи по сравнению с методом FM за счет исключения некоторой части сигналов синхронизации и увеличения тактовой частоты записи/чтения. В качестве недостатка этого метода следует отметить некоторое усложнение сепаратора данных, формирующего сигналы «Окно данных». Кроме того, кодовые комбинации метода MFM содержат близко расположенные единичные значения битов, вызывающих переориентацию магнитных доменов на дорожке диска, что ограничивает скорость вращения диска, так как необходимо успевать обрабатывать считываемые сигналы информации.
Поэтому широкое применение получил метод кодирования RLL (RLL - Run Length Limited, ограничение длины пробела) - метод представления данных на диске, увеличивающий плотность записи информации по сравнению с методом MFM.
596
Принципы магнитной записи
Метод кодирования RLL не использует сигналов синхронизации и является самосинхронизирующимся методом благодаря применению заданных кодовых наборов и сложных схем сепарации данных, которые позволят предсказать положение битового интервала в последовательной цепочке данных.
Кодирование RLL относится к методам группового кодирования, заключающихся в том, что ряд битов заменяется большей группой битов с переменной длиной и ограниченным числом нулей. Существует несколько разновидностей этого метода, но широкое распространение получил метод RLL (2,7) , который использует кодовые последовательности с числом нулей не больше семи и не меньше двух.
Принцип кодирования состоит в следующем. Входная последовательность данных, подлежащая преобразованию, анализируется и сравнивается в порядке очередности с известными кодами замены (табл. 13.1), находятся группы битов совпадения и заменяются RLL-кодами.
В RLL-коде единица соответствует переключению тока записи (метод NRZ), а нуль - сохранению уровня. Рассмотрим следующий пример. Пусть необходимо преобразовать код символа В (42h), двоичное представление которого -01000010 (рис. 13.11).
Пример показывает формирование 16-битного кода RLL для 8-битного двоичного кода симво-
Таблица 13.1	
Коды замены	RLL-коды
10		0100
11		1000
000		000100
010		100100
011	001000—
0010	00100100
0011	00001000
Форматирование дорожки
597
Число переключений
000100
0100
4 символ В (8 бит)
100100
4	RLL - код (16 бит)
01010101010
* MFM - код (11 бит)
6	0111010101011101
FM - код (16 бит)
Рис. 13.11. Пример формирования и сравнения RLL-кода
ла В. На этом же рисунке для сравнения представим 1 1 -битный MFM-код символа В, число переключений (число единиц) у которого равно 5, а число переключений RLL кода равно 4. Наибольшее число переключений имеет код FM - 10.
Показателем качества методов кодирования является, с одной стороны, минимальное число переключений в коде записи (токе записи), позволяющее увеличить частоту записи, а следовательно, и плотность упаковки битов информации на магнитной дорожке. С другой стороны, это число не должно быть слишком маленьким, чтобы не потерять биты данных. При обработке длинных двоичных цепочек данных кодирование RLL существенно уменьшает число переключений по сравнению с кодированием MFM.
Теоретическими расчетами и практическими исследованиями на стендовом оборудовании устанавливается качественная (надежная) плотность записи для применяемого метода кодирования.
Из таблицы видно, что RLL-код содержит впереди 1 максимальное число нулей, равное четырем (код 00001000), и в конце 1 - максимум три нуля (например, код 001000). Вместе эти коды дадут максимальный участок, содержащий семь нулей (00100000001000), а минимальное число нулей, как это видно, в RLL-кодах равно двум.
Считается, что схема выделения битов данных в состоянии надежно распознать без сбоя постоянный интервал, без изменения магнитного потока, равный восьми битам нулей.
Для иллюстрации и сравнения способов кодирования FM, MFM и RLL (рис. 13.7) рассмотрим следующую диаграмму токов записи, соответствующую методам кодирования двоичного кода символа В (рис. 13.12).
Из диаграммы видно, что тактовая частота для кода RLL(2,7) увеличивается в три раза по сравнению с передачей кода FM. Переключение тока записи может выполняться как по фронту бита единицы, так и посередине битового интервала единицы.
13.5.	Форматирование дорожки
Форматирование - разметка чистого гибкого или жесткого диска с целью размещения служебной информации, необходимой для поиска сектора; записи/ чтения новых данных; синхронизации процесса выделения данных и контроля правильности их хранения и передачи.
598
Принципы магнитной записи
°,1, °
.1 .о,0.1 .°.0.0!0. °!1 .°,0! °.1.°.°.
Рис. 13.12. Диаграмма токов записи для кодов FM, MFM, RLL
Таким образом, формат дорожки содержит много служебной информации, необходимой для поиска, размещения, временного согласования и контроля.
На рис. 13.13 показана схема трехкоординатного доступа к гибкому диску, содержащему 18 секторов и 80 дорожек.
Как уже отмечалось, BIOS использует три координаты для выбора сектора, например поверхность 0, дорожка 79, сектор 18, a DOS - одну координату - номер сектора. DOS выполняет последовательную нумерацию секторов двух поверхностей: сектор 0, сектор 1, ..., сектор 6399.
Форматирование дорожки
599
Ha рис. 13.14 изображена общая схема одного из вариантов размещения секторов на дорожке.
дорожки индекса
Рис. 13.14. Расположение секторов на дорожке
Формат содержит зазор (промежуток) дорожки, который отделяет последний сектор от начала дорожки. В зазорах обычно помещаются байты-наполнители определенного вида. Зазоры необходимы для того, чтобы контроллер успевал обрабатывать полученную информацию. Из-за неравномерности вращения диска и температурного влияния размер дорожки не является величиной постоянной, поэтому зазор дорожки учитывает «плавающий» характер длины дорожки и имеет переменную величину.
Сигналы синхронизации необходимы для схемы фазовой автоподстройки частоты, которая «привязывает» сигналы «Окно данных» к сигналам синхронизации, считываемым с дорожки.
Адресная метка индекса - уникальный код, не совпадающий с данными и указывающий контроллеру на начало дорожки. Зазор индекса (временной промежуток) необходим для того, чтобы контроллер успел дешифрировать адресную метку индекса.
Межсекторный зазор - параметр числа байтов, задаваемый в командах, например Читать сектор или Записать сектор. Этот параметр контроллер использует для завершения обработки информации предыдущего сектора.
Каждый сектор содержит две части: идентификатор сектора и поле данных сектора.
На рис. 13.15 представлен идентификатор, содержащий адресную метку идентификатора, номер дорожки, номер головки, номер сектора, длину сектора, контрольный циклический код и зазор идентификатора.
номер номер циклический
дорожки сектора избыточный контороль
сс	АМИ	нд	нг	НС	дс	ЦИК	зид
адресная метка	номер	длина зазор
индекса	головки	сектора идентификатора
Рис. 13.15. Идентификатор сектора
600	Принципы магнитной записи
Адресная метка идентификатора - уникальный код, не совпадающий с кодами данных и определяющий начало идентификатора сектора.
Затем в поле идентификатора указаны четыре параметра (номер дорожки, головки, сектора), которые считываются с дорожки и сравниваются с такими же по назначению параметрами, указанными в команде, например Читать сектор, выполняемой контроллером. В случае совпадения этих параметров контроллер определяет, что найден сектор на требуемой дорожке и поверхности, и выполняет чтение сектора.
13.6.	Циклический избыточный контроль
Код CRC (Cyclic Redundancy Check) - код, обнаруживающий ошибки и корректирующий их. При циклическом контроле поле данных представляется информационным полиномом (например, полиномом степени шесть). Для символа В (01000010) этот полином - (У5 + х), а байты контроля ошибок (ЦИК) представляют собой остаток от деления информационного полинома на фиксированный (порождающий) полином степени 32 или 16. Пример порождающего полинома степени четыре - (х4 + х + 1), которому соответствует код 10011. Если остаток от деления 0, то передача произошла без ошибок. Схема циклического контроля содержит кодер и декодер. Кодер в режиме записи формирует информационный полином путем умножения двоичного полинома поля данных на фиксированный (порождающий) полином и добавляет к нему остаток от деления, а декодер в режиме чтения осуществляет деление принятого информационного полинома на фиксированный полином (нулевой остаток указывает на отсутствие ошибки). В магнитных дисках применяется и другой способ контроля информации, передаваемой последовательным кодом.
При записи сектора на жесткий диск данные байт за байтом, 512 раз поступают на формирователь ЕСС (рис. 13.16), который построен по принципу полинома х32 + х23 + х21 + х11 + х2 + 1 на базе регистра сдвига с обратными связями через элементы равнозначности (сумматоры по модулю два).
Ошибка
Рис. 13.16. Схема формирования ЕСС
Ч
Циклический избыточный контроль	601
Данные сектора последовательным кодом поступают на вход SI 32-битного сдвигового регистра. После обработки всех 512 байтов в сдвиговом регистре формируется код ЕСС, представляющий собой остаток от деления битов сектора на фиксированный полином х32 + л23 + л21 + х11 + л2 + 1.
Запись в жесткий диск осуществляется по следующей схеме (рис. 13.17).
Данные сектора (из процессора)
Рис. 13.17. Схема записи сектора с кодом ЕСС
Сформированный контрольный код ЕСС (4 байта) записывается на жесткий диск после 512 байтов данных сектора в соответствии с форматом дорожки.
Чтение сектора из жесткого диска выполняется по схеме, представленной на рис. 13.18.
Данные сектора (в процессор)
Ошибка
Рис. 13.18. Схема чтения сектора с кодом ЕСС
При чтении сектора его байты и биты ЕСС также поступают на вход формирователя ЕСС. Если после прохождения этой информации в сдвиговом регистре формирователя будет храниться 0, то это означает, что операция чтения данных выполнена без ошибок, то есть выполняются деление и сравнение остатка, который был записан на диск. Если остаток не равен нулю, то это значит, что в процессе передачи (хранения) произошла ошибка, и определяется тип ошибки (корректируемая или нет); в случае корректируемой ошибки выполняется ее исправление с использованием соответствующего алгоритма.
Существуют правила выбора фиксированного полинома, от которого зависит определение разных типов ошибок. Ошибка в одном бите обнаруживается, если фиксированный полином содержит больше одного члена, а ошибки в двух битах находятся, если фиксированный полином имеет три члена и т. д.
602
Принципы магнитной записи
Приведенный фиксированный полином степени 32 позволяет обнаружить ошибку, длина которой составляет 11 бит.
Разработана теория выбора фиксированного полинома, обеспечивающая нужные корректирующие свойства получаемого с его помощью кода.
Коды, образованные с помощью фиксированного полинома, относятся к классу циклических кодов.
Существует большое количество циклических кодов: коды Хэмминга, исправляющие одиночные ошибки, коды Файра, корректирующие пакеты ошибок, и т. д. Кроме того, для контроля ошибок используется метод суммирования всех байтов, поля данных с исключением переносов. Полученный результат (контрольная сумма) применяется для обнаружения ошибок (более подробно защита информации от ошибок рассмотрена в главе 7).
Поле данных сектора (рис. 13.19) начинается с адресной метки данных -уникального кода, отличающегося от кодов данных и указывающего на начало поля данных.
сс	амд	данные	ЦИК
адресная метка данных
Рис. 13.19. Поле данных сектора
В поле данных сектора DOS размещает обычно 512 байт, хотя размер сектора может быть запрограммирован от 128 до 1024 и больше байт.
Рассмотрим низкоуровневое форматирование жесткого диска. Для интерфейсов ST506/412 и ESDI низкоуровневое форматирование выполняется самим пользователем, а для интерфейсов IDE, EIDE и SCSI этого делать не следует, так как низкоуровневое форматирование уже выполнено изготовителем с использованием специальной аппаратуры, формирующей более сильное магнитное поле, позволяющее сохранить формат цилиндров в течение нескольких десятков лет.
Структура формата жесткого диска напоминает структуру формата гибкого диска и содержит секторы, поля сигналов синхронизации, необходимые для работы контроллера и жесткого диска. Каждый сектор также имеет поле идентификации, включающее адресную метку идентификатора, номер цилиндра, номер магнитной головки, номер сектора, контрольные байты. Кроме того, сектор содержит поле данных, состоящее из адресной метки данных, данных и контрольных байтов. Жесткие диски используют коды коррекции ошибок (ЕСС -Error Correction Code), которые не только обнаруживают ошибку, но и корректируют некоторые из них.
13.7.	Адресные метки
Из формата дорожки видно, что имеются три вида адресных меток:
•	адресная метка индекса (ами);
•	адресная метка идентификатора (амид);
•	адресная метка данных (амд) или адресная метка баз данных (амбд).
Адресные метки
603
Вначале рассмотрим метод кодирования FM. В этом случае для представления данных используется полный ряд сигналов синхронизации, а для задания адресных меток - неполный ряд сигналов синхронизации (код D7 или С7). Кроме того, для задания адресных меток применяются следующие коды: FC, FE, FB и F8.
На рис. 13.20 показан пример формирования адресной метки индекса для метода кодирования FM.
Неполный ряд сигналов синхронизации
1 л
1 л
1 л
1 л
Сигналы синхронизации (код D7) Сигналы данных
1	1	1	1	1	1
л____п____п____п____п л
(код FC) Сигналы записи
(чтения)
Рис. 13.20. Адресная метка индекса для метода FM
Адресная метка индекса при кодировании методом FM образуется путем смешивания сигналов синхронизации (кода D7) и сигналов данных (кода FC).
Для образования адресной метки идентификатора в качестве сигналов синхронизации используется код С7, а в качестве сигналов данных - FE.
Адресная метка данных образуется путем применения кодов С7 (сигналов синхронизации) и FB (сигналов данных) или F8 (отсутствие данных).
При отсутствии данных сектор содержит байты-заполнители, и это отмечается соответствующей адресной меткой.
Для сравнения на рис. 13.21 изображена диаграмма записи данных (кода FC) методом FM, из которой видно отличие представлений адресной метки и данных при их записи на дорожку.
Адресная метка индекса для метода кодирования MFM состоит из четырех байтов: С2*, С2*, С2* и FC. Байт С2* (рис. 13.22) образуется путем смешивания с использованием метода кодирования FM кода D7 (сигналов синхронизации) и кода С2 (байта данных).
Полный ряд сигналов синхронизации
Сигналы синхронизации Сигналы данных
(код FC) Сигналы записи
(чтения)
Рис. 13.21. Запись данных (кода FC) методом FM
604
Принципы магнитной записи
Адресные метки идентификатора (ами), данных (амд) и отсутствия данных (амбд) также содержат четыре байта. Первые три байта имеют одинаковое значение А1*, а четвертый байт равен соответственно FE, FB и F8.
Формирование кода А1* представлено на рис. 13.23.
Четыре байта получаются смешиванием полного ряда сигналов синхронизации соответственно с кодами данных FC, FE, FB и F8 с учетом метода кодирования MFM.
В табл. 13.2 представлены байтовые комбинации адресных меток при использовании метода MFM.
Таблица 13.2						
Адресные метки	Методы кодирования					
	FM		MFM			
	Сигналы синхронизации	Сигналы данных	байт1	байт 2	байтЗ	байт 4
Адресная метка индекса	D7	FC	С2*	С2*	С2*	FC
Адресная метка идентификатора	С7	FE	А1*	А1*	А1*	FE
Адресная метка данных	С7	FB	А1*	А1*	А1*	FB
Адресная метка баз данных	С7	FB	А1*	А1*	А1*	FB
Фазовая автоподстройка частоты	605
13.8.	Фазовая автоподстройка частоты
В связи с неравномерностью вращения двигателя диска считываемые данные поступают в схему выделения данных (сепаратор данных) также неравномерно. Поэтому существует проблема формирования тактовых сигналов, связанных с сигналами синхронизации дорожки.
Как уже указывалось, в формате дорожки предусмотрены поля для записи сигналов синхронизации (для гибкого диска размер каждого поля составляет 12 байтов).
На рис. 13.24 показана диаграмма формирования сигналов синхронизации для записи их на дорожку диска.
Сигналы синхронизации, считываемые с дорожки, используются для выработки сигналов «Окно данных», указывающих на место размещения битов данных.
Схема фазовой автоподстройки частоты представлена рис. 13.25 и содержит фазовый компаратор, фильтр и генератор, управляемый напряжением.
Фазовый компаратор предназначен для сравнения сигналов синхронизации и других информационных сигналов, считываемых с дорожки, и тактовых сигналов, формируемых ГУН.
606
Принципы магнитной записи
Разность фаз этих сравниваемых сигналов в виде выходного аналогового сигнала, пропорционального сдвигу фаз, через низкочастотный сглаживающий фильтр поступает в ГУН.
ГУН является задающим генератором, формирующим синхронизированные тактовые сигналы, необходимые для выработки сигналов «Окно данных».
Схема фазовой автоподстройки частоты работает так, чтобы свести разность фаз сравниваемых сигналов к нулю. Таким образом, тактовые сигналы, формируемые ГУН, синхронизированы с сигналами, читаемыми с дорожки, то есть отслеживается скорость вращения диска.
ГУН - схема, преобразующая входное напряжение в последовательность цифровых сигналов, частота которых пропорциональна значению входного напряжения.
Справочное дополнение
Различают три типа сигналов NRZ (рис. 13.26).
NRZ-L
NRZ-M
NRZ-S
Рис. 13.26. Примеры кодирования методом NRZ
L - Level, уровень М - Mark, метка (1)
S - Space, пауза (0)
Кодирование NRZ-S используется для формирования сигналов при передаче их в шину USB, а кодирование NRZ-M - при записи данных на магнитный носитель. Если в коде встречается логическая 1, то она вызывает переключение уровня напряжения, а логический 0 - нет (для метода NRZ-М). В методе NRZ-S, наоборот, логический 0 представляется измерением уровня напряжения, а логической 1 соответствует постоянный уровень напряжения.
Контрольные вопросы	607
Контрольные вопросы
1.	Назовите метод кодирования данных при записи их на гибкий диск с целью определения 1-го или 0-го значения в потоке данных:
1) NRZ; 2) MFM; 3) RLL; 4) CRC.
2.	Назовите составные части в заданном порядке, содержащиеся в идентификаторе (ID) дорожки гибкого диска:
1)	адресная метка ID;
2)	длина сектора;
3)	номер магнитной головки;
4)	номер дорожки;
5)	контрольно-циклический код;
6)	номер последнего сектора;
7)	номер сектора.
3.	Укажите типы адресных меток (AM) гибкого диска:
1)	AM сектора;
2)	AM индекса;
3)	AM дорожки:
4)	AM идентификатора;
5)	AM данных;
6)	AM без данных.
4.	Определите метод кодирования, позволяющий более плотно записывать информацию на дорожку диска:
1)	NRZ; 2) MFM; 3) RLL; 4) CRC.
5.	Укажите название разметки чистого диска с целью размещения служебной информации:
6.	Назовите метод контроля информации жесткого диска:
1)	Хэмминга;
2)	CRC;
3)	четности;
4)	суммирования.
7.	Выберите адресные метки (AM), используемые при размещении информации на дорожках гибкого диска:
1)	AM накопителя;
2)	AM индекса;
3)	AM данных;
4)	AM контрольного кода.
8.	Кольцо на диске, состоящее из секторов:
9.	Элементарная область дорожки, хранящая изменение магнитного потока:
608	Принципы магнитной записи
Упражнение 1. Задан байт данных С7Н и метод кодирования MFM. Представьте временную диаграмму смешивания битов данных с битами синхронизации при записи их на дорожку диска.
Упражнение 2. Покажите временную диаграмму формирования адресной метки, у которой биты синхронизации равны С7Н, а биты данных - А1Н. Метод кодирования - MFM.
Литература
1.	Перспективы развития вычислительной техники: в 11 кн.: справ, пособие / под ред. Ю. М. Смирнова. Кн. 9: Внешние запоминающие устройства на магнитном носителе / В. Г. Макурочкин. С. Л. Горбацевич. А. И. Луньков др. - М.: Высшая школа, 1989. - 175 с.: ил.
2.	Морисита И. Аппаратные средства микроЭВМ / пер. с япон. - М.: Мир, 1988. -280 с.: ил.
3.	Авдеев В. А., Гузик В. Ф. Компьютеры: шины, контроллеры, периферийные устройства: уч. пособие. - М.: Радио и связь, 2001. - 480 с.: ил.
4.	Букчин Л. В., Безрукий Ю. Л. Дисковая подсистема IBM-совместимых персональных компьютеров. - М.: МП Бином, 1993. - 287 с.: ил.
Гибкие и жесткие диски
14.1. Типы гибких дисков
-у -у з всех типов дисков пока еще используются 3,5-дюймовые диски (диамет-f J ром 89 мм), внешний вид которых показан на рис. 14.1.
Рис. 14.1. Внешний вид 3,5-дюймового диска (вид снизу): 1
- корпус, 2 - заслонка; 3 - отверстие записи-чтения, 4 - пластиковая шторка, 5 - отверстие диска высокой плотности, 6 - отверстие диска сверхвысокой плотности, 7 - ключ; 8 - металлический зажим; 9 - направляющая прорезь
Такие диски помещаются в жесткий защитный корпус из ударно-прочного полистирола. Магнитные головки получают доступ к поверхности диска с помощью подвижной металлической заслонки, размещенной на обеих поверхностях корпуса. При установке диска в дисковод заслонка по направляющей прорези автоматически смещается, открывая прямоугольное отверстие в корпусе для контакта магнитных головок с поверхностями диска. Блокировка записи
610
Гибкие и жесткие диски
выполняется перемещением пластиковой шторки таким образом, чтобы было открыто небольшое отверстие. Для дискет с высокой плотностью записи имеется дополнительное прямоугольное отверстие. Срезанный угол корпуса представляет собой ключ, исключающий неправильную установку диска в дисководе, а шпиндельное отверстие закрыто специальным зажимом.
Несмотря на то что диски 3,5 дюйма небольшого размера, емкость у них рассчитана на хранение 1,44 Мбайта или 2,88 Мбайта данных). У старых 3,5-дюймовых дисков без дополнительного прямоугольного отверстия в углу конверта и без обозначения HD (высокая плотность) емкость небольшая и равна 720 Кбайт. В табл. 14.1 приведены типы дисков с учетом продольной плотности записи данных.
Таблица 14.1
Типы дисков	Число дорожек	Размер диска	Емкость диска
QD	80	3,5"	720 Кбайт
HD	80	3,5"	1,44 Мбайта
ED	80	3,5"	2,88 Мбайта
Примечание QD - двойная плотность с удвоенным числом дорожек, HD - высокая плотность, ED - сверхвысокая плотность
14.2.	Организация данных на диске
На поверхности диска размещены дорожки, представляющие собой концентрические окружности, на которые последовательным кодом записывается информация. Дорожки разбиты на сектора. Последовательность нумерации секторов (а - BIOS, б - DOS) показана на рис. 14.2.
Накопитель ГМД	611
Поверхности и дорожки нумеруются (стороны О и 1 и номер дорожки на первой стороне совпадают с номером аналогичной дорожки на второй стороне). Самая внешняя дорожка имеет номер О. Запись и чтение информации дорожек выполняются полными секторами. Сектор имеет переменную длину (128-1024 байта), и его размер может быть запрограммирован. DOS поддерживает для всех дисков стандартный размер сектора, равный 512 байтам. В DOS выполняется последовательная нумерация всех секторов на обеих сторонах от нулевого сектора до последнего. BIOS использует трехмерный доступ к сектору: сторона 1, дорожка 7, сектор 5, a DOS - одномерный доступ - сектор 143. Емкость диска V = MxMxSxL, где N - число сторон, М - число дорожек на одной стороне, S - число секторов на одной дорожке и L - размер сектора Обычно 3,5-дюймовые диски содержат 80 дорожек. 18 или 36 секторов и имеют емкость 1,44 Мбайта или 2,88 Мбайта.
Накопители на гибких дисках относятся к внешним запоминающим устройствам быстрого доступа. Для поиска нужного сектора соответствующей дорожки на поверхности диска необходимо выполнить перемещение магнитной головки на заданную дорожку, затем опустить ее на эту дорожку, найти на ней сектор при вращении гибкого диска. Гибкие диски вращаются со скоростью от 300 до 360 об/мин.
14.3.	Накопитель ГМД
НГМД относится к устройствам быстрого доступа, состоит из радиального позиционирования магнитной головки (МГ) на нужную дорожку, вращения диска со скоростью 300-360 об/мин и загрузки (опускания) МГ на диск. На рис. 14.3 представлена упрощенная схема НГМД.
Рис. 14.3. Упрощенная схема НГМД
С помощью двигателя (Дв) диск выполняет вращение с постоянной скоростью. Перемещение МГ в радиальном направлении осуществляется шаговым двигателем (ШД). преобразующим повороты вала в продольное движение МГ. Загрузка МГ на диск выполняется специальным соленоидом (СЛД). В НГМД находятся три датчика: датчик (Д1) запрета записи (WRPROTECTED), датчик (Д2)
612
Гибкие и жесткие диски
дорожки О (TRACKO) и датчик (ДЗ) сигнала индексного отверстия (INDEX). Координацию действий узлов НГМД осуществляет блок управления (БУ), получающий соответствующие сигналы от КНГМД: направление (DIR), шаг (STEP), перемещающий МГ на одну дорожку и т. д. В режиме записи последовательные данные поступают по линии WRDATA на схему записи (СЗ), а в режиме чтения последовательные данные с помощью схемы чтения (СЧ) выдаются на линию RDDATA. Управление подключением СЧ или СЗ выполняет коммутатор (К) по сигналам БУ.
14.4.	Контроллер НГМД
Через КНГМД осуществляется передача данных между НГМД и ОП под управлением КПДП или между НГМД и быстродействующим процессором П (рис. 14.4).
Рис. 14.4. Схема связи КНГМД с НГМД и ОП под управлением КПДП (П)
Структурная схема базового КНГМД изображена на рис. 14.5.
Контроллер НГМД (КНГМД) является сложным устройством, для реализации которого была разработана БИС 18272. КНГМД предназначен для выполнения многосекторных, многодорожечных и многоканальных передач данных между НГМД и ОП. КНГМД выполняет преобразование параллельного кода в последовательный при передаче данных в НГМД и обратное преобразование последовательного кода в параллельный при чтении данных из НГМД. Кроме того, КНГМД обеспечивает выполнение следующих команд: запись и чтение данных, поиск, форматирование и т. д.. - управляющих работой НГМД.
КНГМД содержит три основных блока: буфер шины данных (БШД) и логику интерфейса (ЛИ), блок управления накопителем (БУН) и блок управления контроллером (БУК). В состав БУК входят два порта: регистр входных/выходных данных (RI/О) и регистр основного состояния (RS). Если младший разряд адреса АО = 1, то выполняется доступ к Rl/О, а если АО = О, то - выбор RS. Регистр RI/O доступен по записи и чтению со стороны процессора и его адрес - 3F5h. а регистр RS доступен только по чтению и имеет адрес, равный 3F4h. Передача данных в НГМД осуществляется по следующей схеме: DB0-DB7 БШД ВШД RI/O -> RO -> WRDATA, где ВШД - внутренняя шина данных, R0 - выходной регистр сдвига и WRDATA - линия выходных данных. Регистр R0 выполняет преобразование параллельного кода в последовательный с дальнейшей выдачей его по линии WRDATA в НГМД. Обратная передача данных из НГМД по линии RDDATA осуществляется с помощью входного регистра сдвига RI по схеме RDDATA -4 RI RI/O ВШД -4 БШД DB0-DB7. Кроме того, регистр Rl/О используется для вывода из процессора байтов команды (параметров) в блок реги-
Контроллер НГМД
613
Рис. 14.5. Структурная схема базового КНГМД
DSO,DS1
SEEK
DIR
STEP
WR PROT
INDEX
READY
TRACK HDI.
IIDSEL
MFM
стров (БР), таких как байт кода операции команды, байт-модификатор, байты с номерами дорожки, поверхности, сектора и т. д. После окончания передачи данных через RI/О выполняется передача байтов состояния КНГМД и НГМД из регистров состояния ST0-ST2. Регистр ST3 хранит состояние НГМД и может быть прочитан по команде «Считать состояние накопителя» с помощью регистра RI/О и регистра RS. В регистре RS бит D7 = 1 указывает на готовность RI/O к приему или передаче данных (для вывода RI/О пуст, а для ввода RI/О полон). Бит D6 RS определяет направление передачи данных: 1 - в процессор, а О - из процессора. Остальные биты RS отмечают состояние КНГМД при выполнении операций поиска, чтения-записи и прерывания. В состав БУК входят также дешифратор адресных меток (ДшАМ), считываемых с дорожки, и сепаратор данных (СД), осуществляющий выделение битов данных по сигналам «Окно данных» DW, формируемых внешней схемой ФАЧ.
БУК вырабатывает синхросигналы VCO, необходимые для работы ФАЧ, и устанавливает сигнал «Разрешение записи» WE, поступающий в НГМД. Для координации работы БУК вводятся синхросигналы записи WRCLK. В связи с тем, что на внутренние дорожки информация записывается более плотно, для реа
614	Гибкие и жесткие диски
лизации этого режима используется внешняя схема предкомпенсации (СПК), на которую поступают сигналы PSO и PS 1, управляющие фазовым сдвигом информации. На рис. 14.6 показана схема сопряжения КПДП, КНГМД и НГМД.
Рис. 14.6. Схема сопряжения КПДП, КНГМД и НГМД
Сигналы PSO и PS1 задают раннюю, нормальную и позднюю синхронизации при записи данных на дорожку. БУН с помощью сигналов DSO и DS1 выполняет выбор НГМД и в режиме поиска осуществляет формирование сигналов: SEEK (поиск), DIR (направление) и STEP (шаг). Кроме того. БУН принимает сигналы от датчиков: WRPROT (защита записи), INDEX (сигнал от датчика индексного отверстия), TRACK (дорожка О). Входной сигнал READY устанавливается, когда включено питание, диск вставлен в накопитель и двигатель набрал заданное число оборотов. Сигнал HDL используется для прижима (загрузки) МГ к поверхности диска. Назначение известных сигналов WR, RD, #CS и т. д. БШД и ЛИ было описано ранее. Эти сигналы в основном используются для доступа к регистрам КНГМД. Вывод байтов команды из памяти в БР выполняется строго в определенном порядке, задаваемом кодом операции команды (первым байтом), а БУК автоматически распределяет поступающие байты в соответствующие регистры БР. Эта фаза работы КНГМД называется фазой приказа, затем наступает фаза выполнения команды, например передача данных, которая заканчивается формированием сигнала прерывания IRQ6. После этого выполняется ввод в процессор байтов состояния ST0-ST2 (фаза результата), в которых отмечается состояние НГМД: неверная команда, не подключен НГМД, ошибка НГМД, ошибка в передаче данных, отсутствует адресная метка, плохая дорожка и т. д.
Базовый КНГМД реализует 15 команд. Формат команды «Чтение данных» (INT13) состоит из 9 байтов, выводимых процессором в фазе приказа. Первый байт формата содержит код операции, второй - номер МГ и накопителя, третий -номер цилиндра (С), четвертый - номер головки (Н), пятый - номер сектора (R), шестой - длину сектора (N), седьмой - номер последнего сектора на дорожке (EOT), восьмой - размер зазора между секторами (CPL), девятый - число записываемых (считываемых) байтов (DTL). Девятый байт учитывается, если N = О.
При выполнении команды «Чтение данных» номер сектора, находящийся в соответствующем регистре БР, сравнивается с номером сектора, читаемого с дорожки. При совпадении этих номеров осуществляется считывание заданного сектора. Затем номер сектора, хранящийся в регистре БР, увеличивается на 1 и выполняется считывание следующего сектора при многосекторной операции. Если дважды поступал сигнал от датчика индексного отверстия, то в регистре
Подключено КНГМД к шине
615
ST1 устанавливается бит «Отсутствие данных». При обнаружении ошибки в поле идентификации или в поле данных устанавливаются соответствующие биты в регистрах ST1 и ST2. Команда «Чтение данных» прекращается по сигналу Т/С (окончание счета).
Команда «Поиск» содержит 3 байта. В первом и во втором байтах этой команды также указываются соответственно код операции и номер МГ и накопителя, а в третьем байте - номер требуемого цилиндра. После завершения операции поиска требуемого цилиндра КНГМД формирует сигнал прерывания IRQ6.
Рассмотрим более подробно выполнение команды «Считать состояние накопителя». Процессор выводит 2 байта: байт команды (04h). содержащий код операции, и байт-модификатор (OOh), выбирающий накопитель и МГ. В первой фазе приказа содержимое битов D7 и D6 регистра RS должно быть соответственно 10, то есть регистр Rl/О КНГМД готов принять данные (пуст) и направление передачи данных из процессора в КНГМД. Перед выводом каждого байта программа процессора проверяет бит D7 RS на равенство его 1. Затем КНГМД выполняет вторую фазу: автоматически читает содержимое ST3 и переводит его в RI/О. В этот момент времени бит D7 регистра RS равен 0. В третьей фазе биты D7 = D6 = 1, то есть регистр RI/О полон и направление передачи данных-из КНГМД в процессор. Программа процессора по этой информации определяет момент ввода содержимого RI/О в свой внутренний регистр.
14.5.	Подключение КНГМД к шине
На рис. 14.7 показана структурная схема подключения КНГМД к системной шине.
ШД	ШЛ	ШУ
в НГМД	MHO МНЗ	из НГМД
Рис. 14.7. Структурная схема подключения КНГМД к системной шине
616
Гибкие и жесткие диски
Структурная схема содержит приемопередатчик данных (ППД), дешифратор адреса и управляющих сигналов (ДшА и УС), КНГМД, СПК, ФАЧ, регистр управления (РУ), блок выбора накопителей (БВН), передатчики (ПЕР) и приемники (ПР). Схема СПК выполняет управляемую задержку последовательных данных записи по сигналам КНГМД ранней, нормальной и поздней синхронизаций (PSO, PS1). ФАЧ формирует сигналы «Окно данных» (DW), поступающие в КНГМД. Регистр РУ доступен по записи со стороны процессора, и ему присвоен адрес 3F2h. Биты DO и D1 РУ определяют номер накопителя, бит D2 используется для сброса КНГМД, бит D3 - разрешения прерывания, а биты D4-D7 необходимы для пуска моторов накопителей. Блок БВН формирует сигналы выбора накопителей и пуска их моторов. Функционирование КНГМД заключается в следующем. Включается мотор выбранного НГМД, и ожидается заданное число оборотов. Затем выполняется поиск нужной дорожки, который завершается формированием сигнала прерывания IRQ6, поступающего в процессор. После этого осуществляется инициализация КПДП (задается режим работы, выводятся стартовый адрес буфера памяти, число передаваемых байтов (слов), разрешается работа 2-го канала). Кроме того, осуществляется загрузка байтов команды в КНГМД в первой фазе приказа. Во второй фазе КНГМД выполняет команду, например чтение (запись) НГМД. После передачи блока данных формируется КНГМД сигнал прерывания IRQ6. Затем процессор осуществляет ввод байтов состояния ST0-ST2 и четырех байтов атрибутов из КНГМД.
14.6.	Конструкция жесткого диска
Жесткий диск (ЖД) имеет герметичный металлический корпус, в котором находятся магнитные головки (МГ), приводы, диски и двигатель. На внешней печатной плате размещены аналоговые и цифровые компоненты, взаимодействующие с контроллером накопителя жесткого магнитного диска (КНЖМД) и формирующие сигналы для управления позиционированием МГ, вращения дисков, записи и чтения данных. КНЖМД может быть выполнен на отдельной плате, но может быть встроен в системную плату. Обычно устройство ЖД размещено отдельно от системной платы и использует КНЖМД надиске диаметром 3,5 дюйма (89 мм) или 5,25 дюйма (133 мм). Диск - круглая алюминиевая пластина с магнитным покрытием. Для нанесения магнитного слоя существуют две технологии: напыление слоя кобальта или ферролакса (оксида железа) на поверхность диска. Старые оксидные диски используют чаще всего метод кодирования MFM, а диски с напылением - RLL. Диски с напылением (RLL) более надежны и имеют более высокую плотность записи.
На рис. 14.8 представлен общий вид дискового пакета.
Диски (пластины) закреплены на оси (шпинделе) двигателя и вращаются со скоростью 2400-5400 и 10 000 и более об/мин. Головки закреплены на каретке и во время работы НЖМД за счет потока воздуха парят над поверхностью диска, причем в каждый момент времени используется только одна магнитная головка для записи-чтения данных. В некоторых НЖМД для исключения аварий диска применяется система подвески маленьких и легких головок. Кроме того, предусматривается автоматическая парковка головок на специальную посадочную дорожку или путем фиксации их над поверхностями дисков. Плотность записи на ЖД существенно зависит от конструкции магнитных головок, материала и технологии их изготовления. В настоящее время для производства магнитных
Размещение данных на жестком диске
617
головок применяется интегральная технология напыления. Каждая головка имеет зазор с противоположными полюсами, магнитный поток которых замыкается через магнитный слой дорожки, вызывая соответствующую ориентацию доменов дорожки. Зазор выполняется очень тонким и узким, чтобы достичь высокой плотности записи (10 000 доменов на один дюйм дорожки). Горизонтальное позиционирование головок выполняется с помощью шагового или линейного двигателя (соленоида), являющегося более быстрым (дорогим) и надежным позиционером.
Шаговый двигатель обеспечивает радиальное движение магнитных головок по шагам (по сигналу «Шаг» магнитные головки перемещаются с одной дорожки на другую). В приводах с шаговым двигателем отсутствует обратная связь для указания местоположения магнитных головок на поверхности диска. В этом случае контроллер НЖМД непрерывно отслеживает позицию магнитных головок. В современных приводах с соленоидом, представляющим собой электромагнит, по обратной связи поступает информация о местоположении головок на дисках. Для этого используются данные, записанные на специальных сервоповерхностях диска. Иногда эти серводанные размещают между дорожками диска, за которыми следят соответствующие датчики. В соленоидных приводах электромагнит тянет металлический стержень для подвода шарнира магнитных головок с пружиной к нужному цилиндру (дорожкам с одинаковым номером) в сторону центра диска с учетом серводанных. Когда магнитное поле соленоида ослабевает на определенную величину, пружина шарнира возвращает магнитные головки к внешнему краю диска. Некоторые фирмы выпускают диски обычно 3,5 дюйма, которые вместе с контроллером размещаются на плате расширения. Также жесткие диски не поддерживают стандартных форматов, но используют дорожки и сектора и имеют емкость 80 или 120 Мбайт.
14.7.	Размещение данных на жестком диске
В жестких дисках данные записываются последовательным способом старшим битом вперед на дорожке так же, как и в НГМД. Дорожки дисков с одинаковым радиусом образуют цилиндр, имеющий номер соответствующей дорожки. При записи файлов с целью экономии времени сначала заполняется весь цилиндр и только после этого осуществляется перемещение магнитных головок на следующий свободный цилиндр. Каждая дорожка обычно делится на одинаковое число
618
Гибкие и жесткие диски
секторов (чаще всего 17). В некоторых НЖМД, например, на внутренних более коротких дорожках размещаются 28 секторов, а на внешних дорожках - 34 сектора. Объем данных в одном секторе равен 512, 1024 или 2048 байт. DOS использует размер сектора в 512 байт данных. Поверхности пластин (магнитные головки) нумеруются 0, 1, 2 и т. д. Поэтому полный адрес сектора в дисковом пакете в BIOS состоит из номера цилиндра, номера поверхности (магнитной головки) и номера самого сектора. BIOS адресует секторы, начиная с первого.
Геометрия диска определяется числом пластин (сторон), дорожек и секторов. BIOS ЖД размещается в ПЗУ и хранит список геометрий (конфигураций) нескольких распространенных дисководов. Каждому типу дисковода присваивается номер, например тип 7 соответствует дисководу ЖД с 615 цилиндрами, 6 сторонами (МГ), 17 секторами на дорожке и емкостью 32,1 Мбайта. Иногда наружные поверхности дисков не используют с целью уменьшения высоты корпуса ЖД. В других НЖМД на этих поверхностях записывают сервосигналы, необходимые для определения текущего положения МГ. Количество дисков, применяемых в НЖМД, обычно находится в интервале 1-15, количество цилиндров 615-2655, а количество секторов 17-34 и более. При форматировании дорожек жесткого диска на низком уровне соответствующим образом размещается и определяется каждый сектор на дорожке, подобно разметке гибкого диска НГМД.
Формат дорожки содержит сектора и зазоры (интервалы), согласующие во времени работу КНЖМД с передачей данных из НЖМД. Каждый сектор содержит поле идентификации, нужное для поиска требуемого сектора и включающее адресную метку идентификатора, номер цилиндра, номер МГ (поверхности), номер сектора и контрольный код идентификатора. Кроме того, сектор включает поле данных, размещенное после поля идентификатора и содержащее адресную метку данных, данные и контрольный код поля данных, проверяющий всю информацию после адресной метки.
14.8.	Технические параметры НЖМД
Форматированная емкость - это количество данных, которое можно хранить на диске. В этом случае учитывается только информация, хранящаяся в полях данных дорожек (без учета служебной). Для поиска нужной дорожки требуется время, называемое временем поиска (<12-60 мс), полученным путем большого числа измерений. Это время позиционирования МГ больше всего ограничивает быстродействие НЖМД, то есть является самым его «узким местом». После подвода МГ к требуемой дорожке необходимо время для ее успокоения (гашения вибрации), которое именуется временем установки. Затем затрачивается время для поиска нужного сектора на дорожке. Усредненное значение этого времени называется временем ожидания. Изготовители НЖМД обычно указывают среднее время доступа до начала чтения данных, то есть результат суммирования времени поиска, времени установки и времени ожидания. Для последних НЖМД время доступа меньше 10 мс. Кроме того, есть еще параметры быстродействия: скорость обмена между НЖМД и КНЖМД или между КНЖМД и процессором. Дисководы ST-412 обеспечивают скорость передачи данных 7,5 Мби-та/с, а дисководы SCSI - 24-40 Мбайт/с. Передача данных между НЖМД и процессором выполняется по следующей схеме:
Процессор <-> буферная память (БП) КНЖМД <-> НЖМД.
Порты адаптера ЖД
619
Если процессор не успевает ввести данные сектора R из БП КНЖМД, а поступают в КНЖМД новые данные сектора R+1 из НЖМД, то наступает перегрузка (переполнение) в работе КНЖМД. Для устранения перегрузки КНЖМД вводят фактор (коэффициент) чередования (ФЧ). Если ФЧ = 6 : 1. то это означает для КНЖМД , что он будет считывать каждый шестой сектор как очередной и вся информация одной дорожки будет считана за 6 оборотов диска. Для реализации ФЧ = 6:1 вводят логические номера секторов (рис. 14.9).
Физические номера R
0	1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16
0	3	6	9	12	15	1	4	7	10	13	16	2	5	8	И	14
Логические номера R
Рис. 14.9. Логические номера секторов для ФЧ = 6 1
С учетом логических номеров R КНЖМД успевает освободить БП до поступления новой информации из НЖМД. Другой способ устранения перегрузки КНЖМД состоит в применении двух блоков буферной памяти, один из которых работает на передачу данных в процессор, а второй - на прием данных из НЖМД.
Другим параметром КНЖМД является цилиндр начальной предкомпенса-ции, начиная с номера которого более плотно упаковывается информация на внутренних дорожках диска. Некоторые фирмы изготавливают дисководы ЖД с разным числом секторов (на внешних дорожках размещается большее число секторов).
В заключение отметим, что быстродействие НЖМД зависит от количества дисков, метода кодирования и конструкции механического привода. Дисководы с соленоидными позиционерами (линейными двигателями, VC) более сложные и быстродействующие, чем старые дисководы, имеющие позиционеры с шаговыми моторами (SM).
14.9.	Порты адаптера ЖД
На рис. 14.10 показана обобщенная схема сопряжения НЖМД и ОП для PC/XT (пунктиром) и PC/AT.
Адаптер содержит буфер данных (БД) на 512 байт, предназначенный для согласования скоростей работы НЖМД и ОП (П). В PC/XT управление передачей 8-разрядных данных выполняет КПДП (канал 3) и в НЖМД используется ФЧ = 6:1. Для PC/AT применяется другой, более совершенный адаптер, использующий другие порты, адреса и команды. В адаптере ЖД PC/AT реализуется 16-разряд-ная передача данных и употребляется фактор чередования 2:1. Данные из НЖМД попадают в буферы данных DOS (БД1 - БД^), каждый из которых имеет длину в 512 байт. В ПК АТ пересылка данных выполняется процессором. Адаптер ЖД PC/АТ работает со многими типами НЖМД, корректирует ошибки длиной 11 или 5 бит. НЖМД выполняет следующие операции: поиск цилиндра, переключение МГ, запись данных с предкомпенсацией - и формирует запрос прерывания IRQ 14. Адаптер ЖД PC/АТ содержит следующие порты. Регистр данных
620	Гибкие и жесткие диски
Рис. 14.10. Схема сопряжения НЖМД и ОПдля PC/AT (XT)
(адрес 1F0H, доступ: запись (W) и чтение (R)) предназначены для временного хранения 16-разрядных данных при выполнении чтения или записи сектора. Регистр выбора НЖМД и номера головки (1F6H, R/W) содержит биты (0-3) и бит 4, избирающие соответственно МГ и накопитель. Для отображения состояния адаптера и НЖМД используется регистр состояния (1F7H, R), в соответствующих битах которого отмечается наличие ошибки, занятости адаптера, неисправности накопителя, сигнала Index и т. д. В регистре ошибок (1F1H, R) указывается состояние адаптера после выполнения операции: не обнаружен нужный идентификатор, отсутствует сигнал дорожка 0, загружена недействительная команда, некорректируемая ошибка в поле данных и т. д. Регистр команд (1F7H, W) предназначен для записи соответствующей команды (поиск, чтение сектора, запись сектора, форматирование и т. д.). В регистр номера сектора (1F3H, W/R) заносится начальный адрес сектора, необходимый для выполнения операции чтения (запись). Код количества считываемых или записываемых секторов загружается в регистр счетчика секторов (1F2H, W). В регистре управления (3F6H, W) устанавливаются биты: разрешение прерывания, сброс адаптера и позволение выбора МГ.
Регистры младшего и старшего байтов номера цилиндра (1F4H, 1F5H, W/R) используются для задания начального цилиндра в операциях чтения или записи. В регистр стартового цилиндра предкомпенсации (1F1H, W) заносится номер цилиндра, уменьшенный в 4 раза, необходимый для работы схемы предкомпенсации, выполняющей более плотную запись данных на внутренних дорожках диска.
14.10.	Контроллеры жесткого диска
В этом разделе рассматриваются принципы построения контроллеров накопителей жесткого магнитного диска (НЖМД) компьютеров PC/ XT и PC /АТ.
Функциональные классификационные признаки контроллера НЖМД PC /ХТ следующие.
Контроллеры жесткого диско
621
Дисциплина обслуживания - возможность подключения к компьютеру двух НЖМД, имеющих интерфейс ST412. Контроллер НЖМД - это мост, соединяющий системный интерфейс компьютера с интерфейсом ЖД ST412.
Структура данных определяется низкоуровневым форматом дорожки ЖД (выходные данные), содержащим сектора с адресными метками и полем идентификации цилиндра поверхности сектора. Кроме того, в качестве входных данных используется 6-байтовый формат блока данных, задающий код команды, номер дорожки, количество секторов при записи или чтении данных и режим работы.
Временное согласование читаемых с дорожки ЖД данных осуществляется с помощью схемы фазовой автоподстройки частоты (ФА4), которая формирует тактовые сигналы, синхронизируемые с этими данными и позволяющие определить положение битового интервала. При записи данных на дорожку ЖД используется блок предкомпенсации (ВПК), выполняющий раннюю, нормальную и позднюю синхронизации данных при их записи. Это связано с тем, что на внутренние дорожки информация записывается более плотно, чем на внешние. ВПК - это управляемая линия задержки записываемых данных.
Метод кодирования данных - модифицированная частотная модуляция (MFM), применяется для синхронизации данных, размещаемых на дорожке с целью дальнейшего их нахождения в режиме чтения.
Метод записи данных - NRZ (без возвращения к нулю), метод кодирования, позволяющий для длинных последовательностей 1 и О, записываемых на дорожку ЖД, распознавать при их чтении значения единиц или нулей. Запись по методу NRZ позволяет изменять ток в обмотке магнитной головки в заданных направлениях. Методу записи NRZ предшествует метод кодирования MFM.
Способ передачи данных - параллельно-последовательный при записи данных на ЖД и последовательно-параллельный при чтении данных, выполняется путем преобразования кодов в БИС контроллере ЖД.
Режимы обмена данными - программный ввод/вывод и прямой доступ к памяти.
Программный ввод/вывод осуществляется при инициализации контроллера НЖМД со стороны процессора компьютера и заключается в программировании его портов: для разрешения прерывания и запроса ПДП (DREQ3) к 3-му каналу микроконтроллера ПДП компьютера: с целью выбора контроллера и чтения его состояния. Кроме того, в этом режиме через порт данных выполняется передача 6-байтового блока данных с указанием выполняемой команды и параметров в буферную память контроллера НЖМД. После завершения выполнения команды, связанной с передачей данных, с помощью порта данных осуществляется ввод в процессор из буферной памяти контроллера НЖМД байта завершения и четырех байтов состояния.
Программный ввод/вывод контроллера НЖМД имеет много общего с аналогичным режимом контроллера НГМД (фазой приказа, фазой выполнения и фазой результата).
Прямой доступ к памяти компьютера выполняется с использованием 3-го канала КЗ его контроллера ПДП при передаче (приеме) сектора данных в буферную память (из буферной памяти) контроллера НЖМД. Причем буферная память контроллера НЖМД также управляется местным контроллером ПДП (рис. 14.11).
Буферная память предназначена для хранения данных сектора, 4 байтов CRC, байта завершения, 4 байтов состояния и 6 байтов блока данных команды и
622
Гибкие и жесткие диски
Рис. 14.11. Организация режима ПДП
параметров. Для управления буферной памятью в циклах ПДП используется 1 -й канал (К1) местного контроллера ПДП.
Контроль данных по методу полинома 32-й степени. Степень полинома определяет количество байтов контрольного циклического кода CRC. При обнаружении ошибки блоком CRC выполняется исправление пакета ошибок программным способом с помощью микропроцессора контроллера НЖМД.
Параметрическая классификация контроллера НЖМД определяется интерфейсом ST412.
Скорость передачи данных между контроллером и НЖМД и накопителем -5 Мбит/с.
Количество проводников в кабеле - 54.
Длина кабеля - 3 м.
Структурная схема контроллера НЖМД PC/XT представлена на рис. 14.12 и представляет практический интерес, так как в ней используются микропроцессор и контроллер прямого доступа к памяти, то есть изложен опыт построения таких микропроцессорных периферийных устройств с организацией ПДП.
Центральной частью контроллера НЖМД является микропроцессор (МП), имеющий собственное программное обеспечение, обеспечивающее работу с компьютером и накопителем ЖД Программы МП расположены в ПЗУ.
С помощью контроллера ПДП осуществляется доступ МП к буферной памяти (БП) с использованием различных каналов в зависимости от вида читаемой или записываемой информации. Для выполнения этой цели МП выполняет программирование соответствующих каналов.
Блок сопряжения (БС) содержит типичные схемы (селектор адреса, приемопередатчик, дешифратор управляющих сигналов, адресуемые регистры), необходимые для взаимодействия с системной шиной.
В режиме записи данных 512 байт из буферной памяти попадают в блок CRC и контроллер диска. Вычисленный 4-байтовый код CRC добавляется к 512 байтам, и с помощью контроллера диска этот блок данных последовательно, бит за битом передается в накопитель ЖД.
В режиме чтения выполняется последовательный прием битов данных из накопителя ЖД, которые преобразуются в контроллере ЖД в параллельные байты, поступающие в буферную память и в блок CRC.
Блок CRC представляет собой делитель поступающих байтов (512+4 байта CRC). Если остаток от деления равен О, то данные приняты без ошибок. При об-
Контроллеры жесткого диска
623
Рис. 14.12. Структурная схема контроллера НЖМД PC/XT скпдп - системный контроллер прямого доступа, ОП - оперативная память, СШ - системная шина, БП - буферная память, БС - блок сопряжения, МП - микропроцессор, ПЗУ - постоянное запоминающее устройство, вшд- внутренняя шина данных, ФАЧ - фазовая подстройка частоты, БПК - блок предкомпенсации, МГ - магнитная головка, Н - накопитель
наружении остатка, отличного от О. МП с помощью соответствующего канала контроллера ПДП считывает из буферной памяти 4 байта CRC (синдром ошибки), анализирует их и выполняет коррекцию ошибок с использованием специального алгоритма.
Общий принцип функционирования контроллера НЖМД заключается в следующем. Процессор через порт данных осуществляет вывод 6 байтов команды в буферную память контроллера НЖМД с помощью соответствующего канала контроллера ПДП, сообщающего в конце передачи данных микропроцессору (МП) о том, что вывод завершен. После этого выполняется передача этих 6 байтов из буферной памяти во внутреннюю память МП также с использованием контроллера ПДП. Микропроцессор анализирует принятый блок данных и выполняет соответствующую команду, например читать или записать требуемый сектор. Затем МП записывает в буферную память байт завершения и формирует сигнал прерывания IRQ5. В свою очередь, процессор компьютера считывает из фиксированной ячейки буферной памяти байт завершения, и если обнаруживается установленный бит ошибки, то процессор вводит 4 байта уточненного состояния, в котором указан перечень ошибок.
624	Гибкие и жесткие диски
Контроллер НЖМД PC/AT
Функциональные классификационные признаки НЖМД-IDE (базовый вариант):
1. Дисциплина обслуживания - внешнее энергонезависимое хранение программного обеспечения, компьютерных данных, программ пользователей, операционной системы и т. д., доступное процессору с помощью операций ввода/вывода.
2. Структура данных - определяется низкоуровневым форматом дорожки накопителя, разбитой на секторы. Количество секторов зависит от местоположения дорожки на поверхности диска и метода кодирования. Каждый сектор содержит поле идентификации (ИД) и поле данных (рис. 14.13).
Поле идентификации						Поле данных			
									
АМИД	нц	НП	НС	КУК	СБ	АМД	Данные	КУК	Пробел
Рис. 14.13. Формат сектора
АМИД - адресная метка идентификатора, НЦ - номер цилиндра, НП - номер поверхности, НС - номер сектора, КЦК - контрольно-циклический код, СБ - синхробайты, АМД - адресная метка данных
Структура дорожки ЖД во многом совпадает со структурой дорожки гибкого диска, и назначение полей сектора было рассмотрено в разделе, связанном с описанием принципов магнитной записи.
Кратко опишем другие виды информации ЖД.
Сервоинформация предназначена для работы электромагнитного привода (соленоида) магнитных головок при поиске требуемого цилиндра и стабилизации скорости вращения двигателя СКД. Как уже отмечалось, сервоинформация размещается на выделенной поверхности диска или между секторами.
На рис. 14.14 представлена структурная схема контроллера НЖМД РС/ АТ.
Рабочие программы микропроцессора контроллера НЖМД выполняют следующие функции: управление позиционированием магнитных головок, доступа к буферной памяти, диагностикой контроллера и накопителя, работой микроконтроллера, входящего в состав контроллера НЖМД, и управление работой шпиндельного двигателя.
Конфигурационные данные спецификации Р&Р (Plug and Play), необходимые для автоматической настройки накопителя НЖМД. В конфигурационных данных указываются: класс и подкласс устройства, изготовитель, количество цилиндров, секторов на дорожке, магнитных головок и байтов в секторе, емкость буфера и т. д.
Микроконтроллер (МК) выполняет следующие функции:
• взаимодействия с системным интерфейсом с помощью шины IDE и портов ввода/вывода, предназначенных для инициализации НЖМД со стороны процессора:
Контроллеры жесткого диска
625
Шина IDE
D15-D0
А2-А0
-CS3F* * *
-CS1F* *
-IOW *
-IOR * *
IRQ14 ’
IOCS16 RESET ipCHRDY
Рис. 14.14. Структурная схема НЖМД-IDE:
МК - микроконтроллер, СПР и ВПК - сепаратор и блок предкомпенсации, ЗП/ЧТ - запись/чтение, БП - буферная память, МП - микропроцессор, УП - управление позиционером, МГ - магнитные головки, ДВТ - двигатель, УД - управление двигателем, Q - резонатор
• управление буферной памятью, выполняющей хранение программируемого сектора данных и байтов ЕСС;
• совместной работы с МП, получающего доступ к внутренней шине МК с помощью типичных для этого случая сигналов;
• управление работой НЖМД при выполнении соответствующих команд;
• преобразование параллельного кода в последовательный с учетом метода кодирования при записи его на дорожку ЖД и обратное.
Микропроцессор (МП) предназначен для общей координации действий МК при выполнении программ BIOS, в том числе и диагностики НЖМД. Кроме того, МП осуществляет функции управления позиционером и двигателем жесткого диска.
Сепаратор данных (СПР) содержит схему фазовой подстройки частоты, с помощью которой выполняется слежение за частотой считываемых сигналов с дорожки диска с целью достоверного определения их местоположения.
Схема предкомпенсации (СПК) выполняется обычно на базе элементов задержки, подключенных к мультиплексору, на адресные входы которого поступают сигналы PSO и PS 1, задающие выбор элемента задержки и определяющие моменты появления записываемых данных на линии WRDATA.
Схема управления позиционером содержит солиноидный двигатель, на котором формируются сигналы рассогласования от МП (токовые импульсы), сравнивающего по поступающей сервоинформации действительного положения магнитных головок с требуемой позицией.
Сервоинформация записывается либо на выделенной поверхности ЖД, либо между секторами или размещается в самом формате сектора.
МК содержит схему управления НЖМД, которая осуществляет преобразование информации в режимах записи и чтения данных.
626
Гибкие и жесткие диски
Режим записи:
7 6 5 4 3 2 1 0
| 0 | 0 | 0 | 0 | | | ~|~~|
Биты:
0: 1=прерывание по приему символа
1:	1 прерывание по завершению передачи символа
2:	^прерывание по обрыву линии или ошибке в линии
3:	1=прерывание по изменению состояния модема (любой из линий CTS. DSR. RI и DCD)
Режим чтения:
7 6 5 4 3 2 1 0
|0|0|0|0|0|
Биты
0: 0=есть отложенные прерывания
1-2: причина прерывания:
11=ошибка или обрыв линии; сбрасывается чтением регистра состояния линии (порт 3FDh);
10=принят символ; сбрасывается
чтением приемника (порт 3F8h);
01=передан символ; сбрасывается записью символа в регистр передатчика (порт 3F8h);
00=изменение состояния модема
(линий CTS, DSR, RI и DCD); сбрасывается чтением регистра состояния модема (порт 3FEh);
Схема управления НЖМД микроконтроллера выполняет следующие команды:
•	запись сектора;
•	чтение сектора;
•	чтение дорожки;
•	запись секторов на дорожку;
•	форматирование сектора;
•	форматирование дорожки;
•	поиск адресной метки.
Кроме того, схема управления НЖМД включает в себя порты, с помощью которых МП выполняет координацию ее действий.
Привод с подвижной катушкой использует принцип ориентирующего действия магнитного поля постоянного магнита на обмотку с током подвижной катушки.
Принцип перемещения подвижной катушки с током под действием постоянного магнита в электромагнитном приводе жесткого диска напоминает принцип действия электроизмерительных приборов, содержащих подвижную катушку, размещенную между полюсами постоянного магнита. Изменение силы тока в катушке вызывает ее поворот на определенный угол.
Программирование гибкого диска
627
Подвижная катушка жесткого диска закреплена на рычаге магнитных головок, имеющем ось вращения, и расположена в магнитном поле постоянного магнита. При протекании тока по катушке происходит ее перемещение вместе с магнитными головками относительно поверхности жесткого диска.
Привод с подвижной катушкой использует обратную связь, по которой передается сервоинформация, указывающая на взаимное расположение дорожек и магнитных головок.
Парковка магнитных головок с подвижной катушкой осуществляется с помощью пружины, возвращающей их на специальное посадочное место, при выключении питания компьютера.
Сервоинформация - справочная информация обратной связи, размещаемая на диске и необходимая для определения местоположения магнитной головки на поверхности диска.
Привод (позиционер) - механизм перемещения рычагов с магнитными головками на требуемую дорожку.
Различают два способа хранения сервоинформации: путем выделения специальной следящей поверхности, сервоинформация с которой считывается дополнительной сервоголовкой: путем записи сервоинформации между секторами, получившей название встроенной сервосистемы.
Первый способ имеет существенные недостатки, связанные с необходимостью использовать всю поверхность диска только для хранения сервоинформации и строгой фиксации всех магнитных головок без каких-либо отключений относительно друг друга при их движении.
Наиболее употребительной является встроенная сервосистема, в которой перед каждым сектором записывается сервоинформация о радиальной позиции и о точном радиальном позиционировании магнитной головки. В качестве недостатка этого способа можно указать некоторые затраты времени, связанные с установкой головки на дорожку при ее отклонении.
В некоторых случаях применяют комбинированный способ, сочетающий и выделенную поверхность,, и встроенные серводанные, или скрытые серводанные размещаемые на глубине диска под данными, которые считываются с помощью специальных головок.
14.11. Программирование гибкого диска
Формулировка задания
Разработать программу на ассемблере, выполняющую следующие операции: выбор накопителя, пуск мотора, поиск дорожки, чтение заданного сектора, вывод на экран байтов фазы завершения с описанием назначения каждого бита, чтение идентификатора сектора или чтение состояния НГМД с выводом соответствующих данных на экран. Эта программа представляет практический интерес еще и потому, что в ней программируется контроллер прямого доступа, управляющий работой внешнего запоминающего устройства.
Основные сведения
Гибкий диск обычно имеет две рабочие поверхности (сторону О и сторону 1). На каждой поверхности расположены дорожки, например дорожка О, ..., дорожка 79, а каждая дорожка содержит несколько секторов (9, 15), каждый из кото-
628
Гибкие и жесткие диски
рых может содержать 128 ... 1024 байта данных. Стандартный размер сектора в DOS равен 512 байтам данных. DOS использует одномерный доступ к секторам (R) гибкого диска. Сектора на обеих сторонах диска последовательно нумеруются от нулевого до последнего, например RO, R1, ..., R1439.
В BIOS принят трехмерный способ обращения к секторам диска. При этом указывается номер стороны (Н), дорожки (С) и сектора (R), например НО, С50, R7, причем нумерация секторов начинается с 1 по 9 (15).
Различают физическое и логическое форматирования дорожек диска. Физическое форматирование выполняется BIOS с помощью контроллера НГМД (КНГМД) и предназначено для поиска заданной дорожки (сектора), временного согласования работы КНГМД и НГМД и контроля данных. При физическом форматировании каждый сектор дорожки содержит поле данных (512 байт) с контрольным кодом и предшествующее ему поле идентификации, включающее номера дорожки, стороны, сектора, размер сектора и контрольный код. Поле идентификации и поле данных имеют собственные уникальные адресные метки, не совпадающие с кодами данных, по которым КНГМД определяет размещение полей идентификации и данных определенного сектора на поверхности дорожки диска.
Логическое форматирование осуществляет DOS, она разбивает все сектора на четыре сегмента, следующие друг за другом. Первый сегмент размещается в секторе R0 и называется загрузочной записью операционной системы. Во втором сегменте располагается таблица размещения файлов (FAT), которая занимает область дорожки в два или четыре сектора, начиная с R1. Для повышения сохранности FAT имеет две копии. В третьем сегменте содержится каталог файлов, в котором для каждого файла указываются его имя, размер и, помимо дополнительной информации, номер начального сектора файла. Четвертый сегмент занимает большую часть диска и хранит данные. При размещении файла DOS оперирует не с секторами, а с кластерами, состоящими из нескольких секторов.
Обмен данными (Д) между НГМД и оперативной памятью (ОП) реализуется по следующей схеме (рис. 14.15).
Д	Д
НГМД < КНГМД < >оп
I
п----1н>кпдп
Рис. 14.15. Схема обмена данными НГМД и ОП
На рис. 14.15 показано, что данные передаются через КНГМД под управлением контроллера прямого доступа к памяти (КПДП). В этом режиме захватчиком (инициатором) является КПДП, а исполнителем - ОП.
Передача данных выполняется аппаратным способом без участия процессора (П), который предварительно осуществляет инициализацию (настройку) КНГМД и КПДП, а затем освобождает системную шину и передает управление КПДП.
Программирование гибкого диска
629
КПДП содержит несколько каналов, работающих в режиме разделения времени.
Возможна организация обмена данными между НГМД и ОП непосредственно через КНГМД и процессор в режимах прерывания и опроса флага готовности (без использования КПДП).
КНГМД-это сложное устройство, выполняющее: преобразование параллельного кода в последовательный при записи его на дорожку дискеты и обратное преобразование при его чтении; управление интерфейсом НГМД; совместную работу с КПДП и процессором; реализацию таких команд, как запись (чтение) данных, форматирование, поиск и т. д. Взаимодействие процессора и КНГМД осуществляется с помощью специальных портов: регистра входных/выходных данных (R I/O), основного регистра состояния (RS), регистра управления (RC) и регистра управления скоростью (RR), доступного только по записи. Регистрам присвоены адреса: R I/O - 3F5h, RS-3F4h, RC - 3F2h, и RR - 3F7h.
Регистр RR используется только в PC/AT, значения его битов D1 и DO представлены в табл. 14.2.
Таблица 14.2		
D1, DO	Скорость, Кбит/с	Плотность записи дисков
аГ	500 		Учетверенная (QD)
01	300			Двойная (DD)
10	250	Одинарная
На рис. 14.16 представлен формат регистра RC.
Рис. 14.16. Формат регистра управления RC
С помощью битов регистра RC, доступного по записи со стороны процессора, осуществляется выбор соответствующего НГМД для пуска его мотора и разрешения прерывания. Кроме того, в случае необходимости возможен сброс КНГМД в исходное состояние. Так как при этом теряется ориентация текущего положения магнитных головок на поверхности диска, то затем следует выполнить рекалибровку, то есть установить головку на дорожку О.
630
Гибкие и жесткие диски
Формат основного регистра состояния RS показан на рис. 14.17.
Рис. 14.17. Формат основного регистра состояния
Для выполнения заданного варианта программы используются только биты D7 и D6 регистра RS.
На этапе инициализации КНГМД. если бит D6 = 0 и бит D7 = 1. это указывает на то, что регистр R I/O пуст и процессор (П) может загружать его байтом команды. При записи данных в регистр R I/O бит D7 сбрасывается. Комбинация D7 = D6 = 1 означает, что регистр R I/O полон (автоматически загружен со стороны КНГМД) и П может считывать его содержимое. При чтении данных из регистра R I/O бит D7 регистра RS сбрасывается. Таким образом, биты D7 и D6 регистра RS синхронизируют совместную работу П и КНГМД с помощью установки и сброса бита D7, указывающего на готовность R I/O.
Контроллер НГМД выполняет 19 команд: форматирование дорожки, запись данных, чтение данных, чтение идентификатора сектора, чтение состояния НГМД, включение (выключение) мотора, возврат состояния регистров и т. д. Выполнение некоторых команд, например связанных с передачей данных, состоит из трех фаз: фазы приказа (вывода байта команды), фазы выключения (передачи данных) и фазы выполнения результата (ввода байтов состояния). Рассмотрим примеры выполнения некоторых основных команд. Команда чтения данных имеет следующий формат (рис. 14.18).
Аналогичный формат имеет команда записи данных, код которой 00101.
Байты команды поступают из П в КНГМД в строго определенном порядке, который задается кодом команды, размещенным в первом байте. КНГМД, получив первый байт, распределяет выводимые байты в соответствующие регистры байтов команды.
При выполнении команды чтение данных П в фазе приказа выводит в КНГМД через регистр R I/O 9 байтов команды (рис. 14.19).
Программирование гибкого диска	631
D7	D1	DO	МТ=1 - многодорожечная
МТ|MF|SK| 0 | 0	1	1	0	1 операция
	HD US1	USO	2 MF(MFM) - метод кодирования
с			3 SK—1 - пропуск удаленных
			данных
н			4 HD - номер головки
	R				5 US1 .USO - номер НГМД
	N				6 С - номер цилиндра
	EOT				7 Н - номер головки
GPL			8 R - номер сектора
			g N - длина сектора
DTL			(0-128,1 -256 3-1024)
	:	Выполнение команды IRO6 •	,	ч			EOT - номер последнего сектора
У .	(передача данных )				на । ^илиндрл
	STO				1 GPL - длина межсекторного
	ST1				2 промежутка
	ST2				3 DTL - число записываемых
	С				4 (читаемых) данных, имеет
н			5 значение при N -0
			00110 - код команды
N			® ST0-ST2 - байты состояния
	R				7 КНГМД и НГМД
Рис. 14.18. Формат команды чтения данных			
3F4h НГМД
Рис. 14.19. Схема потоков данных в КНГМД
Вывод каждого из 9 байтов команды выполняется путем опроса битов D7 и D6 регистра RS(3F4h). Если в регистре RS D7D6 = 10, то осуществляется вывод очередного байта в R I/O (3F5h). После завершения фазы приказа выполняется передача данных между ОП и НГМД через регистр R I/O и системную шину (СШ) в фазе выполнения команды. В конце этой фазы формируется сигнал запроса прерывания IRQ 6, что означает конец передачи данных, и начинается фаза ре
632	Гибкие и жесткие диски
зультата, связанная с вводом 7 байтов завершения (см. рис. 4). Перед вводом каждого байта проверяются состояния битов D7, D6 регистра RS, которые должны быть равны 1, что указывает на готовность регистра R I/O передать этот байт (регистр R I/O полон). КНГМД автоматически загружает R I/O и устанавливает биты D7 и D6 регистра RS.
Регистр состояния НГМД ST3 считывается путем выполнения команды «чтения состояния» НГМД, имеющей следующий формат (рис. 14.20).
Рис. 14.20. Формат команды чтения состояния НГМД
Эта команда также имеет три фазы выполнения (рис. 14.20). В первой фазе процессор выводит через регистр R I/O 2 байта команды в КНГМД. Во второй фазе реализации команды КНГМД загружает регистр R I/O содержимым ST3 и устанавливает биты D7 и D6 регистра RS (3F4h) в единичное состояние. Процессор программно сканирует биты D7 и D6 регистра RS и после установки флага готовности (бита D7) считывает значение ST3 в фазе результата. Биты D1 и D0 регистра ST3 указывают на номер НГМД, а бит D2 определяет номер головки. Единичные значения других битов D3-D7 регистра ST3 соответственно устанавливают наличие следующих сигналов от НГМД: дискета двухсторонняя, дорожка 0, готовность, защита от записи и ошибка.
Команда поиск имеет фазу приказа и фазу выполнения. В фазе приказа процессор через регистр R I/O выводятся 3 байта команды, а в фазе выполнения осуществляется позиционирование головки на заданную дорожку (цилиндр). Формат команды поиска изображен на рис. 14.21.
В третьем байте этой команды указывается номер требуемой дорожки (С). После установки головки на заданной дорожке КНГМД сообщает об этом сигналом прерывания IRQ6.
	D7	D1	DO
	0	0	0	0	11	0	0 1
	х х х х х HD	US1	USO 2
	С		3
л IRQ 6	Выполнение команды		
			
Рис. 14.21. Формат команды поиска			
Программирование гибкого диска
633
Завершение операции поиска может быть определено и по биту D7 байта состояния, размещенного в области данных BIOS по адресу 0040:003Е.
Работой НГМД управляет драйвер BIOS, для обращения к нему используется программное прерывание INT13h. выполняющее несколько функций: сброс НГМД (0), считать состояние (1), читать сектор (2), записать сектор (3), проверить сектор (4), разметить сектор (5).
Эти функции реализуются с учетом базовой дисковой таблицы, хранящейся в ПЗУ с начальным адресом, заданным в векторе прерывания lEh. В базовой дисковой таблице указаны параметры работы НГМД: время шага, загрузки (подъема) головки, сохранения состояния включенного двигателя и т. д. Кроме того, в таблице заданы параметры дорожки (N. EOT. GPL и DTL (рис. 14.18)).
Функция проверки сектора совпадает с функцией «читать сектор», за исключением того, что данные не передаются. Эта функция проверяет поиск заданного сектора и контрольный код записанных и читаемых данных.
В области данных BIOS с начальным адресом 0040:003Eh отражается текущее состояние НГМД: состояние привода, счетчик времени работы двигателя, байт индикации ошибок и байты уточненного состояния.
В заключение приведем последовательность действий, которые должна реализовать программа варианта задания: разрешить прерывания, осуществить пуск двигателя, выбранного НГМД с ожиданием набора оборотов, выполнить операцию поиска желаемой дорожки (рис. 14.21) с учетом времени успокоения головки, инициализировать КПДП, установить указатель на базу данных BIOS диска (номер вектора lEh), функция 35h прерывания INT2111), вывести 9 байтов параметров команды чтения состояния НГМД (рис. 14.20), выключить двигатель и представить на экране монитора байты состояния ST0-ST3 с описанием назначения каждого бита.
КПДП PC/AT имеет 7 каналов ПДП. Для совместной работы с КНГМД используется канал 2. Каждому каналу соответствует регистр режима (порт OBh), в котором для нашего случая следует задать код 46h (режим чтения). Кроме того, в начале программы следует один раз сбросить триггер первый/последний (Тп/п, порт OCh), управляющий занесением выводимых байтов в младшую (7-0) или старшую (15-8) часть соответствующего 16-битового регистра КПДП. В любом канале КПДП содержатся 16-битовый регистр текущего адреса (порт 04Ь для канала 2) и 16-битовый регистр текущего числа циклов (порт 05h для канала 2). Регистр текущего адреса предназначен для хранения младшей части адреса (биты 15-0) памяти. Старшие биты адреса (23-16) задаются в регистре страницы (порт 81 h для канала 2). Содержимое регистра текущего числа циклов определяет количество передаваемых байтов (слов). КПДП, кроме того, содержит регистр маски (порт OAh), каждый бит которого разрешает (запрещает) работу соответствующего канала, схема портов для канала 2 представлена на рис. 14.22.
Инициализация КПДП состоит из:
•	вычисления 24-битного адреса памяти, предназначенного для хранения читаемого сектора и занесения его в регистр текущего адреса и регистр страницы канала 2:
•	загрузки регистра текущего числа циклов (счетчика канала 2) кодом количества передаваемых байтов, уменьшенного на 1 ;
•	разрешения работы канала 2 путем сброса соответствующего бита регистра маски, что выполняется путем посылки кода 010 в этот регистр.
634
Гибкие и жесткие диски
1
А23-А16
7
___________________О
| Регистр страницы порт 81 h	Д
КПДП
| регистр режима |
порт ОВЬ
D0-D7
DREQ2
| регистр маски | портОАЬ | Тп/п
триггер
1 первый/последний
I порт ОСЬ
Рис. 14.22. Схема портов второго канала КПДП
В заключение рассмотрим формат регистра режима КПДП, показанный на рис. 14.23.
D7	D6	D5	D4	D3	D2	D1	D0
режим:
00 - передача по требованию
01 - одиночная
передача
10 - блочная
передача
11 - каскадирование
1 - режим
автои н и циал изаци и
номер канала (00-0,..., 11-3)
тип цикла ПДП 00 - проверка 01 - чтение 10 - запись
1 /0 - декремент(-1 )/инкремент(+1) адреса
Рис. 14.23. Формат регистра режима
Разберем назначение битов этого регистра. В битах D1 и D0 указывается номер канала, для которого направляется содержимое регистра режима, а в битах D3 и D2 - тип выполняемой операции. Бит D4, равный 1, задает режим автоинициализации. заключающийся в том. что передача блока данных может быть повторена с прежними стартовыми данными в регистрах текущего адреса и текущего числа циклов. Увеличение (уменьшение) текущего адреса определяется битом D5. Биты D7 и D6 устанавливают один из режимов обслуживания. Режим
Программирование гибкого диска	635
передачи по требованию (D7/D6 = О) состоит в том, что данные передаются при наличии сигнала запрос ПДП (DREQ N, где N - номер канала). Снятие этого сигнала вызывает прекращение передачи данных. Одиночная передача связана с передачей одного байта (слова), после чего КПДП освобождает (по крайней мере, на один цикл) системную шину, а затем выполняет очередной ее захват для передачи следующего байта. Блочная передача заключается в безостановочной передаче всего блока данных, пока содержимое регистра текущего счетчика циклов не станет равным FFFFh. Режим каскадирования используется для соединения нескольких КПДП с целью наращивания числа каналов, например в PC/AT применяются два каскадно-включенных КПДП, причем канал под номером 4, реализующий каскадное соединение, не используется для управления передачей данных. В PC/AT каналы 3-0 применяются для байтовых передач, а каналы 7-5 - для обмена 16-битовыми словами.
Если заслать код 46h в регистр режима, то это будет соответствовать выбору канала 2, заданию режима чтения НГМД, запрету режима автоинициализации, инкременту адреса и режиму одиночной передачи.
Пример выполнения варианта задания
Программа выполняет следующие действия:
1.	Ввод имени накопителя. Перевод имени в номер.
2.	Ввод номера головки. Повтор, если не 0 или 1.
3.	Ввод номера дорожки. Повтор, если не 00-79.
4.	Ввод номера сектора. Повтор, если не 01-18.
5.	Включение мотора и ожидание набора оборотов.
6.	Посылка команды поиска дорожки. Ожидание установки флага готовности. Задержка на подход головок.
7.	Настройка 2-го канала КПДП на обмен с КНГМД.
8.	Получение указателя таблицы диска.
9.	Посылка команды чтения области данных сектора. Ожидание установки флага готовности.
10.	Чтение 7 байтов статуса.
11.	Вывод результата операции (данные либо код ошибки , то есть байт статуса 1).
12.	Ожидание нажатия клавиши. Если Esc, то переход на пункт 13, иначе переход на пункт 2.
13.	Завершение программы. Примечание: компилировать как сот-модуль.
чтение произвольного сектора
code segment
org assume cs:>	lOOh		/Смещение 100Н под psp corn
			;программы
	code fds:	code	/Назначение сегментных регистров
BEGIN: jmp	start		/Переход на выполнение программы /описание данных
buffer	db	512 dup(O)	/буфер под содержимое сектора
sta_buf	db	7 dup (0)	/буфер под регистры статуса
messagel	db	’Операция: чтение$ ’	/сообщение!
message2	db	’Накопитель: ’	/начало сообщения2
driveASCII	db	0, ’$’	/имя накопителя
message3	db	’Головка:’	/начало сообщенияЗ
636
Гибкие и жесткие диски
headASCII	db 0, ’$’	;номер	головки в ASCII коде
message4	db ’Цилиндр:’	/начало	сообщения4
cylindreASCII	db 0,0,’$’	;номер	цилиндра в ASCII кодах
messages	db ’Сектор:’	/начало	сообщенияБ
sectorASCII	db 0,0, ’$’	;номер	сектора в ASCII кодах
drive	db 0	;номер	накопителя
head	db 0	;номер	головки
cylindre	db 0	/номер	цилиндра
sector	db 0	; номер	сектора
line	db 80 dup (0C4h),’$’	/строка	вида”-”
ermessage	db ’При чтении возникла	ошибка (	) $’
messages	db ’Нажмите любую клавишу (<ESC>		— Выход).$’
CLRSCR proc
CLRSCR endp
;процедура очистки экрана
mov ah,06h	;6-я функция прерывания lOh
mov al,0	/прокрутка всего экрана
mov bh,OFh	;атрибут символа заполнителя
mov cx,0	/координаты верхнего левого угла
	;экрана
mov dx,184Fh	/координаты правого нижнего угла
	;экрана
int lOh	/вызов обработчика прерывания
ret	/возврат из процедуры
;процедура вывода строки WRITEXY ргос
mov ah,02h	/функция установки курсора
mov bh,0	/видеостраница 0
push dx	/сохраним адрес строки
mov dx,ex	/подготовим координаты курсора
int lOh	/остановим курсор
pop dx	/восстановим адрес строки
mov ah,09h	/функция вывода строки с [dx]
int 21h	/выведем строку на экран
ret	/возврат из процедуры
WRITEXY endp /процедура вывода содержимого буфера WRITEBUF proc	данных
mov ah,02h	/функция установки курсора
mov bh,0	/видеостраницаО
mov dx,ex	/подготовим координаты курсора
int lOh	/остановим курсор
mov ex,512	/остановим число выводимых символов
mov bx,0	/указатель на текущий байт
wf: mov al,buffer[bx]	/возьмем текущий символ
push ex	/сохраним счетчик байтов
push bx	/сохраним указатель
mov cx,l	/число повторений=1
mov bh,0	/видеостраница 0
mov ah,0Ah	/функция 0А
int lOh	/вывод символа в позицию курсора
mov ah,02h	/функция 02
inc dl	/сдвинем позицию курсора в строке
cmp dl,80	/проверим на конец строки
jne wfl	/если нет, то переход на метку wfl
Программирование гибкого диска	637
mov dl,0 inc dh			/курсор в начало строки /курсор на следующую строку
wfl	int lOh		/остановить курсор
	pop bx		/восстановить указатель
	pop ex		/восстановить счетчик
	inc bx		/нарастить указатель
	loop wf		/повтор цикла (сх=0: выход)
	ret		/ возврат из процедуры
WRITEBUF endp			
/Процедура вывода результата			
WRITE_RESULT proc			
	call	clrscr	/очистим экран
	mov	al,drive	/возьмем номер накопителя
add	al,41H		/преобразуем в имя накопителя
	mov	driveASCII,al	/запишем в память
	mov	ex,OOOOh	/ курсор в 0,0
	lea	dx,messagel	/dx-адрес сообщения!
	call	writexy	/вывод сообщения 1
	mov	ex,OlOOh	/курсор в1,0
	lea	dx,message2	/dx-адрес сообщения2
	call	writexy	/вывод сообщения2
	mov	ex,0200h	/курсор в 2,0
	mov	al,head	/возьмем номер головки
	add	al,30h	/преобразуем в ASCII-код
	mov	headASCII,al	/запишем в память
	lea	dx,message3	/dx-адрес сообщенияЗ
	call	writexy	/вывод сообщенияЗ
	mov	ex,0300h	/курсор в 3,0
	lea	dx,message4	/dx-адрес сообщения4
	call	writexy	/вывод сообщения4
	mov	ex,0400h	/ курсор в 4,0
	lea	dx,messages	/dx-адрес сообщенияЗ
	call	writexy	/вывод сообщенияЗ
	mov	ex,0500h	/курсор в 5,0
	lea	dx,line	/dx-адрес строки line
	call	writexy	/вывод строки
	mov	al,sta_buf	/возьмем 1-й байт статуса
	and	al,11000000b	/установим флаги
	jz	ml	/если 0, то переход на ml
lea	dx,ermessage		/иначе dx-адрес сообщения об ошибке
	xor	ax, ax	/очистим регистр ах
	mov	al,sta_buf	/возьмем байт статуса 1
	shl	ax, 4	/выделим первую цифру
	shr	al,4	/выделим вторую цифру
	add	ah,30h	/получим код первой цифры
	mov	ermessage+28,ah	/запомним его
add	al,30h		/получим код второй цифры
	mov	ermessage+29,al	/запомним его
	mov	ex,OAOOh	/курсор в 10,0
	call	writexy	/вывод данных сообщения об ошибке
	jmp	m2	/переход на метку m2
ml :	mov	ex,OAOOh	/курсор в 10,0
	call	writebuf	/вывод содержимого буфера данных
m2 :	mov	ex,1700h	/курсор в 23,0
	lea	dx,line	/dx-адрес строки line
638
Гибкие и жесткие диски
call mov lea call	writexy ex,1800h dx,message6 writexy	/вывод строки /курсор в 18,0 /dx-адрес сообщенияб /вывод сообщенияб
ret		/возврат из процедуры
WRITE-RESULT endp		
/процедура ввода имени накопителя		
INPUTDRIVE	proc	
jmp	iel	/переход на выполняемую часть
questl	db ’Введите имя дисковода: $’ / запрос!	
bufl	db 5 dup (2)	/буфер! строки ввода
buf2	db 6 dup (3)	/буфер2 строки ввода
iel: call cirscr		/очистка экрана
mov cx,0000h		/ курсор в 0,0
lea dx,questl		/dx-адрес запроса!
call writexy		/вывод запроса!
mov ax,OCOAh		/подфункция 0А функции ОС
lea dx,bufl		/dx-адрес буфера!
int 21h		/ввод строки
cmp buf1+1,0		/проверка на ввод пустой строки
j e	iel		/если пустая, то повтор
cmp bufl+2,’A	।	/проверка на ввод’А’
je	ie2		/если да, то переход на метку 1е2
cmp bufl+2,’a	।	/проверка на ввод’а’
j e	ie2		/если да, то переход на метку ie2
cmp bufl+2,’B	r	/проверка на ввод’В’
j e	ie4		/если да, то переход на метку ie4
cmp bufl+2,’b	I	/проверка на ввод ’Ь’
j e	ie4		/если да, то переход на метку 1е4
jmp	iel	/иначе повторный ввод
ie2: mov	drive,0	/запомним номер накопителя
jmp	ie3	/переход на метку ie3
ie4: mov	drive, 1	/запомним номер накопителя
ie3: ret		/возврат из процедуры
INPUTDRIVE endp		
/процедура ввода координат сектора (H,C,S)		
INPUTDATA proc		
jmp ial		/переход на выполняемую часть
quest2	db ’Ведите номер головки (0 или 1): $’	/запрос2	
space	db 80 dup (32),’$’	/пустая строка
quest3	db ’Введите номер	цилиндра (00-79): $’	/запросЗ
quest4	db ’Введите номер	сектора (01-18) : $’	/запрос4
ial: call	cirscr	/очистка экрана
/ввод номера головки		
mov	сх,OOOOh	/курсор в 0,0
lea	dx,quest2	/dx-адрес запроса2
call	writexy	/вывод запроса2
mov	ax,OCOAh	/подфункция 0А функции ОС
lea	dx,bufl	/dx-адрес
int	21h	/ввод строки
cmp	bufl+1,0	/проверка на пустую строку
je	ial	/если да, то переход на метку ial
cmp	bufl+2,30h	/проверка на ввод’0’
je	ia2	/если да, то переход на метку ia2
Программирование гибкого диска
639
стр	bufl+2,31h
jne	ial
mov	head,1
jmp	ia3
ia2: mov	head,0
/проверка на ввод ’1’
/если нет, то переход на метку ial
/запомним номер головки 1
/переход на метку ia3
/запомним номер головки О
ia3: mov cx,0100h lea dx,space call writexy lea dx,quest3 call writexy mov ax,0C0Ah lea dx,buf2
int 21h
cmp buf2+1,0
je ia3
cmp buf2+2,30h
jb	ia3
cmp buf2+2,39h
ja	ia3
cmp buf2+3,30h
jb	ia3
cmp buf2+3,39h
ja	ia3
mov	al,buf2+2
mov cylindreASCII, al sub al,30h mov bl,10 mul bl mov ah,al
mov	al,buf2+3
mov	cylindreASCII+1,al
sub al,30h
add ah,al
cmp ah,7 9
ja ia3 mov	cylindre,ah
/ввод номера сектора ia4 : mov	cx,0200h
lea dx,space call writexy lea dx,quest4 call writexy
mov	ax,0C0Ah
lea dx,buf2
int 21h
cmp	buf2+1,0
je	ia4
cmp buf2+2,30h
jb	ia4
cmp buf2+2,39h
j a	ia4
cmp buf2+3,30h
jb	ia4
cmp buf2+3,39h
/ввод номера цилиндра /курсорв!,0 /dx-адрес пустой строки /вывод пустой строки /dx-адрес запросаЗ /вывод запроса /подфункция 0А функции ОС /dx-адрес буфера ввода / ввод строки /проверка на пустую строку /если да, то переход на метку ia3 /проверки на ввод кодов двух /десятичных цифр /-//-/-//-
/возьмем код первой цифры /запомним для вывода /преобразуем в число /умножим на 10, /так как цифра первая /перепишем в al /возьмем код второй цифры /запомним для вывода /преобразуем в число /добавим к предыдущему /сравним с 79 /если больше, то повторный ввод /запомним номер цилиндра
/курсор в 2,0
/dx-адрес пустой строки /вывод пустой строки /dx-адрес запроса4 /вывод запроса /подфункция 0А функции ОС /dx-адрес буфера ввода /ввод строки
проверка	на	пустую строку
если да,	то	переход на метку ia4
проверки	на	ввод кодов двух
/десятичных цифр
е	>40	Гибкие и жесткие диски
ja	ia4	/-//-
	mov	al,buf2+2	/возьмем код первой цифры
mov	sectorASCII,al	/запомним для вывода
sub	al,30h	/преобразуем в число
mov	bl,10	/умножим на 10,
mul	bl	/так как цифра первая
mov	ah, al	/перепишем в al
mov	al,buf2+3	/возьмем код второй цифры
mov	sectorASCI1+1,al	/запомним для вывода
sub	al,30h	/преобразуем в число
add	ah, al	/добавим к предыдущему
cmp	ah, 18	/сравним с 18
ja :	ia4	/если больше, то повторный ввод
cmp	ah, 1	/сравним с 1
jb :	ia4	/если меньше, то повторный ввод
mov	sector,ah	/запомним номер сектора
ret		/возврат из процедуры
INPUTDATA endp		
; процедура опроса флага готовности		
WA_RDY proc		
mov	dx,3f4h	/порт регистра состояния
wyl	:in	al,dx	/прочитаем регистр
test al,80h		/проверим 7-й бит
jz	wyl	/если 0, то повторное чтение
		/регистра
ret		/возврат из процедуры
WA_RDY endp		
; процедура записи байта команды		
OU_FDC proc		/al-байт команды
cat	1 wa_rdy	/ожидание готовности КНГМД
mov	dx,3F5h	/порт регистра данных
mov	al, ah	/перепишем ah в al
out	dx, al	/запишем байт команды в регистр
		/данных
ret		/возврат из процедуры
OUJ	FDC	endp	
/процедура чтения байта состояния		
IN J	FDC	proc	
call wa_rdy		/ожидание готовности КНГМД
mov	dx,3f5h	/порт регистра данных
in	al,dx	/прочитаем данные в al
ret		/возврат из процедуры
IN J	FDC	endp	
; процедура чтения сектора диска с		введенными координатами
S_READ	proc		
sti		/разрешить прерывания
/включаем мотор		
mov	dx,3f2h	/адрес регистра цифрового вывода
mov	al,28	/установим биты 2,3,4
or	al,drive	/добавляем номер дисковода
out	dx, al	/посылаем команду запуска мотора
mov	ex,Offffh	/ожидаем, пока мотор
sdl	: push	ex	/наберет обороты
mov	ex,Ofah	/-//-
Программирование гибкого диска
641
sd2 :	loop	sd2
POP loop /поиск дорожки mov ah,15 call ou_fdc mov ah,head shl ah, 2 or	ah,drive call ou_fdc		ex sdl
mov call call ТИ mov	ah,cylindre ou_fdc wa_rdy ex,Offffh	
sd3 : mov	push ex,Ofah	ex
sd4 :	loop	sd4
/-//-
/-//-
/-//-
/код команды поиска дорожки /посылаем байт команды в КНГМД /формируем 2-й байт команды /-//-
/-//-
/посылаем байт команды в КНГМД
/номер дорожки
/посылаем байт команды в КНГМД /ожидаем установки флага готовнос-
/ожидаем пока установится головка
pop сх loop sd3 /инициализация dma
mov al,46h
out 12,al
out 11,al
/вычисляем адрес буфера
lea	ax,buffer
mov	bx, ds
mov	cl,4
rol	bx, cl
mov	dl,bl
and	dl,0fh
and	bl,0f0h
add	ax,bx
jne	sd5
inc	dl
push ax	
xor	Ax, Ax
out	Och,al
pop	ax
sd5: out	4,al
mov	al,ah
out	4,al
mov	al,dl
out	81h,al
/конец инициализации
mov	ax,511
out	5,al
mov	al, ah
out	5,al
mov	al,2
out	10,al
/получаем	указатель
mov	al,leh
mov	ah,35h
int	21h
/код чтения данных КНГМД /посылаем в /оба порта канала 2 КПДП /возьмем смещение буфера /возьмем сегмент буфера /прокрутим адрес сегмента влево /на 4 разряда /перепишем в dl Ы /выделим номер страницы /обнулим младшие 4 разряда /получим младшие 16 разр. физ. адреса /если нет переноса, то на метку sd5 /иначе нарастим номер страницы /сброс тригерра первый/последний /посылаем младший байт адреса /берем старший байт адреса /посылаем старший байт адреса /берем номер страницы /посылаем номер страницы /значение счетчика байт-1 /посылаем младший байт /берем старший байт /посылаем старший байт /готовим разрешение канала 2 /запускаем КПДП базу диска /номер вектора на таблицу диска /функция 35 /es:[Ьх]-указатель на таблицу
642
Гибкие и жесткие диски
;посылаем параметры чтения mov	ah,66h
call	ou_fdc
mov	ah,head
shl	ah,2
or	ah,drive
call	ou_fdc
mov	ah,cylindre
call	ou_fdc
mov	ah,head
call	ou_fdc
mov	ah,sector
call	ou_fdc
mov	ah,es:[bx]+3
call	ou_fdc
mov	ah,es:[bx]+4
call	ou_fdc
mov	ah,es:[bx]+5
call	ou_fdc
mov	ah,es:[bx]+6
call	ou_fdc
call	wa_rdy
;читаем результирующие байты mov сх,7 lea	bx,sta_buf
sd6: call in_fdc mov [bx],al inc	bx
loop sd6 /выключаем мотор mov	dx,3f2h
mov	al, 12
or	al,drive
out	dx, al
ret S_READ endp ; основная часть программы START: call inputdrive AGAIN: call inputdata call s_read call write_result mov ax,0C08h int 21h cmp al,lBh je exit jmp again
EXIT: mov ah,4Ch int 21h code ends end begin
/код чтения одного сектора /посылаем байт команды в КНГМД /готовим второй байт команды /-//-
/-//-
/посылаем байт команды в КНГМД
/номер дорожки
/посылаем байт команды в КНГМД
/номер головки
/посылаем байт команды в КНГМД
/номер сектора
/посылаем байт команды в КНГМД
/код размера сектора
/посылаем байт команды в КНГМД
/номер конца дорожки
/посылаем байт команды в КНГМД
/длина сдвига
/посылаем байт команды в КНГМД
/длина данных
/посылаем байт команды в КНГМД
/ожидаем установки флага готовности
/читаем 7 байтов статуса
/-//-
/-//-
/-//-
/-//-
/-//-
/адрес регистра цифрового вывода /оставляем биты 2 и 3
/добавляем номер накопителя /посылаем команду останова мотора /возврат из процедуры
/ввод номера накопителя
/ввод остальных данных (H,C,S)
/чтение сектора
/вывод результата операции чтения /функция ОС (08): /ожидание ввода символа /нажат ESC?
/если да, то переход на метку exit /повтор операции для того же /накопителя
/функция завершения программы /завершим программу
Программирование жесткого диско
643
Варианты заданий
Варианты заданий определяются функциональным графом (рис. 14.24)
Представленный функциональный граф определяет 16 вариантов заданий. Варианты заданий указываются маршрутом в графе, например 2-9. На первом уровне графа вершины 1-4 соответствуют выполнению команды «проверить определенный сектор», а вершины 5-8 - команды «читать определенный сектор». Вершина 9 второго уровня графа сопоставляется с выполнением команды «чтение идентификатора», а вершина 10 - с выполнением команды «чтение состояния НГМД» (ST3). В качестве определенных секторов в задании могут быть использованы: загрузочный сектор, секторы FAT, секторы каталога или секторы файла разработанной программы. Кроме того, в качестве вариантов заданий могут быть задания, связанные с форматированием дорожки, записи секторов и инициализации КНГМД.
14.12. Программирование жесткого диска
Формулировка задания
Разработанная программа должна выполнять чтение определенного сектора или верификацию сектора, чтение состояния НЖМД или внутреннюю диагностику, чтение регистра ошибок или чтение регистра состояния НЖМД, то есть программную реализацию на ассемблере соответствующих функций BIOS.
Основные сведения
Жесткие диски обладают высокой скоростью передачи данных (5-40 Мбит/с) и большой емкостью - от 10 Мбайт до 19 Гбайт. Жесткий диск содержит набор круглых металлических пластин (платтеров), покрытых тонким магнитным слоем. Магнитные пластины вращаются со скоростью 10 000 об/мин и более. Поверхность платтера имеет дорожки (концентрические кольца), разбитые на секторы. Дорожки поверхностей с одинаковыми номерами образуют цилиндр. Каждый дисковод характеризуется определенными параметрами, например жесткий диск с 306 цилиндрами, 4 головками и 17 секторами на дорожке. Эти параметры определяют типы дисководов, которых может быть несколько десятков. В программе установки ПК обычно указывается тип дисковода.
644
Гибкие и жесткие диски
В этом разделе главное внимание будет уделено описанию организации обмена данными НЖМД и процессора (ОП) в составе ПК PC/AT, то есть описанию портов, команд и BIOS. На рис. 14.25 представлена на крупном уровне схема связи НЖМД и ОП.
Локальная шина PCI (VL)
Шина ISA
PC/AT 2:1
Интерфейс нжмд < нжмд ______—| ST506/412, IDE, ESDI или SCSI
КНЖМД
Порты
D0-D15
Порты
Буферная память
Буферная память
ОП
П
КПДП
Буферы
D0-D7	*	DOS
PC/XT 6:1
Рис. 14.25. Схема связи НЖМД и ОП
Схема связи содержит НЖМД, подключенный к контроллеру НЖМД (КНЖМД) через соответствующий интерфейс. В зависимости от типа интерфейса НЖМД порты (адресные регистры) и буферная память для хранения сектора могут размещаться в КНЖМД (в случае применения интерфейса ST506/412) или в НЖМД, например при использовании интерфейса IDE.
На рис. 14.26 изображена схема связи компонентов системы с помощью интерфейса SCSI.
КНЖМД может быть выполнен в виде съемной платы шины расширения ISA или встроен в материнскую плату ПК с использованием локальной шины PCI или VL. В ПК PC/XT управление передачей 8-битных данных между НЖМД и ОП через КНЖМД осуществляет КПДП, а в ПК - PC/AT-процессор, причем данные направляются по 16-битной шине. Так как скорость вращения диска очень большая, то КНЖМД и процессор или КПДП в некоторых случаях не успевают обрабатывать данные последовательно размещенных секторов. Тогда для временного согласования работы НЖМД, КНЖМД и процессора секторы нумеруют с учетом фактора (коэффициента) чередования. Так, в ПК PC/XT фактор чередования - 6 : 1, то есть каждый шестой сектор является следующим. Фактор чередования показывает, за сколько оборотов может быть считана вся информация одной дорожки (например, за 6 оборотов). В ПК PC/AT фактор чередования равен 2 : 1, то есть информация одной дорожки считывается за два оборота плат-тера. С появлением быстродействующих процессоров фактор чередования стал равен 1 : 1. Из НЖМД в буферную память КНЖМД считывается информация
Программирование жесткого диско
645
П
Контроллер пс л\ ► SCSI (ISA)
(хост)
Интерфейс SCSI
Контроллер ESDI
Контроллер
IDE
ESDI
НЖМД
IDE
НЖМД
Рис. 14.26. Схема применения интеефейса SCSI
одного сектора (512 байт). К моменту подхода информации следующего сектора данные из буферной памяти должны быть уже обработаны процессором. В ОП для хранения принимаемых или передаваемых данных отводятся определенные области (буферы DOS), каждая из которых имеет емкость в 512 байт. КНЖМД PC/XT и PC/AT являются несовместимыми, так как содержат разные порты с разными адресами. Что касается совместимости различных НЖМД и КНЖМД, то здесь следует учитывать интерфейс, метод кодирования (MFM, RLL), конструктивные особенности устройств и т. д.
Формат дорожек жесткого диска, так же как и гибкого диска, содержит поле идентификации и поле данных. В поле идентификации указываются адресный маркер (метка), старший и младший байты цилиндра, номер головки, размер сектора, номер сектора, контрольная сумма поля идентификации. Эта служебная информация необходима для поиска нужного сектора при записи или чтении данных и контроле этой информации. В поле данных размещаются адресный маркер, непосредственно данные (стандарт 512 байт) и контрольная сумма поля данных (4 байта ЕСС).
Схема портов НЖМД изображена на рис. 14.27.
Кратко рассмотрим назначение портов КНЖМД.
Регистр данных (IFOh) предназначен для передачи 16-битных данных между П и буферной памятью через системную шину (СШ). При выполнении длинных операций чтения/записи этот регистр используется для пересылки четырех 8-битовых кодов ЕСС. Информация об ошибках хранится в регистре ошибок (1F1 h). После выполнения диагностической команды содержимое этого регистра может быть следующее: Olh- нет ошибки, 02h - ошибка КНЖМД, 03h - ошибка буферной памяти, 04h - ошибка схемы ЕСС, 05h - ошибка процессора. Если выполняется какая-либо другая команда КНЖМД, то при установке бита ошибки в регистре состояния (1 F7h) назначение единичных значений битов в регистре ошибок следующее: бит DO - адресный маркер данных не найден, бит D1 -
I
646
Гибкие и жесткие диски
буферная память
► НЖМД
регистр ошибок (IFlh)
Z 8 ▼ регистр номера сектора (1F3h)
регистр данных (IFOh)
▲ Z16
регистр цилиндра предкомпенсации (IFlh)
Z 8
регистр счетчика секторов (1F2h) ▲ Z 8
—ч-
регистр номера цилиндра старший байт (lF5h)
Z 8 Z 8 ▼ регистр номера цилиндра младший байт (1F4H)
Z 8 Z 8
регистр выбора
НЖМД / номера головки
(lF6h)
регистр	регистр	регистр
команд	состояния	управления
(lF7h)	(1F7h)	(3F6h)
Рис. 14.27. Схема портов КНЖМД PC/AT
отсутствует сигнал «дорожка О», бит D2 - недействительная команда (уточняется содержимым регистров состояния и ошибок), бит D3 - не используется, бит D4 - не найден идентификатор сектора, бит D5 - не используется, бит D6 -ошибка контрольной суммы в поле данных, бит D7 - дефектный сектор.
Регистр цилиндра предкомпенсации (IFlh) предназначен для хранения уменьшенного в 4 раза номера цилиндра, начиная с которого более плотно записывается информация на внутренние дорожки диска.
В регистр счетчика секторов (lF2h) заносится/считывается код числа секторов для последующей операции, который уменьшается на единицу после обработки текущего сектора. После выполнения команды содержимое регистра равно О.
Регистр номера сектора (lF3h) доступен по записи и чтению со стороны процессора и хранит начальный номер сектора для последующей операции.
В регистры номера цилиндра старшего и младшего байтов (порты lF5h и lF4h) заносится начальный номер цилиндра выполняемой команды.
Регистр выбора НЖМД/номера головки (lF6h) содержит биты D3-D0 для выбора головки, бит D4 для выбора НЖМД и биты D6 и D5, задающие размер сектора (01-512 байт).
Программирование жесткого диско	647
Состояние НЖМД и КНЖМД отмечается в регистре состояния (lF7h), назначение битов которого следующее:
DO = 1 - предыдущая команда завершилась с ошибкой;
D1 = 1 - наличие сигнала «индекс» от НЖМД;
D2 = 1 - данные скорректированы схемой ЕСС;
D3 = 1 - выполняется операция обмена данными;
D4 = 1 - завершена операция поиска;
D5 = 1 - неисправность в НЖМД;
D6 = 1 - готовность НЖМД к чтению, записи и поиску;
D7 = 1 - КНЖМД занят (проверяется перед чтением любого регистра).
Регистр управления (3F6h) содержит перечисленные ниже биты:
DO - не используется;
Dl = 1 - прерывание запрещено;
D2 = 1 - сброс КНЖМД;
D3 = 1 - разрешение выбора головки;
D4-D7 - не используются.
Команда КНЖМД состоит из одного байта и выполняется сразу после занесения в регистр команд (lF7h). Поэтому предварительно следует загрузить параметры в соответствующие порты КНЖМД, если он находится в состоянии «не занят» (бит D7 регистра состояния равен О). Перечень команд КНЖМД приведен в табл. 14.3.
Таблица 14.3
Команда	Биты							
	D7	D6	D5	D4	D3	D2	D1	D0
Рекалибровка	0	0	0	1	R3	R2	R1	R0
Поиск	0	1	1	1	R3	R2	R1	R0
Чтение секторов	0	0	1	0	0	0	L	Т
Запись секторов	0	0	1	1	0	0	L	Т
Форматирование	0	1	0	1	0	0	0	0
Верификация секторов	0	1	0	0	0	0	0	Т
Инициализация параметров НЖМД	1	0	0	1	0	0	0	1
Диагностика	1	0	0	1	0	0	0	0
Обозначения
L = 0 - нормальный режим,
L = 1 - длинный режим,
Т = 0 - разрешение повтора;
Т = 1 - запрет повтора,
R3-R0 - скорость позиционирования (0000 - 35 мкс/шаг, 0001 - 0,5 мс/шаг, 0010 - 1 мс/шаг, , 1101 - 6,5 мс/шаг, 1110 - 3,2 мкс/шаг, 1111 - 16 мкс/шаг)
Рассмотрим назначение некоторых команд КНЖМД. Для установки головки на заданную дорожку (цилиндр) используется команда «поиск» (7xh). Здесь знак «х» указывает на шестнадцатеричную цифру, задающую соответствующую скорость позиционирования головки (см. табл. 5.3).
Команда «чтение сектора» (20h или 2 lh) считывает заданное число секторов (указанное в регистре счетчика секторов), начиная с заданного начального сектора. Несколько раньше следует установить головку на нужный цилиндр.
648
Гибкие и жесткие диски
Аналогичным образом выполняется команда «длинное чтение» (22h или 23h), за исключением того, что дополнительно передаются в процессор четыре байта ЕСС. Передача данных осуществляется 16-битными данными, а код ЕСС - байтами.
Команда «верификация секторов» используется для обнаружения ошибок и реализуется, как и команда «чтение данных», но без обмена данными.
Встроенный диагностический тест запускается командой «диагностика», причем замеченные ошибки заносятся в регистр ошибок (IFlh).
Для обслуживания НЖМД BIOS содержит программы, которые вызываются программным прерыванием INT 13h с заданием одной из соответствующих функций. Рассмотрим некоторые из этих функций. Номер функции, как обычно, устанавливается в регистре АН процессора. При выполнении функции «чтение» (AH=02h) и «длинное чтение» (AH=OAh) реализуется следующая очередность действий: вывод команды, ожидание прерывания IRQ5 от КНЖМД, считывание из буферной памяти через регистр (IFOh) 256 слов. Если производится длинное чтение, то проверяется бит D3 (запрос на обмен) регистра состояния (lF7h) с целью последующего считывания четырех байт ЕСС через регистр данных (IFOh). После этого проверяется состояние НЖМД и КНЖМД путем чтения содержимого регистра состояния (lF7h). Если бит DO (ошибка) регистра состояния равен 1, то анализируется и значение регистра ошибок (IFlh).
Для выполнения функции «проверка готовности» (AH=10h) осуществляется следующая последовательность действий: опрос бита D7 (занято), регистра состояния (1 F7h) с целью определения возможности доступа к КНЖМД. вывод номера НЖМД в регистр НЖМД/номер головки (lF6h), ввод содержимого регистра состояния (lF7h) с последующим его анализом.
Функция «поиск» (AH=OCh) связана с выполнением следующих этапов: вывод команды (проверка готовности КНЖМД (функция 1 Oh), пересылка параметров в порты с адресами от IFlh до lF7h, ожидание прерывания IRQ5, ввод содержимого регистра состояния (lF7h) с последующим его анализом.
Функция «верификация секторов» (AH=04h) реализуется путем вывода команды, ожидания прерывания и ввода информации о состоянии НЖМД и КНЖМД.
Пример выполнения варианта задания
; Программирование КНЖМД
; Выполняем верификацию сектора (0-0-1) без анализа результата и
; диагностику с последующим анализом регистра ошибок
Ideal
Model Small
CodeSeg
StartUpCode
mov dx,offset messageO call str_out call verify call delay call diags call delay call read_status call error_out
; информации об ошибке Exitcode
; основной модуль
; вывод строки messageO
; вызов процедуры верификации
; подождем немного
; вызов процедуры диагностики
; подождем немного
;	вызов	процедуры	чтения	кода ошибки
;	вызов	процедуры	вывода	на экран
;	конец	основного	модуля
пауза
Программирование жесткого диска	649
proc delay push сх bx mov cx,0ffffh ml: mov bx,1000 m2: dec bx jnz m2 loop ml pop bx ex ret endp
;-----------------команда запуска диагностики------------
proc diags mov dx,lF7h	; регистр команд
mov al,90h	; код команды диагностики
out dx,al	; передаем в порт
ret endp ;---------верификация сектора 1 головки 0 цилиндра 0-------
proc verify
mov dx,lF2h mov al,l	; регистр кол-ва секторов ; проверяем сектор 1
out dx,al	; передаем в порт
mov dx,lF3h	; регистр номера сектора
mov al,l	; сектор 1
out dx,al	; передаем в порт
mov dx,lF4h	; регистр номера цилиндра старшая часть
xor al,al	; al = 0
out dx,al	; передаем в порт
mov dx,lF5h	; регистр номера цилиндра младшая часть
xor al,al	; al = 0
out dx,al	; передаем в порт
mov dx,lF6h	; регистра устройства и номера головки
xor al,al	; al = 0
out dx,al	; передаем в порт
mov dx,lF7h	; регистр команд
mov al,40h	; команда верификации с разрешением повтора
out dx,al	; передаем в порт
ret endp ;---------чтение состояния КНЖМД----------------------;вход:
;выход : al - код ошибки proc read_status mov dx,lFlh	; регистр ошибок
in al,dx	; al = коду ошибки
ret endp ;--------------------------вывод ошибки на экран----------
; вход — al — код ошибки proc error_out mov dx,offset messagel	; смещение сообщения
call str_out	; вывод на экран
cmp a1,6 ja m3 dec al	; код ошибки уменьшили на 1, теперь al —
; индекс строк
650	Гибкие и жесткие диски
mov dl,32	; длина текстового сообщения
mul dl	; получаем смещение нужной строки относительно
; первой
mov dx,offset errOl	; начало текстовых строк
add dx,ах	; получаем смещение нужной строки
; относительно начала сегмента данных call str_out	; выводим на экран
jmp end_out m3: mov dx,offset err06 call str_out end_out: ret endp ;-------------вывод строки на экран---------------------
; вход — ds:dx — адрес строки для вывода proc str_out push ах mov ah,09h	; функция вывода на экран строки
int 21h	; вызываем
pop ах ret endp DataSeg messageO db ’Идет диагностика КНЖМД...’,10,13,’$’ messagel db ’После операции диагностики регистр ошибок : ’,10,13,’$’ ; размер каждой строки — 32 байта ; это для правильной индексации при выводе строки об ошибке errOl db ’Olh — нет ошибки ’,13,10,’$’ err02 db ’02h - ошибка КНЖМД ’,13,10,’$’ еггОЗ db ’03h - ошибка буфферной памяти ’,13,10,’$’ err04 db ’04h - ошибка схемы ЕСС ’,13,10,’$’ err05 db ’05h - ошибка П ’,13,10,’$’ еггОб db ’??h - неизвестная ошибка (возможно запущен Windows)’,13,10,’$’ END
Варианты заданий
Варианты заданий определяются функциональным графом (рис. 14.28).
Контрольные вопросы	651
Вариант задания указывается маршрутом в графе, например 1-7-10. Функциональный граф устанавливает 24 варианта заданий. Вершины 1 и 2 соответствуют выполнению команд верификации определенных секторов, например вершина 1 соотносится с сектором 1, а вершина 2 - с сектором 2 цилиндра 0. Вершины 3 и 4 указывают на выполнение чтения определенных секторов, а вершины 5 и 6 - на длинное чтение заданных секторов. Выполнение команды «чтение состояния» соотносится с вершиной 7, а выполнение команды «внутренняя диагностика» - с вершиной 8. Вершины 9 и 10 указывают соответственно на необходимость чтения и вывода на экран дисплея содержимого регистра ошибок или регистра состояния.
Контрольные вопросы
1.	Определите действия, выполняемые при настройке контроллера прямого доступа к памяти:
1)	передача адреса памяти;
2)	передача какой-либо команды;
3)	задание количества передаваемых байтов (слов);
4)	установка режима работы;
5)	задание номера накопителя диска.
2.	Выберите признаки, относящиеся к контроллеру прямого доступа к памяти (ПДП):
1)	в циклах ПДП процессор участвует в работе совместно с контроллером;
2)	в циклах ПДП процессор не участвует в совместной работе с контроллером;
3)	в контроллере циклы ПДП выполняются программным способом;
4)	циклы ПДП в контроллере осуществляются с помощью аппаратуры.
3.	Укажите функции, выполняемые контроллером прямого доступа к памяти:
1)	передает данные из гибкого диска в оперативную память;
2)	управляет работой гибкого диска:
3)	управляет работой оперативной памяти;
4)	координирует действия контроллера гибкого диска.
4.	Укажите сигналы, передаваемые от гибкого диска к его контроллеру:
1)	дорожка 0;	2) шаг; 3) индекс:
4)	направление движения головок.
5.	Выберите метод кодирования, используемый в гибких дисках:
1)	фазовый;
2)	с возвратом к нулю;
3)	без возврата к нулю:
4)	многоуровневый бинарный.
6.	Определите действия, выполняемые при настройке контроллера прямого доступа к памяти:
1)	передача адреса памяти:
2)	передача какой-либо команды;
3)	задание количества передаваемых байтов (слов);
652
Гибкие и жесткие диски
4)	установка режима работы;
5)	задание номера накопителя диска.
7.	Выберите признаки, относящиеся к контроллеру прямого доступа к памяти (ПДП):
1)	в циклах ПДП процессор участвует в работе совместно с контроллером;
2)	в циклах ПДП процессор не участвует в совместной работе с контроллером;
3)	в контроллере циклы ПДП выполняются программным способом;
4)	циклы ПДП в контроллере осуществляются с помощью аппаратуры.
8.	Укажите основное новшество интерфейса IDE по сравнению с прежними интерфейсами:
1)	применение дифференциальной передачи;
2)	перенос основной части контроллера в накопитель;
3)	использование 40-битного кабеля;
4)	размещение разъема на системной плате.
9.	Выберите метод кодирования, используемый в гибких дисках:
1)	фазовый;	2) с возвратом к нулю;
3)	без возврата к нулю;	4) многоуровневый бинарный.
10.	Укажите сигналы, передаваемые от гибкого диска к его контроллеру:
1)	дорожка 0;	2) шаг; 3) индекс;
4)	направление движения головок.
Литература
1.	Иванов Е. Л., Степанов И. М., Хомяков К. С. Периферийные устройства ЭВМ и систем: учеб, пособие для втузов по спец. «ЭВМ». - М.: Высшая школа, 1987. -319с.
2.	Морисита И. Аппаратные средства микроЭВМ / пер. с япон. - М.: Мир, 1988. -280 с.
3.	Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT / пер. с англ. - М.: Финансы и статистика, 1992. - 544с.
4.	Кэролайн Холидей. Секреты ПК / пер. с англ., под ред. Г. И. Коваль, В. А. Кравчук. - Киев: Диалектика, 1996. - 414с.
5.	Букчин Л. В., Безрукий Ю. Л. Дисковая подсистема IBM-совместимых персональных компьютеров. М.: МП «Бином». 1993. - 287 с.
6.	Нортон П., Джорден Р. Работа с жестким диском IBM PC / пер. с англ. - М.: Мир, 1992.-560 с.
7.	Нортон П., Сандлер К., Баджет Т. Персональный компьютер изнутри / пер. с англ. - М.: Бином, 1995. - 448 с.
8.	Михаил Гук. Аппаратные средства IBM PC: энциклопедия. - СПб: Питер Ком, 1999.-816 с.
9.	Голенкова Ж. К., Заблоцкий А. В., Мархасин М. Л. и др. Руководство по архитектуре IBM PC AT / под общ. ред. М. Л. Мархасина. Минск: ООО «Консул», 1993.-949 с.
Оптические носители информации
15.1.	Назначение CD
-g s омпакт-диск (CD - compact disc) - съемный оптический носитель инфор-мации, предназначенный для копирования пользовательских программ, I V* хранения и распространения программного обеспечения, музыкальных записей, видеофильмов, игровых программ, книг, учебной информации и т. д.
Первые музыкальные CD и их проигрыватели появились в 1982 г. для записи долгоиграющих грампластинок с игловым звукоснимателем и аналоговым способом записи и воспроизведения звука. Аналоговые пластинки имели ряд серьезных недостатков: большие размеры, низкое качество звука, невысокая синхронность и плотность записи, ограниченное время проигрывания и др. С целью устранения этих недостатков для записи и чтения различных типов данных на компакт-диске используется цифровой способ записи. Для обеспечения очень высокой точности цифровой способ записи 1 и О на дорожку CD направляется луч лазера, который оставляет на ней маленькие углубления, называемые питами (pit - углубление). Длина непрерывной дорожки составляет около 5 км, и на ней размещаются свыше 2 млрд пит. На первом компакт-диске фирмы Sony была записана девятая симфония Бетховена с длительностью звучания 62/74 мин в зависимости от темпа исполнения. Емкость такого компакт-диска составляла 640 Мбайт.
Различают несколько типов CD и их стандартов: аудио, фото, видео, интерактивные, компьютерные и т. д.
В свою очередь, компьютерные компакт-диски делятся на только читаемые CD-ROM (ROM - Read Only Memory), однократной записи CD-R (R- Recordable), перезаписываемые CD-RW (RW - Rewritable), цифровые универсальные диски DVD (Digital Versatile Disc) и др.
15.2.	Конструкция и геометрия CD
CD-ROM - алюминиевый штампованный диск, который содержит верхний защитный непрозрачный слой, покрытый лаком; отражающую слой-пленку из алюминия и прозрачную пластмассовую часть, обычно изготавливаемую из полихлорвинила или поликарбоната (рис. 15.1).
654
Оптические носители информации
Питы (углубления) в компакт-диске характеризуются определенной длиной, глубиной и шириной. Длина пита зависит от длины волны лазера и влияет на фазовые соотношения падающего и отраженного лучей лазера. Когда луч лазера попадает на участок пита, то одна часть его рассеивается, а другая - отражается и попадает на линзу (рис. 15.2).
Значение глубины пита влияет на максимальную разность силы света, отражаемой от пита или от ровной поверхности (ленда, land - поверхность).
Длина пита или ленда связана с одним из девяти значений кодов 1001, 10001, ... 100000000001, заключенных между минимальной и максимальной кодированной комбинацией соответственно Kmin=1001 и Kmax= 100000000001 (рис. 15.3). Таким образом, каждая длина пита или ленда определяет соответствующее количество бит информации.
Единичные значения кодовых комбинаций вызывают изменения уровней сигналов записи (метод записи длинных последовательностей NRZ), которые, в свою очередь, определяют длины питов и ровных участков (лендов) CD.
Для достоверного чтения информации CD используется метод кодирования 8/14 (2,10), который ограничивает число нулей в кодовых комбинациях: не менее двух нулей (Kmin) и не более 10 (Кшах).
Конструкция и геометрия CD
655

|1 00000000001 Ю 000000000 1 0 0 1 0 0 1 -I	I	1 к-г
L	Ктах	,|.	Кт ах 	| Kmin |. Kmin,
I	I	I	I	1 ПИТЫ 1	1	1	1
...
Рис. 15.3. Соответствие между значениями кодированных комбинаций и длиной пит
Аналогичный прием используется в жестких дисках - метод кодирования ограниченного числа длин RLL(2,7), когда в кодовых комбинациях должно быть не менее двух нулей и не более семи. Большое число записываемых нулей на дорожке диска при их дальнейшем чтении не вызывает изменения магнитного потока в головке жесткого диска, и это может привести к сбою.
Различные ориентации магнитных доменов или соответствуют наличию пит или лендов дорожки CD.
В случае компакт-диска существуют два перехода от ровной поверхности к питу и от пита к ровной поверхности. Эти переходы (изменения интенсивности отраженного луча) воспринимаются фотодатчиком, и определяется длина пита или ровного участка, которая преобразуется в соответствующий код. Как видно по рис. 15.3, кодируется размер пита и размер ленда [1]. Принцип кодирования 8/14 будет рассмотрен ниже. При скорости записи 1.25 м/с минимальная длина пита равна 0,87 мкм, а максимальная - 18 мкм. Ширина пита обычно имеет размеры: 0,5...0,8 мкм. Размеры компакт-диска представлены на рис. 15.4.
Питы располагаются на непрерывной спиралевидной дорожке, начинающейся от центра. Расстояние между смежными ветками - 1,6 мкм (625 витков/мм). Оптические диски имеют очень высокую плотность записи витков дорожки (на
656
Оптические носители информации
порядок больше, чем у жесткого диска), и происходит увеличение этой плотности, но продольная запись CD-ROM мало чем отличается от продольной записи жесткого диска.
15.3.	Принципы оптического чтения/записи
Существуют два способа оптического доступа к питам и лендам диска: путем использования отраженного или проникающего луча. В последнем случае сфокусированный лазерный луч проходит через прозрачный CD и фиксируется с другой стороны. Широкое распространение получил принцип оптического доступа с отраженным лучом (рис. 15.5).
На рис. 15.5 показаны пути прохождения прямого луча, посылаемого лазером на поверхность диска, и отраженного от поверхности диска луча, направляемых разделителем лучей на фотодиод.
Устройство фокусировки содержит подвижную линзу, которая управляется электромагнитным полем катушки и напоминает управление подвижной катушки громкоговорителя (рис. 15.6).
Поле электромагнитной катушки воздействует на магнит, к которому прикреплена линза. Соответствующее перемещение линзы приводит к требуемой автофокусировке луча при вертикальных биениях диска. Линзы используются для фокусировки излучения лазера в одну точку, а зеркала - для стопроцентного отражения и изменения направления луча лазера.
Лазер - когерентный источник оптического излучения, фокусирующий луч с помощью оптической системы до размера пита. Существуют различные типы лазеров: газовые, жидкостные, кристаллические, электронные и полупровод-
Принципы оптического чтения/записи
657
Рис. 15.6. Устройство фокусировки
никовые. В дисководах CD используются полупроводниковые диоды с токовым возбуждением электронов в импульсном режиме. При этом число возбужденных электронов становится больше обычных и выполняется переход из возбужденного состояния в обычное с выделением фотонов света. Фотоны воздействуют на атомы и вызывают их лавинообразный поток. Полупроводниковый лазерный диод обеспечивает достаточную мощность светового излучения (2-3 мВт) и хорошую когерентность волны, распространение волны в одном направлении (рис. 15.7), так как некогерентную волну трудно сфокусировать.
В CD-ROM помещается полупроводниковый лазер инфракрасного излучения с длиной волны 780 нм. Качество и надежность оптической системы зависят от длины волны лазера: чем она меньше, тем лучше стабильность.
Разделитель лучей - специальная призма, которая формирует два разных пути прохождения прямого и отраженного света с целью исключения их взаимного влияния.
Фотодиод - высокочувствительный и быстродействующий детектор фотонов лазерного излучения, фототок которого линейно зависит от степени его освещенности.
Шпиндельный двигатель - обеспечивает вращение диска с постоянной или переменной линейной скоростью. На оси шпиндельного двигателя находится подставка (план-шайба), на которой размещается и фиксируется диск с помощью постоянных магнитов.
658
Оптические носители информоции
Оптико-механический блок CD-ROM содержит устройство фокусировки, линзу, отражающие зеркала и серводвигатель, управляющий по сигналам микроконтроллера радиальным перемещением оптической головки. Оптико-механический блок выполняет следующие функции: автоматическую фокусировку и отслеживание дорожки: прием отраженного и промодулированного луча; радиальное перемещение оптической головки.
Для увеличения скорости передачи данных была предложена технология Truex/Multibeam [2] для одновременного считывания информации с нескольких дорожек (рис. 15.8).
Многолучевой фотодектор
Рис. 15.8. Многолучевой оптический доступ к диску
Метод многолучевого доступа был разработан фирмой Zen Research и широко применяется в дисководах CD и DVD. Лазерный луч разделяется на семь лучей и позволяет считывать информацию с семи дорожек. Применение этого метода приводит к возможности использовать постоянную скорость вращения диска для чтения как с внутренних, так и с внешних дорожек диска. Понятно, что на внешних (ближе к краю) дорожках располагается больше информации, а не внешних- меньше, что приводило к необходимости изменения скорости вращения диска.
15.4.	Функциональные характеристики CD
Дисциплина обслуживания. CD - оптическое универсальное устройство для хранения компьютерной информации.
Способ записи/воспроизведения - оптический, с использованием бесконтактной оптической головки и лазерного отражающего излучения или проникающего луча и прозрачного диска.
Способ кодирования - замена 8-битных данных на табличные 14-битные, в которых число нулей - не менее двух и не более десяти. Кодирование 8/14 осуществляется с целью надежного считывания закодированных данных с дис
Функциональные характеристики CD	659
ка. При записи массива последовательных данных на соответствующий носитель (жесткий диск или компакт-диск) с длинными последовательностями нулей или единиц (больше 10) возникает проблема определения при чтении положений битового интервала в этой длинной неизменяющейся последовательности. Решение этой проблемы заключается в ограничении длины таких нулевых (единичных) последовательностей путем использования различных методов кодирования. В жестких дисках применяется метод кодирования с ограниченной длиной RLL (2,7), при котором байты заменяются на коды с числом нулей не менее двух и не более семи.
В компакт-дисках используется метод кодирования 8/14, заключающийся в том, что байты данных кодируются 14-битными кодами (кодами EFM, Eight to fourteen modulation), в которых употребляется не менее двух нулей и не более десяти (табл. 15.1).
Таблица 15.1 Байт	14-битный код
00000000 00000001 00000010	01001000100000 10000100000000 10010000100000
01100100	01000100100010
01111111	00100000000010
Из различных комбинаций 14-битного кода отбираются такие, которые содержат между единицами не менее двух нулей (Kmin= 1001) и не более десяти нулей между единицами (Ктах= 100000000001).
Тогда кодовой комбинации Kmin соответствует минимальная длина пита, а комбинации Ктах - максимальная длина пита, содержащие соответственно два (1001) и десять нулей (100000000001).
Кроме того, для сопряжения 14-битных кодов используются 3 бита сопряжения с целью удовлетворить также требованиям по числу нулей в стыковочном месте. Причем выбор трех битов вместо двух связан с уменьшением низкочастотной составляющей в сигнале записи [1]. Три бита сопряжения имеют следующие комбинации: 000, 100, 010 и 001. Применение той или иной комбинации определяется величиной постоянной составляющей тока сигнала записи, которая находится с помощью вычисления сумм сигналов «+1» , если имеется высокий уровень сигнала записи, и сигналов «-1» - если низкий уровень сигнала записи. Преобладани какой-либо суммы над другой указывает на присутствие некоторого смещения постоянной составляющей в соответствующем направлении. Рассмотрим следующий пример (рис. 15.9).
Из четырех комбинаций битов сопряжения код 100 не удовлетворяет условию присутствия не менее двух нулей между единицами. Три другие комбинации удовлетворяют требованиям заданного количества нулей. Подсчет сумм «+1» и «-1» показывает, что минимальному значению, а следовательно, и незначительной постоянной составляющей смещения, соответствует комбина-
660
Оптические носители информоции
Предыдущий Биты	лл с
14-битный код	сопряжения 14-битныи код
значение 100010
Сигнал записи (NRZ)
Сигнал записи
Сигнал записи
91011 121314	1 2 3	1 2 3 4 5 6 7 8 9 1011 121314
000	1000001000001 0
Рис. 15.9. Пример выбора битов сопряжения
ция битов сопряжения ООО. Поэтому эта комбинация и выбирается в качестве битов сопряжения.
Из рис. 15.9 видно, что для комбинации ООО положительные и отрицательные уровни сигнала записи имеют одинаковые длительности, то есть отсутствует преобладание какого-либо уровня над другим, что и ограничивает постоянную составляющую смещения в одном направлении, поэтому и формируются малые значения низкочастотных составляющих. Контроль данных заключается в применении специальных кодов с обнаружением ошибок (EDC - Error Detecting Code) или кодов с исправлением ошибок (ЕСС - Error Correcting Code). Коды EDC позволяют с большой вероятностью обнаружить ошибки в данных при действии помех.
В качестве таких кодов наиболее часто используются циклические избыточные коды (CRC - Cycle Redundancy Check) с полиномиальным принципом представления данных, или коды с контролем по четности (нечетности). При записи данных на CD применяют коды ЕСС, например коды Рида-Соломона (RCC -Reed Solomon codes), наиболее пригодные для исправления пакетов ошибок. При хранении программных файлов важно точное представление каждого бита. Звуковые файлы менее требовательные к точному их воспроизведению, но наличие ошибок в них приводит к ухудшению качества звука (в виде шороха, щелчков и т. д.). Поэтому при записи аудиофайлов на диск используют также коды ЕСС, причем значительную часть объема данных занимают коды коррекции ошибок. При этом применяют сложные алгоритмы обнаружения и исправления ошибок, которые выполняются контроллером дисковода CD, осуществляющим, кроме того, функции кодирования и декодирования проверочных кодов, которые выводятся в сигнал записи информации на CD.
При кодировании методом Рида-Соломона для устранения пакетных (групповых), в том числе одиночных, ошибок записываемые на CD данные разделяются во времени, каскадно перемежаются (переставляются) и кодируются помехоустойчивым кодом коррекции одиночной ошибки. Количество исправляемых
Функциональные характеристики CD 661
ошибок определяется минимальным кодовым расстоянием в блоках данных, которое на всех каскадах кодирования равно одному числу.
Минимальное кодовое расстояние - это минимальное число несовпадающих символов в двух блоках данных, получаемое для всех возможных комбинаций. При чтении данных с CD каскадный декодер обнаруживает и корректирует ошибки.
Структура данных - формат представления данных. Как уже отмечалось, для безошибочного считывания данных с дорожки диска каждый байт данных кодируется в 14-битный код с ограничением числа нулей: не менее двух и не более девяти. Причем для сопряжения 14-битных кодов используются три бита. Двадцать четыре кодированных байта с битами сопряжения составляют 588 байтов (24 х 17 + 180, где 180 - число бит кода коррекции ошибки). Из кадров составляются сектора, а из секторов - дорожки. Каждый сектор (блок) содержит 2352 байта и плюс 882 байта коррекции ошибки. Каждый сектор данных использует адрес, имеющий следующий вид - минута: секунда: номер текущего сектора, например 0:0:0, 0:1:0,...,0:20:1 и т. д.
Ближе к центру диска располагается входная директория, которая содержит оглавление, адреса записей, их суммарное время и т. д. За входной директорией размещается область данных, которая заканчивается маркером конца диска.
Различают следующие три способа записи на CD: дорожка за один прием, диск за один прием и пакетная запись. Пакетная запись позволяет редактировать файлы прямо на диске.
Для синхронного представления мультимедийных изображений дорожки должны содержать чередующиеся части: видео, звука и данных.
Стандарты CD-ROM. Стандарты, определяющие форматы компакт-дисков в зависимости от их области применения, изложены в Красной, Желтой, Оранжевой и Зеленой книгах. Например, в Красной книге (книга имела красную обложку) для существовавших тогда аудиодисков рассматривалось представление звуковых данных на нем. Аудиоданные разделяются на дорожки (99), причем каждая дорожка содержит один звуковой фрагмент (песню, клип и т. д.). Каждой дорожке соответствует адрес, определяющий время ее появления (минуты, секунды) и номер сектора, указывающий начало дорожки. В свою очередь, каждый сектор включает 98 кадров, а любой кадр состоит из 24 байтов. В таблице содержания задаются адреса дорожек.
В Желтой книге для компьютерных дисков рассматривается расположение секторов, файлов и структура каталога.
Оранжевая книга содержит описание требований к форматам данных для CD (CD-R), магнитооптических дисков и методам записи.
В Зеленой книге описываются форматы для интерактивных CD-I, используемых для презентаций.
Согласование во времени (синхронизация) в дисководах CD, так же как и в жестких дисках, осуществляется с помощью схемы фазовой автоподстройки частоты (ФАЧ). которая вырабатывает сигналы синхронизации, согласованные с сигналами данных, читаемых с дорожки CD. Таким образом, ФАЧ отслеживает частоту вращения двигателя CD, разброс длин питов и формирует плавающие сигналы синхронизации, указывающие на положение битового интервала на дорожке, особенно в длинных цепочках нулей и единиц, когда уровень читаемого сигнала не изменяется. В жестких дисках выходные синхросигналы ФАЧ называются «Окно данных». Типовая схема ФАЧ представлена на рис. 15.10 и
662
Оптические носители информоции
Рис. 15.10.Типовая схемаФАЧ
содержит фазовый детектор, фильтр низких частот и генератор, управляемый напряжением (ГУН).
Фазовый детектор сравнивает разность фаз входных сигналов: читаемых данных CD и тактовые сигналы ГУН - и вырабатывает сигнал разности фаз, поступающий через фильтр низких частот на вход ГУН. ГУН в зависимости от величины и знака выходного сигнала фазового детектора увеличивает (уменьшает) генерируемую им частоту тактовых сигналов до полного совпадения с входной частотой читаемых данных CD (рис. 15.11).
Кроме того, схема ФАЧ используется для удержания частоты вращения двигателя в заданной полосе захвата в зависимости от положения оптической головки на поверхности диска.
Способ формирования питов - фиксированный, путем нанесения лазером соответствующих внутренних углублений (питов) и изменяемый за счет использования специальных материалов в качестве регистрирующего слоя. Существенным недостатком CD-ROM является отсутствие возможности записи данных на диск. Поэтому дальнейшее развитие CD было связано с разработкой CD-R (R-Recordable), записываемого CD (однократной записи). В CD-R в качестве регистрирующего слоя используется специальный органический материал с отражающими свойствами. Луч лазера при записи данных на CD-R оставлял следы (метки) в регистрирующем слое при определенной температуре нагрева, что соответствовало образованию «пита» на дорожке заданной длины (рис. 15.12).
Функциональные характеристики CD
663
Защитный лаковый слой
Отражающий слой
Луч лазера
Линза
Регистрирующий слой
Прозрачный поликарбонат
Темный участок рассеивает свет
Рис. 15.12. Конструкция CD-R
В CD-R в качестве отражающего материала использовалась пленка (серебра и золота). Для того чтобы реализовать возможность записи и отслеживать путь движения оптической головки, на этапе изготовления CD-R на поверхность диска наносится дорожка в виде спирального углубления (канавки), которая содержит органическое вещество с отражающими свойствами. Кроме того, сама дорожка имеет синусоидальную форму (с незначительными отклонениями от своей спиральной оси). Эти колебания с частотой 22,05 кГц (частотой вобуля-ции) выделяются и используются для синхронизации оптической головки.
Таким образом, дорожка в CD-R по сравнению с дорожкой CD-ROM представлена в виде углублений:
ixxaxaxxi
которая, кроме того, на поверхности диска изменяется с заданной частотой во-буляции, то есть имеет волнообразную форму.
Физическое форматирование CD-R
Ближе к центру диска находится начало дорожки (область входа), на котором располагаются служебная информация, содержащая сведения об оптимальной мощности лазера, таблица временного содержимого диска и идентификационные данные о производителе, применяемом органическом веществе, скорости записи, назначении диска.
Вся дорожка CD-R с учетом временных интервалов разбивается на фреймы (кадры). Одной секунде соответствуют 75 фреймов. Вначале каждого фрейма задается его номер в виде 42 временных интервалов, соответствующих трем байтам и содержащим указание на минуту, секунду и номер фрейма в текущей секунде. Номера фреймов заранее размещаются на чистом диске. Определение их местоположения выполняется за счет изменения частоты вобуляции дорожки на 1 кГц, которая таким образом становится равной 21,05 кГц или 23,05 кГц.
После области входа располагается область записываемых данных. Различают односеансовую и многосеансовую записи. При односеансовой записи создается область выхода, указывающая на завершение сеанса записи, и закрывается (фиксируется) таблица содержания диска. Если выполняется многосеансовая запись, то таблица содержания диска закрывается только после выполнения
всех сеансов записи.
664
Оптические носители информации
Носитель CD-RW
Подбор различных редкоземельных пленок в качестве регистрирующего слоя привел к появлению перезаписываемого диска CD-RW (RW - Rewritable). В этом случае под действием луча лазера в регистрирующем слое при определенной критической температуре происходит переход вещества из кристаллического состояния в аморфное и образуется темное пятно (пит). Это пятно уничтожается, если воздействовать лазером с температурой нагрева данного участка меньше критической. Тогда происходит переход из аморфного состояния в кристаллическое и пропускается луч лазера до отражающего слоя. Диски типа CD-RW допускают 1000-10 000 циклов перезаписи.
Развитие дисков CD-ROM, CD-R, CD-RW и т. д. напоминает усовершенствование постоянной памяти: ПЗУ, ППЗУ, флэш-памяти и т. д.
Структура данных CD-RW. Отличительной особенностью дисков CD-R и CD-RW является наличие у них дорожки для размещения кадров информации. Кроме того, на диске помещаются идентификационные данные: рекомендуемая скорость вращения шпиндельного двигателя и мощность лазера в режиме записи.
Различают следующие три способа записи на CD-RW:
•	дорожка за один прием;
•	диск за один прием;
•	пакеты с постоянной или переменной длиной.
В начале каждой дорожке находится служебный промежуток, в котором содержатся ее параметры. Минимальный размер дорожки - 300 кадров с общей емкостью 600 Кбайт и временем записи 4 с.
Технические характеристики CD-RW:
1.	Мощность лазера в режиме записи - 500-700 °C и в режиме восстановления - 200 °C.
2.	Материал регистрирующего слоя - сплав серебра, индия, сурьмы и теллура.
3.	Отражающая способность регистрирующего слоя - не менее 70%, а отражающая способность метки - 28%.
4.	Длина волны лазера - 780 нм.
5.	Число перезаписей - несколько тысяч раз.
Глубина расположения пита - фиксированная внутри CD (постоянная на одном уровне) и многоуровневая с градациями отраженного луча.
Многоуровневый способ записи предложили компании TDK и Calimetrics, Inc. (рис. 15.13).
При многоуровневом способе записи в CD отраженный луч лазера образует в фотодетекторе сигналы разного уровня. Этот способ записи требует специального дисковода и диска, на который помещается до 2 Гбайт данных. Многоуровневые диски допускают, как и обычные, однократную и многократную записи.
15.5.	Аппаратурные характеристики
Обработка информации выполняется микропроцессором, который управляет приводами, кодирует и декодирует электрические сигналы, осуществляет координацию действий блоков во времени. В качестве примера рассмотрим принципы обработки звуковых данных, записываемых и читаемых с компакт-диска. На рис. 15.14 представлена упрощенная схема записи (чтения) звука на CD.
Следует отметить, что при записи видеосигналов используется почти та же общая схема (рис. 15.14) и добавляются блоки памяти (один - для хранения кодов АЦП. а другой - кодов, выводимых на ЦАП).
Аналого-цифровой преобразователь (АЦП) осуществляет преобразование аналогового входного сигнала звука в цифровой сигнал. Динамический диапазон звуковой аппаратуры составляет 70 дБ, что соответствует необходимости использования 16-битного АЦП (201g 216 = 96дБ).
Цифроаналоговый преобразователь (ЦАП) преобразует аудиоданные в аналоговые сигналы, поступающие через усилитель на акустическую систему и выходные разъемы, причем ЦАП может быть размещен в дисководе CD-ROM или встроен в звуковую карту.
Блок ввода коррекции ошибки выполняет кодирование данных путем применения каскадных с перемеживанием (кодов Рида-Соломона), позволяющих исправлять пакетные, в том числе и одиночные, ошибки. В этом случае перемеженные и разделенные элементы данных кодируются для устранения одиночных ошибок, а в общем случае - групповых.
Блок кодирования 8/14 предназначен для преобразования байтов информации в 14-битный код, который исключает появление в данных длительных последовательностей нулей (00...0) или единиц (11...1), приводящих к сбою аппаратуры чтения данных (невозможности определить положение битового интервала в длинном, неизменяющемся уровне сигнала). Метод кодирования 8/14 допускает число нулей не менее двух и не более десяти и определяет длину питов и ровных участков диска.
ЪЪЪ
Оптические носители информации
Блок записи формирует сигнал записи питов способом без возврата к нулю (NRZ), который определяет при наличии в коде единицы переход от пита к ровной поверхности или, наоборот, от ровной поверхности к питу, что позволяет при чтении с диска данных определить значение бита: 1 или О.
При чтении данных с диска выполняются действия в обратном порядке по сравнению с записью. Блок чтения преобразует сигнал NRZ в обычный код. Затем блок декодирования осуществляет преобразование 14-битных кодов в 8-битные, поступающие на блок обнаружения и коррекции ошибки. Блок обнаружения и коррекции ошибки выполняет каскадное декодирование с обратным перемеживанием данных. В том случае, если исправить ошибки не удалось, то выполняется их маскирование и нахождение новых значений с помощью интерполяции соседних данных. После этого цифровые данные поступают на цифроаналоговый преобразователь (ЦАП), формирующий выходной аналоговый сигнал звука.
Хранение данных. Для хранения воспроизводимых данных диска используется буферная память объемом 128-512 Кбайт и больше. Буферная память необходима для согласования скорости чтения данных с диска с постоянной скоростью передачи их в память компьютера. Различают статическую, динамическую и с опережающим чтением буферные памяти. Статическая буферная память хранит все данные, поступающие с диска, а динамическая буферная память - наиболее запрашиваемые повторно данные. Буферная память с опережающим чтением подготавливает заранее необходимые данные и учитывает их тип.
Ввод/вывод данных. Для ввода/вывода данные в накопителях (дисководах) CD используют следующие типы интерфейсов: SCSI, IDE/АТА. USB. IEEE 1394 и др. Интерфейс SCSI (Small Computer System Interface) - системный интерфейс малых компьютеров, относится к числу параллельных высокоскоростных интерфейсов с многозвенным внешним или внутренним подключением до семи устройств (жестких дисков, CD, сканеров, принтеров ит. д.).
Интерфейс IDE/АТА (Advanced Technology Attachment) - усовершенствованная технология присоединения, имеет несколько модификаций и применяется преимущественно для подключения жестких дисков и CD.
Интерфейс USB (Universal Serial Bus) - универсальная последовательная среднескоростная шина с древовидной архитектурой и дифференциальной полудуплексной передачей данных, позволяющая подключить до 127 устройств.
Интерфейс IEEE 1394 (Fire Wire) - последовательная высокоскоростная шина с древовидной архитектурой и дифференциальной дуплексной передачей данных.
15.6.	Обобщенная схема дисковода CD
Структурная схема дисковода CD [1] показана на рис. 15.15.
Входной блок выполняет предварительную обработку высокочастотного сигнала, образованного в результате детектирования наличия или отсутствия пит на дорожке диска.
Блок автофокусировки (сервосистемы) предназначен для поддержания постоянного расстояния между диском и фокусирующей линзой при биениях диска во время его вращения. Существует несколько способов автофокусировки с использованием соответствующих оптических систем с обратной связью. На-
Обобщенная схема дисковода CD	667
Диск Оптическая головка
Рис. 15.15. Обобщенная структурная схема CD
пример, в одном из способов используется специальная треугольная призма, которая разделяет отраженный луч лазера на два луча, поступающие соответственно на фотодетекторы, подключенные к входам дифференциального усилителя (рис. 15.16).
Если луч точно сфокусирован на поверхности диска, то отраженные лучи призмы параллельны и фотодетекторы формируют синфазные сигналы, поступающие на дифференциальный усилитель, выходной сигнал управления которого в этом случае равен нулю.
При удалении поверхности диска от оптической головки образуется сходящийся пучок света, а при сближении - расходящийся. Синфазность сигналов на входах дифференциального усилителя нарушается, и на его выходе формируется разностный сигнал того или иного знака, управляющий автофокусировкой оптической головки.
ььь
Оптические носители информоции
Слежения за радиальными биениями дорожки осуществляет блок автослежения за дорожкой (сервосистема). Известны также [1] несколько оптических способов реализации этой функции. Рассмотрим способ трех лучей, в котором луч лазера разделяется на основной и два дополнительных (рис. 15.17).
б
Нарушение симметрии
Пятно основного луча
X
>
Дорожки
Пятна дополнительных лучей
Рис. 15.17. Способ трех лучей:
а) схема формирования лучей, б) размещение пятен лучей на дорожке
На рис. 15.176 показано нормальное размещение пятен лучей лазера на дорожке. В этом случае сигнал на выходе дифференциального усилителя равен нулю, так как на его входах присутствуют синфазные сигналы от фотодетекторов дополнительных лучей. При радиальном биении диска нарушается симметрия расположения дополнительных пятен на дорожке и, следовательно, баланс сигналов на входах дифференциального усилителя, на выходе которого формируется разностный сигнал соответствующего знака, управляющий серводвигателем радиального перемещения.
Схема ФАЧ и сервопривод управляют частотой вращения шпиндельного двигателя при перемещении оптической головки от центра диска к внешнему краю. Схема ФАЧ была рассмотрена ранее. Микропроцессор координирует действие всех блоков и выполняет обработку данных диска.
Технические характеристики
669
Оптическая система содержит: полупроводниковый лазер, генерирующий маломощный инфракрасный луч; отражающие зеркала; разделительную призму; фокусирующие линзы; фотодатчики и устройство очитки линз.
Механизмы загрузки - контейнерного типа или выдвижные лотки.
15.7.	Технические характеристики
Скорость передачи данных - максимальное количество передаваемых байтов
Таблица 15.2
данных в единицу времени из дисковода Кратность CD в компьютер, которое определяется 1х скоростью вращения диска и плотно- 2х стью записи. Первые аудио-CD имели скорость передачи 150 Кбайт/с. В следу- . ющих моделях скорости передачи увели- ^qx чивались. характеризовались кратными значениями этой исходной скорости и обозначались как 2х, Зх, 4х... 60х и выше (табл. 15.2).
Скорость (Кбайт/с)
150
300
7500
9000
Скорость передачи данных в первых CD [2] определялась постоянной линейной скоростью перемещения оптической головки по поверхности диска. Эта
технология была известна как технология CLV (Constant Linear Velocity), которая заключалась в необходимости изменения скорости вращения диска в зависимости от положения оптической головки на диске в режиме воспроизведения звука (быстрее - возле центра и медленнее - ближе к внешнему краю). Следующее поколение использует технологию CAV (Constant Angular Velocity) - вращения диска с постоянной угловой скоростью при чтении данных с него, но при записи данных на диск - технологию CAV. Накопители типа CAV считывают
данные ближе к центру медленнее, чем с внешнего участка диска. Таким образом, этот тип накопителя является комбинированным P-CAV (P-Partial) с частично постоянной угловой скоростью.
Как уже указывалось, более совершенная технология - технология TrueX - характеризуется более высокой скоростью передачи данных.
В настоящее время кратность скорости передачи данных не используется, а указывается паспортное значение, например для CD-RW - 10 Мбит/с.
Среднее время доступа - время поиска данных на дорожке диска (устанавливается путем множества измерений). Некоторые типовые значения приведены в табл. 15.3.
Таблица 15.3
Кратность	Время доступа (мс)
1х	400
2х	300
Збх-бОх	75
Коэффициент ошибок - вероятность искажения информационного бита, характеризуется значением 10 12 или 10 15 с коррекцией ошибок, многократным повтором чтения данных или уменьшением скорости вращения диска.
Емкость диска - число информационных байтов, размещенных на диске. Например, емкость CD-ROM составляет 650 Мбайт, а емкость CD-RW - 0,7 Гбайта.
Длина волны лазера, используемого в CD-ROM и CD-RW, - 0,78 мкм, определяет плотность записи информации на диске. При уменьшении длины волны лазера увеличивается предельная и поперечная плотности записи данных.
670
Оптические носители информации
Размер диска у всех типов - 120 мм (80).
Минимальный размер пита (длина) для CD-ROM составляет 0,87 мкм, а для CD-RW - 0,84 мкм.
Расстояние между дорожками. Для CD-ROM и CD-RW - это радиальное состояние 1,6 мкм (625 витков/мм).
15.8.	Цифровой универсальный диск (DVD)
Конструкция и геометрия DVD
DVD (Digital Video Disk) является универсальным цифровым носителем данных.
На рис. 15.18 представлены конструкции однослойного (а) и двухслойного (б) одностороннего диска DVD.
DVD-5
0,6 мм
Луч лазера
0,6 мм
DVD-9
0,6 мм
Луч лазера
Рис. 15.18. Конструкция одностороннего диска а однослойное б) двухслойного
0,6 мм
Диски CD и DVD имеют много общего по внешнему виду и технологии формирования питов (один и тот же размер, оптический доступ с отраженным лучом лазера и другие схожие признаки). Основное отличие заключается в использовании многослойной конструкции и лазера с меньшей длиной волны (650 или 635 нм). Эти элементы новизны (существенные признаки) способствовали достижению положительного эффекта - увеличению продольной и поперечной плотности записи, а следовательно, и значительному увеличению емкости хранимых данных в несколько раз по сравнению с CD. Самый простой по конструкции DVD (однослойный односторонний) имеет емкость 4,7 Гбайта, а двухслой
Цифровой универсальный диск (DVD)
671
ный односторонний - 8,5 Гбайта. В двухслойном DVD первый нижний слой выполнен полупрозрачным, а второй верхний - по обычной технологии. Меняя фокусировку луча, можно записывать и считывать значения питов, расположенные на разных сторонах диска.
Термин «односторонний» указывает на оптический доступ лазера с одной (нижней) стороны, а обозначения DVD-5 и DVD-9 соответственно на округленную емкость 5 Гбайт и 9 Гбайт. В двухслойных DVD была использована комбинированная технология: отраженного и проникающего оптического доступа.
Дальнейшие развитие DVD было связано с реализацией оптического доступа с другой стороны диска, что привело к появлению двухсторонних однослойных и двусторонних двухслойных DVD (рис. 15.19).
Физический эффект, применяемый в DVD для записи данных, точно такой как у CD-RW. При формировании питов лазер нагревает точечный участок регистрирующего слоя (слоя данных) до температуры его плавления (500-700°), который переходит из кристаллического состояния в аморфное, плохо отражающее свет. Если этот же участок разогреть лазером до 200°, то осуществляется
672	Оптические носители информации
переход вновь в кристаллическое состояние, хорошо пропускающее обратный луч отражательного слоя. Кроме указанных слоев, диск DVD содержит: диэлектрический слой для предотвращения испарения нагретого аморфного материала и для отвода тепла, нижний прозрачный слой из поликарбоната и верхний пластиковый слой, на котором размещается этикетка DVD.
15.9.	Функциональные признаки
DVD - Digital Versatile Disk, цифровой универсальный диск - однослойный или многослойный носитель информации с оптическим доступом, использующий полупроводниковый лазер с меньшей длиной волны, чем CD (650 нм, 635 нм, 405 нм и менее), новые форматы секторов и методов кодирования данных.
Стандарты устанавливались по мере развития DVD и конкурентной борьбы между фирмами - производителями DVD (рис. 15.20).
Рис. 15.20. Функциональная классификация DVD
Стандарт DVD-RW поддерживают такие известные фирмы, как Sony, Hitachi, TDK, Samsung, и другие, а стандарт DVD+RW - другие не менее известные фирмы: Philips, Thomson, HP и т. д.
DVD-Video хранит только видеоданные и используется в проигрывателях DVD.
DVD-ROM применяется для считывания различных типов данных в компьютерных дисководах. В DVD-ROM питы (метки) получают с помощью штамповки с матрицы.
DVD-R- однослойный однократно записываемый диск емкостью 4,7 Гбайта, используется в большинстве проигрывателей. Для образования питов («штрихов») в DVD-R используется лазер, действующий на специальный пигментный слой.
DVD-RAM - однослойный перезаписываемый на одну или обе стороны диск емкостью 2,6 Гбайта или 5,2 Гбайта, в котором используется фазовый переход из кристаллического (светлого) в аморфное (темное) состояние при нагреве отражаемого слоя лучом лазера. Диаметр диска - 120 или 80 мм, длина волны лазера - 650 нм, апертура линзы - 0,6.
DVD-RW (Digital Versatile Disk Rewritable) характеризуется следующими показателями:
•	длина волны лазера - 650 нм;
•	односторонний;
•	емкость - 4,7 Гбайта;
Функциональные признаки	673
•	диаметр - 120 мм или 80 мм;
•	толщина - 1,2 мм;
•	число перезаписей - не менее 1 000 раз;
•	защита от копирования;
•	совместимость со многими проигрывателями;
•	отражающая способность 18-30%;
•	минимальная длина пита - 0,4 мкм;
•	ширина дорожки - 0,74 мкм.
DVD+RW имеет те же показатели, что и DVD-RW, отличие заключается в использовании другого формата, совместимого с DVD-Video, усовершенствованного контроля ошибок, более точного позиционирования луча и возможности перезаписывания данных в произвольных участках дорожки. Кроме того, обеспечивается поддержка дисков DVD-RW и DVD-R.
DVD+R во многом сходен с DVD+RW и имеет основное преимущество в лучшей отражательной способности специального слоя и, как DVD-R, характеризуется однократной записью.
Принцип записи (нанесения штрихов) и стирания информации в DVD-RW и DVD+RW иллюстрирует следующий рис. 15.21.
При чтении информации с дорожки диска используется небольшая мощность лазера (Р = 0,5 мВт).
Для DVD-R/RW на диске указывается импульс лазера требуемой мощности.
Запись
Светлый участок	Темный штрих
материала импульсом разера большой мощности (Р=12тВт)
Стирание
Аморфное Переход кристалл иическое состояние	состояние
1крист=200°С
Нагрев материала лазером меньшей мощности до температуры 1<рИст<1плаВ в течении заданного времени
Рис. 15.21. Принцип записи и стирания информации
674	Оптические носители информоции
Кроме того, в DVD-R/RW используется при записи импульса лазера неодинаковой мощности для создания определенной формы штриха с целью дальнейшего его качественного контроля.
В дисках DVD-R/RW дорожки заранее подготовлены в виде углублений, которые отделяются одна от другой с помощью возвышенных площадок. Причем сами дорожки являются колеблющимися по синусоидой функции.
Перечислим функциональные признаки.
1.	Дисциплина обслуживания. Качественное хранение больших объемов компьютерной информации, аудио и видео, с возможностью гибкого доступа к ней. Дисководы DVD позволяют использовать CD-ROM и Audio CD.
2.	Структура данных DVD определяется стандартами форматов данных. Формат DVD-ROM является общепризнанными. Дисковод DVD-ROM позволяет считывать информацию с дисков CD (R, ROM и RW). Формат DVD-R также поддерживается многими производителями оптических носителей. Иначе дело обстоит с несовместимыми форматами DVD-RAM и DVD+RW (форматами многократной записи). Формат DVD+RW поддерживает группа известных фирм Sony, Philips, Yamaha и др., а формат DVD-RAM - группа не менее известных фирм, таких как JVS, Hitachi, Mitsubishi, Toshiba и Panasonic.
Носитель DVD-RAM вынимается из футляра, и его можно вставлять в дисковод DVD-ROM для считывания информации, допускает 10 000 циклов перезаписи.
Перезаписываемые DVD-RW характеризуются медленной скоростью записи (1,25 Мбайта/с), то есть требуется большое время для записи информации и форматирования (больше 1 ч). Носители можно перезаписывать 1000 раз.
DVD+RW имеют высокую скорость записи данных и форматирования (меньше получаса на каждую операцию) и допускают 1000 циклов перезаписи.
Диски DVD-R и DVD-RAM используют универсальный дисковый формат UDF (Universal Disk Format).
3.	Согласование во времени. В дисководах DVD используется тот же принцип синхронизации данных, что и у CD, читаемых с диска: размещение символов синхронизации и применение схемы фазовой автоподстройки частоты.
4.	Контроль данных. В DVD применяется помехоустойчивая усовершенствованная система кодирования данных на базе кодов Рида-Соломона, разработанная фирмой Sony (RS-PC - Reed Solomon Product Code), которая на порядок превосходит по своим возможностям систему кодирования CD.
5.	Способ кодирования (модуляции) информаций. Вместо метода кодирования 8/14 в DVD используется улучшенный, по мнению авторов, метод кодирования записываемых данных 8/16. Если для связки кодов в методе 8/14, применяемом в CD, употребляются 3 бита, то для связки их в DVD - 2. В 16-битных кодах также сохраняется количество нулей - не более десяти и не менее двух. Метод кодирования 8/16 называют еще методом модуляции EFM (Eight to Fourteen Modulation).
6.	Сжатие данных. В DVD применяются стандарты сжатия данных MPEG 2 и MPEG 4 (MPEG - Moving Picture Expert Group, экспертная группа кинематографии), алгоритмы которых позволяют существенно сжать информацию за счет нахождения повторяющихся данных.
7.	Защита информации. Для защиты от копирования видеоинформации большинство Video DVD-дисков имеют защиту от копирования и региональную
Параметрическая классификация	675
блокировку Поэтому каждый дисковод DVD содержит код региона, для которого он предназначен. Этот же код записывается и на видеодиске. Просмотр диска DVD возможен, если его код региона совпадает с кодом дисковода В DVD-R/RW используется специальная, «только читаемая» зона, которая применяется для защиты от копирования информации с диска, причем в DVD-RW на предприятиях в таких зонах записывается код с помощью рельефных углублений.
8.	Способы доступа. Тип диска определяется в зависимости от количества слоев и числа используемых сторон. В DVD различают следующие виды доступа лазерного луча:
•	однослойный и односторонний (4.7 Гбайта):
•	двухслойный и односторонний (8,5 Гбайта);
•	однослойный и двухсторонний (9,4 Гбайта);
•	двухслойный и двухсторонний (17 Гбайт).
Функциональные признаки «односторонний» и «двухсторонний» использовались также при классификации гибких магнитных дисков на этапе их развития.
9.	Скремблирование. Это процесс перестановки, расположения данных в случайном порядке и кодирования их каким-либо методом защиты от ошибок, с целью уменьшения пакетных наводок и постоянной составляющей последовательных сигналов. Вначале каждый блок данных (например, 2048 байт) кодируется: к нему добавляется 4-байтный код коррекции ошибок (ЕСС - Error Correction Code). После этого выполняются процесс скремблирования, перемешивание данных и их добавочное кодирование от ошибок по определенному правилу.
Термин «скремблирование» используется в теории и практике модемной связи.
10.	Структура форматов. Так же как и в жестких дисках, в DVD различают физические и логические форматы. Физический формат в общем виде содержит кадры записи, состоящие из блоков данных, строк с проверочными кодами ЕСС, которые группируются так. что каждой группе добавляется код Рида-Соломона. После этого выполняется перемешивание групп с проверкой их на четность. Код Рида-Соломона эффективно исправляет независимые ошибки, поэтому перемешивание позволяет преобразовать пакет ошибок в независимые ошибки, которые легко исправляются кодами Рида-Соломона и четности. Следует отметить, что алгоритмы каскадного кода и перемешивания являются достаточно сложными, и в какой-то мере они рассматриваются в общем виде в главе 7.
15.10.	Параметрическая классификация
На параметры DVD существенно влияют характеристики применяемого лазера: чем меньше его длина волны, тем больше продольная и поперечная плотности записи (уменьшаются размеры питов и расстояние между соседними витками). Создание сине-голубого лазера с длиной волны около 405 нм позволило существенно увеличить параметры DVD. В табл. 15.4 приведены основные классификационные параметры DVD с инфракрасным сине-голубым лазером (405 нм).
Скорость вращения дисков первого поколения составляет 570-1400 об/мин.
Время доступа - это время перемещения луча лазера с одной дорожки на другую. Время доступа занимает около 150 мс и менее, но больше времени доступа жесткого диска.
676
Оптические носители информоции
Таблица 15.4
Параметры
Информационная емкость (Гбайт) одностороннего однослойного диска
Радиальное расстояние между соседними витками (мкм)
Минимальный размер пита (мкм)
Толщина диска (мм)
Размер диска (мм)
Скорость передачи данных (Мбит/с)
Длина волны	Длина волны
лазера 658 нм лазера 405 нм
4,7	23-27
0,74	0,32
0,4	0,15
1,2	1.2
120	120
22	36
15.11.	Аппаратурные признаки
Тип отражателя света - пассивный металлизированный или активный, например флуоресцентный.
Источник излучения - лазерные диоды. Тенденция развития лазерных диодов заключается в создании коротковолновых достаточно мощных и надежных диодов, излучающих свет в синей и фиолетовой областях спектра (рис. 15.22).
450 нм
400 нм
Фиолетовая •
синия
500 нм
600 нм
700 нм
красная
Рис. 15.22. Длины волн коротковолнового излучения
Применение синего лазера позволяет уменьшить минимальный размер пита почти вдвое, по сравнению с использованием инфракрасного диода, и увеличить на порядок информационную емкость.
Основная трудность в создании синего лазера состоит в поиске соответствующего материала и выращивании из него бездефектных кристаллов. Первый успех был получен японской фирмой Nichia Chemical, которая в 1995г. сумела вырастить из нитрида галлия однокристальный слой и изготовила партию голубых лазеров с продолжительность работы около 10 ООО часов. Работы в этом направлении продолжаются, и результаты будут использоваться в создании новых DVD, миниатюрных лазерных принтеров с высоким разрешением, новых лазерных телевизоров и других устройств.
Ввод/вывод данных. Наиболее употребительным интерфейсом для дисководов DVD является интерфейс IDE/ATAPI. ATAPI (АТА- Advanced Technology Attachment - усовершенствованная технология присоединения, PI - Packet Interface) -стандарт для подключения оптических дисков, жестких дисков и стриммеров, характеризующийся высоким быстродействием и простотой изготовления по сравнению с другими аналогичными интерфейсами.
Аппаратурные признаки
677
Другим интерфейсом для дисководов DVD является интерфейс SCSI (Small Computer System Interface - системный интерфейс малых компьютеров), который используется также для подключения жестких дисков, принтеров, сканеров и стриммеров.
Почти на всех компьютерах устанавливаются хост-контроллеры (мастера шин) соответствующих интерфейсов, обеспечивающих прямой доступ к оперативной памяти и разгружающих системный процессор от управления передачами данных. Поддержка режима мастера шины осуществляется с помощью необходимых драйверов интерфейсов IDE и SCSI.
Драйвер SCSI - устройств ASPI поставляется вместе с накопителем, и. кроме того, он, как и драйвер IDE, встроен в операционную систему Windows.
Хранение данных. Для временного согласования читаемых данных выпускаются высокоскоростные процессоры дисководов DVD, реализующие следующие основные функции:
•	управление мотором и сервоприводом:
•	сопряжение с памятью SDRAM;
•	кодирования (модуляции EFM) данных при записи их на диск;
•	обнаружения и коррекции ошибок;
•	декодирования данных;
•	управления передачей данных по интерфейсу ввода/вывода;
•	обработки звуковой информации:
•	выполнения режимов работы с DVD или CD и т. д.
На рис. 15.23 представлена схема для просмотра видео-DVD.
DVD
Рис. 15.23. Схема для просмотра DVD
На рис. 15.23 показан аппаратный декодер, который имеет выходы для подключения к графическому контроллеру и акустической системе. Большинство старых компьютеров с DVD-ROM содержат программный декодер. Аппаратный декодер снимает часть нагрузки с процессора, обеспечивает лучшее качество воспроизведения и подключается к системной шине, например к PCI. Одна из основных функций декодера MPEG - восстановление (декомпрессия) сжатых данных.
678	Оптические носители информации
Компрессия данных - способ удаления избыточной информации (сжатия 1 данных). Различают сжатие с потерями и без потерь данных. Для компрессии данных применяются различные алгоритмы, от которых зависит эффективность сжатия как аудио-, так и видеопрограмм.
Алгоритм MPEG (Moving Picture Experts Group - группа экспертов по движущимся изображениям) - один из основных алгоритмов сжатия видеокадров, базирующихся только на передаче межкадровых различий и устраняющий повторение одной и той же информации.
Различают стандарты MPEG1 и MPEG2, которые отличаются сложностью используемого алгоритма и, следовательно, коэффициентом сжатия.
15.12.	Программный интерфейс и руководство пользователя
Комплекс программ состоит из двух частей: одна программа представляет собой электронный учебник (теоретическое изложение материала по теме «Оптические носители информации»), а другая - тест для проверки полученных знаний.
Электронный учебник
При запуске программы-учебника появляется стартовое окно, показанное на рис. 15.24.
Раздел «Оптические носители информации»
Данный раздел посвящен рассказу об устройстве дисковода CD-ROM. Нажав кнопку одной из глав, пользователь попадает в подпрограмму, где он может по-
1.	Оптические носители информации
1.1.	Назначение CD
1Л.Коиструкциа к геометрия компакт-диска U. Принципы оптического чтении™ поев 1.4. Функционалы! ые характеристики 1Л. Ав пиратуриые характеристики
1.6.	Технические характ ч истки
1.7.	Цифровой униаерсольмый диск (DVD)
2.	Приложение
2,1.	Отроение луча лй?ерн от пни и ог ройной покршон 2-2Д1риищm октичеосото доступа с «трыж^и ним лучом
Рис. 15.24. Стартовое окно программы-учебника
Программный интерфейс и руководство пользователя	679
следовательно пролистывать страницы текста с теоретическим материалом. На рис. 15.25 показано окно с теоретической частью.
1Л. Аппаратурные характеристики
Обработка информации выполняется микропроцессором, который управляет приводами, кодирует и декодирует электрические сигналы, осуществляет координацию действий блоков во времени. В качестве примера рассмотрим принципы обработки звуковых данных, записываемых и читаемых с компакт-диска. На рис. 1.14 представлена упрошенная схема записи(чтсния) звука на CD.
Аналоговый сигнал
ДИСК
Рис.1.14. Схема записи(чтения) звуковых данных на CD.
Следует отметить, что при записи видеосигналов используется почти та же общая схема (рис. 1.13) и добавляются блоки памяти (одни для хранения кодов ЛЦП, а другой - кодов, выводимых на ЦЛП).
Аналого-цифровой преобразователь (АЦП) осуществляет преобразование аналогового входного сигнала звука в цифровой. Динамический диапазон звуковой аппаратуры составляет 70дб, что соответствует необходимости использования 16-битного АЦП ( 201д216 ~ 96дб).
| Меню ~~|
Рис. 15.25. Окно теоретической части
В данной части пользователь может переключаться между страницами с помощью кнопок, расположенными в правом и левом нижнем углу. Вернуться в стартовое меню можно, нажав кнопку Меню внизу по центру.
Раздел «Приложение» (демонстрационная часть)
В первом подпункте этого раздела пользователь может изучить модель, демонстрирующую разницу отражения луча лазера на CD-диске от ровной поверхности и от пита. Внешний вид окна с моделью показан на рис. 15.26.
В данном окне пользователь наблюдает за движением дорожки CD-диска и работу фокусирующей линзы. Он может запускать ролик бесконечное число раз (с помощью кнопки Повторить). На экране в верхнем правом углу есть кнопка для возврата в стартовое меню, а также кнопка для быстрого перехода в следующее приложение.
Во второй части можно просмотреть другой ролик, показывающий принцип оптического доступа с отраженным лучом. Эта модель представлена на рис. 15.27.
680
Оптические носители информации
Это окно позволяет также управлять роликом, нажимая кнопку Повторить, или вернуться в первоначальное окно (кнопка Меню). Здесь показаны схема движения зарядов и работа разделителя лучей.
Тестовая программа
Этот программный продукт посвящен контролю знаний пользователя. Программа представляет собой компьютерное тестирование, включающее в себя 23 вопроса данной темы.
Окно тестирования выглядит так, как показано на рис. 15.28.
Вверху располагается вопрос, в зависимости от типа вопроса внизу появляются различные способы приема ответов. Если вопрос на выбор, то перечисляются варианты ответов, пользователь должен отметить крестиком правильные ответы и нажать кнопку Далее для перехода к следующему вопросу. Для ответа на другие типы вопросов, в которых нет вариантов ответов, пользователю нужно вписать правильное слово (или слова) в предлагаемую колонку и затем нажать кнопку Далее. Это показано на рис. 15.29.
После того как пользователь ответит на все вопросы, внизу окна выдается отчет о количестве правильных ответов.
Многослойный диск FMD
681
Показаны нуги прохождения прямого .15 ча, посылаемо! о лазером на поверхность щека, и о i раженною 01 повсрхмосдн диска луча, направляемою pi мели 1 с.км лучей на фотодиод.
Повтори II
| Меню ]
Рис. 15.27. Принцип оптического доступа с отраженным лучом
15.13. Многослойный диск FMD
Компанией C3D разработан многослойный диск, в котором использованы активные питы - не отражающие, а излучающие свет. В питах диска FMD (Fluorescent Multilayer Disk, флуоресцентного многослойного диска) размещается органический материал (фотохром), который светится при попадании на него луча лазера. Длина волны флуоресцентного излучения отличается от длины волны лазера на 30-50 нм, поэтому флуоресцентное излучение можно различать и зафиксировать с помощью фотодетектора (рис. 15.30).
Дисковод FMD имеет много общего с дисководами CD/DVD, то есть используются уже хорошо апробированные технологии. Кроме того, многослойный диск FMD представляет собой диск с трехмерным доступом.
В этом случае можно, как и у жесткого диска, сначала заполнить диск FMD данными вертикально по слоям (цилиндрам), а затем осуществлять радиальное перемещение оптической головки, что позволит существенно увеличить скорость передачи информации. В настоящее время создан 10-слойный диск, способный хранить около 140 Гбайт информации.
682
Оптические носители информации
ВОПРОС' №6
Односкоростной (1х) дисковод CD-ROM характерностей скоростью пере ычи денных
] 100 кбай г с
J 1Я0 Кбайт с
далее
количество правильных ответов 2
Рис. 15.28. Окно тестирования
Рис. 15.29. Вопрос, требующий ввода точного ответа от пользователя
Контрольные вопросы	683
Диск FMD
Линза
Разделительная
Усилитель
Рис. 15.30. Упрощенная схема функционирования дисковода FMD-ROM
Функциональные признаки FMDROM
Дисциплина обслуживания - хранение информации большой емкости путем использования многослойного прозрачного диска.
Принцип оптического доступа - комбинация проникающего лазерного луча, воздействующего на фотохромный участок соответствующего информационного слоя диска, и луча, вызывающего его флуоресцетное излучение.
При изготовлении диска на каждом пластиковом слое штампуются углубления, заполняемые затем фотохромом. После этого выполняются сборка и спре-совка полученных информационных слоев для получения многослойного диска.
В режиме чтения диска с помощью лазера определенной мощности флуоресцентные участки осуществляют излучение света, который на 30-50 нм отличается от спектра света проникающего луча лазера, что позволяет его идентифицировать с помощью фотодетектора.
Таким образом, в FM-диске возбужденный участок соответствует питу CD-ROM (DVD) или ориентированному магнитному домену дорожки жесткого диска. Поэтому здесь также переход от флуоресцентного участка к несветящемуся участку и наоборот воспринимается как наличие логической «1».
Параметрические признаки FMD представлены на рис. 15.31.
Примечание. Диск FM с 10 слоями, диаметром 120 мм и синим лазером (405 нм) характеризуется емкостью 140 Гбайт: 1 Т-Терабайт, емкость которую возможно получить при изготовлении 100-слойного диска. Тера - префикс, соответствующий одному триллиону (1 000 000 000 000). Длина волны лазера измеряется в нанометрах (нм), где нано - префикс, обозначающий одну миллиардную долю (0,000000001).
Контрольные вопросы
1.	Укажите метод сжатия, применяемый в CD и DVD:
1)	MNP:	2) JPEG: 3) MPEG: 4) CSP.
684	Оптические носители информации
2.	Назовите диаметр компакт-диска (мм):
1)	ПО; 2) 120;	3) 90;	4) 70.
3.	Определите стандартную толщину компакт-диска (мм):
1)	1.0;	2) 1.2;	3) 1.4;	4) 1.6.
4.	Укажите емкость CD-ROM (Мбайт):
1)	500:	2) 600;	3) 650;	4) 800.
5.	Способ кодирования (модуляции) 8/14 необходим для:
1)	организации длинных последовательностей нулей;
2)	коррекции ошибок;
3)	распознавания единиц и нулей;
4)	различения служебной информации.
6.	Для подключения дисковода CD-ROM используется следующие интерфейсы:
1)	PSI; 2) ISA; 3) АОР; 4) IDE; 5) SCSI.
7.	Односкоростной (1х) дисковод CD-ROM характеризуется скоростью передачи данных, равной:
1)	100Кбайт/с; 2) 150Кбайт/с; 3) 200 Кбайт/с; 4) 300 Кбайт/с.
8.	В CD-ROM используется лазер, генерирующий:
1)	инфракрасный луч;	3)	голубой луч;
2)	красный луч;	4)	фиолетовой луч.
9.	Укажите тип применяемого лазера в дисководах CD:
1)	кристаллический;	3)	жидкостный;
2)	газовый;	4)	полупроводниковый.
Контрольные вопросы	685
10.	Лазер - это источник:
1)	когерентного излучения;
2)	некогерентного излучения.
11.	Чем больше длина волны лазера, тем:
1)	больше плотность записи;
2)	меньше плотность записи.
12.	В дисководах CD используется для коррекции ошибок код:
1)	Рида-Мюллера:	2) Грея; 3) Хэмминга: 4) Рида-Соломона.
13.	При кодировании 8/14 для сопряжения 14-битных кодов используется в CD-ROM:
1)	1 бит;	2) 2 бита; 3) 3 бита; 4) 4-бита.
14.	При кодировании 8/14 минимальному разряду пита соответствует код:
1)	1001;	2) 10001; 3) 10011; 4) 11001.
15.	Максимальный размер пита при кодировании 8/14 определяется кодом:
1)	100000001 (7 нулей);	3) 10000000001 (9 нулей);
2)	1000000001 (8 нулей); 4) 100000000001 (10 нулей).
16.	Для слежения за дорожкой в дисководе CD используется способ:
1)	астигматизма;	3) трех лучей;
2)	Фуко;	4) критического утла.
17.	Система автофокусировки в дисководе CD использует способ:
1)	дифракционный;	3) трех лучей;
2)	критического угла:	4) фазовый.
18.	Значительное увеличение скорости передачи данных CD обеспечивает технология:
1)	CLV; 2) CAV; 3) TrueX.
19.	Кэш память дисковода CD-ROM содержит:
1)	32 Кбайта; 2) 64 Кбайта;	3)128 Кбайт; 4) 256 Кбайт.
20.	Многократная запись выполняется для диска:
1)	CD-ROM;	2) CD-R;	3) CD-RW.
21.	Назовите тип диска DVD емкостью 4.7 Гбайта:
1)	однослойный и односторонний;
2)	однослойный и двухсторонний;
3)	двухслойный и односторонний;
4)	двухслойный и двухсторонний.
22.	Тйп диска DVD емкостью 17 Гбайт:
1)	однослойный и односторонний;
2)	однослойный и двухсторонний;
686
Оптические носители информации
3)	двухслойный и односторонний;
4)	двухслойный и двухсторонний.
23.	Назовите элемент изображения на дорожке:
Литература
1.	Накадзима X., ОгаваХ. Цифровые грампластинки / пер. с япон. - М.: Радио и связь, 1988. -168 с.: ил.
2.	Мюллер Скотт. Модернизация и ремонт ПК. 11-е изд. / пер. с англ.: уч. пос. -М.: Издательский дом «Вильямс», 2000. - 1136с.: ил.
3.	Колесниченко О. В., Шишигин И. В. Аппаратные средства PC. 5-е изд., пере-раб. и доп. СПб.: БХВ-Петербург, 2004. - 1152с.: ил.
Устройства преобразования информации
16.1.	Основные определения АЦП
Абсолютная точность - разность между входным напряжением и напряжением. соответствующим полученному коду преобразования (измеряется в вольтах).
Относительная точность - точность, характеризуемая величиной младшего разряда выходного кода АЦП и показывающая погрешность несоответствия входного аналогового сигнала и полученного кода преобразования. Относительная точность (апертурная погрешность) определяется числом разрядов выходного кода АЦП. для 16-битного кода точность преобразования равна 1/65536 (1 /216). В некоторых случаях точность выражают в процентах. Например, для 10-битного кода точность равна 1 х 100% / 1024 ~ 0,1 %. Точность АЦП обычно выражается как значение максимальной суммы всех его погрешностей, в том числе и погрешности квантования (апертурной погрешности).
Разрешение - минимальная величина изменения аналогового напряжения, соответствующая младшему разряду выходного кода. Разрешение задается в процентах или милливольтах для заданного диапазона изменения входного сигнала, а чаще - количеством разрядов АЦП. Наиболее употребительными являются АЦП с 8 -, 10-, 12- и 16-разрядным разрешением.
Квантование - способ представления аналогового сигнала по уровню и времени (рис. 16.1).
Из рис. 16.1 видно, что число уровней и частота дискретизации определяют точность задания аналогового сигнала.
Дискретизация сигнала - преобразование сигнала в кратковременные отсчеты (рис. 16.2).
Кодирование отсчетов - представление отчетов n-разрядным кодом (рис. 16.3).
Частота дискретизации (частота преобразования) - число отсчетов в единицу времени (секунду). Для точного представления аналогового сигнала частота дискретизации должна быть в 2 раза больше частоты аналогового сигнала. Если частота входного сигнала 15 кГц, то частота дискретизации равна 30 кГц, что соответствует временному интервалу дискретизации 1 /30 х 103 ~ 33 мкс (рис. 16.4).
688
Устройства преобразования информации
Рис. 16.2. Процесс формирования отсчетов
При низкой частоте дискретизации f5 наблюдается наложение спектров сигналов отчетов, поэтому для устранения этого недостатка входной сигнал должен иметь ограниченный спектр.
Теорема В. А. Котельникова: «Всякий непрерывный сигнал, имеющий ограниченный частотный спектр, полностью определяется своими дискретными значениями в моменты отсчета, отстоящие друг от друга на интервалы времени At = 1 /2 Fmax, где Fmax- максимальная частота в спектре сигнала». Таким образом, для получения более точного представления аналогового сигнала необходимого выполнить два требования:
Основные определения АЦП
689
уровень
Рис. 16.3. Представление отсчете в 4-раз рядным кодом
1)	частота дискретизации должна быть в 2 раза больше верхней граничной частоты спектра;
2)	сигнал должен иметь ограниченный спектр, чтобы исключить эффект наложения спектров.
Ограниченный спектр сигнала можно получить с помощью фильтра низких частот, который убирает высшие частоты спектра (рис. 16.5).
690
Устройства преобразования информации
Рис. 16.5. Ограничение спектра
Ограничение спектра приводит к устранению эффекта наложения частот, но связано с потерей высокочастотных составляющих в спектре.
Спектр - представление сигнала в частотной области, получаемое на основе преобразования Фурье, позволяющего описать сигнал x(t) с помощью ряда тригонометрических базисных функций.
На рис. 16.6 показаны спектры одиночного прямоугольного сигнала.
Спектральные составляющие в области низких частот (f < 2л/т) определяют форму сигнала в области вершины и основную его энергию. Другие «лепестки» не оказывают влияния на фронты сигнала и не влияют на энергию сигнала.
На рис. 16.7 представлен спектр сигнала x(t) с ограниченной полосой частот.
По рис. 16.7 видно, что вне fm отсутствуют высокочастотные составляющие сигнала.
Устройство выборки/хранения (УВ/Х) предназначено для приема и хранения на время преобразования отсчетов, равных входным напряжениям аналогового сигнала в соответствующие момента времени (рис. 16.8).
УВ/Х по тактовым сигналам ТС осуществляет отсчет входного сигнала путем замыкания ключа и выполнения заряда конденсатора С. Затем ключ размыкается, и значение напряжения сохраняется, пока АЦП выполняет преобразование.
Основные определения АЦП
691
x(f)

Рис. 16.7. Спектр сигнала x(t)
Вкл.
Выкл.
ti Ъ	1з
Рис. 16.8: а) схема УВ/Х; б) диаграмма работы
Если использовать АЦП без УВ/Х, то для синусоидального сигнала частота равна 12,4 Гц. При быстром изменении выходного напряжения необходимо на вход АЦП подключить УВ/Х (рис. 16.9).
Аналоговый
сигнал	УВ/Х		АЦП	Код *
				
Рис. 16.9. Схема АЦП с УВ/Х
692	Устройства преобразования информации
В этом случае для 8-раз рядного АЦП и УВ/Х со временем задержки 20 нс максимальная частота входного синусоидального сигнала будет равна около 62 кГц, что соответствует возможности применения АЦП со временем преобразования 100-150 мкс.
Выпускаются УВ/Х со временем захвата 4 мкс при точности 0,1 % и 10, 20 мкс с точностью 0,01%.
Диапазон - от минимального до максимального значения входного сигнала, обрабатываемые АЦП. Наиболее употребляемые диапазоны - 0-5 В и 0-10 В. Диапазон входного сигнала выбранного АЦП должен полностью соответствовать заданному диапазону аналогового сигнала от датчика. Частичное соответствие приводит к погрешности АЦП, связанной с ограничением динамического диапазона. Для устранения этого недостатка используется масштабирование с помощью операционных усилителей.
Динамический диапазон пропорционален числу разрядов квантования. Для передачи динамического звука требуются 16 разрядов квантования.
16.2.	Цифроаналоговые преобразователи
Цифроаналоговые преобразователи (ЦАП) выполняют преобразование цифрового кода в аналоговый сигнал и используются для управления аналоговыми параметрами (скоростью, углами поворотов и т. д.) в дисплеях, графопостроителях, гибридных вычислительных машинах, содержащих АВМ и ЭВМ, в качестве основного блока в некоторых типах АЦП, реализующих метод двоично-взвешенного приближения, и т. п. К основным параметрам ЦАП относятся: быстродействие, погрешность преобразования и диапазон изменения входных и выходных значений.
Быстродействие ЦАП определяется временем преобразования кода, поступившего на его вход, в выходное напряжение. Шаг квантования At - это интервал времени между двумя преобразованиями. Частота квантования f = 1 /At. Диапазон выходного сигнала составляет множество значений между начальным и конечным его величинами. Погрешность квантования характеризуется следующим выражением: 5 = x(t) - xjt). где x(t) и xjt) - соответственно аналоговая величина и ее дискретное значение в момент времени t. Кроме того, погрешность преобразования определяет еще и инструментальная погрешность ключей, резисторной цепи, операционного усилителя, составляющих оборудование ЦАП. Принцип действия ЦАП поясняет рис. 16.10.
После сброса 4-битный счетчик СТ2 в соответствии с приходом тактовых сигналов (ТС) формирует последовательность кодов 0001, 0010, 0011 и т. д., поступающих на входы ЦАП. На выходе ЦАП образовывается ступенчатая функция напряжения V^, аппроксимирующая требуемый аналоговый сигнал. С помощью сглаживающего фильтра напряжения УЦЛП преобразуется в монотонный аналоговый сигнал Уф. Из рис. 16.10 видно, что ЦАП выполняет двойное квантование как по уровням V, так и по времени t.
Цифровой 4-разрядный код может быть представлен в виде полинома: N= а323 + СЦ21 + а02°, где а е {0.1}. Число Nможет быть реализовано в виде аналоговой величины (выходного напряжения) VBbix с помощью резисторной цепи (РЦ) 3
и операционного усилителя (ОУ). Напряжение U2KE = к^2'ар где к - коэффициент t=0
пропорциональности. На рис. 16.1 1 изображенэ общий вид схемы 4-разрядного ЦАП и таблица истинности его работы.
Цифроаналоговые преобразователи
693
Рис. 16.10. Принцип действия ЦАП
а3	а2	31	ао	V.wx <в>
0	0	0	0	0
0	0	0	1	0,2
0	0	1	0	0,4
				
1	1	1	1	3
Рис. 16.11. Общий вид схемы 4-разрядного ЦАП и таблица истинности его работы
ОУ представляет собой масштабный усилитель с высоким входным сопротивлением и низким выходным R^, позволяющий регулировать коэффициент усиления (KJ в широких пределах (Ки = UBbDt/UBX=R^/R^, где R^ - резистор обрат-ной связи). Наиболее известны два метода реализации РЦ ЦАП с использованием двоично-взвешенных резисторов (рис. 16.12а) и регистров лестничного типа R-2R(pHC. 16.126).
Схема ЦАП (см. рис. 16.12а) работает в соответствии с таблицей истинности. Аналоговый ключ Кр подключенный к источнику опорного напряжения (V), управляется разрядом а4 преобразуемого кода. Если at = 1, то происходит замыка-
Рис. 16.12. Схемы ЦАП
а) ЦАП с двоично-взвешенными резисторами, б) ЦАП лестничного типа R-2R
ние Kj и опорное V поступает на соответствующий резистор. При а( = О Kt соединен с землей. Пусть на входы ЦАП поступил код а3а2а1а0 = ООО 1 .Тогда Ku = Roc/R х 23 = 10к/150к = 0.066 и UBblx = UBX * Ku = 3 х 0.066 ~ 0.2 В. Недостатком схемы является наличие в ней различных по значениям резисторов, что затрудняет интегральное исполнение ЦАП и ухудшает точность.
ЦАП лестничного типа (см. рис. 16.126) содержит резисторы только двух номиналов - R и 2R. Работа этого ЦАП также соответствует таблице истинности. Если на входы ЦАП поступил код ООО 1 или 0010, то на выходе UBblx = 0,25 В (0,5 В) и т. д. Напряжение в каждом узле схемы (1-4) делится пополам, то есть в узле 1 делится на 2, в узле 2 - на 4 и т. д. При поступлении кода	= 0001 на входы
ЦАП замыкается ключ Ко и V4 = V/16 = 3.75/16 ~ 0.23 В.
Сопротивления резисторов в ЦАП лестничного типа равны 5 и 10 кОм и могут быть реализованы на небольшом участке кристалла. В выпускаемых ИС ЦАП применяется лазерная подгонка сопротивлений. На рис. 16.13 показаны структурная схема ЦАП и ее условное изображение [ 1 ].	__ ___
Когда на схему поступают низкие активные уровни сигналов CS и СЕ, то в 8-битном регистре происходит фиксация кода, установленного на входах D0-D7. Каждый выход бита регистра управляет транзисторным ключом, подключенным к резисторной лестнице R-2R, содержащей 16 резисторов. Источник опорного напряжения (Von) может быть внутренним или внешним.
16.3.	Аналого-цифровые преобразователи
АЦП широко применяются в различных областях техники: радиолокации, управления технологическим оборудованием, измерительных приборах, обработки и отображения информации и т. д. Основные параметры АЦП: диапазон изменения аналогового сигнала, погрешность и время преобразования. АЦП осуществляет преобразование аналоговых сигналов в цифровой код. Общий вид 4-битного АЦП и таблица истинности его работы представлены на рис. 16.14.
Принцип действия АЦП иллюстрирует рис. 16.15.
Аналого-цифровые преобразователи
695
Рис. 16.13. Структурная схема ЦАП и ее условное изображение
Рис. 16.15. Принцип действия АЦП
696
Устройства преобразования информации
Пусть на вход АЦП поступает линейно изменяющееся напряжение VBx(t). В момент поступления тактовых сигналов (ТС) АЦП выполняет квантование этого сигнала путем сопоставления его с внутренним опорным напряжением Von. Существуют различные временные или пространственные способы формирования Von. определяющие типы АЦП. Например, с помощью резисторного делителя и внешнего источника напряжения можно образовать одновременный последовательный ряд напряжений, например 0,2, 0,4, 0,6 и т. д., с которым сравнивается входной сигнал. Этот принцип реализуется в АЦП параллельного типа. В других АЦП последовательного действия сигнал Von может быть сформирован путем использования ЦАП и обратной связи.
Инструментальная погрешность (неточность) АЦП приводит к образованию ступенчатого пилообразного сигнала квантования ¥ю. Каждой ступеньке сигнала в общем случае соответствует n-битный код, определяющий 2П дискретных уровней квантования. Таким образом, общий принцип функционирования АЦП заключается в дискретизации, квантовании и кодировании сигналов. Процесс квантования приводит к ошибке 5, максимальное значение которой равно ±1/2 единицы младшего бита (ЕМБ), равного кванту аналоговой величины, например 0,2 В, ошибку квантования 5 можно уменьшить путем увеличения числа битов выходного кода. Разрешающая способность АЦП определяется числом бит выходного кода или величиной аналогового напряжения (квантом), вызывающего изменения кода на одну ЕМБ.
С целью увеличения максимальной допустимой частоты аналогового сигнала и уменьшения динамической погрешности на входе АЦП используют устройство выборки/хранения (УВ/Х), позволяющее на короткое время зафиксировать мгновенное значение сигнала UBx(t) с целью дальнейшего его преобразования в соответствующий код. Необходимость хранения входного сигнала связана с неопределенностью значения этого сигнала в случае быстрого его изменения, что может без УВ/Х привести к динамической ошибке. Кроме того, УВ/Х употребляются в многоканальных АЦП для запоминания мгновенного значения какого-либо канала и его преобразования одновременно с переключением мультиплексора на следующий канал. На рис. 16.16 представлена схема связи АЦП и УВ/Х.
Сигналы ТС запускают АЦП на преобразование хранящихся отсчетов в УВ/Х. После того как в АЦП завершается преобразование, на его выходе формируется сигнал «Конец преобразования» (КП), который поступает на вход аналогового ключа (К) и переводит УВ/Х в режим выборки (замыкания ключа), причем кон-
Аналого-цифровые преобразователи	697
денсатор С заряжается (разряжается) на соответствующую величину UBX(t). В режиме хранения ключ размыкается на короткое время, необходимое для преобразования сигнала UBx(t).
На рис. 16.17 изображена временная диаграмма работы УВ/Х.
Сигнал замыкания ключа Сигнал размыкания ключа
Время захвата^
Апертурное время Время установления
Рис. 16.17. Временная диаграмма работы УВ/Х
После поступления сигнала замыкания ключа начинается режим выборки входного аналогового сигнала, характеризующийся временем захвата (2.4,6, 10 мкс и более). Время захвата определяется емкостью конденсатора и влияет на точность. Чем меньше время захвата (меньше емкость), тем меньше соответствующая точность и увеличивается падение напряжения в режиме хранения, но зато уменьшается время захвата. Падение напряжения в режиме хранения не должно быть больше единицы младшего бита.
С поступлением сигнала размыкания ключа выполняется режим хранения отсчета. В этом режиме апертурное время (20, 25 нс и более) рис. 16.17 указыва-
698
Устройства преобразования информации
ет на время размыкания ключа и определяет максимально допустимую скорость изменения входного сигнала. Время установления (0,5, 0,8 мкс и более) задает интервал времени, после которого стабилизируется напряжение хранимого отсчета, но оно не остается постоянным в этом режиме из-за наличия утечки заряда конденсатора С.
На рис. 16.18 показаны схемы АЦП: а - следящий АЦП; б - интегрирующий АЦП.
АЦП (рис. 16.18а) построен на базе реверсивного счетчика (Сч) и непрерывно отслеживает аналоговое входное напряжение Vbx. Если Vbx> Уц (V - напряжение на выходе ЦАП), то на входе аналогового компаратора (К) формируется сигнал и содержимое Сч увеличивается при поступлении тактовых сигналов (ТС) до тех пор, пока Vbx не станет равным V При Vbx< Уц происходит уменьшение содержимого Сч с помощью ТС. На выходах Сч формируется цифровой код, соответствующий Vbx при выполнении условия Vbx = V
В АЦП интегрирующего типа (см. рис. 16.186) содержится генератор линейно изменяющегося напряжения (ГЛИН), формирующий пилообразные сигналы. Если напряжение ГЛИН (Vr) меньше Vbx, то на выходе компаратора К формируется высокий уровень, разрешающий поступление ТС через элемент И на вход Сч. При равенстве Vr и Vbx на выходах Сч устанавливается нужный код. Недостатком рассмотренных п-разрядных АЦП является большое время преобразования, равное (2n- 1) периодам ТС.
АЦП последовательного приближения выполняет преобразование за п периодов ТС и относится к преобразователям со средним и высоким быстродействием. Метод заключается в последовательном увеличении кода, начиная со старших разрядов, и преобразовании его для каждого разряда в соответствующее напряжение с помощью ЦАП с целью сравнения с величиной Vbx. На рис. 16.19 представлена структурная схема АЦП последовательного приближения.
Рис. 16.19. Структурная схема АЦП последовательного приближения
АЦП содержит регистр последовательного приближения (РПП), используемый для подбора цифрового кода, соответствующего Vbx. ЦАП преобразует цифровой код РПП в напряжение V Для последовательного перебора разрядов РПП предназначен распределитель сигналов, реализованный на базе Сч и де шифра
Аналого-цифровые преобразователи
699
тора (Дш). Принцип работы ЦАП состоит в следующем. По сигналу «сброс» (Сбр) осуществляются сброс Сч в нулевое состояние и установка старшего разряда (СР) РПП в 1 и сброс всех остальных его разрядов в О, то есть в РПП фиксируется начальный код 1000...О. Затем происходит сравнение напряжений Vbx и Уц и на выходе К формируется соответствующий сигнал управления (СУ). Если Vbx> V то при наличии сигнала СУ = 1 от К содержимое РПП с приходом ТС изменяется в сторону увеличения и становится равным 1100...0, то есть сигнал со второго выхода Дш выбирает следующий разряд после СР и устанавливает его в «1». В том случае, если Vbx< V с поступлением ТС (при наличии сигнала СУ = 0) содержимое РПП принимает значение 0100...0. Этот процесс просмотра разрядов продолжается до тех пор, пока не будет проверен последний младший разряд (МР). При описании работы АЦП предполагается, что не происходит изменение уровня Vbx. Для удержания постоянства уровня сигнала на входе АЦП применяют устройство выборки/хранения (несложную аналоговую схему, сохраняющую этот уровень на время преобразования).
Общий вид 16-канального АЦП [1] с подключенным к нему устройством выборки/хранения показан на рис. 16.20.
АЦП содержит 16 входных аналоговых каналов IN0-IN15, выбор каждого из которых выполняется с помощью 4-разрядного адреса, поступающего на входы АО-АЗ, и сигнала ALE, фиксирующего адрес в АЦП. Пуск АЦП на преобразование выбранного напряжения осуществляется сигналом START. Для координации работы АЦП во времени используются сигналы синхронизации, подаваемые на вход CLK. Окончание преобразования аналогового сигнала указывается высоким уровнем сигнала ЕОС, который применяется для формирования сигнала прерывания. УВ/Х обеспечивает хранение отсчета в запоминающем конденсаторе для выполнения преобразования по выбранному каналу при сбросе ЕОС.
Для достижения высокой скорости при образовании цифрового кода используются АЦП параллельного преобразования, которые применяются в видеотехнике, радиолокации, цифровых осциллографах и т. п. На рис. 16.21 изображена структурная схема такого АЦП.
700
Устройства преобразования информации
цифровой код
Рис. 16.21. Структурная схема АЦП параллельного преобразования
АЦП параллельного приближения содержит: прецизионный делитель опорного напряжения (Von), выполненный на резисторной цепочке; стробирующие компараторы (К), работающие в режиме слежения/хранения, и быстродействующий шифратор, преобразующий код от компараторов в выходной код АЦП. На выходах прецизионной цепочки резисторов последовательно формируются уровни напряжения, смещенные относительно друг друга на величину уровня младшего значащего разряда, то есть Von постоянно уменьшается на величину кванта напряжения (DV). Компараторы до появления сигнала строб работают в режиме сравнения и имеют невысокий коэффициент усиления. В момент действия строба происходит увеличение коэффициента усиления и К переходят в режим хранения. Шифратор содержит несколько каскадов и предназначен для формирования позиционного двоичного кода. Часто в состав шифратора вводят регистры для запоминания информации с разных ступеней. В режиме работы АЦП происходит сравнение Vbx с напряжениями резисторной цепочки и на выходах компараторов формируется код 00...0111... 1, то есть компараторы, у которых Vbx больше напряжений с выходов резисторной цепочки, формируют на своих выходах 1. Недостатком АЦП является наличие сложного оборудования. Для n-разрядного АЦП необходимо (2П - 1) компараторов. Скорость преобразования достигает 100 МГц при использовании 8-разрядного АЦП.
В связи с тем, что АЦП является сложным устройством, к его входу часто подключают аналоговый мультиплексор. С уменьшением стоимости АЦП все больше используется подход применения в каждом канале отдельного АЦП. Время преобразования параллельных 6,7-разрядных видео-АЦП находится в интервале 10-30 нс.
В известных АЦП в основном используются методы последовательного приближения и параллельного преобразования с разрешением (количеством бит) 6, 7, 8, 10, 12 и более, типичным временем преобразования 15, 25, 100 мкс (АЦП последовательного приближения) и 10, 20, 30 нс (АЦП параллельного преобразования) и напряжением питания +5 В, ±5 В, +5 В и ± 15 В.
В состав оборудования АЦП могут входить тактовый генератор, источник опорного напряжения, буфер, схема программируемого диапазона входного сигнала, аналоговый мультиплексор, схема параллельного/последовательного вывода.
Устройства связи с объектом
701
16.4.	Устройства связи с объектом
Устройство связи с объектом (УСО) осуществляет сопряжение ЭВМ с объектом управления, выполняет прием аналоговых и дискретных сигналов, выдачу команд на аналоговые и цифровые устройства, преобразование сигналов (аналого-цифровые, цифроаналоговые, логическое, форматов данных), согласование электрических характеристик различных линий, контроль данных и т. д.
УСО предназначены для управления технологическим оборудованием, приводами роботов, станками и другими производственными процессами, применения в системах сбора и распределения информации, управления лабораторными устройствами с использованием различных приборных интерфейсов и т. д.
Устройство связи с объектом выполняет функции распределения и сбора аналоговой и цифровой информации. На рис. 16.22 представлена обобщенная схема УСО.
Рис. 16.22. Обобщенная схема УСО
В состав УСО входят: АЦП, ЦАП, блок цифрового ввода (БЦВв) и блок цифрового вывода (БЦВыв), соединенные соответственно с датчиками (ДАТ) и исполнительными устройствами (ИСУ), представляющие собой объект (ОБТ) управления. Различают два подхода при построении многоканальных блоков сбора данных: аналоговое мультиплексирование и цифровое мультиплексирование. При реализации первого подхода используют АЦП с аналоговым мультиплексором, к которому подключаются разнообразные датчики и измерительные преобразователи. Для второго подхода являются характерными параллельное преобразование и цифровое мультиплексирование, то есть каждый канал содержит АЦП, выходы которых подключены к цифровому мультиплексору. В этом случае можно использовать менее быстродействующие АЦП и получить большую частоту дискретизации по каждому каналу.
Рассмотрим в качестве примера упрощенную схему УСО (рис. 16.23), содержащую 8-разрядный ЦАП (рис. 16.13) и 16-канальный АЦП (рис. 16.20).
УСО содержит 5 портов, доступ к которым представлен в табл. 16.1.
Регистр управления (РУ) предназначен для установки битов разрешения старта АЦП (PC) и прерывания (РП). Таймер (ТР), реализованный на базе микросхемы 18253, в которой используется только счетчик 2, необходим для программирования шага дискретизации аналоговой переменной. Формирователь сиг-
702
Устройства преобразования информации
Рис. 16.23. Упрощенная схемаУСО
Таблица 16.1			
Адрес	Порты	Операция	Сигналы ДшУС
210h	АЦП	W/R	ЗпАЦП, ЧтАЦП	
211h	РУ	W	ЗпРУ
212h	TP	W	ЗпТР	
213h	ЕОС	R	ЧтЕОС
213h	ЦАП	W	ЗпЦАП
Примечание W - запись, R		- чтение	
Устройство связи с объектом	703
нала пуска АЦП (ФСП) с учетом шага дискретизации вырабатывает короткие по длительности импульсы, запускающие АЦП на преобразование аналогового сигнала. ЦАП доступен по записи со стороны процессора, который выводит байт данных для преобразования его в аналоговую величину. Для доступа к портам используется дешифратор адреса (ДшА). декодирующий старшую (общую для всех портов) часть адреса (разряды А2-А9), и дешифратор управляющих сигналов (ДшУС), выбирающий порты УСО с помощью разрядов АО и А1 и вырабатывающий для них сигналы записи (Зп) или чтения (Чт). Работа АЦП заключается в следующем. Системный процессор осуществляет выбор аналогового входа АЦП, передавая код его номера на входы АО-АЗ, запись которого осуществляется сигналом записи ЗпАЦП ДшУС. Затем разрешается формирование синхросигналов Пуск путем установки соответствующего бита PC РУ. Синхросигнал Пуск разрешает работу АЦП по преобразованию аналоговой переменной выбранного входа. После этого через прерывание или опрос сигнала ЕОС (конец преобразования) выполняется ввод полученного цифрового кода, который считывается сигналом чтения ЧтАЦП, вырабатываемым ДшУС, при выполнении процессором ассемблерной команды IN, содержащей адрес ЗСОН. Сигнал прерывания IRQ 10 устанавливается буферным формирователем (БФ) при наличии разрешения прерывания (РП) со стороны процессора и сигнала ЕОС. Назначение УВ/Х было описано ранее. Делитель частоты (ДЧ) выполняет деление частоты BCLK с целью получения синхросигналов, координирующих работу блоков УСО. С целью упрощения схемы рис. 16.23 в ней отсутствуют цифровые каналы ввода и вывода.
Объектами обычно являются контрольно-измерительные приборы, устройства автоматики и телемеханики и др. Объекты содержат разнообразные датчики измерения температуры, давления, перемещения, потока, электромагнитного излучения и т. д.
УСО занимается сбором аналоговой и цифровой информации от датчиков, ее предварительной обработкой и передачей результатов в компьютер. Кроме того. УСО выполняет формирование управляющей информации, необходимой для работы соответствующих исполнительных устройств.
Типовая схема УСО содержит: аналого-цифровые и цифровые преобразователи (АЦП и ЦАП); цифровые порты ввода и вывода; контроллер связи и выполнения протокола интерфейса компьютера, к которому подключена схема УСО; устройства предварительной обработки сигналов в реальном времени и управления работой преобразователя.
На рис. 16.24 представлена схема УСО, которая содержит контроллер USB, цифровой сигнальный процессор типа RISC, микроконтроллер (МК), аналого-цифровой и цифроаналоговые преобразователи, многоканальный мультиплексор MX, передатчики и приемники.
Контроллер USB выполняет протокол шины USB и содержит: микропроцессор; внутреннее ОЗУ; несколько байтовых портов ввода/вывода. необходимых для связи с цифровым сигнальным процессором и получения цифровых кодов от АЦП; порт интерфейса 12С, предназначенный для сопряжения с флэш-памятью, которая хранит конфигурационные данные УСО и настроечные данные контроллера USB.
704	Устройства преобразования информации
Рис. 16.24. Устройство связи с объектом
В качестве контроллера USB может быть использована микросхема микроконтроллера СУ7С68013, поддерживающая стандарт USB 2.0 и содержащая расширенный микропроцессор 8051, встроенное ОЗУ, программируемый интерфейс ввода/вывода, порт 12С и т. д. Микроконтроллер USB выпускается в нескольких вариантах, определяемых их функциональными возможностями и количеством выводов соответствующих (56, 100 и 128).
Цифровой сигнальный процессор имеет дополнительный специальный набор команд, выполняемых достаточно быстро за небольшое число циклов (RISC-архитектура), и поэтому может обрабатывать данные в реальном времени. Цифровые сигнальные процессоры характеризуются: одновременным выполнением нескольких операций, высоким быстродействием, наличием специальных команд для обработки сигналов, конвейерным режимом выполнения команд и т. д. Цифровые сигнальные процессоры выпускаются различных модификаций и имеют несколько поколений своего развития (семейства). В качестве цифрового сигнального процессора можно выбрать модель ADSP-21XX (Analog Devices), TMS 320С25 (Texas Instruments), DSP56000 (Motorola) и др.
Цифровой сигнальный процессор ADSP-2181 может выполнять быстрое преобразование Фурье, спектральный анализ, цифровую фильтрацию. Для обмена ADSP с компьютером через контроллер USB используется канал ПДП (прямого доступа к памяти). ADSP-2181 размещен в 128-выводном корпусе и имеет внешние выводы: 24-битной шины данных, 14-битной шины адреса и 16-битной шины ПДП. Некоторые сигнальные процессоры содержат внутренний АЦП.
Микроконтроллер (МК) управляет работой АЦП и мультиплексора МХ входных аналоговых сигналов в соответствии с программой, хранящейся в его внутреннем ПЗУ. Кроме того, МК связан с ADSP и получает от него необходимые команды через последовательный порт, содержащий универсальный приемопередатчик (УАПП). В свою очередь, ADSP имеет два порта внешнего последова
Устройство связи с объектом	705
тельного интерфейса. Большинство выпускаемых микроконтроллеров содержат встроенные микросхемы УАПП, например микроконтроллеры семейства PIC 18 Схх (фирмы Microchip), имеющие универсальный модуль синхронного/ асинхронного приемопередатчика, модуль интерфейсов CPI и 12С и модуль параллельного порта. Микроконтроллеры старшего подсемейства PIC 18хх (16-битное процессорное ядро) имеют 28-, 40-, 44- и 64-контактные корпуса. PIC-микроконтроллер обычно содержиат: арифметико-логическое устройство, память, периферийные интерфейсные модули, таймеры, стек, схему прерываний и т. д.
В качестве ЦАП можно использовать микросхемы семейства AD53xx: 8-, 10- и 12-битные счетверенные ЦАП с трехпроходным последовательным интерфейсом или другие типы ЦАП, согласованные с интерфейсом ADSP.
АЦП является сложным и дорогим устройством, поэтому используется одна микросхема последовательного или параллельного действия, на вход которой подключается выход мультиплексора МХ, соединенного с аналоговыми выходами.
Справочное дополнение
Построению агрегатных (модульных) универсальных средств устройств связи с объектом (УСО) уделяется большое внимание. Уровень автоматизации проектирования таких модульных УСО для решения широкого круга задач с использованием соответствующих графических программ имеет первостепенное значение. Фирмой SIMENS предлагаются модульные программируемые контроллеры SIMATIC S7-400 для сбора, обработки информации и автоматического управления компонентами промышленного производства средней и высокой сложности. Разработаны и другие модульные программируемые контроллеры семейства SIMATIC для решения иных, менее сложных задач. Контроллеры SIMATIC S7-400 характеризуются следующими функциональными возможностями:
•	локальный и распределенный ввод-вывод дискретных и аналоговых сигналов;
•	удобство и гибкость обслуживания;
•	возможность «горячего» подключения модулей;
•	широкие коммуникационные свойства;
•	графическое программное приложение для управления модулями (графический интерфейс пользователя);
•	высокая производительность и т. д.
Программируемые контроллеры SIMATIC S7-400 представлены на рис. 16.25.
Агрегатная система автоматизации S7-400 имеет модульную структуру, которая может комплектоваться необходимым количеством различных модулей, устанавливаемых в любом порядке, кроме блоков питания, первого центрального процессора и некоторых интерфейсных модулей, занимающих фиксированные места в стойке. В стойке могут находиться:
•	модули центральных процессоров различной производительности;
•	модули для ввода-вывода дискретных и аналоговых сигналов;
•	модули блоков питания;
•	коммуникационные модули для организации последовательной передачи данных, а также для сетевого обмена данными;
•	функциональные модули для решения специальных задач управления (счет, позиционирование, автоматическое регулирование и т. д.).
706
Устройства преобразования информации
Рис. 16.25. Программируемые контроллеры SIMATIC S7-400
В качестве основных областей применения SIMATIC S7-400 можно назвать: системы измерения и сбора данных: технологическое оборудование; вычислительную технику: машиностроение: автомобильная промышленность и т. д.
Для управления автоматизированными процессами и наблюдения на базе компьютера для программируемых контроллеров SIMATIC S7-400 разработана графическая среда SIMATIC WinCC (Windows Control Center, Центр управления Windows) для использования ее в операционной системе Windows NT/2000. Основные функциональные возможности SIMATIC WinCC следующие: полная открытость для других приложений: конфигурируемость для решения различных задач: способность к развитию: надежность в работе: представлять к регистрации последовательности операций, измеряемых величин и событий, влияющих на качество: показывать графическую визуализацию процесса и его состояний ит. д.
Таким образом, SIMATIC WinCC обеспечивает мощные функции проектирования, диагностику и визуализацию процесса, поддержку интерактивного интерфейса, управление процессом со стороны оператора.
Алгоритм управления какой-либо автоматической системы регулирования выполняется с помощью программных блоков, выбираемых из библиотеки стандартных блоков. Из этих функциональных программных блоков путем организации их связей с использованием графических инструментальных средств составляется структурная схема в соответствии с алгоритмом управления. Каждый блок реализует определенную функцию: арифметико-логические операции: операции ввода/вывода; операции управления аппаратурой и т. д. Кроме того, с помощью средств WinCC на экране монитора можно представить мнемосхему какого-либо оборудования, содержащую компоненты управления (например, вентили, задвижки, клапаны), функционирование которого осуществляется с помощью разработанного блочного алгоритма.
Интерактивная модель АЦП
707
16.5.	Интерактивная модель АЦП
Разработана интерактивная динамическая модель АЦП последовательного приближения, которая на экране монитора представлена в виде микросхемы ЦАП и аналогового компаратора, сравнивающего входное напряжение и напряжение, сформированное ЦАП.
Интерфейс программы приведен на рис. 16.26.
Рис. 16.26. Интерфейс пользователя
Программа написана на языке высокого уровня Delphi.
В программе реализованы все требования, изложенные в техническом задании.
В программе реализованы:
•	построение временной диаграммы цифровых сигналов;
•	построение временной диаграммы напряжения на выходе ЦАП;
708	Устройства преобразования информации
•	пошаговый режим преобразования;
•	автоматический режим преобразования;
•	возможность записи в порт двоичного числа, выставляемого на шину АЦП;
•	возможность сброса всех сигналов;
•	возможность визуального наблюдения изменяющихся сигналов (индикация сигналов);
•	возможность очищения полей диаграмм.
В программе реализован рассмотренный ранее алгоритм последовательного преобразования.
Рис. 16.27. Диаграмма последовательных приближений
Контрольные вопросы
1. Укажите количество компараторов, содержащееся в АЦП последовательного приближения;
1) п;	2) п2;	3) (2П) - 1;	4) (2n) + 1.
2. Выберите тип ЦАП:
1) интегрирующий:
2) параллельного преобразования;
3) с резисторной матрицей R-2R;
4) на базе реверсивного счетчика.
Литература
709
3.	Укажите количество тактов преобразования в АЦП методом последовательного приближения:
1) 2П:	2) п; 3) (2п)-п;	4)п-1.
4.	Если в регистре 3-разрядного АЦП последовательного приближения хранится код 110 и входное напряжение больше напряжения ЦАП, то определите следующий код, который должен быть в этом регистре:
1) ill:	2) 101:	3) 010:	4) юо.
5.	Выберите устройство, в котором применяется ЦАП:
1)	видеоадаптер VGA:	3) адаптер IDE:
2)	сканер:	4) клавиатура.
Литература
1.	Сопряжение датчиков и устройств ввода данных с компьютерами IBM PC / пер. с англ., под ред. У. Томпкинса, Дж. Уэбстера. - М.: Мир, 1992. - 592 с.: ил.
2.	Хоровиц П., Хилл У. Искусство схемотехники: в 3 т. Т. 2 / пер. с англ. 4-е изд., перераб. и доп. - М.: Мир. 1993. -371 с.: ил.
3.	Финогенов К. Г. Программирование измерительных систем реального времени. - М.: Энергоатомиздат, 1990. - 256 с.: ил.
4.	Перспективы развития вычислительной техники: в 11 кн.: справ, пособие / под ред. Ю. М. Смирнова. Кн. 8: Периферийное и терминальное оборудование ЭВМ / Л. В. Семенов и др. - М.: Высшая школа, 1990. - 144 с.
5.	Электронные промышленные устройства: учебник для студентов вузов спец. «Промышленная электроника». - М.: Высшая школа. 1988. - 303 с.: ил.
6.	Токхейм Р. Основы цифровой электроники / пер. с англ. - М.: Мир, 1988. -392 с.: ил.
7.	НакадзимаХ., ОгаваХ. Цифровые грампластинки / пер. с япон. - М.: Радио и связь, 1988. -168 с.: ил.
8.	Библиотека электронных компонентов. Вып. 17. Аналоговые и цифроаналоговые микросхемы фирмы «Mitsubshi Electric». - М.: ДОДЭКА, 2000.-48 с.: ил.
Модемное соединение
компьютеров
17.1.	Основные определения
Л Л одем (модулятор-демодулятор) - оборудование передачи данных (DCE -/I/я Data Communication Equipment), предназначенное для сопряжения уда-/ F I ленных компьютеров (оконечного оборудования данных, DTE - Data Terminal Equipment) и направляющее преобразование компьютерных данных в соответствующие сигналы линий связи и наоборот (рис. 17.1).
Рис. 17.1. Двухточечное сопряжение ПК
Канал связи - соединение, по которому передается информация, содержащая линии связи и аппаратуру передачи данных (модемы).
Линия связи - физическая среда для передачи данных. Различают телефонные (двухпроводные и четырехпроходные коммутируемые общего пользования и выделенные), оптоволоконные, коаксиальные, радио-, электропитания и другие типы соответствующих модемов (рис. 17.2).
Аналоговые коммутируемые модемы, как и обычные телефоны, подключаются к общей сети телефонного пользования с помощью двухпроводной коммутируемой линии связи. Для модемной связи двух удаленных точек применяются 2/4-проводные выделенные линии, причем один модем настраивается в режиме передачи, а другой - в режиме приема. Выделенные линии арендуются у те-
Основные определения
711
лефонных фирм или специально прокладываются для связи двух абонентов, при этом отсутствует выполнение ряда функций: набора номера, передачи звонка, подачи питающего напряжения и т. д. В коммутируемых линиях телефонной связи установление соединения выполняется по звонку и набору номера вызывающего абонента.
В проводных телефонных линиях связи (аналоговых и цифровых) используется витая пара проводов, покрытая полихлорвинилом или тефлоном и устраняющая электромагнитные помехи (шумы).
Витая пара используется двух видов: экранированная (с металлической оплеткой) для защиты от электромагнитных полей или неэкранированная.
Неэкранированная витая пара получила наибольшее распространение в связи с невысокой стоимостью, имеет различные принципы построения (форму, диаметр и характеристики) и стандартизирована (делится на несколько категорий). Например, неэкранированная витая пара категории 1 используется в аналоговых телефонных сетях для передачи речевых сигналов. Неэкранированная пара категории 5 обеспечивает скорость передачи информации до 100 Мбит/с.
Коаксиальный кабель содержит медную жилу, покрытую диэлектриком, который, в свою очередь, окружен экраном и слоем изоляции. В зависимости от сопротивления медной жилы коаксиальные кабели делятся на классы, имеющие различные применения. Основным достоинством коаксиального кабеля является высокая скорость передачи информации на незначительном расстоянии. В кабельном телевидении используется коаксиальный кабель, который, кроме того, применяют для подключения кабельных модемов. Для кабельных модемов выделяются некоторые каналы, обеспечивающие высокую скорость передачи информации до 10 Мбит/с.
Различают аналоговые и цифровые проводные модемы. Аналоговые проводные модемы подключаются к обычным коммутируемым двухпроводным сетям общего пользования или к выделенным 2(4)-проводным аналоговым телефонным линиям.
712
Модемное соединение компьютеров
Цифровые проводные модемы соединяются с цифровыми телефонными станциями с помощью цифровых каналов и обеспечивают более высокую скорость передачи компьютерных данных (звуковых, текстовых, видео и изображений) и адаптируемость с аналоговыми телефонными сетями.
Беспроводные модемы (радиомодемы) выполняют преобразование цифровых данных в аналоговые сигналы заданного спектра с дальнейшей их передачей по радиоканалу с высокой скоростью, а при приеме осуществляется обратное преобразование аналоговых сигналов в цифровые. Производятся разнообразные типы беспроводных модемов, которые отличаются друг от друга скоростью передачи данных (полосой частот), протоколами, определяемыми спецификой радиоканала и способом модуляции сигналов. С целью повышения надежности передачи информации по радиоканалу применяются пакетные модемы. В таких модемах передаваемые данные формируются в виде пакетов, обеспечивающих их синхронизацию, контроль и коррекцию ошибок.
Известны модемы для передачи данных по линии электропитания (по одной фазе) 120/220 В в районе действия одной трансформаторной подстанции, которые получили название электромодемы. Основная область применения электромодемов - это создание учрежденческих сетей, системы управления домашней автоматикой (бытовыми приборами), телефонной связи, охранной сигнализации, системы управления и учета на предприятиях и т. д. Линии электропитания как физическая среда для передачи данных характеризуются широкой распространенностью, большими шумами, ослаблением амплитуды и изменением частоты сигнала в линии, имеют разветвленную звездообразную топологию и меняют свои характеристики в зависимости от подключаемой нагрузки. Для надежной передачи данных по линиям электропитания используют различные методы модуляции: SS - широкополосной модуляции (Spread Spectrum), амплитудной манипуляции (ASK), частотной манипуляции (FSK), дифференциальной кодовой манипуляции (DCSK: Differential Code Shift Keying) и др.
Для реализации высокой скорости передачи данных (10 Кбит/с и более) в модемах обычно применяют широкополосные каналы связи (50-450 КГц) с использованием импульсно-кодовой или дельта-модуляции. Импульсно-кодовая модуляция заключается в преобразовании аналогового сигнала в поток цифровых двоичных сигналов, то есть амплитуда аналогового сигнала преобразуется в цифровую форму (серию импульсов), причем для уменьшения количества передаваемых данных используют соответствующие методы кодирования, например цифровой код определяется логарифмом величины преобразуемого аналогового сигнала.
Если употребляется дифференциальная кодово-импульсная модуляция, то по линии связи передается разность между текущим значением сигнала и предшествующим, которая требует для ее представления меньшего количества бит.
Дельта-модуляция является вариантом дифференциальной кодово-импульсной модуляции, при котором каждому дискретному значению сигнала ставится в соответствие бит, отражающий изменение сигнала на единичную величину в сторону уменьшения или увеличения.
Существуют разнообразные стандарты, определяющие методы модуляции, протоколы доступа к среде, полосы частот, линии электропитания, наборы типовых команд для электромодемов, проблемно-ориентированные языки, формат пакетов и т. д.
Обобщенная структурная схема электромодема представлена на рис. 17.3.
Основные определения
713
Сеть 120/220в, 60Гц
Блок изоляции
Усилитель
мощности
Контроллер (трансивер)
RS-232
Рис. 17.3. Структурная схема электромодема
В состав контроллера обычно входят: микропроцессор, специализированный модуль - трансивер для различных сред передачи данных, ОЗУ и ПЗУ. Усилитель мощности предназначен для передачи сигналов на значительные расстояния. Блок изоляции выполняет предварительную обработку выделенного информационного сигнала и изолирует электронные схемы электромодема от напряжения сети.
Бод - единица измерения скорости, определяющая число изменений состояний устройства канала передачи в единицу времени (секунду). При передаче двоичной информации скорость, измеряемая в бодах, совпадает со скоростью в бит/с (1 бод = 1 бит/с).
В общем случае одному состоянию устройства передачи данных может соответствовать несколько бит данных, например два. В этом случае, если скорость передачи равна 1200 бит/с, в бодах она равна 600 (1 бод = 2 бит/с). Измерение скорости в бодах использовалось при телеграфной передаче (1 бод = 1 знак/с), а в настоящее время применяется для задания скорости передачи модемов или коммутационных микроконтроллеров.
Циклический избыточный код (Cyclic Redundancy Code, CRC) - метод определения ошибок при передаче или записи (чтении) блока данных, к которому добавляется код CRC, вычисляется с учетом содержимого блока данных (рис. 17.4).
Метод основан на представлении блока данных в виде полинома, который вначале умножается на хк. а затем делится на порождающий полином степени к, в результате получается остаток, являющийся кодом CRC. На приемной стороне блок данных с кодом CRC вновь делится на порождающий полином, и если остаток от деления равен 0, то блок данных принят без ошибки. При вычислении CRC выполняются следующие действия. Пусть необходимо проверить блок данных 110101101, который представляется в виде полинома Р(х) =х8 + х7 + х5 + + х3 + х2 + 1. с помощью порождающего полинома G(x) = х4 + х + 1 (двоичный код 10011), имеющего степень к = 4. Умножение Р(х) нах4 соответствует сдвигу двоичной последовательности на 4 бита влево, то есть Р(х) хх4= 1101011010000. Затем выполняется деление полученной двоичной последовательности на двоичный код 10011(рис. 17.4).
Таким образом, передаваемая двоичная последовательность имеет следующий вид: 110101101 И 11. Если в процессе передачи этой последовательности ошибки не произошло, то при ее делении на код 10011 остаток от деления будет равен 0.
На рис. 17.5 представлена функциональная схема деления двоичной последовательности Р(х) на порождающий полином G(x) = х4 + х + 1 (код 10011).
714
Модемное соединение компьютеров
-> код CRC
Примечание:
Частное не фиксируется.
Деление состоит в суммировании по модулю 2(хог) и сдвиге (shift) двоичной последовательности.
Операция хог выполняется, если старший бит двоичной последовательности равен 1, иначе выполняется ее сдвиг на 1 бит влево. Операция хог осуществляется только с младшими четырьмя битами, так как старшие всегда при суммировании по модулю 2 в результате образуют 0.
Рис. 17.4. Процесс деления
Справочные дополнения к разделу
Микрометр (мкм) - единица длины (1мкм = 10"3 мм)
Герц (Гц) - международная единица частоты (1 кГц = 103 Гц, 1 МГц = 103 кГц = = 106Гц, 1 ГГц = 103МГц).
Диапазон колебаний звуковых частот: 20 Гц - 20 кГц.
Секунда (с) - единица времени (1 с = 103 мс = 106 мкс).
Децибел (дБ) - величина сравнения двух значений мощности (звуковых, токов и напряжений). Число децибел п = 10 Lg Р1/Р2, где Р1 и Р2 - значения мощности. Уровень громкости измеряется в децибелах, например уровень обычного
Аналоговые модемы
715
разговора - 70-80 дБ. Отношение сигнал/шум также выражается в децибелах. Для обнаружения сигнала с помощью звукового детектора необходимо отношение сигнал/шум, по крайней мере, 20-30 дБ.
17.2.	Аналоговые модемы
Аналоговые модемы - устройства передачи последовательного типа, модулирующие данные компьютера в аналоговый звуковой сигнал, передаваемый по телефонной линии, и демодулирующие аналоговый звуковой сигнал в данные компьютера при их приеме.
Д ля организации связи ПК или других устройств с помощью телефонных линий используются аналоговые модемы.
Персональные компьютеры с модемной связью пользователей применяются для обращения к диалоговым службам: электронным доскам объявлений (BBS), электронной почте (e-mail) и информационному сервису. BBS представляет собой специально выделенный компьютер и модем с определенной программой, которая может передавать (принимать) сообщения, файлы обычно без участия оператора. Пользователь, обратившись к BBS, может принять соответствующие файлы, посмотреть объявления и т. д.
С помощью электронной почты можно переводить программные файлы, сообщения только пользователю другого компьютера, имеющего средства электронной почты. Если в BBS информация доступна всем пользователям, то в электронной почте информация читается лишь теми адресатами, которым она послана. Информационный сервис связан с производственной деятельностью предприятия (фирмы), когда по модемной связи поступает патентная, финансовая, коммерческая и другая информация.
С помощью модемов осуществляется доступ к мировой сети связи. Кроме того, модемы используются в системах телеобработки данных, содержащих центральную ЭВМ и абонентские пункты, связь между которыми осуществляется с помощью модемов и телефонных линий связи. Системы телеобработки данных, в частности. используются для управления коммунальным хозяйством, энерго- и водоснабжением городов, технологическим оборудованием заводов и т. д.
В системах факсимильной связи также употребляется внутренний модем для подключения к телефонной сети. Факс содержит сканер, кодирующие и декодирующие устройства, принтер и модем. С помощью сканера считываются данные документов, чертежа, фотографии, а затем выполняется их кодирование и сжатие. После этого данные в аналоговой или цифровой форме под управлением модема передаются в линию связи. На другой стороне линии связи данные принимаются модемом, декодируются и выводятся на печать. На бумаге печатается дубликат (факсимиле) исходного документа. И наоборот, функцию факса может осуществлять модем, получивший название факс-модема. Факс-модем подключен к компьютеру, который выполняет кодирование и декодирование факсимильных данных.
Известно большое число фирм, занятых изготовлением модемов различных типов: синхронных, асинхронных, многовходовых, аналоговых, цифровых, высокоскоростных, с коррекцией ошибок и сжатием данных, микропроцессорным управлением, разными методами модуляции (демодуляции), внешних и встроенных.
716
Модемное соединение компьютеров
К недостаткам встроенных модемов относят:
•	отсутствие индикации, нужное для взаимодействия пользователя с модемом;
•	необходимость вскрытия системного устройства для установки платы.
Обычно встроенные модемы имеют перемычки, позволяющие его конфигурировать на любой последовательный порт, для употребления его базового адреса (СОМ 1 имеет базовый адрес 3F8h. COM2 - адрес 2F8h. COM3 - адрес 3E8h, COM4 - адрес 2E8h) и номера прерывания (IRQ3-IRQ7).
В некоторых случаях для согласования скоростей работы процессора и встроенного модема на плате последнего применяют микросхему УАПП 16550А, содержащую буферную память, предназначенную для хранения данных, поступающих с высокой скоростью (например, 19200 бит/с) в модем.
Схема связей внешнего модема показана на рис. 17.6.
В настоящее время для подключения модема чаще всего используется порт USB компьютера.
К последовательному порту (например, СОМ1) компьютера модем подключается с помощью кабеля интерфейса RS-232C, причем может быть использован как 25-контактный (DB25S), так и 9-контактный разъем. Последовательный порт с разъемом DB25S имеет более широкую область применения, так как употребляется для выполнения синхронного или асинхронного режима работы, хотя в большинстве случаев используется асинхронный режим. Порты СОМ1 и COM2 являются асинхронными. Интерфейс RS-232C (рекомендуемый стандарт) был предложен ассоциацией электрической промышленности (EIA) для организации связи между ООД и АПД. В обозначении этого интерфейса число 232 соответствует номеру стандарта, а буква С - его варианту. Если используется вариант D этого стандарта, то употребляется обозначение EIA вместо RS, то есть EIA-232D. Интерфейс EIA-232D дополнительно содержит некоторые сигналы.
Модуляция - процесс изменения несущего сигнала в соответствии с формой представления другого модулирующего сигнала. Аналоговое колебание, с помо
Аналоговые модемы	717
щью которого передается цифровой код, называется несущим колебанием (несущей частотой), рис. 17.7.
L Несущий	Модулирующий сигнал Л_Г j	I Модулированный
сигнал	Модулятор	сигнал
UW1		IWU '
Рис. 17.7. Общий вид модуляции (манипуляции)		
Термин Shift Keying (манипулирование) обозначает способ модуляции, когда модулирующий сигнал представлен в цифровой форме, а не в аналоговой. Метод модуляции существенно определяет скорость передачи данных модемом и характеризуется количеством одновременно передаваемых битов в аналоговом промоделированном сигнале.
В измерительной технике применяется другой процесс модуляции, когда в качестве несущего сигнала используется последовательность импульсов (тактовые сигналы), а модулирующий сигнал представляет собой аналоговый сигнал (рис. 17.8).
Рассмотренный процесс модуляции связан с дискретизацией аналогового сигнала и используется в аналого-цифровых преобразователях. Кроме того, такое устройство можно назвать кодером, так как оно преобразовывает аналоговый сигнал в цифровой вид, например для передачи речевых сигналов в цифровом виде по телефонным линиям.
В радиотехнике под модуляцией понимается процесс изменения во время параметра (например, амплитуды) несущего аналогового модулируемого сигнала под действием другого модулирующего аналогового сигнала (рис. 17.9).
Известны три основных способа модуляции (демодуляции) синусоидального сигнала: амплитудный, частотный и фазовый (рис. 17.10).
Фазовая модуляция определенной частоты употребляет для сигналов 0 и 1 частоты с разными фазами. При амплитудном способе осуществляется модуляция амплитуды несущей частоты исходным сигналом. При использовании частотной модуляции (манипуляции) некоторая частота fH применяется в качестве несущей. Логической 1 соответствует частота fH + Af, а логическому 0 - частота fH - Af, то есть выполняется сдвиг частот влево или вправо в зависимости от значения бита исходного сигнала. Для получения этих частот можно употребить 2 генератора, синхронизированных по фазе. На приемной стороне для выделения данных частот используют соответствующие фильтры. Модемы с частотной модуляцией могут работать в дуплексном режиме, когда по паре проводов линии связи может одновременно передаваться информация в обе стороны. При этом для передачи информации одного направления употребляется одна частота, а для передачи информации в другом направлении - другая (далеко отстоящая) частота. Обычно модемы исходящей связи (делает вызов). Большинство модемов работают в режиме вызова и ответа. При соединении ПК с помощью телефонной сети, которая обеспечивает передачу речевых сигналов невысоких частот в диапазоне от 300 до 3000 Гц, может быть реализован режим
Функциональные признаки модемов
719
эхообразной передачи (эхоплекса), когда ПК (модем исходящей связи) посылает данные другому модему входящей связи (ПК-приемнику), а тот воздает их обратно с целью контроля.
Метод частотной манипуляции применяется в низкоскоростных модемах. В некоторых среднескоростных модемах с тональной частотой используется метод дифференциальной фазовой манипуляции (FSK), базирующейся обычно на кодировании четырех фаз синусоидального сигнала, он на 90° соответствует коду 00, на 0° - коду 01, на 180° - коду 10 и на 270° - коду 11. При двухбитовом кодировании скорости количество бит/с и бод не совпадают, например скорости 2400 бит/с сопоставляется скорость 1200 бод, так как в этом случае передаются 2 бита данных одновременно. Бод - единица скорости, определяемая числом передаваемых элементов сигнала в единицу времени (с).
Для скорости передачи 1200 бит/с может применяться двухфазовая манипуляция, для 2400 бит/с - четырехфазовая манипуляция, для скорости 4800 бит/с -восьмифазовая и т. д. Фазовая манипуляция, таким образом, позволяет более эффективно использовать полосу частот коммутируемой телефонной сети, чем частотная модуляция.
В высокоскоростных модемах с тональной частотой применяется метод квадратурной амплитудной модуляции (QAM), когда модулируются амплитуда и фаза сигнала, то есть используется уже 4-битовое кодирование (16 комбинаций): два бита соответствуют изменению фазы и два бита - изменению амплитуды.
В этом случае скорость в 1200 бод равняется скорости 4800 бит/с.
Известны более скоростные модуляции, например метод групповой кодировки - 64ТСМ и 128ТСМ, которые обеспечивают соответственно скорости передачи данных 12000 бит/с и 14000 бит/с. Обычно в обозначении метода модуляции указывается число комбинаций. Так, метод 16-QAM определяет использование четырехбитного кодирования. В качестве несущей частоты для всех методов модуляции стандарта ITU-TSS используется частота 1800 Гц, 1700 Гц или 1200 Гц.
17.3.	Функциональные признаки модемов
Аналоговые и модемы других типов характеризуются следующими функциональными признаками, определяемые различными стандартами (рис. 17.1 1).
Способы модуляции
Известно множество различных способов модуляции или кодирования компьютерной информации для передачи ее по линиям связи, в том числе и по телефонным линиям. Еще раз рассмотрим для аналогового модема фазовую модуляцию, при которой изменяется фаза высокочастотного синусоидального сигнала с постоянной амплитудой в зависимости от модулирующих сигналов данных. Напомним, что если используются только две фазы синусоидального сигнала (0 и 180°), то такая модуляция называется двухфазной. В том случае, когда фазы синусоидального сигнала принимают значения 0, 90, 180 и 270° , это определяет способ четырехфазной модуляции. Причем на практике используется дифференциальная (фазоразностная) модуляция (ДФМ), при которой учитывается сдвиг по фазе сигнала относительно предыдущего значения. На рис. 17.12 представлены фазовые диаграммы, в которых каждой фазе соответствует определенное кодовое значение.
720
Модемное соединение компьютеров
Рис. 17.11. Функциональные признаки модемов
Два бита, определяющие соответствующую фазу сигнала, называют дибитом, три бита - трибитом, и четыре бита - квадробитом.
Квадратурная амплитудная модуляция (КАМ) - комбинированная модуляция. при которой учитывается изменение как амплитуды, так и фазы сигнала.
Суть этого способа модуляции состоит в увеличении разрядности кодовых комбинаций, что позволяет увеличить скорость передачи данных, измеряемую в бит/с, то есть одному боду будет соответствовать несколько значений в бит/с. В стандарте V.22 bis определены рекомендации по использованию способа модуляции КАМ-16. Этот стандарт определяет дуплексную передачу с частотным разделением времени. Скорость передачи данных - 2400 бит/с или 600 бод. частота несущей - 1200 Гц в режиме запроса и 2400 Гц в режиме ответа. Каждое состояние сигнала, передаваемого со скоростью 600 бод, кодируется четырьмя битами. Диаграмма модуляции КАМ-4 изображена на рис. 17.13, в которой используются четыре уровня: ±1 и ±3.
Функциональные признаки модемов
721
Расстояние
1100 — код точки
• — сигнальная точка
180° «<+
-3
Рис. 17.13. Диаграмма модуляции КАМ-4
Стандарт V.34, иногда говорят модем V.34, имеет наилучшие технические характеристики и позволяет передавать данные с максимальной скоростью 28 800 бит/с по аналоговым линиям связи. В стандарте V.34 используется четырехмерная квадратурная, амплитудная модуляция (модуляция по фазе и амплитуде). к которой добавляются два временных параметра. При таком способе модуляции каждой сигнальной точке соответствуют 18 бит. Максимальная несущая частота в стандарте V.34 составляет 2000 Гц. Кроме того, стандарт V.34 не измеряет скорость в бодах, вместо этого употребляется обозначение «символ/с».
Важным критерием помехоустойчивости метода модуляции является увеличение расстояния d между сигнальными точками с целью улучшения их распознаваемости. В режиме КАМ-4 не используется амплитудная модуляция, а применяется только фазоразностная. Модуляция по амплитуде и фазе осуществляется в режиме КАМ-16.
Треллис-модуляция (ТСМ - Trellis Coded Modulation) - решетчатая модуляция (решетчатое кодирование), в которой также используются в каждой модуляции фаза и амплитуда, но не все комбинации фазы и амплитуды являются допустимыми в соседних модуляциях. Таким образом, при треллис-модуляции применяются три параметра: фаза, амплитуда и номер модуляции. Треллис-модуляция имеет следующие достоинства: повышает скорость передачи данных и улучшает соотношение сигнал/шум.
Развитие модемов связано с увеличением скорости передачи и расширением их функциональных возможностей. Каждая ступень совершенствования модемов определена соответствующим техническим стандартом Международного Телекоммуникационного союза ITU-TSS, дающим рекомендации для применения в соответствующей области (для модемов эти рекомендации имеют префикс V). Способ модуляции в значительной мере определяет скорость передачи модема (рис. 17.14).
Импульсная модуляция
Импульсная модуляция состоит в том, что на выходе модема (кодека) сигнал не имеет непрерывной аналоговой формы, а представлен в виде импульсных
722	Модемное соединение компьютеров
и
4-мерная
FSK I	FSK I	4-DPSK I	16-QAM	32-ТСМ I	128-ТСМ	QAM
I V.21	I V.23	I V.27bis	V.29	I V.32	V.33	V.34
300 бод	1200 бод	1600 бод	2400 бод	2400 бод	2400 бод	3429 символ/с
300 бит/с	1200 бит/с	4800 бит/с	9600 бит/с	9600 бит/с	14400 бит/с	28800 бит/с
FSK - частотная модуляция
DPSK-дифференциальная фазовая модуляция
QAM - квадратурная амплитудная модуляция
ТСМ -Треллис модуляция
Рис. 17.14. Зависимость скорости передачи данных от способа модуляции
сигналов. Различают амплитудно-импульсную, фазоимпульсную, широтно-импульсную, числоимпульсную и кодово-импульсную модуляции.
При амплитудно-импульсной модуляции в каждый момент времени дискретизации высота (амплитуда) импульсов пропорциональна мгновенному значению модулирующего сигнала. Амплитудно-импульсная модуляция требует широкой полосы частот (удвоенной частоты выборки).
Фазоимпульсная модуляция заключается в том, что интервалы между импульсами зависят от значения отсчета. При широтно-импульсной модуляции длительность выходных сигналов пропорциональна амплитуде модулирующего сигнала в момент дискретизации.
Числоимпульсная модуляция характеризуется тем, что каждому отсчету, например звукового сигнала, соответствует определенное количество импульсов.
Кодово-импульсная модуляция (КИМ) использует принципы квантования во времени и пространстве и кодирования. Известны различные модификации КИМ, например при дифференциальной КИМ используется разность между предшествующим и текущим значениями сигнала, которая требует меньшего количества бит, чем величина амплитуды. Кроме того, известна дельта-модуляция, отражающая изменение сигнала в сторону уменьшения или увеличения, и КИМ с предсказанием на основе нескольких предшествующих значений, причем по линии связи передается только разность между действительными и предсказанными значениями.
Импульсная модуляция используется в автоматических телефонных станциях общего пользования, в частности КИМ позволяет увеличить полосу пропускания телефонного канала до 330 Гц.
Алгоритмы сжатия
Сжатие (компрессия) данных - метод преобразования (кодирования) данных с целью уменьшения их избыточности (объема), широко употребляемый при передаче и хранении текстовой, звуковой и видеоинформации.
Для увеличения скорости передаваемых данных большого объема в интеллектуальных модемах используются различные алгоритмы сжатия. С этой целью в модемах используются соответствующие протоколы MNP 5 или 7 (Micro-com Network Protocol), состоящие из нескольких классов, причем класс 5 приме
Функциональные признаки модемов	723
няется для сжатия данных почти в два раза. При этом скорость передачи данных может быть увеличена в несколько раз.
Кроме того, разработаны стандарты V.42 для сжатия и исправления ошибок. Стандарт V.42bis использует более эффективный алгоритм, чем протокол MNP-5, и улучшенную схему сжатия (коэффициент сжатия 4 : 1). В соответствии со стандартом V.42 сначала выполняется анализ данных, а уж потом осуществляется их сжатие, так как в некоторых случаях данные компьютера уже сжаты и нет необходимости подвергать их дополнительному сжатию.
Стандартом V.42bis используется алгоритм, построенный на базе алгоритма Лемпеля-Зива (LZ-алгоритм).
Модем V.42bis выполняет автоматическую компрессию и декомпрессию передаваемых данных. Коэффициент (степень) сжатия - отношение объемов входного и выходного потоков данных (зависит от типа данных). Скорость сжатия - время, затрачиваемое на компрессию входных данных определенного объема. Алгоритм Лемпеля-Зива заключается в нахождении во входном потоке данных повторяющихся блоков и кодировании ссылок на эти блоки с использованием многоуровневых кэш-таблиц (словарей), причем для поиска необходимой информации в памяти применяется способ двоичного дерева. С целью увеличения коэффициента сжатия применяют двухступенчатый комбинированный алгоритм, когда после выполнения первой ступени кодирования осуществляется вторая ступень, в которой также определяются повторяющиеся блоки и их кодирование с помощью какого-либо метода сжатия. Идея двухступенчатого кодирования напоминает принцип формирования каскадного кода защиты от ошибок, состоящий из построения внешнего и внутреннего кодов. Известно большое число алгоритмов сжатия информации:
•	алгоритм RLE (Run Length Encoding), основанный на выделении повторяющихся байтов и указании (счетчика) числа их повторов;
•	алгоритм Хаффмена, заключающийся в замене повторяющихся фрагментов (блоков) специальным кодом;
•	алгоритм Лемпеля-Зивы;
•	комбинированные двухступенчатые алгоритмы и т. д.
Пример 1. Алгоритм RLE.
Исходные данные 66 66 66 66 12 BOD1 14 14 14 14 14
Сжатые данные ,04,66^2 РД 12 BOD1,05, 14
Признак разнотипных байтов
Счетчкм
Счетчик указывает количество повторяющихся байтов, например 04 - это четыре одинаковых байта 66. Если встречается комбинация 00, то она определяет наличие группы разнотипных байтов, причем следом за этой комбинацией идет счетчик числа неодинаковых байтов.
Пример 2. Алгоритм Хаффмена.
Пусть имеется файл, содержащий 80 байтов, состоящий из следующих символов (вверху над символом указано число его повторений):
724	Модемное соединение компьютеров
20 16 15 10 10 5 4
В G D А С К Е
Алгоритм состоит в том, что поэтапно выполняется создание узлов с двумя ветвями, начиная с узлов, в которых задано наименьшее число повторений символа (рис. 17.15).
1)	20 16 15 1010 5 4
В G D А С К F
LgJ
2)	2010 5 4 16 1510 В С К F G D А
I l9J
49J
3)	15 10 20 10 5 416
DAB С К F G
L25J I L9J
4) 10 5 4 16 1510 20
5) 1510 20 10 5 4 16
DAB
L25J L45-
С К F G
Таблица кодирования:
5) 1510 2010 5 416 DAB С К F G W I L9J
I 49 J
L45J 1-35-
1— корень —1
◄—	—►
0	1
С К F G D А В
G-10 D-000 K-1010
B-01 A-001 F-1011
C- 100
Рис. 17.15. Пример алгоритма Хаффмена
Кодирование символов осуществляется следующим образом. При движении от корня по ветви влево к соответствующему символу фиксируется О, а при движении вправо - 1. Таким образом, при движении от корня к символу D фиксируется код ООО. При восстановлении исходных символов с соответствующей частотой повторения необходимо хранить таблицу кодирования, которая входит в состав уплотненного файла.
Исправление ошибок
В модемах предусматривается коррекция ошибок, отвечающая требованиям протоколов MNP (Microcom Network Protocol), которые были разработаны фирмой Microcom, а потом поддержаны другими производителями модемов. Эти протоколы состоят из нескольких классов, которым присваивались номера по мере их совершенствования. Например, протокол MNP5 - это протокол сжатия (2 : 1), который используется совместно с протоколом MNP4, предназначенным для исправления ошибок.
Кроме того, разработаны стандарты V.42 и V.42bis для сжатия и коррекции ошибок.
Для исправления ошибок в основном применяется циклический, избыточный код (CRC), который находится путем использования порождающего полинома, делящего передаваемый блок данных для получения остатка, добавляемого к блоку данных в качестве контрольных битов. Подробно принцип кодирования и декодирования циклических кодов был изложен в главе «Защита информации
Параметрические признаки модемов
725
от ошибок». Некоторые ошибки обнаруживаются и исправляются путем повторной передачи. Поэтому в протоколах передачи данных, например в протоколе X modem, предусматривается ответная посылка сообщения «неподтверждение приема» (NAK) или «подтверждение приема» (АСК) в случае отсутствия ошибки. Протоколом V.42 предусматривается порождающий полиномом 16-й степени -G(x) = х16 + х12 + х5 + 1, с помощью которого форматируются циклические коды, исправляющие пакеты ошибок и содержащие 16 проверочных символов (битов).
17.4.	Параметрические признаки модемов
Различными фирмами изготавливаются модемы разнообразных типов, которые отличаются друг от друга техническими характеристиками. Наиболее важным параметром модема является его быстродействие, измеряемое в бит/с или бодах (рис. 17.16).
Шина расширения
Шина расширения
УАПП - универсальный приёмопередатчик f(t) - тактовая частота
Рис. 17.16. Схема модемной передачи данных
В УАПП программируется скорость передачи данных (V бит/с): 300, 600, 1200, 2400 и т. д. На выходе модулятора формируется аналоговый сигнал, скорость передачи которого измеряется в бодах.
К другим параметрам относятся: число используемых пар кабеля (обычно одна или две), дальность связи сотни километров и частотный диапазон в 3 КГц для обычной коммутируемой линии связи, отношение сигнал/шум.
Для аналоговых модемов максимальные скорости передачи (бит/с) по мере их совершенствования составляли: 1200 (V.22), 2400 (V.22bis), 9600 (V.32), 14400 (V.22bis), 28800 (V.32 fast), 33600 (V.34).
К. Шенном была определенна максимальная скорость 33,6 Кбит/с для аналоговой линии связи. Поэтому дальнейшее совершенствование модемов было связано с новыми технологиями организации каналов передачи данных, в частности с переходом к технологии цифровых абонентских линий (DSL - Digital Subscriber Line).
726	Модемное соединение компьютеров
В связи с применением цифровых телефонных линий связи и цифровых АТС используются модемы 56 К, которые позволяют определять данные со скоростью 33,6 Кбит/с (как аналоговые модемы) и принимать данные со скоростью 56 Кбит/с. В первом случае (при передаче) выполняется преобразование из цифровой формы в аналоговую, а во втором случае (при приеме) это преобразование отсутствует, так как информация представлена только в цифровой форме. Для обеспечения совместимости высокоскоростных модемов разработан стандарт V.90. Т&ким образом, модемы V.90 могут работать как с аналоговыми АТС со скоростью 33,6 Кбит/с, так и с цифровыми АТС со скоростью 56 Кбит/с или одновременно с обеими станциями.
17.5.	Аппаратура аналогового модема
Структурная схема одного из вариантов аналогового модема представлена на рис. 17.17.
ТЛ - телефонная линия ТА — телефонный аппарат T — трансформатор
ФНЧ - фильтр низких частот ПФ — полосовой фильтр ЦАП — цифро-аналоговый преобразователь АЦП - аналого-цифровой преобразователь
Рис. 17.17. Структурная схема аналогового модема
Аналоговый модем предназначен для преобразования компьютерных данных в аналоговые сигналы, передаваемые по удаленной телефонной линии связи. Кроме того, аналоговый модем принимает аналоговые сигналы из телефонной линии связи и преобразует их в цифровые данные, вводимые в компьютер.
Аппаратура аналогового модема	727
Структурная схема аналогового модема содержит два базовых элемента: микроконтроллер и сигнальный процессор, различные типы которых определяют функциональные возможности модема.
Микроконтроллер через соответствующий интерфейс (USB, RS-232 и т. д.) непосредственно взаимодействует с компьютером, управляет работой сигнального процессора, выполняет протоколы передачи данных, осуществляет сжатие данных, коррекцию ошибок и т. д. Микроконтроллер обычно содержит арифметико-логическое устройство (АЛУ), регистровую память, блок управления и синхронизации, таймеры, встроенную схему УАПП, несколько байтовых портов ввода-вывода и другие узлы.
Сигнальные процессоры выпускаются различными фирмами: Texas Instruments (TMS). Analog Devices (ADSP), Motorola (DSP) и др. Приведем некоторые технические характеристики сигнальных процессоров: число битов данных -16, количество портов ввода-вывода - 8, быстродействие - около 5 х 106 операций в секунду, разрядность АЛУ - 32 бита и т. д. Сигнальные процессоры для работы в реальном или сжатом времени содержат: АЛУ, аппаратный умножитель, конвейеры команд и данных, АЦП и ЦАП, например ADSP-21, последовательный многоканальный порт, память для хранения программ и данных и другие узлы.
Сигнальный процессор организует работу интерфейса телефонной линии и координирует действия преобразователя сигналов, содержащего АЦП и ЦАП. Для согласования схемы с физическими телефонными линиями и гальванической развязки цепей по постоянному току используется трансформатор. В некоторых интерфейсах телефонных линий применяется передача сигналов по двухпроводным или четырехпроводным телефонным линиям, что требует наличия двух трансформаторов и мультиплексора аналоговых сигналов. Интерфейс телефонной линии обеспечивает усиление мощности передаваемого аналогового сигнала с ограничением по амплитуде. Дифференциальная схема необходима для перехода от двухпроводной схемы к четырехпроводным выводам схемы интерфейса телефонных линий, в которой предусматривается развязка для проникновения выходного сигнала во входной, обеспечивающая ослабление отраженного выходного сигнала на 10 дБ.
Важное значение имеет фильтрация выходного и входного сигналов, которая определяет качество работы модема, отношение сигнал/шум. Для увеличения этого отношения полоса пропускания приемного фильтра должна быть узкой. Различают пассивные и активные фильтры, пропускающие сигналы требуемого диапазона. Пассивные фильтры содержат резисторы, емкости и катушки индуктивности, а активные фильтры - операционные усилители. Фильтр низких частот выделяет сигналы звуковых частот, а полосовой фильтр характеризуется определенной полосой пропускания и плоской амплитудно-частотной характеристикой с высокой крутизной затухания, выбираемой в зависимости от протокола.
ЦАП формирует аналоговый выходной сигнал, разрядность которого в зависимости от скорости передачи модема выбирается из диапазона 10-16 бит. АЦП преобразует аналоговый входной сигнал в цифровой той же разрядности, что и ЦАП. Как уже отмечалось, некоторые сигнальные процессоры содержат встроенные схемы АЦП и ЦАП.
Компьютер с помощью коммуникационной программы, содержащей набор АТ-команд, управляет работой модема. Впервые команды AT (Attention, внимание) были использованы фирмой Hayes и затем поддержаны другими компания
728	Модемное соединение компьютеров
ми. Здесь усматривается аналогия с множеством команд Esc различных принтеров, когда каждая строка команд начинается с префикса Esc (Escape, переход). Базовый набор АТ-команд (выбор стандарта BELL212A (АТВ1), подключение к линии в режиме вызова (ATD) или ответа (АТА), повтор последнего набора номера (ATDL) и т. д.) стандартизирован. Многие изготовители модемов используют расширенный набор АТ-команд, в котором имеются собственные АТ-команды, связанные с дополнительными функциями таких модемов. Поэтому иногда с модемом поставляется гибкий диск, содержащий модемный файл данных, в котором указываются набор АТ-команд и особенности этого модема.
Внешний модем - это интеллектуальное устройство, реализованное на базе 16- или 32- битного процессора и имеющее регистры, к которым возможен доступ с помощью АТ-команд. Модем выполняет разнообразные функции, перечислим некоторые из них: автоматического вызова, автоответа, коррекции параметров, сжатия данных, коррекции ошибок, определения номера, диагностики, синхронного обмена и т. п. Для реализации этих функций в модеме используется ППЗУ, хранящее соответствующее микропрограммное обеспечение.
Модем работает в двух режимах: командном режиме и режиме данных. В первом режиме модем получает АТ-команды и выполняет их, а во втором - передает (принимает) модулируемые (демодулируемые) сигналы данных в линию связи (из линии связи).
Для установления связи модем (передатчик) посылает вызов нужному модему (приемнику) с помощью устройства автоматического вызова или вручную. В свою очередь, модем (приемник) на сигнал вызова посылает сигнал ответа, также автоматически или вручную. Во время последовательности установления соединения уточняются параметры связи.
Если в модеме предусмотрено преобразование аналоговых сигналов звука в цифровые, то в нем сообщение записывается в память и может быть затем выдано в линию связи как автоответ или на динамик модема. Запись звуковых сигналов в памяти требует применения алгоритма сжатия данных, которые декодируются при выводе на линию связи. В некоторых высокоскоростных модемах реализуется функция адаптивной их настройки на параметры линии связи. Для повышения скорости асинхронной передачи данных в модемах используются соответствующие алгоритмы сжатия данных, в которых используются кодирование повторяющихся сигналов и кодирование по частоте появления символов. Коррекция ошибок выполняется как при синхронной, так и при асинхронной передаче данных и определяется соответствующим протоколом уровня связи. При необходимости данные могут быть переданы повторно. Обычно для контроля используется циклический избыточный код (CRC), который передается в конце каждого блока данных. На приемной стороне модем для принятого блока данных вычисляет циклический избыточный код и сравнивает его с поступившим CRC. Если контрольные коды совпадают, то блок данных был принят без ошибки и модем подтверждает получение этого блока.
Существуют протоколы MNPV (Microsoft Networking Protocol) фирмы Microcomp, определяющие уровень коррекции ошибок и сжатия данных наиболее известных моделей. Например, протоколы MNP-1, MNP-4 предназначены для выполнения безошибочных передач, протоколы MNP-5 и MNP-7 - для сжатия данных и т. д. Протокол MNP-4 устанавливает коррекцию ошибок и повторную передачу данных. Этот протокол аналогичен протоколу V.42. Протокол V.42, поддерживающий сжатие данных, соответствует по форме протоколу MNP-5.
Аппаратура аналогового модема	729
Определение номера вызывающего абонента состоит в следующих действиях. Принимающий модемный абонент делает соответствующий запрос на телефонную станцию и по ее ответу устанавливает номер.
Различают асинхронные, синхронные и асинхронно-синхронные модемы. Асинхронные модемы являются низкоскоростными устройствами, так как в асинхронном режиме каждая кодовая последовательная посылка 5-8 бит данных содержит дополнительные стартовый и стоповые биты.
Синхронные модемы принимают и передают данные с использованием общего сигнала синхронизации, который может быть сформирован самим модемом или внешним источником.
Асинхронно-синхронные модемы работают в одном из выбранных режимов путем подачи, например, соответствующей команды. При включении модема обычно по умолчанию устанавливается асинхронный режим. В некоторых ситуациях, для сопряжения асинхронного компьютера с синхронным модемом, устанавливается асинхронно-синхронный преобразователь.
Для проверки линии связи и работоспособности модема предусматриваются различные функции диагностики: внутреннее тестирование модема при включении питания, аналоговые и цифровые соединения, связанные с замыканием выхода передатчика с входом приемника модема.
Внешние модемы имеют световые индикаторы, расположенные на передней панели. В табл. 17.2 приведены некоторые типичные световые индикаторы, сообщающие о состоянии модема.
Таблица 17.2		
Обозначение	Название	Назначение
RxD _	Recive Data	Передача данных из модема в ПК
TxD	Transmit Data	Передача данных из ПК в модем
DTR	Data Terminal Realy	Готовность терминала данных (ПК) к работе
DSR	Data Set Ready	Готовность набора данных (модема)
JH S _	High Speed	Высокая скорость работы модема (1200 бит/с и более)
M _	Auto Answer	Автоответ Модем находится в режиме автоответа
CD	Carrier Detect	Обнаружение модемом несущей частоты вызываемого
		модема
PWR	Power	Включение питания модема
OH _	Off Hook	«Поднятие трубки» модемом
EC	Error Control	Контроль ошибок модемом
Для соединения компьютеров с помощью модемов применяются специально выделенные телефонные линии связи или линии общественной телефонной сети.
В общественной телефонной сети используется двухпроводная коммутируемая линия, по которой передаются: питание, звонок, номер абонента, двусторонние сигналы речи и т. п. Так как информация передается в обе стороны по одним и тем же двум проводам, то возникает проблема удаления эха (отраженного сигнала) перед демодуляцией основного телефонного сигнала.
Для сопряжения модемов также предусматривается двухпроводная постоянная (некоммутируемая) выделенная линия.
730
Модемное соединение компьютеров
Кроме того, используют выделенную четырехпроводную линию связи, в которой два провода предназначены для передачи информации в одном направлении, а два других провода - в другом направлении. В этом случае отраженного сигнала в проводах линии связи нет.
В выделенных линиях связи не предусматривается передача номера абонента, звонка и питания.
Для стандартизации частот модемов известны [3], например, протоколы связи BELL202 и CCITT v.23 (рис. 17.18).
Рис. 17.18. Протоколы частотной модуляции
В США телефонная компания Bell System использует собственные стандарты протоколов модуляции.
Кроме стандартов протоколов модуляции, в модемах используются следующие протоколы надежной передачи файлов: Xmodem, Ymodem, Zmodem. Эти протоколы определяют формат передаваемого блока данных, последовательность взаимодействия модемов во время сеанса связи, проверку правильности принимаемых данных с квитированием (обратным сообщением об успешности или наличии ошибки в блоке данных). Xmodem - исходный протокол с обнаружением ошибок, определяющий блок данных размером 128 байт. Формат блока данных протокола Xmodem содержит: номер блока, данные 128 байт и контрольную сумму. Этот протокол имеет несколько вариантов, например Xmodem-1к, в котором размер блока увеличен до 1024 байт с использованием контрольного циклического кода.
Затем был предложен протокол Ymodem, применяющий блоки данных размером в 1 Кбайт. В протоколе указываются время и дата изменения файлов и возможна передача нескольких файлов подряд (пакетная передача).
Протокол Zmodem имеет переменный размер блока, возможность приостановки и продолжения передачи данных. Кроме того, этот протокол позволяет осуществить передачу сразу нескольких файлов с их именами.
В протоколах передачи файлов используются управляющие символы ASCII (коды 0-31). Например, символ SOH (код ASCII 1) указывает на начало заголовка блока данных: символ АСК (код ASCII 6) - подтверждение приема данных без ошибок; символ EOT (код ASCII 4) - конец передачи данных; символ NAK (код ASCII 21) - завершение передачи данных с ошибками и т. д.
В табл. 17.3 показаны управляющие символы ASCII и их назначение.
Аппаратура аналогового модема	731
Таблица 17.3			
Обозначение	Значение(h)	Название	Назначение
NUL	0	Null	Пустой указатель
SOH	1	Start of Heading	Начало заготовки
STX	2	Start of Text 		Начало текста
ЕТХ	3	End of Text	Конец текста
EOT	4	End of Transmission	Конец передачи
ENQ	5	Enquiry	Запрос
АСК	6	Acknowledge	Подтверждение
BEL	7	Bell	Звонок (символ оповещения)
BS	8	Backspase	Возврат
НТ	9	Horizontal Tab	Горизонтальная табуляция
LF	10	Line Feed	Перевод строки
\ЛГ	11	Vertical Tab	Вертикальная табуляция
FF	12	Form Feed	Перевод страницы	
CR	13	Carriage Return	Возврат каретки	
SO	14	Shift Output		Сдвиг наружу	
SI	15	Shift Input 		Сдвиг внутрь
DLE	16	Data Link Escape	Выход из режима
DC1	17	Device Control 1	Контроль устройства 1
DC2	18	Device Control 2	Контроль устройства 2
DC3	19	Device Control 3	Контроль устройства 3
DC4	20	Device Control 4	Контроль устройства 4	
NAK	21	Negative Acknowledge	Отрицание подтверждения
SYN	22	Synchronous	Синхронизация
ETB	23	End of Transmission on Block	Конец блока передачи
CAN	24	Cancel	Отмена
EM	25	End of Media	Конец носителя
SUB	26	Substitution	Заменитель
ESC	27	Escape	Управляющий символ
FS	28	File Separator	Разделитель файлов
GS	29	Group Separator	Разделитель групп
RS	30	Record Separator	Разделитель записей
US	31	Unit Separator	Разделитель элементов
Рассмотрим общий принцип совместной работы вызывающего и вызываемого модемов.
Перед началом работы пользователем с помощью операционной системы в ПК могут быть установлены коммуникационные параметры последовательного порта, например СОМ1: скорость передачи данных (300-19200 бит/с), число бит данных (5-8), бит паритета (чет, нечет, бита нет), количество стоповых битов (1, 1,5, 2). Диалоговая служба BBS обычно использует 8 бит данных и 1 столовый бит (бит паритета отсутствует). Если в СОМ-порте установлена микросхема УАПП 16550А с буферной памятью, хранящей до 16 символов, то скорость передачи без потерь данных между процессором (например. Pentium) и модемом равна 57 600 бит/с. Чаще всего в COM-порте используется микросхема УАПП 16450, которая гарантирует при соответствующем процессоре скорость переда
732
Модемное соединение компьютеров
чи до 38 400 бит/с. Таким образом, здесь важно согласование скорости обработки данных процессором с учетом времени обслуживания прерывания СОМ-пор-та и скорости передачи данных последовательным портом. Поэтому необходимо знать тип микросхемы УАПП, применяемой в последовательном порте.
Кроме того, в модеме после включения питания выполняется автотестирование и после этого пользователем или по умолчанию устанавливаются соответствующие режимы и параметры: режим запроса, режим ответа, набор номера, повторный набор последнего номера, скорость передачи данных и т. д.
Дальнейшее взаимодействие модемов напоминает сеанс связи между телефонными абонентами с употреблением соответствующей терминологии: «трубка повешена», «трубка снята», «автоответ» и т. д. В исходное состояние «трубка повешена» модем переходит в следующих случаях: снизился уровень порога несущей частоты до определенного предела, отсутствует правильный сигнал несущей частоты и т. п.
Когда модем передает данные, то он находится в режиме «трубка снята», то есть после получения сигнала вызова.
Сеанс связи начинается с того, что один модем делает вызов, а другой отвечает, причем оба этих действия могут быть выполнены автоматически или в ручном режиме. В ручном режиме абонент снимает трубку, с помощью телефона набирает номер другого абонента. По звонку удаленный абонент поднимает трубку и в разговоре устанавливает со звонившим абонентом, какой модем будет работать в режиме вызова и какой - в режиме ответа. После чего один модем переводится в режим вызова, а другой - в режим ответа. В общем случае модем позволяет работать в режиме голосового разговора и в режиме передачи данных. Подключение модема к линиям связи в режиме вызова выполняется командой ATD, а в режиме ответа - командой АТА.
Во время выполнения режимов вызова и ответа происходит обмен модемов соответствующими тональными сигналами для установления между ними правильной связи с максимально возможной скоростью и методом модуляции.
После установления связи двух модемов осуществляется режим передачи данных в соответствии с выбранным протоколом обмена файлами.
Внутренний модем расположен на плате расширения и подключается с одной стороны к телефонной сети, а с другой - к системной шине.
Рассмотрим принцип построения встроенного модема на базе микросхемы полного модема ТСМЗ105 с частотной модуляцией, поддерживающего стандарты BELL 202 и CCITT V.23. выполняющего дуплексные операции на 1200 бод передачи и 150 бод приема, передачи на скоростях 75, 150, 600 и 1200 бод и прием на 5, 75, 150, 600 и 1200 бод. Напомним, что в бодах измеряется количество информации, передаваемой в единицу времени (за 1 с). При передаче двоичной информации единица скорости «бит в секунду» совпадает с единицей скорости «бод». В микросхеме (однокорпусном DIP с 16 контактами) реализовано большинство функций среднескоростного модема. Общий вид микросхемы модема представлен на рис. 17.19.
Обобщенная структурная схема ТСМЗ 105 показана на рис. 17.20.
Для настройки модема на нужный режим необходимо подать трехразрядный код на входы TkRl, TkR2 и TRS. Например, если TRS TkRl TkR2 = 100, то для стандарта CCITT V.23 скорость приема - 1200 бит/с, скорость передачи -75 бит/с, частота приема - 1300. 2100 Гц, частота передачи - 390. 450 Гц и частота CLK - 19,11 КГц. Различные комбинации сигналов на этих входах настрой-
Аппаратура аналогового модема
733
аналоговый
аналоговый
Порог ур-ня чувств, на
ТхА
RxA
RxB
CDL
MOD
RxD
TxD
Порог ур-ня чувств, на
CDT
Цифровой
Цифровой вход Обнаружение Тактовые
УАПП
TxRI
Контакты внешнего кварца на 4,4336 МГц
тем
TxR2
} Устанавливают протокол и режим работы
Рис. 17.19. Общий вид микросхемы модема ТСМ3105
Рис. 17.20. Обобщенная структурная схемаТСМ3105
ки позволяют реализовать любые частотные стандарты BELL 202 и CCITT V.23. Выходной сигнал CLK в 16 раз больше установленной скорости передачи и приема. Передатчик является программируемым синтезатором частоты, поступающей на выход ТкА и соответствующей маркерам (1) и пробелам (О) цифрового сигнала, подаваемого на вход TkD. Приемник осуществляет выделение заданного диапазона частот, автоматический контроль уровня входного сигнала, отсечение высокочастотных помех и удаление выбросов по амплитуде.
Приемник выполняет демодуляцию аналогового сигнала, поступившего на вход RxA.
Блок обнаружения несущей содержит детектор, который сравнивает уровень сигнала на выходе фильтра приемника с уровнем напряжения, установленного на входе CDL. В случае обнаружения несущего сигнала блок формирует сигнал CDT.
На рис. 17.21 изображена структурная схема подключения модема к шине расширения ISA.
734
Модемное соединение компьютеров
Структурная схема содержит УАПП, в качестве которого может быть использована микросхема 8251, 8250 (NS16450) и др. УАПП осуществляет прием параллельного байта данных из П и преобразование его в последовательную кодовую посылку с стартстопным форматом, поступающую в модем. Эта передача данных выполняется по следующей схеме: D0-D7 а ПП а УАПП a TxD а ТкА а СТИ, где СТИ - схема телефонного интерфейса. Подключение модемов к аналоговым линиям связи осуществляется с помощью внутренних разделительных трансформаторов, служащих для защиты телефонной линии от сбоев модема и для предохранения модема от напряжения (нескольких десятков вольт) постоянного тока, имеющегося в телефонной сети.
Типичной частью любого модема является схема сопряжения цифровых каналов (приема и передачи) с телефонным сетевым интерфейсом, имеющая мно
Цифровая связь ISDN	735
го вариантов решения и содержащая разделительный трансформатор. УАПП, кроме того, выполняет прием последовательной кодовой посылки из модема, преобразование ее в параллельный байт данных с последующей выдачей его в П. Обратная трансляция данных осуществляется по следующей схеме: СТИ a RxA a RxD а УАПП а ППа D0-D7.
Наличие поступивших из СТИ данных в УАПП определяется сигналом готовности приемника RxRDY, который может быть использован для формирования сигнала прерывания IRQ7 (при наличии разрешения прерываний от процессора). Сигнал IRQ11 указывает, что регистр данных приемника УАПП полон. Кроме того, готовность приемника к вводу данных в П отмечается в соответствующем бите регистра состояния УАПП, который аналогичен сигналу RxRDY, то есть можно осуществлять ввод полученных данных с помощью опроса бита готовности регистра состояния УАПП.
Синхронизация работы передатчика и приемника УАПП (8251) выполняется с помощью последовательно соединенных счетчиков (СЧ), подключенных выходами к мультиплексору (М), на адресные входы которого поступает код из регистра управления (РУ), программно доступного по записи со стороны П. Сигналы синхронизации М поступают на входы ТУС и RxC УАПП и координируют работу его передатчика и приемника. Счетчики (Сч) используются для деления тактовых сигналов CLK, поступаемых из модема, то есть модем является синхронизатором работы УАПП. Соответствующие сигналы на выходах РУ применяются для управления настройкой модема на реализацию частотных протоколов связи (входы TxR 1,TxR2 и TxRS). Уровни порогов чувствительности на выводах КхА (CDT) и RxD реализуются с помощью переменных резисторов Pj и Р2, подключенных к входам CDL и RxB. Схема СТИ разделяет двухпроводную телефонную линию связи от аналоговых входа RxA и выхода ТхА модема. Работа модема синхронизируется генератором сигналов (ГС) с кварцевым резонатором. Для доступа к портам используется дешифратор (ДшА). декодирующий общую старшую часть адреса А2-А9. Бит АО необходим для выбора портов УАПП, а бит А1 - для избрания обращения к УАПП (1) или к РУ (О). ПП согласует электрические параметры D0-D7 и внутренней шины данных и выполняет передачу данных соответствующего направления.
17.6.	Цифровая связь ISDN
ISDN (Integrated Services Digital Network) - высокоскоростная широкополосная цифровая связь с интеграцией сервиса, поддерживающая коммутацию каналов, пакетов или постоянное соединение различных ISDN-устройств (рис. 17.22), предназначенная для передачи звуковой, графической и текстовой информации.
Основные свойства ISDN: высокая скорость установления соединений, коммутация цифровых потоков, а не аналоговых, повышающая качество передачи данных, увеличение сервиса, распределение функции ISDN-станции, на оконечное оборудование пользователя (преобразование аналоговых сигналов в цифровые) и т. д.
Общая структура базового варианта ISDN-связи показана на рис. 17.23.
В ISDN-связи полоса пропускания делится на три одновременно действующих канала. Два канала, скорость передачи каждого из которых равна 64 Кбит/с, являются информационными (В), а третий используется как управляющий (D) и имеет скорость передачи 16 (64) Кбит/с. Две информационные полосы можно
736
Модемное соединение компьютеров
Рис. 17.22. Функции ISDN
I	1-й информационный В-канал, 64 Кбит/с	►
Полоса ISDN	«г	2-й информационный В-канал, 64 Кбит/с	—►
I	Управляющий D-канал, 16(64) Кбит/с	►
Рис. 17.23. Структура базового варианта ISDN-связи
применить раздельно, например для передачи речи и одновременного приема данных, или вместе, с целью увеличения скорости передачи до 128 Кбит/с. Предусматривается возможность подключения до 8 устройств ISDN к телефонным линиям с помощью сетевого терминатора (NT - Network Termination), Каждому устройству присваивается свой телефонный номер (связь типа точка - много точек), что расширяет функциональные возможности ISDN-связи по сравнению с аналоговым телефонным соединением, в котором выполняется передача точка - точка.
Сетевой терминатор (Network Termination, NT1) - устройство, соединяющее U-интерфейс (U - Union, связь), два телефонных провода ISDN-станции с S-интерфейсом (S - Subscriber, абонентский), 4 проводами, к которым подклю
Методы цифровой модуляции	737
чаются до 8 ISDN-устройств, размещенных в помещении абонента. Сетевой терминатор содержит модем для взаимодействия с U-интерфейсом и блок организации S-интерфейса. В S-интерфейсе два провода используются для подачи питания и два - для передачи данных.
Терминальный адаптер - устройство подключения компьютера или нестандартного оборудования к ISDN, выпускается внешнее или встроенное в компьютер, может содержать сетевой терминатор.
Оптоволоконный кабель передает световые волны с очень высокой скоростью на значительные расстояния (4Гбит/с на расстояние до 10 км) с использованием светодиодов или лазеров. Связь абонентов с помощью оптоволоконного кабеля характеризуется высокий стоимостью и помехозащищенностью.
Различают многомодовый оптоволоконный кабель со светодиодной передачей данных и одномодовый - с лазерной передачей данных. Мода - отражение основного светового луча в оптическом материале, которое также с опозданием переносится по оптоволокну. Многомодовая передача дешевле, но имеет меньшую пропускную способность и длину кабеля по сравнению с одномодовой передачей.
Модемы оптоволоконных линий выпускаются в различных вариантах исполнения (настольном, портативном и стационарном).
Существуют разнообразные типы сервиса ISDN-связи, которые отличаются друг от друга количеством информационных каналов и суммарной пропускной способностью, достигающей несколько тысяч Кбит/с.
Импульсно-кодовая манипуляция (РСМ - pulse-code modulation) состоит в задании каждой выборке сигнала соответствующего кода в зависимости от ее амплитуды. Эта модуляция применяется при преобразовании аналоговых сигналов в цифровые.
17.7.	Методы цифровой модуляции
Метод 2B1Q (2 Binary 1 Quandary) - метод линейного кодирования с использованием алгоритма амплитудно-импульсной модуляции и представлением сигнала с помощью четырех уровней напряжения без возвращения к нулю. Таким образом, при подобном кодировании за один такт передаются сразу 2 бита данных. Область применения - цифровые технологии ISDN и XDSL.
Пример:
-2.5V
-8.33V
2 .5V 0.833V
Код Напряжение 00 01 10 11
В качестве недостатка метода 2B1Q следует отметить увеличение постоянной составляющей в сигнале того или иного направления, приводящее к погрешностям. Аналогичная ситуация возникает при модуляции 8/14 дисковода
738	Модемное соединение компьютеров
CD, которая устраняется путем ввода битов сопряжения, уменьшающих постоянную составляющую за счет баланса положительных и отрицательных импульсов.
В рассмотренном примере положительная постоянная составляющая импульсов превышает отрицательную постоянную составляющую. Поэтому при использовании метода применяют специальные средства для подавления соответствующей постоянной составляющей.
Другим недостатком метода 2B1Q является неэффективность его применения в зашумленных средах передачи.
В качестве достоинств этого метода следует отметить экономичность и про
стоту построения кодека.
Метод САР с подавлением несущей (САР - Carrier less Amplitude modulation / Phase modulation) - метод амплитудно-фазовой модуляции с подавлением несущей частоты, позволяющий увеличить информационную емкость импульса до 16, 32, 64, 128 и более бит. К достоинствам этого метода следует отнести: устойчивость к помехам, более высокую скорость передачи по сравнению с методом 2B1Q, относительную сложность оборудования и необходимость применения мощного передатчика. Гармоника несущего (модулирующего) колебания не является информативной, поэтому она удаляется с помощью фильтра из спектра САР - модулированного сигнала, что позволяет увеличить энергию в информационной части сигнала. Область применения метода САР - технология xDSL.
Метод DMT (DMT - Discrete Multi Tone) - многочастотный способ модуляции, использующий несколько несущих частот и позволяющий организовать такое же количество каналов передачи данных, в которых применяются различные методы модуляции в зависимости от характеристик канала (адаптивные настройки на соответствующие каналы), что существенно уменьшает количество ошибок. Область применения метода DMT- технология xDSL (ADSL и VDSL).
Метод ТСМ (ТСМ - Trellis Coded Modulation) - способ модуляции, заключающийся в совместном использовании решеточной модуляции (треллис-модуляции) и помехоустойчивого кодирования, в частности сверточного кодирования, что позволяет увеличить помехозащищенность и скорость передаваемой информации. На приемной стороне осуществляется декодирование избыточного кода с применением, например, алгоритма Витерби.
Сверточные коды применяются в тех случаях, когда необходимо передавать длинные битовые последовательности данных с большой скоростью. Для защиты таких длинных данных выполняется их разбивка на кадры (блоки) определенной длины, кодирование которых осуществляется с учетом предыдущих кадров данных, то есть имеется зависимое кодирование. Полученные таким образом коды называются сверточными кодами, иногда - древовидными, и описываются специальными графами, представленными в виде решеток [6].
Процесс кодирования состоит в том, что по текущему кадру данных, поступающему в кодер, и на основании других кадров, хранящихся в нем, находится новый кадр, передаваемый в линию связи.
17.8.	Технология *DSL
Технология *DSL (DSL - Digital Subscriber Line, * - версия) - это технология «цифровой абонентской линии», которая представляется компаниям, использующим обычные телефонные линии связи. Под DSL понимается средство быст
Контрольные вопросы
739
рого доступа или услуги, предоставляемых абонентам. Различают асинхронные, синхронные и универсальные DSL, которые характеризуются: различными скоростями передачи и приема данных, максимальным расстоянием действия и областью применения (доступ к сетям, для соединения абонентов внутри фирмы, только для передачи данных и т. д.). Дорогие *DSL используют специальные многожильные кабели. Кроме того, DSL разделяют по назначению: для оконечных пользователей и для скоростной передачи информации. Наиболее употребительным является модем VADSL (A - Asymmetric), в котором применяются методы модуляции: САР 16 (амплитудно-фазовый) и DMT (многочастотный). Модемы ADSL применяются для связи с сетями и характеризуются следующими параметрами: скорость передачи данных 16,312 Мбита/с на расстоянии до 3,567 км с использованием двухжильного кабеля. Модем ADSL имеет различные частоты модуляции для передачи, приема и обычной телефонной связи.
Контрольные вопросы
1.	Назовите двунаправленную передачу данных в режиме разделения времени:
1)	дуплексная:	3) симплексная:
2)	полудуплексная:	4) транзитная.
2.	Выберите интерфейсы, наиболее употребительные для подключения модема: 1) IDE:	2) AGP:	3) RS-232;	4) USB.
3.	Метод эхоплекса применяется в модемах для:
1)	контроля ошибок:	3) синхронизация:
2)	соединения модемов;	4) квитирования.
4.	Назовите типы модуляции, используемые в модемах:
1)	квадратурная амплитудная:
2)	модуляция 8/14;
3)	модуляция дискретных отсчетов:
4)	частотная.
5.	Правила, определяющие управление сетевой связью:
1)	стандарты;	3) протоколы;
2)	регламенты:	4)	спецификации.
6.	Укажите название одновременной передачи данных в оба направления:
1)	симплексная:	3)	полудуплексная:
2)	дуплексная:	4)	мультиплексная.
7.	Назовите устройства, необходимые для развязки каналов исходящей и входящей связи:
1)	преобразователи:	3) фильтры:
2)	эхо-компенсаторы:	4) скремблеры.
8.	Укажите диапазон тональных частот, используемых модемом, подключенным к коммутируемой телефонной линии:
740
Модемное соединение компьютеров
1)	300-3300 Гц;
2)	300-4700 Гц;
3)	500-7600 Гц;
4)	0-1000 Гц.
9.	Выберите количество бит, необходимое для кодирования 8 фаз искусственного сигнала;
1)	8;	2) 6;	3) 4;	4) 3.
10.	Выберите полосы частот, выделяемые для входящих и исходящих сигналов дуплексного режима:
1)	одна;	3) две отдельные;
2)	две пересекаемые;	4) три совместные.
11.	Определите количество бод, если скорость передачи 1200 бит/с и используется 4-фазная модуляция:
1) 800;	2) 600;	3) 300;	4) 100.
12.	В квадратурной амплитудной модуляции применяется сочетание:
1)	амплитуды и фазы;
2)	амплитуды и частоты;
3)	фазы и частоты;
4)	амплитуд нескольких уровней.
13.	Уменьшение отношения сигнал/шум достигается:
1)	адаптивной коррекцией параметров;
2)	согласованием с параметрами линии;
3)	фильтрацией;
4)	модуляцией.
14.	Укажите правильную последовательность фрагментов формата блока данных протокола X МОДЕМ:
1)	данные;
2)	дополнительный код номера блока;
3)	контрольная сумма;
4)	номер блока.
конец передачи;
неподтверждение приема;
отмена;
подтверждение приема.
15.	Укажите соответствие между обозначениями сигналов и их назначением:
a)	NAK;	1)
б)	АСК;	2)
EOT;	3)
CAN.	4)
в) г)
16.
1)
2)
3)
Назовите коды коррекции ошибок, применяемые в модемах: мажоритарный;	4) циклический;
Хэмминга;	5) сверточный,
каскадный;
17.	Технология высокоскоростной передачи компьютерной информации по обычным коммутируемым телефонным линиям:
1) ISDN; 2) CATV; 3) DirecPC; 4) DSL.
Литература
741
18.	Способ организации связи между двумя устройствами:
19.	Определите аббревиатуру интегрированной полностью цифровой связи:
1)	NET; 2) DSL; 3) ISDN; 4) ADSL.
20.	Группа взаимосвязанных данных, предназначенная для передачи и содержащая управляющую информацию:
21.	Аббревиатура специальной микросхемы, выполняющей преобразование параллельного кода в последовательный код стартстопного формата и наоборот:
22.	Часть цикла изменения сигнала, отсчитываемого от некоторой точки:
23.	Единица скорости передачи аналогового сигнала:
Литература
1.	Бернард Скляр. Цифровая связь. Теоретические основы и практическое применение / пер. с англ. - М.: Издательский дом «Вильямс». 2004. - 1104 с.: ил.
2.	Скотт Мюллер. Модернизация и ремонт ПК: уч. пособие. 11-е изд. / пер. с англ. - М.: Издательский дом «Вильямс», 2000. - 1136 с.: ил.
3.	Сопряжение датчиков и устройств ввода данных с компьютерами IBM PC / пер. с англ., под ред. У. Томпкинса, Дж. Уэбстера. - М.: Мир, 1992. - 592 с.: ил.
4.	Лагутенко О. И. Современные модемы. - М.: Эко-Трендз, 2002. - 343 с.: ил.
5.	Авдеев В. А., Гузик В. Ф. Компьютеры: шины, контролеры, периферийные устройства.: уч. пособие. - М.: Радио и связь, 2001. - 480 с.: ил.
6.	Блейхут Р. Теория и практика кодов, контролирующих ошибки / пер. с англ. -М.: Мир, 1986. - 576 с.: ил.
Варианты выполнения программных заданий
Коды клавиатуры
1.	Цель работы
Практическое закрепление знаний по организации ввода информации с клавиатуры с помощью языка ассемблера и прерываний MS-DOS и BIOS. Работа выполнена Васильковой Е. П.
2.	Задание на лабораторную работу
2.1.	Основное задание
Необходимо написать программу, отображающую на экране Scan-коды и ASCII-коды вводимых с клавиатуры символов, а также само представление этих символов, используя соответствующие методы преобразования и функции программных прерываний.
Вариант задания - 3, 4, 7, 10 (раздел 9.9 книги).
Ввод данных с клавиатуры (3) - прерывание DOS int 2 lh с функцией ah=8.
Метод преобразования (4) - алгоритм перекодировки, использующий таблицу 0-F и индекс.
Вывод на экран (7) - прерывание BIOS int 10h с функцией ah=14.
Тип программы (10) - ехе-модуль.
2.2.	Дополнительное задание
Вывод Scan-кодов и ASCII-кодов производится в столбик, парами, друг за другом; при достижении конца экрана новые пары кодов пишутся сверху. Вывод непечатаемых символов (F1-F12, Enter, Backspace, Left, Right, Up, Down, Delete, Home и т. д.).
3.	Описание заданных функций ввода/вывода
INT2111. функция 08h. Ввод символа без эха. Вводит символ из стандартного устройства ввода. При отсутствии символа ждет его ввода. Допустимо перенаправление ввода. Для чтения расширенного кода ASCII требует повторного выполнения функции. Если ввод не перенаправлен, чувствительна к <Ctrl+C>
Варианты выполнения программных заданий
743
(иначе надо предварительно включить режим Break).
Вызов: ah = 08h, Int 21h.
Вывод: al = код символа.
INT 10h. функция Oeh. Запись символа в режиме телетайпа. Записывает ASCII-код символа в текущую позицию курсора на активной видеостранице. Курсор после вывода автоматически смещается к следующей позиции. Коды ASCII: 07 - звонок, 08 - шаг назад, Oah - перевод строки, Odh - возврат каретки -рассматриваются как управляющие и выполняют соответствующие действия. Действуют автоматический перевод курсора на следующую строку и скроллинг экрана. Атрибут символа задать нельзя, действует атрибут, установленный ранее для этой позиции.
Вызов: ah = Oeh, Inti Oh.
Вывод: al -ASCII-код символа.
4.	Общая структура программы
Общую структуру программы можно представить в виде четырех последовательных блоков (рис. 1).
Блок инициализации подробно описан в п. 4.1.
Блок «Считать клавишу» описан в п. 4.2.
Блок «Преобразовать коды» имеет описание в п. 4.3.
Блок «Вывести Scan, ASCII-коды и символ» описан в п. 4.4, также для него приведено внешнее оформление.
4.1.	Инициализация
Инициализация включает начальную установку параметров и внешнее оформление. В качестве параметра выступает номер текущей строки (точнее, ее координата), на которой производится вывод кодов. Для этого параметра вводится переменная num_str. Внешнее оформление заключается в очистке экрана и скрытии курсора, а также рисовании рамки, содержащей информацию о наименовании лабораторной работы, авторе и поле вывода кодов. Блок инициализации можно представить в виде, представленном на рис. 2.
Процедуры:
Clear Screen - очистка экрана
Вход: -
Выход: -
Hide Cursor - скрыть курсор
Вход: -
Выход: -
Interface - нарисовать интерфейс
Вход: -
Выход: -
начало J
Рис. 1
Рис. 2
744
Приложение 1
4.2.	Считывание информации клавиши
Ввод символа осуществляется 8 функцией прерывания INT 21h (рис. 3). Причем в al возвращается ASCII-код. В блоке условия производится проверка ASCII-кода - получен расширенный код или нет. Если код нерасширенный, то Scan-код получаем чтением 60 порта. Если код расширенный, то вызываем эту же функцию еще раз, причем в al возвращается Scan-код.
Рис.З
Get Char - процедура чтения нажатой клавиши
Вход: нажатая клавиша
Выход: Scan_Code - Scan-код клавиши
ASCII _Code - ASCII-код символа
Move Cursor - перемещение курсора
Вход: координаты Coord (dh и dl)
4.3.	Преобразование кодов
Данная процедура реализуется в соответствии с заданием с помощью таблицы 0-F и индекса, то есть, задавая определенным образом смещение в таблице Index_table, мы получаем нужный символ (старшую или младшую тетраду кода).
Сначала преобразовывается старшая часть кода (результат заносится в S_Byte), затем - младшая часть (результат - в M_Byte), и обе последовательно выводятся на экран, начиная со старшей части кода.
Варианты выполнения программных заданий
745
Conversion - преобразование кода
Вход: Scan_Code - скэн-код клавиши
Ascii_Code - ASCII-код символа
Выход:-S_Byte - старшая тетрада
M-Byte - младшая тетрада
4.4.	Вывод на экран кодов
Вывод на экран полученных кодов реализуется 14 функцией прерывания INTlOh (рис. 4). Место вывода задается координатой dl - х-координатой и координатой num_str. При вводе символа происходит вывод указателя на введенный символ. Соответственно, при следующем вводе этот указатель также смещается, стирая предыдущий указатель.
Символ	SCAN-код	ASCII-код
Insert	52	00
5	06	35
F2	зс	00
Insert	52	00
Рис. 4
Out Codes - вывод преобразованного кода
Out Word - вывод строковой константы
Вывод на экран непечатаемых символов (F1-F12, Enter и т. д.) производится путем сравнения Scan-кода считанного символа со Scan-кодом заданных непечатаемых символов.
5.1. Исходные файлы, содержащие текст программы
KEY_CODE.ASM - текст программы
PROC.INC - процедуры, используемые в программе
5.2. Файлы, полученные в результате выполнения программы
KEY_CODE.EXE - ехе-модуль
6. Листинг программы
6.1. Файл KEY_CODE.ASM
Title Labrabotal
Data Segment
Ramka db ” $”
Index_Table db ’0123456789ABCDEF’ /таблица 0-F
Ascii_Code db ?	/ascii-код символа
Scan_Code db ?	;scan-код символа
Cursor_Coord dw ?	/координаты курсора
M_Byte db ?	/младший байт кода
746	Приложение 1
S_Byte db ?	;старший байт кода
Num_Str db ?	;номер строки вывода
String db "	$"	/пустая строка (стирание)
Fl db "Fl$"	;
F2 db "F2$"	;список непечатаемых
F3 db "F3$"	/символов, которые
F4 db "F4$"	/выводятся на экран
F5 db "F5$" F6 db "F6$" F7 db "F7$" F8 db "F8$" F9 db "F9$" F10 db "F10$" Fll db "Fll$" F12 db "F12$" Enter db "Enter$" Space db "BkSp$" Left db "Left?" Right db "Right?" Up db "Up$" Down db "Down$" Del db "Del?" Insert db "Insert$" Home db "Home$" PageUp db "PageUp?" PageDown db "PageD$" End_key db "End$" Data ends Code Segment assume cs:Code, ds:Data Start: mov ax,data mov ds,ax	/иным образом
call Clear_Screen	;очистка экрана
call Hide_Cursor	;стирание курсора
call Interface	/рисование курсора
Main :	/основная часть
call Get_Char Output:	;получение символа
call Out_Codes	/вывод преобр. кодов
call Unprinted—Symbol	/вывод непечат. символов
cmp Num_Str,15 jnz not_end	/не последняя строка?
mov Num_Str,09	/если последняя, то
jmp Main not_end:	;перейти на первую
add Num_Str,2	/если не последняя, то
jmp Main	;перейти к следующей
Exit: mov ah,04ch int 21h	;выход
include proc.inc;	/подключение файла с процедурами
Code ends end Start
варианты выполнения программных заданий	747
6.2. Файл PROC.INC
;—Процедура очистки экрана---;
Clear Screen:
mov	ex, 0
mov	dx,184fh
mov	bh,7
mov	ax,619h
int	lOh
retr	i
;—Процедура скрытия курсора----/
Hide_Cursor: mov ah,l mov ch,20 mov cl,0 int lOh retn
;—Рисование интерфейса-------;
Interface: mov dx,0000h mov ah,02h mov bh,0 int lOh mov dx,offset Ramka call Out_Word mov Num_Str,09 retn
;—Перемещение курсора--------;
Move_Cursor: mov ah,02 mov bh,0 mov dx,Cursor_Coord int lOh retn
;—Вывод строковых констант-----;
Out_Word: mov ah,09h int 21h retn
;—Процедура получения символа—; Get Char:
mov ah,08h int 21h cmp al,27 jz Exit cmp al,0 je extended mov Ascii_Code,al in al,60h mov Scan_Code,al jmp Output extended: mov Ascii_Code,al int 21h mov Scan_code,al ;—Вывод преобразованных кодов—t	;считывание символа ;Если Esc — то выход ;если а1=0, то код ;расширенный ;запоминаем Ascii /читаем Scan-код из 60 порта /переход к выводу символа /сохраняем Ascii /берем 2 байт расширенного /кода-это Scan-код
748
Приложение 1
Out_Codes: mov dl,19h mov dh,Num_Str mov Cursor_Coord,dx call Move_Cursor lea dx,String call Out_Word mov al,Ascii_Code mov dl,31h mov dh,Num_Str mov Cursor_Coord,dx call Conversion
dl <- координату вывода dh <- координату строки
очистка места вывода
вывод Ascii-кода
;вывод печатаемого символа
mov dl,19h
mov dh,Num_Str
mov Cursor_Coord,dx
call Move_Cursor
mov ah,0eh int lOh
jmp Point	/переход к выводу указателя
;—Вывод непачатаемых символов—; Unprinted_Symbol:
mov dl,19h
mov dh,Num_Str
mov Cursor_Coord,dx
call Move_Cursor
mov al,Scan_Code
cmp al,3Bh	/вывод на экран символов
jne F_2	/в зависимости от хранимого
lea dx,Fl	/в регистре al scan-кода
call Out_Word F_2: cmp al,3Ch
j ne F_3
lea dx,F2
call Out_Word F_3: cmp al,3Dh
j ne F_4
lea dx,F3
call Out_Word
F_4: cmp al,3Eh
j ne F_5
lea dx,F4
call Out_Word
F_5: cmp al,3Fh
j ne F_6
lea dx,F5
call Out_Word
F_6: cmp al,4Oh
j ne F_7
lea dx,F6
call Out_Word
F_7 : cmp al,41h
j ne F_8
lea dx,F7
call Out_Word F 8: cmp al,42h
Варианты выполнения программных заданий
749
jne F_9 lea dx,F8 call Out_Word F_9: cmp al,43h
jne F—10 lea dx,F9 call Out_Word
F—10: cmp al,44h jne F_ll lea dx,F10 call Out_Word
F_ll: cmp al,85h jne F_12 lea dx,Fll call Out_Word
F—12: cmp al,86h jne Entr lea dx,F12 call Out_Word
Entr: cmp al,leh jne B_Space lea dx,Enter call Out_Word
B_Space: cmp al,39h jne Delete lea dx,Space call Out_Word
Delete: cmp al,53h jne L lea dx,Del call Out_Word L: cmp al,4Bh jne R lea dx,Left call Out_Word
R: cmp a1,4 Dh jne U lea dx,Right call Out_Word
U: cmp al,48h jne D lea dx,Up call Out_Word
D: cmp al,5Oh jne End_label lea dx,Down call Out_Word
End_label: cmp al,4fh jne Ins lea dx,End_Key call Out—Word
Ins: cmp al,52h jne Hom lea dx,Insert
	750	Приложение 1
	call Out_Word Hom: cmp al,47h j ne P_Up lea dx,Home call Out_Word P_Up: cmp al,49h j ne P_Down lea dx,PageUp call Out_Word P_Down: cmp al,51h jne Point lea dx,PageDown call Out_Word retn	
	/--Вывод указателя	; Point: mov dl,10h mov dh,Num_Str mov Cursor_Coord,dx call Move_Cursor	
	cmp dh,0 9	/если номер строки = 9, то
	jne ml	;стираем указатель на
	mov dl,10h mov dh,15 mov Cursor_Coord,dx call Move_Cursor mov dl,’ ’ mov ah,02h int 21h ml: mov dh,num_str mov dl,10h mov Cursor_Coord,dx call Move_Cursor	/последнюю строку
	mov dl,’>’ mov ah,02h int 21h sub dh,2 mov dl,10h mov Cursor_Coord,dx call Move_Cursor	/рисуем указатель
	mov dl,’ ’	/стираем указатель
	mov ah,02h int 21h	/на предыдущую строку
mov al, Scan_code	/вывод Scan-кода
mov dl,25h mov dh,Num_Str mov Cursor_Coord,dx call Conversion retn
/-Процедура преобразования кодов—; Conversion: xor ah,ah
Варианты выполнения программных заданий
751
push ax push ax mov cl,4 shr al,cl mov si,ax mov bh,[Index_Table+si] mov S_byte,bh call Move_Cursor
mov al,S_byte	;вывод старшей части кода
mov ah,0eh int lOh pop ax and al,OFh mov si,ax
mov bl,[Index_Table+si] mov M_Byte,bl
mov al,M_byte	/вывод младшей части кода
mov ah,Oeh int lOh pop ax retn
7.	Выводы
В результате лабораторной работы были закреплены знания по организации ввода информации с клавиатуры с помощью языка ассемблера и прерываний MS-DOS и BIOS и получена программа, выводящая на экран в заданном виде scan-коды и ASCII-коды нажимаемых клавиш.
Код программы - KEY_CODE. ASM.
•	Размер файла - 4,824 Кбайта.
•	Количество строк -91.
Подключаемый файл, содержащий используемые в программе процедуры -PROC.INC.
•	Размер файла - 5,523 Кбайта.
•	Количество строк - 249.
Программа структурно построена из двух частей: непосредственно основная часть, определяющая общую структуру, и подключаемый файл, содержащий описание вызываемых из главной программы процедур (9), необходимых для ее правильного функционирования. Сегмент данных содержит 27 строковых констант, переменные для хранения кодов вводимых с кла- | виатуры символов, а также для хранения координат.
Вывод данных на печать. Адаптер принтера
1.	Цель работы
Изучить принцип работы печатающего устройства, написать программу на ассемблере, осуществляющую вывод данных на печать с помощью портов адаптера (регистра данных, регистра управления и регистра состояния).
Приложение 1
752
2.	Задание на лабораторную работу
2.1.	Основное задание
Необходимо написать программу, выполняющую опрос флага готовности ПУ перед выводом очередного символа на печать, предварительно размещенного в регистре данных адаптера. Если ПУ готово принять символ, то программа устанавливает разряд 0 регистра управления, сигнал с выхода которого осуществляет запись символа в ПУ. После этого единичное значение разряда 0 регистра управления сбрасывается в исходное состояние.
Вариант задания: 1, 2, 3 (раздел 3.10 книги).
Опрос битов готовности порта состояния (1) - опрос бита 7 или 6.
Командная реализация опроса битов состояния (2) - опрос с использованием команды проверки test.
Источник печатаемых символов (3) - сообщение хранится в программе.
2.2.	Дополнительное задание
Интерфейс программы должен содержать заголовок работы с указанием названия лабораторной работы и автора, место для входной и выходной строки печатаемых символов и указатели на них, сообщение о выбранном режиме (соответственно stop или stream), а также три регистра адаптера принтера: регистр адреса, регистр состояния и регистр управления.
Во входной строке указывается печатаемое сообщение, которое по основному заданию хранится в программе. В выходной строке последовательно выводятся те символы, которые поступают на печать. Порядок их вывода определяет выбранный режим. В программе допускается возможность применения двух режимов: step (пошаговый) и stream (потоковый). Первый режим заключается в побайтном выведении данных на печать, то есть запись данных в регистр данных и вывод их в выходную строку осуществляются через нажатие клавиши. Второй режим, stream, непрерывно выводит данные в выходную строку, при этом практически невозможно проследить загрузку байтов в регистр данных. Выбор режима осуществляется нажатием клавиши, соответствующей ему и указанной в программе. При ошибочном выборе режима (нажатием клавиш, не соответствующих названиям режимов) выводится сообщение с просьбой повторить ввод.
При завершении обработки данных, выводимых на печать, предоставляется возможность выбора продолжения или завершения программы.
Планируемый интерфейс программы показан на рис. 5.
3.	Описание используемых функций ввода/вывода
INT 21h, функция 08h. Ввод символа без эха. Вводит символ из стандартного устройства ввода. При отсутствии символа ждет его ввода. Допустимо перенаправление ввода. Для чтения расширенного кода ASCII требует повторного выполнения функции. Если ввод не перенаправлен, то переход к <Ctrl+C> (иначе надо предварительно включить режим Break).
Вызов: ah = 08h, Int21h.
Вывод: al = код символа.
INT 10h, функция Oeh. Запись символа в режиме телетайпа. Записывает ASCII-код символа в текущую позицию курсора на активной видеостранице. Курсор после вывода автоматически смещается к следующей позиции. Коды ASCII: 07 - звонок, 08 - шаг назад, Oah - перевод строки, Odh - возврат каретки, рассматриваются как управляющие и выполняют соответствующие действия.
Варианты выполнения программных заданий
753
Курс: 'Интерфейсы и периферийные устройства' Лабораторная работа №2: 'Параллельный порт. Принтер' Выполнила: ст. группы А-42 Василькова Евгения
Для выбора режима печати нажмите '6' - пошаговый '1' - потоковый
Входная строка:
Выбран режим:
Продолжение -выберите режим
Выход ~ нажать Esc
Выходная строка:
Рис. 5
Действует автоматический перевод курсора на следующую строку и скроллинг экрана. Атрибут символа задать нельзя, действует атрибут, установленный ранее для этой позиции.
Вызов: ah = Oeh, Inti Oh.
Вывод: al -ASCII код символа.
INT lOh, функция 09h. Запись символа в позицию курсора. Записывает ASCII-код символа в текущую позицию курсора. Символ принимает атрибут, установленный ранее для этой позиции. Курсор при выводе не смещается, а остается в исходной позиции. Коэффициент повторения позволяет выводить строки одинаковых символов (но курсор не смещается!). Если коэффициент повторения равен 0, то на экран ничего не выводится.
Вызов: ah = Oah. Int 1 Oh.
bh=№ видеостраницы.
al = ASCII- код символа.
сх = коэффициент повторения.
INT 16h, функция OOh. Чтение символа с клавиатуры. Читает из кольцевого буфера клавиатуры ASCII- и SCAN-коды нажатой клавиши. Если буфер пуст, ждет нажатия клавиши. Функция 1 Oh предназначена для расширенной клавиатуры (101 клавиша), функция Oh-для 84-клавишной.
Вызов: ah = OOh Int 10h.
Вывод: ah = SCAN-код, I = ASCII-код.
4.	Общая структура программы
Общую структуру программы можно представить в виде шести блоков, последовательно реализующих задание (рис. 6).
Блок инициализации программы имеет описание в п. 4.1.
Выбор режима - step или stream - описан в п. 4.2. Этот блок определяет, как будет осуществляться вывод на печать - побайтно или непрерывно.
Ввод данных - данный блок имеет описание в п. 4.3. Данные по заданию хранятся в программе.
754
Приложение 1
Установка регистров описывается в п. 4.4.
Вывод данных в выходную строку - п. 4.5.
4.1.	Инициализация
Инициализация включает внешнее оформление, которое заключается в очистке экрана и скрытии курсора, а также рисовании рамки, содержащей информацию о наименовании лабораторной работы, авторе и т. д. (по заданию). Также в этом блоке выводятся информационные сообщения. Блок инициализации можно представить в виде, представленном на рис. 7.
Очистить экран
Спрятать курсор
Изобразить рамку
Рис. 7
Процедуры:
•	Clear Screen - очистить экран;
•	Hide Cursor - скрыть курсор;
•	Drawin terface - нарисовать интерфейс;
•	MoveCursor - перемещение курсора в заданную точку экрана;
•	xcoord, ycoord - параметры входа в процедуру. Задают координаты курсора;
•	Output string - вывести строковую константу;
•	dx - смещение строковой константы;
•	Clear lnform - стереть информационное сообщение;
•	Output_Error_Message - вывести сообщение о неверном вводе;
•	Clear_Error_Messgae - стереть сообщение о неверном вводе.
4.2.	Выбор режима
Выбор режима осуществляется нажатием клавиш О или 1.
О - пошаговый режим ; 1 - потоковый режим.
При некорректном вводе (определяется значением в регистре al, так как там хранится ASCII-код после выполнения функции ввода) выводится сообщение об
755
Варианты выполнения программных заданий
ошибочном нажатии. При выборе режима step производится установка в 1 флага признака данного режима. Для этого выделяется переменная step_r. Соответственно при выборе иного режима она устанавливается в 0. В дальнейшем эта переменная используется для проверки необходимости пошагового выполнения алгоритма.
Описанный выше алгоритм выбора режима может быть представлен в виде блок-схемы (рис. 8).
4.3.	Ввод данных
Вводимые данные хранятся в программе. Ввод данных осуществляется после выбора режима. Для этого производится установка координат курсора в то место, куда будет выводиться сообщение. Для непосредственного вывода строки вычисляется смещение этой строковой константы и затем вызывается процедура вывода. Для работы с символами строки в регистр si помещается смещение первого символа, следовательно, в [si] будет храниться непосредственно сам символ. Обработка символов производится последовательно, пока не будет достигнут конец сообщения. Для этого вводится переменная old_x_coord, которая одновременно определяет и позицию выводимого символа в выходной строке.
Входная строка: — This is my printed text
“Выбран режим: step”
Установка флага признака режима step в 1
“Выбран режим: stream”
Установка флага признака режима step в О
-------
Ошибочный ввод: нажмите 0/1
Рис. 8
Для перехода к обработке следующего символа необходимо вычислить его смещение (увеличить предыдущее значение на 1) и увеличить координату old_x_coord.
Алгоритм ввода достаточно прост, поэтому представлять его в виде блок-схемы не имеет смысла.
4.4.	Установка регистров адаптера принтера
Байт данных помещается в регистр данных (порт 378h) адаптера, с выходов которого он поступает в принтер. Для вывода на экран этого байта используется процедура преобразования методом таблицы 0-F и индекса. В регистре управления 0-й бит устанавливается в 1 (бит запуска печати). Сигналом «строб» выполняются запись байта данных во входной регистр принтера и формирование сигнала прерывания, указывающего микропроцессору принтера, что его входной регистр полон.
Далее сканируется содержимое регистра состояния. В регистре состояния 7-й бит в единичном состоянии означает, что принтер свободен, 6-й бит в нулевом состоянии - принтер готов к печати следующего символа.
Conversion - преобразование кода
Вход: al - Ascii_Code - ASCII-код символа
Выход: -s_byte - старшая тетрада
m-byte - младшая тетрада
756
Приложение 1
Алгоритм установления регистров адаптера принтера представлен на рис. 9.
Загрузка в регистр данных символа; преобразование для вывода ascii-кода
Установка строба регистра управления в 1 (бит запуска печати)
Чтение регистра состояния (опрос 7 и 6 бита)
Ожидание * реакции устройства
Сброс строба регистра управления
Рис. 9
4.5.	Вывод данных
Вывод данных осуществляется в выходной строке. Для этого используется функция 09h Int 10h. В качестве ее параметров выступают: al - непосредственно выводимый символ ([si]), bh - номер видеостраницы, Ы - атрибуты выводимого символа (его цвет и цвет фона), сх- количество повторов вывода.
Выходная строка: this is ь- print
От выбора режима зависит возможность проследить вывод каждого символа в отдельности или вывод всей входной строки. Для перевода курсора в следующую позицию используется переменная old_x_coord.
5.1.	Исходный файл, содержащий текст программы
PRINTER. ASM - текст программы
5.2.	Файл, полученный в результате компиляции программы
PRINTER.COM - сот-файл
6.	Выводы
В результате лабораторной работы была получена программа, осуществляющая вывод данных на печать с помощью портов адаптера (регистра данных, регистра управления и регистра состояния).
Варианты выполнения программных заданий	757
Код программы - PRINT. ASM.
•	Размер файла - 11,36 Кбайта.
•	Количество строк - 430.
Структурно программа представляет пять взаимосвязанных блоков. По каждому блоку дано детальное описание. Особое внимание уделено установке регистров адаптера, а также реализации двух режимов работы.
Полученные результаты выполнения программы представлены на рис. 10.
7.	Листинг программы
code Segment
assume cs:code, ds:code org lOOh
Start: jmp Main
Ramka db " $"
mes_step	db	"пошаговый$"
mes_stream	db	"потоковый$"
mes_error	db	" Ошибка при вводе! $"
mes_error_l	db	" Выберите 0/1 $"
blank_string	db	и
output_text	db	’This is my printed text$’
mes_exit	db	"Выход - нажать Esc $"
mes_contin	db	" Продолжение - $"
mes_contin_l	db	" выберите режим $"
mes_contin_2	db	"Нажать любую клавишу$"
x_coord	db	?	;х-координата курсора
y_coord	db	?	;у-координата курсора
old_al	db	?	/старое значение al
out_symbol	db	?	;выводимый символ
index_table	db	’0123456789ABCDEF’ /таблица 0-F
m_byte	db	?	/младшая часть выводимого байта
s_byte	db	?	/старшая часть выводимого байта
758
Приложение 1
old_x_coord	db ?	/прежняя х-координата курсора
step_r	db ?	;признак режима step
data_port	equ 378h	;адрес порта данных
state_port	equ 379h	/адрес порта состояния
control_port	equ 37Ah	;адрес порта управления
;-----Процедура очистки экрана-------;
Clear_Screen proc push ах push dx mov cx,0 mov dx,184fh mov bh f7 mov ax,619h int lOh pop dx pop ax ret
endp Clear_Screen ;-----Процедура скрытия курсора------;
Hide_Cursor proc push ax mov ah,l mov ch,20 mov cl,0 int lOh pop ax ret
endp Hide_Cursor ;-----Процедура перемещения курсора--;
Move_Cursor proc push ax push dx mov dh,y_coord mov dl,x_coord mov bh f0 mov ah,2 int lOh pop dx pop ax ret
endp Move_Cursor /--Процедура вывода строковой константы--; Output_String proc push ax push dx mov ah,09h int 21h pop dx pop ax ret
endp Output_String
/-Процедура рисования интерфейса программы-; Draw_Interface proc
call Clear_Screen
Варианты выполнения программных заданий
759
mov y_coord,О mov x_coord,О call Move_Cursor mov dx,offset Ramka call Output_String mov y_coord, Oeh mov x_coord, Olh call Move_Cursor mov dx,offset mes_contin call Output_String mov y_coord, Ofh call Move_Cursor mov dx,offset mes_contin_l call Output_String mov y_coord, llh call Move_Cursor mov dx,offset mes_exit call Output_String call Hide_Cursor ret
endp Draw_Interface
;---Процедура стирания информации------;
Clear_Inform proc push ax push dx
mov y_coord, Oeh mov x_coord, Olh call Move_Cursor mov dx,offset blank_string call Output_String mov y_coord, Ofh call Move_Cursor mov dx,offset blank_string call Output_String pop dx pop ax ret
endp Clear_Inform
/-Процедура вывода сообщения об ошибке ввода-; Output_Error_Message proc push dx push ax
mov y_coord, Odh mov x_coord, Olh call Move_Cursor mov dx,offset mes_error call Output_String mov y_coord, Oeh mov x_coord, Olh call Move_Cursor mov dx,offset mes_error_l call Output_String pop ax pop dx ret
760	Приложение 1
endp Output_Error_Message
/-Процедура стирания сообщения об ошибке ввода-; Clear_Error_Message proc push dx push ax mov y_coord,Odh mov x_coord,Olh call Move_Cursor mov dx,offset blank_string call Output_String mov y_coord,0eh mov x_coord,01h call Move_Cursor mov dx,offset blank_string call Output—String pop ax pop dx ret endp Clear_Error_Message ;-Процедура ожидания нажатия клавиши-; Wait—Press proc push ax mov ah,0 int 16h cmp al,27 jne wl jmp Exit wl: pop ax ret endp Wait—Press /-Процедура преобразования кода для вывода; Conversion proc хог ah,ah push si push ax push ax mov cl,4 shr al,cl mov si,ax mov bh,[Index_Table+si] mov S_byte,bh call Move_Cursor mov al,S_byte	;вывод старшей части кода
mov ah,0eh int lOh pop ax mov X—coord,30h call Move_Cursor and al,OFh mov si,ax mov bl,[Index_Table+si] mov M_Byte,bl
mov al,M_byte	;вывод младшей части кода
mov ah,0eh int lOh pop ax pop si
Варианты выполнения программных заданий
761
ret
endp Conversion
; -Процедура вывода подсвеченного символа— Output_Color proc
mov ah,09h
mov bh,0
mov bl,06eh
mov cx,l
int lOh
ret
endp Output_Color
;—начало главной программы—;
Main:
call Draw Interface
mov dx,control_port in al,dx /и сброс строба and al,11111110b or al,00001100b out dx,al
mov old_x_coord, 16h
Get_Char: /получить символ mov ah,08h int 21h cmp al,27 jne ml jmp Exit
ml:
mov old_al,al call Clear_Inform call Clear_Error_Message
cmp al,30h je Step cmp al,31h je Stream
call Output_Error_Message jmp Get_Char
Step:
mov step_r,l mov y_coord, Odh mov x_coord, 07h call Move_Cursor mov dx,offset mes_step call Output_String jmp Run
/инициализация принтера
/начальное значение координаты для /вывода символа в выходной строке
/если Esc, то выход
/сохраняем содержимое al
/если ’0’-выбран режим step
/если ’1* выбран режим stream
/в противном случае вывод
/сообщения об ошибочном вводе
/установка признака режима step
/вывод названия режима — step
Stream:
mov step_r,0	/установка признака режима stream
mov y_coord,Odh
mov x_coord, 07h call Move Cursor
768	Приложение 1
mov dx,offset mes_stream	/вывод названия режима — stream
call Output_String
jmp Run
Run:
mov y_coord,lOh
mov x_coord,Olh call Move_Cursor mov dx,offset mes_contin_2 call Output—String
call Wait—Press
mov y_coord, 07h
mov X—coord, 16h call Move_Cursor mov dx,offset output_text call Output—String
push ax
push dx
mov si,offset output_text out—next—symbol:
mov al,[si]
mov out—symbol,al
cmp old—X—coord,2dh
jne m3 jmp fin
m3:
mov dx,data_port out dx,al
mov X—coord,lfh mov y_coord, Obh call Move_Cursor mov al,out—symbol call Conversion
cmp step_r,0
je m2
call Wait—Press
m2:
mov dx,control—port in al,dx
or al,00000001b
out dx,al
mov al,’1’
mov X—coord,36h mov y_coord, llh call Move_Cursor call Output—Color
mov dx,state_port waitl:
in al,dx
;начало работы алгоритма после /выбора режима после нажатия любой /клавиши
/ввод строки во входную строку из /программы соответственно заданию
/в si помещаем смещение первого /символа относительно начала /строки, в al помещаем текущий /символ
/если конец строки, то переход на /конец обработки строки
/загружаем символ в регистр данных
/устанавливаем место вывода кода
/символа
/вызов подпрограммы преобразования / кода
/если режим step, то ожидаем
/нажатия клавиши
/установка строба в 1
/чтения регистра состояния
варианты выполнения программных заданий	763
test al,80h je waitl
mov al,’0’ mov x_coord, lah mov y_coord,Oeh call Move_Cursor call Output_Color mov al, ’1 ’ mov x_coord,leh mov y_coord,Oeh call Move_Cursor call Output_Color cmp step_r,0 je m5 call Wait_Press
m5:
mov dx,control_port in al,dx and al,11111110b out dx,al	/сброс строба в 0
mov al,’0 ’ mov x_coord,36h mov y_coord,llh call Move_Cursor call Output_Color
mov al,’l’	/восстановление битов в регистре
mov x_coord,lah	/состояния
mov y_coord, Oeh call Move_Cursor call Output_Color mov al,’0’ mov x_coord,leh mov y_coord,Oeh call Move_Cursor call Output_Color
cmp step_r,0 je m6 call Wait_Press
m6:
mov al,’O’	/выключение подсветки битов
mov x_coord,36h mov y_coord,llh call Move_Cursor mov ah,09h mov bh,0 mov bl,07h mov cx,l int lOh mov al,’1’ mov x_coord,lah mov y_coord,Oeh call Move_Cursor
IM
Приложение 1
mov ah,09h mov bh,0 mov bl,07h mov cx,l int lOh mov al,’O’ mov x_coord,leh mov y_coord,0eh call Move_Cursor mov ah,09h mov bh,0 mov bl,07h mov cx,l int lOh
mov cl,old_x_coord mov x_coord,cl mov y_coord,15h call Move_Cursor mov al,[si] call Output_Color
cmp step_r,0 je m7
call Wait_Press
m7 :
add old_x_coord,1 add si,l
jmp out_next_symbol
fin:
pop dx pop ax call Wait_Press jmp Main
Exit:
mov ah,04ch int 21h Code ends
end Start
;переводим позицию выводимого
;символа, переходим к следующему
;символу вовходной строке
/стандартный выход из программы
Программирование последовательного порта (УАПП)
1.	Цель работы
Исследовать режим тестирования последовательного порта (СОМ).
2.	Задание на лабораторную работу
2.1.	Основное задание
Написать программу на ассемблере, выполняющую инициализацию универсального асинхронного приемопередатчика (УАПП), на базе которого реализуются последовательный порт с интерфейсом RS-232, передачу данных в УАПП и прием этих же данных из УАПП.
Варианты выполнения программных заданий
765
Вариант - 11, 24, 33, 43, 51 (раздел 6.16 книги).
Скорость обмена (11) - 9600 бит/с.
Число битов данных в последовательной кодовой посылке (24) - 8 бит.
Тип контроля, применяемый в УАПП (33) - контроль отсутствует.
Число стоповых битов (43) - 2 стоповых бита.
Источник данных (51) - данные вводятся с клавиатуры.
2.2.	Дополнительное задание
Интерфейс программы должен содержать заголовок работы с указанием названия лабораторной работы и автора, место для строк «Передача данных» и «Прием данных», информацию об указанной в основном задании конфигурации (скорость, контроль и т. д.), сообщение о выбранном режиме (соответственно step или stream), строку диалога для вывода необходимой информации, а также пять (или больше) регистров порта: регистр управления линией, регистр управления модемом, регистр состояния линии, регистр данных и регистр управления прерываниями. В строку «Передача данных» вводится с клавиатуры набор символов, который должен быть выведен в строку «Прием данных» путем чтения регистра данных, куда они засылаются побайтно. Порядок вывода символов в строке «Прием данных» определяется выбранным режимом. В программе допускается возможность применения двух режимов: step (пошаговый) и stream (потоковый). При выборе первого режима (пошагового) символы будут выводиться последовательно сразу же после их ввода. При выборе второго режима (потокового) строка «Прием данных» выведется на экран только после заполнения строки «Передача данных». Выбор режима осуществляется нажатием клавиши, соответствующей ему и указанной в программе. При ошибочном выборе режима (нажатии клавиш, не соответствующих названиям режимов) выводится сообщение с просьбой повторить ввод.
Планируемый интерфейс программы представлен на рис. 11.
—Курс : * Интерфейсы и периферийные устройства= Лаб. работа НЗ: 'Тестирование последовательного порта Выполнила: ст. группы А-42 Василькова Евгения
Для выбора режима нажмите:'0'-пошаговый '1'-потоковый
Передача данных—* Прием данных —*-
Скорость обмена - 9600 Число битов данных - 8 Контроль ~ отсутствует Число стоп, битов - 2
								Регистр передатчика УАПП
1	0	0	0	0	0	0	0	Регистр управления линией
0	0	0	0	0	0	0	0	Регистр состояния линии
0	Вправление модемом
0	Упр-е прерываниями
Выбран режим:
Для выхода нажать Esc
Таганрог 2005
РИС. 11
766
Приложение 1
Общая структура программы
Общую структуру программы можно представить в виде шести блоков, последовательно реализующих задание (рис. 12).
Блок инициализации программы описан в п. 3.1.
Выбор режима - step или stream - описан в п. 3.2. Этот блок определяет, как будет осуществляться вывод строки «Прием данных» - отдельно каждый символ или вся строка.
Инициализация СОМ 1 - описание и блок-схема приводятся в п. 3.3.
Инициализация регистра контроля линии - описана в п. 3.4.
Проверка готовности СОМ1 - чтение порта состояния модема - описание в п. 3.5.
Передача данных - описана в п. 3.6.
Работа с портом - описание и блок-схема приведены в п. 3.7.
Прием данных - описан в п. 3.8.
3.1.	Инициализация
Инициализация включает внешнее оформление, которое заключается в очистке экрана и скрытии курсора, а также рисовании рамки, содержащей информацию о наименовании лабораторной работы, авторе и т. д. (по заданию), также в этом блоке выводятся информационные сообщения. Блок инициализации можно представить в виде, показанном на рис. 13.
Процедуры:
•	ClearScreen - очистить экран и скрыть курсор
•	Draw interface - нарисовать интерфейс
•	Move Cursor - переместить курсор в заданную точку экрана
•	xcoord, у coord - параметры входа в процедуру.
Задают координаты курсора
•	Output string - вывести строковую константу
•	dx - смещение строковой константы
3.2.	Выбор режима
Выбор режима осуществляется нажатием клавиш О или 1.
О - пошаговый режим; 1 - потоковый режим.
При некорректном вводе (определяется значением в регистре al. так как там хранится ASCII-код после выполнения функции ввода) выводится сообщение об ошибочном нажатии. При выборе режима step производится установка в 1 флага признака данного режима. Для этого выделяется переменная step_r. Соответственно при выборе иного режима она устанавливается в О. В дальней-
Инициализация
чУ---’------
Выбор режима
нициализация СОМ1
Инициализация регистра контрол? линии
-----*-------
Проверка готовности СОМ 1
Передача данных
----1-------
Работа с портом
---1------
Прием данных
конец
Рис. 12
Очистить экран
Спрятать курсор
Изобразить рамку
0
Рис. 13
О
Варианты выполнения программных заданий
767
шем она используется для проверки необходимости пошагового выполнения алгоритма.
Описанный выше алгоритм выбора режима может быть представлен в виде блок-схемы (рис. 14).
3.3. Инициализация СОМ1
Инициализация СОМ1 заключается в том, чтобы определить базовый адрес СОМ 1 из области данных BIOS и настроить определенным образом регистр контроля линии. Чтобы задать скорость обмена, необходимо установить бит DLAB регистра контроля линии в 1 (DLAB -Divisor Latch Access Bit). При такой настройке в порт 3F9h - регистр делителя скорости - засылается старший байт скорости обмена (OOh), в порт 3F8h - младший байт (Och). Таким образом, загружен делитель, задающий скорость обмена (рис. 15).
3.4. Инициализация регистра контроля линии
Чтобы инициализовать регистр линии контроля, необходимо произвести установку некоторых битов, в частности:
О бит - 1 (число битов данных);
1	бит - 1;
2	бит - 1 (2 стоп-бита при 8-битных данных);
3	бит - х (нет контроля);
4	бит-О.
“Выбран режим: step"
________1_______
Установка флага признака режима step в 1
“Выбран режим: stream"
Установка флага признака режима step в О
Ошибочный ввод: нажмите 0/1
Рис. 14
Получение базового адрес а СОМ1
Установка 7 бита регистра контроля линии
ЗЕЭЪдля загрузки _скорости обмена
Настройка 3F8h и
Ст.байт делителя <- OOh Мл .байт делителя <- Och
Рис. 15
В регистре управления модемом (3FCh) 4-й бит устанавливается в единичное состояние, что позволяет в УАПП замкнуть выход передатчика на вход его приемника (диагностический режим). Кроме того, необходимо запретить прерывания по приему и передаче символа, то есть необходимо осуществить сброс регистра управления прерываниями (3F9h) - рис. 16.
768
Приложение 1
Рис. 16
3.5.	Проверка готовности СОМ1
Для проверки готовности СОМ 1 необходимо считать состояние регистра статуса модема (3FEh) и проанализировать определенные биты: бит CTS - индикатор изменения сигнала готовности к передаче и бит DSR - индикатор изменения сигнала готовности терминала данных.
3.6.	Передача данных
Данные вводятся с клавиатуры в строку «Передача данных». При положительной проверке регистра статуса линии передаваемый байт заносится в регистр хранения данных, откуда потом считывается в выходную строку.
3.7.	Работа с портом
После инициализации СОМ1, регистра контроля линии, проверки готовности СОМ 1 и ввода символа производится проверка статуса линии. Проверяется 5-й бит - готов ли регистр данных к приему данных. Если 5-й бит установлен в 1, то передаваемый байт заносится в регистр хранения данных. Графически это отображается выводом в регистре данных ASCII-кода вводимого символа. Для преобразования кода используется процедура преобразования методом таблицы О-F и индекса. Далее проверяется бит О регистра состояния линии. Если бит О установлен в 1, то данные приняты и можно прочитать их из регистра хранения данных. После чтения символа производится вывод его на экран.
Варианты выполнения программных заданий
769
Алгоритм работы с портом представлен на рис. 17.
Рис. 17
3.8.	Прием данных
Вывод данных в строку «Прием данных» зависит от режима. При пошаговом режиме вывод организуется после чтения байта из регистра хранения данных с переводом курсора в следующую позицию. Вывод заканчивается по достижении конца строки вывода. При потоковом режиме для хранения вводимой строки выделяется массив из 30 элементов размером 1 байт. Первоначально в них неопределенное состояние. При считывании байта из регистра хранения данных он помещается в элемент памяти, куда указывает смещение si относительно начала массива. Когда будет заполнена входная строка, будет произведен вывод всех строк сразу.
4.1.	Исходный файл, содержащий текст программы
COMPORT. ASM - текст программы
4.2.	Файл, полученный в результате компиляции программы
COMPORT.COM - сот-файл
770	Приложение 1
5. Выводы
В результате лабораторной работы была получена программа, осуществляющая инициализацию универсального асинхронного приемопередатчика (УАПП), на базе которого реализуется последовательный порт с интерфейсом RS-232. передачу данных в УАПП и прием этих же данных из УАПП.
Код программы - COMPORT.ASM.
•	Размер файла - 12,9 Кбайта.
•	Количество строк - 415.
Структурно программа представляет восемь взаимосвязанных блоков. По каждому блоку дано детальное описание. Приведена подробная инициализация СОМ 1 и регистра контроля линии связи, а также работа с портом с передачей и приемом данных. Программа может работать в двух режимах: пошаговый - символ выводится после его ввода; потоковый - строка выводится только после ввода последнего символа в строку «Передача данных».
Полученные результаты выполнения программы показаны на рис. 18.
=Курс: 'Интерфейсы и периферийные устройствам^ Лаб. работа НЗ: 'Тестирование последовательного порта Выполнила: ст. группы А-42 Василькова Евгения
Для выбора режима нажмите:'0'-пошаговый '1'-потоковый
Передача данных-»-	jkhsjdkhfjhgjfffffffffffffffkd
Прием данных —	jkhsjdkhfjhgjfffff£ff££££fffkd
Скорость обмена - 9600 Число битов данных - 8 Контроль - отсутствует Число стоп, битов - 2
6				4				Регистр передатчика УАПП	
0	0	0	0	0	0	1	1	Регистр	управления линией
0	0	1	0	0	0	0	1	Регистр	состояния линии
О
Управление модемом
Упр-е прерываниями
0
0
Выбран режим:потоковый Для выхода нажать Esc? Для продолжение нажмите Enter = Таганрог 2005
Рис. 18
7. Листинг программы
code Segment
assume cs:code, ds:code org lOOh start: jmp main ramka db " $" mes_step mes_stream mes_error blank_string blank_string2 mes_exit mes contin
db db db db db db db
пошаговый^" потоковый$"
Ошибка при вводе!Выберите ’0’ или ’1’!$ 1 $” $”
Для выхода нажать Esc!$" Нажать любую клавишу$”
варианты выполнения программных заданий	771	
mes_continl	db ’’Продолжение — нажать любую клавишу! $” mes_start	db ’’Для продолжение нажмите Enter $” mes_in_symbol db "Введите данные с клавиатуры! $" х	db	?	;х-координата курсора у	db	?	;у-координата курсора old_al	db	?	/старое значение al index_table	db ’0123456789ABCDEF’ /таблица 0-F m_byte	db	?	/младшая часть выводимого	байта s_byte	db	?	/старшая часть выводимого	байта x_out	db ?	/прежняя х-координата курсора step_r	db	?	/признак режима step mas	db 30 dup (?)	/массив для хранения символов ;	Процедура очистки экрана и скрытия курсора	; clear_screen proc mov cx,0 mov dx, 18 4 fh mov bh,7 mov ax,619h int lOh mov ah,l mov ch,20 mov cl,0 int lOh ret	
endp clear_screen
;-----Процедура перемещения курсора—;
move_cursor proc
mov dh,y
mov dl,x
mov bh,0
mov ah,2 int lOh ret endp move_cursor ;—Процедура вывода строковой константы—; output_string proc
mov ah,09h
int 21h ret endp output_string /-Процедура рисования интерфейса программы-; draw_interfасе proc
call clear_screen
mov y,lh
mov x,0h
call move_cursor
mov dx,offset ramka
call output_string ret
endp draw_interface
;---Процедура стирания информации------;
clear_string proc
mov y,13h
mov x,24h
772
Приложение 1
call move_cursor
mov dx,offset blank_string
call output_string ret
clear_string endp
;—Процедура вывода сообщения о выходе-------;
input_mes_exit proc
mov y,15h
mov x,0fh
call move_cursor
mov dx,offset mes_exit
call output_string ret
input_mes_exit endp
;-Процедура стирания сообщения о продолжении-; clear_next_mes proc
mov y,15h
mov x,28h
call move_cursor
mov dx,offset blank_string
call output_string
mov x,28h
call move_cursor
mov dx,offset mes_in_symbol
call output_string ret
clear_next_mes endp
/-процедура вывода сообщения о продолжении-;
input_next_mes proc
mov y,15h
mov x,28h
call move_cursor
mov dx,offset mes_continl
call output_string ret
input_next_mes endp
/-Процедура вывода сообщения об ошибке ввода-; input_mes_error proc
mov y,15h
mov x,0fh
call move_cursor
mov dx,offset mes_error
call output_string ret
input_mes_error endp
;---Процедура стирания сообщения-----;
clear_error_mes proc
mov y,15h
mov x,0fh
call move_cursor
mov dx,offset blank_string2
call output_string ret
clear_error_mes endp
/-Процедура ожидания нажатия клавиши-;
Варианты выполнения программных заданий
773
wait_press proc mov ah, О int 16h cmp al,27 jne wl jmp exit wl:ret
endp wait_press	
;-Процедура преобразования кода для conversion proc xor ah,ah push dx push si push ax push ax mov cl,4 shr al,cl mov si,ax mov bh,[index_table+si] mov S_byte,bh mov x,06h mov у,Och call move_cursor	вывода;
mov al,S_byte mov ah,Oeh int lOh pop ax and al,OFh mov si,ax mov bl,[index_table+si] mov m_Byte,bl mov x,Oeh mov у,Och call move_cursor	/вывод старшей части кода
mov al,m_byte mov ah,Oeh int lOh pop ax pop si pop dx ret endp conversion ;—Процедура вывода информации—; output_symbol proc mov ah,Oeh mov bh,0 int lOh ret endp output_symbol ;—начало главной программы—;	/вывод младшей части кода
main: call draw_interface get_char:	/рисование рамки
call wait_press	;ожидание нажатия клавиши
cmp al,30h je step	/если "О” — пошаговый режим
	774	Приложение 1
	cmp al,31h je stream mov y,15h mov x,0fh call move_cursor mov dx,offset blank_string2 call output_string call input_mes_error jmp get_char step: mov y,13h mov x,24h call move_cursor mov dx,offset mes_step call output_string mov step_r,l call clear_error_mes jmp run stream: mov y,13h mov x,24h call move_cursor mov dx,offset mes_stream call output_string mov step_r,0 call clear_error_mes j mp run run: mov x_out,14h xor si,si call input_mes_exit call input_next_mes call wait_press call clear_next_mes ;	Инициализация COMI	; mov ax,40h mov es,ax mov dx,es:[0] add dx,3 mov al,10000000b out dx,al dec dx dec dx mov al,OOh out dx,al dec dx mov al,0ch out dx,al	/если "I” — потоковый режим ;вывод сообщения об ошибочном ;выборе режима ;вывод сообщения о пошаговом режиме ;установка признака пошагового режима ;вывод сообщения о потоковом режиме ;сброс признака пошагового режима ;es указывает на область данных BIOS ;получение базового адреса СОМ1 ; регистр контроля линии (3FBh) ;установка 7 бита для загрузки ;скорости обмена /старший байт делителя /младший байт делителя
;-Инициализация регистра контроля линии;
add dx,3	/указание на регистр контроля линии
mov al,00000000b	;очистка регистра контроля линии
or al,00000011b	/установка длины символа — 8 бит
or al,00000100b	/установка двух стоп-битов
or al,00000000b	;отсутствие контроля
out dx,al	
Варианты выполнения программных заданий	775
inc dx	/указание на регистр	управления
in al,dx	/модема
or al,10h	/замыкание выхода на	вход
out	dx, al
sub	dx, 3
mov	al,0
out	dx, al
/указание на регистр разрешения прер-й /запрет прерываний
/-Вывод состояния регистров СОМ1 после инициализации-/ mov х,3 mov уr Oeh call move cursor
mov al,’O’ call output_symbol mov x,llh call move_cursor mov al,’1’ call output_symbol mov x,Ofh call move_cursor call output_symbol mov у,Odh mov x,30h call move_cursor call output_symbol mov x,07h mov y,10h call move_cursor call output_symbol mov x,llh call move_cursor call output_symbol /---Проверка готовности COMI------/
mov dx,es:[0]
add dx, 6 in al,dx ml:
test al,Olh jnz m2 test al,20h jz ml -----Работа с портом COMI--------/ m2 :
add x_out,l call wait_press mov old_al,al mov dl,x_out mov x,dl mov у,06h call move_cursor mov ah,Oeh int lOh push ax push ax mov dx,es:[0] add dx,5
/es указывает на область данных BIOS /указание на регистр состояния
/модема
/ввод символа
/сохранение ascii-кода в old_al /вывод нажимаего символа в строке /’передача данных*
/извлечение адреса СОМ1
/указание на регистр статуса линии
test al,20h	;готов к приему данных?
j z m4 loop m3 m4:sub dx,5	/указание на регистр хранения данных
pop ax	/занести передаваемый байт
out dx,al mov al,old_al	/вывод преобразованного кода
call conversion	/в регистр данных
add dx,5	/указание на регистр статуса линии
m5:in al,dx test al,l	/данные приняты?
j z m5 sub dx,5	/указание на регистр хранения данных
in al,dx	/чтение принятых данных
cmp step_r,0 j z m7	/если режим пошаговый, то
mov dl,x_out	/вывод символа в строку
mov x,dl	/"прием данных"
mov y,8h call move_cursor mov ah,Oeh int lOh jmp mlO m7: ;если режим потоковый, то mov mas[si],al	/считанный байт помещаем в массив
inc si mlO : cmp x_out,32h	/проверка на окончание строки ввода
j z fin	/если не закончилась, то ввод
jmp m2	/следующего символа
fin:cmp step_r,0	;если режим потоковый, то
jnz m8	/выводим весь массив,который
mov x_out,14h	/состоит из вводимых символов
sub si,30	/переход к первому символу массива
mov ex,30 m9:add x_out,l mov dl,x_out mov x,dl mov y,08h call move_cursor	/вывод символа
mov al,mas[si] mov ah,Oeh int lOh inc si	/переход к очередному символу
loop m9 m8:mov y,15h	/вывод сообщения о
mov x,28h	/повторном запуске
call move_cursor mov dx,offset mes_start call output_string mov ah,0 int 16h cmp al,0Dh	/выход по нажатию Enter
Варианты выполнения программных заданий	777
j nz тб
mov x,15h	/стирание строки передачи данных
mov у, 6h call move_cursor mov dx,offset blank_string call output_String mov x, 15h	/стирание строки приема данных
mov у, 8h call move_cursor mov dx,offset blank_string call output_string mov у,15h mov x,28h call move_cursor
mov dx,offset blank_string
call output_string
call clear_String
jmp get_char	/переход на начало
тб:cmp al,27
jz exit
j mp m8
exit:	/стандартный выход из программы
mov ah,04ch int 21h code ends end start
Управление курсором. Контроллер ЭЛТ
1.	Цель работы
Изучение принципов образования различных форм курсора и управления его позиционированием. Разработанная программа на языке ассемблера должна выполнять функции 01. 02. 03 прерывания BIOS INT 10h по управлению курсором. При разработке программы использовать прямой доступ к регистрам контроллера ЭЛТ видеоадаптера.
2.	Задание на лабораторную работу
Вариант задания (определяется маршрутом в графе, раздел 6.10 книги):
1	- позиционирование курсора в соответствии с нажатием выбранных клавиш клавиатуры;
4	- выключение курсора путем задания его координат за пределами экрана;
6	- изменение формы курсора за счет движения верхней и нижней строк развертки курсора;
9	- установка псевдокурсора в виде негативного отображения символа.
3.	Теоретическое введение
Видеоадаптер VGA содержит большое количество регистров.
В адаптерах VGA и Super VGA практически все регистры доступны как для записи, так и для чтения.
Доступ к большинству регистров видеоадаптеров осуществляется в два этапа: через один порт ввода/вывода выбирается номер интересующего регистра,
778	Приложение 1
а затем через другой порт ввода/вывода осуществляется обмен данными. Это позволяет сэкономить большое число адресов процессора.
Заметим, что в различных режимах работы видеоадаптера его регистры могут иметь различные адреса. В табл. 1 приведен список адресов регистров в монохромных и цветных режимах.
Таблица 1	
Адрес	Регистр
ЗС2	Регистр определения различных режимов работы (Miscellaneous Output Register -MOR), регистр состояния 0 (Input Status Register 0 - ISRO)
ПЗВА	Регистр управления дополнительным устройством (Feature Control Register), регистр состояния 1 (Input Status Register 1 -ISR1)
ЗВВ	Регистр очистки защелки светового пера (Clear Light Pen Latch Register - CLPLR)
ЗВС	Установка защелки светового пера (Set Light Pen Latch Register - SLPLR)
JC4, 305	Регистры синхронизатора (Sequencer Register’s - SR)
3B4.3B5	Регистры контроллера ЭЛТ (CRT Controller Register's - CRT_CR)
ЗСА.ЗСС, ЗОЕ, 3CF	Регистры графического контроллера (Graphics Controller Register's - GCR)
300 _	Регистр контроллера атрибутов (Attribute Controller Register - ACR)
ЗСЗ 		Регистр разрешения работы системы VGA (VGA Enable Register - VGAJER) 	
306, 307, ЗС8, 309	Регистры цифроаналогового преобразователя (ЦАП) VGA (VGA Video DAC Register - VGA_DAC_R)
Регистры контроллера ЭЛТ
Регистры контроллера ЭЛТ управляют сигналами синхронизации, необходимыми для формирования растра, определяют формат данных на экране, форму курсора.
Регистры контроллера ЭЛТ составляют самую многочисленную группу регистров видеоадаптеров. Для видеоадаптера VGA контроллер ЭЛТ содержит 24 регистра.
В табл. 2 приведен список всех регистров контроллера ЭЛТ и их индексы, используемые для доступа к ним.
В данном случае нами будут использованы регистры начальной и конечной линий курсора, регистры младшего и старшего байтов позиции курсора.
Начальная лнння курсора (Cursor Start Register - CSR) (индекс OAh). Этот регистр является доступным как для чтения, так и для записи.
Регистр задает линию сканирования символа, в которой начинается курсор. Вместе с регистром конечной линии курсора (CER) он определяет размер и форму курсора.
D4 D0 - начальная линия курсора.
D5 - бит гашения курсора. Реализован только на VGA. Если D5 содержит единицу, курсор гаснет.
D7-D6 - не используются.
При установке режима работы видеоадаптера BIOS загружает в регистр CSR следующие значения:
Режим	0,1,2,3	4,5,6,D,E,F, 10	7
Содержимое регистра	06	00	OBh
Варианты выполнения программных заданий
77»
Таблица 2	
Индекс Регистр контроллера ЭЛТ	
0	Общая длина линии горизонтальной развертки (Horizontal Total Register - HTR)
1	Длина отображаемой части горизонтальной развертки (Horizontal Display Enable End Register - HDER)
2	Начало импульса гашения луча горизонтальной развертки (Start Horizontal Blank Register - SHBR)
3	Конец импульса гашения луча горизонтальной развертки (End Horizontal Blank Register - EHBR)
4	Начало импульса горизонтального обратного хода луча (Start Horizontal Retrace Register - SHRR)
5	Конец импульса горизонтального обратного хода луча (End Horizontal Retrace Register - EHRR)
6	Число горизонтальных линий растра (Vertical Total Register - VTR)
7	Дополнительный регистр (Overflow Register - OVR)
8	Предварительная установка горизонтальной развертки (Preset Row Scan Register - PRSR)
9	Высота символов текста (Max Scan Line Register - MSLR)
OAh	Начальная линия курсора (Cursor Start Register - CSR)
OBh	Конечная линия курсора (Cursor End Register - CER)
OCh	Старший байт начального адреса (Start Address Register - SAR, high byte)
ODh	Младший байт начального адреса (Start address Register - SAR, low byte)
OEh	Старший байт позиции курсора (Cursor Location Register - CLR, high byte)
OFh	Младший байт позиции курсора (Cursor Location Register - CLR, low byte)
10h	Начало обратного вертикального хода луча (Vertical Retrace Start Register - VRSR)
11h	Конец обратного вертикального хода луча (Vertical Retrace End Register - VRER)
10h	Старший байт адреса светового пера (Light Pen Address Register - LPAR, high byte)
11h	Младший байт адреса светового пера (Light Pen Address Register - LPAR, low byte)
12h	Начало гашения вертикальной развертки (Vertical Display End Register - VDER)
13h	Логическая ширина экрана (Offset Register - OFR)
14h	Положение подчеркивания символа (Underline Location Register - ULR)
15h	Начало импульса гашения вертикальной развертки (Start Vertical Blank Register - SVBR)
16h	Конец импульса гашения вертикальной развертки (End Vertical Blank Register - EVBR)
17h	Управление режимом (Mode Control Register - MCR)
18h	Регистр сравнения линий (Line Compare Register - LCR)
Конечная линия курсора (Cursor End Register - CER) (индекс OBh). Этот регистр» так же как и регистр CSR, является доступным для чтения и записи.
Регистр задает последнюю линию сканирования символа, в которой заканчивается курсор.
D4-D0 - соответствует номеру последней линии курсора для VGA.
D6-D5 - отклонение курсора. Задает смещение курсора относительно позиции, определенной регистром CLR:
00 - нет отклонения;
01 - отклонение вправо на один символ;
10	- отклонение вправо на два символа;
11	- отклонение вправо на три символа.
D7 - не используется.
780
Приложение 1
При установке режима работы видеоадаптера BIOS загружает в регистр конечной линии курсора следующие значения:
Режим	0,1,2,3	4,5,6,D,E,F, 10	7
Содержимое регистра	07	00	OCh
Изменяя значение регистров начальной и конечной линий курсора, можно менять его положение и размер. На левой части рис. 19, приведенного ниже, регистр начальной линии курсора равен OAh, регистр конечной линии курсора -OBh. На правой части рис. 1 значение регистров изменено: регистр начальной линии равен 4, а регистр конечной линии - 5.
ОбыЧМЫЙ HYFQCF
ИомкмвмммА цугоог
Рис. 19
Регистры, определяющие положение курсора. Два регистра - регистр старшего байта позиции курсора (Cursor Location Register - CLR_h, high byte) (индекс OEh) и регистр младшего байта позиции курсора (Cursor Location Register - CLR_1, low byte) (индекс OFh) - определяют положение курсора на экране (см. рис. 20). Регистры доступны как для записи, так и для чтения.
4.	Описание программы
Демонстрационное окно программы, приведенное на рис. 21, отображает вид четырех регистров ЭЛТ, используемых для управления курсором. В целях упрощения биты регистров меняются только при первичных нажатиях кла-
CLR_h CLR.1 | Olh , 9Dh | регистр позиции курсора
5 4- 13 = 413 = 19Dh
регистр позиции курсора равен 019Dh;
позиция курсора (5,13)
строка номер 5
колонка номер 13
Рис. 20
Варианты выполнения программных заданий
781
Рис. 21
виш для демонстрации изменений, происходящих при перемещениях и изме-ниях вида курсора.
Управление осуществляется при помощи следующих клавиш:
Esc - выход из программы;
Ins - отображение псевдокурсора в виде негативного изображения, а также возврат к обычному виду курсора;
Del - выключение и включение курсора;
i - перемещение курсора вниз в пределах рабочей области;
-	> - перемещение курсора вправо в пределах рабочей области;
Т - перемещение курсора вверх в пределах рабочей области;
<	— перемещение курсора влево в пределах рабочей области;
+ - поднять верхнюю строку сканирования;
-	- поднять нижнюю строку сканирования.
Алгоритм программы представлен на рис. 22.
5.	Выводы
В результате работы получена демонстрационная программа со следующими параметрами:
Имя исполнительного файла:	cursor.exe
Размер файла:	3,12 Кбайта
Число строк:	473
6.	Текст программы
stack segment stack db 100 dup(0)
stack ends
data segment
788
Приложение 1
Варианты выполнения программных заданий	783
hb db 0	;	переменная	для	хранения	содержимого старшего	байта позиции
lb db 0	;	переменная	для	хранения	содержимого младшего	байта позиции
stl db 14	;	переменная	для	хранения	позиции верхней линии развертки
endl db 15	;	переменная	для	хранения	позиции нижней линии	развертки
х db 80	; смещение в строке
fll db 1	; флаг наличия курсора
fl2 db 0	; флаг псевдокурсора
mes db ’ Ю,13,’******** LABORATORNAYA RABOTA РО KURSU IIPU #5 - CURSOR DEMONSTRATION *********’,10,13,’ ******* VARIANT: 1_4_6_9 by ZAKHAROVA MARA gr.A-42 ********',10,13, ’’,10,13, ’ | ’’ESC” TO EXIT | "<,A,>,v” MOVE | "DEL" OFF | ” + SIZE | "INS" NEGATIVE |’,10,13,’$’
boxl	db	'ъдддвдддвдддвдддвдддвдддвдддвддд! $'
mesl	db	'i0i0i0i0i0ilili0i\$'
box2	db	'АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ OAh - Cursor Start Register $'
regl	db	'ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДД! $'
reg2	db	'iOiOiOiOiOililil i\$'
reg3	db	'АДДДБДЦДБДДДБДДДБДДДБДДДБДДДБДДДЩ OBh - Cursor End Register $'
reg4	db	'ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДД! $'
reg5	db	'iOiOiOiOiOililiO i\$'
reg6	db	'АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ OEh - Cursor Location Register
high	byte$’	
reg7	db	’ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДД! $’
reg8	db	’iliOililiOililiO i\$’
reg9	db	’АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ OFh - Cursor Location Register
low byte$’ box3 db ’ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД! $’ mes2 db ’iWORK SPACE i $’ mes3 db ’i i $’ mes4 db ’i i $’ mes 5 db ’ i i $ ’ mes 6 db ’ i i $ ’ box4 db
’АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ $’ reg51 db’iOiOiOiOiliOilil i\$’ reg81 db ’i 0 i 0 i 0 i 0 i 1 i 1 i 0 i 0 i\$’ mesll db’i0i0i0i0i0ili0ili\$’ reg21 db ’i 0 i 0 i 0 i 0 i 0 i 1 i 1 i 0 i\$’ mesl2 db’i0i0i0i0i010i0i0i\$’ reg22 db’i0i0i0i0ilililili\$’ data ends code segment begin: assume dszdata, cszcode, sszstack mov ax, data mov ds, ax jmp start draw proc mov ax, data mov ds,ax mov ex,0 mov dl,7 9
784
Приложение 1
mov	dh,24	
mov	al, 0	
mov	bh, 70h	
mov	ah, 6	
int	lOh	
mov	ah, 2	
mov	bh,0	
mov	dx, 0	
int	lOh	
mov	bh,70h	
mov	dx, offset	mes
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	bh,0	
mov	dx, 0603h	
int	lOh	
lea	dx, boxl	
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, 0703h	
int	lOh	
lea	dx, mesi	
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, 0803h	
int	lOh	
lea	dx, box2	
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, 0903h	
int	lOh	
mov	dx, offset	regl
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, 0a03h	
int	lOh	
mov	dx, offset	reg2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, 0b03h	
int	lOh	
mov	dx, offset	reg3
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, 0c03h	
int	lOh	
mov	dx, offset	reg4
mov	ah, 9	
; устанавливаем курсор
; видеостраница О
Варианты выполнения программных заданий
785
int 21h mov ah,2 mov dx, 0d03h int lOh mov dx, offset reg5 mov ah,9 int 21h mov ah,2 mov dx, 0e03h int lOh
mov dx, offset гедб mov ah,9 int 21h mov ah,2 mov dx, 0f03h int lOh
mov dx, offset reg7 mov ah,9 int 21h mov ah,2 mov dx, 1003h int lOh
mov dx, offset reg8 mov ah,9 int 21h mov ah,2 mov dx, 1103h int lOh
mov dx, offset reg9 mov ah,9 int 21h mov ah,2 mov dx, 1203h int lOh
mov dx, offset ЪохЗ mov ah,9 int 21h mov ah,2 mov dx, 1303h int lOh
mov dx, offset mes2 mov ah,9 int 21h mov ah,2 mov dx, 1403h int lOh
mov dx, offset mes3 mov ah,9 int 21h mov ah,2 mov dx, 1503h int lOh
mov dx, offset mes4 mov ah,9 int 21h
mov dx, offset mes5 mov ah,9 int 21h mov ah,2 mov dx, 1703h int lOh mov dx, offset mes6 mov ah,9 int 21h mov ah,2 mov dx, 1803h int lOh mov dx, offset box4 mov ah,9 int 21h ret draw endp out proc
mov ax,40h	/в ES сегментный адрес области
mov	ES, ax	/данных дисплея
mov	dx,ES:[63h]	/в dx базовый адрес 3D4h
mov	al,OEh	/в al адрес регистра старшего байта
out	dx, al	/выбрать этот регистр
inc	dx	/перейти к адресу 3D5h
mov	al, hb	/в al значение старшего байта
out	dx, al	/вывести его в регистр OEh
dec	dx	/вернуться к адресу 3D4h
mov	al,0Fh	/в al адрес регистра младшего байта
out	dx, al	/выбрать этот регистр
inc	dx	/перейти к адресу 3D5h
mov	al, lb	/в al значение младшего байта
out	dx, al	/вывести его в регистр OFh
ret out endp size proc mov dx,3d4h mov al, Oah out dx,al inc dx mov al,stl out dx, al mov dx,3d4h mov al, Obh out dx,al inc dx mov al,endl out dx,al ret size endp start: call draw mov hb,06h
787
варианты выполнения программных заданий
mov lb,0b6h call out readkey:
mov ah,08	;считываем клавишу
int 21h cmp al,27 jne 13 jmp exit 13:cmp al, 4bh jne cright jmp left cright:cmp al, 4dh jne cup jmp right
cup:cmp al, 48h jne cdown jmp up cdown:cmp al, 5Oh jne coff jmp down coff:cmp al, 53h jne cupline jmp off cupline:cmp al,2bh jne cdownline jmp upline cdownline:cmp al, 2dh jne cnegative jmp downline cnegative:cmp al, 52h jne readkey jmp negative of f: cmp f11,1 jne on push ex mov ex,2828 mov fl1,0 mov lb,cl mov hb,ch mov ah,2 mov dx, 0d03h int lOh mov dx, offset reg51 mov ah,9 int 21h mov ah,2 mov dx, 1003h int lOh mov dx, offset reg81 mov ah,9 int 21h ll:call out jmp readkey
788
Приложение 1
on: mov fll,l pop ex mov lb,cl mov hb,ch jmp 11 left: mov ah, hb mov al, lb div x cmp ah,4 je stopleft mov cl,lb mov ch,hb dec ex mov lb,cl mov hb,ch push ex mov ah, 2 mov dx,101dh int lOh mov ah,9 mov al,’0’ mov bl, 7Oh mov cx,l int lOh mov ah, 2 mov dx,1021h int lOh mov ah,9 mov al,’1’ mov bl, 7Oh mov cx,l int lOh pop ex stopleft:call out jmp readkey right: mov ah, hb mov al, lb div x cmp ah,4ch je stopr mov cl,lb mov ch,hb inc ex mov lb,cl mov hb,ch push ex mov ah, 2 mov dx,lOldh int lOh mov ah,9 mov al,'1'
Варианты выполнения программных заданий
789
mov bl, 70h mov сх,1 int 10h mov ah, 2 mov dx,1021h int lOh mov ah,9 mov al,’1 ’ mov bl, 70h mov cx,l int lOh pop ex stopr:call out jmp readkey up: mov ah, hb mov al, lb div x cmp a1,13h je stopup mov cl,lb mov ch,hb sub ex,80 mov lb,cl mov hb,ch stopup:call out jmp readkey down: mov ah, hb mov al, lb div x cmp al,17h je stopdown mov cl,lb mov ch,hb add ex,80 mov lb,cl mov hb,ch
s t opdown:ca11 out jmp readkey upline: cmp s 11, 0 je res dec stl mov ah,2 mov dx, 0703h int lOh lea dx, mesll mov ah,9 int 21h mov ah,2 mov dx, 0a03h int lOh
mov dx, offset reg21 mov ah,9
790	Приложение 1
int 21h 14:call size call out jmp readkey res: mov stl,14 j mp 14 downline: cmp endl,l je resl dec endl 15:call size jmp readkey resl:mov endl,15 jmp 15 negative: cmp fl1,0 j e 16 cmp fl2,l j e set mov stl,0 mov endl,15 mov fl2,l mov ah,2 mov dx, 0703h int lOh lea dx, mes12 mov ah,9 int 21h mov ah,2 mov dx, 0a03h int lOh mov dx, offset reg22 mov ah,9 int 21h j mp 12 set:mov stl,12 mov endl,15 mov fl2,0 call draw 12:call size call out 16:jmp readkey Exit:
mov ax,4c00h	/вызов 4c функции 21-го прерывания
int 21h	;c параметром 0 (код выхода)
code ends end begin
Знакогенератор. Режимы дисплея
1. Цель работы
Изучение принципов преобразования кодов символов в их точечные образы на экране. Разработанная программа на языке ассемблера должна отображать на экран дисплея увеличенный образ символа, взятого из таблицы знакогенератора и соответствующего, например, символу нажатой клавиши. В качестве экви
Варианты выполнения программных заданий	791
валента изображения увеличенного символа необходимо использовать заданный знак кода ASCII.
2. Задание на лабораторную работу
Вариант задания определяется маршрутом в графе раздела 10.12 книги:
1 - символы вводятся с клавиатуры;
4 - таблицы символьных образов берутся из 2-го банка видеопамяти;
7 - размер символов -9x16:
10 - масштаб представления символа 1 : 2 к по оси X.
3.	Теоретическое введение
В текстовых режимах на экране могут отображаться только текстовые символы, а также символы псевдографики. Текстовые режимы работы видеоадаптеров рекомендуется использовать всегда, когда приложению не нужно выводить на экран графическую информацию.
Стандартные текстовые режимы работы видеоадаптеров позволяют вывести на экран 25 строк по 40 или 80 символов. Если перепрограммировать некоторые регистры видеоадаптера, то можно увеличить число отображаемых строк для VGA до 50.
Для кодирования каждого знакоместа экрана (символа) используются два байта. Первый из них содержит ASCII-код отображаемого символа, а второй -атрибуты символа. ASCII-коды символов экрана располагаются в нулевом цветовом слое, а их атрибуты - в первом цветовом слое.
В текстовых режимах на экране могут отображаться только текстовые символы, а также символы псевдографики. Текстовые режимы работы видеоадаптеров рекомендуется использовать всегда, когда приложению не нужно выводить на экран графическую информацию.
Стандартные текстовые режимы работы видеоадаптеров позволяют вывести на экран 25 строк по 40 или 80 символов. Если перепрограммировать некоторые регистры видеоадаптера, то можно увеличить число отображаемых строк для EGA до 43, а для VGA - до 50.
Для кодирования каждого знакоместа экрана (символа) используются два байта. Первый из них содержит ASCII-код отображаемого символа, а второй -атрибуты символа. ASCII-коды символов экрана располагаются в нулевом цветовом слое, а их атрибуты - в первом цветовом слое (рис. 23).
Рис. 23. Структура видеопамяти в текстовых режимах
792	Приложение 1
Атрибуты определяют цвет символа и цвет фона. Благодаря такому режиму хранения информации достигается значительная экономия памяти. При отображении символа на экране происходит преобразование его из формата ASCII в двумерный массив пикселов, выводимых на экран. Для этого преобразования используется таблица трансляции символов (таблица знакогенератора).
Данная таблица знакогенератора хранится во втором слое видеопамяти (рис. 24).
Рис. 24. Преобразование кода ASCII в образ символа на экране
При непосредственном доступе к видеопамяти нулевой и первый цветовые слои отображаются на общее адресное пространство. При этом происходит чередование байтов из нулевого и первого слоев (рис. 25). Коды символов имеют четные адреса, а их атрибуты - нечетные.
Рис. 25. Отображение цветовых слоев
При установке текстовых режимов работы видеоадаптера VGA BIOS загружает таблицы знакогенератора из ПЗУ во второй цветовой слой видеопамяти. Впоследствии эти таблицы используются при отображении символов на экране.
Варианты выполнения программных заданий
793
Благодаря этому можно легко заменить стандартную таблицу знакогенератора своей собственной. Эта особенность VGA, в частности, широко применяется при «русификации» компьютеров.
VGA обеспечивают возможность одновременной загрузки соответственно четырех и восьми таблиц знакогенератора в видеопамять. Каждая таблица содержит описание 256 символов. Одновременно активными могут быть одна или две таблицы знакогенератора. Это дает возможность одновременно отображать на экране до 512 различных символов. При этом один бит из байта атрибутов указывает, какая из двух активных таблиц знакогенератора используется при отображении данного символа. Номера активных таблиц знакогенератора определяются регистром выбора знакогенератора.
Следующий рис. 26 иллюстрирует использование двух таблиц знакогенератора. В верхней части рисунка символ, имеющий ASCII-код 31 h, отображается на экране при помощи первой таблицы знакогенератора. В нижней части рисунка символ с тем же кодом ASCII отображается при помощи третей таблицы знакогенератора и имеет уже другую форму.
Так как VGA имеет большую разрешающую способность, то его набор символов имеет в ширину 9 пикселов, а в высоту - 16.
Адреса таблиц знакогенератора для VGA приведены в табл. 3. Как видно из этой таблицы, на каждый символ отводится 32 байта.
Наиболее простой способ загрузки своих таблиц знакогенератора во второй слой видеопамяти заключается в использовании функций BIOS.
Функция 1 lh прерывания 10h предназначена для загрузки в память таблиц знакогенератора (наборов символов). При помощи данной функции можно загружать как стандартные таблицы знакогенератора, так и таблицы, самостоятельно разработанные программистом. Загружается либо вся таблица, либо ее часть.
794	Приложение 1
Таблица 3	
Первая таблица знакогенератора	Вторая таблица знакогенератора
символ 0 OOOOh-001Fh	символ 0 2000h-201Fh
символ 1 0020h-003Fh	символ 1 2020h-203Fh
символ 2 0040h-005Fh	символ 2 2040h-205Fh
	
символ 255 1FEOh-1FFFh	символ 255 3FE0h-3FFFh
Третья таблица знакогенератора	Четвертая таблица знакогенератора
символ 0 4000h-401Fh	символ 0 6000h-601Fh
символ 1 4020h-403Fh	символ 1 6020h-603Fh
символ 2 4040h-405Fh	символ 2 6040h-605Fh
	
символ 255 5FE0h-1FFFh	символ 255 7FE0h-7FFFh
Пятая таблица знакогенератора (только VGA)	Шестая таблица знакогенератора (только VGA)
символ 0 8000h-801Fh	символ 0 A000h-A01Fh
символ 1 8020h-803Fh	символ 1 A020h-A03Fh
символ 2 8040h-805Fh	символ 2 A040h-A05Fh
	
символ 255 9FE0h-9FFFh	символ 255 BFEOh-BFFFh
Седьмая таблица знакогенератора (только VGA)	Восьмая таблица знакогенератора (только VGA)
символ 0 C000h-C01Fh	символ 0 E000h-E01Fh
символ 1 C020h-C03Fh	символ 1 E020h-E03Fh
символ 2 C040h-C05Fh	символ 2 E040h-E05Fh
	
символ 255 DFEOh-DFFFh	символ 255 FFEOh-FFFFh
Функция llh содержит 11 различных подфункций, перечисленных ниже (табл. 4).
Таблица 4	
Номер подфункции	Назначение
00	Загрузка самостоятельно разработанных таблиц знакогенератора
01	Загрузка стандартного монохромного набора символов
02	Загрузка стандартного набора символов видеоадаптера CGA	
03	Выбор активных таблиц знакогенератора (EGA)	
04	Загрузка стандартного набора символов видеоадаптера VGA
20h	Установка вектора прерывания 1 Fh
21 h	Использование графического режима для отображения символов пользователя
22h	Использование набора символов 8 х 14 из ПЗУ
23h	Использование набора символов 8 х 8 из ПЗУ
24h	Использование набора символов 8 х 16 из ПЗУ
30h	Получение информации об используемом наборе символов
Варианты выполнения программных заданий
795
Для подфункций 00, 01, 02, 03, 04 установка бита D4 в регистре AL вызывает перезагрузку регистров контроллера ЭЛТ. Вновь устанавливаются значения, принятые по умолчанию для регистров формы курсора и регистра высоты символа текста. Если используется эта особенность, вызов данной функции должен происходить сразу после установки режима работы видеоадаптера. В противном случае вызов функции 11 h может привести к непредсказуемым последствиям.
Существуют несколько стандартных режимов работы видеоадаптеров, определенных фирмой IBM. Стандартные режимы работы не включают всех режимов, в которых могут работать видеоадаптеры. Многие фирмы - производители видеоадаптеров выпускают адаптеры, поддерживающие нестандартные режимы, имеющие улучшенные характеристики.
Характеристики нестандартных режимов отличаются для видеоадаптеров разных фирм. В приложении приведены параметры нестандартных режимов для наиболее распространенных видеоадаптеров.
Режимы работы видеоадаптеров характеризуются типом информации, которую они отображают (текстовая или графическая), количеством используемых цветов, разрешающей способностью и размерами символов.
Во втором и третьем режимах дисплей отображает цветную текстовую информацию.
Число строк, так же как и в режимах 0 и 1, равно 25, а число столбцов увеличено до 80. Для видеоадаптера VGA данные режимы не имеют различий.
Символы текста можно отображать в 8 основных и 8 дополнительных цветах, имеющих большую интенсивность, чем основные. Для каждого символа можно независимо задать его цвет и цвет фона. Список стандартных и дополнительных цветов представлен в табл. 3.2.
В данных режимах работы видеоадаптер VGA поддерживает 8 страниц экрана. Одна из этих восьми страниц является активной, то есть ее содержимое отображается на экране. Для изменения активной страницы можно вызвать соответствующую функцию BIOS или изменить содержимое регистра начального адреса, расположенного в контроллере электронно-лучевой трубки (ЭЛТ).
К каждой странице экрана вы можете обратиться как через функции BIOS, так и напрямую. Во втором случае процессор записывает необходимую информацию прямо в видеопамять.
Страницы видеопамяти располагаются по следующим адресам:
Страница 0 - В800:0000
Страница 2 - В800:2000
Страница 4 - В800:3000
Страница 6- В800:4000
Страница 1 - В800:1000
Страница 3 - В800:3000
Страница 5 - В800:5000
Страница 7 - В800:7000
4.	Описание программы
Демонстрационное окно программы, приведенное на рис. 27. отображает пользовательский интерфейс с выводом ASCII-кодов нажимаемых символов. Символ в увеличенном размере выводится по центру экрана в рамке.
Выход из программы по нажатии Esc.
Алгоритм программы представлен на рис. 28.
796
Приложение 1
Рис. 27. Демонстрационное окно программы
5.	Выводы
В результате работы получена демонстрационная программа со следующими параметрами:
Имя исполнительного файла:	cursor, ехе
Размер файла:	1,59 Кбайта
Число строк:	270
6.	Текст программы
stack segment stack
db 100 dup(O) stack ends data segment
table db ’0123456789ABCDEF’
mes db ’ ’,10,13,’**** LABORATORNAYA RABOTA PO KURSU IIPU #6 - SYMBOL GENERATOR-DISPLAY MODES ****’,10,13,’ ******* VARIANT: l_4_7_10 by ZAKHAROVA MARA gr.A-42 ********* ,10,13, ’’,10,13, ’i PRESS ANY KEY... i’,10,13,’i PRESS "ESC” TO EXIT i’,10,13,’$’ mes2 db ’i ASCII: h i’,10,13,’$’ char	db	?
height	dw	?
base	dw	0b800h
offs	dw	OOOOh
mask	equ 10000000b
dot	equ 177
boxl db ’ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДД1$’ box2 db ’i i$’
варианты выполнения программных заданий
797
Рис. 28
798
Приложение 1
ЪохЗ db ’АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ?’ data ends code segment begin: assume ds:data, cs:code, ss:stack
jmp start	
conv proc	
push ax	
push dx	
push ex	;преобразование
mov cl,al shr al,4 xlat mov dl,al mov ah,2 int 21h mov al,cl and al,Ofh xlat mov dl,al mov ah,2 int 21h pop ex pop dx pop ax ret conv endp draw proc mov ax, data mov ds,ax mov cx,0 mov dl,79 mov dh,24 mov al,0 mov bh, 7Oh mov ah,6 int lOh
mov ah,2	; устанавливаем курсор
mov bh,0	; видеостраница 0
mov dx,0 int lOh
mov	dx,	offset	mes
mov	ah,	9	
int	21h		
mov	ah,	2	
mov	dx,	0800h	
int	lOh		
mov	dx,	offset	mes2
mov	ah,	9	
int	21h		
mov	ah,	2	
mov	dx,	0718h	
int	lOh		
mov	dx,	offset	boxl
mov ah,9
Варианты выполнения программных заданий
79»
int 21h mov ah,2 mov dx, 0818h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 0918h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah, 2 mov dx, 0al8h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 0bl8h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 0cl8h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 0dl8h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 0el8h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 0fl8h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 1018h int lOh
mov dx, offset box2 mov ah,9 int 21h
800
Приложение 1
mov ah r 2 mov dx, 1118h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 1218h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 1318h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 1418h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 1518h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 1618h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 1718h int lOh
mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 1818h int lOh
mov dx, offset box3 mov ah,9 int 21h ret draw endp
clear proc
push ax push bx
;---Процедура очистки экрана
/устанавливаем режим
Варианты выполнения программных заданий	801
mov ah,OOh	;в ah=00h,B al=03h(видеорежим 80*25)
mov al,03h int lOh mov ax,1101h mov bl,0 int lOh
; загружен банк mov ax,1104h mov bl,OOh int lOh pop bx pop ax ret endp
;—Процедура установки невидимого курсора invisible proc Near push ax push ex mov ah,l mov ch,20h int lOh pop ex pop ax ret invisible endp
;-устанавливает курсор в заданную позицию setc proc
; bh = у ;bl = x push ax push bx push dx mov ah,02h mov dh,bh mov dl,bl mov bh,0 int lOh pop dx pop bx pop ax ret endp start: call Clear call draw readkey: call invisible
mov ah,0 8	;считываем клавишу
int 21h	
cmp al,27	
jne a2	
802
Приложение 1
jmp exit
a2:
mov char,al lea bx, table in al, 60h
mov ah, 2 mov dx, 080ah int lOh call conv
;---Выводим символ на экран
/Определяем адрес таблицы
mov	ax,1130h
mov	bh,Olh
int	lOh
mov	ax, 1104h
mov	bl,OOh
int	lOh
mov	ax, es
mov	base,ax
mov	offs,bp
mov	height,ex
mov	ax, base
mov	es, ax
mov si,offs mov al,Char
mov ex,height mul cl add si, ax
mov bh,8
mov bl,32 call setc
;по 32 байт на символ
mov сх,height Line:
mov al,es:[si] mov ah,al mov bl,8
cell: push ax and al,mask jnz Pixel
mov ah,Oeh mov al, ’ ’ int lOh
/выводим пиксел
/иначе пробел
/масштаб 1:2 по оси X
Варианты выполнения программных заданий	803
int 10b jmp NextPixel
Pixel: mov ah,Oeh mov al,dot int lOh /масштаб 1:2 no оси X int lOh
NextPixel: pop ax shl al,l dec bl jz NextLn jmp cell
NextLn: inc bh mov bl,32 call setc inc si loop Line ;---------------------------------Вывод информации на экран--
mov bh,50 mov bl,0 call setc call invisible jmp readkey
Exit: mov ax,4c00h	/вызов 4c функции 21-го прерывания
int 21h	;c параметром 0 (код выхода)
code ends end begin
Текстовый режим дисплея.
Управление сдвигами данных
1.	Цель работы
Изучение принципов вывода текстовых данных на экран, сдвигов текста, экранных страниц, переключения между страницами.
2.	Задание на лабораторную работу
Вариант задания (маршрут в графе раздела 10.13):
2	- строка символов хранится в сегменте данных;
4	- запись символов непосредственно в видеопамять;
8	- данные в виде строки символов;
12	- управление сдвигами осуществляется курсором;
14	- вертикальный сдвиг вверх;
16	- горизонтальный сдвиг назад.
804	Приложение 1
3.	Теоретическое введение
На рис. 29 представлена блок-схема видеоадаптеров VGA, отображающая связи между их основными логическими блоками.
Рис. 29. Блок- схема видеоадаптеров VGA
VGA содержат на своей плате до 256 Кбайт оперативной памяти, разделенной на четыре банка, или, другими словами, на четыре цветовых слоя. Эти банки памяти размещаются в одном адресном пространстве. Таким образом, по каждому адресу расположены четыре байта (по байту в каждом банке памяти). Какой из банков памяти используется для записи или чтения данных процессором, определяется при помощи установки нескольких регистров адаптера.
Так как все четыре банка памяти находятся в одном адресном пространстве, то процессор может производить запись во все четыре банка за один цикл записи. Благодаря этому некоторые операции, например заполнение экрана, происходят с большой скоростью. В том случае, когда запись во все четыре банка памяти нежелательна, можно запрещать или разрешать запись в отдельные слои памяти при помощи регистра разрешения записи цветового слоя.
Для операции чтения в каждый момент времени может быть разрешен только один цветовой слой. Читаемый слой определяется регистром выбора читаемого цветового слоя.
В большинстве режимов видеоадаптеров видеопамять также разделена на несколько страниц. При этом одна из них является активной и отображается на экране. При помощи функций BIOS или программирования регистров видеоадаптера можно переключать активные страницы видеопамяти. Вывод информации можно производить как в активную, так и в неактивные страницы памяти. Таким образом, можно заранее подготовить несколько страниц памяти (несколько экранов), а затем быстро сменять их на экране дисплея.
Текстовый режим
В текстовых режимах на экране могут отображаться только текстовые символы, а также символы псевдографики. Текстовые режимы работы видеоадаптеров реко
Варианты выполнения программных заданий
805
мендуется использовать всегда, когда приложению не нужно выводить на экран графическую информацию. Стандартные текстовые режимы работы видеоадаптеров позволяют вывести на экран 25 строк по 40 или 80 символов. Если перепрограммировать некоторые регистры видеоадаптера, то можно увеличить число отображаемых для VGA до 50. Для кодирования каждого знакоместа экрана (символа) используются два байта. Первый из них содержит ASCII-код отображаемого символа, а второй - атрибуты символа. ASCII-коды символов экрана располагаются в нулевом цветовом слое, а их атрибуты - в первом цветовом слое (рис. 30).
Рис. 30. Структура видеопамяти в текстовых режимах
Атрибуты определяют цвет символа и цвет фона. Благодаря такому режиму хранения информации достигается значительная экономия памяти. При отображении символа на экране происходит преобразование его из формата ASCII в двумерный массив пикселов, выводимых на экран. Для этого преобразования используется таблица трансляции символов (таблица знакогенератора).
Данная таблица знакогенератора хранится во втором слое видеопамяти (рис. 31).
Рис. 31. Преобразование кода ASCII в образ символа на экране
При непосредственном доступе к видеопамяти нулевой и первый цветовые слои отображаются на общее адресное пространство. При этом происходит чередование байтов из нулевого и первого слоев. Коды символов имеют четные адреса, а их атрибуты - нечетные (рис. 32).
806
Приложение 1
Рис. 32. Отображение цветовых слоев
на экране дисплея отображаются символы заданные в нулевом цветовом слое видиопамяти
Во втором и третьем режимах дисплей отображает цветную текстовую информацию.
Число строк, так же как и в режимах 0 и 1, равно 25, а число столбцов увеличено до 80.
В качестве дисплея могут использоваться цветной дисплей (CD), улучшенный цветной дисплей (ECD), дисплей VGA, а также некоторые многочастотные дисплеи с разрешением 25 строк и 80 столбцов. Для отображения каждого символа используется матрица 8 Г 8 пикселов, что соответствует низкому качеству изображения (можно различить отдельные пикселы, из которых состоит символ).
Символы текста можно отображать в 8 основных и 8 дополнительных цветах, имеющих большую интенсивность, чем основные. Для каждого символа можно независимо задать его цвет и цвет фона. Список стандартных и дополнительных цветов представлен в табл. 3.2.
В данных режимах работы видеоадаптеры EGA и VGA поддерживают 8 страниц экрана. Исключение составляют конфигурации, в которых EGA имеет только 64 К видеопамяти. В этом случае EGA поддерживает лишь 4 страницы.
Одна из этих восьми страниц является активной, то есть ее содержимое отображается на экране. Для изменения активной страницы можно вызвать соответствующую функцию BIOS или изменить содержимое регистра начального адреса, расположенного в контроллере электронно-лучевой трубки (ЭЛТ).
К каждой странице экрана вы можете обратиться как через функции BIOS, так и напрямую. Во втором случае процессор записывает необходимую информацию прямо в видеопамять.
Страницы видеопамяти располагаются по следующим адресам:
Страница 0 - В800:0000
Страница 2 - В800:2000
Страница 4 - В800:3000
Страница 6 - В800:4000
Страница 1 -В800:1000
Страница 3 - В800:3000
Страница 5 - В800:5000
Страница 7 - В800:7000
Функция 1 Oh предоставляет возможность программирования регистров цветовой палитры, таблицы цветов (VGA), а также управляет некоторыми атрибутами символов.
Варианты выполнения программных заданий
807
Для EGA эта функция содержит следующие четыре подфункции:
Номер подфункции	Назначение
0	Программирование одного регистра палитры
1	Программирование регистра цвета рамки
2	Программирование всех регистров палитры (таблицы цветов)
3	Управление атрибутом мигания и атрибутом интенсивности
VGA поддерживает дополнительно еще 10 подфункций:
Номер подфункции	Назначение
7	Чтение одного регистра палитры
8	Чтение регистра цвета рамки
9	Чтение всех регистров палитры
10h	Программирование одного регистра ЦАП
12h	Программирование нескольких регистров ЦАП
13h	Выбор подмножества цветов
15h	Чтение одного регистра ЦАП
17h	Чтение нескольких регистров ЦАП
1Ah	Чтение состояния страницы цветов
1Bh	Преобразование регистров ЦАП для работы в монохромном режиме
4.	Описание программы
Программа с несложным интерфейсом реализует перемещение текста, заранее определенного в области данных программы и занесенного в видеопамять адаптера (рис. 33). Перемещения организуются путем уменьшения или увеличения
Рис. 33
808
Приложение 1
смещения относительно начала видеопамяти. Здесь отображается нулевая страница видеопамяти, следовательно, базовый адрес - 0В800:0000. По заданию в программе выполняются только сдвиги вниз и влево. Надпись ограничена заголовком сверху, снизу, справа и слева - границами окна. Выход из программы - клавиша Esc.
Алгоритм программы представлен на рис. 34.
НАЧАЛО
т
Рис. 34
Варианты выполнения программных заданий
809
5.	Выводы
В результате работы получена демонстрационная программа со следующими параметрами:
Имя исполнительного файла:
Размер файла:
Число строк:
text.exe 1,24 Кбайта 473
6.	Текст программы
stack segment stack db 100 dup(0) stack ends data segment hb dw 10 seg dw 0b849h
mes db ’ 'ДОДЗ, ******* LABORATORNAYA RABOTA PO KURSU IIPU #7 - TEXT MODES_SHIFT CONTROL ******* Д0ДЗ, * ******* VARIANT: 2_4_8_12_14_16 by ZAKHAROVA MARA gr.A-42 ********'д0ДЗ, ''Д0ДЗ,* I "ESC" TO EXIT | "<,V" MOVE |’Л10Л13Л’$’ textline db ’ Message is stored at video memory ’ data ends code segment begin: assume ds:data, cs:code, ss:stack mov ax, data mov ds, ax jmp start draw proc mov ax, data mov ds rax mov cx,0 mov dl,7 9 mov dh,2 4 mov al,0 mov bh, 7Oh mov ah,6 int lOh mov ah,2	; устанавливаем курсор
mov bh,0	; видеостраница 0
mov dx,0 int lOh mov bh,70h mov dx, offset mes mov ah,9 int 21h MOV AH,1 MOV Ch,2Oh int lOh ret draw endp
810
Приложение 1
out_str	proc
cli	
push	ax
push	bx
push	ex
push	dx
push	si
push	es
push	ax
xor	ex, ex
mov	es, ex
mov	al,es:[462h]
cbw	
shl	al,l
mov	si, ax
mov	ex,es:[si+450h]
mov	al, ch
mov	dl,160
mul	dl
mov	si, ax
mov	al, cl
cbw	
shl	ax, 1
add	si, ax
add	si,es:[44eh]
mov	ax,seg
mov	es, ax
pop	ax
outl: mov	al,ds:[bx]
cmp	al,0
je	quit
mov	es: [si],ax
inc	si
inc	si
inc	bx
jmp	short outl
quit: pop	es
Pop	si
Pop	dx
Pop	ex
Pop	bx
Pop	ax
sti	
ret	
out_str endp	
start:	
call draw	
11:mov bx,	offset textline
mov ah, 7Oh	
call out str	
readkey:	
mov ah,08	;считываем
int 21h	
cmp al, 27	
-jne down	
клавишу
Варианты выполнения программных заданий
811
jmp exit down:
cmp al, 5Oh jne left
cmp seg, 0b895h ja readkey
mov dx, word ptr seg mov ax, word ptr hb add dx,ax
mov word ptr seg,dx jmp 11 lef t:
cmp al, 4bh jne readkey
cmp seg,0b8 OOh je readkey dec seg jmp 11 Exit:
mov ax,4c00h int 21h
code ends end begin
/вызов 4c функции 21-го прерывания ;c параметром 0 (код выхода)
Графический режим дисплея
1. Цель работы
Использование заданного графического режима, представление на экране требуемого графического изображения.
2. Задание на лабораторную работу
Вариант задания определяется маршрутом в графе раздела 10.14 книги:
4 - номер графического режима 13h;
8 - вид изображения «-»;
10 - частичный сдвиг;
13 - вертикальный сдвиг в обе стороны;
16 - горизонтальный сдвиг в обе стороны.
3. Теоретическое введение
Видеорежим 13h наиболее прост по сравнению с остальными режимами при отображении данных в видеопамять. Пикселы представлены в видеопамяти как массив байтов в двух измерениях, отдельный байт для каждого пиксела. Массив байтов начинается в левой верхней точке экрана и простирается через вершину экрана на 320 байтов. Следующий байт относится к самой левой точке во второй линии экрана и т. д. Последний байт задает цвет нижней правой точки экрана. Байт для кодирования пиксела нужен для того, чтобы отображать 256 различных цветовых индексов.
В режиме 13h каждый цветовой номер задает цвет напрямую. Вместо этого он определяет номер индекса в таблице цветов (палитре). Каждая запись в палитре состоит из трех отдельных значений (0-63), известных как RGB (red, green, blue). Запись О в цветовой палитре устанавливает цвет фона экрана.
812
Приложение 1
Полезность палитры в том, что можно создать 262,144 различных цвета (64 Г 64 Г 64). Однако только 256 различных цветов могут быть отображены на экране одновременно.
Используя интенсивность свечения, можно получить черный цвет, если интенсивность всех трех компонент (RGB) установить в О. Белый цвет получают установлением всех компонент в 63 (максимум).
Можно также получить градации серого. Примеры цветов - в табл. 5.
Таблица 5			
Красный	Зеленый	Синий	Цвет
0	0	0	Черный
20	20	20	Темно-серый
35	35	35	Средне-серый
50	50	50	Светло-серый
63	63	63	Белый
3.	Описание программы
В качестве творческого варианта задание было изменено: изображение выполнено в виде окружности разных цветов. Передвижение изображения осуществляется полностью, с помощью клавиш управления курсором. При запуске программы появляется окно (рис. 35).
(3	-|о|м|
-- LABORATORNAVA НАВОТА РО KURSU 1IPU 18 - GRAPHIC MODE ****** ммхмммм U ARI ANT: 4_8_1Л_13_16 by AKHAROUA MARA gr.A-42	******
I ’’ESC" TO EXIT I "<,U,>,A" MOUE I
AFTER YOU PRESS ANY KEY THE PROGRAM WILL DEMONSTRATE THE GRAPHIC MODE 13H
YOU CAN USE CURSOR CONTROL KEYS TO MOUE THE OBJECT
PRESS ESC TO QUIT GRAPHIC MODE
Рис. 35
По нажатии любой клавиши происходит переход в графический режим. Для выхода из демонстрационного режима надо нажать клавишу Esc. После этого появится первое окно в текстовом режиме.
Варианты выполнения программных заданий	813
4.	Выводы
В ходе работы получены навыки программирования в графическом режиме 13h. Разработана программа со следующими параметрами:
Имя исполнительного файла:	graph.exe
Размер файла:	2,38 Кбайта
Число строк:	441
5.	Текст программы
stack segment db 100 dup(0) stack ends data segment i db 0 x dw 150 у dw 97
mes db ’ ’,10,13,’****** LABORATORNAYA RABOTA PO KURSU IIPU #8 - GRAPHIC MODE ******’,10,13,’ *******
VARIANT: 4_8_10_13_16 by ZAKHAROVA MARA gr.A-42
********* IQ 13 ’	’ io 13 ’
I "ESC" TO EXIT | "<,V,>,A" MOVE |',10,13,’$’
boxi db ’ ЪД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД ДДД i $’
box2 db 'i	i$’
ЬохЗ db 'АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ$’
mesl db ' MES2 DB ' MES3 DB ’ MES4 DB ’ MES5 DB ' MES6 DB ’ MES7 DB ' data ends code segment begin: assume ds:data, cs:code, mov ax, data mov ds, ax jmp start draw proc mov ax,0003h int lOh mov cx,0 mov dl,79 mov dh,24 mov al,0 mov bh, lBh mov ah,6 int lOh mov ah,2 mov bh,0 mov dx,0	AFTER YOU PRESS ANY KEY$’ THE PROGRAM WILL DEMONSTRATES’ THE GRAPHIC MODE 13H$’ YOU CAN USE CURSOR CONTROLS’ KEYS TO MOVE THE OBJECTS’ PRESS ESC TO QUITS’ GRAPHIC MODES’ ss :stack ; устанавливаем курсор ; видеостраница 0
814
Приложение 1
int	lOh	
mov	dx, offset	mes
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, 070ah	
int	lOh	
mov	ah, 9	
mov	dx, offset	boxl
int	21h	
mov	ah, 2	
mov	dx, 080ah	
int	lOh	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, 090ah	
int	lOh	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, OaOah	
int	lOh	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, ObOah	
int	lOh	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, OAOCh	
int	lOh	
mov	dx, offset	MES1
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, OcOah	
int	lOh	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, OBOCh	
int	lOh	
mov	dx, offset	MES2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, OdOah	
int	lOh	
Варианты выполнения программных заданий
815
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, OCOCh	
int	lOh	
mov	dx, offset	MES3
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, OeOah	
int	lOh	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, OfOah	
int	lOh	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, OfOCh	
int	lOh	
mov	dx, offset	MES4
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, lOOah	
int	lOh	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, lOOCh	
int	lOh	
mov	dx, offset	MES5
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, llOah	
int	lOh	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, 120ah	
int	lOh	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	ah, 2	
mov	dx, 130ah	
int	lOh	
mov	dx, offset	box2
816
Приложение 1
mov ah,9 int 21h mov ah,2 mov dx, 130Ch int lOh mov dx, offset MES6 mov ah,9 int 21h mov ah,2 mov dx, 14Oah int lOh mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 14OCh int lOh mov dx, offset MES7 mov ah,9 int 21h mov ah,2 mov dx, 150ah int lOh mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 160ah int lOh mov dx, offset box2 mov ah,9 int 21h mov ah,2 mov dx, 170ah int lOh mov dx, offset box3 mov ah,9 int 21h mov ah,l mov	ch,2 Oh
int lOh ret draw endp addr proc	; процедура считает адрес пиксела
mov сх,320 mov ах,у mul сх mov сх,х add ах, сх mov bx,ах ret addr endp clear proc	; очистка экрана
mov bx,0 11:
817
варианты выполнения программных заданий
mov byte ptr es:[bx],0 inc bx cmp bx,0fa00h jne 11 ret clear endp fig proc
; рисование цветной окружности call addr mov byte ptr es:[bx],0fh mov i,0 11:inc у inc i call addr mov byte ptr es:[bx],0fh cmp i, 6 jne 11 call addr mov byte ptr es:[bx],0fh inc x inc у call addr mov byte ptr es:[bx], Oeh inc у call addr mov i, 0 mov byte ptr es:[bx], Oeh 12:inc x inc у inc i call addr mov byte ptr es:[bx],0eh cmp i, 4 jne 12 call addr mov byte ptr es:[bx], Oeh inc x call addr mov byte ptr es:[bx], Oeh inc x inc у call addr mov i,0 mov byte ptr es:[bx],0dh 13:inc x inc i call addr mov byte ptr es:[bx], Odh cmp i, 8 jne 13 call addr mov byte ptr es:[bx],Odh inc x dec у call addr
818
Приложение 1
mov byte ptr es:[bx],0dh inc x call addr mov 1,0
mov byte ptr es:[bx],0dh 14:inc x dec у inc i call addr
mov byte ptr es:[bx],0ch cmp i,4 jne 14 call addr
mov byte ptr es:[bx],0ch dec у call addr
mov byte ptr es:[bx],0ch inc x dec у call addr
mov i,0
mov byte ptr es:[bx],0bh 15:dec у inc i call addr
mov byte ptr es:[bx],0bh cmp i,6 j ne 15 call addr
mov byte ptr es:[bx],0bh dec x dec у call addr
mov byte ptr es:[bx],0ah dec у call addr mov i,0
mov byte ptr es:[bx],0ah 16:dec x dec у inc i call addr
mov byte ptr es:[bx],0ah cmp i,4 jne 16 call addr
mov byte ptr es:[bx],09h dec x call addr
mov byte ptr es:[bx],09h dec x dec у call addr mov i,0
Варианты выполнения программных заданий	819
mov byte ptr es:[bx],09h 17:dec x inc i call addr mov byte ptr es:[bx],09h cmp i, 8 jne 17 call addr mov byte ptr es:[bx],05h dec x inc у call addr mov byte ptr es:[bx],05h dec x call addr mov i, 0 mov byte ptr es:[bx],05h 18:inc у dec x inc i call addr mov byte ptr es:[bx],06h cmp i, 4 jne 18 call addr mov byte ptr es:[bx],06h inc у call addr mov byte ptr es:[bx],06h dec x inc у ret fig endp start:	/ основная программа
call draw mov ah,08	/считываем клавишу
int 21h cmp al,27 jne GM jmp exit
GM:	; переход в графический режим
mov ax,0013h int lOh mov ax,0a000h mov es,ax call fig readkey: mov ah,08	/считываем клавишу
int 21h cmp al,27 je start cmp al, 4bh	/ далее - управление движением объекта
je left cmp al, 4dh
820
Приложение 1
je right cmp al, 4 8h je up
cmp al, 5Oh je down jmp readkey left: cmp x,l je readkey call clear dec x call fig jmp readkey right: cmp x,2 99 je readkey call clear inc x call fig jmp readkey up: cmp y,8 je readkey call clear dec у call fig jmp readkey down: cmp y,186 je readkey call clear inc у call fig jmp readkey Exit:
mov ax,4c0 Oh
int 21h code ends end begin
/вызов 4c функции 21-го прерывания ;с параметром 0 (код выхода)
Программирование контроллера НЖМД
1. Цель работы
Изучить принцип работы жесткого диска с учетом программирования портов его контроллера. Разработать программу для демонстрации работы с регистрами контроллера.
2. Задание на лабораторную работу
Вариант задания определяется маршрутом в графе раздела 14.12 книги.
Программа должна выполнять:
4 - чтение сектора № 4;
7 - команду чтения состояния:
10 - чтение и вывод содержимого регистра состояния.
Варианты выполнения программных заданий	821
3.	Теоретическое введение
Собственно контроллер накопителя физически расположен на плате электроники и предназначен для обеспечения операций преобразования и пересылки информации от головок чтения/записи к интерфейсу накопителя. Контроллер жестких дисков представляет собой сложное устройство, содержащее процессор, ОЗУ и ПЗУ, схемы ввода/вывода и т. п. Однако в большинстве случаев производители размещают их в одном или двух микрочипах.
Контроллер занимается множеством операций преобразования потока данных. Так как длина дорожек неравна, то данные на различные дорожки необходимо записывать неравномерно. Это становится проблемой, по сравнению с гибкими дисками, для носителей с высокой плотностью записи (число дорожек- более 1000). Простые контроллеры, как правило, записывают одно и то же количество информации на каждую дорожку, независимо от ее длины. Для этого контроллер упаковывает данные более плотно, начиная с определенной по счету дорожки. Цилиндр, с которого начинается более плотная упаковка данных, называется цилиндром начальной прекомпенсации (Starting Cylinder for Precompensation - SCP).
Многие производители создают устройства, которые записывают различный объем информации на внутренние и внешние дорожки за счет размещения на них разного числа секторов. Но, как правило, накопители имеют различное физическое и логическое число цилиндров.
Данные, записываемые в сектора, защищаются от некоторых ошибок чтения/записи при помощи расчета и записи вместе с ними контрольной суммы -кода контроля ошибок (Error Correction Code - ЕСС). Записывая байты на диск, адаптер производит накопление циклическим делением входных данных на специальный полином, остатка от деления, который представляет уникальную комбинацию бит и записывается контроллером вместе с данными. Число байт ЕСС для каждого устройства определяется видом используемого полинома. При считывании данных производятся аналогичное накопление и расчет контрольной суммы. В случае несовпадения результатов рассчитываемого и хранимого с данными ЕСС производится попытка восстановления - коррекции данных при помощи полинома, имеющихся данных и контрольной суммы. Число байт данных, которое может быть скорректировано, определяется порядком используемого полинома. Чем она выше, тем большее количество байт подряд может быть скорректировано, но тем длиннее и сам код ЕСС. Используются разные полиномы, и число байт ЕСС может быть от 4 до 8 и более. Число же бит информации, требуемое для записи одного байта, зависит от используемого метода кодирования. Необходимо отметить, что восстановление данных при помощи полинома и кода ЕСС происходит на уровне контроллера и прозрачно для программ и пользователя, однако на основе процедур BIOS программным путем можно получить информацию о том, была ли произведена процедура коррекции.
4.	Описание программы
В программе используются следующие регистры КНЖМД:
IFOh - регистр данных, откуда читается информация;
lF2h - регистр счетчика секторов, в нашем случае обнулен, так как читаем один сектор;
lF3h - регистр, задающий номер сектора;
822	Приложение 1
lF4h - регистр, содержащий младший байт номера цилиндра;
lF5h - регистр, содержащий старший байт номера цилиндра;
3F6h - регистр управления, которым можно запретить прерывание, сбросить КНЖМД и разрешить выбор головки;
lF7h - регистр команд, куда записываются команды, в данном случае - команда 2 lh (чтение сектора). В режиме чтения этот регистр является регистром состояния, из битов которого можно определить наличие ошибок, обнаружить операции обмена, завершение поиска, неисправность, готовность диска, занятость и др.
Содержимое всех этих регистров наглядно изображено в программе. При запуске ее появляется окно (рис. 36).
LABORATORNAYA RABOTA РО KIIRS U I iPU В1в - HARD DISK DRIUE UARIANT: 4_7_lw by ZAKHAROUA HARA gr.fi 42	----
I "1" - Read Sector 4 I ”2” - Read State register I "3" - Reset Ports view *
IFSh — It of Cylinder High byte
lF4h - It of Cylinder Low byte
lP3h - It of Sector
а	1.	" 1		aJ		ul
lF2h - Sector counter register
0 | И | Ml | to | to | H | to | и lF7h - Command register
3P6h - Control Register
| Port IFHh:
Port lF2h:
Port lF7h:
Рис. 36
Управление осуществляется клавишами 1, 2, 3, Esc.
Чтобы прочитать четвертый сектор, необходимо нажать 1. При этом в регистре номера сектора загорается бит, указывающий на четвертый номер сектора, в регистре команд - код 21 h, соответствующий команде чтения без повторения. Считанный с этого места байт выводится в позиции регистра данных (Port IFOh)-рис. 37.
Прочитать состояние НЖМД можно по нажатии клавиши 2.
После чего показывается содержимое значащих разрядов регистра управления, которые означают запрет прерывания, разрешение выбора головки и сброс контроллера. Внизу выводится содержимое регистра состояния, равное 50h, что говорит о завершении операции поиска и готовности диска к чтению, записи и поиску.
Варианты выполнения программных заданий	823
Рис. 37
Значения битов сбрасываются после нажатия 3. Выход из программы - клавиша Esc (рис. 38).
Алгоритм программы представлен на рис. 39.
«**«»> LADORATORNAVA RABOTA РО KURSU IiPU «10 - HARD DISK DRIVE ****** ******* VARIANT: 4_7_10 by ZAKHAROVA MARA gr.A-42	•«.«.<.****
I *’!*’ - Read Sector 4  "2" — Read State register • ”3” - Reset Ports view |w|(j[i!i|a|e)|ti|<j|b|	| a | t | и [ в | м | w | ~hi | mi |
lF5h - It of Cylinder High byte	lF4h - It of Cylinder Low byte
I I ч I н I «> I 1 | и [~й~| |в|»|ц|м|о|в|врг] lF3h - I of Sector	lF2h - Sector counter register
Ix Ix Ix Ix 1111 11 ГЛ Iв H h I«I«I»I  ГП 3F6h - Control Вея1з«ег	lF7h - Command register
I Port IFAh: 68h I I Port lF2h: Mh I I Port lF7h:	5Oh I
Рис. 38
824
Приложение 1
: Занести в регистр команд 2 lh
Прочитать значение из регистра данных
f
П реобразова н ие шестнадцатеричного значения в символьный вид ----------I-----------
______ г __________
Вывод на экран значения регистра
Рис. 39
Варианты выполнения программных заданий	825
5.	Выводы
В ходе работы была получена демонстрационная программа работы с регистрами контроллера НЖМД. Получены знания в области программирования данного устройства, о различных методах программирования.
Параметры полученной программы:
Имя исполнительного файла:	hdd.exe
Размер файла:	2,13 Кбайта
Число строк:	273
6.	Текст программы
stack segment db 100 dup(0) stack ends
data segment
table db ’0123456789ABCDEF’ mes db
t	—t 23 *******
LABORATORNAYA RABOTA PO KURSU liPU #10 - HARD DISK DRIVE ******’,10,13/ ******* VARIANT: 4_7_10 by ZAKHAROVA MARA gr.A-42 ********',10,13,
’’ до,13, ’ | "1" - Read Sector 4 | "2" - Read State register | "3" - Reset Ports view I ’,10,13,10,13, ’$’
boxl db ’ ЪШШ^Д1ЩВД1ЩВДЦЩД1ЩВД1Щ1 ^ЛДЖЛЛЖЛЛЖЛЛ.ЛВДЛ.ЛВДЛ.ЛВДЛ.ЛВД.ЛДТ ’,10,13,’$’ box2 db’iOiOiOiOiOiOiOiOiiOiOiOiOiOiOiOiO i’,10,13, ’$’ box3 db ’ АЛЛЖЛЛЖЛЛЖЛЛЖЛЛ.ЛВДЛ.ЛВДДЛВДЛЛП. ?\^Л№Л№Л№Л№Л№Л№ЛШ1?П’, 1 0,1 3, ’ $ ’ box4 db ’ lF5h - # of Cylinder High byte lF4h - # of Cylinder Low byte’,10,13,10,13,’$’ box5 db ’ lF3h - # of Sector lF2h - Sector counter register’,10,13,10,13,’$’ box6 db ’ 3F6h - Control Register lF7h - Command register’,10,13,10,13,’$’ box7 db ’ ’ьлдддддддддддддддддт ълдддддддддддддддддт тлллдддддддддддддддт’, i о, i з,’$’ box8 db ’ i Port IFOh: i i Port lF2h: i i Port lF7h: i’,10,13,’$’ box9 db ’ АД1ЩШЩШЩШЩШЩДДШ АД1ЩШЩШЩШЩШЩДДШ	’
data ends code segment begin: assume ds:data, cs:code, ss:stack mov ax, data mov ds,ax jmp start
;процедура прорисовки интерфейса draw proc mov ah,2 mov dx, 0 int lOh mov dx, offset mes /выводим заголовок с информацией о работе mov ah,9 int 21h mov dx, offset boxl /выводим рамки для изображения регистров mov ah,9 int 21h mov dx, offset box2 mov ah,9 int 21h
826
Приложение 1
mov	dx, offset	box3
mov	ah, 9	
int	21h	
mov	dx, offset	box4
mov	ah, 9	
int	21h	
mov	dx, offset	boxl
mov	ah, 9	
int	21h	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	dx, offset	box3
mov	ah, 9	
int	21h	
mov	dx, offset	box5
mov	ah, 9	
int	21h	
mov	dx, offset	boxl
mov	ah, 9	
int	21h	
mov	dx, offset	box2
mov	ah, 9	
int	21h	
mov	dx, offset	box3
mov	ah, 9	
int	21h	
mov	dx, offset	box6
mov	ah, 9	
int	21h	
mov	dx, offset	box7
mov	ah, 9	
int	21h	
mov	dx, offset	box8
mov	ah, 9	
int	21h	
mov	dx, offset	box9
mov	ah, 9	
int	21h	
mov	ah, 1	f
mov	ch,20h	
int	lOh	
прячем курсор, чтобы не
мигал
процедура
для изменения
бита регистра номера сектора
ret
draw endp rsbits proc
mov ah,	9
mov dl,	’1'
mov bl,	lbh
mov ex,	1
int lOh ret rsbits	endp
combits	proc
mov dx,	lf7h
mov al,	21h
out dx,	al
процедура заносим в
для изменения регистр команд код 21
битов регистра команд
Варианты выполнения программных заданий	827
mov ah,9 mov al,’1’ mov cx,l mov bl,lbh int lOh mov ah,2 mov dx, 1447h int lOh mov ah,9 mov al,’1 ’ int lOh ret combits endp stbits proc
		; процедура для отображения содержимого	регистра	состояния
lea bx, table mov dx, lf7h in al,dx call conv mov dl,’h* mov ah,2 int 21h ret stbits endp contrbits proc		; читаем регистр ; преобразуем и выводим ; процедура для отображения изменения битов	регистра	управления
mov mov int mov mov mov mov int mov mov int mov mov int mov mov int mov mov int mov mov int mov mov int mov mov int mov mov	dx,1407h ah, 2 lOh ah, 9 al, ’X’ bl, lbh ex, 1 lOh dx,140bh ah, 2 lOh ah, 9 al, ’X’ lOh dx,140fh ah, 2 lOh ah, 9 al, ’X’ lOh dx,1413h ah, 2 lOh ah, 9 al, ’X’ lOh dx,1423h ah, 2 lOh ah, 9 al, ’X’	; выводим х в позициях неиспользуемых разрядов ; делаем биты зеленого цвета ; установка курсора		
828	Приложение 1
int lOh 1 mov dx,1417h mov ah,2 int lOh mov ah,9 mov al, ’1’	; единички в значащих разрядах
int lOh mov dx,141bh mov ah,2 int lOh mov ah,9 mov al, ’1’ int lOh mov dx,141fh mov ah,2 int lOh mov ah,9 mov al, ’1* int lOh ret contrbits endp conv proc mov cl,al	; процедура преобразования содержимого регистров ; в текстовый вид для вывода на экран ; копируем данные в cl
shr al,4	; сдвигаем вправо содержимое, чтобы обработать старшую
xlat	; тетраду al ; преобразуем эту тетраду в символьное значение
mov dl,al	; в шестнадцатеричном коде ; выводим преобразованный символ
mov ah,2 int 21h mov al,cl	; возвращаем значение регистра
and al,0fh	; чтобы теперь преобразовать младшую тетраду
xlat	; преобразуем эту тетраду в символьное значение
mov dl,al mov ah,2	; в шестнадцатеричном коде ; выводим преобразованный символ
int 21h ret conv endp start: call draw	; начало основной программы ; вызов процедуры прорисовки интерфейса
readkey: mov ah,08	; считываем клавишу
int 21h cmp al,27	; если нажата esc. то выход из программы
je exit cmp al, 31h	; клавиша 1 — переходим на метку 1
j e 11 cmp al, 32h	;клавиша 2 — на метку 2
je 12 cmp al,33h	; клавиша 3 — на метку 3
j e 13 jmp readkey	; если ничего не нажато, то ждем нажатия
Варианты выполнения программных заданий
829
11: mov al, 4	; заносим в регистр номера сектора 4
mov dx, lf3h out dx,al mov ah,2	; установка курсора в положение бита регистра номера сектора
mov dx, Oflbh int lOh call rsbits	/вызов процедуры изменения этого бита
mov ah,2 mov dx, 1433h int lOh call combits	; вызов процедуры изменения битов регистра команд
mov ah,2 mov dx, 192dh int lOh mov dx, lf2h	; читаем регистр счетчика секторов
in al,dx lea bx, table	; настраиваемся на таблицу преобразования
call conv	; вызов процедуры преобразования
mov dl, ’h*	; выводим обозначение hex
mov ah,2 int 21h mov ah,2	; установка курсора в положение регистра данных
mov dx, 1914h int lOh mov dx, IfOh	/читаем регистр данных
in al,dx lea bx, table	/ преобразуем в символьный вид и выводим
call conv mov dl, ’h* mov ah,2 int 21h jmp readkey	/ ждем нажатия клавиши
12:	/ установка курсора в положение регистра состояния
mov ah,2 mov dx, 1945h int lOh call stbits	/ выводим содержимое регистра состояния
call contrbits	/ прорисовываем разряды регистра управления
jmp readkey 13:call draw jmp readkey	/ ждем нажатия клавиши
Exit:	/выход из программы
mov ax,4c00h	/вызов 4с функции 21-го прерывания
int 21h	/с параметром 0 (код выхода)
code ends end begin
Литература
1.	Справочник программиста на ПК IBM.htm
2.	Vcl_ru.htm
3.	Video Cards.htm
Проверочные вопросы к базовым темам
Тип 1. Необходимо выбрать один или несколько правильных ответов, например, 2, 4:
1.1.	Укажите тип сигнала прерывания клавиатуры IRQ 1:
1)	внутренний немаскируемый;	3) внешний маскируемый;
2)	внешний немаскируемый;	4) программный.
1.2.	Адаптер содержит четыре порта: РДВв1, РДВыв 1, РДВв2, РДВыв2. Назовите оптимальное число младших разрядов адреса, необходимое для выбора этих портов:
1)А0;	2)А0-А1;	3)А0-А2;	4) АО-АЗ.
1.3.	В контроллере содержатся следующие адресные регистры: управления РУ (W), состояния PC (R), режима РР (W), адреса РА (W), данных РД (W/R). Операции доступа к портам имеют обозначения: W - запись, R- чтение, W/R- запись/ чтение. Выбрать оптимально адреса портов из заданного резерва:
1)ЗССН:	2) ЗС8Н:	3) 3CDH:	4) ЗСЕН:
5) 3CFH;	6) ЗС9Н;	7) ЗСАН;	8) ЗСВН.
1.4. Назовите устройства, устанавливающие бит флага готовности регистра состояния:
1) процессор; 2) адаптер; 3) периферийное устройство.
1.5. Установка бита разрешения прерывания в регистре состояния адаптера осуществляется следующим устройством:
1) процессором;	2) периферийным устройством;
3) адаптером;	4) памятью.
1.6. Если в регистре состояния бит флага готовности ввода равен 1, то это указывает на следующее состояние регистра:
1) регистр данных вывода пуст;	3) регистр данных ввода полон;
2) регистр данных ввода пуст;	4) регистр данных вывода полон.
Проверочные вопросы к базовым темам
1.7.	Назовите условие освобождения шины контроллером прямого доступа:
1)	сброс сигнала HRQ;
2)	формирование сигнала HLDA;
3)	сброс сигнала DACK N:
4)	сброс сигнала MEMR.
1.8.	Назовите назначение сигнала I/O CH RDY шины ISA:
1)	квитирование:	3) готовность принтера:
2)	удлинение цикла шины;	4) готовность процессора.
1.9.	Назовите информацию, передаваемую клавиатурой в контроллер:
1)	код ASCII: 2) расширенный код: 3) скэн-код: 4) байт данных.
1.10.	Укажите вид информации, хранимой в буфере клавиатуры, соответствующей специальным клавишам (F1-F10):
1)	1-й байт-ASCII:
2)	1 -й байт - 0;
3)	1 -й байт - номер расширенного кода;
4)	2-й байт - номер расширенного кода.
1.11. Назовите клавиши, информация которых не помещается в буфер клавиатуры:
1) Ins; 2) NumLock; 3) Del; 4) CapsLock; 5)F10;	6) ScrollLock.
1.12.	Дайте определение скэн-коду:
1)	код ASCII;	3) расширенный код;
2)	порядковый номер; 4) циклический код.
1.13.	Назовите код, генерируемый клавишей Enter:
1)	расширенный код; 2) ASCII 13;	3) ASCII 27;	4) ASCII 10.
1.14.	Перечислите типы клавиш, применяемых в клавиатуре:
1)	ультразвуковые;	2) контактные;	3) емкостные;
4) индукционные;	5) сенсорные.
1.15.	Укажите информацию, хранимую в банках видеобуфера VGA в текстовом режиме:
1)	банк 0 - атрибутные байты;
2)	банк 0 - коды символов;
3)	банк 3 - шрифты символов;
1.16.	Назовите количество страниц экранного текста, которое содержится в видеопамяти емкостью 16 Кбайт для текстового режима работы 80x25:
1)1;	2)2;	3)4;	4)8.
1.17.	Назовите наибольшее количество первичных (базовых) цветов, которые можно одновременно наблюдать на экране монитора VGA:
1) 64;	2) 512;	3) 256;	4) 128.
1.18. Укажите способы регистрации, используемые в принтерах безударного действия:
1)	магнитострикционные;
2)	электромагнитные;
3)	термические;
4)	банк 2 - шрифты символов;
5)	банк О - коды пикселов;
6)	банк 1 - коды атрибутов.
4)	емкостные;
5)	лазерные:
6)	струйные.
832	Приложение 2
1.19. Укажите типы знакогенераторов принтеров:
1) загружаемые; 2) текстовые; 3) встроенные; 4) кассетные.
1.20. Выберите регистры, используемые в адаптере для передачи информации в принтер:
1) состояния; 2) данных;	3) управления; 4) режима.
1.21. Выбрать сигналы для входов -CS и Т (направление передачи), необходимые для управления приемопередатчиком АП6:
1J-IOW; 2)-IOR; 3)-Выбор ВУ;	4)AEN.
1.22. Адрес регистра управления адаптера принтера - 379Н. Укажите входные сигналы, участвующие в формировании сигнала «Запись в регистр управления»:
1J-IOR;	2)-IOW;	3)-Выбор PRN;	4)-А0;
5) АО;	6)-А1;	7)А1.
1.23.	Назовите методы кодирования данных при записи их на диск:
1)	MFT; 2) MFM:	3) RLL:	4) MNR
1.24.	Укажите типы адресных меток (AM):
1)	AM сектора;	4) AM идентификатора;
2)	AM индекса;	5) AM данных;
3)	AM дорожки:	6) AM без данных.
1.25.	Назовите порты (адресуемые регистры) контроллера НГМД, микросхемы 18272:
1)	регистр управления;
2)	регистр основного состояния;
3)	регистр входных/выходных данных;
4)	регистр состояния ST3.
1.26.	Перечислите в установленной очередности байты команды Поиска цилиндра контроллера гибкого диска:
1)	байт номера сектора;
2)	байт кода операции;
3)	байт номера цилиндра;
4)	байт номеров магнитной головки (МГ) и накопителя;
5)	байт номера МГ.
1.27.	Назовите назначение схемы предкомпенсации контроллера гибкого диска:
1)	формирование сигналов «Окно данных»;
2)	управление плотностью записи данных;
3)	выбор накопителя и пуск его мотора.
1.28. Перечислите типы интерфейсов жестких дисков:
1) QPIB; 2) SCSI; 3) САМ АС;	4) IDE.
1.29. Физический принцип, используемый при записи информации на CD-ROM:
1)	интерферометрический;
2)	выжигание;
Проверочные вопросы к базовым темам	833
3)	индукционный;
4)	создания непрозрачных пузырьков;
5)	магнитооптический.
1.30.	Перечислить аппаратные средства, используемые в качестве устройств связи в вычислительных системах:
1)	модем;	3) моноканал;
2)	общая системная шина;	4) коммутационное устройство.
1.31.	Определить правильность подключения приемопередатчика к шине данных ISA (SD7-SD0):
1.32.	Укажите системный интерфейс:
1)	RS-423;	2) Centronics;	3) ISA;	4) AGP.
1.33.	К устройствам вывода относятся следующие устройства:
1)	принтер;	2) клавиатура;	3) мышь;	4) дисплей.
1.34.	Выберите передачу, позволяющую одновременно передавать данные в обе стороны:
1) симплексная;	2) дуплексная;	3) полудуплексная.
1.35. Термин «Ввод» определяет направление передачи данных:
1) в процессор; 2) из процессора; 3) в память; 4) из памяти
1.36. Укажите для сигнала - IOR шины ISA переход уровня напряжения, соответствующий заднему фронту:
1)	из 0 в 1;	2) из1 в 0.
1.37.	Назовите структуру шины USB:
1)	петлевая; 2) однозвенная; 3) древовидная; 4) магистральная.
834	Приложение 2
1.38.	Укажите сигнал, осуществляющий чтение порта в шине ISA: 1)-MEMR; 2)-IOR:	3)-AEN;	4)-STR ADR.
1.39.	Адаптер ПУ содержит два адресуемых регистра ввода. Укажите минимальное количество младших битов адреса, необходимое для выбора каждого регистра:
1)	АЗ-АО:	2) А2-А0;	3) АО:	4)А1,А0.
1.40.	Сигнал «Разрешение прерывания» устанавливается с помощью:
1)	ПУ:	2) адаптера ПУ:	3) памяти:	4)	процессора.
1.41.	Укажите число каналов, которое содержит микросхема контроллера прямого доступа к памяти (18237):
1)8:	2)6:	3)7:	4)4.
1.42.	Выберите из перечисленных интерфейсов только приборные шины:
1)	RS-232;	2) USB:	3) GPIB;	4)САМАС.
1.43.	Назовите число проводников, содержащихся в шине USB:
1)6:	2)4:	3)8:	4)2.
1.44.	Выбрать типы информации, передаваемой в адресной фазе шины PCI:
1)	данные: 2) команда: 3) код разрешенных байтов: 4) адрес.
1.45.	Укажите сигналы квитирования шины PCI:
1)REQ#:	2)TRDY#: 3) GNT#: 4) IRDY#.
1.46.	Укажите базовый адрес для СОМ 1:
1)238Н:	2) 2F8 Н;	3) 338 Н;	4) 3F8 Н.
1.47.	Назовите метод кодирования данных, используемый в шине USB:
1)	NRZI:	2) RLL:	3) MFM:	4) импульсно-кодовой модуляции.
1.48.	Укажите способ представления сигналов данных на шине USB:
1)	униполярным сигналом:	3) импульсом тока;
2)	биполярным сигналом:	4) дифференциальным сигналом.
1.49.	Передача данных в шине USB выполняется в виде:
1)	сообщений:	3) кодовых посылок стартстопного формата;
2)	пакетов:	4) фреймов.
1.50.	Шина USB является:
1)	низкоскоростной:	2) высокоскоростной: 3) среднескоростной.
Тип 2. Назовите номера ответов в правильном порядке, например, 4, 1,3,2.
2.1.	Укажите в заданном порядке содержимое 2-байтнного кода клавиатуры обычной клавиши, хранимого в буферной памяти клавиатуры:
1)	код ASCII: 2) расширенный код: 3) скэн-код: 4) ноль.
2.2.	Укажите последовательность доступа к регистрам адаптера принтера протокола обмена «процессор-принтер»:
1)	регистр управления: 2) регистр данных; 3) регистр состояния.
2.3.	Представьте формат в заданном порядке 11-битный последовательной кодовой посылке клавиатуры:
1)	7 бит данных;	2) бит паритета: 3) стартовый бит; 4) стоповый бит.
Проверочные вопросы к базовым темам
835
2.4.	Указать порядок размещения адресных меток (AM) на дорожке гибкого диска:
1)	AM идентификатора; 2) AM данных; 3) AM индекса.
2.5.	Перечислить по порядку фазы, реализуемые при выполнении команды «Чтение данных» накопителя гибкого магнитного диска:
1)	выполнения;	2) завершения;	3) приказа.
2.6.	Представить порядок размещения атрибутов в поле идентификатора дорожки магнитного диска:
1)	номер сектора;	3) номер цилиндра;
2)	номер головки:	4) длина сектора.
2.7.	Показать порядок выполнения команды Чтения состояния накопителя гибкого диска (регистра ST3):
1)	ввод содержимого ST3; 3) вывод байта команды;
2)	выполнение команды; 4) вывод модификатора команды.
2.8.	Представить последовательность действий при обращении к накопителю гибкого диска:
1)	включение мотора:
2)	поиск дорожки;
3)	вывод идентификатора (номеров дорожки, головки, сектора);
4)	вывод команды Чтение данных;
5)	настройка контроллера ПДП:
6)	вывод номера накопителя.
2.9.	Показать последовательность фаз, выполняемых на шине SCSI:
1)	Вывод команды и данных;	4) Арбитраж;
2)	Шина свободна;	5) Ввод сообщения.
3)	Выбор исполнителя;
2.10.	Представить порядок представления формата опознавательного пакета шины USB:
1)	идентификатор;	3) адрес устройства;
2)	контрольный циклический код; 4) номер конечной точки.
2.11.	Показать последовательность установления и приема сигналов контроллером ПДП:
1)	HRQ;	2) HLDA;	3) DRQ2;	4) DACK2.
2.12.	Расставить с учетом приоритета номера каналов (К) контроллера ПДП:
1)	КЗ;	2)К1;	3) КО;	4) К2.
2.13.	Представить порядок действий в режиме вывода данных с прерыванием:
1)	установка флага готовности вывода внешним устройством;
2)	сброс флага готовности вывода;
3)	разрешение прерывания со стороны процессора:
4)	вывод данных процессором.
2.14.	Показать очередность появления сигналов на шине PCI в режиме чтения данных:
1)	IRDY#,TRDY#, DEVSEL#;
2)	FRAME#, адрес (А), команда (С);
3)	данные (D) и разрешенные байты (BE).
836
Приложение 2
2.15.	Представить в заданной очередности формат последовательной кодовой посылки микросхемы УАПП:
1)	данные (5-8 бит); 3) стоповые биты;
2)	бит паритета:	4) стартовый бит.
Тип 3. Следует установить соответствие между двумя группами ответов, например, А4, Б2, В1 ит.д.
3.1. Установите соответствие между названиями сигналов и их аббревиатурными обозначениями для контроллера ПДП:
а) запрос ПДП;	1)HRQ;
б) запрос шины;	2) DREQ;
в) подтверждение захвата шины;	3) DACK;
г) подтверждение ПДП.	4) HLDA.
3.2. Показать представление битов и их назначение в формате байта атрибута текстового режима видеоадаптера:
а) цвет фона (RGB):	1) D7:
б) мигание символа (В);	2) D6-D4;
в) интенсивность свечения символов (I);	3) D3;
г) цвет символа.	4) D2-D0.
3.3. Найдите соотношение между идентификаторами (ID) и номерами линий данных (DN) для устройств, подключенных к шине SCSI:
a) IDO;	1)D3;
б) ID6;	2) D6;
в) ID1;	3) DO;
г) ID3.	4) Dl.
3.4. Установите соответствие между размером данных шины SCSI и числом ее номеров идентификации:
а) 8:	1) 64:
б) 16;	2) 8;
в) 32;	3) 16;
г) 64.	4) 32.
3.5. Установите соответствие между периферийными устройств( адаптерами) и используемыми ими интерфейсами:
а) принтер;	1) USB;
б) жесткий диск;	2) IDE;
в) видеоадаптер;	3) PS2,
г) клавиатура.	4) AGP.
3.6. Для микросхемы УАПП найти соответствие между названиями регистров и их назначением:
а) регистр управления линией:	1) хранит состояние УАПП:
б) регистр передатчика;	2) содержит формат кодовой посылки;
в) регистр управления прерываниями;	3) имеет биты разрешения прерывания;
г) регистр состояния линии.	4) хранит выводимый символ.
Проверочные вопросы к базовым темам
837
3.7.	Поставьте в соответствие устройство и используемый им интерфейс:
а)	сканер;	1) SCSI;
б)	жесткий диск;	2) USB;
в)	модем;	3) VGA.
г)	монитор.
3.8.	Установите соответствие между содержимым некоторых битов и регистрами микросхемы УАПП:
а)	состояния линий CTS, DSR, DCD;	1) регистр состояния линии;
б)	состояние линии DTR;	2) регистр управления модемом;
в)	ошибки четности, кадра и переполнения. 3) регистр состояния модема.
3.9.	Для заданных данных найдите соответствующие им регистры микросхемы УАПП:
а)	скорость передачи данных - 600 бит/с; 1) регистры делителя скорости;
б)	число бит данных - 7;	2) регистр управления линией;
в)	бит паритета - чет;	3) регистр управления модемом.
г)	число стоповых бит-1.
3.10.	Укажите количество бит пикселов, соответствующее различным цветовым режимам видеоадаптера VGA:
а)	8;	1)16;
б)	4;	2) 256;
в)	2;	3) 4;
г)	1.	4)2.
3.11.	Покажите соответствие полей формата пакета данных шины USB и количеством бит данных:
а)	идентификатор;	1) 16;
б)	контрольный циклический код;	2) 0-1024;
в)	данные.	3) 8.
3.12.	Найдите соответствие между графическими режимами и необходимыми объемами страниц видеопамяти:
а) 320x200, 4-цветный;
6)320x200, 16-цветный;
в) 320x200, 256-цветный;
г) 640x480, 16-цветный.
3.13.	Определите тип видеоадаптера и число их базовых цветов:
a)	CG:	1)256:
б)	VGA;	2)16:
в)	EGA.	3)4.
3.14.	Установите соответствие между устройством и названием его сигнала или информации, которую устройство передает:
а)	клавиатура;	1) стартовый адрес драйвера;
б)	процессор;	2) прерывание IRQ 1 ;
в)	контроллер;	3) скан-код;
г)	память.	4) адрес вектора прерывания.
1)	153 600 байтов;
2)	32 000 байтов;
3)	64 000 байте;
4)	16 000 байтов.
838
Приложение 2
Тип 4. Необходимо в заданное число клеток вписать соответствующее определение, например, паритет, протокол, монитор и т.д.
4.1.	Укажите название эффекта жидких кристаллов.
4.2.	Общее название набора воспринимаемых цветов.
4.3.	Минимальный элемент изображения, цвет и яркость которого можно менять.
4.4.	Источник оптического излучения в одном направлении.
4.5.	Группа дорожек магнитного диска, имеющих одинаковый номер.
4.6.	Углубление в компакт-диске, характеризуемое длиной, глубиной и шириной.
4.7.	Высокочувствительный и быстродействующий детектор фотонов лазерного излучения.	_________
4.8.	Устройство, преобразующее отражение светового потока рисунка (текста) в цифровую форму.
4.9.	Место (разъем) подключения периферийного устройства к системным блокам или интерфейс сопряжения процессора с адресуемым регистром (триггером).
4.10.	Небольшая область магнитной дорожки, хранящая изменение магнитного потока.
4.1	1. Совокупность средств и правил, обеспечивающих логическое или физическое взаимодействие устройств (стандартное сопряжение).
4.12.	Переход сигнала с одного уровня на другой.
4.13.	Передача данных от исполнителя к инициатору (мастеру).
4.14.	Единица скорости передачи информации (для двоичной информации совпадает с бит/с).
4.15.	Информация, определяющая цвет символа, фона и интенсивность их свечения.
Ответы на контрольные вопросы и решения упражнений
Глава 1
1. Шина: 2. Стандарт: 3. 2: 4. Кэш: 5. Процессор: 6. Контроллер: 7. 4: 8.4:9. 3, 2, 1,4; Ю. 1,3, 4; 11. Домен: 12.2, 4; 13.2; 14.3, 4; 15.2; 16.4; 17.2, 3, 5; 18. 1, 3, 19. 3.
Глава 2
1.4, 2. 1, 3. 3, 4. 2, 5. 1,6. 3, 7. 4, 8. 1, 9.2, 10. 1, 11.4, 12. 1, 13.4, 14. 1; 15.8, 16. 4; 17. 2, 18. 1; 19. 2; 20. 3; 21. 4; 22. 3; 23. 1; 2, 7; 24. 2: 25. 2: 26. 2; 27. 1: 28. 3: 29. 2: 30. 3: 31. 2, 32. 1: 33. 2; 34. 2: 35. 3; 36. 3: 37. 3, 38. 1, 39. 3, 40. 3, 41. 2, 42. 2, 43. 2, 4, 44. 2, 4, 45. 3.
Глава 3
1.2; 2. 3:3. 2; 4. 3; 5. 4; 6. 3; 7. 4; 8. 3:9. 1; 10. 3; 11. 1; 12. 1; 13.2; 14.2, 6, 7,8; 15. 1, 16. 3, 17. 1, 18. 1, 19. 3, 20. 2.
Упражнение № 1. Структурная схема одного из вариантов подключения клавиатуры 16 х 6 к шине ISA показана на рис. 1. В схеме использованы следующие дополнительные обозначения: ТРП - триггер разрешения прерывания; DC - дешифратор: MUX - мультиплексор: РА^ и РАу - регистры адреса; Ф - формирователь.
Упражнение № 2. Принципиальная схема адаптера печатающего устройства, подключенного к шине ISA, представлена на рис. 2.
Упражнение № 3. Разработка структурной схемы устройства связи компьютера-передатчика и компьютера-приемника, режим прерывания (рис. 3).
Глава 4
1. 2, 4; 2. 1,3; 3. 2, 4; 4. 3; 5. 2, 1, 3; 6. 1.
840
Приложение 3
Глава 5
1. 4; 2. 3, 2, 1, 4; 3. 3, 4; 4. 2, 4; 5. 2.
Глава 6
1.4; 2. 1; 3.2; 4. 2; 5.3; 6.3; 7. 3;8.2;9. 1; 10. 1; 11.4; 12.3; 13. 1; 14.4; 15. 1; 16. 1; 17. 3; 18. 2; 19. 1; 20. 3; 21. 3; 22. 4.
Ответы на контрольные вопросы и решения упражнений
841
Рис. 2. Принципиальная схема адаптера печатающего устройства (номера выводов микросхем опущены)
Глава 7
1. 3; 2. 2; 3. 3; 4. 3; 5. 2; 6. 1, 4; 7. 3, 1, 2, 4; 8. 4; 9. 3, 4; 10. 4, 5, 2; 11. 1, 4, 5;
12. 4; 13. 2; 14. 2, 3, 4; 15. 2; 16. 3; 17. 2, 3; 18. Кодек; 19. Поле; 20. Синдром;
21. Перемеживание; 22. 1.
Упражнение № 1. Коду 1011 соответствует полином л?+х+ 1.Тогда(л?+х+ 1)л? =
= Х?+ Л4 + Л3.
Раздели полином л?+ л? + л? на порождающий полином G(x):
л6+л4+л3	|л? + х+ 1
л^+л4+л3	л3
О - остаток
848
Приложение 3
Рис. 3. Структурная схема устройства связи компьютера-передатчика и компьютера-приемника
Ответы на контрольные вопросы и решения упражнений	843
Таким образом, полиному л6 ч- х4 + л3 соответствует 7-битовый код сообщения, равный 1011000.
Упражнение № 2. Коду 1110100 соответствует по л ином л^+л^ + л^ + х2.
Разделим+ +	G(x):
J&+ X6 Ч- X4 + X2 л3 ч- х ч- 1
Л6 Ч- X4 Ч- X3	X3 + X2
Л^ Л®4-Л2
X6 + X3 + X2
0 - остаток
Если остаток равен нулю, то кодовое сообщение принято без ошибок.
Упражнение № 3.
Упражнение № 4.
Такт	Вход	То	Т1	Т2
1	1	1	1	0
2	1	1	0	1
3	1	0	1	0
4	0	0	0	1
5	1	0	0	0
6	0	0	0	0
7	0	0	0	0
Упражнение № 5. Коду данных соответствует полином Р(х) = х10ч-лвч-л8ч-л6ч-л6 + + л3 + х + 1. Тогда Pfxjx4 = х14 + х13 + х12 + х10 + л0 + х7 + х5 + х4. Разделим полином PJxJx4 на порождающий полином G(x):
X14 Ч- X13 Ч- X12 Ч- X10 Ч- Л0 Ч- X7 Ч- Л6 Ч- X4	[л^ч- хч- 1_____________
X14 Ч-X11 Ч-X10	|х10Ч-Л0Ч-Л8Ч-Х7Ч-Л6Ч-Л^Ч-Л3
X13 Ч- X12 Ч- X11 Ч- Л0 Ч- X7 Ч- Л6 Ч- X4
х13+ х10+ л0
X12 + X11 + X10 + X7 + л6 + X4
х12 ч- л0 ч- л3
хп + х10 + л® + Л8 Ч- X7 Ч- X6 Ч- X4 хпч-леч-х7
X10 Ч- Л0 Ч- Л6 Ч- X4
х10+х7+л6
л3 - остаток
844
Приложение 3
Код сообщения равен Р(х) + полином остатка:
х14 + х13 + х12 + х10 + х7 + Xs +	л3, или 111011010111000.
Упражнение № 6.
X14 + X13 + X12 + X10 + X9 + X7 + X6 + X4 + X3	[л^ч- хч- 1_______________
Х14+ XU+ X10	|х10Ч-Л9Ч-Х8Ч-Х7Ч-Л9Ч-Х5Ч-А3
Х13+ Х12+ X11 + А^Ч- X7 Ч- А6 Ч- X4 Ч- X3
X13 Ч- X10 Ч- А9
Х12Ч-Х11Ч-Х10Ч-Х7Ч-ЛбЧ-Х4Ч-Л3
X12 Ч- Л9 Ч- А9
X11 Ч- X10 Ч- А9 Ч- X8 Ч- X7 Ч- X5 Ч- X4 Ч- А3
Х11Ч-Х8Ч-Х7
X10 Ч- А9 Ч- А5 Ч- X4
Х10+Х7+А9
Л9 Ч- X7 Ч- Л9 Ч- X6 Ч- X4 Ч- X3
Л9+Л9+А5
X7 Ч- X4 Ч- X3
X7 Ч- X4 Ч- А3
0 - остаток
Так как остаток равен нулю, то сообщение принято без ошибок.
Упражнение № 7.
х14 ч- X13 Ч- X12 Ч- X11 Ч- Ч- X10 Ч- Л9 Ч- X7 Ч- X5 Ч- X4 Ч- Л3	[л^ч- хч- 1__
х14 + хич- X10	|х10ч-л9ч-х8ч-л9ч-л6ч-х4ч-х+ 1
X13 Ч- X12 Ч- А9 Ч- X7 Ч- X5 Ч- X4 Ч- X3
Х13Ч- Х10Ч- X9
X12 Ч- X10 Ч- X7 Ч- X6 Ч- X4 Ч- X3
Х12Ч-Л9Ч-А9
х10ч-л9ч-л9ч-х7ч-л9ч-х4ч-л9
х10+х7+л6
л9ч-л9ч-л9ч-л9ч-х4ч-х3
л9ч-л9ч-л5
л9ч- л^ч- л3
Л9Ч- Л^Ч- X4
Л6 Ч- X3
X4 Ч- X2 Ч- X
X4 Ч- Л2 Ч- X3 Ч- X
X4 Ч-X2 Ч- 1
л^ч-хч- 1-остаток
Остаток х3 ч- х ч- 1 соответствует коду 1011, и это указывает на то, что сообщение принято с ошибкой.
Упражнение № 8.
Выход
Вход-----
Ответы на контрольные вопросы и решения упражнений
845
Упражнение №9.
Такт	Вход	То	Т,	Т2	Тэ
1	1	1	1	0	0
2	1	1	0	1	0
3	1	1	0	0	1
4	0	1	0	0	0
5	1	1	0	0	0
6	1	1	0	0	0
7	0	0	1	0	0
8	1	1	1	1	0
					
15	0	0	0	0	0
Упражнение № 10. Ответ: 3.
Упражнение № 11. Ответ: 4.
Упражнение № 12. Ответ: 2.
Глава 8
1.2, 4; 2. 2; 3.2; 4. 1.
Глава 9
1. 1; 2. 4; 3. 4; 4. 2; 5. 3; 6. 1; 7. 4; 8. 3.
Глава 10
1. 2; 2. 3; 3. 4; 4. 1; 5. 3, 4; 6. 1; 7. 1; 8. 1, 2; 9. Твист; 10. Палитра; 11. 2; 12. 1; 13. 3; 14. 3; 15. 3.
Глава 11
1. 2; 2. 1; 3. 2; 4. 4; 5. 3; 6. 4; 7. 4; 8. 3; 9. 4; 10. 1; 11. 2; 12. 2; 13. 1; 14.4; 15. 3; 16. 1; 17. 3; 18. 2, 3, 4, 5, 8, 9, 11.
Глава 12
1. 1, 2,3; 2.4, 5, 6; 3. 3, 4, 5; 4.2; 5. Роликовый; 6. Планшетный; 7. 3; 8. Шесть; 9. 2, 4; 10. 1 ; 11. 2, 4 ; 12. 1, 2 3; 13. 4, 5; 14. 2, 3.
Глава 13
1. 1; 2. 1, 4. 3. 7. 2. 5: 3. 2, 4, 5. 6: 4. 3: 5. Форматирование; 6. 2; 7. 2, 3; 8. Дорожка; 9. Домен.
Упражнение № 1. Метод кодирования MFM. Запись бита данных C7h (рис. 4).
БС —। БД(С7) — Сигналы записи	И	Г		л_	_л_	л		л	
	1 _гт_	0	1	0 п	0	1 	п		1 п		1 л	
	п			п		п_		п		п		л	
данных								
Рис. 4. Запись байта данных методом MFM								
846
Приложение 3
Упражнение № 2. Метод кодирования MFM. Запись адресной метки (рис. 5).
БС (С7)	1 L БД(А1)	 Сигналы записи адресной метки (А1*)	Г г	1 п 1	1	 1		р 1° 		1	0 п	, п		ЛЛ 0 рл	п * п 0	0	1 	п	 __п л п	
		Рис. 5. Запись адресной метки методом MFM					
Глава 14
1. 3, 4; 2. 2, 4; 3. 3, 4; 4. 1, 3, 5. 3; 6. 3, 4; 7. 2, 4; 8. 2; 9. 2; 10. 1, 3; 11. 3, 4.
Глава 15
1. 3; 2. 2; 3. 2; 4. 3; 5. 1; 6. 4, 5; 7. 2; 8. 1; 9. 4; 10. 1; 11. 2; 12. 4; 13. 3; 14. 1; 15. 4; 16. 3; 17. 2; 18. 3; 19. 4; 20. 3; 21. 1; 22. 4; 23. Пит.
Глава 16
1.3; 2. 3; 3. 2; 4. 1; 5. 1.
Глава 17
1.2: 2.3. 4:3. 1:4. 1.4: 5.3:6.2:7.3:8. 1:9.4:10.3; 11.2; 12. 3; 13. 3:14.4, 2. 1, 3; 15. А2, В4, Cl, D3; 16. 4, 5; 17. 4; 18. Протокол; 19. 3; 20. Пакет; 21. УАПП; 22. Фаза; 23. Бод.
Ответы на вопросы по темам базового курса
Тип 1			
1.1.3	1.14.2,3, 4,5	1.27.2	1.40. 4
1.2. 1	1.15.2,3,4	1.28.2	1.41.4
1.3.2, 6, 7, 8	1.16.3	1.29.2	1.42. 3, 4
1.4.2, 3	1.17. 3, 4	1.30.2,4	1.43. 4
1.5. 1	1.18. 3, 5	1.31. 1	1.44. 2, 4
1.6. 3	1.19. 1,3,4	1.32.3	1.45. 2, 4
1.7. 1	1.20. 1,2,3	1.33. 1,4	1.46. 4
1.8. 2	1.21.2,3	1.34. 2	1.47. 1
1.9.3	1.22.2,3, 5,6	1.35. 1	1.48. 4
1.10. 2, 4	1.23.2,3	1.36. 1	1.49. 2
1.11. 2, 4	1.24.2,4,5	1.37.3	1.50. 3
1.12. 2	1.25.2,3	1.38.2	
1.13. 2	1.26.2,4,3	1.39.3	
Tun 2
2.1.	1, 3
2.2.	3, 2, 1
2.3.	3. 1. 2. 4
2.4.3, 1, 2
2.5.	3, 1,2
2.6.	3,2, 1,4
2.7.	3, 4,2, 1
2.8.	5, 2, 1,4, 3
2.9.2, 4, 3, 1,5
2.10. 1,3, 4,2
2.11.3, 1,2,4
2.12. 3,2,4, 1
2.13.3, 1, 4, 2
2.14.2, 1, 3
2.15.4, 1, 2, 3
Тип 3
3.1.	А2, Б1,В4, ГЗ
3.2.	А2, Б1,ВЗ, Г4
3.3.	АЗ, Б2, В4, Г1
3.4.	А2, БЗ, В4, Г1
3.5.	А1,Б2, В4, ГЗ
Тип 4
4.1.	Твист
4.2.	Палитра
4.3.	Пиксел
4.4.	Лазер
4.5.	Цилиндр
3.6.	А2, Б4, ВЗ, Г1
3.7.	А2, Б1, В2, ГЗ
3.8.	АЗ, Б2, В1
3.9.	А1, Б2, В2, Г2
3.10.	А2, Б1,ВЗ, Г4
4.6.	Пит
4.7.	Фотодиод
4.8.	Сканер
4.9.	Порт
4.10.	Домен
3.11.	АЗ, Bl, В2
3.12.	А4, Б2, ВЗ, Г1
3.13.	АЗ, Bl, В2
3.14.	АЗ, Б4, В2, Г1
4.11.	Интерфейс
4.12.	Фронт
4.13.	Ввод
4.14.	Бод
4.15.	Атрибут
Книги издательства «ДМК Пресс» можно заказать в торговоиздательском холдинге «АЛЬЯНС-КНИГА» наложенным платежом, выслав открытку или письмо по почтовому адресу: 123242, Москва, а/я 20 или по электронному адресу: orders@alians-kniga.ru.
При оформлении заказа следует указать адрес (полностью), по которому должны быть высланы книги; фамилию, имя и отчество получателя. Желательно также указать свой телефон и электронный адрес.
Эти книги вы можете заказать и в Internet-магазине: www.alians-kniga.ru.
Оптовые закупки: тел. (495) 258-91-94, 258-91-95; электронный адрес books@alians-kniga.ru.
Авдеев Вадим Александрович
Периферийные устройства:
интерфейсы, схемотехника, программирование
Главный редактор Мовчан Д. А. dm@dmk-press.ru
Корректор Верстка Дизайн обложки
Синяева Г. И.
Чаянова А. А.
Мовчан А. Г.
Подписано в печать 10.12.2008. Формат 70x100 V16. Гарнитура «Bookman». Печать офсетная.
Усл. печ. л. 79,5. Тйраж 1000 экз.
№
Издательство ДМК Пресс
Web-сайт издательства: www.dmk-press.ru Internet-магазин: www.alians-kniga.ru