PIODMAНеобходимость организации канала прямого доступа к памяти. Инфор­мация, хранимая во внешних устройствах памяти большой емкости, таких, как на­копители на магнитных дисках и лентах, организована в виде блоков размером единицы и более килобайт. Для обмена данными между указанными устройст­вами памяти и основной (оперативной) памятью микропроцессора не подходят ни программный способ обмена, ни прерывания. Это обусловлено тем, что обмен производится блоками фиксированного размера в строгой последовательности, соответствующей расположению информации на магнитном носителе. Время на обмен одного байта данных строго фиксировано, ограничено скоростью передви­жения носителя относительно магнитных головок и составляет весьма малое зна­чение (единицы микросекунд и меньше). При программно–управляемом обмене и обмене с использованием прерываний на передачу байта данных затрачивается большее время. Для обмена данными в указанных условиях организуется прямой доступ к памяти (ПДП), или Direct Memory Access (DMA).

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

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

рис. 3.10.1

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

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

В режиме с «захватом цикла» обмен ведется одиночными передачами, когда для прямого доступа к памяти выделяются отдельные циклы (такты), т. е. переда­ча данных (слов) перемежается с выполнением программы.



Один из вариантов обмена с «захватом цикла» состоит в использовании тех тактов, в которых центральный процессор не обменивается данными с памятью. Такие такты должны быть известны контроллеру ПДП. Некоторые процессоры вы­рабатывают специальный сигнал, указывающий используется ли процессором в данном цикле память. Например, Такой сигнал VMA вырабатывает микропро­цессор Motorola 6800. Процессор Intel 8080 никогда не использует четвертый и пятый такты машинных циклов для доступа к внешней памяти. Кроме того, каж­дый командный цикл начинается с машинного цикла М1 — выборки команды. В такте декодирования принятой процессором команды этого машинного цикла системные шины не используются. На это время системные шины можно отдать для передачи одного слова по каналу ПДП. Применение рассмотренного способа организации обмена не снижает производительности процессоров, однако:

●     требует дополнительных аппаратных затрат и позволяет реализовать только случайные, нерегулярные передачи;

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

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

После получения сигнала ЗЗхв процессор:

●     приостанавливает выполнение очередной команды, не дожидаясь ее завер­шения;

●     выдает в системный интерфейс сигнал подтверждения захвата ПЗхв;

●     отключается от шин адреса и данных, переводя в высокоомное состояние шинные формирователи.

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

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

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

Обмен данными по каналу ПДП требует предварительной подготовки контрол­лера. Она заключается в том, что программа загрузки устанавливает необходи­мые параметры для передачи:

●     количество байтов (слов) данных, которые должны быть переданы;

●     начальный адрес передаваемых данных (адрес первого байта или слова);

●     направление передачи (запись/чтение).

Для занесения этих параметров в контроллере предусмотрены регистр адреса и счетчик байтов (слов).

Реализация прямого доступа к памяти. В качестве примера рассмотрим особенности схемной реализации и работы канала ПДП при передаче из внешне­го устройства в память блоков данных в режиме с «захватом цикла». Схема такого устройства ПДП приведена на рис. 3.10.2. В устройстве можно выделить три вида аппаратных средств.

рис. 3.10.2

Средства адресации и контроля переданных слов:

●     суммирующий 16–разрядный счетчик текущего адреса, разделенный на две половины для младших (МР) и старших (СР) разрядов. Каждая половина имеет свой адрес, по которому происходит начальная загрузка счетчика. На выходе счетчиков включены управляемые буферы для передачи адреса в память;

●     вычитающий 8–разрядный счетчик слов, контролирующий число оставшихся для передачи слов. На его выходе включен логический элемент ИЛИ–НЕ, формирующий для внешнего устройства Флаг = 1 по завершении передачи блока данных, когда на вход ИЛИ–НЕ (10) поступает код 000000002;

●     дешифратор DС с тремя логическими элементами ИЛИ–НЕ (1, 2, 3), включен­ными на его выходе. Дешифратор с логическими элементами инициирует загрузку счетчиков адреса и слов.

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

Средства управления. К ним относятся:

●     двухразрядный двоичный счетчик, управляющий записью данных в память и состоянием счетчиков адреса и слов;

●     триггер запроса ТЗ, предназначенный для формирования сигнала запроса на ПДП (ЗПДП) для центрального процессора по стробу, поступающему от внеш­него устройства, и хранения сигнала ЗПДП до конца передачи блока данных;

●     логические элементы 4–9, обеспечивающие требуемый алгоритм управления. Назначение используемых сигналов приведено в табл. 3.10.1.

табл. 3.10.1

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

●     16–разрядный адрес ячейки памяти для хранения первого слова путем последо­вательной загрузки в счетчик адреса младшего (МБ) и старшего (СБ) байтов;

●     количество передаваемых слов путем загрузки числа л в счетчик слов. Из внешнего устройства ВУ поступают байт данных и строб, по которому байт данных заносится в буферный регистр. Строб также устанавливает триггер за­проса ТЗ в единичное состояние. С выхода триггера ТЗ снимается сигнал запро­са ПДП (ЗПДП). Получив сигнал ЗПДП, процессор приостанавливает выполнение программы, отключается от шин, предоставляя их устройству ПДП, и посылает сигнал разрешения ПДП (РПДП).

Сигнал РПДП выполняет следующие функции:

●     открывает буфер для передачи содержимого буферного регистра на ШД;

●     открывает буферы для передачи содержимого счетчика адреса на 16–разряд­ную шину адреса ША;

●     запускает двухразрядный счетчик подачей сигнала на вход «Сброс» через ин­вертор (5);

●     открывает элемент И (4) для поступления тактовых импульсов на вход «Счет» счетчика.

При втором тактовом импульсе ТИ на выходе счетчика появляются сигналы Q1 = 1, Q0 = 0. При комбинации Q1Q0 =10 элемент 8 закрыт, элементы 7 и 9 — от­крыты. Сигнал «Запись в память» ЗпП, проходя через элемент И (9), инициирует запись в память байта данных из буферного регистра по адресу, выставленному на ША счетчиком адреса.

Третий ТИ переводит двухразрядный счетчик в состояние Q1Q0 = 11, благодаря чему открывается элемент И (8). На его выходе формируется сигнал «Счет», который:

●     увеличивает на 1 содержимое счетчика адреса;

●     уменьшает на 1 содержимое счетчика слов;

●     производит сброс триггера запроса ТЗ, снимая сигнал запроса ПДП.

 

В результате этих операций процессор возобновляет работу, а счетчики под­готовлены к передаче следующего слова (байта данных). Процессор продолжает работать до тех пор, пока не будет загружен буферный регистр новым словом и не будет послан новый запрос на ПДП. Далее процесс передачи слов по каналу ПДП повторяется. После того, как содержимое счетчика слов станет равным нулю (000000002), включенный на его выходе элемент ИЛИ–НЕ (10) установит флаг в единичное состояние, свидетельствующее об окончании передачи блока данных.


Рекомендуйте эту статью другим!



Особенности нового ГОСТа по качеству электроэнергии
июнь 16, 2014 4347

Особенности нового ГОСТа по качеству электроэнергии

С начала 2013 года вступил в действие обновлённый стандарт качества ГОСТ Р 54149, в…
рис. 1.141
окт 17, 2016 736

Влияние различных факторов на выходное напряжение операционного усилителя

При практическом использовании операционного усилителя необходимо учитывать, что…
dif1
апр 03, 2017 1914

Дифференциальная защита, диф реле, принцип работы, применение

Дифференциальная защита - одна из самых быстродействующих. Для нее не требуется выдержки…
Последовательный обмен
нояб 11, 2015 1611

Способы и методы последовательного обмена

Принципы обмена. Последовательный обмен (ввод–вывод данных), когда байт данных передается…