|
Обработка видео |
|
|
|
Sep 2 2016, 06:25
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Стоит задача: В области электронной микроскопии реализовать формирование строчной и кадровой развертки для системы отклонения и обработку видеосигнала с максимальными параметрами 1024х1024 50Гц. Предыдущий вариант системы работал с максимальным разрешением 480х480 10Гц и был реализован на STM32F437. Развертки были сделаны на внешних ЦАП (SPI). Оцифровка изображения на встроенном АЦП в dual mode (примерно 2,5 мегасемпла). Видеобуфер во внешней памяти и на комп данные предавались без предварительной обработки через Ethernet на комп, где и отображалась картинка. Так как практически всё делалось через DMA, то в контроллере оставалась ещё уйма свободного времени для фоновых задач. Но по новому ТЗ скорость обработки надо увеличить в 20 раз, что нереально в такой конфигурации. Пока на ум приходит только следующее: 1. С помощью видеокарты с аналоговым выходом и поддерживающей HD качество формирую пилообразные развертки (сигналами цветности) и синхроимпульсы. 2. Развертки через усилители подаются на систему отклонения, а синхроимпульсы подмешиваются к сигналу с датчика изображения (яркости). 3. Сформированный видеосигнал подается на плату видеозахвата, поддерживающую соответствующее качество. В теории должно сработать. Вопрос: может быть есть специализированные контроллеры, девайсы, которым по зубам эта задача? Или может есть совсем другое решение, до которого я не смог додуматься?
|
|
|
|
|
 |
Ответов
|
Sep 3 2016, 05:46
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Даже не понижая требований посчитаем: 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 и они могут работать не мешая друг другу.
|
|
|
|
Сообщений в этой теме
amiller Обработка видео Sep 2 2016, 06:25 1113 сигнал для системы отклонения должен быть какой-то... Sep 2 2016, 06:39 DASM Ничего не понял.. ТЗ непонятно. А так да, СТМ в ви... Sep 2 2016, 06:41 amiller Цитата(DASM @ Sep 2 2016, 10:41) Ничего н... Sep 2 2016, 07:40 scifi Есть такой МК - LPC4370. У него есть АЦП на 80 MSP... Sep 2 2016, 07:57 _pv http://redpitaya.com/
гигабитного езернета хватит ... Sep 2 2016, 08:35 jcxz Может быть через интерфейс EMC или через SGPIO LPC... Sep 2 2016, 09:02  _pv Цитата(jcxz @ Sep 2 2016, 16:02) Тогда ес... Sep 2 2016, 10:26   scifi Цитата(_pv @ Sep 2 2016, 13:26) Если 8 би... Sep 2 2016, 10:29 KnightIgor Цитата(amiller @ Sep 2 2016, 07:25) Стоит... Sep 2 2016, 10:33 _pv Цитата(KnightIgor @ Sep 2 2016, 17:33) Sm... Sep 2 2016, 12:29 ivan2006 Цитата(amiller @ Sep 2 2016, 09:25) Стоит... Sep 2 2016, 15:33 amiller Цитата(ivan2006 @ Sep 2 2016, 19:33) Попр... Sep 2 2016, 16:15 _pv ЦитатаПока самым перспективным вижу использование ... Sep 2 2016, 16:39 _pv Цитатасогласовать EMC-интерфейс LPC с шиной FT601 ... Sep 3 2016, 09:56 amiller Цитата(_pv @ Sep 3 2016, 13:56) ТС присма... Sep 3 2016, 11:24  mantech Цитата(amiller @ Sep 3 2016, 14:24) redpi... Sep 3 2016, 15:28   _pv Цитата(mantech @ Sep 3 2016, 22:28) Цена ... Sep 3 2016, 16:16 jcxz Цитата(_pv @ Sep 3 2016, 15:56) и ещё при... Sep 4 2016, 04:19
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|