ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Sentencias Concurrentes En VHDL


Enviado por   •  18 de Febrero de 2014  •  783 Palabras (4 Páginas)  •  1.091 Visitas

Página 1 de 4

Sentencias concurrentes en VHDL

Caballero Luna Jesús, Contreras Garrido Nayeli, Salazar Briones Irving Eduardo, Tapia Hernández Eleazar

Facultad de Ciencias de la Computación,

Benemérita Universidad Autónoma de Puebla

Av.14 Sur y Av. San Claudio, Puebla, México

Kear001@hotmail.com

.

I. INTRODUCCIÓN

VHDL Concurrente y Secuencial

En VHDL, una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan concurrentemente.

Una de las diferencias más importantes entre el hardware y el software es la propiedad concurrente del primero y generalmente secuencial del segundo.

En VHDL todas las sentencias ejecutables están organizadas en dos grupos: sentencias concurrentes y sentencias secuenciales

II. DESARROLLO

2.1 Process

• Las sentencias dentro de un proceso son secuenciales

• Las señales NO se pueden declarar dentro de un proceso

• Las variables se usan dentro de los procesos

[etiqueta]: process [(lista de sensitividad)]

[declaraciones]

begin

sentencias secuenciales

end process [etiqueta];

• El proceso se ejecuta solo si alguna de las señales que están en la lista de sensitividad cambia.

2.2 Sentencias Concurrentes

Algunas de sus propiedades son:

• Se ejecutan al mismo tiempo (en paralelo).

• No hay prioridad entre unas y otras.

• Describen paralelismo.

• El comportamiento es independiente del orden en el cual son escritas.

• Las sentencias concurrentes equivalen a procesos.

• Forman el cuerpo de las arquitecturas y bloques, algunas en las entidades.

Es importante saber que el orden en que se escriban es indiferente ya que no siguen un orden a diferencia de las instrucciones secuenciales el orden de escritura determina el momento de la ejecución.

En VHDL existen:

Las sentencias IF, Case Loop, wait, no pueden ser concurrentes ya que estas se utilizan para codificar prioridades.

2.1 Declaraciones condicionales asignadas a una señal (when'else)

La sentencia when'else se utiliza para asignar valores a una señal, determinando así la ejecución de una condición propia del diseño. En este caso es obligatorio siempre acabar la expresión con un ELSE.

La sintaxis es:

Para ejemplificar, consideremos la entidad mostrada en la figura 2.1., cuyo funcionamiento se define en la tabla de verdad.

Figura 2.1. Declaraciones when-else

La entidad se puede programar mediante declaraciones condicionales (when-else), debido a que este modelo permite definir paso a paso el comportamiento del sistema, según se muestra en

el listado 2.1.

La función de salida f (línea 10) depende directamente de las condiciones que presentan las variables de entrada, además y dado que la ejecución inicial de una u otra condición no afecta la lógica del programa, el resultado es el mismo; es decir, la condición de entrada "111", visualizada en la tabla de verdad, puede ejecutarse antes que la condición "000" sin alterar el resultado final.

En el diseño convencional se utilizarían inversores, compuertas OR y compuertas AND; en VHDL la solución es directa utilizando la función lógica and.

Siempre es obligatorio asignar algo, aunque es posible no realizar acción alguna, para ello se utiliza la palabra reservada UNAFFECTED. De esta forma se asignará el mismo valor que tenía la señal.

2.2 Declaraciones concurrentes asignadas a señales.

En este tipo de declaración encontraremos las funciones de salida mediante la ecuación booleana que describe el comportamiento de cada una de las compuertas. Obsérvese que ahora el circuito de la figura 2.3 cuenta con tres salidas (xl, x2 y x3) en lugar de una.

Figura 2.3 Circuito lógico realizado con compuertas.

El programa correspondiente al circuito de la figura 2.3 se muestra a continuación.

2.3 Selección de una señal (with*select>when)

La instrucción With… Select permite la enumeración de todas las posibles elecciones del conjunto de entradas. Cuando exista un conjunto de entradas cuya salida es común o redundante, se puede agrupar bajo la instrucción de when… others.

Su sintaxis es:

Por ejemplo, en el código correspondiente a la figura 2.4 se muestra el código que representa a este tipo de declaración. Como puede observarse, el valor de la salida C depende de las señales de entrada seleccionadas a (0) y a (l), de acuerdo con la tabla de verdad correspondiente.

Figura 2.4 Tabla de verdad

2.4 Diferencias entre For Loop y For generate

A continuación en la figura2.4.1 se define la sintaxis para un loop.

Figura 2.4.1

La sintaxis para un for generate se muestra en la figura 2.4.2

Figura 2.4.2

Diferencias

For loop For generate

Usado en Process Usado en Arquitectura

Sentencias secuenciales Sentencias Concurrentes

3 Conclusiones

Como pudimos ver existen 3 sentencias concurrentes: declaraciones condicionales asignadas a una señal (when'else) que se utiliza para asignar valores a una señal, determinando así la ejecución de una condición propia del diseño. Declaraciones concurrentes asignadas a señales donde encontraremos las funciones de salida mediante la ecuación booleana que describe el comportamiento de cada una de las compuertas y la declaración with'Select-when se utiliza para asignar un valor a una señal con base en el valor de otra señal previamente seleccionada.

Referencias

[1] David G. Maxinez. VHDL El arte de programar sistemas digitales 1a. Edicion, (Mexico 2002), pp.61-68.

[2] Universidad del país Vasco. Recuperado el 29 de septiembre del 2013 de: www.ehu.es/~jtpolagi/completo/01.htm#5

...

Descargar como  txt (5.6 Kb)  
Leer 3 páginas más »
txt