Логічних аналізаторів НА БАЗІ КОМП'ЮТЕРА

А. Шрайбер, м. Москва

Загальнодоступна література з комп'ютерної тематики присвячена в основному традиційного застосування персонального комп'ютера (ПК) – для розрахунків, створення і редагування документів, пошуку і зберігання інформації, розваг. Рідше зустрічаються статті та книги про проектування за допомогою ПК різних радіоелектронних пристроїв. Про те, як ПК може допомогти радіоаматорові у налаштуванні та налагодженню створюваних ним пристроїв, матеріалів майже немає. Вважається, що для цього ПК повинен бути оснащений досить складними і дорогими додатковими платами і приставками. Проте нерідко ряд дуже корисних радіоаматорові функцій можна реалізувати, використовуючи наявні в кожному ПК стандартні пристрої, наприклад комунікаційні порти. 06 це і піде мова в пропонованій статті.

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

Набір сигналів інтерфейсу RS-232C та їх призначення докладно описані в [1]. Усі вони були переписані в табл. 1 разом з незгадані в тій же статті RI (Ring Indicator – індикатор дзвінка, ланцюг 125). Як видно, у розпорядженні користувача є три вихідні та п'ять вхідних ланцюгів. Програма, яка формує на виходах СОМ-порту сигнали потрібної форми і одночасно аналізує стан його входів, здатна перетворити ПК а запам'ятовує багатоканальний логічний аналізатор з широким діапазоном періодів аналізу і багатими можливостями синхронізації, обробки і відображення результатів. Вона може бути корисною при налагодженні самих різних цифрових пристроїв.

Таблиця 1.

Регістр

Доступ

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

СОМ1

COM2

Дані передавача

Запис

3F8H

2F8H

Дані приймача

Читання

3F8H

2F8H

Дільник швидкості обміну (молодший байт)

Запис

3F8H

2F8H

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

Запис

3F9H

2F9H

Дозвіл переривань

Запис

3F9H

2F9H

Ідентифікація переривань

Читання

3FAH

2FAH

Керування лінією

Запис

3FBH

2FBH

Управління модемом

Запис

3FCH

2FCH

Стан лінії

Читання

3FDH

2FDH

Стан модему

Читання

3FEH

2FEH

Основні труднощі розробки програми-аналізатора полягає в тому, що стандартна апаратно-програмна конфігурація IBM-сумісного ПК навіть за наявності швидкодіючих процесора і оперативної пам'яті дозволяє скільки-небудь точно формувати інтервали, менші декількох сотень мілісекунд, використовуючи в DOS переривання процесора по переповнення системного таймера, а в Windows – таймерні повідомлення. Так як ці події відбуваються з періодом приблизно 55 мс, саме таким виходить "квант" відліку часу. Спроби перепрограмувати таймер призводять до непрогнозованих наслідків для всіх працюючих програм і самої операційної системи.

Можна відмірювати час, підраховуючи кількість виконаних програмою циклів і подбавши, щоб цей процес не переривали зовнішні події. Але і таке завдання в сучасних операційних системах не вирішується коректно, до того ж потрібно підстроювання витримки стосовно кожної апаратної конфігурації ПК, В MS DOS такі проблеми вирішуються легше, але розробка програми стає занадто трудомісткою, якщо потрібні графічний інтерфейс і допоміжні дії: обчислення, друк графіків.

Тим не менше при використанні будь-якої операційної системи можна отримати сигнал суворо заданої частоти та форми на виході TXD послідовного порту. Як відомо, частота проходження бітів переданих даних дорівнює частці від ділення стабілізованої кварцовим резонатором зразкової частоти (115 200 Гц) на коефіцієнт М. Системне програмне забезпечення вибирає і встановлює цей коефіцієнт, виходячи зі стандартних швидкостей передачі інформації. Однак ніщо не заважає прикладній програмі привласнити коефіцієнту М будь-яке значення від 1 до 2 16 -1 (OFFFFH). Таким чином, на виході TXD можуть бути отримані імпульси частотою від 57,6 кГц до часткою Герца, причому довільну частоту нижче 12 кГц вдається встановити з похибкою не більше ± 10, а нижче 1,2 кГц-± 1%.

Послідовним портом керують через десять восьмирозрядних регістрів його контролера, званого універсальним асинхронним приймачем (УАПП, UART). У табл. 2 наведено адреси цих регістрів а просторі введення-виведення ПК і їх функціональне призначення. Неважко помітити, що деякі з них мають однакові адреси. Доступом до інших додатково управляє старший розряд (D7) регістра управління лінією. Якщо в ньому логічна 1, звертаються до регістрів дільника швидкості (старшого і молодшого байтів числа М). якщо 0 – даних передавача і приймача, дозволу переривань.

Таблиця 2.

Контакт роз'єму

Ланцюг

Напрямок передачі

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

До ПК

Формат сигналу на виході TXD залежить від коду, записаного в регістр управління лінією. Розрядами D1 та D0 цього коду задають число інформаційних бітів в слові, передаваному (або приймається) УАПП. Їх може бути від п'яти (в згаданих розрядах – код 00) до восьми (код 1 t). Число стоп-бітів залежить від стану розряду D2: 0 – один; 1 – два. При п'яти інформаційних замість двох стоп-бітів передається один, але полуторним тривалості, що зроблено для сумісності зі старовинними механічними телетайп.

Розряди D3-D5 регістра управління лінією керують бітом контролю парності. Якщо D3 = 1, при передачі він "вставляється" між останнім і першим інформаційним стоп-бітами, в іншому випадку – відсутня. Значення цього біта передавач автоматично вибирає таким, щоб загальна кількість одиниць в інформаційних і контрольному бітах стало парних (при D4 = 1) або непарних (при D4 = 0), Цю логіку можна відключити, задавши D5-1. Контрольний біт стане інверсним значенням розряду D4 незалежно від кількості одиниць в інформаційних бітах.

Логічної 1 в розряді D6 включають режим імітації розриву зв'язку. На виході TXD незалежно від стану всіх інших розрядів і регістрів встановлюється постійний рівень логічного 0. Призначення розряду D7 було описано вище.

У табл. 3 наведені деякі приклади формування в ланцюзі TXD сигналів різної частоти і шпаруватості, далеко не вичерпні всі можливості. Сигнал форми, показаної а відповідній графі таблиці, можна спостерігати

безпосередньо на виведення TXD УАПП. На зовнішньому роз'ємі порту він проінвертірован. Однак описаний нижче пристрій сполученні проінвертірует сигнал ще раз і його форма знову збіжиться з табличною.

Нагадаємо, що передача байта, записаного в регістр даних передавача, починається з молодшого розряду. Так як байт передається всього один раз, для отримання суворо періодичного вихідного сигналу необхідно повторювати завантаження зазначеного регістру негайно після його звільнення, Про готовність до запису нового байти свідчить D5 = 1 у регістрі стану лінії.

Якщо небажано витрачати час на постійний опитування регістра стану, можна скористатися переривань.

Зазвичай контролер порту СОМ1 генерує запит IRQ4, а COM2 – IRQ3. Генерацію запитів переривання по готовності передавача необхідно дозволити записом логічної 1 в розряд D1 регістра дозволу переривань. Коли ж одночасно дозволені запити та з інших причин, при їх обробці слід перш за все прочитати регістр ідентифікації переривань і, лише переконавшись, що в його розрядах D2 і D1 є двійковий код 10, записувати до реєстру даних передавача новий байт.

Рівні сигналів на виходах RTS і DTR залежать від стану розрядів D1 та DO регістра управління модемом. У розряди D2 та 03 цього регістра рекомендується записувати логічні 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 можна з'єднати один з входів порту безпосередньо з виходом Тхо. Це буває необхідно для тактірованія процесу аналізу.

Вилку XS1 з'єднують з розеткою послідовного порту ПК кабелем довжиною до декількох метрів, відлагоджує пристрій підключають до гнізд XS2-XS11. Живити вузол сполучення і відлагоджує пристрій найкраще від загального джерела, Часто в відлагоджує пристрої немає необхідного для живлення колекторних ланцюгів транзисторів VT1-VT4 негативного напруги. У такому випадку вони харчуються "випрямленою" діодами VD1-VD3 негативним напругою вихідних сигналів порту, які перебувають у стані логічної 1.

Розроблена автором програма генератора сигналів і логічного аналізатора працює в 32-розрядної середовищі Windows. Її головне вікно "Аналізатор", зображене на рис. 2, представляє собою екран віртуального чотирьохканальний (по числу вхідних ланцюгів порту) запам'ятовуючого осцилографа. Зліва від екрану розташовані індикатори ("світлодіоди"), що полегшують спостереження повільних процесів. Після запуску програми необхідно вибрати в меню "Порт" комунікаційний порт, з яким вона буде працювати.

Розгортка осцилографа може бути безперервної із заданим періодом або одноразової (запускають натисканням на відповідну кнопку). Кнопкою "Стоп" зображення можна "заморозити". Відкривши вікно "Синхронізація" (Рис. 3), вибирають як синхронізуючого будь-який з вхідних або вихідних сигналів. У вікні "Розгортка" (Рис. 4) задають тактову частоту аналізу та його тривалість.

Діалогове вікно "Режими вихідних ліній", в якому встановлюють частоту і форму генерованих сигналів, показано на рис. 5. Коефіцієнт ділення тактової частоти змінюють декадних перемикачем. Програма підраховує і виводить у вікні відповідні заданому коефіцієнту й обраної формі сигналу на виході TXD значення частоти та періоду повторення. Генерація може бути безперервної, R або пачками із заданого числа імпульсів.

Рівні сигналів DTR і RTS встановлюють кнопками "0" і "1". Крім того, на цих виходах можна отримати "меандр" або сигнал довільної форми.

ЛІТЕРАТУРА

1. Кармизов А. Інтерфейси IBM PC. – Радіо, 1996, № 10 с. 24, 25; № 11 с. 24 – 26.

2. Фролов О. В., Фролов Г В. Програмування модемів – М,: Діалог – МІФІ, 1993.

Примітка редакції.
Авторська програма генератора сигналів і логічного аналізатора (її ім'я analizer.exe, розмір – близько 423 кбайт) розміщена на редакційному сайті ( http://www.radio.ru ) В Інтернеті. Також можете завантажити архів, що саморозпаковується у нас – тут .