Схема 16-канального логического анализатора
Необходимость логического анализатора как помощника при отладке последовательных линий связи, например, l2C, 1-Wire и параллельных шин, например, интерфейса распространенных индикаторов DataVision, очевидна. Однако профессиональные логические анализаторы, например, выпускаемые под маркой Techtronics и Adgilent, не по карману не только радиолюбителю-разработчику, но даже и не очень крупным фирмам.
Применение же аналогового осциллографа ограничивается тем, что для наблюдения необходимо зацикливать посылку команды, что не всегда приводит к устойчивой картинке, особенно если в микроконтроллере для каких-то других нужд используется аппаратное прерывание, что приводит к неодинаковости времени между посылками и, как следствие, дрожанию картинки. В то же время, учитывая распространенность ПЛИС, изготовление простого анализатора для отладки не слишком скоростных шин представляется весьма реальным.
Предложенный анализатор имеет 16 входных каналов, первые 8 из которых используются для задания события, по которому сработает триггер записи в память, и статическую память на 32К 16-разрядных слов. Время выборки сигналов определяется быстродействием ПЛИС и памяти; к примеру, Altera с уровнем быстродействия 10 при проведении временного анализа программой Мах+ показала частоту 55 МГц, что соответствует времени выборки (с запасом) в 25 МГц (контроллер статической памяти расходует два такта на запись в память).
Возможен упрощенный вариант, при котором ПЛИС тактируются частотой, снимаемой с выхода XTAL2 микроконтроллера — этот вариант использовался ввиду того, что память со временем доступа 70 не не позволяла реализовать максимально возможную скорость. При использовании более высокоскоростной памяти на плату устанавливается кварцевый генератор соответствующей частоты. Анализатор соединяется с ЭВМ по интерфейсу RS-232С, передавая данные для отображения на экране. Команды и операции передаются от ЭВМ по тому же интерфейсу.
Схема логического анализатора показана на рис. 2.Применение микроконтроллера было продиктовано наличием в нем универсального асинхронного приемопередатчика, позволяющего осуществлять связь с компьютером. Тактируется микроконтроллер от кварца частотой 8 МГц. С контроллером последовательностей микроконтроллер (МК) связан двунаправленной восьмиразрядной шиной, позволяющей записывать конфигурационные регистры контроллера последовательностей и считывать его состояние.
Контроллер последовательностей (КП) осуществляет анализ входных данных и в зависимости от конфигурации выдает те или иные управляющие последовательности на контроллер статической памяти (КСП). Также КП каждый такт защелкивает входные сигналы, направляя их на шину данных памяти. Команды и адрес на память подаются с КСП. КСП реализован отдельной микросхемой как по причине нехватки свободных выводов и места в микросхеме ЕРМ7064, так и тем, что память может быть заменена на другую, с иными временными диаграммами: таким образом, КП не требовал бы заново отладки.
Для индикации режима работы на плате предусмотрены три светодиода: желтый показывает, что питание на плату подано, красный — идет передача данных в ЭВМ, зеленый — анализатор либо ждет прихода комбинации заданных сигналов, либо занят передачей данных. Кнопка 7 позволяет после загрузки конфигурационных регистров запустить анализатор на ожидание. Если управляющая комбинация не изменилась, то для повторного запуска достаточно снова нажать кнопку, не перезагружая регистры заново.
Работа с программной частьюНа рисунке показано основное окно программы работы с логическим анализатором. Программа была написана на Borland C++Builder и оттестирована под ОС WinXP. Замеченный недостаток при работе с данной ОС — медленное выполнение функций API, то есть от момента нажатия кнопки до пересылки данных в порт проходит ощутимое время. На окне программы расположены: слева — кнопки управления анализатором, внизу — радиокнопки задания условия срабатывания анализатора и кнопки управления маркерами. На окне диаграмм отображаются 16 линий и составленная из этих линий шина.
Названия линий можно изменять в окне настроек, желтым подсвечивается та линия, по которой осуществляется поиск перепада. Каждой из восьми первых линий соответствуют три радиокнопки: высокий уровень, безразлично и низкий уровень. Кнопки объединяются по "И", то есть если задан высокий уровень на 5-м канале и низкий на первом, анализатор сработает по условию "канал-5 в высоком уровне И канал-1 в низком". Сигналы на остальных линиях будут игнорироваться КП при анализе условия срабатывания.
При комбинации радиокнопок, показанной на рисунке, анализатор сработает при наличии низкого уровня на 0-м канале вне зависимости от того, в каком состоянии находятся остальные линии. Кнопка "Запуск" инициирует передачу конфигурирующей последовательности в анализатор. Анализатор может работать в двух режимах: непрерывного записывания и ожидания.
Режим ожидания включается выбором квадратика "Ждать" под кнопкой запуска перед нажатием этой кнопки. Режим ожидания означает то, что по срабатывании триггера условия КП запускает КСП, происходит запись в память, и после этого анализатор останавливается до принятия следующей команды. Режим непрерывной развертки означает, что запись в память происходит постоянно после нажатия кнопки 7 на плате анализатора, по срабатывании же триггера память дозаписывается до конца и анализатор останавливается.
Кнопка "Прервать" служит для выхода из режима ожидания последовательности (при этом на плате гаснет зеленый светодиод). Кнопка "Считать" инициирует передачу данных в ЭВМ и отображение их на временной диаграмме. В окно настроек можно попасть либо нажатием иконки с молоточком, либо через меню Вид/Настройка. В этом окне можно изменить цвет диаграмм, выбрать порт, с которым работает анализатор, и указать используемую частоту дискретизации для правильного отображения временных отметок и измерения временных интервалов на окне диаграмм. Для переименования названия линии выберите ее среди линий списка "Названия линий", введите новое название и нажмите клавишу "Enter". Список автоматически перейдет на следующую линию, новое же название будет сохранено и отобразится после нажатия кнопки "ОК".
Временную диаграмму можно сохранить и потом просмотреть либо через меню "Файл", либо нажатием соответствующей иконки. Диаграмма сохранится на диске в виде файла с расширением *.all. Для измерения временных интервалов предназначены два маркера. Первый перемещается щелканьем левой клавиши либо перемещением мыши с нажатой левой клавишей по соответствующему месту диаграммы. Аналогично второй маркер связан с правой клавишей мыши. Внизу пока-зазывается точное положение маркера.
Временные метки на диаграмме для уменьшения загромождения имеют длину в четыре символа, поэтому ориентироваться следует на указанную внизу под словами "Отсчет №" величину. Если на диаграмме присутствуют оба маркера, то дополнительно отображается разность между маркерами. Диаграмму при этом для удобства можно укрупнить либо уменьшить, нажав соответствующие иконки.
Для поиска следующего перепада следует сперва выделить сигнал на диаграмме, щелкнув на нем правой клавишей мыши (название сигнала подсветится желтым и появится маркер), а затем выбрать, в какую сторону от маркера следует искать перепад. Выбор осуществляется либо нажатием соответствующей иконки, либо через меню "Вид", либо стрелками курсора "Влево" или "Вправо", удерживая нажатой клавишу "Alt".
Софт и прошивка: