Mostrando entradas con la etiqueta xilinx fpga. Mostrar todas las entradas
Mostrando entradas con la etiqueta xilinx fpga. Mostrar todas las entradas

martes, 6 de junio de 2017

Guía de Codificación para Diseños y Proyectos VHDL-FPGA

Basado en mis años de experiencia profesional y educativa les presento un documento de lineamientos generales tanto para la codificación en VHDL como para la partición de un proyecto de un sistema complejo, pasando por clocking, sintesis, nombres, FSM hasta test bench. Es un documento extenso, a pesar de que lo he resumido a los puntos mas importantes, pero siempre útil al momento de comenzar un nuevo proyecto, o como referencia para la codificación en HDL (VHDL o Verilog)/FPGA.

Link al documento es el siguiente. .....   ; )   ......

Se reciben sugerencias en caso que alguno de Uds. tengan alguna 'guia' que haya omitido.

PD: por ahora esta versión está en inglés, si recibo suficientes pedidos, la pasaré al español....

martes, 29 de marzo de 2011

Cuidado con la implementación de los sincronizadores en el ISE !

La herramienta ISE tiene una opción no muy conocida que habilita el uso de los SRL (Shift Register Logic) de una LUT (Look-Up Table) como sincronizadores !! So.... se debe chequear el Map report para verificar la inclusión o no de SRLs en la lógica generada cuando se desea describir sincronizadores.


Para los nuevos Virtex-6 y Spartan-6 "shreg_min_size" es una propiedad de la herramienta de síntesis  XST que especifica el tamaño mínimo de registros de desplazamientos para ser inferidos e implementados en recursos SRL. Para los otros FPGAs la propiedad que habilita la inferencia de los SRL es llamada 'shift register extraction'. Un sincronizador compuesto de dos flip-flops, para la herramienta de síntesis es visto como un registro de desplazamiento de 2 estaps. Por defecto el valor de shreg_min_size es 2. Para cambiarlo estas propiedades se debe abrir las opciones de HDL del XST:
- Una vez abierto el proyecto en el ISE, seleccionar el proceso "Synthesize-XST' en la ventana 'Design'.
- Presione boton derecho del mouse y seleccione 'Process Properties'
- Seleccione 'HDL Options'
- Encuentre y modifique las propiedades mencionadas.


SIN EMBARGO, por mas que ese número se fije en un valor alto, por ejemplo 5, la herramienta de mapeo, re-sintetiza el diseño y puede usar los SRLs independientemente del número fijado en el atributo "shreg_min_size". En otras palabras "shreg_min_size" es un atributo que solo lo 've' el XST, y NO es pasado al MAP.

Para evitar este problema hay dos soluciones:


Solución 1- Usar el atributo de síntesis 'keep' en los registros sincronizadores. De este modo estos registros no serán tocados.


Solución 2- Usar una señal de reset para los sincronizadores. Así, los flip-flops sincronizadores no pueden ser llevados a SRL, porque no tienen entrada de reset. . . ..


Una razón mas, no muy conocida tampoco, para evitar el uso de los SRL como sincronizadores, es el hecho de que el tiempo de resolución de metaestabilidad de los  flip-flops de los SRL es muuuuuy malo.....(dicho por Austin Lesea de Xilinx.


Entonces, CUIDADO con la implementación de sincronizadores !

jueves, 28 de octubre de 2010

Añadir puntos de pruebas (probes) en FPGA Editor

Esta es una técnica aconsejada para usuario avanzados, recomendada cuando el tiempo de P&R del diseño es muy largo (>2 horas). 
Añadir puntos de pruebas puede ser algo de mucha ayuda cuando se necesita debug un diseño complejo. Dado que un FPGA es un dispositivo programable usualmente hay elementos disponibles que pueden ser usados luego de haber Place & Route el diseño. El caso típico es por ejemplo que se desee saber el valor lógico de una señal interna de un diseño, para ello se puede routear esa señal interna a algún I/O pin disponible y de fácil acceso para poder usar la punta del Oscilloscopio o Analizador Logico. Tambien puede ser útil para routear una senal interna a un LED del board que está conectado a un I/O pad específico. La herramienta FPGA Editor, parte del ISE, ofrece la posibilidad de seleccionar (probe) cualquier red interna y automáticamente rutear la(s) señales deseadas al I/O pin que se necesita.

Los pasos a seguir son los siguientes:
  1. Una vez Place & Route el diseño, doble-click en el proceso “View/Edit Routed Design (FPGA Editor).
  2. Una vez abierta la ventana de la herramienta FPGA Editor, de la columna de botones sobre la derecha  de la pantalla, presione el botón ‘probes’.
  3. En la ventana ‘Probes’ presione el botón ‘Add’ (primer botón sobre la derecha).
  4. Una nueva ventana aparecerá llamada ‘Define Probe’. Esta ventana tiene dos partes principales:  
    • La parte superior, ‘Select Net’, se refiere a las redes (nets) disponibles pare rutear. Recuerde que una vez que el diseño ha sido P&R algunas señales cambian el nombre, como asi también aparecen nombres como N3, N5, etc. En esta parte de la ventana se debe seleccionar la red deseada. 
    • La parte inferior, ‘Select Pin Numbers’,  se refiere a los I/O pines disponibles para rutear la red seleccionada en la parte a). Hay dos métodos para seleccionar el I/O pin (del menú ‘Method’), uno es automatico, la herramienta selecciona el pin (normalmente el que de menos retardo de ruteo); y el otro método es manual. En el Manual en la columna inferior izquierda, ‘Available Pins’, se selecciona el I/O pin y una vez seleccionado se lo ‘transfiere’ a la columna derecha, ‘Selected Pins’, presionando el botón ‘>’.
  5.  El proceso descripto en el punto 4. se puede repetir tantas veces como se necesite.
  6.  Una vez finalizado se presiona OK. En la ventana ‘Probes’ deberán ahora aparecer las redes seleccionadas, sus respectivos I/O pins y una estimación del retardo para alcanzar la salida desde el punto de conexión de la señal seleccionada.
  7. Es conveniente usar la opción ‘Save Probes’ para guardas los puntos de pruebas y sus pines asociados. En un futuro uso se puede usar la opción ‘Open Probes’ para abrir los puntos de pruebas anteriormente guardados. 
  8. ‘Close’ cierra la ventana ‘Probes’, retornando a la ventana del FPGA Editor.
  9. Ahora es necesario grabar los cambios realizados al original diseño. File-> Save o File-> Save As para cambiar el nombre. Por ejemplo rs_232_con_probes.ncd. De este modo se puede distinguir el .ncd original del .ncd con puntos de pruebas.
  10. El último paso es generar el respectivo archivo de configuración del FPGA, y descargarlo en el FPGA. Si ha usado un nombre diferente para el .ncd grabado (punto 9), se debe tener cuidado de generar correctamente el archivo de configuración. 


Espero q les sea de utilidad.....