Часть 4.

В состав БИС входят: двунаправленный 8-разрядный буфер данных, связывающий ППИ с шиной данных, блок управления записью/чтением, обеспечивающий управление внутренними и внешними передачами данных, управляющих слов и информации о состоянии ППИ, три 8-разрядных канала ввода/вывода (порт А,В,С) для обмена информацией с внешними устройствами, схема управления группой А, вырабатывающая сигналы управления каналом А и старшими 4-мя разрядами канала С, схема управления группой В, вырабатывающая сигналы для канала В и младших разрядов канала С.

БИС поддерживает следующие режимы работы: режим 0 - основной режим ввода/вывода; режим 1 - стробируемый ввод/вывод; режим 2- режим двунаправленной передачи информации. Канал А может работать в любом из трех режимов, канал В - в режимах 0 и 1. Канал С может быть использован для передачи данных только в режиме 0, в остальных режимах он служит для передачи управляющих сигналов, сопровождающих процесс обмена по каналам А и В.

Используем каналы А, В и младшие разряды канала С для вывода, а старшие разряды канала С - для ввода. Тогда в схеме понадобится дополнительный буфер ввода на 9-4=5 разрядов. Адрес буфера данных очень важно определить смежным с адресом порта С, так как в режиме ПДП обмен ведется с помощью инкрементирования или декрементирования адреса контроллером ПДП. Соответственно, для разделения чтения ППИ и буфера достаточно построить схему детектирования двух младших битов адреса и сигнал чтения -IOR (или -IOW).

Для нормальной работы ППИ необходима его программная инициализация. Если бы модуль содержал дешифратор 10 линий адреса на 1 программный элемент, то данная процедура заключалась бы в простом обращении к порту и записи в него слова управления, но добавление в схему дешифратора увеличивает аппаратные расходы, при том, что есть другой метод инициализации: используя контроллер ПДП. Сначала необходимо выбрать два свободных канала ПДП. IBM PC AT имеет 8 каналов ПДП: 4 8-разрядных и 4 16-разрядных. Так как ППИ имеет 8-разрядную структуру, то для модуля будет использоваться 8-разрядные каналы. Выберем канал 1 для записи и канал 3 для чтения. Канал записи сначала программируется на передачу 4 байт (3 байта нулевых данных и 1 байт слова управления). Снимается маска канала. В буфер в памяти со смещением 3 записывается слово управления, остальное обнуляется. Разрешается запрос для этого канала, выполняется программная задержка на время записи в ППИ данных, далее выполняется запрет маскировки и канал перепрограммируется на передачу 3 байт. Канал чтения программируется на передачу двух байт. После программирования контроллера ПДП разрешается маскировка каналов и контроллер ПДП начинает обрабатывать запросы прямого доступа от модуля.

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

5 Часть

Частота сканирования сигнала невысока, т.е. цикл преобразования может составить 1/30МГц=33,3мкс, но каналов 3, т.е. на каждый канал по 11,1 мкс поэтому выберем АЦП данной фирмы - AD7892-3. AD7892-3 - это быстродействующий 12-разрядный АЦП, работающий по алгоритму последовательного приближения, с временем преобразования 1,3 мкс. АЦП содержит УВХ, источник опорного напряжения (ИОН) 2,5В, встроенный генератор и схема масштабирования сигнала. Требование к напряжению изоляции заставляет использовать гальваническую развязку для каждого входа.

Регистр управления (RG упр) необходим для формирования адресов каналов аналогового мультиплексора и управлением генератором. Общий алгоритм работы схемы выглядит следующим образом: при обращении программным путем к регистру управления включается генератор и выбирается канал. Генератор формирует импульсы частотой 30 кГц, по переднему фронту сигнала генератора фиксируется значение аналоговой величины в УВХ и запускается преобразование. После преобразования АЦП формирует сигнал «конец преобразования», который поступает на схему формирования запроса прерывания (СФЗ), которая формирует сигнал IRQ на шине PC-104, контроллер прерываний, входящий в состав МПС, обрабатывает пришедший сигнал и запускает программу-обработчик прерывания, которая в свою очередь, по разным адресам УВВ считывает старшую и младшую часть результата преобразования, после чего меняет номер канала в регистре управления и завершает работу. Весь цикл обработки должен завершится быстрее, чем за 1/30кГц = 33,3 мкс, т.к. через это время поступит новый сигнал преобразования от генератора.

Подходящую скорость и входные характеристики обеспечит аналоговый мультиплексор фирмы Analog Devices ADG509F. Микросхема представляет собой мультиплексор на 4 входа для дифференциальных сигналов, цифровые входы совместимы с ТТЛ.

Для обеспечения усиления Кu=2,5/0.625=4 используем изолированный усилитель фирмы Analog Devices AD102. Внутренняя структура усилителя представлена на рис. 5.5. В интегральную микросхему усилителя входят следующие компоненты: модулятор-усилитель, демодулятор, генератор, фильтр.

Определим количество программно-доступных элементов: чтение регистра старших разрядов результата (адрес 31Сh), чтение регистра младших разрядов результата (адрес 31Dh), чтение и запись регистра управления: итого четыре (адреса 31Eh и 31Fh).

Общий порядок работы следующий: при обращении к регистру управления по адресу 31Fh программист устанавливает номер канала, включает генератор и вводит в нормальный режим работы АЦП. Генератор посылает импульс на вход -CONVST, тем самым инициируя начало преобразования, после которого с выхода -EOC (END of CONVST) появляется импульс отрицательной полярности длительностью 100нс, по которому формируются отрицательные импульсы на входах -RD и -CS АЦП, тем самым переводя цифровые выходы АЦП из высокоимпедансного состояния и выставляя результат на ВШД, по инверсному сигналу -EOC с небольшой задержкой инвертора активизируются тактовые входы регистров-приемников результат, по прямому сигналу -EOC также запускается схема запроса прерывания. Обработчик прерывания обращаясь к модулю по адресам 31Ch и 31Dh, считывает результат преобразования, меняет адрес канала и завершает работу. При следующем вызове идет считывание значения следующего канала.

При выборе номера прерывания для проектируемого модуля необходимо учитывать задействованные номера прерываний IRQ микропроцессорной системы. Выберем номер прерывания IRQ5.

Программирование контроллера прерываний необходимо для того, чтобы при запросе на прерывание процессор передал управление программе- обработчику, специально написанной для обработки этой конкретной ситуации. В данном случае рассматривается как можно установить вектор прерывания на указанный адрес начала подпрограммы прерывания. Это можно сделать двумя путями: прямым изменением таблицы векторов прерываний (рекомендуют использовать только в случаях крайней необходимости) и с помощью двух системных функций: 25h и 35h  установить и считать адрес обработчика прерывания, которые рекомендуется использовать в обычных случаях. Чтобы завершить обработчик, любая процедура прерывания должна завершаться командой IRET. В конце каждого из аппаратных прерываний нужно включать строки:

MOV AL, 20H

OUT 20H, AL

Если аппаратное прерывание не заканчивается этими строками, то микросхема программируемого контроллера прерываний Intel 8259 не очистит информацию регистра обслуживания, с тем чтобы была разрешена обработка прерываний с более низкими уровнями, чем только что обработанное. Это может привести к сбою программы.

Соседние файлы в папке Проектирование микропроцессорного устройства системы управления