DISEÑO EN VHDL PARA FPGAs.
MODELOS DE HARDWARE.
EL LENGUAJE VHDL
0
MODELOS DE HARDWARE.
Son los modelos que utiliza VHDL para describir hardware:
Modelo de estructura Modelo de concurrencia Modelo de tiempo (simulación) Modelo de síntesis evento a b
e r a w d r l a a h e o r l e d o M
5 ns
S a
5 ns
C
S = a ⊕ b C = a ·b
b S C 5 ns 10 ns15 ns20 ns
PR
CLK
D CL Q 2ns PR Q
CL CLK D Q
EL LENGUAJE VHDL
5ns 10ns 15ns 20ns
1
MODELO DE ESTRUCTURA .
Estructura que toma el lenguaje para modelar circuitos digitales.
Está formado por varias partes que se conectan entre sí: Entity : interfaz del dispositivo con el exterior Architecture: define la funcionalidad del circuito Component : permite usar elementos ya definidos
EL LENGUAJE VHDL
2
MODELO DE CONCURRENCIA .
¿Cual es el comportamiento de la señal C en función del orden en el que evalúan las funciones?
A IN: 1->0
C
B 1
Primero se evalúa la puerta NAND: IN: 1->0 A: 0->1 B: 1->0 C: 0->0
Primero se evalúa la puerta AN IN: 1->0 A: 0->1 C: 0->1 B: 1->0 C: 1->0
MODELO DE CONCURRENCIA .
Para modelar el funcionamiento real del hardware (concurrente) se un entorno de programación concurrente en el cuerpo de la arquit
También se pueden usar las sentencias secuenci ales de los lengua programación (if , for , case, etc) encapsuladas dentro de procesos (process) architecture … begin … s e process c u begin e n c … i a l end; s
E n t o r n o c o n c u
MODELO DE TIEMPO .
El lenguaje VHDL utiliza un mo delo temporal para simular hardware de una m realista (concurrencia, retardos, etc).
La simulación de un modelo VHDL está dirigida por eventos.
El código VHDL se comporta como el hardware que modela cuando se some serie de estímulos sobre el tiempo de simulación (Banco de pruebas).
Banco de pruebas
Modelo VHDL
Estímulos
Instrucciones
Los ESTÍMULOS actualizan los valores de las SEÑALES de entrada del mo ocasionando EVENTOS en ellas que disparan la ejecución de procesos en modelo.
MODELO DE TIEMPO .
Estímulos
Instante actual de simulación T
1º fase ACTUALIZA SEÑALES
Siguiente instante de simulación T+δT
2º fase ACTIVA PROCESOS
En el instante físico T, todos los procesos están inicialmente en suspenso. A con actualizan tod as las señales cuyo driver tiene un par (valor, tiempo) tal que su t iempo
Se activan aquellos procesos sensibles a los eventos de las señales actualizadas anterior. En la ejecución de los procesos se planifican nuevos valores para éstas u o que pueden provocar el disparo de nuevos procesos. Los procesos se ejecutan sin in
MODELO DE TIEMPO .
Siempre debe haber un retardo entre el momento en que un proceso co nuevo valor en la cola de eventos de una señal y el momento en que la señal valor programado de la cola de eventos para modelar conc urrencia.
Si no se especifica ningún retardo el lenguaje fija uno conocido como retard ( ).
El retardo delta no se corresponde con ningún retardo real, permite ordenar que ocurren en el mismo tiempo físico de simulación.
Diferencia entre señales y variables:
Cuando se ejecuta una asignación sobre una variable ésta se actualiz acto.
Cuando se ejecuta una asignación sobre una señal se proyecta un evento sobre la cola de eventos y solo cuando todos los pro cesos ejecutado y estén suspendidos, se actualizará el valor de la señal con
MODELO DE TIEMPO . MODELO ESTIMULOS a<=‘1’; a<=‘1’;
waitfor for44ns; ns; wait
a<=‘0’; a<=‘0’;
waitfor for44ns; ns; wait
a<=‘1’; a<=‘1’; wait; wait;
a=1 a=0
a
a=1
entity inv is entity inv is port (a: in bit; port (a: in bit; out bit); b:out b: bit); end inv; end inv; architecture ejem of inv is architecture ejem of inv is begin begin process (a) process (a) begin begin not a after 1ns; b<=not b<= a after 1ns; end process; end process; end ejem; end ejem;
Tiempo sim. (ns) 0 1
Eventos a a=1
Cola Eventos b (valor, tiemp) (0,1)
Valor b
0 (inicio) 0
MODELO DE TIEMPO . ESTIMULOS
MODELO entity circ is entity circ is port (a,b : in bit; port (a,b : in bit; out bit); sal: :out sal bit); end circ; end circ; architecture ejem of circ is architecture ejem of circ is signal nodo: bit; signal nodo: bit; begin begin and b; nodo<= <=a aand nodo b; not nodo; sal <= sal <= not nodo; end ejem; end ejem;
<=‘1’; a a<=‘1’; b<=‘1’; b<=‘1’; wait for 5 ns; wait for 5 ns; <=‘0’; a a<=‘0’; wait for 5 ns; wait for 5 ns; <=‘1’; a a<=‘1’; b<=‘0’; b<=‘0’; wait for 5 ns; wait for 5 ns; <=‘0’; a a<=‘0’; wait; wait;
t. sim (ns) 0
Eventos a a=1
b Nodo b=1
5+
b
Nodo Sal 0 0
--
--
1
1
a
(0,2 )
1
1
b
--
1
0
1
0
0
0
2 a=0
nodo
Cola Eventos (valor, t) Nodo Sal (1, ) (1, )
N=1
5
a
(0,5+ )
Valor
nodo
sal
MODELO DE TIEMPO . ESTIMULOS <=‘1’; a a<=‘1’; b<=‘1’; b<=‘1’; wait for 5 ns; wait for 5 ns; <=‘0’; a a<=‘0’; wait for 5 ns; wait for 5 ns; <=‘1’; a a<=‘1’; b<=‘0’; b<=‘0’; wait for 5 ns; wait for 5 ns; <=‘0’; a a<=‘0’; wait; wait;
MODELO entity circ is entity circ is port (a,b : in bit; port (a,b : in bit; out bit); sal: :out sal bit); end circ; end circ; architecture ejem of circ is architecture ejem of circ is signal nodo: bit; signal nodo: bit; begin begin and b after 3 ns; nodo<= <=a aand nodo b after 3 ns; not nodo after 2 ns; sal <= sal <= not nodo after 2 ns; end ejem; end ejem;
a b
nodo
a b
nodo 3ns
2ns
sal
MODELO DE TIEMPO .
MODELO
d1
D
Q
q1
FF1
clk
D
Q FF2
q2
entity ejemplo is entity ejemplo is port (d1,clk : in bit; port (d1,clk : in bit; out bit); q2q2: :out bit); end ejemplo ; end ejemplo ; architecture rtl of ejemplo is architecture rtl of ejemplo is signal q1: bit; signal q1: bit; begin begin FF1:process process (clk) FF1: (clk) begin begin event and clk=‘1’ then clk’event ififclk’ and clk=‘1’ then
q1<=d1; q1<=d1; end if ; end if ; end process FF1; end process FF1; FF2:process process (clk) FF2: (clk)
begin begin event and clk=‘1’ then clk’event ififclk’ and clk=‘1’ then
q2<=q1; q2<=q1; end if ; end if ; end process FF2; end process FF2; end rtl; end rtl;
MODELO DE TIEMPO .
d1
ESTIMULOS clk<=‘0’; <=‘0’; clk d1<=‘0’; d1<=‘0’; wait for 2 ns; wait for 2 ns; <=‘1’; d1d1<=‘1’; wait for 3 ns; wait for 3 ns; clk<=‘1’; <=‘1’; clk wait for 5 ns; wait for 5 ns; clk<=‘0’; <=‘0’; clk wait for 5 ns; wait for 5 ns; clk<=‘1’; <=‘1’; clk wait for 5 ns; wait for 5 ns; clk<=‘0’; <=‘0’; clk <=‘0’; ‘0’; d1d1<= wait for 5 ns; wait for 5 ns; clk<=‘1’; <=‘1’; clk wait for 5 ns; wait for 5 ns; clk<=‘0’; <=‘0’; clk wait; wait;
D
Q
q1 clk
FF1
clk
d1 2 D
Q
q1
q2
FF2 q2
t. sim (ns) 0 2 5 5+ 5+
d1
Eventos clk
q1
Cola Eventos (valor, t) q1 q2
d1=1 clk=1
(1,5+ ) -q1=1
(0,5+ )
0
5
Valor q1 q2 0 0 0 1 1
0 0 0 0 0
10
15
20
2
MODELO DE TIEMPO .
ESTIMULOS r<=‘1’; r<=‘1’; s<=‘0’; s<=‘0’;
wait for 5 ns; wait for 5 ns;
<=‘0’; r r<=‘0’; wait for 5 ns; wait for 5 ns; <=‘1’; s s<=‘1’; wait for 5 ns; wait for 5 ns; <=‘1’; r r<=‘1’; wait for 5 ns; wait for 5 ns; <=‘0’; r r<=‘0’; s<=‘0’; s<=‘0’; wait; wait;
MODELO entity r s is entity r s is port ( r , s : in port ( r , s : in bibit t; ; q : inout inout bi t ; q : bi t ; qn : inout bi t ) ; qn : inout bi t ) ; end r s; end r s; architecture RTL of r s is architecture RTL of r s is begin begin
q <= r nor qn; q <= r nor qn; qn <= s nor q; qn <= s nor q; end RTL; end RTL;
error
EL LENGUAJE VHDL
13
MODELO DE TIEMPO . library i eee; library i eee; use i eee. st d_l ogi c_1164. all; use i eee. st d_l ogi c_1164. all ; use i eee. numer i c_st d. all; use i eee. numer i c_st d. all ; entity num_unos is entity num_unos is port ( a : in st d_l ogi c_vector( 7 downto 0) ; port ( a : in st d_l ogi c_vect or ( 7 downto 0) ; b : out st d_l ogi c_vector( 3 downto 0 ) ) ; b : out st d_l ogi c_vect or ( 3 downto 0 ) ) ; end num_unos ; end num_unos ; architecture behavi or al of num_unos is architecture behavi or al of num_unos is signal n : unsi gned( 3 downto 0) : = " 0000" ; signal n : unsi gned( 3 downto 0) : = " 0000" ; begin begin process ( a) process ( a) begin begin
nn
0000"; ; << ==" "0000"
for i in a' range loop for i in a' range loop if a( i ) = ' 1' then if a( i ) = ' 1' then
n+ nn << ==n+ 1;1;
end if; end if; end loop; end loop;
b b
<= st d_l ogi c_vect or ( n) ; <= st d_l ogi c_vect or ( n) ;
end process; end process; end behavi or al ; end behavi or al ;
EL LENGUAJE VHDL
14
MODELO DE TIEMPO .
¿Qué valores toman los objetos codigo1, codigo2, codigo3 y codigo4 ?
EL LENGUAJE VHDL
codigo1
92
codigo2
92
codigo3
--
codigo4
-15
MODELO DE SÍNTESIS .
Implementa un circuito físico a partir de un modelo VHDL a través de un proceso de síntesis.
Un modelo puede dar lugar a diferentes circuitos o implementaciones básicas según las restricciones impuestas.
Opera con tres tipos de infor mación: Modelo VHDL Primitivas básicas de la tecnolo gía (puertas, flip-flop , memoria, etc) Restricciones que dirigen la síntesis (área, velocidad, etc)
EL LENGUAJE VHDL
16