Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
x393
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
x393
Commits
f5cc4edf
Commit
f5cc4edf
authored
Dec 20, 2017
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Compared through all srages, including phase rotator/fractional pixel
shift
parent
63d2b1b1
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
52 additions
and
44 deletions
+52
-44
mclt_test_01.tf
dsp/mclt_test_01.tf
+21
-1
phase_rotator.v
dsp/phase_rotator.v
+1
-20
mclt_test_01.sav
mclt_test_01.sav
+30
-23
No files found.
dsp/mclt_test_01.tf
View file @
f5cc4edf
...
@@ -383,6 +383,26 @@ module mclt_test_01 ();
...
@@ -383,6 +383,26 @@ module mclt_test_01 ();
end
end
end
end
reg
FIRST_OUT
;
always
@(
posedge
CLK
)
FIRST_OUT
<
=
mclt16x16_i
.
pre_first_out
;
integer
n7
,
cntr7
,
diff7
,
diff7a
;
// SuppressThisWarning VEditor : assigned in $readmem() system task
wire
[
OUT_WIDTH
-
1
:
0
]
java_data_dtt_rot
=
java_dtt_rot0
[{
cntr7
[
1
]
,
cntr7
[
0
]
,
cntr7
[
7
:
2
]}]
;
// java_dtt_in[n2 * 256 + cntr2];
initial
begin
while
(
RST
)
@(
negedge
CLK
);
for
(
n7
=
0
;
n7
<
4
;
n7
=
n7
+
1
)
begin
while
(!
FIRST_OUT
)
begin
@(
negedge
CLK
);
end
for
(
cntr7
=
0
;
cntr7
<
256
;
cntr7
=
cntr7
+
1
)
begin
#1;
diff7
=
dout
-
java_data_dtt_rot
;
if
(
n7
<
1
)
diff7a
=
dout
-
java_data_dtt_rot
;
// TEMPORARY, while no other data
@(
negedge
CLK
);
end
end
end
mclt16x16
#(
mclt16x16
#(
...
...
dsp/phase_rotator.v
View file @
f5cc4edf
...
@@ -117,9 +117,6 @@ module phase_rotator#(
...
@@ -117,9 +117,6 @@ module phase_rotator#(
if
(
!
run_h
)
cntr_h
<=
0
;
if
(
!
run_h
)
cntr_h
<=
0
;
else
cntr_h
<=
cntr_h
+
1
;
else
cntr_h
<=
cntr_h
+
1
;
// if (!run_hv) hv_phase <= 0;
// else hv_phase <= hv_phase + 1;
// combine horizontal and vertical counters and shifts to feed to ROM
// combine horizontal and vertical counters and shifts to feed to ROM
hv_index
<=
mux_v
?
cntr_v
[
4
:
2
]
:
cntr_h
[
7
:
5
]
;
// input data "down first" (transposed)
hv_index
<=
mux_v
?
cntr_v
[
4
:
2
]
:
cntr_h
[
7
:
5
]
;
// input data "down first" (transposed)
hv_sin
<=
mux_v
?
cntr_v
[
0
]
:
cntr_h
[
0
]
;
hv_sin
<=
mux_v
?
cntr_v
[
0
]
:
cntr_h
[
0
]
;
...
@@ -131,8 +128,6 @@ module phase_rotator#(
...
@@ -131,8 +128,6 @@ module phase_rotator#(
rom_a_shift
<=
shift_hv
[
SHIFT_WIDTH
-
1
]
?
-
shift_hv
[
SHIFT_WIDTH
-
2
:
0
]
:
shift_hv
[
SHIFT_WIDTH
-
2
:
0
]
;
rom_a_shift
<=
shift_hv
[
SHIFT_WIDTH
-
1
]
?
-
shift_hv
[
SHIFT_WIDTH
-
2
:
0
]
:
shift_hv
[
SHIFT_WIDTH
-
2
:
0
]
;
rom_a_sin
<=
shift_ends_0
?
shift_hv
[
SHIFT_WIDTH
-
1
]
:
hv_sin
;
rom_a_sin
<=
shift_ends_0
?
shift_hv
[
SHIFT_WIDTH
-
1
]
:
hv_sin
;
// sign_cs <= shift_hv[SHIFT_WIDTH-1] & ( hv_sin | (shift_ends_0 & hv_index[2]));
// sign_cs <= shift_hv[SHIFT_WIDTH-1] & hv_sin;
sign_cs
<=
{
sign_cs
[
3
:
0
]
,
shift_hv
[
SHIFT_WIDTH
-
1
]
&
hv_sin
};
sign_cs
<=
{
sign_cs
[
3
:
0
]
,
shift_hv
[
SHIFT_WIDTH
-
1
]
&
hv_sin
};
rom_re_regen
<=
{
rom_re_regen
[
1
:
0
]
,
run_hv
};
rom_re_regen
<=
{
rom_re_regen
[
1
:
0
]
,
run_hv
};
...
@@ -212,7 +207,6 @@ module phase_rotator#(
...
@@ -212,7 +207,6 @@ module phase_rotator#(
always
@
(
posedge
clk
)
begin
always
@
(
posedge
clk
)
begin
if
(
rst
)
ph
<=
0
;
if
(
rst
)
ph
<=
0
;
// else ph <= {ph[15:0], run_h & ~cntr_h[0] & cntr_h[1]};
else
ph
<=
{
ph
[
15
:
0
]
,
run_h
&
~
cntr_h
[
0
]
&
~
cntr_h
[
1
]
};
else
ph
<=
{
ph
[
15
:
0
]
,
run_h
&
~
cntr_h
[
0
]
&
~
cntr_h
[
1
]
};
cea1_1
<=
ph
[
0
]
;
cea2_1
<=
ph
[
2
]
;
cea1_2
<=
ph
[
1
]
;
cea2_2
<=
ph
[
3
]
;
cea1_1
<=
ph
[
0
]
;
cea2_1
<=
ph
[
2
]
;
cea1_2
<=
ph
[
1
]
;
cea2_2
<=
ph
[
3
]
;
ceb1_1
<=
ph
[
3
]
;
ceb2_1
<=
ph
[
2
]
;
ceb1_2
<=
ph
[
2
]
|
ph
[
3
]
;
ceb2_2
<=
ph
[
3
]
;
ceb1_1
<=
ph
[
3
]
;
ceb2_1
<=
ph
[
2
]
;
ceb1_2
<=
ph
[
2
]
|
ph
[
3
]
;
ceb2_2
<=
ph
[
3
]
;
...
@@ -221,10 +215,6 @@ module phase_rotator#(
...
@@ -221,10 +215,6 @@ module phase_rotator#(
sela_1
<=
ph
[
2
]
|
ph
[
4
]
;
sela_2
<=
ph
[
3
]
|
ph
[
5
]
;
sela_1
<=
ph
[
2
]
|
ph
[
4
]
;
sela_2
<=
ph
[
3
]
|
ph
[
5
]
;
selb_1
<=
ph
[
2
]
|
ph
[
5
]
;
selb_2
<=
ph
[
3
]
|
ph
[
6
]
;
selb_1
<=
ph
[
2
]
|
ph
[
5
]
;
selb_2
<=
ph
[
3
]
|
ph
[
6
]
;
// 0 1 0 0
// 0 1 0 0
// negm_1 <= (ph[3] ^ sign_cs_d) | (~ph[4] ^ sign_cs_d) | (ph[5] ^ sign_cs_r[1]) | (ph[6] ^ sign_cs_r[1]);
// negm_2 <= (ph[4] ^ sign_cs_d) | (~ph[5] ^ sign_cs_d) | (ph[6] ^ sign_cs_r[1]) | (ph[7] ^ sign_cs_r[1]);
/// negm_1 <= (ph[4] & ~sign_cs[0]) | (ph[5] & sign_cs[1]);
/// negm_2 <= (ph[5] & ~sign_cs[1]) | (ph[6] & sign_cs[2]);
negm_1
<=
(
ph
[
4
]
&
~
sign_cs
[
2
])
|
(
ph
[
5
]
&
sign_cs
[
3
])
;
negm_1
<=
(
ph
[
4
]
&
~
sign_cs
[
2
])
|
(
ph
[
5
]
&
sign_cs
[
3
])
;
negm_2
<=
(
ph
[
5
]
&
~
sign_cs
[
3
])
|
(
ph
[
6
]
&
sign_cs
[
4
])
;
negm_2
<=
(
ph
[
5
]
&
~
sign_cs
[
3
])
|
(
ph
[
6
]
&
sign_cs
[
4
])
;
...
@@ -237,10 +227,6 @@ module phase_rotator#(
...
@@ -237,10 +227,6 @@ module phase_rotator#(
end_3
<=
ph
[
10
]
|
ph
[
8
]
;
end_4
<=
ph
[
11
]
|
ph
[
9
]
;
end_3
<=
ph
[
10
]
|
ph
[
8
]
;
end_4
<=
ph
[
11
]
|
ph
[
9
]
;
selb_3
<=
ph
[
8
]
|
ph
[
11
]
;
selb_4
<=
ph
[
9
]
|
ph
[
12
]
;
selb_3
<=
ph
[
8
]
|
ph
[
11
]
;
selb_4
<=
ph
[
9
]
|
ph
[
12
]
;
// negm_4 <= (ph[ 9] ^ sign_cs_d) | (~ph[10] ^ sign_cs_d) | (ph[11] ^ sign_cs_r[1]) | (ph[12] ^ sign_cs_r[1]);
// negm_3 <= (ph[10] ^ sign_cs_d) | (~ph[11] ^ sign_cs_d) | (ph[12] ^ sign_cs_r[1]) | (ph[13] ^ sign_cs_r[1]);
/// negm_3 <= (ph[10] & ~sign_cs[0]) | (ph[11] & sign_cs[1]);
/// negm_4 <= (ph[11] & ~sign_cs[1]) | (ph[12] & sign_cs[2]);
negm_3
<=
(
ph
[
10
]
&
~
sign_cs
[
2
])
|
(
ph
[
11
]
&
sign_cs
[
3
])
;
negm_3
<=
(
ph
[
10
]
&
~
sign_cs
[
2
])
|
(
ph
[
11
]
&
sign_cs
[
3
])
;
negm_4
<=
(
ph
[
11
]
&
~
sign_cs
[
3
])
|
(
ph
[
12
]
&
sign_cs
[
4
])
;
negm_4
<=
(
ph
[
11
]
&
~
sign_cs
[
3
])
|
(
ph
[
12
]
&
sign_cs
[
4
])
;
...
@@ -250,15 +236,10 @@ module phase_rotator#(
...
@@ -250,15 +236,10 @@ module phase_rotator#(
fd_dv
<=
pre_dv
;
fd_dv
<=
pre_dv
;
if
(
pre_dv
)
fd_out
<=
omux_sel
?
pout_4
[
COEFF_WIDTH
+:
DSP_A_WIDTH
]
:
pout_3
[
COEFF_WIDTH
+:
DSP_A_WIDTH
]
;
if
(
pre_dv
)
fd_out
<=
omux_sel
?
pout_4
[
COEFF_WIDTH
+:
DSP_A_WIDTH
]
:
pout_3
[
COEFF_WIDTH
+:
DSP_A_WIDTH
]
;
// pre_first_out <= ph[12];
pre_first_out
<=
cntr_h
[
7
:
0
]
==
8'hd
;
pre_first_out
<=
cntr_h
[
7
:
0
]
==
8'hf
;
end
end
/*
output reg signed [FD_WIDTH-1:0] fd_out, //!< frequency domain data in
*/
// horizontal shift stage
// horizontal shift stage
dsp_ma_preadd
#(
dsp_ma_preadd
#(
...
...
mclt_test_01.sav
View file @
f5cc4edf
[*]
[*]
[*] GTKWave Analyzer v3.3.78 (w)1999-2016 BSI
[*] GTKWave Analyzer v3.3.78 (w)1999-2016 BSI
[*] Wed Dec 20
07:04:05
2017
[*] Wed Dec 20
18:03:31
2017
[*]
[*]
[dumpfile] "/home/eyesis/nc393/elphel393/fpga-elphel/x393_branch_dct/simulation/mclt_test_01-201712
19235955852
.fst"
[dumpfile] "/home/eyesis/nc393/elphel393/fpga-elphel/x393_branch_dct/simulation/mclt_test_01-201712
20105946700
.fst"
[dumpfile_mtime] "Wed Dec 20
06:59:58
2017"
[dumpfile_mtime] "Wed Dec 20
17:59:49
2017"
[dumpfile_size] 133
4335
[dumpfile_size] 133
6550
[savefile] "/home/eyesis/nc393/elphel393/fpga-elphel/x393_branch_dct/mclt_test_01.sav"
[savefile] "/home/eyesis/nc393/elphel393/fpga-elphel/x393_branch_dct/mclt_test_01.sav"
[timestart]
569820
0
[timestart] 0
[size] 1814 1171
[size] 1814 1171
[pos] 0 0
[pos] 0 0
*-
14.519981 57779
00 2715000 3535000 3355000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
*-
21.371767 61400
00 2715000 3535000 3355000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
[treeopen] mclt_test_01.
[treeopen] mclt_test_01.
[treeopen] mclt_test_01.mclt16x16_i.
[treeopen] mclt_test_01.mclt16x16_i.
[treeopen] mclt_test_01.mclt16x16_i.dtt_iv_8x8_ad_i.dct_iv8_1d_pass1_0_i.
[treeopen] mclt_test_01.mclt16x16_i.dtt_iv_8x8_ad_i.dct_iv8_1d_pass1_0_i.
...
@@ -142,6 +142,18 @@ mclt_test_01.data_dtt_out[24:0]
...
@@ -142,6 +142,18 @@ mclt_test_01.data_dtt_out[24:0]
mclt_test_01.java_data_dtt_out[24:0]
mclt_test_01.java_data_dtt_out[24:0]
mclt_test_01.diff6
mclt_test_01.diff6
mclt_test_01.diff6a
mclt_test_01.diff6a
@420
mclt_test_01.n7
mclt_test_01.cntr7
@22
mclt_test_01.dout[24:0]
mclt_test_01.java_data_dtt_rot[24:0]
@8420
mclt_test_01.dout[24:0]
mclt_test_01.java_data_dtt_rot[24:0]
@8421
mclt_test_01.diff7
mclt_test_01.diff7a
@1000200
@1000200
-top
-top
@800200
@800200
...
@@ -289,17 +301,17 @@ mclt_test_01.mclt16x16_i.phase_rotator_i.din_34[24:0]
...
@@ -289,17 +301,17 @@ mclt_test_01.mclt16x16_i.phase_rotator_i.din_34[24:0]
mclt_test_01.mclt16x16_i.phase_rotator_i.pout_3[47:0]
mclt_test_01.mclt16x16_i.phase_rotator_i.pout_3[47:0]
mclt_test_01.mclt16x16_i.phase_rotator_i.pout_4[47:0]
mclt_test_01.mclt16x16_i.phase_rotator_i.pout_4[47:0]
@28
@28
mclt_test_01.mclt16x16_i.phase_rotator_i.pre_first_out
mclt_test_01.mclt16x16_i.phase_rotator_i.fd_dv
mclt_test_01.mclt16x16_i.phase_rotator_i.fd_dv
@22
@22
[color] 6
[color] 3
mclt_test_01.mclt16x16_i.phase_rotator_i.fd_out[24:0]
@800200
-dsps
@22
mclt_test_01.mclt16x16_i.phase_rotator_i.fd_out[24:0]
mclt_test_01.mclt16x16_i.phase_rotator_i.fd_out[24:0]
@28
@28
mclt_test_01.mclt16x16_i.phase_rotator_i.pre_first_out
mclt_test_01.mclt16x16_i.phase_rotator_i.pre_dv
mclt_test_01.mclt16x16_i.phase_rotator_i.fd_dv
@22
mclt_test_01.mclt16x16_i.phase_rotator_i.cntr_h[7:0]
@c00200
-dsps
@c00022
@c00022
mclt_test_01.mclt16x16_i.phase_rotator_i.ph[16:0]
mclt_test_01.mclt16x16_i.phase_rotator_i.ph[16:0]
@28
@28
...
@@ -383,15 +395,8 @@ mclt_test_01.mclt16x16_i.phase_rotator_i.selb_3
...
@@ -383,15 +395,8 @@ mclt_test_01.mclt16x16_i.phase_rotator_i.selb_3
mclt_test_01.mclt16x16_i.phase_rotator_i.hv_sin
mclt_test_01.mclt16x16_i.phase_rotator_i.hv_sin
@22
@22
mclt_test_01.mclt16x16_i.phase_rotator_i.shift_hv[6:0]
mclt_test_01.mclt16x16_i.phase_rotator_i.shift_hv[6:0]
@800022
@800200
mclt_test_01.mclt16x16_i.phase_rotator_i.sign_cs[5:0]
-mclt_test_01.mclt16x16_i.phase_rotator_i.sign_cs
@28
(0)mclt_test_01.mclt16x16_i.phase_rotator_i.sign_cs[5:0]
(1)mclt_test_01.mclt16x16_i.phase_rotator_i.sign_cs[5:0]
(2)mclt_test_01.mclt16x16_i.phase_rotator_i.sign_cs[5:0]
(3)mclt_test_01.mclt16x16_i.phase_rotator_i.sign_cs[5:0]
(4)mclt_test_01.mclt16x16_i.phase_rotator_i.sign_cs[5:0]
(5)mclt_test_01.mclt16x16_i.phase_rotator_i.sign_cs[5:0]
@1001200
@1001200
-group_end
-group_end
@28
@28
...
@@ -447,9 +452,11 @@ mclt_test_01.mclt16x16_i.phase_rotator_i.dsp_2_i.DSP48E1_i.qb_o_reg2[17:0]
...
@@ -447,9 +452,11 @@ mclt_test_01.mclt16x16_i.phase_rotator_i.dsp_2_i.DSP48E1_i.qb_o_reg2[17:0]
-dsp48
-dsp48
@1401200
@1401200
-dsp2
-dsp2
@1000200
-dsps
-dsps
@1000200
-rotator
-rotator
@22
mclt_test_01.mclt16x16_i.out_addr[7:0]
@800200
@800200
-mclt16x16
-mclt16x16
@c00022
@c00022
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment