Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Консп_АПЗ_ПК_10_укр.doc
Скачиваний:
45
Добавлен:
10.02.2016
Размер:
2.7 Mб
Скачать

11.2. Контролер dma 8237

Контролер призначений для ПДП по 4-м незалежним каналам з позитивним або негативним збільшенням адреси та з обсягом передачі до 64К циклів. Один цикл ПДП у звичайному режимі виконується за 4 такти CLK мікропроцесора, що для PC/XT становить 1.5Мбайт/с. Є можливість подвоєння швидкості обміну, а також збільшення числа каналів шляхом каскадування контролерів. У системах AT та вище використовуються два контролери та, відповідно, 7 каналів ПДП.

Регістри та команди контролера пдп

Кожний канал контролера містить 4 16-розрядних регістри.

Регістр поточної адреси CAR (current address register) зберігає поточне значення адреси комірки пам'яті в циклі ПДП, що збільшується або зменшується на одиницю після виконання циклу.

Регістр циклів ПДП CWR (current word register) зберігає число слів, призначених для передачі, плюс одиниця. Регістри зберігання базової адреси BAR та базового числа циклів ПДП WCR. Дані в ці регістри записуються тільки при початковому завантаженні. Регістри для читання недоступні. Кожний канал має також 6-розрядний регістр MR режиму роботи DMA.

Контролер містить один 8-розрядний регістр TR тимчасового зберігання даних при передачі «пам'ять-пам'ять». Така передача здійснюється за допомогою каналів 0 і 1. У системі PC/XT передача «пам'ять-пам'ять» неможлива, оскільки канал 0 зайнятий регенерацією ОЗП.

У контролері також присутній блок управління, що виробляє сигнали управління в циклах ПДП. Блок містить у собі два 8-розрядних (CR та SR), а також два 4-розрядних регістри (RR та MASK).

Режими роботи контролера пдп

Контролер має два основних режими: пасивний при роботі з CPU та активний при виконанні циклів ПДП. У пасивному режимі проводиться програмування контролера (зокрема, його ініціалізація), а також аналіз стану його регістрів. Контролер може бути запрограмований на одиночну передачу, блокову передачу, передачу на вимогу, а також на режим «пам'ять-пам'ять». При цьому можливі три типи передачі: запис даних в ОЗП, читання даних з ОЗП та псевдопередача ("перевірка"). Крім того, є кілька додаткових функцій: автоініціалізація, обслуговування по заданих пріоритетах або з їхньою циклічною зміною та операція "стискання у часі". В останньому випадку виконується двотактний цикл шини завдяки формуванню адреси старших розрядів тільки при її зміні.

BIOS при старті в регістри ПДП посилає наступні дані:

1) 0 у порт 83h - обнуління сторінкового регістра каналу 1.

2) 4 у порт 08h - заборона ПДП.

3) 12h у порт 0Dh - загальне скидання (регістр команд в 0, регістр масок - в FFh).

4) FFFFh у порти 0 та 1 - завантаження для каналу 0 молодшого + старшого байта в регістри BAR та CAR (порт 0), а також у регістри WCR та CWR (порт 1).

5) 58h у порт 0Bh – канал 0, читання, автоініціалізація, негативне збільшення адреси, одиночна передача.

6) 0 у порт 0Аh - зняти маску ПДП для каналу 0.

Таким чином, програмується 0-й канал ПДП на регенерацію пам'яті.

Контрольні питання

1. Чи може функціонувати комп'ютер без прямого доступу до пам’яті?

2. Що дає застосування ПДП?

3. Опишіть процес прямого доступу до пам’яті.

4. Яке призначення контролера ПДП.

5. Як програмується контролер ПДП?