|
Вывод видео на монитор., Организация кадровых буферов |
|
|
|
Aug 11 2017, 11:45
|
Местный
  
Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194

|
Здравствуйте! Прошу совета. Задача следующая. Требуется вывести видеоизображение с КМОП матрицы на стандартный монитор. Проект реализую на Cyclone IV. На плате также имеется SRAM 2 MB и SDRAM 64 MB. Пиксельная частота камеры 2 МГц, пиксельная частота монитора 40 МГц. Разрешение кадра 800х600. Матрица выдает кадры друг за другом без остановки. Поскольку частоты не совпадают необходимо использовать кадровый буфер. Предполагаю два варианта:
1) организовать кадровый буфер в SRAM на два кадра. При этом считывать данные из матрицы сначала в FIFO1 затем в SRAM. Когда первый кадр будет записан в SRAM начать выводить первый кадр SRAM->FIFO2->Монитор, при этом записывать второй кадр.
При такой реализации возникают вопросы. Поскольку частоты разные, что делать, в случае, если первый кадр выведен на монитор, а второй кадр еще не считан? Шина адреса и шина данных у SRAM одни для записи и чтения, поэтому придется обеспечить корректное чередование записи и чтения? Как этого добиться?
2) организовать кадровый буфер на два кадра в разных микросхемах: в SRAM первый кадр, в SDRAM второй кадр. В этом случае шины адреса и шины данных раздельные и можно одновременно писать второй кадр в SDRAM и считывать первый из SRAM.
При такой реализации возникают такие вопросы. В случае если кадр на монитор выведен, а новый еще не считался, можно будет повторить вывод старого кадра, после чего вывести новый кадр. Но вот в чем проблема, матрица выдает кадры друг за другом без остановки, и если новый кадр не считался (не успел) точно к моменту, когда старый закончил выводиться на монитор, то будет постоянно выводиться старый кадр. Как добиться этой синхронности? или необходимо считывать кадры с матрицы не постоянно, а только по требованию? типа считал первый кадр, начинаешь выводить первый и считывать второй, выводишь первый кадр несколько раз, до тех пор, пока не считается второй, когда считался второй, начинаем выводить второй и писать третий и так по кругу.
Сообщение отредактировал LAS9891 - Aug 11 2017, 11:59
|
|
|
|
|
 |
Ответов
|
Aug 12 2017, 11:52
|
Местный
  
Группа: Свой
Сообщений: 284
Регистрация: 21-01-05
Пользователь №: 2 104

|
Тут важна кадровая частота матрицы. Вывод лучше сделать синхронным к частоте матрицы. Если кадровая частота матрицы кратна частоте монитора, тогда все прозаично - Для буферов чтения / записи используйте одну микросхему. Чтение / запись блоками, через фифо, по кадровому записи переключаете адреса буферов. Таки образом, пока пишется буфер по адресу 1, вы выводите N кадров из буфера 2. Можно реализовать интерполяцию кадров. В этом случае, у вас три буфера, и вы выводите сумму предыдущего и текущего кадра с разными весами. Если кадровые частоты не кратны - то у вас появится срез синхронизации, который будет проявляться при динамике. Это можно решить по аналогии с 3:2 pull down - https://en.wikipedia.org/wiki/Three-two_pull_down
|
|
|
|
|
Aug 14 2017, 08:51
|
Знающий
   
Группа: Участник
Сообщений: 518
Регистрация: 29-09-11
Пользователь №: 67 450

|
Цитата(Volkov @ Aug 12 2017, 15:52)  Для буферов чтения / записи используйте одну микросхему. Чтение / запись блоками, через фифо, по кадровому записи переключаете адреса буферов.
Таки образом, пока пишется буфер по адресу 1, вы выводите N кадров из буфера 2. Можно реализовать интерполяцию кадров. В этом случае, у вас три буфера, и вы выводите сумму предыдущего и текущего кадра с разными весами. В чем смысл двух буферов, если источник видео - камера, т.е. идет монотонная запись в буфер без всяких предварительных стираний, обработки и т.п., свойственных процессорной обработке? Что даст интерполяция кроме дополнительной задержки?
|
|
|
|
Сообщений в этой теме
LAS9891 Вывод видео на монитор. Aug 11 2017, 11:45 _pv организовать кадровый буфер на один кадр где угодн... Aug 11 2017, 12:18 LAS9891 Цитата(_pv @ Aug 11 2017, 16:18) и без до... Aug 11 2017, 13:07 Burenkov Sergey У альтеры есть такая кора - frame buffer, один из ... Aug 11 2017, 12:41 _pv если доступ к памяти быстрее 80МГц, значит в кажды... Aug 11 2017, 13:37 Burenkov Sergey У вас с матрицы идет 8 или 10 бит? И Bayer filter ... Aug 11 2017, 20:58 LAS9891 Цитата(Burenkov Sergey @ Aug 12 2017, 00... Aug 14 2017, 05:12  Burenkov Sergey [quote name='LAS9891' date='Aug 14 201... Aug 14 2017, 08:37  Volkov Цитата(novikovfb @ Aug 14 2017, 11:51) В ... Aug 14 2017, 09:21 LAS9891 Использую мегафункцию DCFIFO. Возник вопрос. Возмо... Aug 15 2017, 06:09 Flip-fl0p Цитата(LAS9891 @ Aug 15 2017, 09:09) Испо... Aug 15 2017, 06:10  Maverick Цитата(Flip-fl0p @ Aug 15 2017, 09:1... Aug 15 2017, 06:13   Flip-fl0p Цитата(Maverick @ Aug 15 2017, 09:13) Доп... Aug 15 2017, 06:25 andrewkrot https://od.lk/fl/NDVfMzU4NzA1Xw качаете здесь файл... Aug 15 2017, 07:43 Flip-fl0p ЦитатаЗдравствуйте! Прошу совета. Задача следу... Aug 15 2017, 08:20 _pv со статической памятью конечно всё гораздо проще, ... Aug 15 2017, 08:58
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|