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

Subversion Repositories highload

[/] [highload/] [trunk/] [lc_use.vhd] - Diff between revs 3 and 4

Show entire file | Details | Blame | View Log

Rev 3 Rev 4
Line 10... Line 10...
use ieee.numeric_std.all;
use ieee.numeric_std.all;
 
 
 
 
entity lc_use is
entity lc_use is
        generic (
        generic (
 
            RECURSION_IDX : positive := 1; -- 1 = stop recursion
                DATA_WIDTH : positive := 128;
                DATA_WIDTH : positive := 128;
                ARITH_SIZE : positive := 16; -- Should be divider of DATA_WIDTH
                ARITH_SIZE : positive := 16; -- Should be divider of DATA_WIDTH
                NUM_ROWS: positive := 6;        -- Input pins
                NUM_ROWS: positive := 6;        -- Input pins
                ADD_PIPL_FF : boolean := false
                ADD_PIPL_FF : boolean := false
                );
                );
Line 27... Line 28...
 
 
 
 
architecture rtl of lc_use is
architecture rtl of lc_use is
type TArr is array (natural range <>) of unsigned(127 downto 0);
type TArr is array (natural range <>) of unsigned(127 downto 0);
signal arr : TArr(0 to 3*NUM_ROWS) := (others => (others => '0'));
signal arr : TArr(0 to 3*NUM_ROWS) := (others => (others => '0'));
 
signal dataout_i: std_logic_vector(DATA_WIDTH-1 downto 0);
 
 
 
 
begin
begin
 
 
assert DATA_WIDTH mod ARITH_SIZE = 0 report "ARITH_SIZE should be divider of DATA_WIDTH" severity error;
assert DATA_WIDTH mod ARITH_SIZE = 0 report "ARITH_SIZE should be divider of DATA_WIDTH" severity error;
 
 
Line 48... Line 51...
                if ADD_PIPL_FF then
                if ADD_PIPL_FF then
                  arr(3*i+3) <= arr(3*i+2);
                  arr(3*i+3) <= arr(3*i+2);
                end if;
                end if;
        end loop;
        end loop;
 
 
        dataout <= std_logic_vector(arr(3*NUM_ROWS));
        dataout_i <= std_logic_vector(arr(3*NUM_ROWS));
 
 
end if;
end if;
 
 
end process;
end process;
 
 
Line 60... Line 63...
    ff_loop_gen: for i in 0 to NUM_ROWS-1 generate
    ff_loop_gen: for i in 0 to NUM_ROWS-1 generate
        arr(3*i+3) <= arr(3*i+2);
        arr(3*i+3) <= arr(3*i+2);
    end generate;
    end generate;
end generate;
end generate;
 
 
 
gen_rec1: if RECURSION_IDX = 1 generate
 
    dataout <= dataout_i;
 
end generate;
 
 
 
gen_recN: if RECURSION_IDX > 1 generate
 
lc_i: entity work.lc_use
 
        generic map (
 
            RECURSION_IDX => RECURSION_IDX-1,
 
                DATA_WIDTH => 128,
 
                ARITH_SIZE => 16, -- Should be divider of DATA_WIDTH
 
                NUM_ROWS         => 6,  -- Input pins
 
                ADD_PIPL_FF => true
 
                )
 
        port map
 
        (
 
                clk              => clk,
 
                inputs => dataout_i,
 
                dataout=> dataout
 
        );
 
end generate;
 
 
end rtl;
end rtl;
 
 
 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.