log2(N)

A

ALuPin

Guest
What library do I need to declare the following signal:

constant L: integer:=log2(N); --ceiling log2(N)


Thank you for your help.

Kind regards
 
On 27 Aug 2004 03:24:25 -0700, ALuPin@web.de (ALuPin) wrote:

What library do I need to declare the following signal:

constant L: integer:=log2(N); --ceiling log2(N)
Sadly, that one is missing... but this will work
in both synthesis and simulation:


package usefuls is
--- find minimum number of bits required to
--- represent N as an unsigned binary number
---
function log2_ceil(N: natural) return positive;
end;

package body usefuls is
--- find minimum number of bits required to
--- represent N as an unsigned binary number
---
function log2_ceil(N: natural) return positive is
begin
if N < 2 then
return 1;
else
return 1 + log2_ceil(N/2);
end if;
end;
end;

Converting my tail-recursive function into
an iterative implementation is left as an exercise
for the student :)
--
Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how
VHDL, Verilog, SystemC, Perl, Tcl/Tk, Verification, Project Services

Doulos Ltd. Church Hatch, 22 Market Place, Ringwood, BH24 1AW, UK
Tel: +44 (0)1425 471223 mail:jonathan.bromley@doulos.com
Fax: +44 (0)1425 471573 Web: http://www.doulos.com

The contents of this message may contain personal views which
are not the views of Doulos Ltd., unless specifically stated.
 
This code is from the proposed floating point packages.

-- Integer version of the "log2" command
-- Synthisable
function log2(A : natural) return natural is
begin
for I in 1 to 30 loop -- Works for up to 32 bit integers
if(2**I > A) then return(I-1);
end if;
end loop;
return(30);
end function log2;

ALuPin wrote:

What library do I need to declare the following signal:

constant L: integer:=log2(N); --ceiling log2(N)


Thank you for your help.

Kind regards
--
NAME: David W. Bishop INTERNET: dbishop@vhdl.org
 
Dave,

When do you think the VHDL-200X effort will be finalized? Are we going
to have a VHDL 2004 standard? 2005?

Just curious

David Bishop wrote:
This code is from the proposed floating point packages.

-- Integer version of the "log2" command
-- Synthisable
function log2(A : natural) return natural is
begin
for I in 1 to 30 loop -- Works for up to 32 bit integers
if(2**I > A) then return(I-1);
end if;
end loop;
return(30);
end function log2;

ALuPin wrote:

What library do I need to declare the following signal:

constant L: integer:=log2(N); --ceiling log2(N)


Thank you for your help.

Kind regards
 

Welcome to EDABoard.com

Sponsor

Back
Top