Контроллер прямого доступа к памяти
Для выполнения операций сопряжения с запоминающими устройствами и УВВ может с успехом использоваться БИС, управляющая прямым доступом к памяти (ПДП). Рассмотрим вариант построения контроллера ПДП на примере БИС 82380, используемой в составе ЦП i80386.
Контроллер обеспечивает эффективную передачу данных по 32-разрядной шине и повышает скорость обслуживания системных устройств ввода-вывода в 5-10 раз по сравнению с предыдущими схемотехническими решениями, а также предельно минимизирует объем соответствующих периферийных БИС и логических схем.
Контроллер ПДП также называют интегрированным системным периферийным устройством, т.к. он выполняет ряд типовых функций, обычно реализуемых на отдельных компонентах БИС и СБИС. В состав контроллера ПДП (КПДП) входят следующие компоненты:
¨ логические схемы системного сброса;
¨ 20-уровневый программируемый контроллер прерываний;
¨ четыре 16-разрядных программируемых таймера;
¨ программируемый генератор с состояниями ожидания;
¨ контроллер регенерации динамического ОЗУ;
¨ схемы управления и арбитража внутренней шины КПДП.
Структурная схема КПДП приведена на рисунке. СБИС КПДП по своим функциям заменяет 20-30 соответствующих БИС предыдущих версий системы. КПДП может работать как в режиме ведущего устройства, так и в подчиненном режиме (ведомого). После системного сброса КПДП переходит в подчиненный режим и представляется как устройство ввода-вывода и работает под управлением ЦП по командам процессора. При выполнении передачи с ПДП контроллер работает в привилегированном режиме как ведущее устройство на шине.
Контроллер подключается непосредственно к локальной шине ЦП, поэтому назначение его управляющих сигналов такое же, как и у ЦП. В КПДП предусмотрена возможность управления 8-разрядными периферийными устройствами для обеспечения совместимости с соответствующими архитектурами и программами предыдущих моделей семейства. В режиме ведущего работа контроллера 82380 полностью согласуется с работой ЦП, т.е. механизм обращения контроллера к любому периферийному устройству на шине остается таким же, как было рассмотрено для ЦП.
Адреса всех регистров данных, управления и состояния контроллера (адреса портов ввода-вывода) фиксированы относительно друг друга, но может программироваться базовый адрес этого адресного пространства либо в оперативной памяти, либо в пространстве ввода-вывода.
Рассмотрим назначение и функции основных устройств КПДП.
К О Н Т Р О Л Л Е Р П Д П. С помощью контроллера ПДП можно адресовать полное физическое адресное пространство до 4 Гбайт.
В порядке обслуживания как программных, так и аппаратных запросов ПДП контроллер может поддерживать обмен данными следующих типов:
* порт ввода-вывода - порт ввода-вывода;
* память - память;
* порт ввода-вывода - память;
* память - порт ввода-вывода.
Контроллер имеет восемь 8-разрядных каналов, каждый из которых функционирует независимо один от другого и может быть запрограммирован для работы в любом из допустимых режимов.
Для каждого канала программист может выбрать дисциплину обслуживания с циклическими или фиксированными приоритетами. При фиксированных приоритетах нулевой канал имеет высший приоритет, седьмой - низший, причем предусмотрена возможность программисту самому назначать любому каналу низший приоритет, что позволяет изменять или приводить в исходное состояние расписание обслуживания приоритетов.
Каналы контроллера разделены на две группы по четыре канала: нижнюю и верхнюю и могут работать так, как будто два отдельных контроллера ПДП включены по каскадной схеме. Это позволяет одной группе присваивать фиксированные приоритеты, а другой циклические. Для дисциплины с циклическими приоритетами любому каналу после обслуживания присваивается низший приоритет (режим А).
Контроллер ПДП реализует передачу блоков данных в одном из следующих режимов:
* режим одиночного буфера: используется когда к моменту начала передачи известны объем и местоположение передаваемых данных, а данные размещены в непрерывной области памяти, причем по завершении передачи одиночного блока контроллер должен перепрограммироваться для других передач даже этого же блока;
* буферный режим с автоинициализацией: допускается многократная передача одного и того же блока данных без перепрограммирования канала каждый раз;
* режим с цепочкой буферов: в программе может быть определен список буферов, содержимое которых передается, при этом для перепрограммирования контроллера используются программы обработки прерываний. Канал для передачи содержимого буфера программируется до того, как закончится передача содержимого текущего буфера.
ПРОГРАММИРУЕМЫЙ КОНТРОЛЛЕР ПРЕРЫВАНИЙ.Функционально программируемый контроллер прерываний (ПКП) идентичен своим предшественникам 8259А и 82С59А, за исключением программирования векторов прерываний.
В данном ПКП объединены ресурсы трех контроллеров типа 8259А (ВН59А) путем каскадного включения двух ПКП типа 8259А в качестве ведомых. Контроллер может работать в режиме ведущего устройства (на 15 входов IRQ подаются запросы от внешних источников прерываний, но предпочтение отдается каскадированию пятнадцати входов запросов прерываний контроллеров 82С59А, что позволяет организовать до 120 каналов запросов, т.е. контроллер ПКП, входящий в состав КПДП 82380 является ведущим, а 15 внешних БИС ПКП 82С59А - ведомыми. При таком способе включения отпадает необходимость маскирования запросов по входам IRQ ведущего ПКП.
В отличие от ПКП 82С59А (ВН59А) в контроллере прерываний 82380 реализован более широкий и гибкий механизм использования векторов прерываний, поскольку каждый вход запроса прерываний IRQ может отдельно программироваться, т.е. каждому запросу прерываний IRQi может быть предписан свой собственный вектор прерывания. Для этого в составе контроллера вместо одного регистра управляющего слова инициализации ICW2 включен блок регистров программируемых векторов прерываний по одному на каждый вход IRQi. При инициализации ПКП номера векторов прерываний загружаются в набор векторных регистров VR (ICW2) для каждой линии запроса прерывания. Во время цикла подтверждения прерывания номер вектора прерывания с высшим приоритетом выставляется на шину данных и используется ЦП для обращения к таблице IDT векторов прерываний.
Другим отличием ПКП является то, что установление связи между ведущим и ведомыми ПКП вынесено из специализированных линий каскадного включения CAS2-CAS0 на шину данных, у которой часть линий не используется для выдачи вектора прерываний. В остальном режимы работы ПКП ничем не отличаются от БИС ПКП 82С59А (ВН59А).
Остальные пять входов IRQ ПКП используются для внутренних источников прерываний.
ПРОГРАММИРУЕМЫЕ ИНТЕРВАЛЬНЫЕ ТАЙМЕРЫ. По функционированию все таймеры идентичны своему предшественнику 82С54 (ВИ54). Каждый таймер может работать в одном из шести режимов и выполняет все его функции.
Таймер 0 занимает особое положение и обычно используется для формирования прерываний по времени, а его выход заводится непосредственно на вход контроллера прерываний. Этот таймер не имеет выхода (вывода) из контроллера 82380.
Таймер 1 ведет отсчет времени для формирования цикла регенерации динамического ОЗУ.
Выход таймера 2 соединяется с каким-либо входом запроса прерывания для обеспечения других функций таймера. Выходы таймеров 2 и 3 могут использоваться для специальных целей, а также для общих целей таймера и счетчика и имеют многофункциональное использование.
КОНТРОЛЛЕР РЕГЕНЕРАЦИИ ДИНАМИЧЕСКОГО ОЗУ. В состав контроллера регенерации ОЗУ входит 24-разрядный счетчик адреса регенерации и логические схемы арбитража. Типовой цикл регенерации составляет 6 тактов. На выходе таймера 1 периодически появляются запросы цикла регенерации, по которым контроллер выставляет запрос доступа к системной шине, имеющего наивысший приоритет. После подтверждения запроса от ЦП или другого ведущего на шине устройства контроллер регенерации активизирует сигнал REF#, вызывающий выполнение регенерации, а в конце цикла регенерации управление шиной возвращается микропроцессору.
ГЕНЕРАТОР С СОСТОЯНИЕМ ОЖИДАНИЯ. Предназначен для формирования сигналов готовности RDY# для ЦП от внешних памятей и УВВ, для которых необходимо формировать удлиненный цикл шины. Генератор с состоянием ожидания может быть активизирован любым устройством, в цикл шины которого требуется ввести такты ожидания. По таким запросам генератор поддерживает входной сигнал READY микропроцессора в неактивном состоянии в течение предварительно определенного (заданного) числа тактов шины. Для этого в генераторе имеется 6 программно доступных регистров состояния ожидания - по три для доступа к памяти и обращения к УВВ. Любой из этих шести регистров может быть выбран с помощью двухразрядного сигнала выбора состояния ожидания WSC1-WSC0 и сигнала M/IO#. На рисунке показана внешняя схема шифратора CD для формирования сигналов WSC. В 4-разрядные регистры состояния ожидания могут быть записаны коды количества тактов ожидания 0-15. После сброса во все шесть регистров загружается число FFh, что задает максимальное число тактов ожидания.
Любое устройство, которое может формировать свой собственный сигнал RDY#, может запретить работу генератора, установив оба сигнала на входах WSC в состояние высокого уровня (нормальный цикл шины).
СБРОС ЦЕНТРАЛЬНОГО ПРОЦЕССОРА. Контроллер 82380 реализует специальную функцию сброса, которая может быть реализована аппаратными средствами по сигналу RESET# от тактового генератора, либо программным запросом сброса. Программный сброс формируется путем записи в один из портов контроллера 82380 по адресу 64h кода 1111ххх0. После сброса требуется повторная инициализация микропроцессора.
Для определения причин сброса в контроллере 82380 имеется диагностический регистр, который представлен двумя восьмиразрядными портами. В них хранится информация, полученная в определенных контрольных точках, коды ошибок, выработанные при включении питания системы и при выполнении сервисных программ самодиагностирования. Диагностические порт 1 (адрес 80h) и порт 2 (адрес 88h) используются для различения "холодного" и "горячего" сбросов.
РАЗМЕЩЕНИЕ КАРТЫ РЕГИСТРОВ ПОРТОВ ВВОДА-ВЫВОДА. В результате аппаратного сброса по умолчанию адреса регистров портов контроллера 82380 располагаются в области 0000h-00DBh в адресном пространстве ввода-вывода. Размещение регистров портов контроллера 82380 может быть изменено программным образом с помощью регистра размещения, входящего в состав контроллера. Карта внутренних регистров портов ввода-вывода должна быть выровнена на любую 16-мегабайтную границу в пространстве 32-разрядных адресов памяти или на любую четную 256-байтную границу в пространстве 16-разрядных адресов портов ввода-вывода.
Адрес регистра размещения равен 7Fh и хранит базовый адрес множества внутренних регистров портов контроллера 82380. С помощью регистра можно задавать область из 256 последовательных адресов либо в оперативной памяти системы, либо в адресном пространстве ввода-вывода через регистр DX, через которое в дальнейшем осуществляется управление всеми периферийными устройствами, входящими в состав контроллера 82380.
Если в поле M/IO# установлен бит равный "1" (рис.13), то контроллер использует адресное пространство оперативной памяти, адресные сигналы А7-А0 используются для выбора порта ввода-вывода контроллера 82380, линии А23-А8 - не используются, сигнал на линии А24 всегда предполагается равным нулю, а линии А31-А25 указывают базовый адрес в адресном пространстве ОП для адресации к портам ввода-вывода. Например, если в регистр размещения загружено значение 10111001 (или 0B9h), то контроллер отобразит карту регистров портов ввода-вывода на область памяти с адресами B8хххх00h-B8xxxxFFh.
Если поле M/IO# = 0, то регистры портов 82380 отображаются на пространство ввода-вывода, адресные линии А7-А0 используются для выбора порта ввода-вывода, к которому выполнено обращение, линия А8 предполагается равной нулю, а А15-А9 соответствуют разрядам D7-D1 регистра размещения и указывают базовый адрес в пространстве адресов ввода-вывода контроллера 82380. Например, в регистр размещения загружено значение 11100100 (или 0Е4h), то регистры портов ввода-вывода 82380 отображены на пространство ввода-вывода между адресами 0Е400h-0E4FFh.
Заметим, что под адресацию внутренних регистров портов ввода-вывода контроллера 82380 отведены не все 256 последовательных адресов. Контроллер имеет свою внутреннюю схему декодирования сигналов с линий А7-А0 (селектор выбора адреса), и если такой адрес не обнаруживается, то контроллер игнорирует этот адрес. Эти адреса зарезервированы под будущие расширения периферийных устройств в составе контроллера 82380 и его модификаций, поэтому допускается по неиспользуемым адресам адресного пространства контроллера ПДП подключать другие внешние устройства.