Simulando el diseño FPGA sin tener el hardware real

9

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

Quiero crear un proyecto similar al 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 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, ¿puedo construir, codificar y ejecutar ese proyecto en mi computadora, y simplemente conectar mi cámara a través de USB, luego dejar que las señales de video entrantes sean procesadas por simuladores HDL como Xilinx ISE, etc. (sin realmente comprar una placa FPGA y sintetice su proyecto allí, actualmente no tengo el presupuesto para tener una)

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

Lo quiero
fuente
55
No sé si puede hacer eso con el simulador de Xilinx, pero algo como Icarus Verilog permitirá que su simulación se conecte al código C que podría obtener datos de fuentes del mundo real; sin embargo, es probable que ejecute órdenes de magnitud más lento que en tiempo real, por lo que sería difícil procesar una fuente de video en vivo.
Chris Stratton
1
oh, esa es la frase que estoy encontrando, interactuando con fuentes del mundo real
WantIt
2
@vvavepacket votó positivamente los comentarios / publicaciones para agradecer al comentarista / afiche.
Chetan Bhargava
1
El FPGA en el video se parece a Altera DE2. Está entre 200 y 600 USD dependiendo de la licencia y el chip. Hay simuladores en csc.kth.se/~emille/niisim
Niklas
2
El Terasic DE0-nano está en el orden de $ 80 y puede interactuar con cámaras y LCD; de hecho tienen demostraciones de eso en su sitio web. No está afiliado a ellos, pero los DE0-nano obtuvieron un pequeño FPGA bastante agradable en una placa de precio decente. Siempre he odiado lo caras que son la mayoría de las placas de desarrollo.
akohlsmith

Respuestas:

5

Las herramientas de Xilinx no pueden interactuar en tiempo real hasta donde yo sé, tampoco ModelSim (utilizado por Libero IDE de Actel)
No sé sobre simuladores de código abierto, hay algunos proyectos bastante exóticos, por lo que es posible que haya Algo que podría hacer esto.

Sin embargo, esta puede ser una respuesta que no solicitó (la eliminaré si no es útil), pero consideraría construir su propia placa FPGA para hacer esto o al menos comenzar en el camino hacia ella. Grabé mi primera placa FPGA y, aunque era muy simple (la placa no era el proceso ;-)), me enseñó muchísimo con bastante rapidez.

Pros:

  • Barato
  • Sumérjase en el extremo profundo y aprenda todo lo que necesita saber sobre las consideraciones de hardware. Le 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 es a menudo mejor que el enfoque de aprendizaje de la placa de desarrollo plug and play.
  • Solo ponga en el tablero lo que necesita.
  • Te lleva más lejos hacia tu objetivo de un diseño de trabajo real con posiblemente el mismo esfuerzo / investigación que descubriría cómo simularlo todo en tiempo real.

Contras:

  • Todavía es necesario comprar un programador, aunque en eBay se pueden encontrar versiones baratas de los programadores Xilinx / Altera.
  • Si el diseño y los problemas de integridad de la señal / PCB no son algo en lo que desee enfocarse, entonces puede que no le interese gran parte del conocimiento que se obtenga al hacerlo de esta manera.

Entiendo que grabar su propia placa probablemente no sea necesario, solo lo hice porque tenía los FPGA allí, estaba impaciente y no quería esperar 2 semanas para que llegara un PCB. Aquí hay ofertas extremadamente baratas para tableros de 2 capas, que harían al menos para ejecutar su diseño (posiblemente a velocidades más bajas de lo deseado eventualmente; normalmente, el recuento mínimo de capas para un diseño FPGA de alta velocidad sería 4, pero estos son mucho más caro)

De todos modos, Spirit Circuits hace un acuerdo de PCB de "capas básicas" de dos capas completamente gratis (uno por mes, un diseño, sin máscara o serigrafía) que resulta útil para un diseño único.
Además, para las placas prototipo baratas de 2 y 4 capas adecuadas, ITead y Seed Studio cuestan solo $ 10 por 10 servicios de placas (o posiblemente 5 a ese precio).

Oli Glaser
fuente
Muy interesante tomar esto! y alentador también
davidbak
6

El Xilinx ISE Webpack estándar (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 si no se incluyera un simulador.

Pero ... Necesitas saber lo que un simulador puede y no puede hacer. Para empezar, no puede simular un FPGA funcionando 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", requerirá 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 de FPGA (o partes de FPGA) y verifica la salida de su FPGA. Puede hacer algunas cosas bastante complejas en un banco de pruebas, como usar números de coma flotante, leer y escribir archivos y ejecutar una lógica que es imposible de sintetizar.


fuente
1
Altera tiene ediciones gratuitas de Quartus que incluyen ModelSim. La versión gratuita de ModelSim limita la velocidad de su simulación, y la versión gratuita de Quartus limita la cantidad de núcleos de CPU que se utilizan para sintetizar, pero que por lo demás son completamente funcionales.
akohlsmith
1
Altera ModelSim no admite la co-simulación de VHDL y Verilog en el mismo diseño.
shuckc
3

No conozco ningún simulador que interactúe 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 señales que llegaran a un puerto y traducirlas en 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.

Jerry Coffin
fuente
a continuación, la mejor manera es conseguir un nivel de entrada, tarjeta FPGA de bajo costo para n00bs como yo
WantIt
En realidad, no tiene que pasar por un archivo testbench si tiene un simulador que admita una interfaz para código personalizado como un VPI, sin embargo, dado que el simulador ejecutará órdenes de magnitud más lento que el tiempo real, puede ser más fácil tratar con datos capturados en un archivo que se puede leer a la velocidad de la simulación.
Chris Stratton
@ChrisStratton Estoy interesado en la idea de datos capturados en un archivo. ¿Algún recurso para eso? Gracias
WantIt
Dependería por completo de los periféricos que desee utilizar como fuentes de datos.
Chris Stratton
3

Deberá utilizar una interfaz de co-simulación (DPI, VPI, VHPI, FLI) que le permite escribir código que se enganche en el simulador y, por lo tanto, establecer un puente entre el RTL que se ejecuta en la simulación y el hardware real de su máquina.

Los problemas importantes que encontrará (aparte de las interfaces mal documentadas) están relacionados con la sincronización y el tiempo. El RTL que se ejecuta en la simulación es mucho más lento que el hardware real: deberá poder interactuar con la interfaz externa para que coincida con la velocidad de la simulación. ¡A algunas interfaces de hardware no les gustará esto! Por ejemplo, si usa TCP, es posible que deba falsificar los temporizadores en la pila del kernel para evitar retransmisiones espurias, etc.

Icarus admite 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 esos 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 eliminé algunos 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 pingcomando y el RTL que se ejecuta en simulación recibe el ping y responde. ¡El banco de pruebas completo tiene menos de 50 líneas de Python! El código fuente para este ejemplo está en Github y se ejecuta en Icarus bajo Linux.

Chiggs
fuente
0

En la gran mayoría de los casos, todo lo que haga en la simulación permanece en la simulación. No puede acceder al 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 para código arbitrario. En Verilog es una interfaz bastante estándar, según tengo entendido, por lo que el lado Verilog de las cosas se portará entre 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 que lo haría el FPGA) 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 en tiempo real de video no es factible de esta manera.

Personalmente, nunca he tenido la necesidad de probar esto, me parece que soy más productivo escribiendo modelos del hardware y ejecutándolo todo en VHDL.

Pero no pase por alto los beneficios de hacer simulación: es una forma mucho más rápida de averiguar si las cosas funcionan (las compilaciones tardan segundos) y luego construir flujos de bits (las compilaciones tardan decenas de minutos a horas) y probarlas en hardware.

Martin Thompson
fuente
Falso, ver comentarios a la pregunta.
Chris Stratton
OK, debería haber sido más claro: estaba limitando mi respuesta al nivel "Soy nuevo en FPGA" :) Respuesta actualizada
Martin Thompson