МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Запоминающий осциллограф

Запоминающий осциллограф 4 года 2 мес. назад #3361

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Я бы посмотрел из любопытства, но у меня совсем другая плата.
Думаю, многие просто не знают, что и как смотреть - см. для сравнение проект "исследование колебательного контура", там много написано, что смотреть.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Запоминающий осциллограф 4 года 2 мес. назад #3363

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 17

Leka пишет: Думаю, многие просто не знают, что и как смотреть - см. для сравнение проект "исследование колебательного контура", там много написано, что смотреть.


Ок. Если кто не знает, что посмотреть, то рассказываю:

Я использую для проекта Марсоход 2 с шилдом разъемов. На сайте есть схемы марсохода и шилдов, из которых видно, что вход АЦП ANALOG_IN это контакт 1 разъема CN3 на схеме марсохода или CN1 на схеме шилда. Достаточно припаять или как-то присоединить один провод или просто трогать его каким-то источником. Я прилепил к шилду на двухстороннем скотче разъем аудио джек 3,5 обычный, так как через этот же ANALOG_IN гружу игры в чуть подправленный проект ZX Spectrum марсохода. Если нет интересного источника сигнала поглядеть, то проводом можно подключаться к пинам марсохода рядом с VGA разъемом. Если выбрать через меню осциллографа trigger type: pos level и sweep freq 20MHz/256/1000 и дотронуться до зеленого цвета, например, то видно видеосигнал с всплесками соответствующими надписям и картинке на экране в этот момент. Можно померить частоты кадровой и строчной синхронизации присоединившись к соседним пинам с hsync и vsync. Измерить их продолжительность. Переход между пунктами меню и их выбор делается двумя кнопками марсохода. В текущей версии у меня уже работает клавиатура. Кстати, как клавиатура отправляет сканкоды тоже можно смотреть - они на IO8, IO9 - это 11й и 12й контакты CN2 шилда. Скоро выложу новую версию когда сделаю регулировку уровня чувствительности триггеров осциллографа и частотомера. На монтажке можно понаделать RC фильтров и пропускать через них те же видеосинхроимпульсы - красивые кривые получаются. Правда лучше их инвертировать и вывести отдельно на какой-нибудь пин - свободные есть. На IO0 выведен меандр 1 МГц.

Можно покопаться в проекте и сделать вход частотомера обычным пином, а не АЦП и тогда можно будет мерить вплоть до частот, поддерживаемых ПЛИС. В следующей версии это тоже уже будет, в любом случае.

Ну а еще можно вообще ничего не делать или отдохнуть:) Только для этого есть другие сайты.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chaosorg.

Запоминающий осциллограф 4 года 2 мес. назад #3393

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 17
выкладываю новую версию своего осциллографа - v.0.2 :)

Вложенный файл:

Имя файла: my_scope_20150506.zip
Размер файла: 230 KB


изменена организация адресного пространства, чтобы задействовать максимум блоков встроенной памяти ПЛИС марсохода 2, которое не кратно 8 и равно 46 килобайт. ОЗУ для шрифта, символов и их цвета (цвет пока не используется) и программы с данными теперь имеет объем 14 килобайт и набрано из кусков 2 + 4 + 8 килобайт, соответственно. Остальные 32 килобайта отданы под массив точек осциллограммы, как и в предыдущей версии. Добавлены порты ввода вывода, чтобы управлять не только осциллографом, но и мультиметром, и чтобы опрашивать ps/2 клавиатуру. Теперь можно писать программы размером аж 8 килобайт :)

Перемещаться по меню и переключать значения теперь можно стрелками клавиатуры. Кроме того, частоты развертки переключаются клавишами 1,2,3,4,5 , а режимы триггера клавишами q,w,e,r,t.

Надстроен мультиметр - измеряет максимальное и минимальное значение уровня сигнала, длительность импульсов и частоту. Делает это разными способами для разных входов - для АЦП и для цифрового IO0. У частотомера сигнала, идущего через АЦП есть своя настройка чуствительности. Для борьбы с дребезом цифрового входа частотомера добавлен "deglitching" фильтр, включаемый/отключаемый через параметр deglitching delay. В будущем, эта настройка скорее всего будет упрощена до вкл/выкл, так как ее значение от 1 до 4 (тактов процесора), например, имеют одинаковый эффект, а вот значение 0 придает частотомеру цифрового входа возможность измерить даже 85,2071 МГц, которые для примера выведены на IO3 (это приблизительно 4й канал ТВ).

IO1 тоже переназначен как вход, чтобы было удобнее быстро делать "рядом" с осциллографом внутри ПЛИС какие-то схемы для экспериментов. Тестовый меандр перенесен на IO2. Кое-какие сигналы выведены на LED[3:0] с отладочной целью и для баловства. Например на LED3 находится инвертированный VSYNC. Если сравнить измеряемую через цифровой IO0 вход частоту этого сигнала и обычного VSYNC, идущего в монитор, при отключенном deglitching, то видно как "глитчи" или "дребезг" искажают сигнал и приводят к неправильному измерению частоты. Относительно медленный АЦП вход с собственным частотомером при правильно подобранной чувствительности меньше подвержены этому явлению.

В верхнем правом углу ascii код обычных и scan код дополнительных клавиш. Строка adc_d: демонстрирует опрос АЦП процессором и вывод текущего зачения на экран в десятичной и шестнадцатеричной системах исчисления.

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

P.S.

и конечно исправлены обнаруженные ошибки предыдущей версии :)
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chaosorg.

Запоминающий осциллограф 4 года 2 мес. назад #3398

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Тк марсохода2 у меня нет, просто решил посмотреть исходники частотомера - сходу понять логику не получилось (а вникать времени нет). Слишком много клоков и асинхронных сигналов, насколько это оправдано? Лучше всегда стремиться к синхронному дизайну с одним клоком, насколько это возможно.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Запоминающий осциллограф 4 года 2 мес. назад #3402

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 17

Leka пишет: Тк марсохода2 у меня нет, просто решил посмотреть исходники частотомера - сходу понять логику не получилось (а вникать времени нет). Слишком много клоков и асинхронных сигналов, насколько это оправдано? Лучше всегда стремиться к синхронному дизайну с одним клоком, насколько это возможно.


Ну наконец-то хоть какая-то реакция, а то сами видите - полная тишина в ответ :)

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

В исходнике частотомера не один частотомер, а два. Один из них измеряет частоту сигнала, измеряемого АЦП. Отдает свои показания процессору. Поэтому уже имеем два клока. Один клок из-за того, что при переходе к другой плате и другому АЦП его хотелось бы убыстрить. Второй клок как раз таки общий для всех узлов управляемых и опрашиваемых процессором. Дизайн этого частотомера как раз синхронный с одним вот этим вторым (более быстрым) клоком. Клок АЦП в нем присутствует ради всего одной операции - забора в регистр значения из АЦП. Я не вижу смысла замедлять всю систему из-за того, что у Марсохода не самый быстрый АЦП. Для счетчиков, которые измеряют длительность импульсов или отсчитывают одну секунду и микросекунду можно использовать любой постоянный клок - я выбрал клок процессора, так как он менее вероятный кандидат на изменение.

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

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

Дизайн этого быстрого частотомера немного усложнился двумя счетчиками, которые борятся с глитчами. Они позволяют при deglitching_delay>0 игнорировать перемены во входном сигнале если они длятся меньше этой фильтрующей задержки.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chaosorg.

Запоминающий осциллограф 4 года 2 мес. назад #3403

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
А если надо померить частоту медленного сигнала, например, сети 50Гц ?
Собственно частотомер одного сигнала лучше выделить в отдельный модуль, тк алгоритм работы вряд-ли будет тривиальным из-за того, что частота измеряемого сигнала м/б как много выше, так и много меньше системного клока. И не смешивать с логикой нужной для работы других блоков системы. Так проще разбираться в исходниках.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Запоминающий осциллограф 4 года 2 мес. назад #3409

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 17
ок - я поделю частотомеры на разные исходники.

по поводу медленного сигнала - оба частотомера его измеряют правильно, но частотомер цифрового входа если эти 50 герц придут в виде прямоугольного сигнала с крутыми фронтом и спадом сначала поймает глитчи - покажет непостоянную частоту больше 100 Гц. При включенном (т.е. > 0) deglitching_delay он перестанет воспринимать глитчи и покажет ровно 50 Гц. Я это воспринимаю как фичу - возможность понять, есть ли у меня в сигнале что-то невидимое моему 20MSps АЦП.

У частотомера аналогового сигнала тоже, кстати, есть настраиваемая через визуальный интерфейс чувствительность, но ее трогать приходится редко.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Запоминающий осциллограф 4 года 2 мес. назад #3410

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

Chaosorg пишет: по поводу медленного сигнала - оба частотомера его измеряют правильно

Но насколько точно? 50,0001 Гц от 49,9999 Гц отличат?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Запоминающий осциллограф 4 года 2 мес. назад #3411

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 17
и еще ... хочется все-таки понять - запустил ли хоть один человек мой проект на марсоход 2? поймите правильно - последний раз я дотрагивался до реального осциллографа много лет назад и он был аналоговым с полосой до 10 МГц, кажись. Мне приходится вспоминать или изобретать велосипед в плане того, какие вообще должны быть у него возможности и настройки. Читаю инструкции к реальным осциллографам, но без реального осциллографа это несколько умозрительно. Что добавить в первую очередь в следующей версии?

Мне уже удалось, кстати, извлечь пользу из своего осциллографа для марсохода - я сравнил сигналы от ноутбуков и от марсохода при различных видеорежимах и, увидев разницу, немного поменял тайминги для, например, режима 1024x768@60 , увеличив на единицу back_porch у hsync и уменьшив на единицу back_porch у vsync - благодаря этому марсоходовскую картинку наконец-то согласился показать LG 42LW650S, который до этого отказывался это делать, ругаясь "неизвестный формат". Я постараюсь внести нужные коррективы и для ZX Spectrum проекта этого сайта, чтобы избавить его от этого недостатка, о котором писал в соответствующей теме.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Запоминающий осциллограф 4 года 2 мес. назад #3412

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 17

Leka пишет:

Chaosorg пишет: по поводу медленного сигнала - оба частотомера его измеряют правильно

Но насколько точно? 50,0001 Гц от 49,9999 Гц отличат?


оба частотомера считают частоту, как количество срабатываний счетчика по положительному фронту выделенного (или детектированного - не знаю, как правильно сказать) цифрового сигнала. Поэтому они целочисленные. Зато они оба умеют измерять длительность положительной и отрицательной площадок и, если я правильно все понимаю, то можно просуммировав эти длительности получить период колебания и программно, например, поделив получить дробную частоту. Я для своего эзотерического проца :) , используемого в осциллографе, деление уже написал - так что если это нужно, то могу добавить. Вообще, что и как измеряют реальные частотомеры? А то может я не так велосипедю? :ohmy:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.225 секунд

ВКонтакте  facebook  GitHub  YouTube  Twitter
Вы здесь: Начало Forum Наш форум Проекты пользователей Запоминающий осциллограф