Sie sind auf Seite 1von 69

Instituto Tecnológico de Culiacán

Departamento de Ingeniería Eléctrica-Electrónica

DIPLOMADO EN SISTEMAS DIGITALES

Módulo 1:
“Descripción de Sistemas Digitales
con VHDL”

INSTRUCTOR:
DR. MODESTO GPE. MEDINA MELENDREZ

ENERO 2010.
CONTENIDO

1. Estado actual de la lógica programable.


2. VHDL: su organización y arquitectura.
3. Diseño lógico combinacional mediante VHDL.
4. Diseño lógico secuencial con VHDL.
5. Integración de entidades en VHDL.

2
1. Estado actual de la lógica
programable.

3
1.1. Dispositivos lógicos programables (PLD).

 La integración de sistemas se ha ido superando con las


nuevas tecnologías de fabricación.
 Se han podido obtener componentes de mayor complejidad.
 El diseño ASIC (Circuitos Integrados de Aplicación Específica)
domina la tendencia en aplicaciones a nivel microelectrónica,
pero solo es conveniente con altos volúmenes de producción.
 El desarrollo de sistemas complejos requiere bastante tiempo
de desarrollo.
 Una forma más rápida y directa es utilizar lógica programable.
 La lógica programable independiza el proceso de diseño del
proceso de fabricación.

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.

 Los FPGAs y los CPLDs presentan las mismas ventajas que


los ASIC pero con un menor costo.
 El diseño se basa en bibliotecas y mecanismos de mapeo de
funciones.
 La implementación requiere una fase de programación,
generalmente rápida.
5
Estructura interna de un PLD.

 Los dispositivos PROM, PLA, PAL y GAL están formados por


arreglos de compuestas AND y OR.

 Los dispositivos CPLD y FPGA están estructurados mediante


bloques lógicos configurables y celdas de alta densidad.

6
Arreglo Lógico Genérico (GAL).

 Se forma con arreglos AND programables y OR fijo, con una


salida lógica programable.
 El GAL es reprogramable y contiene configuraciones de salida
programables.
 Las celdas programables de los GAL se pueden reprogramar
las veces que sea necesario.
 La programación permite la implementación de la función
requerida.

7
Ejemplo (GAL22V10):
Arquitectura Macrocelda
lógica de salida.

8
1.2. Dispositivos lógicos programables
de alto nivel de integración.

 Se crearon para integrar con mayor rapidez una mayor


cantidad de dispositivos en un circuito (SOC-System on Chip).
 Permiten cambios en el diseño digital.
 Un CPLD consiste de un arreglo de múltiples PLDs agrupados
como bloques en un chip.

 La unidad PI (interconexión programable) se encarga de


interconectar los bloques lógicos y los bloques de
entrada/salida.
9
 El FPGA se basa en arreglos de compuertas.
 Esta formado por arreglos de bloques lógicos configurables
(CLBs), que se comunican entre sí y con las terminales de
entrada/salida.

 Los CLB están ordenados en arreglos de matrices


programables. La comunicación se lleva a cabo por alambrados
llamados canales de comunicación.
10
 Un CLB es funcionalmente completo, ya que puede
Implementar cualquier función booleana representada en
forma de suma de productos.
 El diseño lógico dentro de un CLB se implementa con bloques
generadores de funciones o LUTs (Look Up Table).
 La diferencia entre FPGAs y CPLDs radica en el número de
flip-flops contenidos.

Características CPLD FPGA


Arquitectura -Similar a un PLD. -Similar a los arreglos de
compuertas.
-Más combinacional -Más registros + RAM.
Densidad -Baja a media -Media alta.
Aplicaciones -Contadores rápidos. -Aplicaciones de
-Máquinas de estado. Arquitecturas de computadora
-Lógica Combinacional. -DSP.
-Diseños con registros.
11
1.3. Ambiente de desarrollo de la lógica
programable.

 El soporte básico se encuentra formado por:


 una PC,
 un grabador de dispositivos lógicos programables,
 el software de aplicación (compilador lógico).

Compiladores lógicos para PLD.


 PALASM (PAL Assembler).
 Únicamente para PAL, acepta el formato de ecuaciones
booleanas.
 OPAL (Optimal PAL language).
 Para PAL y GAL, acepta el lenguaje de máquinas de estado,
ecuaciones booleanas, tablas de verdad o sus combinaciones.

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.

 Las PROM, PAL y GAL se programan empleando un grabador


de dispositivos lógicos.
 Los CPLD y FPGA se programan dentro del sistema.
13
1.4. Campos de aplicación de la lógica
programable.

 Los PLD sencillos se utilizan como remplazo de circuitos LSI y


MSI.
 Los CPLD y FPGA se aplican en áreas como
telecomunicaciones, computación, redes, medicina,
procesamiento digital de señales, multiprocesamiento de
datos, microondas, telefonía celular, filtros digitales
programables, entre otros.
 Los CPLD se utilizan especialmente a nivel industrial.
 Los FPGA son recomendables en aplicaciones secuenciales
complejas.

14
1.5. La lógica programable y los lenguajes de
descripción en hardware (HDL).

 En los 50s aparecieron los HDL como una opción para el


desarrollo de sistemas complejos.
 En los 60s se desarrollaron:
 IDL de IBM, TI-HDL de Texas Instruments, ZEUS de
General Electric, entre otros, orientados al área industrial;
éstos no estaban disponibles;
 AHPL, DDL, CDL, ISPS, entre otros, orientados al área
académica; éstos carecían de soporte y mantenimiento
adecuado.
 En los 80s surgieron VHDL, Verilog, ABEL 5.0, AHDL, entre
otros.

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).

 La entidad, el paquete y la configuración son unidades de


diseño primarias.
 La arquitectura y el cuerpo del paquete son unidades de
diseño secundarias.
 La entidad y arquitectura son indispensables en la estructura
de un programa.
20
2.2. Entidad.

 Una entidad (entity) es el bloque elemental de diseño en


VHDL.
 Las entidades son los elementos electrónicos que forman un
sistema digital.

Descripción a Símbolo funcional Diagrama a bloques


Nivel de compuertas de la entidad representativo de la entidad.

21
Puertos de entrada-salida

 Un puerto es cada señal de entrada y/o salida en una entidad.


 La declaración de los puertos debe tener un nombre, un modo
y un tipo.
 El modo permite definir la dirección que tomará la información
y el tipo define qué clase de información se transmitirá por el
puerto.

22
23
2.3. Declaración de entidades.

 Consiste en la descripción de las entradas y las salidas de un


circuito de diseño identificado como entity.
 Por ejemplo:

 (-- ) indica que el texto a la derecha es un comentario.


 ( ; ) se utiliza al finalizar una declaración.
 ( : ) se utiliza al asignar nombres a las entradas y salidas.
24
 Identificadores son nombres o etiquetas utilizados para referir
variables, constantes, señales, procesos, etc.
 Pueden contener números, letras del alfabeto y guiones bajos
que separen caracteres y no tienen restricción por longitud.

Especificación para la escritura de identificadores.

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,

 La parte del código para declarar un vector dentro de los


puertos es el siguiente.

 Se especifica el orden descendente como 3 downto 0, y el


orden ascendente como 0 to 3.
26
Declaración de entidades mediante librerías y paquetes.

 Se encuentran definidas dos librerías llamadas ieee y work.


 En la librería ieee se encuentra el paquete std_logic_1164.
 En la librería work se encuentran numeric_std, std_arithm y
gatespkg.
 La librería work es donde se almacenan los programas que se
van generando.
 Un paquete es una unidad de diseño que contiene sistemas
preestablecidos con comportamientos optimizados.

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.

 Una arquitectura se define como la estructura que describe el


funcionamiento de una entidad.
 Los estilos de programación que pueden utilizarse en VHDL
son:
 Estilo funcional
 Estilo por flujo de datos
 Estilo estructural

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:

 El símbolo <= se lee como “se asigna a”.


 El nombre del proceso es opcional.
32
Descripción por flujo de datos
 Ésta describe el camino que los datos siguen al ser
transferidos de las operaciones efectuadas entre las entradas
a la salida.
 La diferencia entre la descripción funcional y la descripción por
flujo de datos radica en la eliminación del proceso y en la
descripción sin declaraciones secuenciales.
 Se pueden utilizar dos formatos:
1. mediante instrucciones when-else;
2. por medio de ecuaciones booleanas.

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

Los operadores con la misma precedencia se aplican de


izquierda a derecha en la expresión que los contiene.
39
40
41
3. Diseño lógico combinacional
mediante VHDL.

42
3.1. Programación de estructuras básicas
mediante declaraciones concurrentes

 Una declaración concurrente se encuentra fuera de un proceso.


 Suelen usarse en las descripciones de flujo de datos y
estructural.
 En una declaración concurrente no importa el orden en que se
escriban las señales.
 Existen tres tipos de declaraciones concurrentes:
 Declaración condicional asignada a una señal (when-else).
 Declaración concurrente asignada a señales (gates).
 Selección de una señal (with-select-when).

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.

 La salida no solo depende de los valores de entrada presentes,


sino también de la historia del sistema.

 Hay dos tipos de sistemas secuenciales:


 Síncronos: se sincronizan al pulso de reloj del sistema
 Asíncronos: dependen del orden y momento en el cual se
aplican sus señales de entrada.

 En el diseño secuencial con VHDL las declaraciones if-then-


else son las más utilizadas.
57
4.2. Flip-Flops

 Los Flip-Flops son los elementos de memoria utilizados en los


sistemas secuenciales síncronos.
 Un Flip-Flop mantiene o almacena un bit de manera indefinida
hasta que un pulso o una señal cambie de estado.
 Algunos de los Flip-Flops más comunes son: SR, JK, D y T.

58
 El atributo ‘event (evento) se utiliza para describir un hecho u
ocurrencia de una señal en particular.

 Los atributos sirven para definir características que pueden


asociarse con cualquier tipo de datos, objeto o entidades.

 La condición if ( clk’event ) es cierta solo cuando ocurre un


cambio de valor en clk.

 La declaración if-then que depende de ‘event no maneja la


condición else, debido a que el compilador mantiene el valor de
Q hasta que no exista un cambio de valor en la señal clk.

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.

Las variables sensitivas


del proceso son CLK y CLR.
62
4.4. Contadores
 La forma usual para describir contadores en VHDL es mediante
operaciones de incremento, decremento o ambas.
 Cuando se requiere retroalimentación de una señal (Q<=Q+1),
ya sea dentro o fuera de la entidad, se utiliza el modo inout.

 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.

 Un sistema secuencia se desarrolla a través de una serie de


pasos generalizados:
 enunciado del problema,
 diagrama de estados,
 tabla de estados,
 asignación de estados,
 ecuaciones de entrada a los elementos de memoria y
 diagrama electrónico del circuito.
65
 El diseño de una máquina secuencial con VHDL se realiza a
partir del diagrama de estados, ya que solo se requieren
conocer las transiciones entre los estados y las condiciones
que controlan el proceso.
 La transición de un estado a otro se especifica como:

 En VHDL se utiliza estructuras case-when para especificar


cada estado.
 Las transiciones se especifican con estructuras if-then-else.

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;

 Dentro del proceso se describe la transición del edo_presente al


edo_futuro.
 La declaración del proceso queda como:
proceso1: process (edo_presente, ent) begin
case edo_presente is
when d0 => sal<= ‘valsal’;
if ent=‘valent’ then
edo_futuro <= d*;
else
edo_futuro <= d*;
end if;
67
 Ejemplo:Describa en VHDL
el siguiente diagrama de estados.

68
 Ejercicio:
Describa en VHDL el
siguiente diagrama de estados.

69

Das könnte Ihnen auch gefallen