¿Qué me haría elegir Verilog o VHDL sobre el diseño esquemático en CPLD o FPGA?

No tengo experiencia en lógica programable, uso principalmente microcontroladores en mis proyectos, pero recientemente necesitaba trabajar con video y el microcontrolador es demasiado lento para lo que necesitaba, así que comencé a jugar con CPLD.

Pude obtener buenos resultados con el CPLD solo usando el diseño esquemático, pero al buscar información sobre los CPLD encontré muchos ejemplos usando VHDL y Verilog. Tengo curiosidad por saber qué podría hacerme querer definir mi dispositivo en uno de estos idiomas. ¿Qué pueden hacer que el diseño esquemático no puede? ¿Se utilizan principalmente para funciones?

Hasta ahora solo he usado CPLD, ¿los diseños de FPGA se benefician más que los CPLD del uso de estos lenguajes?

Probablemente encontrará herramientas de síntesis suministradas por proveedores tanto para Verilog como para VHDL para partes principales. Por lo tanto, la elección es puramente de opinión. Te animo a que mires ambos y decidas cuál prefieres. Xilinx proporciona buenos ejemplos en ambos idiomas, sospecho que otros proveedores también lo hacen.
Definitivamente debería alejarse de la captura esquemática para el diseño lógico. Se siente más fácil al principio, pero eso es ilusorio. Mis $ 0.02 en idiomas: VHDL es una abominación, use Verilog.
@markt, ¿por qué cree que VHDL es tan malo?
También se podría decir que Verilog es una abominación, use VHDL. VHDL espera que digas exactamente lo que quieres, mientras que Verilog lo adivina. Pero eso es solo mi £ 0.02.
@Stacey más o menos lo que dijo Brian Drummond: VHDL es demasiado, demasiado específico. Sí, es útil poder ser muy específico, pero exigirlo es excesivo e innecesario.
@markt, comencé con VHDL, así que en un momento aprecié su fuerte tipificación. Me obligó a pensar en lo que quería y a crear buenos hábitos cuando estaba empezando. Ahora estoy demasiado metido en el campo de SystemVerilog como para preocuparme demasiado de cualquier manera, sinceramente.

Respuestas (5)

El diseño esquemático solo es útil cuando solo está uniendo algunos módulos listos para usar (contadores, sumadores, memoria, etc.). Pero implementar un algoritmo real (digamos, un algoritmo hash de criptografía) es casi imposible de hacer sin un HDL (como VHDL o Verilog), ya que no hay forma de describir un sistema a nivel de comportamiento con símbolos esquemáticos.

La mayoría de los proyectos se realizan en HDL de estilo conductual porque son demasiado complejos para sintetizarlos a mano y dibujarlos utilizando primitivas lógicas de forma esquemática.

Los CPLD generalmente se usan para la lógica de pegado y menos para el procesamiento, y generalmente la lógica es fácil de implementar esquemáticamente, por lo que creo que tiene razón cuando sugiere que los diseños basados ​​en FPGA se benefician más del uso de un HDL.

Puedes hacer cosas muy complejas en un sistema esquemático simbólico. Me atrevería a decir que cualquier cosa que se pueda hacer en un HDL podría implementarse en un sistema basado en esquemas, aunque a costa de la mantenibilidad. Siempre que el conjunto de herramientas pueda definir bloques de símbolos que actúen como un solo símbolo, puede hacer casi cualquier cosa.
Un buen ejemplo aquí es labview. Es una interfaz de programación simbólica donde las personas han diseñado sistemas enormemente complejos que automatizan fábricas enteras. El resultado final es casi imposible de mantener, pero es posible (nota: no me refiero a si es una buena idea, solo a la viabilidad básica).
"La mayoría de los proyectos se realizan en HDL de estilo de comportamiento ..." no es compatible y, de hecho, NO es cómo funcionan los flujos de diseño.
@ConnorWolf Tengo que estar en desacuerdo con que el código de Labview sea tan inmantenible, no es que sea un gran admirador. Hay algunas mejores prácticas que realmente ayudan. Para mí, generalmente es el abandono de cualquier esperanza de compatibilidad hacia adelante o hacia atrás lo que causa problemas de mantenimiento, a diferencia de cualquier cosa inherente al lenguaje G;)

Un par de aspectos prácticos además de la excelente respuesta de Jay:

  • Insectos. Las herramientas esquemáticas tienden a tener más errores* que el resto del conjunto de herramientas. Esto posiblemente se deba a la preferencia de Verilog/VHDL sobre los esquemas en la industria y, por lo tanto, los desarrolladores de software prestan menos atención a la entrada de esquemas.
  • Velocidad. El esquema debe convertirse primero a HDL antes de pasarlo a la herramienta de síntesis. Esto puede tener un impacto negativo en los tiempos de construcción. El HDL generado también podría no ser muy legible en caso de que necesite inspeccionarlo por algún motivo.
  • Portabilidad. Dependiendo de la cantidad de primitivas específicas del proveedor utilizadas, Verilog y VHDL son más o menos portátiles entre dispositivos. Al transferir esquemas, debe volver a dibujar todo o confiar en las capacidades de importación/exportación proporcionadas (si las hay).

*Mi error favorito en Xilinx ISE fue la incapacidad de seleccionar cables verticales.

Hay muchas ventajas de un HDL (lenguaje de descripción de hardware) como estándar de entrada de diseño.

La descripción de la funcionalidad puede estar en un nivel superior, los diseños basados ​​en HDL se pueden sintetizar en una descripción a nivel de puerta de una tecnología elegida, un diseño HDL se entiende más fácilmente que una lista de red a nivel de puerta o una descripción esquemática y HDL reducir los errores debido a la fuerte verificación de tipos.

Los lenguajes de descripción de hardware VHDL y Verilog fueron diseñados para modelar hardware con la intención de modelar en un nivel de abstracción más alto que incluye características como concurrencia, tiempo, jerarquía, reutilización de componentes, comportamiento de estado, comportamiento síncrono, comportamiento asíncrono, sincronización y paralelismo inherente. .

Surgen problemas durante la síntesis, asignando la descripción del diseño a un proceso específico y la implementación de la puerta. Esto requiere que no pueda usar las características de alto nivel de HDL; debe producir "Verilog/VHDL sintetizable"

Entonces, tiene HDL para síntesis y HDL para simulación, y el subconjunto que se puede sintetizar es específico de la herramienta.

No puede pasar de una descripción de diseño de comportamiento a una lista de red/diseño. Pero puede estructurar su diseño para que tenga componentes de comportamiento que también tengan un aspecto sintetizable que se pueda comparar entre sí. Comienza con el comportamiento y luego, una vez que funciona, vuelve a escribir para la síntesis (que es un subconjunto). Pasas de lo general a lo específico y construyes bancos de pruebas en el camino.

Una ventaja más es que los HDL obtienen las mismas ventajas que los lenguajes de programación regulares en el sentido de que pueden usarse en sistemas de control de versiones estándar, diferenciarse para examinar cambios, etc.

Además de lo que ya se ha dicho: las representaciones de texto son simplemente mucho más manejables, especialmente en proyectos grandes. Puede (aunque con grandes dificultades) convertir cualquier HDL sintetizable en un esquema, pero es más fácil trabajar con cientos de líneas de texto sin formato que con cientos de elementos esquemáticos.