Equipo de prueba FPGA

4

La mayoría tengo antecedentes de desarrollo de software de escritorio. Tratando de aprender el diseño de hardware.

Pregunta: La pregunta es principalmente para desarrolladores (en su mayoría contratistas individuales) que desarrollan equipos costosos.

Supongamos que estoy desarrollando algún firmware en VHDL / verilog para algún cliente. ¿Siempre necesitas el hardware "especificado" para probarlo? (Eso es "específico", así que si tengo un tablero de Altera, ¿qué pasa con el desarrollo para xilinx?) En general, para proyectos pequeños con microcontroladores, puede comprarlos ya que no son tan caros, pero cuando se desarrollan para fpgas, ¿cómo funcionan las etapas de desarrollo y prueba? Supongo que las propagaciones de retardo y otras cosas diferentes de cada placa o chip a otra, que deben incluirse en su código.

¿Puede alguien compartir cómo se realiza el procedimiento, especialmente cuando no tiene el equipo para el cual se va a desarrollar? ¿Lo compra o el cliente lo proporciona, o son pequeños cambios solo en el nivel IDE en el software, que puede cambiar de las hojas de datos?

p.s: no relacionado, pero estoy pensando en comprar la placa Altera DE1-SoC. Entonces, si tiene mejores sugerencias que este foro, hágamelo saber también. (No académico, por debajo de $ 500, tabla intermedia, para que pueda crecer y seguir utilizándolo)

    
pregunta xcr

2 respuestas

5

En general, los diseños de FPGA comienzan de manera similar a los diseños de ASIC, todo está en el simulador. Puede obtener una mejor visibilidad para la depuración en un simulador de lo que nunca puede obtener en hardware. Sin embargo, sí es necesario crear bancos de pruebas y modelos funcionales, lo que lleva tiempo. Para implementaciones complejas es un requisito, ya que nunca resolverá todos los errores simplemente probando en el hardware. Una vez que el diseño está completamente depurado en el simulador, puede soltarlo en el tablero. Tenga en cuenta que para diseños muy grandes en FPGA muy grandes, la síntesis, el lugar y la ruta pueden llevar mucho tiempo. Un diseño en el que trabajé hace aproximadamente un año tomó aproximadamente el 40% de un Virtex 6 HXT 565 y tardó aproximadamente 7 horas en completar el lugar y la ruta. Esto no es algo que deba hacer regularmente para pequeños cambios.

En general, cualquier retraso en la placa es demasiado pequeño (mucho menos que un período de reloj) y se puede ignorar o son incógnitas que deberán ajustarse y compensarse con algún tipo de rutina de entrenamiento activo, ya que varían incluso dentro de un lote de tablas.

Los propios FPGA se someten a pruebas exhaustivas (de ahí el costo muy alto) para que se sepa que las variaciones del retardo están dentro de los límites especificados, y su diseño no debe depender del retardo de un chip individual para especificaciones. Si es así, entonces tiene problemas más grandes y necesita eliminar la dependencia o encontrar una manera de compensarla. Por ejemplo, consulte el tiempo del CERN para el núcleo digital: depende en gran medida del enrutamiento y tiene su propia rutina de calibración para caracterizar los retrasos que se ejecutan regularmente para corregir las variaciones a largo plazo y dependientes de la temperatura.

Es posible probar el código para un FPGA en un FPGA diferente. Si el código no interactúa con el mundo exterior, generalmente puede ponerlo en cualquier FPGA que desee. Si escribe código independiente del proveedor (evite los generadores de núcleo para RAM y ROM, en lugar de ello infiera todo en HDL puro), incluso es posible probar el código destinado a la producción en una FPGA Xilinx en una FPGA de Altera. Tenga en cuenta que esto no funciona si necesita utilizar características específicas de FPGA, como los transceptores de alta velocidad.

Si está diseñando para interactuar con el hardware, entonces necesitará el hardware y el cliente debería proporcionarlo a menos que también sea su trabajo construirlo. También será necesario contar con algunas herramientas de depuración de hardware, como un osciloscopio de señal mixta y un analizador lógico, para que pueda verificar las interfaces de hardware y asegurarse de que están haciendo lo que usted desea.

    
respondido por el alex.forencich
5

Depende del tipo de trabajo que estés haciendo. Algunos diseños de FPGA tienen una gran cantidad de esfuerzos en la lógica funcional, ninguno de los cuales depende realmente de la sincronización crítica o del hardware específico del dispositivo. Para eso, usualmente usaría un simulador y desarrollaría / probaría cosas en una PC sin acercarse a ningún hardware.

Como regla básica con los FPGA, si diseña correctamente con algunos conceptos básicos sobre cronometraje, etc., y proporciona restricciones de tiempo adecuadas a las herramientas, el diseño funcionará cuando lo cargue en el hardware.

Otros diseños tienen una sincronización mucho más difícil o están lo suficientemente cerca de los límites de lo que los FPGA son capaces de hacer para necesitar un estilo de trabajo mucho más dependiente del dispositivo, que podría involucrar tableros de desarrollo para un FPGA específico, o simplemente obtener un prototipo construido y trabajando con eso.

En general, las compilaciones de FPGA son enormemente más lentas que la compilación de software, por lo que cualquier forma general de desarrollo de 'quemar y colapsar' lo volverá completamente loco, y debe hacer lo menos posible.

Para todos los diseños menos triviales, cada minuto que dedicas a la simulación funcional y la especificación correcta de las restricciones de tiempo vale una hora para cargar cosas en el hardware y buscar en el analizador de alcance / lógica para decidir si funcionan correctamente.

Tengo montones y montones de tableros de desarrollo (a veces conseguirlos es una buena manera de obtener un esquema de diseño de referencia decente que no se puede obtener sin comprar el tablero), pero a menudo me parece que son muy complejos (porque tienden a mostrar las capacidades del chip) y pueden ser un poco abrumadoras para un recién llegado al campo. No puedo comentar sobre el específico que mencionas.

    
respondido por el user1844

Lea otras preguntas en las etiquetas