CMX
CMX firmware code in-line documentation
Main Page
Packages
Design Unit List
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
main_sys.vhd
Go to the documentation of this file.
1
16
17
LIBRARY
ieee
;
18
USE
ieee
.std_logic_1164.
all
;
19
USE
ieee
.numeric_std.
all
;
20
use
ieee
.std_logic_arith.
all
;
21
use
ieee
.std_logic_unsigned.
all
;
22
LIBRARY
work
;
23
use
work
.
CMXpackage
.
all
;
24
use
work
.
CMX_flavor_package
.
all
;
25
26
27
28
entity
main_sys
is
29
generic
(
30
numactchan
:
integer
:=
16
;
31
ADDR_REG_RW_PIPELINE_DELAY_LENGTH
:
integer
:=
0
;
32
gen_system
:
std_logic
:=
'
1
'
33
)
;
34
port
(
35
clk
:
in
T_SL
;
-- clock
36
din_cbl
:
in
T_SLV65
;
-- remote input (multiplicity)
37
din_cbl_ro
:
in
T_SL
;
-- remote input (overflow)
38
din_lcl
:
in
T_SLV60
;
-- local input (multiplicity), excluding parity
39
din_lcl_ro
:
in
T_SL
;
-- local input (overflow)
40
dout
:
out
T_SLV62
;
-- global output (multiplicity), including parity
41
dout_ro
:
out
T_SL
;
-- local overflow
42
par_err_cbl
:
in
T_SL
;
-- parity error
43
force
:
in
T_SL
;
-- force
44
--VME control:
45
ncs
:
in
std_logic
;
46
rd_nwr
:
in
std_logic
;
47
ds
:
in
std_logic
;
48
addr_vme
:
in
std_logic_vector
(
15
downto
0
)
;
49
data_vme_in
:
in
std_logic_vector
(
15
downto
0
)
;
50
data_vme_out
:
out
std_logic_vector
(
15
downto
0
)
;
51
bus_drive
:
out
std_logic
52
)
;
53
54
-- Declarations
55
56
end
main_sys
;
57
58
59
architecture
struct
of
main_sys
is
60
61
62
-- Component Declarations
63
component
add3x2
64
port
(
65
a
:
in
T_SLV3;
66
b
:
in
T_SLV3;
67
sum
:
out
T_SLV3;
68
clk
:
in
T_SL
69
);
70
end
component
;
71
72
component
add2x2
73
port
(
74
a
:
in
T_SLV2;
75
b
:
in
T_SLV2;
76
sum
:
out
T_SLV2;
77
clk
:
in
T_SL
78
);
79
end
component
;
80
81
component
parity_gen
82
generic
(
83
width
:
integer
:=
60
84
);
85
port
(
86
din
:
in
std_logic_vector
(
width
-
1
downto
0
);
87
parity
:
out
std_logic
88
);
89
end
component
;
90
91
component
CMX_pipeline_module
IS
92
GENERIC
(
93
ADDR_REG_RW_PIPELINE_DELAY_LENGTH
:
integer
);
94
PORT
(
95
clk
:
IN
std_logic
;
96
din
:
IN
std_logic_vector
;
97
dout
:
OUT
std_logic_vector
;
98
--VME control:
99
ncs
:
in
std_logic
;
100
rd_nwr
:
in
std_logic
;
101
ds
:
in
std_logic
;
102
addr_vme
:
in
std_logic_vector
(
15
downto
0
);
103
data_vme_in
:
in
std_logic_vector
(
15
downto
0
);
104
data_vme_out
:
out
std_logic_vector
(
15
downto
0
);
105
bus_drive
:
out
std_logic
106
);
107
end
component
CMX_pipeline_module
;
108
109
-- End of component Declarations
110
111
-- Internal signal declarations
112
113
signal
idout
:
T_SLV60
;
-- excluding parity
114
signal
hits_dly_d
:
T_SLV60
;
-- excluding parity
115
signal
parity0
:
std_logic
;
116
signal
parity1
:
std_logic
;
117
118
signal
din_lcl_spec
:
T_SLV61
;
119
signal
hits_dly_d_spec
:
T_SLV61
;
-- excluding parity
120
signal
din_lcl_ro_d
:
T_SL
;
-- local input (overflow delayed)
121
signal
par_err_cbl_d0
:
T_SL
;
-- parity error delayed
122
signal
dout_tmp
:
T_SLV62
;
-- temporary data out
123
124
125
begin
126
-- Architecture concurrent statements
127
128
gen_system_data
:
if
gen_system
=
'
1
'
generate
129
130
din_lcl_spec
(
59
downto
0
)
<=
din_lcl
;
131
din_lcl_spec
(
60
)
<=
din_lcl_ro
;
132
hits_dly_d
(
59
downto
0
)
<=
hits_dly_d_spec
(
59
downto
0
)
;
133
din_lcl_ro_d
<=
hits_dly_d_spec
(
60
)
;
134
135
136
pipeline_inst
:
CMX_pipeline_module
137
GENERIC
MAP
(
138
ADDR_REG_RW_PIPELINE_DELAY_LENGTH
=>
ADDR_REG_RW_PIPELINE_DELAY_LENGTH
139
)
140
PORT
MAP
(
141
clk
=>
clk
,
142
din
=>
din_lcl_spec
,
143
dout
=>
hits_dly_d_spec
,
144
--VME control:
145
ncs
=> ncs,
146
rd_nwr
=> rd_nwr,
147
ds
=> ds,
148
addr_vme
=> addr_vme,
149
data_vme_in
=> data_vme_in,
150
data_vme_out
=> data_vme_out,
151
bus_drive
=> bus_drive
152
)
;
153
154
g0
:
FOR
i
IN
0
TO
9
GENERATE
155
I0
:
add3x2
156
port
map
(
157
clk
=>
clk
,
158
a
=>
din_cbl
(
(
i*3
)
+
2
downto
i*3
)
,
-- 3-bit mutliplicty
159
b
=>
hits_dly_d
(
(
i*3
)
+
2
downto
i*3
)
,
160
sum
=>
idout
(
(
i*3
)
+
2
downto
i*3
)
161
)
;
162
end
generate
g0
;
163
164
g1
:
FOR
i
IN
0
TO
14
GENERATE
165
I0
:
add2x2
166
port
map
(
167
clk
=>
clk
,
168
a
=>
din_cbl
(
(
i*2
)
+
31
downto
(
i*2
)
+
30
)
,
-- 2-bit multiplicity
169
b
=>
hits_dly_d
(
(
i*2
)
+
31
downto
(
i*2
)
+
30
)
,
170
sum
=>
idout
(
(
i*2
)
+
31
downto
(
i*2
)
+
30
)
171
)
;
172
173
end
generate
g1
;
174
175
176
process
(
clk
)
177
begin
178
if
clk
'
event
and
clk
=
'
1
'
then
179
-- global overflow delay
180
dout_ro
<=
din_cbl_ro
or
din_lcl_ro_d
;
181
-- parity delay
182
par_err_cbl_d0
<=
par_err_cbl
;
183
end
if
;
184
end
process
;
185
186
187
end
generate
gen_system_data
;
188
189
190
gen_crate_data_only
:
if
gen_system
=
'
0
'
generate
191
192
--
193
-- din_cbl(61) & -- parity, mux 1
194
-- din_cbl(60) & -- parity, mux 0
195
-- din_cbl(29 downto 0); -- 3-bit mutliplicty
196
--
197
--
198
-- din_cbl(63) & -- parity, mux 1
199
-- din_cbl(62) & -- parity, mux 0
200
-- din_cbl(59 downto 30); -- 2-bit multiplicity
201
--
202
203
idout
(
29
downto
0
)
<=
din_lcl
(
29
downto
0
)
;
204
idout
(
59
downto
30
)
<=
din_lcl
(
59
downto
30
)
;
205
206
end
generate
gen_crate_data_only
;
207
208
I1_parity0
:
parity_gen
209
generic
map
(
210
width
=>
30
211
)
212
port
map
(
213
din
=>
idout
(
29
downto
0
)
,
214
parity
=>
parity0
215
)
;
216
217
I1_parity1
:
parity_gen
218
generic
map
(
219
width
=>
30
220
)
221
port
map
(
222
din
=>
idout
(
59
downto
30
)
,
223
parity
=>
parity1
224
)
;
225
226
--
227
-- The CTP output
228
--
229
dout_tmp
(
29
downto
0
)
<=
idout
(
29
downto
0
)
;
-- 3-bit mutliplicty
230
dout_tmp
(
30
)
<=
parity0
;
231
dout_tmp
(
60
downto
31
)
<=
idout
(
59
downto
30
)
;
-- 2-bit mutliplicty
232
dout_tmp
(
61
)
<=
parity1
;
233
234
235
dout
<=
(
others
=
>
'
1
'
)
when
(
par_err_cbl_d0
=
'
1
'
and
force
=
'
1
'
)
else
dout_tmp
;
236
237
end
struct
;
parity_gen
Definition:
parity_gen.vhd:18
CMX_pipeline_module.bus_drive
out bus_drivestd_logic
Definition:
CMX_pipeline_module.vhd:38
main_sys.struct.parity0
std_logic parity0
Definition:
main_sys.vhd:115
main_sys.struct.par_err_cbl_d0
T_SL par_err_cbl_d0
Definition:
main_sys.vhd:121
add3x2
Definition:
add3x2.vhd:17
add2x2
Definition:
add2x2.vhd:16
CMX_pipeline_module.addr_vme
in addr_vmestd_logic_vector (15 downto 0)
Definition:
CMX_pipeline_module.vhd:35
main_sys.struct.din_lcl_spec
T_SLV49 din_lcl_spec
Definition:
main_sys_cp.vhd:115
main_sys.din_lcl_ro
in din_lcl_roT_SL
Definition:
main_sys.vhd:39
main_sys.struct.hits_dly_d_spec
T_SLV49 hits_dly_d_spec
Definition:
main_sys_cp.vhd:116
main_sys.par_err_cbl
in par_err_cblT_SL
Definition:
main_sys.vhd:42
i0
add3x2 i0i0
Definition:
main_sys_cp.vhd:155
pipeline_inst
CMX_pipeline_module pipeline_instpipeline_inst
Definition:
main_sys_cp.vhd:136
CMX_pipeline_module.din
in dinstd_logic_vector
Definition:
CMX_pipeline_module.vhd:29
main_crt.work
_library_ workwork
Definition:
main_crt_vs.vhd:30
CMX_pipeline_module.clk
in clkstd_logic
Definition:
CMX_pipeline_module.vhd:28
main_sys.dout_ro
out dout_roT_SL
Definition:
main_sys.vhd:41
add3x2.sum
out sumstd_logic_vector (2 downto 0)
Definition:
add3x2.vhd:21
CMX_pipeline_module.dout
out doutstd_logic_vector
Definition:
CMX_pipeline_module.vhd:30
main_sys.struct.parity1
std_logic parity1
Definition:
main_sys.vhd:116
i1_parity1
parity_gen i1_parity1i1_parity1
Definition:
main_sys_cp.vhd:200
main_sys.dout
out doutT_SLV62
Definition:
main_sys.vhd:40
main_sys.gen_system
gen_systemstd_logic :='1'
Definition:
main_sys.vhd:32
main_sys.din_cbl_ro
in din_cbl_roT_SL
Definition:
main_sys.vhd:37
CMX_pipeline_module.data_vme_out
out data_vme_outstd_logic_vector (15 downto 0)
Definition:
CMX_pipeline_module.vhd:37
parity_gen.parity
out paritystd_logic
Definition:
parity_gen.vhd:24
CMX_pipeline_module.ADDR_REG_RW_PIPELINE_DELAY_LENGTH
ADDR_REG_RW_PIPELINE_DELAY_LENGTHinteger :=0
Definition:
CMX_pipeline_module.vhd:25
add3x2.clk
in clkstd_logic
Definition:
add3x2.vhd:22
i1_parity0
parity_gen i1_parity0i1_parity0
Definition:
main_sys_cp.vhd:191
CMXpackage
Definition:
CMXpackage.vhd:12
main_sys.numactchan
numactchaninteger :=16
Definition:
main_sys.vhd:30
add3x2.b
in bstd_logic_vector (2 downto 0)
Definition:
add3x2.vhd:20
main_sys.din_lcl
in din_lclT_SLV60
Definition:
main_sys.vhd:38
main_sys.din_cbl
in din_cblT_SLV65
Definition:
main_sys.vhd:36
CMX_pipeline_module.rd_nwr
in rd_nwrstd_logic
Definition:
CMX_pipeline_module.vhd:33
main_crt.IEEE
_library_ IEEEIEEE
Definition:
main_crt_vs.vhd:24
main_sys.ADDR_REG_RW_PIPELINE_DELAY_LENGTH
ADDR_REG_RW_PIPELINE_DELAY_LENGTHinteger :=0
Definition:
main_sys.vhd:31
add2x2.sum
out sumstd_logic_vector (1 downto 0)
Definition:
add2x2.vhd:21
CMX_pipeline_module
Definition:
CMX_pipeline_module.vhd:23
parity_gen.width
widthinteger :=60
Definition:
parity_gen.vhd:20
add2x2.clk
in clkstd_logic
Definition:
add2x2.vhd:20
CMX_flavor_package
Definition:
CMX_flavor_package.vhd:19
main_sys.struct.CMX_pipeline_module
CMX_pipeline_module
Definition:
main_sys.vhd:91
CMX_pipeline_module.ncs
in ncsstd_logic
Definition:
CMX_pipeline_module.vhd:32
add2x2.b
in bstd_logic_vector (1 downto 0)
Definition:
add2x2.vhd:19
main_sys.clk
in clkT_SL
Definition:
main_sys.vhd:35
main_sys
Definition:
main_sys.vhd:28
main_sys.struct.hits_dly_d
T_SLV48 hits_dly_d
Definition:
main_sys_cp.vhd:111
CMX_pipeline_module.ds
in dsstd_logic
Definition:
CMX_pipeline_module.vhd:34
add2x2.a
in astd_logic_vector (1 downto 0)
Definition:
add2x2.vhd:18
main_sys.struct.idout
T_SLV48 idout
Definition:
main_sys_cp.vhd:110
main_sys.struct.din_lcl_ro_d
T_SL din_lcl_ro_d
Definition:
main_sys.vhd:120
main_sys.struct.dout_tmp
T_SLV62 dout_tmp
Definition:
main_sys.vhd:122
parity_gen.din
in dinstd_logic_vector (width - 1 downto 0)
Definition:
parity_gen.vhd:23
CMX_pipeline_module.data_vme_in
in data_vme_instd_logic_vector (15 downto 0)
Definition:
CMX_pipeline_module.vhd:36
add3x2.a
in astd_logic_vector (2 downto 0)
Definition:
add3x2.vhd:19
Jet
Jet_common
trunk
sources
main_sys.vhd
Generated on Thu Mar 3 2016 09:59:18 for CMX by
1.8.6