Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПСУ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
11.26 Mб
Скачать

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

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

Его управляющие функции берет на себя контроллер прямого доступа к памяти. Во избежание конфликтов CPU во время прямого доступа к памяти отключается от системных шин за счет наличия схем с тремя состояниями.

Схема работы канала прямого доступа к памяти следующая:

  1. Внешнее устройство генерирует запрос прямого доступа к памяти (Direct Request).

  2. DAMC передает его центральному процессору (HoldRequest).

  3. CPU приостанавливает выполняемую программу и разрешает прямой доступ сигналом HLDACK.

  4. DAMC генерирует адрес ячейки памяти для обмена и подтверждает сеанс прямого доступа для внешнего устройства выдачей сигнала DACK.

  5. DMAC генерирует сигналы MEMR или MEMW, показывающие направление обмена данными.

Рис. 14.1

Выделяют различные разновидности прямого доступа к памяти:

    1. Блокировка центрального процессора на время передачи всего пакета данных. В этом случае прекращается работа выполняемой программы.

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

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

Микросхема контроллера прямого доступа к памяти

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

Назначение выводов

На рис. 14.2 представлено условное изображение микросхемы контроллера прямого доступа к памяти.

Рис. 14.2

На рис. 14.2 использованы следующие условные обозначения:

D(7-0) - вход/выход данных, присоединяется к шине данных для обмена с микропроцессором.

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

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

А (3-0) - двунаправленные трехстабильные адресные выводы младшего полубайта адреса памяти.

А(7-4) - двунаправленные трехстабильные адресные выходы старшего полубайта адреса памяти.

HRQ - запрос захвата - выходной сигнал высоко уровня указывает на запрос о доступе контроллера к системным шинам.

HLDA - подтверждение захвата - входной сигнал высокого уровня указывает на возможность доступа к системным шинам.

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

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

AEN - разрешение адреса - сигнал высокого уровня используется для блокировки некоторых шин адреса и данных.

ADSTB - строб адреса - сигнал высокого уровня указывает на нахождение на шине D(7-0) старшего байта адреса памяти.

CS - выбор микросхемы.

DRQ3-DRQ0 - запросы прямого доступа к памяти внешних устройств, сигнал высокого уровня указывает на запрос.

DACK3-DACK0 - подтверждение запросов прямого доступа к памяти внешних устройств, сигнал высокого уровня указывает на разрешение обмена.

Порядок работы с контроллером

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

Инициализация контроллера

Для инициализации контроллера необходимо записать соответствующую информацию:

      1. в 16-разрядный регистр адреса канала;

      2. 16-разрядный счетчик циклов канала;

      3. 8-разрядный регистр режима, общий для всех каналов.

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

Запись осуществляется строго в указанной последовательности в соответствии с таблицей истинности (табл. 14.1), в которой приведены коды адресных выводов для адресации внутренних регистров КПДП.

Таблица 14.1

Регистр

Адресные сигналы

CS

A3

A2

A1

A0

Регистр адреса канала СН0

0

0

0

0

0

Счетчик циклов канала СН0

0

0

0

0

1

Регистр адреса канала СН1

0

0

0

1

0

Счетчик циклов канала СН1

0

0

0

1

1

Регистр адреса канала СН2

0

0

1

0

0

Счетчик циклов канала СН2

0

0

1

0

1

Регистр адреса канала СН3

0

0

1

1

0

Счетчик циклов канала СН3

0

0

1

1

1

Регистр режима (запись)

0

1

0

0

0

Регистр режима (чтение)

0

1

0

0

0

Отключение КПДП от шины данных

1

X

X

X

X

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

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

  • запись в память - 01;

  • чтение из памяти - 10;

  • контроль - 00.

После настройки требуемых каналов в регистр режима КПДП записывается слово управления (рис. 14.3).

Рис. 14.3

Разряды D3-D0 (EN3-EN0) задают разрешение обмена по каналам CH3-CH0 соответственно, запись нуля в разряд запрещает обмен. Остальные разряды определяют режим работы каналов.

Разряд D4 (RP) устанавливает порядок обслуживания запросов от каналов. При RP = 0 задается фиксированный приоритет каналов и канал CH0 имеет высший приоритет. В режиме циклического приоритета RP = 1 после обслуживания канала ему присваивается низший приоритет, а следующий за ним по номеру - высший, и так по кругу: CH0 ^ CH1 ^ CH2 ^ ^ CH3 ^ CH0. Причем циклический сдвиг приоритетов производится после каждого цикла прямого доступа.

Режим расширенной записи (EW = 1) увеличивает за счет смещения переднего фронта длительность сигналов I/OR и I/OW, генерируемых КПДП, что позволяет обеспечить временное согласование с памятью без использования сигнала готовности READY и увеличить скорость обмена.

Разряд D6 (TCS) управляет отключением канала (запретом по концу блока). При TCS = 1 появление сигнала TC в одном из каналов сбрасывает соответствующий разряд D3-D0, в результате чего после передачи только одного блока данных канал отключается. Дальнейшая работа этого канала возможна только после перезагрузки регистра режима. Если TCS = 0, то появление сигнала ТС не воздействует на разряд разрешения работы канала и заканчивать передачу должно ВУ за счет прекращения выработки сигнала DRQ.

В режиме автозагрузки (AL = 1) может работать только второй канал, используя содержимое своих внутренних регистров и регистров третьего канала. После передачи данных в соответствии с параметрами регистров второго канала и появления сигнала TC параметры из регистров третьего канала автоматически загружаются в регистры второго канала; флаг обновления (UF) в регистре состояния каналов устанавливается в 1. Затем передача данных продолжается в соответствии с новыми параметрами регистров второго канала, а в конце первого же цикла прямого доступа с новыми параметрами флаг UF сбрасывается. Режим автозагрузки позволяет организовать повторяющиеся пересылки блоков данных с одинаковыми параметрами или соединять несколько блоков данных с разными параметрами.

При программировании КПДП операции записи информации или чтения состояний внутренних регистров определяются также значениями сигналов I/OR и I/OW: канальные регистры могут работать в режиме записи и считывания; в регистр режима можно только записать байт данных; из регистра состояния можно только считать байт данных.

После инициализации контроллер прямого доступа к памяти готов к работе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]