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

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [vhdl/] [arm/] [libs/] [armcmd.vhd] - Blame information for rev 5

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

Line No. Rev Author Line
1 2 tarookumic
library ieee;
2
use ieee.std_logic_1164.all;
3
use work.armpmodel.all;
4
use work.armpctrl.all;
5
use work.armdecode.all;
6
use work.gendc_lib.all;
7
 
8
-- PREFIX: acm_xxx
9
package armcmd is
10
 
11
constant ACM_CNT_SZ    : integer := 5;
12
constant ACM_CNT_ZERO  : std_logic_vector(4 downto 0) := "00000";
13
constant ACM_CNT_ONE   : std_logic_vector(4 downto 0) := "00001";
14
constant ACM_CNT_TWO   : std_logic_vector(4 downto 0) := "00010";
15
constant ACM_CNT_THREE : std_logic_vector(4 downto 0) := "00011";
16
 
17
type acm_regsrc is (
18
  acm_none,
19
  acm_rrn,
20
  acm_rrm,
21
  acm_rrd,
22
  acm_rrs,
23
  acm_local
24
);
25
 
26
type acm_rdsrc is (
27
  acm_rdnone,
28
  acm_rdrrd,
29
  acm_rdrrn,
30
  acm_rdlocal,
31
  acm_rdpc,
32
  acm_rdlink
33
);
34
 
35
-- general cmd ctrlout
36
type acm_ctrlout is record
37
  nextinsn : std_logic;
38
  nextcnt  : std_logic;
39
  hold     : std_logic;
40
end record;
41
 
42
-- general cmd ctrlin
43
type acm_ctrlin is record
44
  cnt   : std_logic_vector(ACM_CNT_SZ-1 downto 0);
45
  insn  : ade_insn;
46
  ctrlo : acm_ctrlout;                  -- preinitialized ctrlo
47
end record;
48
 
49
-------------------------------------------------------------------------------
50
-- pctrl for memory cmds
51
 
52
type acm_ctrlmemout is record
53
 
54
  data1            : std_logic_vector(31 downto 0); -- immidiate 1 (pctrl.data1)
55
  data2            : std_logic_vector(31 downto 0); -- immidiate 2 (pctrl.data2)
56
 
57
  -- rrstg:
58
  r1_src    : acm_regsrc;  -- (micro.r1)
59
  r2_src    : acm_regsrc;  -- (micro.r2)
60
  rd_src    : acm_rdsrc;   -- (pctrl.wr.wrop_rd)
61
 
62
  -- rsstg: 
63
  rsop_op1_src     : apc_rsop_opsrc;    -- EXSTG operand1 source (pctrl.rs.rsop_op1_src)
64
  rsop_op2_src     : apc_rsop_opsrc;    -- EXSTG operand1 source (pctrl.rs.rsop_op2_src)
65
  rsop_buf1_src    : apc_rsop_bufsrc;   -- RSSTG buffer1 source (pctrl.rs.rsop_buf1_src)
66
  rsop_buf2_src    : apc_rsop_bufsrc;   -- RSSTG buffer2 source (pctrl.rs.rsop_buf2_src)
67
 
68
  -- exstg:
69
  exop_data_src : apc_exop_datasrc;  -- EXSTG pctrl.data1 source (pctrl.ex.data_src)
70
  exop_buf_src  : apc_exop_bufsrc;   -- ESSTG buffer source (pctl.ex.exop_buf_src)
71
 
72
  -- mestg:
73
  meop_param  : gdcl_param;  -- (pctl.me.meop_param)
74
  meop_enable : std_logic;   -- (pctl.me.meop_enable)
75
 
76
end record;
77
 
78
-- Init pctlr with acm_ctrlmemout
79
procedure acm_initmempctrl (
80
  pctrl : inout apc_pctrl;
81
  r1_src    : inout acm_regsrc;  -- (micro.r1)
82
  r2_src    : inout acm_regsrc;  -- (micro.r2)
83
  rd_src    : inout acm_rdsrc;   -- (pctrl.wr.wrop_rd)
84
  mem : in acm_ctrlmemout
85
);
86
 
87
-- general ldm stm control
88
type acm_ctrlmult_in is record
89
  ctrlmemo  : acm_ctrlmemout;
90
  ival  : std_logic_vector(31 downto 0);
91
  soff  : std_logic_vector(31 downto 0);
92
  eoff  : std_logic_vector(31 downto 0);
93
  reglist  : std_logic_vector(APM_REGLIST_SZ-1 downto 0);
94
  mem   : std_logic;                    -- mem still present in pipeline
95
  dabort   : std_logic;                    -- mem still present in pipeline
96
end record;
97
 
98
 
99
end armcmd;
100
 
101
package body armcmd is
102
 
103
procedure acm_initmempctrl (
104
  pctrl : inout apc_pctrl;
105
  r1_src    : inout acm_regsrc;  -- (micro.r1)
106
  r2_src    : inout acm_regsrc;  -- (micro.r2)
107
  rd_src    : inout acm_rdsrc;   -- (pctrl.wr.wrop_rd)
108
  mem : in acm_ctrlmemout
109
) is
110
begin
111
 
112
  pctrl.data1 := mem.data1; -- immidiate 1 
113
  pctrl.data2 := mem.data2; -- immidiate 2
114
 
115
  -- rrstg:
116
  r1_src := mem.r1_src;     -- (micro.r1)
117
  r2_src := mem.r2_src;     -- (micro.r2)
118
  rd_src := mem.rd_src;     -- (pctrl.wr.wrop_rd)
119
 
120
  -- rsstg: 
121
  pctrl.rs.rsop_op1_src := mem.rsop_op1_src;    -- EXSTG operand1 source 
122
  pctrl.rs.rsop_op2_src := mem.rsop_op2_src;    -- EXSTG operand1 source 
123
  pctrl.rs.rsop_buf1_src := mem.rsop_buf1_src;  -- RSSTG buffer1 source 
124
  pctrl.rs.rsop_buf2_src := mem.rsop_buf2_src;  -- RSSTG buffer2 source 
125
 
126
  -- exstg:
127
  pctrl.ex.exop_data_src := mem.exop_data_src;  -- EXSTG pctrl.data1 source 
128
  pctrl.ex.exop_buf_src := mem.exop_buf_src;    -- ESSTG buffer source      
129
 
130
  -- mestg:
131
  pctrl.me.meop_param := mem.meop_param;
132
  pctrl.me.meop_enable:= mem.meop_enable;
133
 
134
end;
135
 
136
end armcmd;

powered by: WebSVN 2.1.0

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