и пять входных цепей.
Программа, формирующая на выходах СОМ-порта сигналы нужной формы и одновременно анализирующая состояние его входов, способна превратить ПК в запоминающий многоканальный логический анализатор с широким диапазоном периодов анализа и богатыми возможностями синхронизации, обработки и отображения результатов. Она может быть полезной при отладке самых различных цифровых устройств.
Основная трудность разработки программы-анализатора заключается в том, что стандартная аппаратно-программная конфигурация IBM-совместимого ПК даже при наличии быстродействующих процессора и ОЗУ не позволяет сколько-нибудь точно формировать интервалы, меньшие нескольких сотен миллисекунд, используя в DOS прерывания процессора по переполнению системного таймера, а в Windows — таймерные сообщения.
Так как эти события происходят с периодом приблизительно 55 мс, именно таким получается "квант" отсчета времени. Попытки перепрограммировать таймер приводят к непрогнозируемым последствиям для всех работающих программ и самой операционной системы.
при использовании любой операционной системы можно получить сигнал строго заданной частоты и формы на выходе TXD последовательного порта.
Как известно, частота следования битов передаваемых данных равна частному от деления стабилизированной кварцевым резонатором образцовой частоты (115 200 Гц) на коэффициент М. Системное программное обеспечение выбирает и устанавливает этот коэффициент, исходя из стандартных скоростей передачи информации. Однако ничто не мешает прикладной программе присвоить коэффициенту М любое значение от 1 до 216-1 (OFFFFH).
Таблица 3.
Таким образом, на выходе TXD могут быть получены импульсы частотой от 57,6 кГц до долей герца, причем произвольную частоту ниже 12 кГц удается установить с погрешностью не более ±10, а ниже 1,2 кГц—±1 %.
Последовательным портом управляют через десять восьмиразрядных регистров его контроллера, называемого универсальным асинхронным приемопередатчиком (УАПП, UART). В табл. 2 приведены адреса этих регистров в пространстве ввода-вывода ПК и их функциональное назначение.
Нетрудно заметить, что некоторые из них имеют одинаковые адреса. Доступом к другим дополнительно управляет старший разряд (D7) регистра управления линией. Если в нем логическая 1, обращаются к регистрам делителя скорости (старшего и младшего байтов числа М), если 0 — данных передатчика и приемника, разрешения прерываний.
Формат сигнала на выходе TXD зависит от кода, записанного в регистр управления линией. Разрядами D1 и DO этого кода задают число информационных битов в слове, передаваемом (или принимаемом) УАПП.
Их может быть от пяти (в упомянутых разрядах — код 00) до восьми (код 11). Число стоп-битов зависит от состояния разряда D2: 0 — один; 1 — два. При пяти информационных вместо двух стоп-битов передается один, но полуторной длительности, что сделано для совместимости со старинными механическими телетайпами.
Рис.1.
Разряды D3—D5 регистра управления линией управляют битом контроля четности. Если 03
= 1, при передаче он "вставляется" между последним информационным и первым стоп-битами, в противном случае — отсутствует.
Значение этого бита передатчик автоматически выбирает таким, чтобы общее число единиц в информационных и контрольном битах стало четным (при 04
=1 ) или нечетным (при D4=0). Эту логику можно отключить, задав 05 = 1. Контрольный бит станет инверсным значению разряда D4 независимо от числа единиц в информационных битах.
Логической 1 в разряде D6 включают режим имитации разрыва связи. На выходе TXD независимо от состояния всех других разрядов и регистров устанавливается постоянный уровень логического 0. Назначение разряда D7 было описано выше.
В табл. 3 приведены некоторые примеры формирования в цепи TXD сигналов различной частоты и скважности, далеко не исчерпывающие все возможности.
Сигнал формы, показанной в соответствующей графе таблицы, можно наблюдать непосредственно на выходе TXD УАПП. На внешнем разъеме порта он проинвертирован.
Однако описанное ниже устройство сопряжения проинвертирует сигнал еще раз и его форма вновь совпадет с табличной. Напомним, что передача байта, записанного в регистр данных передатчика, начинается с младшего разряда.
Так как байт передается всего один раз, для получения строго периодического выходного сигнала необходимо повторять загрузку указанного регистра немедленно после его освобождения. О готовности к записи нового байта свидетельствует 05=1 в регистре состояния линии.
Рис.2.
Если нежелательно тратить время на постоянный опрос регистра состояния, можно воспользоваться прерываниями. Обычно контроллер порта СОМ1 генерирует запрос IRQ4, а COM2 — IRQ3.
Генерацию запросов прерывания по готовности передатчика необходимо разрешить записью логической 1 в разряд D1 регистра разрешения прерываний.
Когда же одновременно разрешены запросы и по другим причинам, при их обработке следует
, прежде всего прочитать регистр идентификации прерываний и, лишь убедившись, что в его разрядах D2 и D1 имеется двоичный код 10, записывать в регистр данных передатчика новый байт.
Уровни сигналов на выходах RTS и DTR зависят от состояния разрядов D1 и DO регистра управления модемом. В разряды D2 и D3 этого регистра рекомендуется записывать логические 0.
Но в некоторых ПК нулевое значение разряда D3 отключает УАПП от контроллера прерываний. Если занести логическую 1 в разряд D4, цепи TXD и RXD будут соединены между собой внутри УАПП (так называемый "внутренний шлейф"), что можно использовать в отладочных и диагностических целях.
Рис. 3
В разрядах D4, D5, D6 и D7 регистра состояния модема отображаются текущие уровни сигналов на четырех входах — соответственно CIS, DTS, RI и DCD. Очень полезно свойство УАПП фиксировать единицами в разрядах DO—D3 факты изменения состояния названных цепей в интервалах между обращениями программы к этому регистру. Предусмотрены и прерывания по изменению состояния модема.
Им соответствуют разряд D3 регистра разрешения прерываний и код 11 в разрядах D2 и D1 регистра их идентификации. К сожалению, основная при использовании последовательного порта по прямому назначению входная цепь RXD для рассматриваемой задачи не представляет большого интереса. Подробнее о назначении и использовании регистров УАПП можно прочитать, например, в [2].
Логические уровни сигналов на входах и выходах последовательного порта должны находиться в пределах -3...-15В (логическая 1) и +3...+15 В (логический 0). Для отладки устройств на микросхемах ТТЛ и КМОП эти уровни необходимо соответствующим образом преобразовать. Сделать это можно с помощью узла сопряжения, схема которого показана на рис. 1.
Элементы микросхемы DD1 преобразуют выходные сигналы порта к необходимым уровням, а ключи на транзисторах VT1—VT4 выполнят обратное преобразование. Переключателем SA1 можно соединить один из входов порта непосредственно с выходом TXD. Это бывает необходимо для тактирования процесса анализа.
Рис. 4
Вилку XS1 соединяют с розеткой последовательного порта ПК кабелем длиной до нескольких метров, отлаживаемое устройство подключают к гнездам XS2—XS11. Питать узел сопряжения и отлаживаемое устройство лучше всего от общего источника.
Часто в отлаживаемом устройстве нет необходимого для питания коллекторных цепей транзисторов VT1—VT4 отрицательного напряжения. В таком случае они питаются "выпрямленным" диодами VD1—VD3 отрицательным напряжением выходных сигналов порта, находящихся в состоянии логической 1.
Разработанная автором программа генератора сигналов и логического анализатора работает в 32-разрядной среде Windows. Ее главное окно "Анализатор", изображенное на рис. 2, представляет собой экран виртуального четырехканального (по числу входных цепей порта) запоминающего осциллографа.
Слева от экрана расположены индикаторы ("светодиоды"), облегчающие наблюдение медленных процессов. После запуска программы необходимо выбрать в меню "Порт" коммуникационный порт, с которым она будет работать.
Рис.5
Развертка осциллографа может быть непрерывной с заданным периодом или однократной (запускают нажатием на соответствующую кнопку). Кнопкой "Стоп " изображение можно "заморозить". Открыв окно "Синхронизация" (рис. 3), выбирают в качестве синхронизирующего любой из входных или выходных сигналов.
В окне "Развертка" (рис. 4) задают тактовую частоту анализа и его длительность. Диалоговое окно "Режимы выходных линий", в котором устанавливают частоту и форму генерируемых сигналов, показано на рис. 5. Коэффициент деления тактовой частоты изменяют декадным переключателем.
Программа подсчитывает и выводит в окне соответствующие заданному коэффициенту и выбранной форме сигнала на выходе TXD значения частоты и периода повторения. Генерация может быть непрерывной, однократной или пачками из заданного числа импульсов.
Уровни сигналов DTR и RTS устанавливают кнопками "0" и "1". Кроме того, на этих выходах можно получить "меандр" или сигнал произвольной формы.
Скачать
программу "Логический анализатор"
А. Шрайбер
Литература:
1. Кармызов А. Интерфейсы IBM PC. — Радио, 1996, № Юс. 24, 25; № 11 с. 24-26.
2. ФроловА. В., Фролов Г. В. Программирование модемов. - М.: Диалог-МИФИ, 1993.
Материал подготовил А. Кищин (UA9XJK).