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

PS. Раньше уже делал подобную вещь но использовал готовый scaler от Philips SAA6713. Теперь scaler надо засунуть в альтеру а на входе будет простой 3хАЦП.
des00
Цитата(Pahuchy @ Apr 13 2005, 05:57)
Задача: есть входной сигнал RGB 24бита .  Формат сигнала может быть различным 640х480, 800x600 и т.п.(вообщем VESA) надо сделать так что бы на выходе формат не зависил от входа т.е. вход 640х480 выход 1280x1024
или вход 1280х1024 выход 800х600. Т.е. понятно что сигнал оцифровуется попадает в FPGA(я использую альтеру) и выходит на ЦАП. В альтере надо сделать Upscaler и Downscaler . Так вот вопрос как это сделать. Любые ссылки , теориии , примеры приветствуются.

PS. Раньше уже делал подобную вещь но использовал готовый scaler от Philips SAA6713. Теперь scaler надо засунуть в альтеру а на входе будет простой 3хАЦП.
*


Хммм имхо если бы передо мнй встала такая задача, то нужно определить следующее :
1. Метод интерполяции данных (при увеличении изображения необходимо расчитать "недостающие" точки)
2. Метод прореживания данных.
archip
СОбственно, от добра добра не ищут. Почему возникла идея отказаться от Philips SAA6713? Если только по цене - думаю, самопал Вам обойдётся дороже. Конечно, если вопрос про расширенный диапазон температур, то именно самому придётся делать.

Только придётся повторить почти весь путь эволюции scaler`ов, в борьбе за качество выходной картинки.
Pahuchy
Это и коню понятно blink.gif что надо интреполировать и прореживать
где мне про ето почитать ? Как практически реализовать?
Может кто делал что то подобное.

Цитата(archip @ Apr 14 2005, 12:21)
СОбственно, от добра добра не ищут. Почему возникла идея отказаться от Philips SAA6713? Если только по цене - думаю, самопал Вам обойдётся дороже. Конечно, если вопрос про расширенный диапазон температур, то именно самому придётся делать.

Только придётся повторить почти весь путь эволюции scaler`ов, в борьбе за качество выходной картинки.
*



Объясняю в новом изделии использую Cyclone II . Внутренние ресурсы используются не полностью. Какой смысл ставить внешнюю микросхему (дорогую и содержащую много ненужных узлов ) если можно использовать ресурсы циклона. Кроме того она не обеспечивает UXGA 1600x1200

Scaler который поддерживае UXGA можно купить только если вы являетесь фирмой SONY,Samsung и т.п. в количестве 1000000....... штук
YUV
То Pahuchy

Сэр, не будете ли Вы так дорбры ответить на несколько вопросов по SAA6713?

1) Можно ли использовать порты PA, PB, PC как входы, а данные снимать с PD, PE, PF?
2) Какой максимальный коэффициент масштабирования?
3) Можно ли сконфигурировать ИМС под маленькие размеры входной картинки, например, 64*64 пикселов?
4) Если входная картинка имеет разрешение 1024*768 и установлен максимальный коэф. масштабирования, то что получится на выходе: масштабирование первых х*у пикселей или полный паралич?

Искренне благодарен за оказанное внимание.
Pahuchy
1. Да можно . Установите биты
ext_select в 1
dvi_select в 0
настройте VCLK как вход
vclk_in_en в 1

Подавайте RGB на PA, PB, PC (тактируйте их VCLK) далее в SAA
делайте что вам надо (скелинг, коррекция, наложение лого и т.п.)
и снимайте выходное изображение с PD, PE, PF по PCLK.

2. максимальный коофициен масштабирования определяется только
максимальным back-end clock . Для этой микросхемы он равен 100MHz max. Хочу сказать что эта цифра сильно завышена, реально
уже на 80 фронты начинают замыливаться. Реально можно получить XGA 1024x768. Правда я ухитрился получить 1280х1024 передавая по 2 точки за такт. но у вас (как я понял из условия) это не получиться т.к. PA, PB, PC вход.

3. минимальный размер который подавал 640*480 меньше не пробовал(теоретически наверно да).

4. паралич. Вообще SAA6713 надо настраивать крайне внимательно и точно (шаг вправо/влево - писец всё начинает дёргатся строки рвутся и т.п.). Очень желательно сделать как я написать прогу которая позволит вам изменять регистры на лету иначе замучетесь её настраивать. Что бы вы не изменили всегда делайте программный сброс (особенно это касается скелёра) GC_RESET(FCh) иначе не заметите изменений. для настройки выхода очень помог внутреений генератор полосок(рекомендую) .
Foxx
Проблема не так проста, как может показаться поначалу. Обычно такие устройства масштабируют картинку в два прохода - сначала по горизонтали, потом по вертикали, используя 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%. В кратце все, если что, стучитесь в аську.
Iouri
Господа,

у кого нибудь получился scaler посоветуйте что почитать
необходимо преобразвать 480i в 720p или 1080p


заранее благодарен
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.