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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Синхронизация вывода видео на VGA монитор, Как синхронизировать отмасштабированное видео c VGA монитором
_4afc_
сообщение Aug 21 2018, 09:07
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(Flip-fl0p @ Aug 21 2018, 12:01) *
Но ведь кадровые синхроимпульсы формируются на разных частотах, и частота кадров реально будет разная.
Например при разрешении 640x480 частота кадров 16.683217477656 ms.
А вот на разрешении 800х600 частота кадров уже 16.5792 ms.


Нет. Частота кадров у вас будет та же как пришла 60Гц или 59,94Гц. Иначе вам придётся кадры иногда пропускать или дублировать.

И частота строк у вас будет пропорциональна входной с учётом полей.

Если полученный сигнал не возьмёт дисплей - значит входной до ресайза - кривой.


Цитата(ikm @ Aug 21 2018, 13:02) *
Хм, напрямую к VGA монитору? Тогда у вас на экране будет изображение размером 640х480, но разрешением 1600х1200, остальное черный экран. Если конечно контроллер сможет правильно воспринять, что вы на него подаете. А ТС нужно именно "размытие" кадра 640х480 на весь монитор


не будет. потому что пока строчная равна нулю - данные не выводятся.
Go to the top of the page
 
+Quote Post
prostoRoman
сообщение Aug 21 2018, 09:14
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 28-06-11
Пользователь №: 65 930



Цитата(Flip-fl0p @ Aug 21 2018, 11:01) *
Мне стыдно признаться, но даже сейчас я не совсем Вас понимаю 05.gif . Возможно связано с тем, что я сам себя своими рассуждениями загнал в тупик и не вижу способа из него выбраться......


Ещё раз посоветую Вам произвести декомозицию проблемы, сделайте и отладьте простые вещи.

Если ресурсы позволяют:

1. Сделайте генератор видео из фреймбуфера. (то, что у Вас на схеме VGA_SYNC_GEN + кусок ОЗУ с картинкой)

2. Сделайте и отладьте свой скайлер.

3. В тупую соедините это дело и посмотрите что Вас не устраивает.

4. Итеративно добавляйте функционал: двойную/тройную буферизацию, синхронизацию и т.д.

И не пытайтесь синхронизировать заведомо не синхронные вещи. Ваш входной поток (пиксельрейт) в общем случае не только будет не иметь константного коэффициента с выходным, но и будет плавать во времени и т.д.

Go to the top of the page
 
+Quote Post
_4afc_
сообщение Aug 21 2018, 09:24
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(Flip-fl0p @ Aug 20 2018, 16:11) *
А в моем случае есть ЖК матрица, тайминги которой соответствуют VESA. И понимает она только одно разрешение: 1024х768 60 Hz.
Так вот я сейчас тестирую scaler на обычном VGA мониторе.


Вот зачем? Почему сразу не на ЖК матрице 1024х768?

Она по своему может интерпретировать кадровую и строчную.
По своему определять наличие синхронизации.
По своему реагировать на иголки на пиксельклоке...

Может задача проще, чем то как вы её решаете...
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 21 2018, 09:32
Сообщение #19


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

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



Цитата(prostoRoman @ Aug 21 2018, 12:14) *
Ещё раз посоветую Вам произвести декомозицию проблемы, сделайте и отладьте простые вещи.

Если ресурсы позволяют:

1. Сделайте генератор видео из фреймбуфера. (то, что у Вас на схеме VGA_SYNC_GEN + кусок ОЗУ с картинкой)

2. Сделайте и отладьте свой скайлер.

3. В тупую соедините это дело и посмотрите что Вас не устраивает.

4. Итеративно добавляйте функционал: двойную/тройную буферизацию, синхронизацию и т.д.

И не пытайтесь синхронизировать заведомо не синхронные вещи. Ваш входной поток (пиксельрейт) в общем случае не только будет не иметь константного коэффициента с выходным, но и будет плавать во времени и т.д.

Так с видео буфером не интересно rolleyes.gif. Шутка...
С внешним буфером на SDRAM сделать это вообще не проблема, благо есть нормальный самописный контроллер., но мне ресурсы SDRAM нужны, для реализации режима PIP (картинка в картинке), поскольку планируется вывод изображения на матрицу с двух независимых источников DVI видеосигнала Хотя память работает на частоте 144 Мгц - то может на определённом соотношении выходных разрешений после скалеров её и будет хватать, надо эту мысль подумать.
Во всяком случае IP ядра Altera (но они гады платные) делают все то, что я хочу без внешних буферов. А раз делают они, значит и я смогу, надо просто разобраться с алгоритмом. Сейчас некоторые мысли появились после слов:
Цитата
А я считаю, что
1. Back porch 48 pixel - может быть хоть 148
2. Back porch 33 lines - может быть хоть 133
3. pixel_clk не 25.175 MHz, а 25 175 000 импульсов в секунду, с довольно свободной скважностью.

Надо попробовать и потестировать...
Go to the top of the page
 
+Quote Post
Plain
сообщение Aug 21 2018, 09:59
Сообщение #20


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Цитата(Flip-fl0p @ Aug 21 2018, 11:01) *
покажу структуру проекта

Итого, никакой синхронизации нет вообще, тогда как тема именно о ней.

Для работы с вышеописанными минимального размера буферами Вам надо синхронизировать начала видимых областей, т.е. сбрасывать автомат по этому событию на входе.
Go to the top of the page
 
+Quote Post
Sergey_Bekrenyov
сообщение Aug 21 2018, 19:39
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 14-12-10
Из: Королёв
Пользователь №: 61 599



По-моему, у TC в голове все смешалось. Scaler только масштабирует, согласовывать частоты кадров - не его задача

https://www.intel.com/content/dam/altera-ww...e/ug/ug_vip.pdf

"The Scaler II IP core resizes video streams, and supports nearest neighbor, bilinear, bicubic and polyphase (with or without simple edge adaptation) scaling algorithms."

"The locked frame rate conversion allows the Frame Buffer II IP core to synchronize the input and output frame rates through an Avalon-MM slave interface. "
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 22 2018, 03:51
Сообщение #22


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

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



Цитата(Sergey_Bekrenyov @ Aug 21 2018, 22:39) *
По-моему, у TC в голове все смешалось. Scaler только масштабирует, согласовывать частоты кадров - не его задача

Ну так это понятно что скалер только масштабирует. Если Вы посмотрите мою блок-схему, то увидите, что у меня там есть блок со знаком вопроса, который и должен заниматься синхронизацией...
Да я вроде нигде не писал что требую этого именно от Scaler. Он занимается только преобразованием разрешения, и выдает сигналы начала кадра, конец кадра, начала строки, конец строки и строб валидности данных...
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 22 2018, 07:45
Сообщение #23


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

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



Итак господа, провел вчера весь вечер за эксперементами. В качестве эксперемента был применен обычный синхрогенератор и генератор цветных полос. Выводы таковы:
Цитата(_4afc_ @ Aug 21 2018, 12:07) *
1. Back porch 48 pixel - может быть хоть 148
2. Back porch 33 lines - может быть хоть 133
3. pixel_clk не 25.175 MHz, а 25 175 000 импульсов в секунду, с довольно свободной скважностью.

Данное утвержение мной не совсем подтвердилось. Собственно произошло ровно то, о чем я говорил : изменение любого из параметров Back porch в небольших пределах приводит к тому что изображение смещается. Если же изменять это значение в больших пределах - то матрица не определяет синхронизациию и изображение не выводится вообще...
Но ! Если изменить соотношение Back porch и Front porch таким образом, чтобы суммарная длина строки оставалась одинаковой (для разрешения 640 x 480 длина линии равна 800 pix) - то изображение нормальное т.е. если мы увеличили значение Back porch на 50 то должны и уменьшить Front porch на 50. В случае если длина строки изменяется: Back porch увеличили на 50 а Front porch не трогали - требуется пререрасчет частоты и в этом случа мы фактиески получаем новое разрешение, которое совместимо с большинством VGA мониторов.
Думаю, можно попробовать применить данный способ в качестве синхронизации с источником. Но надо проверять на живой матрице, поймет ли она тайминги, не совпадающие с теми, что указаны в datasheet на неё. Похоже на очень и очень грязный хак. Но может и сработает !
Цитата(_4afc_ @ Aug 21 2018, 12:07) *
у меня покупной видеодатчик, когда из 1600х1200 делает 640х480 выдаёт 4 строчных синхры - потом пропуск. Его что тоже никуда не подключишь?

А можно узнать параметры выходных синхросигналов которые выдает датчик:
Какая частота pixel_clk
Каковы параметры Back porch, Front porch, sync pulse, полярность импульсов ?
Неужто он выдает 4 строчки с параметрами VESA 640х480, затем делает пропуск в одну строчку. затем опять выдает 4 строчки ? И все это делает с частотой pixel_clk разрешения 1600х1200 ?

Цитата(_4afc_ @ Aug 21 2018, 12:07) *
Почему сразу не на ЖК матрице 1024х768?

А у меня матрица такова, что она работает в точности как монитор. Пока не подашь на неё правильные тайминги - фиг вам, а не работа.

Цитата(Plain @ Aug 21 2018, 12:59) *
Итого, никакой синхронизации нет вообще, тогда как тема именно о ней.

Тема была о том, как сделать такую синхронизацию...

Цитата(Plain @ Aug 21 2018, 12:59) *
Для работы с вышеописанными минимального размера буферами Вам надо синхронизировать начала видимых областей, т.е. сбрасывать автомат по этому событию на входе.

А не будет так работать, поскольку формируя сигнал сброса по началу данных от источника - мы фактически искажаем периоды front_porch нашего выходного сигнала со всеми вытекающими последствиями в виде сдвига изображения. И пока мы передаем сигнал из домена source_data в домен Vga_sync_gen для формирования сброса - мы натыкаемся на 1 такт нестабильности - что приводит к неравномерному периоду front_porch - что приводит к дерганию изображения и сильнейшему искажению. Если интересно могу фотографию сделать, ибо этот вариант я сразу попытался применить.

Как мне кажется без буфферизации кадров во внешнем буффере не обойтись. Хотя как в IP ядрах Altera без внешнего буффера работает - пока загадка. Проведу ещё пару экспериментов и скорее всего начну делать двойную или тройную буфферизацию.
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение Aug 22 2018, 08:33
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



Ну я же скинул ссылку на проект рабочий от Альтеры. Там и фрейм-буферы и масштабаторы!


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 22 2018, 09:02
Сообщение #25


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

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



Цитата(warrior-2001 @ Aug 22 2018, 11:33) *
Ну я же скинул ссылку на проект рабочий от Альтеры. Там и фрейм-буферы и масштабаторы!


Просто мне очень хочется разобраться как Altera сделала синхронизацию без применения внешнего буфера !
Я специально создал в Qsys проект где есть генератор тестовых сигналов 800х600 и скалер, который понижает до 640х480... И ведь работает гад без всяких внешних буферов !
А за ссылочку спасибо изучаю её beer.gif !
Go to the top of the page
 
+Quote Post
Plain
сообщение Aug 22 2018, 18:17
Сообщение #26


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Цитата(Flip-fl0p @ Aug 22 2018, 10:45) *
Тема была о том, как сделать такую синхронизацию

На вход подано неизвестных размеров изображение, следовательно:

1) измерить его размеры, для чего посчитать в его CLK длину его DE и количество DE за интервал его VS;

2) на основе этих данных пересчитать коэффициенты интерполятора и задать длину всех буферов;

3) измерить интервал от VS до DE и посчитать требуемую положительную или отрицательную задержку для получения в требуемый, т.е. с учётом задержки на FIFO, момент аналогичных выходных сигналов;

4) по очередному входному VS зафиксировать собранные данные в качестве новых настроек выходного автомата и начать выдачу им сигналов;

5) продолжать измерять всё вышеперечисленное.
Go to the top of the page
 
+Quote Post
Sergey_Bekrenyov
сообщение Aug 23 2018, 13:45
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 14-12-10
Из: Королёв
Пользователь №: 61 599



Цитата(Flip-fl0p @ Aug 22 2018, 06:51) *
.. от Scaler. Он занимается только преобразованием разрешения, и выдает сигналы начала кадра, конец кадра, начала строки, конец строки и строб валидности данных...

Scaler получается генерирует синхронизацию, а не только масштабирует?

Ваш генератор синхросигналов для монитора должен быть мастером и забирать данные из буфера. Как сказал Warrior-2001, 3 (или больше) буффера позволят дропать или повторять кадры. На частоте 60 Гц человек это не почувствует.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 23 2018, 15:33
Сообщение #28


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

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



Цитата(Sergey_Bekrenyov @ Aug 23 2018, 16:45) *
Scaler получается генерирует синхронизацию, а не только масштабирует?

Ваш генератор синхросигналов для монитора должен быть мастером и забирать данные из буфера. Как сказал Warrior-2001, 3 (или больше) буффера позволят дропать или повторять кадры. На частоте 60 Гц человек это не почувствует.

Там немного не так.
Есть у них модуль scaler - который масштабирует.
Есть модуль clocked_video_output который генерирует синхросигналы, но к сожалению его исходнтки закрыты.
Сейчас собственно пишу тройную буфферизацию, которая будет либо повторять кадры, либо пропускать.
Go to the top of the page
 
+Quote Post
Sergey_Bekrenyov
сообщение Aug 23 2018, 18:52
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 14-12-10
Из: Королёв
Пользователь №: 61 599



Цитата(Flip-fl0p @ Aug 23 2018, 18:33) *
Там немного не так.
Есть у них модуль scaler - который масштабирует.
Есть модуль clocked_video_output который генерирует синхросигналы, но к сожалению его исходнтки закрыты.
Сейчас собственно пишу тройную буфферизацию, которая будет либо повторять кадры, либо пропускать.


Вы же писали в ветку с декриптованными, там и vip есть https://electronix.ru/forum/index.php?act=a...t&id=113329
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 23 2018, 19:07
Сообщение #30


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

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



Цитата(Sergey_Bekrenyov @ Aug 23 2018, 21:52) *
Вы же писали в ветку с декриптованными, там и vip есть https://electronix.ru/forum/index.php?act=a...t&id=113329

Да я как-то там не нашел такого модуля как clocked_video_output...
Может в 16 Quartus он по-другому уже называется. Завтра попробую скачать и посмотреть там

Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 17th June 2025 - 10:26
Рейтинг@Mail.ru


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