Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Контроллер прямого доступа 8237А






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


466______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

Таблица 12.4. Регистры контроллера DMA 8237A 8237#1

Программирование контроллера для каждого канала определяет начальный адрес, направление его модификации (инкремент/декремент), количество пересылаемых байт (слов), режим работы канала. Регистры адреса контроллеров 8237 А — 16-раз­рядные, и для расширения разрядности адреса для каждого канала имеются специ­альные регистры страниц (DMA page register), внешние по отношению к контролле­рам 8237А. В отличие от адресных регистров контроллера 8237А регистры страниц при выполнении циклов DMA не модифицируются — в них по команде процессора до начала обмена по каналу загружается требуемое значение. В PC/AT регистры страниц хранят биты А[23: 16] для 8-битных каналов и А[23: 17] — для 16-битных. В PC/XT регистры страниц хранили только 4 бита А[19: 16]. Контроллер 16-битных каналов подключен к шине адреса со смещением на 1 бит, так что линией АО он не


12.4. Прямой доступ к памяти — DMA___________________________________ 467

управляет. При передаче по 16-битным каналам всегда А0=0 (передачи слов по четным адресам). Счетчики циклов каналов — 16-разрядные, что позволяет переда­вать блоки до 64 К байт (для 8-битных каналов) или слов (для 16-битных каналов). При инициализации в счетчик загружается число, на единицу меньшее требуемого числа циклов, так что FFFF соответствует 65 534 передачам (216). В последнем цикле передачи (когда счетчик отсчитает требуемое количество циклов) контроллер выра­батывает сигнал завершения ТС, общий для всех каналов. Этот сигнал устройство может использовать для выработки сигнала прерывания, а программа может опреде­лить, какой канал «отстрелялся», прочитав регистр состояния каналов в контролле­ре DMA. В зависимости от выбранного режима по окончании счета контроллер либо остановит работу данного канала, либо выполнит автоматическую реинициа-лизацию (автозагрузку) — восстановит прежде записанные значения регистра адре­са и счетчика циклов и будет снова готов к пересылке такого же блока данных.

ВНИМАНИЕ---------------------------------------------------------------------------------

При достижении регистром-счетчиком адреса значения FFFFh следующее его значение бу­дет OOOOh, а внешний регистр адреса страницы, естественно, останется неизменным. Таким образом, если блок начинается не с границы 64 Кбайт страницы памяти, возможно его «сво­рачивание» в кольцо. Но если для процессоров 80x86 в реальном режиме сегменты, также «сворачиваемые» в кольца, могут начинаться с адреса любого 16-байтного параграфа (грани­цы кратны 10h), то при прямом доступе эти границы кратны 10OOOh. Этот эффект обязательно необходимо учитывать при программировании прямого доступа —блок, пересекающий дан­ную границу, должен пересылаться за два сеанса циклов DMA, между которыми канал (вклю­чая и регистр страниц) должен быть реинициализирован. Эффект «сворачивания» сегментов в 16-битных каналах аналогичен, только для каналов. 5-7 эти «кольца» имеют размер 64 Кбайт слов и границы, кратные 20000h.

Разрядность передаваемых данных по каналу DMA должна соответствовать типу канала — 16-битный канал всегда пересылает данные словами, и расщепление их на одиночные байты невозможно.

Каждый канал может работать в одном из трех логических режимов.

♦ Режим одиночной передачи (single transfer mode) — получив подтверждение DACKx#, устройство сразу снимает сигнал запроса DRQx, а контроллер DMA организует один цикл передачи. Счетчик адреса в контроллере модифициру­ется, счетчик циклов декрементируется.

♦ Режим блочной передачи (block transfer mode) — получив подтверждение
DACKx#, устройство сразу снимает сигнал запроса DRQx, а контроллер DMA организует последовательность циклов передачи до обнуления счетчика цик­лов. Если разрешена автозагрузка канала, то для пересылки следующего блока требуется повторная подача DRQx. На время передачи всего блока контроллер монопольно захватывает шину, при этом не выполняется регенерация памяти.

♦ Режим передачи по запросу (demand transfer mode) — получив подтверждение DACKx#, устройство не снимает сигнал запроса DRQx до тех пор, пока у него есть потребность в передаче. При наличии этого сигнала контроллер DMA организует последовательность циклов передачи вплоть до обнуления счетчи­ка циклов. Если сигнал запроса снят до обнуления счетчика, контроллер DMA отдает управление шине, а при последующем появлении этого запроса продол­жит обмен с того места, на котором остановился.


468_______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

ВНИМАНИЕ---------------------------- ——---------------- ——------------------------------------ —

Используя DMA в режимах, отличных от одиночного, следует соблюдать осторожность, чтобы длительность непрерывной передачи не превышала 15 мкс.

Стандартный контроллер DMA на шине ISA с частотой 8 МГц работает на поло­винной частоте и требует для одиночной передачи не менее пяти своих тактов. Длительность одиночного цикла составляет 1, 125 мкс. В блочных передачах пропуск­ная способность DMA достигает 1 Мбайт/с для 8-битных каналов и 2 Мбайт/с для 16-битных (время цикла составляет 1 мкс). На современных компьютерах кон­троллер DMA реализуется чипсетом системной платы; при сохранении программ­ной совместимости с 8237А он может работать на шине гораздо быстрее. Количе­ство тактов шины на один цикл может программироваться опциями BIOS Setup.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.