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

Subversion Repositories parallel_search_for_maximum_weight

[/] [parallel_search_for_maximum_weight/] [trunk/] [src/] [basic_size.vhd] - Blame information for rev 8

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 atalla
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4
package basic_size is
5
     function log2_ceil(N : integer) return integer;
6
         function count_satges(cells : integer) return integer;
7
         function odd_even_stage(i : integer; ripple_width : integer; cs_w : integer) return integer ;
8
constant width : integer :=8;
9
constant N : integer := 64;
10
constant logN : integer := log2_ceil(N);
11
 
12
 
13
--constant P_stages : integer := count_satges(N);
14
constant K : integer := 2;
15
 
16
type n_ports_array is array (0 to N-1) of std_logic_vector(width-1 downto 0);
17
type max_tornment_array is array (0 to N-2) of std_logic_vector(width-1 downto 0);
18
 
19
TYPE  WORD   IS  array (WIDTH-1 DOWNTO 0) of STD_LOGIC;
20
type WORD_ARRAY is array (0 TO N-1 ) of std_logic_vector(width-1 downto 0);
21
 
22
end package basic_size;
23
 
24
package body basic_size is
25
function log2_ceil(N : integer) return integer is
26
begin
27
 
28
if (N <= 2) then
29
return 1;
30
else
31
if (N mod 2 = 0) then
32
return 1 + log2_ceil(N/2);
33
else
34
return 1 + log2_ceil((N+1)/2);
35
end if;
36
end if;
37
end function log2_ceil;
38
 
39
function count_satges(cells : integer) return integer is
40
variable K : integer := 2;  --original input.
41
variable P : integer := 0;  --original input.
42
variable a : integer := 1;  --original input.
43
variable series : integer := 0;  --original input.
44
begin
45
counter : while  a**2 +(a*(2*K -1))+2*(K - cells ) - K < 0 loop
46
                                  a := a + 1;
47
end loop counter;
48
return a;
49
end function count_satges;
50
 
51
 
52
 
53
 function odd_even_stage(i : integer; ripple_width : integer; cs_w : integer) return integer is
54
variable rp_width : integer := 2   ;  --original input.
55
begin
56
 if   i = 0 then
57
     return (ripple_width mod 2);
58
 elsif cs_w mod 2 = 0  then
59
     return i mod 2;
60
else return 1;
61
end if;
62
end function odd_even_stage;
63
 
64
end package body;

powered by: WebSVN 2.1.0

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