Assembler - язык неограниченных возможностей


Контроллер DMA - часть 2


Младшие 16 бит адреса записывают в следующие порты:

    00h: биты 15 – 0 адреса блока данных для канала 0

    01h: счетчик переданных байт канала 0

    02h – 03h: аналогично для канала 1

    04h – 05h: аналогично для канала 2

    06h – 07h: аналогично для канала 3

    (для этих портов используются две операции чтения/записи — сначала передаются биты 7 – 0, затем биты 15 – 8)


    C0h: биты 8 – 1 адреса блока данных для канала 4 (бит 0 адреса всегда равен нулю)

    C1h: биты 16 – 9 адреса блока данных для канала 4

    C2h: младший байт счетчика переданных слов канала 4

    C3h: старший байт счетчика переданных слов канала 4

    C4h – C7h: аналогично для канала 5

    C8h – CBh: аналогично для канала 5

    CCh – CFh: аналогично для канала 5

    (эти порты рассчитаны на чтение/запись целыми словами)

Каждый из этих двух DMA-контроллеров также имеет собственный набор управляющих регистров — регистры первого контроллера адресуются через порты 08h – 0Fh, а второго — через D0 – DFh:

    порт 08h/D0h для чтения: регистр состояния DMA

    бит 7, 6, 5, 4: установлен запрос на DMA на канале 3/7, 2/6, 1/5, 0/4

    бит 3, 2, 1, 0: закончился DMA на канале 3/7, 2/6, 1/5, 0/4

порт 08h/D0h для записи: регистр команд DMA (устанавливается BIOS)

    бит 7: сигнал DACK использует высокий уровень

    бит 6: сигнал DREQ использует высокий уровень

    бит 5: 1/0 — расширенный/задержанный цикл записи

    бит 4: 1/0 — приоритеты сменяются циклически/фиксированно

    бит 3: сжатие во времени

    бит 2: DMA-контроллер отключен

    бит 1: разрешен захват канала 0 (для режима память-память)

    бит 0: включен режим память-память (канал 0 – канал 1)

порт 09h/D2h для записи: регистр запроса DMA




Начало  Назад  Вперед