Файл: Микропроцессорные устройства систем управления (Ю.И. Иванов, 2005).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 1551
Скачиваний: 1
Выполнение команды т2 приостанавливает дальнейшую работу програм мы, при изменении содержимого программного счетчика начинает рабо тать подпрограмма с команды AsbL Завершение подпрограммы командой ret восстанавливает адрес команды тЗ в программном счетчике и обеспе чивает продолэюение работы основной программы. В приведенном примере предполагается использование в подпрограмме текста программы из пре дыдущего примера, которая в процессе работы изменяет данные в акку муляторе, регистре флагов и регистровых парах ВС, HL.
Процедура прерывания с вызовом подпрограммы также имеет большое значение в операциях ввода-вывода данных и организации взаимодействия с периферийными устройствами. Для реализации прерываний по запросам периферийных устройств предусмотрены специальные сигналы ШУ мик ропроцессорной системы. Подробнее эти вопросы рассмотрены в следую щем разделе.
1.5. Алгоритмы ввода-вывода данных
Важным элементом организации эффективной работы микропроцессор ной системы являются процедуры ввода-вывода данных. Выполнение алго ритмов преобразования невозможно без ввода исходных данных через входные интерфейсы и бессмысленно без выдачи полученных результатов через выходные интерфейсы. Различные устройства, с разными свойства ми, самостоятельной организацией и собственными внутренним алгорит мами работы могут быть элементами интерфейсов ввода-вывода (рис. 1).
В отличие от памяти микропроцессорной системы, предназначенной только для обеспечения доступа к требуемым данным, интерфейсные сред ства должны, с одной стороны, работать по сигналам управления микро процессора, и, с другой стороны, учитывать особенности работы внешних (периферийных) устройств. Поэтому для ввода-вывода данных от перифе рийных устройств требуются специальные процедуры, обеспечивающие согласование внутренних и внешних алгоритмов работы. Процедуры вводавывода в микропроцессорной системе можно свести к трем типам: про граммный ввод-вывод, ввод-вывод по прерываниям, ввод-вывод в режиме прямого доступа к памяти (режим DMA). Эти процедуры выполняются с помощью специальных средств и специальных сигналов ШУ микропроцес сорной системы.
Первая особенность этих процедур - устройства ввода-вывода образуют самостоятельное адресное пространство с собственными сигналами управ ления, независимыми адресами и командами микропроцессора для доступа к данным. В рассматриваемой микропроцессорной системе (рис. 2) адреса ция производится только младшим байтом ША, по ШУ предусмотрена пе редача независимых от управления доступом к памяти сигналов ввода и вывода данных. Однобайтовый адрес (А8) и сигналы управления вводом32
выводом передаются микропроцессором при выполнении команд следую щего формата: "in А8" - ввода байта данных из устройства с адресом А8 в микропроцессор, "out A8" - вывод байта данных из микропроцессора в устройство с адресом А8.
Без применения дополнительных средств этими командами можно реа лизовать только программный ввод-вывод данных. Основная рабочая про грамма должна предусматривать периодическое выполнение команд вводавывода данных для всех используемых периферийных устройств. Период обмена данными должен соответствовать максимально возможной скоро сти работы периферийных устройств. При несвоевременном обмене дан ными работа этих устройств может нарушаться с недопустимой потерей данных и некорректным выполнением требуемых функций.
Однако скорость работы периферийных устройств не всегда однозначно известна и зачастую изменяется в довольно широких пределах. Если уст ройство не готово к обмену данными, возможно формирование специаль ного сигнала ШУ, который переведет микропроцессор в состояние ожида ния. Такой способ согласования весьма неэффективен, так как период ожи дания может привести к недопустимо большой задержке выполнения дру гих требуемых функций. Возможен и другой вариант организации взаимо действия: перед обменом данными микропроцессор предварительно вы полняет программный контроль готовности, при готовности производит программный обмен данными, а при отсутствии готовности переходит к выполнению других функций программы с повторением контроля готовно сти устройства через определенный интервал времени. В любом из этих ва риантов взаимодействия процедуры программного ввода-вывода заметно увеличивают объем функций рабочей программы микропроцессора, замед ляют выполнение требуемых функций, не всегда обеспечивают своевре менный обмен данными с периферийными устройствами и, следовательно, могут отрицательно повлиять на эффективность работы микропроцессор ной системы.
Отказаться от программного контроля состояния периферийных уст ройств можно в тех случаях, когда эти устройства сами формируют и пере дают запросы на обработку данных в микропроцессор. В микропроцессор ной системе запросы от периферийных устройств называют прерываниями (interrupt), а процедуры с их использованием - вводом-выводом по преры ваниям. Такая процедура предполагает прием микропроцессором запроса прерывания, остановку выполнения текущих операций основной програм мы, вызов подпрограммы обслуживания прерывания с выполнением необ ходимых операций взаимодействия с устройством, отправившим запрос прерывания, и затем продолжение работы основной программы. Главное достоинство такой организации взаимодействия - отказ от постоянного программного контроля периферийных устройств в основной программе
33
микропроцессора; подпрограмма обработки прерывания вызывается для работы только тогда, когда возникает необходимость.
Для реализации процедуры прерывания в ШУ микропроцессорной сис темы предусмотрены специальные сигналы: запрос прерывания INT, по ступающий в микропроцессор от устройств ввода-вывода, подтверждение прерывания INTA, формируемый микропроцессором при переходе в режим обработки прерывания. В ряде случаев остановка рабочей программы для обслуживания прерываний недопустима, поэтому в системе команд микро процессора обычно содержатся команды запрета ("di") и разрешения ("ei") прерываний. Если командой "di" прерывания запрещены, поступающие за просы INT игнорируются и работа основной программы продолжается.
После команды разрешения прерываний "ei" в основной программе каж дый запрос INT будет обрабатываться микропроцессором. Завершив рабо чий цикл очередной команды, выполнявшейся в момент поступления за проса INT, микропроцессор приостанавливает дальнейшую работу основ ной программы, переходит в режим обработки прерывания и выдает в ШУ сигнал подтверждения INTA. Обработка прерывания производится по стандартной процедуре вызова подпрограммы, рассмотренной в предыду щем разделе.
Для обработки прерывания устройство ввода-вывода должны передать по ШД код команды "call А16", где А16 - начальный адрес подпрограммы обслуживания прерывания, и прекратить передачу запроса прерывания INT. Организация работы подпрограммы прерывания, выполняющей все необходимые операции взаимодействия с периферийным устройством, практически ничем не отличается от стандартной процедуры вызова под программы. Завершается работа подпрограммы прерывания стандартной командой возврата "ret", которая обеспечивает продолжение приостанов ленной работы основной программы. Следует помнить, что работа подпро граммы прерывания ничем не отличается от работы основной программы и поступлением нового запроса прерывания может быть приостановлена. Для управления процедурами вызова прерываний в этих подпрограммах также необходимо использовать команды управления "ei" и "di".
Организация обработки прерываний в микропроцессорной системе ос ложняется тем, что запросы прерываний могут поступать от нескольких разных периферийных устройств. Во-первых, каждое устройство требует вызова индивидуальной подпрограммы прерывания для облуживания за проса, во-вторых, запросы от разных устройств могут поступать одновре менно, и требуется арбитраж для определения очередности обслуживания. Эти функции обычно выполняют специальные устройства, называемые контроллерами прерываний [1].
Контроллер прерываний является стандартным периферийным устрой ством, обеспечивает прием запросов прерываний от нескольких других устройств, выполняет арбитраж поступивших запросов, формирование об-
34
щего сигнала запроса INT и команды вызова индивидуальной для каждого запроса подпрограммы прерывания. Индивидуальные адреса подпрограмм прерываний могут указываться программно в процедурах инициализации [1], а при другой организации микропроцессорных систем могут задаваться фиксировано в виде специальных таблиц векторов прерываний. Контрол лер прерываний, не являясь самостоятельным устройством и выполняя ука занные выше вспомогательные функции, практически всегда необходим для эффективной организации процедур ввода-вывода.
Ввод-вывод данных по прерываниям, исключая из основной программы микропроцессора целый ряд операций по управлению взаимодействием с периферийными устройствами, позволяет существенно увеличить скорость обработки данных, уменьшить время реакции на запросы периферийных устройств, расширить набор реализуемых функций и, следовательно, повы сить эффективность работы микропроцессорной системы в целом. Общим же в рассмотренных процедурах ввода-вывода является обмен данными между любыми устройствами через микропроцессор.
Во всех операциях обмена данными микропроцессор считывает из памя ти команды пересылки данных и, выполняя эти команды, производит пере дачу данных: байт данных по первой команде поступает в регистр микро процессора и только по следующей команде из микропроцессора передает ся в другое устройство. При передаче массивов данных такой алгоритм об мена неэффективен, для передачи каждого байта требуется чтение из памя ти и выполнение нескольких команд микропроцессора. Для ускорения об мена данными предусмотрена процедура прямого доступа к памяти - ре жим DMA. В этом режиме байты данных передаются непосредственно ме жду памятью микропроцессорной системы и устройствами ввода-вывода без участия микропроцессора.
В режиме DMA управление процедурой с формированием управляющих сигналов и адресов производится контроллером DMA [1], который реали зует необходимые функции не программно, как микропроцессор, а аппаратно. Контроллер DMA, следовательно, является специализированным устройством с ограниченным набором аппаратно реализуемых функций. Благодаря этой особенности передача данных в режиме DMA выполняется в несколько раз быстрее, чем микропроцессором.
Перед запуском процедура DMA требует инициализации: необходимо указать начальный адрес памяти для обмена данными, количество циклов обмена и направление передачи данных. Кроме того, контроллер DMA мо жет использовать для обмена данными только те сигналы, которые в ос новных режимах работы формирует микропроцессор. Поэтому на период выполнения процедуры DMA необходимо работу микропроцессора приос тановить и передать функции формирования требуемых сигналов контрол леру DMA. Для остановки микропроцессора при запуске режима DMA в ШУ предусмотрены специальные сигналы. Эти сигналы, поступающие че-
35
рез контроллер DMA, обрабатываются микропроцессором по алгоритмам, аналогичным алгоритмам обработки запросов прерываний.
Передача данных в режиме DMA выполняется следующим образом:
•запрос от периферийных устройств поступает через контроллер DMA в микропроцессор;
•если прерывание разрешено, микропроцессор приостанавливает работу и подтверждает право на управление работой ШД, ША и ШУ контрол леру DMA передачей специальных сигналов разрешения;
•контроллер, принимая управление работой системы, производит уско ренный обмен данными между памятью и периферийным устройством по параметрам, которые были заданы микропроцессором программно перед запуском процедуры;
•после завершения обмена данными контроллер DMA возвращает управление микропроцессору, который продолжает выполнение приос тановленной программы.
Особенности режима DMA заключаются в том, что обмен данными вы полняется с большей скоростью, но требует предварительной программной настройки. Применение этого режима эффективно, если требуется передать подготовленный массив данных относительно большого объема с макси мальной скоростью, используя единые параметры настройки обмена дан ными.
Организация ввода-вывода является важнейшим элементом эффектив ной работы для микропроцессорной системы. Рассмотренные процедуры взаимодействия с периферийными устройствами обладают разными свой ствами, обеспечивают разную организацию ввода-вывода данных и в соот ветствии с определенными условиями могут удовлетворять требованиям различных задач преобразования данных. Несмотря на вспомогательную роль операций ввода-вывода в работе самой микропроцессорной системы, очень часто в решаемых микропроцессорными средствами задачах эти опе рации имеют первостепенное значение и поэтому требуют самого серьез ного внимания. Достаточно типичны ситуации, когда алгоритмы преобра зования данных заметно проще алгоритмов организации ввода-вывода, ко гда микропроцессорная система выполняет функции ведомого средства, работая под управлением команд, поступающих через интерфейсы вводавывода, и т.п.
Рассмотренная в первой главе организация микропроцессорной системы показывает основные свойства и возможности программной реализации ал горитмов преобразования. Корректное использование особенностей про граммной реализации позволяет получать весьма эффективные решения в самых различных применениях. Важнейшее свойство микропроцессорных средств - возможность качественной перестройки алгоритмов работы без , изменения структуры и набора применяемых аппаратных средств.
36