Контроллер прямого доступа к памяти

 

Для выполнения операций сопряжения с запоминающими устройствами и УВВ может с успехом использоваться БИС, управляющая прямым досту­пом к памяти (ПДП). Рассмотрим вариант построения контроллера ПДП на примере БИС 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 и его модификаций, поэтому допускается по неиспользуемым адресам адресного пространства контроллера ПДП подключать другие внешние устройства.