Programación de FPGA's

Subforo dedicado exclusivamente a la electrónica y a la robótica, incluyendo la programación orientada a la robótica en sí.
Robots con patas, ruedas, orugas, humanoides, insectoides, ... ¡Sed todos bienvenidos!

Moderador: nake

Avatar de Usuario
barkeg
Robot, ¡mata a Flanders!
Mensajes: 391
Registrado: Lun Jun 07, 2010 8:56 pm

Programación de FPGA's

Mensajepor barkeg » Lun Dic 15, 2014 4:36 pm

Estoy mirando un poco para meterme en el tema de FPGAs. He leído un poco y parece que es una herramienta muy útil sobre todo a la hora he realizar cálculos en paralelo. Pensad que se implementa directamente en Hardware, no hay ningún S.O. en medio, ni tiene que ser secuencial el programa porque es una máquina de estados.

El tema es que me interesa para el análisis de imágenes. Como sabeís muchos algorítmos son díficiles de implementar en el ordenador por no poder paralelizar los cálculos, es decir, hacer varios cálculos a la vez.

Un ejemplo es la Kinect. La Kinect hace el análisis de imágen y el cálculo 3D internamente. Sin embargo, cuando uno intenta implementar el mismo algoritmo en un ordenador mediocre va a ir bastante apretado.

Quería preguntar si alguién tiene experiencia con FPGAs, qué aconsejais para aprender, y que modelos usar, teniendo en cuenta la finalidad. Alguna idea cómo comunicar con una cámara? Me sirve cualquier protocolo o tiene que ser algo específico?
El conocimiento humano pertenece al mundo!
Avatar de Usuario
barkeg
Robot, ¡mata a Flanders!
Mensajes: 391
Registrado: Lun Jun 07, 2010 8:56 pm

Re: Programación de FPGA's

Mensajepor barkeg » Jue Ene 22, 2015 9:18 pm

Acabo de probar mí primer proyecto de la FPGA (a parte de los típicos de un LED que parpadea).

Al final he comprado la placa de desarollo Terasic DE0 Nano. Es bastante potente para su precio y además cuenta con mucho material en internet para aprender.

Lleva un convertidor AD, acelerometros en la placa, SDRAM etc. El inconveniente de esta placa es que no tiene salida VGA ni nada parecido para conectar una pantalla como otras placas de desarollo.

Bueno, he pensado que me la apaño. Como una señal VGA es bastante sencilla de generar me he hecho un pequeño diseño para pintar cosas en la pantalla.
A una resolución de 640x480 hará falta un reloj de 25.175MHz. Esta señal la genero a aprtir del reloj de 50MHz (que hacía arriba también se puede multiplicar, no sé hasta que punto llega pero a 500MHz no se ha quejado. Lo que no sé es la forma que tendrá la onda a esa frecuencia).

Con 3 resistencias convierto la señal digital a analógico. De momento solo soporta 8 Colores aunque el diseño lo hice para 24bits. El tema es que no quiero ocupar 8 pines de salida por canal para poner cosas en la pantalla. En total tendra alrededor de 100 pines y si quiero conectar cámaras por paralelo no me llegará.

La ventaja frente a un microcontrolador es que con añadir la salida VGA no saturo la FPGA porque se puede paralelizar. De hecho mi diseño usa un total de 40 elementos lógicos (de 22.320 que tiene!).

Añado fotos :

1.jpg


3.jpg


2.jpg
El conocimiento humano pertenece al mundo!
Avatar de Usuario
nake
管理者 (Admin)
Mensajes: 1994
Registrado: Vie Jun 04, 2010 4:10 pm
Ubicación: (sin(3t), 0, 0, t+10)
Contactar:

Re: Programación de FPGA's

Mensajepor nake » Vie Ene 23, 2015 11:46 pm

Dios, como mola! No sabía que VGA fuese tan sencillo. Y aunque uses pocos colores no creo que te importe demasiado. Juega con esos 8 colores y ya está, que tampoco necesitas nada del otro mundo para tu proyecto si es para debug. Y si vas a jugar con visión artificial la mayor parte de las imágenes que pasarás a la pantalla son las procesadas o a medio procesar, que en la mayor parte de los casos no te harán falta demasiados colores.
No se si con solo 8 te apañarás, pero supongo que lo que puedes hacer es añadir un solo cable extra por canal y así tienes más colores sin utilizar demasiadas lineas. Aunque como ya digo, no se cómo va el cable VGA así que no se si eso se puede hacer.

¿Más o menos cuánto cuesta esa FPGA? Tiene una pinta genial jajaja, ¡yo también quiero una! Aunque con el poco tiempo que tengo para dedicarle a mis trabajos personales... de aquí a que pueda utilizarla pueden pasar años jajaja
Mi clave pública de correo electrónico: http://www.nakerium.com/nakerium.gpg (Si no sabes lo que es lee este artículo)
Click aquí para ver mi email.


Programo aplicaciones a la carta (con soporte de por vida, para ingeniería o informática) y doy asesoramiento en seguridad informática. Si quieres más información mándame un email o un mensaje privado.
Avatar de Usuario
barkeg
Robot, ¡mata a Flanders!
Mensajes: 391
Registrado: Lun Jun 07, 2010 8:56 pm

Re: Programación de FPGA's

Mensajepor barkeg » Dom Ene 25, 2015 11:43 am

EL VGA es bastante sencillo. Realmente tiene dos señales de sincronización (una para cuando empieza una línea nueva de píxeles y otra para empesar otro frame) y 3 señales analógicas que corresponden con los 3 colores. La única díficultad es la relativamente alta frecuencia para dibujar los píxeles (50MHz para una resolución de 800x600).

Las 3 señales analógicas aceptan un valor entre 0 y 0,7V. Las salidas de la FPGA van a 3,3V. Con una escalera de resistencias te puedes montar fácilmente un convertidor DA de 8 bits para cada canal y así tendras tu imagen a 24bits. Yo, siendo vago, he metido solo una resistencia para acoplar el voltaje a 0,7V (la impedancia de la pantalla suele ser de 75 Ohmios). Realmente podrías añadir tantos cables extras como quisieras.

La FPGA me ha costado 80€ más o menos. En total me habré gastado 200 en componentes electrónicos xD.

Ayer me ha llegado el paquete del DX con las dos cámaras OV7670, 820 resistencias, cables, 200 transistores etc. Tendré para trastear tiempo ;)
El conocimiento humano pertenece al mundo!
Avatar de Usuario
barkeg
Robot, ¡mata a Flanders!
Mensajes: 391
Registrado: Lun Jun 07, 2010 8:56 pm

Re: Programación de FPGA's

Mensajepor barkeg » Jue Ago 06, 2015 6:08 pm

He conseguido mostrar por el VGA una imagen guardada en la RAM. Además, paralelamente puedo actualizar esta.
Funciona solamente a 4bits en blanco y negro porque es lo que me interesa para un futuro. He hecho un diseño que muestra unos rectangulos por pantalla que se van moviendo. Depués de esto he conectado la cámara para mostrar la imagen de esta. Peeeero trasteando con los cables he conectado uno de 9V en un sitio de 3.3V y he quemado la FPGA xD De momento esta parado el proyecto pero seguramente compraré otra para seguir adelante.
El conocimiento humano pertenece al mundo!
cprcpr
Hello World! (72-84)
Mensajes: 79
Registrado: Mié Oct 10, 2012 12:41 pm

Re: Programación de FPGA's

Mensajepor cprcpr » Vie Ago 07, 2015 2:39 pm

putada! :(
A por la proxima!! :mrgreen:

Volver a “Robótica y electrónica”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado