-- Cálculo del valor máximo de dos vectores de 4 bits

--1. Creación del package

package pack is -- Nombre del package
function max (x, y: in integer) return integer; --Declaración de la función
end;
package body pack is
function max (x, y: in integer) return integer is -- Definición de la función
begin

if x>y then return x;
else return y;
end if;

end; --Final de función
end; --Final de package

--2. Diseño del modelo

library ieee;
use ieee.std_logic_1164.ALL;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
use work.pack.all; -- Uso de la librería de trabajo y del package definido

- Declaración de la entidad
Entity maximo is
port (

a, b: in std_logic_vector (3 downto 0);
z: out std_logic_vector (3 downto 0));

end maximo ;

-- Definición de la arquitectura
Architecture bhr of maximo is
begin

Process (a)
Begin

z <= conv_std_logic_vector( max (conv_integer(a), conv_integer(b)), 4); -- Llamada a la función

End process;

end bhr;


WcN - Joan Oliver. Diseño de circuitos digitales con VHDL