Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Módulo 1:
“Descripción de Sistemas Digitales
con VHDL”
INSTRUCTOR:
DR. MODESTO GPE. MEDINA MELENDREZ
ENERO 2010.
CONTENIDO
2
1. Estado actual de la lógica
programable.
3
1.1. Dispositivos lógicos programables (PLD).
4
Existe una gran variedad de dispositivos lógicos programables
(PLDs).
PROM Programmable Read-Only Memory.
PLA Programmable Logic Array.
PAL Programmable Array Logic.
GAL Generic Logic Array.
CPLD Complex PLD.
FPGA Field Programmable Gate Array.
6
Arreglo Lógico Genérico (GAL).
7
Ejemplo (GAL22V10):
Arquitectura Macrocelda
lógica de salida.
8
1.2. Dispositivos lógicos programables
de alto nivel de integración.
12
PLPL (Programmable Logic Programming Language).
Para PAL y GAL; introduce el concepto de gerarquias; acepta
ecuaciones booleanas, tablas de verdad, diagramas de estado y
sus combinaciones.
ABEL (Advanced Boolean Expression Language).
Cualquier PLD; acepta ecuaciones booleanas, tablas de verdad y
diagramas de estados; es un lenguaje avanzado de HDL
(lenguaje de descripción de hardware).
CUPL (Compiler Universal Programmable Logic).
Cualquier PLD; independencia del dispositivo; es HDL.
14
1.5. La lógica programable y los lenguajes de
descripción en hardware (HDL).
15
VHDL
El departamento de defensa de Estados Unidos creó el
lenguaje VHDL, como parte del programa “Very High Speed
Integrated Circuits” (VHSIC).
En 1985 surgió la versión 7.2 definida entre el gobierno,
industrias y universidades.
En 1987 la IEEE publicó el estándar IEEEstd 1076-1987.
En 1988, VHDL fue reconocido como un estándar ANSI
(American National Standards Institute).
En 1993 se adoptó el estándar adicional VHDL IEEE1164.
Hoy en día VHDL se considera como el lenguaje estándar para
la descripción, modelado y síntesis de circuitos digitales y
sistemas complejos.
16
Ventajas del desarrollo de circuitos integrados con VHDL.
Notación formal.
Disponibilidad pública.
Independencia tecnológica de diseño.
Independencia de la tecnología y proceso de fabricación.
Capacidad descriptiva en distintos niveles de abstracción.
Uso como formato de intercambio de información.
Independencia de los proveedores.
Reutilización del código.
Facilitación de la participación en proyectos internacionales.
17
1.6. Compañías de soporte en hardware y
software.
18
2. VHDL: su organización y
arquitectura
19
2.1. Unidades básicas de diseño.
La estructura general de un programa está formada por
módulos o unidades. Existen cinco tipos:
Declaración de entidad (entity declaration);
Arquitectura (architecture);
Configuración (configuration);
Declaración del paquete (package declaration);
Cuerpo del paquete (package body).
21
Puertos de entrada-salida
22
23
2.3. Declaración de entidades.
25
2.4. Diseño de entidades utilizando vectores.
Se pueden utilizar palabras de varios bits, a éstas se les
conoce como vectores de bits.
Por ejemplo,
27
Las librerías se llaman como:
library ieee;
La librería work no requiere declaración.
El paquete std_logic_1164 en la librería ieee contiene todos
los tipos de datos que suelen emplearse en VHDL
(std_logic_vector, std_logic, entre otros).
Para obtener la información de un paquete se tiene que
accesar como:
use nombre_libreria.nombre_paquete.all;
Por ejemplo:
use ieee.std_logic_1164.all;
28
La palabra reservada all indica que se pueden usar todos los
componentes almacenados.
El paquete numeric_std define funciones para realizar
operaciones entre diferentes tipos de datos.
El paquete numeric_bit define los tipos de datos binarios con o
sin signo.
El paquete std_arith define funciones y operadores aritméticos.
Ejemplo:
29
2.5. Arquitecturas.
30
Descripción funcional
La descripción funcional se basa principalmente en el uso de
procesos y de declaraciones secuenciales.
La arquitectura se declara como:
architecture nombre_arquitectura of nombre_entidad is
begin
--
end nombre_arquitectura;
La declaración del proceso para la definición del algoritmo se
realiza como:
nombre_proceso: process (a0,a1,…,an)
begin
--
end process nombre_proceso;
31
El proceso se ejecuta mediante declaraciones secuenciales
del tipo if-then-else.
Ejemplo:
33
Ejemplo:
En base a la tabla de verdad y mediante la declaración when-else, describa el
funcionamiento de la siguiente compuerta AND.
34
Ejemplo:
Describa mediante ecuaciones booleanas el circuito mostrado a continuación:
35
Descripción estructural
Una descripción estructural basa su comportamiento en
modelos lógicos establecidos.
Estos modelos (componentes) se pueden tomar de los
paquetes contenidos en las librerías.
Los componentes se conectan internamente con señales
(alambres) que son declaradas dentro de la arquitectura.
Para programar una entidad de manera estructural, primero se
tiene que descomponer el diseño en pequeños módulos.
Una jerarquía en VHDL se refiere al procedimiento de dividir
bloques.
36
Ejemplo:
Realice el programa correspondiente en VHDL para el siguiente circuito. Utilice
descripción estructural.
37
2.6. Datos, operadores y palabras reservadas
en VHDL
38
Precedencias
42
3.1. Programación de estructuras básicas
mediante declaraciones concurrentes
43
Declaración condicional asignadas a una señal (when-else).
Ejemplo:
Escriba la descripción VHDL de un sistema que se encuentra definido por la tabla de
verdad siguiente:
44
Ejercicio.
Una función F depende de cuatro variables D, C, B, A, que representan un número
binario, donde A es la variable menos significativa. La función F adopta el valor de
cero si el número formado por las cuatro variables es inferior a 10 y superior o igual a
5. En caso contrario la función F es uno.
Realice el programa correspondiente en VHDL utilizando estructuras del tipo when-
else.
45
Declaraciones concurrentes asignadas a señales (gates)
Ejemplo:
46
Ejercicio
Dada la tabla de verdad mostrada a continuación, halle las ecuaciones X, Y y Z de la
forma suma de productos y prográmelas en VHDL, utilizando declaraciones
concurrentes asignadas a señales.
47
Selección de una señal (with-select-when)
Ejemplo:
48
Ejercicio
Diseñe un circuito comparador para comparar las magnitudes de dos números de 2
bits (A0 A1 y B0 B1). El circuito tendrá tres señales de salida GT, LT y EQ. GT será 1
para indicar que el valor de A es mayor que el valor de B. LT será 1 para indicar que
el valor de A es menor que el valor de B. EQ será 1 si el valor de A y el valor de B son
iguales. Utilice instrucciones del tipo with-select-when.
49
3.2. Programación de estructuras básicas
mediante declaraciones secuenciales
Una declaración secuencial debe ejecutarse en el orden en que
aparece y forma parte de un proceso (process).
Se utilizan las declaraciones if-then-else con la estructura elsif,
if la condición 1 se cumple then
realiza la operación 1;
elsif la condición 2 se cumple then
realiza la operación 2;
else
realiza la operación 3;
end if;
o declaraciones case-when
case A is
when “valor1deA” => salida <=“valor1salida”;
when “valor2deA” => salida <=“valor2salida”;
when others => salida <=“valor3salida”;
end case;
50
Buffer tri-estado
Ejemplo:
51
Comparador
Ejemplo:
Diseñe mediante declaraciones secuenciales un comparador de dos números A y B,
cada número formado por dos bits (A1 A0) y (B1 B0), la salida del comparador
también es de dos bits y está representada por la variable Z (Z1 Z0) de tal forma que
si:
52
Ejercicio:
Diseñe un decodificador BCD a decimal utilizando declaraciones secuenciales if-then-
else y elsif. A este decodificador también se le conoce como decodificador de 4 a 10
líneas.
53
Ejemplo:
Diseñe un circuito decodificador de BCD
a 7 segmentos utilizando declaraciones
secuenciales con case-when. La
entrada A esta formada por 4 bits (A3,
A2, A1, A0) y la salida “d” por siete bits
(a, b, c, d, e, f, g) activos en bajo.
54
Tarea:
Diseñe un circuito decodificador de BCD a decimal utilizando declaraciones
secuenciales con case-when.
55
4. Diseño lógico secuencial
con VHDL.
56
4.1. Diseño Lógico Secuencial
Un sistema secuencial se forma con un arreglo lógico
combinacional y elementos de memoria.
58
El atributo ‘event (evento) se utiliza para describir un hecho u
ocurrencia de una señal en particular.
59
Ejemplo:
Describa en VHDL el Flip-Flop D.
60
Ejercicio:
Escriba y simule el código VHDL de
un Flip-Flop SR (el programa se
realiza utilizando instrucciones
condicionales y el tipo de dato no
importa, ‘-’).
61
4.3. Registros
El diseño de registros es muy parecido al diseño de Flip-Flops.
Se utilizan vectores de bits en lugar de un solo bit.
Ejemplo:
Escriba un programa de
un registro de 4 bits.
Ejemplo:
Elabore un programa que
describa el funcionamiento
de un contador de 4 bits.
Realice en el diseño una
señal de control (Up/Down)
que determine el sentido del
conteo: ascendente o
descendente.
63
Ejercicio:
Describa en VHDL un contador
síncrono con reset asíncrono y
carga en paralelo (load). Simule su
funcionamiento.
64
4.5. Diseño de sistemas secuenciales síncronos
Los sistemas secuenciales se pueden implementar utilizando
dos modelos:
La estructura de Mealy, donde las señales de salida dependen
tanto del estado en que se encuentra el sistema, como de la
entrada que se aplica en determinado momento.
La estructura de Moore, donde la señal de salida sólo depende
del estado en que se encuentra.
66
En VHDL los estados se definen dentro de un tipo de dato
enumerado mediante la declaración type.
type estados is (d0, d1, d2, d3);
signal edo_presente, edo_futuro : estados;
68
Ejercicio:
Describa en VHDL el
siguiente diagrama de estados.
69