Перейти к содержанию
    

C6745 PRUSS в качестве видео-подсистемы

Необходимо обеспечить передачу видео-сигнала NTSC на 75-омный видео-вход ТВ. (AV in).  В качестве энкодера NTSC микросхемы: AD724 или CXA1145 или CXA1645, которые из RGB, Hsync,Vsync делают NTSC.

 

Значит, необходимо со стороны PRUSS реализовать чтение видеопамяти, сформировать сигналы H,V-sync , компоненты RGB превратить в аналоговые с помощью простейшего резистивного ЦАП  и подать их в энкодер.

 

Требуемый режим:  400x240  60 Гц,  16 бит на точку (5:6:5, можно 5:5:5).   Можно не на весь экран, а с бордюрами.

 

PRU ядро, на частоте 228 МГц, память кода 4 кБ  и данных 0,5 кБ  для этих целей хватит?   Или не взлетит? 

 

DSP TMS320C6745.

 

P.S. с ПЛИСами и спец-чипами заморачиваться неохотно, желается сделать решение на 1 кристалле C6745

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там рядом лежит ADV7390, который в два раза дешевле чем AD724.

и я так понимаю человеческого параллельного видео порта и 2D DMA, как в тех же блэкфинах, которые это всё сами сделают, у С6745 нету, а lcd контроллер есть только С6547.

но я бы всё равно попробовал сначала на EMIFA, если он свободен, цифровой видеоэнкодер повесить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, _pv said:

там рядом лежит ADV7390, который в два раза дешевле чем AD724.

и я так понимаю человеческого параллельного видео порта и 2D DMA, как в тех же блэкфинах, которые это всё сами сделают, у С6745 нету, а lcd контроллер есть только С6547.

но я бы всё равно попробовал сначала на EMIFA, если он свободен, цифровой видеоэнкодер повесить.

EMIFA 8 бит - занят LCD, EMIFB  16 бит занят SDRAM.   Делать временное разделение шины не хотелось бы (нужна производительность).

Остаются GPIO + PRUSS.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

почему ADV7390 нельзя посадить параллельно с lcd на EMIFA?

вам одновременно нужны разные картинки на lcd и тв выходе?

 

Изменено пользователем _pv

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, _pv said:

почему ADV7390 нельзя посадить параллельно с lcd на EMIFA?

вам одновременно нужны разные картинки на lcd и тв выходе?

 

 

Посадить на EMIFA можно.  Требуется только один режим из двух: или LCD (со своим контроллером и памятью)   или  ТВ.

 

Вопрос, насколько ощутима потеря цветовых оттенков из-за суб-дискретизации в 4:2:2  из RGB 5:6:5  на ТВ приёмнике (ЭЛТ, кинескоп) ?

 

И где брать HSYNC, VSYNC - из стробов WR и CS делать функцию или отдельные GPIO ?

 

 

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, _pv сказал:

и я так понимаю человеческого параллельного видео порта и 2D DMA, как в тех же блэкфинах, которые это всё сами сделают, у С6745 нету

Человеческого 2D нет, есть нечеловеческий 3D.  :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

только надо посмотреть как там с приоритетами на шинах и возможностью синхронизации ДМА или EMIFA (через какой-нибудь drdy, если он есть) от таймера,

чтобы не получилось что данные будут выдаваться с каким попало джиттером, NTSC кодеру такое сильно не понравится, думаю.

а сами синхроимпульсы либо каким-нибудь таймером,

либо можно их завести на старшие адресные линии EMIFA, и дма (опять же если умеет) настраивать на две посылки, сначала данные, а потом по другому адресу сколько надо нулей, для того чтобы кодек синхроимпульс с адреса брал.

 

есть, наверное, ещё один похабный вариант, взять RMII, сделать из TXD0/1 двухбитный r2r ЦАП и добавив ещё поверх сигма-дельта модуляцию генерить NTSC напрямую, с колор бурстами и квадратурной модуляцией цветоразностных сигналов, как раз задача для PRUSS :), возможно затактировать его придётся от чего-то кратного 3.5МГц (или сколько там у NTSC), 3.5*14 ~ 50МГц, а может и так сойдёт, частота всё-таки довольно большая.

для нескольких цветов из SPI чуть ли не на AVR такое вроде делал кто-то, но там всего один бит и удвоенная частота и (либо sin либо cos), а тут и частота выше и ЦАП аж двухразрядный, 65к цветов не получится конечно, но при разрешении 400х240 исключительная точность цветопередачи думаю не самая большая проблема.

2 minutes ago, jcxz said:

Человеческого 2D нет, есть нечеловеческий 3D.  :biggrin:

ну хорошо,

правда если синхроимпульсы генерить всё равно некому и придётся самому руками, радости особой от того что можно целый кадр отправить, а не построчно всё равно не сильно много.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, _pv сказал:

только надо посмотреть как там с приоритетами на шинах и возможностью синхронизации ДМА или EMIFA

У C67xx кроме 3D-DMA есть ещё 2 PRU-ядра, которые можно рассматривать как супер-мега-фичастые DMA-контроллеры.  :acute: О чём ТС и писал изначально. 

Приоритеты доступа к шинам у OMAP-L137 можно было запрограммировать по отдельности для каждого bus-master-а. Думаю что у C67xx должно быть аналогично.

Изменено пользователем jcxz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 минут назад, _pv сказал:

правда если синхроимпульсы генерить всё равно некому и придётся самому руками, радости особой от того что можно целый кадр отправить, а не построчно всё равно не сильно много.

У C67xx есть McASP (только не помню сколько шт. и по сколько каналов). Это - последовательный порт с множеством сериализаторов, каждый из которых можно запрограммировать независимо от других сериализаторов на ввод/вывод и обслуживание DMA-контроллером.

По-крайней мере у меня в проекте на OMAP-L137 один 16-канальный McASP обслуживал 3 отдельных канала SPI-АЦП (на ввод), и один аудио-кодек (1 сериализатор - ввод, 1 сериализатор - вывод). И все эти сериализаторы обслуживались EDMA-контроллером одновременно.

Изменено пользователем jcxz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хоть и фичастые, но просто перекладывание руками (пусть и pru ядра) данных из памяти в регистр gpio при наличии отдельного дма, внутреннее чувство прекрасного не принимает.

хотя если им действительно заняться больше нечем, почему бы и нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, _pv сказал:

хоть и фичастые, но просто перекладывание руками (пусть и pru ядра) данных из памяти в регистр gpio при наличии отдельного дма, внутреннее чувство прекрасного не принимает.

Лучше по возможности использовать McASP. Но не уверен сколько сериализаторов остались свободными у ТС. Ведь судя по всему - у него много ног уже занято (SDRAM, LCD по параллельной шине, ...). Может оказаться что ноги McASP все уже заняты. Тогда придётся GPIO-шить.  :unknw:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, jcxz said:

Лучше по возможности использовать McASP. Но не уверен сколько сериализаторов остались свободными у ТС. Ведь судя по всему - у него много ног уже занято (SDRAM, LCD по параллельной шине, ...). Может оказаться что ноги McASP все уже заняты. Тогда придётся GPIO-шить.  :unknw:

На McASP занят 1 канал - дует звук в аудио-ЦАП.

 

Чем решение с GPIO плохое?  Допустим, есть ещё свободные биты GPIO: 16 штук + 2 (на синхры). Неужели для PRUSS ничего нельзя сообразить толкового при таких условиях?

 

С GPIO тоже не выходит, часть заняты и нету с 0 по 15 свободного GPIO.   Остаётся EMIFA 8 бит и 2 на H/V sync + скрип зубов от потери цвета при суб-пиксельной дискретизации YUV 4:2:2 и ещё конверт RGB в YUV на плечи процессора

 

В этом случае всё-же AD724 или CXA1145 будут лучше, так как они тупо принимают аналог RGB и делают NTSC/PAL, без всякого дополнительного программирования по I2C(как в случае ADV7390 ).

 

Как вариант - рассмотреть вывод на монитор (аналог, D-SUB). Не могу найти времянки для 400x240, вижу только стандартные растактовки кадров, стандартизированных VESA'ой (640x480, 800x600 и т.д.)

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а чем 4:2:2 помешал, разрешение и так в два раза меньше телевизионных 750 точек.

или крестик снимите или трусы наденьте, а то субсэмплинг 422 так УЖАС-УЖАС, а вот R2R ЦАП (на который ещё 16ти битную шину найти надо) и потом ещё аналоговое же преобразование в NTSC так всё нормально, ничего не потеряется. я вот что-то совсем не уверен что картинка из r2r цапа будет лучше чем от нормального энкодера пусть и с 422.

у ADV7392/3 есть и RGB565 режим но придётся защёлку 8ми битную ставить на EMIF.

 

так и не было вроде таких разрешений, были 320х240, 640х480, 800х600

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 hours ago, _pv said:

или крестик снимите или трусы наденьте, а то субсэмплинг 422 так УЖАС-УЖАС, а вот R2R ЦАП (на который ещё 16ти битную шину найти надо) и потом ещё аналоговое же преобразование в NTSC так всё нормально, ничего не потеряется. я вот что-то совсем не уверен что картинка из r2r цапа будет лучше чем от нормального энкодера пусть и с 422.

На плате olinuxino A13 есть R-ЦАП на VGA выхлопе, и ничего. Картинки видел, по качеству устраивал. + сам так делал.

 

Quote

так и не было вроде таких разрешений, были 320х240, 640х480, 800х600

Тогда из 640x480 сделать 400 на 240 путём стретча пиксела по горизонтали в 1,6 раз и с двойным сканированием строки - чтобы 240 строк стали толще в 2 раза для покрытия 480.

И ещё больной вопрос про aspect ratio: 400x240 на мониторе 4:3 будет смотреться вытянутым по вертикали - тут решение с бордюами наверное лучше, чем OverScan (на весь экран)

 

 

В общем прикинул, в моем случае ничего хорошего не получится. Нет детерминированности в обращении к памяти.  L1 отданы под кеш, L2 также отдан под кеш + стек ,  во внешней SDRAM код и данные.  Так что чтение из любой из них приведет к неопределенному времени.   Пикселы будут неровными и будет дрожать. Не годится. Это в случае - PRUSS+ GPIO.  С ДМА всё ещё более сложнее - неизвестно сколько времени будет чтение из SDRAM, на которую претендует ещё CPU и кеш.

 

 

Увы, без ПЛИС или спец-контрорллера тут не отделаешься.   В простейшем случае нужен видеоконтроллер с 8 битной шиной (на EMIFA чтоб завязаться) с фреймбуфером не менее 187,5 кБайт (400x240 16 bpp)

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 15.08.2019 в 11:57, __inline__ сказал:

Необходимо обеспечить передачу видео-сигнала NTSC на 75-омный видео-вход ТВ. (AV in).  В качестве энкодера NTSC микросхемы: AD724 или CXA1145 или CXA1645, которые из RGB, Hsync,Vsync делают NTSC.

Так вы же уже почти аллвиннер освоили, припоминаю, тогда зачем весь этот натюрморт, когда в большинстве их чипов есть нормальный и правильный ТВ выход??

ЗЫ. Для всяких "лялек и поделок" есть и крохотные и очень дешевые платки на Н2 чипе, типа "бананы" без HDMI, с которым приходилось не сладко, но с ТВ выходом и аудиокодеком, причем механизм загрузки у нее такой же, как у А13го...

И кстати, почему именно NTSC? Не PAL, например..

14 часов назад, __inline__ сказал:

Тогда из 640x480 сделать 400 на 240 путём стретча пиксела по горизонтали в 1,6 раз и

А что это, правда, за разрешение такое, куда ни прикину - так везде либо 320х240, как у старых компов-игрушек, или 640х400, как у ХТшки айбиэмовской или VGA 640х480 и т.д.  Ну или ТВ 510строк или как его уж не помню...

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...