Departamento Departamento de de la la Defensa Defensa de de los los E.U.A. E.U.A. Desarrollo de Lenguajes para Descripcin de Hardware Programa: Programa: Very Very High High Speed Speed Integrated Integrated Circuits Circuits (VHSIC) (VHSIC) 1970s 1970s IDL/IBM, IDL/IBM, HDL/TI, HDL/TI, ZEUS/GE ZEUS/GE Desarrollo Desarrollo en en rea rea Industrial Industrial AHPL, AHPL, DDL, DDL, CDL, CDL, ISPS ISPS Desarrollo Desarrollo en en rea rea Acadmica Acadmica 1980s 1980s AHDL, AHDL, ABEL, ABEL, CUPL CUPL VHDL VHDL y y Verilog Verilog 1993 1993 VHDL93 VHDL93 Estndar Estndar IEEE IEEE -1164 1164 1983 1983 VHDL VHDL Desarrollo: Desarrollo:
IBM, IBM, Texas Texas Instruments Instruments e e Intermetrics Intermetrics 1987 1987 VHDL87 VHDL87
Ventajas de VHDL Notacin Estandarizada Disponibilidad al Pblico Independencia del Sistema de Desarrollo Independencia de la Metodologa de Diseo (PLDs, ASICs, FPGAs) 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: Algoritmico, RTL (Register Transfer Logic) o concurrente, estructural (Lgico), Netlist. Facilitar la Verificacin/Prueba y puesta a punto del sistema a disear. Adicin de la extensin analgica (IEEE1076.1) que permite la especificacin, simulacin y sntesis de sistemas digitales, analgicos y mixtos
Elementos sintcticos del VHDL Comentarios Smbolos especiales Identificadores Nmeros Caracteres Cadenas Cadenas de bits Palabras reservadas
Se consideran comentarios despus de dos guiones medios seguidos --. Existen caracteres especiales sencillos como (&, #, +, *, =) o dobles como ( :=, <=). Es lo que se usa para dar nombre a los diferentes objetos del lenguaje. 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# 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.
Identificadores Nombres o etiquetas que se usan para referirse a: Variables, Constantes, Seales, Procesos, Entidades, etc. Estn formados por nmeros, letras (maysculas o minsculas) y guin bajo _ con las reglas especificadas en la tabla siguiente. Longitud (Nmero de Caracteres): Sin restricciones Palabras reservadas por VHDL no pueden ser identificadores En VHDL, un identificador en maysculas es igual a su contraparte en minsculas
Reglas para especificar un identificador Segundo carcter no puede ser un guin bajo ( _ ) Dos guiones bajos no son permitidos Un identificador no puede utilizar smbolos especiales
Primer carcter debe ser siempre una letra mayscula o minscula 4Suma
Menor
La La precedencia precedencia de de operadores operadores se se encuentran encuentran ordenados ordenados de de mayor mayor (arriba) (arriba) aa menor menor (abajo), (abajo), los los operadores operadores que que se se encuentran encuentran en en la la misma misma fila fila tienen tienen la la misma mismaprecedencia precedenciayysern sernevaluados evaluadossiguiendo siguiendoel elorden ordende deizquierda izquierdaaaderecha. derecha.
Objetos
Objetos VHDL Constantes Variables Seales File Floating Point (Punto Flotante) Physical (Fsicos) Array (Arreglos) Compuestos
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
Objetos de Datos
Un Un objeto objeto de de datos datos en en VHDL VHDL es es un un elemento elemento que que toma toma un un valor valor de de algn algn tipo tipo de de dato dato determinado, segn sea el tipo de dato, el objeto poseer un conjunto de propiedades. determinado, segn sea el tipo de dato, el objeto poseer un conjunto de propiedades. En EnVHDL VHDLlos losobjetos objetosde dedatos datosson songeneralmente generalmenteuna unade delas lastres tresclases clasessiguientes: siguientes:
Constantes Constantes Una Una constante constante es es un un elemento elemento que que puede puede tomar tomar un un nico nico valor valor de de un un tipo tipo dato, dato, las las constantes constantes pueden pueden ser ser declaradas declaradas dentro dentro de de entidades, entidades, arquitecturas, arquitecturas, procesos procesos y y paquetes. paquetes. CONSTANT CONSTANT identidicador identidicador :: tipo tipo := := valor; valor; Ejemplo Ejemplo CONSTANT CONSTANT byte: byte: integer integer := := 8; 8; Variables Variables Las Las variables variables pueden pueden ser ser modificadas modificadas cuando cuando sea sea necesario, necesario, pueden pueden ser ser declaradas declaradas solamente solamente dentro dentro de de los los procesos procesos y y subprogramas. subprogramas.
VARIABLE VARIABLE identidicador identidicador :: tipo tipo [:= [:= valor]; valor]; Ejemplo Ejemplo VARIABLE VARIABLE aux1, aux1, aux2: aux2: bit; 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 SIGNAL identidicador identidicador :: tipo tipo [:= [:= valor]; valor]; Ejemplo Ejemplo SIGNAL SIGNAL A, A, B B :: bit bit := := 0; 0; SIGNAL SIGNAL dato: dato: bit_vector bit_vector (7 (7 downto downto 0); 0);
Estructura de VHDL
Estructura Estructura General General de de un un Programa Programa VHDL VHDL Unidades Unidades de de Diseo Diseo (design (design units) units)
Cada uno formado por declaraciones o instrucciones que definen, estructuran, analizan y evalan el comportamiento de un sistema digital
Declaracin Declaracin de de Entidad Entidad (entity (entity declaration) declaration) Unidad Unidad Primaria Primaria
Declaracin Declaracin de de Paquete Paquete (package (package declaration) declaration) Unidad Unidad Primaria Primaria
Cuerpo Cuerpo del del Paquete Paquete (package (package body) body) Unidad Unidad Secundaria Secundaria
Entidad - Qu es?
Circuitos Circuitos elementales elementales digitales digitales que que forman forman de de manera manera individual individual o o en en conjunto conjunto un un sistema sistema digital digital Ejemplos: Ejemplos: Compuertas, Compuertas, Flip-Flops, Flip-Flops, Sumadores/Restadores, Sumadores/Restadores, Multiplexores, Multiplexores, Contadores, Contadores, Multiplicadores, Multiplicadores, ALUs, ALUs, Neurona-Digital, Neurona-Digital, etc. etc.
Ejemplo-1: Ejemplo-1: Sumador Sumador
Declaracin Declaracin de de una una entidad entidad Consiste Consiste en en la la descripcin descripcin de de los los puertos puertos de de entrada entrada o o salida salida de de un un circuito, circuito, el el cual cual es es identificado identificado como como una una entidad entidad ( (entity) entity) Importante! Importante! No No se se describe describe cmo cmo ser ser realizado realizado o o implementado implementado el el circuito, circuito, es es decir, decir, su su Arquitectura Arquitectura
Descripcin de un Puerto
Modo
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.
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.
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
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) Paquete (pkg.) en el cual es definido el tipo. Ver: Uso de Libreras y Paquetes
std_logic
(pkg.std_logic_1164)
std_logic_vector
(pkg.std_logic_1164)
Ms tipos
Se irn introduciendo conforme avance el curso
Ejemplo-2: Ejemplo-2: MUX MUX --Entidad ENTITY mux IS PORT (a, b, sel: IN bit; sal: out bit); END sumador;
--Arquitectura Estructural
ARCHITECTURE estructural OF mux IS SIGNAL ax, bx, nosel :bit; BEGIN U0: ENTITY inv PORT MAP (e=>sel, y=>nosel); U1: ENTITY and2 PORT MAP (e1=>a, e2=>nosel, y=>ax); U2: ENTITY and2 PORT MAP (b, sel, bx); U3: ENTITY or2 PORT MAP (e1=>ax, e2=>bx, y=>ax); END estructural ;
Ejemplo-3: Sumador Cin Puertos de Entrada A B Entidad Sumador Cout Puertos de Salida SUMA
Identificador de la entidad
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;
Modo de Operacin Tipo de Dato
Ejemplo-4
a3 b3 a2 b2 a1 b1 a0 b0 F
Lnea N. 1 2 3 4 5
Detector Uso de dos datos con longitudes de 4-bit (Declaracin de Entidad) --Declaracion de la entidad entity circuito is port (a3, b3, a2, b2, a1, b1, a0, b0: in bit; F: out bit); end circuito;
Ejemplo-5 Cin vector_A vector_B vector_SUMA = [A3, A2, A1, A0] = [B3, B2, B1, B0] = [S3, S2, S1, S0] Entidad Sumador Cout
Declaracin de Puertos Tipo-Vector port (vector_A, vector_B: in bit_vector (3 downto 0); vector_SUMA: out bit_vector (3 downto 0)); Sumador-completo de dos datos con longitudes de 4-bit (Declaracin de Entidad Uso de Vectores) entity sumador is port (A, B: in bit_vector (3 downto 0); Cin: in bit; Cout: out bit; SUMA: out bit_vector (3 downto 0)); end sumador;
Para ordenar en forma ascendente utilizar to en lugar de downto (p.ej. 0 to 3)
Ejemplo-6
a3 b3 a2 b2 a1 b1 a0 b0 F
Lnea N. 1 2 3 4 5
Detector Uso de dos datos con longitudes de 4-bit (Declaracin de Entidad Uso de Vectores) --Declaracion de la entidad entity circuito is port (a, b: in bit_vector (3 downto 0); F: out bit); end circuito;
user
work
comps_dsp
Biblioteca (library)
Lugar donde se almacenan los Paquetes definidos por el fabricante de la herramienta de desarrollo o el usuario. Lugar donde se permite almacenar resultados de la compilacin de diseos, con el fin de utilizarlos en otros.
xc
Paquetes
std_logic_arith std_logic_1164
ieee
Un paquete contiene: Declaraciones de Tipos y Subtipos de Datos Definiciones de Constantes Definiciones de Funciones y Procedimientos Declaraciones de Componentes (Sumadores, Restadores, Contadores, Multiplicadores, etc) Un Paquete = Macro-Unidad de Diseo
Bibliotecas
Paquetes
Para Para llamar llamar un un paquete paquete es es necesario necesario llamar llamar a a la la librera/biblioteca librera/biblioteca que que lo lo contiene contiene (donde (donde ha ha sido sido compilado) compilado) Sintaxis: Sintaxis: use use nombre_librera nombre_librera..nombre_paquete nombre_paquete.all .all;;
Define tipos de vectores signados y no-signados, y todos los operadores aritmticos sobre estos tipos. Define funciones extendidas y de conversin para dichos tipos. Define operadores aritmticos sobre el tipo std_ulogic_vector y los considera como operadores no-signados. Define operadores aritmticos sobre el tipo std_logic_vector y los considera como operadores signados. Define tipos, subtipos, constantes y funciones complementarios para el paquete std_logic_1164.
Multiplicador de dos datos con longitudes de 2-bit (Declaracin de Entidad Uso de Biblioteca y Paquete) library ieee; use ieee.std_logic_1164.all; entity multiplica is port (X0, X1, Y0, Y1: in std_logic; Z3, Z2, Z1, Z0: out std_logic); end multiplica;
Arquitectura - Qu es?
entidad entidad ( (entity entity) ) cumpla cumpla con con las las condiciones condiciones de de operacin operacin o o comportamiento comportamiento deseadas. deseadas.
Cmo? Cmo? -A A travs travs de de la la programacin programacin de de varios varios procedimientos procedimientos que que permitan permitan que que la la Estilo Estilo Programacin Programacin o o Modelizacin Modelizacin Funcional Funcional
Niveles Niveles de de Descripcin Descripcin utilizados utilizados Nivel Nivel Algoritmo Algoritmo Nivel Nivel de de Transferencia Transferencia entre entre Registros Registros ( (RTL RTL) )
Flujo Flujo de de Datos Datos Nivel Nivel Lgico Lgico Nivel Nivel Compuerta Compuerta Nivel Transistor (Topologa / Layout) Estructural Estructural
Lnea N
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Ejemplo-8 a b Comparador
Uso Uso de de if-then-else if-then-else (construccin (construccin secuencial) secuencial) si si a = b entonces c = 1 a b entonces c = 0
Ejemplo-9
Lnea N
f1
a b
a 0 0 1 1
b 0 1 0 1
f1 0 1 1 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Flujo Flujo de de Datos Datos - En En este este caso, caso, se se describe describe la la forma forma en en la la que que los los datos datos se se pueden pueden transferir transferir entre entre
los los diferentes diferentes mdulos mdulos operativos operativos que que constituyen constituyen la la entidad entidad (sistema (sistema o o circuito) circuito)
Lnea N
1 2 3 4 5 6 7 8 9 10 11 12
a b Comparador
a0 b0 a1 b1
Estructural Estructural - En En este este caso, caso, el el comportamiento comportamiento de de un un sistema sistema o o circuito circuito es es descrito descrito mediante mediante modelos modelos
lgicos lgicos establecidos establecidos de de los los componentes componentes que que conforman conforman al al sistema sistema o o circuito, circuito, como como son: son: Compuertas, Compuertas, Sumadores, Sumadores, Contadores, Contadores, etc. etc.
Modelos Modelos lgicos lgicos pueden pueden ser: ser: Diseados Diseados por por el el Usuario Usuario Predefinidos Predefinidos por por el el Fabricante Fabricante
Almacenados Almacenados en en Paquetes Paquetes contenidos contenidos en en las las bibliotecas bibliotecas de de la la Herramienta Herramienta de de Desarrollo Desarrollo
U0 U1
x0 U2 x1 c