VGA на ПЛИС...
Появилось желание сделать вывод видео на ПЛИС, кто-нибудь делал похожие вещи? Так понимаю нужно делать видеопамять, сигналы синхронизации и дергать выходные сигналы, отталкиваясь от сигналов синхорнизации согласно сожержимому видеопамяти? Куда копать? Использовать буду XC95144-PQ160, надеюсь влезет туда подобный проект?
R2AIV 73!
- Реклама
Меня тоже давно привлекает эта идея. По теории на Альтеровском FLEX10К это более чем. Но лично видел на первом циклоне. Мои расчеты для полоноценного вга (без черестрочной) привели к использованию памяти с временем доступа 5-7 нс. На этом все пока остановилось. Т.к. для памяти в виде одной мс, или клепания на нескольких мелких (по мере доставабельности) для отладки глюков лучше заказать плату (чтобы еще в монтаже глюков не искать). Но времени страссировать пока никак.
Но тут зависит от нужного разрешения и частоты регенирации.
Но тут зависит от нужного разрешения и частоты регенирации.
Да я думаю не на Alter'е, а на Xilinx'е делать - привык уже к нему. В принципе Spartan-2 по характеристикам аналогичен Флексам, я думаю. А в качестве памяти можно использовать блочную память ПЛИС. Разрешение - дык для начала хоть какое - главное начать, а ресурсы можно потом и нарастить, лишь-бы в тактовую лбом не упереться. Хотелось-бы просто на какой-нибудь живой проект посмотреть, либо на VHDL либо в схемном варианте...
R2AIV 73!
"вывод видео на ПЛИС" - что имеется ввиду??
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
- Реклама
На ПЛИС это имеется в виду, что на сегодняшний день нет недорогих и доставабельных контроллеров для вывода ВГА к примеру 1024х768 RGB. Поэтому все сейчас делают на плисах, т.е. подключается память, ацп, генератор и вперед, выборка цветов из памяти и посылка его на АЦП. В плисе сосздаются счетчики и остальные лог. элементы.
В современных карточках для тактирования стоит кварц на 14.ххх МГц, но внутри полюбому есть умножитель. В нашем случае можно подключить управляемый генератор 1-100 Мгц и подбирать времянки.
В современных карточках для тактирования стоит кварц на 14.ххх МГц, но внутри полюбому есть умножитель. В нашем случае можно подключить управляемый генератор 1-100 Мгц и подбирать времянки.
Замечательная идея.
Только как связь с внешними устройствами?
Они записывают в память а ПЛИС (как контроллер (выполняющий управление формированием) ВГА) выводит на ЭЛМонитор.
Но как тогда на счёт конфликтов? нужен буфер.
Или ПЛИС непостредственно и принимает м формирует, но тогда как со временем.
Когда возникнет необходимость, одновременно и считать(внешне) и записать(в ОЗУ) и этот же байт(который уже в ОЗУ) сейчас должен микшироваться и быть выведен.
Не помешает вынести доступ с ОЗУ к внешним устройствам, и для предотвращения ситуаций-занято или потери данных, сделать буфер.
А также свести к минимуму уход контроллера(ПЛИС) из основного цикла.
Да и вообще из своей задачи - считывание из ОЗУ, микширование и (выдачу на) формирование.
Можете это вопрос осветить, очень интересно.
Только как связь с внешними устройствами?
Они записывают в память а ПЛИС (как контроллер (выполняющий управление формированием) ВГА) выводит на ЭЛМонитор.
Но как тогда на счёт конфликтов? нужен буфер.
Или ПЛИС непостредственно и принимает м формирует, но тогда как со временем.
Когда возникнет необходимость, одновременно и считать(внешне) и записать(в ОЗУ) и этот же байт(который уже в ОЗУ) сейчас должен микшироваться и быть выведен.
Не помешает вынести доступ с ОЗУ к внешним устройствам, и для предотвращения ситуаций-занято или потери данных, сделать буфер.
А также свести к минимуму уход контроллера(ПЛИС) из основного цикла.
Да и вообще из своей задачи - считывание из ОЗУ, микширование и (выдачу на) формирование.
Можете это вопрос осветить, очень интересно.
- Вложения
-
- набросок.jpg
- Чтобы не отвлекаться на работу с приёмом данных
- (37.33 КБ) 859 скачиваний
простое чмо, выдумщик
Ну дык это еесно. Изобретать велик не будем, а посмотрим на принцип работы карточки -там собственно и есть разделение на два экрана. Один для формирования изображения, второй для вывода. Предлагаю так и сделать - поставить две памяти, в одной формировать, со второй выводить, потом менять местами, т.е. формировать уже во вотрой, а из первой выводить, и так по кругу. И для этого что надо будет, то и ставим, и буффера и регистры защелки и т.д. (хотя это в плис может уместиться).
Вопрос в другом, кто с такой скоростью будет в эту память писать?
Если посчитать, 1024х768х3 = 2359296 байт. т.е. 2,5 Мбайта. Медленно это все будет.
Вопрос в другом, кто с такой скоростью будет в эту память писать?
Если посчитать, 1024х768х3 = 2359296 байт. т.е. 2,5 Мбайта. Медленно это все будет.
Да уж, со скоростью, естественно будут проблемы. Но хотябы попробовать 320х240х16 реализовать. А память можно взять из комповых планок, или тоже будет медленно?
R2AIV 73!
Производительность комповых планок памяти измеряется гигабайтами в секунду, плисина тоже способна переваривать кучу информации, очевидно что тормозить может только устройство выдающее информацию плису.
2B OR NOT 2B = FF
***
1024х768х3 = 2 359 296 байт. т.е. 2,5 Мбайта. Медленно это все будет.
***
и +1байт, ещё же цветоразностый сигнал, ну тоесть яркость.
Может одна страница ОЗУ с буфером на несколько байт, расчитанных из максимального количества тактов возможного при совпадении запрашиваемого адреса и в данный момент записываемого (т.е когда адрес занят).
2,5МБайт можно разделить на 4-ре зоны. И разводится и микштроваться по четыре линии в один коммутируемый формирователь, последовательно.
Или скажем построчно через 4-е. Если АЦП не успевает, то выставляется уровень за ранее а мотом комутируется, когда приходит черёд этого АЦП.
Хотя мне кажется что ПЛИС справится, что тут такого?
Содержимое ОЗУ постоянно выводится.
А уж скорость записи в него ни как не будет заметно глазу. ))
1024х768х3 = 2 359 296 байт. т.е. 2,5 Мбайта. Медленно это все будет.
***
и +1байт, ещё же цветоразностый сигнал, ну тоесть яркость.
Может одна страница ОЗУ с буфером на несколько байт, расчитанных из максимального количества тактов возможного при совпадении запрашиваемого адреса и в данный момент записываемого (т.е когда адрес занят).
2,5МБайт можно разделить на 4-ре зоны. И разводится и микштроваться по четыре линии в один коммутируемый формирователь, последовательно.
Или скажем построчно через 4-е. Если АЦП не успевает, то выставляется уровень за ранее а мотом комутируется, когда приходит черёд этого АЦП.
Хотя мне кажется что ПЛИС справится, что тут такого?
Содержимое ОЗУ постоянно выводится.
А уж скорость записи в него ни как не будет заметно глазу. ))
Последний раз редактировалось MetEl Вс авг 17, 2008 15:55:35, всего редактировалось 2 раза.
простое чмо, выдумщик
Не, комповым планкам надо регенерация. На видяхах везде статика стоит. Где-то 5 нсек и меньше.
А насчет 320х240. Зачем? И тем более моники такого уже не поддерживают. Для такого разрешения берется жки модуль 320х240 и прикручивается к авр или арм. И готово.
Кстати есть вот готовая м/с MB86291ASPFVS, именно то что надо, только вот стоит зараза 80 баксов.
А насчет 320х240. Зачем? И тем более моники такого уже не поддерживают. Для такого разрешения берется жки модуль 320х240 и прикручивается к авр или арм. И готово.
Кстати есть вот готовая м/с MB86291ASPFVS, именно то что надо, только вот стоит зараза 80 баксов.
Разделить можно хоть на 20 зон.MetEl писал(а):
2,5МБайт можно разделить на 4-ре зоны. И разводится и микштроваться по четыре линии в один коммутируемый формирователь, последовательно.
Хотя мне кажется что ПЛИС справится, что тут такого?
Содержимое ОЗУ постоянно выводится.
А уж скорость записи в него ни как не будет заметно глазу. ))
Глазу не запись будет заметна, а скорость смены картинки конкретно на экране. Если ты за секунду будешь успевать заганять туда следующую картинку, то зачем такая скорость. Представляешь, выводишь ты, к примеру, курсор. И чтобы было видно его перемещение - надо собсно чтобы он перемещался не чаще 1 пикселя в секунду.
А если я одновременно в 4-ре пропешу(4-ре входных(внешних) линии в ОЗУ), это уже будет не секунда а 1/4 секунда (25Гц).
Хотя конечно... запарно.
Но если передавать скажем по SPI от внешнего устройства.
То после приёмника-распределителя SPI, раздаётся на 4-е зоны. И далее как и должно.
SPI же успевает 3,6Мб в сек транспортировать(зависит от частоты МК).
Хотя конечно... запарно.
Но если передавать скажем по SPI от внешнего устройства.
То после приёмника-распределителя SPI, раздаётся на 4-е зоны. И далее как и должно.
SPI же успевает 3,6Мб в сек транспортировать(зависит от частоты МК).
- Вложения
-
- прояснение.jpg
- (34.08 КБ) 811 скачиваний
Последний раз редактировалось MetEl Вс авг 17, 2008 17:14:32, всего редактировалось 2 раза.
простое чмо, выдумщик
"на видяхах везде статика стоит" кто вам такую чушь сказал пока памяти было 1 - 16 мегабайт может и ставили на всем что новее ддр стоит
2B OR NOT 2B = FF
Если использовать 4-е блока по 1024х768 байт на R, G, B, Y(яркость) канал, то получается каждый блок (микруха ОЗУ по 1МБайту) должна успевать 25 раз в сек, выставлять значения 786`432 адресов.
Не менее.
1/ (1024х768х25) = 13нСек.
Вместо них можно поставить(разделить) на 4-е микрухи(всего 16 по 256КБ), и тогда потребная частота считывания, с каждой уменьшается до 52нСек.
Но при полной нагрузке, т.е. в секунду будет и запись и чтение, каждый раз(полный проход, смена всего экрана, а не только его части(не только курсор изменил свой положение...)) получается 6нСек...
Не менее.
1/ (1024х768х25) = 13нСек.
Вместо них можно поставить(разделить) на 4-е микрухи(всего 16 по 256КБ), и тогда потребная частота считывания, с каждой уменьшается до 52нСек.
Но при полной нагрузке, т.е. в секунду будет и запись и чтение, каждый раз(полный проход, смена всего экрана, а не только его части(не только курсор изменил свой положение...)) получается 6нСек...
Последний раз редактировалось MetEl Вс авг 17, 2008 18:57:51, всего редактировалось 1 раз.
простое чмо, выдумщик


