Programacion VHDL 1.4

22
DISEÑO DIGITAL CON VHDL Ingeniería Electrónica ETF-1015

Transcript of Programacion VHDL 1.4

Page 1: Programacion VHDL 1.4

DISEÑO DIGITAL CON VHDL

Ingeniería ElectrónicaETF-1015

Page 2: Programacion VHDL 1.4

Unidad 1Programación VHDL

Page 3: Programacion VHDL 1.4

1.4 Ejemplos de Declaraciones Secuenciales1.4.1 Ejemplos de diagramas de máquinas de estado.

Page 4: Programacion VHDL 1.4

• 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

Page 5: Programacion VHDL 1.4

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;

Page 6: Programacion VHDL 1.4

• 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

Page 7: Programacion VHDL 1.4

• 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

Page 8: Programacion VHDL 1.4

• 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

Page 9: Programacion VHDL 1.4

• 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

Page 10: Programacion VHDL 1.4

• 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

Page 11: Programacion VHDL 1.4

• 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

Page 12: Programacion VHDL 1.4

• 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

Page 13: Programacion VHDL 1.4

• 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.

Page 14: Programacion VHDL 1.4

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

Page 15: Programacion VHDL 1.4

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

Page 16: Programacion VHDL 1.4

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

Page 17: Programacion VHDL 1.4

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

Page 18: Programacion VHDL 1.4

– 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)

Page 19: Programacion VHDL 1.4

• 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.

Page 20: Programacion VHDL 1.4

1.5 Funciones y Subprogramas1.5.4 Bibliotecas (Library)

Bibliotecas pordefault.(simulación)

ieee std_logic_1164

std_logic

std_ulogic

Page 21: Programacion VHDL 1.4

• 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)

Page 22: Programacion VHDL 1.4

• 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.