КРАТКИЙ СЛОВАРЬ СОКРАЩЕНИЙ

КОНТРОЛЛЕР ПРЯМОГО ДОСТУПА К ПАМЯТИ

    Прямой доступ к памяти используется для быстрого обмена данными между внешними устройствами ввода-вывода и памятью без участия центрального процессора. Он реализует прямой доступ по 4 независимым каналам с положительным или отрицательным приращением адреса со скоростью до 2.4 Мбайт/с. Контроллер ПДП позволяет реализовать передачу память-память, имеет широкие возможности программного управления и каскадирования (последнее применено в AT). Каждый канал может выполнять до 64К циклов ПДП и имеет возможность автоматичестой инициализации, т.е. повторения циклов ПДП с теми же параметрами.

Структура контроллера ПДП

    На XT контроллер включает 4 канала, каждый из которых состоит из четыpех 8-разрядных регистров, и собран на микросхеме Intel 8237A. XT и PC использует контроллер ПДП Intel 8237A и поддерживает 8 битовые каналы ПДП и 20 битовое адресное пространство. AT использует 7 каналов прямого доступа к памяти и собрано на двух микросхемах Intel 8237A, которые подключены в режиме каскадирования.

    В AT ПДП реализовано по другому, но с условием совместимости с XT и PC. Кроме обычного контроллера ПДП Intel 8237A там добавлен вторичный контроллер Intel 8237A, который поддерживает 16-разрядные каналы с 4 по 7.

В XT и PC каналы распределяются следующим образом:

КаналНазначение в PC и XT
0регенерация памяти (высший приоритет)
1свободный
2гибкий диск
3жесткий диск (низший приоритет)

В AT каналы распределены несколько иначе:

КаналНазначение в AT
0свободный8-битовые каналы
1УССД
2гибкий диск
3жесткий диск
4подключен к 1 контроллеру 16-битовые каналы
5свободный
6свободный
7свободный

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

CWR - регистр циклов.
    Хранит число слов предназначенных для передачи. При загрузке этого режима необходимо помнить, что загружаемая константа должна быть на еденицу больше числа слов, необходимых для передачи. При выполнении циклов ПДП регистр работает в режиме вычитающего счетчика. Разряд TC регистра состояния устанавливается в 1 при переходе из нулевого состояния в состояние FFFFh. Содержимое CWR может быть обновлено по окончанию операции ПДП в режиме автоинициализации, либо он будет содержать FFFFh, если автоинициализация не задана.

BAR - регистр хранения базового адреса.
   Хранит базовое значение адреса ПДП, участвует в автоинициализации. При начальной загрузке контроллера исходными параметрами происходит одновременная запись в регистры CAR и BAR. В процессе выполнения циклов ПДП содержимое BAR не меняется. Прочитать состояние этого регистра невозможно.

WCR - регистр хранения базового числа циклов.
    Хранит базовое значение числа циклов ПДП, участвует в автоинициализации. При начальной загрузке контроллера исходными параметрами происходит одновременная запись в регистры CWR и WCR. В процессе выполнения циклов ПДП содержимое WCR не меняется. Прочитать состояние этого регистра невозможно.

MR - регистр режима.
    Определяет режим работы контроллера. При загрузке этого регистра в младших разрядах D1-D0 указывается код номера канала. С помощью разрядов D3-D2 задается один из типов передачи. Эти разряды могут принимать любые значения при D7D6=11. Разряд D4 определяет режим автозагрузки. Если D4=1, то при условии автозагрузки CAR и CWR загружаются параметрами BAR и WCR соответственно. Разряд D5 определяет режим изменения CAR. Если D5=0, то после каждого цикла происходит увеличение содержимого CAR, если D5=1 - то уменьшение. Разряды D7-D6 определяют режимы работы канала - передача по запросу, одиночная передача, блочная передача, контроллер в режиме каскадирования.

CR - регистр команд.
    Определяет основные параметры работы канала. Загрузка CR осуществляется командой вывода от ЦП. Разряды D0-D1 используются для задания режимов работы каналов 0 и 1 в режиме память-память. Разряд D2 инициализирует контроллер для выполнения ПДП, разряд D3 определяет режим выполнения циклов ПДП. Если D3=1, циклы ПДП выполняются с пропуском одного такта при изменении адреса в пределах младшего байта. Разряд D4 устанавливает режим приоритетов. Если D4=1, запросу обслеженного канала присваивается наинизший приоритет - это режим вращения приоритета. Разряд D5 устанавливает режим удлиненного уикла записи. Разрядами D6-D7 программируются уровни запросов на ПДП и сигналов подтверждения ПДП.

SR - регистр условий.
    Разряды D0-D3 устанавливаются аппаратно после окончания циклов ПДП или по внешнему сигналу. Эти разряды сбрасываются (устанавливаются в нуль) после выполнения команды чтения содержимого этого регистра. Разряды D4-D7 устанавливаются программно при необходимости обслуживания по соответствующему каналу.

RR - регистр запросов.
    Контроллер может обслеживать запросы на ПДП, как аппаратно, так и программнно - по состоянию разрядов (регистров) запросов RR. Каждый разряд этого регистра соответствует запросу по одному из каналов. Разряды этого регистра не маскируются и устанавливаются раздельно программно. Для обработки программного запроса контроллер должен быть запрограммирован в режиме блочной передачи.

MASK - регистр маски.
    С помощью этой команды могут быть замаскированы запросы на ПДП по каждому каналу. Разряды MASK могут быть установлены специальной командой одновременно или раздельно. Кроме того, если канал не запрограммирован на режим автозагрузки, то соответствующий разряд регистра устанавливается в еденицу. Все разряды MASK устанавливаются в нули с помощью регистра CMR.

Порты

0000h
    ПДП, канал 0.
    Запись:
        Загрузка младшего/старшего байта в регистры
BAR и CAR.
    Чтение:
        Чтение младшего/старшего байта содержимого регистра CAR.

    0001h
    ПДП, канал 1.
    Запись:
        Загрузка младшего/старшего байта в регистры BAR и CAR.
    Чтение:
        Чтение младшего/старшего байта содержимого регистра CAR.

    0002h
    ПДП, канал 2.
    Запись:
        Загрузка младшего/старшего байта в регистры BAR и CAR.
    Чтение:
        Чтение младшего/старшего байта содержимого регистра CAR.

    0003h
    ПДП, канал 3.
    Запись:
        Загрузка младшего/старшего байта в регистры BAR и CAR.
    Чтение:
        Чтение младшего/старшего байта содержимого регистра CAR.

    0008h
    Запись:
        Регистр CR.

D7 1 подтверждение ПДП высокий уровень
 0 подтверждение ПДП низкий уровень
D6 1 запрос на ПДП низкий уровень
 0 запрос на ПДП высокий уровень
D5 1 удлиненный цикл записи
 0 нормальный цикл записи
D4 1 вращение приоритета
 0 фиксированный приоритет
D3 1 сжатие по времени
 0 нормальная работа
D2 1 запрещение ПДП
 0 разрешение ПДП
D1 1 захват канала
 0 нет захвата
D0 1 режим память-память
 0 нормальная работа

    Чтение:
        Регистр SR.

D7=1разрешение ПДП канала 3
D6=1разрешение ПДП канала 2
D5=1разрешение ПДП канала 1
D4=1разрешение ПДП канала 0
D3=1конец ПДП канала 3
D2=1конец ПДП канала 2
D1=1конец ПДП канала 1
D0=1конец ПДП канала 0

    0009h
    Запись:
        Регистр RR.

D7
D6
D5
D4
D3
D21установить запрос
0сбросить запрос
D1D0адpес канала
00канал 0
01канал 1
10канал 2
11канал 3

    000Ah
    Запись:
        Регистр MASK.

D7
D6
D5
D4
D3
D21установить маску
0сбросить маску
D1D0адpес канала
00канал 0
01канал 1
10канал 2
11канал 3

    000Bh
    Запись:
        Регистр MR.

D7D6pежим обслуживания
00пеpедача по тpебованию
01одиночная пеpедача
10блочная пеpедача
11каскадиpование
D51декpементиpование адpеса
0инкpементиpование адpеса
D41автоинициализация ПДП
D3D2тип цикла ПДП
00цикл пpовеpки
01цикл записи
10цикл чтения
11запpещенная комбинация
D1D0Адpес канала
00канал 0
01канал 1
10канал 2
11канал 3

    000Ch
    Запись:
        Любая запись в этот порт подготавливает порты 0000h-0008h к вводу младшего байта. Сбрасывает триггер-указатель адреса байта в слове.

    000Dh
    Запись:
        Любая запись в этот порт сбрасывает контроллер в начальное состояние.
    Чтение:
        Возращается содержимое регистра временного хранения. Возвращается последний переславшийся байт после пересылки память-память.

    000Eh
    Запись:
        Регистр CMR.
        Любая запись в этот порт сбрасывает все разряды регистра MASK и разрешает запросы на ПДП по всем каналам.

    000Fh
    Запись:
        Регистр MASK.

D7
D6
D5
D4
D3=1установка маски канала 3
D2=1установка маски канала 2
D1=1установка маски канала 1
D0=1установка маски канала 0

    0081h
    ПДП, канал 2, регистр страницы адреса.     Запись:
        Загрузка старших 4 разрядов 20-разрядного адреса
    Чтение:
        Чтение старших 4 разрядов 20-разрядного адреса

    0082h
    ПДП, канал 3, регистр страницы адреса.
    Запись:
        Загрузка старших 4 разрядов 20-разрядного адреса
    Чтение:
        Чтение старших 4 разрядов 20-разрядного адреса

    0083h
    ПДП, канал 1, регистр страницы адреса.
    Запись:
        Загрузка старших 4 разрядов 20-разрядного адреса
    Чтение:
        Чтение старших 4 разрядов 20-разрядного адреса

AT

    0081h
    ПДП, канал 2, регистр страницы адреса.
    Запись:
        Загрузка старших 8 разрядов 24-разрядного адреса
    Чтение:
        Чтение старших 8 разрядов 24-разрядного адреса

    0082h
    ПДП, канал 3, регистр страницы адреса.
    Запись:
        Загрузка старших 8 разрядов 24-разрядного адреса
    Чтение:
        Чтение старших 8 разрядов 24-разрядного адреса

    0083h
    ПДП, канал 1, регистр страницы адреса.
    Запись:
        Загрузка старших 8 разрядов 24-разрядного адреса
    Чтение:
        Чтение старших 8 разрядов 24-разрядного адреса

    0087h
    ПДП, канал 0, регистр страницы адреса.
    Запись:
        Загрузка старших 8 разрядов 24-разрядного адреса
    Чтение:
        Чтение старших 8 разрядов 24-разрядного адреса

    0089h
    ПДП, канал 6, регистр страницы адреса.
    Запись:
        Загрузка старших 8 разрядов 24-разрядного адреса
    Чтение:
        Чтение старших 8 разрядов 24-разрядного адреса

    008Ah
    ПДП, канал 5, регистр страницы адреса.
    Запись:
        Загрузка старших 8 разрядов 24-разрядного адреса
    Чтение:
        Чтение старших 8 разрядов 24-разрядного адреса

    008Bh
    ПДП, канал 7, регистр страницы адреса.
    Запись:
        Загрузка старших 8 разрядов 24-разрядного адреса
    Чтение:
        Чтение старших 8 разрядов 24-разрядного адреса

    008Fh
    Зарезервировано.