Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MicroBlaze & XPS_TFT
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
xor.kruger
Доброго времени суток!

Решил к платке Spartan3E StarterKit (spartan3e500) прикрутить стандартную корку XPS_TFT от Xilinx.
Судя по документации данная корка умеет работать как с DVI интерфейсом (используя все навороты и конфигурацию по шине I2C) так и с простыми VGA дисплеями.

В опциях корки указал следующие параметры:
Код
BEGIN xps_tft
PARAMETER INSTANCE = xps_tft_0
PARAMETER HW_VER = 2.01.a
PARAMETER C_DCR_SPLB_SLAVE_IF = 1
PARAMETER C_TFT_INTERFACE = 0
PARAMETER C_DEFAULT_TFT_BASE_ADDR = 0x47000000
PARAMETER C_SPLB_BASEADDR = 0x86e00000
PARAMETER C_SPLB_HIGHADDR = 0x86e0ffff
BUS_INTERFACE MPLB = mb_plb
BUS_INTERFACE SPLB = mb_plb
PORT SYS_TFT_Clk = clock_generator_0_CLKOUT3
PORT TFT_HSYNC = xps_tft_0_TFT_HSYNC
PORT TFT_VSYNC = xps_tft_0_TFT_VSYNC
PORT TFT_VGA_R = xps_tft_0_TFT_VGA_R
PORT TFT_VGA_G = xps_tft_0_TFT_VGA_G
PORT TFT_VGA_B = xps_tft_0_TFT_VGA_B
PORT IP2INTC_Irpt = xps_tft_0_IP2INTC_Irpt
END

На плате также имеется банка DDR памяти размером в 64 МБайта. Адресное пространство у нее составляет 0x44000000 - 0x47ffffff.
Соответственно базовый адрес для видеопамяти в ОЗУ составляет - 0x47000000
Так как каждый из трех каналов является 6ти разрядным - то пины в ucf файле прописаны следующим образом:
Код
# VGA

Net xps_tft_0_TFT_HSYNC_pin LOC=F15 |  IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST;
Net xps_tft_0_TFT_VSYNC_pin LOC=F14 |  IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST;

Net xps_tft_0_TFT_VGA_R_pin<5> LOC=H14 | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST;
Net xps_tft_0_TFT_VGA_R_pin<*>  IOSTANDARD = LVTTL;
Net xps_tft_0_TFT_VGA_G_pin<5> LOC=H15 | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST;
Net xps_tft_0_TFT_VGA_G_pin<*>  IOSTANDARD = LVTTL;
Net xps_tft_0_TFT_VGA_B_pin<5> LOC=G15 | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST;
Net xps_tft_0_TFT_VGA_B_pin<*>  IOSTANDARD = LVTTL;


В общем суть проблемы следующая - на разъем "валят" hsync и vsync с нужными таймингами (монитор отлично определяет режим), а вот картинки нету вообще, то есть на линиях данных постоянно находится лог. ноль (проверял осциллографом). Данная проблема имеет место быть если вывод осуществляется как с помощью Standalone так и при использовании GNU/Linux (Framebuffer и все дела...)

Кто нибудь использовал данную кору? Были бы какие нибудь проблемы, или же наоборот - успех? sm.gif
Заранее спасибо за любой ответ sm.gif
xor.kruger
Добился вывода на монитор standalone приложением. Проблема была в том (хотя как бы проблемой это не совсем можно назвать), что кэшировалась область ОЗУ, по которой была "расположена" видеопамять.

Теперь буду добиваться вывода консоли линукса через фреймбуфер (драйвер xilinxfb)
xor.kruger
В общем драйвер фрейм-буффера от xilinx в составе ядра GNU/Linux вполне сносно работает, а в купе с xilinx_ps2 получается очень сносная игрушка sm.gif
Serb1987
Добрый день, а вы не могли бы более подробно объяснить как подключить данный IPCore (к Microblaze, я так понимаю) при помощи EDK или ISE. Простите за тупые вопросы но я новичек и очень хочу разобраться в тонкостях данного вопроса.
С уважением!
xor.kruger
Создаете проект в EDK с необходимой вам периферией. Потом через IP-Catalog добавляете кору XPS_TFT, минимальное требование для данной коры - это наличие ОЗУ, в моем случае это была DDR-ка повешенная на PLB шину.
В опциях коры указываете базовый адрес видеопамяти в ваше ОЗУ и как будут выводится данные на монитор - TFT или VGA (я использовал VGA). VGA выбирается в том случае если снята галочка с опции C_TFT_INTERFACE. Потом цепляете MPLB и SPLB на шину PLB и генерите адреса для коры.

Также для данной коры необходим сигнал тактирования в 25 МГц, их можно получить как с помощью коры Clock_generator так и зависти снаружи, например, от кварцевого генератора. Во вкладке Ports указываете внешние порты и источник тактирования коры (линию прерывания я не использовал). Минимальный набор внешних портов - HSYNC, VSYNG и RGB.
Теперь осталось дело за малым - описать сигналы в ucf-файле.
Проверка работоспособности происходит очень просто - если все правильно подключено, сразу после заливки битника в ПЛИС вы увидите мусор на экране.
Пример работы на C с этой корой можно найти в каталоге
Код
Xilinx/14.3/ISE_DS/EDK/sw/XilinxProcessorIPLib/drivers/tft_v3_00_a

Если юзаете Linux на микроблейзе то драйвер там также имеется - заводится с пол-пинка.
Так что как видите никаких тонкостей в данном вопросе нету sm.gif
Serb1987
Спасибо, буду пробовать, но я думаю что еще обращусь к вам за помощью wink.gif
Serb1987
Подскажите, как установить опции корки - вообще не могу найти(открыл configure IP, но там ничего толком нет)?
Как должны соотносится адреса (бэйс и хай) корки с остальной периферией?
На всякий случай - у меня версия пакета ISE 14.2
Спартан 3Е Стартер кит
xor.kruger
Цитата
открыл configure IP, но там ничего толком нет

Как это нету? Смотрите внимательно!
В configure IP необходимо убрать галочку напротив C_TFT_INTERFACE и указать адрес в ОЗУ по которому будут располагаться ваши данные.
Цитата
Как должны соотносится адреса (бэйс и хай) корки с остальной периферией?

Думаю что в вашем случае все равно, выставите размер адресного пространства 64К и перегинерируйте адреса с помощью кнопки "Generate Address"
xor.kruger
ЗЫ: фото коры в действие под "управлением" драйвера xilinxfb (качество не очень)
toshas
Цитата(Serb1987 @ Dec 12 2012, 17:38) *
Подскажите, как установить опции корки - вообще не могу найти(открыл configure IP, но там ничего толком нет)?
Как должны соотносится адреса (бэйс и хай) корки с остальной периферией?
На всякий случай - у меня версия пакета ISE 14.2
Спартан 3Е Стартер кит



Вот пошаговая инструкция (описание какой-то зарубежной лабораторной работы), все должно заработать.

Мне гораздо более интересен поднятый на sp3e kit линукс, вы использовали сборку xilinx ? (http://wiki.xilinx.com/) или что-то стороннее ?
делали по какому-то мануалу? или все сами ? не могли бы набросать краткий how-to ? )

спасибо!
xor.kruger
Тулчейн брал с git xilinx. Ядро - ваннила 3.6 с kernel.org. RootFS - busybox. Загрузчик SrecBootloader и U-Boot.
Все стандартно - никаких особенностей.
Serb1987
Спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.