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] - Diff between revs 2 and 8

Show entire file | Details | Blame | View Log

Rev 2 Rev 8
Line 1... Line 1...
 
library IEEE;
 
use IEEE.STD_LOGIC_1164.ALL;
 
use work.basic_size.all;
 
use work.basic_component.all;
 
entity parallel_find_top is
 
GENERIC (N: NATURAL := N ;  WIDTH :NATURAL := WIDTH);
 
port ( a : in WORD_ARRAY;
 
       y : out STD_LOGIC_VECTOR(WIDTH-1 DOWNTO 0)
 
         );
 
end parallel_find_top;
 
 
 
architecture gen_tree_arch  of parallel_find_top is
 
     CONSTANT STAGE : NATURAL :=log2_ceil(N);
 
     type STD_LOGIC_2D is array (STAGE DOWNTO 0, 2**STAGE-1 DOWNTO 0) of STD_LOGIC_VECTOR(WIDTH-1 DOWNTO 0);
 
         SIGNAL p : STD_LOGIC_2D;
 
BEGIN
 
  --rename inputs
 
  in_gen : FOR i IN 0 TO (N-1) GENERATE
 
                                p(STAGE , i) <= a(i);
 
                   END GENERATE in_gen;
 
--PADDING with zero's
 
 
 
pad0_gen : IF (N < 2**STAGE ) GENERATE
 
zero_gen : FOR i IN N TO 2**STAGE -1 GENERATE
 
  p(STAGE , i) <= (OTHERS=>'0');
 
  END GENERATE zero_gen;
 
  END GENERATE pad0_gen;
 
 
 
-- replicate structure
 
--STAGE_GEN
 
g : FOR s IN (STAGE-1)DOWNTO  0 GENERATE
 
    --ROW_GEN
 
        q : FOR r IN 0 TO (2**s)-1 GENERATE
 
                 BT : mux_sel GENERIC MAP(level=> STAGE-s-1, Cell_count=>WIDTH)
 
                           port map(left_op=>p(s+1,2 * r),right_op=>p(s+1, 2*r +1),o=>p(s,r));
 
        END GENERATE q;
 
        END GENERATE g;
 
--rename output
 
  y <= p(0,0);
 
end gen_tree_arch;
 
 
 
 
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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