Documente Academic
Documente Profesional
Documente Cultură
V H D L:
VHSIC:
V ERY H IGH S PEED I NTEGRATED C IRCUITS (CIRCUITOS INTEGRADOS DE MUY ALTA VELOCIDAD)
Ing. Julio Gonzalez Prado
que se usa para describir el hardware de circuito integrados con aplicaciones en alta velocidad.
y el Pascal que se emplea bsicamente para realizar implementacin de circuitos de alta velocidad. Por lo tanto, si el C++ y el Pascal tienen aplicaciones para diferentes aspectos, el VHDL se centra en aplicaciones de implementacin circuital.
ORIGENES
El VHDL naci en el ao 1981 cuando el
Departamento de Defensa de los Estados Unidos genera un proyecto denominado VHSIC para generar circuito integrados de alta velocidad. El VHDL se desarrolla para estandarizar los procesos de diseo y optimizar el manejo de la informacin que se genera.
ORIGENES
En
1983, IBM, Texas Instruments e Intermetrics desarrollan el lenguaje VHDL La IEEE lo propuso como su estandar en 1984, y en 1987 lo adopt como su lenguaje HDL (mediante el estndar std 1076 1987)
ORIGENES
Como
esta versin demostr algunas carencias relacionadas con la sntesis de circuitos, debido principalmente a la evolucin de las herramientas de diseo que usaban el VHDL y la rpida evolucin de las tecnologas para implementacin de los Circuitos Integrados, se plante una segunda versin en 1993 (que es la vigente) , mediante el estndar IEEE std 10761993,conocido como VHDL93.
Ing. Julio Gonzalez Prado
ORIGENES
En esencia la versin de 1987 es un
subconjunto de la versin de 1993, de modo que cualquier programa de la versin antigua puede ser procesada por la versin mas reciente. Una excepcin de esta norma es lo relacionado con la declaracin y el uso de ficheros.
AMBIENTE DE DESARROLLO
El diseo con lenguaje VHDL se basa en el
AMBIENTE DE DESARROLLO
El proceso CAD (Computer Aided Design),
diseo asistido por computador es un proceso de diseo que emplea tcnicas graficas de computadora apoyadas en paquetes de software para ayudar a los diseadores.
AMBIENTE DE DESARROLLO
La aplicacin de las herramientas CAD en el
diseo de circuitos y sistemas electrnicos es fundamental ya que permite la adicin de interfases graficas y simuladores.
ESCALAS DE INTEGRACION
Los procesos de integracin implican la
continua reduccin del tamao de los componentes, as como el incremento del numero de compuertas en cada integrado.
ESCALAS DE INTEGRACION
SSI (Small Scale Integrated): menos de 10
compuertas por integrado. MSI (Medium Scale Integrated): entre 10 y 99 compuertas por integrado. LSI (Large Scale Integrated): entre 100 y 9999 compuertas por integrado. VLSI (Very Large Scale Integrated): entre 10000 y 99999 compuertas. ULSI (Ultra Large Scale Integrated): 100000 compuertas mas.
Ing. Julio Gonzalez Prado
CARACTERISTICAS DE LA INTEGRACION
Mayor numero de dispositivos por IC. Menor numero de componentes/sistemas. Mayor velocidad de calculo. Menor consumo. Mayor esfuerzo en diseo. Mayor costo de fabricacin.
definir dominios en los cuales las acciones son del tipo secuencial. Permite diseos modulares y jerrquicos, es til para emplear con la metodologa Top Down. Permite simular el diseo y generar formas de onda.
de ser simulado.
Hardware a nivel de compuertas con herramientas de sntesis: ALTERA : Max + Plus II CADENCE : Synergy CYPRESS : Warp II, III MENTOR GRAPHICS : Autologic SYNOPSYS : Design Compiler VIEWLOGIC : ViewSynthesis
Ing. Julio Gonzalez Prado
minsculas: CASA, casa son iguales. Las variables deben empezar con una letra, no deben contener ni espacios ni smbolos como &, %, $, #, . Su longitud no esta limitada. No pueden terminar en _ _ _
un valor de un tipo determinado. Segn sea el tipo de dato, el objeto poseer un conjunto de propiedades y se le podr aplicar un conjunto de operaciones.
caracteres dispuestos de una forma adecuada y siguiendo unas normas propias del lenguaje, para dar un nombre a los elementos en VHDL.
carcter alfabtico, no pudiendo terminar en _ No esta fijada la extensin del identificador, pero no debe ser extremadamente larga. Los identificadores pueden tener caracteres numricos (0 al 9) pero estos no deben aparecer en el principio. No puede usarse como identificador una PALABRA RESERVADA.
Ing. Julio Gonzalez Prado
de identificadores que tienen un significado especifico en VHDL. Son palabras empleadas dentro del lenguaje para realizar un diseo. No pueden ser empleadas como identificadores definidos por el usuario.
PALABRAS RESERVADAS
abs and begin case else exit acces architecture block component disconnect function after array body alias asser buffer all attribute bus
PALABRAS RESERVADAS
nor open port register severity transport variable xor not or null others of out range Return then until while on package record select to use with
procedure process rem signal type walt report subtype units when
Ing. Julio Gonzalez Prado
se usan para representar funciones diferentes y especificas. Los smbolos especiales son: + - / ( ) . , : ; & < > = | # <= => := __
Se considera que cualquier numero se encuentra en base 10. Se admite notacin cientfica para nmeros en coma flotante. Para nmeros en otras bases: 2#11000100# 16#C4#
ESCALARES: Son tipos que contienen algn tipo de magnitud. Pueden ser: Enteros, Reales, Fsicos y Enumerados.
ENTEROS:
con magnitudes fsicas, es decir, tienen valor y unidades. type long is range 0 to 1,0e9 units um; mm=1000um; m=1000mm; end units;
Ing. Julio Gonzalez Prado
Son datos que pueden tomar cualquier valor especificado en un conjunto finito lista. Este conjunto se indica mediante una lista encerrada entre parntesis de elementos separados por comas. type nivel _ lgico is (alto,bajo,Z); type bit is (0, 1);
del mismo tipo a los que se accede mediante un ndice. Pueden ser de una dimensin de varias dimensiones. Pueden estar definidas para un rango el ndice puede ser libre teniendo la matriz una dimensin terica infinita.
Ing. Julio Gonzalez Prado
EJEMPLOS type palab is array (31 downto 0) of bit; type transform is array (1 to 4, 1 to 4) of real; type bit_vector is array (natural range <>) of bit;
Es el equivalente al tipo registro de otros lenguajes. type alumno is record nombre: string; curso: integer; end record;
ATRIBUTOS
Suponiendo que t es un tipo enumerado,
entero, flotante fisico se tienen: tleft : limite izquierdo del tipo t tright : limite derecho del tipo t tlow : limite inferior del tipo t thigh: limite superior del tipo t
ATRIBUTOS
Suponiendo un tipo t, un miembro x de este tipo y
un entero N : tpos(x): posicion x dentro del tipo t tval(N): elemento (N) del tipo t tleftof(x): elemento que esta a la izquierda de x en t trightof(x): elemento que esta a la derecha de x en t tpred(x): elemento que esta delante de x en t. tsucc(x): elemento que esta detrs de x en t
Ing. Julio Gonzalez Prado
ATRIBUTOS
Si a es un tipo matriz, n elemento de este,
N numero entero desde 1 hasta el numero de dimensiones de la matriz: aleft(N): limite izquierdo del rango de dimension N de a. aright(N):limite derecho del rango de dimension N de a. alow(N): limite inferior del rango de dimension N de a.
Ing. Julio Gonzalez Prado
ATRIBUTOS
limite superior del rango de dimension N de a. arange(N): Rango del indice de dimension N de a. alength(N): Longitud del indice de dimension N de a.
ahigh(N):
ATRIBUTOS
Suponiendo que s es una seal: sevent: Devuelve V si se ha producido un
cambio en la seal s. sstable (tiempo): Devuelve V se la seal estuvo estable durante el ultimo periodo de tiempo. El atributo sevent es util en la definicion del circuitos secuenciales para detectar el flanco de subida o bajada de la seal de reloj.
Ing. Julio Gonzalez Prado
TERMINOLOGIA
ACCIONES CONCURRENTES: son aquellas
que se realizan en forma simultanea en un circuito. Un ejemplo son los circuitos combinacionales. ACCIONES SECUENCIALES: son aquellas que se realizan siguiendo una secuencia un orden determinado, no todas en forma simultanea. Un ejemplo de ellas son los procesos que se describen las sentencias de un programa: CASE, IF-ELSE, DO-WHILE, FOR.
Ing. Julio Gonzalez Prado
TERMINOLOGIA
PROCESO (PROCESS): son los dominios
que emplea el VHDL para emplear acciones de tipo secuencial. La asignacion de eventos secuenciales dentro de una estructura concurrente se ejecutar de forma concurrente, es decir, al mismo tiempo que las dems sentencias.
SINTAXIS
MODO: Describe la direccin en la cual la
informacin es transmitida a travs del puerto. Puede ser: Modo IN Modo OUT Modo BUFFER Modo INOUT
SINTAXIS
MODO IN: Es cuando por el puerto la
informacin solo puede entrar a la entidad. Se usa generalmente en relojes, entradas de control (load, reset, enable) y datos de entrada unidireccionales.
SINTAXIS
MODO OUT: Es cuando la informacin en el
puerto fluye hacia fuera de la entidad. Este modo no permite realimentacin, es decir, el compilador no puede leer este dato.
SINTAXIS
MODO
BUFER: Es usado para una realimentacin interna (se usa como un driver dentro de la entidad) Es similar al MODO OUT pero permite realimentacin. No es un puerto BIDIRECCIONAL y solo puede ser conectado directamente a una seal interna a un puerto de modo buffer de otra entidad.
Ing. Julio Gonzalez Prado
SINTAXIS
MODO
INOUT: Es usado para seales bidireccionales. Permite realimentacin interna. Puede reemplazar a cualquiera de los modos anteriores.
SINTAXIS
TIPO: Son las diferentes clases de valores
que puede tomar la seal. Pueden haber tantos tipos como se quiera, ya que en VHDL se pueden definir por el usuario. Tambin existen los tipos de forma estndar y los creados por libreras normalizadas. La norma internacional IEEE 1076/93 define 4 tipos nativos: BOOLEAN, BIT, BIT_VECTOR, INTEGER.
Ing. Julio Gonzalez Prado
SINTAXIS
TIPO
BOOLEAN: Pueden tomar valores VERDADERO (TRUE) FALSO (FALSE). Un ejemplo son las salidas de los comparadores. TIPO BIT: Pueden tomar valores 0 (LOW) 1(HIGH). TIPO BIT_VECTOR: Es un vector de bits. TIPO INTEGER: Puede manejar nmeros enteros.
Ing. Julio Gonzalez Prado
SINTAXIS
Posteriormente la norma IEEE 1164 ampli el
mbito del bit definiendo un nuevo tipo llamado std_logic, std_ulogic y sus derivados: std_logic_vector, std_ulogic_vector.
SINTAXIS
ARCHIVOS DE CABECERA: Se colocan al
inicio de la entidad y permiten al programa cargar diversas libreras y archivos que contienen tipos y definiciones que sern usadas por el programa. library ieee; use ieee.std_logic_1164.all; use work.std_arith.all;
library (biblioteca)
Es un lugar al que se tiene acceso para
utilizar las unidades de diseo predeterminadas por el fabricante permitiendo agilizar el diseo. En VHDL existen dos bibliotecas: ieee y work.
library (biblioteca)
La biblioteca work permite almacenar los
programas que el usuario va generando. Cuando el diseo utiliza algun paquete es necesario llamar a la biblioteca que lo contiene. En el caso de work no se necesita la declaracion library porque la carpeta siempre esta presente al desarrolar el diseo.
library (biblioteca)
La biblioteca std_logic_1164 contiene: El paquete numeric_std: define funciones
para realizar operaciones entre diferentes tipos de datos que pueden representarse con signo y sin signo. El paquete numeric_bit: define tipos de datos binarios con signo sin signo. El paquete std_arith: define funciones y operadores aritmeticos tales como = > <
Ing. Julio Gonzalez Prado
SINTAXIS
El programa en VHDL esta formado de dos
partes principales:
SINTAXIS
ENTIDAD
(entity): Es la interfaz del dispositivo con el exterior. Es decir, describe los puertos (ports) que son las entradas y salidas del circuito.
SINTAXIS
Su estructura es: entity nomb_ent is [generic (lista de parametros)]; ports( lista de puertos); end nomb_ent;
EJEMPLO:
Entidad para un comparador de igualdad de dos nmeros de 4 bits.
a
COMP IGUAL
EJEMPLO:
Entidad para un comparador de igualdad de dos nmeros de 4 bits. entity comp is port ( a,b: in bit_vector(3 downto 0); igual: out bit); end comp;
SINTAXIS
ARQUITECTURA (architecture): describe la
funcionalidad del dispositivo, es decir las transformaciones que se realizaran sobre los datos que ingresan por los puertos para producir la salida. Es decir describe el funcionamiento del dispositivo.
SINTAXIS
Su estructura es:
ESTILOS DE ARQUITECTURA
Son las formas de descripcin que se utilizan
estilo se caracteriza por incluir sentencias y ordenes tpicas de un lenguaje de programacin: when, do-while, if-then. Como estas sentencias son de tipo secuencial se usan en el PROCESO (process). No interesa la estructura interna del dispositivo.
ESTILO BEHAVIORAL
architecture ejem1of comp is begin process(a,b) begin if(a=b) then igual <= 1; else igual <= 0; end if; end process; end ejem1;
Ing. Julio Gonzalez Prado
como la informacin ser transmitida usando seales a travs del dispositivo de modo que realice el trayecto entre entrada y salida SIN USO DE ASIGNACIONES SECUENCIALES. En este estilo no se pueden usar procesos.
DIAGRAMA CIRCUITAL
A(0) U0 B(0) U1 U4 IGUAL A(2) B(2) A(3) B(3) U3 U2
A(1) B(1)
ESTILO DATAFLOW
architecture ejem2 of comp is begin igual <= (a(0) xnor b(0)) and (a(1) xnor b(1)) and (a(2) xnor b(2)) and (a(3) xnor b(3)); end ejem2;
evalan los componentes con seales. Es el estilo mas difcil de usar ya que detalla las conexiones y es una forma de descripcin circuital del dispositivo.
crear una estructura grande y deseamos descomponerla en partes para manejarla mejor y hacer una simulacin de cada parte. Suele requerir el uso de seales auxiliares, paquetes y libreras de accesorios se deben declarar al comienzo de la entidad.
ESTILO STRUCTURAL
architecture ejem3 of comp is signal x: bit_vector(0 to 3); begin u0: xnor2 port map(a(0),b(0),x(0)); u1: xnor2 port map(a(1),b(1),x(1)); u2: xnor2 port map(a(2),b(2),x(2)); u3: xnor2 port map(a(3),b(3),x(3)); u4: and4 port map(x(0),x(1),x(2),x(3),igual); end ejem3;
Ing. Julio Gonzalez Prado
CONSTANTES
Son elementos que se inicializan en un
determinado valor y que no puede ser cambiado una vez inicializado. Ejemplos: constant pi: real := 3.14; constant delay: time := 20 s;
VARIABLES
Son
elementos cuyo valor puede ser asignado en cualquier instante y tambin con un valor inicial. Ejemplos: variable alfa:natural:= 1;
SEALES
Son elementos que se declaran igual que las
variables y las constantes. Se diferencian de las variables en que guardan un valor y lo pueden hacer visible en el momento adecuado. O sea puede como un elemento que tiene dos partes: la parte donde se escribe el dato y la parte donde se lee.
SEALES
Pueden ser de tres tipos: NORMAL: no se pueden desconectar; BUS: tiene un valor por defecto cuando estn
desconectadas; REGISTER: no tienen un valor por defecto pero conservan el ultimo valor que se escribi.
SIGNIFICADO FISICO
Las VARIABLES son elementos abstractos,
es decir, solo tiene significado para el lenguaje. Las SEALES tienen significado fsico: representan las conexiones entre elementos del circuito.
DIFERENCIA
La diferencia principal es que una asignacin
a una variable se realiza en forma INMEDIATA, o sea toma el valor que se le asigna en el momento de la asignacin. En cambio una seal no recibe el valor que se le ha asignado HASTA EL SIGUIENTE PASO DE SIMULACION.
SENTENCIA PROCESS
Es una instruccin tpica de VHDL, se usa en
el estilo BEHAVIORAL. Es la forma que tiene el VHDL para incluir sentencias secuenciales. Para el compilador, todo el PROCESS considera solo un paso de simulacin. LISTA SENSIBLE: es la relacin de seales que deben cambiar para que ejecute el process.
las se las se
PROCESS
Sintaxis:
[etiqueta] process (lista sensible) [zona de declaracin] begin sentencias secuenciales; end process [etiqueta];
FORMA 1:
process (lista sensible) begin sentencias secuenciales; end process; Se continua ejecutando el process mientras alguna e las seales de la lista sensible contine cambiando. Al llegar a end se suspende el proceso y se realiza la asignacion de seal.
Ing. Julio Gonzalez Prado
FORMA 2:
process begin sentencias secuenciales; wait; sentencias secuenciales; wait; sentencias secuenciales; end process;
FORMA 2:
No tiene lista sensible. Usa la palabra wait. Tiene la forma de lazo infinito. El proceso se suspende cada vez que se
SENTENCIA WAIT
Suspende
el proceso y realiza asignaciones respectivas a las seales. Sintaxis: wait on (seales); wait until (condicin); wait for (tiempo);
las
SENTENCIA IF
Se usa con then else ejecutar un conjunto
de sentencias segn la evaluacin de una condicin conjunto de condiciones, cuyo resultado puede ser verdadero falso.
SENTENCIA IF
Sintaxis:
SENTENCIA IF
Si la condicin es VERDADERA, se ejecuta
ELSIF
Es una extensin de la sentencia if-then que
ELSIF
Funcionamiento:
Si condicin 1 es verdadera, se ejecuta la sentencia 1, Si la condicin 1 es falsa, se evala la condicin 2, Si la condicin 2 es verdadera, se ejecuta la sentencia 2, Si la condicin 2 es falsa, se ejecuta la sentencia 3.
Ing. Julio Gonzalez Prado
ELSIF (EJEMPLO)
process (e,s) begin if (e = 0) elsif (s = 0) else end if;
SENTENCIA CASE
Es una sentencia que permite ejecutar un
conjunto de opciones de acuerdo a la seal de seleccin. Sintaxis: case (seal a evaluar) is when (valor1) => accion_1; when (valor2) => accion_2; when (valor n) => accion_n; end case;
Ing. Julio Gonzalez Prado
SENTENCIA CASE
Funcionamiento: Si seal a evaluar toma valor 1, se ejecuta
accion_1, pasando luego el programa a la linea siguiente de end, continuando luego el programa. Si seal a evaluar toma valor 2, se ejecuta accion_2 y as sucesivamente.
CASE (EJEMPLO)
case control is when 00 => d <= a; when 01 => d <= b; when 10 => d <= c; when others => d <= 0; end case;
SENTENCIA LOOP
Se usa para ejecutar un grupo de sentencias
un numero determinado de veces. Consiste en un ciclo for un ciclo while. La sentencia for ejecuta un numero especifico de iteraciones basado en el valor de una variable. La sentencia while continuar ejecutando una operacin mientras una condicin de control local sea cierta.
Ing. Julio Gonzalez Prado
EJEMPLO 1
process(a) begin ciclo1: for i in 7 downto 0 loop entrada(i) <= 1 end loop; end process;
EJEMPLO 2
process (a) variable i: integer := 0; begin ciclo2: while i < 7 loop entrada (i) <= 0; i = i + 1; end loop; end process;
SENTENCIA EXIT
Se usa dentro del loop y permite salir del lazo
si se alcanza una condicin fijada por nosotros. Su verdadera utilidad se encuentra si se disea controladores de memoria.
EJEMPLO
process (a) begin ciclo1:for i in 7 downto 0 loop if alength < i then exit ciclo1; entrada(i) <= 0; end if; end loop; end process;
Ing. Julio Gonzalez Prado
SENTENCIA NEXT
Se encuentra tambin dentro de un ciclo loop
EJEMPLO
process (a) begin ciclo1: for i in 7 downto 0 loop if i=4 then next; else entrada (i) <= 1, end if; end loop; end process;
Ing. Julio Gonzalez Prado
SENTENCIA NULL
Se utiliza para que dada una condicin
especial no pase nada, es decir, que ninguna seal variable cambie y que el programa siga su curso habitual. Su comportamiento dentro de un loop es similar al de la sentencia next.