OpenCores
URL https://opencores.org/ocsvn/udp_ipv4_for_10g_ethernet/udp_ipv4_for_10g_ethernet/trunk

Subversion Repositories udp_ipv4_for_10g_ethernet

[/] [udp_ipv4_for_10g_ethernet/] [trunk/] [src/] [hdl/] [math_pack.vhd] - Rev 3

Compare with Previous | Blame | View Log

-------------------------------------------------------------------------------
--
-- (C) Copyright 2017 DFC Design, s.r.o., Brno, Czech Republic
-- Author: Marek Kvas (m.kvas@dfcdesign.cz)
--
-------------------------------------------------------------------------------
-- This file is part of UDP/IPv4 for 10 G Ethernet core.
-- 
-- UDP/IPv4 for 10 G Ethernet core is free software: you can 
-- redistribute it and/or modify it under the terms of 
-- the GNU Lesser General Public License as published by the Free 
-- Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
-- 
-- UDP/IPv4 for 10 G Ethernet core is distributed in the hope that 
-- it will be useful, but WITHOUT ANY WARRANTY; without even 
-- the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-- PARTICULAR PURPOSE.  See the GNU Lesser General Public License 
-- for more details.
-- 
-- You should have received a copy of the GNU Lesser General Public 
-- License along with UDP/IPv4 for 10 G Ethernet core.  If not, 
-- see <http://www.gnu.org/licenses/>.
-------------------------------------------------------------------------------
--
-- This is minimal package of commonly used math functions. It is not
-- meant for synthesis to hw operators. It is meant for use in signal and
-- port definitions as a convenient way to calculate vector widths.
--
-------------------------------------------------------------------------------
 
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
package math_pack is
   -- Return integer equal to or higher than 2 base logarithm of i
   function log2(i : natural) return integer;
 
   -- Return smaller of two integers
   function min(a : integer; b: integer) return integer;
   -- Return higher of two integers
   function max(a : integer; b: integer) return integer;
 
end package;
 
package body math_pack is
 
   function log2(i : natural) return integer is
      variable ret      : integer := 0;
   begin
 
      while 2**ret < i loop
         ret := ret + 1;
      end loop;
 
      return ret;
   end function;
 
   function min(a : integer; b: integer) return integer is
   begin
      if a > b then
         return b;
      else
         return a;
      end if;
   end function;
 
   function max(a : integer; b: integer) return integer is
   begin
      if a < b then
         return b;
      else
         return a;
      end if;
   end function;
 
end package body;
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.