реклама на сайте
подробности

 
 
> Вывод видео на монитор., Организация кадровых буферов
LAS9891
сообщение Aug 11 2017, 11:45
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Flip-fl0p
сообщение Aug 15 2017, 08:20
Сообщение #2


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата
Здравствуйте! Прошу совета. Задача следующая. Требуется вывести видеоизображение с КМОП матрицы на стандартный монитор. Проект реализую на Cyclone IV. На плате также имеется SRAM 2 MB и SDRAM 64 MB. Пиксельная частота камеры 2 МГц, пиксельная частота монитора 40 МГц. Разрешение кадра 800х600. Матрица выдает кадры друг за другом без остановки. Поскольку частоты не совпадают необходимо использовать кадровый буфер.

Я бы кадровый буфер организовал в SDRAM в разных банках. В один банк пишите. Из другого читаете, и их чередуете. Хотя можно и в одном банке. По одним адресам пишите, по другим читаете, и так-же чередовать их.
Читал и записывал в SDRAM через FIFO, чтобы можно было "отвлекаться" на чтение из памяти для записи новых данных. Т.е в одно FIFO пишу данные с камеры, потом из этого FIFO пишу в SDRAM. А в другое FIFO читаю данные из SDRAM и из него вывожу данные на монитор. Всем этим делом бы управлял простенький автомат, который следил за наполнением\опустошением FIFO буферов и переключался на чтение или запись, в зависимости о того в каком состоянии находиться тот или иной буфер. Тут главный критерий, организовать чтение запись так, чтобы данные не успели деградировать. Иначе придётся вводить регенерацию памяти.
Кадр менял бы тогда, когда идет обратный ход луча (если в старой терминологии), т.е когда мы полностью отрисовали предыдущий кадр.
Посмотрите ещё размер ячейки памяти, влезут ли в неё все биты цвета.
Как мне кажется самая сложная задача здесь - написать SDRAM контроллер. Ну или взять готовый...

Сообщение отредактировал Flip-fl0p - Aug 15 2017, 08:52
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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   Тут важна кадровая частота матрицы. Вывод лучше сд...   Aug 12 2017, 11:52
|- - novikovfb   Цитата(Volkov @ Aug 12 2017, 15:52) Для б...   Aug 14 2017, 08:51
|- - 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
- - _pv   со статической памятью конечно всё гораздо проще, ...   Aug 15 2017, 08:58


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016