Simulando el diseño de FPGA sin tener el hardware real

7

Soy nuevo en FPGA y actualmente tomo la clase HDL (particularmente Verilog). Tengo suficiente conocimiento en diseño digital como circuitos combinacionales y secuenciales.

Quiero crear un proyecto similar a el que se muestra en este video de YouTube .

También sé que Xilinx ISE puede procesar señales lógicas y simular formas de onda. Tiene una capacidad adicional como obtener las señales de entrada a través de USB, cámara, etc. y emitirlas en su computadora.

¿Es posible ejecutar este proyecto (como una simulación en computadora) sin comprar una placa FPGA real? Lo que quiero decir es que puedo construir, codificar y ejecutar ese proyecto en mi computadora, y simplemente conectar mi cámara a través de USB, luego permitir que las señales de video entrantes sean procesadas por simuladores de HDL como Xilinx ISE, etc. (sin comprar realmente un tablero de FPGA y sintetice su proyecto allí, actualmente no tengo el presupuesto para tener uno)

(Lo que realmente quiero decir es que la interfaz del diseño HDLl con las fuentes del mundo real, el código C, etc.)

    
pregunta WantIt

5 respuestas

5

Las herramientas de Xilinx no pueden interactuar en tiempo real por lo que sé, tampoco ModelSim (usado por el IDE de Libel de Actel)
No sé sobre simuladores de código abierto, hay algunos proyectos bastante exóticos por ahí, así que es posible que haya algo que pueda hacer esto.

Sin embargo, esta puede ser una respuesta que no solicitaste (la eliminaré si no es útil), pero consideraría crear tu propia placa de FPGA para hacer esto, o al menos comenzar en el camino Hacia eso. Grabé mi primera placa FPGA y, aunque era muy simple (la placa no era el proceso ;-)), me enseñó muchísimo rápidamente.

Pros:

  • barato
  • Salte a la derecha y aprenda todo lo que necesita saber sobre las consideraciones de hardware. Lo obliga a leer la mayoría de las hojas de datos primero y escribir su propio código de inicio, que en mi humilde opinión suele ser mejor que el método de aprendizaje de la plataforma de desarrollo de plug 'n play.
  • Solo ponga en la pizarra lo que necesite.
  • Le ayuda a alcanzar su objetivo de un diseño de trabajo real con, posiblemente, el mismo esfuerzo / investigación que el hecho de averiguar cómo simularlo todo en tiempo real.

Contras:

  • Todavía necesito comprar un programador, aunque se pueden encontrar versiones baratas de los programadores de Xilinx / Altera en eBay.
  • Si el diseño y los problemas de integridad de señal / PCB no son algo en lo que desee centrarse, es posible que no esté interesado en gran parte del conocimiento que se obtendrá al hacerlo de esta manera.

Entiendo que grabar tu propia placa probablemente sea innecesario, solo lo hice porque tenía los FPGA allí, estaba impaciente y no quería esperar 2 semanas para que llegara un PCB. Hay ofertas extremadamente baratas aquí para tableros de 2 capas, lo que haría por lo menos ejecutar su diseño (posiblemente a velocidades más bajas de lo que se desea, normalmente el recuento mínimo de capas para un diseño de FPGA de alta velocidad sería 4, pero estas son mucho más caro)

De todos modos, Spirit Circuits hace una oferta de PCB de dos capas completamente gratis (uno por mes, un diseño, sin máscara o serigrafía) que es útil para un diseño único.
Además, para los tableros prototipos baratos de 2 y 4 capas adecuados, ITead y Seed Studio tienen un precio tan bajo como $ 10 por 10 tableros (o posiblemente 5 a ese precio) de servicios.

    
respondido por el Oli Glaser
6

El paquete web estándar de Xilinx ISE (la versión gratuita que puede descargar de xilinx.com) incluye un simulador llamado iSim. No es un gran simulador, pero es completamente funcional y el precio es correcto.

Aunque no he usado las herramientas de Altera, me sorprendería que no se incluyera un simulador.

Pero ... Necesitas saber qué puede y qué no puede hacer un simulador. Para empezar, no puede simular un FPGA corriendo a toda velocidad. De hecho, son bastante lentos. Dependiendo de la complejidad de la simulación de FPGA, no me sorprendería ver que toma 1 minuto simular 1 ms de "tiempo simulado". Si desea simular una hora de "tiempo simulado", se necesitarían 1000 horas de tiempo real.

Además, un FPGA simulado no puede comunicarse directamente con cosas como su puerto USB. El FPGA simulado se comunica con un "banco de pruebas". El banco de pruebas es un fragmento de código VHDL o Verilog que alimenta las entradas del FPGA (o partes del FPGA) y verifica el resultado de su FPGA. Puede hacer algunas cosas bastante complejas en un banco de pruebas, como usar números de punto flotante, leer y escribir archivos y ejecutar lógica que es imposible de sintetizar.

    
respondido por el user3624
3

No conozco ningún simulador que se conecte directamente con las señales que llegan a un puerto USB (u otro hardware).

Al menos en teoría, sería posible escribir algún software que tomaría las señales que llegan a un puerto, y traducirlas a un archivo de banco de pruebas que un simulador podría procesar. Desafortunadamente, no conozco ningún software existente para hacer esto, y escribirlo usted mismo sería decididamente no trivial.

    
respondido por el Jerry Coffin
3

Necesitará usar interfaces de co-simulación (DPI, VPI, VHPI, FLI) que le permiten escribir código que se enganche en el simulador y, por lo tanto, puente entre la RTL que se ejecuta en la simulación y el hardware real en su máquina.

Los problemas importantes que encontrará (además de las interfaces mal documentados) están relacionados con la sincronización y la sincronización. La ejecución de RTL en la simulación es mucho más lenta que el hardware real: deberá poder pasar por las interacciones con la interfaz externa para que coincidan con la velocidad de la simulación. ¡A algunas interfaces de hardware no les va a gustar esto! Por ejemplo, si usa TCP, es posible que tenga que falsificar los temporizadores en la pila del kernel para evitar retransmisiones falsas, etc.

Icarus es compatible con el VPI y es gratuito para que pueda experimentar sin gastar dinero en licencias. Es posible que desee examinar los marcos existentes que realizan algunos de los trabajos pesados de co-simulación y proporcionan una abstracción más limpia al simulador. Uno de estos marcos es Cocotb , una biblioteca de código abierto que proporciona una interfaz Python para el simulador. ( Descargo de responsabilidad: soy uno de los desarrolladores de cocotb.)

Un ejemplo que puede ser relevante: ayer detuve algunas RTL para responder a las solicitudes de ping y creé un banco de pruebas que abre una interfaz TUN. Luego puede hacer ping a la interfaz usando el comando ping y la RTL que se ejecuta en la simulación recibe el ping y responde. ¡Todo el banco de pruebas tiene menos de 50 líneas de Python! El código fuente de este ejemplo está en Github y se ejecuta en Icarus en Linux.

    
respondido por el Chiggs
0

En la gran mayoría de los casos, cualquier cosa que haga en la simulación permanece en la simulación. No puede acceder a hardware real desde él, debe tener un modelo de simulación del hardware real.

Sin embargo, si está dispuesto a esforzarse, la mayoría de los simuladores tienen una interfaz con código arbitrario. En Verilog es una interfaz bastante estándar como la entiendo, por lo que el lado de Verilog de las cosas se pasará entre los simuladores. En VHDL-land, hay una forma estándar de hacerlo, ¡pero al menos uno de los grandes vendedores tiene su propia forma de hacerlo!

También tenga en cuenta que la interacción en tiempo real (es decir, a la velocidad con la que FPGA lo haría) es muy poco probable, y el resto de su simulación (HDL) tampoco se ejecutará en tiempo real. Como se señaló en los comentarios, el procesamiento simulado de video en tiempo real no es posible de esta manera.

Personalmente, nunca tuve la necesidad de probar esto, creo que soy más productivo escribiendo modelos del hardware y ejecutando todo en VHDL.

Pero, no pase por alto los beneficios de hacer simulación: es una forma mucho más rápida de descubrir si las cosas funcionan (compila en segundos) y luego genera flujos de bits (compila entre decenas de minutos y horas) y los prueba en hardware. / p>     

respondido por el Martin Thompson

Lea otras preguntas en las etiquetas

Comentarios Recientes

físico dentro de las manos. El control que se utiliza es una solución simple de "un solo chip, a todo color" con el pin de fila 1,6 y el pin 3 que accionan el encabezado del pin con un poco de práctica e instrumentación, lo que lleva a una construcción simplificada con menos "pop" y sin extra inevitable presión necesaria, aunque esto no debería aguantar a la larga. Si esto te funciona por completo, será muy emocionante. Comencemos con el uso de herramientas para explorar cómo se deben manejar los objetos. Primero,... Lees verder