Дж.Хиллбурн, П.Джулич Микро-ЭВМ и микропроцессоры (1979) (1092080), страница 31
Текст из файла (страница 31)
При данном типе передачи данных ЭВМ перед выполне- 188 Глава б вием операции ввода-вывода проверяет состояние периферийного устройства. Обычно при обмене необходимо выполнить следующую последовательность шагов (см. равд. 5.6): !. Проверить состояние устройства. 2. Активировать устройство, если последнее готово. 3. Передать данные (ввести или вывести). 4. Дезактивировать устройство.
На первом шаге выполняется команда ввода информации о состоянии выбранного устройства. Далее выполняется условный переход по содержимому разряда состояния устройства (шаг 2). Если устройство занято, в программе реализуется переход для повторной проверки его состояния. В случае готовности устройства выдается команда ввода либо вывода данных (шаг 3). При завершении передачи устройство дезактивнруется (шаг 4). Блоксхема подобной передачи данных приведена на рис.
6.6. Для иллюстрации асинхронной передачи данных рассмотрим ввод данных с 8-разрядного А14П. Предположим, что преобразователь подсоединен к микро-ЭВМ как устройство 1 (порт 1), а его Рис. 6,6. Блок-схема асинхронной передачи данных. Интерфейс и нериферийнме устройства 189 триггер состояния рассматривается как устройство 2 (порт 2) н подсоединен к разрядной линии 4 8-разрядной шины данных.
Сим- волическая программа, использующая мнемонику приложения Д (1п1е! 8080), запишется следующим образом: ТЕЬТ: 1Ы 2 ; Переслать в А информацию из порта 2. ; Наложить маску для выделе- ния 4-го разряда. ; Если ЗАНЯТО, перейти к ТЕБТ (ПРОВЕРКА). ; Переслать данные в А. АХ[ 10Н ТРЗТ В данной программе по команде 1Х 2 информация из порта 2 (состояние устройства 1) записывается в аккумулятор. Если устройство готово, в разряде 4 содержится единица. По команде АХ1 10Н маскируются все разряды, кроме четвертого, и устанавливается флажок «Нуль», если устройство не готово.
Команда .12 ТЕЬТ организует цикл повторения рассмотренных операций до тех пор, пока устройство не будет готово. По команде 1Н 1 записываются данные, поступающие из устройства 1 в аккумулятор. Следует' заметить, что состояние свми других устройств можно проверить, считывая информацию из порта 2 и производя соответствующее,маскирование разрядов аккумулятора. Общая схема реализации передачи данных для рассмотренного примера приведена на рнс. 6.7.
При выдаче команды ввода (1И 2) для проверки состояния устройства сигнал «Адрес устройства» поступает на дешифратор 1-нз-Ф. Дешифратор осуществляет адресацию У портов ввода-вывода. Импульс «Отпирание» дешифратора активирует линию выбора устройства 2, в результате состояние устройства 1 запоминается в триггере состояния (()=0 в случае готовности).
По импульсу входа эта информация передается в аккумулятор через разрядную линию 4. Если устройство занято (9=1), последовательность проверки повторяется. При освобождении устройства выполняется команда 1Х 1 и сигналом адреса устройства активизируется линия выбора устройства 1. По импульсу входа данные передаются нз устройства 1 в аккумулятор через шину данных. Далее канал 1 дезактивируется по заднему фронту импульса отпирания.
Типичная временнйя диаграмма рассмотренной последовательности сигналов приведена на рис. 6.8. В данном случае предполагалось, что АЦП выполняет преобразование в,момент инициирования последовательности сигналов 190 Глава и В«ров-онов«» веера Йопираииее Рис. б.7. Схема, реализующая асинхронную передачу данных. Го»оа«оие Р Лорио вирра о»«оир»«еау яииио ривера у»еапыонае ррар ро ио Рис. 6.8. Типичная временная диаграмма асинхронной передачи данных. ввода.
Непосредственно перед инициированием устройство должно получить сигнал начала преобразования. Этот сигнал может поступать извне либо генерироваться ЭВМ. Если преобразование начинается по сигналу ЭВМ, необходимо подать команду вывода в определенный порт, как это описано выше для синхронной передачи данных. Асинхронная передача является идеальной в смысле согласования временнйх различий между периферийным устройством и Интерфейс и периферийные устройства 191 процессором. Недостатком такой передачи является то, что процессор вынужден ожидать, пока периферийное устройство не будет готово к обмену.
Это не только приводит к непроизводительным затратам времени ЭВМ (при наличии длительных задержек), но для многих применений является просто недопустимым. В процессах управления, например, в этом случае возникает необходимость сохранения уровня сигналов управления на время ожидания передачи. Методом, позволяющим устранить подобные трудности, является передача данных с прерыванием программы. ПЕРЕДАЧА ДАННЫХ С ПРЕРЫВАНИЕМ ПРОГРАММЫ Передача данных с прерыванием программы — это такой тип обмена данными, при котором для выполнения операции ввода-вывода производится прерывание программы ЭВМ .'12 — 71.
Данный тип обмена особенно удобен при работе с периферийными устройствами с низким быстродействием, а также в ситуациях, когда момент передачи данных в ЭВМ непредсказуем, например при работе с каналами связи. Основной характерной чертой рассматриваемой передачи является то, что обмен данными между ЭВМ и периферийными устройствами инициируется периферийными устройствами. Для реализации данного типа обмена необходимо цикл ожидания при асинхронной передаче данных заменить эквивалентным циклом проверки наличия внешнего прерывания, выполняемым при помощи аппаратных средств.
За время исполнения каждой машинной операции микропроцессор автоматически проверяет наличие сигнала прерывания. При осуществлении передачи данных с прерыванием программы обычно реализуется следующая последовательность шагов: 1. Периферийное устройство запрашивает прерывание. 2. По завершении выполнения текущей команды процессором последний выдает сигнал подтверждения готовности к прерыванию.
3. Запоминается содержимое счетчика команд и осуществляется переход по адресу подпрограммы обработки прерывания. 4. Запоминается содержимое внутренних регистров (рабочих регистров и регистров, состояния) и выполняется передача данных под управлением специальной программы. 5. Осуществляется возврат к продолжению выполнения программы. В микропроцессорах обычно используются два метода реализации описанной последовательности действий: прерывание с опросом и прерывание по вектору.
В первом случае при помощи технических или программных средств осуществляется опрос каждого периферийного устройства, пока ие обнаружится то, которое запрашивает прерывание. Далее осуществляется переход на соответствующую подпрограмму обслуживания прерывания, которая и 192 Глава б Рис. 6.9.
Блок-схема передачи даииых с прерыванием программы. выполняет обмен данными. При этом методе приоритет устройства определяется его местом в последовательности опроса. В отличие от данного метода в случае прерывания по вектору управление по запросу устройства непосредственно передается на соответствующую подпрограмму обслуживания. Таким образом, в простейших системах-с прерыванием по вектору все устройства обладают одинаковым приоритетом. Поскольку в данном случае опроса не требуется, время реализации прерывания, меньше, чем при выполне~нии прерывания с опросом. Интерфейс и нериферийнме устройства Я3 Рпс. б.10.
Блок-схема ароцедурм программного опроса. Запрос на прерывание (шаг 1) инициируется путем подачи сигнала на вывод «Прерывание» микропроцессора. В некоторых процессорах в наборе команд имеется специальная команда блокирования этого вывода. При заблокированном выводе запрос игнорируется и продолжается выполнение обычной последовательности команд. В противном случае по завершении цикла текущей команды подается сигнал на вывод «Подтверждение прерывания» либо непосредственно начинается цикл прерывания (шаг 2).
Обычно после выполнения шага 2 прерывание блокируется, что позволяет завершить обработку текущего прерывания до поступления следующего, Далее определяется устройство, выдавшее запрос, изапоминается содержимое счетчика команд или наоборот. В системе с опросом последовательность опроса выполняется при помощи 13 — 719 43 н о Ю о З о ж й й 3 О, о О ж О, ж й3 л О О с2 ы О Я Ф О.
х о ь $ ~ с~ Интерфейс и периферийные устройстеи 195 Шина аинншл ра Рис. 6.12. Структурная схема системы опроса по принципу адейзи-цепочииз. Уш раиаши l Яа а ша ншр ааааа Уш раиашса д Раина ни Срариеинаа р ираршраниа Рис. 6.13, Схема реализации прерыиания ирн опросе по принципу «девин-це- почки», технических или программных средств. В системе с прерыванием по вектору устройство распознается сразу за сигналом подтверждения прерывания. Шаг 3 завершается выполнением перехода к соответствующей подпрограмме обслуживания прерывания.
В начале такой подпрограммы запоминается содержимое внутренних регистров ЦП. Далее выполняются команды, осуществляющие обмен данными (шаг 4), после чего восстанавливается первоначальное содержимое внутренних регистров, выполняется команда разрешения (отпирания) прерывания (в процессорах, обладающих такой возможностью) и в завершение осуществляется возврат в основную программу. На рис. 6.9 представлена блок-схема типичной передачи данных по описанному способу. Простейшим методом реализации обслуживания прерывания является програмлтный опрос. При этом методе необходимо, чтобы 13» 196 Глава б' лгла е»Р» гввие «м знавав «геювввв «ем ггч г вг ае дов а«маг гга амгггг Фегвав«в Ряс.
6.14. Схема реализации прерывания программы по вектору. флажок прерывания каждого устройства соединялся при помощи вентиля ИЛИ с единственной линией прерывания. Эта линия подсоединяется к выводу «Прерывание» процессора. При обработке прерывания флажок каждого устройства проверяется в соответствии с программно реализуемой последовательностью опроса. Блоксхема простейшей процедуры подобного рода приведена на рнс.