Autor Tema: VGA en FPGA spartan3  (Leído 24632 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado aNdReS_164

  • PIC10
  • *
  • Mensajes: 11
VGA en FPGA spartan3
« en: 19 de Febrero de 2006, 21:12:00 »
nesecito ayuda... como se programa el VGA en una fpga  spartan 3

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: VGA en FPGA spartan3
« Respuesta #1 en: 20 de Febrero de 2006, 02:25:00 »
Bueno andres tu pregunta es equivalente a decir que como se fabrica un coche en una fabrica de coches. Voy a tratar de darte una pequeña introducción.

Las señales que intervienen en la VGA son 5: el RGB, la sincronicacion vertical y la sincronizacion horizontal. Según como se generen las sincronizaciones, tendrás diferentes resoluciones. Para una resolucion de 640*480, debes dar 640 pulsos de sincronismo horizontal y luego uno de sincronismo vertical. Para enviar un pixel, hay que colocar el color RGB, y dar un pulso en el sincronismo horizontal. No se si has entendido el funcionamiento.

Lo más fácil es buscar un módulo que te genere los sincronismos, que hay muchos por la red. Normalmente, éste módulo de dará una señal de reloj con la cual puedes enviar la informacion del color RGB a la pantalla.

Aqui tienes uno: http://www.eecg.toronto.edu/~singhd/241/vgacon.htm

Aqui tienes otro: http://www.codecomments.com/archive378-2005-5-500025.html

Con éstos módulos sólo tendrás el sincronismo y una forma fácil de mostrar píxeles por pantalla. Para poder mostrar, carácteres, deberás hacer algo más complejo. Si buscas por la red seguro que encuentras proyectos ya acabados que generan caracteres.

Si tienes alguna otra duda, pregunte ustedSonrisa Gigante

Desconectado GeoMX

  • PIC10
  • *
  • Mensajes: 46
RE: VGA en FPGA spartan3
« Respuesta #2 en: 21 de Febrero de 2006, 00:58:00 »
Estoy en un curso de electrónica digital donde usaremos VHDL principalmente (es mi primer contacto con este lenguaje y con hardware reconfigurable en general), estoy pensando en el tema para mi proyecto final, y me interesa lo del VGA. ¿Alguien tiene algo más de información sobre el "timing" de las señales? Algo que pueda leer para ir comprendiendo (bueno, el código de los enlaces que colocó antoniof me servirá de ayuda, aunque aún estoy Vacilando.

Aún no me decido por hace algo con VGA para mi proyecto, pero trataré de decidirlo pronto (si es que puedo hacerme con una tarjeta con un Spartan 3 para comenzar a moverle "en serio"Giño.

Saludos,
José Jorge.

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: VGA en FPGA spartan3
« Respuesta #3 en: 21 de Febrero de 2006, 01:53:00 »
Con la VGA se puede hacer de todo. Desde mostrar por pantalla un texto simple, hasta el juego del tetris a color.

Todo depende de la FPGA que utilices y la memoria que tenga.

Para los que no encuentren nada mas por la red, les puedo buscar el proyecto que hice con VGA y microblace en una spartan3 XC3S200 de 200000 puertas. Muestra texto y tal pero lo tengo buscar el viernes.

Desconectado GeoMX

  • PIC10
  • *
  • Mensajes: 46
RE: VGA en FPGA spartan3
« Respuesta #4 en: 21 de Febrero de 2006, 02:08:00 »
Escrito originalmente por antoniof
Con la VGA se puede hacer de todo. Desde mostrar por pantalla un texto simple, hasta el juego del tetris a color.

Mmmmh, creo que me voy animando con algo de VGA para mi proyecto.

Microblaze es un microprocesador implementado en un FPGA ¿no? A pesar de que en algún libro que vi en Amazon.com se implementaba un microprocesador (si mal no recuerdo uno de 16 bits) y bien podría seguirlo lo siento algo fuera de mi alcance por el momento. Aún así, sería grandioso poder contar con tu proyecto para echarle un lente Muchas risas.

Por lo pronto me interesaría poder manejar un monitor VGA para poder mostrar en él lo que quiera, tras conseguirlo me enfocaría a realizar alguna aplicación que aproveche esto.

Saludos,
José Jorge (GeoMX).

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: VGA en FPGA spartan3
« Respuesta #5 en: 21 de Febrero de 2006, 02:50:00 »
Bueno geomx.

En primer lugar te queria comentar que mi proyecto esta echo con el platform studio de xilinx y con microblaze.

Con este entorno de desarrollo, lo que hice fue construir una plataforma hardware que incluye, en mi caso, el controlador de VGA, el microblaze(procesador de 32bits), la memoria cache del micro(8KBytes), un controlador de bus para comunicar el micro con la vga y controlador de memoria SDRAM externa.

Después el micro se programa en C normal con sus funciones y subrrutinas para mostrar por pantalla "lo que quieras". Este lo que quieras es cierto, siempre que tu FPGA tenga memoria suficiente para almacenar los datos antesde mostrarlos. Te pongo un ejemplo: En modo texto monocromo, una VGA con resolucion de 640 * 480 pixeles y con un tamaño de caracter de 8*8 pixeles necesitas, 8*8*128 = 8192 bits = 1024 Bytes para almacenar los caracteres en una ROM y 4800 Bytes de RAM para almacenar los carácteres que se van a mostrar por pantalla. En total 5824Bytes para una pantalla de 640 * 480 sólo texto monocromo. Esta emmoria las tienen todas las FPGAs.

Si lo que quieres es VGA modo gráfico de 640*480 256 colores, neceitarás 307200Bytes. Esta memoria ya es más dificil encontrarla dentro de un FPGA. Tendrías que ponerla externa y hacer un controlador de memoria para la VGA muy rápido.

Es totalmente posible pero es muy complicado, sobre todo si acabas de empezar en este mundillo. Además ésta es la única forma de hacer algo en condiciones sin morir en el intento, es decir, con un microprocesador, memorias, y programando en C.
En mi proyecto fin de carrera, hice una grabadora de CD/DVD y reproductor MP3 con una FPGA mostrando por pantalla datos como, tiempos de pistas, navegador de archivos del CD, iconos, barras de prograso de grabación, etc, y todo a base de lógica combinacional y secuencial sin ningún micro ni controlador de VGA ni nada, pero tardé un año completo y consumi todos los recursos de una Virtex XCV800.

Si aprendes a utilizar el xilinx platform studio, puedes hacer algo interesante en bastante menos tiempo.

Desconectado aNdReS_164

  • PIC10
  • *
  • Mensajes: 11
RE: VGA en FPGA spartan3
« Respuesta #6 en: 21 de Febrero de 2006, 07:17:00 »
hola para todos ... antonio agradesco la ayuda que me has brindado ... pero tengo algunas dudas ya que estuve implemntando  lo de sincronizar las señales pero no entiendo como cuadro los tiempos perfectamente.... en las pagina que hay otro foro , esta un codigo de un controlador funcionando .

en mi proyecto el procesador esta fuera de la FPGA y es el mc68000 , posiblemente en paralelo con un misma unidad microprocesada, esto con el fin de procesar un red interconexion y poder porcesar imagenes y sonido .

yo lei acerca de como sincronizar las señales verticlaes y horinzontales , pero realmente no entendi para que son las señales de puntero de pixel , unque podria deducir que es para direccionar la ram. si queres te mando el codigo y le das un ojeada.... pues para que me des consejos . el codigo que te voy a mandar no lo hice yo pero lo voy a utilizar como base.

en el proyecto solo me toca mostrar fotos de un catalogo virtual en linea .. pero seria genila mostrar fotos y video.  por otro lado no se si sabes de algun algoritmo de compresion y descomprecion de imagenes todo para el manejo de la informacion en la red. porque posiblemente la descompresion se haga en la fpga.


att, andres G Prada

Desconectado aNdReS_164

  • PIC10
  • *
  • Mensajes: 11
RE: VGA en FPGA spartan3
« Respuesta #7 en: 21 de Febrero de 2006, 07:22:00 »
mi mail es andres_209@hotmail.com por si me quieren mandar algun tipo de informacion .... antonio me puedes mandar tu proyecto para leerlo.

gracias.

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: VGA en FPGA spartan3
« Respuesta #8 en: 21 de Febrero de 2006, 09:05:00 »
Estoy en el curro y hasta el viernes no llego a casa para poder colgar mi proyecto.

En la pagina http://www.opencores.org/ hay un compresor/descompresor JPEG para fotos y video, por si te interesa.

Desconectado aNdReS_164

  • PIC10
  • *
  • Mensajes: 11
RE: VGA en FPGA spartan3
« Respuesta #9 en: 21 de Febrero de 2006, 13:39:00 »
antonio no si tenes los pdf para progrmar lo dispositivos de entrada y salido de la targeta .. lo que pasa es que nesecito probar la targeta con el monitor

gracias

Desconectado GeoMX

  • PIC10
  • *
  • Mensajes: 46
RE: VGA en FPGA spartan3
« Respuesta #10 en: 21 de Febrero de 2006, 20:03:00 »
Escrito originalmente por antoniof
Bueno geomx.

En primer lugar te queria comentar que mi proyecto esta echo con el platform studio de xilinx y con microblaze.

Con este entorno de desarrollo, lo que hice fue construir una plataforma hardware que incluye, en mi caso, el controlador de VGA, el microblaze(procesador de 32bits), la memoria cache del micro(8KBytes), un controlador de bus para comunicar el micro con la vga y controlador de memoria SDRAM externa.


Por ello es que te mencionaba que lo considero algo completamente fuera de mi alcance por el momento (sobretodo porque el proyecto lo entrego en máximo unos tres meses). Ahora entiendo mejor, es como que te creaste tu propia computadora, y luego la programaste en C (sería como que ahorita me hago un programita en Allegro para mostrar cosas en pantalla Vacilando.

Pues bien, lo que por ahora pienso (para lo del trabajo) es simplemente mostrar una animación en el monitor, quizá algún objeto que pueda mover yo mediante algún control (o simplemente con pulsadores, que la tarjeta de desarrollo que quizá adquiera los tiene), quizá pensando en implementar un juego como el Pong.

Saludos,
José Jorge (Geo).

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: VGA en FPGA spartan3
« Respuesta #11 en: 22 de Febrero de 2006, 02:10:00 »
Escrito originalmente por aNdReS_164
antonio no si tenes los pdf para progrmar lo dispositivos de entrada y salido de la targeta .. lo que pasa es que nesecito probar la targeta con el monitor

gracias


Andres hay en la red proyectos hechos para la targeta S3 Starter Kit para probar la VGA. Por cierto si me dices que targeta de desarrollo tienes te puedo encontrar algo.

Escrito originalmente por Geomx

Pues bien, lo que por ahora pienso (para lo del trabajo) es simplemente mostrar una animación en el monitor, quizá algún objeto que pueda mover yo mediante algún control (o simplemente con pulsadores, que la tarjeta de desarrollo que quizá adquiera los tiene), quizá pensando en implementar un juego como el Pong.



Incluso para hacer esto, te recomiendo encarecidamente que utilices un sistema microprocesador-memoria-vga, sobretodo si lo tienes que entregar en 3 meses. Te aseguro que vas a tardar mucho menos en implementar este sistema que en hacerlo "a pelo".

Por cierto Geomx, que targeta tienes?

Desconectado GeoMX

  • PIC10
  • *
  • Mensajes: 46
RE: VGA en FPGA spartan3
« Respuesta #12 en: 23 de Febrero de 2006, 23:52:00 »
Aún no tengo tarjeta, probablemente adquiera esta:

http://www.digilentinc.com/Products/Detail.cfm?Nav1=Products&Nav2=Programmable&Prod=S3BOARD

Aunque en la página de Xilinx vi listado el "Starter Kit" que lo ofrecen en un paquete con un ¿CPLD?, el problema es que no describen bien los elementos de la tarjeta (bueno, por allí debe haber un manual pero no tuve tiempo de checar las descargas).

Tienes razón en que la opción microprocesador-controladorVGA sería más potente, pero creo que bien se puede lo que deseo sin tener que implementarlos, he encontrado algunas porciones de código como estas:

Codigo:

-- VGA stuff
process (clk25) begin
   if(rising_edge(clk25)) then
      if(posx>=799) then
         posx<= (others=>"0");
      else
         posx<=posx+1;
      end if;

      if(posy>= 524 and posx= 699) then
         posy<= (others=>"0");
      elsif(posx= 699) then
         posy<= posy + 1;
      end if;
   end if;
end process;

hs<= "0" when posx >= 659 and posx <= 755 else "1";
vs<= "0" when posy >= 493 and posy <= 494 else "1";
video<= "1" when posx <640 and posy <480 else "0";
r<= rint when video= "1" else "0";
g<= gint when video= "1" else "0";
b<= bint when video= "1" else "0";



Y veo que se puede hacer algo con lo del VGA sin implementar la arquitectura que mencionas Sonrisa.

Saludos,
José Jorge (Geo).

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: VGA en FPGA spartan3
« Respuesta #13 en: 24 de Febrero de 2006, 01:33:00 »
Efectivamente geomx ese módulo tiene buena pinta y se encarga de los sincronismos de la VGA y además es imprescindible para `pintar algo en al VGA.

Ahora una pregunta: como vas a pintar un caracter en la pantalla o un un juego del tipo pong?

El controlador de la vga, lo que hace es con éste módulo y con una memoria ram, monitorizar los vectores posx y posy y el flag video, leer de la ram el valor del RGB correspondiente y ponerlo en rint, gint y bint respectivamente. Éste controlador, te facilita muchisimo el poder dibujar cosas en la pantalla, ya que con un micro, puedes escribir el valor del RGB de cada pixel en la memoria RAM y se mostrará por pantalla sin más problemas.

Si no pones ni micro ni controlador ni RAM, tendrás que diseñar un MEGAmultiplexor que con el valor de posx y posy te pinte un RGB u otro. Créeme que yo he echo las dos opciones y la segunda es morirse o volverse loco loco

En cuanto a la placa, esa es precisamente la que yo he comprado en digilent y me va muy bien. Si te compras esa, voy a poder ayudarte al 100%, ya que voy a poder probar cualquier cosa que hagas.

Desconectado GeoMX

  • PIC10
  • *
  • Mensajes: 46
RE: VGA en FPGA spartan3
« Respuesta #14 en: 25 de Febrero de 2006, 00:55:00 »
je, veo que habrá que leer y trabajar mucho más Sonrisa. Bien, por lo pronto a ver si puedo conseguirme la tarjeta lo antes posible.

Saludos,
José Jorge (Geo).


 

anything