FPGA, primeros pasos

11

Bueno, esta es una continuación de mi pregunta sobre FPGA en aquí .

Finalmente seleccioné un Digilent Atlys con un Spartan 6 FPGA, No tengo ninguna experiencia previa de FPGA, aunque he trabajado un poco con microcontroladores.

Pasé los últimos días leyendo las hojas de datos del FPGA, y creo que sería una buena opción comenzar con Verilog. Sin embargo, no pude encontrar ningún ejemplo de código e incluso las hojas de datos no son compatibles con los usuarios nuevos.

Quiero hacer una parte de la programación, simulación, síntesis ahora y esto es lo que quiero hacer

  1. Genere una frecuencia impar, digamos 54Mhz desde el FPGA (funciona en un reloj de 100Mhz) y enrutelo a uno de los pines. Probablemente tendría que usar el DCM o el PLL para esto, pero no tengo idea de cómo empezar aquí.

  2. Implemente algún tipo de lectura / escritura I2C desde el FPGA.

Lo que estoy buscando es una referencia, posiblemente uno en línea o un libro que me proporcione ejemplos de códigos y una descripción de cada uno de los componentes de hardware disponibles dentro del FPGA, como DCM's, slices, clb's, etc.

Supongo que eso debería iniciarme en el mundo de los FPGA.

    
pregunta Kevin Boyd

3 respuestas

13

Ejemplos de código

Vaya a OpenCores y encontrará docenas de proyectos de código abierto. Hay muchos escritos en Verilog y cubren la gama desde dispositivos de E / S hasta procesadores.

Además, no olvide las muchas Notas de aplicación disponibles de Xilinx. Son muy útiles con sus propios dispositivos.

Flujo de diseño

Elija uno o dos libros sobre el flujo de diseño para obtener una visión general de los pasos involucrados en el diseño de FPGA. En resumen, implicarán:

  1. Entrada de diseño: en su caso, Verilog.
  2. Simulación funcional - usando varias herramientas.
  3. Síntesis: en su caso, utilizando las herramientas ISE de Xilinx.
  4. Simulación: para verificar el diseño posterior a la síntesis porque algunos aspectos de Verilog no son sintetizables.
  5. colocar & Ruta: utilizando las herramientas ISE de Xilinx.
  6. Implementación: descargando el diseño en el FPGA.
  7. Pruebas.

Componentes FPGA

En cuanto al uso de los componentes FPGA, hay diferentes maneras de usarlos. Pero suponiendo que esté utilizando una entrada de diseño de Verilog, puede inferir o crear una instancia de los diferentes componentes.

Inferencia generalmente implica obtener la herramienta de síntesis para elegir los mejores componentes para usar según la funcionalidad que necesite. El mejor ejemplo de esto sería diseñar un sumador.

Al hacer q <= a + b o q = a + b puedes inferir un sumador. Ambos deducirán el sumador, pero existe una diferencia cuando se utiliza la sintaxis de bloqueo / no bloqueo.

Creación de instancias generalmente implica llamar al componente de biblioteca exacto en el código. Algunos componentes simplemente no se pueden inferir fácilmente en el código, como el DCM. Puede usar las herramientas y los ejemplos de ISE para aprender más sobre esto.

Xilinx proporciona la lista real de componentes en la Bibliotecas Guía.

Protip

La mejor manera de aprender esto es en realidad experimentar con pequeños bits de código y ejecutarlos a través de la síntesis de ISE para ver qué escupe. También hay muchos ejemplos en el conjunto de herramientas ISE.

    
respondido por el sybreon
5

Sus referencias absolutas serán las guías de usuario de Spartan 6 . Por ejemplo, la guía de recursos de sincronización (UG382) cubre cómo configurar los DCM. Para ejemplos de cómo se ve el código real, ISE tiene una base de datos de ellos. Abra Plantillas de idioma (la bombilla en la barra de herramientas), luego busque en el idioma (VHDL o Verilog) - > Dispositivo de instanciación primitiva - > familia de chips (Spartan-6) - > Componentes del reloj.

Los detalles específicos de su placa están disponibles en Digilent, en particular querrá la UCF (que nombra todas las IO) y el manual de referencia (que explica los circuitos periféricos).

La estructura general de su idioma, incluida la forma de hacer un componente, es probablemente mejor recogida de los libros y ejemplos. No he usado Verilog, así que no tengo ninguna sugerencia específica. Sin embargo, las plantillas también incluyen fragmentos de varios productos genéricos.

    
respondido por el Yann Vernier
1

Para el reloj usas el megacore DLL / PLL.

    
respondido por el Brian Carlton

Lea otras preguntas en las etiquetas