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

как ускорить передачу данных SDRAM->SDRAM

Используется ADSP-BF561 EZ-KIT. Видео сигнал с помощью ADV7183 преобразуется в ITU и передается в SDRAM буфер , который перезаписывается по кругу. Для преобразования ITU в Yuv420 используется DMA с 2D буферами. Yuv буфер тоже находится в SDRAM и тоже перезаписывается по кругу. Тестирование дало следующие

1 если DMA ADV7183 -> Itu буфер остановлен, то преобразование одного кадра ITU -> Yuv420 выполняется приблизительно за 20 миллисекунд

2 если DMA ADV7183 -> Itu буфер работает, то преобразование одного кадра ITU -> Yuv420 выполняется приблизительно за 200 миллисекунд

Что нужно сделать, чтобы во втором случае преобразование ITU -> Yuv420 занимало бы примерно тоже время что и в первом? Возможно ли это?

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


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

Как у вас буфера в sdram-е размещены?

Очень похоже на то, что у вас все буфера свалены в один (внутренний) банк sdram.

Разнесите буфера так, чтобы к одному банку шли обращения только от одного источника/приемника.

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


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

Как у вас буфера в sdram-е размещены?

Очень похоже на то, что у вас все буфера свалены в один (внутренний) банк sdram.

Разнесите буфера так, чтобы к одному банку шли обращения только от одного источника/приемника.

 

 

В описанном варианте Itu и Yuv буферы находились в одно банке памяти MEM_SDRAM_BANK3. Если поместить Yuv буфер в другой банк, то время уменьшается до 82 мс. Тем не менее это все равно много, т.к. чтобы успевать обрабатывать каждый Itu фрейм время преобразования Itu в Yuv должно быть меньше 40 мс. Полностью выполнить вашу рекомендацию довольно сложно, т.к. Itu является одновременно приемником для данных от ADV7183 и источником для преобразования Itu в Yuv. Если буфер для ADV7183 находиться в одном банке, Itu буфер в другом, Yuv в третьем, то тогда Itu -> Yuv выполняется за 28 мс. Это время приемлемо, но требует довольно странного расределения буферов и организации их использования. Может есть вариант по проще?

 

В любом случае спасибо за подсказку.

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


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

Используется ADSP-BF561 EZ-KIT. Видео сигнал с помощью ADV7183 преобразуется в ITU и передается в SDRAM буфер , который перезаписывается по кругу. Для преобразования ITU в Yuv420 используется DMA с 2D буферами. Yuv буфер тоже находится в SDRAM и тоже перезаписывается по кругу.

Что нужно сделать, чтобы во втором случае преобразование ITU -> Yuv420 занимало бы примерно тоже время что и в первом? Возможно ли это?

 

А нельзя ли сделать так:

завести два буфера во _внутренней_ памяти на 6 строк (или сколько там надо для преобразования в YUV 4:2:0) каждый

дма кладет из данные из adv7183 в один из этих буферов, в это время процессор конвертит данные во втором буфере, (при этом он не лазит во внешнюю память).

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

 

у аналога вроде аппноут про это был.

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


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

А нельзя ли сделать так:

завести два буфера во _внутренней_ памяти на 6 строк (или сколько там надо для преобразования в YUV 4:2:0) каждый

дма кладет из данные из adv7183 в один из этих буферов, в это время процессор конвертит данные во втором буфере, (при этом он не лазит во внешнюю память).

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

 

у аналога вроде аппноут про это был.

 

Спасибо, попытаюсь найти аппноте.

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


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

SDRAM представляет собой "набор" строк по N байт.

По команде активации от контроллера с заданным адресом строка считывается в промежуточный буфер.

На это тратится 3-5 тактов частоты SDRAM. Зависит от микросхемы памяти.

Далее по каждому такту частоты производится чтение или запись из/в буфера.

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

Поэтому, потери времени максимальны, если Ваши данные лежат не в пределах одной строки или Вы одновременно запускаете несколько

процессов обмена с разными строками. У AD есть специальные статьи - толи в аппноутах, толи в ЕЕ.

Ищется по слову SDRAM

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


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

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

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

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

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

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

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

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

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

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