Главная страница
Навигация по странице:

  • Рис.5.4. Блок-схема контроллера прерываний Микропроцессор 8086 может использовать до 256 различных прерываний. Каждое прерывание определяется его номером

  • Прямой доступ к памяти (ПДП

  • Организация ввода вывода в микропроцессорной системе


    Скачать 343 Kb.
    НазваниеОрганизация ввода вывода в микропроцессорной системе
    Дата10.09.2019
    Размер343 Kb.
    Формат файлаdoc
    Имя файлаch5.doc
    ТипДокументы
    #86444
    страница3 из 4
    1   2   3   4

    5.2. Специальные режимы ввода/вывода


    5.2.1 Прерывания

    Все микропроцессорные системы должны связываться с внешним миром. Типичная вычислительная система обычно имеет клавиатуру, дисковод и коммуникационный порт. Все они требуют внимания процессора в разное время. Имеются два различных способа обработки запросов ввода/вывода от периферийных устройств: опрос и прерывания.

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

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

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

    Например, персональные компьютеры часто используют таймер, чтобы прервать процессор раз в секунду, чтобы заставить его модифици­ровать изображение часов, отображаемых на экране. Компьютеры, используемые в управлении производственным процессом, обычно прерываются датчиками, которые обнаруживают различные состояния оборудования, требующие немедленного внима­ния. Пример внутрен­него состояния, требующего прерывания – попытка деления на 0, которая не может дать никакого результата. Этот тип исключительного состояния должен приостановить работу програм­мы, чтобы прервать операцию и послать предупреждающее сообщение пользователю.

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

    1. Заканчивает текущую команду программы, чтобы достигнуть удобной точки остановки.

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

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

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

    5. Выбирает и выполняет команды программы обработки прерывания.

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

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

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

    Микропроцессор 8086 имеет два источника внешних прерываний; вход немаскируемого прерывания (NMI) и вход маскируемого прерывания (INTR). Для большинства микропроцессорных систем единственный вход маскируемого прерывания недостаточен. Боль­шинство процессоров использует специальный контроллер прерыва­ний, чтобы увеличить число доступных маскируемых прерываний.

    Микропроцессор 8086 использует специальную микросхему контроллера прерываний 8259 (580ВН59). Блок-схема микросхемы контроллера приведена на рис. 5.4. Этот контроллер является стандартным для многих микропроцессорных систем и персональных компьютеров. Контроллер 8259 имеет восемь входов прерываний. Используя дополнительные контроллеры, число входов прерывания может быть доведено до 64. Дополнительные контроллеры называются вспомогательными; первый контроллер является основным. Основной контроллер располагает по приоритетам запросы на прерывание от вспомогательных контроллеров и своих входов IRn и передает запросы по одному на вход маскируемого прерывания процессора.

    Рис.5.4. Блок-схема контроллера прерываний

    Микропроцессор 8086 может использовать до 256 различных прерываний. Каждое прерывание определяется его номером в пределах от 0 до 255. Каждому прерыванию соответствует вектор прерывания, который является номером прерывания умноженным на 4. Вектор пре­ры­вания – указатель, который указывает на связанную с прерыванием подпрограмму обработки прерывания. Таблица векторов прерываний расположена в начальной области памяти микропроцессора. Таблица векторов прерываний имеет размер 1 Кбайт (4 байта, умноженные на 256).

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

    5.2.2. Прямой доступ к памяти

    Во многих случаях большие блоки данных должны быть переданы между устройством ввода/вывода и памятью. Дисковод, например, обычно читает и записывает данные блоками, которые могут быть объемом в тысячи байт. Если использовать для управлением передачей данных процессор, то значительная часть времени его работы будет потрачена на эту операцию. Даже если при передаче данных используется режим прерываний, все равно производительность системы в целом будет сильно падать. Это происходит потому, что микропроцессор не имеет команд прямой передачи данных от внешнего устройства в память и наоборот, и ему приходится использовать регистры общего назначения для временного хранения данных. То есть передача осуществляется в два этапа: сначала из внешнего устройства в процессор, а затем из процессора в память. Выгоднее было бы использование передачи напрямую, не используя процессор.

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

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

    Когда режим ПДП разрешается процессором, контроллер прямого доступа к памяти обеспечивает все необходимые сигналы шины для передачи данных. Источник и приемник данных для передачи программируемы и могут быть или в пространстве адресов ввода/вывода или в пространстве адресов памяти.

    Микропроцессорные системы на основе микропроцессора 8086 используют в качестве контроллера прямого доступа к памяти микросхему 8257. Интегральная схема 8257 – программируемый 4 канальный контроллер ПДП. Каждый канал контроллера оборудован 16 разрядным регистром адреса ПДП и 16 разрядным регистром-счетчиком числа переданных байтов. Младшие 14 битов регистра-счетчика определяют количество циклов ПДП, таким образом, их максимальное количество равно 16384. Старшие 2 бита регистра-счетчика определяют тип операции ПДП для данного канала.

    Логика арбитража в контроллере решает, какой канал имеет приоритет, если два канала одновременно запрашивают передачу данных. Каждый канал может получить или низкий, или высокий приоритет.

    Перед использованием контроллер должен быть запрограммиро­ван. При программировании контроллера вначале необходимо установить параметры для каждого канала. Для каждого канала программируются следующие параметры: указатель адреса ПДП, число передаваемых байт данных, тип операции ПДП.
    1   2   3   4


    написать администратору сайта