You are on page 1of 58

ESPOCH FIE - EIECRI

VHDL
Lenguaje para modelado y sntesis de circuitos electrnicos digitales

Ing. Janeth Arias G.

INTRODUCCIN
Durante la ltima dcada ha habido una gran evolucin en el diseo de sistemas electrnicos digitales. En la actualidad, LOS DISPOSITIVOS REPROGRAMABLES como las FPGAs, pueden contener ms de un milln de compuertas lgicas equivalentes y decenas de miles de flip-flops. Con tal capacidad, no es posible usar las tcnicas tradicionales de diseo lgico, donde se realizaba un diagrama de compuertas para disear un sistema digital.

INTRODUCCIN
Hoy en da los sistemas digitales se disean de manera similar al proceso de desarrollo de software mediante los lenguajes de descripcin de hardware (HDLs, por sus siglas en ingls):

Hardware Description Language

LENGUAJES DE DESCRICPION DE HW
Los lenguajes de descripcin de hardware (HDLs) permiten modelar sistemas digitales completos. Mediante herramientas de software estos modelos pueden luego sintetizarse ( Proceso automtico, realizado por dicha herramienta, para la generacin de una representacin con puertas lgicas de una descripcin VHDL) para implementarlos como circuitos reales. La utilizacin de HDLs y su posterior sntesis puede tener como objetivo la creacin de un circuito integrado de propsito especfico (ASICs) o la implementacin del circuito en algn dispositivo de lgica programable(FPGAs). 4

DISPOSITIVOS LOGICOS PROGRAMABLES


Son circuitos de propsito general que poseen una estructura interna que puede ser modificada por el usuario final, para implementar una amplia gama de aplicaciones. Los principales dispositivos lgicos programables son:

PROM (ROM Programable) PLD (Dispositivos Lgicos Programables) PLA (Arreglo Lgicos Programables) CPLD(Dispositivos Lgicos Programables Complejos) FPGA(Arreglo de compuertas Lgicas Programables)

EVOLUCIN PLD

FABRICANTES
Existen diversas empresas internacionales que fabrican dispositivos lgicos programables que soportan VHDL para sus diseos:

Altera Corporation Cypres Semiconductor Xilinx Motorola

VENTAJAS DEL USO DE FPGAs EN EL DISEO DIGITAL


Son muchas las ventajas del uso de FPGAs en el diseo digital pero tres de las mas importantes son: Facilidad de Diseo Las herramientas de software que dan soporte al diseo digita con FPGAs facilitan enormemente este proceso. Estas herramientas permiten expresar la lgica de los circuitos utilizando diversas formas como cdigos VHDL o esquemticos. Rendimiento Las FPGAs que hay en el mercado tienen tiempos de conmutacin tan rpidos que hace posible que trabaje a frecuencias muy por encima de los 100 Mhz. Fiabilidad Cuanto mas complejo es un circuito mas probabilidades hay de que alguna de sus partes falle. Puesto que las FPGAs reducen el numero de C.I. en los sistemas, la probabilidad de un fallo tambin disminuye.
7

ANTES DE VHDL....
VHDL es un lenguaje para la descripcin de Hardware. Surge como una necesidad debido a que los mtodos clsicos basados principalmente en esquemticos, llegan a ser ineficientes en diseos de altas escalas de integracin. Antes de VHDL los mtodos de diseo utilizados se basaban en ecuaciones booleanas y esquemticos. El diseo con ecuaciones booleanas requiere de la escritura de una ecuacin por cada flip-flop, esto es imprctico para circuitos con cientos de flip-flops.

El nombre VHDL es un acrnimo que resulta de la combinacin de VHSIC y HDL, que significan Very High Speed Integrated Circuit (Circuito Integrado de Muy Alta Velocidad) y Hardware Description Language(Lenguaje de Descripcin de Hardware), respectivamente.

VHDL

Se trata de un lenguaje diseado a iniciativa del departamento de defensa de Estados Unidos, basado en el lenguaje de programacin Ada y Pascal.
En 1986 el departamento de defensa de los Estados Unidos transfiri los derechos a la IEEE, con la intencin de que fuera ms ampliamente aceptado por la industria, desde 1987, IEEE se ha encargado de la publicacin y actualizacin del estndar VHDL, cuya ultima actualizacin se realizo en el ao 2001.
9

VHDL
Departamento de la Defensa de los E.U.A. Desarrollo de Lenguajes para Descripcin de Hardware Programa: Very High Speed Integrated Circuits (VHSIC) 1970s IDL/IBM, HDL/TI, ZEUS/GE Desarrollo en rea Industrial AHPL, DDL, CDL, ISPS Desarrollo en rea Acadmica 1983 VHDL Desarrollo: IBM, Texas Instruments e Intermetrics

1980s AHDL, ABEL, CUPL

1987 VHDL87
Estndar IEEE -1076

VHDL y Verilog
1993 VHDL93 Estndar IEEE -1164 10

VENTAJAS DE VHDL
Ventajas del VHDL Notacin Estandarizada (IEEE 1164-1993) Disponibilidad al Pblico Independencia del Sistema de Desarrollo (PLDs, ASICs, FPGAs) Independencia de la Metodologa de Diseo (TOP-DOWN, BOTTON UP) Independencia de la Tecnologa y Proceso de Fabricacin (CMOS, Bipolar, BiCMOS) Reutilizacin de Cdigo Capacidad descriptiva del comportamiento del sistema en distintos niveles de abstraccin: Algortmico, RTL (Register Transfer Logic) o concurrente, estructural , Netlist. Facilitar la Verificacin/Prueba y puesta a punto del sistema a disear. Adicin de la extensin analgica (IEEE1076.1 VHDL-AMS) que permite la especificacin, simulacin y sntesis de sistemas digitales, analgicos y mixtos

11

DISEO ELECTRONICO CON VHDL


VHDL es utilizado por miles de diseadores de hardware en todo el mundo. Cuando un diseador tiene necesidad de construir un sistema o circuito, piensa cmo debe funcionar, o de qu elementos se compone. Una vez que tiene la idea clara lo escribe en el computador utilizando el lenguaje VHDL(documentacin), y compila la descripcin resultante. Cuando el compilador le indica que la descripcin est correctamente escrita, respetando las reglas del lenguaje, el diseador piensa una serie de pruebas que su circuito debe superar para ser correcto, y lleva a cabo una simulacin. Cuando el diseador est satisfecho con su descripcin, puede hacer varias cosas: sintetizar su circuito con un programa de sntesis y grabar el resultado sobre un chip programable como una FPGA.

12

SINTAXIS DE VHDL
Elementos sintcticos del VHDL Comentarios
Se consideran comentarios despus de dos guiones medios seguidos --. Existen caracteres especiales sencillos como (&, #, +, *, =) o dobles como ( :=, <=).

Smbolos especiales

Identificadores
Nmeros

Es lo que se usa para dar nombre a los diferentes objetos del lenguaje.(variables, seales) Se considera que se encuentra en base 10, se admite la notacin cientfica convencional

es posible definir nmeros en otras bases utilizando el smbolo # : 2#11000100#

Caracteres Cadenas Cadenas de bits

Es cualquier letra o carcter entre comillas simples: 3, t Son un conjunto de caracteres englobados por comillas dobles: hola

Los tipos bit y bit_vector son en realidad tipo carcter y arreglo de caracteres respectivamente, se coloca un prefijo para indicar la base : O126, XFE Son las instrucciones, rdenes y elementos que permiten definir sentencias.

Palabras reservadas

13

SINTAXIS DE VHDL

Identificadores
Nombres o etiquetas que se usan para referirse a: Variables, Constantes, Seales, Procesos, Entidades, etc. Longitud (Nmero de Caracteres): Sin restricciones Palabras reservadas por VHDL no pueden ser identificadores

Reglas para especificar un identificador


Primer carcter debe ser siempre una letra mayscula o minscula Segundo carcter no puede ser un guin bajo ( _ ) Dos guiones bajos no son permitidos

Incorrecto Correcto
4Suma Suma4

S_4bits 14 Resta__4

S4_bits Resta_4_

PALABRAS RESERVADAS VHDL


abs and begin case acces architecture block component after array body configuration alias asser buffer all attribute bus

constant downto

else
exit

disconnect
function

elsif
generate inout

end
file if

entity
for
15 in

generic guarded

OPERADORES
Mayor
Precedencia de operadores
** * ABS / NOT MOD REM

+ (signo) - (signo) + = AND /= OR & < NAND <= NOR > XOR >= XNOR

Menor La precedencia de operadores se encuentran ordenados de mayor (arriba) a menor (abajo), los operadores que se encuentran en la misma fila tienen la misma precedencia y sern evaluados siguiendo el orden de izquierda a derecha.

16

OBJETOS Y TIPOS DE DATOS


Booleano (False, True) Objetos Tipo Datos Bit (0, 1)

Character (Carcter) Enumerated (Enumerados)


String (Cadena-Caracteres) std_ulogic std_logic Objetos VHDL Constante s Variables Seales File Floating Point (Punto Flotante) Physical (Fsicos) Array (Arreglos)
No soportado por herramientas de Sntesis

(U,X,0,1,Z,W,L,H,-)

Enteros [-(231-1) a (231-1)]


Escalares Integer (Enteros) Positive (No-Cero y No-Negativos) Natural (No-Negativos) Real Time (Tiempo) Bit_Vector Std_ulogic_vector Std_logic_vector Record (Registro) Access (Acceso) Unsigned Signed 17 Compuestos

Un objeto de datos en VHDL es un elemento que toma un valor de algn tipo de dato determinado, segn sea el tipo de dato, el objeto poseer un conjunto de propiedades. En VHDL los objetos de datos son generalmente una de las tres clases siguientes:

Constantes
Una constante es un elemento que puede tomar un nico valor de un tipo dato, las constantes pueden ser declaradas dentro de entidades, arquitecturas, procesos y paquetes.

Variables
Las variables pueden ser modificadas cuando sea necesario, pueden ser declaradas solamente dentro de los procesos y subprogramas.

CONSTANT identidicador : tipo := valor;


Ejemplo CONSTANT byte: integer := 8;

VARIABLE identidicador : tipo [:= valor];


Ejemplo VARIABLE aux1, aux2: bit;

Seales
Las seales si pueden almacenar o pasar valores lgicos, por lo tanto, representan elementos de memoria o conexiones y si pueden ser sintetizadas. Son declaradas en las arquitecturas antes del BEGIN.

SIGNAL identidicador : tipo [:= valor]; Ejemplo SIGNAL A, B : bit := 0; SIGNAL dato: bit_vector (7 downto 0);

18

ESTRUCTURA GENERAL DE UN PROGRAMA


Estructura General de un Programa VHDL
Cada uno formado por declaraciones o instrucciones que definen, estructuran, analizan y evalan el comportamiento de un sistema digital

Unidades de Diseo (design units)

Declaracin de Entidad (entity declaration) Unidad Primaria

Configuracin (configuration) Unidad Primaria

Declaracin de Paquete (package declaration) Unidad Primaria

Arquitectura (architecture) Unidad Secundaria

Unidades indispensables en la descripcin de un sistema

Cuerpo del Paquete (package body) Unidad Secundaria

19

ENTIDAD
Es el bloque constructivo bsico en VHDL. Una entidad (entity) es el bloque elemental de diseo en VHDL, las entidades son todos los elementos electrnicos (sumadores, contadores, compuertas, flip-flops, memorias, multiplexores, etc.) que forman de manera individual o en conjunto un sistema digital Su declaracin equivale a definir un elemento con sus terminales externos de conexin (ports):
ENTITY nombre_entidad IS PORT (port_list); END nombre_entidad;
Sintaxis

Cada puerto acta como una seal que es visible a la hora de describir el funcionamiento del elemento
20

ENTIDAD
entidad (entity) Bloque elemental de diseo

Circuitos elementales digitales que forman de manera individual o en conjunto un sistema digital
Ejemplos: Compuertas, Flip-Flops, Sumadores/Restadores, Multiplexores, Contadores, Multiplicadores, ALUs, etc.
Ejemplo Sumador

Declaracin de una entidad Consiste en la descripcin de los puertos de entrada o salida de un circuito, el cual es identificado como una entidad (entity) Importante! No se describe cmo ser realizado o implementado el circuito, es decir, su 21 Arquitectura

PUERTOS DE LA ENTIDAD
Descripcin de un Puerto

Nombre

Modo in = Entrada out = Salida inout


Puerto de Entrada (Lectura) y Salida (Escritura) El valor ledo (Entrada) es aqul que llega al puerto, y no el valor que se le asigna (Salida), en caso de existir.

Tipo de Dato
Conjuntos de Valores que se les ha asignado un nombre (p.ej. bit, boolean, bit_vector, etc), de tal forma que un objeto (p.ej. una Seal) de un determinado Tipo (p.ej. el tipo bit_vector) pueda tomar cualquier valor dentro del conjunto de valores que define al Tipo especificado.

Identificador

Bit (pkg.standard) boolean


(pkg.standard)

Valores de 0 o 1 Lgico Define valores de cierto o falso de acuerdo con una expresin Conjunto de bits que representa a un grupo de seales de ent. o sal. Nmeros enteros Valores U, X, 0, 1, Z, W, L, H, - Arreglos de std_logic

buffer
Similar al Puerto de Salida (Escritura), pero adems puede ser ledo. El valor ledo (Entrada) es el mismo valor asignado (Salida) al puerto.

bit_vector
(pkg.standard)

integer
(pkg.standard)

std_logic
(pkg.std_logic_1164)

std_logic_vector
(pkg.std_logic_1164)

22

EJEMPLO - SUMADOR
Cin Puertos de Entrada A B Entidad Sumador Cout Puertos de Salida SUMA

Lnea N. 1 2 3 4 5

Sumador-completo de dos datos con longitudes de 1-bit (Declaracin de Entidad) --Declaracin de la entidad de un circuito sumador entity sumador is port (A, B, Cin: in bit; SUMA, Cout: out bit); end sumador;

23

EJEMPLO USO DE VECTORES


vector_A = [A3, A2, A1, A0] Cin Entidad Sumador Cout

Sumador-completo de dos datos con longitudes de 4-bit

vector_B

= [B3, B2, B1, B0]

vector_SUMA = [S3, S1, S0] Declaracin deS2, Puertos Tipo-Vector

port (vector_A, vector_B: in bit_vector (3 downto 0);

Para ordenar en forma ascendente utilizar to en lugar de downto (p.ej. 0 to 3)

vector_SUMA: out (3 downto 0)); de 4Sumador-completo debit_vector dos datos con longitudes bit (Declaracin de Entidad Uso de Vectores)

entity sumador is

port (A, B: in bit_vector (3 downto 0); Cin: in bit; 24

EJERCICIO # 1

Escriba la declaracin de la ENTIDAD si: Port D is a 12-bit bus, input only Port OE and CLK are each input bit Port AD is a 12-bit bi-directional bus Port A is a 12-bit bus, output only Port INT is an output bit Port AS is an output bit also used internally
d[11:0] oe clk ad[11:0]

ENTIDAD

a[11:0] int as

25

SOLUCION AL EJERCICIO # 1
ENTITY entidad IS PORT ( d: IN std_logic_vector(11 DOWNTO 0); oe, clk: IN std_logic; ad: INOUT std_logic_vector(11 DOWNTO 0); a: OUT std_logic_vector(11 DOWNTO 0); int: OUT std_logic; as: BUFFER std_logic); END entidad;
d[11:0] oe clk ad[11:0]

ENTIDAD

a[11:0]
int

as

26

ARQUITECTURA
Define la funcionalidad o comportamiento de una determinada Entidad. La arquitectura puede definirse mediante asignaciones de expresiones lgicas, interconexiones de componentes y sentencias de alto nivel.
Sintaxis

ARCHITECTURE nombre_arq OF nombre_ent IS declaraciones BEGIN sentencias concurrentes END nombre_arq;

Nombre de entidad ARCHITECTURE ex1 OF conc IS SIGNAL z,a,b,c,d : BIT; Declaracin BEGIN de seales d <= a OR b; z <= c OR d; Asignaciones concurrentes 27 END ex1;

SEALES Y VARIABLES Las seales y variables se usan en la arquitectura


SIGNAL Se declara antes del BEGIN de la arquitectura y se puede usar en cualquier lugar de ella. Si va en un proceso su valor se actualiza al salir de l. La asignacin usa el smbolo:

<=
VARIABLE Se declara y utiliza en un proceso y actualiza inmediatamente su valor asignado. La asignacin usa el smbolo:

:=

28

LIBRERIAS
Una LIBRERA es una coleccin de piezas de cdigo comnmente usadas. La ubicacin de tales piezas dentro de una librera les permite ser reutilizadas o compartidas por otros diseos. (La misma funcin de #include en los programas en C). La librera ieee es la utilizada comnmente en los diseos y se debe declarar de la siguiente manera en el cdigo VHDL:

library ieee;
El paquete std_logic_1164 que se encuentra en la librera ieee contiene todos los tipos de datos que suelen emplearse en VHDL (std_logic_vector, std_logic, entre otros). Para usar este paquete en sus diseos utilice la siguiente sintxis:

use ieee.std_logic_1164.all;
En este caso ieee es la librera, std_logic_1164 es el paquete y la palabra reservada all indica que se pueden usar todos los 29 componentes almacenados en el paquete.

EJEMPLO # 1 COMPUERTA XOR


Realice un programa en VHDL que describa el funcionamiento de una compuerta or-exclusiva (XOR), la figura siguiente muestra el smbolo y tabla de verdad de esta compuerta:

30

EJEMPLO # 1 Cdigo VHDL (compuertaxor.vhd)


-- Declaracin de libreras library IEEE; use IEEE.STD_LOGIC_1164.ALL; -- Declaracin de la entidad --entity CompuertaXOR is Port ( A,B : in std_logic; -- Se declaran las entradas de la compuerta F : out std_logic -- Se declara la salida ); end CompuertaXOR; -- Declaracin de la arquitectura --architecture compuerta of CompuertaXOR is begin F <= A XOR B; -- cdigo para la compuerta XOR end compuerta;
31

EJERCICIO
Realice la descripcin de la entidad y la arquitectura de las siguientes compuertas lgicas: * AND * OR * XNOR * NAND * NOR Si la entrada A y B son buses de datos de 4 bits.

32

SOFTWARE DE DISEO QUARTUS II


Quartus II es una herramienta de software producido por Altera para el anlisis y la sntesis de los diseos en HDL. Quartus II permite al desarrollador compilar sus diseos, realizar anlisis temporales, examinar diagramas RTL. El proceso de diseo de un circuito digital en esta plataforma de desarrollo contempla las siguientes etapas:

33

QUARTUS II PANTALLA INICIAL

34

CREAR UN PROYECTO NUEVO


CLICK EN FILE --> NEW PROJECT WIZARD

35

CONFIGURACION DEL PROYECTO


Indique el nombre del DIRECTORIO DE TRABAJO, DEL PROYECTO Y DE LA ENTIDAD

36

CONFIGURACION DEL PROYECTO


En esta ventana se puede aadir archivos VHDL existentes que pueden ser utilizados en nuestro proyecto

37

CONFIGURACION DEL PROYECTO


Aqu se debe indicar la configuracin de la FPGA a utilizar.

38

CONFIGURACION DEL PROYECTO


Se puede utilizar herramientas de simulacin y sntesis de otros fabricantes

39

RESUMEN DEL PROYECTO

40

CREAR EL ARCHIVO DE CODIGO VHDL


CLICK EN FILE --> NEW Y ELIJA VHDL FILE

41

EDITE EL CODIGO DE LA ENTIDAD Y LA ARQUITECTURA

42

CHEQUEO DE LA SINTAXIS
Es recomendable realizar un chequeo de la sintaxis del archivo de codigo fuente para revisar posibles errores de escritura. CLIK PROCESSING --> ANALYZE CURRENT FILE

Si luego del chequeo no existe ningn error QUARTUS mostrara el siguiente mensaje

43

COMPILACIN DEL DISEO


Lo siguiente es la compilacin del proyecto VHDL. CLICK en PROCESSING --> START COMPILATION

44

COMPILACIN DEL DISEO

45

VISTA ESQUEMATICA RTL


El software de desarrollo automticamente genera la vista esquemtica rtl del cdigo vhdl. CLICK en TOOLS-->NETLIST VIEWERS-->RTL VIEWER

46

VISTA ESQUEMATICA RTL

47

SIMULACION
Lo siguiente es realizar la simulacin de nuestro diseo para verificar su correcto funcionamiento. Para esta fase es necesario definir un TESTBENCH o banco de pruebas, en el cual indicaremos los valores digitales que van a tener cada una de nuestras entradas. Para la simulacin del diseo usaremos el programa QSIM

48

SIMULACION ABRIR PROYECTO


Lo primero es indicar el proyecto a simular. CLICK en: FILE --> OPEN PROJECT

49

SIMULACION WAVEFORM EDITOR


Lo siguiente es crear el archivo WAVEFORM mediante el cual indicaremos los valores de cada una de las entradas: CLICK en FILE --> NEW SIMULATION INPUT FILE

50

SIMULACION WAVEFORM EDITOR


Es necesario definir el tiempo de simulacin. Para el ejemplo vamos a definir un tiempo de 800 ns. EDIT --> SET END TIME

51

SIMULACION WAVEFORM EDITOR


Ahora hay que indicar las entradas y salidas de nuestro diseo. EDIT --> INSERT --> INSERT NODE O BUS

52

SIMULACION WAVEFORM EDITOR

53

INGRESAR LOS VALORES EN EL WAVEFORM EDITOR


TIEMPO(ns) 0 - 80 80 - 160 168-240 240 - 320 320 - 400 400 - 480 480 - 560 560 -640 640 - 720 A 1 1 0 0 1 1 1 0 1 B 0 0 0 1 1 1 1 1 1

720 - 800

54

GRABAR EL ARCHIVO WAVEFORM


FILE --> SAVE AS

55

REALIZAR LA SIMULACION
Para iniciar la simulacin, de click en Assign --> Simulation Settings escoja el archivo WAVEFORM anteriormente grabado y selecciones el tipo FUNCTIONAL.

Para que la simulacin se desarrolle es necesario generar el NETLIST del circuito, para este de click en Processing --> Generate Simulation Netlist.

56

REALIZAR LA SIMULACION
Ahora ya podemos simular el circuito, para esto de click en Processing --> Start Simulation, al finalizar observaremos los resultados :

57

EJERCICIO
Realice un programa en VHDL que describa el funcionamiento de sumador completo, la figura siguiente muestra el esquematice y tabla de verdad de esta circuito digital. X: Acarreo de Entrada Y , Z :bits a sumar C: Acarreo de Salida S: Resultado

58

You might also like