Полная версия этой страницы:
Подключение LCD к ПЛИС
the Devil incarnate
Jul 17 2013, 15:40
Всем привет. Только начинаю изучать ПЛИС, в наличии Spartan 3E на отладочной плате. Хочется запустить LCD-дисплей,
такой вот. Написал на VHDL все пункты инициализации, погонял на симуляторе, всё, вроде, работает. Осталось только один пункт выполнить, а именно, вывод изображения по SPI. Сам SPI уже организовал. А как изображение описать на VHDL, не знаю. Может кто знает?
Lmx2315
Jul 17 2013, 16:00
QUOTE (the Devil incarnate @ Jul 17 2013, 19:40)

А как изображение описать на VHDL, не знаю. Может кто знает?
..массив наверное надо создать с изображением, как же ещё.
Внутри массива разноцветные точки, размерности массива - координаты.
Александр77
Jul 17 2013, 16:36
А какое изображение то генерить?
Произвольное изображение скорее всего надо хранить в памяти.(это мое мнение)
Легче сгенерировать "тестовое" изображение, например шахматное поле, цветовые полосы и т.п.
Iptash
Jul 17 2013, 17:23
Видимо сначала надо научиться выводить точку на экран по заданным координатам и цвета (т.е. создать функцию). Потом изучить например BMP файл.
Создать функцию декодирования bmp файла. И все, загружаете bmp изображение через например RS232 в ваш чип и ...
Александр77
Jul 17 2013, 17:31
Выкинуть 56 первых байт дело не хитрое. Что делать когда картинка больше области экрана - вот где страсти начинаются.
Maverick
Jul 17 2013, 17:56
Цитата(the Devil incarnate @ Jul 17 2013, 18:40)

Всем привет. Только начинаю изучать ПЛИС, в наличии Spartan 3E на отладочной плате. Хочется запустить LCD-дисплей,
такой вот. Написал на VHDL все пункты инициализации, погонял на симуляторе, всё, вроде, работает. Осталось только один пункт выполнить, а именно, вывод изображения по SPI. Сам SPI уже организовал. А как изображение описать на VHDL, не знаю. Может кто знает?
на мой взгляд надо еще организовать в памяти (SRAM, DDR или какой-то другой) фрейм-буфер на 2 экрана. Из одного фрейм-буфера происходит постоянная вычитка (вывод на экран изображение - обновление экрана), в это время обновляется (перезаписывается в памяти) другой фрейм-буфер для другого изображения (следующий экран). Как только формирование нового экрана закончилось, т.е. второй фрейм-буфер переписался - переключается вычитка на второй фрейм-буфер. Начинает обновляться первый фрейм-буфер новым изображением, т.е. перезаписывается в памяти. И так далее по кольцу...
Откуда и как будут формироваться/поступать изображения Вам решать...и как управлять Touch Screen Interface тоже...
P.S. SPI serial для вывода изображения не очень хороший интерфес, лучше 18-bit parallel, 16-bit parallel, 8-bit parallel, но конечно все зависит какое обновление экрана Вы хотите т.е. от кадров/сек или частей кадра...
Александр77
Jul 17 2013, 18:50
Если картинка статична и меняется очень редко, то можно хранить ее во внешней памяти (если внутренняя память меньше размера изображения), из внутренней сделать двухпортовую на одну строку.
the Devil incarnate
Jul 18 2013, 06:23
Прочитал всё вышенаписанное и понимаю, что никто не подключал LCD-шку к ПЛИСине, у всех, как и у меня, только какие-то абстрактные идеи и ничего конкретного. Ну, ничего не поделать! Придётся самому бурить эту скважину. Буду пробовать, конечно сначала какое-то тестовое изображение, может просто точку (хотя, она слишком маленькая, на мой взгляд, и её можно не заметить), а потом уже и с динамикой можно разобраться. Главное, понять принцип, что писать, куда писать и как. А этого-то пока и не понятно. Видимо, сказывается нехватка знаний в области языка VHDL.
RTL Hardware Design книга автора Chou. Там правда VGA контроллер разобран с примерами, но описанные принципы понятны даже начинающему.
Inanity
Jul 18 2013, 07:42
Цитата(the Devil incarnate @ Jul 18 2013, 10:23)

Прочитал всё вышенаписанное и понимаю, что никто не подключал LCD-шку к ПЛИСине, у всех, как и у меня, только какие-то абстрактные идеи и ничего конкретного. Ну, ничего не поделать! Придётся самому бурить эту скважину. Буду пробовать, конечно сначала какое-то тестовое изображение, может просто точку (хотя, она слишком маленькая, на мой взгляд, и её можно не заметить), а потом уже и с динамикой можно разобраться. Главное, понять принцип, что писать, куда писать и как. А этого-то пока и не понятно. Видимо, сказывается нехватка знаний в области языка VHDL.
Очень смелое предположение. На языке описания цифровых схем изображение никто не описывает, это очень странно и нерационально. Для тестирования вам выше советовали вывести изображение какой-нть периодической структуры, это простой, понятный и незатратный тест. Для вашего дисплея всё уже давно придумано. И память есть и интерфейс к ней, остаётся только использовать по назначению.
Если хотите что-то интересное, возьмите LCD без контроллера с параллельным или lvds интерфейсом (подойдёт матрциа от ноута или же тот же VGA монитор). Прикрутите к нему фреймбуфер на двухпортовой памяти, добавьте разные интерфейсы для работы с этим фреймбуфером (SPI, I2C, UART). В плане обучения для начала будет полезно. На ПЛИС вообще очень много чего можно делать, лишь бы фантазия была. Удачи!
flopix
Jul 18 2013, 08:54
Вот интересная статья почти по теме с примером
http://habrahabr.ru/post/157863/
По моему, имея ФПГА под рукой - подключать дисплеи со встроенным контроллером - убожество. За небольшие деньги есть 7 и более дюймов с LVDS - вот их подключить куда интереснее
Цитата(DASM @ Jul 18 2013, 12:05)

По моему, имея ФПГА под рукой - подключать дисплеи со встроенным контроллером - убожество. За небольшие деньги есть 7 и более дюймов с LVDS - вот их подключить куда интереснее
Маркировку дисплея для примера приведете?
the Devil incarnate
Jul 18 2013, 13:33
Цитата(Inanity @ Jul 18 2013, 11:42)

...Для вашего дисплея всё уже давно придумано. И память есть и интерфейс к ней, остаётся только использовать по назначению...
Вот именно, что придумано. Только на данный момент я не понимаю, как изображение (любое, даже тестовое) вывести на экран. Какой код написать. Мне бы с этого начать. В теории то я всё понимаю, а вот как эту теорию в код превратить, не понимаю. Ещё раз повторюсь, что я только начинаю изучать ПЛИС. А идей-то полно, это же ПЛИС, практически неисчерпаемый инструмент. Твари что угодно.
ага, твари еще те.. может со светодиодов начать тогда ?
flopix
Jul 18 2013, 13:49
Построение графики это не задача для ПЛИС. Хотите поэксперементировать - прошейте в вашу ПЛИС дополнительно какое нибудь ядро процессора и выводите изображение читая например с карты памяти.
ну графика она понятие растяжимое.. кто мешает небольшой OpenGL сопроцессор замутить в ней ? А процик то как раз тормозил бы на этой задаче..
akorud
Jul 18 2013, 14:59
Цитата(the Devil incarnate @ Jul 18 2013, 15:33)

это же ПЛИС, практически неисчерпаемый инструмент. Твари что угодно.
Ох как много открытий вас ждет

. ИМХО - ПЛИС отличный, дорогой, специализированный инструмент который надо использовать когда нет другого выхода. Практически как девиз студии Лебедева
Если что - мы используем, но если бы можно было - с удовольствием применил бы DSP.
Ну.. я вот жду такого же ПЛИС как Zynq (2 * Cortex A9 + FPGA) и плюс еще C64x ядро. Но вряд ли дождусь по лицензионным соображениям. А какие собственно DSP задачи не решить на ПЛИС то ? Ну медленне там МАК выходит, ну так их можно 200 штук в средненькой ПЛИСке загнать, уже кроет С64 с его 6-ю как бык овцу..
Maverick
Jul 18 2013, 15:30
Цитата(the Devil incarnate @ Jul 18 2013, 16:33)

Вот именно, что придумано. Только на данный момент я не понимаю, как изображение (любое, даже тестовое) вывести на экран. Какой код написать. Мне бы с этого начать. В теории то я всё понимаю, а вот как эту теорию в код превратить, не понимаю. Ещё раз повторюсь, что я только начинаю изучать ПЛИС. А идей-то полно, это же ПЛИС, практически неисчерпаемый инструмент. Твари что угодно.
так Вам может начать с теории как строиться изображение на экране/дисплее и как оно там выводиться?
Цитата(flopix @ Jul 18 2013, 16:49)

Построение графики это не задача для ПЛИС. Хотите поэксперементировать - прошейте в вашу ПЛИС дополнительно какое нибудь ядро процессора и выводите изображение читая например с карты памяти.
можно и без процессора.
например для генерации какой-то тестовой картинки можно сделать и на логике с помощью небольшой FSM (какие-нибудь полосы- вертикальные, горизонтальные, наклонные), но начать наверно надо хотя бы с обычного закрашивания экрана...
Наклонные полосы хорошо проверяют синхронизацию и все устнановки счетчиков схемы...
Некоторые делают даже и вывод текста
akorud
Jul 18 2013, 15:45
Цитата(DASM @ Jul 18 2013, 17:07)

Ну.. я вот жду такого же ПЛИС как Zynq (2 * Cortex A9 + FPGA) и плюс еще C64x ядро. Но вряд ли дождусь по лицензионным соображениям. А какие собственно DSP задачи не решить на ПЛИС то ? Ну медленне там МАК выходит, ну так их можно 200 штук в средненькой ПЛИСке загнать, уже кроет С64 с его 6-ю как бык овцу..
Я вот кстати не понимаю почему на него все так молятся. Пробовали примерить к своим задачам - ну никак. И процессор слабый (точнее периферии мало) и логики мало. Куда универсальнее связка CPU + FPGA на плате.
А по теме - вы неправильно поняли. У нас задача которую можно решить
только на ПЛИС. Можно бы было решить на DSP - выбрали бы его (что-то SC3850, мне больше нравится).
Но приходится платить - долго, дорого, и ограниченные возможности конфигурации в процессе работы (а с partial reconfiguration ох как не хочется связывается).
Видимо задачи разные. Какой перифирии мало? Ее же сам на фпга и делаешь. 50000 лутов это конечно не Стратиксы, но хватит на многое. Объясню, что привлекло меня. Шина. AXI . Она быстрая, она документирована, это АРМ. Даже два по 800 мгц с NEON SIMD блоками, с двойной точностью. Это 4 way cache (емнип у с64 2way). итого за сотку баксов чип, который поддерживается Линуксом и Андроидом. Плюс виртуальная мауетка в виде фпга, на которую я могу повесить какую угодно перифирию на быструю шину. Какие альтернативны? Ну да ,Циклон5, ну так он же брат близнец.
akorud
Jul 18 2013, 16:52
Цитата(DASM @ Jul 18 2013, 18:30)

Видимо задачи разные. Какой перифирии мало? Ее же сам на фпга и делаешь. 50000 лутов это конечно не Стратиксы, но хватит на многое. Объясню, что привлекло меня. Шина. AXI . Она быстрая, она документирована, это АРМ. Даже два по 800 мгц с NEON SIMD блоками, с двойной точностью. Это 4 way cache (емнип у с64 2way). итого за сотку баксов чип, который поддерживается Линуксом и Андроидом. Плюс виртуальная мауетка в виде фпга, на которую я могу повесить какую угодно перифирию на быструю шину. Какие альтернативны? Ну да ,Циклон5, ну так он же брат близнец.
"Ну а теперь со всем этим мы попробуем взлететь" (с)

Ну вот например мало мне интерфейсов сетевых - делать на дорогущей логике класса Kintex? Ну уж извините, у нас частная фирма, нам зарабатывать надо

АРМ который поддерживается Линуксом и Андроидом - ну окошки порисовать красиво, да, не спорю

. Да и не слишком он и быстрый... У нас половина инженеров себе ZedBoard купили поиграться, но задачи у нас несколько иные. А AXI мы используем - хорошая вещь, очень.
Ну зато теперь знаю кого по Axi мучить. А раз половина купила — ну ведь не дураки у вас инженеры? я вот думаю что в ближайшие годы это станет основным трендом, фпга без арм станут архаикой (обратно не верно).Так что если звезды зажигают — значит кому-то это нужно. Я себе задачу нашел под Zynq, должен потянуть. Ну а в некоторых задачах только ASIC прокатит, цена за фпга кажется бросовой. Так что спор ни о чем. SoC в виде Virtex и, особенно, дешевые варианты Циклонов 5 и Zynq уверен имеют огромное будущее.
akorud
Jul 18 2013, 18:39
Да ясно, что спор ни о чем, с самого начала, и не спор, а дискуссия. Просто у меня тесты крутятся, делать нечего. А вот ТС мы уже совсем перепугали и запутали.
да чего тут путать, книга Чоу и вперед. Меня правда несколько удивил подход всю комбинаторику выносить always @* , я то обычно простые ветвления делаю в синхронном блоке, так короче. Но с другой стороны книга ясная и абсолютно понятная и полезная.
Maverick
Jul 18 2013, 19:51
Цитата(DASM @ Jul 18 2013, 21:33)

...SoC особенно, дешевые варианты Циклонов 5 и Zynq ...
было бы не плохо если еще подешевеле
Цитата(DASM @ Jul 18 2013, 13:17)

Странно, посмотрел - интерфейсы паралельные,
Цитата(DASM @ Jul 18 2013, 12:05)

За небольшие деньги есть 7 и более дюймов с LVDS - вот их подключить куда интереснее
Может не туда смотрел?
Да, прошу прощения, это параллельные, но они rgb, ни памяти кадра, ни мозгов у них нет, ПЛИС нужна. С лвдс идут уже мониторные панели.
Цитата(DASM @ Aug 8 2013, 07:36)

С лвдс идут уже мониторные панели.
Таблица интерфейсовПримерный экземпляр.Оказывается бывают и не мониторные. Но пока особой разницы по подключению - не заметил, хотя сигналов чуть меньше.
SpyBot
Aug 17 2013, 09:14
Цитата(the Devil incarnate @ Jul 18 2013, 10:23)

Прочитал всё вышенаписанное и понимаю, что никто не подключал LCD-шку к ПЛИСине, у всех, как и у меня, только какие-то абстрактные идеи и ничего конкретного.
Мне кажется, что как раз именно конкретики было много, и ее вы как раз то и не поняли

На альтере вроде вашу задачу проще реализовать, т.к. имеются большие объемы памяти, с возможностью предварительной инициализации.
Вот, например, в самый мелкий циклон2 помещается картинка для дисплея 320х240 с 24-х битным цветом!
(здесь правда 24 битность не видна, т.к. картинка тестовая для подгонки RGB

но реально цвет именно 24 битный!)
Всегда демонстрирую начальству исключительно голых баб на ЖКИ, очень повышает тонус и зп
Corner
Aug 18 2013, 17:41
У меня электролюминесцентник подключен к связке 5576ХС1 + 1986ВЕ91Т, в ПЛИС только генератор физического уровня, а картинка в Кортексе в ОЗУ. Ничего так, работает.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.