Работа с логическим анализатором
Расскажу о работе с логическим анализатором на примере моего логического анализатора и программы Saleae Logic 1.1.15. Итак, при установке и запуске программы мы увидим такое окно.
Это рабочая область программы. В самом верху мы можем видеть статус анализатора (Disconnected/Connected), а также два поля: Samples и MHz. В первом задаем размер памяти под чтение, а во втором скорость семплирования. Например при выборе 5M Samples (5 млн. выборок), и скорости 1 MHz, длинна записи составит: 5/1=5 секунд. Если скорость — 200 KHz, то: 5/0,2= 25 секунд. То есть чем выше скорость, при одинаковом размере памяти тем быстрее ее заполнит, но и тем точнее будет анализ. В общем настраивается под конкретный проект. Ниже мы видим все 8 линий логического анализатора. Для удобства их можно подписывать как угодно, как видите у меня они переименованы все кроме 7-ой. Там же есть настройка триггеров.
Это тоже очень удобно так как запуск записи происходит по событию на одном из портов. Слева расположена кнопка «Опции», там можно сохранять наши осциллограмы, а также вкладка «Measurements» и «Analyzers». Вторая это самая основная. Если вы отслеживаете работу какого-то модуля, то вам несомненно пригодятся встроенные анализаторы.
Как видно, присутствуют все возможные интерфейсы. Настраиваются они легко. Например у меня на 2 и 3 линии находятся RX и TX Uart интерфейса. Чтобы их настроить нужно нажать на плюсик рядом с Analyzers, выбрать Async Serial, и дальше ввести нужные настройки.
Программа простая, но очень функциональная и удобная. Ну а теперь покажу на примере. Сейчас у меня логический анализатор подключен к двум Uart портам микроконтроллера Stm32f103c8t6. На один поступают данные, а с другого они выходят, но с опозданием. Сейчас я передам на него строку и посмотрим как это будет выглядеть в анализаторе. Так выглядит строка адреса одной из статей сайта:
Видим какие-то данные на 2 линиях. Увеличиваем:
Видим что принятые данные одним портом были переданы другим, но с опозданием.
Над каждым принятым байтом программа поставила раскодировку.
Если же отключить на этих линиях анализатор, то увидим просто осциллограммы.
Кстати можно оперативно видеть ширину между «0» и «1», или измерять нужные участки с помощью курсоров.
Работа с логическим анализатором Saleae Logic Analyzer
Логический анализатор – незаменимый помощник при отладке цифровой схемотехники. Давайте рассмотрим основные приёмы работы с логическим анализатором Saleae Logic Analyzer и его китайскими аналогами.
Для работы нам понадобится:
- логический анализатор Saleae или аналог;
- преобразователь USB-UART;
- преобразователь USB-RS485;
- соединительные провода (рекомендую вот такой набор);
- макетная плата (breadboard).
1 Технические характеристики логического анализатора Saleae logic analyzer
Логический анализатор – это инструмент для временного анализа цифровых сигналов. Это незаменимый, действительно незаменимый инструмент при отладке цифровой электроники. Оригинальные анализаторы от именитых производителей стоят больших денег. У наших китайских друзей можно купить такое устройство за копейки. Поэтому если у вас его ещё нет – обязательно приобретите. Возможности данного небольшого устройства весьма внушительны.
В таблице перечислены основные параметры логического анализатора, моей китайской копии анализатора фирмы Saleae.
Параметр | Значение |
---|---|
число цифровых каналов | 8 |
частота оцифровки на канал | до 24 МГц |
количество сэмплов в выборке | до 1G (зависит от количества памяти ПК) |
входное сопротивление | 100 кОм |
диапазон рабочих напряжений | –0,5…5,25 В |
напряжение логического «0» | –0,5…0,8 В |
напряжение логической «1» | 2,0…5,25 В |
защита от статики | |
защита по превышению напряжения | +/−15 В |
2 Установка драйверадля логического анализатора Saleae
Для данного логического анализатора – китайской копии – к счастью, подходит драйвер от оригинала. Заходим на официальный сайт, скачиваем программу для своей операционной системы и устанавливаем её. Драйверы будут установлены вместе с программой. Кстати, обзор возможностей программы в виде инструкции на английском языке приложен в конце данной статьи.
Если у вас копия другой фирмы, например, USBee AX Pro, то с большой долей вероятности для него также подойдут драйверы от производителя анализатора-оригинала.
3 Примеры работы с логическим анализатором
Для первого эксперимента возьмём преобразователь USB-UART на микросхеме FTD1232. Подключим анализатор к порту USB. Выводы каналов с 1 по 6 подключим к выводам USB-UART преобразователя. По большому счёту, больше всего нас интересует только две линии – Rx и Tx, можно обойтись только ими. Преобразователь определился в системе как COM-порт. Запустим любую терминалку (вот, например, неплохая программа для работы с COM-портом) и подключимся к порту.
Запускаем программу Saleae Logic. Если драйверы для анализатора установлены корректно, в заголовке программы будет указано Connected – подключено. Допустим, мы не знаем на каком канале будет сигнал, а на каком нет, поэтому не будем выставлять триггер для начала захвата сигнала. Просто нажмём на стрелки большой зелёной кнопки Start (Старт) и выставим в поле Duration (Длительность), скажем, 10 секунд. Это время, в течение которого логический анализатор будет собирать приходящие по всем 8-ми каналам данные после нажатия кнопки «Старт». Запускаем захват и одновременно отправляем в COM-порт какое-нибудь сообщение. Через 10 секунд анализатор закончит сбор данных и выведет результат в поле просмотра сигналов. В данном случае сигнал будет лишь на одном канале, который присоединён к выводу Tx (передатчик) USB-UART преобразователя.
Для наглядности можно настроить декодер перехваченных данных. Для этого в правом столбце находим поле Analyzers, нажимаем иконку в виде плюса – «Добавить», указываем тип – Async Serial. Появится окно с выбором настроек. В первое поле вводим номер канала, на котором у вас данные. Остальное оставим как есть. После нажатия кнопки Save (Сохранить), над полем соответствующего канала появятся метки голубого цвета с отображением значений байтов, которые были перехвачены. Нажав на шестерёнку в данном дешифраторе, можно задать режим отображения значений – ASCII, HEX, BIN или DEC. Если вы передавали в COM-порт строку, выберите режим ASCII, и увидите тот текст, который был вами передан в порт.
Тут же, в правом столбце программы Saleae Logic, можно добавлять к перехваченным данным закладки, проводить измерения задержек и длительностей, выставлять всевозможные маркеры и даже проводить поиск по данным для декодированных протоколов.
Аналогичным образом подключим логический анализатор к преобразователю USB-RS485. Линии данных всего две, поэтому можно установить триггер срабатывания по фронту любого из каналов: сигнал в протоколе RS-485 дифференциальный и фронты импульсов появляются одновременно на каждом из каналов, но в противофазе.
Нажмём кнопку «Старт» в программе анализатора. С помощью нашей терминалки подключимся к USB-RS485 конвертеру и передадим какие-нибудь данные. По срабатыванию триггера программа начнёт собирать данные, по завершению выведет их на экран.
Программа Saleae Logic позволяет экспортировать сохранённые данные в виде изображений и текстовых данных, сохранять настройки программы, аннотации и декодеры каналов.
Последний пример в данном небольшом обзоре – захваченный кадр данных, переданный по последовательному протоколу SPI. В канале 2 виден сигнал выбора ведомого, в канале 0 – тактовые импульсы, а в канале 1 – собственно данные от ведущего устройства к ведомому.
Выводы
Логический анализатор может быть очень полезен при разработке и настройке всевозможных электронных устройств, при написании программного обеспечения, работающего в связке с железом, при работе с микроконтроллерами, ПЛИС и микропроцессорами, для анализа работы различных устройств и протоколов обмена данными, и для многих других применений. Кроме того, он портативен и не нуждается в отдельном питании.
Инструкция по работе с программой для логического анализатора Saleae
По ссылкам ниже можно скачать инструкцию с файлообменников, либо напрямую с сайта.
- Скачать инструкцию по работе с программой для логического анализатора Saleae с Depositfiles.com
- Скачать инструкцию по работе с программой для логического анализатора Saleae c Up-4ever.com
Скачать вложения:
- Скачать инструкцию по работе с программой для логического анализатора Saleae (3386 Скачиваний)
Логические анализаторы
Часто при разработке или отладке радиоэлектронных устройств состоящих из нескольких компонентов(микроконтроллер, АЦП, I2C память, итд) хочется посмотреть на общение этих компонентов между собой. Чтобы наконец понять почему всё написано «правильно», но ничего не работает. В целом для этого можно использовать цифровой осциллограф, но осциллографы с 4 каналами стоят достаточно дорого, да и не очень это удобно. Гораздо приятней такая задача решается при помощи логического анализатора. Логический анализатор по сути похож на осциллограф, но если основная задача осциллографа отображение изменение аналогового сигнала с чем он замечательно справляется, то цель логического анализатора запись цифрового(но не всегда только цифрового) сигнала с последующим его анализом в удобных программах.
Ниже я опишу опыт работы с логическими анализаторами Logic Pro 8 от Saleae ценой около 480$ и DSLogic Pro от DreamSourceLab(скорей всего копия) ценой $99 мне достался за 73$.
Кому стало интересно добро пожаловать под кат.
Технические характеристики
Логические анализаторы отличаются друг от друга в основном: количеством и типом каналов, наличием буфера, частотой сэмплирования.
Небольшая сравнительная таблица с характеристиками:
Число цифровых каналов | 8 | 16 | Чем больше тем лучше, но за год использования больше 4 пока было не особо нужно |
Число аналоговых каналов | 8 | 0 | Для аналога предпочтительней всё же осциллограф, но иногда бывает удобно увидеть, что творится не только в цифре на канале, но и в аналоге. |
Интерфейс | USB 2.0 / USB 3.0 | USB 2.0 | USB 3.0 предпочтительней если он у вас есть конечно. Хотя момент спорный, ниже опишу почему. |
Частота сэмплирования цифровых каналов | Чем больше тем лучше, но в случае есть один нюанс, но об этом ниже. | ||
Частота сэмплирования аналоговых каналов | — | Чем больше тем лучше. | |
Диапазон напряжений цифра/аналог: | Тут у Logic Pro 8 на выбор три пороговых напряжения 1.2V/1.8V/3.3V. У DSLogic Pro выбор от 0V до 5V с шагом 0.1V также у него значится защита от перенапряжение -30V — +30V. |
||
Внутреннее сопротивление каналов | 1,8 MOm | 250 кOm | Чем больше тем лучше, меньше оказывается наводок на исследуемую схему. |
Буфер | — | 256Mbits | Чем больше тем лучше, от этого параметра зависит сколько сэмплов может захватить анализатор не передавая их в компьютер. Вещь крайне полезная особенно для UBS 2.0 |
Глубина выборки | в теории не ограничена | 16MS на канал | Чем больше тем лучше, Logic Pro 8 использует память PC глубина выборки может быть очень большой, однако буфера DSLogic Pro тоже хватает. |
В общем по многим характеристикам Logic Pro 8 имеет перевес, особенно в плане аналоговой части. Однако отсутствие буфера сказывается отрицательно, во-первых скорость падает в два раза при использовании 4 каналов, и в 4 раза при использовании 6 и больше каналов. Но это не все, так как скорость плотно завязана на USB шину то казусы случаются если эта шина загружена, иногда достаточно подключить к одному USB хабу UART кабель, чтобы программа ругнулась и сказала, что скорости USB не хватает и скорость захвата будет снижена. Не то, чтобы это бывает часто и сильно мешает, но помнить про такое стоит.
Из особенностей DSLogic Pro хочется отметить ещё наличие внешней линии клока, и сигналов внешнего входа триггера, и выхода триггера.
Внешний вид и комплектация
Комплект Logic Pro 8:
- сам анализатор
- два коннектора с разноцветными проводами, по 4 канала на коннектор
- 16 клипс для соединения с ногами микросхем, проводами, итд
- USB 3.0 кабель USB-A to MictoUSB 3.0
Фотография на столе
Комплект DSLogic Pro:
- сам анализатор
- широкий коннектор на 16 каналов плюс дополнительные сигналы,
- 16 разноцветных клипс для соединения с ногами микросхем, проводами, итд
- USB 2.0 кабель USB-A to MictoUSB
Фотки с распаковки
Сравнение
Если сравнивать комплектацию то она приблизительно одинакова. Однако на мой взгляд коннектор с проводами для гораздо удобнее и приятней в обращении, провода более мягкие и гибкие. Клипсы у Logic Pro 8 в несколько раз удобнее. Во-первых имеют два штыря для соединения с проводом анализатора, что удобно, и во-вторых штыри для соединения находятся сбоку, что упрощает зацепку клипс с уже подключённым к ним проводом. У DSLogic Pro штырь находится сверху, что усложняет его подключение в разы, хотя по хваткости клипсы не отличаются, но общее качество всё же хромает.
Несколько сравнительных фото
Программное обеспечение
Какой бы не был хороший логический анализатор, без хорошего софта удобства работы с ним не будет. Хороший софт должен быстро отображать захваченные данные, позволять смотреть их характеристики такие как частоту, скважность. И очень хорошо, что бы он умел расшифровывать общеизвестные протоколы. Это невообразимо удобно указать где находятся ноги I2C и увидеть, что же именно происходило на шине с точки зрения I2C протокола, а не сидеть и чесать затылок вглядываясь и пытаясь понять так ли оно всё и какой здесь записался адрес. Каждый анализатор комплектуется своей программой:
Saleae Logic
Анализаторы Saleae комплектуются Saleae Logic
Программа мультиплатформенная, поддерживаются все версии Windows начиная с XP(год назад были проблемы с Win 7 и выше, в новой версии Win 7 работает без нареканий, выше не тестировал), Mac OS X 10.7 Lion+ устанавливалась и работала без нареканий, Ubuntu 12.04.2+ у меня так и не заработала(тестировал год назад на старой версии программы сейчас может работает), но я особо и не пытался.
Поддерживает большой список протоколов для анализа I2C/SPI/UART/CAN, работают без нареканий. Возможен захват как по ручному старту так и по триггеру на одном из каналов. Из недостатков на длинных выборках начинает достаточно сильно тормозить.
Из фич программы стоит отметить, возможность управление по telnet-подобному протоколу, наличие SDK для написания своих декодеров протоколов. Протоколы пишутся на C++, что усложняет процесс их написания.
DSView
DSLogic Pro комплектуется программой DSView:
Тоже мультиплатформенная программа поддержка Windows начиная с XP, Mac OS X 10.11.4, Linux(прога идёт в исходниках). По возможностям программа превосходит Saleae Logic, имеются более продвинутые триггеры с поддержкой сразу нескольких каналов, список протоколов достаточно обширен. Но тут разработчики пошли дальше и на протокол можно ещё навесить возможность расшифровки работы с конкретной реализацией этого протокола. Например Можно выбрать протокол I2C и реализацию 24СXX и после этого сразу прочитать, что именно происходило на шине с точки зрения данной микросхемы. Как протоколы так и их реализации пишутся при на Python, что по идее должно упростить написание и отладку. Тормозов в работе замечено не было.
Также стоит отметить, что проект является частично OpenSource и на GitHub выложены исходники софта, и HDL части. А на Wiki приведена схематика. Поэтому возможно скоро будет куча клонов данного устройства(возможно у меня тоже клон).
Простое тестирование
Для простой проверки анализаторов была использована дев.плата DE0-Nano-SoC на которой были сгенерированы меандры от 200Mhz каждый следующий получен делением на 2 предыдущего (200/100/50) попробую захватить их имеющимися анализаторами.
На DSLogic Pro удалось захватить 200Mhz/100Mhz/50Mhz ниже и так понятно, что всё идёт отлично. Сказать, что 200 и 100 были захвачены идеально нельзя иногда есть небольшое уплывание частоты и скважности, но в целом нормально, на 50 уже всё идеально.
DSLogic Pro
Seleae нормально не смог снять 200Mhz и 100Mhz, но 50 Mhz уже идёт идеально.
Logic Pro 8
И всё-таки к таким замерам я бы серьёзно не относился, 200Mhz замерять просто «накидными» проводами наверное перебор, но попробовать стоило.
Для эксперимента попробуем захватить передачу данных по I2C(передачи разные поэтому данные не сходятся).
Seleae
DSLogic Pro
Всё отлично читается, понятно где какое событие наступило, какие адреса и данные были переданы. Никакой возни.
Тоже самое для CAN:
Seleae
DSLogic Pro
Результат такой же как и в I2C всё наглядно понятно за минимальный промежуток времени.
Выводы
Оба логических анализатора отлично справляются со своими задачами. Не смотря на разницу в цене выделить кого-то в лидеры я бы не смог, у них есть и плюсы и минусы. На стороне Saleae внешний вид, удобные провода, качественные клипсы, USB3.0 и аналоговые каналы, стоит ли за это отдавать 400$ вопрос сложный, если есть возможность то почему бы и нет. На стороне DSView больше каналов, вход для внешнего клока и триггеров, буфер внутри анализатора, OpenSource софт, и цена. И тот и другой может очень сильно облегчить и ускорить работу по наладке своих или чужих схем, и изучению.сторонних протоколов.
Если есть вопросы – спрашивайте.
PS. Seleae используется у нас около года проблемы были только с ранними версиями софта под Win7 и выше, DSView купил для личного пользования около недели назад по пока нареканий нет, но и время пользования небольшое…
Основы применения логических анализаторов
Вам нужно одновременно контролировать входы и выходы 16-разрядного счетчика, чтобы определить ошибку синхронизации, но при этом у вас есть только 2-канальный осциллограф. Как же увидеть все это одновременно? Вы только что построили диаграмму сигналов для цифровой схемы. Как ее проверить? Чем воспользоваться для захвата и анализа этих сигналов? Без соответствующего инструмента решение этих задач отнимет массу времени. Лучшим решением для всех перечисленных проблем будет логический анализатор. В этой статье рассматриваются основные вопросы применения логических анализаторов. Прочтя ее, вы получите отличное представление о функциях логического анализатора.
Description
Осциллограф или логический анализатор?
- Когда нужно увидеть небольшие выбросы на сигнале
- Когда нужна высокая точность при определении временных интервалов
Когда нужен логический анализатор
- Когда нужно увидеть много сигналов одновременно
- Когда нужно представить сигналы именно так, как видит их само оборудование
- Если нужно синхронизироваться от определенной комбинации сигналов на нескольких линиях и увидеть результат
Когда сигнал в вашей системе пересекает пороговое значение, логический анализатор реагирует на него точно так же, как и сама логическая схема. Он распознает лишь два состояния сигнала – «ноль» или «единица». Кроме того, он может синхронизироваться по определенному сочетанию нулей и единиц исследуемых сигналов.
В общем случае используйте логический анализатор тогда, когда вам нужно увидеть больше сигналов, чем может показать осциллограф. Логические анализаторы очень полезны для определения временных соотношений или для исследования данных, передаваемых по шине, например, адресов, данных или управляющих сигналов на шине микропроцессора. Они могут декодировать информацию на шинах микропроцессоров и представлять ее в осмысленном виде.
Если вы закончили параметрический этап проектирования и занялись исследованиями временных соотношений между многими сигналами, причем вам нужно синхронизироваться по определенному сочетанию логических уровней этих сигналов, то вам нужен именно логический анализатор.
Что такое логический анализатор?
Многие логические анализаторы состоят, по сути дела, из двух анализаторов. Первый из них – это анализатор временных диаграмм (АВД), а второй – анализатор логических состояний (АЛС).
Принцип работы анализатора временных диаграмм
Анализатор временных диаграмм выводит информацию практически в том же виде, что и осциллограф, откладывая по горизонтальной оси время, а по вертикальной – уровень напряжения. Поскольку форма сигналов в обоих приборах зависит от времени, говорят, что они представляют сигнал во временной области.
Выбор правильного метода дискретизации
Анализатор временных диаграмм подобен цифровому осциллографу с вертикальным разрешением один бит. При разрешении один бит анализатор видит только два состояния – «ноль» или «единицу». Для него существует лишь один, определенный пользователем порог напряжения. Если сигнал в момент дискретизации превышает порог, анализатор отображает его как сигнал высокого уровня или «единицу». Если сигнал оказывается ниже порога, он отображается как «ноль» или сигнал низкого уровня. В результате создается список нулей и единиц, представляющий собой однобитное представление входного сигнала. Этот список сохраняется в памяти и используется для восстановления однобитной формы входного сигнала, как показано на рис. 1.
Рисунок 1. Точки дискретизации анализатора временных диаграмм
1. Порог
2. Точка дискретизации
3. Результаты дискретизации (0 означает, что сигнал ниже порога)
Результаты дискретизации (1 означает, что сигнал выше порога)
Анализатор временных диаграмм показывает сигнал, реконструированный по результатам дискретизации
Анализатор временных диаграмм превращает все сигналы в сигналы прямоугольной формы, что, на первый взгляд, ограничивает его возможности. Однако если вам нужно проанализировать временные соотношения нескольких сотен сигналов путем одновременного их наблюдения, вам нужен именно логический анализатор.
Помните, что каждая точка дискретизации использует одну ячейку памяти. Поэтому, чем выше разрешение (выше частота дискретизации), тем меньше окно захвата.
Дискретизация переходов
При захвате пакетных данных, как показано на рис. 2, нужно выбрать максимальное разрешение (например, 4 нс), чтобы захватить быстрые импульсы в самом начале. Это значит, что анализатор временных диаграмм с объемом памяти 4K (4096 отсчетов) прекратит захват данных через 16,4 мкс, и второй пакет данных вы уже не захватите.
Во время повседневной отладки нам постоянно приходится регистрировать и сохранять данные в моменты, когда активность сигнала отсутствует. Это приводит к бесполезному расходу памяти анализатора, не давая никакой дополнительной информации. Эту проблему можно решить, если знать, в какие моменты времени возникает переходной процесс и какой будет полярность сигнала – положительной или отрицательной. Эта информация составляет основу анализа переходов и позволяет повысить эффективность использования памяти.
Для реализации эффективного анализа переходов нужно использовать на входе анализатора временных диаграмм «детектор переходов» и счетчик. Теперь анализатор будет сохранять только те отсчеты, которым предшествовал переход, вместе со временем, прошедшим от последнего перехода. При таком подходе используется всего две ячейки памяти на каждый переход, а при отсутствии активности – память вообще не используется.
В нашем примере мы можем захватить второй пакет, а также третий, четвертый и пятый, в зависимости от того, сколько импульсов входит в состав пакета. В то же время, мы можем сохранить максимальное разрешение 4 нс (рис. 3).
Рисунок 2. Дискретизация с высоким разрешением
1. Точки дискретизации (все сохраняются в памяти)
2. 36 нс
3. 50 мкс
4. Память заполнена
4096 х 4 нс = 16,4 мкс
Рисунок 3. Дискретизация с детектором переходов
1. Точки дискретизации
2. Точки дискретизации, сохраненные в памяти
3. 36 нс
4. 50 мкс
5. Потребовалось всего 28 ячеек памяти (14 точек дискретизации + 14 временных интервалов)
Захват выбросов
Выбросы имеют дурную привычку появляться в самые неподходящие моменты времени с самыми тяжелыми последствиями. Анализатор временных диаграмм дискретизирует входные сигналы, следит за переходами, возникающими между выборками, и может обнаружить появление выброса. В случае анализатора выброс определяется как переход, несколько раз пересекающий порог между соседними выборками. Для распознания выброса мы должны «научить» анализатор распознавать множественные переходы и показывать их, как выбросы.
Хотя отображение выбросов само по себе очень полезно, было бы еще полезней синхронизироваться от выброса и показывать данные, предшествующие ему. Это помогло бы определить причину, вызвавшую выброс. К тому же, такая способность позволила бы анализатору регистрировать данные только тогда, когда нужно – в момент появления выброса.
Предположим, что у нас есть система, которая периодически сбоит из-за выбросов на одной из линий. Поскольку выбросы появляются редко, постоянное сохранение данных приведет к невероятному увеличению объема анализируемой информации (при наличии достаточного объема памяти). Или можно взять анализатор без функции синхронизации по выбросам и сидеть перед ним, нажимая кнопку Пуск, пока не заметим выброс.
Синхронизация анализатора временных диаграмм
Логический анализатор постоянно захватывает данные и прекращает захват при обнаружении точки трассировки. Это позволяет анализатору показывать информацию, предшествующую точке трассировки (известную, как отрицательное время), а также информацию после точки трассировки.
Синхронизация по комбинации сигналов
Определение условий трассировки для анализатора временных диаграмм несколько отличается от настройки уровня синхронизации осциллографа. Многие анализаторы могут синхронизироваться от определенного сочетания нулей и единиц на входных линиях.
Для облегчения работы условия синхронизации в большинстве анализаторов можно вводить в виде двоичных (нулей и единиц), шестнадцатеричных, восьмеричных или десятичных чисел или в виде символов ASCII. Использование шестнадцатеричных чисел особенно удобно для анализа шин, имеющих разрядность 4, 8, 16, 24, или 32 бита. Представьте, как сложно было бы указать условия синхронизации 24-битной шины в виде двоичного числа.
Синхронизация по фронту
Настройку уровня запуска в осциллографе можно представить, как установку уровня на компараторе, который вызывает запуск осциллографа, когда входное напряжение пересекает этот уровень. При синхронизации по фронту анализатор временных диаграмм работает, в сущности, так же, за исключением того, что уровень запуска определяется установкой логического порога.
Хотя многие логические устройства реагируют на уровень, тактовые и управляющие сигналы этих устройств работают, как правило, по фронту. Синхронизация по фронту позволяет начать захват данных в момент тактирования устройства.
Можно настроить анализатор так, чтобы он начинал захват данных при появлении фронта тактовой частоты (переднего или заднего) и захватывал все выходы регистра сдвига. Конечно, в таком случае нужно обеспечить задержку точки трассировки, чтобы учесть задержку распространения в регистре сдвига.
Принцип работы анализатора логических состояний
Если вы никогда не пользовались анализатором логических состояний, вам может показаться, что это невероятно сложный прибор, на овладение которым нужно потратить массу времени. Истина в том, что многие разработчики аппаратуры считают анализатор логических состояний очень полезным инструментом.
Когда нужен анализатор логических состояний
«Логическим состоянием» логической схемы называется значение шины или линии в момент, когда данные достоверны.
Давайте рассмотрим обычный D-триггер. Данные на входе D недостоверны до тех пор, пока не появится положительный фронт тактового сигнала. Таким образом, состояние этого триггера соответствует моменту появления положительного фронта тактового сигнала.
Теперь представьте, что у нас есть восемь таких триггеров. Все восемь подключены к одному и тому же тактовому сигналу. При появлении положительного фронта тактового сигнала все восемь триггеров захватывают данные со своих «D» входов, и это происходит при каждом положительном фронте тактового сигнала. Эти восемь линий аналогичны шине микропроцессора.
Если мы подключим к этим восьми линиям логический анализатор и скажем ему, регистрировать данные при каждом появлении положительного фронта тактового сигнала, анализатор как раз и будет анализировать логические состояния. Никакая активность на входе не будет регистрироваться, пока сигнал тактовой частоты не перейдет в единицу.
Анализатор временных диаграмм использует для управления дискретизацией встроенный генератор тактовой частоты, в результате он асинхронно дискретизирует сигналы исследуемой системы. Анализатор состояния дискретизирует сигналы синхронно, поскольку он получает тактовую частоту от самой системы.
Как правило, анализатор состояния выводит данные в виде списка, тогда как анализатор временных диаграмм выводит данные в виде временной диаграммы.
Что такое тактовая частота
В анализаторе временных диаграмм дискретизация выполняется под управлением внутреннего генератора тактовой частоты. Это сильно упрощает ситуацию. Однако в микропроцессорных схемах система может иметь несколько тактовых частот.
Предположим, что мы хотим засинхронизироваться от определенного адреса памяти и увидеть сохраненные в нем данные. Будем считать, что в системе используется процессор Zilog Z80.
Чтобы наш анализатор мог захватывать адреса процессора Z80, он должен регистрировать данные в тот момент, когда линия MREQ переходит в ноль. Однако для захвата данных анализатор должен делать выборку в момент, когда в ноль переходит линия WR (цикл записи) или когда в ноль переходит линия RD (цикл чтения). Некоторые процессоры передают данные и адрес по одним и тем же линиям. Анализатор должен уметь считывать информацию с одной и той же шины, но в разные моменты времени.
Рисунок 4. Временная диаграмма работы памяти
1. Операция чтения
2. Операция записи
3. Тактовая частота
4. Ожидание
5. Достоверный адрес
6. Достоверные данные
7. Выходные данные
Во время цикла чтения или записи Z80 сначала выводит адрес на шину адреса. Затем он устанавливает сигнал MREQ, показывая, что на шине присутствует достоверный адрес для чтения или записи в память. После этого устанавливается линия RD или WR, в зависимости от того, что выполняется, чтение или запись. Причем линия WR устанавливается только при наличии на шине достоверных данных.
Таким образом, анализатор временных диаграмм выступает в роли демультиплексора, который в нужное время захватывает адрес, а затем захватывает данные, которые появляются на тех же линиях.
Синхронизация анализатора логических состояний
Подобно анализатору временных диаграмм, анализатор логических состояний способен классифицировать данные, которые мы хотим сохранить. Если нас интересует определенное сочетание нулей и единиц на шине адреса, мы можем сказать анализатору, начать сохранение при обнаружении этого сочетания и продолжить сохранение до заполнения памяти.
Информацию можно отображать в шестнадцатеричной или в двоичной форме. Может оказаться полезным декодировать шестнадцатеричный код в команды ассемблера. В случае процессора шестнадцатеричные коды представляют собой его команды. Большинство производителей анализаторов разработали специальные пакеты программ, которые называются дизассемблерами или обратными ассемблерами. Назначение этих пакетов – преобразовать шестнадцатеричный код в команды ассемблера, чтобы упростить их интерпретацию.
Рисунок 5. Преобразование шестнадцатеричного кода в команды ассемблера
Что такое уровни последовательности
Анализаторы состояния имеют «уровни последовательности», которые облегчают синхронизацию и сохранение. Уровни последовательности позволяют более точно классифицировать сохраняемые данные, нежели отдельные точки синхронизации. Это значит, что вы можете точно установить окно регистрации данных, не сохраняя информацию, которая вам не нужна. Обычно уровни последовательности выглядят примерно так:
1 find xxxx else on xxxx go to level x 2 then find xxxx else on xxxx go to level x 3 trigger on xxxx
Селективное сохранение экономит память и время
Под селективным сохранением подразумевается сохранение некоторой части большого целого. Например, предположим, что у нас есть процедура на ассемблере, которая возводит в квадрат заданное число. Если эта процедура выполняет возведение в квадрат с ошибкой, мы может заставить анализатор логических состояний захватить эту процедуру. Для этого мы сначала говорим анализатору, найти начало процедуры. Когда он найдет начальный адрес, мы говорим ему, искать конечный адрес, одновременно сохраняя все промежуточные данные. При обнаружении конца процедуры, мы говорим анализатору, остановить сохранение.
Как подключить исследуемую систему
До сих пор мы обсуждали некоторые различия между осциллографами и анализаторами временных диаграмм и логических состояний. Но перед тем как мы сможем воспользоваться этими новыми приборами, нужно обсудить еще один вопрос – систему пробников.
Конструкция пробника логического анализатора позволяет подключать большое число каналов к исследуемой системе за счет некоторой потери точности по амплитуде. По традиции, логические анализаторы используют активные пробники со встроенными детекторами, рассчитанные на подключение восьми каналов и обладающие общей емкостью 16 пФ на канал.
Подключение пробников
Физическое подключение к цифровым системам должно быть надежным и удобным, чтобы точно передавать данные в логический анализатор с минимальным влиянием на исследуемую систему.
Типичным решением является пассивный пробник с шестнадцатью каналами на один кабель. Каждый кабель терминируется с обоих концов нагрузкой с сопротивлением 100 кОм и емкостью 8 пФ. Попробуйте сравнить электрические параметры пассивного пробника с пробником осциллографа. Кроме небольших размеров и высокой надежности, преимущество пассивной системы пробников заключаются в том, что можно терминировать пробник непосредственно в точке подключения его к исследуемой системе. Это позволяет исключить дополнительную паразитную емкость, связанную с проводами, соединяющими большие активные пробники с исследуемой системой. В результате тестируемая система «видит» емкость всего 8 пФ вместо 16 пФ, как в прежних системах снятия сигнала.
Пробники логического анализатора и другие принадлежности
Подключение анализатора логических состояний к микропроцессорной системе требует некоторых усилий, касающихся обеспечения механического подключения и выбора тактовых сигналов. Не забывайте, что нам надо тактировать анализатор логических состояний в моменты появления на шине достоверного адреса или данных. С некоторыми микропроцессорами может потребоваться применение внешних цепей для декодирования нескольких сигналов, чтобы получить сигнал тактовой частоты для анализатора. Пробник логического анализатора обеспечивает не только быстрое и надежное механическое соединение к исследуемой системе, но и все необходимые электрические адаптеры, такие как схемы тактирования и демультиплексирования.
Рисунок 6. Пробник логического анализатора
Заключение
В этой статье рассказывается, что такое логический анализатор и какие функции он выполняет. Поскольку большинство анализаторов состоит из двух основных частей, анализатора временных диаграмм и анализатора логических состояний, мы рассмотрели их отдельно. Но вместе они образуют мощный инструмент для разработчика цифровых схем.
Анализатор временных диаграмм больше подходит для схем и приложений с использованием шины, где приходится иметь дело с несколькими линиями. Также он может синхронизироваться по комбинации логических состояний линий или по выбросам.
Анализатор логических состояний чаще рассматривается, как программное средство. На самом деле он находит широкое применение и в аппаратной сфере. Поскольку он получает тактовую частоту из исследуемой системы, его можно использовать для захвата данных в тот момент, когда их видит система – по тактовой частоте самой системы.
Теперь, вооружившись фундаментальными знаниями, вы сможете уверенно пользоваться логическим анализатором для отладки своих схем.