Sesión 1: Introducción al lenguaje VHDL

Anuncio
Sesión 1:
Introducción al lenguaje VHDL
S1
1
Laboratorio de Estructura de Computadores – Curso 04 / 05
AREAS DE APLICACION DE VHDL
Síntesis
i1
suma
carry
i2
Modelado de
Rendimiento
Documentación
Circuito
semisumador
Componentes:
puerta AND
puerta OR
puerta XOR
............................
............................
VHDL
ENTITY circuito IS
PORT(i1,i2 : IN bit; sum, carry : OUT);
END circuito;
ARCHITECTURE estructura OF circuito IS
BEGIN
PROCESS
..................
END PROCESS;
END estructura;
Verificación
Formal
Diagnosis de Fallos
i1
suma
i2
¿correcto?
Simulación
carry
si
CLK
X
Z
S1
2
Laboratorio de Estructura de Computadores – Curso 04 / 05
NIVELES DE RESOLUCION DE UN SISTEMA DIGITAL
Sistema
Sistema
MEMORIA
XDLi
FI1
FI1
FI2
FI2
BUSQUEDA
BUSQUEDA
RELOJ
INIT
LECTURA
LECTURA
INIT
WRITE
ESCRITURA
DISPONIBLE
Chip
DISPONIBLE
BUS_DIR
BUS_DIR
BUS_DAT_SAL
BUS_DAT_ENT
BUS_DAT_ENT
BUS_DAT_SAL
bus de direcciones
RMICAUX
RMIC
DECOD
SEQUEN
Registros
ROM
DE
CONTROL
MAR
R
I
bus de datos
S
•
Q S
Q
•
NQ R
NQ
R
Puertas
VDD
Circuito
IN
OUT
VSS
VDD
Silicio
IN
OUT
VSS
S1
3
Laboratorio de Estructura de Computadores – Curso 04 / 05
CAPACIDAD EXPRESIVA DE VHDL
SISTEMA
CHIP
VHDL
REGISTRO
PUERTAS
CIRCUITO
SILICIO
DESCOMPOSICION ESTRUCTURAL DEL DISEÑO
Descomposición estructural
S1
4
Laboratorio de Estructura de Computadores – Curso 04 / 05
UNIDAD DE DISEÑO EN VHDL
ENTITY
señales_de_entrada
nombre
ARCHITECTURE
primera
señales_de_salida
ARCHITECTURE
ARCHITECTURE
segunda
tercera
Correspondencia
Entrade/Salida
descrita con procesos
interconectados
S1
5
Laboratorio de Estructura de Computadores – Curso 04 / 05
UNIDAD DE DISEÑO EN VHDL: SINTAXIS
ENTITY nombre IS
PORT ( señales_de_entrada : IN tipo; señales_de_salida : OUT tipo);
END nombre;
ARCHITECTURE primera OF nombre IS
BEGIN
PROCESS
Declaraciones
BEGIN
Cuerpo del Proceso
(Algorítmo Secuencial)
END PROCESS;
END primera;
S1
6
Laboratorio de Estructura de Computadores – Curso 04 / 05
SENTENCIAS SECUENCIALES DE VHDL
1) Sentencia de asignación de variable
variable := expresión;
2) Sentencias de control del flujo de ejecución
a) Condicional
IF condición THEN sentencias_1 ELSE sentencias_2;
b) Alternativa
CASE expresión IS
WHEN valor_1 => sentencias_1;
WHEN valor_2 => sentencias_2;
-----------------------------------------WHEN valor_n => sentencias_n;
END CASE;
c) Bucle iterativo
FOR índice IN rango LOOP sentencias END LOOP;
3) Sentencias de interacción con el exterior
a) Asignación de señal
señal <= expresión AFTER retardo;
S1
b) Espera de eventos
WAIT ON lista_de_señales;
Laboratorio de Estructura de Computadores – Curso 04 / 05
7
CONCEPTO BASICO DE SEÑAL
s1
'1'
'0'
0
10
5
driver de la señal s1 :
15
20
25
ns
{('0', 5 ns), ('1', 10 ns), ('0', 20 ns, ('1', 25 ns)}
S1
8
Laboratorio de Estructura de Computadores – Curso 04 / 05
EJEMPLO 1: Puerta and de dos entradas
ENTITY and2 IS
PORT (a, b : IN bit; c : OUT bit);
END and2;
a
ARCHITECTURE primera OF and2 IS
BEGIN
PROCESS
BEGIN
c <= a AND b AFTER 3 ns;
WAIT ON a, b;
END PROCESS;
END primera;
and2
b
a
b
c
13
5
0
10
23
15
20
28
c
ns
ns
a
b
-------------------------------------0
0
0
5
1
0
10
1
1
13
1
1
20
0
1
23
0
1
25
1
1
28
1
1
c
0
0
0
1
1
0
0
1
25
S1
9
Laboratorio de Estructura de Computadores – Curso 04 / 05
SEGUNDA ARQUITECTURA para la Puerta and de dos entradas
ARCHITECTURE segunda OF and2 IS
BEGIN
PROCESS
VARIABLE temp : BIT;
BEGIN
temp := a AND b;
IF (temp = '1') THEN
c <= temp AFTER 6 ns;
ELSE
c <= temp AFTER 4 ns;
END IF;
WAIT ON a, b;
END PROCESS;
END segunda;
a
b
c
16
S1
0
5
10
15
24
20
25
31
ns
30
Laboratorio de Estructura de Computadores – Curso 04 / 05
a
and2
c
b
ns a b c
----------------0 0 0 0
5 1 0 0
10 1 1 0
16 1 1 1
20 0 1 1
24 0 1 0
25 1 1 0
31 1 1 1
10
EJEMPLO 2: Multiplexor
ENTITY mux IS
PORT ( i3, i2, i1, i0, x1, x0 : IN BIT; z : OUT BIT );
END mux;
i3
i2
ARCHITECTURE mux OF mux IS
BEGIN
PROCESS
TYPE peso IS RANGE 0 TO 3;
VARIABLE muxval : peso;
BEGIN
muxval := 0;
IF (x0 = '1') THEN muxval := muxval + 1; END IF;
IF (x1 = '1') THEN muxval := muxval + 2; END IF;
CASE muxval IS
WHEN 0 =>
z <= i0 AFTER 10 ns;
WHEN 1 =>
z <= i1 AFTER 10 ns;
WHEN 2 =>
z <= i2 AFTER 10 ns;
WHEN 3 =>
z <= i3 AFTER 10 ns;
END CASE;
WAIT ON i3, i2, i1, i0, x1, x0;
END PROCESS;
END mux;
S1
z
mux
i1
i0
x1
x0
11
Laboratorio de Estructura de Computadores – Curso 04 / 05
EJEMPLO 3: Circuito and con máscara.
ENTITY and_mask IS
PORT ( x, y, m : IN bit_vector ( 7 DOWNTO 0);
z : OUT bit_vector ( 7 DOWNTO 0));
END and_mask;
x
y
m
8
8
8
z
and_mask
8
ARCHITECTURE and_mask OF and_mask IS
BEGIN
PROCESS
BEGIN
FOR i IN 0 TO 7 LOOP
IF ( m(i) = '0') THEN NEXT;
ELSE
z(i) <= x(i) AND y(i);
END IF;
END LOOP;
WAIT ON x, y, m;
END PROCESS;
END and_mask;
S1
12
Laboratorio de Estructura de Computadores – Curso 04 / 05
EJEMPLO 4: Máquina de Estados Finitos.
ENTITY mef IS
PORT(x, reloj : IN BIT; z : OUT BIT);
END mef;
0
inicial
0
S1
ARCHITECTURE unica OF mef IS
BEGIN
est1010
1
PROCESS
1
TYPE estados IS (inicial, est1, est10, est101, est1011);
0
0
VARIABLE estado : estados := inicial;
1
BEGIN
WAIT ON reloj;
est101
1
IF reloj = '1' THEN
0
0
CASE estado IS
WHEN inicial =>
IF x = '1' THEN estado := est1; ELSE estado := estado; END IF;
z <= '0';
WHEN est1 =>
IF x = '1' THEN estado := est1; ELSE estado := est10; END IF;
z <= '0';
WHEN est10 =>
IF x = '1' THEN estado := est101; ELSE estado := inicial; END IF;
z <= '0';
WHEN est101 =>
IF x = '1' THEN estado := est1011; ELSE estado := est10; END IF;
z <= '0';
WHEN est1011 =>
IF x = '1' THEN estado := est1; ELSE estado := est10; END IF;
z <= '1';
END CASE;
END IF;
END PROCESS;
END unica;
Laboratorio de Estructura de Computadores – Curso 04 / 05
1
1
est1
0
0
est10
0
13
Practica 1: Conceptos básicos de VHDL
Objetivos
1. Utilización de las construcciones secuenciales básicas de VHDL.
2. Modelado del comportamiento de pequeños sistemas combinacionales y secuenciales.
2. Familiarización con el entorno VHDL para compilar, depurar, simular y trazar programas.
Práctica a realizar
Codificación de un programa VHDL (entre 30 y 40 líneas de código) que utilice las
sentencias secuenciales estudiadas hasta el momento. El programa deberá modelar el
comportamiento de un sistema digital previamente especificado (decodificador, decodificador
con prioridad, codificador, demultiplexor, operador aritmético, máquina secuencial, etc)
Resultados a entregar
Documentación del programa en la que conste:
1. Especificación del sistema modelado.
2. Listado VHDL comentado del código del programa.
3. Diagramas de tiempo que muestren la respuesta del sistema frente a entradas
significativas.
S1
14
Laboratorio de Estructura de Computadores – Curso 04 / 05
Descargar