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

Можно ли удешевить (40-60 каналов АЦП 300-1000КС/с и обработка)?

18 minutes ago, _pv said:

там, кстати, и пожирнее есть, например, MSPM0G3105, с 32МГц spi и двумя АЦП по 4МСПС.

Спасибо!!! Это, кстати, может быть очень классным для меня решением, так как если я буду по 800КС/с на 10 каналах собрать, и при 80МГц тактовой в целых числах я смогу многое предварительно обработать и на выходе уже иметь существенно меньший трафик, который в 32МГц SPI с легкостью полезет. Альтернативно, сделать на нем 8-ми битный параллельный интерфейс на 12МГц уже на голом GPIO.

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


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

А обработка требуется поканальная или всего массива данных вместе? Возможно, глупость скажу - но 20-30 китайских bluepill по 1.5 доллара для оцифровки и обработки плюс один для управления и синхронизации - не вариант?

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


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

2 hours ago, Priest_89 said:

А обработка требуется поканальная или всего массива данных вместе?

кучкой по несколько миллисекунд со всех каналов, то есть около 1000*60 данных за раз надо обработать, на выходе получить около 100 чисел, послать по ком-порту, и приступить к обработке следующей партии. Можно по 5-10 отсчетов, то есть 5*60 данных немного предобрабатывать и уменьшать трафик в 4-5 раз.

 

2 hours ago, Priest_89 said:

но 20-30 китайских bluepill по 1.5 доллара

спасибо за совет, к сожалению, это будет много места занимать.

 

На данный момент уже в процессе разводки на MSPM0G3107 по совету уважаемого _pv на этом решении и место раза в 3 меньше надо, и стоимость раз в 10 падает, да и каналов можно побольше, но от 80 каналов наверное esp32 уже не потянет, и надо будет думать о чем-то более жирном.

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


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

3 часа назад, iiv сказал:

но от 80 каналов наверное esp32 уже не потянет, и надо будет думать о чем-то более жирном.

как же так??? Ведь:

В 07.07.2024 в 13:18, iiv сказал:

у вас всегда ко мне один и тот же совет - взять камень по толще, подороже. Но не об этом тема, поймите, пожалуйста!

:biggrin:

 

PS: Боюсь, что опять окажется что "даю совет взять камень по-толще по-дороже", но XMC4502 имеет: "Four Analog-Digital Converters (VADC) of 12-bit resolution, 8 channels each". Хотя сомневаюсь что удастся с него одного 80 каналов на 0.32MS/s. А вот с пары XMC4502 - должно получиться. Ну и по периферии, через которую можно отдать данные наружу - он богат: хоть несколько QSPI, хоть SDMMC 4-битный, хоть внешняя шина (EBU).

И проще сего (имхо): 2шт.XMC4502 + TMS320C6745 со связью через параллельную шину или несколько QSPI.

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


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

46 minutes ago, jcxz said:

PS: Боюсь, что опять окажется что "даю совет взять камень по-толще по-дороже", но XMC4502 имеет: "Four Analog-Digital Converters (VADC) of 12-bit resolution, 8 channels each". Хотя сомневаюсь что удастся с него одного 80 каналов на 0.32MS/s. А вот с пары XMC4502 - должно получиться. Ну и по периферии, через которую можно отдать данные наружу - он богат: хоть несколько QSPI, хоть SDMMC 4-битный, хоть внешняя шина (EBU).

И проще сего (имхо): 2шт.XMC4502 + TMS320C6745 со связью через параллельную шину или несколько QSPI.

с коммуникационной периферией у XMC действительно всё очень хорошо, но заявленные 4 мегасэмпла АЦП выдаст только в интерливе если их объединить, так там 4 х 2Мспс АЦП: 12-bit conversion time: tCN12C = (2 + 12 + 2) × tADCI + 2 × tADC = 16 × 33.3 ns + 2 × 8.3 ns = 550 ns

т.е. суммарно столько же сколько у тексасовских кортексов M0, 2x4Msps, только те стоят 50 центов, а не 7$.

ну и даже пары всё равно не хватит на 80 каналов, так как 4 ацп * 8 каналов по 250кГц это только 32 входа, а если надо быстрее то каналов будет ещё меньше.

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

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


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

1 час назад, _pv сказал:

с коммуникационной периферией у XMC действительно всё очень хорошо, но заявленные 4 мегасэмпла АЦП выдаст только в интерливе если их объединить, так там 4 х 2Мспс АЦП: 12-bit conversion time: tCN12C = (2 + 12 + 2) × tADCI + 2 × tADC = 16 × 33.3 ns + 2 × 8.3 ns = 550 ns

т.е. суммарно столько же сколько у тексасовских кортексов M0, 2x4Msps, только те стоят 50 центов, а не 7$.

А где вы такие цены нашли??? Я смотрел на digikey и mouser - MSPM0G3107: ~1.7$ (поштучно, у ТС явно не массовое производство). XMC4502 = 8$

Насчёт того, что двух XMC4502 не хватит (по скорости) - пожалуй вы правы.

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


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

7 minutes ago, jcxz said:

А где вы такие цены нашли???

mspm0g3105-7 - да, 1.1 евро за штуку при 100 экземплярах, а вот

mspm0c1104 - только 40 центов за штуку при 100 экземплярах заказа.

 

Хотелось на более дешевых, но из-за того, что их нет в наличии вот сейчас, а другие - уже есть, сейчас развожу на mspm0g3105 из расчета по 8 каналов на процессор, на лету считать разницу и назад отдавать по 20-32МГц SPI слейв шине, которую запараллелить на основном процессоре.

 

Цена тоже играет не последнюю роль, так как таких конструкций (по 40-60 каналов) надо собрать только на попробовать около 20 экземпляров, если в каждой по 8 таких процессоров, то уже как раз и 80 экземпляров надобно, то есть 100 экземпляров - как раз с запасом, что если где полетит и разобьется, или криво спаяется и, только на попробовать.

 

16 minutes ago, jcxz said:

XMC4502

Спасибо!!! Процессор интересный, начал смотреть. Конечно не такой простой, как mspm0g3105, про который я только вчера первый раз услышал и сейчас уже развел (очень-очень надеюсь, что без ошибок) свой первый тестовый вариант моей платы.

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


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

В 06.07.2024 в 22:23, _pv сказал:

LPC4370 + 2 x ADG732 = 64 канала x 12бит x 1.25МГц

LPC4370 + 3 x ADG732 = 96 каналов x 12бит x 800кГц

Подумалось, что может получится сделать так, если удастся запрограммировать передачу результатов АЦП с помощью DMA напрямую в регистры SGPIO. Без промежуточного буфера в ОЗУ. А уже SGPIO - несколько последовательных потоков наружу. И если всё это будет работать синхронно, то и CPU ещё какой-то код сможет выполнять. Но обработку - всё равно внешним процессором. LPC4370 использовать только как многоканальный АЦП.

Но это только в теории. Надо пробовать.

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


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

Хорошо бы ещё промоделировать мультиплексор. Могут быть проблемы при быстром переключении.

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


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

11 minutes ago, jcxz said:

Подумалось, что может получится сделать так, если удастся запрограммировать передачу результатов АЦП с помощью DMA напрямую в регистры SGPIO.

если там в шины данных памяти упирается что не хватает на одновременную чтение/запись и считать надо что-то совсем уж простое типа разности двух сэмплов, может и наоборот тоже получится именно процессором перекладывать из регистра adc в регистр sgpio, без dma и памяти.

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


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

1 час назад, _pv сказал:

если там в шины данных памяти упирается что не хватает на одновременную чтение/запись и считать надо что-то совсем уж простое типа разности двух сэмплов, может и наоборот тоже получится именно процессором перекладывать из регистра adc в регистр sgpio, без dma и памяти.

Там не "регистр АЦП", а FIFO (внутри АЦП). Которое к тому же может объединять по два сэмпла подряд в одно 32-битное слово. И DMA может читать из него этими 32-битными словами. В этом плане проще. Но LPC4370 - это flashless МК. Соответственно - CPU обращается к ОЗУ не только за данными, но и за кодом. А дальше просто нужно посчитать максимальную нагрузку на ОЗУ и матрицу шин при работе АЦП, DMA, CPU. Можно конечно разнести код и данные в разные регионы ОЗУ, может даже - запустить код из внешней флешки подключенной на SPIFI, с расчётом что выполнение не уйдёт за пределы её кеша.

Но по-крайней мере - мне в своё время не удалось выполнять код из ОЗУ при работающем АЦП. Приходилось класть CPU в сон на время работы АЦП->DMA->ОЗУ. Иначе - получал переполнение FIFO АЦП. Правда у меня АЦП работал на максимальной частоте = 80 MS/s. Да и задача позволяла класть CPU в сон на время работы АЦП (АЦП выполняла захват только 8000 сэмплов; потом - стоп). Так что - сильно долго не пытался заставить CPU работать без переполнения FIFO АЦП - не особо нужно было.

Да, можно попробовать - без DMA: читать CPU прямо из FIFO АЦП и желательно пару сэмплов (32 бита); дальше (если обработка целочисленная) - можно попробовать обрабатывать сразу пары сэмплов (в "DSP-наборе" команд ARM есть несколько подходящих команд для пар 16-битных значений); и класть результаты сразу в FIFO SGPIO. Но ТС писал про мегафлопсы, значит у него обработка видимо в плавающей точке, а тогда всё гораздо печальнее. С плавучкой уже почти наверняка не влезет, даже если обработка самая простейшая. Но даже с целочисленной обработкой - не факт, что влезет, нужно экспериментировать. Слишком всё впритык....

1 час назад, MegaVolt сказал:

Хорошо бы ещё промоделировать мультиплексор. Могут быть проблемы при быстром переключении.

Можно скомбинировать внутренний мультиплексор (там 6 каналов) и внешние мультиплексоры. Заранее коммутируя их, пока идут преобразования на других каналах внутреннего мультиплексора. Навесить 6 внешних мультиплексоров на 6 внутренних каналов и коммутировать их со сдвигом времени.

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


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

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

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


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

8 hours ago, dxp said:

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

да, верно аккустический локатор, правда на самом дроне (поэтому вес важен) и не для обнаружения других дронов, а для получения пространственной картины, с дрона идет ультразвук и эта куча микрофонов детектирует отклики от близко расположенных объектов, чтобы не столкнуться. Стоит в дополнении к 20 ИК/обычных камер. Камеры не всегда все хорошо видят, особенное если темно, подсветка не сработала, а ультразвук как раз в ближней зоне хорошо все видит. До этого пробовал лазерные ИК дальномеры, но они очень узконаправленные, если летаешь по лесу, то все идет юзом, вот хочу попробовать таким объемным ультразвуком.

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


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

Если по каким-то причинам не выгорит с MSPM0G3107, то вспомнил тут про ещё один _возможно_ подходящий для задачи ТС МК с много-АЦП: серия SPC58NH... от STM. Совсем про них забыл....

Я сам с ними не работал, но рассматривал для какого-то проекта. Так что сужу чисто теоретически - по даташиту. Если ему верить, то они имеют по 4 SAR ADC с частотой выборок до 16MHz/5 = 3.2MS/s (в 10-битном fast режиме). И 100 АЦП-каналов. Т.е. - если каналы в чипе распределены так, что получится на каждый АЦП посадить по 10 каналов (я не смотрел распределение), то как раз получатся желаемые 0.32MS/s на канал. И того = 40 каналов на один МК. 2 МК = уже 80 каналов. На mouser-е и digikey они есть на складе, с ценой ~30 евро при 100шт. партии. Т.е. - вроде не смертельно для проекта ТС. Правда в наличии почему-то только самые тяжёлые (и дорогие) камни из линейки: SPC58NH92... (3-ядерные, с 10 МБ флеша). 6МБ-ных почему-то нет в наличии :sad: (а они думаю должны быть заметно дешевле). Но может ещё появятся вскоре?

К тому-же: 3 ядра по 200МГц каждое - возможно хватит даже и для обработки данных (40 каналов на чипе). Архитектура у них правда какая-то хитрая:

Цитата

Three main CPUs, dual issue, 32-bit CPU core complexes (e200z4), one of them having a checker core in lock-step

не народный Cortex. :umnik2: Но... наличие у каждого ядра своей памяти:

Цитата

1088 KB on-chip general-purpose SRAM (in addition to 192 KB core local data RAM): 64 KB in CPU_0, 64 KB in CPU_1 and 64 KB in CPU_2

...а также кешей:

Цитата

32 KB local instruction RAM and 64 KB local data RAM for Core_0, Core_1 and Core_2 – 16 KB I-Cache and 8 KB D-Cache for Core_0, Core_1 and Core_2

...и некий "лёгкий DSP-набор":

Цитата

Lightweight signal processing auxiliary processing unit (LSP APU) instruction support for digital signal processing (DSP) on Core_0, Core_1, Core_2

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

 

К тому же - там имеется некий:

Цитата

Multi channel direct memory access controllers (eDMA) 
– One eDMA with 64 channels
– One eDMA with 16 channels

Если этот eDMA (enhanced?) позволит поток сэмплов со всех 4 АЦП раскидывать равномерно по регионам ОЗУ трёх ядер, распределяя таким образом вычислительную нагрузку по ним, то шансы успеть прожевать все данные и не захлебнуться - имеются.

Получается: 3.2*4/3 = ~4.267 MS/s - вычислительная нагрузка на каждое 200МГц-овое ядро. При работе каждого ядра в своём регионе ОЗУ я думаю - уже должно хватить быстродействия прожевать этот поток. Хотя конечно нужно бы посмотреть - что там за система команд и что она могёт?

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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