Está en la página 1de 22

DISEO DIGITAL

CON VHDL
Ingeniera Electrnica
ETF-1015
Unidad 1
Programacin VHDL
1.4 Ejemplos de Declaraciones Secuenciales
1.4.1 Ejemplos de diagramas de mquinas de estado.
PROCESOS (Process).
Son conjuntos de sentencias que se ejecutan secuencilmente
dentro de la arquitectura. Es opcional declararlos con un nombre
para identificarlos.
Sintaxis:
[Nombre_proceso:] PROCESS (lista_de_sensbilidad)
<Declaraciones de objetos locales>
BEGIN
<Sentencias>
END PROCESS [Nombre_proceso]
1.5 Funciones y Subprogramas
1.5 Funciones y Subprogramas
PROCESOS (Process)
--Ejemplo del uso de process
library ieee;
use ieee.std_logic_1164.all;
entity comparador is
port (a,b: in bit_vector (1 downto
0);
c: out bit);
end comparador;
--continuacin
architecture funcional of comparador is
begin
compara: process (a,b)
begin
if a = b then
c<= 1;
else
c<= 0;
end if;
end process compara;
end funcional;
El lenguaje de programacin VHDL, se puede
estructurar mediante el uso de subprogramas
Un subprograma, no es ms que una funcin o
procedimiento que contiene una porcin de cdigo.
1.5 Funciones y Subprogramas
1.5.2 Subprogramas
Los subprogramas como funcin (FUNCTION) o
procedimiento (PROCEDURE), se definen el la seccin
declarativa de la arquitectura o completamente fuera de
ella, frecuentemente en un paquete de una librera.
1.5 Funciones y Subprogramas
1.5.2 Subprogramas
Caractersticas:
Una funcin siempre devuelve un valor, mientras que un
procedimiento solo puede devolver valores a travez de los
parmetros que se le pasen.
Los argumentos de una funcin son siempre de entrada, por lo
que solo se pueden leer dentro de la funcin. En el
procedimiento pueden ser de entrada, de salida o de entrada y
salida, por lo que pueden sufrir modificaciones.
1.5 Funciones y Subprogramas
1.5.1 Declaracin de Procedimientos y Funciones
Caractersticas:
Una funcin no tiene efectos colaterales, pero un procedimiento
s, es decir; en los procedimientos se permite realizar
asignaciones sobre seales declaradas en la arquitectura y, por
tanto, externas al procedimiento.
Las funciones, como devuelven un valor, se usan en
expresiones, mientras que los procedimientos se llaman como
una sentencia secuencial o concurrente.
1.5 Funciones y Subprogramas
1.5.1 Declaracin de Procedimientos y Funciones
Caractersticas:
La funcin debe de contener la palabra clave RETURN, seguida
de una expresin puesto que siempre devuelve un valor,
mientras que en el procedimiento no es necesario.
Una funcin jams puede tener la instruccin WAIT, mientras
que un procedimiento s.
1.5 Funciones y Subprogramas
1.5.1 Declaracin de Procedimientos y Funciones
Sintaxis de la declaracin de un procedimiento.
PROCEDURE nombre [(parmetros)]
< declaraciones >
BEGIN
[sentencias_serie]
END [PROCEDURE] [Nombre_procedimiento];
1.5 Funciones y Subprogramas
1.5.1 Declaracin de Procedimientos y Funciones
La declaracin de funciones es similar, con la diferencia
de que hay que indicar el tipo del valor que devuelve:
FUNCTION nombre_funcon [(id_arg1:tipo_arg1, )]
RETURN tipo_valor_devuelto IS
[declaracion de variables];
BEGIN
[sentencias_serie]
RETURN id_var_dev;
END nombre_funcion;
1.5 Funciones y Subprogramas
1.5.1 Declaracin de Procedimientos y Funciones
Tratamiento de los Parmetros
1.5 Funciones y Subprogramas
1.5.1 Declaracin de Procedimientos y Funciones
Funciones: Procedimientos:
Solo es vlido el modo IN, por
lo que no es necesario
especificarlo.
El parmetro puede ser
CONSTANT o SIGNAL. El
valor por defecto es
CONSTANT; si se desea
SIGNAL, hay que indicarlo
Por defecto el modo es IN,
pero el OUT INOUT son
tambin vlidos.
Por defecto la clase es
CONSTANT si el modo es IN,
o VARIABLE en el resto de
los casos. La clase SIGNAL
hay que declararla
explcitamente.
Ejemplo de PROCEDURE
procedure DISPLAY_MUX
(ALARM_TIME, CURRENT_TIME : in digit;
SHOW_A : in std_ulogic; signal DISPLAY_TIME : out digit) is
begin
if (SHOW_A = '1') then
DISPLAY_TIME <= ALARM_TIME;
else
DISPLAY_TIME <= CURRENT_TIME;
end if;
end DISPLAY_MUX;
1.5 Funciones y Subprogramas
1.5.1 Declaracin de Procedimientos y Funciones
Ejemplo del uso de FUNCTION:
FUNCTION and (a,b: logico)
RETURN logico IS
BEGIN
CASE a&b IS
WHEN 00 =>RETURN 0;
WHEN 01 =>RETURN 0;
WHEN 10 =>RETURN 0;
WHEN 11 =>RETURN 1;
WHEN OTHERS => RETURN X;
END CASE;
END and;
1.5 Funciones y Subprogramas
1.5.1 Declaracin de Procedimientos y Funciones
1.5 Funciones y Subprogramas
1.5.4 Bibliotecas (Library)
ENTITY
(Entidad)
PACKAGE
(Paquete)
CONFIGURATION
(Configuracin)
ARCHITECTURE
(Arquitectura)
PACKAGE BODY
(Cuerpo del paquete)
LIBRARY (Biblioteca)
Unidades
Primarias
Unidades
Secundarias
Libreras y las Unidades que las componen
1.5 Funciones y Subprogramas
1.5.4 Bibliotecas (Library)
Al momento de compilar
PACKAGE
(Paquete)
CONFIGURATION
(Configuracin)
ENTITY
(Entidad)
ARCHITECTURE
(Arquitectura)
PACKAGE BODY
(Cuerpo del paquete)
Librera de Diseo
Archivo de Diseo
Se cuenta con un mecanismo para incorporar elementos de
otras bibliotecas y hacerlos visibles al diseo que se est
llevando a cabo.
LIBRARY componentes; --Hace visible la biblioteca componentes.
USE componentes. logic. and2; --Hace visible la compuerta and2 del
paquete logic al resto del programa.
USE componentes. arith. All; --Hace visible todos los elementos del
paquete arith.
1.5 Funciones y Subprogramas
1.5.4 Bibliotecas (Library)
En cualquier sistema basado en VHDL existen dos bibliotecas que
no necesitan ser invocadas, puesto que son cargadas por defecto:
1.5 Funciones y Subprogramas
1.5.4 Bibliotecas (Library)
Bibliotecas por
default
STANDARD
TEXTIO
WORK
STD
Contienen las unidades del diseo
que se esta compilando
Contiene todas las definiciones
de tipos y constantes:
bit, bit_vector
Contiene tipos y funciones para el
acceso de ficheros de texto.
1.5 Funciones y Subprogramas
1.5.4 Bibliotecas (Library)
Bibliotecas por
default.
(simulacin)
ieee std_logic_1164
std_logic
std_ulogic
Un paquete es una coleccin de declaraciones de tipo, constantes,
subprogramas, etc.
Normalmente es con la intencin de implementar algn servicio en
particular o aislar un grupo de elementos relacionados.
Por lo anterior se pueden hacer visibles las interfaces de algunos
elementos, como funciones o procedimientos
1.5 Funciones y Subprogramas
1.5.3 Paquetes (PACKAGE y PACKAGE BODY)
Declaraciones del Paquete y Cuerpo del paquete
1.5 Funciones y Subprogramas
1.5.4 Bibliotecas (Library)
--Declaraciones de paquete
PACKAGE nombre IS
declaraciones
END [PACKEGE] [nombre]
--Declaracin del cuerpo
PACKAGE BODY nombre IS
Declaraciones
Subprograma
END [ PACKAGE BODY]
[nombre]
El nombre dado al PACKAGE y al PACKAGE BODY,
Debe coincidir para que se entienda que ambos forman
Un conjunto.

También podría gustarte