На начало страницы
| Главная страница | Обмен с внешними устройствами | Системная шина ISA | Платы расширения для шины ISA |
| Пример системы сбора данных | Система виртуальной отладки | Справочная информация |
Построение систем сбора и обработки 
информации
Платы расширения для шины ISA
Структурная схема платы

    Рассматриваются только общие вопросы выбора структуры платы, реализуемых функций и используемых сигналов. Материал может быть использован только как ознакомительный. Конкретная реализация блоков платы расширения определяется каждым конкретным вариантом системы сбора и обработки информации.

После того, как установлен характер обмена платы расширения с различными внешними устройствами системы, можно определить используемые сигналы шины ISA, основные функции платы расширения по преобразованию информации и состав блоков на плате для реализации этих функций.
Набор функций платы для разрабатываемой системы следующий:
- прием цифровых сигналов (без запоминания) и передача в процессор по системной шине;
- выдача во внешний мир цифровых сигналов (с фиксацией в регистре кода, принятого с системной шины);
- обработка запроса на прерывание - запоминание факта (источника) запроса, выдача запроса на линию системной шины с последующим сбросом сигнала запроса;
- обработка аналогового сигнала - запуск АЦП, оцифровка сигнала, передача данных в процессор, и сброс АЦП.
Последовательность
разработки системы

Структурная схема платы
Состав программного
обеспечения

Варианты
реализации платы

СХЕМЫ ПЕРЕДАЧИ И ПРЕОБРАЗОВАНИЯ ДАННЫХ
Для нормального функционирования системы программное обеспечение прежде всего должно иметь возможность определять наличие платы на системной шине. Для этого можно установить на плате регистр с передатчиком, выдавать в регистр любой код, затем считывать его и сравнивать. Выберем более простой вариант - используем передатчик (D8), на входе которого "жестко" или с помощью DIP- переключателей задан некоторый код. Передача кода - открытие передатчика выполняется сигналом RD8# на входе OE# передатчика. Определенно ясно, что на плате будет несколько источников и приемников данных, поэтому введем внутреннюю шину данных (DB0-DB7). Сигнал RD8# должен быть сформирован платой при обращении программы по некоторому адресу, присвоенному этому передатчику. Код платы должен каким-то образом сообщаться программе, например, через файл конфигурации.
На этом этапе можно уже рисовать структурную схему платы.
Структурная схема
платы расширения
Плата от источника ВУА принимает байты данных в сопровождении синхроимпульса SYN. Так как время отклика на запрос прерывания, вызываемый синхроимпульсом, неизвестно, байт должен записываться этим же синхроимпульсом в промежуточный регистр (D6) на плате. Код байта из регистра через передатчик (D9), открываемый сигналом RD9#, передается на шину данных.
Сигнал разрешения посылки следующего байта - READY должен формироваться на плате. Определим его активное состояние как "1" и его исходное состояние, в которое он должен устанавливаться при инициализации платы, как "0". Для того, чтобы задавать произвольное значение этого сигнала, можно взять D-триггер (D12), его D-вход подсоединить к какой-либо линии шины, например, DB0. Запись нового состояния триггера выполняется сигналом WR12#.
От источника ВУС плата принимает аналоговый сигнал и преобразует его в цифровой код. Преобразование непрерывного во времени и по амплитуде аналогового сигнала в цифровой состоит из двух этапов: дискретизации по времени и квантования по амплитуде. Дискретизация по времени означает, что сигнал представляется рядом своих отсчетов, взятых через равные промежутки времени. Основной задачей на первом этапе оцифровки является выбор частоты дискретизации аналогового процесса. Для варианта системы эта величина задана значением периода опроса (Т) и нет указаний на большую частоту изменения аналогового сигнала. Точность квантования по амплитуде тоже невелика - 0,5 В для среднего значения из 5 отсчетов. Поэтому для оцифровки можно использовать АЦП типа К1113ПВ1. Диапазон изменения аналогового сигнала соответствует диапазону входных сигналов этого АЦП.
Принципы работы
АЦП К1113ПВ1
Выход АЦП 10-разрядный. Единица в старшем 9-м разряде имеет вес в 5,12 В, единица в младшем 0-м разряде - 0,01 В. Для вычисления среднего значения из 5 отсчетов с точностью 0,5 В использование всех 10 разрядов явно избыточно. Можно ограничиться восемью старшими разрядами. Запуск АЦП (D7) на преобразование кода и его последующий сброс управляется сигналом с триггера D15. Запись того или иного кода в триггер с шины данных управляется сигналом WR15#, выдача кода с АЦП на шину через передатчик D10 - сигналом RD10#, выдача сигнала готовности через передатчик D11 - cигналом RD11#. АЦП имеет выходы с "третьим" состоянием, но подключать их непосредственно к шине нельзя. "Третье" состояние обычно используется для объединения выходов нескольких АЦП. Использовать сигнал готовности АЦП в качестве сигнала запроса прерывания бессмысленно (преобразование выполняется за вполне определенное время (32 мкс) и, кроме того, обработка аналоговых сигналов практически всегда уже выполняется в некотором обработчике прерывания).
Если необходимое количество разрядов АЦП оказывается меньшим 8-ми, то и код и сигнал готовности можно выдавать на шину через один передатчик.
Для передачи данных в приемник ВУВ и приема от него байтов подтверждения используем БИС UART (D13), которая непосредственно подключается к шине данных. Для ее работы необходим генератор (D14) тактовых сигналов CLK. Работа с приемопередатчиком зависит от типа БИС, от этого же зависит и количество требуемых сигналов адреса - для схемы К580ВВ51 - один, для БИС i8250 (КР1847ВВ2) - три сигнала. Первая схема практически нигде уже не применяется, поэтому используем второй вариант. Чтение и запись данных в БИС выполняются сигналами I/ORD#* и I/OWR#* при активном сигнале выбора кристалла CS13#. Готовность БИС к обмену будем определять не по прерыванию, а по чтению ее регистра состояния.
Так как передача выполняется в соответствии с интерфейсом RS-232, необходимы согласователи уровней (D16-D17).
Структурная схема
платы расширения

БЛОК ПРЕРЫВАНИЙ
Плата расширения имеет несколько внешних источников запросов прерываний - сигналы S1 и S2 от ПУ и синхроимпульс, сопровождающий байты от источника ВУА. Плата может использовать только одну линию IRQ на системной шине. В таком случае в блоке прерываний (D5) должен быть регистр или отдельные триггера для фиксации каждого запроса. Чтение сигналом RD5# позволяет обработчику прерывания анализировать источник запроса прерывания и выполнять те или иные действия в соответствии с определенными приоритетами этих запросов. Запись кода сигналом WR5# позволит сбрасывать сигнал запроса прерывания, а также запрещать фиксацию тех или иных запросов. Сигнал RESDRV* устанавливает триггера или регистры блока прерываний в исходное состояние.
Плата расширения должна разрешать выборку линии прерывания во время установки, чтобы избежать конфликта с уже установленными платами или ресурсами системной платы ПК. Среди доступных линий запроса прерываний рекомендуется выбирать линии редко используемые или специально резервируемые для пользовательских плат. Чаще всего такими линиями являются IRQ10, IRQ11, IRQ12 и IRQ15. В ряде случаев платы могут использовать линии запросов прерывания, выделенные параллельным портам: IRQ5 и IRQ7, но при этом необходимо, чтобы источники таких же запросов прерывания на других платах (не вырабатывающих запросов) должны иметь выходы с "третьим" состоянием или возможность отключения линии запроса от системной шины.
Распределение аппаратных
прерываний между
устройствами ПК
Подключение блока прерываний к выбранной линии (с возможностью реконфигурации) решается программно или же с помощью джамперов или DIP-переключателей.
Выбор номеров прерываний - процесс двухсторонний: и плата должна быть сконфигурирована на использование конкретной линии шины, и программное обеспечение должно быть проинформировано об этом.
Выходной каскад для сигнала IRQ может иметь обычный TTL-выход. Однако для избежания случайных конфликтов желательно использовать элемент с "третьим" состоянием. Назначенную линию запроса прерывания плата должна поддерживать на низком уровне в пассивном состоянии и переводить в высокий уровень для активации запроса. Во время системного сброса выход IRQ должен находиться также в пассивном состоянии.

СЕЛЕКТОР АДРЕСА
Для формирования сигналов управления передатчиками и регистрами на плате - сигналов WRi# и RDi# необходим специальный блок - селектор адреса (D4). Каждый сигнал записи должен формироваться при выполнении команды Out, сигнал чтения - при выполнении команды In по определенном адресу порта ввода или вывода, указанному явно или косвенно в команде.
В большинстве случаев плата расширения использует несколько последовательно расположенных адресов портов. В нашем случае такими адресами могут быть:
Адрес Порт Операция
A0 D8 Чтение кода наличия платы
A1 D9 Чтение байта данных из ВУА
A2 D12 Формирование сигнала READY
A3 D15 Запуск и сброс АЦП
A4 D10 Чтение данных с АЦП
A5 D11 Чтение сигнала готовности
A6-A14 D13 Программирование и работа с БИС UART
A15 D5 Чтение номера источника запроса прерывания
A16 D5 Сброс источника запроса прерывания
Количество адресов можно сократить, объединив, например, адреса А1 и А2, А3 и А4, А15 и А16, так как по этим парам адресов производятся разные операции.
Входными сигналами для схемы селектора являются 10 сигналов адреса с системной шины и управляющие сигналы I/ORD#*, l/OWR#* и AEN*. В общем случае селектор адреса должен выполнять следующие функции:
- определять, относится адрес, выставленный на шине, к группе адресов, выделенных плате;
- декодировать адрес и преобразовать его в выходной сигнал записи или чтения, совпадающий с сигналом l/OWR#* или I/ORD#*. В отдельных случаях, когда управляющие сигналы записи или чтения подаются непосредственно на некоторый блок (например, БИС UART), то селектор должен декодировать группу адресов и формировать сигнал обращения к блоку (CS# - Chip Select).
- блокировать свою работу в режиме DMA;
- настраиваться на базовый адрес платы.
Циклы передач DMA производятся между памятью и устройствами ввода-вывода. Адресные линии управляются контроллером DMA и содержат адрес памяти, который не относится к пространству ввода-вывода. Одновременно с сигналами записи в память или чтения из памяти контроллер выдает на шину и сигналы I/ORD# или I/OWR#. Чтобы по сигналу I/ORD# не было ложного чтения (по I/OWR# - ложной записи) порта, адрес которого совпадает с адресом памяти, присутствующим в цикле DMA, контроллер DMA формирует высокий уровень сигнала AEN, сигнализирующий о недействительности адреса для порта ввода-вывода в цикле DMA. На плате расширения высоким уровнем сигнала AEN# должно блокироваться срабатывание селектора адреса.
Каждому внешнему устройству ПК выделяется своя область адресов в пространстве ввода-вывода. Плата расширения должна использовать свободное пространство адресов. Плат на шине может быть несколько. При совпадении областей адресов портов ввода-вывода операции записи они будут отрабатывать нормально. При операциях чтения возникнет конфликт. Поэтому плата расширения должна иметь возможность настраивать селектор адреса на различные области используемых адресов (настраивать на различные базовые адреса). Конфигурирование селектора адреса выполняется переключением джамперов, затем базовый адрес должен быть занесен в файл конфигурации. Распределение адресов
внешних устройств

БУФЕРНЫЕ СХЕМЫ
Все адресные и управляющие сигналы шины, работающие на плате на несколько входов, обычно буферизуются. При этом обеспечивается и электрическая развязка сигналов шины (гарантируются допустимые токи нагрузки) и физическая развязка (подключение сигналов шины только к одной точке на плате). В качестве буферов используются схемы передатчиков (D1-D2).
Буфер для сигналов данных должен обеспечивать их передачу в нужном направлении для чего используется двунаправленный приемопередатчик (D3). В момент действия сигнала системного сброса RESDRV передатчик должен быть закрыт. В рабочем состоянии буфер должен открываться сигналом ОЕboard#, когда на шине адреса присутствует адрес, относящийся ко всему диапазону адресов платы расширения. Передавать данные на шину буфер должен только во время действия сигнала чтения, относящегося к зоне адресов платы, поэтому на вход управления направлением передачи подается сигнал I/ORD#*.
Состав программного
обеспечения

| На главную страницу | На начало раздела | На начало страницы | © КСиТ МИФИ, 2001 г.