Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обработка видео
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
amiller
Стоит задача:
В области электронной микроскопии реализовать формирование строчной и кадровой развертки для системы отклонения и обработку видеосигнала с максимальными параметрами 1024х1024 50Гц.
Предыдущий вариант системы работал с максимальным разрешением 480х480 10Гц и был реализован на STM32F437.
Развертки были сделаны на внешних ЦАП (SPI). Оцифровка изображения на встроенном АЦП в dual mode (примерно 2,5 мегасемпла).
Видеобуфер во внешней памяти и на комп данные предавались без предварительной обработки через Ethernet на комп, где и отображалась картинка.
Так как практически всё делалось через DMA, то в контроллере оставалась ещё уйма свободного времени для фоновых задач.
Но по новому ТЗ скорость обработки надо увеличить в 20 раз, что нереально в такой конфигурации.
Пока на ум приходит только следующее:
1. С помощью видеокарты с аналоговым выходом и поддерживающей HD качество формирую пилообразные развертки (сигналами цветности) и синхроимпульсы.
2. Развертки через усилители подаются на систему отклонения, а синхроимпульсы подмешиваются к сигналу с датчика изображения (яркости).
3. Сформированный видеосигнал подается на плату видеозахвата, поддерживающую соответствующее качество.
В теории должно сработать.
Вопрос: может быть есть специализированные контроллеры, девайсы, которым по зубам эта задача?
Или может есть совсем другое решение, до которого я не смог додуматься?
1113
сигнал для системы отклонения должен быть какой-то сложной формы?
DASM
Ничего не понял.. ТЗ непонятно. А так да, СТМ в видео делать нечего, есть спецпроцы, та же серия DaVinchi у TI. Хотя то, что вы описали - тут наверное все проще, ибо никакой "обработки" вообще не узрел
amiller
Цитата(DASM @ Sep 2 2016, 10:41) *
Ничего не понял.. ТЗ непонятно. А так да, СТМ в видео делать нечего, есть спецпроцы, та же серия DaVinchi у TI. Хотя то, что вы описали - тут наверное все проще, ибо никакой "обработки" вообще не узрел

С одной стороны просто, так как на нижнем уровне обработка не предполагается, а вынесена на верхний уровень.
С другой стороны нужно оцифровать аналоговый сигнал и передать на комп изображение в 1 млн. пикселов с частотой 50Гц.
По принципу действия:
Есть отклоняющая система для электронного луча, которая формирует растр. Луч сканирует образец. Строчная и кадровая развертка представляют собой пилообразные сигналы.
Датчик улавливает отраженные электроны. Выходное напряжение датчика пропорционально профилю поверхности образца.
Далее полученное изображение нужно отобразить на экране монитора и записать на носитель.
Если это всё можно сделать на МК, то буду рад, если предложите варианты.
Пока я увидел только один вариант, который описал ранее.
Из обработки предполагается реализация: изменение контрастности и яркости, фильтрация с целью шумоподавления.
scifi
Есть такой МК - LPC4370. У него есть АЦП на 80 MSPS. Правда, прокачать столько данных в компьютер в реальном времени - это что-то запредельное. Скажем, Ethernet не дотягивает в разы.
А развёртку наверняка можно сделать аналоговым образом под управлением МК: запуск, коррекция скорости нарастания и т.д.
_pv
http://redpitaya.com/
гигабитного езернета хватит чтобы 50МГц х 14бит прокачать

можно конечно для развёртки VGA выход использовать, а данные видеограббером захвватывать или c какого-нибудь АЦП с параллельным выходом в ПК завести через USB3 (FT601Q), но думаю не дешевле и не проще это в результате получится чем готовая плата за 200$.
jcxz
Может быть через интерфейс EMC или через SGPIO LPC4370 получится подключить FT601Q - надо внимательнее изучить сигналы.
Тогда есть шанс реализовать на связке LPC4370+FT601Q.
_pv
Цитата(jcxz @ Sep 2 2016, 16:02) *
Тогда есть шанс реализовать на связке LPC4370+FT601Q.

а смысл?
4370 конечно по отношению цена/качество самый лучший АЦП, отдельных АЦП 12бит*80Мспс за 6$ пожалуй вообще не найти.
но ТСу одно устройство надо, из готового LPCLink2 с 4370, параллельную шину для подключения FT601Q не вытащить, а делать плату для LPC4370 в БГА - проще найти что-нибудь готовое и более подходящее. та же redpitaya полностью перекрывает все его потребности по железу.

Можно попробовать немного поджать картинку (так как памяти у LPCLink2 тоже нет - то построчно и на лету, но на это уже у него не хватит силёнок так как только 4 такта на отсчёт получается) или немного пожертвовать разрешением.
Если 8 бит хватит, то данных там 50МБ/сек, надо лишь до 35-40 ужать чтобы чтобы в USB2 пролезла, и обойтись тогда только готовым LPCLink2 в качестве видеограббера.
scifi
Цитата(_pv @ Sep 2 2016, 13:26) *
Если 8 бит хватит, то данных там 50МБ/сек, надо лишь до 35-40 ужать чтобы чтобы в USB2 пролезла, и обойтись тогда только готовым LPCLink2 в качестве видеограббера.

Или частоту кадров немного снизить laughing.gif
KnightIgor
Цитата(amiller @ Sep 2 2016, 07:25) *
Стоит задача:

SmartFusionX FPGA?
_pv
Цитата(KnightIgor @ Sep 2 2016, 17:33) *
SmartFusionX FPGA?

там же АЦП никакой.
ну и основная проблема это как бы попрооще внутрь ПК 50-100МБ/сек протащить.
ivan2006
Цитата(amiller @ Sep 2 2016, 09:25) *
Стоит задача:
В области электронной микроскопии реализовать формирование строчной и кадровой развертки для системы отклонения и обработку видеосигнала с максимальными параметрами 1024х1024 50Гц.
Предыдущий вариант системы работал с максимальным разрешением 480х480 10Гц и был реализован на STM32F437.


Попробуйте подойти к вопросу с другой стороны. Не существует электронных микроскопов, которые давали бы честные 1024х1024 50 Гц. Дело вовсе не в АЦП, а в электромагнитной системе отклонения -- физической особенности прибора. На таких больших частотах (50k строк в сек.) будут просто огромные искажения левой половины изображения, такие, что высокое разрешение совсем не актуально. Там лишь бы что-нибудь разглядеть. Даже на современных приборах требование 256x256 50Гц было бы с небольшим запасом. В вашем случае, как ориентир, я бы брал 100нс/пиксель. Т.е. менее 10 Мбайт/с на максимальной скорости.

Те микроскопы, что всё-таки позволяют работать на больших скоростях развёртки применяются для нанолитографии и стоят просто космических денег.
Наверное заказчику требуется отдельно режим высокого разрешения (1024х1024 или даже болшьше) и отдельно режим высокой скорости обновления (256x256 до 30 Гц, дальше только если с усреднением по строчкам).
Если заказчик понимает о чём речь, то думаю, что вы сможете скорректировать ТЗ. В таком случае вы сможете использовать старое решение с небольшими изменениями. Например перейти на STM32F7 c 32-бит SDRAM и немного разогнать встроенный АЦП.

Для формирования сигнала отклонения также не обязательно использовать высокоскоростные ЦАП. Можно просто пропустить выходной сигнал через ФНЧ, а при захвате строки отбросить первые 1-5% её части. Потребуется настройка задержки для каждой скорости развёртки, но такая настройка есть во всех подобных устройствах, и связано это, опять же, с быстродействием электромагнитной системы и детектора электронов. Используя медленный ЦАП вы экономите ресурсы DMA, оставляя весь канал под АЦП-Ethernet.

На счёт обработки - яркость/контраст лучше делать аналоговым спососбом, штатными средствами прибора. А вот кроме фильтрации может быть очень полезно получение из прибора значения увеличения (масштабной метки).
amiller
Цитата(ivan2006 @ Sep 2 2016, 19:33) *
Попробуйте подойти к вопросу с другой стороны. Не существует электронных микроскопов, которые давали бы честные 1024х1024 50 Гц.

У нас не совсем микроскоп, хотя принцип работы тот же.
Я допускаю, что заказчик не совсем понимает, что ему нужно, но стоит на своем.
И у меня два пути:
1. На имеющемся железе реализовать примерно 256х256 50Гц, а недостающие пикселы нарисовать. Это я всегда успею сделать.
2. 2 вариант - попытаться обеспечить честное разрешение.
Пока самым перспективным вижу использование платы видеозахвата. Так как изделие эксклюзивное, то цена не особо беспокоит.
То что касается разверток, то пока провел эксперименты с видеокартой.
С синхроимпульсами всё в порядке. Строчная развертка тоже выглядит отлично, красивая пила. Правда в сигнале присутствуют импульсы гашения во время обратного хода луча, но для строчной развертки это скорее даже плюс.
А вот то что в кадровой развертке присутствуют импульсы гашения, это скорее минус. Маловероятно, что простыми способами удастся как то управлять длительностью или амплитудой этих импульсов.
Но тем не менее что-то получилось, можно пробовать дальше. Если не прокатит, то уж 50кГц пилу не так сложно сделать и на контроллере. В крайнем случае уменьшить количество пикселов а потом подфильтровать.
То что касается системы отклонения, то проблема решаемая. Сейчас обеспечивается пилообразный ток вполне приличного качества на частоте 5кГц (с 10% обратным ходом).
И понятен путь, как разогнать отклонялку до 50кГц.
По аналоговой части видеоусилителя тоже всё достижимо.
_pv
Цитата
Пока самым перспективным вижу использование платы видеозахвата. Так как изделие эксклюзивное, то цена не особо беспокоит.

с нестандартным разрешением/частотой кадров грабли могут возникнуть.

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

Alex11
Платы видеозахвата в большинстве своем работают на стандартном PAL сигнале. Все остальное, как правило, туда не засунуть. Я бы порекомендовал сделать гигабитный ethernet на FPGA, передача по UDP, АЦП отдельно. Будет наиболее дешево и просто. Это если не жатое видео передавать в PC. Если нужно сжатие - то только нормальный процессор с видеоускорителем. TI - один из лучшух вариантов, т.к. имеет открытую документацию.
jcxz
Даже не понижая требований посчитаем:
1024*1024*50*2 = 104857600 B/sec - требуемая скорость передачи в комп.
Если для передачи в комп возьмём FT601 - за такт в её FIFO можно загружать 32бита. Получаем: 104857600/4 = 26214400 слов/сек.
Поделим макс. тактовую ядра на полученную скорость потока: 204000000/26214400 = ~7.78 такта/слово.
Маловато конечно, но! Например SGPIO-периферия LPC4370 работает на частоте ядра (SGPIO_CLOCK), но макс. частота сдвига битов по даташиту: "Note that the input frequency should be less than half of the
SGPIO_CLOCK frequency". А это много меньше чем 7.78такта. И SGPIO допускает внешнее тактирование, что (как я понимаю) совместимо с протоколом "245 Synchronous FIFO" FT601.
АЦП LPC4370 имеет FIFO глубиной 16 слов и умеет упаковывать свой выходной поток в 32-битные слова. Соответственно: из АЦП получаем поток 26214400 слов/сек.
Также DMA-контроллер в этом LPC имеет 2 BusMaster-интерфейса, что позволяет ему (вроде как) одновременно читать/писать периферию и писать/читать память за один такт (например: один BusMaster читает следующее слово из периферии, другой - в это же время пишет предыдущее слово в ОЗУ).
Так что думаю вполне возможно организовать работу так, что: пакетными DMA-пересылками заполняем один 4К-буфер в ОЗУ из FIFO АЦП. В это время другой 4К-буфер пересылается через SGPIO в FT601 (SGPIO тоже имеет FIFO) также пакетными DMA-транзакциями.
Можно даже попробовать гнать исходящий поток в FT601 через обычный GPIO в фоновой задаче без DMA. Надо внимательнее изучить даташиты.
Либо может ещё лучше - согласовать EMC-интерфейс LPC с шиной FT601 - это был-бы самый оптимальный вариант.
А если немного снизить требования по кадровой частоте например до ~39fps, то получим уже: 1024*1024*39*2/4 = 20447232 слов/сек, т.е. примерно ~10 тактов/слово - думаю такой поток уже вполне реально вывести из LPC4370 через GPIO или SGPIO или EMC.
Так что можно построить систему ТС-а так же как и в его предыдущей версии: на одном МК, только заменив его. И не надо забывать что LPC4370 имеет 3 ядра, пока одно ядро гонит поток из АЦП наружу (или управляет DMA, делающее это), другое ядро может рулить внешниим ЦАП-ами.
Ещё вариант ускорения: так как SGPIO и АЦП имеют собственные FIFO, то может вообще получится гнать поток напрямую АЦП->SGPIO минуя ОЗУ. А может это даже лучше делать не через DMA, а одному из ядер, благо их 3 и они могут работать не мешая друг другу.
_pv
Цитата
согласовать EMC-интерфейс LPC с шиной FT601 - это был-бы самый оптимальный вариант.
А если немного снизить требования по кадровой частоте например до ~39fps, то получим уже: 1024*1024*39*2/4 = 20447232 слов/сек


ТС присматривался к видеограбберу значит 8 бит ему похоже достаточно (можно даже логарифмирование сделать из 12 в 8, а не просто отбросить младшие разряды), и если уж понижать fps до 39 то тогда эти 39МБайт/c можно и через USB2 попробовать пропихнуть, без ухищрений с usb3. и для этого взять готовую плату lpclink2 за 20$.

и ещё придётся делать свою плату под это, ради единственного устройства, а корпуса у lpc4370 не самые приятные, особенно если 32х разрядные шины из него вытаскивать, а не просто входы АЦП и USB.
и вот тут я вообще никакой радости по сравнению с готовой redpitaya не вижу.
amiller
Цитата(_pv @ Sep 3 2016, 13:56) *
ТС присматривался к видеограбберу значит 8 бит ему похоже достаточно (можно даже логарифмирование сделать из 12 в 8, а не просто отбросить младшие разряды), и если уж понижать fps до 39 то тогда эти 39МБайт/c можно и через USB2 попробовать пропихнуть, без ухищрений с usb3. и для этого взять готовую плату lpclink2 за 20$.

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

Действительно пока я считаю, что 8бит (256 градаций серого) в изображении достаточно. По крайней мере предыдущее устройство работало именно в таком режиме.
Если сравнивать:
lpc4370 - с одной стороны уже опробованный способ реализации. С другой стороны всё на грани фола и без запаса. Кроме того значительную часть времени придётся потратить на проектирование железа без гарантии успеха.
redpitaya - приятно удивила по параметрам. Как то мимо меня прошла. Присмотрюсь повнимательнее. По возможностям похоже то, что доктор прописал. Насколько быстро удастся её освоить...
mantech
Цитата(amiller @ Sep 3 2016, 14:24) *
redpitaya - приятно удивила по параметрам. Как то мимо меня прошла. Присмотрюсь повнимательнее. По возможностям похоже то, что доктор прописал. Насколько быстро удастся её освоить...


Интересная плата, если есть навыки "низкоуровневого" линуксового программирования, то освоите недолго, если нет - где-то видел SDK на цинк, можно попробовать и standalone... Цена маузера "приятно" удивила - 500 вечнозеленых!
_pv
Цитата(mantech @ Sep 3 2016, 22:28) *
Цена маузера "приятно" удивила - 500 вечнозеленых!

да не, сама плата ~200-250,
http://de.rs-online.com/web/p/digitalspeic...oskope/9010302/
http://eu.mouser.com/ProductDetail/Red-Pit...EuLc%2f%252bFg=
там еще какие-то наборы есть с источниками питания, корпусом и пробниками вот они каких-то безумных денег стоят
jcxz
Цитата(_pv @ Sep 3 2016, 15:56) *
и ещё придётся делать свою плату под это, ради единственного устройства, а корпуса у lpc4370 не самые приятные, особенно если 32х разрядные шины из него вытаскивать, а не просто входы АЦП и USB.

Где-то на алиэкспрессе видел отладочную плату на LPC4370 нормальную - с кучей пинов выведенных на обычные штыри вокруг МК. И корпус вроде даже BGA256.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.