Перейти к содержанию
    

Самодельный игрушечный осциллограф

Здравствуйте!

Если не покупать готовый цифровой осциллограф, рассматриваю вариант спаять самому. Как понимаю, архитектура проста до безобразия, достаточно быстрый МК читает по одной параллельной шине данные достаточно быстрого АЦП, сохраняет в память и допустим каждые 20 мс. по другой шине передает данные на дисплей от сотового телефона.

Первое что попалось на глаза АЦП AD9280 (32MIPS).

Проц PIC24HJ12GP202 (40MIPS).

Дисплей + сенсор, пока еще рассматриваю варианты от Самсунг или Нокии.

 

Верна ли архитектура?

Как думаете, потребуется ли более быстрый проц для полноценного использования приведенного АЦП? Собственно, как понимаю, надо только быстро тактировать АЦП, принимать данные по параллельной шине и сохранять в оперативной памяти. ничего сложного, но достаточно ли будет быстродействия?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Синхронизированный сигнал на экране иметь не желаете? :rolleyes:

P.S. в слове "осциллограф" сколько букв 'ф'?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как думаете, потребуется ли более быстрый проц для полноценного использования приведенного АЦП? Собственно, как понимаю, надо только быстро тактировать АЦП, принимать данные по параллельной шине и сохранять в оперативной памяти. ничего сложного, но достаточно ли будет быстродействия?

процессор должен:

1. прочитать данные из АЦП

2. записать в оперативную память

3. продвинуть указатель записи на следующую позицию

4. определить, заполнен буфер в памяти или нет

5. если заполнен - начать отображение

Чтобы выполнить каждое из этих действий, процессор должен выполнить далеко не одну команду. Поэтому, для приема 32 млн выборок в секунду нужно хотя бы 160 млн операций в секунду, ПИКу и не снилось. А на малой частоте - будет работать, если программу получится написать. Ну и входные цепи АЦП - совсем не то, что требуется от входов осциллографа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Верна ли архитектура?

"Архитектура" не верна.

 

Рекомендую Kinetis KV5x

Честные 240 МГц позволят делать сложные триггеры.

4-е 12-и битных ADC по 5 MSPS в комбинации дадут 20 MSPS.

Кроме того там уже есть встроенные аппаратные триггеры по превышению уровня, по понижению уровня и по переходу через 0.

Встроенный DMA снизит нагрузку на шину на полной скорости ADC до считанных процентов.

В добавок есть и 16-и битный ADC (но медленный).

Ну и имеющийся готовый универсальный протокол обмена с PC тоже плюс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну там по идее должно выполняться до нескольких команд за один такт. Частота как понимаю до 80 МГц. Предлагаете поставить PIC проц на 70 MIPS ?

 

Ну и имеющийся готовый универсальный протокол обмена с PC тоже плюс.

Я не предполагал использовать РС в качестве отображающего устройства. По цене РС есть готовые осциллы 200 мГц, более компактные и более удобные в управлении. например из линейки HANTEK DSO5202P

 

Задача усложняется, - допустим указанный проц имеющаяся среда разработки поддерживает. а более быстрые процы, допустим PIC33, скорее всего не поддерживает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

...

Как думаете, потребуется ли более быстрый проц для полноценного использования приведенного АЦП? Собственно, как понимаю, надо только быстро тактировать АЦП, принимать данные по параллельной шине и сохранять в оперативной памяти. ничего сложного, но достаточно ли будет быстродействия?

Как видно из контекста сообщения - "спаять" Вы его сможете, а вот "сделать" - нет. ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разобрался, можно применить dsPIC33 (70 MIPS), ну а встроенный модуль DSP позволит использовать осцилл, как прочую измерительную аппаратуру, типа анализаторы спектра и декодеры сигналов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не предполагал использовать РС в качестве отображающего устройства. По цене РС есть готовые осциллы 200 мГц, более компактные и более удобные в управлении. например из линейки HANTEK DSO5202P

 

Я и не предлагал, делать осциллограф на PC.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Честные 240 МГц позволят делать сложные триггеры.

4-е 12-и битных ADC по 5 MSPS в комбинации дадут 20 MSPS.

Как уже тут говорил не раз - лучше в этом плане - LPC4370:

1. Нет проблем с внешним интерфейсом (это будет узким местом, так как потребует реально быстрой внешней шины ещё и совместимой по сигналам, GPIO вряд-ли потянет, если и потянет - кроме обслуживания GPIO МК возможно больше ничего не будет успевать делать).

2. Частота сэмплирования заведомо выше (и опять-же - DMA работает уже не с внешним интерфейсом, а напрямую с АЦП, что позволяет использовать все его плюшки по уменьшению загрузки шины, типа упаковки данных в 32-битные слова и FIFO).

3. 3 ядра, что может оказаться полезным, например - для той же кадровой синхронизации.

Таким образом: 200МГц тактовой LPC4370 с его встроенным АЦП и 3 ядрами будет эквивалентно примерно раза в 1.5-2 более быстрому МК работающему с внешним АЦП.

 

Разобрался, можно применить dsPIC33 (70 MIPS), ну а встроенный модуль DSP позволит использовать осцилл, как прочую измерительную аппаратуру, типа анализаторы спектра и декодеры сигналов.

Ну-ну... ;)

Для начала надо хотя-бы подумать как внешний АЦП подключать к этому МК.

А для этого надо прочитать спецификацию на его внешнюю шину (она вообще там имеется?) и узнать - сколько тактов шины потребуется на чтение одного слова с АЦП.

И можно-ли вообще этот АЦП подключить к этой шине. Не в плане "припаивания" проводов, а в плане времянок сигналов.

А Вы похоже не читали ничего.

Да и осциллограф - это не просто чтение данных с АЦП. Это много больше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как уже тут говорил не раз - лучше в этом плане - LPC4370:

 

Да принципиальных возражений нет.

Как намекает сам Слесарь , осциллографф можно сделать на любой трухе.

Просто KV5x дал бы существенные преимущества.

 

На мультиядерность я бы не возлагал больших надежд, там во-первых частота ниже, во-вторых запаритесь надежный межядерный обмен делать и опять потеряете производительность.

И пропустить 80 mbps на внешнюю память в LPC я бы не надеялся, если расчет на это.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте!

Если не покупать готовый цифровой осциллограф,

Здравствуйте! Помнится вы уже поднимали тему самодельного осцилла несколько лет назад. Тогда вас вроде убедили, что идея трудновыполнимая. Я считаю, что этим можно заниматься как хобби, для исследований что-ли))) Но если вам нужен инструмент для работы, то лучше купить. Даже сейчас, в кризиное время, найти недорогой осцилл на эбее или али вполне можно)

 

Кстати по-работе сейчас решаю вопрос осциллографирования, только требования скромнее: сигнал до 5 кГц. Проблем хватает даже на частоте дискретизации 10 кГц, если нужен реалтайм) Хотя... проблемы, это так субъективно. Пробуйте сделать этот осциллограф, нам потом расскажете!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сколько тактов шины потребуется на чтение одного слова с АЦП.

 

Вроде просто, АЦП выставил слово на параллельной шине, любой МК по такой же шине это слово прочитал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да принципиальных возражений нет.

Как намекает сам Слесарь , осциллографф можно сделать на любой трухе.

Просто KV5x дал бы существенные преимущества.

Да с тов. Слесарем всё ясно ;)

Что из трухи сделано, то трухой и останется :biggrin:

 

На мультиядерность я бы не возлагал больших надежд, там во-первых частота ниже, во-вторых запаритесь надежный межядерный обмен делать и опять потеряете производительность.

Макс. частота всех ядер в LPC4370 одинакова == 204МГц. Хотя по скорости M0-ядра конечно слабее. Конечно 3 ядра не дадут линейно 3-кратное увеличение скорости, но всё равно - часто бывают задачи, которые лучше выполнять непрерывно одним ядром, чем прерываться на них одним процессором - если такие переключения нужно делать часто, то выделенное 1 ядро будет делать эту задачу быстрее чем скажем даже в 2-3 раза более быстрое ядро, но часто переключающееся на другие задачи.

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

И что делать в таком случае? Часто-часто прерываться на обслуживание потока данных основному ядру? Да только на одних входах-выходах в ВЧ обработчик прерывания будет потеряна огромная часть производительности CPU.

А здесь можно полностью высвободить основное ядро для обработки потока данных, а всю рутину пусть одно из M0-ядер делает. На 200МГц оно всё успеет.

 

Надёжный обмен я ещё на OMAP-L137 делал между его ARM9 и DSP - никаких там проблем нет: каждое ядро занимается своим делом не мешая другому.

 

Энтузиастам осциллографо-строения для справки:

Только для чтения потока данных со встроенного АЦП LPC4370 на частоте 80MS/s без пропусков из-за конфликтов на шине CPU и DMA необходима тактовая частота ядра не менее 160Мц.

И это при упаковке данных АЦП в 32-битные слова (по 2 сэмпла в слове) и наличии FIFO на (вроде 16 слов - точно не помню).

И это при самом оптимальном пути данных - из внешнего АЦП, находящегося на быстрой шине без дополнительных задержек.

 

Вроде просто, АЦП выставил слово на параллельной шине, любой МК по такой же шине это слово прочитал.

:crying:

"Просто было на бумаге, да забыли про овраги..."

У МК нет интерфейса "просто" у него обычно есть всякие GPIO, FMSC и пр. Которые тоже просто не умеют читать, а им нужны сигналы стробов, синхронизации и пр., у каждого из которых свои временные требования и зависимости одного сигнала от другого.

И как правило оказывается, что у 180МГц МК внешняя шина тактируется в 2-3 раза более низкой частотой, да плюс сигналы стробирования таковы, что не каждый такт можно захватывать внешние данные, да DMA например не успевает обслуживать эту шину каждый такт и т.п.

И в результате оказывается, что максимальная частота потока, который МК может считать по внешнему интерфейсу в несколько раз ниже его тактовой частоты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Триггеры осциллографа предполагают постоянный прием данных и их анализ процессорным ядром.

Скажем триггер по переходу через ноль.

Если его у вас нет аппаратного, то 160 МГц процессора не помогут и 204 будет мало.

Придется снижать частоту, и никакие ядра не помогут.

Либо у вас будет непредсказуемый джиттер триггеров.

 

А еще претриггеринг такой есть. Это когда хотите посмотреть, что было непосредственно перед триггером.

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

Все это убъет производительность.

 

Ну а всем остальным сервисам хватит и 10% оставшихся ресурсов времени, если конечно правильную RTOS применить. :biggrin:

Короче, многоядерность здесь не поможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И в результате оказывается, что максимальная частота потока, который МК может считать по внешнему интерфейсу в несколько раз ниже его тактовой частоты.

 

И нормально. если АЦП стробировать как по даташиту не более 32 МГц. то проца PIC24 или PIC33 70 MIPS с частотой порядка 140 МГц должно хватить.

 

А мне собственно надо посмотреть какой синус на выходе бензогенератора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...