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

Subversion Repositories System09

[/] [System09/] [trunk/] [rtl/] [VHDL/] [bit_funcs.vhd] - Diff between revs 66 and 99

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 66 Rev 99
 
--===========================================================================--
 
--                                                                           --
 
--  bit_funcs.vhd - Power2 & Log2 Funtions Package                           --
 
--                                                                           --
 
--===========================================================================--
 
--
 
--  File name      : bit_funcs.vhd
 
--
 
--  Purpose        : Implements power2 and log2 functions.
 
--                  
 
--  Dependencies   : ieee.std_logic_1164
 
--                   ieee.std_logic_arith
 
--                   ieee.std_logic_unsigned
 
--
 
--  Author         : John E. Kent
 
--
 
--  Email          : dilbert57@opencores.org      
 
--
 
--  Web            : http://opencores.org/project,system09
 
--
 
--  bit_func.vhd is a VHDL functions package for calulating power2 and log2.
 
-- 
 
--  Copyright (C) 2003 - 2010 John Kent
 
--
 
--  This program is free software: you can redistribute it and/or modify
 
--  it under the terms of the GNU General Public License as published by
 
--  the Free Software Foundation, either version 3 of the License, or
 
--  (at your option) any later version.
 
--
 
--  This program 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 General Public License for more details.
 
--
 
--  You should have received a copy of the GNU General Public License
 
--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
--
 
--===========================================================================--
 
--                                                                           --
 
--                              Revision  History                            --
 
--                                                                           --
 
--===========================================================================--
 
--
 
-- Revision Name          Date             Description
 
-- 0.1      John E. Kent  unknown          Initial version
 
-- 1.0      John E. Kent  30th May 2010    Added GPL Header
 
--
 
 
library IEEE;
library IEEE;
   use IEEE.std_logic_1164.all;
   use IEEE.std_logic_1164.all;
   use IEEE.std_logic_arith.all;
   use IEEE.std_logic_arith.all;
   use IEEE.std_logic_unsigned.all;
   use IEEE.std_logic_unsigned.all;
 
 
package bit_funcs is
package bit_funcs is
   function log2(v: in natural) return natural;
   function log2(v: in natural) return natural;
   function pow2(v: in natural) return natural;
   function pow2(v: in natural) return natural;
end package bit_funcs;
end package bit_funcs;
 
 
package body bit_funcs is
package body bit_funcs is
 
 
 
 
   function log2(v: in natural) return natural is
   function log2(v: in natural) return natural is
      variable i: natural;
   variable temp, log: natural;
      variable n: natural;
 
      variable logn: natural;
 
   begin
   begin
      n := 1;
      temp := v / 2;
      for i in 0 to 128 loop
      log := 0;
         logn := i;
      while (temp /= 0) loop
         exit when (n>=v);
        temp := temp/2;
         n := n * 2;
        log := log + 1;
      end loop;
      end loop;
      return logn;
      return log;
   end function log2;
   end function log2;
 
 
   function pow2(v: in natural) return natural is
   function pow2(v: in natural) return natural is
      variable i: natural;
      variable i: natural;
      variable pown: natural;
      variable pown: natural;
   begin
   begin
      pown := 1;
      pown := 1;
      for i in 0 to v loop
      for i in 0 to v loop
         exit when (i=v);
         exit when (i=v);
         pown := pown * 2;
         pown := pown * 2;
      end loop;
      end loop;
      return pown;
      return pown;
   end function pow2;
   end function pow2;
 
 
end package body bit_funcs;
end package body bit_funcs;
 
 

powered by: WebSVN 2.1.0

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