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

Subversion Repositories rise

[/] [rise/] [trunk/] [vhdl/] [rise_pack.vhd] - Blame information for rev 5

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

Line No. Rev Author Line
1 2 jlechner
-------------------------------------------------------------------------------
2
-- File: rise_pack.vhd
3
-- Author: Jakob Lechner, Urban Stadler, Harald Trinkl, Christian Walter
4
-- Created: 2006-11-29
5
-- Last updated: 2006-11-29
6
 
7
-- Description:
8
-- Package for RISE project.
9
-------------------------------------------------------------------------------
10
 
11
 
12
library IEEE;
13
use IEEE.STD_LOGIC_1164.all;
14
 
15
 
16
package RISE_PACK is
17
 
18
  constant ARCHITECTURE_WIDTH : integer := 16;
19
  constant REGISTER_COUNT : integer := 16;
20
 
21
  constant PC_WIDTH : integer := ARCHITECTURE_WIDTH;
22
  constant IR_WIDTH : integer := ARCHITECTURE_WIDTH;
23
  constant SR_WIDTH : integer := ARCHITECTURE_WIDTH;
24
  constant OPCODE_WIDTH : integer := 5;
25
  constant COND_WIDTH : integer := 3;
26
  constant MEM_DATA_WIDTH : integer := ARCHITECTURE_WIDTH;
27
  constant MEM_ADDR_WIDTH : integer := ARCHITECTURE_WIDTH;
28
 
29
  constant REGISTER_WIDTH : integer := ARCHITECTURE_WIDTH;
30 5 cwalter
  constant REGISTER_ADDR_WIDTH : integer := 4;
31 2 jlechner
  constant IMMEDIATE_WIDTH : integer := ARCHITECTURE_WIDTH;
32
  constant LOCK_WIDTH : integer := REGISTER_COUNT;
33
 
34
  subtype PC_REGISTER_T is std_logic_vector(PC_WIDTH-1 downto 0);
35
  subtype IR_REGISTER_T is std_logic_vector(IR_WIDTH-1 downto 0);
36
  subtype SR_REGISTER_T is std_logic_vector(SR_WIDTH-1 downto 0);
37
  subtype REGISTER_T is std_logic_vector(REGISTER_WIDTH-1 downto 0);
38
  subtype REGISTER_ADDR_T is std_logic_vector(REGISTER_ADDR_WIDTH-1 downto 0);
39
  subtype MEM_DATA_T is std_logic_vector(MEM_DATA_WIDTH-1 downto 0);
40
  subtype MEM_ADDR_T is std_logic_vector(MEM_ADDR_WIDTH-1 downto 0);
41
 
42
  subtype LOCK_REGISTER_T is std_logic_vector(LOCK_WIDTH-1 downto 0);
43
 
44
  subtype IMMEDIATE_T is std_logic_vector(IMMEDIATE_WIDTH-1 downto 0);
45
  subtype OPCODE_T is std_logic_vector(OPCODE_WIDTH-1 downto 0);
46
  subtype COND_T is std_logic_vector(COND_WIDTH-1 downto 0);
47
 
48 5 cwalter
  --
49
  constant SR_REGISTER_DI : INTEGER := 15;
50
  constant SR_REGISTER_IP_MASK : INTEGER := 12;
51
  constant SR_REGISTER_OVERFLOW : INTEGER := 3;
52
  constant SR_REGISTER_NEGATIVE : INTEGER := 2;
53
  constant SR_REGISTER_CARRY : INTEGER := 1;
54
  constant SR_REGISTER_ZERO : INTEGER := 0;
55
  constant RESET_PC_VALUE : PC_REGISTER_T := ( others => '0' );
56
  constant RESET_SR_VALUE : PC_REGISTER_T := ( others => '0' );
57
 
58
  constant COND_NONE : COND_T := "000";
59
  -- RISE OPCODES --
60
  constant OPCODE_LD_IMM : OPCODE_T := "10000";
61
  constant OPCODE_LD_DISP : OPCODE_T := "10100";
62
  constant OPCODE_LD_DISP_MS : OPCODE_T := "11000";
63
  constant OPCODE_LD_REG : OPCODE_T := "00001";
64
  constant OPCODE_NOP : OPCODE_T := "00000";
65 2 jlechner
 
66
  type IF_ID_REGISTER_T is record
67
                             pc : PC_REGISTER_T;
68
                             ir : IR_REGISTER_T;
69
                           end record;
70
 
71
  type ID_EX_REGISTER_T is record
72
                             sr         : SR_REGISTER_T;
73
                             pc         : PC_REGISTER_T;
74
                             opcode     : OPCODE_T;
75
                             cond       : COND_T;
76
                             rX_addr    : REGISTER_ADDR_T;
77
                             rX         : REGISTER_T;
78
                             rY         : REGISTER_T;
79
                             rZ         : REGISTER_T;
80
                             immediate  : IMMEDIATE_T;
81
                           end record;
82
 
83
  type EX_MEM_REGISTER_T is record
84
                              aluop1        : std_logic_vector(2 downto 0);
85
                              aluop2        : std_logic_vector(2 downto 0);
86
                              reg           : REGISTER_T;
87
                              alu           : REGISTER_T;
88
                              dreg_addr     : REGISTER_ADDR_T;
89
                              lr            : PC_REGISTER_T;
90
                            end record;
91
 
92
  type MEM_WB_REGISTER_T is record
93
                              aluop1        : std_logic_vector(2 downto 0);
94
                              aluop2        : std_logic_vector(2 downto 0);
95
                              reg           : REGISTER_T;
96
                              dreg_addr     : REGISTER_ADDR_T;
97
                              lr            : PC_REGISTER_T;
98
                            end record;
99
 
100
end RISE_PACK;
101
 

powered by: WebSVN 2.1.0

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