Давайте кратко рассмотрим, что есть у осциллографа:
Сначала у нас есть аналоговый интерфейс. Здесь у нас есть сеть согласования импедансов для пробников (но пробники также должны иметь часть согласования емкостей), секцию затухания (очень важно, чтобы мы не перегружали АЦП и не допускали высокое напряжение), запуск и подключение к аналого-цифровой преобразователь. Я не буду много говорить об этом, так как я не слишком хорош в аналоговых вещах, но суть в том, что мы ничего не можем сделать с Пи в этом разделе.
Далее у нас есть часть аналого-цифрового преобразователя. Вам понадобится хотя бы один АЦП для каждого канала. Больше можно использовать для более высокой частоты дискретизации. В традиционной области АЦП подключается к ASIC или устройству FPGA. Они используются, потому что традиционные компьютеры не достаточно в реальном времени (и не путают в реальном времени с быстрым!) Для обработки данных, предоставляемых АЦП. Эти данные затем сохраняются в ОЗУ некоторого вида. Некоторые устройства будут использовать статическую оперативную память, в то время как другие будут использовать динамическую память. В целом подход SRAM является более традиционным и встречается у известных производителей, в то время как использование DRAM представляется более новым подходом в более дешевых устройствах, разработанных в Китае.
Объем оперативной памяти и ее скорость будут определять, сколько сэмплов можно сохранить. Почти всегда АЦП будет 8-разрядным АЦП, поэтому, скажем, для одного мегасэмпла нам понадобится 8 б раз 100000 = 8 МБ или 1 МБ ОЗУ. Для одной MSa / s нам понадобится RAM, которая может работать на таких скоростях. Сегодня это должно быть относительно легко получить. Обычно FPGA управляет оперативной памятью и отвечает за хранение данных в ней. Он работает, заполняя образец памяти, пока есть еще пустое место, а затем перезаписывает его, когда он заполнен. Когда на канал приходится несколько АЦП, ПЛИС установит их так, что сначала начинается выборка, затем на следующей тактовой секунде и т. Д. Когда они закончат выборку, выборка первого АЦП будет сначала записана в память, а затем вторая выборка АЦП. Это создаст впечатление, что АЦП выполняют выборку быстрее, чем они есть на самом деле.
Следующим пунктом в этом разделе является то, что образцы должны быть равноудалены во времени. Это главная проблема с использованием ПК в осциллографах и причина преобладания FPGA и ASIC. Если некоторые образцы опаздывают или рано, то изображение, представленное на экране, будет неправильным.
В этой части мы видим первое возможное использование Pi. Если частота дискретизации достаточно низкая, мы сможем управлять АЦП напрямую от Pi и сохранять их результаты в оперативной памяти Pi. Как быстро мы можем двигаться, зависит от того, как АЦП подключен к Пи, и как Пи выполняет свои операции ввода-вывода. Из того, что я прочитал, самая высокая скорость портов Pi I ^ 2C составляет 150 МГц (другой вопрос, насколько легко это сделать в GNU / Linux), в то время как самая высокая стандартизированная скорость составляет 5 МГц, а для SPI самая высокая скорость в Пи 250 МГц. Я не уверен, что является самой высокой стандартной скоростью SPI, но я ожидаю, что она будет где-то в диапазоне 100 МГц на максимуме.
Таким образом, теоретически у нас более чем достаточно скорости на Пи для запуска АЦП в диапазоне низких мА / с. У меня такое ощущение, что скорость оперативной памяти здесь не будет проблемой, но у меня нет данных, подтверждающих это. Если это так, то у нас будет существенное преимущество по сравнению с обычными областями: будет доступно очень большое количество памяти для захвата. Например, если мы выделим 32 МБ ОЗУ программе для памяти сэмплов, и у нас будет два канала, то получится 16 МБ на каждый канал или чуть более 134 МБ или 134 мегапикселя на канал. Это то, что даже сегодня многие осциллографы не имеют.
Недостатком является то, что нам потребуются серьезные модификации операционной системы, чтобы иметь возможность получить точную выборку здесь. У меня нет опыта работы с Linux в реальном времени, поэтому я не знаю, насколько это легко.
В любом случае, давайте перейдем к следующему шагу. Итак, у нас есть система выборки, которая заполняет оперативную память. Следующая часть - триггер. Триггер тесно связан с частотой обновления экрана. Что он в основном делает, так это находит интересный образец и хранит его в памяти. Когда область запускается, она продолжает выборку после запуска, пока не заполнит память, а затем отправляет ее для обработки и отображения на экране. В то время как данные обрабатываются, система выборки часто останавливается и ждет отображения данных. Вот почему у низкоуровневых областей имеется более низкая частота обновления, тогда как у высокопроизводительных областей будут специальные дисплеи с высокой частотой обновления и они будут тратить гораздо меньше времени на ожидание отображения данных.
В этом разделе часто будет другая ASIC или FPGA, которая будет выполнять обработку сигналов на выборках, любое декодирование протокола, если это поддерживает область, и фактически управляет самим дисплеем.
Это та часть, где, как я вижу, Пи действительно может сиять. Он может управлять хорошим дисплеем 1920x1080 (в то время как прицелы часто находятся на глубине 800x600) и может очень хорошо выполнять декодирование протокола. Единственная проблема, которую я вижу, это скорость и то, как обработка повлияет на время задержки. Если мы выберем низкую частоту обновления, то получим действительно хороший логический анализатор.
В заключение несколько слов о USB-осциллографах и о том, почему USB в целом плох для этого типа проектов: традиционный USB-осциллограф осуществляет ввод и выборку и отправляет данные выборки на ПК для обработки, для которой существует хост-приложение. По сути, нечто очень похожее было бы сделано и с Пи. Обычно приложения для ПК плохо разработаны и полны ошибок. Следующая плохая часть - это сам USB. Его рекламируют как быструю шину, которая в режиме Hi-Speed может развивать скорость до 480 Мбит / с. Правда в том, что крайне редко можно найти USB-контроллер, который может поддерживать такие высокие скорости (в среднем это около 250 Мбит / с из того, что я видел), и что он как протокол не очень подходит для любых реальных приложение Во-первых, он используется всеми устройствами в концентраторе (и Pi имеет только один порт USB, к которому подключен концентратор Ethernet + USB), имеет относительно высокие накладные расходы (если сравнивать, скажем, с SPI) и имеет высокую задержку (помните, что при 1 мСа / с каждая выборка длится всего 1 мкс, поэтому у нас должна быть память на нашей плате, поскольку мы не можем отправлять выборки в режиме реального времени через USB). Наконец, использование USB сделало бы сбор данных частью еще одного USB-осциллографа, и именно здесь мы теряем все преимущества использования Pi: традиционные настольные компьютеры встречаются гораздо чаще, быстрее, их легче получать и имеют гораздо лучшие возможности USB.
РЕДАКТИРОВАТЬ
Я прочитал относительно недавний пост Герт Ван Лу, и, по его словам, реалистичные частоты для Пи I ^ 2C 400 кГц, а для SPI 20 МГц.
Мы обнаружили, что Raspberry Pi является отличной платформой для запуска программного обеспечения, необходимого для такого проекта. Проблема заключается в том, чтобы в первую очередь получать сигналы в RPi и выполнять высокоскоростной захват сигнала в режиме реального времени без джиттера на том же процессоре, на котором работает операционная система и программное обеспечение. Нашим решением является осциллограф BitScope Raspberry Pi, который соединяет BitScope (для высокоскоростного захвата сигнала со смешанным сигналом) с Raspberry Pi, который запускает все необходимое программное обеспечение.
источник
NB: Это скорее «мысли вслух», чем реальный ответ
Идея также пришла мне в голову некоторое время назад, и мне все еще нравится общая идея!
Насколько я знаю, высокопроизводительные области с 15 лет (или даже больше) просто компьютеры (ПК) с кучей специализированных высокоскоростных операций ввода-вывода. Я думаю, что когда подобный ввод / вывод разработан / подключен к RPi, результат может быть удивительно хорошим.
ИМХО хороший способ сделать это - позволить RPi просто хранить и отображать собранные данные (полученные, например, через USB-порт) и позволить некоторым специализированным аппаратным средствам выполнять высокоскоростные измерения. Этот высокоскоростной измерительный блок может затем управляться RPi на основе пользовательского ввода или чего-то подобного.
В первой версии на RPi были / есть некоторые проблемы с портами USB, я в последнее время не искал, решены ли они в данный момент. Я также слышал слух о том, что новая версия RPi 2.0 не должна иметь этих проблем, но я также не проверял этот слух.
Я думаю, что результаты без какого-либо внешнего (специализированного) оборудования ограничены из-за количества портов ввода-вывода и того факта, что на нем запущена целая ОС (что ограничивает возможности реального времени). Если вы не планируете писать свою собственную ОС?
Также, для этого, например, использование микросхем I2C не даст достаточной скорости, чтобы сделать что-то действительно хорошее. SPI уже дает гораздо большую полосу пропускания (до 100 МГц от макушки головы), но я бы выбрал USB и, при необходимости, сжимал или использовал какую-то хорошую схему кодирования перед отправкой данных, чтобы увеличить пропускную способность.
Поэтому я думаю, что это возможно, но оборудование, которое необходимо добавить к RPi, будет намного дороже, чем сам RPi.
И последнее, но не менее важное (прежде чем я перестану мечтать об этой теме), я не удивлюсь, если поиск в Интернете приведет к тому, что какая-то группа уже будет занята этим.
источник
Ответ - да.
Это достаточно мощный! Но только для определенных частот - как уже указывалось из-за ограничений.
ТАК! -> Вы должны спросить себя, что вы хотите измерить?
Осцилляторы могут варьироваться от простых низких частот, которые стоят 5USD, а затем другие могут обрабатывать до 50 ГГц + - это стоит столько же, сколько маленький дом! 75,000USD-100,000 USD!
Я думаю, что Raspberry будет достаточно хорош для измерения суб-гига частот, таких как беспроводные сигналы 433 МГц, низкоскоростная связь с шиной ЦП, TTS / UART, отладка I2C - не намного больше на самом деле. И более высокие частоты не будут действительно точными, так как Raspberry не работает под управлением ОС реального времени. Таким образом, вам нужно будет начать с ОС (или, как уже упоминалось, внешние устройства реального времени - но какой тогда смысл?)
Но если вы действительно хотите измерить сигналы, вы можете купить действительно хорошее и недорогое устройство, которое соответствует характеристикам Raspberry. Но он уже спроектирован хорошо, полон функций, действительно зрелый в дизайне и зарекомендовал себя как удобный в среде любителей.
Здесь не нужно заново изобретать колесо. Например, DSO Nano для одного канала стоимостью менее 100 долларов США.
Нано Quad канал DSO для менее чем 200USD
А потом, что Малина или подобное устройство не может сделать!
И стоил небольшого состояния ...
источник
Вы можете подключить один из наших инженерных осциллографов / генераторов сигналов произвольной формы TiePie HS5 к порту USB. Библиотека, скомпилированная для Raspberry Pi для одновременного использования одного или нескольких осциллографов, доступна для скачивания. Прибор использует собственное время и память, поэтому нет потери производительности. Так что да, Pi достаточно мощный для проекта осциллографа.
Основные характеристики осциллографа: 2 канала, 14 бит, 500 мс / с, полоса пропускания 250 МГц, 20 мс / с, 14-битная непрерывная свободная потоковая передача, память 32 мс на канал, точность базового времени 1 ppm.
Основные характеристики генератора сигналов произвольной формы: формы волны от 1 мкГц до 30 МГц, 240 мс / с, 14 бит, память 64 мс, выход от -12 до 12 В (24 Вpp), точность базового времени 1 ppm.
источник
Ваш лучший шанс - попробовать, если sigrok и его интерфейс libsigrok можно скомпилировать на Pi, а затем купить какое-нибудь совместимое оборудование для осциллографа. Таким образом, вы можете захватывать сигналы до 24 мегапикселей в секунду. Обладая достаточными знаниями, вы можете настроить программное обеспечение любым удобным вам способом, включая беспроводную передачу на мобильные устройства.
источник
Кто-то говорит о Сигроке. Я думаю, что ближайший способ - использовать хорошо документированный CY7C68013A с драйвером EZ-USB FX2LP. На настольном ПК не было работы с Weezy, а на Jessy - хорошо. Вот известное ограничение около 24 Msps. Я думаю о другом способе, используя интерфейс камеры. Этот интерфейс может обрабатывать 2,1 мегапикселя и 30 кадров в секунду, что означает, что он может передавать данные в графический процессор со скоростью более 60 мегапикселей в секунду. Звучит более полезно, чем 20 МГц SPI или USB.
источник
Если вы не возражаете против того, чтобы быть ограниченным звуковыми частотами, я использую недорогой 12-разрядный двухканальный аналого-цифровой преобразователь MCP3202 для сбора данных с пи с spidev и pydatascope для отображения данных, передаваемых через Ethernet через сокет TCP. Pydatascope также действует как анализатор спектра!
Я сделал относительно тривиальные изменения в открытом исходном коде pydatascope, чтобы иметь два канала, в основном потому, что это было легко, а не потому, что мне это действительно было нужно.
Пишите наблюдения или пишите мне напрямую, если у вас есть какие-либо вопросы, я буду рад помочь.
источник