kolhozing.ru
В началоАвторемонтМоделизмОргтехникаСад и огородЭлектроникаФорум

Логический анализатор

Рано или поздно любой, кто занимается отладкой или ремонтом (или ковырянием) цифровой электроники сталкивается с необходимостью посмотреть сигналы с логичеcкими уровнями в цепях отлаживаемого устройства. Можно воспользоваться простым аналоговым осциллографом, но он подоходит для наблюдения за периодическими сигналами, причем желательно что бы сигнал «укладывался» в пределы экрана. Т.е. если сигнал представляет собой несколько импульсов разной длительности, длина которых много меньше интервала повторения, то детально рассмотреть такой сигнал скорее всего не получится, разве что осциллограф умеет «масштабировать» снимаемый сигнал и показывать лишь часть интервала. И еще хуже, если сигнал непериодический, что бы его увидеть нужен осциллограф с памятью. А совсем плохо, когда необходимо одновременно видеть сигнал в нескольких точках, далеко не все осциллографы имеют два канала, а тем более четыре и больше. Но кроме того что бы снять сигнал, его нужно декодировать, если целью отладки является проверка передачи данных, например, по шине I2C. Относительно дорогие цифровые многоканальные осциллографы имеют функции декодирования популярных протоколов, но намного больше для этих целей подойдет логический анализатор. Можно сказать, что логический анализатор представляет из себя многоканальный осциллограф для сигналов логического уровня, но в отличии от осциллографа, ЛА, как правило, не работает в режиме реального времени, а снимает данные для проследующего анализа. Одним из таких анализаторов является продукция компании Saleae Logic, в частности 8-канальный логический анализатор. Оригинальный стоит довольно дорого, но поскольку аппаратная часть очень простая, а основная работа выполняется на ПК, то в Юго-Восточной Азии быстро наладили выпуск дешевых клонов, стоимостью менее 10$. О таком клоне я и хочу рассказать.

Девайс был куплен тут, в той самой Юго-Восточной Азии, где и изготавливается. Изменением VID/PID из этого анализатора можно сделать другой, USBee AX, правда, без аналогового канала. А в цифровой части они идентичные. Комплектация анализатора весьма лаконичная: сам анализатор, кабель mini-USB и шлейф на 10 проводов с разъемами BLS-1.

Анализатор очень маленький, 50х30х15мм, на фотографии видны его размеры в сравнении с разъемом USB-A. С одной стороны разъем mini-USB для подключения к ПК, с противоположенной вилка IDC 2x5. На верхней панели распиновка вилки и индикаторы питания и работы. На разъем выведены входы 8 каналов, земля и тактовый выход. В оригинальном такого нет, а в клоне, судя по всему, это выход для тактирования анализируемого устройства частотой анализатора для синхронизации. Идущие в комплекте соединительные провода предназначены для подключения к штырьевым контактам, поэтому имеет смысл купить зажимы типа «крючок» для подключения анализатора непосредственно к выводам элементов.

Качество изготовления платы не сказать что идеальное, но в целом приемлимое.

Заявленные технические характеристики логического анализатора:

  • 8 каналов;
  • частота оцифровки до 24 МГц;
  • количество семплов до 10 трлн. (скорее всего, зависит от объема памяти ПК);
  • входное сопротивление 100кОм, 5пФ;
  • диапазон рабочих напряжений -0,5В .. 5,25В;
  • напряжение «лог.0» -0,5В .. 0,8В
  • напряжение «лог.1» 2В .. 5,25В
  • защита по превышению напряжения ±15В, не предназначно для длительной работы вне диапазона -0,5В .. 5,25В;
  • точность измерения длительности импульса на частоте 24МГц ±42нс.
По заявленным характеристикам анализатор должен работать с логикой напряжением 5В, 3,3В, 2,5В, 2В.

После рассказа об аппаратной реализации самое время перейти к программной. ПО можно скачать с сайта разработчика оригинального анализатора, есть версии для Windows, MacOS и Linux. Последняя меня и интересует. На момент написания была доступна бета-версия 1.2.5 и стабильная версия 1.1.15 для Ubuntu 12.04.2 и старше. Но у меня Fedora, так что будем пробовать.

ПО в zip-архиве, никаких пакетов, ни .deb, ни, тем более, .rpm, так что готовимся ловить баги, связанные с версиями библиотек, если, конечно ПО собрано с динамическими библиотеками (забегая вперед: а оно так и собрано). Подключаем анализатор к кабелю и проверяем, что он опознался ядром:

$ lsusb
...
Bus 001 Device 008: ID 0925:3881 Lakeview Research Saleae Logic
...
Теперь надо провести «установку» ПО, которая состоит из двух шагов:
  1. Распаковать архив в отдельный каталог,
  2. Настроить правила udev для VID/PID анализатора.
Для второго в каталоге с ПО выполняем:
$ cd Drivers/
$ ./install_driver.sh 
+ sudo cp 99-SaleaeLogic.rules /etc/udev/rules.d/99-SaleaeLogic.rules
$ 
Что делает этот скрипт видно в строке, начинающейся с символа «+»: просто копирует правило в каталог udev, а в правиле перечисленны все VID/PID с которыми работает ПО и для устройств с которыми необходимо установить маску доступа позволяющую работать с устройством любому пользователю. Скопировав правило переподключаем анализатор и проверяем, что права доступа правильные. В моем случае Bus 001 Device 008, проверяем соответствующий файл в каталоге /dev
$ ls -la /dev/bus/usb/001/008
crw-rw-rw- 1 root root 189, 10 фев 21 23:16 /dev/bus/usb/001/008
Если командами ldd или readelf посмотреть зависимости от библиотек, то видно, что исполняемый файл собран с динамическими библиотеками и так как он не установлен из пакета, то пакетный менеджер при очередном обновлении системы может не сохранить нужные версии библиотек, как и сами библиотеки.
$ readelf -d ./Logic | grep NEEDED
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libAnalyzer.so]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libgobject-2.0.so.0]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libGL.so.1]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libglib-2.0.so.0]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libX11.so.6]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libz.so.1]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libxcb.so.1]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libX11-xcb.so.1]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libXi.so.6]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libSM.so.6]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libICE.so.6]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [librt.so.1]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libXrender.so.1]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libfontconfig.so.1]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libfreetype.so.6]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libm.so.6]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [libc.so.6]
 0x0000000000000001 (NEEDED)             Совм. исп. библиотека: [ld-linux-x86-64.so.2]
Из этого списка только первая библиотека идет в комплекте с анализатором и представляет API для дешифраторов протоколов, которые находятся в каталоге Analyzers. Что бы избежать потерь библиотек необходимо собрать и установить ПО пакетом, но... это как-нибудь в другой раз. Пока в текущей версии Fedora release 23 ПО работает и поэтому переходим непосредственно к рассмотрению его функций.

Интерфейс программы очень простой и интуитивно понятный: слева настройки каналов, справа анализаторы протоколов и инструменты измерений, по центру отображается захваченный с каналов сигнал.

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

После нажатия на «start» анализатор начнет запись сигналов, по завершению которой отобразит их на экране. На представленном примере подключены первые четыре канала.

Запись может начинаться не сразу, а по срабатыванию триггера, т.е. условий, установленных для каналов. Для выбранного канала можно установить одно из следующих условий для начала записи:
  • фронт сигнала;
  • спад сигнала;
  • положительный импульс заданной продолжительности;
  • отрицательный импульс заданной продолжительности.
Для остальных каналов можно задать дополнительные условия:
  • высокий уровень сигнала (лог.1);
  • низкий уровень сигнала (лог.0).
При выполнении всех условий начнется запись.

Два примера использования триггеров

Фронт нулевого канала, низкий уровень второго канала, низкий уровень третьего канала

Фронт нулевого канала, низкий уровень второго канала, высокий уровень третьего канала

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

Записанный сигнал можно не только рассматривать, но и анализировать. Самый простой анализ - навести указатель мышки на сигнал, ПО показывает длительность между фронтом и спадом, между двумя фронтами и частоту.

Более «продвинутые» инструменты находятся в правой части программы и один из них доступен по-умолчанию: это измерение длительности между двумя произвольными точками. Если точка находится рядом с фронтом сигнала, то она «приклеивается;» к нему. На следующием скриншоте показаны две точки, А1 совпадающая с фронтом сигнала нулевого канала и А2 совпадающая со спадом сигнала первого канала. Для них отображается длительность интервала между ними и их значения от начала записи.

Там же в Annotation есть еще один полезный инструмент, Measurement, с помощью которого можно измерить несколько характеристик сигнала на заданном интервале: число фронтов сигнала, число импульсов, скважность и т.д. Еще один скриншот демонстрирует применение этого инструмента, для отмеченного интервала выбрано отображение длительности, скважности, числа фронтов и числа импульсов отрицательной полярности.

ПО анализатора позволяет проводить дешифровку протоколов, выбирая для этого нужные каналы, но у меня нет источника каких-либо сигналов, которые можно поанализировать, поэтому просто скажу, что анализатор позволяет дешифровать более 20 разных протоколов, в т.ч. такие как I2C, Serial, CAN, LIN, DMX-512, SPI, ModBus, 1-wire и т.д. и предоставляет API для написания собственных дешифраторов.

На этом я пожалуй завершу рассказ об этом простом логическом анализаторе, добавлю только что мне эта штука понравилась, действительно полезный инструмент, особенно если нет многоканального цифрового запоминающего осциллографа.


рубрика: электроника
Комментарии
Ваше имя:

Ваше мнение:

введите код:
Пользовательский поиск
 
RSS-канал
Подписка по эл.почте
 
Реклама
 
Рубрики
 
Популярные метки