Pahuchy
Apr 13 2005, 10:57
Задача: есть входной сигнал RGB 24бита . Формат сигнала может быть различным 640х480, 800x600 и т.п.(вообщем VESA) надо сделать так что бы на выходе формат не зависил от входа т.е. вход 640х480 выход 1280x1024
или вход 1280х1024 выход 800х600. Т.е. понятно что сигнал оцифровуется попадает в FPGA(я использую альтеру) и выходит на ЦАП. В альтере надо сделать Upscaler и Downscaler . Так вот вопрос как это сделать. Любые ссылки , теориии , примеры приветствуются.
PS. Раньше уже делал подобную вещь но использовал готовый scaler от Philips SAA6713. Теперь scaler надо засунуть в альтеру а на входе будет простой 3хАЦП.
Цитата(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
Apr 14 2005, 09:21
СОбственно, от добра добра не ищут. Почему возникла идея отказаться от Philips SAA6713? Если только по цене - думаю, самопал Вам обойдётся дороже. Конечно, если вопрос про расширенный диапазон температур, то именно самому придётся делать.
Только придётся повторить почти весь путь эволюции scaler`ов, в борьбе за качество выходной картинки.
Pahuchy
Apr 14 2005, 10:15
Это и коню понятно

что надо интреполировать и прореживать
где мне про ето почитать ? Как практически реализовать?
Может кто делал что то подобное.
Цитата(archip @ Apr 14 2005, 12:21)
СОбственно, от добра добра не ищут. Почему возникла идея отказаться от Philips SAA6713? Если только по цене - думаю, самопал Вам обойдётся дороже. Конечно, если вопрос про расширенный диапазон температур, то именно самому придётся делать.
Только придётся повторить почти весь путь эволюции scaler`ов, в борьбе за качество выходной картинки.
Объясняю в новом изделии использую Cyclone II . Внутренние ресурсы используются не полностью. Какой смысл ставить внешнюю микросхему (дорогую и содержащую много ненужных узлов ) если можно использовать ресурсы циклона. Кроме того она не обеспечивает UXGA 1600x1200
Scaler который поддерживае UXGA можно купить только если вы являетесь фирмой SONY,Samsung и т.п. в количестве 1000000....... штук
То Pahuchy
Сэр, не будете ли Вы так дорбры ответить на несколько вопросов по SAA6713?
1) Можно ли использовать порты PA, PB, PC как входы, а данные снимать с PD, PE, PF?
2) Какой максимальный коэффициент масштабирования?
3) Можно ли сконфигурировать ИМС под маленькие размеры входной картинки, например, 64*64 пикселов?
4) Если входная картинка имеет разрешение 1024*768 и установлен максимальный коэф. масштабирования, то что получится на выходе: масштабирование первых х*у пикселей или полный паралич?
Искренне благодарен за оказанное внимание.
Pahuchy
May 4 2005, 17:02
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) иначе не заметите изменений. для настройки выхода очень помог внутреений генератор полосок(рекомендую) .
Проблема не так проста, как может показаться поначалу. Обычно такие устройства масштабируют картинку в два прохода - сначала по горизонтали, потом по вертикали, используя 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%. В кратце все, если что, стучитесь в аську.
Господа,
у кого нибудь получился scaler посоветуйте что почитать
необходимо преобразвать 480i в 720p или 1080p
заранее благодарен
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.