Разработка более сложных цифровых устройств
Главные особенности логического анализатора, по сравнению со стандартной структурой информационного буфера на основе оперативной памяти, следующие:
- большое число разрядов шины данных (то есть входных сигналов, каналов регистрации анализатора);
- необходимость обеспечения режима предпусковой регистрации;
- необходимость временной привязки процесса регистрации (записи в память) к состояниям входных сигналов (обеспечение запуска).
Первая из этих особенностей приводит к тому, что данные при чтении приходится считывать не все сразу, а по очереди (особенно при числе разрядов больше 32). Обычно данные требуется читать по 8 или по 16 разрядов. В результате усложняется та часть схемы буферной памяти, которая отвечает за чтение данных.
Вторая особенность требует существенного усложнения схемы счетчика, перебирающего адреса буферной памяти.
Наконец, третья особенность требует усложнения схемы управления работой информационного буфера.
Логические анализаторы делятся на синхронные (или анализаторы логических состояний) и асинхронные (или анализаторы временных диаграмм). Синхронные анализаторы работают от тактового генератора исследуемой схемы и фиксируют только временные сдвиги, кратные его периоду, а следовательно, выявляют только нарушения в логике работы схемы. Асинхронные анализаторы работают от собственного внутреннего тактового генератора, поэтому они позволяют измерять абсолютные значения временных сдвигов между сигналами и могут выявлять ошибки из-за неправильно рассчитанных задержек, из-за емкостных эффектов и т.д. Они обычно делаются гораздо более быстрыми, чем синхронные анализаторы (рассчитываются на предельно возможную частоту регистрации). В идеале, логический анализатор должен обеспечивать оба эти режима работы, то есть работать как от своего внутреннего тактового генератора с разными тактовыми частотами, так и от внешнего тактового сигнала. Иначе говоря, тактовый генератор анализатора должен быть также достаточно сложным.
Сформулируем исходные данные для проектирования логического анализатора. В данном случае нам важно не получить рекордные характеристики, а всего лишь продемонстрировать принципы разработки подобных схем на основе буферной памяти. Пусть количество входных линий анализатора (каналов регистрации) равно 32, количество регистрируемых состояний — 4096, максимальная тактовая частота — 10 МГц, тактовый генератор — внутренний с изменяемой частотой или внешний, запуск — по положительному или отрицательному фронту (синхропереходу) на одной из 8 входных линий, глубина предпусковой регистрации — задается программно. Будем также считать, что данные из памяти читаются порциями по 8 разрядов.
Таким образом, буферная оперативная память анализатора должна иметь объем 128 Кбит при организации 4Кх32. Помимо оперативной памяти, анализатор должен включать в себя счетчик для перебора адресов с количеством разрядов не менее 12. В структуре анализатора должен быть также внутренний тактовый генератор с программно изменяемой частотой и возможностью подключения внешнего тактового сигнала. Наконец, необходимо наличие схемы запуска анализатора, которая будет выбирать одну из 8 входных линий и полярность синхроперехода (положительный или отрицательный фронт).
Память целесообразно выполнить на многоразрядных микросхемах ОЗУ (для снижения количества микросхем). Требования к быстродействию памяти в данном случае не слишком высоки (при максимальной тактовой частоте 10 МГц в течение 100 нс необходимо успеть переключить счетчик адресов и записать входную информацию в ОЗУ). Микросхем памяти, способных обеспечить такую скорость работы, достаточно много.
От счетчика адресов памяти требуется максимальное быстродействие (можно взять, например, микросхемы синхронных счетчиков КР531ИЕ17, которые достаточно легко каскадируются без потери быстродействия). Кроме простого перебора адресов, счетчик должен также обеспечивать предпусковую регистрацию. Остановимся на этом несколько подробнее.
Для того чтобы реализовать предпусковую регистрацию, необходимо обеспечить непрерывную перезапись по кругу содержимого буферной памяти до момента прихода запуска (рис. 15.3).
То есть после записи последнего 4095 адреса надо записывать информацию по нулевому адресу. Если мы выбираем глубину предпусковой регистрации N тактов, то надо остановить регистрацию через (4096–N) тактов после момента прихода запуска. После остановки регистрации надо считывать содержимое памяти, начиная с точки остановки, с перебором адресов в том же самом направлении, что и при регистрации. Проведя 4096 операций чтения содержимого памяти, мы получим информацию о состоянии входных сигналов в течение N тактов до запуска и (4096–N) тактов после запуска, то есть моменту прихода запуска будет соответствовать содержимое адреса памяти, считанного N-ым.
Однако все произойдет именно таким образом только в том случае, если от момента начала регистрации до момента прихода запуска логический анализатор успеет зафиксировать N тактов. Иначе, остановив регистрацию через (4096–N), мы не перепишем всю память, и в части его адресов будет находиться предыдущая информация. Чтобы избежать этого, надо запретить реакцию на запуск в течение N тактов после начала регистрации (выдержать своеобразное "мертвое" время). А что будет, если запуск придет в течение этого самого "мертвого" времени? Если исследуемый процесс — периодический (то есть все входные сигналы повторяются через какое-то время), то анализатор среагирует на следующий запуск после окончания "мертвого" времени. Если же исследуемый процесс — однократный, не повторяющийся, то надо начать процесс регистрации заведомо раньше (на "мертвое" время или больше), чем начнется изучаемый процесс (например, если мы исследуем старт компьютера при включении питания).
В результате счетчики анализатора должны обеспечивать временную диаграмму, показанную на рис. 15.4.