link980 link981 link982 link983 link984 link985 link986 link987 link988 link989 link990 link991 link992 link993 link994 link995 link996 link997 link998 link999 link1000 link1001 link1002 link1003 link1004 link1005 link1006 link1007 link1008 link1009 link1010 link1011 link1012 link1013 link1014 link1015 link1016 link1017 link1018 link1019 link1020 link1021 link1022 link1023 link1024 link1025 link1026 link1027 link1028 link1029 link1030 link1031 link1032 link1033 link1034 link1035 link1036 link1037 link1038 link1039 link1040 link1041 link1042 link1043 link1044 link1045 link1046 link1047 link1048 link1049 link1050 link1051 link1052 link1053 link1054 link1055 link1056 link1057 link1058 link1059 link1060 link1061 link1062 link1063 link1064 link1065 link1066 link1067 link1068 link1069 link1070 link1071 link1072 link1073 link1074 link1075 link1076 link1077 link1078 link1079 link1080 link1081 link1082 link1083 link1084 link1085 link1086 link1087 link1088 link1089 link1090 link1091 link1092 link1093 link1094 link1095 link1096 link1097 link1098 link1099 link1100 link1101 link1102 link1103 link1104 link1105 link1106 link1107 link1108 link1109 link1110 link1111 link1112 link1113 link1114 link1115 link1116 link1117

PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Ввод-вывод

Ввод-вывод

Первое.ICW1 — определить особенности последовательности приказов

Состояние битов этого приказа (табл ниже) определяет особенности в последовательности приказов при инициализации контроллера. Данный приказ посылается в порт 20h.

Программирование

Перед началом работы необходимо запрограммировать все регистры, представленные в таблице (см. таблица ниже). Часть из них программируется при инициализации системы.

Программируются:

•начальный адрес памяти для обмена;
•уменьшенное на единицу число передаваемых байтов;
•направление обмена,
•требуемые режимы работы (разрешить или запретить циклическое изменение приоритетов, автоинициализацию, задать направление изменения адреса при обмене и т. д.);
•запрограммированный канал должен быть демаскирован (бит маски канала устанавливается при этом в 0), после чего он может принимать сигналы "Запрос на ПДП", генерируемые тем внешним устройством, которое обслуживается через этот канал. Сигнал "Запрос на ПДП" может быть также инициирован установкой в 1 бита запроса данного канала в регистре запросов контроллера.

Модель внешнего устройства для программиста

Каждое периферийное устройство имеет в своем составе один или несколько регистров, содержимое которых можно прочитать или записать командами программы. Сложные периферийные устройства могут содержать несколько десятков регистров. Таким образом, общее количество регистров периферийных устройств в системе может быть значительным.

Словосочетанием “модель периферийного устройства для программиста” будем называть набор регистров в периферийном устройстве, которые можно прочитать-записать программно.

Простейшая модель для программиста внешнего устройства может содержать довольно мало регистров: — регистр состояния (статуса), регистр управления, регистр (буфер) данных.

Применяют два основных способа доступа к регистрам ПУ:

  1. Произвольной адресации регистров;
  2. С индексацией регистров (SB).

В первом случае процессор по команде может записать/считать данные в любой регистр ПУ. Если ПУ имеет большое количество регистров, например, более 100, как в sound blaster, используют второй способ. В этом случае ПУ имеет два регистра: индексный регистр и регистр данных. При записи в индексный регистр заносим номер регистра ПУ, в который хотим записать, затем в регистр данных заносим записываемое число.

Адресация регистров внешнего устройства:

  • изолированный ввод-вывод (порты);
  • отображение на память.

В некоторых процессорах доступ к регистрам периферийных устройств осуществляется аналогично доступу к ячейкам памяти. Каждому регистру присвоен адрес в адресном пространстве памяти. В этом случае для обращения к регистрам ПУ можно использовать те же команды, что и для доступа к ячейкам памяти. Такая организация носит название "ввод-вывод, отображаемый на память". Обычно разработчики вычислительной системы выделяют для адресации регистров ПУ какой-либо фиксированный диапазон адресов.

В других процессорах регистры ПУ имеют свою систему адресации, никак не связанную с адресацией ячеек памяти. Для обращения к регистрам ПУ в системе команд имеются специальные команды ввода- вывода. Такая организация обмена с ПУ носит название "изолированный ввод-вывод". Для обозначения программно- доступных регистров периферийных устройств в компьютерной литературе используют термин "порты ввода-вывода".

 Пример 1. Нулевой канал таймера имеет порт данных с адресом 40h
и порт управления с адресом 43h.
Пример 2. Приемник последовательного интерфейса COM1 имеет
порт данных с адресом 0378h и порт состояния (статуса) с адресом
03FDh. Младший бит в порте состояния (флаг окончания приема)
устанавливается в 1, если приемник принял извне байт.

Оба вида адресации аппаратно поддержаны со стороны процессора. В первом случае в адресном пространстве процессора выделяется область адресов для ПУ. Адреса из этой области транслируются напрямую, без использования схемы преобразования (логический адрес равен физическому). В процессоре Motorola 68040 этот механизм называется “прозрачная трансляция адресов”. Для указания выделенной области регистров ПУ используются специальные регистры. В этих регистрах дополнительно имеются поля, определяющие разрешение/запрещение КЭШирования, тип доступа r/w и др. На рисунке (см. рисунок ниже) представлена схема страничной трансляции.

Схема страничной трансляции процессора МС68040

Регистры прозрачной трансляции ТТО и ТТ1 (см. рисунок ниже) определяют блоки адресного пространства, которые транслируются прозрачно (прямо): в этих блоках логические адреса являются физическими.

 

Формат регистров прозрачной трансляции

Значения полей регистров ТТО и ТТ1:

LOGICAL ADDRESS BASE — значение А31 — А24, определяют блок прозрачной трансляции;

LOGICAL ADDRESS MASK — игнорируемые разряды А31 — А24;

Е (Enable) — разрешение: определяет возможность прозрачной трансляции (Е=1 разрешена).

Cl (Cashe Inhibit) — КЭШ запрещен: определяет возможность использования КЭШа ( С1=0 означает, что КЭШ используется);

R/W — чтение/запись: определяет тип доступа в транслируемом блоке: (R/W=0 — запись; R/W=1 — чтение);

RWM (Read/Write Mask) — маска чтения-записи: определяет достоверность поля R/W (RWM=0 — поле используется);

FC BASE (Function Code Base) — значение функционального кода блока прозрачной трансляции;

FC MASK (Function Code Mask) — игнорируемые биты функциональною кода.

При изолированном вводе-выводе процессор должен иметь: специальные команды работы с ПУ, специальные сигналы на шине, различающие обращение к памяти и к ПУ.

В процессорах семейства х86 использован изолированный ввод-вывод. На шине процессора имеются специальные сигналы. При обращении к памяти вырабатываются стробы MEMR, MEMW, а к ПУ — стробы I/OR, I/OW. Схема подключения приведена на рисунке (см. рисунок ниже).

 

Схема подключения ПУ

В составе системы команд имеются следующие две команды ввода-вывода:

  1. in — ввод 1/2/4-байтового элемента данных из порта в регистр процессора al/ax/eax;
  2. out — вывод 1/2/4-байтового элемента данных из регистра al/ax/eax в порт.

Номер порта операнда-источника в команде in или операнда-приемника в команде out можно задать двумя способами: непосредственной адресацией или косвенно-регистровой с использованием только регистра dx.

!Примеры.

in                    al,040h; ввести байт в al из порта 40h

mov               dx,0378h; записать номер порта 0378h в регистр dx

in                    al,dx; ввести байт в al из порта 0378h

mov               al,049h; записать байт 49h в регистр al

out                 dx,al; вывести байт из al в порт, номер которого содержится в dx

Кроме того, в системе команд есть две строковые (цепочечные) команды ввода-вывода:

  1. insb / insw / insd - ввод из порта цепочки (строки) байтов/слов/двойных слов в последовательные адреса памяти;
  2. outsb / outsw /outsd — вывод цепочки (строки) байтов/слов/двойных слов из последовательных адресов памяти в порт.

Структурная схема модуля на базе шины ISA

Подробная структурная схема модуля Plug in Data Acquisition Board приведена на рисунке (см. рисунок ниже). На рисунке показаны не только составляющие модуль элементы, но и перечислены микросхе-мы для их реализации.

В модуле можно выделить следующие элементы:

•буфер системной ши-ны,
•схему декодирования адреса порта,
•параллельный ввод-вывод КР580 ВВ55 (Intel 8255),
•микросхемы АЦП и ЦАП.

Аппаратные прерывания и проблема приоритетов

Термином “аппаратное прерывание” называют ситуацию, когда источник прерывания — устройство, внешнее по отношению к вычислительному ядру, а событие, вызвавшее прерывание, не синхронизировано с процессом выполнения программы. Иногда источник запроса может быть интегрирован в одну микросхему с процессором (например, таймер в однокристальном микроконтроллере), но логически процессор и таймер независимы (и даже могут тактироваться от разных генераторов).

Типичный пример использования внешнего прерывания: по сигналу готовности принтера (говорящему о том, что предыдущая порция текста напечатана) выдать на него следующую порцию текстовой информации.

Используются две основные схемы подключения источников запросов к процессору: радиальная и магистральная.

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

При радиальной схеме каждый источник запроса использует индивидуальный вход запроса, в результате чего процессор может определить источник запроса и осуществить переход на соответствующую подпрограму обработки.

В том случае, когда несколько запросов требуют обработки одновременно, может оказаться, что некоторые из запросов более важны и должны быть обработаны в первую очередь. Для этого система управления прерываниями должна давать программисту возможность определять приоритеты, т.е. порядок реакции на запросы.

Подкатегории