Разработка логического анализатора
Логический анализатор — это контрольно-измерительный прибор, предназначенный для запоминания (фиксации) и последующего анализа (например, просмотра на экране) временных диаграмм большого количества цифровых сигналов. Логические анализаторы используются при динамической отладке различных цифровых устройств и систем, а также при контроле их работы. Совершенно незаменимы они при разработке и отладке различных микропроцессорных систем, контроллеров, компьютеров, где используется большое количество многоразрядных шин цифровых сигналов. Именно логические анализаторы позволяют разработчику увидеть те временные диаграммы, которые он рисует на бумаге при проектировании своего устройства, причем увидеть их в реальном масштабе времени, посмотреть, как работает устройство на своей нормальной рабочей скорости.
Логический анализатор по своему назначению близок к осциллографу, так как он также позволяет наблюдать на экране временные диаграммы сигналов. Но существуют и существенные отличия логического анализатора от обычного (не цифрового) осциллографа:
- Логический анализатор работает только с цифровыми, то есть двухуровневыми (реже трехуровневыми) сигналами, а осциллограф — с аналоговыми сигналами, имеющими бесконечно большое число разрешенных уровней.
- Логический анализатор имеет большое количество входных линий (обычно от 16 до 64), то есть позволяет одновременно фиксировать множество входных сигналов, а осциллографы обычно позволяют одновременно увидеть не более четырех входных сигналов.
- Логический анализатор работает в режиме однократного запоминания временных диаграмм (как запоминающий осциллограф). То есть анализатор запоминает состояния входных сигналов в течение заданного времени (называемого окном регистрации), а затем дает возможность анализировать зафиксированные последовательности. Осциллограф же работает обычно в режиме непрерывной развертки, то есть он не запоминает формы входного сигнала и позволяет наблюдать только повторяющиеся, периодические сигналы.
- Логический анализатор предусматривает возможность так называемой предпусковой регистрации. Эта возможность предусматривается и в цифровых осциллографах, но ее нет в аналоговых осциллографах.
Рассмотрим подробнее, что такое предпусковая регистрация.
Процесс регистрации входных сигналов (или отображения их на экране в обычном осциллографе) всегда должен быть привязан к какому-то моменту времени, к какому-то внешнему событию, называемому запуском. Иначе разобраться в отображаемых сигналах будет совершенно невозможно. Например, в осциллографах моментом запуска обычно является момент превышения входным исследуемым сигналом установленного порога. Сигналом запуска может служить и специальный внешний синхронизирующий сигнал. В логических анализаторах в качестве запуска обычно используется момент появления на входах заданного уровня или заданной последовательности одного или нескольких входных сигналов.
В обычных осциллографах отображение формы входного сигнала (или входных сигналов) начинается в момент запуска, то есть на экране видно только то, что происходило со входными сигналами после момента запуска. Такая регистрация может быть названа послепусковой. Можно также сказать, что точка запуска всегда находится в начале окна регистрации (рис. 15.1).
Рис. 15.1. Послепусковая регистрация в аналоговых осциллографах
В логических анализаторах (и в цифровых осциллографах) существует возможность увидеть и зафиксировать не только то, что было после запуска, но еще и то, что происходило в течение определенного времени до момента запуска. Именно эта регистрация до момента запуска и называется предпусковой регистрацией. В этом случае точка запуска может находиться и в начале, и в середине, и в конце окна регистрации (рис. 15.2). Понятно, что такая возможность очень удобна, так как, выбирая величину длительности предпусковой регистрации, можно увидеть те события, временная привязка к началу которых затруднена или попросту невозможна. Длительность (глубина) предпусковой регистрации может быть постоянной (например, равной половине длительности окна регистрации) или переменной (то есть задаваться пользователем в пределах от нуля до полной длительности окна регистрации). При переменной глубине предпусковой регистрации точка запуска может располагаться в любой точке окна регистрации — от его начала до конца.
С точки зрения схемотехники, логический анализатор представляет собой быстродействующую буферную оперативную память, работающую в периодическом режиме. Буфер этот однонаправленный: сначала в буферную память с большой тактовой частотой последовательно записываются состояния нескольких входных сигналов, а затем эта информация последовательно читается из буфера. Таким образом, адреса буферной памяти могут перебираться одним и тем же счетчиком как в режиме записи, так и в режиме чтения. Структура таких буферов уже рассматривалась.
Рис. 15.2. Предпусковая регистрация в логических анализаторах и цифровых осциллографах
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет- Университет Информационных Технологий - дистанционное образование |
При переменной глубине предпусковой регистрации точка запуска может располагаться в любой точке окна регистрации — от его начала до конца.
С точки зрения схемотехники, логический анализатор представляет собой быстродействующую буферную оперативную память, работающую в периодическом режиме. Буфер этот однонаправленный: сначала в буферную память с большой тактовой частотой последовательно записываются состояния нескольких входных сигналов, а затем эта информация последовательно читается из буфера. Таким образом, адреса буферной памяти могут перебираться одним и тем же счетчиком как в режиме записи, так и в режиме чтения. Структура таких буферов уже рассматривалась.
Рис. 15.2. Предпусковая регистрация в логических анализаторах и цифровых осциллографах
Главные особенности логического анализатора, по сравнению со стандартной структурой информационного буфера на основе оперативной памяти, следующие:
- большое число разрядов шины данных (то есть входных сигналов, каналов регистрации анализатора);
- необходимость обеспечения режима предпусковой регистрации;
- необходимость временной привязки процесса регистрации (записи в память) к состояниям входных сигналов (обеспечение запуска).
Вторая особенность требует существенного усложнения схемы счетчика, перебирающего адреса буферной памяти.
Наконец, третья особенность требует усложнения схемы управления работой информационного буфера.
Логические анализаторы делятся на синхронные (или анализаторы логических состояний) и асинхронные (или анализаторы временных диаграмм). Синхронные анализаторы работают от тактового генератора исследуемой схемы и фиксируют только временные сдвиги, кратные его периоду, а следовательно, выявляют только нарушения в логике работы схемы.
Асинхронные анализаторы работают от собственного внутреннего тактового генератора, поэтому они позволяют измерять абсолютные значения временных сдвигов между сигналами и могут выявлять ошибки из-за неправильно рассчитанных задержек, из-за емкостных эффектов и т.д. Они обычно делаются гораздо более быстрыми, чем синхронные анализаторы (рассчитываются на предельно возможную частоту регистрации). В идеале, логический анализатор должен обеспечивать оба эти режима работы, то есть работать как от своего внутреннего тактового генератора с разными тактовыми частотами, так и от внешнего тактового сигнала. Иначе говоря, тактовый генератор анализатора должен быть также достаточно сложным.
Сформулируем исходные данные для проектирования логического анализатора. В данном случае нам важно не получить рекордные характеристики, а всего лишь продемонстрировать принципы разработки подобных схем на основе буферной памяти. Пусть количество входных линий анализатора (каналов регистрации) равно 32, количество регистрируемых состояний — 4096, максимальная тактовая частота — 10 МГц, тактовый генератор — внутренний с изменяемой частотой или внешний, запуск — по положительному или отрицательному фронту (синхропереходу) на одной из 8 входных линий, глубина предпусковой регистрации — задается программно. Будем также считать, что данные из памяти читаются порциями по 8 разрядов.
Таким образом, буферная оперативная память анализатора должна иметь объем 128 Кбит при организации 4Кх32. Помимо оперативной памяти, анализатор должен включать в себя счетчик для перебора адресов с количеством разрядов не менее 12. В структуре анализатора должен быть также внутренний тактовый генератор с программно изменяемой частотой и возможностью подключения внешнего тактового сигнала. Наконец, необходимо наличие схемы запуска анализатора, которая будет выбирать одну из 8 входных линий и полярность синхроперехода (положительный или отрицательный фронт).
Память целесообразно выполнить на многоразрядных микросхемах ОЗУ (для снижения количества микросхем).
Требования к быстродействию памяти в данном случае не слишком высоки (при максимальной тактовой частоте 10 МГц в течение 100 нс необходимо успеть переключить счетчик адресов и записать входную информацию в ОЗУ). Микросхем памяти, способных обеспечить такую скорость работы, достаточно много.
От счетчика адресов памяти требуется максимальное быстродействие (можно взять, например, микросхемы синхронных счетчиков КР531ИЕ17, которые достаточно легко каскадируются без потери быстродействия). Кроме простого перебора адресов, счетчик должен также обеспечивать предпусковую регистрацию. Остановимся на этом несколько подробнее.
Для того чтобы реализовать предпусковую регистрацию, необходимо обеспечить непрерывную перезапись по кругу содержимого буферной памяти до момента прихода запуска (рис. 15.3).
Рис. 15.3. Организация предпусковой регистрации
То есть после записи последнего 4095 адреса надо записывать информацию по нулевому адресу. Если мы выбираем глубину предпусковой регистрации N тактов, то надо остановить регистрацию через (4096–N) тактов после момента прихода запуска. После остановки регистрации надо считывать содержимое памяти, начиная с точки остановки, с перебором адресов в том же самом направлении, что и при регистрации. Проведя 4096 операций чтения содержимого памяти, мы получим информацию о состоянии входных сигналов в течение N тактов до запуска и (4096–N) тактов после запуска, то есть моменту прихода запуска будет соответствовать содержимое адреса памяти, считанного N-ым.
Однако все произойдет именно таким образом только в том случае, если от момента начала регистрации до момента прихода запуска логический анализатор успеет зафиксировать N тактов. Иначе, остановив регистрацию через (4096–N), мы не перепишем всю память, и в части его адресов будет находиться предыдущая информация. Чтобы избежать этого, надо запретить реакцию на запуск в течение N тактов после начала регистрации (выдержать своеобразное "мертвое" время). А что будет, если запуск придет в течение этого самого "мертвого" времени? Если исследуемый процесс — периодический (то есть все входные сигналы повторяются через какое-то время), то анализатор среагирует на следующий запуск после окончания "мертвого" времени.
Если же исследуемый процесс — однократный, не повторяющийся, то надо начать процесс регистрации заведомо раньше (на "мертвое" время или больше), чем начнется изучаемый процесс (например, если мы исследуем старт компьютера при включении питания).
Рис. 15.4. Временная диаграмма работы счетчиков логического анализатора
В результате счетчики анализатора должны обеспечивать временную диаграмму, показанную на рис. 15.4.
Адреса памяти начинают перебираться с началом регистрации. В течение N тактов после начала регистрации реакция на запуск запрещается, а затем разрешается. Через (4096–N) тактов после прихода запуска регистрация прекращается.
Отметим, что точно так же может быть реализована предпусковая регистрация в цифровом осциллографе. По сравнению с логическим анализатором, в схему надо будет добавить только один или несколько АЦП и некоторые другие цифро-аналоговые узлы.
Спроектируем схему счетчиков, реализующую приведенную временную диаграмму.
Счетчик, перебирающий адреса памяти, должен быть 12-разрядным, так как 212=4096. Во время регистрации он должен работать в непрерывном режиме, реализуя постоянную перезапись по кругу всей буферной памяти. На этот же счетчик можно возложить функцию отсчета "мертвого" времени (N тактов). Но этот счетчик не может отсчитывать еще и (4096–N) тактов после прихода запуска, так как запуск может прийти в любой момент после окончания "мертвого" времени. Для этого понадобится уже другой счетчик, причем также 12-разрядный.
Этот второй счетчик должен начинать работу только после прихода запуска (по сигналу "Разрешение запуска") и должен отсчитывать всего (4096–N) тактов, после чего завершать регистрацию. То есть получается, что логический анализатор начинает регистрацию по внешнему управляющему сигналу, а заканчивает автоматически через (4096–N) тактов после запуска, о чем должен сообщать вовне сигнал флага окончания регистрации.
Рис. 15.5. Схема счетчиков логического анализатора
Таким образом, один 12-разрядный счетчик должен отсчитывать N тактов, а другой 12-разрядный счетчик должен отсчитывать (4096–N) тактов. Проще всего организовать такой режим, если в оба счетчика записать до начала работы код N и задать первому счетчику инверсный режим счета, а второму — прямой режим счета. Перебор адресов памяти первым счетчиком начнется с адреса N и будет происходить на уменьшение (а не на увеличение, как на рис. 15.3), однако для работы буферной памяти это не имеет никакого значения.
Сигнал переноса первого счетчика появится через N тактов после начала регистрации. Этот сигнал должен разрешать ожидание запуска (сигнал РЗ на рис. 15.4). Когда же приходит запуск, то разрешается работа второго счетчика, начинающего считать с кода N на увеличение. В результате сигнал переноса второго счетчика появится через (4096–N) тактов после начала его работы. Этот сигнал должен остановить процесс регистрации.
После окончания регистрации должен начаться процесс чтения из памяти. При этом первый счетчик должен перебирать адреса памяти по стробу чтения в том же направлении, что и при записи (то есть в режиме инверсного счета). 4096 последовательно произведенных циклов чтения позволит перебрать все 4096 адресов памяти, причем на N-ом цикле чтения будет прочитан такт, в котором произошел запуск.
Схема счетчиков логического анализатора, реализующая описанный алгоритм, приведена на рис. 15.5.
Два 12-разрядных счетчика реализованы на шести микросхемах ИЕ17. Первый счетчик (на рисунке вверху) работает в режиме инверсного счета, второй (на рисунке внизу) — в режиме прямого счета. Перед началом работы в оба счетчика по внешнему сигналу "–Зап." записывается код N. Причем четыре младших разряда 12-разрядного кода N равны нулю, а записываются только 8 старших разрядов. Это приводит к тому, что глубина предпусковой регистрации может задаваться с точностью до 16 тактов и принимать значения из ряда: 0, 16, 32, 48, 64,..., 4080. При записи на входы счетчиков –EWR и С поступают отрицательные сигналы, причем сигнал –EWR задержан относительно сигнала С на двух инверторах и (при необходимости) на конденсаторе.
В результате положительный фронт сигнала С приходит тогда, когда сигнал –EWR равен нулю, что и требуется для записи.
На вход С обоих счетчиков могут приходить еще два сигнала: строб чтения из памяти "–Чт." и тактовый сигнал "Такт". Сигнал "Такт" приходит при регистрации (в режиме записи в память), а сигнал "–Чт." поступает при чтении из памяти зарегистрированной информации.
После того как в оба счетчика записан код N, необходимо начать регистрацию по внешнему сигналу "–Старт". Этот сигнал сбрасывает в нуль триггеры 1 и 2 и устанавливает в единицу триггер 3. Выходной сигнал триггера 3 разрешает регистрацию (сигнал "Рег." на рис. 15.4), то есть разрешает прохождение тактовых импульсов на входы счетчиков С. Это приводит к тому, что начинает работу первый счетчик, а второму счетчику работа запрещается по входу -ECT выходным сигналом триггера 2.
Первый счетчик, выходной код которого используется как адрес памяти, отсчитывает N тактов в инверсном режиме и вырабатывает сигнал переноса -CR. Этим сигналом перебрасывается в единицу триггер 1. Затем первый счетчик продолжает перебирать адреса памяти по кругу, а запись нулей в триггер 1 запрещается элементом 2И-НЕ на входе триггера. Выходной сигнал триггера 1 (сигнал РЗ на рис. 15.4) разрешает работу триггера 2 и тем самым разрешает реакцию схемы на сигнал запуска "Запуск" (положительный фронт).
После прихода сигнал "Запуск" перебрасывается в единицу триггер 2, разрешая работу второго счетчика. Первый счетчик в это время продолжает считать. Второй счетчик начинает свой счет с кода N, досчитывает в режиме прямого счета до 4096 и своим сигналом переноса –CR перебрасывает в нуль триггер 3. Это приводит к запрету поступления тактовых импульсов на вход С счетчиков и к остановке регистрации.
После этого может начаться чтение записанной информации по стробу "–Чт.". По заднему (положительному) фронту этого сигнала первый счетчик будет перебирать адреса памяти в инверсном режиме.
Второй счетчик также будет считать, но это не имеет никакого значения. После 4096 циклов чтения вся информация из памяти будет прочитана, и схема будет готова к новой регистрации.
Перейдем теперь к проектированию других узлов логического анализатора.
Как уже отмечалось, тактовый сигнал анализатора может быть как внутренним (от внутреннего тактового генератора), так и внешним (от исследуемой схемы). Для повышения универсальности анализатора целесообразно обеспечить его работу на нескольких тактовых частотах. Большие частоты будут использоваться для анализа быстрых процессов, а малые частоты — для анализа длительных процессов. Тактовая частота не должна при этом принимать слишком много значений. Вполне достаточно ряда нескольких частот, различающихся вдвое.
Пример схемы тактового генератора для логического анализатора приведен на рис. 15.6.
Рис. 15.6. Тактовый генератор логического анализатора
Тактовый генератор анализатора выполнен на кварцевом генераторе, 6-разрядном счетчике (ИЕ19) и 8-канальном мультиплексоре (КП7). Он может выдавать на выход ряд тактовых частот, различающихся в 2 раза (период 100, 200, 400, 800, 1600, 3200, 6400 нс) или внешний тактовый сигнал ВТС. То есть он позволяет реализовать как синхронный, так и асинхронный режим работы логического анализатора. Счетчик может быть применен асинхронный (ИЕ19), так как каждый его выход используется самостоятельно, независимо от других. Выбор канала мультиплексора (вида тактового сигнала) осуществляется 3-разрядным кодом выбора такта, причем код 111 будет соответствовать внешнему тактовому сигналу.
Схема запуска анализатора должна обеспечивать выбор положительного или отрицательного фронта (синхроперехода) на одной из 8 входных линий анализатора. Выходным сигналом запуска является положительный фронт (см. рис. 15.5). Для выбора одного из восьми входных сигналов удобно использовать 8-канальный мультиплексор (КП7), а для выбора полярности перехода можно применить элемент Исключающее ИЛИ, включенный в режиме управляемого инвертора.
Схема запуска получается очень простой (рис. 15.7). Выбор входного сигнала, по которому будет производиться запуск, осуществляется 3-разрядным управляющим кодом выбора синхролинии. Выбор полярности перехода производится внешним сигналом выбора полярности, причем единица на этом входе соответствует отрицательному фронту, а нуль — положительному фронту.
Рис. 15.7. Схема запуска логического анализатора
Наконец, последний узел логического анализатора — это память с буферами данных. Память должна иметь организацию 4Кх32, для чего придется использовать 4 микросхемы, так как обычно микросхемы оперативной памяти бывают 8-разрядные. Шина данных таких микросхем двунаправленная, поэтому требуется применение буферов для данных. Память должна работать в режиме записи при регистрации и в режиме чтения при чтении информации, зарегистрированной логическим анализатором. Для упрощения схемы целесообразно использовать нетактируемые микросхемы памяти.
В режиме записи сигнал –CS памяти должен представлять собой отрицательные импульсы на каждый адрес памяти, а сигнал –WR должен быть постоянно активным (нулевым). Отметим, что некоторые микросхемы памяти (например, КР541РУ2) могут записывать информацию и при постоянных нулевых уровнях обоих сигналов -CS и -WR при изменении только адресов памяти. Использование таких микросхем еще более упрощает схему.
В режиме чтения сигнал –CS должен быть постоянно активным (нулевым), а сигнал –WR должен быть постоянно равен единице. Смена читаемой информации будет производиться только сменой адресов памяти.
Для чтения информации из памяти порциями по 8 разрядов надо применить четыре 8-разрядных однонаправленных буфера (типа АП5). Каждый из них будет открываться своим стробом чтения и выдавать на общую 8-разрядную шину данных по 8 разрядов читаемой из памяти информации. Таким образом, чтение 32 разрядов из одного адреса памяти потребует четырех циклов чтения из логического анализатора. Смена адреса памяти должна происходить после последнего из этих четырех циклов чтения.
То есть для чтения всего объема памяти потребуется 16384 циклов чтения по 8 разрядов из логического анализатора.
Помимо буфера чтения необходимо применить также входной 32-разрядный буфер, который будет пропускать входные (регистрируемые) сигналы на память в режиме регистрации и будет закрываться после окончания регистрации. Назначение этого буфера состоит в том, чтобы не выдавать на входные линии логического анализатора читаемую из памяти по двунаправленной шине данных информацию. Этот буфер также можно построить на микросхемах однонаправленных буферов типа АП5.
Рис. 15.8. Схема памяти логического анализатора
В результате схема памяти логического анализатора будет иметь вид, показанный на рис. 15.8.
Объединение четырех микросхем памяти производится стандартным образом: объединяются одноименные разряды адреса, сигналы –CS и –WR всех микросхем. На входы –CS подается сигнал, равный нулю при отсутствии регистрации (нулевой сигнал "Рег.") и равный инверсному тактовому сигналу при регистрации (отрицательному импульсу на каждый адрес памяти). Минимальная длительность импульса -WR равна в режиме записи половине периода тактового сигнала с частотой 10 МГц, то есть 50 нс, поэтому память должна успевать за это время записать информацию. На входы –WR подается сигнал "-Рег.", равный нулю при регистрации и единице при отсутствии регистрации. Если память может записывать информацию при постоянных нулевых сигналах -CS и -WR, то на вход –CS можно постоянно подать нулевой уровень.
Четыре микросхемы АП5 входного буфера (справа по рисунку) управляются сигналом "-Рег.": они открываются на все время регистрации и закрываются, когда регистрации нет.
Четыре микросхемы АП5 буфера чтения открываются на чтение (выдают 8-разрядные читаемые данные) каждая свои стробом чтения: "–Чт.1" ... "–Чт.4". При этом сигнал "–Чт.4" (его задний фронт) используется для переключения счетчиков адреса памяти при чтении (см. сигнал "–Чт." на рис. 15.6).
Для чтения информации из одного адреса памяти нужно последовательно подать сигналы "–Чт.1" ... "-Чт.4", после чего адрес переключится на следующий.
В качестве синхролиний для запуска анализатора (см. рис. 15.7) используются восемь разрядов данных памяти. В режиме регистрации на них приходят 8 входных сигналов логического анализатора.
Таким образом, схема логического анализатора спроектирована полностью.
Сформулируем теперь порядок управления этой схемой. Управлять ею может, например, компьютер или контроллер, который будет отображать, обрабатывать и хранить зарегистрированные последовательности входных сигналов.
Перед началом регистрации необходимо записать в счетчики анализатора код N (количество тактов предпусковой регистрации) по сигналу записи "-Зап." (см. рис. 15.5). Необходимо также установить 7-разрядный управляющий код, который определит режим работы анализатора. Три разряда этого кода задают тип тактового сигнала анализатора (см. рис. 15.6). Три разряда выбирают номер входного сигнала (из восьми возможных), на котором фронт будет служить запуском, а последний седьмой разряд определит полярность этого фронта, синхроперехода (см. рис. 15.7). После этого можно начинать регистрацию по сигналу "–Старт" (см. рис. 15.5). Анализатор отсчитает "мертвое" время, зафиксирует приход синхроперехода (запуск) и остановит регистрацию через нужное количество тактов после запуска. Узнать о том, что регистрация завершилась, можно, исходя из анализа сигнала "Рег." (см. рис. 15.5). Затем можно начинать чтение из буферной памяти анализатора по стробам "–Чт.1" ... "–Чт.4" (см. рис. 15.8). Когда информация из всех 4096 адресов па мяти будет прочитана, анализатор снова будет готов к регистрации.