Line 25... |
Line 25... |
constant COND_WIDTH : integer := 3;
|
constant COND_WIDTH : integer := 3;
|
constant MEM_DATA_WIDTH : integer := ARCHITECTURE_WIDTH;
|
constant MEM_DATA_WIDTH : integer := ARCHITECTURE_WIDTH;
|
constant MEM_ADDR_WIDTH : integer := ARCHITECTURE_WIDTH;
|
constant MEM_ADDR_WIDTH : integer := ARCHITECTURE_WIDTH;
|
|
|
constant REGISTER_WIDTH : integer := ARCHITECTURE_WIDTH;
|
constant REGISTER_WIDTH : integer := ARCHITECTURE_WIDTH;
|
constant REGISTER_ADDR_WIDTH : integer := 5;
|
constant REGISTER_ADDR_WIDTH : integer := 4;
|
constant IMMEDIATE_WIDTH : integer := ARCHITECTURE_WIDTH;
|
constant IMMEDIATE_WIDTH : integer := ARCHITECTURE_WIDTH;
|
constant LOCK_WIDTH : integer := REGISTER_COUNT;
|
constant LOCK_WIDTH : integer := REGISTER_COUNT;
|
|
|
subtype PC_REGISTER_T is std_logic_vector(PC_WIDTH-1 downto 0);
|
subtype PC_REGISTER_T is std_logic_vector(PC_WIDTH-1 downto 0);
|
subtype IR_REGISTER_T is std_logic_vector(IR_WIDTH-1 downto 0);
|
subtype IR_REGISTER_T is std_logic_vector(IR_WIDTH-1 downto 0);
|
Line 43... |
Line 43... |
|
|
subtype IMMEDIATE_T is std_logic_vector(IMMEDIATE_WIDTH-1 downto 0);
|
subtype IMMEDIATE_T is std_logic_vector(IMMEDIATE_WIDTH-1 downto 0);
|
subtype OPCODE_T is std_logic_vector(OPCODE_WIDTH-1 downto 0);
|
subtype OPCODE_T is std_logic_vector(OPCODE_WIDTH-1 downto 0);
|
subtype COND_T is std_logic_vector(COND_WIDTH-1 downto 0);
|
subtype COND_T is std_logic_vector(COND_WIDTH-1 downto 0);
|
|
|
|
--
|
|
constant SR_REGISTER_DI : INTEGER := 15;
|
|
constant SR_REGISTER_IP_MASK : INTEGER := 12;
|
|
constant SR_REGISTER_OVERFLOW : INTEGER := 3;
|
|
constant SR_REGISTER_NEGATIVE : INTEGER := 2;
|
|
constant SR_REGISTER_CARRY : INTEGER := 1;
|
|
constant SR_REGISTER_ZERO : INTEGER := 0;
|
|
constant RESET_PC_VALUE : PC_REGISTER_T := ( others => '0' );
|
|
constant RESET_SR_VALUE : PC_REGISTER_T := ( others => '0' );
|
|
|
|
constant COND_NONE : COND_T := "000";
|
|
-- RISE OPCODES --
|
|
constant OPCODE_LD_IMM : OPCODE_T := "10000";
|
|
constant OPCODE_LD_DISP : OPCODE_T := "10100";
|
|
constant OPCODE_LD_DISP_MS : OPCODE_T := "11000";
|
|
constant OPCODE_LD_REG : OPCODE_T := "00001";
|
|
constant OPCODE_NOP : OPCODE_T := "00000";
|
|
|
type IF_ID_REGISTER_T is record
|
type IF_ID_REGISTER_T is record
|
pc : PC_REGISTER_T;
|
pc : PC_REGISTER_T;
|
ir : IR_REGISTER_T;
|
ir : IR_REGISTER_T;
|
end record;
|
end record;
|