Professional Documents
Culture Documents
European
Training Institute
Univ. Autnoma
de Madrid
VHDL
VHDL
European
Training Institute
Introduccin
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
Univ. Autnoma
de Madrid
VHDL
VHDL
European
Training Institute
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
Univ. Autnoma
de Madrid
10 ns
20 ns
A
B
S
O se pueden sintetizar para
crear un circuito que
funciona como el modelo
A
B
European
Training Institute
S
Univ. Autnoma
de Madrid
Se puede crear un
modelo de un circuito
que ya exista, que ya
est implementado
European
Training Institute
10 ns
A
B
S
Lenguaje de Descripcin Hardware VHDL
20 ns
Simulacin
Post-Layout
Univ. Autnoma
de Madrid
La mejor doc es
el cdigo fuente
European
Training Institute
Utilizar HDLs
para hacer las
especificaciones
Univ. Autnoma
de Madrid
Univ. Autnoma
de Madrid
European
Training Institute
Univ. Autnoma
de Madrid
VHDL: Evolucin
European
Training Institute
Univ. Autnoma
de Madrid
10
Y en el futuro?
Univ. Autnoma
de Madrid
10
11
La entidad y la arquitectura
VHDL
VHDL
European
Training Institute
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
Univ. Autnoma
de Madrid
11
12
Entidad y arquitectura
Una unidad hardware se visualiza
como una caja negra
El interfaz de la caja negra esta
completamente definida.
El interior esta oculto.
rst
q[7:0]
d[7:0]
clk
European
Training Institute
co
Univ. Autnoma
de Madrid
12
13
rst
q[7:0]
d[7:0]
clk
European
Training Institute
co
Univ. Autnoma
de Madrid
13
14
European
Training Institute
Univ. Autnoma
de Madrid
14
15
MODO
mi_componente
TIPO
rst
q[7:0]
d[7:0]
clk
European
Training Institute
co
Univ. Autnoma
de Madrid
15
16
declaraciones de puertos
nombre de la
entidad
parte declarativa
de la arquitectura
nombre de la
arquitectura
cuerpo de la arquitectura
European
Training Institute
Univ. Autnoma
de Madrid
16
17
Univ. Autnoma
de Madrid
17
18
Tipos de datos
VHDL
VHDL
European
Training Institute
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
Univ. Autnoma
de Madrid
18
19
tipos
access
file
compuestos
escalares
real
entero
array
record
fsico
enumerados
European
Training Institute
Escalares:
integer
floating point
enumerated
physical
Compuestos: array
record
Punteros:
access
Archivos:
file
Univ. Autnoma
de Madrid
19
20
BIT: slo puede tomar los valores de '0' o '1. Para modelar
seales digitales
BIT_VECTOR: un array unidimensional (vector) de bits. Para
modelar buses
INTEGER: tipo entero
usado como valor ndice en lazos, constantes o valores genricos
Univ. Autnoma
de Madrid
20
21
Tipo STD_LOGIC
Los dos valores del tipo bit se quedan cortos para modelar
todos los estados de una seal digital en la realidad
El paquete IEEE.standard_logic_1164 define el tipo std_logic,
que representa todos los posibles estados de una seal real:
U
X
0
1
Z
W
L
H
European
Training Institute
Univ. Autnoma
de Madrid
21
22
European
Training Institute
Univ. Autnoma
de Madrid
22
23
Univ. Autnoma
de Madrid
23
24
Univ. Autnoma
de Madrid
24
25
"0101";
"0101";
European
Training Institute
Univ. Autnoma
de Madrid
25
26
Un solo bit:
Un rango de bits:
Notacin:
1 bit : comilla simple (')
multiples bits: comilla doble (")
European
Training Institute
Univ. Autnoma
de Madrid
26
27
European
Training Institute
Univ. Autnoma
de Madrid
27
28
Lgicos
and
or, nor
xor, xnor
&
Relacionales
=
/=
<
<=
>
>=
igual
distinto
menor
menor o igual
mayor
mayor o igual
suma
resta
concatenacin de vectores
Multiplicativos
*
/
rem
mod
multiplicacin
divisin
resto
mdulo
Signo (unarios)
+,
Miscelneos
European
Training Institute
Adicin
Desplazamiento (bit_vector)
sll, srl
sla, sra
rol, ror
Univ. Autnoma
de Madrid
28
29
Ms sobre operadores
Univ. Autnoma
de Madrid
29
30
Univ. Autnoma
de Madrid
30
31
Los procesos
VHDL
VHDL
European
Training Institute
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
Univ. Autnoma
de Madrid
31
32
begin
En el cuerpo de la arquitectura
se modela el comportamiento
del circuito con asignaciones,
instanciaciones y PROCESOS
European
Training Institute
Univ. Autnoma
de Madrid
32
33
European
Training Institute
Univ. Autnoma
de Madrid
33
34
A
B
El proceso
no declara
nada
European
Training Institute
process(A,B)
begin
if A='1' and B='1' then
S <= '1';
else
S <= '0';
end if;
Se usa un if..then..else
para describir la puerta
end process;
Univ. Autnoma
de Madrid
34
35
C
D
Q = C | D;
Ambas puertas funcionan al
mismo tiempo, no una antes
de la otra!
European
Training Institute
Univ. Autnoma
de Madrid
35
36
C
D
S <= A and B;
Q <= C or D;
Univ. Autnoma
de Madrid
36
37
Necesidad de la concurrencia
S
Q
S <= A and B;
!Q no toma el
valor correcto
porque no se da
tiempo para que
se actualize S!
Q <= S or C;
European
Training Institute
Univ. Autnoma
de Madrid
37
38
La solucin de VHDL
end ...;
European
Training Institute
Univ. Autnoma
de Madrid
38
39
A
B
C
process(A,B)
begin
if A='1' and B='1' then
S <= '1';
else
S <= '0';
end if;
end process;
S
Q
process(C,S)
begin
if C='1' then
Q <= '1';
else
Q <= S;
end if;
end process;
end uam;
European
Training Institute
Univ. Autnoma
de Madrid
39
40
Procesos: Recapitulando
European
Training Institute
Univ. Autnoma
de Madrid
40
41
IF condicion_1 THEN
...
secuencia de instrucciones 1
...
ELSIF condicion_2 THEN
...
secuencia de instrucciones 2
...
ELSIF condicion_3 THEN
...
secuencia de instrucciones 1
...
ELSE
...
instrucciones por defecto
...
END IF;
European
Training Institute
Ejemplo: Un termostato
(Ashenden Fig. 3-1)
architecture example of thermostat is
begin
ctrl : process (desired_temp, actual_temp) is
begin
if actual_temp < desired_temp - 2 then
heater_on <= true;
elsif actual_temp > desired_temp + 2 then
heater_on <= false;
end if;
end process ctrl;
end architecture example;
Univ. Autnoma
de Madrid
41
42
CASE expresion IS
WHEN caso_1 =>
...
secuencia de instrucciones 1
...
WHEN caso_2 =>
...
secuencia de instrucciones 2
...
WHEN OTHERS =>
...
instrucciones por defecto
...
END CASE;
European
Training Institute
Univ. Autnoma
de Madrid
42
43
Ejemplo:
Decodificador de 3 a 8
Univ. Autnoma
de Madrid
43
44
Ejemplo:
Bsqueda en una tabla
European
Training Institute
busca: process(valor)
variable pos : integer;
begin
encontrado <= '0'; pos := 0;
while valor /= tabla(pos) loop
pos := pos + 1;
if pos = 100 then exit;
end if;
end loop;
if pos < 100 then
encontrado <= '1';
end if;
end process;
Aqu tambin se
paraleliza el bucle
Univ. Autnoma
de Madrid
44
45
European
Training Institute
Univ. Autnoma
de Madrid
45
46
Las instrucciones se
ejecutan hasta que
se llega al wait, y en
ese punto se
suspende el proceso
Al llegar al final, se
empieza otra vez
por el principio
European
Training Institute
process(lista de seales)
...
begin
...
instrucciones secuenciales
...
end process;
El proceso se
dispara cuando
cambia alguna de
estas seales
El proceso se dispara
inmediatamente
process
...
begin
...
instrucciones secuenciales
...
wait...
...
instrucciones secuenciales
...
end process;
Lenguaje de Descripcin Hardware VHDL
Cuando se deja de
cumplir la condicin
de espera, la
ejecucin contina
Univ. Autnoma
de Madrid
46
47
European
Training Institute
Univ. Autnoma
de Madrid
47
48
No olvidar...
Las asignaciones a seales dentro de procesos
slo se ejecutan cuando se suspende el proceso
European
Training Institute
Univ. Autnoma
de Madrid
48
49
Las variables
Univ. Autnoma
de Madrid
49
50
El problema de la actualizacin
de la seal S tiene muy fcil
solucin con una variable
A
B
C
S
Q
European
Training Institute
Univ. Autnoma
de Madrid
50
51
Variables
Sintaxis
destino := fuente
Utilidad
representan
almacenamiento local
Visibilidad
global
(comunicacin entre
procesos)
local
(dentro del proceso)
Comportamiento
se actualizan cuando
avanza el tiempo (se
suspende el proceso)
se actualizan
inmediatamente
European
Training Institute
Univ. Autnoma
de Madrid
51
52
VHDL
VHDL
European
Training Institute
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
Univ. Autnoma
de Madrid
52
53
Se debe asignar
siempre (en
todos los casos)
a la salida un
valor
process(a,b,sel)
begin
if sel='1' then
y <= a;
else
y <= b;
end if;
end process;
end uam;
European
Training Institute
Univ. Autnoma
de Madrid
53
54
CAUSA
las seales en VHDL tienen un estado actual y un estado futuro
EFECTOS
En un proceso, si el valor futuro de una seal no puede ser
determinado, se mantiene el valor actual.
Se sintetiza un latch para mantener su estado actual
VENTAJAS
Simplifica la creacion de elementos de memoria
DESVENTAJAS
Pueden generarse latches no deseados,p.ej. cuando todas las
opciones de una sentencia condicional no estn especificadas
European
Training Institute
Univ. Autnoma
de Madrid
54
55
Un ejemplo correcto
architecture example of thermostat is
begin
ctrl : process (desired_temp, actual_temp) is
begin
if actual_temp < desired_temp - 2 then
heater_on <= true;
elsif actual_temp > desired_temp + 2 then
heater_on <= false;
end if;
end process ctrl;
end architecture example;
European
Training Institute
Univ. Autnoma
de Madrid
55
56
00
01
10
11
don't care
process (a)
begin
case a is
when "00" =>
res <= '1';
when "01" =>
res <= '1';
when "10" =>
res <= '0';
when others =>
null;
end process;
Univ. Autnoma
de Madrid
56
57
European
Training Institute
Univ. Autnoma
de Madrid
57
58
Asignaciones concurrentes
Univ. Autnoma
de Madrid
58
59
European
Training Institute
Univ. Autnoma
de Madrid
59
60
Univ. Autnoma
de Madrid
60
61
Univ. Autnoma
de Madrid
61
62
VHDL
VHDL
European
Training Institute
Introduccin
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
Univ. Autnoma
de Madrid
62
63
tambin vale
rising_edge(clk)
no hay else,
queremos
inferir memoria
European
Training Institute
proceso sensible
al reloj
process (clk)
begin
if clk'event and clk='1' then
q <= d;
end if;
cambia el reloj y
end process;
es ahora 1 ...
hay un flanco de
subida
Univ. Autnoma
de Madrid
63
64
Univ. Autnoma
de Madrid
64
65
CLK
Univ. Autnoma
de Madrid
65
66
Univ. Autnoma
de Madrid
66
67
European
Training Institute
Univ. Autnoma
de Madrid
67
68
Lgica
Comb.
European
Training Institute
EstFuturo
registro
Estado
Univ. Autnoma
de Madrid
68
69
Utilizacin de subtipos:
Definicion de Estados
Lgica combinacional:
Decision de cambio de
estado
Registros: Mantienen el
estado.
Logica combinacional de
definicin de salidas
European
Training Institute
Univ. Autnoma
de Madrid
69
70
Utilizacin de subtipos:
Definicion de Estados
European
Training Institute
begin
comb: process (Estado, in1, in2, in3)
begin
case Estado is
when E0 => out1 <= '0';
out2 <= '0';
EstFuturo <= E1;
when E1 => out1 <= '1';
if in1 = '1' then
EstFuturo <= E2;
else
EstFuturo <= E1;
end if;
when E2 =>
...
when E3 =>
...
end case;
end process comb;
Univ. Autnoma
de Madrid
70
71
Utilizacin de subtipos:
Definicion de Estados
registro: process
begin
wait until reset='1' or rising_edge(CK);
if reset='1' then
Estado <= E0;
else
Estado <= EstFuturo;
end if;
end process registro;
end architecture uam;
Logica combinacional de
definicin de salidas
European
Training Institute
Univ. Autnoma
de Madrid
71
72
VHDL
VHDL
Introduccin
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
European
Training Institute
Univ. Autnoma
de Madrid
72
73
European
Training Institute
Univ. Autnoma
de Madrid
73
74
Entradas
European
Training Institute
Lgica
estado sig.
Registros
de estado
Lgica
de salida
Salidas
Univ. Autnoma
de Madrid
74
75
Entradas
Lgica
estado sig.
Registros
de estado
Lgica
de salida
European
Training Institute
Estado actual
Registros
de salida
Salidas
Univ. Autnoma
de Madrid
75
76
Salida 1
Salida 2
Codif. Estados
s1
00
s2
01
s3
10
Nota: Los dos bits del estado son utilizados como salida
Entradas
European
Training Institute
Lgica
estado sig.
Registros
de estado
Salidas
Univ. Autnoma
de Madrid
76
77
Diagrama de Estados:
PWAIT
RESET
(async)
ack_out='1'
IDLE
00
REQ
European
Training Institute
REQ
RETRY
PWAIT
01
ACK
10
retry_out='1'
Univ. Autnoma
de Madrid
77
78
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY maq IS PORT (
clock, reset: IN std_logic;
req, pwait: IN std_logic;
retry_out, ack_out: OUT std_logic);
END maq;
European
Training Institute
Univ. Autnoma
de Madrid
78
79
Ejemplo: Solucin 1
European
Training Institute
Univ. Autnoma
de Madrid
79
80
European
Training Institute
Univ. Autnoma
de Madrid
80
81
Ejemplo: Solucion 2
European
Training Institute
Univ. Autnoma
de Madrid
81
82
WHEN retry
=>
WHEN ack
=>
END IF;
END PROCESS fsm;
END archmoore2;
European
Training Institute
Univ. Autnoma
de Madrid
82
83
Ejemplo: Solucin 3
std_logic_vector(1
std_logic_vector(1
std_logic_vector(1
std_logic_vector(1
DOWNTO
DOWNTO
DOWNTO
DOWNTO
0);
0) := "00";
0) := "01";
0) := "10";
BEGIN
fsm: PROCESS (clock, reset)
BEGIN
IF reset = '1' THEN
wait_gen <= idle;
ELSIF clock'EVENT AND clock = '1' THEN
European
Training Institute
Univ. Autnoma
de Madrid
83
84
European
Training Institute
Univ. Autnoma
de Madrid
84
85
En CPLDs
reduce el nmero de trminos producto
eliminando, si los hubiera, expasiones de productos, y mejorando por
tanto la velocidad
pero usa muchas ms macroceldas, y el beneficio nunca es tan
evidente como en FPGAs
European
Training Institute
Univ. Autnoma
de Madrid
85
86
European
Training Institute
THEN
THEN wait_gen <= retry;
ELSE wait_gen <= idle;
END IF;
Univ. Autnoma
de Madrid
86
87
=>
IF pwait = '1'
WHEN ack
=>
END CASE;
END IF;
END PROCESS fsm;
-- Decodificacion de salidas
retry_out <= '1' WHEN (wait_gen = retry) ELSE '0';
ack_out
<= '1' WHEN (wait_gen = ack)
ELSE '0';
END archmoore4;
European
Training Institute
Univ. Autnoma
de Madrid
87
88
Codificacin One-Hot
Logica de siguiente estado mas sencilla
Mejora la velocidad
Necesita mas registros
European
Training Institute
Univ. Autnoma
de Madrid
88
89
FSM de Mealy
Registros
de estado
Entradas
European
Training Institute
Lgica
Salidas
Univ. Autnoma
de Madrid
89
90
Diagrama de estados:
REQ PWAIT / ACK RETRY_OUT
X0/01
RESET
(async)
IDLE
0X/01
RETRY
1X/00
X1/10
European
Training Institute
Univ. Autnoma
de Madrid
90
91
Ejemplo: Solucin
ARCHITECTURE archmealy1 OF maq IS
TYPE fsm_states IS (idle, retry);
SIGNAL wait_gen: fsm_states;
BEGIN
fsm: PROCESS (clock, reset)
BEGIN
IF reset = '1' THEN
wait_gen <= idle;
ELSIF clock'EVENT AND clock = '1' THEN
CASE wait_gen IS
WHEN idle
=> IF req = '0'
THEN wait_gen <= retry;
ELSE wait_gen <= idle;
END IF;
WHEN retry
=> IF pwait = '1'
THEN wait_gen <= idle;
ELSE wait_gen <= retry;
END IF;
WHEN OTHERS
=> wait_gen <= idle;
END CASE;
END IF;
END PROCESS fsm;
retry_out <= '1' WHEN (wait_gen = retry AND pwait='0') OR
(wait_gen = idle AND req='0') ELSE '0';
ack_out <= '1' WHEN (wait_gen = retry AND pwait='1') ELSE '0';
END archmealy1;
European
Training Institute
Univ. Autnoma
de Madrid
91
92
VHDL
VHDL
Introduccin
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
European
Training Institute
Univ. Autnoma
de Madrid
92
93
PROCESS(in1)
BEGIN
senal <= in1;
END PROCESS;
senal <= in2;
European
Training Institute
in1
senal
in2
Univ. Autnoma
de Madrid
93
94
Inferencia de triestado
European
Training Institute
in1
'Z'
senal = '0'
'0'
'0'
Univ. Autnoma
de Madrid
94
95
Con un proceso:
PROCESS (ena_a, a)
BEGIN
IF (sel_a = '0') THEN
t <= a;
ELSE t <= 'Z';
END PROCESS;
European
Training Institute
Univ. Autnoma
de Madrid
95
96
Seales bidireccionales
European
Training Institute
oe
x
yfb
Univ. Autnoma
de Madrid
96
97
REG
8
LOAD
CLOCK
DATA
8
OE
European
Training Institute
Univ. Autnoma
de Madrid
97
98
VHDL
VHDL
Introduccin
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
European
Training Institute
Univ. Autnoma
de Madrid
98
99
Diseo jerrquico
top.vhd
a.vhd
a1.vhd
a2.vhd
b.vhd
c.vhd
Univ. Autnoma
de Madrid
99
100
rbol de jerarquas
COMPONENTE SUPERIOR
( TOP )
top.vhd
a.vhd
a1.vhd
b.vhd
a2.vhd
c.vhd
COMPONENTES INFERIORES
European
Training Institute
Univ. Autnoma
de Madrid
100
101
European
Training Institute
Univ. Autnoma
de Madrid
101
102
Declaracin de Componentes
European
Training Institute
Univ. Autnoma
de Madrid
102
103
USE WORK.mymuxpkg.ALL;
ARCHITECTURE archtoplevel OF toplevel IS
Asociacin por nombre
SIGNAL i: std_logic_vector(2 DOWNTO 0);
BEGIN
m0: mux2to1 PORT MAP (a=>i(2), b=>r(0), sel=>s, c=>t(0));
m1: mux2to1 PORT MAP (c=>t(1), b=>r(1), a=>i(1), sel=>s);
m2: mux2to1 PORT MAP (i(0), r(2), s, t(2));
i <= p AND NOT q;
Asociacin posicional
END archtoplevel;
European
Training Institute
Univ. Autnoma
de Madrid
103
104
Univ. Autnoma
de Madrid
104
105
European
Training Institute
Univ. Autnoma
de Madrid
105
106
VHDL
VHDL
Introduccin
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
European
Training Institute
Univ. Autnoma
de Madrid
106
107
Estilos de arquitecturas
European
Training Institute
Arquitectura estructural
Arquitectura RTL
Arquitectura comportamental
Univ. Autnoma
de Madrid
107
108
European
Training Institute
Univ. Autnoma
de Madrid
108
109
European
Training Institute
Univ. Autnoma
de Madrid
109
110
Univ. Autnoma
de Madrid
110
111
instruccion := memoria(PC);
opcode := instruccion (31 downto 28)
rs1 := instruccion(27 downto 24); rs2 := instruccion(23 downto 20);
rd := instruccion(19 downto 16); offset := instruccion(15 downto 0);
case opcode is
when load => rd := memoria(rs1 + offset);
when store => memoria(rs + offset) <= rd;
when add => rd := rs1 + rs2;
...
Univ. Autnoma
de Madrid
111
112
Niveles de abstraccin
VHDL permite describir circuitos electrnicos a
distintos niveles de abstraccin
Algortmico:
RTL
Nivel de puerta
European
Training Institute
Es la salida de la sntesis
Netlist de puertas e instanciaciones de una librera
tecnolgica
Se incluye informacin de retraso para cada puerta
Univ. Autnoma
de Madrid
112
113
VHDL
VHDL
Introduccin
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
European
Training Institute
Univ. Autnoma
de Madrid
113
114
Pasos de la simulacin
Archivos VHDL
Anlisis
libreras de trabajo
Elaboracin
Simulacin
European
Training Institute
Univ. Autnoma
de Madrid
114
115
European
Training Institute
Aprovechar
la potencia
de VHDL
Univ. Autnoma
de Madrid
115
116
estmulos
diseo.vhd
resultados
testbench.vhd
European
Training Institute
Univ. Autnoma
de Madrid
116
117
ARCHITECTURE
Entidad sin
puertos
COMPONENT
Declaracin del
componente
UUT: PORT
Instanciacin del
componente
PROCESS
Procesos de
simulacin
ARCHITECTURE
Descripcin de la UUT
CONFIGURATION
Configuracin del
componente
Testbench
European
Training Institute
Univ. Autnoma
de Madrid
117
118
Generando estmulos
Dar valores a las seales que van hacia las entradas de la UUT
En sntesis no tiene sentido el tiempo
En los testbenches el tiempo es la principal magnitud
Asignacin concurrente
senal <= '1',
'0' AFTER 20 ns,
'1' AFTER 30 ns;
Asignacin secuencial
senal <=
WAIT FOR
senal <=
WAIT FOR
senal <=
European
Training Institute
'1';
20 ns;
'0';
30 ns;
'1';
Univ. Autnoma
de Madrid
118
119
Sintaxis
ASSERT condicion REPORT string SEVERITY nivel;
NOTE
WARNING
ERROR (nivel por defecto si no se incluye SEVERITY)
FAILURE
European
Training Institute
Univ. Autnoma
de Madrid
119
120
European
Training Institute
Univ. Autnoma
de Madrid
120
121
ASSERT
ASSERT
(resultado=esperado)
(resultado=esperado)
WAIT FOR
European
Training Institute
Univ. Autnoma
de Madrid
121
122
Ejemplo de cdigo
ARCHITECTURE tb_arch OF dff_tb IS
COMPONENT dff PORT (...) END COMPONENT;
SIGNAL d, c, q : std_logic;
BEGIN
UUT : dff PORT MAP (d => d, c => c, q => q );
PROCESS
BEGIN
c <= '0'; d <= '0';
WAIT FOR 10 ns;
c <= '1';
WAIT FOR 10 ns;
ASSERT q=d REPORT "falla" SEVERITY FAILURE;
END PROCESS;
END tb_arch;
European
Training Institute
Univ. Autnoma
de Madrid
122
123
Testbenches avanzados
European
Training Institute
Univ. Autnoma
de Madrid
123
124
Procedimientos
Y la direccin:
IN, INOUT, OUT
European
Training Institute
Univ. Autnoma
de Madrid
124
125
Ejemplo de cdigo
ARCHITECTURE tb_arch OF dff_tb IS
(...)
PROCEDURE send_clock_edge(SIGNAL c : out std_logic) IS
BEGIN
c <= '0'; WAIT FOR 10 ns;
c <= '1'; WAIT FOR 10 ns;
END PROCEDURE send_clock_edge;
BEGIN
UUT : dff PORT MAP (d => d, c => c, q => q );
PROCESS
BEGIN
c <= '0'; d <= '0';
send_clock_edge(c);
ASSERT q=d REPORT "falla" SEVERITY FAILURE;
END PROCESS;
END tb_arch;
European
Training Institute
Univ. Autnoma
de Madrid
125
126
Acceso a archivos
European
Training Institute
Univ. Autnoma
de Madrid
126
127
Especificar el archivo
FILE archivo_estimulos : text IS IN "STIM.TXT";
Escribir
write(linea, resultado);
writeline(archivo_resultados, linea);
European
Training Institute
Univ. Autnoma
de Madrid
127
128
Configuracin
Una configuracin es una unidad de
diseo:
Que se usa para realizar asociaciones
dentro de los modelos
Asociar entidad con arquitectura.
En la instanciacin de un componente
asociarlo a una entidad y su arquitectura.
European
Training Institute
Univ. Autnoma
de Madrid
128
129
Configuracin: Ejemplo
Ejemplo: Sumador
A
B
U0:
Half_adder
CONFIGURATION
CONFIGURATIONa_config
a_configOF
OFFull_adder
Full_adderIS
IS
FOR
FORstructural
structural
FOR
FORall:
all:Half_adder
Half_adder
USE
USEENTITY
ENTITYwork.Half_adder(algorithmic);
work.Half_adder(algorithmic);
END
FOR;
END FOR;
FOR
FORU2:
U2:or_gate
or_gate
USE
USEENTITY
ENTITYwork.or_gate(behavioral);
work.or_gate(behavioral);
END
FOR;
END FOR;
END
ENDFOR;
FOR;
END
ENDa_config;Ejemplo
a_config;Ejemplodel
delSuma
Suma
Temp_sum
U1:
Carry_in
AB
Half_adder
Temp_carry_1
European
Training Institute
A
B
Carry_in
Full_adder
AB
Carry_out
U2
Carry_out
Univ. Autnoma
de Madrid
129
130
2. Simulacin post-sntesis
Estructural
Librera de sntesis, elementos bsicos de diseo para la FPGA
Sin tiempos
Estructural
Librera de Xilinx, elementos reales de la FPGA
Con tiempos si se carga el archivo SDF
European
Training Institute
Univ. Autnoma
de Madrid
130
131
Simulacin post-sntesis
Traducir
Traducirla
lanetlist
netlist
Simulacin post-layout
MAP
MAP
Place
Place&&Route
Route
Bitstream
Bitstream
European
Training Institute
Univ. Autnoma
de Madrid
131
132
Univ. Autnoma
de Madrid
132
133
Modelo post-layout
European
Training Institute
Univ. Autnoma
de Madrid
133
134
VHDL
VHDL
European
Training Institute
Introduccin
La entidad y la arquitectura
Tipos de datos
Los procesos
Circuitos combinacionales
Circuitos secuenciales
Mquinas de estados
Triestados
Diseo jerrquico
Estilos de diseo
Verificacin con testbenches
Univ. Autnoma
de Madrid
134