Давайте кратко рассмотрим, что есть у осциллографа:
Сначала у нас есть аналоговый интерфейс. Здесь у нас есть сеть согласования импедансов для пробников (но пробники также должны иметь часть согласования емкостей), секцию затухания (очень важно, чтобы мы не перегружали АЦП и не допускали высокое напряжение), запуск и подключение к аналого-цифровой преобразователь. Я не буду много говорить об этом, так как я не слишком хорош в аналоговых вещах, но суть в том, что мы ничего не можем сделать с Пи в этом разделе.
Далее у нас есть часть аналого-цифрового преобразователя. Вам понадобится хотя бы один АЦП для каждого канала. Больше можно использовать для более высокой частоты дискретизации. В традиционной области АЦП подключается к 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 МГц.