VHDL = VHSIC Hardware Description Language VHSIC = Very High ...
VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High...
-
Upload
eva-maria-cardenas-torres -
Category
Documents
-
view
254 -
download
0
Transcript of VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High...
![Page 1: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/1.jpg)
VHDL
El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación de hardware que se basa en construcciones dentro de los dominios de Comportamiento y Estructura, soporta el diseño, la verificación y la síntesis de sistemas electrónicos complejos, siendo capaz de modelar tiempos.
![Page 2: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/2.jpg)
Unidad de DiseñoLa unidad VHDL básica de diseño, se usa para modelar un bloque de hardware y consta de una declaración del elemento a modelar (Entity) y una arquitectura del mismo (Architecture).
ENTITY
ARCHITECTURE
![Page 3: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/3.jpg)
Declaración de entity
A
B
F
entity NAND2 is
port(A,B: in BIT;
F: out BIT);
end NAND2;
Representa la visión externa del bloque
![Page 4: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/4.jpg)
Architecture
architecture A1 of NAND2 is
begin
F <= NOT(A and B);
end A1;
Representa la visión interna del bloque
![Page 5: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/5.jpg)
Modelos
• Comportamiento
• Estructura
• Tiempo
![Page 6: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/6.jpg)
ENTITY ffrs IS PORT ( set, reset : IN BIT ; q, qb : BUFFER BIT);end ffsr;
Q
Q/
set
reset
Entity
![Page 7: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/7.jpg)
ARCHITECTURE comportamiento OF FFRS IS BEGIN q <= NOT ( qb AND set ) AFTER 2 ns; qb <= NOT ( q AND reset ) AFTER 2 ns; END comportamiento;
set
q
reset
qb2ns
Eventos en el lado derecho disparan las asignaciones concurrentes, se calculan los valores que deberá tomar el lado derecho en el suguiente ciclo de simulación o en el tiempo que indique el retardo AFTER.
Comportamiento
![Page 8: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/8.jpg)
Concurrencia de las sentencias
La primera sentencia es la única que se ejecuta en el tiempo en que set cambió. La segunda sentencia no se ejecutará hasta que ocurra el cambio en q o en la señal reset. Si no ocurre ningún evento en reset antes de 2 ns en que ocurrirá el cambio en q será este último evento el que despierte la segunda asignación. Esta programará un nuevo valor ´0´ para qb dentro de 2ns.
q <= NOT ( qb AND set ) AFTER 2 ns; qb <= NOT ( q AND reset ) AFTER 2 ns;
Concurrencia
![Page 9: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/9.jpg)
Event scheduling La asignación del nuevo valor de q no ocurre instantáneamente sino que de acuerdo a la cláusula AFTER deberá ocurrir a los 2ns. El mecanismo para retrasar el nuevo valor es llamado “event scheduling” (planificación del evento). Al asignar un nuevo valor a q el mismo fue planificado para que ocurra 2 ns mas tarde.
Planificación
![Page 10: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/10.jpg)
Estructura
ARCHITECTURE netlist OF ffrs IS
COMPONENT nand2
PORT ( a, b : IN BIT;
c : OUT BIT );
END COMPONENT;
BEGIN
U1 : nand2
PORT MAP ( set, qb, q );
U2 : nand2
PORT MAP ( reset, q, qb );
END netlist;
![Page 11: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/11.jpg)
Instancias
En el área de sentencias hay dos sentencias de instancia de componentes. Cada sentencia crea una instancia de un componente en el modelo
![Page 12: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/12.jpg)
Algunas construcciones nos permiten el control condicional dentro del proceso, es decir, sentencias que son ejecutadas cuando una cierta condición es verdadera o no. Otras nos permiten el control iterativo.
Control Secuencial
![Page 13: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/13.jpg)
Control Secuencial
ARCHITECTURE secuencial OF ffrs IS
BEGIN
PROCESS ( set, reset )
BEGIN
IF set = ´1´ AND reset = ´0´ THEN
q <= ´0´ AFTER 2 ns;
qb <= ´1´ AFTER 4 ns;
ELSIF set = ´0´ AND reset = ´1´ THEN
q <= ´1´ AFTER 4 ns;
qb <= ´0´ AFTER 2 ns;
ELSIF
q <= ´1´ AFTER 2 ns;
qb <= ´1´ AFTER 2 ns;
END IF;
END PROCESS;
END secuencial;
![Page 14: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/14.jpg)
Procesos y Componentes
La unidad básica de la descripción de comportamiento es el process mientras que
la unidad básica de la descripción de estructura es el component.
Ninguno de los dos puede exitir fuera del cuerpo de la arquitectura, la cual constituye una unidad de biblioteca analizable en forma
separada.
![Page 15: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/15.jpg)
Modelo de Tiempo
Actualizar señales Ejecutar proceso
Comienzo simulación
Fin simulación
Está basado en la respuesta a estímulos:El modelo responde cuando hay un estímulo y luego espera el siguiente estímulo.
VHDL tiene un modelo de tiempo en dos etapas que se denomina ciclo de simulación
![Page 16: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/16.jpg)
Actualizar señales
Ciclo de Simulación
Durante la primera etapa del ciclo de simulación se propagan valores a través de
las vías de datos (señales). Esta etapa se completa cuando todas las vías hayan sido
actualizadas con sus nuevos valores correspondientes a dicho ciclo
![Page 17: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/17.jpg)
Ciclo de Simulación
Durante la segunda etapa, aquellos procesos que se hallen activos (es decir los que reciban información mediante sus canales sensibles)
son puestos en funcionamiento hasta que sean suspendidos.
Ejecutar proceso
![Page 18: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/18.jpg)
En este modelo siempre hay cierto retardo entre el tiempo en que un proceso pone un valor en el camino de datos y el tiempo en el cual el camino refleja dicho valor. En particular, si no se asigna un retardo al camino de datos el sistema usa un retardo delta. Este retardo no actualiza el tiempo del reloj de simulación sino que requiere el pasaje a un nuevo ciclo de simulación
Retardos
![Page 19: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/19.jpg)
Conductor de una señal
Un conductor (driver) para una señal se define por el proceso que asigna valores a la señal.
Los valores que viajan por los caminos de datos en un tiempo dado están contenidos en dicho conductor, el cual consta de una colección de parejas (tuplas) valor/tiempo llamadas transacciones.
![Page 20: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/20.jpg)
Asignación concurrente
Los “conductores” son creados por sentencias de asignación de señales. Una asignación concurrente de señal dentro de una architecture produce un “conductor” para cada asignación de señal. Asignaciones múltiples producirán “conductores” múltiples de señal.
![Page 21: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/21.jpg)
Creación de un conductor
ARCHITECTURE t1 OF d1 IS
BEGIN
a <= b AFTER 10 ns ;
a <= c AFTER 10 ns ;
END t1;
![Page 22: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/22.jpg)
FUNCIÓN DE RESOLUCIÓN
La señal a está siendo manejada por dos fuentes, b y c. Cada asignación concurrente creará un conductor para la señal a, esto no es admitido a menos que se defina una función de resolución (resolved signals).La forma en que esto se resuelve queda a cargo del diseñador.
![Page 23: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/23.jpg)
VHDL incluye dos tipos de retardo para controlar el efecto de la asignación de una pareja valor/tiempo en la forma de onda proyectada para la señal:
retardo inercia
retardo transporte
Retardos
![Page 24: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/24.jpg)
0 10 20 30 40
A B
B <= transport A after 20 ns;
Transporte
![Page 25: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/25.jpg)
El retardo de transporte es similar al retardo en un cable donde la salida siempre tiene lugar sin importar el tiempo de duración de la señal. s <= transport value after time_expression;
Significado transporte
![Page 26: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/26.jpg)
10ns 20ns 30ns 40ns
A
B
10
Las transacciones agendadas para ocurrir antes del retardo de transporte se mantienen como puede verse con el 1
Comportamiento transporte
![Page 27: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/27.jpg)
A B
B <= A after 20 ns;
0 10 20 30 40
A
B
RETARDO INERCIAL
![Page 28: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/28.jpg)
El retardo inercial (default) se usa para representar componentes que requieren que el valor de las entradas persista por un tiempo dado antes de que el componente responda.
Significado inercial
![Page 29: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/29.jpg)
Las transacciones agendadas para ocurrir antes del retardo de transporte se descartan
10ns 20ns 30ns
40ns
A
B
10
Consecuencia del retardo inercial
![Page 30: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/30.jpg)
Asignación elegida
I0
I1
I2
I3
S
Q
WITH s SELECT
Q <= I0 AFTER 10 ns WHEN 0,
I1 AFTER 10 ns WHEN 1,
I2 AFTER 10 ns WHEN 2,
I3 AFTER 10 ns WHEN 3,
‘X’ AFTER 10 ns WHEN
OTHERS;
SIGNAL s: INTEGER;
![Page 31: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/31.jpg)
Asignación condicional
a b
Ss <= 0 WHEN a=‘0’ and b=‘0’ ELSE
1 WHEN a=‘1’ and b=‘0’ ELSE
2 WHEN a=‘0’ and b=‘1’ ELSE
3 WHEN a=‘1’ and b=‘1’ ELSE
4;
SIGNAL s: INTEGER;
![Page 32: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/32.jpg)
Sentencia BLOCK(equivalente a hoja de diseño)
ARCHITECTURE ...
BEGIN
ALU: BLOCK
SIGNAL qbus ...
BEGIN
--comportamiento de ALU
END BLOCK;
![Page 33: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/33.jpg)
GUARDED BLOCKS
ARCHITECTURE latch_guard OF latch IS
BEGIN
G1: BLOCK(clk = ‘1’) -- expresión de guarda
BEGIN
q <= GUARDED d AFTER 5 ns;
qb <= GUARDED NOT(d) AFTER 7 ns;
END BLOCK G1;
END latch_guard;
![Page 34: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/34.jpg)
USE WORK.std_logic_1164.ALL;ENTITY and2 ISGENERIC(rise, fall : TIME; load : INTEGER); PORT ( a,b : in std_logic ; c : out std_logic) ;END and2;
ARCHITECTURE load_depend OF and2 IS SIGNAL internal : std_logic;BEGIN internal <= a AND b; c <= internal AFTER (rise + (load * 2 ns)) WHEN internal = '1' ELSE internal AFTER (fall + (load * 3 ns));END load_depend;
Generic
![Page 35: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/35.jpg)
COMPONET and2
GENERIC(rise, fall: TIME; load: INTEGER);
PORT(ina, inb: IN STD_LOGIC;
out1: OUT STD_LOGIC);
END COMPONENT;
...u1: and2 GENERIC MAP(10 ns, 12 ns, 3)
PORT MAP(a, b, c);
Uso del generic
![Page 36: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/36.jpg)
Atributos función de las señales
S´EVENT Retorna verdadero si ocurrió un evento en S durante el corriente delta, de lo contrario devuelve falso.
S´ACTIVE Retorna verdadero si ocurrió una transición en S durante el corriente delta, else falso.
S´LAST_EVENT Retorna el tiempo transcurrido desde la transición previa de la señal S.
S´LAST_VALUE Retorna el valor previo de S antes del último evento.
S´LAST_ACTIVE Retorna el tiempo transcurrido desde la transacción previa de la señal.
![Page 37: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/37.jpg)
Atributos ´EVENT y ´LAST_VALUE
.El atributo ´EVENT es útil para determinar flancos de
reloj. Probando si la señal tiene un valor particular y si acaba de cambiar su valor se puede deducir que ha ocurrido un flanco en la señal. Ejemplo:
![Page 38: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/38.jpg)
ENTITY ffd IS PORT( d, clk : IN BIT;
q : OUT BIT );END ffd;
ARCHITECTURE dff OF dff ISBEGIN
PROCESS(clk)BEGIN IF ( clk = ´1´) AND ( clk´EVENT ) THEN
q <= d; END IF;END PROCESS;
END dff;
Ejemplo de ‘event
![Page 39: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/39.jpg)
Este ejemplo muestra como se usa la entrada clk para transferir la entrada d a la salida q durante el flanco de subida de clk. Lo que el ejemplo ignora es que un cambio de ´X´ a ´1´ también actuará como flanco cuando no lo es. Para evitar este inconveniente se usa el atributo ´LAST_VALUE
La sentencia IF del ejemplo se transforma en:
IF ( clk = ´1 ´ ) AND ( clk´EVENT ) AND ( clk´LAST_VALUE = ´0´ ) THENq <= d;
END IF;
Last_value
![Page 40: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/40.jpg)
Atributo ´LAST_EVENT
Este atributo retorna el tiempo desde un evento previo en la señal. Resulta muy útil para probar las restricciones de tiempo de ffs tales como tiempos de setup o tiempos de hold, o bien anchos de pulsos.
![Page 41: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/41.jpg)
Setup
Time HoldTime
DATA
CLK
FlancoReferencia
Aplicación de atributos
![Page 42: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/42.jpg)
ENTITY ffd IS GENERIC ( setup_time, hold_time : TIME ); PORT( d, clk : IN BIT;
q : OUT BIT );BEGIN setup_check : PROCESS ( clk ) BEGIN IF ( clk = ´1´) AND ( clk´EVENT ) THEN
ASSERT ( d´LAST_EVENT >= setup_time )REPORT " Violación de Setup"SEVERITY ERROR;
END IF; END PROCESS setup_check;END ffd;
Código de la aplicación
![Page 43: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/43.jpg)
Se usan para crear señales especiales, basadas en otras señales. Estas señales especiales retornan información al diseñador acerca de la señal a la cual está ligado el atributo. La información es similar a la que dan los atributos de función, con la diferencia que estas señales especiales se pueden usar en cualquier lugar en que se pueda usar una señal, incluyendo listas de sensibilidad.
Los atributos de señal retornan informaciones tales como si una señal ha permanecido estable por un cierto tiempo, y cuando ha ocurrido una transacción en una señal. También pueden crear una versión retardada de la señal.
Atributos de clase de la señal
![Page 44: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/44.jpg)
s´DELAYED [(time) ] crea una versión retrasada de la señal a la cual se liga, del mismo tipo, (si no se especifica time asume delta).
s´STABLE [(time) ] crea una señal booleana que es verdadera siempre que la señal de referencia no haya tenido eventos durante el tiempo especificado.
s´QUIET [(time) ] crea una señal booleana que es verdadera siempre que la señal de referencia no haya tenido transacciones o eventos durante el tiempo especificado.
s´TRANSACTION crea una señal del tipo BIT que invierte su valor con cada transacción o evento que ocurra en s.
![Page 45: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/45.jpg)
Tiene la misma funcionalidad que la asignación de señal con retardo tipo transporte, con la diferencia que acá no es necesario declarar una nueva señal.
Veamos un ejemplo de su uso. Un método para modelar dispositivos ASIC consiste en colocar retardos relativos al camino de la señal (path-related) en los pines de entrada del elemento de biblioteca.
Antes del proceso de layout se colocan "recipientes" para los retardos en las pines de entrada. Luego de completado el layout se llenan esos recipientes con los valores reales de dichos retardos (back annotation) y se vuelve a realizar la simulación. Un método para conseguir esta back annotation de los retardos es usar valores genéricos especificados en la configuración del dispositivo.
Atributo ´DELAYED.
![Page 46: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/46.jpg)
a_ipd
b_ipd
c_opd
nand2
ENTITY nand2 IS GENERIC ( a_ipd, b_ipd, c_opd : TIME ); PORT( a,b, : IN BIT;
c : OUT BIT );END nand2;
Uso de generics
![Page 47: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/47.jpg)
ARCHITECTURE int_signals OF nand2 IS SIGNAL inta, intb : BIT;BEGIN
inta <= TRANSPORT a AFTER a_ipd;intb <= TRANSPORT b AFTER b_ipd;intc <= inta NAND intb AFTER c_opd;
END int_signals;
ARCHITECTURE attr OF nand2 ISBEGIN
c <= a´DELAYED(a_ipd) NAND b´DELAYED(b_idp) AFTER c_opd;
END attr;
Delayed
![Page 48: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/48.jpg)
En el ejemplo precedente se muestran dos métodos de retardar las señales de entrada por el retado de camino (path delay) mediante dos arquitecturas diferentes para la entity nand2.El primer método usa señales internas transporte-retardadas. Luego se hace el NAND de ambas y se asigna a la salida con cierto retardo inercial.El segundo método hace uso del atributo de señal predefinido ´DELAYED. Las señales de entrada a y b se retardan usando valores genéricos a_ipd (retardo del camino de a) y b_ipd. El NAND de los valores retardados se asigna al puerto de salida c.
Otra aplicación del atributo ´DELAYED es probar el tiempo de hold. Para ello usamos una versión retrasada de la señal clk.
Retardo de señales
![Page 49: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/49.jpg)
ENTITY ffd IS GENERIC ( setup_time, hold_time : TIME ); PORT( d, clk : IN BIT;
q : OUT BIT );BEGIN setup_check : PROCESS ( clk ) BEGIN IF ( clk = '1') AND ( clk'EVENT ) THEN ASSERT ( d'LAST_EVENT >= setup_time ) REPORT "Violacion de Setup" SEVERITY ERROR; END IF; END PROCESS setup_check;
Reporte de errores
![Page 50: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/50.jpg)
hold_check : PROCESS ( clk'DELAYED(hold_time) ) BEGIN IF ( clk'DELAYED(hold_time) = '1') AND ( clk'DELAYED(hold_time)'EVENT ) THEN ASSERT ( d'LAST_EVENT = 0 ns ) OR ( d'LAST_EVENT > hold_time ) REPORT "Violacion de Hold" SEVERITY ERROR; END IF; END PROCESS hold_check;
END ffd;
Violación de hold
![Page 51: VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.](https://reader036.fdocuments.net/reader036/viewer/2022062301/5665b4801a28abb57c920641/html5/thumbnails/51.jpg)
architecture test_arch of test issignal ina,inb,inc,ind : std_logic ;signal out1, out2 : std_logic;
component and2 generic(rise, fall : time; load : integer); port ( a, b : in std_logic;
c : out std_logic);end component;begin-- Tplh= rise+2*load Tphl= fall+3*load U1: and2 generic map(10 ns, 12 ns, 3) port map(ina, inb, out1); U2: and2 generic map(9 ns, 11 ns, 5) port map(inc, ind, out2);ina <= '0', '1' after 50 ns, '0' after 100 ns;inb <= '0', '1' after 75 ns, '0' after 125 ns;inc <= '0', '1' after 25 ns, '0' after 75 ns;ind <= '0', '1' after 50 ns, '0' after 100 ns;end test_arch;
EL TESTBENCH
entity test isend test;