МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего образования «Ижевский государственный технический университет имени М.Т. Калашникова» (ФГБОУ ВО «ИжГТУ имени М.Т. Калашникова») В.А. Афанасьев МЕТОДИЧЕСКИЕ УКАЗАНИЯ к выполнению лабораторных и самостоятельных работ для студентов, обучающихся по направлению 09.03.01 «Информатика и вычислительная техника», профиль «Вычислительные машины, комплексы, системы и сети» всех форм обучения при изучении дисциплины «Устройства ввода-вывода информации» название Ижевск 2018 Рег. номер 51/052 2 Р е ц е н з е н т : Коробейников А.В., кандидат техн. наук, заведующий кафедрой «Программное обеспечение» ФГБОУ ВО «ИжГТУ имени М.Т. Калашникова», доцент. С о с т а в и т е л ь : Афанасьев В.А., к.т.н., доцент Рекомендовано Ученым советом факультета для использования в учебном процессе в качестве учебно-методических материалов для студентов, обучающихся по направлению 09.03.01 «Информатика и вычислительная техника» профиль «Вычислительные машины, комплексы, системы и сети» при изучении дисциплины «Устройства ввода-вывода информации» (протокол №__19___ от «__14 мая__» 2018 г.) А13 Методические указания к выполнению лабораторных и самостоятельных работ для студентов, обучающихся по направлению 09.03.01 «Информатика и вычислительная техника», профиль «Вычислительные машины, комплексы, системы и сети» всех форм обучения при изучении дисциплины «Устройства ввода-вывода информации» / сост. В.А. Афанасьев. – Ижевск, 2018. – 82 с. В методических указаниях приведены теоретические сведения по лабораторным работам, порядок выполнения лабораторных работ, порядок выполнения контрольной работы для заочной формы обучения. Методические рекомендации по организации самостоятельной работы студентов составлены в соответствии с рабочей программой учебной дисциплины, разработанной на основе Федерального государственного образовательного стандарта по направлению 09.03.01 «Информатика и вычислительная техника» профиль «Вычислительные машины, комплексы, системы и сети» при изучении дисциплины «Устройства ввода-вывода информации». © В.А. Афанасьев, составление, 2018 © ФГБОУ ВО «ИжГТУ имени М.Т. Калашникова», 2018 3 ОГЛАВЛЕНИЕ ВВЕДЕНИЕ ............................................................................................................................................. 4 ЛАБОРАТОРНЫЙ ПРАКТИКУМ ....................................................................................................... 4 Работа 1 Изучение параллельного LPT-порта ..................................................................................... 4 1.1 Цель работы ................................................................................................................................. 4 1.2 Краткие теоретические сведения ............................................................................................... 4 1.3 Варианты заданий ...................................................................................................................... 11 1.4 Содержание отчета .................................................................................................................... 11 1.5 Контрольные вопросы ............................................................................................................... 12 Работа 2 Изучение последовательного COM-порта ......................................................................... 12 2.1 Цель работы ............................................................................................................................... 12 2.2 Краткие теоретические сведения ............................................................................................. 12 2.3 Варианты заданий ...................................................................................................................... 20 2.4 Содержание отчета .................................................................................................................... 20 2.5 Контрольные вопросы ............................................................................................................... 20 Работа 3 Программирование клавиатуры ......................................................................................... 21 3.1 Цель работы ............................................................................................................................... 21 3.2 Краткие теоретические сведения ............................................................................................. 21 3.3 Варианты заданий ...................................................................................................................... 37 3.4 Содержание отчета .................................................................................................................... 37 3.5 Контрольные вопросы ............................................................................................................... 37 Работа 4 Изучение интерфейса жидкокристаллического дисплея Date Vision .............................. 38 4.1 Цель работы ............................................................................................................................... 38 4.2 Краткие теоретические сведения ............................................................................................. 38 4.3 Варианты заданий ...................................................................................................................... 52 4.4 Содержание отчета .................................................................................................................... 52 4.5 Контрольные вопросы ............................................................................................................... 53 Работа 5 Изучение интерфейса SATA ............................................................................................... 53 5.1 Цель работы ............................................................................................................................... 53 5.2 Краткие теоретические сведения ............................................................................................. 53 5.3 Варианты заданий ...................................................................................................................... 56 5.4 Содержание отчета .................................................................................................................... 59 5.5 Контрольные вопросы ............................................................................................................... 59 КОНТРОЛЬНАЯ РАБОТА ДЛЯ ЗАОЧНОЙ ФОРМЫ ОБУЧЕНИЯ ......................................... 59 СПИСОК ЛИТЕРАТУРЫ .................................................................................................................... 62 ПРИЛОЖЕНИЕ А ............................................................................................................................... 64 ПРИЛОЖЕНИЕ B ............................................................................................................................... 80 ПРИЛОЖЕНИЕ C ............................................................................................................................... 81 4 ВВЕДЕНИЕ Настоящие методические указания содержат методические материалы по 5 лабораторным работам. В данных работах представлены материалы для освоения физических характеристик и протоколы работы интерфейсов и устройств ввода-вывода информации, а именно LPT-порт, COM-порт, клавиатурный интерфейс, интерфейс жидкокристаллического дисплея, интерфейс SATA. Изучение LPT-порта закрепляется на выполнении процедур обмена между ПЭВМ в режиме полубайтового обмена. Изучение последовательного COM-порта закрепляется на создании виртуального канала и передачи данных по COM-порту между двумя ПЭВМ. Изучение интерфейса для работы с клавиатурой закрепляется на программировании работы микроконтроллера клавиатуры. Изучение интерфейса жидкокристаллического дисплея Date Vision закрепляется на создании программы для вывода значения температуры на жидкокристаллический дисплей. Изучение интерфейса SATA закрепляется на выполнении обмена информацией в различных режимах. ЛАБОРАТОРНЫЙ ПРАКТИКУМ Работа 1 Изучение параллельного LPT-порта 1.1 Цель работы Цель работы: Целью работы является изучение принципов реализации интерфейса Centronics, назначения сигналов на линиях интерфейса, протокола передачи данных по интерфейсу, организации и функционирования LPT-порта, программной поддержки интерфейса. 1.2 Краткие теоретические сведения Внешний, радиальный, параллельный интерфейс Centronics обеспечивает подключение печатающих и других устройств с параллельной передачей информации. В одном направлении (от персонального компьютера) одновременно передается 1 байт данных. Радиальное подключение осуществляется посредством кабеля. Все сигналы интерфейса Centronics имеют стандартные ТТЛ - уровни. Максимальная длина соединительного кабеля по стандарту – 1,8 м. По назначению сигналы на контактах разъема интерфейса можно разделить на 4 группы: информационные сигналы; сигналы управления передачей данных; сигналы состояния периферийного устройства; 5 заземление и питание. Назначение сигналов интерфейса Centronics. Информационные сигналы: D0-D7 – 8-разрядные данные. Сигналы управления передачей данных: #STROBE – сигнал стробирования данных. Сигнал #STROBE низкого уровня сообщает приемнику, что данные источником выставлены, и их можно принимать. #INIT – сигнал инициализации (сброса) периферийного устройства. Низкий уровень сигнала служит для установки регистров приемника в начальное состояние. # SLCT IN – выбор. Сигнал сообщает приемнику, что он выбран и для него последует передача данных. #AUTO FD – сигнал автоматического перевода строки. По этому сигналу печатающее устройство перемещает бумагу для печати на следующей строке. Сигналы состояния периферийного устройства: BUSY – сигнал занятости периферийного устройства. Сигнал BUSY высокого уровня говорит о том, приемник не может принимать данные. Приемник может быть занят в следующих случаях: а) во время ввода данных; б) во время печати; в) в состоянии «ошибки»; г) в автономном режиме и др. Подача низкого уровня сигнала BUSY означает, что приемник может принимать данные. #ACK – сигнал подтверждения принятия данных. Высокий уровень сигнала #ACK говорит о том, что приемник готов к приему данных. переход сигнала в ноль сообщает, что приемник принял предыдущие данные, но не готов принять новые. SLCT – сигнал готовности приемника. Высокий уровень сигнала говорит о том, что приемник выбран и готов к приему данных. #ERROR – сигнал ошибки приемника. Логический ноль означает ошибку в приемнике и требует прекращения передачи. PE – сигнал конца бумаги. По этому сигналу источник прекращает передачу данных и переходит в состояние ожидания. Обычно используются те или иные сигналы, в зависимости от назначения приемника. Для того чтобы обеспечить функционирование интерфейса, достаточно использовать только 8 бит данных (D0-D7), сигнал стробирования данных #STROBE, сигнал подтверждения #ACK и сигнал занятости приемника BUSY, либо сигнал готовности приемника SLCT. Временные диаграммы сигналов при передаче информации по внешнему интерфейсу Centronics приведены на рисунке 1.1. Приемник готов принять данные, когда (BUSY = 0) & (#ACK = 1). Только в этом случае передатчик, выставив данные D0-D7, выдает сигнал стробирования данных #STROBE. 6 Рисунок 1.1 - Временные диаграммы цикла передачи данных по интерфейсу Centronics Контроллер интерфейса Centronics Обменом информацией между ПК и периферийным параллельным устройством управляет контроллер внешнего параллельного интерфейса Centronics, который с одной стороны подключается к системному интерфейсу, а с другой – по интерфейсу Centronics к периферийному устройству. ПК может работать с тремя параллельными контроллерами, как LPT-порты и имеют логические адреса LPT1, LPT2 и LPT3. Блок-схема контроллера интерфейса приведена на рисунке 1.2. Структура контроллера представляет собой типичную регистровую структуру. Центральный процессор ПК может адресоваться к трем регистрам контроллера: регистру данных; регистру управления; регистру состояния ПУ. Адреса этих регистров для ПК имеют стандартные значения: 378h, 379h и 37Ah - для LPT1; 278h, 279h и 27Ah - для LPT2; 3ВСh, 3ВDh и 3ВEh - для LPT3. Регистр данных Регистр состояния ВУ Выходной буфер Регистр управления Регистр чтения данных Схема управления контроллер а Буфер данных Регистр состояния контролле ра Системный интерфейс Рисунок 1.2 - Структура контроллера интерфейса Centronics Первые адреса называются базовыми адресами портов. Область данных BIOS содержит базовые адреса для каждого контроллера. Базовый адрес для LPT1 находится в ячейке 0040:0008, для LPT2 – 0040:000А, для LPT3 – 0040:000С. При инициализации ПК базовому адресу присваивается значение 0, когда 7 соответствующий порт не установлен. Управление передачей информации по интерфейсу организуется в соответствии с временными диаграммами работы интерфейса Centronics. Через регистр данных CPU посылает код данных в параллельном формате в ПУ по линиям D0-D7 интерфейса Centronics. Код, выводимый на интерфейс, фиксируется в регистре чтения данных, и его можно прочитать для контроля передаваемых данных. Регистр состояния ПУ содержит информацию о ПУ. Значения битов этого регистра приведены на рисунке 1.3. Центральный процессор при передаче данных в ПУ опрашивает регистр состояния ПУ, чтобы определить момент, когда ПУ готово к приему, и можно посылать данные. Этот момент определяется соотношением сигналов BUSY (занято) и #ACK (подтверждение). Регистр состояния сообщает также, что произошла ошибка в работе ПУ или что ПУ не готово из-за отсутствия бумаги (при работе с принтером). Рисунок 1.3 - Формат регистра состояния LPT-порта Бит В7 – инверсное отображение сигнала BUSY на линии интерфейса. Бит В6 – отображение сигнала на линии #ACK. Бит В5 – отображение сигнала на линии PE. Бит В4 - отображение сигнала на линии SELECT. Бит В3 - отображение сигнала на линии #ERROR. Биты В2-В0 не используются. Через регистр управления в ПУ передаются сигналы инициализации ПУ (#INIT), управления выводом данных (#STROBE) и другие сигналы управления. Семантика битов этого регистра приведена на рисунке 1.4. Установкой бита В4 в единичное состояние CPU переводит контроллер интерфейса в режим передачи данных по прерыванию. В этом режиме, когда ПУ готово к приему очередного кода данных, контроллер интерфейса посылает запрос на прерывание. Однако передача данных в ПУ в режиме прерывания практически не используется. Рисунок 1.4 - Формат регистра управления 8 Назначение битов регистра управления LPT – порта: биты В7-В5 не используются; бит В4 – единичное значение разрешает прерывание по спаду сигнала на линии #ACK – сигнал запроса следующего байта; бит В3 – “1” формирует низкий активный уровень сигнала #SLCT IN; бит В2 – “0” формирует низкий активный уровень сигнала #INIT; бит В1 – “1” формирует низкий активный уровень сигнала #AUTO FD; бит В0 – “1” формирует низкий активный уровень сигнала #STROBE; Программная организация управления передачей по интерфейсу В ПК выводом данных по интерфейсу Centronics управляет программа прерывания системы BIOS INT 17H. Эта программа может выполнять три операции, определяемые содержимым регистра АН микропроцессора: АН=0 – вывод символа; АН=1 – инициализация параллельного порта; АН=2 – чтение состояния периферийного устройства. Для выполнения каждой операции необходимо задать в регистре DX микропроцессора номер LPT-порта – число от 0 до 2 для LPT1 – LPT3. В процессе выполнения каждой операции программы прерывания INT 17H происходит обращения МП к регистрам порта. Так, например, МП посылает в регистр данных код выводимого символа, читает состояние периферийного устройства и, если ПУ готово к приему данных, формирует сигналы управления. Пример использования программы прерывания INT 17H при для инициализации ПУ, подключаемого к порту LPT 2. MOV AH, 1 ; операция «инициализация порта» MOV DX, 1 ; LPT 2 INT 17H ; выполнение операции Функция 1 прерывания INT 17H BIOS инициализирует через порт LPT2 периферийное устройство и возвращает байт, определяющий состояние ПУ, в регистр AH микропроцессора. Стандарт IEEE 1284 Стандарт на параллельный интерфейс IEEE 1284, принятый в 1994 году, определяет порты SPP, ЕРР и ЕСР. Стандарт определяет 5 режимов обмена данными (перечислены ниже), метод согласования режима, физический и электрический интерфейсы. Режим совместимости (Compatibility Mode) — однонаправленный (вывод) по протоколу Centronics. Этот режим соответствует стандартному порту SPP, Полубайтный режим (Nibble Mode) — ввод байта в два цикла (по 4 бита) через линии состояния. Этот режим обмена подходит для любых адаптеров, поскольку использует только возможности стандартного порта. Байтный режим (Byte Mode) — ввод байта целиком через линии данных. Этот режим работает только на портах, допускающих чтение выходных данных (Bi-Directional или PS/2 Туре 1, см. выше). Режим ЕРР (Enhanced Parallel Port) (ЕРР Mode) — двунаправленный обмен 9 данными. Управляющие сигналы интерфейса генерируются аппаратно во время цикла обращения к порту. Эффективен при работе с устройствами внешней памяти и адаптерами локальных сетей. Режим ЕСР (Extended Capability Port) (ECP Mode) — двунаправленный обмен данными с возможностью аппаратного сжатия данных по методу RLE (Run Length Encoding) и использования FIFO-буферов и DMA. Управляющие сигналы интерфейса генерируются аппаратно. Эффективен для принтеров и сканеров. Стандарт определяет способ, по которому ПО может выяснить режим, доступный и хосту (PC), и ПУ (или присоединенному второму компьютеру). Режимы нестандартных портов, реализующих протокол обмена Centronics аппаратно {Fast Centronics, Parallel Port FIFO Mode), могут и не являться режимами IEE1284, несмотря на наличие в них черт ЕРР и ЕСР. В компьютерах с LPT-портом на системной плате режим — SPP, ЕРР, ЕСР или их комбинация — задается в CMOS Setup. Режим совместимости полностью соответствует стандартному порту SPP. Остальные режимы подробно рассмотрены ниже. При описании режимов обмена фигурируют следующие понятия: хост — компьютер, обладающий параллельным портом; ПУ — периферийное устройство, подключаемое к этому порту; Ptr — в обозначениях сигналов — передающее ПУ; прямой канал — канал вывода данных от хоста в ПУ; обратный канал — канал ввода данных в хост из ПУ В таблице 1.1 описано назначение выводов разъема LPT-порта в различных режимах и их соответствие битам регистров стандартного порта. Таблица 1.1 - Назначение выводов разъёма LPT-порта и бит регистров в режимах SPP, ECP и EPP I/O Бит1 SPP ECP O/I CR.O \ Strobe* HostClk O/I DR.0 Data 0 Data 0 O/I DR.1 Data 1 Data 1 O/I DR.2 Data 2 Data 2 O/I DR.3 Data3 Data3 0/I DR.4 Data 4 Data 4 0/I DR. 5 Data 5 Data 5 0/I DR.б Data 6 Data 6 0/I DR.7 Data 7 Data 7 I SR.6 Ack# PeriphClk I SR.7\ Busy PeriphAck I SR.5 PaperEnd AckReverse# I SR.4 Select Xflag 0/1 CR.1\ Auto LF# HostAck I SR.3 Error# PeriphRequest# O/I CR.2 Init# ReverseRequest# O/I CR.3\ Select In# 1284Active 1 Символом «\» отмечены инвертированные сигналы (1 в регистре 10 соответствует низкому уровню линии). 2 Символ «—» означает «определяется пользователем». Конфигурирование LPT-портов Управление параллельным портом разделяется на два этапа — предварительное конфигурирование (Setup) аппаратных средств порта и текущее (оперативное) переключение режимов работы прикладным или системным ПО. Оперативное переключение возможно только в пределах режимов, разрешенных при конфигурировании. Этим обеспечивается возможность согласования аппаратуры с ПО и блокирования ложных переключений, вызванных некорректными действиями программы. Конфигурирование LPT-порта зависит от его исполнения. Порт, расположенный на плате расширения (мультикарте), устанавливаемой в слот ISA или ISA+VLB, конфигурируется джамперами (перемычками) на самой плате. Порт на системной плате конфигурируется через CMOS Setup. Ниже перечислены доступные при конфигурировании параметры: Базовый адрес — 3BCh, 378h или 278h. При инициализации BIOS проверяет наличие портов по адресам именно в этом порядке и, соответственно, присваивает обнаруженным портам логические имена LPT1, LPT2, LPT3. Адрес 3BCh имеет адаптер порта, расположенный на плате MDA или HGC. Большинство портов по умолчанию конфигурируется на адрес 378h и может переключаться на 278h. Линия запроса прерывания: для LPT — IRQ7, для LPT2 — IRQ5. Традиционно прерывания от принтера не используются, и этот дефицитный ресурс можно сэкономить. Однако в скоростных режимах ЕСР (или Fast Centronics работа через прерывания может заметно повысить производительность и снизить загрузку процессора. Использование канала DMA для режимов ЕСР и Fast Centronics — разрешение и номер канала DMA. Режимы работы порта: SPP — порт работает только в стандартном однонаправленном программноуправляемом режиме; PS/2, он же Bi-Directional — отличается от SPP возможностью реверса канала (установкой CR.5=1); Fast Centronics — аппаратное формирование протокола Centronics c использовнием FIFO-буфера и, возможно, DMA; ЕРР — в зависимости от использования регистров, порт работает в режиме SPP или ЕРР; ЕСР — по умолчанию включается в режим SPP или PS/2, записью в EPP может переводиться в любой режиме ЕСР, но перевод в ЕРР записью ECR кода 100 не гарантируется; ЕСР+ЕРР — то же, что и ЕСР, но запись в ECR кода режима 100 переводит порт в ЕРР. Выбор режима ЕРР, ЕСР или Fast Centronics сам по себе не приводит к повышению быстродействия обмена с подключенными ПУ, а только дает 11 возможность драйверу и ПУ установить оптимальный режим в пределах их «разумения». Большинство современных драйверов и приложений пытаются использовать эффективные режимы, так что «подрезать им крылья» установкой простых режимов без веских оснований не стоит. Принтеры и сканеры могут «пожелать» режима ЕСР. Windows (3.x, 9х и NT имеет системные драйверы для этого режима. В среде DOS печать через EСP поддерживается только специальным загружаемым драйвером. Сетевые адаптеры, внешние диски и CD-ROM, подключаемые к параллельному порту, могут использовать режим ЕРР. Для этого режима специальный драйвер пока еще не применяется; поддержка ЕРР включается в драйвер самого подключаемого устройства. Большинство современных ПУ, подключаемых к LPT-порту, поддерживают стандарт 1284 и РnР. Для обслуживания этих функций компьютером с аппаратной точки зрения достаточно иметь контроллер интерфейса, поддерживающий стандарт 1284. Если подключаемое устройство «дружит» с технологией РnР, он по протоколу согласования режимов 1284 способно «договориться» с портом о возможных режимах обмена. Подключенное устройство должно сообщить операционной системе (ОС) все необходимые сведения о себе — идентификатор производителя, модель и набор поддерживаемых команд. Более подробная информация может содержать: идентификатор класса, подробное описание и идентификатор устройства, с которым обеспечивается совместимость. В соответствии с принятой информацией ОС может предпринять действия по установке требуемого ПО для поддержки данного устройства. 1.3 Варианты заданий 1. Изучить структуру адаптера параллельного порта, назначение и структуру его рабочих регистров. 2. Нарисовать схему соединения кабеля для обмена информацией между двумя компьютерами через параллельный порт в полубайтном режиме. 3. Разработать протокол обмена информацией между двумя компьютерами через параллельный порт в полубайтном режиме. 4. Продемонстрировать программу обмена информацией через LPT-порт в полубайтном режиме. 5. Определить скорость передачи в полубайтном режиме. 1.4 Содержание отчета 1. Титульный лист 2. Введение 3. Вариант задания 4. Ход работы 5. Схема адаптера параллельного порта. Схема соединения кабеля для обмена информацией между двумя ПЭВМ. 6. Программа обмена информацией через параллельный порт. 7. Заключение. 12 1.5 Контрольные вопросы 1. Передача потока байт данных к принтеру и прием сигналов состояния принтера. 2. Режим ЕСР. 3. Отличие интерфейса ИРП от интерфейса Centronics. 4. Расширение параллельного порта. 5. Стандарт IEEE 1284. Режимы данных. 6. Установка принтера по умолчанию. 7. Команды, содержащиеся в меню Принтер. 8. Выбор драйвера принтера. 9. Страницы-разделители. Работа 2 Изучение последовательного COM-порта 2.1 Цель работы Цель работы: изучить программную модель аппаратных средств интерфейса RS-232. Задачи работы: Получить практические навыки передачи данных с использованием интерфейса RS-232. 2.2 Краткие теоретические сведения Широко используемый последовательный интерфейс синхронной и асинхронной передачи данных, определяемый стандартом EIA RS-232-C и рекомендациями V.24 CCITT. Изначально создавался для связи компьютера с терминалом. В настоящее время используется в самых различных применениях. Интерфейс RS-232-C соединяет два устройства. Линия передачи первого устройства соединяется с линией приема второго и наоборот (полный дуплекс) Для управления соединенными устройствами используется программное подтверждение (введение в поток передаваемых данных соответствующих управляющих символов). Возможна организация аппаратного подтверждения путем организации дополнительных RS-232 линий для обеспечения функций определения статуса и управления. Таблица 2.1 - Описание интерфейса RS232-C Стандарт EIA RS-232-C, CCITT V.24 Скорость передачи 115 Кбит/с (максимум) Расстояние передачи 15 м (максимум) Характер сигнала несимметричный по напряжению Количество драйверов 1 Количество приемников 1 Схема соединения полный дуплекс, от точки к точке 13 Порядок обмена по интерфейсу RS-232C Интерфейс RS-232C предназначен для подключения к компьютеру стандартных внешних устройств (принтера, сканера, модема, мыши и др.), а также для связи компьютеров между собой. Данные в RS-232C передаются в последовательном коде побайтно. Данные могут передаваться как в одну, так и в другую сторону. Назначение контактов разъема приведено в таблице 2.2 Таблица 2.2 - Назначение контактов разъема Контакт (25-контактный разъем) Контакт (9-контактный разъем) определение несущей 8 1 IN принимаемые данные 3 2 TXD OUT передаваемые данные 2 3 DTR OUT готовность терминала 20 4 GND - корпус системы 7 5 DSR IN готовность данных 6 6 RTS OUT запрос на отправку 4 7 CTS IN готовность приема 5 8 RI IN индикатор 22 9 Название Направление DCD IN RXD Описание Назначение сигналов следующее: FG - защитное заземление (экран). -TxD - данные, передаваемые компьютером в последовательном коде (логика отрицательная). -RxD - данные, принимаемые компьютером в последовательном коде (логика отрицательная). RTS - сигнал запроса передачи. Активен во все время передачи. CTS - сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника. DSR - готовность данных. Используется для задания режима модема. SG - сигнальное заземление, нулевой провод. DCD - обнаружение несущей данных (детектирование принимаемого сигнала). DTR - готовность выходных данных. RI - индикатор вызова. Говорит о приеме модемом сигнала вызова по телефонной сети. Наиболее часто используются трех- или четырехпроводная связь (для двунаправленной передачи). Схема соединения для четырехпроводной линии связи показана на рисунке 1. Для двухпроводной линии связи в случае только передачи из компьютера во внешнее устройство используются сигналы SG и TxD. Все 10 сигналов интерфейса задействуются только при соединении компьютера с модемом. Формат передаваемых данных показан на рисунке 2. Собственно данные (5, 6, 7 или 8 бит) соопровождаются стартовым битом, битом четности и одним или 14 двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определннные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми, допустимое расхождение - не более 10%). Скорость передачи по RS-232C может выбираться из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с. Все сигналы RS-232C передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи. Отметим, что данные передаются в инверсном коде (логической единице соответствует низкий уровень, логическому нулю - высокий уровень). Для подключения произвольного периферийного устройства к компьютеру через RS-232C обычно используют трех- или четырехпроводную линию связи, но можно задействовать и другие сигналы интерфейса. Рисунок 2.1 - Схема 4-проводной линии связи для RS-232C Обмен по RS-232C осуществляется с помощью обращений по специально выделенным для этого портам COM1 (адреса 3F8h...3FFh, прерывание IRQ4), COM2 (адреса 2F8h...2FFh, прерывание IRQ3), COM3 (адреса 3F8h...3EFh, прерывание IRQ10), COM4 (адреса 2E8h...2EFh, прерывание IRQ11). Форматы обращений по этим адресам можно найти в многочисленных описаниях микросхем контроллеров последовательного обмена UART (Universal Asynchronous Receiver/Transmitter), например, i8250, КР580ВВ51. Рисунок 2.2 - Формат данных RS-232C 15 Рисунок 2.3 - Уровни сигналов RS-232C на передающем и принимающем концах линии связи Порядок инициализации 8250 Для подготовки контроллера 8250 к работе необходимо выполнить следующие шаги. 1. Установить бит DLAB порта 3FBh и заслать делитель, задающий скорость обмена, в порты 3F8h и 3F9h. 2. Инициализировать регистр управления линией (порт 3FBh); при этом сбросить бит DLAB. 3. Инициализировать регистр управления модемом (порт 3FCh). 4. Инициализировать регистр управления прерываниями (порт 3F9h) и, если прерывания разрешены, установить адрес программы обработки прерываний от стыка RS-232. В состав IBM PC могут входить до четырех последовательных интерфейсов, работающих в стандарте RS-232 (отечественный аналог - стык С2) и именуемых СОМ1 - СОМ4. Им выделены следующие адреса в области портов ввода-вывода: СОМ1: 3F8h-3FFh COM3: 3Е8h-3ЕFh COM2: 278h-2FFh COM4: 2Е8h-2ЕFh Каждый интерфейс связан с определенным уровнем контроллера прерываний: СОМ1 вызывает прерывание IRQ4 (Int 0Ch) COM2 вызывает прерывание IRQ3 (Int 0Bh) СОМ3 и СОМ4 не имеют стандартных векторов прерываний. Контакты стыка RS-232 имеют следующие наименования (DTE - Data Terminal Equipment: обычно персональный компьютер, DCE - Data Communication Equipment: обычно модем, к разъему RS-232 можно подключить только DTE либо DCE).Контроллер стыка RS-232 является полностью программируемым устройством; вы можете задать следующие параметры обмена: количество битов данных и стоп-битов, вид четности и скорость обмена в бодах (бит/с). Описание портов Ниже описаны порты ввода-вывода для СОМ1, имеющего базовый адрес 16 3F8h. Обратите внимание, что порты 3F8h и 3F9h имеют разное назначение в зависимости от бита 7 порта 3F8h (т. н. бит DLAB - Divisor Latch Access Bit). Порт 3F8h Операция Запись Чтение Запись 3F9h Запись Запись 3FAh Чтение 3FBh Чтение/ Запись 3FCh Запись Описание Регистр передатчика - сюда засылается байт для передачи Регистр приемника - отсюда извлекается принятый байт Если DLAB=1, то сюда засылается младший байт скорости обмена (см. порт 3F9h) Если DLAB=1, то сюда засылается старший байт скорости обмена. Скорость задается значением делителя, равным 115200/V, где V – скорость в бодах (или 1843200/(BaudRate * 16), где 1843200 – тактовая частота 8250, 16-коэффициент тактирования, BaudRateжелаемая частота передачи в бодах). Например, для скорости 9600 бод делитель равен 115200/9600=12=0Ch, поэтому нужно вывести 0Ch в порт 3F8h и 0 в порт 3F9h. Регистр управления прерываниями (1-разрешить прерывание): бит 0 - прерывание по приему символа; бит 1 - прерывание по завершению передачи символа; бит 2 - прерывание по обрыву линии или ошибке в линии; бит 3 - прерывание по изменению состояния модема (любой из линий CTS, DSR, RI, DCD); биты 4-7 - равны 0 (не используются). Регистр идентификации прерывания. Когда произошло прерывание, здесь содержится причина, вызвавшая его: бит 0 - 0=есть отложенные прерывания; биты 1,2 - причина прерывания: 11=ошибка или обрыв линии; сбрасывается чтением регистра состояния линии (порт 3FDh) 10=принят символ; сбрасывается чтением приемника (порт 3F8h) 01=передан символ; сбрасывается записью символа в регистр передатчика (порт 3F8h) 00=изменение состояния модема (линий CTS, DSR, RI, DCD); сбрасывается чтением регистра состояния модема (порт 3FEh) Регистр управления линией: биты 0-1 - число битов данных: 00 - 5, 01 - 6, 10 - 7, 11 - 8; бит 2 - число стоп-битов: 0=1, 1=1.5 при 5 битах данных и 2 в другом случае; биты 3-4 - тип четности: Х0 - нет, 01 - нечетная, 11 - четная; бит 5 - постоянная четность: 0 - отмена постоянной четности; 1 постоянный бит четности (зависит от битов 3-4): биты 34=01 - бит четности всегда 1, биты 3-4=11 - бит четности всегда 0, биты 3-4=Х0 - без бита четности; бит 6 - имитировать обрыв линии (посылка нулей); бит 7 - DLAB: 1=порты 3F8h и 3F9h используются для загрузки скорости обмена; 0=порты 3F8h и 3F9h в обычном режиме Регистр управления модемом: бит 0 - 1=установить выход DTR; бит 1 - 1=установить выход RTS; 17 3FDh Чтение 3FEh Чтение бит 2 - 1=установить OUT1 (не используется); бит 3 - 1=установить OUT2 (разрешить прерывания от RS-232); бит 4 - 1=диагностический режим (посылать выход на вход стыка). Регистр состояния линии. Биты 1-4 вызывают прерывания по ошибке, если оно разрешено: бит 0 - 1=данные приняты. Сбрасывается чтением приемника; бит 1 - 1=потеря предыдущего символа; бит 2 - 1=ошибка четности; бит 3 - 1=неверный стоп-бит; бит 4 - 1=обнаружен обрыв линии; бит 5 - 1=регистр передатчика пуст. Нет обрабатываемых данных; бит 6 - 1=сдвиговый регистр передатчика пуст. Можно передавать следующий символ; Регистр состояния модема. Биты 0-3 вызывают прерывание по изменению состояния модема, если оно разрешено: бит 0 - 1=изменилось состояние линии CTS; бит 1 - 1=изменилось состояние линии DSR; бит 2 - 1=изменилось состояние линии RI; бит 3 - 1=изменилось состояние линии DCD; бит 4 - сотояние линии CTS; бит 5 - состояние линии DSR; бит 6 - состояние линии RI; бит 7 - состояние линии DCD. Примечание: "Изменилось состояние линии..." означает, что данная линия стыка RS-232 изменила свое состояние по сравнению с последним чтением этого регистра. Описание алгоритмов Последовательная передача данных означает, что данные передаются с использованием единственной линии. При этом биты байта данных передается по очереди с использованием одного провода. Для синхронизации группе битов обычно предшествует специальный стартовый бит, после группы битов следуют бит проверки на четность и один или два стоповых бита. Иногда бит проверки на четность может отсутствовать. Рисунок 2.4 - Схема передачи данных Исходное состояние линии последовательной передачи данных - уровень логической 1. Стартовый бит START сигнализирует о начале передачи данных. Далее передаются биты данных, вначале младшие, затем старшие. Если используется бит четности P, то передается и он. Бит четности имеет такое значение, чтобы в пакете битов общее количество единиц (или нулей) было четно или нечетно. 18 В самом конце передаются один или два стоповых бита STOP, завершающих передачу байта. Затем уровень линии передачи снова устанавливается в 1 до прихода следующего стартового бита. Использование четности, стартовых и стоповых битов определяют протокол передачи данных. Очевидно, что передатчик и приемник данных должны использовать один и тот же протокол, иначе связь будет невозможной. Другая важная характеристика - скорость передачи данных. Она также должна быть одинаковой для передатчика и приемника. Скорость передачи данных обычно измеряется в бодах. Боды - это количество передаваемых битов в секунду. При этом учитываются и старт/стопные биты, а также бит четности. Иногда используется другой термин - биты в секунду (bps). Здесь имеется в виду эффективная скорость передачи данных, без учета служебных битов. Аппаратная реализация Компьютер может быть оснащен одним или двумя портами последовательной передачи данных. Эти порты расположены либо на материнской плате, либо на отдельной плате, вставляемой в слоты расширения материнской платы. Бывают также платы, содержащие 4 или 8 портов последовательной передачи данных. Их часто используют для подключения нескольких компьютеров или терминалов к одному, центральному, компьютеру. В основе последовательного порта передачи данных лежит микросхема Intel 8250. Это универсальный асинхронный приемо-передатчик (UART - Universal Asynchronous Receiver Transmitter). Микросхема содержит несколько внутренних регистров, доступных через команды ввода/вывода. Микросхема 8250 содержит регистры передатчика и приемника данных. При передаче байта он записывается в буферный регистр передатчика, откуда затем переписывается в сдвиговый регистр передатчика. Байт "выдвигается" из сдвигового регистра по битам. Аналогично имеются сдвиговый и буферный регистры приемника. Программа имеет доступ только к буферным регистрам, копирование информации в сдвиговые регистры и процесс сдвига выполняется микросхемой 8250 автоматически. Внешние устройства подключаются к порту ввода/вывода через разъем DB25P или DB9P (имеющий 9 выводов). Таблица 2.4 - Разводка разъема последовательной передачи данных DB25P Номер Назначение контакта контакта 1 Защитное заземление 2 Передаваемые данные (Transmitted Data) 3 Принимаемые данные (Received Data) 4 Запрос для передачи (Request to send, RTS) 5 Сброс для передачи (Clear to Send, CTS) 6 Готовность данных (Data Set Ready, DSR) 7 Сигнальное заземление Вход или выход Выход Вход Выход Вход Вход - 19 8 9-19 20 21 22 23-25 Детектор принимаемого с линии сигнала (Data Carrier Detect, DCD) Не используются Готовность выходных данных (Data Terminal Ready, DTR) Не используется Индикатор вызова (Ring Indicator, RI) Не используется Вход Выход Вход Наряду с 25-контактным разъемом часто используется 9-контактный разъем: Таблица 2.5 - Разводка 9-контактного разъема последовательной передачи данных Номер Вход или Назначение контакта контакта выход 1 Детектор принимаемого с линии сигнала (Data Carrier Detect, DCD) Вход 2 Принимаемые данные (Received Data) Вход 3 Передаваемые данные (Transmitted Data) Выход 4 Готовность выходных данных (Data Terminal Ready, DTR) Выход 5 Сигнальное заземление 6 Готовность данных (Data Set Ready, DSR) Вход 7 Запрос для передачи (Request to send, RTS) Выход 8 Сброс для передачи (Clear to Send, CTS) Вход 9 Индикатор вызова (Ring Indicator, RI) Вход Уровни напряжения на линиях разъема составляют для логического нуля -15 вольт, для логической единицы - +15 вольт. Программирование асинхронного адаптера К сожалению, MS-DOS не содержит сколько-нибудь серьезной поддержки асинхронного адаптера. Две функции прерывания INT 21h с номерами 3 и 4 предназначены для чтения и записи байтов через асинхронный адаптер. Обе эти функции имеют дело с адаптером COM1 или AUX. Функция 3 получает в регистре AL символ, принятый из адаптера, функция 4 посылает в адаптер символ, записанный в регистр DL. Основной недостаток функций MS-DOS, предназначенных для работы с адаптером, заключается в отсутствии их функциональной полноты. Используя только функции MS-DOS, вы не сможете проанализировать ошибочные ситуации и изменить режим работы асинхронного адаптера - нет соответствующих средств. Функции BIOS, обслуживающие адаптер, более разнообразны. Однако и им присущи недостатки. Например, вы не сможете установить скорость передачи более 9600 бод или использовать режим фиксации четности. Нет возможности узнать текущий режим асинхронного адаптера, отсутствует поддержка модема. Поэтому для программирования асинхронного адаптера рекомендуется использовать порты ввода/вывода микросхемы 8250. Инициализация асинхронного адаптера Первое, что должна сделать программа, работающая с асинхронным адаптером - установить протокол обмена и скорость передачи данных. После загрузки операционной системы для асинхронных адаптеров устанавливается скорость 2400 бод, не выполняется проверка на четность, используются один стоповый бит и восьмибитовая длина передаваемого символа. Вы можете 20 изменить этот режим командой MS-DOS MODE. Выполнив ввод из порта 3FBh, программа может получить текущий режим адаптера. Для установки нового режима измените нужные вам поля и запишите новый байт режима по адресу 3FBh. Если вам надо задать новое значение скорости обмена данными, перед записью байта режима установите старший бит этого байта в 1. Затем последовательно двумя командами вывода загрузите делитель частоты тактового генератора. Младший байт запишите в порт 3F8h, старший - в порт 3F9h. Перед началом работы необходимо также проинициализировать регистр управления прерываниями (порт 3F9h), даже если в вашей программе не используются прерывания от асинхронного адаптера. Если прерывания вам не нужны, запишите в этот порт значение 0. На этом инициализацию можно считать законченной. 2.3 Варианты заданий 1. Скорость обмена 9600 бод, число битов данных - 8, число стоп-битов 1, четная четность без постоянного бита четности. 2. Скорость обмена 2400 бод, число битов данных - 6, число стоп-битов 2, нечетная четность с постоянным битом четности. 3. Скорость обмена 1200 бод, число битов данных - 5, число стоп-битов 0, отсутствие четности. 4. Максимальная скорость обмена, число битов данных - 5, число стоп-битов - 1, четная четность с постоянным битом четности. Максимальная скорость обмена, число битов данных - 6, число стоп битов 1.5, нечетная четность без постоянного бита четности. 2.4 Содержание отчета 1. Титульный лист 2. Введение 3. Вариант задания 4. Ход работы 5. Описание процесса соединения двух виртуальных машин виртуальному каналу через COM-порт, как описано в приложении А. 6. Проверка соединения с помощью команды PING. 7. Заключение. по 2.5 Контрольные вопросы 1. 2. 3. 4. 5. Для чего предназначен бит DLAB. Перечислите состав и назначение регистров интерфейса. Какой номер аппаратного прерывания соответствует устройству COM1? По какой формуле рассчитывается скорость обмена? Перечислите сигналы разъема DB-9 и их функции. 21 6. Алгоритм передачи данных. 7. Алгоритм приема данных. 8. Обработка ошибок приема/передачи. 9. Процедура инициализации контроллера. 10. Какими линиями позволяет управлять контроллер? 11. Для чего используется выход OUT2 контроллера? 12. Какие типы четности позволяет устанавливать контроллер? 13. Сколько битов данных позволяет установить контроллер? 14. Какова максимальная скорость передачи контроллера 8250? Работа 3 Программирование клавиатуры 3.1 Цель работы Цель работы: Целью работы является изучение работы микроконтроллера i8042 для управления клавиатурой и другими манипуляторами. Задачи работы: Получить умения и навыки по программированию выполнения команд микроконтроллером i8042. 3.2 Краткие теоретические сведения Подсистема клавиатуры ПК тира IBM PC/AT была представлена контроллером интерфейса клавиатуры (адаптером клавиатуры), выполненным на базе микроконтроллера i8042 (однокристальная микро-ЭВМ) и электронной клавиатурой, содержащей устройство управления, выполненное, как правило, на базе того же микроконтроллера i8042 или его аналога. Микроконтроллеры настраивались на выполнение функций адаптера клавиатуры или устройства управления клавиатурой (контроллера клавиатуры) соответствующим набором программных модулей, хранящихся в постоянном запоминающем устройстве (ПЗУ) соответствующего микроконтроллера. Для подключения клавиатуры к ПК на аппаратном уровне адаптер клавиатуры и контроллер клавиатуры реализуют двунаправленный асинхронный интерфейс с раздельными двунаправленными линиями передачи байтов данных в последовательном формате и синхронизирующей эту передачу последовательности синхросигналов. По этим же линиям реализуется сигнальный протокол интерфейса, обеспечивающий асинхронный обмен с квитированием приема и запросом передачи байтов данных, а также управлением потоком. На системной плате PC/XT адаптер клавиатуры был реализован аппаратной логикой — регистром сдвига, параллельный выход которого подключался к входам системного порта А, реализованного на контроллере параллельного интерфейса i8255. По приему байта от клавиатуры вырабатывалось аппаратное прерывание IRQ1, обработчик которого мог прочитать принятый байт из порта 60h (порт А). С помощью бит 7 и 6 порта 61h (порт В системного интерфейса i8255) была возможна программная блокировка и сброс клавиатуры РС/ХТ соответственно. 22 Сброс клавиатуры XT осуществлялся обнулением линии KB-Clock. В архитектуре PC/AT адаптер клавиатуры (адаптер клавиатуры) приобрел новое качество в сравнении с РС/ХТ. Он стал выполняться на базе однокристального микроконтроллера (однокристальная микро-ЭВМ) типа Intel 8042, который стал обеспечивать выполнение следующих функций: - управление определенными системными функциями и двунаправленным интерфейсом клавиатуры; - чтение информации о конфигурации системы для процедур BIOS. В микроконтроллере i8042 постоянно исполняется внутренняя микропрограмма, реагирующая на сигналы интерфейса клавиатуры и манипулятора, а также на команды и данные, поступающие от процессора. Эта микропрограмма хранится во внутреннем масочном ПЗУ микроконтроллера; внешне она недоступна, и микроконтроллер можно рассматривать как устройство с заданными свойствами (адаптер). Поскольку логика работы адаптера реализована программно, его реакция на команды процессора и сигналы интерфейсов относительно медленная — время отклика измеряется десятками микросекунд. В современных ПК адаптер может работать в одном из двух режимов: в режиме АТ или режиме PS/2. При инициализации (по аппаратному сбросу) адаптер устанавливается в режим PS/2 или AT, в зависимости от соответствующей настройки BIOS Setup. В режиме AT адаптер не выполняет функции, связанные с обслуживанием интерфейса мыши и игнорирует все команды, относящиеся к мыши. В режиме PS/2 адаптером поддерживается работа, как с клавиатурой, так и с манипулятором мышь. В этом режиме модифицируются некоторые разряды регистра состояния, регистра командного байта, а также изменяется назначение некоторых выводов портов адаптера. Упрощенная схема подключения к компьютеру клавиатуры и мыши типа PS/2 (PS-Mouse) показана на рисунке 3.1. Рисунок 3.1 - Упрощенная схема подключения клавиатуры и манипулятора PS-Mouse к компьютеру 23 Микроконтроллер i8042 На рисунке 3.2 приведена блок-схема адаптера клавиатуры, выполненного на базе микроконтроллера i8042, с распределением функций выводов портов, соответствующих режиму АТ. Рисунок 3.2 - Блок-схема адаптера клавиатуры PC/AT, выполненного на базе микроконтроллера i8042 На рисунке 3.3 представлен пример подключения микроконтроллера i8042 в системе компьютера РС/АТ. Из всех выводов входного порта P1 в данном конкретном схемотехническом решении используется только вывод 6, информирующий о типе используемого в системе видеомонитора. Выводы 4 (объем RAM) и вывод 7 (замок клавиатуры) подключены через резисторы к шине питания +5V, остальные имеют режим холостого хода. Синхронизация микроконтроллера осуществляется синхросигналами серии PCLK. Линии интерфейса клавиатуры KBD CLK и KBD DATA подтягиваются к уровню шины питания +5V через резисторы с сопротивлением 10 Ком и имеют в своих цепях LC-фильтры, защищающие от высокочастотных помех. Описание назначения выводов микроконтроллера i8042 приведено в таблице 3.1. Описание выводов приводится в общем виде, без указания их конкретного использования в архитектуре РС/АТ. Интерфейс: адаптер клавиатуры - система Микроконтроллер i8042 (адаптер клавиатуры) подключается к системе через шину периферийных устройств XD при помощи программно-доступных входного и выходного буферов, которые представляют собой два буфера шины данных: один для ввода и один для вывода. На рисунке 3.4 изображена схема подключения адаптера к шине XD. 24 Рисунок 3.3 - Подключение микроконтроллера i8042 в системе персонального компьютера РС/АТ Таблица 3.1 - Описание выводов микроконтроллера i8042 Обозначение вывода 1 TEST 0 TEST 1 Тип вывода 2 Вход 1 Номер вывода 3 1 39 2 3 XTAL 1, XTAL 2 RESET# Вход Вход 2 3 4 SS# Вход 5 CS# Вход 6 EA Вход 7 RD# Вход 8 Функциональное назначение 4 КОНТРОЛЬНЫЕ ВХОДЫ: входы, которые могут опрашиваться командами условного перехода. ЭТАЛОН ЧАСТОТЫ: TEST 1 (Т1) действует так же, как вход таймера событий (под управлением программы). TEST 0 (Т0) используется при программировании PROM и проверке ROM/EPROM. Он также используется в режиме SYNC для сброса состояния команды в S1 и синхронизации внутреннего генератора с РН1 4 ВХОДЫ: входы, используемые для подключения внешнего сигнала синхронизации СБРОС: используется для сброса триггеров состояния и установки счетчика команд в нуль. RESET используется при программировании и проверки EPROM ШАГ: используется совместно с выходом SYNC для пошагового выполнения команд в программе (EPROM). Когда этот вход не используется, он должен быть подключен к питанию 5 В. При подаче на этот выход 12,5 В, он используется также для установки устройства в режим SYNC ВЫБОР МИКРОСХЕМЫ: вход используется для выбора одного из нескольких микрокомпьютеров UPI, подключенных к общей шине данных ВНЕШНИЙ ДОСТУП: вывод внешнего доступа служит для эмуляции, тестирования, а также для проверки ROM/EPROM. Когда этот вход не используется, на него должен подаваться сигнал низкого уровня ЧТЕНИЕ: вход, разрешающий читать данные из 25 А0 Вход 9 WR# Вход 10 SYNC Выход 11 D0 - D7 (BUS) Вход-выход 12 - 19 P10 P17 Вход-выход 27 - 34 PRDS Вход-выход 25 P20 P27 Вход-выход 21 - 24 35 - 38 VCC VDD 40 26 VSS 20 выходного буфера или регистра состояния ВЫБОР КОМАНДА/ДАННЫЕ: вход адреса используется процессором для выдачи UPI данных (А0=0, F1 сброшен) или команды (А0=1, F1 установлен). При программировании и проверке А0=0 ЗАПИСЬ: вход, разрешающий записывать данные и команды во входной буфер контроллера ВЫХОДНОЙ СИНХРОИМПУЛЬС: выходной сигнал вырабатывается в каждом командном цикле 8042. SYNC используется в качестве строба для внешних схем; используется для синхронизации пошаговой работы ШИНА ДАННЫХ: трех стабильные двунаправленные линии буфера шины данных, которые используются для интерфейса между 8042 и 8 разрядной системной шиной данных ПОРТ 1: 8 разрядные квазидвунаправленные линии ввода-вывода порта 1. P10 - Р17 обращаются к строке шифра пользователя и разряду защиты ПРОГРАММА: многофункциональный вывод, который используется в качестве импульсного входа программы при программировании PROM. При доступе расширителя ввода вывода вывод PROG выполняет функцию строба адреса/днные для 8243. Когда этот вывод не используется, на него должен быть подан сигнал высокого уровня ПОРТ 2: 8 разрядные квази двунаправленные линии ввода-вывода порта 2. Младшие четыре разряда (P20 Р23) сопрягаются непосредственно с расширителем ввода вывода 8243 и содержат адрес и данные во время доступа в порты 4 - 7. Старшие четыре разряда (Р24 - P27) могут быть запрограммированы для обеспечения запроса прерывания и квитирования контроллера DMA. Под управлением программы Р24 может быть конфигурирован как прерывание по переполнению выходного буфера (OBF), Р25 как прерывание по переполнению входного буфера (IBF), Р26 как запрос DMA (DRQ), а P27 как подтверждение DMA (DACK) ПИТАНИЕ: вывод основного питания (5В) ПИТАНИЕ: 5 В при обычной работе, 12,5 В при программировании. Вывод резервного питания низкого напряжения "ЗЕМЛЯ" Рисунок 3.4 - Схема подключения адаптера клавиатуры к шине XD Выходной буфер представляет собой 8-разрядный регистр, который доступен системе только как читаемый порт с адресом 60h. Адаптер использует выходной буфер для передачи системе кодов сканирования, полученных от клавиатуры, и байтов данных, прочитанных по командам, посылаемым системой адаптеру клавиатуры, клавиатуре и манипулятору PS-Mouse. 26 Выходной буфер должен быть прочитан только после того, как установлен признак "выходной буфер полон" (разряд 0 регистра состояния). Входной буфер представляет собой 8-разрядный регистр, который доступен системе только для записи по адресам 60h или 64h. Операция записи по адресу 60h устанавливает флажок, который указывает на запись данных. Запись по адресу 64h устанавливает флажок, который указывает на запись команды для адаптера клавиатуры. Данные, записанные по адресу 60h, отсылаются клавиатуре, если не являются атрибутами команды для адаптера. Команда, записанная по адресу 64h, выполняется адаптером. Данные или команды могут быть записаны во входной буфер только после того, как сброшен признак "входной буфер полон" (разряд 1 регистра состояния). Регистр состояния, доступный для чтения по адресу 64h, несет информацию о состоянии адаптера и интерфейса, в частности о том, когда можно читать данные из выходного буфера, или производить запись во входной буфер адаптера. Интерфейсы: адаптер - клавиатура и адаптер - PS Mouse Адаптер клавиатуры и клавиатура связаны четырех проводным экранированным кабелем, включающим линию питания (+5 В), линию заземления, линии сигнала данных и сигнала синхронизации. Адаптер и клавиатура взаимодействуют с помощью механизма квитирования, используя двунаправленные линии данных и синхронизации, как для синхронизированной последовательной двунаправленной передачи байтов данных, так и для реализации механизма запроса-квитирования этих передач. Упрощенные схемы цепей данных и синхронизации приведены на рисунке 3.5. Клавиатура PC/AT передает и принимает данные в 11-разрядном формате. Адаптер автоматически определяет тип клавиатуры по формату данных. Первый разряд - стартовый, за ним следуют восемь информационных разрядов, разряд паритета и стоповый разряд. Посылка данных синхронизируется клавиатурой. В конце передачи адаптер клавиатуры блокирует интерфейс до тех пор, пока система не примет полученный байт. Если байт данных получен с ошибкой паритета, в клавиатуру автоматически отсылается команда RESEND (код FEh). На рисунке 3.6 показаны упрощенный 11-разрядный формат и пример передачи данных. Адаптер и манипулятор PS-Mouse связаны между собой интерфейсом, аналогичным интерфейсу подключения клавиатуры. Рисунок 3.5 - Упрощенные схемы цепей данных и синхронизации 27 Рисунок 3.6 - 11-разрядные форматы данных Примечание: клавиатура сбрасывает стоповый разряд линии данных в конце их посылки для подтверждения передачи. Программно доступные регистры адаптера К программно доступным регистрам адаптера клавиатуры и PS-Mouse относятся: регистр состояния, регистр команд, регистр данных и регистр командного байта. Первые три регистра доступны центральному процессору ПК непосредственно по адресам 64h и 60h соответственно. Регистр командного байта доступен по чтению и записи через выходной и входной буфер соответственно с помощью специальных команд, посылаемых адаптеру (команды 20h и 60h соответственно). Регистр состояния адаптера Регистр состояния представляет собой 8-разрядный регистр, который доступен системе только как читаемый порт с адресом 64h. Он содержит информацию о состоянии адаптера и интерфейсов клавиатуры и мыши. Может быть прочитан в любое время. Значение разрядов регистра следующее: бит 0 — признак "выходной буфере заполнен" (OBF) (0 — буфер пуст, 1 — буфер заполнен); бит 1 — признак "входной буфер заполнен" (0 — буфер пуст, 1 — буфер заполнен); бит 2 — признак типа последнего общесистемного сброса (0 — сброс по включению питания, 1 — программный сброс); бит 3 — признак записи команды (0 — последняя операция записи являлась операцией записи данных, 1 — записи команды); бит 4 — состояние «замка» клавиатуры (0 — клавиатура блокирована, 1 — не блокирована); бит 5 — в AT-режиме: признак "ошибка тайм-аута передачи" (0 — нормальное завершение переда-чи, 1 — произошла ошибка); в PS/2-режиме: признак "выходной буфер мыши заполнен" (Mouse_OBF) (0 — буфер пуст, 1 — буфер заполнен); бит 6 — в AT-режиме: признак "ошибка тайм-аута приема" (0 — нормальное завершение приема, 1 — произошла ошибка); в PS/2-режиме: общий признак "ошибка тайм-аута при приеме или передаче данных" (0 — нормальное завершение операции, 1 — произошла ошибка); бит 7 — признак: "ошибка паритета при приеме или передаче данных" (0 — 28 нет ошибки, 1 — обнаружена ошибка по четности). Регистр командного байта адаптера Командный байт адаптера клавиатуры хранится во внутреннем регистре адаптера и определяет режимы работы адаптера и интерфейса. Прочитать и записать командный байт можно с помощью команд адаптера 20h и 60h соответственно. Разряды регистра имеют следующее назначение: бит 0 — управление выдачей сигнала прерывания по готовности данных в выходном буфере клавиатуры (выходной буфер адаптера) (0 — генерация прерывания запрещена, 1 — разрешена); бит 1 — управление выдачей сигнала прерывания по готовности данных в выходном буфере мыши (0 — генерация прерывания запрещена, 1 — разрешена); бит 2 — установка признака системного сброса (значение, записанное в этот разряд, переносится в разряд 2 регистра состояния); бит 3 — управление функцией блокировки клавиатуры (0 — функция блокировки разрешена, 1 — функция запрещена и блокировка игнорируется); бит 4 — управление интерфейсом клавиатуры (0 — обмен данными с клавиатурой разрешен, 1 — запрещен); бит 5 — признак типа протокола передачи данных в АТ-режиме (0 — протокол IBM); управление интерфейсом мыши в PS/2-peжиме (0 — обмен данными с мышью разрешен, 1 — запрещен); бит 6 — преобразование скан-кодов в PC-совместимые (0 — выключено, 1 — включено); по умолчанию имеет значение 1, то есть скан-коды преобразуются в PC-совместимые; бит 7 — не используется (зарезервирован). Регистр команд Регистр команд адаптера доступен только по записи через порт 64h. В него заносятся коды команд, которые должен выполнять адаптер. Команды можно посылать в порт 64h только при условии, что входной буфер пуст (бит 1 регистра состояния =0). Регистр данных Регистр данных доступен для записи и считывания через порт 60h. В режиме считывания он служит для приема информации от клавиатуры, адаптера и мыши. В режиме записи регистр данных служит для передачи команд и их атрибутов клавиатуре, координатному устройству (мыши PS/2-типа) и атрибутов команд самому адаптеру. Какого-либо особого формата данный регистр не имеет. Команды адаптера Управление адаптером клавиатуры и манипулятора мышь осуществляется одно– или двухбайтными командами. Первый, возможно единственный, байт команды записывается в порт 64h, а следующий (атрибут команды), если он есть, записывается в порт 60h. Коды команд адаптера приведены в таблице 3.2. Некоторые адаптеры в режиме PS/2 могут выполнять дополнительный набор команд, использовавшийся в компьютерах PS/2. В основном эти команды 29 расширяют диагностические возможности и позволяют организовывать парольную защиту. Ниже приводится описание этого набора команд. Считать байт памяти (20h-3Fh). Данные команды предназначены для считывания памяти контроллера адаптера клавиатуры. Биты 5-0 команды определяют шестнадцатеричный адрес внутренней памяти 8042, т.е. сам код команды несет в себе параметр. Команда с кодом 20h (считать управляющий (командный) байт), таким образом, является всего лишь частным случаем этой группы команд. Запрошенный байт памяти помещается адаптером в выходной буфер. Таблица 3.2 - Коды команд адаптера клавиатуры и мыши Код Функция 1 20h 60h A1h А4h A5h А7h А8h А9h AAh ABh ACh ADh AEh AFh C0h D0h D1h D2h D3h D4h 2 Прочитать текущий командный байт. Адаптер помещает значение командного байта в порт 060h. Загрузить новый командный байт. Это часть 2-байтовой операции. Чтобы записать новый командный байт, необходимо 1) записать 60h в порт 064h, 2) записать командный байт в порт 060h Чтение номера версии адаптера Проверка пароля (признака подключения клавиатуры). При успешном завершение команды через выходной буфер возвращается код F1h (PS/2 адаптер). Специальное чтение - 8042 помещает в выходной буфер истинное значение порта 2 за исключением разрядов 4 и 5, которым дается новое определение. Не генерируется состояние «Буфер полон». Если разряд 5 = 0, используется 9-разрядная клавиатура (XT); 5 = 1, используется 11-разрядная клавиатура; 4 = 0, запрещается прерывание по заполнению выходного буфера; 4 = 1, разрешается прерывание по заполнению выходного буфера. В PS/2 адаптерах данная команда инициирует процедуру установки пароля. Запретить работу с мышью. Выполняется только в режиме PS/2. Разрешить работу с мышью. Выполняется только в режиме PS/2. Тест интерфейса мыши. При успешном выполнение команды в выходной буфер помещается код 00h. Инициализация – 8042 инициализирует порты 1 и 2, запрещает клавиатуру и очищает указатели буфера. Затем он помещает код 55h в выходной буфер. Контроль интерфейса клавиатуры - направляет 8042 на тестирование линий данных и синхронизации интерфейса клавиатуры. Выходной буфер (порт ввода 60h) получает результаты тестирования: 00h - ошибок не обнаружено; 01h - линия синхронизации клавиатуры «остается нулевой»; 02h - линия синхронизации клавиатуры «остается единичной»; 03h - линия данных клавиатуры «остается нулевой»; 04h - линия данных клавиатуры «остается единичной». Дамп диагностирования. Резервируется для диагностирования Запретить клавиатуру. Устанавливает разряд 4 командного байта 8042, который запрещает интерфейс клавиатуры. До разрешения клавиатуры данные не передаются и не принимаются Разрешить клавиатуру. Сбрасывает разряд 4 командного байта 8042, который разрешает интерфейс клавиатуры Выдать номер версии Прочитать входной порт. Настраивает 8042 на передачу содержимого входного порта и помещение его в выходной буфер (порт ввода 60h). Пользуйтесь этой командой только при пустом выходном буфере Прочитать выходной порт. Настраивает 8042 на передачу текущего байта выходного порта в выходной буфер (порт ввода 60h). Пользуйтесь этой командой только при пустом выходном буфере. Записать в выходной порт. Поместить следующий байт, записанный по адресу 60h, в выходной порт. Разряд 0 выходного порта подключен к системному сбросу. Этот разряд не должен быть нулевым. Записать байт в выходной буфер клавиатуры. Записать байт в выходной буфер мыши (PS/2 режим). Передать манипулятору мышь байт данных (PS/2 режим). Команда D4h автоматически разрешает интерфейс мыши, сбрасывая D5 командного байта адаптера в ноль (т.е. дополнительно выполняется команда A8h). 30 E0h F0h – FFh Прочитать входы TEST0 и TEST1 (тестовый порт). Настраивает 8042 на передачу текущего состояния выводов TEST0 и TEST1 в выходной буфер (порт вывода 60h). TEST0 - это разряд 0, а TEST1 – 1 Пульсация выходного порта. Может быть вызвана пульсация разрядов 0-3 выходного порта (перевод в нулевое состояние примерно на 2-6 мкс). Разряды 0-3 в этой команде указывают, какой разряд выходного порта должен пульсировать, если 0, пульсация разрешена, если 1 - запрещена. Заметим, что разряд 0 выходного порта связан со сбросом системы. Пульсация разряда 0 может привести к сбросу системы. Код команды FFh выполняется адаптером ничего не изменяя в нем (нулевая или холостая команда). Записать байт памяти (60h-7Fh). Данные команды позволяют изменить содержимое памяти адаптера, при этом, аналогично командам 20h-3Fh, биты 5-0 команды определяют шестнадцатеричный адрес памяти, по которому записывается байт данных, передаваемый вслед за командой по адресу 60h. Проверить установку пароля (A4h). Данная команда предназначена для проверки наличия становленного пароля. Результат проверки в виде одного байта помещается в ответ на эту команду в выходной буфер (адрес 60h). При этом значение FAh означает, что пароль установлен, а значение F1h, что пароль не установлен. Установить пароль (A5h). Данная команда инициирует процедуру установки пароля. После получения команды адаптер считывает из входного буфера байты, составляющие собственно пароль. Нулевой байт в передаваемой последовательности означает, что все байты, составляющие пароль, переданы. Байты, составляющие пароль, должны передаваться в формате скан-кодов клавиш. Пароль может быть установлен в любое время, при этом старое значение пароля теряется. Задание пароля, состоящего из единственного нулевого байта, равносильно отмене пароля. Следует отметить, что адаптер не предоставляет никакой команды для считывания установленного пароля. Включить парольную защиту (A6h). По этой команде адаптер клавиатуры включает функцию парольной защиты, что означает, что до получения адаптером последовательности скан-кодов, определенной в пароле, адаптер не передаст в систему никакой информации и не реагирует на команды со стороны системы. Обычно данная команда выполняется при начальном включение компьютера, а также при выполнении системной утилиты, входящей в состав базового программного обеспечения для PS/2. С точки зрения пользователя, после выполнения этой команды компьютер оказывается заблокированным до введения пароля. Порты ввода и вывода микроконтроллера i8042 Архитектура микроконтроллера i8042 включает в себя три порта для непосредственного подключения аппаратуры. При реализации функций адаптера клавиатуры и PS-Mouse микроконтроллером с помощью двух восьмиразрядных портов реализуются последовательные интерфейсы, а также осуществляется управление вентилем Gate A20, сигналом сброса системы и чтение сигналов от джамперов системной платы и ключа блокировки клавиатуры. Эти порты не имеют непосредственного отображения в пространстве адресов ввода-вывода PC; доступ к ним осуществляется через команды адаптера. Кроме этих восьмиразрядных портов микроконтроллер имеет два специальных входа Т0 и Т1 (тестовый порт), которые могут считываться его микропрограммой и использоваться в качестве источников его внутренних прерываний (это не 31 прерывания CPU). Каждая из двунаправленных интерфейсных линий KB-Data, KB-Clock, MS-Data и MS-Clock реализуется битом порта вывода и порта ввода. В режиме PS/2 для чтения линий KBClock и MS-Clock используются входы Т0 и Т1 соответственно, в режиме AT вход Т1 используется для чтения линии KB-Data. Назначение выводов портов в режиме АТ показано на рисунке 3.2, а в режиме PS/2 - приводится ниже. Порт ввода Р1 доступен для чтения по команде C0h; в режиме PS/2 имеет следующее назначение разрядов: бит 7 - ключ блокировки клавиатуры (KeyLock): 0 - клавиатура заблокирована; бит 6 - перемычка установки видеорежима: 0 - цветной (Color), 1 монохромный (Mono); бит 5 - системная перемычка: 0 - замкнута; бит 4 - перемычка задания объема ОЗУ: 0 - 256 Кбайт, 1 - 512 Кбайт и более; биты 3, 2 - не используются; бит 1 - линия MS-Data, в режиме АТ не используется; бит 0 - линия KB-Data, в режиме АТ не используется. В современных ПК используются только биты 0, 1 и 7; в режиме AT биты 0 и 1 не используются. Порт вывода Р2, доступный для записи и чтения по командам D1h и D0h соответственно, имеет следующее назначение разрядов: бит 7 - выходная линия KB-Data; бит 6 - выходная линия KB-Clock; бит 5 - запрос прерывания от дополнительного интерфейса (IRQ12), в режиме AT не используется; бит 4 - запрос прерывания от клавиатуры (IRQ1); бит 3 - линия MS-Clock, в режиме AT не используется; бит 2 - линия MS-Data, в режиме AT не используется; бит 1 - вентиль линии адреса А20 (Gate А20): 0 - А20 обнулен, 1 управляется выводом процессора; бит 0 - альтернативный сброс процессора (сигнала INIT, без формирования общего сигнала сброса); при переключении значения из "1" в "0" возможен сброс или остановки по исключительным ситуациям. Тестовый порт Т, доступен для чтения командой Е0h, имеет следующее назначение разрядов: бит 0 (Т0) - входная линия KB-Clock; бит 1 (Т1) - входная линия MS-Clock, в режиме АТ - входная линия KBData. Функционирование адаптера При обеспечение передачи данных с клавиатуры и манипулятора мышь в систему адаптер под управлением своего внутреннего программного обеспечения выполняет ряд предусмотренных интерфейсом действий. Например, приняв посылку от клавиатуры, адаптер клавиатуры и мыши выполняет внутреннюю трансляцию скан-кода (если это не запрещено 32 командным байтом), помещает его в выходной буфер и устанавливает в регистре состояния флажок OBF=1 (разряд 0), что приводит к генерации запроса прерывания IRQ1 (если это не запрещено командным байтом). В ответ на это хост должен прочитать данные (транслированный скан-код, префиксы и т. п.) из порта данных (60h). После чтения адаптер сбрасывает флажок OBF в ноль. Трансляция скан-кодов обеспечивает программную совместимость клавиатур XT и AT (см. ниже) по чтению скан-кодов из порта 60h. При получении посылки от мыши адаптер не выполняет никаких преобразований и помещает ее в выходной буфер мыши, устанавливает в регистре состояния флажок Mouse_OВF=1 (разряд 5), что приводит к генерации запроса прерывания IRQ12 (если это не запрещено командным байтом). Затем, примерно через 15 мкс, адаптер переписывает полученный байт из выходного буфера мыши в выходной буфер адаптера (клавиатуры) и устанавливает в регистре состояния флажок OBF=1 (разряд 0). По этому флагу данные от мыши должны быть считаны хостом (системой) из порта 60h. После чтения адаптер сбрасывает флажок OBF а флажок Mouse_OBF оставляет в единичном состоянии. При передаче команд и данных в клавиатуру адаптер выполняет сравнительно простые операции: он просто передает в клавиатуру байт данных, который был записан системой в его входной буфер по адресу 60h и ожидает ответного кода от клавиатуры. Получив ответный код, адаптер просто помещает его в выходной буфер без трансляции. Остальные действия соответствуют ранее рассмотренным в процедуре получения посылки от клавиатуры. При передаче команд и данных в PS-Mouse необходимо сначала по адресу 64h передать в адаптер команду D4h "Передать мыши байт данных". После освобождения входного буфера по адресу 60h необходимо записать байт, который адаптер должен передать манипулятору мышь. Адаптер передает этот байт мыши и ожидает ответного кода. Получив от мыши ответный код, адаптер помещает его в выходной буфер мыши. Остальные действия соответствуют ранее рассмотренным в описании процедуры получения посылки от PS Mouse. После получения по адресу 64h команды, по которой адаптер должен возвращать данные, он помещает байт данных в выходной буфер и устанавливает в регистре состояния OBF=1, что приводит к генерации запроса прерывания IRQ1 (если это не запрещено командным байтом). После этого данные должны быть прочитаны из порта данных (по адресу 60h). Если команда возвращает несколько байтов данных, прерывание генерируется для каждого байта. После получения по адресу 64h кода команды, которая должна содержать дополнительный байт атрибутов, адаптер инициирует процедуру выполнения этой команды. Далее он устанавливает в регистре состояния признак "Входной буфер пуст" (разряд 1 регистра состояния устанавливается в 0) и ожидает получения от системы через регистр данных (входной буфер) с адресом 60h атрибутного байта команды. После его получения адаптер завершает выполнение этой команды и освобождает входной буфер. Следует отметить, что на время выполнения адаптером команд, адаптер блокирует интерфейсы клавиатуры и мыши, устанавливая низкий уровней на их 33 линиях синхронизации KB-Clock и MS-Clock. Аналогично при приеме данных от клавиатуры адаптер блокирует интерфейс мыши на время передачи одного байта и наоборот. Программирование адаптера клавиатуры и PS Mouse Адаптер программируется в адресном пространстве портов 60h и 64h. Перед записью команды или данных в порты 60h или 64h необходимо убедиться, что в регистре состояния адаптера установлен указатель "Входной буфер пуст" (разряд 1 установлен в 0). Перед чтением данных из порта 60h необходимо проверить регистр состояния, который должен указывать состояние "Выходной буфер полон" (разряд 0 установлен в 1) или "Выходной буфер мыши полон" (разряд 5 установлен в 1). Для чтения данных из выходного буфера адаптера по адресу 60h используется команда IN микропроцессора. Данные в выходном буфере - это данные от клавиатуры или мыши, если только адаптер предварительно не получил определенную команду, например 20h - читать командный байт адаптера. В последнем случае из выходного буфера читается значение текущего командного байта. Для передачи данных в клавиатуру через входной буфер по адресу 60h используется команда OUT. Все данные, записываемые во входной буфер по адресу 60h адаптером передаются в клавиатуру, если только адаптер не получил много байтовую команду, например 60h - записать командный байт. В последнем случае переданный через порт 60h байт будет записан в регистр командного байта, а не передан в клавиатуру или мышь. Для передачи данных в манипулятор мышь используется команда D4h - передать мыши байт данных. После получения этого кода по адресу 64h, адаптер ожидает поступление байта данных во входной буфер по адресу 60h для передачи его в манипулятор мышь. Чтобы выдать на клавиатуру много байтовую команду, необходимо ввести первый командный байт в порт 60h и после положительного ответа клавиатуры (код FAh в порту 60h) ввести второй командный байт (атрибут) в порт 60h и дождаться ответа от клавиатуры (код FAh в порту 60h). Для передачи много байтовой команды манипулятору мышь необходимо выполнять аналогичный набор операций, только перед каждым занесением байта данных по адресу 60h, необходимо по адресу 64h заносить команду D4h . Для чтения регистра состояния адаптера используется команда IN (ввод из порта 64h), а чтобы передать команду в адаптер, используется команда OUT (вывод в порт 64h). Запись по этому адресу указывает, что следующий байт, записанный в порт 60h, может быть атрибутом команды. Большинство команд выполняются за один шаг. Однако для выполнения некоторых команд требуется второй шаг, например чтение или запись портов и регистров 8042. Для работы с адаптером клавиатуры и PS-Mouse используются следующие команды языка Ассемблер: IN AL, 64h ;прочитать в аккумулятор AL процессора содержимое регистра состояния 8042 34 OUT 64h, AL ;вывести команду из AL в 8042 IN AL, 60h ;прочитать в AL данные из порта 60h OUT 60h, AL ;вывести данные из AL в порт 60h Перед отсылкой команд и данных в порты 64h и 60h программа должна предварительно убедиться в том, что входной буфер адаптера пуст и, следовательно, адаптер готов получить байт. Аналогично перед чтением данных из порта 60h программа должна предварительно убедиться в том, что в выходной буфер адаптер поместил байт данных. Информацию о состоянии входного и выходного буферов программа может получить чтением регистра состояния по адресу 64h. Программирование портов микроконтроллера i8042 Для работы с портами микроконтроллера i8042 используются команды адаптера D1h, D0h, C0h и E0h (см. табл. 1.2). Запись в выходной порт. Для записи в выходной порт необходимо: дождавшись освобождения входного буфера передать команду D1h (записать в выходной порт) по адресу 64h, дождавшись освобождения входного буфера передать значение данных для выходного порта по адресу 60h. При программировании состояния разряда адресной шины A20 через выходной порт i8042 программа, использующая определенный режим адресации, должна «убедиться», что разряд Gate A20 установлен на нужное значение перед тем, как будут продолжены действия программы в выбранном режиме адресации. Например, некоторые программы разрешают A20 при входе в защищенный режим для доступа в память выше адреса 100000h. Эти программы перед обращением к этой области памяти должны ждать, пока A20 будет действительно разрешен аппаратно. Для того чтобы быть уверенным в установке A20 на нужное значение, рекомендуется выдать адаптеру нулевую команду (FFh) после завершения последовательности команды записи в выходной порт (D1h). Когда адаптер принимает эту нулевую команду, программа может быть «уверена», что предыдущая команда (записать в выходной порт) выполнена, и разряд порта Gate A20 установлен аппаратно на требуемое значение. Контролировать состояние вывода А20 чтением состояния выходного порта i8042 не рекомендуется, поскольку в компьютерах старше РС/АТ этот разряд всегда показывает значение 1. Не рекомендуется использовать команду D1 для изменения любого разряда выходного порта, кроме разряда 1 (Gate A20). Это связано с тем, что изменение состояния разряд 0 выходного порта с 1 на 0 в компьютерах РС/АТ и вплоть до Pentium 133/166 вызывает сброс системы. В чипсетах современных компьютеров операция записи в выходной порт выполняется как "холостая" операция, т.е. никакая информация в регистр выходного порта не записывается, однако фактически состояние управления линией А20 изменяется в зависимости от значения разряда 1 записываемого в выходной порт байта. Факт переключения состояния управления линией А20 35 можно проверить чтением в реальном режиме адресации содержимого области памяти HYMEM (первые 64 килобайта памяти выше адреса 100000h) и нижней страницы памяти. Если их содержимое со сдвигом на 16 адресов совпадает, то линя А20 установлена в 0, если нет, то ее состояние управляется адресным регистром процессора. Чтение выходного порта. Чтобы прочитать значение выходного порта i8042, нужно: дождавшись освобождения входного и выходного буферов адаптера передать команду D0h (прочитать выходной порт) по адресу 64h, дождавшись заполнения выходного буфера прочесть значение выходного порта по адресу 60h. Чтение входного порта. Чтобы прочитать значение входного порта i8042, нужно: дождавшись освобождения входного и выходного буферов адаптера передать по адресу 64h команду C0h (прочитать входной порт), дождавшись заполнения выходного буфера прочесть значение входного порта по адресу 60h. Чтение тестового порта. Чтобы прочитать значение тестового порта (TEST) микроконтроллера, необходимо: дождавшись освобождения входного и выходного буферов адаптера передать по адресу 64h команду E0h (чтение тестового порта), дождавшись заполнения выходного буфера прочитать значение тестового порта по адресу 60h. Примеры программирования на Ассемблере Передача команды в адаптер может быть выполнена следующим фрагментом программы [8]: STATUS_REG EQU 64h ;Регистр состояния ;Флаги регистра состояния: IBF EQU 00000010b ;- входной буфер полон OBF EQU 00000001b ;- выходной буфер полон ; INBUF_COM EQU 64h ;Входной буфер для команды INBUF_DTA EQU 60h ;Входной буфер для данных OUTBUF EQU 60h ;Выходной буфер ; SOME_CMD EQU ?? ;Некоторая команда адаптера SOME_PAR EQU ?? ;Возможно некоторый параметр ENDS CODESEG ХОR СХ,СХ ;Загрузить счетчик для ;ограничения времени цикла CLI ;Запретить прерывания ; ;Ждать, пока входной буфер не будет свободен ; Teet_IBF1: IN AL,STATUS_REQ TEST AL,IBF 36 LOOPNZ TEET_IBF1 JNZ BAD_EXIT ;Ошибка, если буфер не освободился за FFFFh повторов MOV AL,SOME_CMD ;Послать команду в адаптер OUT INBUF_COM,AL ; ; Следующий участок кода необходим, если после команды должен пере; даваться некоторый параметр; иначе, необходимо просто разрешить ; прерывания (выдать команду STI). ; ХОR СХ,СХ TEET_IBF2: IN AL,STATUS_REG ;Ждать, пока входной буфер не ;освободится (команда не будет принята) TEST AT,IBF LOOPNZ TEET_IBF2 JNZ BAD_EXIT ;Обработать ошибку MOV AL,SOME_PAR ;Послать параметр OUT INBUF_DTA,AL STI ;Разрешить прерывания В том случае, если команда адаптера предусматривает получение ответа, перед ее выполнением необходимо убедиться, что выходной буфер адаптера пуст. Ниже приведен фрагмент программного кода, демонстрирующий выполнение команды с получением ответа от адаптера: CLI ; Запретить прерывания ; ; Ждать в бесконечном цикле, пока выходной буфер не освободится, ; т.е. пока все из него не считаем (лучше конечно цикл ограничить). ; TEET_OBF1: IN AL,STATUS_REG TEST AL,OBF JZ READY_TO_READ IN AL,OUTBUF JMP SHORT TEET_OBF1 READY_TO_READ: XOR CX,CX ;Загрузить счетчик ограничения циклов ; ;Ждать, пока входной буфер не будет свободен ; TEET_IBF1: IN AL,STATUS_REQ TEST AL,IBF LOOPNZ TEST_IBF1 JNZ BAD_EXIT ;Ошибка, если буфер не осво;бодился за FFFFh повторов MOV AL,SOME_CMD ;Послать команду OUT INBUF_COM,AL XOR CX,CX ; ;Поскольку прерывания запрещены, а выходной буфер пуст, первое, что там появится - ответ адаптера. ; TEST_OBF2: IN AL,STATUS_REG ;Ждать, пока не появится ответ то 37 TEST AL,OBF JZ TEET_OBF IN AL,OUTBUF ;Считать ответ адаптера STI ;Разрешить прерывания Следует обратить внимание на то, что считывание ответа адаптера из выходного буфера всегда приводит к сбросу признака "выходной буфер полон" (разряд 0 регистра состояния сбрасывается в 0). Сам же выходной буфер не очищается и если повторно прочитать его содержимое без проверки признака его заполнения, то будет выдано значение последнего значения выходного буфера. 3.3 Варианты заданий 1. Написать программу, которая реализует процедуру чтения байта состояния выходного порта микроконтроллера i8042. 2. Написать программу циклического выполнения команд, возвращающих результаты. 3. Написать программу циклического выполнения однобайтовых команд разрешения и запрещения интерфейсов мыши и клавиатуры. 4. Написать программу циклического выполнения команды самотестирования микроконтроллера i8042. 5. Написать программу циклического выполнения двухбайтовых команд. 6. Написать программу циклического выполнения команд D3h и D4h. 7. Написать программу циклического выполнения трехбайтовой команды AFh «выдать номер версии». 3.4 Содержание отчета 1. Титульный лист 2. Введение 3. Вариант задания 4. Ход работы 5. Программа выполнения команды адаптера клавиатуры. 6. Заключение. 3.5 Контрольные вопросы 1. Для чего используется подсистема клавиатуры и манипуляторов? 2. Через какое устройство подключаются к системе клавиатура и PS-Mouse? 3. Кратко охарактеризуйте системную поддержку клавиатуры на уровне BIOS. 8. Кратко охарактеризуйте интерфейс клавиатуры. 9. Охарактеризуйте упрощенную схему подключения клавиатуры и PS-Mouse к компьютеру (Рисунок 3.1). 10. Как подключалась клавиатура к РС/ХТ? 11. Какие новые качества приобрел адаптер клавиатуры в архитектуре 38 РС/АТ? 12. Дайте краткое описание функционирования адаптера клавиатуры и PSMouse. 13. Охарактеризуйте блок-схему микроконтроллера адаптера клавиатуры РС/АТ (Рисунок 3.2). 14. Охарактеризуйте схему подключения микроконтроллера i8042, представленную на рисунке 3.3. 15. Охарактеризуйте интерфейс подключения адаптера клавиатуры к системе. 16. Дайте краткое описание интерфейса подключения клавиатуры и PSMouse к адаптеру. 17. Дайте краткое описание формата регистра состояния адаптера клавиатуры и PS-Mouse. Работа 4 Изучение интерфейса жидкокристаллического дисплея Date Vision 4.1 Цель работы Цель работы: изучить интерфейс жидкокристаллического дисплея Date Vision на примере сопряжения микроконтроллера (МК) ATmega 16 и цифрового датчика температуры DS18B20. Задание: Написать программу вывода значения температуры на жидкокристаллический дисплей (ЖКД) DV16100 4.2 Краткие теоретические сведения Алфавитно-цифровые индицирующие ЖК-модули Контроллер HD44780 фирмы Hitachi фактически является промышленным стандартом и широко применяется при производстве алфавитно-цифровых ЖКИмодулей. Аналоги этого контроллера или совместимые с ним по интерфейсу и командному языку микросхемы, выпускают множество фирм, среди которых: Epson, Toshiba, Sanyo, Samsung, Philips. Еще большее число фирм производят ЖКИ-модули на базе данных контроллеров. Эти модули можно встретить в самых разнообразных устройствах: измерительных приборах, медицинском оборудовании, промышленнном и технологическом оборудовании, офисной технике - принтерах, телефонах, факсимильных и копировальных аппаратах. Алфавитно-цифровые ЖКИ-модули представляют собой недорогое и удобное решение, позволяющее сэкономить время и ресурсы при разработке новых изделий, при этом обеспечивают отображение большого объема информации при хорошей различимости и низком энергопотреблении. Возможность оснащения ЖКИ-модулей задней подсветкой позволяет эксплуатировать их в условиях с пониженной или нулевой освещенностью, а исполнение с расширенным диапазоном температур (-20°С...+70°С) в сложных эксплуатационных условиях, в том числе в переносной, полевой и даже, иногда, в 39 бортовой аппаратуре. Контроллер HD44780 потенциально может управлять 2-мя строками по 40 символов в каждой (для модулей с 4-мя строками по 40 символов используются два однотипных контроллера), при матрице символа 5 х 7 точек. Контроллера также поддерживает символы с матрицей 5 х 10 точек, но в последние годы ЖКИмодули с такой матрицей практически не встречаются, поэтому можно считать, что фактически бывают только символы 5 х 7 точек. Существует несколько различных более-менее стандартных форматов ЖКИмодулей (символов х строк): 8 х 2, 16 х 1, 16 х 2, 16 х 4, 20 х 1, 20 х 2, 20 х 4, 24 х 2, 40 х 2, 40 х 4. Встречаются и менее распространенные форматы: 8 х 1, 12 х 2, 32 х 2 и др., - принципиальных ограничений на комбинации и количество отображаемых символов контроллер не накладывает - модуль может иметь любое количество символов от 1 до 80, хотя в некоторых комбинациях программная адресация символов может оказаться не очень удобной. В рамках одного формата могут производиться ЖКИ-модули нескольких конструктивов, отличающихся как габаритами ЖКИ (и, как следствие, размерами символов), так и размерами платы и посадки. Например, фирма Powertip предлагает алфавитно-цифровые ЖКИ-модули 11-ти форматов (от 8 х 2 до 40 х 4) в 37-ми различных конструктивах, 16 х 1 в 6-ти, а модули формата 16 х 2 в 11-ти. Изучая каталоги различных фирм-производителей ЖКИ-модулей, можно убедиться, что одни форматы и конструктивы являются собственными разработками и не обнаруживают аналогов в номенклатуре остальных фирм, другие являются фактическими стандартами и производятся большинством изготовителей. В качестве примера можно назвать ЖКИ-модуль формата 24 х 2, именуемый PC2402-A у Powertip, ED24200 у EDT, DMC-24227 у Optrex, SC2402A у Bolymin, MDLS-24265 у Varitronix, PVC240202 у Picvue и др., все эти модули имеют одинаковые конструктивные размеры и являются взаимозаменяемыми. В рамках одного конструктива ЖКИ-модуль может иметь еще ряд модификаций. В частности, могут применяться несколько типов ЖКИ, отличающихся цветом фона и цветом символов, а также по применяемым ЖКматериалам и структуре: TN, STN и FSTN типа. ЖКИ STN и FSTN типа имеют более высокую стоимость, но одновременно обладают повышенной контрастностью и вдвое большим максимальным углом обзора, причем ЖКИ FSTN типа имеют лучшие характеристики, чем STN. ЖКИ-модули могут оснащаться задней подсветкой, размещаемой между ЖКИ и печатной платой, для чего ЖКИ производятся с полупрозразным или прозрачным задним слоем (в последнем случае считывание информации возможно только при наличии подсветки). Собственно подсветка может быть реализована несколькими способами: с помощью электролюминисцентной панели, представляющей собой тонкую пленку, излучающую свет при прикладывании переменного тока повышенного напряжения порядка 100...150 В; люминисцетной лампой с холодным катодам (также раюотающей при повышенном напряжении), излучение которой равномерно распределяется по всей площади ЖКИ с помощью отражателя или плоского световода; третий вариант - подсветка на основе светодиодной матрицы. 40 Первые два способа подсветки обеспечивают высокую яркость и могут иметь белый тон свечения при относительно низком потреблении, но требуют наличия источника повышенного напряжения, что создает некоторые трудности при создании аппаратуры с автономным питанием. Напротив, светодиодная подсветка не требует высоковольтного источника (прямое падение напряжения составляет 4,2 В) и при использовании несложного источника тока позволит производить питание от источника с напряжением 5 В. Кроме того, светодиодная подсветка имеет значительно большее (в десятки раз) время наработки, а также только она допустима к эксплуатации в расширенном диапазоне температур (-20°С...+70°С). Для соединения ЖКИ-модуля с управляющей системой используется параллельная синхронная шина, насчитывающая 8 или 4 (выбирается программно) линий данных DB0...DB7, линию выбора операции R/W, линию выбора регистра RS и линию стробирования/синхронизации Е. Кроме линий управляющей шины имеются две линии для подачи напряжения питания 5 В GND и VCC, и линия для подачи напряжения питания драйвера ЖКИ - V0. Указанные выше названия линий шины являются стандартными, но существует множество различных вариантов расположения контактов у каждого конкретного конструктива ЖКИ-модуля. На самом деле, единственным реально стандартным вариантом расположения контактов является двухрядное 14-ти контактное поле, расположенное вертикально в левой части модуля, а также совпадающее в ним двухрядное 16-ти контактное поле, содержащее дополнительную пару контактов с подключенными к ней выводами питания подсветки. В любом случае, для получения достоверной информации необходимо воспользоваться соответствующей справочной литературой изготовителя модуля. На начальном этапе необходимо подать питание на ЖКИ-модуль и добиться от него признаков работоспособности. Схема включения модуля, рассчитанного на стандартный диапазон температур, показана на рисунке 4.1а. Подстроечный резистор R1 позволяет плавно менять напряжение питания драйвера ЖКИ, что приводит к изменению угла поворота жидких кристаллов. Этим резистором можно отрегулировать фактическую контрастность при некотором преимущественном угле наблюдения (снизу-вверх или сверху-вниз). Включение в данную схему ЖКИ-модуля, рассчитанного на расширенный диапазон температур, не приведет к успеху, так как из-за особенностей применяемых в них ЖК-материалов, эти ЖКИ требуют повышенного напряжения питания и при питании напряжением 5 В изображение либо будет отсутствовать совсем, либо будет слабоконтрастным. Для преодоления ситуации необходимо подать на вывод V0 отрицательное напряжение (напряжение на ЖКИ определяется разностью VCC и V0), составляющее в предельном случае - 5 В. Если в схеме отсуствует источник отрицательного напряжения, то не составляет труда собрать простейший преобразователь, например, по схеме на рисунке 4.1б. Для активизации ЖКИ-модуля подайте напряжение питания и повращайте движок резистора R1 (рисунок 4.1). После окончания цикла внутренней инициализации модуль включается в режим развертки одной верхней строки. При изменении напряжения на выводе V0 сегменты этой строки должны менять свое состояние от прозрачного до непрозрачного, что является свидетельством 41 правильного подключения питания модуля и работоспособности контроллера и драйверов ЖКИ. Рисунок 4.1 - Подача питания на ЖКИ-модуль Установите движок в такое положение, при котором изображение сегментов в верхней строке едва проступает на основном фоне ЖКИ. Теперь ЖКИ-модуль готов к приему и отображению информации. После того, как вы добьетесь отображения на индикаторе какого-либо текста, то сможете более точно отрегулировать изображение в соответствии с необходимой контрастностью и требуемым углом наблюдения. Для соединения модуля с управляющей системой можно выбрать один из двух вариантов: по 8-ми или 4-х разрядной шине. В первом случае потребуется 11 сигнальных линий, во втором - только 7. Сам процесс обмена также может быть организован двояко. Можно подключить ЖКИ-модуль к системной шине (если таковая имеется) и выполнить обмен в синхронном режиме с максимальной скоростью. Этому широко распространенному в прошлые годы сопособу присущ ряд недостатков. Во-первых, большинство современных устройств выполняется с применением однокристальных микро-ЭВМ без использования дополнительной внешней памяти и, как следствие, системная шина у этих устройств просто отсутствует. Во-вторых, в современных системах повышенной сложности и производительности, у которых присутствует дополнительная память и, естественно, системная шина, скорость операций на шине находится за пределами возможностей контроллера HD44780 (2 МГц при питании 5 В и 1 МГц при 3 В). Это может потребовать введения дополнительных схем для замедления скрости работы шины при выполнении операций обмена с ЖКИ-модулем. В-третьих, подключение к системной шине в большинстве случаев потребует вводить схемы дешифрации и формирования сигналов Е и R/W, что опять приведет к дополнительным затратам. Все сказанное выше не означает, что вариант с подключением к шине приниципиально неэффективен. В какой-то конкретной системе этот способ, наоборот, может быть самым оптимальным. Кроме того, некоторые современные процессоры, например, семейство МС68НС12, имеет 42 встроенные средства для формирования сигналов выборки (CS), с возможностью программно определить скорость обмена с каждым конкретным устройством. Другой вариант - очень простой путь - обмен с ЖКИ-модулем выполняется чисто программными средствами, через порты ввода-вывода управляющей микроЭВМ. В дальнейшем мы сконцентрируем внимание именно на этом варианте, так как он позволяет рассмотреть общий случай, абстрагируясь от конкретной системы. Вариант соединения с системной шиной, напротив, требует рассмотрения конкретных устройств, поэтому в случае необходимости можно рекомендовать изучить временные диаграммы операций чтения и записи, приведенные на рисунках 4.3 и 4.4, а также значения временных параметров, приведенные в таблицах 4.5, 4.6 и сконструировать соответствующие управляющие схемы. На рисунке 4.2а приведена схема подключения ЖКИ-модуля с 8-ми разрядной шиной к некоторой абстрактной микро-ЭВМ XYZ. Эта микро-ЭВМ содержит два порта: 8-ми разрядный двунаправленный РА0...РА7, к которому подключена шина DB0...DB7 ЖКИ-модуля, и 3-х разрядный РВ0...РВ2, к которому подключены линии управляющих сигналов: E, RS,R/W. На рисунке 4.2б можно видеть схему подключения ЖКИ-модуля к этой же микро-ЭВМ в 4-х разрядном режиме. Обратите внимание, что для обмена в 4-х разрядном режиме используется старшая тетрада шины данных - DB4...DB7. Рисунок 4.2 - Подключение к управляющей системе В соответствии с временной диаграммой (рисунки 4.3, 4.4) в исходном состоянии сигнал Е = 0, сигнал R/W = 0, значение сигнала RS - произвольное, шина данных DBO...DB7 в состоянии высокого импеданса (НI). Такое состояние управляющих сигналов (E и R/W) должно поддерживаться все время в промежутках между операциями обмена с ЖКИ-модулем. Шина данных в эти моменты в принципе свободна, и может использоваться в мультиплексном режиме для каких-либо других целей, например, для сканирования матрицы клавиатуры. Естественно, необходимо позаботиться об исключении конфликтов на шине данных в момент совершения операций обмена с ЖКИ-модулем. Последовательности действий, которые необходимо выполнять управляющей системе при совершении операций записи и чтения для 8-ми и 4-х разрядной шины приведены соответственно в таблицах 4.1,...,4.4. 43 Таблица 4.1 - Операции записи для 8-ми разрядной шины 1. Установить значение линии RS 2. Вывести значение байта данных на линии шины DB0...DB7 3. Установить линию Е = 1 4. Установить линию У = 0 5. Установить линии шины DB0...DB7 = HI Таблица 4.2 - Операции чтения для 8-ми разрядной шины 1. Установить значение линии RS 2. Установить линию R/W = 1 3. Установить линию Е = 1 4. Считать значение байта данных с линий шины DB0...DB7 5. Установить линию Е = 0 6. Установить линию R/W = 0 Таблица 4.3 - Операция записи для 4-х разрядной шины 1. Установить значение линии RS 2. Вывести значение старшей тетрады байта данных на линии шины DB4...DB7 3. Установить линию Е = 1 4. Установить линию Е = 0 5. Вывести значение младшей тетрады байта данных на линии шины DB4...DB7 6. Установить линию Е = 1 7. Установить линию Е = 0 8. Установить линии шины DB4...DB7 = HI Таблица 4.4 - Операция чтения для 4-х разрядной шины 1. Установить значение линии RS 2. Установить линию R/W = 1 3. Установить линию Е = 1 4. Считать значение старшей тетрады байта данных с линий шины DB4...DB7 5. Установить линию Е = 0 6. Установить линию Е = 1 7. Считать значение младшей тетрады байта данных с линий шины DB4...DB7 8. Установить линию Е = 0 9. Установить линию R/W = 0 Приведенные в таблицах 4.1,...,4.4 операции подразумевают, что время выполнения каждого шага составляет не менее 250 нс. При использовании современных быстродействующих микро-ЭВМ это условие может быть легко нарушено, поэтому необходимо тщательно контролировать минимальные значения временных интервалов, чтобы они всегда находились в области допустимых значений, указанных в таблицах 4.5, 4.6 и при необходимости вводить задержки. 44 Рисунок 4.3 - Временная диаграмма операции записи Рисунок 4.4 - Временная диаграмма операции чтения Таблица 4.5 - Значения временных характеристик. Операция записи Параметр Обозначение Мин. Макс. Единица Период сигнала Е tcycE 500 - нс Положительный полупериод сигнала Е PWEH 230 - нс Фронт/спад сигнала Е tEr, tEf - 20 нс Установление адреса tAS 40 - нс Удержание адреса tAH 10 - нс Установление данных tDSW 80 - нс Удержание данных tDSW 10 - нс Таблица 4.6 - Значения временных характеристик. Операция чтения Параметр Обозначение Мин. Макс. Единица Период сигнала Е tcycE 500 - нс Положительный полупериод сигнала Е PWEH 230 - нс Фронт/спад сигнала Е tEr, tEf - 20 нс 45 Установление адреса tAS 40 - нс Удержание адреса tAH 10 - нс Установление данных tDSW - 160 нс Удержание данных tDSW 5 - нс Описанные выше операции записи/чтения байта являются базовыми для осуществления обмена с ЖКИ-модулем. Реализация этих двух операций единственное, что отличает процесс обмена по 8-ми разрядной шине от обмена по 4-х разрядной шине. На основе этих двух операций, реализованных программно (когда модуль подключен к портам микро-ЭВМ), или аппаратно (когда модуль подключен к системной шине), строятся все виды операций программирования и управления. Несколько слов о подключении ЖКИ-модулей формата 40 х 4. Эти модели содержат два контроллера HD44780 и фактически представляют собой два модуля 40 х 2. Для сокращения числа соединений все сигналы обоих контроллеров соединены параллельно, исключение составляет только сигнал Е, одновременно выполняющий роль тактового сигнала и сигнала выборки микросхемы CS, поэтому обмен с каждым из контроллеров ведется попеременно. Программирование и управление Перед началом рассмотрения принципов управления ЖКИ-модулем, обратимся к внутренней структуре контроллера HD44780, чтобы понять основные принципы построения ЖКИ-модулей на его основе. Эта информация позволит понять способы организации модулей различных форматов с точки зрения программной модели, а также мотивации конструкторов ЖКИ-модулей. Упрощенная структурная схема контроллера приведена на рисунке 4.5. Можно сразу выделить основные элементы, с которыми приходится взаимодействовать при программном управлении: регистр данных (DR), регистр команд (IR), видеопамять (DDRAM), ОЗУ знакогенератора (CGRAM), счетчик адреса памяти (АС), флаг занятости контроллера. Другие элементы не являются объектом прямого взаимодействия с управляющей программой - они участвуют в процессе регенерации изображения на ЖКИ: знакогенератор, формирователь курсора, сдвиговые регистры и драйверы (напоминаем, что приведенная схема - упрощенная, и многие не важные для получения общей картины промежуточные элементы на ней опущены). Управление контроллером ведется посредством интерфейса управляющей системы. Основными объектами взаимодействия являются регистры DR и IR. Выбор адресуемого регистра производится линией RS, если RS = 0 - адресуется регистр команд (IR), если RS = 1 - регистр данных (DR). Данные через регистр DR, в зависимости от текущего режима, могут помещаться (или прочитываться) в видеопамять (DDRAM) или в ОЗУ знакогенератора (CGRAM) по текущему адресу, указываемому счетчиком адреса (АС). Информация, попадающая в регистр IR, интерпретируется устройством выполнения команд как управляющая последовательность. Прочтение регистра IR возвращает в 7-ми младших разрядах текущее значение счетчика АС, а в старшем разряде флаг занятости (BF). 46 Рисунок 4.5 - Упрощенная структурная схема контроллера HD44780 Видеопамять, имеющая общий объем 80 байтов, предназначена для хранения кодов символов, отображаемых на ЖКИ. Видеопамять организована в две строки по 40 символов в каждой. Эта привязка является жесткой и не подлежит изменению. Другими словами, независимо от того, сколько реальных строк будет иметь каждый конкретный ЖКИ-модуль, скажем, 80 х 1 или 20 х 4, адресация видеопамяти всегда производится как к двум строкам по 40 символов. Будучи устройством с динамической индикацией, контроллер циклически производит обновление информации на ЖКИ. Сам ЖКИ организован как матрица, состоящая в зависимости от режима работы из 8-ми (одна строка символов 5 х 7 точек), 11-ти (одна строка символов 5 х 10 точек) или 16-ти (две строки символов 5 х 7 точек) строк по 200 сегментов (когда строка насчитывает 40 символов) в каждой. Собственный драйвер конроллера HD44780 имеет только 40 выходов (SEG1...SEG40) и самостоятельно может поддерживать только 8-ми символьные ЖКИ. Это означает, что ЖКИ-модули форматов до 8 х 2 реализованы на одной единственной микросхеме HD44780, модули, имеющие большее количество символов, содержат дополнительные микросхемы драйверов, например, HD44100, каждая из которых дополнительно предоставляет управление еще 40-ка сегментами. Особняком стоят ЖКИ-модули формата 16 х 1. Они также реализованы с помощью одной единственной микросхемы HD44780, но одна 16-ти символьная строка в них фактически составлена из двух 8-ми символьных. И хотя это усложняет программное управление, ведь строка оказывается логически разорванной посередине, тем не менее, экономически это оправдано, ибо позволило создать ЖКИ-модуль, содержащий всего одну микросхему. Другой 47 вариант пространственной адресации встречается в 4-х строчных модулях. Из-за проблем разводки токоведущих дорожек, первая и вторая строки этих модулей являются таковыми как обычно, третья же является продолжением первой строки, а четвертая - второй. У контроллера HD44780 существует набор внутренних флагов, определяющих режимы работы различных элементов контроллера (таблица 4.7). В таблице 8 приведены значения управляющих флагов непосредственно после подачи на ЖКИ-модуль напряжения питания. Переопределение значений флагов производится специальными командами, записываемыми в регистр IR, при этом комбинации старших битов определяют группу флагов или команду, а младшие содержат собственно флаги. Таблица 4.7 - Флаги, управляющие работой контроллера HD44780 I/D: режим смещения счетчика адреса АС, 0 - уменьшение, 1 - увеличение. S: флаг режима сдвига содержимого экрана. 0 - сдвиг экрана не производится, 1 после записи в DDRAM очередного кода экран сдвигается в направлении, определяемым флагом I/D: 0 - вправо, 1 - влево. При сдвиге не производится изменение содержимого DDRAM. изменяются только внутренние указатели расположения видимого начала строки в DDRAM. S/C: флаг-команда, производящая вместе с флагом R/L операцию сдвига содержимого экрана (так же, как и в предыдущем случае, без изменений в DDRAM) или курсора. Определяет объект смещения: 0 - сдвигается курсор, 1 - сдвигается экран. R/L: флаг-команда, производящая вместе с флагом S/C операцию сдвига экрана или курсора. Уточняет направление сдвига: 0 - влево, 1 - вправо. D/L: флаг, определяющий ширину шины данных: 0 - 4 разряда, 1 - 8 разрядов. N: режим развертки изображения на ЖКИ: 0 - одна строка, 1 - две строки F: размер матрицы символов: 0 - 5 х 8 точек, 1 - 5 х 10 точек. D: наличие изображения: 0 - выключено, 1 - включено С: курсор в виде подчерка: 0 - выключен, 1 - включен В: курсор в виде мерцающего знакоместа: 0 - выключен, 1 - включен. Таблица 4.8 - Значения управляющих флагов после подачи питания I/D = 1: режим увеличения сетчика на 1 S = 0: без сдвига изображения D/L = 1: 8-ми разрядная шина данных N = 0: режим развертки одной строки F = 0: символы с матрицей 5 х 8 точек D = 0: отображение выключено С = 0: курсор в виде подчерка выключен В = 0: курсор в виде мерцающего знакоместа выключен Список управляющих комбинаций битов регистра IR и выполняемые ими команды приведены в таблице 9. Так как на момент включения ЖКИ-модуль ничего не отображает (флаг D = 0), то для того, чтобы вывести какой-либо текст необходимо, 48 как минимум, включить отображение, установив флаг D = 1. Вот пример широко распространенной последовательности для инициализации ЖКИ-модуля: $38, $OC, $06 (знак "$" перед числом указывает на шестнадцатеричное основание). $38 устанавливает режим отображения 2-х строк с матрицей 5 х 8 точек и работу с 8-ми разрядной шиной данных; $OC включает отображение на экране ЖКИ-можуля, без отображения курсоров; $06 устанавливает режим автоматического перемещения курсора слева-направо после вывода каждого символа. Таблица 4.9 - Управляющие комбинации битов регистра IR D7 D6 D5 D4 D3 D2 D1 D0 Назначение 0 0 0 0 0 0 0 1 Очистка экрана, АС = 0, адресация АС на DDRAM 0 0 0 0 0 0 1 - АС = 0, адресация на DDRAM, сброшены сдвиги, начало строки адресуется в начале DDRAM 0 0 0 0 0 1 I/D S Выбирается направление сдвига курсора или экрана 0 0 0 0 1 D C B Выбирается режим отображения 0 0 0 1 S/C R/L - - Команда сдвига курсора/экрана 0 0 1 DL N F - - Определение параметров ширины шины данных 0 1 AG AG AG AG AG AG Присвоение счетчику АС адреса в области CGRAM 1 AD AD AD AD AD AD AD Присвоение счетчику АС адреса в области DDRAM развертки и Контроллер HD44780 поддерживает как операции записи так и операции чтения. Чтение регистра DR приводит к загрузке содержимого DDRAM или CGRAM, в зависимости от текущего режима, при этом курсор смещается на одну позицию, как и при записи. Чтение регистра IR возвращает 8 значащих разрядов, причем в 7-ми младших содержится текущее значение счетчика АС (7 разрядов, если адресуется DDRAM, и 6 - если CGRAM), а в старшем - флаг занятости BF. Этот флаг имеет значение 1 когда контроллер занят и 0 - когда свободен. Необходимо учитывать, что большинство операций, выполняемых контроллером, занимают значительное время, около 40 мкс, а время выполнения некоторых доходит до единиц миллисекунд, поэтому цикл ожидания снятия флага BF должен обязательно присутствовать в программах драйвера ЖКИ-модуля и предшествовать совершению любой операции (естественно, кроме операции проверки флага BF). Один важный момент! После совершения операции записи или чтения DDRAM и появления после нее признака готовности (BF = 0), прочитанное в этом же цикле (вместе с флагом BF) значение АС скорее всего не будет достоверным. Дело в том, что между появлением признака готовности и вычислением 49 контроллером нового значения АС существует некоторый временной интервал, составляющий около 4 мкс при тактовой частоте контроллера 270 кГц. Поэтому, если необходимо получить истинное значение АС, нужно совершить повторную операцию прочтения IR спустя не менее чем 4 мкс (если контроллер работает на частоте 270 кГц время ожидания необходимо пропорционально увеличить). Вывод на экран символа производится записью его кода в регистр DR. При этом символ размещается в DDRAM по текущему адресу, указываемому АС, а значение АС увеличивается или уменьшается на 1. Чтобы произвести переустановку курсора на нужную позицию, необходимо присвоить АС соответствующее значение (смотри таблицу 4.9). Здесь есть одна тонкость. Когда производится последовательная запись символов и в результате заполняется вся строка, курсор автоматически переходит на вторую строку, но если необходимо принудительно установить курсор, скажем, на начало второй стороки, то будет неверным присвоить АС, казалось бы, логичное значение $28 (40), правильным является значение $40 (64). Значения адресов DDRAM в диапазоне $28...$3fF (а равно и $68...$7F) являются неопределенными и результаты работы с ними могут быть непредсказуемыми. Необходимо учитывать, что контроллеры, устанавливаемые на ЖКИ-модули, могут иметь различные наборы символов, причем это может зависеть как от производителя контроллера, так и от модификации данной конкретной модели. Например, фирма Powertip выпускает ЖКИ-модули с четырьмя базовыми модификациями наборов символов: японской, европейской, французской и русской. Более того, существует как минимум два варианта русского набора символов: контроллер фирмы Hitachi (H2 по маркировке фирмы Powertip) и контроллер фирмы Epson (EH по маркировке Powertip). Контроллер фирмы Hitachi обладает существенным недостатком - у него весьма ограниченный набор русских символов, фактически у него имеются только прописные русские буквы, и даже среди них отсутствует символ "Ф". Напротив, контроллер фирмы Epson содержит полный набор русских символов в прописном и строчном вариантах, поэтому он весьма удобен для отечественных применений. Это свойство контроллеров фирмы Epson обеспечило им заслуженную популярность на российском рынке, поэтому в последнее время основная масса импортируемых в нашу страну ЖКИмодулей оснащены именно этиим контроллером; в качестве примера в таблице 4.10 приведен набор символов этого контролера. Из допустимых для размещения в DDRAM кодов символы с кодами $00...$07 (и их дубликат с кодами $08...$0F) имеют специальное назначение - это переопределяемые символы, графическое изображение которых может назначить сам потребитель, разместив соответствующую информацию в области CGRAM. Для программирования доступны 8 переопределяемых символов в режиме с матрицей 5 х 7 точек и 4 с матрицей 5 х 10 (в режиме 5 х 10 переопределяемые символы адресуются кодами DDRAM через один: $00, $02, $04, $06). Для кодирования матрицы используются горизонтально "уложенные" байты, пять младших битов которых несут информацию о рисунке (причем 1 означает, что сегмент будет включен), 4-й разряд каждого из 8-ми (или 11-ти в режиме 5 х 10) байтов матрицы определяет левую колонку символа, а 0-й - правую. Старшие три 50 бита не используются, равно как и старшие пять байтов, составляющих полную область матрицы символа (16 байтов) в режиме 5 х 10 (обратите внимание, что матрица программируемых символов допускает использование полной высоты строки (8 строчек для режима 5 х 7 и 11 строчек для режима 5 х 10), то есть можно размещать точки в области подчеркивающего курсора). Таблица 4.10 - Таблица кодов символов контроллера Epson, набор "Russian" Чтобы определить собственный символ необходимо установить счетчик АС на адрес начала матрицы требуемого символа в CGRAM - $00, $08, $10 и т.д. ($00, $10, $20 для режима 5 х 10 точек) - произвести перезапись всех байтов матрицы, начиная с верхней строки. После этого, записав в DDRAM код запрограммированного символа: $00, $01, $02 ($00, $02, $04 для режима 5 х 10 точек), на экране в соответствующем месте будет отображаться переопределенный символ. 51 Несколько слов о процессе инициализации ЖКИ-модуля. Производитель контроллера рекомендует выполнять следующую последовательность действий для инициализации. Выдержать паузу не менее 15 мс между установлением рабочего напряжения питания (> 4,5 В) и выполнением каких-либо операций с контроллером. Первой операцией выполнить команду, выбирающую разрядность шины (это должна быть команда $30 независимо от того, какой разрядности интерфейс вы собираетесь использовать в дальнейшем), причем перед выполнением этой операции не проверять значение флага BF. Далее опять выдержать паузу не менее 4,1 мс и повторить команду выбора разрядности шины, причем перед подачей команды вновь не производить проверку флага BF. Следующим шагом необходимо вновь выдержать паузу, на этот раз 100 мкс, и в третий раз повторить команду установления разрядности шины, вновь без проверки BF. Эти три операции являются инициализирующими и призваны вывести контроллер в исходный режим работы (то есть перевести в режим работы с 8-ми разрядной шиной) из любого состояния. Следом за ними нормальным порядком (без выдерживания пауз, но с проверкой флага BF) выполняется инициализация режимов работы с выдачей инициализирующей последовательности, аналогичной указанной в таблице 7 (содержащей в том числе команду выбора необходимой разрядности шины). Необходимо помнить, что когда Вы объявляете режим работы с 4-х разрядной шиной, то есть выдаете команду $20, то делаете это обычно из 8-ми разрядного режима, который устанавливается автоматически после подачи напряжения питания, а значит вы не сможете адекватно объявить необходимое значение флагов N и F, располагающихся в младшей тетраде команды установки разрядности шины. Поэтому команду необходимо повторить в уже установившемся 4-х разрядном режиме путем последовательной передачи двух тетрад, то есть для 4-х разрядного режима образом. В заключение хотелось бы поделиться несколькими соображениями из практического опыта применения ЖКИ-модулей в процессе разработки и отладки реальных устройств. Не смотря на наличие "экономичного" 4-х разрядного режима, 7 необходимых для связи линий могут оказаться чрезмерным требованием для приборов, которые в современных условиях нередко строятся с применением микро-ЭВМ в 16ююю28-ми выводных корпусах и имеющих ограниченный ресурс свободных портов. Оказалось, что часто, если конечно речь не идет о жесткой экономии каждой копейки, наиболее удобным способом использования ЖКИ-модуля становится создание отдельного контроллера на базе конкретной микро-ЭВМ с каким-либо последовательным интерфейсом, осуществляющего посредничество между управляющей системой и ЖКИмодулем. Для тех кто ценит свое время и не имеет желания разрабатывать такой контроллер самостоятельно, фирма КТЦ-МК предлагает готовое решение микросхему СЕ110, созданную на базе микро-ЭВМ в 28-ми выводном корпусе SDIP или SOIC. Микросхема СЕ110 выполняет роль контроллера ЖКИ-модуля и клавиатуры (до 64-х клавиш) и предлагает в качестве интерфейса связи с управляющей системой двухпроводную шину I2C. На базе микросхемы СЕ110 производится демонстрационно-отладочная 52 плата DB-CE110, предназначенная для отладки устройств, использующих в своем составе микросхему СЕ110. Кроме того, эта плата с успехом выполняет роль простого терминала с ЖКИ-модулем 16 х 2 и 16-ти кнопочной клавиатурой, незаменимого при отладке устройств, не имеющих штатных средств ввода/визуализации, благодаря всего двум линиям легко реализуемой программно шины I2C. Для отладки же устройств, уже имеющих в своем составе I2Cустройства (микросхемы EEPROM, часов, датчиков температуры и т.п.), что отнюдь не является редкость, необходимость в каких-либо дополнительных ресурсах отпадает вовсе. 4.3 Варианты заданий Написать программу вывода значения температуры на ЖКД DV16100. Схема соединения ЖКД с МК ATmega 16 приведена на рисунке 4.6. 4.4 Содержание отчета 1. Титульный лист 2. Введение 3. Вариант задания 4. Ход работы 5. Схема соединения ЖКД с МК Atmega 16. 6. Программа вывода значения температуры на ЖКД DV16100. 7. Заключение. Рисунок 4.6 – Схема соединения ЖКД с МК Atmega 16 53 4.5 Контрольные вопросы 1. Характеристики контроллера HD44780 алфавитно-цифровых ЖКИмодулей. 2. Режим активации ЖКИ-модуля. 3. Режим приема и отображения информации ЖКИ-модуля. 4. Операции для осуществления обмена с ЖКИ-модулем. 5. Основные принципы построения ЖКИ-модулей. 6. Управление контроллером ЖКИ-модуля. 7. Варианты русского набора символов для контроллера ЖКИ-модуля. 8. Инициализацяи ЖКИ-модуля. Работа 5 Изучение интерфейса SATA 5.1 Цель работы Цель работы: изучение работы интерфейса SATA. Задачи работы: получить умения и навыки по работе с интерфейсом SATA. 5.2 Краткие теоретические сведения Общие сведения Интерфейс SATA (Serial АТА - последовательный интерфейс АТА) предназначен для замены традиционного параллельного (РАТА) с сохранением регистровой модели подключаемых устройств и возможностей передачи данных в режимах PIO и DMA. При этом шинное подключение пары устройств к одному каналу АТА заменяется двухточечными соединениями устройств с портами хост-контроллера (или концентратора). Программное взаимодействие с устройствами Serial АТА практически совпадает с прежним, набор команд соответствует ATA/ATAPI-5. Для полной программной совместимости контроллер SATA может эмулировать пары устройств (ведущее-ведомое) на одном канале, если такая необходимость возникнет. В то же время аппаратная реализация хост-адаптера Serial АТА значительно отличается от примитивного (в исходном варианте) интерфейса АТА. В параллельном интерфейсе АТА хостадаптер был простым средством программного обращения к регистрам, расположенным в самих подключенных устройствах. В Serial АТА ситуация иная: хост-адаптер имеет блоки так называемых «теневых» регистров (shadow registers), совпадающих по назначению с обычными регистрами устройств АТА. Каждому порту соответствует свой набор регистров. Обращения к этим теневым регистрам вызывают процессы взаимодействия хост-адаптера с подключенными устройствами и исполнение команд. Переход на последовательный интерфейс и двухточечные соединения в Serial АТА дает ряд преимуществ: - каждое устройство получает монопольный канал связи с контроллером, что 54 позволяет повысить производительность обмена с устройствами; - исключаются ненужные протокольные взаимодействия ведущего и ведомого устройств параллельной шины и связанные с ними проблемы совместимости устройств; - появляется возможность одновременной работы контроллера с несколькими устройствами с использованием механизма FPDMA и эффективной поддержкой очередей (NCQ); - упрощается (для пользователя) конфигурирование устройств (не требуется выбор адреса); обеспечивается возможность полной поддержки горячего подключения/отключения; - имеются перспективы повышения скорости обмена с устройствами (относительно базовой скорости 150 Мбайт/с); - упрощаются и удешевляются кабели и разъемы; - улучшаются условия охлаждения устройств - тонкий кабель не препятствует циркуляции воздуха в корпусе компьютера или массива устройств. Помимо преимуществ последовательного двухточечного интерфейса, в SATA решена проблема адресации - введен режим LBA-48, появившийся и в последних версиях параллельного интерфейса (ATA/ATAPI-6, 7). Наиболее эффективно возможности SATA используются в его естественном режиме работы, а не в режиме совместимости с параллельным интерфейсом АТА. Все функции взаимодействия устройства и адаптера, выполняемые в параллельном интерфейсе при помощи множества управляющих и информационных линий, реализуются и в последовательном, но с использованием только двух встречных сигнальных линий. В стандарте рассматривается четырехуровневая модель взаимодействия хоста и устройства, где на верхнем (прикладном) уровне между хостом (процессором и памятью) и устройством SATA выполняется обмен командами, информацией о состоянии и хранимыми данными. Три нижестоящих уровня обеспечивают связь контроллера устройства и контроллера хостадаптера по последовательному интерфейсу (взаимодействие их протокольных модулей транспортного уровня): - Транспортный уровень конструирует информационные структуры (Frame Information Structure, FIS), которыми обмениваются контроллер и устройство, передает эти структуры канальному уровню и обеспечивает управление FIFOбуферами обмена с прикладным уровнем. Структуры, принятые от канального уровня, он разбирает на составные части и передает их прикладному уровню; - Канальный уровень из информационных структур, представляемых потоками двойных слов, конструирует кадры (обрамляет структуры служебными примитивами, подсчитывает CRC для потоков данных транспортного уровня), выполняет кодирование 8В/10В, скремблирование и передачу кадров физическому уровню. Принимаемые с физического уровня битовые потоки канальный уровень преобразует обратно в выровненные потоки двойных слов, проверяет корректность CRC и, освободив от служебных примитивов, передает их транспортному уровню. Со своим партнером (канальным уровнем 55 противоположной стороны интерфейса) уровень обменивается подтверждениями успешного приема кадра и уведомляет об этих успехах свой транспортный уровень. - Физический уровень принимает от канального данные кадра в параллельном 10-, 20-, 40-разрядном (или более) виде и преобразует их в сигналы последовательного интерфейса. Над последовательными данными, принятыми от партнера по интерфейсу, производятся обратные преобразования. Уровень выполняет инициализацию интерфейса при подключении и подаче питания, определяет состояние подключения устройства и успех согласования скоростей, передавая эту информацию канальному уровню. Дополнительно уровень может заниматься управлением энергопотреблением интерфейса, а также калибров кой приемопередатчиков (согласованием с линией). Контроллеры SATA уже имеют свою историю: первые контроллеры (например, Intel 31244), разработанные по спецификации Serial ATA 1.0a, были нацелены на поддержку нового интерфейса подключения и старого программного интерфейса. Затем была принята спецификация нового программного интерфейса - AHCI, позволяющая реализовать основные преимущества SATA. Контроллер AHCI избавляет центральный процессор от рутинной обработки даже старых команд ATA/ATAPI, в которых используется режим обмена PIO. Возможность работы с новыми контроллерами по старым интерфейсам спецификацией AHCI не запрещается, но это уже другой механизм, никак не связанный с новым. Контроллер AHCI реализован, например, в южном хабе ICH6 чипсетов системных плат фирмы Intel. Физический интерфейс SATA В первом поколении Serial ATA данные по кабелю передаются со скоростью 1,5 Гбит/с, что (с учетом кодирования 8В/10В) обеспечивает скорость 150 Мбайт/с (без учета накладных расходов протоколов верхних уровней). В первой версии спецификации SATA-2 скорость оставалась прежней, но повышение скорости планировалась в последующих версиях, поэтому в интерфейс была заложена возможность согласования скоростей обмена по каждому порту в соответствии с возможностями хоста и устройства, а также качеством связи. В последующих версиях (SATA-2.6) скорость была доведена до 3 Гбит/с. В спецификации SATA-3 предусмотрена скорость 6 Гбит/с. Хост-адаптер имеет средства управления соединениями, программно эти средства доступны через специальные регистры Serial ATA. Стандарт SATA определяет новый однорядный двухсегментный разъем с механическими ключами, препятствующими ошибочному подключению. Назначение контактов приведено в табл. 6.2, а их расположение на разъеме — на рисунке 5.1. Рисунок 5.1 - Разъемы Serial ATA: расположение контактов на разъеме устройства Таблица 5.1 - Назначение сигналов разъема Serial ATA 56 Контакт S1 S2 S3 S4 S5 S6 S7 Р1, Р2 Р3 Р4, Р5, Р6 Р7 Р8, Р9 Р10 Р11 Р12 Р13 Р14, Р15 Цепь GND А+ А– GND В– В+ GND V33 V33 GND V5 V5 GND GND V12 V12 Назначение Экран Дифференциальная пара сигналов А; на хост-контроллере (НТ+, НТ–) выход передатчика, на устройстве (DR+, DR–) – вход приемника Экран Дифференциальная пара сигналов В; на хост-контроллере (HR+, HR–) - вход приемника, на устройстве (DT+, DT-) – выход передатчика Экран Питание 3,3 В Питание 3,3 В, предварительный заряд Общий Питание 5 В, предварительный заряд Питание 5 В Общий Резерв Общий Питание 12В, предварительный заряд Питание 12 В В Serial ATA 2 разъем доработали - ввели пружинные фиксаторы (на кабельной части) и соответствующие прорези на разъеме устройства или порта. Конструкции разъемов SATA и SATA 2 совместимы, но надежная фиксация обеспечивается лишь при подключении устройств (и контроллера) SATA 2 кабелем с вилками SATA 2. В SATA 2 определено несколько новых типов сигнальных разъемов и кабелей. Для обеспечения горячего подключения контакты разъемов имеют разную длину. В первую очередь соединяются (и в последнюю - разъединяются) контакты «земли» Р4 и Р12; затем остальные «земли» и контакты предварительного заряда конденсаторов в цепях питания Р3, Р7 и Р13 (для уменьшения броска потребляемого тока), после чего соединяются основные питающие контакты и сигнальные цепи. На контакты предварительного заряда питание от соответствующих источников подается через резисторы сопротивлением 10-20 Ом. В шасси с «горячим» подключением факт подключения устройства может определяться посредством измерения сопротивления между контактами предварительного заряда и основными питающими контактами (например, Р7 и Р8). 5.3 Варианты заданий Вариант 1 1. Вычислите скорость передачи данных жесткого диска MDTR в Мбайт/с, если число секторов на дорожке SRT равно 17, скорость вращения дисков RPM равна 73 тыс. об/мин, число байтов в секторе — 512. Ответ округлите до целых чисел. 2. Вычислите число цилиндров С, если общий объем памяти HDD составляет 57 60 Гбайт, число головок Н = 546, число секторов 5= 150. Ответ округлите до целых чисел Вариант 2 1. Вычислите скорость вращения дисков RPM в тыс. об/мин, если число секторов на дорожке SRT равно 100, скорость передачи данных жесткого диска MDTR составляет 12 М байт/с, число байтов в секторе — 512. Ответ округлите до целых чисел. 2. Вычислите общий объем памяти HDD, если число цилиндров С = 185, число головок Н= 370, число секторов 5= 150. Ответ округлите до целых чисел. Вариант 3 1. Вычислите число секторов на дорожке SRT, если скорость передачи данных жесткого диска MDTR равна 10 Мбайт/с, скорость вращения дисков RPM составляет 73 тыс. об/мин, число байтов в секторе — 512. Ответ округлите до целых чисел. 2. Вычислите число Н головок HDD, если число цилиндров С = 3, общий объем памяти — 525 Мбайт, число секторов S = 150. Ответ округлите до целых чисел. Вариант 4 1. Вычислите скорость передачи данных жесткого диска MDTR в Мбайт/с, если число секторов на дорожке SRT равно 150, скорость вращения дисков RPM составляет 10 тыс. об/мин, число байтов в секторе — 512. Ответ округлите до целых чисел. 2. Вычислите общий объем памяти HDD, если число цилиндров С = 4, число головок Н= 8, число секторов 5 = 150. Ответ округлите до целых чисел. Вариант 5 1. Вычислите скорость передачи данных жесткого диска MDTR в Мбайт/с, если число секторов на дорожке SRT равно 32, скорость вращения дисков RPM составляет 68 тыс. об/мин, число байтов в секторе — 128. Ответ округлите до целых чисел. 2. Вычислите число цилиндров С, если общий объем памяти HDD равен 120 Гбайт, число головок Н- 546, число секторов 5 = 250. Ответ округлите до целых чисел. Вариант 6 1. Вычислите скорость вращения дисков RPM в тыс. об/мин, если число секторов на дорожке SRT равно 250, скорость передачи данных жесткого диска 58 MDTR составляет 15 Мбайт/с, число байтов в секторе — 1 024. Ответ округлите до целых чисел. 2. Вычислите общий объем памяти HDD, если число цилиндров С = 285, число головок Н= 470, число секторов 5= 158. Ответ округлите до целых чисел. Вариант 7 1. Вычислите число секторов на дорожке SRT, если скорость передачи данных жесткого диска MDTR равна 20 Мбайт/с, скорость вращения дисков RPM составляет 173 тыс. об/мин, число байтов в секторе — 512. Ответ округлите до целых чисел. 2. Вычислите число Н головок HDD, если число цилиндров С= 16, общий объем памяти — 825 Мбайт, число секторов S = 350. Ответ округлите до целых чисел. Вариант 8 1. Вычислите скорость вращения дисков RPM, если число секторов на дорожке SRT равно 150, скорость передачи данных жесткого диска MDTR составляет 512 Мбайт/с, число байтов в секторе — 1 024. Ответ округлите до целых чисел. 2. Вычислите число секторов на дорожке S, если общий объем памяти HDD равен 1,5 Гбайт, число цилиндров С= 16, число головок Н = 32. Ответ округлите до целых чисел. Вариант 9 1. Вычислите скорость вращения дисков RPM, если число секторов на дорожке SRT равно 250, скорость передачи данных жесткого диска MDTR составляет 1 024 Мбайт/с, число байтов в секторе — 512. Ответ округлите до целых чисел. 2. Вычислите число секторов на дорожке S, если общий объем памяти HDD равен 5 Гбайт, число цилиндров С = 160, число головок Н = 320. Ответ округлите до целых чисел. Вариант 10 1. Вычислите скорость вращения дисков RPM, если число секторов на дорожке SRT равно 170, скорость передачи данных жесткого диска MDTR составляет 1 024 Мбайт/с, число байтов в секторе — 1024. Ответ округлите до целых чисел. 2. Вычислите число секторов на дорожке S, если общий объем памяти HDD равен 16 Гбайт, число цилиндров С = 260, число головок Н = 520. Ответ округлите до целых чисел. 59 Вариант 11 1. Вычислите число секторов на дорожке SRT, если скорость передачи данных жесткого диска MDTR равна 100 М байт/с, скорость передачи данных жесткого диска MDTR равна 100 Мбайт/с, скорость вращения дисков RPM составляет 173 тыс. об/мин, число байтов в секторе — 512. Ответ округлите до целых чисел. 2. Вычислите число Н головок HDD, если число цилиндров С = 12,общий объем памяти — 25 Гбайт, число секторов S = 512. Ответ округлите до целых чисел Вариант 12 1. Вычислите скорость передачи данных жесткого диска MDTR в Мбайт/с, если число секторов на дорожке SRT равно 350, скорость вращения дисков RPM составляет 150 тыс. об/мин, число байтов в секторе — 512. Ответ округлите до целых чисел. 2. Вычислите общий объем памяти HDD, если число цилиндров С=48, число головок Н= 96, число секторов S= 250. Ответ округлите до целых чисел. 5.4 Содержание отчета 1. Титульный лист 2. Введение 3. Вариант задания 4. Ход работы 5. Заключение. 5.5 Контрольные вопросы Кратко охарактеризуйте SATA. Какие преимущества дает переход на ИВВ SATA? Охарактеризуйте четырехуровневую модель взаимодействия устройства в среде SATA. 34. Дайте краткую информацию о контроллерах SATA. 35. Охарактеризуйте физическую реализацию интерфейса SATA. В Приложении B приведен пример лабораторной работы. хоста оформления титульного и листа КОНТРОЛЬНАЯ РАБОТА ДЛЯ ЗАОЧНОЙ ФОРМЫ ОБУЧЕНИЯ Цель работы: Целью работы является изучение интерфейса 60 жидкокристаллического дисплея Date Vision на примере сопряжения микроконтроллера (МК) ATmega 16 и цифрового датчика температуры DS18B20 Задание: Изучить интерфейсы датчика температуры (ДТ) DS18B20 и жидкокристаллического дисплея Краткая теория Термин "интерфейс" (от англ. interface) означает сопряжение, взаимодействие. Применительно к автоматизированным системам обработки информации и управления (АСОИУ) он означает средства взаимодействия между компонентами системы, к которым относятся технические (аппаратные) устройства ЭВМ, внешние приборы и датчики, вычислительные сети, программные модули, пользователи и др. В понятие "средства взаимодействия" включаются: - правила, как совокупность соглашений о формах, способах организации взаимодействия; они фиксируются в стандартах, протоколах; - технические и программные средства, обеспечивающие взаимодействие. Основное назначение интерфейсов - обеспечение совместимости отдельных компонент. Для взаимодействия технических устройств должна быть обеспечена электрическая, конструктивная, информационная совместимость. Для взаимодействия программ совместимость означает возможность обмена данными и передачи управления. Для взаимодействия автоматизированной системы с пользователем под совместимостью понимают возможность активного участия пользователя в процессе работы системы. Определение интерфейсов АСОИУ: Интерфейсы АСОИУ – это совокупность правил и средств (технических, программных) для реализации взаимодействия между компонентами системы, обеспечивающих их совместимость. Все виды интерфейсов можно объединить в две основных группы: 1.Низкоуровневые интерфейсы - средства сопряжения технических (аппаратных) устройств, поддерживаемые системным программным обеспечением. К этой группе относятся следующие виды интерфейсов: - системные интерфейсы ЭВМ, которые служат для объединения составных блоков и устройств ЭВМ (моделей памяти, контроллеров НМД, НГМД, видеоконтроллеров и др.) в единую систему; - интерфейсы периферийного оборудования, которые служат для подключения к ЭВМ, как оборудования общего назначения, так и специализированного (измерительных приборов, исполнительных механизмов); - интерфейсы сетей передачи данных (протоколы и стыки). 2. Высокоуровневые интерфейсы - средства организации взаимодействия компонент автоматизированной системы на уровне прикладного программного обеспечения. К этой группе интерфейсов относятся: - пользовательские интерфейсы - комплексы средств, обеспечивающие интерактивное взаимодействие пользователя с системой; - межпрограммные и межмодульные интерфейсы, обеспечивающие взаимодействие программ, а также взаимодействие программных модулей. На рисунке 1.1 представлена схема, показывающая место различных видов 61 интерфейса. Рисунок 1.1 - Различные виды интерфейсов Порядок выполнения работы Всего предусматривается выполнение одной контрольной работы, состоящей из 10 вариантов. Перед выполнением контрольной работы студент должен изучить соответствующие разделы курса по учебным пособиям. Если студент испытывает затруднения в освоении теоретического или практического материала, то он может получить устную или письменную консультацию у своего преподавателя. Каждая контрольная работа должна быть сделана в отдельной тетради, на обложке которой студенту следует разборчиво написать свою фамилию, инициалы и адрес, шифр, номер контрольной работы, название дисциплины и дату отправки работы в институт. Решения задач необходимо проводить в той же последовательности, что и в условиях задач. При этом условие задачи должно быть полностью переписано перед ее решением. В прорецензированной зачетной работе студент должен исправить отмеченные рецензентом ошибки и учесть его рекомендации и советы. Если же работа не зачтена,то ее выполняют еще раз и отправляют на повторную рецензию. Зачетные контрольные работы предъявляются студентом при сдаче зачета или экзамена. Изучить интерфейсы датчика температуры (ДТ) DS18B20 и жидкокристаллического дисплея (ЖКД) DV16100 NR. Написать программу для микроконтроллера ATmega16 в компиляторе Си CodeVisionAVR, 62 осуществляющую опрос ДТ и вывод значения температуры на ЖКД. Варианты разрешающей способности и способ вывода значения температуры на ЖКД даны в таблице 1.1. Таблица 1.1 – Варианты заданий № Разрешающая Способ вывода варианта способность, бит 1 9 Бегущая строка справа налево 2 10 Бегущая строка слева направо 3 11 В крайнем правом положении ЖКД 4 12 В крайнем левом положении ЖКД 5 9 Мигание с периодом 1 секунда 6 10 Циклическое перемещение строки в пределах границы окна ЖКД 7 11 Попеременное мигание в крайнем левом и правом положениях 8 12 Бегущая строка с права налево с выходом уходящего за левую границу окна символа из правой границы окна ЖКД 9 9 Бегущая строка с лева направо с выходом уходящего за правую границу окна символа из левой границы окна ЖКД 10 10 Появление символов строки, начиная с крайнего правого с интервалом 1 секунда Контрольные вопросы 1. Характеристики контроллера алфавитно-цифровых ЖКИ-модулей. 2. Режим активации ЖКИ-модуля. 3. Режим приема и отображения информации ЖКИ-модуля. 4. Операции для осуществления обмена с ЖКИ-модулем. 5. Основные принципы построения ЖКИ-модулей. 6. Управление контроллером ЖКИ-модуля. 7. Варианты русского набора символов для контроллера ЖКИ-модуля. 8. Инициализацяи ЖКИ-модуля. В Приложении контрольной работы. C приведен пример оформления титульного листа СПИСОК ЛИТЕРАТУРЫ 1. Авдеев В.А. Периферийные устройства. Интерфейсы, схемотехника, программирование [Электронный ресурс]/ В.А. Авдеев— Электрон. текстовые данные.— Саратов: Профобразование, 2017.— 848 c.— Режим доступа: http://www.iprbookshop.ru/63578 2. Лошаков С. Периферийные устройства вычислительной техники [Электронный ресурс]/ С. Лошаков— Электрон. текстовые данные.— М.: Интернет-Университет Информационных Технологий (ИНТУИТ), 2016.— 419 c.— Режим доступа: http://www.iprbookshop.ru/62822 3. Мамойленко С.Н. ЭВМ и периферийные устройства [Электронный ресурс]: учебное пособие/ С.Н. Мамойленко, О.В. Молдованова— Электрон. 63 текстовые данные.— Новосибирск: Сибирский государственный университет телекоммуникаций и информатики, 2012.— 106 c.— Режим доступа: http://www.iprbookshop.ru/40588 4. Терещенко П.В. Интерфейсы информационных систем [Электронный ресурс]: учебное пособие/ П.В. Терещенко, В.А. Астапчук— Электрон. текстовые данные.— Новосибирск: Новосибирский государственный технический университет, 2012.— 67 c.— Режим доступа: http://www.iprbookshop.ru/44931 5. Интерфейсы периферийных устройств [Электронный ресурс]/ А.О. Ключев [и др.].— Электрон. текстовые данные.— СПб.: Университет ИТМО, 2010.— 292 c.— Режим доступа: http://www.iprbookshop.ru/66472 6. Акчурин, Э. А. Человеко - машинное взаимодействие/ Акчурин Э. А. - М.: Солон -Пресс, 2008.- 96 с.: ил.- (Библиотека студента). 7. Болл, Стюарт Р. Аналоговые интерфейсы микроконтроллеров/ Болл Стюарт Р. - М.: Додэка XXI, 2007.- 360 с.: ил.- (Программируемые системы). 8. Павлов, В.А. Интерфейсы периферийных устройств : учеб. пособие для вузов / В. А. Павлов. — Саров, 2010. — 374 с. 9. Павлов, В.А. Система ввода-вывода ПК. Подсистемы клавиатуры и манипуляторов типа мышь и джойстик. Учебно-методическое пособие и практикум по циклу "Система ввода-вывода ПК". СарФТИ, Саров, 2008. - 287 с. 64 ПРИЛОЖЕНИЕ А 1. НАСТРОЙКА COM-ПОРТА НА ОСНОВНОЙ И ГОСТЕВОЙ ВИРТУАЛЬНОЙ МАШИНЕ 1. Настроить COM-порт основной виртуальной машины MS_SQL. 2. Настроить COM-порт гостевой виртуальной машины winxp_egr52 3. Отключить работу сетевых адаптеров на обеих виртуальных машинах для того, чтобы соединение было установлено, и не возникала ошибка 733. 65 2. СОЗДАНИЕ НОВОГО ПОДКЛЮЧЕНИЯ НА ОСНОВНОЙ МАШИНЕ 1. Создать новое подключение на основной машине 2.Установить прямое подключение к другому компьютеру 3. Подключиться напрямую к другому компьютеру 66 4. Основная машина используется в качестве «ведущего компьютера» для подключения к гостевой машине, которая используется как «ведомый компьютер». 5. В мастере новых подключений введите имя компьютера (гостевая машина), к которому подключается основная машина. Для этого необходимо узнать полное имя компьютера гостевой машины. Затем в мастере новых подключений указать это имя 67 6. Выбрать устройство, которое будет использовано для подключения 7. Завершить работу мастера новых подключений 68 После завершения работы мастера откроется окно подключения к comp2. Так как подключение настроено не полностью, то пропускаем этот шаг. 3. СОЗДАНИЕ НОВОГО ПОДКЛЮЧЕНИЯ НА ГОСТЕВОЙ МАШИНЕ 1. Открыть свойства «Сетевого окружения» гостевой машины и нажать на значок «Создание нового подключения». 2. Установить прямое подключение к другому компьютеру 69 3. Подключиться напрямую к другому компьютеру 4. Гостевая машина выступает в роли «Ведомого компьютера» к которому подключается «Ведущий компьютер» - основная машина. 5. Выбрать устройство для этого поключения 70 6. В меню разрешения пользователей добавить нового пользователя, которым является пользователь основной машины («Ведущего компьютера»). ! ВАЖНО ОБРАТИТЕ ВНИМАНИЕ 7. Чтобы прописать в соответствующих полях имя пользователя, полное имя и пароль выполним следующее: 1) Обратимся к имени учетной записи пользователя основной машины, которое находится в Панель управления / Учетные записи пользователей. 2) Полное имя компьютера 71 3) Пароль учетной записи пользователя находится в Панель управления / Учетные записи пользователей. 8. Добавить нового пользователя В результате будет создан значок «Входящие подключения» 4. СОЕДИНЕНИЕ ОСНОВНОЙ И ГОСТЕВОЙ МАШИН 1. Открыть прямое соединение в окне «Сетевые подключения» основной машины 72 2. Настроить параметры COM-портов на основной и гостевой машине 2.1. Настройка параметров COM-портов на основной машине 73 2.2 Настройка параметров COM-портов на гостевой машине 74 75 3. В окне «Подключение:comp2» написать имя пользователя, пароль, которые используются на гостевой машине. 76 4. После подключения, как правило, возникает такая ошибка 5. При повторном соединении подключение проходит успешно 6. Выполним диагностику подключения на основной и гостевой машинах с помощью сетевой утилиты «ping» 6.1 Запустить утилиту «ping» на основной машине 77 5.1 Запустить утилиту «ping» на сетевой машине 78 5. ИСПОЛЬЗОВАНИЕ НАСТРОЕННОГО СОЕДИНЕНИЯ ДЛЯ ОБМЕНА ФАЙЛАМИ 1. Открыть общий доступ к каталогам с файлами на основной и гостевой машине. Затем открыть сетевое окружение и отобразить компьютеры рабочей группы. 2. На основной машине открыть доступ к гостевой машине 3. Открыть сетевой каталог и скачать файл с гостевой машины на основную машину 79 4. В результате передачи данных видно, что произошла сетевая активность 80 ПРИЛОЖЕНИЕ B МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего образования «Ижевский государственный технический университет имени М.Т. Калашникова» (ФГБОУ ВО «ИжГТУ имени М.Т. Калашникова») Кафедра «Вычислительная техника» Отчет по лабораторной работе № 1 «Изучение параллельного LPT-порта» по дисциплине «Устройства ввода-вывода информации» Выполнил: студент гр. __________ Иванов И.В. Принял: к.т.н., доцент кафедры «Вычислительна техника» Афанасьев В.А. Ижевск 2018 81 ПРИЛОЖЕНИЕ C МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего образования «Ижевский государственный технический университет имени М.Т. Калашникова» (ФГБОУ ВО «ИжГТУ имени М.Т. Калашникова») Кафедра «Вычислительная техника» Отчет по контрольной работе по дисциплине «Устройства ввода-вывода» Выполнил: студент гр. __________ Иванов И.В. Принял: к.т.н., доцент кафедры «Вычислительна техника» Афанасьев В.А. Ижевск 2018 82 Учебное издание Методические указания к выполнению лабораторных и самостоятельных работ для студентов, обучающихся по направлению 09.03.01 «Информатика и вычислительная техника», профиль «Вычислительные машины, комплексы, системы и сети» всех форм обучения при изучении дисциплины «Устройства ввода-вывода информации» Афанасьев Владимир Александрович (составление) В редакции составителя Корректор Подписано в печать Усл. печ. л. Формат 60х84/16. Бумага офсетная Заказ № Тираж экз. Издательство Ижевского государственного технического университета Отпечатано в типографии Издательства ИжГТУ. 426069, Ижевск, Студенческая, 7