Логический анализатор на базе компьютера.

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

Каждый IBM-совместимый ПК имеет два последовательных порта для обмена данными, именуемых СОМ-портами или интерфейсами RS-232C. К одному из них обычно подключен манипулятор "мышь", без которого сегодня трудно представить себе эффективную работу, второй часто остается свободным или используется время от времени для подключения внешнего модема и других периферийных устройств, не работающих постоянно.

Таблица 1.

Контакт разъема

Цепь

Направление передачи

DB-25

DB-9

1

-

PG

От ПК

2

3

TXD

К ПК

3

2

RXD

От ПК

4

7

RTS

К ПК

5

8

CTS

К ПК

6

6

DSR

К ПК

7

5

SG

К ПК

8

1

DCD

К ПК

20

4

DTR

От ПК

22

9

RI

К ПК

Набор сигналов интерфейса RS-232C и их назначение подробно описаны в [1]. Все они перечислены в табл. 1 вместе с не упомянутым в той же статье Rl (Ring Indicator - индикатор звонка, цепь 125). Как видно, в распоряжении пользователя имеются три выходных и пять входных цепей. Программа, формирующая на выходах СОМ-порта сигналы нужной формы и одновременно анализирующая состояние его входов, способна превратить ПК в запоминающий многоканальный логический анализатор с широким диапазоном периодов анализа и богатыми возможностями синхронизации, обработки и отображения результатов. Она может быть полезной при отладке самых различных цифровых устройств. Основная трудность разработки программы-анализатора заключается в том, что стандартная аппаратно-программная конфигурация IBM-совместимого ПК даже при наличии быстродействующих процессора и ОЗУ не позволяет сколько-нибудь точно формировать интервалы, меньшие нескольких сотен миллисекунд, используя в DOS прерывания процессора по переполнению системного таймера, а в Windows - таймерные сообщения. Так как эти события происходят с периодом приблизительно 55 мс, именно таким получается "квант" отсчета времени. Попытки перепрограммировать таймер приводят к непрогнозируемым последствиям для всех работающих программ и самой операционной системы. Можно отмерять время, подсчитывая число исполненных программой циклов и позаботившись, чтобы этот процесс не прерывали внешние события. Но и такая задача в современных операционных системах не решается корректно, к тому же требуется подстройка выдержки применительно к каждой аппаратной конфигурации ПК. В MS DOS подобные проблемы решаются легче, но разработка программы становится слишком трудоемкой, если требуются графический интерфейс и вспомогательные действия: вычисления, печать графиков. Тем не менее при использовании любой операционной системы можно получить сигнал строго заданной частоты и формы на выходе TXD последовательного порта. Как известно, частота следования битов передаваемых данных равна частному от деления стабилизированной кварцевым резонатором образцовой частоты (115 200 Гц) на коэффициент М. Системное программное обеспечение выбирает и устанавливает этот коэффициент, исходя из стандартных скоростей передачи информации. Однако ничто не мешает прикладной программе присвоить коэффициенту М любое значение от 1 до 216-1 (0FFFFH). Таким образом, на выходе TXD могут быть получены импульсы частотой от 57,6 кГц до долей герца, причем произвольную частоту ниже 12 кГц удается установить с погрешностью не более+10, а ниже 1,2кГц-+1 %. Последовательным портом управляют через десять восьмиразрядных регистров его контроллера, называемого универсальным асинхронным приемопередатчиком (УАПП, UART). В табл. 2 приведены адреса этих регистров в пространстве ввода-вывода ПК и их функциональное назначение.

Таблица 2.

Регистр

Доступ

Адрес для порта

СОМ1

COM2

Данные передатчика

Запись

3F8H

2F8H

Данные приемника

Чтение

3F8H

2F8H

Делитель скорости обмена (младший байт)

Запись

3F8H

2F8H

Делитель скорости обмена (старший байт)

Запись

3F9H

2F9H

Разрешение прерываний

Запись

3F9H

2F9H

Идентификация прерываний

Чтение

3FAH

2FAH

Управление линией

Запись

3FBH

2FBH

Управление модемом

Запись

3FCH

2FCH

Состояние линии

Чтение

3FDH

2FDH

Состояние модема

Чтение

3FEH

2FEH

Нетрудно заметить, что некоторые из них имеют одинаковые адреса. Доступом к другим дополнительно управляет старший разряд (D7) регистра управления линией. Если в нем логическая 1, обращаются к регистрам делителя скорости (старшего и младшего байтов числа М), если 0 - данных передатчика и приемника, разрешения прерываний. Формат сигнала на выходе TXD зависит от кода, записанного в регистр управления линией. Разрядами D1 и DO этого кода задают число информационных битов в слове, передаваемом (или принимаемом) УАПП. Их может быть от пяти (в упомянутых разрядах - код 00) до восьми (код 11). Число стоп-битов зависит от состояния разряда D2: 0 - один; 1 - два. При пяти информационных вместо двух стоп-битов передается один, но полуторной длительности, что сделано для совместимости со старинными механическими телетайпами. Разряды D3-D5 регистра управления линией управляют битом контроля четности. Если D3=1, при передаче он "вставляется" между последним информационным и первым стоп-битами, в противном случае - отсутствует. Значение этого бита передатчик автоматически выбирает таким, чтобы общее число единиц в информационных и контрольном битах стало четным (при D4=1) или нечетным (при D4=0). Эту логику можно отключить, задав D5=1. Контрольный бит станет инверсным значению разряда D4 независимо от числа единиц в информационных битах. Логической 1 в разряде D6 включают режим имитации разрыва связи. На выходе TXD независимо от состояния всех других разрядов и регистров устанавливается постоянный уровень логического 0. Назначение разряда D7 было описано выше.
В табл. 3 приведены некоторые примеры формирования в цепи TXD сигналов различной частоты и скважности, далеко не исчерпывающие все возможности.Сигнал формы, показанной в соответствующей графе таблицы, можно наблюдать непосредственно на выходе TXD УАПП. На внешнем разъеме порта он проинвертирован. Однако описанное ниже устройство сопряжения проинвертирует сигнал еще раз и его форма вновь совпадет с табличной.

Таблица 3.

Коды в регистрах

Сигнал на выходе TXD

управления линией

данных передатчика

Форма

Частота (F-115,2 кГц)

Скважность

ЗН

55Н

F/(2*M)

2

12Н

F/(3*M)

3

3BH

44Н

F/(4*M)

4

ЗН

ВН

F/(5*M)

5

3FH

0DBH

F/(3*M)

2/3

2FH

77Н

F/(4*M)

3/4

ЗН

0EFH

F/(5*M)

4/5

2FH

0DFH

F/(6*M)

5/6

Напомним, что передача байта, записанного в регистр данных передатчика, начинается с младшего разряда. Так как байт передается всего один раз, для получения строго периодического выходного сигнала необходимо повторять загрузку указанного регистра немедленно после его освобождения. О готовности к записи нового байта свидетельствует D5=1 в регистре состояния линии. Если нежелательно тратить время на постоянный опрос регистра состояния, можно воспользоваться прерываниями. Обычно контроллер порта СОМ1 генерирует запрос IRQ4, а COM2 - IRQ3. Генерацию запросов прерывания по готовности передатчика необходимо разрешить записью логической 1 в разряд D1 регистра разрешения прерываний. Когда же одновременно разрешены запросы и по другим причинам, при их обработке следует прежде всего прочитать регистр идентификации прерываний и, лишь убедившись, что в его разрядах D2 и D1 имеется двоичный код 10, записывать в регистр данных передатчика новый байт. Уровни сигналов на выходах RTS и DTR зависят от состояния разрядов D1 и D0 регистра управления модемом. В разряды D2 и D3 этого регистра рекомендуется записывать логические 0. Но в некоторых ПК нулевое значение разряда D3 отключает УАПП от контроллера прерываний. Если занести логическую 1 в разряд D4, цепи TXD и RXD будут соединены между собой внутри УАПП (так называемый "внутренний шлейф"), что можно использовать в отладочных и диагностических целях. В разрядах D4, D5, D6 и D7 регистра состояния модема отображаются текущие уровни сигналов на четырех входах - соответственно CTS, DTS, RI и DCD. Очень полезно свойство УАПП фиксировать единицами в разрядах DO-D3 факты изменения состояния названных цепей в интервалах между обращениями программы к этому регистру. Предусмотрены и прерывания по изменению состояния модема. Им соответствуют разряд D3 регистра разрешения прерываний и код 11 в разрядах D2 и D1 регистра их идентификации. К сожалению, основная при использовании последовательного порта по прямому назначению входная цепь RXD для рассматриваемой задачи не представляет большого интереса.
Подробнее о назначении и использовании регистров УАПП можно прочитать, например, в [2]. Логические уровни сигналов на входах и выходах последовательного порта должны находиться в пределах -3...-15 В (логическая 1) и +3...+15 В (логический 0). Для отладки устройств на микросхемах ТТЛ и КМОП эти уровни необходимо соответствующим образом преобразовать. Сделать это можно с помощью узла сопряжения, схема которого показана на рис. 1. Элементы микросхемы DD1 преобразуют выходные сигналы порта к необходимым уровням, а ключи на транзисторах VT1-VT4 выполнят обратное преобразование. Переключателем SA1 можно соединить один из входов порта непосредственно с выходом TXD. Это бывает необходимо для тактирования процесса анализа.

Вилку XS1 соединяют с розеткой последовательного порта ПК кабелем длиной до нескольких метров, отлаживаемое устройство подключают к гнездам XS2-XS11. Питать узел сопряжения и отлаживаемое устройство лучше всего от общего источника. Часто в отлаживаемом устройстве нет необходимого для питания коллекторных цепей транзисторов VT1-VT4 отрицательного напряжения. В таком случае они питаются "выпрямленным" диодами VD1-VD3 отрицательным напряжением выходных сигналов порта, находящихся в состоянии логической 1.
Разработанная автором программа генератора сигналов и логического анализатора работает в 32-разрядной среде Windows. Ее главное окно "Анализатор"  представляет собой экран виртуального четырехканального (по числу входных цепей порта) запоминающего осциллографа. Слева от экрана расположены индикаторы ("светодиоды"), облегчающие наблюдение медленных процессов. После запуска программы необходимо выбрать в меню "Порт" коммуникационный порт, с которым она будет работать. Развертка осциллографа может быть непрерывной с заданным периодом или однократной (запускают нажатием на соответствующую кнопку). Кнопкой "Стоп " изображение можно "заморозить". Открыв окно "Синхронизация", выбирают в качестве синхронизирующего любой из входных или выходных сигналов. В окне "Развертка" задают тактовую частоту анализа и его длительность. В диалоговом окне "Режимы выходных линий"устанавливают частоту и форму генерируемых сигналов. Коэффициент деления тактовой частоты изменяют декадным переключателем. Программа подсчитывает и выводит в окне соответствующие заданному коэффициенту и выбранной форме сигнала на выходе TXD значения частоты и периода повторения. Генерация может быть непрерывной, однократной или пачками из заданного числа импульсов. Уровни сигналов DTR и RTS устанавливают кнопками "0" и "1". Кроме того, на этих выходах можно получить "меандр" или сигнал произвольной формы.

Маленькое дополнение, предлагаю вашему вниманию печатную плату "Анализатора", которую я разработал с помощью редактора Trax Maker

ЛИТЕРАТУРА:
1. Кармызов А. Интерфейсы IBM PC. - Радио, 1996, ј 10 с. 24, 25; ј 11 с. 24-26.
2. Фролов А. В., Фролов Г. В. Программирование модемов. - м.: Диалог-МИФИ, 1993.
Авторская программа генератора сигналов и логического анализатора (ее имя log_analiz.zip) размещена на редакционном сайге http://www.paguo.ru/.

А. ШРАЙБЕР, г. Москва, Радио № 10, 1999

Назад