¿Cómo alguien diseña inicialmente un sistema digital para HDL?

4

Así que realmente he estado golpeando duro el código de ejemplo esta semana en un intento por comprender mejor algunos conceptos básicos de diseño de HDL, específicamente los FPGA con VHDL. El libro que estoy usando (si a alguien le interesa) es "FPGA PROTOTYPING BY VHDL EXAMPLES" de Pong P. Chu.

Después de algunos ejemplos, estoy empezando a preguntarme.

¿Cómo alguien diseña inicialmente un sistema digital para HDL?

(¿Diagrama de flujo / diagrama de bloques? ¿Lista de señales? etc.)

Por ejemplo, me encanta usar Logisim para desarrollar circuitos digitales simples. La interfaz gráfica es fácil de seguir y puedo obtener simulaciones sobre la marcha sin toda la síntesis. Pero cuando estoy satisfecho con mi diseño Logisim, me resulta difícil transferir ese diseño a HDL.

¿Hay alguna forma de entender cómo debe estructurar su diseño de HDL o simplemente viene con la práctica?

    
pregunta Jake Robinson

2 respuestas

5

Generalmente tomo un enfoque de diseño de arriba hacia abajo, y comienzo dibujando un diagrama de bloques que muestra las interfaces entre los bloques de nivel superior. Luego dibujo diagramas adicionales que representan las implementaciones de los bloques de nivel superior en términos de bloques de nivel inferior.

Esta jerarquía de diagramas de bloques se traduce casi directamente a la jerarquía de los módulos HDL. Una vez que llego a un nivel suficientemente bajo de detalles en los diagramas de bloques, comienzo a codificar y dejo de dibujar diagramas.

Los diagramas de bloques también funcionan como diagramas de flujo de datos, ya que muestran en cada etapa cómo fluyen los datos de un módulo a otro.

Cuando se trata de interfaces específicas entre módulos, también dibujo diagramas de tiempo que muestran los detalles del protocolo de interfaz. También utilizo diagramas de tiempo para realizar un seguimiento del flujo de datos a través de las etapas de la tubería dentro de un módulo. En ambos casos, estos diagramas sirven como referencia cuando se observan formas de onda en el simulador durante la verificación.

    
respondido por el Dave Tweed
2

Los libros y las conferencias te dirán que hay dos formas: de abajo hacia arriba y de arriba hacia abajo.

En mi opción, los principiantes deberían comenzar de arriba a abajo, porque sabes lo que quieres (el sistema) y puedes dividirlo en módulos como los que describió Dave.

Si acumuló algo de experiencia, probablemente tendrá algún tipo de colección de módulos o su objetivo de diseño no es construir un sistema, sino un componente como un controlador VGA. De esta manera, puede construir su componente a partir de su colección de módulos y agregar un poco de lógica de pegamento y algunos FSM. Para probar este componente, también deberá escribir un nivel superior en el que los empleados de su componente.

Así que esta es una especie de estrategia de diseño ascendente o una mezcla de ambas. Creo que hay un cambio en el estilo de diseño de arriba abajo a más abajo si reúnes más experiencia.

Además de su colección de módulos, también recopilará algún tipo de patrones de diseño y protocolos que demostraron en el pasado que son útiles para resolver un problema: el uso de una interfaz fifo para pasar flujos de datos o algún tipo de protocolo de protocolo de enlace. para acoplar FSMs.

A menudo, los estudiantes tienden a comenzar a codificar sin ningún dibujo y wounder por VHDL se comporta en simulación y / o hardware de una manera diferente. Trato de convencerlos de que dibujen esquemas de RTL de alto nivel y, si necesitan RTL de bajo nivel, también. Esto tiene 3 ventajas:

  1. puedes transformar el RTL en código
  2. no escribirás código no sintetizable
  3. puede comparar la salida de su herramienta con su dibujo

Desafortunadamente, los esquemas y diagramas de tiempo para los diseños HDL no están tan extendidos como los diagramas UML para sistemas de software complejos.

    
respondido por el Paebbels

Lea otras preguntas en las etiquetas