Programacion VHDL 1.4
-
Upload
raul-alberto-lizarraga-cuevas -
Category
Documents
-
view
53 -
download
0
Transcript of Programacion VHDL 1.4
DISEÑO DIGITAL CON VHDL
Ingeniería ElectrónicaETF-1015
Unidad 1Programación VHDL
1.4 Ejemplos de Declaraciones Secuenciales1.4.1 Ejemplos de diagramas de máquinas 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 SubprogramasPROCESOS (Process)
--Ejemplo del uso de process
library ieee;use ieee.std_logic_1164.all ;entity comparador isport (a,b: in bit_vector (1 downto0);
c: out bit);end comparador;
--continuaciónarchitecture funcional of comparador isbegincompara: process (a,b)begin
if a = b thenc<= ‘1’;
elsec<= ‘0’;
end if ;end process compara;end funcional;
• El lenguaje de programación VHDL, se puede estructurar mediante el uso de subprogramas
• Un subprograma, no es más que una función o procedimiento que contiene una porción de código.
1.5 Funciones y Subprogramas1.5.2 Subprogramas
• Los subprogramas como función (FUNCTION) o procedimiento (PROCEDURE), se definen el la sección declarativa de la arquitectura o completamente fuera de ella, frecuentemente en un paquete de una librería.
1.5 Funciones y Subprogramas1.5.2 Subprogramas
• Características:
– Una función siempre devuelve un valor, mientras que un procedimiento solo puede devolver valores a travez de los parámetros que se le pasen.
– Los argumentos de una función son siempre de entrada, por lo que solo se pueden leer dentro de la función. En el procedimiento pueden ser de entrada, de salida o de entrada y salida, por lo que pueden sufrir modificaciones.
1.5 Funciones y Subprogramas1.5.1 Declaración de Procedimientos y Funciones
• Características:– Una función no tiene efectos colaterales, pero un procedimiento
sí, es decir; en los procedimientos se permite realizar asignaciones sobre señales 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 Subprogramas1.5.1 Declaración de Procedimientos y Funciones
• Características:– La función debe de contener la palabra clave RETURN, seguida
de una expresión puesto que siempre devuelve un valor, mientras que en el procedimiento no es necesario.
– Una función jamás puede tener la instrucción WAIT, mientras que un procedimiento sí.
1.5 Funciones y Subprogramas1.5.1 Declaración de Procedimientos y Funciones
• Sintaxis de la declaración de un procedimiento.
PROCEDURE nombre [(parámetros)]
< declaraciones >BEGIN
[sentencias_serie]END [PROCEDURE] [Nombre_procedimiento];
1.5 Funciones y Subprogramas1.5.1 Declaración de Procedimientos y Funciones
• La declaración de funciones es similar, con la diferencia de que hay que indicar el tipo del valor que devuelve:
FUNCTION nombre_funcíon [(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 Subprogramas1.5.1 Declaración de Procedimientos y Funciones
• Tratamiento de los Parámetros
1.5 Funciones y Subprogramas1.5.1 Declaración de Procedimientos y Funciones
Funciones: Procedimientos:
• Solo es válido el modo IN, por lo que no es necesario especificarlo.
• El parámetro 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 también válidos.
• 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 explícitamente.
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 Subprogramas1.5.1 Declaración de Procedimientos y Funciones
Ejemplo del uso de FUNCTION:
FUNCTION “and” (a,b: logico)RETURN logico ISBEGINCASE 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 Subprogramas1.5.1 Declaración de Procedimientos y Funciones
1.5 Funciones y Subprogramas1.5.4 Bibliotecas (Library)
ENTITY(Entidad)
PACKAGE(Paquete)
CONFIGURATION
(Configuración)
ARCHITECTURE(Arquitectura)
PACKAGE BODY(Cuerpo del paquete)
LIBRARY (Biblioteca)
UnidadesPrimarias
UnidadesSecundarias
Librerías y las Unidades que las componen
1.5 Funciones y Subprogramas1.5.4 Bibliotecas (Library)
Al momento de compilar …
PACKAGE(Paquete)
CONFIGURATION
(Configuración)
ENTITY(Entidad)
ARCHITECTURE(Arquitectura)
PACKAGE BODY(Cuerpo del paquete)
Librería de Diseño
Archivo de Diseño
– Se cuenta con un mecanismo para incorporar elementos de otras bibliotecas y hacerlos visibles al diseño 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 Subprogramas1.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 Subprogramas1.5.4 Bibliotecas (Library)
Bibliotecas pordefault
STANDARD
TEXTIO
WORK
STD
Contienen las unidades del diseño que se esta compilando
Contiene todas las definiciones de tipos y constantes:bit, bit_vector
Contiene tipos y funciones para elacceso de ficheros de texto.
1.5 Funciones y Subprogramas1.5.4 Bibliotecas (Library)
Bibliotecas pordefault.(simulación)
ieee std_logic_1164
std_logic
std_ulogic
• Un paquete es una colección de declaraciones de tipo, constantes, subprogramas, etc.
• Normalmente es con la intención de implementar algún 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 Subprogramas1.5.3 Paquetes (PACKAGE y PACKAGE BODY)
• Declaraciones del “Paquete” y “Cuerpo del paquete”
1.5 Funciones y Subprogramas1.5.4 Bibliotecas (Library)
--Declaraciones de paquete
PACKAGE nombre IS
declaraciones
END [PACKEGE] [nombre]
--Declaración 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 formanUn conjunto.