Постановка задачи
Разработать принципиальную схему модуля АЦП в соответствии с требуемыми техническими характеристиками:
Интерфейс с ЭВМ 286 шина ISA
Разрядность 8..12 бит
Кол-во каналов 2
Частота выборок не менее 10000
Наличие защиты от перенапряжения по входу и гальванической опторазвязки
Коэффициент усиления, изменяемый набором перемычек
Разработать конструкцию печатной платы модуля АЦП.
Разработать программное обеспечение - драйвер модуля АЦП под DOS.
Выбор АЦП.
Поскольку планируется практическая реализация устройства в условиях ограниченных финансовых возможностей, требуется выбрать наиболее дешевый АЦП из имеющихся в продаже, отвечающий требуемым техническим характеристикам. Выбран КР572ПВ3.
Выбор алгоритма взаимодействия с ЭВМ.
Шина ISA предусматривает следующие режимы обмена с подключенными к ней внешними устройствами:
1. обмен с устройством ввода/вывода
2. обмен с памятью
3. прямой доступ к памяти
Вышеперечисленные режимы могут быть синхронными, когда устройство успевает провести обмен за цикл шины, и асинхронными, когда устройство не успевает и выдает сигнал I/O CH RDY для приостановки обмена. 8- и 16-разрядный обмен производится в зависимости от сигнала -I/O CS 16, выдаваемого устройством.
Легче всего реализуем обмен с устройством ввода/вывода, а другие режимы не имеют перед ним существенных преимуществ в данной ситуации. Синхронный обмен в данном случае невозможен, т.к. время преобразования АЦП (7,5 мкс) больше допустимого времени задержки цикла шины сигналом I/O CH RDY (2,5 мкс). Деваться тут некуда - пусть будет асинхронный.
Асинхронные режимы взаимодействия устройства с программным обеспечением:
1. опрос флага готовности
2. прерывания
Прерывания хорошо годятся в случае одиночных выборок, но если чтение будет производиться блоками, обработчик прерываний будет вызываться постоянно, что может существенно замедлить работу системы в целом. Поскольку предпочтительно чтение блоками, выбран опрос флага готовности. Поскольку 8 бит уже заняты данными, выбран 16-разрядный режим обмена, чтобы читать данные и флаг готовности одной операцией чтения.
Итак, алгоритм взаимодействия с ЭВМ:
1. Свой адрес обнаружен на ША (проверяется на спаде BALE).
2. Выдать -I/O CS 16 = 0.
3. Если обнаружен -IOR, выдать данные с АЦП на 0-7 биты и флаг готовности на 15-й бит ШД и снять данные по окончанию -IOR.
4. Снять -I/O CS 16 по отсутствию своего адреса на ША на спаде BALE.
Алгоритм работы программного обеспечения:
1. Выбрать канал чтением одной выборки. Ее нужно будет отбросить.
2. Считать выборку и проверить старший бит. Если там 1, значит преобразование закончено и данные в младшем байте действительны. В противном случае вернуться к п.2.
Данный алгоритм реализован в драйвере блока АЦП. Драйвер с т.з. прикладных программ - устройство, из которого можно считывать данные побайтно тем же способом, что из файлов.
Режимы работы драйвера:
1) чтение 1 байта - чтение выборки с ожиданием флага готовности;
2) чтение 2х байтов - чтение выборки и флага готовности без его ожидания;
3) чтение более 2х байтов - чтение нескольких выборок с ожиданием флага готовности
между чтениями;
4) запись 1 байта (0/1) - выбор канала.
Техническая реализация
1. Селектор адреса
В процессе обмена с блоком АЦП используются разряды шины адреса SA0..SA9. В адресном пространстве ввода/вывода специально предусмотрен диапазон 300..31F для прототипных плат, поэтому адрес для блока АЦП выбран из этого диапазона. Селектор адреса выполнен на логических элементах. Чтобы выполнить его всего на 2х ИС (DD6 - многовходовый элемент И-НЕ К555ЛА12 и DD8 - инверторы К555ЛН1) выбраны адреса 1100011110 (31E) и 1100011111 (31F). DD8 инвертирует те разряды адреса, которые должны быть = "0". На выходе DD12 (сигнал "-адрес выбран") появляется "0" когда на шине адреса присутствует 1 из адресов блока и отсутствует сигнал AEN. Младший бит адреса служит для выбора канала. Сигналы -адерс_выбран и НОМЕР_КАНАЛА защелкиваются триггерами DD15 по спаду сигнала BALE.
2. АЦП
АЦП К572ПВ3 специально предназначен для работы в составе микропроцессорных систем, поэтому его сопряжение с шиной ISA не составляет труда. В режиме ROM при чтении данных с АЦП на -CS всегда подается низкий уровень, а преобразование запускается подачей на -RD импульса лог. "0".
АЦП и аналоговая часть гальванически развязаны от ЭВМ оптопарами. АЦП работает непрерывно, по окончании предыдущего преобразования запускается следующее, т.к. передача сигнала на запуск через оптопару - потеря времени и усложнение схемы. Во время преобразования на выходе -BUSY присутствует логический "0". По фронту -BUSY одновибратор DD9.1 вырабатывает сигнал -RD - импульс лог."0" длительностью t1 = tRAD*4 = 360нс (время, через которое на выходе АЦП появятся данные, умноженное на 4 для надежности), по спаду которого АЦП выдает данные, а по фронту - регистр DD14, являющийся частью кодера, защелкивает данные с АЦП и в последствии выдает их на схему опторазвязки в последовательном коде, а АЦП сбрасывается и начинает новый цикл преобразования. Время от фронта -BUSY до фронта -RD, задаваемое RC-цепью R10C2, должно быть не менее времени выборки данных tRAD = 180нс, для надежности t = 4tRAD = 360нс.
Тогда, при R10 = 2к, С2 = t/(0.45R10) = 400пф. Данные присутствуют на выходе АЦП минимум tRНD = 40нс после фронта -RD, так что регистр с его tздр = 18нс успеет их защелкнуть. Таким образом, данные текущей выборки передаются через опторазвязку во время следующего преобразования.
3. Кодер
Частотный код - это самосинхронизирующийся код с двумя состояниями, при котором в начале каждого бита происходит перепад, в середине нулевого бита перепада нет, в середине единичного бита перепад есть. Преимущество - относительная простота кодера и декодера.
Кодирование можно осуществить, сложив по модулю 2 два тактовых сигнала, сдвинутых на 90°, один из которых промодулирован информационным сигналом.
Кодер представляет собой 2 делителя частоты на 2 на D-триггерах DD16.1, DD16.2: на второй постоянно подается тактовый сигнал с генератора на DD4.1, DD4.2, C1, R8; а на первый - проинвертированный элементом DD10.4 тактовый сигнал только в моменты, когда входной сигнал - логическая единица. Выходы делителей подключены к элементу DD4.3 "исключающее ИЛИ". Входная информация поступает на вход элемента DD10.4 с выхода сдвигового регистра DD14, для этого на его тактовый вход подается последовательность из 8 импульсов, формируемая по импульсу запуска счетчиком DD6 и логическими элементами DD7.5, DD7.4. Импульс запуска, в свою очередь, формируется по фронту -RD логическими элементами DD7.1 - DD7.3, DD10.2.
Частота тактового генератора на DD4.1, DD4.2, C1, R8 f=5МГц, что соответствует скорости передачи данных через оптопару 2,5 Мбод (кодированных - 5Мбод). Это в 4 раза ниже максимально допустимой. Время передачи всего байта при этом 3,2мкс. Если принять R8=1k, то емкость С1:
4. Декодер
Алгоритм декодирования: если после перепада не позже времени t был второй перепад, то выдать на выход 1, если не было - 0, после чего ожидать следующего перепада, принимаемого за начало следующего бита. Оптимальное значение времени t = 3/4 длительности информационных битов.
Отсюда следуют основные функции декодера, позволяющие восстановить исходные данные - определение границ информационных битов и наличия перепада между этими границами.
Формирователь коротких импульсов на DD19.1-DD19.3, C5 формирует короткие импульсы в моменты перепадов входного сигнала. Чтобы эти импульсы не оказались слишком короткими для запуска одновибратора DD17.2, использован конденсатор С5, емкость которого подбирается до четкого срабатывания одновибратора DD17.2. Элемент DD13.3 блокирует перезапуск одновибратора DD17.2 следующим перепадом (информационным). Триггер DD18.2 по фронту импульса с инвертирующего выхода одновибратора DD17.2 защелкивает текущее состояние входного сигнала. Одновременно запускается одновибратор DD17.1, по фронту импульса с инвертирующего выхода которого сдвиговый регистр DD21 запоминает очередной принятый бит, равный (выход DD18.2)Å(текущее состояние входного сигнала). Счетчик DD20 считает принятые биты, и после приема восьмого бита на его выходе появляется лог."1". Этот флаг готовности подается на разряд шины данных SD15 через буферный элемент DD1.1 с 3мя состояниями по сигналу -RD (чтение данных из регистра DD21), фронт которого сбрасывает счетчик DD20, тем самым устанавливая флаг готовности в "0". Таким образом, ЦП, считывая очередную выборку, получает информацию о том, произошло ли преобразование с момента последнего чтения.
При f=5МГц длительность импульсов соответственно должны быть равны: для DD17.2 0,05мкс; для DD17.1 0,1мкс. Номиналы и погрешности RC-цепей:
Из расчета видно, что при максимально допустимой погрешности временных задержек 50% максимально допустимая погрешность всех элементов RC-цепей составляет 64%, можно применить детали с отклонением 20%.
6. Опторазвязка
В качестве опторазвязки информационного сигнала использована быстродействующая цифровая оптопара 6N137N, допускающая скорость 10Мбод. Для сигнала выбора канала - не очень быстрая, но зато дешевая оптопара TLР621.
7. Аналоговая часть
В качестве предварительного усилителя использован сдвоенный ОУ DA1 К140УД20 в неинвертирующем включении. Защитные диоды VD1-VD2, VD3-VD5 защищают входы ОУ от воздействия чрезмерно высоких напряжений. С него сигналы 2х каналов подаются на коммутатор DD2 К561КТ3, управляемый сигналом "номер канала" через оптопару DA2. Сигнал "номер канала" формируется из разряда адреса А0, т.о. программное обеспечение выбирает канал, производя чтение по одному из соседних адресов (31E и 31F). Причем считываемая выборка - с того канала, который был выбран предыдущей операцией чтения.
Разработка программного обеспечения
Чтобы с модулем АЦП можно было работать в DOS как с логическим устройством, требуется драйвер. Устанавливаемые драйверы устройств могут быть написаны только на языке ассемблера. Они могут обслуживать два типа устройств: символьные и блочные - в зависимости от того, как устройство обрабатывает данные. Блочные устройства обмениваются блоками данных, поэтому они занимаются накоплением данных. Символьные устройства обмениваются данными побайтно, поэтому они лучше подходят для управляющих
устройств, таких как данный модуль АЦП. Программа драйвера устройства содержит три части:
1) заголовок драйвера, который именует устройство и содержит информацию об остальных частях драйвера,
2) стратегия драйвера, которая хранит информацию об области данных, создаваемой MS DOS, которая называется заголовком запроса,
3) обработчик прерывания устройства, который и содержит код, управляющий устройством (здесь не имеется в виду аппаратное прерывание от устройства).
;режимы:
;1) чтение 1 байта - чтение выборки с ожиданием флага готовности;
;2) чтение 2х байтов - чтение выборки и флага готовности без его ожидания;
;3) чтение более 2х байтов - чтение нескольких выборок с ожиданием флага готовности
; между чтениями;
;4) запись 1 байта (0/1) - выбор канала.
.286
;заголовок драйвера
CSEG SEGMENT PUBLIC 'CODE' ;устанавливаем кодовый сегмент
ORG 0 ;эта строка необязательна
ASSUME CS:CSEG,DS:CSEG,ES:CSEG
ADC_DRV PROC FAR ;драйвер это далекая процедура
DD 0FFFFFFFFH ;адрес следующего драйвера
DW 8000H ;байт атрибутов
DW DEV_STRATEGY ;адрес процедуры стратегии
DW DEV_INTERRUPT ;адрес процедуры прерывания
DB 'ADC ' ;имя устройства (дополненное пробелами)
CHANNEL DW 0 ;номер канала
Список использованной литературы
1. Ю. В. Новиков, О. А. Калашников, С. Э. Гуляев. Разработка устройств сопряжения для персонального компьютера типа IBM PC. - М.: ЭКОМ, 1998.
2. О. Н. Лебедев, А. И. Мирошниченко, В. А. Телец. Справочник. Изделия электронной техники. Цифровые микросхемы. Микросхемы памяти. Микросхемы ЦАП и АЦП. - М.: Радио и связь, 1994.
3. Г. Р. Аванесян, В. П. Лёвшин. Интегральные микросхемы ТТЛ, ТТЛШ. Справочник. - М.: Машиностроение, 1993.
4. Справочная книга радиолюбителя-конструктора. / Н. И. Чистяков. - М.: Радио и связь, 1993.
5. Роберт Журден. Справочник программиста на персональном компьютере фирмы IBM. - М.: Радио и связь, 1989.
Таким образом возможно самостоятельное изготовление
В стоимость промышленного контроллера заложена:
1) стоимость железа (~1%)
2) сертификация (~5%)
3) комиссионные посреднику (10%)
4) зарплата разработчикам, административному аппарату и т.д. (~50%)
5) "накладные расходы" - (все остальное)
Таким образом возможно самостоятельное изготовление аналога контроллера за чуть более 1% стоимости промышленно выпускаемого оригинала. Если учесть то, что в оригинале используется Intel x86-совместимый процессор, то становится ясной возможность использовать в качестве ядра контроллера устаревшие ЭВМ IBM РC 286. Важными частями контроллера являются АЦП, необходимые для ввода аналоговых сигналов. В данной работе описывается процесс разработки конструкции блока АЦП для ЭВМ 286.
Был сконструирован блок АЦП со
Был сконструирован блок АЦП со следующими параметрами:
Интерфейс с ЭВМ 286 шина ISA
Разрядность 8 бит
Кол-во каналов 2
Частота выборок 125 кГц.
Защита от перенапряжения по входу при максимально допустимом входном токе 500 мА.
Гальваническая опторазвязка с напряжением пробоя изоляции 2500В
Минимальное входное напряжение 2 мВ.
Коэффициент усиления, изменяемый набором перемычек (максимальный 50000).
Драйвер под DOS.
Масса не более 500г.