КОМПЬЮТЕРНОЕ ЖЕЛЕЗО
HARDWARE FOR PC

Архитектурные компоненты IBM PC-совместимого компьютера

6.2.7) был разработан фирмой Intel для обеспечения возможности исполь¬зования слотов ISA блокнотными ПК, подключаемыми к док-станции по шине PCI. Альтернативное решение — механизм DDMA (Distributed DMA — распреде¬ленный DMA) позволяет «расчленить» стандартный контроллер и отдельные его каналы эмулировать средствами карт PCI. Оба этих механизма реализуемы толь-ко как часть моста между первичной шиной PCI и шиной ISA, поэтому их под¬держка может обеспечиваться (или не обеспечиваться) только на системной пла¬те и разрешаться в CMOS Setup.
12.4.1. Контроллер прямого доступа 8237А
Микросхема 8237А, применявшаяся в PC вплоть до первых моделей AT, представ¬ляет собой четырехканальный контроллер прямого доступа к памяти, допуска¬ющий каскадирование. Вторичный контроллер (8237#2) каскадно соединен с пер¬вичным, при этом теряется возможность использования одного канала вторичного контроллера. Контроллер 8237А имеет 16-разрядные регистры адреса и счетчики, что обеспечивает возможность программирования передачи блока данных раз¬мером до 64 Кбайт или слов. Назначение регистров контроллеров DMA, при-менительно к их адресам в пространстве ввода-вывода компьютера, приведено в табл. 12.4. Контроллер допускает довольно гибкое конфигурирование. Коррект¬ное оперативное управление отдельными каналами не затрагивает общих настроек. Общее конфигурирование контроллеров (запись в регистры 008 и ODO) выполня¬ет BIOS при инициализации во время теста POST; в XT тогда же программирует¬ся и канал 0, применяемый для регенерации памяти. Для использования каналов устройствами шины ISA запись в регистры 008 и ODO не рекомендуется. Обмен с регистрами контроллера выполняется только однобайтными операциями вво¬да-вывода. Для загрузки 16-битных значений задействуется триггер младшего/ старшего байта. По сбросу контроллера или записи любого байта по адресу OOCh (OD8h для второго контроллера) этот триггер сбрасывается, и контроллер готовит¬ся к приему младшего байта. После приема этого байта триггер меняет состояние, и контроллер воспринимает старший байт, после которого триггер опять переклю¬чается.

Hosted by uCoz