120 likes | 255 Views
Librerías y packages (paquetes). Diseño de circuitos digitales con VHDL Iliana maria rumbo barros. Librerías. Los componentes compilados se almacenan en librerías. Los componentes compilados del propio diseño se almacenan en una librería por defecto denominada work .
E N D
Librerías y packages (paquetes) Diseño de circuitos digitales con VHDL Iliana maria rumbo barros
Librerías • Los componentes compilados se almacenan en librerías. • Los componentes compilados del propio diseño se almacenan en una librería por defecto denominada work. • El nombre lógico de la librería de trabajo no tiene por qué coincidir con el nombre del directorio
Packages • Unpackage es un fichero VHDL que contiene declaraciones, constantes, tipos, funciones y procedimientos que se usan en el diseño. • Lospackages también se almacenan en una librería. libraryieee; -- Definición de librería a usar use ieee.std_logic_1164.all; -- Definición de package a usar use ieee.numeric_std.all;-- Definición de package a usar
Estructura de un Package package <NOMBRE_PAQUETE> is [type_decl] [subtype_decl] [constant_decl] [deferred_constant_decl] [subprogram_header_decl] [component_decl] end<NOMBRE_PAQUETE>;
Definición para el cuerpo de un package package body<NOMBRE_PAQUETE> is [deferred_constant_value] [subprogram_body] end <NOMBRE_PAQUETE>; • Inclusión de un packege en un diseño: • Syntax: • the default library is WORK use [library_name.]package_name.all; • Si la librería no es work, hay que incluir una línea definiendo a la librería.
Declaración de una Librería • Las librerías y los packages han de ser declarados antes de ser usados: • library <nombreLibrería>;use <nombreLibrería>.<nombrePackage>.ALL; • Todos los tipos y las funciones predefinidas vienen definidas en el package standard: • librarystd;usestd.standard.ALL; • Entre las librerías más usadas existe la ieeeque actualmente se ha convertido en estándar para todos los usuarios de VHDL. Tanto es así, que usualmente se trabaja con la librería ieee. En ella se encuentran definidos los tipos std_logic, std_ulogic y sus derivados.
Declaración de un Package • Contiene constantes, tipos, funciones y procedimientos y Consta de: • Declaración: Determina (como la entidad) las constantes, tipos, y subprogramas que se verán desde el exteriorCuerpo: programación de las funciones y procedimientos • Sintaxis: • package <nombrePackage> is[declaraciones, atributos, ... a ser exportados]end;package body <nombrePackage> is[cuerpos]end;
Ejemplo de la estructura 1 package<package_name>is 2 [subprograma_declarations]; 3 [constant_declarations]; 4 [type_declarations]; 5 [component_declarations]; 6 [attribute_declarations]; 7 [attribute_specifications]; 8 end<package_name>; 910 packagebody<package_name>is11 [subprogram_bodies];12 [internal_subprogram_declarations];13 [internal_constant_declaration];14 [internal_type_declaration];15 end<package_name>;
Ejemplo: Memoria ROM 1 libraryieee; 2 use ieee.std_logic_1164.all; 3 useieee.numeric_std.all; 4 5 packagepkg_romis 6 7 constantdata_length:natural:= 16; 8 constantaddr_length:natural:= 10; 9 constantmem_size:natural:= 2**addr_length;10 subtyperom_wordisstd_logic_vector(data_length-1 downto 0);11 typemem_typeisarray (mem_size-1 downto 0) ofrom_word;12 13 constantmem:mem_type:=14 (0 =>x"abcd", 1 =>x"beef", 2 => x"5555",3 => x"1010",15 4 => x"5a6b", 5 => x"f0f0", 6 => x"1234",7 =>x"fabc",16 8 => x"2345", 9 => x"9876", 10=> x"5432",11=> x"6666",17 12 => x"0101",18 13 =>std_logic_vector(to_unsigned (1234,16)),19 others=> x"4247");2021 endpackagepkg_rom;
Como usar el paquete anterior 1 libraryieee; 2 use ieee.std_logic_1164.all; 3 useieee.numeric_std.all; 4 usework.pkg_rom.all; 5 6 entitysync_romis 7 port ( 8 clk:instd_logic; 9 address:instd_logic_vector(addr_length-1 downto 0);10 data_out:outstd_logic_vector(data_length-1 downto 0)11 );12 endsync_rom;1314 architecturesynthofsync_romis1516 begin17 rom_proc:process (clk)18 begin19 ifrising_edge(clk) then20 data_out<=mem(to_integer(unsigned(address)));21 endif;22 endprocessrom_proc;2324 endarchitecturesynth;
Tenga en cuenta que: • En primer lugar el paquete en sí debe ser guardado con una extensión .vhde importado en el proyecto que se está trabajando como si fuera un componente más del proyecto. • En segundo lugar, debemos decirle a la herramienta de síntesis que se quiere hacer uso del paquete dentro de la síntesis del componente que se está sintetizando. • En tercer lugar se usan las declaraciones del paquete dentro del componente como si se hubieran declarado dentro del mismo componente.
Bibliografía • http://www.cannic.uab.es/docencia/vhdli06/VHDLI06.htm • http://www.dte.us.es/ing_inf/dise_comp/disenio_y_simulacion__vhdl_08_09_ISE.pdf • http://hdl-fpga.blogspot.com/2011/06/paquetes-declaracion-y-uso.html