|
необходимо сделать графический контроллер на ПЛИС для вывода информации на телевизор. Нужен совет. |
|
|
|
Nov 14 2008, 09:14
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 26-02-07
Пользователь №: 25 680

|
Хочу сделать простой контроллер, по сути, видеобуфер, который будет формировать изображение в формате NTSC или PAL. А дальше, уже с помощью внешнего микроконтроллера, рисовать разноцветные буковки, простенькие графики и прочее. Хочу получить 320 на 240 точек, пара бит на цвет. Короче, все не сложно. Но и проект должен быть бюджетным. Вопросы: 1. Нет ли где готового проекта, посидеть - поковырять, сделать на его основе что нужно мне. 2. Если нет, подскажите пожалуйста, как прикинуть минимальную ПЛИС, которая потянет задачу. Склоняюсь в сторону Альтеры. Хочется чтобы была Альтера за 3-5 долларов + статическое ОЗУ за пару долларов. Спасибо!
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 22)
|
Nov 14 2008, 10:36
|
Местный
  
Группа: Свой
Сообщений: 381
Регистрация: 27-07-08
Из: теплые края
Пользователь №: 39 233

|
Цитата(Лунь @ Nov 14 2008, 11:14)  1. Нет ли где готового проекта, посидеть - поковырять, сделать на его основе что нужно мне. 2. Если нет, подскажите пожалуйста, как прикинуть минимальную ПЛИС, которая потянет задачу. Склоняюсь в сторону Альтеры. Хочется чтобы была Альтера за 3-5 долларов + статическое ОЗУ за пару долларов. Спасибо! 1. http://opencores.org/projects.cgi/web/fbas_encoder/overview2. Автор пишет что проект поместился в XC9536 (~5$)
|
|
|
|
|
Nov 14 2008, 13:06
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 26-02-07
Пользователь №: 25 680

|
Цитата(vik0 @ Nov 14 2008, 13:36)  этот проект я видел. Это энкодер просто. Есть готовые микросхемы для выполнения данной функции, к примеру, CXA1645 - совсем дешевая, есть производства Аналоговых Девиц, подороже и по качественнее. Но мне нужно сделать фрейм буфер. Логика, которая будет работать с ОЗУ, выплевывая из нее в соответствующие моменты времени RGB пикселя, и одновременно, следящая за синхронизацией - строковой и кадровой. Другими словами, формирующая эти самые кадры. Ну а содержимое ОЗУ я буду заполнять внешним микроконтроллером. Цитата(iosifk @ Nov 14 2008, 13:32)  Поищите в Альтеровской университетской программе. Должны быть такме проекты. А у Ксайлинкса - тоже есть на сайте, где стартовый набор на Спартан 3Е... Спасибо за наводку! Посмотрю обязательно.
|
|
|
|
|
Nov 14 2008, 18:54
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425

|
Пару недель назад задавался такими же вопросами. Мне нужно разрешение 480х232, 2 бита на цвет, двойная буферизация. Перебрал много вариантов от третьего циклона до LPC. В итоге сделал на EPM3032A (заняло 20 ячеек ) и 2 памяти N256S08 (из одной выводим на телевизор, в другую рисует контролер). В железе пока не проверял, так как все микросхемы привезут только в понедельник.
Единственное, синхронизацию я тоже решил делать контроллером. Сделать ее на плис особых проблем нет, но она сильно не регулярная, мало того, что все импульсы синхронизации разной длины, так еще и частота следования меняется, на плис получается не красиво, а в контролере легко.
|
|
|
|
|
Nov 15 2008, 15:24
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 26-02-07
Пользователь №: 25 680

|
Цитата(Dopler @ Nov 14 2008, 21:54)  Пару недель назад задавался такими же вопросами. Мне нужно разрешение 480х232, 2 бита на цвет, двойная буферизация. Перебрал много вариантов от третьего циклона до LPC. В итоге сделал на EPM3032A (заняло 20 ячеек ) и 2 памяти N256S08 (из одной выводим на телевизор, в другую рисует контролер). В железе пока не проверял, так как все микросхемы привезут только в понедельник.
Единственное, синхронизацию я тоже решил делать контроллером. Сделать ее на плис особых проблем нет, но она сильно не регулярная, мало того, что все импульсы синхронизации разной длины, так еще и частота следования меняется, на плис получается не красиво, а в контролере легко. Интересно.... сообщите пожалуйста, как получится в железе. Я как раз про эту Аьтеру и думаю, тоже на ней хочу. Единственное, я немного вас не понял - синхронизацию вы делаете на контроллере. Что имеется в виду? вы говорите о внешнем управляющем микроконтроллере? На мой взгляд, это-то как раз и неудобно, и джиттер будет. Или вы о внешнем энкодере говорите, которому достаточно из ПЛИСа подавать совсем простенькие синхросигналы, сформировать которые очень не сложно? В чем смысл применения 2-х корпусов памяти? По-моему вполне можно все успевать и с одной памятью, с нашими-то несложными требованиями по разрешению и по глубине цвета....
|
|
|
|
|
Nov 17 2008, 11:40
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Нда.. судя по вопросам не худо бы сначала почитать теорию.. В свое время я поинтересовался такой задачей и путями ее решения. В первом варианте задача была решена на Lattice 1032 + 3x64КБ SRAM - разрешение 320х240х8бит Во втором варианте цеплял контроллер к TFT Sharp 640x480x16бит (макетка с CycII + 512КБ SRAM) К первому варианту легко довешивается кодер (PAL, NTSC) - мне было без надобности Теперь по существу вопросов: 1. сходи сюда и почитай (это была для меня отправной точкой): http://elm-chan.org/works/crtc/report.html2. "прикинуть" объем несложно - тащишь пакет для проектирования в том кристалле, который выбрал, устанавливаешь, пишешь или рисуешь прошивку, в логах смотришь ответ в ЛЭ, типа такого: Number of Macrocells is 116 Number of GLBs is 30 Number of product terms is 288 Maximum number of GLB levels is 4 Average number of inputs per GLB is 8.8 Average number of outputs per GLB is 3.9 Average number of product terms per GLB is 9.6 далее делаешь правильные выводы и подбираешь подходящий кристалл.. Цитата(Лунь @ Nov 14 2008, 12:14)  Хочу сделать простой контроллер, по сути, видеобуфер, который будет формировать изображение в формате NTSC или PAL. А дальше, уже с помощью внешнего микроконтроллера, рисовать разноцветные буковки, простенькие графики и прочее. Хочу получить 320 на 240 точек, пара бит на цвет. Короче, все не сложно. Но и проект должен быть бюджетным. Вопросы: 1. Нет ли где готового проекта, посидеть - поковырять, сделать на его основе что нужно мне. 2. Если нет, подскажите пожалуйста, как прикинуть минимальную ПЛИС, которая потянет задачу. Склоняюсь в сторону Альтеры. Хочется чтобы была Альтера за 3-5 долларов + статическое ОЗУ за пару долларов. Спасибо!
|
|
|
|
|
Nov 17 2008, 12:46
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 26-02-07
Пользователь №: 25 680

|
Цитата(Jury093 @ Nov 17 2008, 14:40)  Нда.. судя по вопросам не худо бы сначала почитать теорию.. В свое время я поинтересовался такой задачей и путями ее решения. В первом варианте задача была решена на Lattice 1032 + 3x64КБ SRAM - разрешение 320х240х8бит Во втором варианте цеплял контроллер к TFT Sharp 640x480x16бит (макетка с CycII + 512КБ SRAM) К первому варианту легко довешивается кодер (PAL, NTSC) - мне было без надобности Теперь по существу вопросов: 1. сходи сюда и почитай (это была для меня отправной точкой): http://elm-chan.org/works/crtc/report.html2. "прикинуть" объем несложно - тащишь пакет для проектирования в том кристалле, который выбрал, устанавливаешь, пишешь или рисуешь прошивку, в логах смотришь ответ в ЛЭ, типа такого: Number of Macrocells is 116 Number of GLBs is 30 Number of product terms is 288 Maximum number of GLB levels is 4 Average number of inputs per GLB is 8.8 Average number of outputs per GLB is 3.9 Average number of product terms per GLB is 9.6 далее делаешь правильные выводы и подбираешь подходящий кристалл.. Теорию..... думаю, таким образом можно отвечать на 80% всех сообщений на этом форуме. Теорию читал и буду читать. Но надо пробовать и практику. 1. Я там уже все вылизал что можно. И прошил ПЛИСину (кстати только 1 версия Абелевского исходника проходит фитинг на ISE, другие - нет и вообще проекты, похоже не рабочие, но это для меня не важно. Как пример интересно). По этому проекту вопросов нет. 2. Это понятно. Это везде так. Только методологически, это - научный тык, а не прикидывание. Типа все написал, откомпилировал, не влезло (или влезло с большим запасом), пошел ножки переписывать для другой микросхемы. Вопрос задан с целью услышать +/- семейство Альтеры, которое "вроде бы" подойдет. Далее, в пределах семейства, я уж соображу что к чему. Сам думаю про микросхему EPM3032. Но это просто ощущение, может и промахиваюсь. В общем, всем большое спасибо. На данном этапе вроде все более - менее ясно. Отправные точки имеются.
|
|
|
|
|
Nov 18 2008, 11:19
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 26-02-07
Пользователь №: 25 680

|
Цитата(yes @ Nov 18 2008, 14:07)  а вопрос, кроме CXA1645 какие-то аналоги есть более современные : 3В, жруть поменьше, корпус поменьше? Есть у Аналоговых Девиц, типа AD725 и подобные. AD723 - с питанием 3 V
|
|
|
|
|
Nov 18 2008, 12:17
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(yes @ Nov 18 2008, 15:07)  ну там 704 или 720 точек - из 320 повторить дважды + небольшие поля с боков - имхо, проще Вот это то как раз и вопрос... повторять каждый второй пиксель то оно наиболее просто, но как сказывается на качестве на ТВ относительно более "умных" алгоритмов ? (тут в схожих ветках предлагались несколько подходов пиксельной интерполяции). Интересно именно на основании опыта: сильно ли сказывается простая дупликация пикселей на статическом и динамическом изображении ?
|
|
|
|
|
Nov 18 2008, 12:32
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
Цитата(Саша Z @ Nov 18 2008, 15:17)  Вот это то как раз и вопрос... повторять каждый второй пиксель то оно наиболее просто, но как сказывается на качестве на ТВ относительно более "умных" алгоритмов ? (тут в схожих ветках предлагались несколько подходов пиксельной интерполяции). Интересно именно на основании опыта: сильно ли сказывается простая дупликация пикселей на статическом и динамическом изображении ? если информации 320х240 точек, то сильно умный алгоритм нужен, чтобы качество улучшить а при динамическом с учетом "векторов движения" совсем какие-то эвристические алгоритмы нужны - имхо, не та тема то есть железо несопоставимо сложнее чем выдача изображения ХхУ Цитата(Лунь @ Nov 18 2008, 14:19)  Есть у Аналоговых Девиц, типа AD725 и подобные. AD723 - с питанием 3 V мне получается дешевле AD7171 использовать, который (вроде бы) Вам рекомендовал на телесиськах казалось, что такие микрухи вообще забезплатно должны раздавать
|
|
|
|
|
Nov 18 2008, 12:38
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 26-02-07
Пользователь №: 25 680

|
Цитата(yes @ Nov 18 2008, 15:32)  мне получается дешевле AD7171 использовать, который (вроде бы) Вам рекомендовал на телесиськах казалось, что такие микрухи вообще забезплатно должны раздавать  Да, на телесиськах я был, но AD7171 не помню, кажется не было. Учту, погляжу. Спасибо. Да, цены при данном функционале - не очень. Но я слышал отзывы людей, которым довелось ставить и CXA и AD. Ответ однозначный, AD много выигрывает по качеству картинки. Заметно даже на простых задачках, типа той, что мне нужно сделать. Про сравнение с AD7171 ничего не слышал.
|
|
|
|
|
Nov 18 2008, 12:44
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(yes @ Nov 18 2008, 16:32)  если информации 320х240 точек, то сильно умный алгоритм нужен, чтобы качество улучшить а при динамическом с учетом "векторов движения" совсем какие-то эвристические алгоритмы нужны - имхо, не та тема то есть железо несопоставимо сложнее чем выдача изображения ХхУ Может быть... Мне будет важно как можно меньше размазывать края объекта в изображении, вопрос насколько дубляж пикселей будет влиять на это, особенно в статической картинке...
|
|
|
|
|
Nov 18 2008, 13:32
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
Цитата(Лунь @ Nov 18 2008, 15:38)  Да, на телесиськах я был, но AD7171 не помню, кажется не было. Учту, погляжу. Спасибо. Да, цены при данном функционале - не очень. Но я слышал отзывы людей, которым довелось ставить и CXA и AD. Ответ однозначный, AD много выигрывает по качеству картинки. Заметно даже на простых задачках, типа той, что мне нужно сделать. Про сравнение с AD7171 ничего не слышал. картинку AD7171 показывает хорошую (на EZ-KITE смотрел) ничего не дрожит, цвета насыщенные у нее цифровой вход и DACи внутре
|
|
|
|
|
Nov 18 2008, 14:23
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 26-02-07
Пользователь №: 25 680

|
Цитата(yes @ Nov 18 2008, 16:32)  картинку AD7171 показывает хорошую (на EZ-KITE смотрел) ничего не дрожит, цвета насыщенные
у нее цифровой вход и DACи внутре Щас глянул - мы с вами наверное говорим о ADV7171? без V вроде нет. Да, наличие ЦАП дает ощутимое удобство. правда, и 10 баксов на дороге не валяется....
|
|
|
|
|
Dec 6 2008, 10:34
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 26-02-07
Пользователь №: 25 680

|
Цитата(Dopler @ Dec 4 2008, 12:10)  Запустил свою железку. Китайцы малость обманули с разрешением телевизора (заявлено 480х234), а на самом деле получилось 460х272. Развертка прогрессивная (50 гЦ), 4 цвета (2 бита на цвет). Все это поместилось в 24 ячейки EPM3032A + один аппаратный ШИМ меги 48 для генерации синхроимпульсов + 2 микросхемы последовательной памяти N256S08 для двойной буфферизации. Спасибо что поделились результатами. Вопрос, у вас 4 цвета, вы пишете. То есть, вы выводите черно-белое изображение? Нет цветности, нет color burst? Как определили разрешение TFT ящика? При вашем разрешении в 480 точек края символов размазывались? И подобрали опытным путем 460? И все же на счет двойной буферизации. Если у вас 2 бита на точку, а не на цветовой канал, то в одном байте у вас помещается 4 точки. Думаю, вы бы все успели и с одной микросхемой памяти.....
|
|
|
|
|
Dec 6 2008, 21:11
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425

|
Цитата(Лунь @ Dec 6 2008, 13:34)  Спасибо что поделились результатами. Вопрос, у вас 4 цвета, вы пишете. То есть, вы выводите черно-белое изображение? Нет цветности, нет color burst? Как определили разрешение TFT ящика? При вашем разрешении в 480 точек края символов размазывались? И подобрали опытным путем 460? И все же на счет двойной буферизации. Если у вас 2 бита на точку, а не на цветовой канал, то в одном байте у вас помещается 4 точки. Думаю, вы бы все успели и с одной микросхемой памяти..... Да, изображение черно-белое, 4 цвета - черный, два серых и белый. С разрешением ящика все до сих пор не ясно. Проверял я его просто выводя картинку известной величины. Во всех инструкциях (к телевизорам разных фирм) заявлено разрешение матрицы 480х234. Я не мог понять, как он в 234 строки помещает телевизионный сигнал, в котором 576 строк (при черезстрочной развертке) или 288 при прогрессивной. Я думал, что он и берет только 234 строки из 288, остальные отбрасывает. Оказалось, что картинка 480*234 помещается полностью, плюс остается назанятая полоса примерно 10%, т.е. на своем экране данный телевизор отображает все положенные строки. Т.е. либо китайцы брешут в инструкции, либо там действуют какие-либо сжимающие алгоритмы. Еще один не ясный момент - по идее на экран должно выводится 52 мкс сигнала (12 мкс из 64 занимает строчный импульс), из этих соображений я и расчитывал частоту тактового генератора, чтобы в 52 мкс уложить 480 точек. В итоге данный телевизор выводит на экран только 50 мкс сигнала, поэтому разрешение получается 460 точек. Скорее всесго в дальнейшем повышу частоту до 10 мГц, что даст 500 точек по горизонтали. На TFT ящике ничего не размазывается, не по краям, не по середине. Да действительно, 4 точки в одном байте. Чтобы хранить один экран целиком (а двойная буфферизация это и подразумевает - один буфер на экране, другой формируется) необходимо - 480*234*2 = 224640 бит, что как раз помещается в одну 32К память. Отсюда следует, что для организации двух буферов нужно две таких памяти.
|
|
|
|
|
Dec 8 2008, 08:44
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 26-02-07
Пользователь №: 25 680

|
Цитата(Dopler @ Dec 7 2008, 00:11)  Да действительно, 4 точки в одном байте. Чтобы хранить один экран целиком (а двойная буфферизация это и подразумевает - один буфер на экране, другой формируется) необходимо - 480*234*2 = 224640 бит, что как раз помещается в одну 32К память. Отсюда следует, что для организации двух буферов нужно две таких памяти. А! Понял, вы применили 2 буфера чтобы в одном формировать, а из другого выводить, другими словами, формируете изображение довольно медленно, и чтобы не утомлять этим пользователя, формируете, а потом перещелкиваетесь на другую SRAM. Про размазывание я имел в виду тот случай, когда вы выводите например 400 точек на строку, а их на TFT реально 500, то что будет получаться в результате такого несовпадения? Например, контрастные изображения, типа черная буква на белом фоне у вас, не появляется ли каких-то хвостов? Ну там, полутона какие-нибудь? Спасибо что делитесь информацией.
|
|
|
|
|
Dec 9 2008, 06:41
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425

|
Цитата(Лунь @ Dec 8 2008, 11:44)  А! Понял, вы применили 2 буфера чтобы в одном формировать, а из другого выводить, другими словами, формируете изображение довольно медленно, и чтобы не утомлять этим пользователя, формируете, а потом перещелкиваетесь на другую SRAM. Да, именно так. Цитата Про размазывание я имел в виду тот случай, когда вы выводите например 400 точек на строку, а их на TFT реально 500, то что будет получаться в результате такого несовпадения? Например, контрастные изображения, типа черная буква на белом фоне у вас, не появляется ли каких-то хвостов? Ну там, полутона какие-нибудь? Спасибо что делитесь информацией. Да, получается, но это уже практически не заметно с растояния 20-30 см. В самом начале экспериментов я выводил на экран частую сетку ( с ячейкой 4 пиксела), если смотреть в упор, то видно, что белые полосы с одной стороны обрамляются серым полутоном. В данном случае этого никак не избежать, так как сигнал аналоговый, телевизор его цифрует, частоты генераторов идеально не совпадают, поэтому джиттер на один пиксел будет в любом случае.
|
|
|
|
|
Dec 9 2008, 08:42
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 26-02-07
Пользователь №: 25 680

|
Цитата(Dopler @ Dec 9 2008, 09:41)  Да, именно так. Да, получается, но это уже практически не заметно с растояния 20-30 см. В самом начале экспериментов я выводил на экран частую сетку ( с ячейкой 4 пиксела), если смотреть в упор, то видно, что белые полосы с одной стороны обрамляются серым полутоном. В данном случае этого никак не избежать, так как сигнал аналоговый, телевизор его цифрует, частоты генераторов идеально не совпадают, поэтому джиттер на один пиксел будет в любом случае. Спасибо большое, все ясно. Осталось найти время и доделать. Пока есть только синхронизация. По вашему опыту, решил тоже делать 2 буфера.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|