¿Cuál es la mejor abstracción para el código HDL?

3

Recientemente he comenzado a codificar seriamente en Verilog HDL. Aunque todavía tengo que controlar los FPGA y CPLD, tengo curiosidad acerca de los niveles de abstracciones utilizados en estos códigos. Entiendo que tengo 3 opciones en este momento, Behavioral, Register Transfer y Gate level modeling . Pero no puedo decidir cuál es la más adecuada para una buena síntesis. Por ejemplo, al hacer circuitos más pequeños incursioné en el modelado de nivel de puerta, pero más tarde, cuando pasé a describir mis propias ALU, utilicé el modelado de nivel de comportamiento. Pero el modelado de comportamiento se siente como una programación simultánea y no exactamente una descripción de hardware. Entonces, ¿cuál es la mejor manera de escribir código que garantice una síntesis adecuada?

    
pregunta Rick_2047

2 respuestas

8

Debería ignorar completamente los términos "comportamiento", "Transferencia de registro" y "Nivel de puerta". Creo que estos términos fueron inventados por profesores o personas que escriben libros de texto y tienen poca o ninguna relevancia para "realmente hacer el trabajo". Es como los científicos y profesores que inventan nombres latinos solo para hacer que suenen inteligentes.

Escriba su código (Verilog, VHDL, o lo que sea) para que obtenga los resultados que desea y su código sea legible y comprensible. Después de hacer esto por un tiempo, se establecerá en un estilo que funcione para usted.

Debo mencionar que la única forma en que esto puede suceder es si aprendes todo sobre Verilog (o lo que sea). A menudo, hay características del lenguaje que no están bien cubiertas por los libros o los profesores, pero que realmente te ayudan a escribir código de manera eficiente y fácil de leer.

    
respondido por el user3624
2

Nadie debería escribir en "nivel de puerta". No hay necesidad de eso fuera del aprendizaje. Es demasiado bajo para ser productivo.

El nivel más común es el nivel de transferencia de registro. Sin embargo, cuando está inferiendo un sumador, por ejemplo, eso es "comportamiento" en el sentido de que no le está diciendo a las herramientas cómo hacerlo.

    
respondido por el Brian Carlton

Lea otras preguntas en las etiquetas