Introducción al
HDL
Lenguajes de Descripción de Hardware
HDL Leguaje de Descripción de Hardware
• Década de los 70 se crearon los HDL como
una opción al diseño de sistemas electrónicos
• IDL de IBM, TI-HDL de Texas Instruments, ZEUS
de General Electric. Estos solo disponibles
para la empresas
• A nivel Académico = AHPL, DDL, CDL, ISPS etc.
• En los 80 surgen VHDL, Verilog, ABEL, AHDL
• La Principal Características es que permiten
describir en distintos nivel de Abstracción.
LENGUAJES DE DESCRIPCIÓN DE
HARDWARE: ¿Porqué?
Diseño con HDL: • Facilita diseño
fiable
• Ahorra tiempo
• Facilita verificación
• Ahorra dinero
• Documentación del
• Facilita diseño modular diseño es más fácil
• Facilita diseño portable • Facilita diseños
• Independiza el diseño grandes por
de la implementación equipos de muchos
ingenieros
Lenguajes de Descripción de Hardware
•VHDL (Very High Speed Integrated Circuit Hardware
Description Language). Nace como proyecto del Departamento
de Defensa (DoD) de EEUU (año 82) para disponer de una
herramienta estándar, independiente para la especificación
(modelado y/o descripción) y documentación de los sistemas
electrónicos. El IEEE lo adopta y estandariza.
•Verilog: Desarrollado por Gateway y posteriormente de
Cadence. Estándar industrial hasta que apareció el VHDL como
estándar IEEE. En 1990 Cadence lo hace público y el IEEE lo
estandariza en 1995.
Etapas de fabricación de CI
Precisión y
Especificaciones de
Complejidad funcionalidad
Funcional
Diseño lógico
de compuertas
Arquitectural
Conexión FPGA interna Niveles de
Físico Abstracción
Metodología Diseños con Lógicas programable
Requisitos, restricciones y
funcional
Nivel
especificaciones funcionales
Iteración de Corrección, retroalimentación y validación
Biblioteca de
celdas
Captura del diseño (esquemáticos)
arquitectural
Diseño
Simulación- Funcional lógica, Fallos
Diseño Físico
Ubicación y conexiones (layout)
Estimulaos de
simulación
Verificación y Análisis
producción
Fabricación y
Fabricación
Test de prototipos
producción
VHDL
1 Standard 2 Standard
1988 VHDL 1994
IEEE88 IEEE94
Surge como un
proyecto del ministerio
de defensa USA en 1982
Características principales
– Hereda Muchos conceptos de lo lenguajes de alto nivel
PASCAL, ADA o C
– Descripción a varios niveles
– Simulación activa por eventos ( Event-driven)
– Modularidad
– Extensibilidad
– Flexible a la creación de nuevos tipos de datos
– Posibilidad de usar bibliotecas de diseños
Modos de Operación del VHDL
CONCURRENCIA
Funcionamiento en paralelo de procesos, similar a los circuitos
Combinacionales, donde todos funcionan al tiempo
SECUENCIALIDAD
Modo de programación típico, donde una sentencia se ejecuta
después de la otra, en un orden determinad. Funcionamiento similar
a los circuitos secuenciales que poseen operación dependiendo del
tiempo
Concurrencia
w<= not a;
x <= a and b;
y <= c and w;
z <= x or y;
Cuncurrencia
t En VHDL se usan los Process para trabajar paralelismo
t Todos los procesos e ejecutan en paralelo
t Los procesos deben poder comunicarse (sincronizarse entre
ellos) para esto se usa las señales
t Cada proceso tiene un conjunto de señales a los que es
sensibles, cada vez que se produzca un cambio en esta se
ejecuta el proceso
Elementos
fundamentales
de diseño
Unidades Básicas de Diseño
Arquitectura
Entidad
Define el
definen las entradas
comportamiento del
y salidas
sistema
Declaración del Cuerpo de
Configuracion Paquete
Paquete
Unidades Primarias y
Segundarias
Primarias
Declaración del
Entidad Paquete Configuracion
Segundarias
Arquitectura
Cuerpo de Paquete
Entidad
definen las
Entidad
entradas y salidas
entity programa is
port(
-- puertos de salidas Nombre de la entidad
---puertos de entradas
--puertos de I/O
--puertos de buffers Definición de los Puertos
de entrada y salida
); end programa;
Fin de la entidad
Entidad
definen las
Tipos de definiciones
entradas y salidas
nombre_variable: modo tipo;
• puertoa: in bit; Es un bit de entrada, y su nombre
es "puertoa“
• puertob: in bit_vector(0 to 7); Es un vector de 8 bits de
entrada siendo el MSB el puertob(0) y
el LSB el puertob(7)
• puertoc: out bit_vector(3 downto 0); Es un vector de 4 bits de
salida siendo el MSB el puertoc(3)
• puertoe: inout std_logic; Es una entrada/salida del tipo
estándar logic de un solo
bit
Tipos de datos
• puertoa: buffer bit; el buffer permite hacer realimentación
interna dentro de la entidad, pero a diferencia del puerto de
Inout el pin se muestra como una terminal de salida
Norma IEEE 1164 Entidad
definen las
entradas y salidas
use IEEE.std_logic_1164.all;
.'U' Sin iniciar .'X' Desconocido
IEEE .'W' No importa débil .'0' 0 Forzado
.'L' 0 Débil (pull down).'1' 1 Forzado
.'H' 1 Débil (pull up) .'Z' Alta impedancia
.'-' No importa
TIPOS DE
DATOS
Objetos en VHDL
• Constantes:
constant pi : real := 3.1415927;
constant bits_palabra : integer := 32;
constant uno : bit := ‘1’;
• Variables:
Valor modificable inmediatamente por una afectation (:=)
variable stop : boolean;
variable flag : bit;
Señales
M5
M1 M4
SEÑALES
M2 M3
Señales:
Modelan las entradas/salidas de un dispositivo. Se trata de una forma de onda que cambia con el
tiempo: la modificación se realiza en la próxima interacción de la simulación (retardo delta)
signal estado_actual : state;
Operadores
Operadores
Relaciona- Dezplaza
Lógicos Edición
les miento
Operaciones Operaciones de Operaciones de
lógicas: comparación: desplazamien. Operaciones de
and or = /= < sll srl sla adición:
nand nor <= > >= sra rol + - &
xor xnor ror
Operadores
Operadores
Multipli. Diversas
Signo
Operaciones de
Operaciones de Operaciones
multiplicación:
signo: diversas:
* / mod
+ - not abs
rem
**
Arquitectura
Arquitectura Define el
comportamiento del
sistema
el nombre de una entidad
Cabecera de la
arquitectura.
architecture ARQ of programa is
--declaración de señales y
otros accesorios
--núcleo del programa
end ARQ
Conjunto de sentencias,
bucles, procesos, funciones
dan operatividad al programa
Fin de la Arquitectura
Estilos de Descripción de Hardware
Algorítmico Flujo de Estructural
datos
Similar a la Ecuaciones Componentes
Programación Expresiones Por Referencia
De alto nivel
Algorítmico o Comportamental
• Incluye sentencias y órdenes
típicas de un lenguaje de
Algorítmico programación (if, then,
case,...), sin importarnos como
quedará la distribución de
puertas lógicas dentro del
integrado
Similar a la • Es necesario un proceso al ser
Programación
De alto nivel
una estructura secuencial.
Como se genera el proyecto
• Se hace exactamente lo mismo que en los ejemplos
anteriores para crear el proyecto
• Sin embargo cuando se crea el archivo ya no se
realiza en Esquemático sino VHDL
• Y da el espacio para la edición del programa, y se
siguen los mismos pasos como hasta ahora
Reglas
• Es importante señalar que los nombres de las
variables es como el programación no debe
tener números ni símbolos al inicio
Ejemplo
Modo Comportamental
Es importante que la entidad se llame
A B como el proyecto
Comparador
C
RTL View
RTL View
Procesos
• Un proceso es un conjunto de frases
• Semánticamente, se trata de una bucle infinito, a menos que exista
una frase wait o una lista de sensibilidad
• Un modelo VHDL puede verse como un conjunto que se ejecuta en
paralelo
• Las señales se utilizan para controlar la activación de los procesos
• Un programa principal en VHDL es un conjunto de procesos, en
donde cada uno se ejecuta en paralelo dentro de un bucle infinito
(excepto cuando existe un wait explícito o una lista de sensibilidad).
La lista de sensibilidad es incompatible con los waits: se utiliza uno o
el otro.
• El orden de escritura de los procesos es indiferente
P P4
P1
P2 P3
Flujo de Datos
Flujo de
datos
Ecuaciones
Expresiones
Flujo de datos
A B
Comparador
C
Estructural
Estructural
Componentes
Por Referencia
Estructural
A B
Comparador
C
Como usar un solo proyecto
Buscar en Project la parte de add/remove file
Como usar un solo proyecto
En la parte de de File Name se busca el archivo a agregar en caso de que
Este otro archivo se señala y se borra el que está
Una vez añadido
Si se puede compilar
Ejemplos Básicos
de VHDL
• Lenguajes de Descripción de Hardware
Circuito Combinacional Básico
• Dado el siguiente circuito representarlo en VHDL
Que forma de diseño utilizo?..
Estructural
Ejemplo2
When -Else
• Combinación de las Unidades Concurrentes
– Esto se puede realizar porque no importa en
orden cuando se ejecuten ya que todas se hacen
al tiempo no tiene precedencia
Ejemplo
Estructural Vs Modo de flujo
de datos
Flujo de datos
When select
Simulación
Ejemplo
Respuesta
ejemplo
Simulación
Ejemplo Buffer
Simulación
Mux
Mux
Simulación
Mux2
RTL View
Precedencia de operadores
Formato de Números
Celda Sumadora
B(3:0) A(3:0)
Cin Σ
S(3:0)
Cout
Simulación
Sumador
B(3:0) A(3:0)
Cin Σ
S(3:0)
Cout
Decodificador
DEC
Y(7:0)
Seleccion(2:0)
Decodifcador
Decodificador con Habilitador
entra
DEC
Y(7:0)
Seleccion(2:0)
Decodificador con Habilitador
N BCD a b c d e f g HEX
0 Display
0000 0 0 0 0 0 0 1 01
1 0001 1 0 0 1 1 1 1 4F
2 0010 0 0 1 0 0 1 0 12
Ánodo Común 3 0011 0 0 0 0 1 1 0 06
4 0100 1 0 0 1 1 0 0 4C
5 0101 0 1 0 0 1 0 0 24
6 0110 0 1 0 0 0 0 0 20
7 0111 0 0 0 1 1 1 1 0F
8 1000 0 0 0 0 0 0 0 00
9 1001 0 0 0 1 1 0 0 0C
A 1010 0 0 0 1 0 0 0 08
B 1011 1 1 0 0 0 0 0 60
C 1100 0 1 1 0 0 0 1 31
D 1101 1 0 0 0 0 1 0 42
E 1110 0 0 0 0 1 1 0 06
F 1111 0 1 1 1 0 0 0 38
Display
Display