x393
1.0
FPGAcodeforElphelNC393camera
sens_histogram_mux.v
Go to the documentation of this file.
1
39
`timescale 1ns/1ps
40
41
module
sens_histogram_mux
(
42
input
mclk
,
43
input
en
,
44
45
input
rq0
,
46
output
grant0
,
47
input
dav0
,
48
input
[
31
:
0
]
din0
,
49
50
input
rq1
,
51
output
grant1
,
52
input
dav1
,
53
input
[
31
:
0
]
din1
,
54
55
input
rq2
,
56
output
grant2
,
57
input
dav2
,
58
input
[
31
:
0
]
din2
,
59
60
input
rq3
,
61
output
grant3
,
62
input
dav3
,
63
input
[
31
:
0
]
din3
,
64
65
output
rq
,
66
input
grant
,
// grant may stay longer, not masked by rq?
67
output
[
1
:
0
]
chn
,
68
output
dv
,
69
output
[
31
:
0
]
dout
70
);
71
72
reg
[
2
:
0
]
burst0
;
73
reg
[
2
:
0
]
burst1
;
74
reg
[
2
:
0
]
burst2
;
75
reg
[
2
:
0
]
burst3
;
76
77
wire
[
3
:
0
]
pri_rq
;
78
reg
[
2
:
0
]
enc_rq
;
79
wire
busy_w
;
80
reg
busy_r
;
81
reg
[
1
:
0
]
mux_sel
;
82
wire
start_w
;
83
// reg start_r;
84
reg
started
;
85
wire
dav_in
;
86
reg
dav_out
;
87
wire
[
31
:
0
]
din
;
88
reg
[
31
:
0
]
dout_r
;
89
wire
burst_done_w
;
90
wire
[
3
:
0
]
chn_sel
;
91
wire
[
3
:
0
]
chn_start
;
92
wire
[
3
:
0
]
burst_next
;
93
reg
[
3
:
0
]
chn_grant
;
94
wire
rq_in
;
95
reg
rq_out
;
96
97
assign
pri_rq
= {
rq3
& ~
rq2
& ~
rq1
& ~
rq0
,
rq2
& ~
rq1
& ~
rq0
,
rq1
& ~
rq0
,
rq0
};
98
assign
busy_w
= |
burst0
|| (|
burst1
) || (|
burst2
) || (|
burst3
);
99
assign
start_w
=
enc_rq
[
2
] && !
busy_r
&& !
started
;
100
assign
dav_in
=
mux_sel
[
1
] ? (
mux_sel
[
0
] ?
dav3
:
dav2
) : (
mux_sel
[
0
] ?
dav1
:
dav0
);
101
assign
din
=
mux_sel
[
1
] ? (
mux_sel
[
0
] ?
din3
:
din2
) : (
mux_sel
[
0
] ?
din1
:
din0
);
102
assign
rq_in
=
mux_sel
[
1
] ? (
mux_sel
[
0
] ?
rq3
:
rq2
) : (
mux_sel
[
0
] ?
rq1
:
rq0
);
103
assign
burst_done_w
=
dav_out
&& !
dav_in
;
104
assign
chn_start
= {
4
{
start_w
}} & {
enc_rq
[
1
] &
enc_rq
[
0
],
enc_rq
[
1
] & ~
enc_rq
[
0
], ~
enc_rq
[
1
] &
enc_rq
[
0
], ~
enc_rq
[
1
] & ~
enc_rq
[
0
]};
105
assign
chn_sel
= {
mux_sel
[
1
] &
mux_sel
[
0
],
mux_sel
[
1
] & ~
mux_sel
[
0
], ~
mux_sel
[
1
] &
mux_sel
[
0
], ~
mux_sel
[
1
] & ~
mux_sel
[
0
]};
106
assign
burst_next
= {
4
{
burst_done_w
}} &
chn_sel
;
107
108
assign
dout
=
dout_r
;
109
assign
grant0
=
chn_grant
[
0
];
110
assign
grant1
=
chn_grant
[
1
];
111
assign
grant2
=
chn_grant
[
2
];
112
assign
grant3
=
chn_grant
[
3
];
113
assign
rq
=
rq_out
;
114
assign
dv
=
dav_out
;
115
assign
chn
=
mux_sel
;
116
117
always
@(
posedge
mclk
)
begin
118
enc_rq
<= {|
pri_rq
,
pri_rq
[
3
] |
pri_rq
[
2
],
pri_rq
[
3
] |
pri_rq
[
1
]};
119
busy_r
<=
busy_w
;
120
if
(!
en
||
busy_r
)
started
<=
0
;
121
else
if
(
enc_rq
[
2
])
started
<=
1
;
122
if
(
start_w
)
mux_sel
<=
enc_rq
[
1
:
0
];
123
dav_out
<=
dav_in
;
124
dout_r
<=
din
;
125
126
if
(!
en
)
burst0
<=
0
;
127
else
if
(
chn_start
[
0
])
burst0
<=
4
;
128
else
if
(
burst_next
[
0
])
burst0
<=
burst0
+
1
;
129
130
if
(!
en
)
burst1
<=
0
;
131
else
if
(
chn_start
[
1
])
burst1
<=
4
;
132
else
if
(
burst_next
[
1
])
burst1
<=
burst1
+
1
;
133
134
if
(!
en
)
burst2
<=
0
;
135
else
if
(
chn_start
[
2
])
burst2
<=
4
;
136
else
if
(
burst_next
[
2
])
burst2
<=
burst2
+
1
;
137
138
if
(!
en
)
burst3
<=
0
;
139
else
if
(
chn_start
[
3
])
burst3
<=
4
;
140
else
if
(
burst_next
[
3
])
burst3
<=
burst3
+
1
;
141
142
if
(!
en
)
chn_grant
<=
0
;
143
else
chn_grant
<= {
4
{
grant
&
rq
}} &
chn_sel
;
144
// else chn_grant <= {4{grant & rq}} & chn_sel;
145
// start_r <= en & start_w;
146
if
(!
en
)
rq_out
<=
0
;
147
else
if
(
started
)
rq_out
<=
1
;
148
else
if
(
rq_out
)
rq_out
<=
rq_in
;
149
// rq_out <= en && rq_in;
150
end
151
152
endmodule
153
sens_histogram_mux.7450dav1
7450dav1
Definition:
sens_histogram_mux.v:52
sens_histogram_mux.7447din0
[31:0] 7447din0
Definition:
sens_histogram_mux.v:48
sens_histogram_mux.7481chn_sel
7481chn_selwire[3:0]
Definition:
sens_histogram_mux.v:90
sens_histogram_mux
Definition:
sens_histogram_mux.v:41
sens_histogram_mux.7463dv
7463dv
Definition:
sens_histogram_mux.v:68
sens_histogram_mux.7472busy_r
7472busy_rreg
Definition:
sens_histogram_mux.v:80
sens_histogram_mux.7475started
7475startedreg
Definition:
sens_histogram_mux.v:84
sens_histogram_mux.7480burst_done_w
7480burst_done_wwire
Definition:
sens_histogram_mux.v:89
sens_histogram_mux.7484chn_grant
7484chn_grantreg[3:0]
Definition:
sens_histogram_mux.v:93
sens_histogram_mux.7449grant1
7449grant1
Definition:
sens_histogram_mux.v:51
sens_histogram_mux.7469pri_rq
7469pri_rqwire[3:0]
Definition:
sens_histogram_mux.v:77
sens_histogram_mux.7460rq
7460rq
Definition:
sens_histogram_mux.v:65
sens_histogram_mux.7464dout
[31:0] 7464dout
Definition:
sens_histogram_mux.v:69
sens_histogram_mux.7477dav_out
7477dav_outreg
Definition:
sens_histogram_mux.v:86
sens_histogram_mux.7456rq3
7456rq3
Definition:
sens_histogram_mux.v:60
sens_histogram_mux.7458dav3
7458dav3
Definition:
sens_histogram_mux.v:62
sens_histogram_mux.7470enc_rq
7470enc_rqreg[2:0]
Definition:
sens_histogram_mux.v:78
sens_histogram_mux.7461grant
7461grant
Definition:
sens_histogram_mux.v:66
sens_histogram_mux.7486rq_out
7486rq_outreg
Definition:
sens_histogram_mux.v:95
sens_histogram_mux.7467burst2
7467burst2reg[2:0]
Definition:
sens_histogram_mux.v:74
sens_histogram_mux.7446dav0
7446dav0
Definition:
sens_histogram_mux.v:47
sens_histogram_mux.7478din
7478dinwire[31:0]
Definition:
sens_histogram_mux.v:87
sens_histogram_mux.7444rq0
7444rq0
Definition:
sens_histogram_mux.v:45
sens_histogram_mux.7451din1
[31:0] 7451din1
Definition:
sens_histogram_mux.v:53
sens_histogram_mux.7465burst0
7465burst0reg[2:0]
Definition:
sens_histogram_mux.v:72
sens_histogram_mux.7445grant0
7445grant0
Definition:
sens_histogram_mux.v:46
sens_histogram_mux.7459din3
[31:0] 7459din3
Definition:
sens_histogram_mux.v:63
sens_histogram_mux.7485rq_in
7485rq_inwire
Definition:
sens_histogram_mux.v:94
sens_histogram_mux.7453grant2
7453grant2
Definition:
sens_histogram_mux.v:56
sens_histogram_mux.7462chn
[1:0] 7462chn
Definition:
sens_histogram_mux.v:67
sens_histogram_mux.7471busy_w
7471busy_wwire
Definition:
sens_histogram_mux.v:79
sens_histogram_mux.7457grant3
7457grant3
Definition:
sens_histogram_mux.v:61
sens_histogram_mux.7443en
7443en
Definition:
sens_histogram_mux.v:43
sens_histogram_mux.7455din2
[31:0] 7455din2
Definition:
sens_histogram_mux.v:58
sens_histogram_mux.7483burst_next
7483burst_nextwire[3:0]
Definition:
sens_histogram_mux.v:92
sens_histogram_mux.7442mclk
7442mclk
Definition:
sens_histogram_mux.v:42
sens_histogram_mux.7479dout_r
7479dout_rreg[31:0]
Definition:
sens_histogram_mux.v:88
sens_histogram_mux.7452rq2
7452rq2
Definition:
sens_histogram_mux.v:55
sens_histogram_mux.7482chn_start
7482chn_startwire[3:0]
Definition:
sens_histogram_mux.v:91
sens_histogram_mux.7468burst3
7468burst3reg[2:0]
Definition:
sens_histogram_mux.v:75
sens_histogram_mux.7474start_w
7474start_wwire
Definition:
sens_histogram_mux.v:82
sens_histogram_mux.7476dav_in
7476dav_inwire
Definition:
sens_histogram_mux.v:85
sens_histogram_mux.7448rq1
7448rq1
Definition:
sens_histogram_mux.v:50
sens_histogram_mux.7454dav2
7454dav2
Definition:
sens_histogram_mux.v:57
sens_histogram_mux.7473mux_sel
7473mux_selreg[1:0]
Definition:
sens_histogram_mux.v:81
sens_histogram_mux.7466burst1
7466burst1reg[2:0]
Definition:
sens_histogram_mux.v:73
sensor
sens_histogram_mux.v
Generated by
1.8.12