Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2. Архітектура ПЕОМ.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
238 Кб
Скачать
☆

17.! Регістри каналів контролера прямого доступу до пам’яті (dma).

18.!Алгоритм ініціалізації контролера прямого доступу до пам’яті (dma).

Контролер прямого доступу до пам'яті.

Прямий доступ до пам'яті (DMA) - це метод безпосереднього звернення до пам'яті, минаючи процесор. Процесор відповідає тільки за програмування DMA: настроювання на певний тип передачі, завдання початкової адреси і розміру масиву обмінюваних даних. Зазвичай DMA використовується для обміну масивами даних між системною пам'яттю і пристроями введення-виведення.

Обмін даними між процесором і пристроями введення-виведення здійснюється з системної шини, "господарем" якої є процесор. При використанні контролера DMA на час обміну даними він повинен отримати управління системною шиною, тобто стати її "господарем". По закінченні обміну підсистема DMA повертає процесору право керування шиною.

Архітектура комп'ютера PC AT включає в себе підсистему DMA, що складається з двох контролерів DMA Intel 8237, регістра старшого адреси DMA і регістрів сторінок DMA. Ці контролери забезпечують 7 каналів DMA.

Система забезпечує передачу даних по каналах DMA як по одному байту за цикл DMA, так і по два байти за цикл, виходячи з можливостей архітектури процесора (двухбайтного шини даних). Щоб зберегти спадкоємність підсистеми DMA в PC AT з аналогічною підсистемою в PC XT каскадирование "байтного" контролера DMA з розподілом каналів XT здійснюється через "немов" контролер DMA.

Загальний алгоритм ПДП.

Для здійснення прямого доступу до пам'яті контролер повинен виконати ряд послідовних операцій:

прийняти запит (DREQ) від пристрою введення-виведення;

сформувати запит (HRQ) в процесор на захоплення шини;

прийняти сигнал (HLDA), що підтверджує захоплення шини;

сформувати сигнал (DACK), що повідомляє влаштуванню про початок обміну даними;

видати адресу осередки пам'яті, призначеної для обміну;

виробити сигнали (MEMR, IOW або MEMW, IOR), що забезпечують управління обміном;

по закінченні циклу DMA або повторити цикл DMA, змінивши адресу, або припинити цикл.

Ініціалізація каналу DMA

Для ініціалізації каналу програма повинна виконати наступні кроки:

скинути тригер байтів командою запису в регістр 0Ch;

задати режим роботи каналу, виконавши запис за адресою 0Bh в регістр режиму MR;

заслати молодші 16 бітів 20-бітового адреси області пам'яті, яка буде використана для передачі даних, в регістр базового Адес (адреса порту залежить від номера каналу: 0 канал використовує адресу 00h, 1 канал - 02h, 2 канал - 04h, 3 канал - 06h );

заслати номер сторінки (старші 4 біти 20-бітового адреси) в регістр сторінок 81h;

завантажити регістр циклів прямого доступу до пам'яті CWR значенням, на 1 менше необхідної кількості переданих байтів (адреси цих портів для каналів 0 ... 3, відповідно, 01h, 03h, 05h, 07h;

дозволити роботу каналу, виконавши запис в регістр маски каналів за адресою 0Ah.

Відразу після дозволу канал починає передачу даних. Після закінчення передачі даних пристрій зазвичай виробляє переривання, яке служить ознакою закінчення передачі даних.