Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Avdeev

.pdf
Скачиваний:
158
Добавлен:
01.06.2015
Размер:
1.99 Mб
Скачать

71

Если в качестве ВЗУ используется накопитель гибких магнитных дисков (НГМД), то служебные функции базовой системы ввода–вывода (BIOS), управляющие работой дискеты и хранящиеся в ПЗУ, вызываются программным прерыванием

INT 13H.

После захвата интерфейса КПДП передает в КВЗУ сигнал подтверждения ПДП DACK N, определяющий начало передачи данных. Сигнал Т/С (окончание счета) устанавливается КПДП после окончания счета числа пересылок данных. ПК PC/AT имеет 7 каналов ПДП (каскадное соединение двух микросхем i8237), причем каналы 0–3 поддерживают передачу только 8–разрядных данных, а каналы 5–7 – 16–разрядных данных. Канал 0 в ПК PC/ХT предназначен для регенерации динамической памяти, а канал 2 – для дисковых операций.

Последовательность основных действий устройств в режиме ПДП при чтении байта данных из ОП (см. рис. 3.10) следующая: КВЗУ (КНГМД) формирует сигнал DRQ2;КПДПвырабатываетсигналHRQ;П освобождаетшину иустанавливаетсигнал HLDA; КПДП, захватив шину, передает адрес в ОП; КПДП формирует сигнал DACK2, поступающий в КНГМД; КПДП вырабатывает сигнал MEMR, осуществляющий чтение выбранной ячейки ОП; содержимое ячейки ОП запоминается в регистре данных КНГМД по сигналу IOW, установленному КПДП; КПДП снимает сигнал HRQ (режим одиночной передачи); П сбрасывает сигнал HLDA; КПДП увеличивает на 1 значение адреса и уменьшает на 1 число передаваемых байтов данных с появлением сигнала I/O CH RDY из ОП. Если число передаваемых байтов не равно FFFFh, то последовательность действий повторяется до тех пор, пока не будет сформирован сигнал T/C. Сигнал Т/С используется для формирования сигнала прерывания IRQ 6 (при наличии сигнала разрешения прерывания), сообщающего П о завершении передачи блока данных. В ПК РС/ХТ и РС/АТ в качестве КПДП применяется микросхема i8237 (отечественный аналог 1810 ВТ37).

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

72

микросхемы I8237 (DMA), соединенные каскадно (рис. 3.12.) с целью увеличения числа каналов.

DRQ0

 

 

DMA1

DACK0

DRQ0

DACK0

DRQ1

 

DACK1

DRQ1

DACK1

DRQ2

 

DACK2

DRQ2

DACK2

DRQ3

DACK3

DRQ3

DACK3

 

 

 

 

 

 

 

 

 

 

 

HLDA

HRQ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DMA1

 

 

 

 

 

 

DRQ0

DACK0

 

 

 

DRQ5

DACK5

 

DRQ1

DACK1

 

DRQ6

DACK6

 

DRQ2

DACK2

 

DRQ7

DACK7

 

DRQ3

DACK3

 

 

HLDA

 

 

 

 

HLDA

HRQ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.12. Каскадное соединение DMA1 и DMA2

Каждая микросхема DMA содержит 4 канала (К0-К3), работающих в режиме разделения времени (в какой-либо момент времени только один канал является активным и обслуживает подключенное к нему периферийное устройство). Наивысшим приоритетом обладает канал 0 (К0). С увеличением номера канала приоритет уменьшается. Всякому каналу соответствует сигнал DRQN (N=0-3) , называемый запросом ПДП, т.е. периферийное устройство, требующее режима ПДП, устанавливает этот сигнал. Здесьусматривается некоторая аналогия с сигналами запросов прерывания. Если одновременно поступает несколько сигналов запросов ПДП, то внутренняя схема арбитража в DMA выбирает наиболее приоритетный сигнал DRQN. ПослеэтогоDMAустанавливаетобщийдлявсехканаловсигналHRQ(запросшины) и после поступления от процессора сигнала HLDA (подтверждения на захват шины) DMA становится задатчиком и формирует для N-го периферийного устройства сигнал DACKN (подтверждение ПДП), разрешающий циклы ПДП. Для двух каскадносоединенных DMA наивысший приоритет имеет сигнал DRQ0, а сигнал DRQ7 – наименьший. Кроме того, для реализации каскадного соединения четвертый по общему счету канал в DMA2 используется только для этой цели (его необходимо запрограммировать на выполнение режима каскадирования). Назначение каналов КПДП в PC/AT представлено в табл. 3.3.

73

 

Таблица 3.3

Каналы

Назначение

К0

Резерв для PC/AT, регенерация памяти для PC/XT

К1

Резерв

К2

Работа с контроллером НГМД

К3

Резерв или для некоторых типов ПК работа с жестким диском

К4

Каскадирование

К5

Резерв

К6

Резерв

К7

Резерв

Каналы К0-К3 используются для байтовых передач данных, а каналы К5-К7 – для передачи 16-битовых слов. Внешние платы (задатчики) употребляют резервные каналы для получения доступа к системной шине. Для выполнения этой цели внешняя плата формирует сигнал DACKN и устанавливает сигнал MASTER, блокирующий выход КПДП на системную шину.

Рассмотрим схему формирования адреса (рис. 3.13).

 

A23 - A 17 (A16)

 

 

A16 (A15) - A9 (A8)

A8 (A7) - A1 (A0)

 

 

 

 

81h - 8Аh

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

РЕГИСТРЫ

 

 

 

 

 

РЕГИСТР

 

 

 

 

СТРАНИЦЫ

 

 

 

СТАРШЕГО АДРЕСА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XD7 - XD0

 

 

ШИНА ДАННЫХ

ШИНА АДРЕСА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DMA1

 

 

DMA2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.13. Схема формирования адреса

Схема формирования адреса содержит внешние по отношению к DMA регистры страницы и регистр старшего адреса. Регистры страницы - это байтовые порты с адресами из диапазона 81h-8Ah, загружаемые заранее процессором по шине XD7

– XD0 на этапе инициализации КПДП. Адресация регистров страницы каналов K0 – K7 показана в табл. 3.4.

74

 

Таблица 3.4

Канал

Адреса регистров страницы (h)

К0

87

К1

83

К2

81

К3

82

К5

88

К6

89

К7

Необходимость использования внешнего регистра старшего адреса связана с тем, что старшая часть адреса выводится из DMA по шине данных и запоминается в этом регистре по сигналам DMA. Младшая часть адреса выводится непосредственно по шине адреса DMA. На рис. 3.13 представлено, что в случае использования одного из каналов K5 –K7, связанных с 16-битовыми передачами, регистр страницы хранит адресные биты A23 –A17, регистр старшего адреса – адресные биты A16 - A9, а по адресной шине выводятся адресные биты A8 –A1. Адресный бит A0 в этом случае всегда равен 0, так как слова имеют четный адрес. Байтовые передачи данных связаны с обычным распределением битов адреса, которые (см. рис. 3.13) указаны в скобках.

Внутренняя шина XD7–XD0 подключена к системной шине SD7–SD0 через соответствующий приемопередатчик (это подключение на рис. 3.13 не показано). Схема портов DMA изображена на рис. 3.14.

 

 

 

 

 

DMA

 

 

 

KN

 

 

HRQ

7

 

 

0

 

DRQ0

15

 

0

 

 

 

 

РЕГИСТР СОСТОЯНИЯ

 

 

РЕГИСТР ТЕКУЩЕГО

+

1

HLDA

7

 

 

0

К0

 

 

 

АДРЕСА

-

 

 

 

 

 

 

DACK0

 

 

 

 

 

 

РЕГИСТР УПРАВЛЕНИЯ

 

 

 

 

 

 

 

 

 

 

15

 

0

 

 

XD7-XD0

3

0 3

 

0

 

DRQ1

 

 

 

 

 

 

 

РЕГИСТР БАЗОВОГО

 

 

 

 

 

 

 

К1

 

 

 

АДРЕСА

 

 

 

 

РЕГИСТР

РЕГИСТР

DACK1

 

 

 

 

 

CLK

 

 

 

 

 

 

 

ЗАПРОСОВ

 

МАСОК

 

 

15

 

0

 

 

 

 

 

 

 

 

DRQ2

 

РЕГИСТР ТЕКУЩЕГО

-1

CS

7

 

 

0

К2

 

 

 

ЧИСЛА ЦИКЛОВ

 

 

 

РЕГИСТР ДАННЫХ

DACK2

15

 

0

 

 

 

 

 

 

 

 

 

3

 

 

0

 

 

 

 

РЕГИСТР БАЗОВОГО

 

 

RDY

 

 

 

DRQ3

 

 

ЧИСЛА ЦИКЛОВ

 

 

 

РЕГИСТР

 

 

 

7

0

 

 

A7 - A0

 

 

Тп/п

К3

 

 

 

ИНДИВИДУАЛЬ-

DACK3

 

 

РЕГИСТР РЕЖИМА

 

 

 

 

 

 

 

 

 

НЫХ МАСОК

 

 

 

 

 

 

 

 

 

MEMR, MEMW

IOR, IOW

 

T/C (EOP)

 

 

 

 

 

 

 

 

 

Рис. 3.14. Схема портов DMA

 

 

 

 

 

 

 

 

 

75

Перечень адресов регистров DMA1 и DMA2 приведен в табл. 3.5.

 

 

 

 

Таблица 3.5

 

 

 

 

 

Режимы

 

Адреса

 

 

 

 

 

W-запись

Число бит

DMA1

DMA2

Назначение регистров (портов)

R-чтение

 

 

 

(h)

(h)

 

 

 

 

 

 

 

 

 

W

8

08

0D

Регистр управления (команд)

R

8

08

0D

Регистр состояния

W

8

0B

D6

Регистр режима

W

4

0A

D4

Регистр одиночны масок

W

4

0F

DE

Регистр масок

W

4

09

D2

Регистр запросов

W

*

0E

DC

Сброс регистра маски

W

*

0C

D8

Сброс триггера первый/ послед-

 

 

 

 

ний (Тп/п)

R

8

0D

DA

Регистр данных

R/W

16

00

C0

Регистр текущего адреса ка-

 

 

 

 

нала0/канала4

R/W

16

01

С2

Регистр текущего числа циклов

 

 

 

 

канала 0/канала 4

R/W

16

02

C4

Регистр текущего адреса канала

 

 

 

 

1/канала 5

R/W

16

03

С6

Регистр текущего числа циклов

 

 

 

 

канала 1/канала 5

R/W

16

04

С8

Регистр текущего адреса канала

 

 

 

 

2/канала 6

R/W

16

05

СА

Регистр текущего числа циклов

 

 

 

 

канала 2/канала 6

R/W

16

06

СС

Регистр текущего адреса канала

 

 

 

 

3/канала 7

R/W

16

07

СЕ

Регистр текущего числа циклов

 

 

 

 

канала 3/канала 7

 

 

 

 

 

 

 

 

Примечание

: * - порт без передачи данных.

Регистр управления (команд) координирует работу DMA и доступен по записи со стороны процессора. Формат регистра управления представлен на рис. 3.15.

Биты D0 и D1 определяют режим память-память, когда данные передаются из одной области оперативной памяти в другую область, причем этот обмен осуществляется через регистр данных (порт 0Dh) каналами K0 иK1. В режиме память-память в К0 задается адрес памяти (источник данных) и количество передаваемых данных,

76

а в К1 - адрес памяти (получателя данных). Сброс бита D1 регистра управления позволяет тиражировать один и тот же байт данных из одной области памяти в различные ячейки другой области памяти.

D0

- 1

Разрешение режима память - память

D1

- 1

Фиксация адреса разрешена, 0 - запрещена

D2

- 1

Блокировка контроллера, 0 - разрешение

D3

- 1

Сжатая синхронизация, 0 - нормальная

D4

- 1

Циклический приоритет, 0 - фиксированный приоритет

D5

- 1

Расширенный цикл записи, 0 - укороченный

D6

- 1 DREQ активен при низком уровне сигнала, 0 - при высоком уровне

D7

сигнала

-1 DACK активен при низком уровне сигнала, 0 - при высоком уровне

Рис. 3.15. Формат регистра управления (команд)

Сжатая синхронизация (D3=1) исключает некоторые такты в работе DMA, если старшая часть адреса (А8-А15) не изменяется. Циклический приоритет (D4=1) заключается в равноправном (последовательном) обслуживании каналов DMA. Например, при D4=1 возможна следующая очередность приоритетов: К1 К0 К3 К2, К0 К3 К2 К1, К3 К2 К1 К0 и т.д. Фиксированный приоритет (приоритет места) устанавливает степень приоритета в зависимости от номера канала, т.е. канал К0 обладает наивысшим приоритетом, а канал К3 – низшим приоритетом.

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

77

Биты D7 и D6 регистра управления определяют активный уровень сигнала (0 или 1).

Содержимое регистра состояния доступно по чтению со стороны процессора и имеет следующий формат (рис. 3.16).

D0

- 1

TC канала 0 (обмен завершен), 0 - незавершен

D1

- 1

ТС канала 1

D2

- 1

ТС канала 2

D3

- 1

ТС канала 3

D4

- 1

Наличие программного или аппаратного запроса канала 0

D5

- 1

Наличие программного или аппаратного запроса канала 1

D6

- 1

Наличие программного или аппаратного запроса канала 2

D7

- 1

Наличие программного или аппаратного запроса канала 3

Рис. 3.16. Формат регистра состояния

Содержимое регистра текущего числа циклов (счетчика) канала N (N=0,3) уменьшается после каждого цикла ПДП и, как только оно станет равным FFFFh (обмен завершен), это состояние отмечается установкой бита DN регистра состояния и на выходе DMA формируется сигнал T/C (окончание счета), используемый в контроллере периферийного устройства для формирования сигнала запроса прерывания.

Вбитах D4-D7 регистра состояния отмечается наличие программного запроса

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

Каждому каналу соответствует 8-битовый регистр режима, имеющий адрес 0Bh (D6h). Кроме того, в байте данных режима необходимо указать в битах D1 и D0 номер канала DMA, для которого предназначен этот байт данных. Формат регистра режима изображен на рис. 3.17.

Рассмотрим режимы обслуживания DMA. Блочная (монопольная) передача выполняется непрерывно до тех пор, пока содержимое регистра текущего числа

78

D0

 

Номер канала: 00 - канал0, 01 - канал 1, 10 - канал 2, 11 -

D1

 

канал 3

 

 

D2

 

Тип цикла ПДП: 00 - проверка, 01 - запись в память, 10 -

D3

 

чтение из памяти, 11 - недопустимое значение

 

 

D4

- 1

Режим автоинициализации

D5

- 1

Декремент регистра текущего адреса (-1), 0 - инкремент (+1)

D6

 

Режимы обслуживания: 00 - передача по требованию, 01 - одиночная

D7

 

передача, 10 - блочная передача, 11каскадирование

 

 

Рис. 3.17. Формат регистра режима

циклов в KN не станет равным FFFFh (обмен завершен). Передача по требованию осуществляется так же, как и блочная, за исключением того, что она выполняется пока удерживается сигнал DRQN. Снятие сигнала DRQN останавливает управление передачей данных, которая возобновляется с той же точки при появлении сигнала DRQN. Наиболее употребительным режимом является одиночная передача, состоящаявтом,чтопослепередачиочередногобайтаDMAосвобождаетсистемнуюшину и начинает затем запрос шины для управления передачей следующего байта. Этот процесс продолжается до тех пор, пока содержимое регистра текущего числа циклов не станет равным FFFFh (обмен завершен). Режим каскадирования, как уже отмечалось, используется для увеличения числа каналов КПДП путем соединения несколь-

ких DMA.

С помощью бита D5 программируется либо увеличение содержимого регистра текущего адреса KN, либо его уменьшение.

Если бит D4=1 и сигнал T/C (EOP) равен 0 (обмен завершен), то осуществляется автоматическая перезагрузка регистров базового адреса и базового числа циклов соответственно в регистры текущего адреса и текущего числа циклов.

Биты D3 и D2 позволяют программировать тип цикла ПДП: запись в память (01), при выполнении которой формируется сигнал IOR и MEMW ; чтение из памяти (10), вырабатывающее сигналы MEMR и IOW.

Цикл «проверка» (псевдопередача) заключается в том, что выполняется цикл записи (чтения) с формированием адреса, но без передачи данных.

79

Регистру одиночных масок присвоен адрес 0Ah (D4h), см. табл. 3.9. По этому адресу направляется3-битоваякоманда, в которой битыD1 иD0указывают на номер бита в регистре одиночных масок, а бит D2 определяет значение этого бита (1 или 0). Формат команды доступа к биту показан на рис. 3.18.

 

 

 

 

D2

D1

D0

 

 

 

 

 

 

 

 

 

 

 

 

00 - бит 0

 

 

 

 

 

1

-

 

установка

 

0

- сброс

01 - бит 1

 

 

 

 

 

 

10 - бит 2

 

 

 

 

 

 

11 - бит 3

Рис. 3.18. Формат команды доступа к биту

Установка программного запроса выполняется с помощью команды (см. рис. 3.18.), посылаемой в 4-битовый регистр запросов по адресу 09h (DMA1) или D2h (DMA2), причем бит D2=1 указывает на наличие запроса. Для осуществления одновременной установки (сброса) битов регистра маски необходимо по адресу 0Fh (DMA1) или DFh (DMA2) направить команду доступа к битам (D3-D0), имеющую следующий формат (рис. 3.19).

D3

D2

D1

D0

1

- установить маску К0

 

 

 

 

 

 

 

 

. . .

 

 

 

 

 

 

 

 

 

.

 

 

 

 

0

- сбросить маску К0

 

 

 

 

 

1

- установить маску К3

 

 

 

 

 

 

 

 

 

0

- сбросить маску К3

Рис. 3.19. Формат команды доступа к битам маски

По сигналу RESET (сброс) выполняется установка всех битов регистра маски, которые блокируют все программные или аппаратные запросы DMA. С помощью порта 0Eh (DMA1) или DCh (DMA2)(сброс регистра маски) можно разрешить обработку запросов DMA.

В DMA применяется двунаправленная 8-битовая шина данных, по которой происходит запись выводимых из процессора байтов данных в 16-битовые регистры выбранного канала. Для управления занесением байта данных в младшую часть (А7А0) или старшую часть (А15-А8), например, регистра текущего адреса используется

80

триггер первый/последний (Тп/п), который при нулевом значении разрешает запись байта данных в младшую часть регистра, а при единичном значении – в старшую часть регистра. При инициализации DMA в начале программы следует один раз сбросить триггер Тп/п, который затем автоматически устанавливается (сбрасывается) при передаче каждого байта.

Регистр данных DMA предназначен для временного хранения байта данных, передаваемоговрежимепамять-память.Послезавершенияпередачибайтов данных, последний байт может быть считан и введен в процессор.

Каждый канал DMA содержит четыре 16-битовых регистра. Регистр текущего адреса после передачи каждого байта( слова) автоматически уменьшается или увеличивается на единицу. В циклах ПДП биты А 7-А 0 выводятся по шине адреса DMA, биты А7-А0 выводятся по шине адреса DMA, а биты А8-А15 – по шине данных.

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

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

В работе КПДП можно выделить 2 режима: режим связи с процессором (инициализации КПДП) и режим управления передачей данных между оперативной памятью и периферийным устройством (блочной передачей в циклах ПДП). В первом режиме процессор является задатчиком на системной шине, а КПДП – исполнителем. Режим инициализации КПДП выполняется, если сигналы CS=DRQ=0, т.е. отсутствует режим ПДП. Для доступа к портам DMA используются 4 младших бита адреса А3-А0 (см. табл. 3.2), сигналы CS, IOR и IOW. Здесь следует иметь ввиду, что на адресные выводы А 3-А 0 DMA2 подаются соответственно смещенные адресные сигналы ХА4 –ХА1 (рис. 3.20).

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