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

Subversion Repositories opencpu32

[/] [opencpu32/] [trunk/] [hdl/] [opencpu32/] [pkgOpenCPU32.vhd] - Blame information for rev 21

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 leonardoar
--! @file
2
--! @brief 2:1 CPU global Definitions
3 14 leonardoar
 
4
--! @mainpage
5
--! <H1>Main document of the OpenCPU32 project</H1>\n
6
--! <H2>Features</H2>
7 5 leonardoar
 
8
--! Use standard library
9
library IEEE;
10
use IEEE.STD_LOGIC_1164.all;
11
 
12
package pkgOpenCPU32 is
13
 
14
--! Declare constants, enums, functions used by the design
15 8 leonardoar
constant nBits          : integer := 32;
16
 
17 14 leonardoar
--! Number of general registers (r0..r15)
18
constant numGenRegs : integer := 16;
19
 
20 20 leonardoar
type aluOps is (alu_pass, alu_passB, alu_sum, alu_sub, alu_inc, alu_dec, alu_mul, alu_or, alu_and,
21 17 leonardoar
        alu_xor, alu_not, alu_shfLt, alu_shfRt, alu_roLt, alu_roRt);
22 14 leonardoar
type typeEnDis is (enable, disable);
23 20 leonardoar
type generalRegisters is (r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15);
24
type dpMuxInputs is (fromMemory, fromImediate, fromRegFileA, fromRegFileB, fromAlu);
25 14 leonardoar
 
26
function reg2Num (a: generalRegisters) return integer;
27
function Num2reg (a: integer) return generalRegisters;
28 20 leonardoar
function muxPos( a: dpMuxInputs) return std_logic_vector;
29 5 leonardoar
 
30
end pkgOpenCPU32;
31
 
32
--! Define functions or procedures
33 14 leonardoar
package body pkgOpenCPU32 is
34
 
35 20 leonardoar
function muxPos( a: dpMuxInputs) return std_logic_vector is
36
variable valRet : std_logic_vector(2 downto 0);
37
begin
38
        case a is
39
                when fromMemory => valRet := "000";
40
                when fromImediate => valRet := "001";
41
                when fromRegFileA => valRet := "010";
42
                when fromRegFileB => valRet := "011";
43
                when fromAlu => valRet := "100";
44
        end case;
45
        return valRet;
46
end muxPos;
47
 
48 14 leonardoar
function reg2Num (a: generalRegisters) return integer is
49
  variable valRet : integer;
50
  begin
51
    case a is
52
                when r0 => valRet := 0;
53
                when r1 => valRet := 1;
54
                when r2 => valRet := 2;
55
                when r3 => valRet := 3;
56
                when r4 => valRet := 4;
57
                when r5 => valRet := 5;
58
                when r6 => valRet := 6;
59
                when r7 => valRet := 7;
60
                when r8 => valRet := 8;
61
                when r9 => valRet := 9;
62
                when r10 => valRet := 10;
63
                when r11 => valRet := 11;
64
                when r12 => valRet := 12;
65
                when r13 => valRet := 13;
66
                when r14 => valRet := 14;
67
                when r15 => valRet := 15;
68
         end case;
69
         return valRet;
70
  end reg2Num;
71
 
72
function Num2reg (a: integer) return generalRegisters is
73
  variable valRet : generalRegisters;
74
  begin
75
    case a is
76
                when 0 => valRet := r0;
77
                when 1 => valRet := r1;
78
                when 2 => valRet := r2;
79
                when 3 => valRet := r3;
80
                when 4 => valRet := r4;
81
                when 5 => valRet := r5;
82
                when 6 => valRet := r6;
83
                when 7 => valRet := r7;
84
                when 8 => valRet := r8;
85
                when 9 => valRet := r9;
86
                when 10 => valRet := r10;
87
                when 11 => valRet := r11;
88
                when 12 => valRet := r12;
89
                when 13 => valRet := r13;
90
                when 14 => valRet := r14;
91 16 leonardoar
                when 15 => valRet := r15;
92
                when others => valRet := r0;
93 14 leonardoar
         end case;
94
         return valRet;
95
  end Num2reg;
96 5 leonardoar
 
97
end pkgOpenCPU32;

powered by: WebSVN 2.1.0

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