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

Реализация синхронного АЦП на 8 каналов @ 100кГц/канал

Доброго всем времени суток!

Задачка следущая: требуется оцифровывать синхронно и непрерывно 8 каналов с частотой 100кгц на канал. Данные пишутся по кольцу в SDRAM (всего нужно не менее 32МБайт ОЗУ) как в видеорегистраторе, в момент "Ч" запись останавливается и данные из SDRAM сбрасывается во флешь.

Пока идет проработка структурной схемы и можно еще все поменять, посему решил спросить совета у гуру :) Как лучше такую систему построить и на чем.

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

Пока мысль поставить ARM9+SDRAM, плюс внешний АЦП (нужно минимум 12бит разрешения), но вот как быть с обменом между АЦП и ARM? По превываниям однозначно не прокатит -это нужно влезать в прерывания каждые 10мкс. ОСЬ тоже отпадает -задержки явно будут больше. Программный опрос АЦП и считывание? тогда никакой больше задачи в это время ARM выполнять уже не сможет. Напрашивается подключение АЦП на внешнюю шину ARMa и считывание его по ПДП. Но получится ли это на практике? Вот например имеется контроллер AT91SAM9G45, но так и не понял возможно ли организовать в нем пересылку память<->память.

Как вообще строятся подобные системы? Буду благодарен за любую идею или где почитать.

Спасибо!

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


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

Вариант — 8 одинаковых АЦП, например AD7453, управление подать одинаковое, 8 выходов завести на FIFO, обычную память, двухпортовую и т.п., из неё асинхронно переписывать пачками в более ёмкое, а системам потолще останется лишь разгребсти эту кучу.

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


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

Придется поставить 8 АЦП. Поскольку аналоговый комутатор обеспечивающий 10 битовую точность и время устаканивания данных меньше чем 1мксек не найдете. Встроенные в поцессоры комутаторы и АЦП нужную вам скорость не обеспечат.

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


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

Задачка следущая: требуется оцифровывать синхронно и непрерывно 8 каналов с частотой 100кгц на канал.

8-Channel Simultaneous Sampling ADC: AD7607, AD7606.

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


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

8-Channel Simultaneous Sampling ADC: AD7607, AD7606.

Ага, только я аналогичный присмотрел у Тексаса ADS8528

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

 

Вариант — 8 одинаковых АЦП, например AD7453, управление подать одинаковое, 8 выходов завести на FIFO, обычную память, двухпортовую и т.п., из неё асинхронно переписывать пачками в более ёмкое, а системам потолще останется лишь разгребсти эту кучу.

Т.е на жесткой логике сделать автомат который забирает из АЦП и записывает в двухпортовую память? А вообще интересная мысль, спасибо! Вот только 8 АЦП наверно лишнее?

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


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

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

Для процессоров blackfin это как раз не проблема. У них для порта PPI предусмотрен выделенный канал DMA, который обычно и выполняет пересылку данных прямиком в SDRAM без участия процессора.

 

Ага, только я аналогичный присмотрел у Тексаса ADS8528

Ага, только имейте ввиду, что AD7607 потребляет 80 mW at 200 kSPS, а ADS8528 150 mW at 200 kSPS.

 

И кроме того, для питания AD7607 нужно два источника: AVCC = 4.75 V to 5.25 V, VDRIVE = 2.3 V to 5.25 V.

А для питания ADS8528 нужно четыре источника: AVDD = 4.5 V to 5.5 V, DVDD = 2.7 V to 5.5 V, HVSS = -16.5 V to -5.0 V, HVDD = +5.0 V to +16.5 V.

Изменено пользователем blackfin

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


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

зачет там промежуточное FIFO ? у АЦП есть вход перевода в третье состояние, выходы можно объединить в одну шину. переписать за 10мкс 8 каналов в SDRAM по-любому успеет даже без ПДП.

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


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

Для процессоров blackfin это как раз не проблема. У них для порта PPI предусмотрен выделенный канал DMA, который обычно и выполняет пересылку данных прямиком в SDRAM без участия процессора.

 

 

Ага, только имейте ввиду, что AD7607 потребляет 80 mW at 200 kSPS, а ADS8528 150 mW at 200 kSPS.

 

И кроме того, для питания AD7607 нужно два источника: AVCC = 4.75 V to 5.25 V, VDRIVE = 2.3 V to 5.25 V.

А для питания ADS8528 нужно четыре источника: AVDD = 4.5 V to 5.5 V, DVDD = 2.7 V to 5.5 V, HVSS = -16.5 V to -5.0 V, HVDD = +5.0 V to +16.5 V.

Хорошо blackfin, будем иметь в виду blackfin :) Хотя этот PPI Насколько мне известно был заточен под видео АЦП, а там требования на порядки круче. Да и 2 ядра, у меня обработки как таковой не будет, есть ли смысл закладывать такого монстра?

Про питание в курсе, аналог конечно молодцы во всем ребята, но не понравились антиалиайзинговые фильтры у него, которые режут аж от 15кГц, а мне надо хотя бы 35 полоску сделать (таково требование заказчика), и отключить его никак нельзя. А так АЦП просто сказка!

 

зачет там промежуточное FIFO ? у АЦП есть вход перевода в третье состояние, выходы можно объединить в одну шину. переписать за 10мкс 8 каналов в SDRAM по-любому успеет даже без ПДП.

ФИФО я так понимаю чтобы иметь запас по времени реакции, т.е у CPU появляется возможность параллельно обрабатывать другие потоки

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


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

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

Сперва решите, кто и как будет забирать данные из SDRAM, а уж обслуживать АЦП и собирать с них данные в 1К-пакеты для буфера SDRAM можно и 8-разрядным МК.

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


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

А xmega128A1 вам не подойдёт?

У неё два АЦП с возможностью мерять по 4 канала параллельно - итого 8 параллельных каналов.

Можно подключить до 16МБ ОЗУ.

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


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

Доброго всем времени суток!

Задачка следущая: требуется оцифровывать синхронно и непрерывно 8 каналов с частотой 100кгц на канал.

Извините, не совсем понял.

Вам требуется синхронный захват данных по 8-ми каналам с частотой 100 кВыб/с, верно?

Всё остальное - вторично...

 

Для процессоров blackfin это как раз не проблема.

.............

Процессоры BlackFin не могут делать параллельный сэмплинг.

 

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


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

Извините, не совсем понял.

Вам требуется синхронный захват данных по 8-ми каналам с частотой 100 кВыб/с, верно?

Всё остальное - вторично...

 

Процессоры BlackFin не могут делать параллельный сэмплинг.

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

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


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

Вам требуется синхронный захват данных по 8-ми каналам с частотой 100 кВыб/с, верно?

Да, именно так. Каналы должны оцифровываться одновременно, вычитка данных -любым удобным способом. Я уже приводил тут АЦП ADS8528 - у него внутри как раз 8 независимых АЦП.

 

Сперва решите, кто и как будет забирать данные из SDRAM...

Предположительно вот эта штучка

...обслуживать АЦП и собирать с них данные в 1К-пакеты для буфера SDRAM можно и 8-разрядным МК

Т.е в ОЗУ самого 8-битника? Иначе не вижу смысла ставить еще один тормоз в систему :rolleyes:

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


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

Да, именно так. Каналы должны оцифровываться одновременно, вычитка данных -любым удобным способом. Я уже приводил тут АЦП ADS8528 - у него внутри как раз 8 независимых АЦП.

Есть, в принципе, ещё вариант обойтись без glue-logic, если, опять же, процессор поддерживает передачу данных по SPI с участием канала DMA.

 

Смысл в том, что у некоторых ADI-шных конвертеров, например AD7988-1, есть вход CNV (initiates a conversion) и, кроме того, есть возможность соединять несколько АЦП последовательно - в режиме "daisy-chain". В этом случае все ADC будут подключены к одному интерфейсу SPI и будут передавать данные последовательно, друг за другом (см. Figure 38 и Figure 39, DS). Это, ессно, требует от МК наличия скоростного SPI, так как для опроса восьми 16-битных АЦП на частоте 100 кГц нужен SPI с частотой работы не менее 8*16*0.1 МГц = 12.8 МГц. Преимущество этой схемы - малое потребление энергии, что для переносного прибора может быть решающим фактором. Вся эта схема из восьми АЦП потребляет от источника питания всего 8*0.7 mW = 5.6 mW мощности. Недостаток же схемы - высокая цена. Восемь таких АЦП стОят 8*$9.28 = $74.24, что почти в восемь раз дороже, чем один 14-битный ADS8528.

Изменено пользователем blackfin

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


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

А xmega128A1 вам не подойдёт?

У неё два АЦП с возможностью мерять по 4 канала параллельно - итого 8 параллельных каналов.

Можно подключить до 16МБ ОЗУ.

Да, не даром XMEGA пользуется такой популярностью. Так ведь ей можно закрыть сразу 8 АЦП и буфер для SDRAM! Скажем так АЦП пишет по DMA по очереди в 2 буфера ОЗУ, заполненный буфер обычным программным образом передается "большому брату" (ARM9). Если при этом ядро ничего больше делать не будет, должно наверно успеть.

 

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


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

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

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

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

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

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

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

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

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

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