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

Subversion Repositories hicovec

[/] [hicovec/] [branches/] [avendor/] [cpu/] [units/] [vector_register.vhd] - Blame information for rev 12

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 hmanske
------------------------------------------------------------------
2 4 hmanske
-- PROJECT:     HiCoVec (highly configurable vector processor)
3 2 hmanske
--
4
-- ENTITY:      vector_register
5
--
6
-- PURPOSE:     32 bit register file for vector_slice
7
--
8
-- AUTHOR:      harald manske, haraldmanske@gmx.de
9
--
10
-- VERSION:     1.0
11
-----------------------------------------------------------------
12
library ieee;
13
use ieee.std_logic_1164.all;
14
use ieee.std_logic_arith.all;
15
use ieee.numeric_std.all;
16
use ieee.std_logic_unsigned.all;
17
 
18
use work.cfg.all;
19
use work.datatypes.all;
20
 
21
entity vector_register is
22
    generic (
23
        n : integer range 1 to 256;
24
        slicenr : natural
25
    );
26
 
27
    port (
28
        -- clock
29
        clk:            in  std_logic;
30
 
31
        -- data inputs
32
        r_in:           in  std_logic_vector(31 downto 0);
33
 
34
        -- data outputs
35
        v_out:          out std_logic_vector(31 downto 0);
36
        w_out:          out std_logic_vector(31 downto 0);
37
 
38
        -- control signals
39
        load_r:         in  std_logic;
40
        load_select:    in  std_logic;
41
        k_in:           in  std_logic_vector(31 downto 0);
42
        select_v:       in  std_logic_vector(7 downto 0);
43
        select_w:       in  std_logic_vector(3 downto 0);
44
        select_r:       in  std_logic_vector(7 downto 0)
45
    );
46
 
47
end vector_register;
48
 
49
architecture rtl of vector_register is
50
    type regfile_type is array(0 to n-1) of std_logic_vector(31 downto 0);
51
    signal regfile : regfile_type := (others => (others => '0'));
52
begin
53
        process
54
        begin
55
            wait until clk='1' and clk'event;
56
 
57
            if (load_r = '1' and load_select /= '1') or (load_r = '1' and load_select = '1'
58
              and k_in = slicenr) then
59
                regfile(conv_integer(select_r)) <= r_in;
60
            end if;
61
 
62
            v_out <= regfile(conv_integer(select_v));
63
            w_out <= regfile(conv_integer(select_w));
64
        end process;
65
 
66
 
67
end rtl;
68
 

powered by: WebSVN 2.1.0

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