РадиоКот >Схемы >Цифровые устройства >Измерительная техника >

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

Восьмиканальный логический анализатор без ПЛИС

Автор: *Trigger*
Опубликовано 23.08.2016
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2016!"

Предисловие

Часто при разработке и отладке цифровых устройств, например, на микроконтроллерах, возникает необходимость исследовать сигналы в различных точках схемы. Если такая точка одна - в большинстве случаев можно обойтись обычным одноканальным аналоговым осциллографом. Два сигнала можно в некоторых случаях просмотреть тем же осциллографом с использованием входа внешней синхронизации. Но обычно сигналов больше двух, или по одному из них нельзя засинхронизировать другой. Также часто возникают ситуации, когда требуется записать непериодические сигналы для их последующего изучения. В таких случаях может помочь цифровой запоминающий осциллограф или логический анализатор. К сожалению, многоканальные цифровые осциллографы дороги и часто недоступны среднестатистическому радиолюбителю. С логическими анализаторами ситуация немного лучше, но почти все они выполнены в виде приставок к компьютеру, что не всегда удобно, так как часто требуется автономная работа.

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

Логический анализатор содержит несколько основных компонентов. Это управляющий микроконтроллер (МК), микросхема(ы) оперативной памяти, индикатор для просмотра записанных сигналов и логическая схема, осуществляюшая связь между МК, памятью и входными цепями. Обычно для реализации этой логической схемы используется микросхема программируемой логики (ПЛИС). Такие микросхемы, во-первых, имеют многовыводные корпуса с малым шагом выводов, которые трудно монтировать на печатную плату без специального оборудования, да и саму плату вряд ли удастся изготовить методом ЛУТ, который, скорее всего, является самым популярным среди радиолюбителей. Во-вторых, внутреннюю логическую схему нужно конфигурировать при помощи специального программатора. Описываемое ниже устройство лишено этих недостатков: логическая схема в нём выполнена на микросхемах стандартной логики.

Параметры

Основные параметры описываемового логического анализатора приведены в таблице:

Основные параметры логического анализатора
Параметр Значение Примечание
Количество каналов 8  
Максимальная частота дискретизации, МГц 5 Возможно увеличение до 20-30МГц
Минимальная частота дискретизации, Гц 5  
Объём памяти, кБ  64  
Входное напряжение лог. 0, не более, В 0,9 Зависит от применённых входных буферов.
Входное напряжение лог. 1, не менее, В 3,15

 

Выбор элементной базы

Использованные в устройстве компоненты выбирались, исходя из их наличия и доступности. В качестве устройства отображения было решено использовать графический ЖКИ из принтера Epson R300, построенный на контроллере ST7565 и имеющий разрешение 132х65 пикселей. 

Его распиновка и часть схемы включения были взяты из сервис-мануала к принтеру:

Поскольку этот индикатор не имеет выведенного выхода данных встроенного контроллера, для отрисовки изображения на нём МК должен хранить буфер экрана в оперативной памяти. Простой расчёт показывает, что на это требуется 1188 байт. Исходя из этого, а также из соображений количество портов ВВ и доступности, в качестве управляющего МК был выбран ATMega644P, имеющий 4кБ оперативной памяти.

Для записи сигналов было решено использовать 2 микросхемы статической памяти UM62256 объёмом 32кБ каждая.

Схема устройства и принип действия

Разработанный логический анализатор состоит из четырёх модулей:

Логический модуль

Схема логичекого модуля представлена ниже:

U1 и U2 - микросхемы статической памяти. Четырёхбитные синхронные счётчики U4-U7 образуют шестнадцатибитный синхронный счётчик адреса. Инвертор U12:E, подключенный к старшей линии адреса, объединяет две отдельные МС памяти в одну объёмом 64кБ, имеющую 16 линий адреса. U8 - восьмибитный регистр хранения, его назначение будет описано ниже. Микросхема U13 и элементы U12:C, U12:F - инверторы с триггерами Шмитта, являющиеся входными формирователями. D-триггеры U10:A и U10:B, включенные по схемам T-триггеров, формируют из входного тактового сигнала два сигнала вдвое меньшей частоты, сдвинутых по фазе на 90° друг относительно друга. D-триггер U9:B, инверторы U12:A, U12:D и логические элементы И-НЕ U3:A - U3:D, U11:B образуют схему контроля запуска и останова счётчиков.

Ниже приведены диаграммы сигналов логического модуля в режимах записи и чтения данных:

Сначала рассмотрим режим записи. Переход в этот режим происходит всякий раз, когда возможно появление события запуска записи (нажатие пользователем кнопки начала записи или срабатывание автоматического запуска по сигналу на одном из входов (т.н. "триггер")), чтобы уменьшить задержку между появлением события запуска записи и фактическим началом записи. При этом запускается генератор тактового сигнала, после чего инициализируется логический модуль. Инициализация включает в себя следующие события:

  1. Установка сигналов CLK_EN (разрешение тактового сигнала) и READ_CLK (тактовый сигнал чтения) в состояние лог. 0
  2. Перевод выходов МС памяти в высокоимпедансное состояние установкой сигнала O̅E̅ в лог. 1
  3. Перевод выходов регистра-защёлки U8 в активное состояние установкой сигнала I̅E̅ в лог. 0
  4. Сброс всех триггеров и счётчиков кратковременной подачей лог. 0 на вход R̅E̅S̅E̅T̅

При появлении события запуска записи линия CLK_EN переводится в сосотояние лог. 1. Эта единица поступает на вход данных триггера U9:B. При приходе первого спада импульса CLK с момента запуска записи триггер получает тактовый импульс (через инвертор U12:D), и на его выходе Q появляется лог. 1. После этого тактовый сигнал появляется на выходе элемента U3:C. Таким образом, фронт импульса на CLK_EN может быть не синхронизирован со спадом на CLK, и при этом на тактовых входах триггеров микросхемы U10 не появится "иголка" (короткий импульс). 

При приходе первого фронта на входе CLK триггер U10:A переключается, формируя фронт импульса на тактовых входах микросхем U4-U8. При этом инвертированное значение входов данных сохраняется в триггерах микросхемы U8, появляясь на её выходах, и не изменяется до следующего фронта на выходе U10:A. Значение на шине адреса увеличивается на 1, а так как после сброса оно было равно 0, теперь там значение 1. По спаду на входе CLK переключается второй триггер (U10:B),  в результате чего формируется спад на входах разрешения записи микросхем памяти. Низкий уровень на входах разрешения записи W̅E̅ держится один период тактовой последовательности (обозначим это время T). Таким образом, данные, сохранённые в регистре U8, записываются в память по адресу 1. Запись происходит корректно, так как между установкой нового адреса и спадом на входах W̅E̅ проходит время, равное T/2, а сама запись длится период времени T. 

Далее процесс записи повторяется, но теперь данные появляются уже по адресу 2 (см. диаграмму записи).

Запись может быть в любой момент времени прервана переводом линии CLK_EN в лог. 0. Также, запись автоматически закончится при достижении адреса 65535. Рассмотрим подробнее, что происходит при этом. Как только значение адреса становится равно 65535, на выходах RCO счётчиков U4 и U7 появлются лог. 1. На выходе элемента U11:B появлятся лог. 0. Тогда низкий уровень появляется и на входе элемента U3:B, что блокирует прохождение тактового сигнала на входы триггеров микросхемы U10. Сигналом об окончании записи является лог. 1 на выходе COUNT_END (окончание счёта). 

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

  1. Перевод выходов регистра-защёлки U8 в высокоимпедансное состояние установкой сигнала I̅E̅ в лог. 1
  2. Перевод выходов МС памяти в активное состояние установкой сигнала O̅E̅ в лог. 0
  3. Сброс всех триггеров и счётчиков кратковременной подачей лог. 0 на вход R̅E̅S̅E̅T̅

Далее подаются импульсы на вход READ_CLK (тактовый сигнал чтения), которые через элементы U11:A и U11:C (на втором входе этого элемента после сброса триггера U10:A лог. 1) попадают на тактовые входы счётчиков U4-U7. После первого спада на входе READ_CLK считываются данные с шины DO0..7, сохранённые в памяти по адресу 1. Процесс чтения продолжается до тех пор, пока не будет считан необходимый отрезок адресов памяти.

После завершения чтения логический модуль опять переводится в режим записи (происходит повторная инициализация).

Также, имеется ещё один режим, почти аналогичный режиму записи, - режим очистки памяти. Отличие заключается в том, что, во-первых, при инициализации оба входа разрешения I̅E̅ и O̅E̅ устанавливаются в лог. 1, а во-вторых, шина DO0..7 становится входом данных, на который подаются 8 лог. 1. Далее все сигналы такие же, как и в режиме чтения. При этом в память по всем адресам записывается значение 255 (111111112). 

Переход в этот режим происходит при включении устройства и перед каждым новым событем запуска записи.

Модуль микроконтроллера

Схема модуля микроконтроллера приведена ниже:

Резисторы R1-R16, диоды D1-D8 и стабилитроны D9-D16 образуют узел входных цепей. Эти элементы защищают входы логического модуля от потенциалов выше и ниже потенциалов шин питания.

Преобразователь уровней ТТЛ-RS232 U2 нужен для обеспечения связи с ПК через COM-порт. 

R17C3 - цепь начального сброса микроконтроллера.

Конденсаторы С8-С11 - блокировочные.

К разъёму J1 подключается входной разъём устройства. Разъёмы J2-J4 служат для связи с логическим модулем, а J5 и J6 - с модулем передней панели.

Модуль передней панели

Модуль передней панели имеет следующую схему:

Так как ЖКИ питается от 3,3В и не имеет 5В-толерантных входов данных, применен LDO-стабилизатор U2 и микросхема преобразователя уровней U1.

Блок питания

В качестве блока питания для устройства был взят источник дежурного питания +5В от компьютерного БП ATX. Все его элементы, включая трансформатор, были выпаяны из компьютерного БП и смотированы на новой ПП.

По причине того, что существует множество различных вариаций схем дежурных источников, схема и печатная плата применённого БП не публикуется.

Печатные платы

Каждый из четырёх модулей логического анализатора выполнен на отдельной печатной плате. Между собой модули соединяются с помощью 10-жильных плоских шлейфов и разъёмов IDC10.

Чертёж ПП логического модуля:

Эта плата содержит проволочные перемычки (изображены красным цветом), которые следует установить до начала монтажа остальных компонентов.

Чертёж ПП модуля МК:

На данной ПП также размещён разъём для внутрисхемного программирования микроконтроллера (ISP), не показанный на схеме. Он имеет стандартную распиновку Atmel:

Чертёж ПП модуля передней панели:

Файл печатных плат в формате Sprint Layout 6.0 можно скачать по ссылке в конце статьи.

Применённые компоненты и их возможные замены, а также особенности монтажа компонентов на ПП

Логический модуль

В качестве микросхем U3-U13 логического модуля могут быть применены соответствующие микросхемы серий 74HC, 74AC, 74ALS и некоторых других. Применение более скоростных серий позволит расширить верхнюю границу частоты дискретизации логического анализатора.

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

Конденсаторы С1-С13 - керамические, они устанавливаются на выводы питания каждой микросхемы со стороны проводников на ПП. Выводы этих конденсаторов изолируются с помощью тонкого фторопластового кембрика. Конденсатор C14 - электролитический на напряжение не менее 16В.

Монтаж блокировочных конденсаторов показан на фото:

Фото монтажа платы логического модуля:

На последней фотографии видны доработки ПП, они учтены в приложенном в конце статьи файле ПП.

Модуль микроконтроллера

Микроконтроллер U1 применён в корпусе TQFP-44 (для поверхностного монтажа), микросхема U2 - в корпусе SO-16. В качестве U1 возможно использование как ATMega644, так и ATMega644P.

Фьюз-биты МК выставляются согласно таблице ниже ("галочка" - запрограммировано, т.е. лог. 0):

 

Примечание: нумерация выводов микроконтроллера на схеме справедлива только для корпуса TQFP-44. При использовании МК в корпусе DIP-40 следует ориентироваться на названия выводов (PB0, PB2, PD5 и др.).

Диоды D1-D8 и стабилитроны D9-D16 - выводные в миниатюрных стеклянных корпусах. D1-D8 можно заменить на любые маломощные диоды Шоттки, D9-D16 - на маломощные стабилитроны с напряжением стабилизации 5,1В. На печатной плате эти элементы монтируются вертикально, их аноды соединяются навесным монтажём и подключаются к ближайшей точке общего провода.

Все резисторы - SMD типоразмера 0805.

Конденсаторы C1-C10 - SMD типоразмера 0805, а C11 - электролитический с максимальным напряжением не менее 16В.

Кварцевый резонатор X1 - типа HC-49U, HC-49S или аналогичный на частоту 20МГц.

Разъёмы J1-J6 - BH-10.

Разъём J7 - типа DB9F, он установлен на задней панели устройства и подключен к плате МК через трёхконтактный разъём J8 с шагом 2,54мм.

Фото монтажа модуля МК:

На ПП также имеются SMD-перемычки (резисторы с нулевым сопротивлением), не показанные на схеме модуля. Их положение видно на фотографии выше.

Модуль передней панели

Микросхема преобразователя уровней U1 применена в корпусе DIP-16 и установлена в цанговую панельку. Её можно заменить на HC4050, К561ПУ4 или К176ПУ4.

Стабилизатор U2 - в корпусе D-Pak, можно использовать любой LDO-стабилизатор на напряжение 3,3В.

Кнопки применены тактовые 6х6мм общей высотой 17мм. Кнопка "ESC" не устанавливается.

ЖКИ крепится к плате при помощи переделанного крепежа, взятого из принтера вместе с индикатором. Переделка заключется в снятии слоя пластика с тыльной стороны крепежа до получения плоскости, параллельной плоскости ЖКИ и находящейся на расстояние примерно 7мм от неё.

Конструкция

Логический анализатор собран в пластмассовом корпусе Gainta G717 размерами 225х165х90мм. Три печатные платы (логический модуль, модуль МК, БП) закреплены на днище корпуса при помощи шестигранных латунных стоек длиной 10мм:

Четвёртая печатная плата расположена на передней панели устройства. Она крепится при помощи четырёх стоек из оргстекла размерами 12х12мм и высотой 13,5мм, приклеенных к панели. В стойках нарезана резьба под винт М3. В окно для ЖКИ вклеена пластинка из оргстекла, фрезерованная по периметру на толщину передней панели. Также на передней панели находятся сетевой выключатель, клемма для подключения общего провода и входной разъём DB9F.

На задней панели расположены сетевой разъём и разъём COM-порта.

Фото панелей:

На переднюю панель наклеена ламинированная наклейка, доступная в конце статьи в формате Corel Draw:

Чертежи панелей и расположения отверстий в днище корпуса можно скачать в формате AutoCAD 2008 в конце статьи.

Входной разъём подключается к модулю МК при помощи плоского 10-жильного шлейфа. Две его жилы, подключенные к общему проводу, соединены вместе на разъёме DB9F.

Также анализатор имеет входной кабель с 9 зажимами-крючками, подкюченными экранированным кабелем.

Несколько фотографий внутреннего монтажа:

Управление устройством

При включении логического анализатора на ЖКИ выводится заставка:

Далее отображается главный экран, на котором расположены следующие элементы:

Курсор можно перемещать при помощи кнопок LEFT и RIGHT.

При нажатии кнопки DOWN на ЖКИ выведется главное меню устройства.

Выбор пункта меню осуществляется кнопками UP и DOWN, изменение параметра (если он есть) - кнопками LEFT и RIGHT, а подтверждение выбора пункта - кнопкой OK. На каждой странице любого уровня меню есть пункт Back (Назад), при выборе которого произойдёт переход на уровень вверх.

В главном меню содержатся следующие пункты:

Пункт Search - поиск

Этот пункт содержит следующие подпункты:

В первых трёх пунктах канал выбирается кнопками LEFT и RIGHT, поиск запускается кнопкой OK. Если искомого перепада в выбранном канале в направлении поиска не обнаружено, выводится сообщение об ошибке. В этом случае для возвращения в меню поиска следует нажать кнопку OK.

Последний пункт также содержит подпункты. Первые восемь из них (CH0, CH1, ..., CH7) позволяют побитно задать искомое состояние на шине данных, последний (Search) инициирует поиск состояния. В случае отсутствия такого состояния вернуться в меню поиска состояния можно нажатием кнопки OK.

Пункт Clear buffer - очистка памяти (буфера)

При нажатии кнопки OK будет выведено предупреждение об очистки памяти. Кнопка OK запускает очистку, а нажатием кнопки LEFT можно отменить операцию.

Пункт Trigger - режим запуска (триггер)

В этом пункте производится установка режима запуска записи. Есть три режима:

Пункты Time/div - период дискретизации и Sampling freq.- частота дискретизации

Эти два пункта позволяют задать частоту дискретизации в одной из двух форм - в виде частоты (5Гц - 5МГц) и в виде периода (0,2µс - 0,2с). При изменении значения одного из них изменяется и второй.

Примечание: после записи сигнала эти параметры недоступны для изменения до очистки памяти.

Пункт Settings - настройки

Этот пункт содержит подпункты:

Инверсный режим выглядит так:

Параметры, устанавливаемые в пункте Settings, сохраняются в энергонезависимой памяти микроконтроллера (EEPROM).

Запуск записи

Запись запускается из главного экрана анализатора нажатием кнопки OK. Если был выбран ручной режим запуска (Trigger - OFF), запись сразу же запустится. Если же был выбран запуск по фронту или спаду на CH0, отобразится сообщение об ожидании запуска записи. Прервать ожидание можно нажатием кнопки OK.

При активном режиме записи на ЖКИ выводится надпись "Processing...".

Запись можно в любой момент остановить нажатием кнопки OK.

Альтернативный запуск поиска

Если в главном экране нажать кнопку UP, будет повторён последний произведённый поиск (с последней выбранной конфигурацией параметров). Если поиск не был произведён к этому моменту, выведется сообщение об ошибке. Вернуться на главный экран в этом случае можно нажатием кнопки OK.

Что пока ещё не реализовано


Файлы:
Чертежи в формате AutoCAD 2008
Файлы для изготовления передней панели в формате Corel Draw
Исходники (проект CVAVR)
Печаные платы в формате Sprint Layout 6.0
Файл прошивки *.hex


Все вопросы в Форум.