You are on page 1of 74

LENGUAJES DE DESCRIPCIN DE HARDWARE: VHDL

Generalidades Ventajas e inconvenientes de los HDLs Caractersticas generales del VHDL Modelo del Hw Introduccin al lenguaje VHDL

LENGUAJES DE DESCRIPCIN DE HARDWARE (HDLS)


Estos lenguajes fueron desarrollados para hacer frente a la creciente complejidad de los diseos. Se puede hacer una analoga con los que se pueden llamar lenguajes de descripcin de software:

LENGUAJES DE DESCRIPCIN DE HARDWARE (HDLS)

Los HDLs son usados para modelar la arquitectura y comportamiento de sistemas electrnicos discretos. Se utilizan en la fase de diseo Necesidad de Simulador lgico

Herramienta necesaria para reproducir el comportamiento del sistema modelado Permite la verificacin del sistema diseado.

Actualmente existen herramientas software que permiten pasar de dichas descripciones a diseos a nivel de puertas: SNTESIS

LENGUAJES DE DESCRIPCIN DE HARDWARE (HDLS). SNTESIS LGICA


Sntesis lgica: convierte una descripcin de un sistema digital mediante un HDL en una implementacin tecnologca.
Descripcin HDL:
library ieee; use ieee.std_logic_1164.all; entity puertas is port ( A, B, C : in std_logic; Y: out std_logic ); end puertas; ARCHITECTURE a of puertas is begin Y <= (A and B) or end a; C;

Puertas

Sntesis

LENGUAJES DE DESCRIPCIN DE HARDWARE (HDLS). SNTESIS LGICA

El hecho de realizar una sntesis lgica obliga a ciertas restricciones en la tarea de realizar las descripciones con HDLs. No se pueden utilizar todas las construcciones de los lenguajes, y las que estn permitidas hay que utilizarlas adecuadamente. Cada uno de los sintetizadores que existen actualmente en el mercado tienen unas restricciones distintas, si bien, son muy parecidas en cada uno de ellos.

VENTAJAS DEL USO DE HLDS

El

lenguaje es independiente de la tecnologa:


El mismo modelo puede ser sintetizado en libreras de distintos vendedores. Reduccin de la dependencia con el fabricante de ASICs, ya que la portabilidad a otra tecnologa es mucho ms rpida. Reutilizar el diseo en componentes tan distintos como ASICs o FPGAs con un esfuerzo mnimo.

VENTAJAS DEL USO DE HLDS

Soportan

tres estilos de descripcin bsicos:

DESCRIPCIN COMPORTAMENTAL (behavioral) DESCRIPCIN DE FLUJO DE DATOS (data-flow) DESCRIPCIN ESTRUCTURAL (estructural)

Un diseo puede ser descrito con una combinacin de los tres estilos.

VENTAJAS DEL USO DE HLDS

Se puede verificar la funcionalidad del diseo muy pronto en el proceso de diseo.


La simulacin del diseo a tan alto nivel, antes de la implementacin a nivel de puertas, permite testar la arquitectura y rectificar decisiones en las primeras fases de diseo, con un esfuerzo mucho menor que si se realizase en fases posteriores.

VENTAJAS DEL USO DE HLDS


Sencillez

Como la descripcin se centra ms en la funcionalidad que en la implementacin, resulta ms sencillo para una persona comprender qu funcin realiza el diseo a partir de una descripcin HDL que a partir de un esquemtico de interconexin de puertas

begin Y <= (A and B) or end a; C;

VENTAJAS DEL USO DE HLDS


Ahorro

de tiempo

Facilita las correcciones en el diseo debidas a fallos de diseo o cambio de especificaciones. La existencia de herramientas comerciales automticas (sintetizadores RTL) que permiten crear descripciones gate-level a partir de los modelos a nivel RTL

Si bien, el diseo final no suela estar tan optimizado como si lo hubiera realizado un humano, la mayora de las veces es necesario sacrificar un mnimo en las prestaciones, para poder llevar a cabo el proyecto. Para ello se necesita la disponibilidad de dichas herramientas, las libreras de sntesis del fabricante y sus archivos de tecnologa.

VENTAJAS DEL USO DE HLDS


El

lenguaje puede ser usado como un medio de intercambio entre los fabricantes de ASICs y los usuarios de herramientas CAD.

Diferentes vendedores de ASICs pueden suministrar descripciones HDL de sus componentes a diseadores de sistemas. Los usuarios de herramientas CAD pueden usar esta descripcin para capturar el comportamiento de este diseo a un nivel de abstraccin alto para la simulacin funcional. Adems, se estn convirtiendo en los lenguajes de simulacin ms utilizados por los distintos vendedores.

VENTAJAS DEL USO DE HLDS

El

lenguaje tambin puede ser usado como medio de comunicacin entre diferentes herramientas CAD y CAE.

Un programa de captura de esquemticos puede ser utilizado para generar descripciones HDL del diseo, lo cual puede ser usado como entrada a un simulador.

VENTAJAS DEL USO DE HLDS

La propia descripcin en el lenguaje de alto nivel sirve como especificacin del comportamiento del sistema a disear (tanto a nivel funcional como las restricciones temporales), y el interface con el resto del sistema.

Los modelos descritos con estos lenguajes, pueden ser verificados fcilmente y de forma precisa por simuladores definidos en base a estos HDL. Adems, cumple con un requerimiento muy importante en toda especificacin: no es ambiguo. Asimismo sirve como documentacin del diseo.

VENTAJAS DEL USO DE HLDS


Los

"Test Bench" pueden ser escritos en el mismo lenguaje que con el que han sido modelados los diseos (HDL).

Esto permite un mejor manejo del modelo, ya que se puede asociar el modelo a sus estmulos de simulacin.

No limitamos el uso de dichos estmulos a un determinado simulador, pudiendo ser reutilizados dichos estmulos aunque se use un simulador distinto.
Los retardos de propagacin y limitaciones temporales, pueden ser descritos con estos HDL

VENTAJAS DEL USO DE HLDS

El lenguaje soporta jerarqua;

Un sistema digital puede ser modelado como un conjunto de componentes interconectados;


A su vez cada componente puede ser modelado como un conjunto de subcomponentes.

El lenguaje soporta metodologas de diseo diferentes: top-down, bottom-up, o mixtas.

VENTAJAS DEL USO DE HLDS

Soporta modelos de tiempos sncronos y asncronos. Posibilidad de implementar distintas tcnicas de modelado digital (descripciones de mquinas de estados finitos (FSM), descripciones algortmicas, redes de Petri, y ecuaciones Booleanas El lenguaje es pblico y "not propietary" (especialmente en el caso del VHDL).

VENTAJAS DEL USO DE HLDS

Es un estndar ANSI e IEEE; por lo tanto, los modelos descritos en estos lenguajes (VHDL o VERILOG) son totalmente portables. No hay limitaciones impuestas por el lenguaje en el tamao del diseo.

Los HDL tienen elementos que permiten el diseo a gran escala, de forma fcil; por ejemplo, componentes, funciones, procedimientos, paquetes.
La capacidad de definir tipos de datos sofisticados, suministra la potencia de describir y simular nuevos diseos a un nivel de abstraccin en el cual an no se barajan detalles de la implementacin

VENTAJAS DEL USO DE HLDS

El uso de genricos y atributos en los modelos facilitan la labor de backannotation de informacin proviniente del dominio fsico despus de haber realizado el "placement and routing". Los genricos y atributos facilitan la descripcin de modelos parametrizables. El modelo, a travs de los atributos, puede contener informacin del diseo en s mismo, no solo de la funcionalidad: por ejemplo, informaciones tales como el rea y velocidad.

INCONVENIENTES DEL USO DE HDLS

Supone un esfuerzo de aprendizaje, ya que prcticamente se puede considerar como nueva metodologa. Necesaria la adquisicin de nuevas herramientas:

Simuladores

Sintetizadores de HDL, teniendo que mantener el resto de las herramientas para otras fases del diseo.

El uso de estos lenguajes hace que involuntariamente se pierda un poco de control sobre el aspecto fsico del diseo, dndole una mayor importancia a la funcionalidad de dicho diseo.

HISTORIA DE VHDL

Diversos grupos de investigadores empiezan a crear y desarrollar los llamados "lenguajes de descripcin de hardware" cada uno con sus peculiaridades, buscando una solucin a los problemas que presentaba el diseo de los sistemas complejos. Ejemplos:

IDL desarrollado por IBM ,


TI - HDL de Texas Instruments, ZEUS de General Electric, prototipos de universidades

LENGUAJES DE DESCRIPCIN DE HARDWARE.


En la actualidad se utilizan fundamentalmente VHDL, Verilog y SystemC . Otro HDL, el UDI/L se utiliza exclusivamente en Japn. VHDL (Very High Speed Integrated Circuit Hardware Description Language). Nace como proyecto del Departamento de Defensa (DoD) de EEUU (ao 82) para disponer de una herramienta estndar, independiente para la especificacin (modelado y/o descripcin) y documentacin de los sistemas electrnicos. El IEEE lo adopta y estandariza. Verilog: Sw de la firma Gateway y posteriormente de Cadence. Estndar industrial hasta que apareci el VHDL como estndar IEEE. En 1990 Cadence lo hace pblico y el IEEE lo estandariza en 1995. SystemC: es una extensin del C++, que utiliza unas bibliotecas de clase para describir y simular circuitos digitales. Se public en 1.999 .

HISTORIA DE VHDL

Estos lenguajes nunca alcanzaron el nivel de difusin y consolidacin necesarios por motivos distintos.

los industriales, por ser propiedad de la empresa permanecieron encerrados en ellas y no estuvieron disponibles par su estandarizacin y mayor difusin,
los universitarios, perecieron por no disponer de soporte ni mantenimiento adecuado.

En 1981 el Departamento de Defensa de los Estados Unidos


Proyecto VHSIC (Very High Speed Integrated Circuit ) Objetivos:

rentabilizar las inversiones en hardware haciendo ms sencillo su mantenimiento. resolver el problema de modificar el hardware diseado en un proyecto para utilizarlo en otro

HISTORIA DE VHDL

VHDL acrnimo de VHSIC Hardware Description Lenguaje

En 1983, al grupo formado por las empresas Intermetrics, IBM y Texas Instruments se le adjudic un contrato para desarrollar el VHDL En 1985, la versin final del lenguaje bajo contrato gubernamental se dio a conocer : VHDL Version 7.2 Tras colaboraciones de industrias y universidades en 1987 VHDL se convierte en Standard IEEE 1076-1987 y en 1988 en standard ANSI En 1993 fue revisado el standard VHDL La ltima revisin se realiz en 2002.

VHDL: CARACTERSTICAS GENERALES

VHDL: lenguaje orientado a la descripcin o modelado de Hw


similar a lenguajes de alto nivel de propsito general (ADA en especial): de ellos hereda: Concepto de tipo de datos, con posibilidad de definir nuevos tipos facilita la descripcin de circuitos con diversos niveles de abstraccin. Sentencias de control de flujos (if, for while). Junto con la caracterstica anterior potencia para desarrollar algoritmos. Capacidad de estructurar el cdigo (subprogramas, funciones o procedimiento), permite afrontar algoritmos complejos. Posibilidad de utilizar y desarrollar bibliotecas de diseo, Incorpora conceptos especficos para el modelado del Hw, como concurrencia y ciclo de simulacin.

MODELO DEL HW Modelo de estructura: componentes y jerarqua


Permiten describir cualquier sistema digital con diferentes grados de abstraccin. Un sistema digital (independientemente de su complejidad) estar definido por dos elementos principales: Interfaz con el exterior (la entidad o entity), indicar que entradas y salidas (ports) le relacionan con el exterior. Descripcin de la funcionalidad que realiza el dispositivo (architecture). Para una misma entity pueden existir diversos mdulos architerture de estilos descriptivos distintos. Pudindose especificar para cada diseo en concreto que implementacin de una entidad se utiliza (configuration). Se puede utilizar cualquier elemento modelado en VHDL en otro diseo haciendo referencia a l (component) y conectando sus puertos en el nuevo circuito.

MODELO DEL HW
Modelo de concurrencia: procesos, seales y eventos.

El Hw tiene naturaleza concurrente. El elemento bsico de concurrencia es el proceso (process) que est formado por sentencias secuenciales. Los procesos se comunican entre ellos mediante seales (signal). Cada proceso tiene un conjunto de seales a las que es sensible, de forma que un cambio en alguna (evento) de ellas hace que se ejecute. Las seales tienen asociadas una o varias colas de eventos, pares tiempovalor (drivers), que definen su comportamiento en el transcurso de una simulacin.

MODELO DEL HW
Modelo de tiempo: ciclo de simulacin
Retardo delta ().
A: 10 B=1 C=0 A n1 n2

n1 n2

Z
T T+ T+2 T+3 T

MODELO DEL HW
Modelo de tiempo:
INICIO SIMULACIN

ciclo de simulacin
Incrementar retardo delta ()

Ejecutar estamentos concurrentes correspondientes al tiempo de simulacin actual Avanzar tiempo de simulacin Eventos en cola? NO

SI

Transaccio -nes? SI

NO

FIN SIMULACIN

Eventos ? SI

NO

Ejecutar estamentos concurrentes correspondientes al tiempo de simulacin actual

COMPOSICIN DE UN DISEO VHDL


Diseo VHDL Fichero VHDL Fichero VHDL
Paquetes Constantes, tipos de datos, componentes y subprogramas utilizados en varios diseos o entidades Entidades Interfaces de los componentes

Fichero VHDL

Fichero VHDL

Arquitecturas Implementacin de las entidades

DECLARACIN DE ENTIDAD
La entidad modela la interfaz del circuito, indicando sus terminales de entrada y salida, parmetros de diseo, declaraciones de tipos, constantes, etc.
entity <identificador> is [generic (lista_de_genricos);] [port (lista_de_puertos);] {declaraciones} [begin sentencias] end [entity] [identificador]; lista de puertos(identificador{,...}:[modo]indicacin_tipo [:=expresin]) {;...}
modo in | out | inout | buffer | linkage lista de genricos (identificador {,...}:tipo[:=expresin]) {;..}

DECLARACIN DE ENTIDAD

Ejemplos:
entity sumador_total is port (a,b,c: in bit; s,c: out bit); end sumador_total;

entity Mux21 is entity Mux21 is port (a: in bit; generic (t_delay:time:=5ns); b: in bit; port (a, b: in bit; canal : in bit:=1; canal : in bit:=0; z: out bit); z: out bit); end Mux21; end Mux21;

DECLARACIN DE ARQUITECTURA
Son las unidades definidas en VHDL para describir el funcionamiento interno de las entidades. Describe un conjunto de operaciones sobre las entradas de la entidad, que determinan el valor de las salidas en cada momento. Para una entidad pueden existir varias arquitecturas. Pueden modelar el funcionamiento de una entidad segn los tres niveles de abstraccin vistos anteriormente: - Algortmico: descripciones al estilo de Sw de alto nivel, que reflejan la funcionalidad de los mdulos . -Flujo de Datos: descripciones basadas en ecuaciones y expresiones que reflejan el flujo de datos y las dependencias entre datos y operaciones. -Estructural: se especifican componentes, conexiones y puertos de E/S -Estilo mixto de los anteriores.

DECLARACIN DE ARQUITECTURA
architecture identificador of identificador_entidad is {declaraciones} begin {sentencias_concurrentes} end [architecture] [identificador];

entity Mux21 is port(a, b, canal :in bit; z: out bit); end Mux21;

architecture algoritmico of Mux21 is begin process (a,b, canal) begin if (canal=0) then z<=a; else z<=b; end if; end process; end algoritmico;

DECLARACIN DE ARQUITECTURA
entity Mux21 is port(a, b, canal :in bit; z: out bit); end Mux21;

architecture FlujoDatos of Mux21 is signal canal_n,n1,n2:bit; begin -- operaciones concurrentes canal_n<= not canal after 1ns; n1<=canal_n and a after 2ns; n2<=canal and b after 2ns; z<=n1 or n2 after 2ns end FlujoDatos;

DECLARACIN DE ARQUITECTURA
entity Mux21 is port(a, b, canal :in bit; z: out bit); end Mux21; architecture Estructural of Mux21 is signal canal_n,n1,n2:bit; component INV port (x:in bit;z:out bit); end component; component AND2 port(x,y:in bit; z:out bit); end component; component OR2 port(x,y:in bit; z:out bit); end component; begin U0:INV port map (canal,canal_n); U1:AND2 port map(canal_n,a,n1); U2:AND2 port map(canal,b,n2); U3:OR2 port map(n1,n2,z); end Estructural;

ELEMENTOS LEXICOS
Comentarios: cualquier texto que empiece por -- -- esto sera un comentario Identificadores: dan nombre a los elementos del VHDL. Reglas para formar un identificador: - No tienen longitud mxima. - puede contener caracteres del a A a la Z, de la a a la z, caracteres numricos de 0 al 9 y el carcter subrayado _. - No se diferencia entre maysculas y minsculas (CONTADOR, contador y ConTadoR son el mismo identificador.) - Debe empezar por un carcter alfabtico, no puede terminar con un subrayado, ni puede tener dos subrayados seguidos. - Existen los identificadores extendidos (VHDL93): admiten cualquier carcter y diferencian maysculas de minsculas si se encuentran entre dos caracteres \. - No puede usarse como identificador una palabra reservada Correctos: Puerta_and_7_entradas, REloj, salida_2 Incorrectos: puerta__and, clock$entrada, 6inputs, sal_ Extendidos correctos: \puerta__and\, \clock$entrada\,\6inputs\,\sal_\

ELEMENTOS LEXICOS
Palabras reservadas: abs, access, after, alias, all, and, architecture, array, assert, attribute, begin, block, body, buffer, bus, case, component, configuration, constant, disconnect, downto, else, elsif, end, entity, exit, file, for, function, generate, generic, group, guarded, if, impure, in, inertial,

inout, is, label, library, linkage, literal, loop, map, mod, nand, new, next, nor, not, null, of, on, open, or, others, out, package, port, postponed, procedure, process, pure, range, record, register, reject, rem, report, return, rol, ror, select, severity, shared, signal, sla, sll, sra, srl, subtype, then, to, transport, type, unaffected, units, until, use, variable, wait, when, while, with, xnor, xor
Delimitadores: Se utilizan en operaciones y sentencias: Simples: & ( ) * + , - . / : ; < = > | Dobles: => ** := /= >= <= <>

ELEMENTOS LXICOS

Nmeros:
Enteros literales (su valor se obtiene directamente de su representacin literal): 45 0 129 el -5 no es un entero literal, es una combinacin de not y 5 En coma flotante: 29E2 5e4 12e00 Reales literales: 64.9 0.0 3.14159 En coma flotante 23.87e-2 419.133E12 Representacin en otras bases (entre 2 y 16): Enteros 2#11101001# 16#e2f1a# 8#7105# Reales 2#11.1# 16#3e4.a# En coma flotante 2#11#e2 16#4#E2 10#1024#e0

ELEMENTOS LXICOS
Caracteres:
Se escriben entre comillas simples: a, Z, 9,

Cadenas:
Se escriben entre comillas dobles: Cadena, Se puede escribir cuaquier cosa !%&/()=$....., Una cadena dentro de una cadena: cadena. Si tuviesemos que escribir una cadena ms larga que una lnea & la podemos concatenar con el carcter &

ELEMENTOS LXICOS
Bits Strings:
Secuencia de valores que representan bits (en base 2, 8 o 16): Ejem: B100100110 b110111001111 o371 O1346 xAD1 X1f

OBJETOS EN VHDL
Un objeto en VHDL es un elemento que tiene asignado un valor determinado. Tienen que declararse previamente para ser utilizados. Hay cuatro clases de objetos: constantes, variables, seales y ficheros.

Las constantes son objetos que mantienen su valor inicial , no pudiendo ser modificadas una vez que se han creado. Proporcionan modelos ms inteligibles. Proporcionan versatilidad: cambiando la asignacin de la constante se actualiza en todo el modelo
declaracion_constante::= constant identificador{,...}: subtipo [:=expresion ] ;

constant PI : real := 3.141592 ; constant CYCLE_TIME : time := 100 ns; constant num_bits : integer := 8*num_bytes;

OBJETOS EN VHDL

Las variables pueden cambiar de valor en cualquier momento mediante una sentencia de asignacin. declaracion_variable::= [shared]variable identificador{,...}:subtipo [:=expresion]; asignacion_variable::= [label:] identificador:=expresion; Signo de igual para la asignacin de variables

variable maximo,mnimo:real; variable indice1,indice2: integer := 0; variable inicio:time;


Ejemplos de asignacin de variables: indice:=indice+1; inicio:=2ns;

OBJETOS EN VHDL
Las seales pueden cambiar de valor en cualquier momento, pero a diferencia de las variables guardan una analoga con el Hw. Se pueden considerar una abstraccin de conexiones fsicas o buses. declaracion_seal::= signal identificador{,...}:subtipo[tipo_seal][:=expresion ]; tipo_seal::= register|bus Signo de asignacin para seales asignacion_seal ::= [label]identificador<=[mecanismo_retardo]forma_de_onda; forma_de_onda::=(expresion [after expr_tmp]){,...} signal net1,net2: bit; signal enable:integer:=0; reloj<= 1 after t_pw,0 after 2*t_pw; y<= not or_a_b after 5ns;

OBJETOS EN VHDL
Los ficheros pueden comunicar un diseo con un entrono externo. Un uso habitual es almacenar la informacin de los vectores de prueba en una simulacin y/o almacenar los resultados de la misma . En el paquete textio y en la biblioteca standard se definen tipos de datos, operaciones, tipos de acceso etc. para trabajar con ficheros de texto. declaracion_fichero::= file identificador{,...}:tipo[[open tipo_acceso] is nombre];

file vectores_in:bit open read_mode is datos.in; file salida:integer open write_mode is resultados.txt;

TIPOS DE DATOS EN VHDL


El VHDL es un lenguaje fuertemente tipado: un objeto solo puede asumir valores del tipo en que ha sido declarado. Incorpora unos tipos predefinidos (incluidos en la biblioteca standard), ejem: BOOLEAN, BIT, CHARACTER, INTEGER, REAL, TIME, BIT_VECTOR, STRING, etc. Se pueden crear subtipos como subconjuntos de un tipo determinado Se pueden declarar nuevos tipos: declaracion_tipo::=type identificador is definicin_tipo;

TIPOS DE DATOS EN VHDL


Tipos de datos escalares:
Son aquellos cuyos valores estn formados por una sola unidad indivisible (enteros, reales, enumerados y fsicos)

Tipos enteros y reales:


Predefinidos INTEGER comprendido entre -231+1 y 231-1 y REAL comprendido entre -1.0E38 y 1.0E38 con un mnimo de seis dgitos decimales. Estos rangos pueden aumentar en alguna implementacin del lenguaje. Se puede declarar un nuevo tipo: nuevo_tipo::= type identificador is range expr_simple to|downto expr_simple;

type dia is range 1 to 31; variable dia_hoy:dia:=18;


type nota is range 1.0 to 10.0; constant num_bits:integer:=16; type bit_index is range num_bits-1 downto 0;

TIPOS DE DATOS EN VHDL


Tipos fsicos:
Representan medidas del mundo real. Llevan asociados una unidad primaria y el resto se definen como mltiplos de ella. Se puede declarar un nuevo tipo: tipo_fsico::= type identificador is range expr_simple to|downto expr_simple; units identificador; {identificador=literal_fsico;} end units [identificador};

TIPOS DE DATOS EN VHDL


Tipos fsicos:
Predefinido TIME (el femto segundo es la mayor resolucin): type TIME is range 0 to segnimplementacion (1E20) units fs; -- femtosegundo ps = 1000 fs; -- picosegundo ns = 1000 ps; -- nanosegundo ATENCIN! us = 1000 ns; -- microsegundo ms = 1000 us; -- milisegundo sec = 1000 ms; -- segundo min = 60 sec; -- minuto hr = 60 min; -- hora end units; variable duracion :time:= 3sec; duracin:=duracion*4; -- 12 segundos

TIPOS DE DATOS EN VHDL


Tipos fsicos:

Ejemplo:
type resistencia is range 0 to 1e9 units ohmio; Kohmio =1000 ; Mohmio =1000 Kohmio ; end units resistencia;

TIPOS DE DATOS EN VHDL


Tipos enumerados:
Se indica un conjunto de valores posibles del tipo especificado mediante una lista que contiene todos los valores. Proporciona gran nivel de abstraccin al permitir codificar valores de seales.

Se puede declarar un nuevo tipo: tipo_enumerado::= type identificador is (identificador|carcter{,...}); type funcion_alu is (sumar,restar,multiplicar,or_exclusiva); variable operacion:funcion_alu; operacion:=restar;
type piso is (1,primero,2,segundo);

TIPOS DE DATOS EN VHDL


Tipos enumerados:
Predefinidos: type type type type type type boolean is (false,true); bit is (0,1); severity_level is (note,warning,error,failure); file_open_kind is (bibliografa...); file_open_status is (bibliografa...); character is (... '@','A','B','C,'D','E, 'F', ...'j','k', 'l', 'm', 'n', 'o',...);

TIPOS DE DATOS EN VHDL


Lgica multivaluada: El tipo bit representa los circuitos digitales desde un punto de vista abstracto, aunque no recoge todas situaciones que hay que considerar al modelar un circuito digital real. El IEEE introdujo en 1993 el paquete std_logic_1164, conocido como paquete de lgica multivaluada. type std_ulogic is (U, -- No inicializado X, -- desconocido fuerte 0, -- cero fuerte 1, -- uno fuerte Z, -- alta impedancia Estado lgico de los nodos W, -- desconocido dbil que no han evolucionado L, -- cero dbil desde el comienzo de la H, -- uno dbil simulacin -); -- indiferente
til para sntesis

TIPOS DE DATOS EN VHDL


Lgica multivaluada:
Vc=1 Pta Transmisin R0 Vout=Vinv Vin=0; Vinv=0 Vin=1; =1 fuerte Vc=0 Pta Transmisin R Vout=Z

Vdd

Vc

Vin

i
v

Vout

Saturado Corte R pequea: I mxima


Vc Corte Saturado R pequea: I mxima X: En un nodo una salida est a 1 y otra a 0

TIPOS DE DATOS EN VHDL


Lgica multivaluada:
Vcc Vcc Vin=0 Trt corte Vin=1 Vout=1 dbil Trt saturado Vout=0 dbil Vout Vin W: En un nodo una salida est a L y otra a H

Como este tipo de datos no esta predefinido en VHDL, hay que incluir en el diseo el paquete std_logic_1164: library IEEE; use IEEE.std_logic_1164.all;

Literales sobrecargados
Existen literales que estn incluidos en varios tipos enumerados, como por ejemplo el 0 que puede ser un elemento del tipo character, bit, std_ulogic, etc.

Normalmente se conoce el tipo por el contexto en el que se est utilizando el literal. Para evitar confusiones se puede utilizar la calificacin de tipos : character(0) bit'(0) std_ulogic(0)

SUBTIPOS DE DATOS
Se pueden declarar subconjuntos de valores de un determinado tipo: subtipos
declaracion_subtipo::= subtype identificador is id_tipo [range expr_simple to|downto expr_simple]; Ejemplos: subtype DiaMes is integer 1 to 31; subtype digito is character 0 to 9 ; variable mes:integer range 1 to 12;-- declaracin implcita Subtipos predefinidos en VHDL: subtype natural is integer 0 to entero_mayor; subtype positive is integer 1 to entero_mayor;

SUBTIPOS DE DATOS
Ejemplo: type entero_corto is range -128 to 127; variable parametro:integer; variable ajuste:entero_corto; ... parametro:=parametro+ajuste;-- error Ejemplo: subtype entero_corto is integer range -128 to 127; variable parametro:integer; variable ajuste:entero_corto; ... parametro:=parametro+ajuste;-- correcto ... ajuste:=ajuste+parametro;-- cuidado!

TIPOS DE DATOS EN VHDL


Tipos compuestos:
Consisten en colecciones de datos cuyos elementos pueden ser tratados individualmente Formados por elementos del mismo tipo (vectores) o de distinto (registros). Al declarar un objeto compuesto cada elemento se inicializar por defecto segn las reglas que correspondan a su tipo.

Vectores:
tipo_vector::= type identificador is array (rango_discreto {,...}) of tipo_objeto; rango_discreto::= indicacion_discreta_tipo | expr_simple (to|downto) expr_simple

TIPOS DE DATOS EN VHDL


Vectores unidimensionales:
Ejemplos:

type byte is array (0 to 7) of bit; type word is array (15 downto 0) of std_ulogic;
variable dato1,dato2: byte; variable codigo:word; dato1:=11100100; codigo (15 to 13):=0Z0; -- array slice dato2:=dato1;

subtype ocho_bits is integer range 0 to 7; type byte is array (ocho_bits) of bit; variable salida:byte; salida(5):=0

TIPOS DE DATOS EN VHDL


Vectores unidimensionales:
Ejemplos: type modo_contolador is (inicio,espera,incremento,decremento,error); type estado_controlador is array (espera to error) of natural;

-- otra forma ms clara, al no sobrecargar espera,incremento,etc.. type estado_controlador is array (modo_controlador range espera to error) of natural; variable control_ascensor:estado_controlador; control_ascensor(incremento):=5;

TIPOS DE DATOS EN VHDL


Vectores multidimensionales:
Ejemplos:

type memoria is array (31 downto 0, 0 to 127) of bit; variable ram,rom:memoria; ram:=rom; rom(15,9):=1;

Agregados:
Permiten asignar valores a conjuntos de datos en los vectores: agregado::= ([posicion{|...}=>]expresion{,...}) type point is array (1 to 3) of real; variable aux:point:=(1.0,2.3,4.5); aux:=(1.9,1.2,1.5); Signo de asignacin de aux:=(1=>5.67,3=>4.9,2=>9.0); agregados aux:=(3|2=>4.5,others=>5.6);

TIPOS DE DATOS EN VHDL


Vectores no restringidos:
Son vectores en los que se especifica el rango cuando se declara un objeto (en una declaracin implcita o con subtype). type identificador is array (tipo_indice range<>) of tipo_objeto;

type coleccion is array (natural range<>) of integer; variable datos:coleccion(63 downto 0); subtype registro is coleccion(0 to 255); variable buffer_entrada,buffer_salida:registro;

TIPOS DE DATOS EN VHDL


Vectores predefinidos :
type string is array (positive range<>) of character; constant LCD_display_len:positive:=40; subtype LCD_dato is string (1 to LCD_display_len); variable contenido_LCD:LCD_dato:=(others=> ); type bit_vector is array(natural range<>) of bit; subtype byte is bit_vector(7 downto 0); variable bus1:bit_vector(0 to 31);

type std_ulogic_vector is array(natural range<>) of std_ulogic; -- usar library IEEE;use IEEE.std_logic_1164.all;

TIPOS DE DATOS EN VHDL


Registros :
Tipo de datos compuesto formado por elementos de diferentes tipos: type identificador is record identificador{,...}:tipo {...} end record [identificador]; type tiempo is record segundos:integer range 0 to 59; minutos:integer range 0 to 59; horas:integer range 0 to 23; end record; variable inicio,fin:tiempo; inicio.segundos:=12; -- acceso a un elemento del registro -- usando agregados inicio:=(12,7,22); fin:=(segundos=>45,minutos=>18,horas=>4);

ATRIBUTOS
Es una caracterstica asociada a un elemento del lenguaje (tipos de datos, seales, procedimientos, entidades,...) que permite extraer informacin adicional del mismo. Identificadoratributo Atributos de los tipos escalares: T'base Tipo base de T. T'left Valor ms a la izquierda de T. T'right Valor ms a la derecha de T. T'low Valor mnimo de T. T'high Valor mximo de T. T'ascending Verdadero si T riene rango ascendente. T'image(x) String correspondiente al valor x. T'value(s) Valor en T representado por el string s. T'succ(x) Valor de la posicin siguiente a x en T. T'pred(x) Valor de la posicin anterior a x en T. T'leftof(x) Valor de la posicin izquierda a x en T. T'rightof(x) Valor de la posicin derecha a x en T.

ATRIBUTOS
Ejemplos:
type resistencia is range 0 to 1e9 units ohm; Kohm =1000 ohm; Mohm=1000 kokm; end units resistencia; resistencialeft=0 resistenciaright=1e9 resistencialow=0 resistenciahigh=1e9 resistenciaascending=true resistenciaimage(2 kohm )=2000 ohm resistenciavalue(5 Mohm)=5_000_000

Ejemplos:

type indice is range 21 downto 11; type nivel_logico is (desconocido,bajo,alta_impedancia,alto); indiceleft=21 indiceright=11 indicelow=11 indicehigh=21 indiceascending=false indiceimage(14)=14 indicevalue(20)=20 nivel_logicoleft=desconocido nivel_logicoright=alto nivel_logicolow=desconocido nivel_logicohigh=alto nivel_logicoascending=true nivel_logicoimage(alto)=alto nivel_logicovalue(bajo)=bajo nivel_logicopos(desconocido)=0 nivel_logicoval(3)=alto nivel_logicosucc(deconocido)=bajo --Tsucc(alto): error ... nivel_logicopred(alta_impedancia)=bajo

ATRIBUTOS

ATRIBUTOS
Atributos de VECTORES: A'left(n) A'right(n) A'low(n) A'high(n) Arange(n) Areverse_range(n) Alength(n) Aascending(n) Valor izquierdo del ndice n de A. Valor derecho del ndice n de A. Valor mnimo del ndice n de A. Valor mximo del ndice n de A. Rango del indice n de A. Rango del indice n de A invertido. Nmero de valores del rango n de A. Verdadero si el rango del ndice de n de A es ascendente.

type A is array (1 to 4,31 downto 0) of boolean; Aleft(1)=1 Aright(2)=0 Arange(1) is 1 to 4 Alength(1)=4 Aascending(1)=true Alow(1)=1 Ahigh(2)=31 Areverse_range(2) is 0 to 31 Alength(2)=32 Aascending(2)=false

Aleft(1) Aleft

ATRIBUTOS
Atributos definidos por el usuario: Consiste en asociar nuevos atributos a cualquier elemento del lenguaje: En primer lugar se declara el atributo: declaracion_atributo::= attribute identificador:tipo; En segundo lugar se asocia al elemento y su valor: especificacion_atributo::= attribute identificador of id_elemento:clase_elemento is expresion; clase_elemento::= entity | architecture | procedure | function | constant | signal | component | label | group

| | | |

configuration type variable literal

| | | |

package subtype file units

ATRIBUTOS
attribute Num_pin:natural; attribute codigo:bit_vector; attribute delay:time; signal reloj:std_logic; type operacion is (suma,resta,multiplicacion,division); attribute attribute attribute attribute attribute attribute Num_pin of reloj: signal is 14; delay of reloj: signal is 30ns; codigo of suma : literal is 00; codigo of resta : literal is 01; codigo of multiplicacion : literal is 10; codigo of division : literal is 11;

retraso:=t_delay+relojdelay; variable accion:bit_vector(1 downto 0):=restacodigo;

EXPRESIONES Y OPERADORES

EXPRESIONES Y OPERADORES

EXPRESIONES Y OPERADORES
Definicin de mdulo: a= b*N+(a mod b), con N entero tal que |a mod b| < |b| signo de (a mod b) = signo de b Definicin de resto: a=(a/b)*b +(a rem b) signo de (a rem b) = signo de a

EXPRESIONES Y OPERADORES
A 0 1 2 3 4 5 0 -1 -2 -3 -4 -5 0 1 2 3 4 5 0 -1 -2 -3 -4 -5 B 5 5 5 5 5 5 5 5 5 5 5 5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 A mod B A rem B 0 0 1 1 2 2 3 3 4 4 0 0 0 0 4 -1 3 -2 2 -3 1 -4 0 0 0 0 -4 1 -3 2 -2 3 -1 4 0 0 0 0 -1 -1 -2 -2 -3 -3 -4 -4 0 0

You might also like