You are on page 1of 29

VHDL

SENTENCIAS CONCURRENTES

Sentencias Concurrentes
HARDWARE
Es inherentemente concurrente, los circuitos coexisten fsicamente en el tiempo
Este Hardware no se puede modelar en un lenguaje secuencial como C S <= A & B; Q <= C|D;
el chip tiene dos compuertas que funcionan simultneamente

ambas puertas funcionan al mismo tiempo no una antes de la otra!

Sentencias Concurrentes
Sin embargo, esta solucin no es valida con este circuito
Q no puede tomar su valor hasta que se obtenga S

Por qu? No hay que olvidar que se trata de modelar circuitos reales, no virtuales, y las seales necesitan que transcurra el tiempo para tomar un valor

Sentencias Concurrentes

PROCESOS
Describen el comportamiento de un circuito Tantos procesos como queramos Las seales NO se pueden declarar dentro de un proceso Las variables se usan dentro de los procesos

Sentencias Concurrentes

SINTAXIS de PROCESS nombre etiqueta: process (lista de sensitividad) declaraciones begin sentencias secuenciales; end process nombre etiqueta;

LISTA DE SENSITIVIDAD

DECLARACION DE VARIABLES

Sentencias Concurrentes
PROPIEDADES
Las sentencias concurrentes se utilizan fuera de un bloque PROCESS Dentro de un PROCESS se convierten en secuenciales. Se ejecutan simultneamente en la simulacin No hay prioridad Deben formar parte siempre de las arquitecturas o bloques. No conservan un orden.

Sentencias Concurrentes
En VHDL veremos las siguientes

Sentencias Concurrentes
El objeto bsico en VHDL es la seal, que se utiliza para modelar los hilos del circuito. La instruccin bsica de la ejecucin concurrente es la asignacin entre seales a travs del smbolo <=. Existen 3 tipos de asignaciones: Asignacin concurrente de seal. Asignacin condicional de seal (Whenelse). Asignacin selectiva de seal (with*select>when).

Asignacin concurrente de seal


Toda asignacin de seal se implementa como un bloque de lgica combinacional. Ejemplo:

Ejemplo en VHDL

Asignacin condicional de seal


Toda asignacin condicional de seal se implementa como un bloque de lgica combinacional. Ejemplo:

En hardware es necesario incluir todas las opciones posibles. En este caso es obligatorio siempre acabar la expresin con un ELSE. La sintaxis es:

Importante!
Siempre es obligatorio asignar algo, aunque es posible no realizar accin alguna, para ello se utiliza la palabra reservada UNAFFECTED. De esta forma se asignar el mismo valor que tena la seal.

Ejemplo en VHDL

Nota: Asignar valores a las seales, es equivalente a una sentencia process

El problema de la concurrencia del HW

Por qu? No hay que olvidar que se trata de modelar circuitos reales, no virtuales, y las seales necesitan que transcurra el tiempo para tomar un valor:

La solucin de VHDL

todos se ejecutan concurrentemente

Dos procesos como solucin:

Sentencia WITHSELECT
CASE. Su sintaxis es la siguiente:

with

select when when when

seal expresin expresin valor1 valor2

asignacin1 asignacin2

to

others

Sentencia FOR IN GENERATE


FOR IN GENERATE

FOR .. IN .. LOOP

a FOR .. IN .. GENERATE

Para recapitular.
sentencias concurrentes arquitecturas concurrente PROCESS sentencias secuenciales procedimientos PROCESS. procesos

NO
process

arquitectura.

You might also like