Autor Tema: ADC FPGA  (Leído 5792 veces)

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

Desconectado fa61an

  • PIC10
  • *
  • Mensajes: 21
ADC FPGA
« en: 16 de Febrero de 2009, 19:33:32 »
Saludos

Se desea realizar el procesamiento de una señal analogica sobre una FPGA Xilinx SPARTAN II. Ya he investigado del tema y la descripcion del hardware de un ADC no se puede realizar en VHDL o verilog. Con esto me queda claro que debo usar un ADC externo. Esto me dejaria dos opciones usar un Microcontrolador o un CHIP ADC. La opcion que se tomo de momento es usar un Microcontrolador Freescale GP32 con ADC y SPI interface.

- La señal que se va adquirir de momento es unipolar 0 a 5v
- Resolucion 8 bits
- Interface ?????( Aqui es donde esta la duda Paralelo o Serial)
- Niveles de voltaje, se tiene claro que las FPGA normalmente trabajan a 3.3v

La inquitud que tengo como manejar el tema de la intefaz, el GP32 maneja intefaz SPI nunca la usado, pero supundo que deberia montar el CORE o describir el hardare de una interfaz SPI en la FPGA para que se puedan comunicar.

Alguien a implementado alguna comunicacion de una FPGA con dispositivo externo ??? ya sea i2c o SPI o paralelo, que me pueda dar recomendaciones que no tenga en cuanta



Colombia - Bucaramanga UTS

Desconectado Tisco

  • PIC16
  • ***
  • Mensajes: 108
Re: ADC FPGA
« Respuesta #1 en: 17 de Febrero de 2009, 14:12:15 »
Buenas, te recomiendo que emplees un convertidor ADC externo, es lo mas comodo y lo mas empleado, conectado en paralelo. Sobre este tipo de procesados de señal yo normalmente empleo un convertidor AD (de aproximaciones sucesivas si necesitas velocidad 250-300MHz) conectado a la FPGA y que ésta se encarga de controlar. con respecto a las tensiones, hay muchos ADC que funcionan a 3.3V por lo que la conexion seria directa.
Espero haberte servido de ayuda, un saludo!

Desconectado fa61an

  • PIC10
  • *
  • Mensajes: 21
Re: ADC FPGA
« Respuesta #2 en: 17 de Febrero de 2009, 15:19:13 »
Para mi aveces es dificil entender bien las FPGA, pues aun cometo el error de relacionarlo con una CPU por ejemplo de un microcontrolador o DSP, que son los que mas he usado.

Listo entonces utilizare un conversor ADC en paralelo y con tension de 3.3 v.

Ahora mi pregunta es como almaceno los datos en la FPGA, es decir tendría que crear una descripción de hardware para una memoria RAM y ahí almacenar los datos que me entrega el ADC??

Por ejemplo un programa sencillo seria saber si la señal de entrada esta en un rango de frecuencia de 200 a 400 hz prender dos LED y si no esta en ese rango prender solo un LED.

En un DSP yo sabría como hacerlo, pues puedo saber mi frecuencia de muestreo y tambien saber cuantas muestras como maximo almaceno en un vector. con estos dos datos podría saber si mi señal esta en ese rango de frecuencia sin necesidad de realizar la FFT o sera que si la necesito ???

En fin la idea es como le transfiero la frecuencia de muestreo del ADC a la FPGA, como le indico que viene una nueva muestra y la almace en un vector. ??? Creanme que he echo varios programas en VHDL sobre una FPGA pero casi todos o son Maquinas de estado, circuitos combinacionales o el típico BDC 7 Segmentos pero con todo ello no se como usar la FPGA para PROCESARRR !

gracias !

Colombia - Bucaramanga UTS

Desconectado Tisco

  • PIC16
  • ***
  • Mensajes: 108
Re: ADC FPGA
« Respuesta #3 en: 20 de Febrero de 2009, 16:18:50 »
estoy liado ultimamente asi que no tengo mucho tiempo para pasarme por el foro, pero te comento:
Todo el control del ADC lo puedes hacer desde la FPGA sin ningun problema, recuerda que en la FPGA eres tu quien crea la memoria para almacenar las muestras y por tanto le daras el minimo valor que estimes necesario para no gastar recursos sin necesidad. En cuanto a lo de la frecuencia, hay muchas formas de hacerlo, desde FFT, contadores, comparadores, MAC, FIR... Cada uno tiene sus ventajas en cuanto a velocidad o recursos, pero todos son validos.
Recuerda que tienes multiples opciones y muchas son mas que buenas, pero tu simplemente te debes fijar en la que te sea mas sencilla. yo personalmente lo realizaria mediante una pequeña memoria RAM lo justo para alcanzar un muestreo y medio de 200Hz, un temporizador y un contador. Con esos tres bloques tendrias hecho el filtrado, solo te quedaria hacer otro bloque que se encargue del control del ADC y del puerto de salida.
De este modo creo que tendrias un circuito aceptable desde el punto de vista de recursos logicos y muy facil de diseñar desde el punto de vista de sencillez y rapidez.
Espero haberte servido de ayuda, un saludo!