En última instancia, al escribir HDL (ya sea VHDL o verilog), debe recordar que está escribiendo código como una forma de diseñar hardware.
Su herramienta de síntesis a menudo le brindará herramientas que le permitirán ver lo que ha hecho con su código en diferentes etapas del procesamiento. En quartus, por ejemplo, puede encontrarlos en "herramientas - > netlist viewers". Estos (especialmente el "visor rtl") pueden ser muy útiles para tener una idea de cómo el código se convierte en hardware.
Diseñar hardware es un juego de compensaciones.
Una máquina de estados le permite reutilizar los mismos bloques lógicos para diferentes cosas (o lo mismo con diferentes entradas, por ejemplo, en un filtro, su máquina de estados puede usar un solo multiplicador para multiplicar el elemento de datos de entrada por todos los diferentes toques de filtro ) pero viene a costa del rendimiento. El rendimiento es limitado ya que la máquina de estado tiene que trabajar a través de diferentes estados para cada elemento de datos.
Un diseño combinatorio le da resultados "inmediatamente" pero puede crear problemas de tiempo. Cuando escribe múltiples pasos de procesamiento en secuencia en un proceso, lo que sucede en la síntesis es que cada uno de esos pasos se convierte en parte de una cadena de lógica combinatoria con los valores finales de las variables que se almacenan en los registros para usar en la siguiente iteración del proceso .
Un diseño canalizado puede proporcionar un alto rendimiento y funcionar a altas velocidades de reloj, pero normalmente requiere la mayor lógica y es la mejor opción para trabajar.