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

 
 
> Как сделать в FPGA свой SCALER, Вопрос для тех кто работает с видео
Pahuchy
сообщение Apr 13 2005, 10:57
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 30-03-05
Из: Одесса
Пользователь №: 3 796



Задача: есть входной сигнал RGB 24бита . Формат сигнала может быть различным 640х480, 800x600 и т.п.(вообщем VESA) надо сделать так что бы на выходе формат не зависил от входа т.е. вход 640х480 выход 1280x1024
или вход 1280х1024 выход 800х600. Т.е. понятно что сигнал оцифровуется попадает в FPGA(я использую альтеру) и выходит на ЦАП. В альтере надо сделать Upscaler и Downscaler . Так вот вопрос как это сделать. Любые ссылки , теориии , примеры приветствуются.

PS. Раньше уже делал подобную вещь но использовал готовый scaler от Philips SAA6713. Теперь scaler надо засунуть в альтеру а на входе будет простой 3хАЦП.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Foxx
сообщение May 5 2005, 17:35
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 5-05-05
Пользователь №: 4 760



Проблема не так проста, как может показаться поначалу. Обычно такие устройства масштабируют картинку в два прохода - сначала по горизонтали, потом по вертикали, используя FIR-фильтры. Здесь нужно обращаться к общей теории ЦОС. Нужно понимать, что помимо реализации самих фильтров, понадобится также и некое количество памяти, объем которой будет зависеть от длины фильтров (для вертикального масштабирования нужно хранить в памяти несколько строк изображения). Бывают и однопроходные масштабаторы, например, Raytheon (нынешний Fairchild) выпускал в 90-х TMC2255, TMC2301 - в них использовался метод "обегания" пикселя, кстати в datashit-ах на эти микрухи очень доходчивые картинки, иллюстрирующие алгоритмы. Отдельная тема - коэффициенты для фильтров. Если не нужно реализовывать эффект плавного масштабирования, то обойдетесь простой таблицей, в противном случае потребуется делать генератор коэффициентов. Усложнить процесс может чересстрочная развертка (в грамотном устройстве желательно применять деинтерлейсинг - тоже интересная проблема), а также различающаяся кадровая развертка на входе и выходе - столкнетесь с проблемой межкадровой интерполяции, оценкой и компенсацией движения в кадре. Но, это уже довольно серьезные вещи, ими занимаются такие монстры, как AMPEX или Snell&Willcox, которые все делают по-честному с точки зрения науки. Не напугал? :) На практике можно многое упростить, существует множество уловок, связанных с особенностями зрения и, в принципе, можно ориентироваться на качество картинки "на глаз". Мне приходилось делать масштабатор в применении к телевизионному сигналу (только в сторону downscale, плавно от 1:1 до 1:16). Использовался обычный билинейный алгоритм, по-крайней мере картинка выглядила прилично и ОТК Первого канала ее пропустила). Масштабирование происходило в два прохода, на плате стояло 2 буфера памяти (внешняя SDRAM) на полный кадр, так как требовалась синхронность по выходу. Коэффициенты генерились на ходу. Каждый FIR-фильтр в кристалле ACEX 1K100 съедал около 50% ресурсов. Компилировал в Quartus II. Кстати MAX+PLUS на тот же проект тратил 90%. В кратце все, если что, стучитесь в аську.
Go to the top of the page
 
+Quote Post



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

 


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


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