Professional Documents
Culture Documents
VHDL
Lenguaje para modelado y sntesis de circuitos electrnicos digitales
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):
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
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:
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
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
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 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
Incorrecto Correcto
4Suma Suma4
S_4bits 14 Resta__4
S4_bits Resta_4_
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
(U,X,0,1,Z,W,L,H,-)
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.
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
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
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
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
vector_B
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
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
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;
<=
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.
30
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
33
34
35
36
37
38
39
40
41
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
44
45
46
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
49
50
51
52
53
720 - 800
54
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