Para responder a algunas preguntas que has hecho en orden inverso:
VHDL es un lenguaje basado en hardware.
Es un lenguaje de descripción de hardware.
Por lo tanto, todas las palabras clave deben tener
Una representación en la vida real.
No todo lo que se puede escribir en VHDL se puede asignar a hardware real (piense en los tipos access
, que son como punteros). Algunos de estos bits no sintetizables son muy útiles para modelar su hardware real en simulaciones sin tener que entrar en el mínimo grado de agilidad como es necesario para el código sintetizable.
¿Cuáles son las representaciones de las siguientes palabras clave?
A menudo depende del contexto:
< =
Una asignación de señal: controla un valor en una señal. Si eso sucede dentro de un proceso cronometrado, obtienes un flip-flop como el conductor (potencialmente con algunas puertas alimentando su entrada D). Si (como en sus ejemplos) lo está utilizando en asignaciones continuas, simplemente obtiene las puertas lógicas.
: =
Una asignación de variable: esto crea algunas puertas lógicas. Si lees la variable "arriba" de la asignación en el proceso, también obtienes un flipflop.
proceso
con una señal de reloj en la lista de sensibilidad y una construcción de tipo if rising_edge(clk)
, esto se puede usar para inferir flipflops. En el código sintetizable evito usar procesos para otra cosa que no sea la lógica sincronizada. En el código no sintetizable, puede usar wait
s y otras estructuras de flujo de control para realizar modelos de comportamiento de hardware externo.
entidad
Vea esta pregunta: VHDL: Componente vs Entidad
espera
En términos de hardware real, se puede utilizar process
con wait until rising_edge(clk)
para inferir flipflops: enlace . En la simulación, puede wait
para una variedad más amplia de cosas, incluido el tiempo simulado.
si-entonces
caso
Lógica de "selección" (como por ejemplo un mux)
mientras
para
Los bucles en procesos cronometrados, se pueden usar para varias cosas, por ejemplo, como abreviatura, para hacer lo mismo con muchos elementos de la matriz de una vez en un solo ciclo de reloj.
No tengo idea acerca de su última pregunta, el bucle que muestra tiene un índice que no se usa dentro del bucle, por lo que simplemente será ignorado (simplemente está haciendo exactamente lo mismo una y otra vez)