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/] [parallel_find_top.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 work.basic_size.all;
4
use work.basic_component.all;
5
entity parallel_find_top is
6
GENERIC (N: NATURAL := N ;  WIDTH :NATURAL := WIDTH);
7
port ( a : in WORD_ARRAY;
8
       y : out STD_LOGIC_VECTOR(WIDTH-1 DOWNTO 0)
9
         );
10
end parallel_find_top;
11
 
12
architecture gen_tree_arch  of parallel_find_top is
13
     CONSTANT STAGE : NATURAL :=log2_ceil(N);
14
     type STD_LOGIC_2D is array (STAGE DOWNTO 0, 2**STAGE-1 DOWNTO 0) of STD_LOGIC_VECTOR(WIDTH-1 DOWNTO 0);
15
         SIGNAL p : STD_LOGIC_2D;
16
BEGIN
17
  --rename inputs
18
  in_gen : FOR i IN 0 TO (N-1) GENERATE
19
                                p(STAGE , i) <= a(i);
20
                   END GENERATE in_gen;
21
--PADDING with zero's
22
 
23
pad0_gen : IF (N < 2**STAGE ) GENERATE
24
zero_gen : FOR i IN N TO 2**STAGE -1 GENERATE
25
  p(STAGE , i) <= (OTHERS=>'0');
26
  END GENERATE zero_gen;
27
  END GENERATE pad0_gen;
28
 
29
-- replicate structure
30
--STAGE_GEN
31
g : FOR s IN (STAGE-1)DOWNTO  0 GENERATE
32
    --ROW_GEN
33
        q : FOR r IN 0 TO (2**s)-1 GENERATE
34
                 BT : mux_sel GENERIC MAP(level=> STAGE-s-1, Cell_count=>WIDTH)
35
                           port map(left_op=>p(s+1,2 * r),right_op=>p(s+1, 2*r +1),o=>p(s,r));
36
        END GENERATE q;
37
        END GENERATE g;
38
--rename output
39
  y <= p(0,0);
40
end gen_tree_arch;
41
 
42
 

powered by: WebSVN 2.1.0

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