SlideShare una empresa de Scribd logo
1 de 102
Ing. Julio Gonzalez Prado
V H D L
SOFTWARE PARA
DISEÑO DE CIRCUITOS
INTEGRADOS
Ing. Julio Gonzalez Prado
 V H D L:
V HSIC
H ARDWARE
D ESCRIPTION
L ANGUAGE
(LENGUAJE DE DESCRIPCION DE
HARDWARE VHSIC)
Ing. Julio Gonzalez Prado
 VHSIC:
V ERY
H IGH
S PEED
I NTEGRATED
C IRCUITS
(CIRCUITOS INTEGRADOS DE MUY ALTA
VELOCIDAD)
Ing. Julio Gonzalez Prado
 Por lo tanto, el lenguaje VHDL es un lenguaje
que se usa para describir el hardware de
circuito integrados con aplicaciones en alta
velocidad.
Ing. Julio Gonzalez Prado
 Es un lenguaje que tiene elementos del C++
y el Pascal que se emplea básicamente para
realizar implementación 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
implementación circuital.
Ing. Julio Gonzalez Prado
ORIGENES
 El VHDL nació en el año 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 diseño y optimizar el manejo de
la información que se genera.
Ing. Julio Gonzalez Prado
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 estándar std 1076 – 1987)
Ing. Julio Gonzalez Prado
ORIGENES
 Como esta versión demostró algunas
carencias relacionadas con la síntesis de
circuitos, debido principalmente a la
evolución de las herramientas de diseño que
usaban el VHDL y la rápida evolución de las
tecnologías para implementación de los
Circuitos Integrados, se planteó una segunda
versión en 1993 (que es la vigente) ,
mediante el estándar IEEE std 1076-
1993,conocido como VHDL’93.
Ing. Julio Gonzalez Prado
ORIGENES
 En esencia la versión de 1987 es un
subconjunto de la versión de 1993, de modo
que cualquier programa de la versión antigua
puede ser procesada por la versión mas
reciente.
 Una excepción de esta norma es lo
relacionado con la declaración y el uso de
ficheros.
Ing. Julio Gonzalez Prado
AMBIENTE DE DESARROLLO
 El diseño con lenguaje VHDL se basa en el
concepto de DISEÑO CON HERRAMIENTAS
CAD – EDA.
Ing. Julio Gonzalez Prado
AMBIENTE DE DESARROLLO
 El proceso CAD (Computer Aided Design),
diseño asistido por computador es un
proceso de diseño que emplea técnicas
graficas de computadora apoyadas en
paquetes de software para ayudar a los
diseñadores.
Ing. Julio Gonzalez Prado
AMBIENTE DE DESARROLLO
 La aplicación de las herramientas CAD en el
diseño de circuitos y sistemas electrónicos es
fundamental ya que permite la adición de
interfases graficas y simuladores.
Ing. Julio Gonzalez Prado
ESCALAS DE INTEGRACION
 Los procesos de integración implican la
continua reducción del tamaño de los
componentes, así como el incremento del
numero de compuertas en cada integrado.
Ing. Julio Gonzalez Prado
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 diseño.
 Mayor costo de fabricación.
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 Es un lenguaje concurrente aunque permite
definir dominios en los cuales las acciones
son del tipo secuencial.
 Permite diseños modulares y jerárquicos, es
útil para emplear con la metodología “Top
Down”.
 Permite simular el diseño y generar formas
de onda.
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 Es un lenguaje que debe ser compilado antes
de ser simulado.
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 Soporta distintos niveles de descripción:
 FUNCIONAL: modelamiento en alto nivel.
 ESTRUCTURAL: la descripción se realiza
mediante interconexión de componentes.
 FISICO: se realiza la implementación real del
circuito.
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 A partir del modelo se puede sintetizar el
Hardware a nivel de compuertas con
herramientas de síntesis:
ALTERA : Max + Plus II
CADENCE : Synergy
CYPRESS : Warp II, III
MENTOR GRAPHICS : Autologic
SYNOPSYS : Design Compiler
VIEWLOGIC : ViewSynthesis
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 VHDL no distingue las mayúsculas de las
minúsculas: CASA, casa son iguales.
 Las variables deben empezar con una letra,
no deben contener ni espacios ni símbolos
como &, %, $, #, ¡. Su longitud no esta
limitada. No pueden terminar en _ ó _ _
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 OBJETO: es un elemento que tiene asignado
un valor de un tipo determinado.
 Según sea el tipo de dato, el objeto poseerá
un conjunto de propiedades y se le podrá
aplicar un conjunto de operaciones.
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 IDENTIFICADORES: Son un conjunto de
caracteres dispuestos de una forma
adecuada y siguiendo unas normas propias
del lenguaje, para dar un nombre a los
elementos en VHDL.
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 Los identificadores deben empezar con un
carácter alfabético, no pudiendo terminar en
_
 No esta fijada la extensión del identificador,
pero no debe ser extremadamente larga.
 Los identificadores pueden tener caracteres
numéricos (0 al 9) pero estos no deben
aparecer en el principio.
 No puede usarse como identificador una
PALABRA RESERVADA.
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 PALABRAS RESERVADAS: Son un conjunto
de identificadores que tienen un significado
especifico en VHDL.
 Son palabras empleadas dentro del lenguaje
para realizar un diseño.
 No pueden ser empleadas como
identificadores definidos por el usuario.
Ing. Julio Gonzalez Prado
PALABRAS RESERVADAS
abs acces after alias all
and architecture array asser attribute
begin block body buffer bus
case component configuration constant downto
else disconnect elsif end entity
exit function generate file for
generic guarded inout if in
is label library linkage loop
map mod nand new next
Ing. Julio Gonzalez Prado
PALABRAS RESERVADAS
nor not null of on
open or others out package
port procedure process range record
register rem report Return select
severity signal subtype then to
transport type units until use
variable walt when while with
xor
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 SIMBOLOS ESPECIALES: Son símbolos que
se usan para representar funciones
diferentes y especificas.
 Los símbolos especiales son:
+ - / ( ) . , : ; & ‘ < > = | # <= => :=
_ _
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 NUMEROS: Se considera que cualquier
numero se encuentra en base 10.
 Se admite notación científica para números
en coma flotante.
 Para números en otras bases:
2#11000100# 16#C4#
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 TIPO DE DATOS: Delimita los valores que
puede tener un objeto y las operaciones que
se pueden realizar con él.
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 TIPOS ESCALARES: Son tipos que
contienen algún tipo de magnitud.
 Pueden ser: Enteros, Reales, Físicos y
Enumerados.
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 ENTEROS: Son datos cuyo contenido
constituye un valor numérico entero.
 Se definen por la palabra reservada range
que indica que esta comprendido entre un
cierto intervalo especificando sus limites.
 Ejemplo: type byte is range 0 to 255;
type index is range 7 downto 0;
type integer is range -2147483648 to
2147483647;
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 REALES: Son los que define un numero real.
 type nivel is range 0.0 to 5.0;
type real is range -1,0E38 to 1,0E38;
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 FISICOS: Son datos que se corresponden
con magnitudes físicas, 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
CARACTERISTICAS DEL VHDL
 ENUMERADOS: Son datos que pueden
tomar cualquier valor especificado en un
conjunto finito ó lista.
 Este conjunto se indica mediante una lista
encerrada entre paréntesis de elementos
separados por comas.
 type nivel _ lógico is (alto,bajo,Z);
type bit is (‘0’, ‘1’);
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 TIPOS COMPUESTOS
 MATRICES: Son una colección de elementos
del mismo tipo a los que se accede mediante
un índice.
 Pueden ser de una dimensión ó de varias
dimensiones.
 Pueden estar definidas para un rango ó el
índice puede ser libre teniendo la matriz una
dimensión teórica infinita.
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 MATRICES: 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;
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 REGISTROS: Es el equivalente al tipo
registro de otros lenguajes.
 type alumno is
record
nombre: string;
curso: integer;
end record;
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
 ATRIBUTOS: Son condiciones ó
características que pueden tomar las señales
ó variables.
Ing. Julio Gonzalez Prado
ATRIBUTOS
 Suponiendo que “t” es un tipo enumerado,
entero, flotante ó fisico se tienen:
 t’left : limite izquierdo del tipo “t”
 t’right : limite derecho del tipo “t”
 t’low : limite inferior del tipo “t”
 t’high: limite superior del tipo “t”
Ing. Julio Gonzalez Prado
ATRIBUTOS
 Suponiendo un tipo “t”, un miembro “x” de este tipo y
un entero “N” :
 t’pos(x): posicion “x” dentro del tipo “t”
 t’val(N): elemento (N) del tipo “t”
 t’leftof(x): elemento que esta a la izquierda de “x” en
“t”
 t’rightof(x): elemento que esta a la derecha de “x” en
“t”
 t’pred(x): elemento que esta delante de “x” en “t”.
 t’succ(x): elemento que esta detrás 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:
 a’left(N): limite izquierdo del rango de
dimension N de a.
 a’right(N):limite derecho del rango de
dimension N de a.
 a’low(N): limite inferior del rango de
dimension N de a.
Ing. Julio Gonzalez Prado
ATRIBUTOS
 a’high(N): limite superior del rango de
dimension N de a.
 a’range(N): Rango del indice de dimension N
de a.
 a’length(N): Longitud del indice de dimension
N de a.
Ing. Julio Gonzalez Prado
ATRIBUTOS
 Suponiendo que “s” es una señal:
 s’event: Devuelve “V” si se ha producido un
cambio en la señal “s”.
 s’stable (tiempo): Devuelve V se la señal
estuvo estable durante el ultimo periodo de
“tiempo”.
 El atributo s’event es util en la definicion del
circuitos secuenciales para detectar el flanco
de subida o bajada de la señal 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 demás sentencias.
Ing. Julio Gonzalez Prado
SINTAXIS
 MODO: Describe la dirección en la cual la
información es transmitida a través del
puerto.
 Puede ser: Modo IN
Modo OUT
Modo BUFFER
Modo INOUT
Ing. Julio Gonzalez Prado
SINTAXIS
 MODO IN: Es cuando por el puerto la
información solo puede entrar a la entidad.
 Se usa generalmente en relojes, entradas de
control (load, reset, enable) y datos de
entrada unidireccionales.
Ing. Julio Gonzalez Prado
SINTAXIS
 MODO OUT: Es cuando la información en el
puerto fluye hacia fuera de la entidad.
 Este modo no permite realimentación, es
decir, el compilador no puede leer este dato.
Ing. Julio Gonzalez Prado
SINTAXIS
 MODO BUFER: Es usado para una
realimentación interna (se usa como un driver
dentro de la entidad)
 Es similar al MODO OUT pero permite
realimentación.
 No es un puerto BIDIRECCIONAL y solo
puede ser conectado directamente a una
señal interna ó a un puerto de modo buffer de
otra entidad.
Ing. Julio Gonzalez Prado
SINTAXIS
 MODO INOUT: Es usado para señales
bidireccionales.
 Permite realimentación interna.
 Puede reemplazar a cualquiera de los modos
anteriores.
Ing. Julio Gonzalez Prado
SINTAXIS
 TIPO: Son las diferentes clases de valores
que puede tomar la señal.
 Pueden haber tantos tipos como se quiera,
ya que en VHDL se pueden definir por el
usuario.
 También existen los tipos de forma estándar
y los creados por librerías 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 números
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.
Ing. Julio Gonzalez Prado
SINTAXIS
 ARCHIVOS DE CABECERA: Se colocan al
inicio de la entidad y permiten al programa
cargar diversas librerías y archivos que
contienen tipos y definiciones que serán
usadas por el programa.
 library ieee;
 use ieee.std_logic_1164.all;
 use work.std_arith.all;
Ing. Julio Gonzalez Prado
library (biblioteca)
 Es un lugar al que se tiene acceso para
utilizar las unidades de diseño
predeterminadas por el fabricante
permitiendo agilizar el diseño.
 En VHDL existen dos bibliotecas: ieee y
work.
Ing. Julio Gonzalez Prado
library (biblioteca)
 La biblioteca work permite almacenar los
programas que el usuario va generando.
 Cuando el diseño 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 diseño.
Ing. Julio Gonzalez Prado
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:
Ing. Julio Gonzalez Prado
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.
Ing. Julio Gonzalez Prado
SINTAXIS
Su estructura es:
entity nomb_ent is
[generic (lista de parametros)];
ports(
lista de puertos);
end nomb_ent;
Ing. Julio Gonzalez Prado
EJEMPLO:
Entidad para un comparador de igualdad de dos
números de 4 bits.
a
b
COMP IGUAL
Ing. Julio Gonzalez Prado
EJEMPLO:
Entidad para un comparador de igualdad de dos
números de 4 bits.
entity comp is port (
a,b: in bit_vector(3 downto 0);
igual: out bit);
end comp;
Ing. Julio Gonzalez Prado
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.
Ing. Julio Gonzalez Prado
SINTAXIS
 Su estructura es:
architecture nomb_arch of nomb_ent is
[declaraciones]
begin
sentencias concurrentes;
end nomb_arch;
Ing. Julio Gonzalez Prado
ESTILOS DE ARQUITECTURA
 Son las formas de descripción que se utilizan
dependiendo cada uno de su propio nivel de
abstracción.
Ing. Julio Gonzalez Prado
ESTILO BEHAVIORAL
(COMPORTAMIENTO)
 Este estilo se caracteriza por incluir
sentencias y ordenes típicas de un lenguaje
de programación: 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.
Ing. Julio Gonzalez Prado
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
ESTILO DATAFLOW
(FLUJO DE DATOS)
 Describe como la información será
transmitida usando señales a través 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.
Ing. Julio Gonzalez Prado
DIAGRAMA CIRCUITAL
IGUAL
U4
B(3)
A(3)
B(2)
A(2)
B(1)
A(1)
B(0)
A(0)
U3
U2
U1
U0
Ing. Julio Gonzalez Prado
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;
Ing. Julio Gonzalez Prado
ESTILO STRUCTURAL
(ESTRUCTURAL)
 Describe detalladamente como se conectan y
evalúan los componentes con señales.
 Es el estilo mas difícil de usar ya que detalla
las conexiones y es una forma de descripción
circuital del dispositivo.
Ing. Julio Gonzalez Prado
ESTILO STRUCTURAL
(ESTRUCTURAL)
 Su utilidad se presenta cuando se desea
crear una estructura grande y deseamos
descomponerla en partes para manejarla
mejor y hacer una simulación de cada parte.
 Suele requerir el uso de señales auxiliares,
paquetes y librerías de accesorios se deben
declarar al comienzo de la entidad.
Ing. Julio Gonzalez Prado
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;
Ing. Julio Gonzalez Prado
VARIABLES
 Son elementos cuyo valor puede ser
asignado en cualquier instante y también con
un valor inicial.
 Ejemplos: variable alfa:natural:= 1;
Ing. Julio Gonzalez Prado
SEÑALES
 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.
Ing. Julio Gonzalez Prado
SEÑALES
 Pueden ser de tres tipos:
 NORMAL: no se pueden desconectar;
 BUS: tiene un valor por defecto cuando están
desconectadas;
 REGISTER: no tienen un valor por defecto
pero conservan el ultimo valor que se
escribió.
Ing. Julio Gonzalez Prado
SIGNIFICADO FISICO
 Las VARIABLES son elementos abstractos,
es decir, solo tiene significado para el
lenguaje.
 Las SEÑALES tienen significado físico:
representan las conexiones entre elementos
del circuito.
Ing. Julio Gonzalez Prado
DIFERENCIA
 La diferencia principal es que una asignación
a una variable se realiza en forma
INMEDIATA, o sea toma el valor que se le
asigna en el momento de la asignación.
 En cambio una señal no recibe el valor que
se le ha asignado HASTA EL SIGUIENTE
PASO DE SIMULACION.
Ing. Julio Gonzalez Prado
SENTENCIA PROCESS
 Es una instrucción típica de VHDL, se usa en
el estilo BEHAVIORAL.
 Es la forma que tiene el VHDL para incluir las
sentencias secuenciales.
 Para el compilador, todo el PROCESS se
considera solo un paso de simulación.
 LISTA SENSIBLE: es la relación de las
señales que deben cambiar para que se
ejecute el process.
Ing. Julio Gonzalez Prado
PROCESS
 Sintaxis:
[etiqueta] process (lista sensible)
[zona de declaración]
begin
sentencias secuenciales;
end process [etiqueta];
Ing. Julio Gonzalez Prado
FORMA 1:
process (lista sensible)
begin
sentencias secuenciales;
end process;
Se continua ejecutando el process mientras
alguna e las señales de la lista sensible
continúe cambiando.
Al llegar a end se suspende el proceso y se
realiza la asignacion de señal.
Ing. Julio Gonzalez Prado
FORMA 2:
process
begin
sentencias secuenciales;
wait;
sentencias secuenciales;
wait;
sentencias secuenciales;
end process;
Ing. Julio Gonzalez Prado
FORMA 2:
 No tiene lista sensible.
 Usa la palabra wait.
 Tiene la forma de lazo infinito.
 El proceso se suspende cada vez que se
encuentra un wait, para realizar la asignación
a señal.
Ing. Julio Gonzalez Prado
SENTENCIA WAIT
 Suspende el proceso y realiza las
asignaciones respectivas a las señales.
 Sintaxis:
wait on (señales);
wait until (condición);
wait for (tiempo);
Ing. Julio Gonzalez Prado
SENTENCIA IF
 Se usa con then – else ejecutar un conjunto
de sentencias según la evaluación de una
condición ó conjunto de condiciones, cuyo
resultado puede ser verdadero ó falso.
Ing. Julio Gonzalez Prado
SENTENCIA IF
 Sintaxis:
If (condición) then
sentencia 1;
else
sentencia 2;
end if;
Ing. Julio Gonzalez Prado
SENTENCIA IF
 Si la condición es VERDADERA, se ejecuta
la sentencia 1.
 Si la condición es FALSA, se ejecuta la
sentencia 2.
Ing. Julio Gonzalez Prado
ELSIF
 Es una extensión de la sentencia if-then que
permite incluir una segunda condición
 Sintaxis:
If (condicion1) then sentencia 1;
elsif (condicion2) then sentencia 2;
else sentencia 3;
end if;
Ing. Julio Gonzalez Prado
ELSIF
 Funcionamiento:
Si condición 1 es verdadera, se ejecuta la
sentencia 1,
Si la condición 1 es falsa, se evalúa la condición
2,
Si la condición 2 es verdadera, se ejecuta la
sentencia 2,
Si la condición 2 es falsa, se ejecuta la
sentencia 3.
Ing. Julio Gonzalez Prado
ELSIF
(EJEMPLO)
process (e,s)
begin
if (e = ‘0’) then c <= ‘0’;
elsif (s = ‘0’) then c <= a;
else c <= b;
end if;
Ing. Julio Gonzalez Prado
SENTENCIA CASE
 Es una sentencia que permite ejecutar un
conjunto de opciones de acuerdo a la señal
de selección.
 Sintaxis:
case (señal 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 “señal a evaluar” toma “valor 1”, se ejecuta
“accion_1”, pasando luego el programa a la
linea siguiente de “end”, continuando luego el
programa.
 Si “señal a evaluar” toma “valor 2”, se ejecuta
“accion_2” y así sucesivamente.
Ing. Julio Gonzalez Prado
CASE
(EJEMPLO)
case control is
when “00” => d <= a;
when “01” => d <= b;
when “10” => d <= c;
when others => d <= ‘0’;
end case;
Ing. Julio Gonzalez Prado
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 operación mientras una condición 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;
Ing. Julio Gonzalez Prado
EJEMPLO 2
process (a)
variable i: integer := 0;
begin
ciclo2: while i < 7 loop
entrada (i) <= ‘0’;
i = i + 1;
end loop;
end process;
Ing. Julio Gonzalez Prado
SENTENCIA EXIT
 Se usa dentro del loop y permite salir del lazo
si se alcanza una condición fijada por
nosotros.
 Su verdadera utilidad se encuentra si se
diseña controladores de memoria.
Ing. Julio Gonzalez Prado
EJEMPLO
process (a)
begin
ciclo1:for i in 7 downto 0
loop
if a’length < i then exit ciclo1;
entrada(i) <= ‘0’;
end if;
end loop;
end process;
Ing. Julio Gonzalez Prado
SENTENCIA NEXT
 Se encuentra también dentro de un ciclo loop
y sirve para saltarnos una ó más de las
ejecuciones programadas.
Ing. Julio Gonzalez Prado
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 condición
especial no pase nada, es decir, que ninguna
señal ó variable cambie y que el programa
siga su curso habitual. Su comportamiento
dentro de un loop es similar al de la
sentencia next.

Más contenido relacionado

La actualidad más candente

Ejercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadoresEjercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadores
Bertha Vega
 
Presentacion pwm
Presentacion pwmPresentacion pwm
Presentacion pwm
Mario Funes
 
Convertidor digital analógico
Convertidor digital   analógicoConvertidor digital   analógico
Convertidor digital analógico
AnaCegarra
 
Entradas senoidales rectificación a media onda y rectificación de onda completa
Entradas senoidales  rectificación a media onda y rectificación de onda completaEntradas senoidales  rectificación a media onda y rectificación de onda completa
Entradas senoidales rectificación a media onda y rectificación de onda completa
Geison Chavez
 
Estabilidad de sistemas discretos
Estabilidad de sistemas discretosEstabilidad de sistemas discretos
Estabilidad de sistemas discretos
ingangelp
 

La actualidad más candente (20)

Multiplexores y demultiplexores en electrónica digital
Multiplexores y demultiplexores en electrónica digitalMultiplexores y demultiplexores en electrónica digital
Multiplexores y demultiplexores en electrónica digital
 
Ejercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadoresEjercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadores
 
Codigos de Linea - Telecomunicaciones III
Codigos de Linea - Telecomunicaciones IIICodigos de Linea - Telecomunicaciones III
Codigos de Linea - Telecomunicaciones III
 
Presentacion pwm
Presentacion pwmPresentacion pwm
Presentacion pwm
 
Analisis de señales
Analisis de señalesAnalisis de señales
Analisis de señales
 
Representacion y orientacion de un robot
Representacion y orientacion de un robotRepresentacion y orientacion de un robot
Representacion y orientacion de un robot
 
Convertidor digital analógico
Convertidor digital   analógicoConvertidor digital   analógico
Convertidor digital analógico
 
Filtros
FiltrosFiltros
Filtros
 
Mod demod am_2014_1(1)
Mod demod am_2014_1(1)Mod demod am_2014_1(1)
Mod demod am_2014_1(1)
 
Filtro de bessel
Filtro de besselFiltro de bessel
Filtro de bessel
 
Entradas senoidales rectificación a media onda y rectificación de onda completa
Entradas senoidales  rectificación a media onda y rectificación de onda completaEntradas senoidales  rectificación a media onda y rectificación de onda completa
Entradas senoidales rectificación a media onda y rectificación de onda completa
 
Dsp7
Dsp7Dsp7
Dsp7
 
Amplificadores de potencia
Amplificadores de potenciaAmplificadores de potencia
Amplificadores de potencia
 
Estabilidad de sistemas discretos
Estabilidad de sistemas discretosEstabilidad de sistemas discretos
Estabilidad de sistemas discretos
 
Ejercicios resueltos y_propuestos_adc_da
Ejercicios resueltos y_propuestos_adc_daEjercicios resueltos y_propuestos_adc_da
Ejercicios resueltos y_propuestos_adc_da
 
Modulacion fsk
Modulacion fskModulacion fsk
Modulacion fsk
 
Sistema fsk
Sistema fskSistema fsk
Sistema fsk
 
Señales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABSeñales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLAB
 
Amplitud modulada am
Amplitud modulada amAmplitud modulada am
Amplitud modulada am
 
Diseño de antenas
Diseño de antenasDiseño de antenas
Diseño de antenas
 

Destacado

BPS Architektur- und TGA-Planung mit BIM
BPS Architektur- und TGA-Planung mit BIMBPS Architektur- und TGA-Planung mit BIM
BPS Architektur- und TGA-Planung mit BIM
Dmitry Dyuba
 
GPMS TRANSPORTAL -DATA ANALYTICS PLATFORM FOR M & E 2016
GPMS TRANSPORTAL -DATA ANALYTICS PLATFORM FOR M & E 2016GPMS TRANSPORTAL -DATA ANALYTICS PLATFORM FOR M & E 2016
GPMS TRANSPORTAL -DATA ANALYTICS PLATFORM FOR M & E 2016
Raja Seevan
 
P+ L E I N N O V A C IÓ N
P+ L  E  I N N O V A C IÓ NP+ L  E  I N N O V A C IÓ N
P+ L E I N N O V A C IÓ N
Maria Morales
 

Destacado (20)

Manuel Mojica
Manuel MojicaManuel Mojica
Manuel Mojica
 
Tumbo triptico
Tumbo tripticoTumbo triptico
Tumbo triptico
 
BPS Architektur- und TGA-Planung mit BIM
BPS Architektur- und TGA-Planung mit BIMBPS Architektur- und TGA-Planung mit BIM
BPS Architektur- und TGA-Planung mit BIM
 
Kharay ho-kar-Peshab-Na-Karo
Kharay ho-kar-Peshab-Na-KaroKharay ho-kar-Peshab-Na-Karo
Kharay ho-kar-Peshab-Na-Karo
 
GPMS TRANSPORTAL -DATA ANALYTICS PLATFORM FOR M & E 2016
GPMS TRANSPORTAL -DATA ANALYTICS PLATFORM FOR M & E 2016GPMS TRANSPORTAL -DATA ANALYTICS PLATFORM FOR M & E 2016
GPMS TRANSPORTAL -DATA ANALYTICS PLATFORM FOR M & E 2016
 
Ii exámen, i trimestre 2012 7º
Ii exámen, i trimestre 2012 7ºIi exámen, i trimestre 2012 7º
Ii exámen, i trimestre 2012 7º
 
Business Plan for Startups
Business Plan for StartupsBusiness Plan for Startups
Business Plan for Startups
 
Converis presentation: ORCID and CRIS webinar December 2014
Converis presentation: ORCID and CRIS webinar December 2014Converis presentation: ORCID and CRIS webinar December 2014
Converis presentation: ORCID and CRIS webinar December 2014
 
Guadalajara Emprendedores
Guadalajara EmprendedoresGuadalajara Emprendedores
Guadalajara Emprendedores
 
Soro em pó
Soro em póSoro em pó
Soro em pó
 
Carbures1
Carbures1Carbures1
Carbures1
 
Evaluación clinica en psiquiatría pac
Evaluación clinica en psiquiatría pacEvaluación clinica en psiquiatría pac
Evaluación clinica en psiquiatría pac
 
Effortless Interfaces for Appified TV
Effortless Interfaces for Appified TVEffortless Interfaces for Appified TV
Effortless Interfaces for Appified TV
 
Fertilizer industry
Fertilizer industryFertilizer industry
Fertilizer industry
 
Marco Nannini - CowoCamp13
Marco Nannini - CowoCamp13Marco Nannini - CowoCamp13
Marco Nannini - CowoCamp13
 
Got A Good Idea? Lets Make It Great!
Got A Good Idea? Lets Make It Great!Got A Good Idea? Lets Make It Great!
Got A Good Idea? Lets Make It Great!
 
Presentación exposición escenarios urbanos cotidianos
Presentación exposición escenarios urbanos cotidianosPresentación exposición escenarios urbanos cotidianos
Presentación exposición escenarios urbanos cotidianos
 
TPCR- A Critical Appriasal
TPCR- A  Critical AppriasalTPCR- A  Critical Appriasal
TPCR- A Critical Appriasal
 
Direccion gestion-proyectos-desarrolla-competencias-project-management-27276
Direccion gestion-proyectos-desarrolla-competencias-project-management-27276Direccion gestion-proyectos-desarrolla-competencias-project-management-27276
Direccion gestion-proyectos-desarrolla-competencias-project-management-27276
 
P+ L E I N N O V A C IÓ N
P+ L  E  I N N O V A C IÓ NP+ L  E  I N N O V A C IÓ N
P+ L E I N N O V A C IÓ N
 

Similar a 4.v h d l

Conceptos basicos de_vhdl
Conceptos basicos de_vhdlConceptos basicos de_vhdl
Conceptos basicos de_vhdl
Angie Cardenas
 
Herramientas de diseño para sistemas embebidos
Herramientas de diseño para sistemas embebidosHerramientas de diseño para sistemas embebidos
Herramientas de diseño para sistemas embebidos
Luisf Muñoz
 
Unidad 4 lenguaje hdl pe ISC
Unidad 4 lenguaje hdl pe ISCUnidad 4 lenguaje hdl pe ISC
Unidad 4 lenguaje hdl pe ISC
Jhonatan Pat
 
FaMAF - Clase Vhdl LeccióN 02
FaMAF - Clase Vhdl LeccióN 02FaMAF - Clase Vhdl LeccióN 02
FaMAF - Clase Vhdl LeccióN 02
guest4b46762
 

Similar a 4.v h d l (20)

IDLconVHDL2010.pdf
IDLconVHDL2010.pdfIDLconVHDL2010.pdf
IDLconVHDL2010.pdf
 
Unidad3
Unidad3Unidad3
Unidad3
 
Conceptos basicos de_vhdl
Conceptos basicos de_vhdlConceptos basicos de_vhdl
Conceptos basicos de_vhdl
 
Electrónica digital: introducción al lenguaje de descripción hardware VHDL
Electrónica digital: introducción al lenguaje de descripción hardware VHDLElectrónica digital: introducción al lenguaje de descripción hardware VHDL
Electrónica digital: introducción al lenguaje de descripción hardware VHDL
 
Electrónica digital: lógica programable VHDL parte 2
Electrónica digital: lógica programable VHDL parte 2Electrónica digital: lógica programable VHDL parte 2
Electrónica digital: lógica programable VHDL parte 2
 
Introduccción a VHDL por https://vhdl.es
Introduccción a VHDL por https://vhdl.esIntroduccción a VHDL por https://vhdl.es
Introduccción a VHDL por https://vhdl.es
 
Electrónica digital: Lógica programable VHDL
Electrónica digital: Lógica programable VHDL Electrónica digital: Lógica programable VHDL
Electrónica digital: Lógica programable VHDL
 
VHDL - Presentacion Brayan.pptx
VHDL - Presentacion Brayan.pptxVHDL - Presentacion Brayan.pptx
VHDL - Presentacion Brayan.pptx
 
Moviles
MovilesMoviles
Moviles
 
Moviles
MovilesMoviles
Moviles
 
Electrónica digital: Lenguaje descripción de hardware VHDL
Electrónica digital: Lenguaje descripción de hardware VHDLElectrónica digital: Lenguaje descripción de hardware VHDL
Electrónica digital: Lenguaje descripción de hardware VHDL
 
Herramientas de diseño para sistemas embebidos
Herramientas de diseño para sistemas embebidosHerramientas de diseño para sistemas embebidos
Herramientas de diseño para sistemas embebidos
 
Unidad 4 lenguaje hdl pe ISC
Unidad 4 lenguaje hdl pe ISCUnidad 4 lenguaje hdl pe ISC
Unidad 4 lenguaje hdl pe ISC
 
Unidad 4 lenguaje hdl pe RUBI
Unidad 4 lenguaje hdl pe RUBIUnidad 4 lenguaje hdl pe RUBI
Unidad 4 lenguaje hdl pe RUBI
 
Cap iv.-lógica-programable-ing.-alcides-araujo-pacheco
Cap iv.-lógica-programable-ing.-alcides-araujo-pachecoCap iv.-lógica-programable-ing.-alcides-araujo-pacheco
Cap iv.-lógica-programable-ing.-alcides-araujo-pacheco
 
Unidad 4 lenguaje hdl ISC J3 - A JP
Unidad 4 lenguaje hdl ISC J3 - A JPUnidad 4 lenguaje hdl ISC J3 - A JP
Unidad 4 lenguaje hdl ISC J3 - A JP
 
Pascal
PascalPascal
Pascal
 
Curso de vhdl
Curso de vhdl Curso de vhdl
Curso de vhdl
 
FaMAF - Clase Vhdl LeccióN 02
FaMAF - Clase Vhdl LeccióN 02FaMAF - Clase Vhdl LeccióN 02
FaMAF - Clase Vhdl LeccióN 02
 
Int. programacion
Int. programacionInt. programacion
Int. programacion
 

Último

Último (6)

EL JUEGO DE LA VIDA PRESENTACION DEL EVANGELIO
EL JUEGO DE LA VIDA PRESENTACION DEL EVANGELIOEL JUEGO DE LA VIDA PRESENTACION DEL EVANGELIO
EL JUEGO DE LA VIDA PRESENTACION DEL EVANGELIO
 
Catálogo de Oriflame Costa Rica Junio 2024
Catálogo de Oriflame Costa Rica Junio 2024Catálogo de Oriflame Costa Rica Junio 2024
Catálogo de Oriflame Costa Rica Junio 2024
 
Instrucciones en español para el juego de mesa coup
Instrucciones en español para el juego de mesa coupInstrucciones en español para el juego de mesa coup
Instrucciones en español para el juego de mesa coup
 
Catálogo de Oriflame Costa Rica Mayo 2024
Catálogo de Oriflame Costa Rica Mayo 2024Catálogo de Oriflame Costa Rica Mayo 2024
Catálogo de Oriflame Costa Rica Mayo 2024
 
FALUN DAFA un estilo de vida diferente.pdf
FALUN DAFA un estilo de vida diferente.pdfFALUN DAFA un estilo de vida diferente.pdf
FALUN DAFA un estilo de vida diferente.pdf
 
Un tema católica sobre ¿Qué es la liturgia?
Un tema católica sobre ¿Qué es la liturgia?Un tema católica sobre ¿Qué es la liturgia?
Un tema católica sobre ¿Qué es la liturgia?
 

4.v h d l

  • 1. Ing. Julio Gonzalez Prado V H D L SOFTWARE PARA DISEÑO DE CIRCUITOS INTEGRADOS
  • 2. Ing. Julio Gonzalez Prado  V H D L: V HSIC H ARDWARE D ESCRIPTION L ANGUAGE (LENGUAJE DE DESCRIPCION DE HARDWARE VHSIC)
  • 3. Ing. Julio Gonzalez Prado  VHSIC: V ERY H IGH S PEED I NTEGRATED C IRCUITS (CIRCUITOS INTEGRADOS DE MUY ALTA VELOCIDAD)
  • 4. Ing. Julio Gonzalez Prado  Por lo tanto, el lenguaje VHDL es un lenguaje que se usa para describir el hardware de circuito integrados con aplicaciones en alta velocidad.
  • 5. Ing. Julio Gonzalez Prado  Es un lenguaje que tiene elementos del C++ y el Pascal que se emplea básicamente para realizar implementación 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 implementación circuital.
  • 6. Ing. Julio Gonzalez Prado ORIGENES  El VHDL nació en el año 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 diseño y optimizar el manejo de la información que se genera.
  • 7. Ing. Julio Gonzalez Prado 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 estándar std 1076 – 1987)
  • 8. Ing. Julio Gonzalez Prado ORIGENES  Como esta versión demostró algunas carencias relacionadas con la síntesis de circuitos, debido principalmente a la evolución de las herramientas de diseño que usaban el VHDL y la rápida evolución de las tecnologías para implementación de los Circuitos Integrados, se planteó una segunda versión en 1993 (que es la vigente) , mediante el estándar IEEE std 1076- 1993,conocido como VHDL’93.
  • 9. Ing. Julio Gonzalez Prado ORIGENES  En esencia la versión de 1987 es un subconjunto de la versión de 1993, de modo que cualquier programa de la versión antigua puede ser procesada por la versión mas reciente.  Una excepción de esta norma es lo relacionado con la declaración y el uso de ficheros.
  • 10. Ing. Julio Gonzalez Prado AMBIENTE DE DESARROLLO  El diseño con lenguaje VHDL se basa en el concepto de DISEÑO CON HERRAMIENTAS CAD – EDA.
  • 11. Ing. Julio Gonzalez Prado AMBIENTE DE DESARROLLO  El proceso CAD (Computer Aided Design), diseño asistido por computador es un proceso de diseño que emplea técnicas graficas de computadora apoyadas en paquetes de software para ayudar a los diseñadores.
  • 12. Ing. Julio Gonzalez Prado AMBIENTE DE DESARROLLO  La aplicación de las herramientas CAD en el diseño de circuitos y sistemas electrónicos es fundamental ya que permite la adición de interfases graficas y simuladores.
  • 13. Ing. Julio Gonzalez Prado ESCALAS DE INTEGRACION  Los procesos de integración implican la continua reducción del tamaño de los componentes, así como el incremento del numero de compuertas en cada integrado.
  • 14. Ing. Julio Gonzalez Prado 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.
  • 15. 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 diseño.  Mayor costo de fabricación.
  • 16. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  Es un lenguaje concurrente aunque permite definir dominios en los cuales las acciones son del tipo secuencial.  Permite diseños modulares y jerárquicos, es útil para emplear con la metodología “Top Down”.  Permite simular el diseño y generar formas de onda.
  • 17. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  Es un lenguaje que debe ser compilado antes de ser simulado.
  • 18. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  Soporta distintos niveles de descripción:  FUNCIONAL: modelamiento en alto nivel.  ESTRUCTURAL: la descripción se realiza mediante interconexión de componentes.  FISICO: se realiza la implementación real del circuito.
  • 19. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  A partir del modelo se puede sintetizar el Hardware a nivel de compuertas con herramientas de síntesis: ALTERA : Max + Plus II CADENCE : Synergy CYPRESS : Warp II, III MENTOR GRAPHICS : Autologic SYNOPSYS : Design Compiler VIEWLOGIC : ViewSynthesis
  • 20. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  VHDL no distingue las mayúsculas de las minúsculas: CASA, casa son iguales.  Las variables deben empezar con una letra, no deben contener ni espacios ni símbolos como &, %, $, #, ¡. Su longitud no esta limitada. No pueden terminar en _ ó _ _
  • 21. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  OBJETO: es un elemento que tiene asignado un valor de un tipo determinado.  Según sea el tipo de dato, el objeto poseerá un conjunto de propiedades y se le podrá aplicar un conjunto de operaciones.
  • 22. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  IDENTIFICADORES: Son un conjunto de caracteres dispuestos de una forma adecuada y siguiendo unas normas propias del lenguaje, para dar un nombre a los elementos en VHDL.
  • 23. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  Los identificadores deben empezar con un carácter alfabético, no pudiendo terminar en _  No esta fijada la extensión del identificador, pero no debe ser extremadamente larga.  Los identificadores pueden tener caracteres numéricos (0 al 9) pero estos no deben aparecer en el principio.  No puede usarse como identificador una PALABRA RESERVADA.
  • 24. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  PALABRAS RESERVADAS: Son un conjunto de identificadores que tienen un significado especifico en VHDL.  Son palabras empleadas dentro del lenguaje para realizar un diseño.  No pueden ser empleadas como identificadores definidos por el usuario.
  • 25. Ing. Julio Gonzalez Prado PALABRAS RESERVADAS abs acces after alias all and architecture array asser attribute begin block body buffer bus case component configuration constant downto else disconnect elsif end entity exit function generate file for generic guarded inout if in is label library linkage loop map mod nand new next
  • 26. Ing. Julio Gonzalez Prado PALABRAS RESERVADAS nor not null of on open or others out package port procedure process range record register rem report Return select severity signal subtype then to transport type units until use variable walt when while with xor
  • 27. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  SIMBOLOS ESPECIALES: Son símbolos que se usan para representar funciones diferentes y especificas.  Los símbolos especiales son: + - / ( ) . , : ; & ‘ < > = | # <= => := _ _
  • 28. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  NUMEROS: Se considera que cualquier numero se encuentra en base 10.  Se admite notación científica para números en coma flotante.  Para números en otras bases: 2#11000100# 16#C4#
  • 29. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  TIPO DE DATOS: Delimita los valores que puede tener un objeto y las operaciones que se pueden realizar con él.
  • 30. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  TIPOS ESCALARES: Son tipos que contienen algún tipo de magnitud.  Pueden ser: Enteros, Reales, Físicos y Enumerados.
  • 31. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  ENTEROS: Son datos cuyo contenido constituye un valor numérico entero.  Se definen por la palabra reservada range que indica que esta comprendido entre un cierto intervalo especificando sus limites.  Ejemplo: type byte is range 0 to 255; type index is range 7 downto 0; type integer is range -2147483648 to 2147483647;
  • 32. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  REALES: Son los que define un numero real.  type nivel is range 0.0 to 5.0; type real is range -1,0E38 to 1,0E38;
  • 33. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  FISICOS: Son datos que se corresponden con magnitudes físicas, es decir, tienen valor y unidades.  type long is range 0 to 1,0e9 units um; mm=1000um; m=1000mm; end units;
  • 34. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  ENUMERADOS: Son datos que pueden tomar cualquier valor especificado en un conjunto finito ó lista.  Este conjunto se indica mediante una lista encerrada entre paréntesis de elementos separados por comas.  type nivel _ lógico is (alto,bajo,Z); type bit is (‘0’, ‘1’);
  • 35. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  TIPOS COMPUESTOS  MATRICES: Son una colección de elementos del mismo tipo a los que se accede mediante un índice.  Pueden ser de una dimensión ó de varias dimensiones.  Pueden estar definidas para un rango ó el índice puede ser libre teniendo la matriz una dimensión teórica infinita.
  • 36. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  MATRICES: 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;
  • 37. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  REGISTROS: Es el equivalente al tipo registro de otros lenguajes.  type alumno is record nombre: string; curso: integer; end record;
  • 38. Ing. Julio Gonzalez Prado CARACTERISTICAS DEL VHDL  ATRIBUTOS: Son condiciones ó características que pueden tomar las señales ó variables.
  • 39. Ing. Julio Gonzalez Prado ATRIBUTOS  Suponiendo que “t” es un tipo enumerado, entero, flotante ó fisico se tienen:  t’left : limite izquierdo del tipo “t”  t’right : limite derecho del tipo “t”  t’low : limite inferior del tipo “t”  t’high: limite superior del tipo “t”
  • 40. Ing. Julio Gonzalez Prado ATRIBUTOS  Suponiendo un tipo “t”, un miembro “x” de este tipo y un entero “N” :  t’pos(x): posicion “x” dentro del tipo “t”  t’val(N): elemento (N) del tipo “t”  t’leftof(x): elemento que esta a la izquierda de “x” en “t”  t’rightof(x): elemento que esta a la derecha de “x” en “t”  t’pred(x): elemento que esta delante de “x” en “t”.  t’succ(x): elemento que esta detrás de “x” en “t”
  • 41. 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:  a’left(N): limite izquierdo del rango de dimension N de a.  a’right(N):limite derecho del rango de dimension N de a.  a’low(N): limite inferior del rango de dimension N de a.
  • 42. Ing. Julio Gonzalez Prado ATRIBUTOS  a’high(N): limite superior del rango de dimension N de a.  a’range(N): Rango del indice de dimension N de a.  a’length(N): Longitud del indice de dimension N de a.
  • 43. Ing. Julio Gonzalez Prado ATRIBUTOS  Suponiendo que “s” es una señal:  s’event: Devuelve “V” si se ha producido un cambio en la señal “s”.  s’stable (tiempo): Devuelve V se la señal estuvo estable durante el ultimo periodo de “tiempo”.  El atributo s’event es util en la definicion del circuitos secuenciales para detectar el flanco de subida o bajada de la señal de reloj.
  • 44. 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.
  • 45. 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 demás sentencias.
  • 46. Ing. Julio Gonzalez Prado SINTAXIS  MODO: Describe la dirección en la cual la información es transmitida a través del puerto.  Puede ser: Modo IN Modo OUT Modo BUFFER Modo INOUT
  • 47. Ing. Julio Gonzalez Prado SINTAXIS  MODO IN: Es cuando por el puerto la información solo puede entrar a la entidad.  Se usa generalmente en relojes, entradas de control (load, reset, enable) y datos de entrada unidireccionales.
  • 48. Ing. Julio Gonzalez Prado SINTAXIS  MODO OUT: Es cuando la información en el puerto fluye hacia fuera de la entidad.  Este modo no permite realimentación, es decir, el compilador no puede leer este dato.
  • 49. Ing. Julio Gonzalez Prado SINTAXIS  MODO BUFER: Es usado para una realimentación interna (se usa como un driver dentro de la entidad)  Es similar al MODO OUT pero permite realimentación.  No es un puerto BIDIRECCIONAL y solo puede ser conectado directamente a una señal interna ó a un puerto de modo buffer de otra entidad.
  • 50. Ing. Julio Gonzalez Prado SINTAXIS  MODO INOUT: Es usado para señales bidireccionales.  Permite realimentación interna.  Puede reemplazar a cualquiera de los modos anteriores.
  • 51. Ing. Julio Gonzalez Prado SINTAXIS  TIPO: Son las diferentes clases de valores que puede tomar la señal.  Pueden haber tantos tipos como se quiera, ya que en VHDL se pueden definir por el usuario.  También existen los tipos de forma estándar y los creados por librerías normalizadas.  La norma internacional IEEE 1076/93 define 4 tipos nativos: BOOLEAN, BIT, BIT_VECTOR, INTEGER.
  • 52. 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 números enteros.
  • 53. 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.
  • 54. Ing. Julio Gonzalez Prado SINTAXIS  ARCHIVOS DE CABECERA: Se colocan al inicio de la entidad y permiten al programa cargar diversas librerías y archivos que contienen tipos y definiciones que serán usadas por el programa.  library ieee;  use ieee.std_logic_1164.all;  use work.std_arith.all;
  • 55. Ing. Julio Gonzalez Prado library (biblioteca)  Es un lugar al que se tiene acceso para utilizar las unidades de diseño predeterminadas por el fabricante permitiendo agilizar el diseño.  En VHDL existen dos bibliotecas: ieee y work.
  • 56. Ing. Julio Gonzalez Prado library (biblioteca)  La biblioteca work permite almacenar los programas que el usuario va generando.  Cuando el diseño 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 diseño.
  • 57. Ing. Julio Gonzalez Prado 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 = > <
  • 58. Ing. Julio Gonzalez Prado SINTAXIS  El programa en VHDL esta formado de dos partes principales:
  • 59. Ing. Julio Gonzalez Prado 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.
  • 60. Ing. Julio Gonzalez Prado SINTAXIS Su estructura es: entity nomb_ent is [generic (lista de parametros)]; ports( lista de puertos); end nomb_ent;
  • 61. Ing. Julio Gonzalez Prado EJEMPLO: Entidad para un comparador de igualdad de dos números de 4 bits. a b COMP IGUAL
  • 62. Ing. Julio Gonzalez Prado EJEMPLO: Entidad para un comparador de igualdad de dos números de 4 bits. entity comp is port ( a,b: in bit_vector(3 downto 0); igual: out bit); end comp;
  • 63. Ing. Julio Gonzalez Prado 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.
  • 64. Ing. Julio Gonzalez Prado SINTAXIS  Su estructura es: architecture nomb_arch of nomb_ent is [declaraciones] begin sentencias concurrentes; end nomb_arch;
  • 65. Ing. Julio Gonzalez Prado ESTILOS DE ARQUITECTURA  Son las formas de descripción que se utilizan dependiendo cada uno de su propio nivel de abstracción.
  • 66. Ing. Julio Gonzalez Prado ESTILO BEHAVIORAL (COMPORTAMIENTO)  Este estilo se caracteriza por incluir sentencias y ordenes típicas de un lenguaje de programación: 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.
  • 67. Ing. Julio Gonzalez Prado 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;
  • 68. Ing. Julio Gonzalez Prado ESTILO DATAFLOW (FLUJO DE DATOS)  Describe como la información será transmitida usando señales a través 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.
  • 69. Ing. Julio Gonzalez Prado DIAGRAMA CIRCUITAL IGUAL U4 B(3) A(3) B(2) A(2) B(1) A(1) B(0) A(0) U3 U2 U1 U0
  • 70. Ing. Julio Gonzalez Prado 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;
  • 71. Ing. Julio Gonzalez Prado ESTILO STRUCTURAL (ESTRUCTURAL)  Describe detalladamente como se conectan y evalúan los componentes con señales.  Es el estilo mas difícil de usar ya que detalla las conexiones y es una forma de descripción circuital del dispositivo.
  • 72. Ing. Julio Gonzalez Prado ESTILO STRUCTURAL (ESTRUCTURAL)  Su utilidad se presenta cuando se desea crear una estructura grande y deseamos descomponerla en partes para manejarla mejor y hacer una simulación de cada parte.  Suele requerir el uso de señales auxiliares, paquetes y librerías de accesorios se deben declarar al comienzo de la entidad.
  • 73. Ing. Julio Gonzalez Prado 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;
  • 74. 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;
  • 75. Ing. Julio Gonzalez Prado VARIABLES  Son elementos cuyo valor puede ser asignado en cualquier instante y también con un valor inicial.  Ejemplos: variable alfa:natural:= 1;
  • 76. Ing. Julio Gonzalez Prado SEÑALES  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.
  • 77. Ing. Julio Gonzalez Prado SEÑALES  Pueden ser de tres tipos:  NORMAL: no se pueden desconectar;  BUS: tiene un valor por defecto cuando están desconectadas;  REGISTER: no tienen un valor por defecto pero conservan el ultimo valor que se escribió.
  • 78. Ing. Julio Gonzalez Prado SIGNIFICADO FISICO  Las VARIABLES son elementos abstractos, es decir, solo tiene significado para el lenguaje.  Las SEÑALES tienen significado físico: representan las conexiones entre elementos del circuito.
  • 79. Ing. Julio Gonzalez Prado DIFERENCIA  La diferencia principal es que una asignación a una variable se realiza en forma INMEDIATA, o sea toma el valor que se le asigna en el momento de la asignación.  En cambio una señal no recibe el valor que se le ha asignado HASTA EL SIGUIENTE PASO DE SIMULACION.
  • 80. Ing. Julio Gonzalez Prado SENTENCIA PROCESS  Es una instrucción típica de VHDL, se usa en el estilo BEHAVIORAL.  Es la forma que tiene el VHDL para incluir las sentencias secuenciales.  Para el compilador, todo el PROCESS se considera solo un paso de simulación.  LISTA SENSIBLE: es la relación de las señales que deben cambiar para que se ejecute el process.
  • 81. Ing. Julio Gonzalez Prado PROCESS  Sintaxis: [etiqueta] process (lista sensible) [zona de declaración] begin sentencias secuenciales; end process [etiqueta];
  • 82. Ing. Julio Gonzalez Prado FORMA 1: process (lista sensible) begin sentencias secuenciales; end process; Se continua ejecutando el process mientras alguna e las señales de la lista sensible continúe cambiando. Al llegar a end se suspende el proceso y se realiza la asignacion de señal.
  • 83. Ing. Julio Gonzalez Prado FORMA 2: process begin sentencias secuenciales; wait; sentencias secuenciales; wait; sentencias secuenciales; end process;
  • 84. Ing. Julio Gonzalez Prado FORMA 2:  No tiene lista sensible.  Usa la palabra wait.  Tiene la forma de lazo infinito.  El proceso se suspende cada vez que se encuentra un wait, para realizar la asignación a señal.
  • 85. Ing. Julio Gonzalez Prado SENTENCIA WAIT  Suspende el proceso y realiza las asignaciones respectivas a las señales.  Sintaxis: wait on (señales); wait until (condición); wait for (tiempo);
  • 86. Ing. Julio Gonzalez Prado SENTENCIA IF  Se usa con then – else ejecutar un conjunto de sentencias según la evaluación de una condición ó conjunto de condiciones, cuyo resultado puede ser verdadero ó falso.
  • 87. Ing. Julio Gonzalez Prado SENTENCIA IF  Sintaxis: If (condición) then sentencia 1; else sentencia 2; end if;
  • 88. Ing. Julio Gonzalez Prado SENTENCIA IF  Si la condición es VERDADERA, se ejecuta la sentencia 1.  Si la condición es FALSA, se ejecuta la sentencia 2.
  • 89. Ing. Julio Gonzalez Prado ELSIF  Es una extensión de la sentencia if-then que permite incluir una segunda condición  Sintaxis: If (condicion1) then sentencia 1; elsif (condicion2) then sentencia 2; else sentencia 3; end if;
  • 90. Ing. Julio Gonzalez Prado ELSIF  Funcionamiento: Si condición 1 es verdadera, se ejecuta la sentencia 1, Si la condición 1 es falsa, se evalúa la condición 2, Si la condición 2 es verdadera, se ejecuta la sentencia 2, Si la condición 2 es falsa, se ejecuta la sentencia 3.
  • 91. Ing. Julio Gonzalez Prado ELSIF (EJEMPLO) process (e,s) begin if (e = ‘0’) then c <= ‘0’; elsif (s = ‘0’) then c <= a; else c <= b; end if;
  • 92. Ing. Julio Gonzalez Prado SENTENCIA CASE  Es una sentencia que permite ejecutar un conjunto de opciones de acuerdo a la señal de selección.  Sintaxis: case (señal a evaluar) is when (valor1) => accion_1; when (valor2) => accion_2; when (valor n) => accion_n; end case;
  • 93. Ing. Julio Gonzalez Prado SENTENCIA CASE  Funcionamiento:  Si “señal a evaluar” toma “valor 1”, se ejecuta “accion_1”, pasando luego el programa a la linea siguiente de “end”, continuando luego el programa.  Si “señal a evaluar” toma “valor 2”, se ejecuta “accion_2” y así sucesivamente.
  • 94. Ing. Julio Gonzalez Prado CASE (EJEMPLO) case control is when “00” => d <= a; when “01” => d <= b; when “10” => d <= c; when others => d <= ‘0’; end case;
  • 95. Ing. Julio Gonzalez Prado 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 operación mientras una condición de control local sea cierta.
  • 96. Ing. Julio Gonzalez Prado EJEMPLO 1 process(a) begin ciclo1: for i in 7 downto 0 loop entrada(i) <= ‘1’ end loop; end process;
  • 97. Ing. Julio Gonzalez Prado EJEMPLO 2 process (a) variable i: integer := 0; begin ciclo2: while i < 7 loop entrada (i) <= ‘0’; i = i + 1; end loop; end process;
  • 98. Ing. Julio Gonzalez Prado SENTENCIA EXIT  Se usa dentro del loop y permite salir del lazo si se alcanza una condición fijada por nosotros.  Su verdadera utilidad se encuentra si se diseña controladores de memoria.
  • 99. Ing. Julio Gonzalez Prado EJEMPLO process (a) begin ciclo1:for i in 7 downto 0 loop if a’length < i then exit ciclo1; entrada(i) <= ‘0’; end if; end loop; end process;
  • 100. Ing. Julio Gonzalez Prado SENTENCIA NEXT  Se encuentra también dentro de un ciclo loop y sirve para saltarnos una ó más de las ejecuciones programadas.
  • 101. Ing. Julio Gonzalez Prado 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;
  • 102. Ing. Julio Gonzalez Prado SENTENCIA NULL  Se utiliza para que dada una condición especial no pase nada, es decir, que ninguna señal ó variable cambie y que el programa siga su curso habitual. Su comportamiento dentro de un loop es similar al de la sentencia next.