La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Librerías y packages (paquetes)

Presentaciones similares


Presentación del tema: "Librerías y packages (paquetes)"— Transcripción de la presentación:

1 Librerías y packages (paquetes)
Diseño de circuitos digitales con VHDL Iliana maria rumbo barros

2 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

3 Packages Un package es un fichero VHDL que contiene declaraciones, constantes, tipos, funciones y procedimientos que se usan en el diseño. Los packages también se almacenan en una librería. library ieee; -- 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

4 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>;

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

6 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: library std; use std.standard.ALL; Entre las librerías más usadas existe la ieee que 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.

7 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 exterior Cuerpo: programación de las funciones y procedimientos Sintaxis: package <nombrePackage> is [declaraciones, atributos, ... a ser exportados] end; package body <nombrePackage> is [cuerpos] end;

8 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>;  9 10 package body <package_name> is 11         [subprogram_bodies]; 12         [internal_subprogram_declarations]; 13         [internal_constant_declaration]; 14         [internal_type_declaration]; 15 end <package_name>;

9 Ejemplo: Memoria ROM  1 library ieee;  2 use ieee.std_logic_1164.all;  3 use ieee.numeric_std.all;  4  5 package pkg_rom is  6  7  constant data_length : natural := 16;  8  constant addr_length : natural := 10;  9  constant mem_size    : natural := 2**addr_length; 10  subtype rom_word is std_logic_vector(data_length-1 downto 0); 11  type mem_type is array (mem_size-1 downto 0) of rom_word; 12  13  constant mem : 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"); 20 21 end package pkg_rom;

10 Como usar el paquete anterior
 1 library ieee;  2 use ieee.std_logic_1164.all;  3 use ieee.numeric_std.all;  4 use work.pkg_rom.all;  5  6 entity sync_rom is  7    port (  8      clk     :in  std_logic;  9      address :in  std_logic_vector(addr_length-1 downto 0); 10      data_out:out std_logic_vector(data_length-1 downto 0) 11           ); 12 end sync_rom; 13 14 architecture synth of sync_rom is 15 16 begin 17    rom_proc : process (clk) 18    begin 19       if rising_edge(clk) then 20          data_out <=mem(to_integer(unsigned(address))); 21        end if; 22    end process rom_proc; 23 24 end architecture synth;

11 Tenga en cuenta que: En primer lugar el paquete en sí debe ser guardado con una extensión .vhd e 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.

12 Bibliografía http://www.cannic.uab.es/docencia/vhdli06/VHDLI06.htm


Descargar ppt "Librerías y packages (paquetes)"

Presentaciones similares


Anuncios Google