Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Answers.docx
Скачиваний:
21
Добавлен:
16.09.2019
Размер:
393.72 Кб
Скачать

1.25. Архитектура и организация подсистемы dma (кпдп) в пк. Управляющая информация и программирование

1.25. АРХІТЕКТУРА ТА ОРГАНІЗАЦІЯ ПІДСИСТЕМИ DMA (КПДП) В ПК. КЕРУЮЧА ІНФОРМАЦІЯ ТА ПРОГРАМУВАННЯ.

Прямой доступ к памяти DMA – метод обмена данными периферийного устройства с памятью без участия процессора. IBM PC XT и XT-совместимые ПЭВМ имеют один 4-канальный контроллер DMA 8237А. Назначение каналов следующее: 0 - обмен память-память; 1 - свободен (может использоваться сетевыми адаптерами); 2 - обмен с контроллером гибких дисков; 3 - обмен с контроллером жестких дисков.

Все 4 канала выполняют побайтовую передачу данных с 8-разрядными портами  обслуживаемых  устройств (максимальный размер блока64 Кбайт). IBM PC AT и  AT-подобные  ПЭВМ  имеют  два  контроллера  DMA 8237А, работающие в каскадном режиме (см. рис. 1). Для сохранения преемственности с ХТ-компьютерами  каналы  1-й микросхемы номеруются  0-3,  а  каналы 2-ой микросхемы номеруются как 4-7 и предназначены для обмена данными с 16-разрядными портами обслуживающих  устройств  (максимальный размер блока 128 Кбайт при обмене 16-разрядными словами только по четной границе адреса).

Назначение каналов следующие: 0 - свободен; 1 - адаптер SDLC; 2 - контроллер накопителей на гибких дисках; 3 - контроллер накопителей на жестких дисках; 4 - каскад с первым контроллером DMA; 5, 6, 7 - свободны.

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

Управление каналами  0  - 3 осуществляется аналогично PC/ХТ. Каналы 4 - 7 предназначены для обмена 16-разрядными  словами.  В связи с этим возникает ряд отличий в работе с этими каналами: - бит 0 в данных, заносимых в регистры начального и текущего адреса,  всегда подразумевается равным 0,  поэтому через эти регистры передаются биты 1 - 16 полного 23-разрядного адреса (а не биты 0 - 15 полного 20-разрядного адреса, как это реализовано на ХТ-подобных ПЭВМ),  по этой же причине в страничные регистры каналов 4 - 7 заносятся биты 17 - 23 полного адреса,  а не биты 16 - 23, как это надо сделать при работе с каналами 0 - 3; - поскольку передача осуществляется 16-разрядными словами, в регистры текущего и начального счетчика циклов заносится не число байт, а число слов, уменьшенное на единицу; - размеры страниц памяти,  в пределах которых возможен обмен в течение одной передачи составляют 20000h байтов. Программное управление контроллером DMA осуществляется через порты ввода-вывода.  Доступ к каждому регистру контроллера может быть осуществлен через свои порты ввода-вывода.

Порты 0h-7h для DMA1 (C0h-CEh для DMA2; далее будут  указываться порты DMA1) предназначены для записи исходных значений в регистры начального и текущего адреса, начального и  текущего счетчика циклов для всех 4-х каналов. Так как порты  восьмиразрядные, а регистры, в которые  через  них заносятся данные, 16-разрядные, то запись производится в два приема. Перед первой командой вывода в требуемый порт необходимо сбросить триггер-защелку, для чего выполняется команда вывода  произвольного значения в порт Ch, после чего в требуемый порт  выводится  младший байт 16-разрядного значения и затем старший байт следующей команды вывода в тот же порт. Запись в порт 8h инициализирует команду DMA. Запись в  порт Bh устанавливает значение в регистре режимов одного из 4-х каналов DMA.  Биты 0 и 1 задают номер канала (00 - 0, 01 - 1, 10 - 2, 11 - 3). В биты 2 - 7 заносятся значения, передаваемые соответственно в биты 0 - 6 регистра режимов. Запись в  порт   Dh  задает  программный  сброс  контроллера (Master Clear).  Вывод любого байта в этот порт имеет тот же эффект, что и аппаратный сброс контроллера. При программном сбросе очищаются регистры команд,  состояния,  запросов и  рабочий  регистр. Так же сбрасывается триггер-защелка и устанавливается все биты масок в регистре масок.  После программного сброса контроллер переходит в цикл ожидания.

Вывод любого байта в порт Eh очищает регистр масок - сбрасывает  биты  масок всех 4-х каналов DMA и таким образом разрешает прием запросов на DMA по всем каналам.

Через порт Fh можно задать произвольное значение регистра масок DMA.  Для этого необходимо в битах 0 - 3 передаваемого  байта установить  требуемое значение масок каналов 0 - 3 соответственно и вывести это значение в порт.

Страничные регистры  DMA  предназначены  для  задания  номера страницы памяти,  с которой будет производится обмен. Под номером страницы понимаются старшие 4  бита  полного  20-битового  адреса ОЗУ, т.е. начальные сегментные адреса страниц будут кратны 10000h (0,  10000h,  20000h, ..., 90000h). Напомним, что архитектура DMA позволяет  работать  только со страницей памяти размером 64 К,  а логика,  обеспечивающая переключение страниц  устроена  так,  что страницы имеют жесткие границы. Из-за этой особенности невозможно с помощью DMA осуществить обмен с блоками памяти, пересекающими границу между двумя такими страницами.

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