Consideraciones sobre el diseño

Respecto a señales y variables

Se recomienda utilizar variables sólo cuando sea necesario almacenar un valor de forma temporal

Las señales corresponden a conexiones hardware,mientras que las variables representan asignaciones secuenciales que se ejecutan en procedimientos y procesos que se utilizan para recordar valores internos

Las variables reciben su valor inmediatamente, mientras que las señales después de un retardo delta

Ello implica que los resultados de simulación serán distintos. Aunque a nivel de síntesis el resultado será el mismo, puesto que muchos sintetizadores no diferencian entre variable y señal

Es más, muchos sintetizadores no comprueban la lista de sensitividad, aunque ello es recomendable

Algo, ya más grave, puede ocurrir cuando en un process la lógica no engloba todas las posibles combinaciones de la variable. Entonces el sintetizador infiere un latch. También se infiere un latch cuando una variable es leída previa asignación de la misma

Respecto a las señales de salida reescriturables

Algunas señales de salida (definidas en la entidad) pueden recibir el valor desde distintas sentencias, hecho que impide que puedan estar definidas como out
Para solventar este dilema existen tres soluciones

- Declarar la señal como buffer. No es muy recomendable por no ser este el tipo de señal, aparte que se deberá continuar propagando esta señal como buffer

- Utilizar una señal dummy interna cuyo valor se asigna a la señal de salida. Es la mejor opción

- VHDL’93 ha definido el atributo 'driving_value para reasignar un valor a la señal (¡pero no sirve para VHDL'87!)

...
q2 <= q1;
...
q2 <= q3'driving_value;

Anterior
Volver a inicio curso
Volver a inicio capítulo
Siguiente


WcN - Joan Oliver. Diseño de circuitos digitales con VHDL: Síntesis