Ingeniería del Software: Nuestro producto debe funcionar
(Digital) flujo de diseño y conceptos basicos
1. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL
Capítulo 1. Introducción
1.6 Flujo de diseño con VHDL
2. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL
¿ Cuál es la primera fase del diseño de un sistema
¿ Cuál es la primera fase del diseño de un sistema
digital utilizando SPLD’s, CPLD’s y/o FPGA’s ?
digital utilizando SPLD’s, CPLD’s y/o FPGA’s ?
Descripción del Diseño
Descripción del Diseño
Métodos
Limitación: Difícil o imposible la
Captura Esquemática (p.ej. OrCAD)
manipulación de diseños complejos.
Descripción con un Lenguaje (HDL)
De Bajo Nivel: PALASM
OPAL
PLPL
De Alto Nivel: Handel C
System C
Verilog
VHDL
3. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL
¿ Cuál es la primera fase del diseño de un sistema
¿ Cuál es la primera fase del diseño de un sistema
digital utilizando SPLD’s, CPLD’s y/o FPGA’s ?
digital utilizando SPLD’s, CPLD’s y/o FPGA’s ?
Descripción del Diseño
Descripción del Diseño
Simulación
Verifica que realiza la función para
Funcional
la cual fue diseñado.
Digital (Timing Simulation)
Verifica que los tiempos en la
Programación
Programación propagación del circuito no afecten
la funcionalidad del sistema.
Verificación del diseño
Verificación del diseño
FIN
FIN
4. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL
IDEA SINTESIS
SINTESIS
DESCRIPCIÓN
DESCRIPCIÓN ANALISIS
ANALISIS
DEL CIRCUITO
DEL CIRCUITO TEMPORAL
TEMPORAL
SIMULACION FUNCIONAL
SIMULACION FUNCIONAL NO
¿FUNCIONA?
¿FUNCIONA?
NO ¿FUNCIONA? SI
¿FUNCIONA? SI
PROGRAMACION
PROGRAMACION
DEL DISPOSITIVO
DEL DISPOSITIVO
NO
¿FUNCIONA? PRUEBAS
PRUEBAS ELABORACION
ELABORACION
¿FUNCIONA?
AL DISEÑO
AL DISEÑO DEL PROTOTIPO
DEL PROTOTIPO
SI
FIN
FIN
DEL PROCESO
DEL PROCESO
DE DISEÑO
DE DISEÑO
5. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Descripción del diseño
Elementos sintácticos del VHDL
Comentarios Se consideran comentarios después de dos guiones medios seguidos “--”.
Símbolos especiales Existen caracteres especiales sencillos como (&, #, +, *, =) o dobles como ( :=, <=).
Identificadores Es lo que se usa para dar nombre a los diferentes objetos del lenguaje.
Números Se considera que se encuentra en base 10, se admite la notación científica convencional
es posible definir números en otras bases utilizando el símbolo # : 2#11000100#
Caracteres Es cualquier letra o carácter entre comillas simples: ‘3’, ‘t’
Cadenas Son un conjunto de caracteres englobados por comillas dobles: “hola”
Cadenas de bits Los tipos bit y bit_vector son en realidad tipo carácter y arreglo de caracteres
respectivamente, se coloca un prefijo para indicar la base : O”126”, X”FE”
Palabras reservadas Son las instrucciones, órdenes y elementos que permiten definir sentencias.
6. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Descripción del diseño
Identificadores
Nombres o etiquetas que se usan para referir: Variables,
Constantes, Señales, Procesos, Entidades, etc.
Están formados por números, letras (mayúsculas o minúsculas) y
guión bajo “_” con las reglas especificadas en la tabla siguiente.
Longitud (Número de Caracteres): Sin restricciones
Palabras reservadas por VHDL no pueden ser identificadores
En VHDL, un identificador en mayúsculas es igual a su contraparte
en minúsculas
Reglas para especificar un identificador Incorrecto Correcto
Primer carácter debe ser siempre una letra mayúscula o minúscula 4Suma Suma4
Segundo carácter no puede ser un guión bajo ( _ ) S_4bits S4_bits
Dos guiones bajos no son permitidos Resta__4 Resta_4_
Un identificador no puede utilizar símbolos especiales Clear#8 Clear_8
7. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Descripción del diseño
Lista de palabras reservadas en VHDL
8. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Estructura básica
Estructura Básica de un Programa VHDL
Estructura Básica de un Programa VHDL
Declaración de Entidad
Declaración de Entidad
(entity)
(entity)
Unidad Primaria
Unidad Primaria
Arquitectura
Arquitectura
(architecture)
(architecture)
Unidad Secundaria
Unidad Secundaria
9. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Entidad - ¿Qué es?
entidad (entity)
entidad (entity) Bloque elemental de diseño
Bloque elemental de diseño
Circuitos elementales digitales que forman de manera
Circuitos elementales digitales que forman de manera
individual o en conjunto un sistema digital
individual o en conjunto un sistema digital
Ejemplos: Compuertas, Flip-Flops, Sumadores/Restadores, Multiplexores,
Ejemplos: Compuertas, Flip-Flops, Sumadores/Restadores, Multiplexores,
Contadores, Multiplicadores, ALUs, Neurona-Digital, etc.
Contadores, Multiplicadores, ALUs, Neurona-Digital, etc.
Ejemplo-1: Sumador
Ejemplo-1: Sumador
Cin
Entidad Cout
Puertos de Entrada A Puertos de Salida
Sumador SUMA
B
Declaración de una entidad Consiste en la descripción de los puertos de
Declaración de una entidad Consiste en la descripción de los puertos de
entrada o salida de un circuito, el cual es identificado como una entidad (entity)
entrada o salida de un circuito, el cual es identificado como una entidad (entity)
¡Importante!
¡Importante!
No se describe cómo será realizado o implementado el circuito, es decir, su Arquitectura
No se describe cómo será realizado o implementado el circuito, es decir, su Arquitectura
10. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Entidad – Descripción de un Puerto
Descripción de un Puerto
Nombre Modo Tipo de Dato
Conjuntos de Valores que se les ha asignado un nombre
Identificador in = Entrada de tal forma que un objeto de un determinado Tipo
pueda tomar cualquier valor dentro del conjunto de
out = Salida valores que define al Tipo especificado.
Valores de ‘0’ o ‘1’
Más tipos bit (pkg.standard) Lógico
Se irán introduciendo conforme avance el curso
Conjunto de bits
bit_vector que representa a un
(pkg.standard) grupo de señales de
ent. o sal.
Valores ‘U’, ‘X’,
std_logic ‘0’, ‘1’, ‘Z’, ‘W’,
(pkg.std_logic_1164) ‘L’, ‘H’, ‘-’
Arreglos de
std_logic_vector std_logic
(pkg.std_logic_1164)
Más tipos
Se irán introduciendo conforme avance el curso
11. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Entidad – Ejemplo 1
Ejemplo-1 Sumador
Cin
Entidad Cout
Puertos de Entrada A Puertos de Salida
circuito SUMA
B
(entity) Inicia declaración de la entidad
(--) Indica Comentario Identificador de la entidad
Nombres de los puertos
Línea Sumador-completo de dos datos con longitudes de 1-bit
N°. (Declaración de Entidad)
1 --Declaración de la entidad de un circuito sumador Modo de Operación
2 entity sumador is
Tipo de Dato
3 port (A, B, Cin: in bit;
4 SUMA, Cout: out bit);
5 end sumador;
(;) Finaliza declaración o subdeclaración
(end) Finaliza declaración de la entidad
12. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Entidad – Ejemplo 2
Ejemplo-2 a3
b3
a2
b2 F
a1
b1
a0
b0
Línea Detector – Uso de dos datos con longitudes de 4-bit
N°. (Declaración de Entidad)
1 --Declaracion de la entidad
2 entity circuito is
3 port (a3, b3, a2, b2, a1, b1, a0, b0: in bit;
4 F: out bit);
5 end circuito;
13. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Entidad – Ejemplo 3 (Vectores)
Ejemplo-3 a3
b3
a2
b2 F
a1
b1
a0
b0
Línea Detector – Uso de dos datos con longitudes de 4-bit
N°. (Declaración de Entidad – Uso de Vectores)
1 --Declaracion de la entidad
2 entity circuito is
3 port (a, b: in bit_vector (3 downto 0);
4 F: out bit);
5 end circuito;
14. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Entidad - Uso de biblioteca
Para llamar un paquete es necesario llamar a la “librería”/biblioteca que lo contiene
Para llamar un paquete es necesario llamar a la “librería”/biblioteca que lo contiene
(donde ha sido compilado)
(donde ha sido compilado)
Sintaxis: use nombre_librería.nombre_paquete.all;
Sintaxis: use nombre_librería.nombre_paquete.all;
Ejemplo: use ieee.std_logic_1164.all;
Ejemplo: use ieee.std_logic_1164.all;
Permite el uso de todos los componentes
Uso del paquete std_logic_1164
almacenados en el paquete
incluido en la biblioteca ieee
15. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Arquitectura - ¿Qué es?
arquitectura (architecture)
arquitectura (architecture)
Unidad de Diseño Secundaria que describe el comportamiento interno de una entidad.
Unidad de Diseño Secundaria que describe el comportamiento interno de una entidad.
¿Cómo? - A través de la descripción de varios procedimientos que permitan que la
¿Cómo? - A través de la descripción de varios procedimientos que permitan que la
entidad (entity) cumpla con las condiciones de operación o comportamiento deseadas.
entidad (entity) cumpla con las condiciones de operación o comportamiento deseadas.
Estilo de descripción o
Estilo de descripción o
Niveles de Descripción utilizados
Niveles de Descripción utilizados Modelización
Modelización
Nivel Algoritmo
Nivel Algoritmo Funcional
Funcional
Nivel de Transferencia entre Registros (RTL)
Nivel de Transferencia entre Registros (RTL)
Flujo de Datos
Flujo de Datos
Nivel Lógico
Nivel Lógico
Nivel Compuerta
Nivel Compuerta Estructural
Estructural
Nivel Transistor (Topología / Layout)
16. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Layout
Nivel Transistor (Topología // Layout)
Nivel Transistor (Topología Layout)
17. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Descripción - Estructural
Ejemplo-4a
a
f1 Línea Arquitectura - Compuerta OR de dos entradas
b Nº
1 --Ejemplo de una descripción estructural
2 library ieee;
a b f1
3 use ieee.std_logic_1164.all;
0 0 0
4 entity compuerta_or is
0 1 1 5 port (a,b: in std_logic;
1 0 1 6 f1: out std_logic);
1 1 1 7 end compuerta_or;
8 architecture estructural of compuerta_or is
9 begin
10 U1: ENTITY or2 PORT MAP (e1=>ax, e2=>bx, y=>sal);
11 --U2: ENTITY or2 PORT MAP (ax, bx, sal);
12 end estructural;
18. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Descripción - Flujo de datos
Ejemplo-4b Línea Arquitectura - Compuerta OR de dos entradas
Nº
1 --Ejemplo de una descripción abstracta (funcional)
a
f1 2 library ieee;
b 3 use ieee.std_logic_1164.all;
4 entity compuerta_or is
5 port (a,b: in std_logic;
a b f1
6 f1: out std_logic);
0 0 0 7 end compuerta_or;
0 1 1 8 architecture flujo_datos of compuerta_or is
1 0 1 9 begin
1 1 1 10 f1 <= (a) OR (b);
11 end flujo_datos;
12
13
14
15
16
17
19. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Descripción - Funcional
Ejemplo-4c Línea Arquitectura - Compuerta OR de dos entradas
Nº
1 --Ejemplo de una descripción abstracta (funcional)
a
f1 2 library ieee;
b 3 use ieee.std_logic_1164.all;
4 entity compuerta_or is
5 port (a,b: in std_logic;
a b f1
6 f1: out std_logic);
0 0 0 7 end compuerta_or;
0 1 1 8 architecture funcional of compuerta_or is
1 0 1 9 begin
1 1 1 10 process (a,b) begin
11 if (a = ‘0’ and b=‘0’) then
12 f1 <= ‘0’;
13 else
14 f1 <= ‘1’;
15 end if;
16 end process;
17 end funcional;
20. Cap.1 – Introducción 1.6 Flujo de diseño con VHDL Arquitectura. Ejemplo 5
Ejemplo-5
Ejemplo-5
ENTRADA SALIDA
a salida c salida
b 0 b
c
1 a
ENTRADAS SALIDA
c b a salida
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1