Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
H
HDL
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RTSD
HDL
Commits
190d433f
Commit
190d433f
authored
2 years ago
by
Eric Kooistra
Browse files
Options
Downloads
Patches
Plain Diff
Renamed signals to make it easier to track them.
parent
006f2feb
Branches
Branches containing commit
No related tags found
1 merge request
!311
Correct beamlet output indexing in tr_10GbE_src_out.data. Verify exact beamlet...
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
applications/lofar2/libraries/sdp/src/vhdl/node_sdp_oversampled_filterbank.vhd
+41
-34
41 additions, 34 deletions
...ibraries/sdp/src/vhdl/node_sdp_oversampled_filterbank.vhd
with
41 additions
and
34 deletions
applications/lofar2/libraries/sdp/src/vhdl/node_sdp_oversampled_filterbank.vhd
+
41
−
34
View file @
190d433f
...
@@ -107,7 +107,10 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS
...
@@ -107,7 +107,10 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS
NATURAL
'IMAGE
(
c_sdp_W_sub_weight
)
&
"b"
&
NATURAL
'IMAGE
(
c_sdp_W_sub_weight
)
&
"b"
&
NATURAL
'IMAGE
(
c_sdp_W_sub_weight_fraction
)
&
"f_unit"
;
NATURAL
'IMAGE
(
c_sdp_W_sub_weight_fraction
)
&
"f_unit"
;
-- Use quantized subbands
-- Use quantized subbands, so c_subband_raw_dat_w = 18b.
-- . Maybe later use raw subbands like in node_sdp_filterbank, but for now
-- appling subband weights and bf weights at c_sdp_W_subband = 18b subbands
-- is acceptable.
CONSTANT
c_subband_raw_dat_w
:
NATURAL
:
=
c_sdp_W_subband
;
CONSTANT
c_subband_raw_dat_w
:
NATURAL
:
=
c_sdp_W_subband
;
CONSTANT
c_subband_raw_fraction_w
:
NATURAL
:
=
0
;
CONSTANT
c_subband_raw_fraction_w
:
NATURAL
:
=
0
;
...
@@ -118,11 +121,11 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS
...
@@ -118,11 +121,11 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS
CONSTANT
c_complex_pfb_pipeline
:
NATURAL
:
=
2
;
CONSTANT
c_complex_pfb_pipeline
:
NATURAL
:
=
2
;
-- Use WG as local oscillator, buf contains 16b sin and 16b cos
-- Use WG as local oscillator, buf contains 16b sin and 16b cos
-- . c_sdp_W_local_oscillator =
c_halfword_w =
16b
-- . c_sdp_W_local_oscillator = 16b
-- . c_sdp_W_local_oscillator_fraction = 16b - 1 sign bit = 15b
-- . c_sdp_W_local_oscillator_fraction = 16b - 1 sign bit = 15b
CONSTANT
c_buf
:
t_c_mem
:
=
(
latency
=>
1
,
CONSTANT
c_buf
:
t_c_mem
:
=
(
latency
=>
1
,
adr_w
=>
ceil_log2
(
2
*
c_sdp_N_fft
),
adr_w
=>
ceil_log2
(
2
*
c_sdp_N_fft
),
dat_w
=>
c_nof_complex
*
c_
halfword_w
,
dat_w
=>
c_nof_complex
*
c_
sdp_W_local_oscillator
,
nof_dat
=>
c_sdp_R_os
*
c_sdp_N_fft
,
nof_dat
=>
c_sdp_R_os
*
c_sdp_N_fft
,
init_sl
=>
'0'
);
init_sl
=>
'0'
);
...
@@ -171,18 +174,22 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS
...
@@ -171,18 +174,22 @@ ARCHITECTURE str OF node_sdp_oversampled_filterbank IS
SIGNAL
wpfb_unit_out_sosi_arr_piped
:
t_dp_sosi_arr
(
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
wpfb_unit_out_sosi_arr_piped
:
t_dp_sosi_arr
(
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
-- Mixer to shift f_sub/2
-- Mixer to shift f_sub/2
SIGNAL
complex_mult_src_out_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
mixer_
complex_mult_src_out_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
requantize_src_out_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
mixer_complex_
requantize_src_out_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
-- Complex input FFT (from LO mixer)
SIGNAL
wpfb_unit_complex_in_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
wpfb_unit_complex_in_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
wpfb_unit_complex_fil_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
wpfb_unit_complex_fil_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
wpfb_unit_complex_out_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
wpfb_unit_complex_out_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
wpfb_unit_out_resized_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
wpfb_fifo_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
-- Remove negative frequencies
SIGNAL
wpfb_fifo_siso_arr
:
t_dp_siso_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_siso_rst
);
SIGNAL
wpfb_complex_out_resized_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
wpfb_resized_sosi_2arr
:
t_dp_sosi_2arr_2
(
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
(
OTHERS
=>
c_dp_sosi_rst
));
SIGNAL
wpfb_resized_siso_2arr
:
t_dp_siso_2arr_2
(
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
(
OTHERS
=>
c_dp_siso_rst
));
-- Interleave positive frequencies per factor Q_fft = 2, like with output of real input FFT
SIGNAL
wpfb_complex_out_fifo_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
wpfb_complex_out_fifo_siso_arr
:
t_dp_siso_arr
(
c_sdp_S_pn
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_siso_rst
);
SIGNAL
wpfb_complex_out_resized_sosi_2arr
:
t_dp_sosi_2arr_2
(
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
(
OTHERS
=>
c_dp_sosi_rst
));
SIGNAL
wpfb_complex_out_resized_siso_2arr
:
t_dp_siso_2arr_2
(
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
(
OTHERS
=>
c_dp_siso_rst
));
SIGNAL
subband_equalizer_in_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_R_os
*
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
subband_equalizer_in_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_R_os
*
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
subband_equalizer_out_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_R_os
*
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
subband_equalizer_out_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_R_os
*
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
...
@@ -342,23 +349,23 @@ BEGIN
...
@@ -342,23 +349,23 @@ BEGIN
gen_complex_mult
:
FOR
I
IN
0
TO
c_sdp_S_pn
-1
GENERATE
gen_complex_mult
:
FOR
I
IN
0
TO
c_sdp_S_pn
-1
GENERATE
u_common_complex_mult
:
ENTITY
common_mult_lib
.
common_complex_mult
u_common_complex_mult
:
ENTITY
common_mult_lib
.
common_complex_mult
GENERIC
MAP
(
GENERIC
MAP
(
g_in_a_w
=>
c_halfword_w
,
-- =
c_sdp_W_local_oscillator = 16
g_in_a_w
=>
c_sdp_W_local_oscillator
,
--
= 16
g_in_b_w
=>
c_sdp_W_adc
,
g_in_b_w
=>
c_sdp_W_adc
,
-- = 14
g_out_p_w
=>
c_
halfword_w
+
c_sdp_W_adc
,
g_out_p_w
=>
c_
sdp_W_local_oscillator
+
c_sdp_W_adc
,
-- = 16 + 14 = 30
g_conjugate_b
=>
FALSE
g_conjugate_b
=>
FALSE
)
)
PORT
MAP
(
PORT
MAP
(
clk
=>
dp_clk
,
clk
=>
dp_clk
,
clken
=>
'1'
,
clken
=>
'1'
,
rst
=>
dp_rst
,
rst
=>
dp_rst
,
in_ar
=>
wg_out_dat
(
c_
halfword_w
-1
DOWNTO
0
),
in_ar
=>
wg_out_dat
(
c_
sdp_W_local_oscillator
-1
DOWNTO
0
),
in_ai
=>
wg_out_dat
(
2
*
c_
halfword_w
-1
DOWNTO
c_halfword_w
),
in_ai
=>
wg_out_dat
(
2
*
c_
sdp_W_local_oscillator
-1
DOWNTO
c_sdp_W_local_oscillator
),
in_br
=>
si_sosi_arr
(
I
)
.
data
(
c_sdp_W_adc
-1
DOWNTO
0
),
in_br
=>
si_sosi_arr
(
I
)
.
data
(
c_sdp_W_adc
-1
DOWNTO
0
),
in_bi
=>
(
OTHERS
=>
'0'
),
in_bi
=>
(
OTHERS
=>
'0'
),
in_val
=>
si_sosi_arr
(
I
)
.
valid
,
in_val
=>
si_sosi_arr
(
I
)
.
valid
,
out_pr
=>
complex_mult_src_out_arr
(
I
)
.
re
(
c_
halfword_w
+
c_sdp_W_adc
-1
DOWNTO
0
),
out_pr
=>
mixer_
complex_mult_src_out_arr
(
I
)
.
re
(
c_
sdp_W_local_oscillator
+
c_sdp_W_adc
-1
DOWNTO
0
),
out_pi
=>
complex_mult_src_out_arr
(
I
)
.
im
(
c_
halfword_w
+
c_sdp_W_adc
-1
DOWNTO
0
),
out_pi
=>
mixer_
complex_mult_src_out_arr
(
I
)
.
im
(
c_
sdp_W_local_oscillator
+
c_sdp_W_adc
-1
DOWNTO
0
),
out_val
=>
complex_mult_src_out_arr
(
I
)
.
valid
out_val
=>
mixer_
complex_mult_src_out_arr
(
I
)
.
valid
);
);
--requantize
--requantize
...
@@ -373,16 +380,16 @@ BEGIN
...
@@ -373,16 +380,16 @@ BEGIN
g_msb_clip_symmetric
=>
FALSE
,
g_msb_clip_symmetric
=>
FALSE
,
g_pipeline_remove_lsb
=>
0
,
g_pipeline_remove_lsb
=>
0
,
g_pipeline_remove_msb
=>
0
,
g_pipeline_remove_msb
=>
0
,
g_in_dat_w
=>
c_
halfword_w
+
c_sdp_W_adc
,
g_in_dat_w
=>
c_
sdp_W_local_oscillator
+
c_sdp_W_adc
,
g_out_dat_w
=>
c_sdp_W_adc
g_out_dat_w
=>
c_sdp_W_adc
)
)
PORT
MAP
(
PORT
MAP
(
rst
=>
dp_rst
,
rst
=>
dp_rst
,
clk
=>
dp_clk
,
clk
=>
dp_clk
,
-- ST sink
-- ST sink
snk_in
=>
complex_mult_src_out_arr
(
I
),
snk_in
=>
mixer_
complex_mult_src_out_arr
(
I
),
-- ST source
-- ST source
src_out
=>
requantize_src_out_arr
(
I
)
src_out
=>
mixer_complex_
requantize_src_out_arr
(
I
)
);
);
END
GENERATE
;
END
GENERATE
;
...
@@ -411,12 +418,12 @@ BEGIN
...
@@ -411,12 +418,12 @@ BEGIN
in_dat
=>
dp_bsn_source_restart_pipe
,
in_dat
=>
dp_bsn_source_restart_pipe
,
out_dat
=>
dp_bsn_source_restart_pipe_complex
out_dat
=>
dp_bsn_source_restart_pipe_complex
);
);
PROCESS
(
requantize_src_out_arr
,
si_sosi_0_piped
)
PROCESS
(
mixer_complex_
requantize_src_out_arr
,
si_sosi_0_piped
)
BEGIN
BEGIN
FOR
I
IN
0
TO
c_sdp_S_pn
-1
LOOP
FOR
I
IN
0
TO
c_sdp_S_pn
-1
LOOP
wpfb_unit_complex_in_sosi_arr
(
I
)
<=
si_sosi_0_piped
;
wpfb_unit_complex_in_sosi_arr
(
I
)
<=
si_sosi_0_piped
;
wpfb_unit_complex_in_sosi_arr
(
I
)
.
re
<=
requantize_src_out_arr
(
I
)
.
re
;
wpfb_unit_complex_in_sosi_arr
(
I
)
.
re
<=
mixer_complex_
requantize_src_out_arr
(
I
)
.
re
;
wpfb_unit_complex_in_sosi_arr
(
I
)
.
im
<=
requantize_src_out_arr
(
I
)
.
im
;
wpfb_unit_complex_in_sosi_arr
(
I
)
.
im
<=
mixer_complex_
requantize_src_out_arr
(
I
)
.
im
;
END
LOOP
;
END
LOOP
;
END
PROCESS
;
END
PROCESS
;
...
@@ -461,7 +468,7 @@ BEGIN
...
@@ -461,7 +468,7 @@ BEGIN
rst
=>
dp_rst
,
rst
=>
dp_rst
,
clk
=>
dp_clk
,
clk
=>
dp_clk
,
snk_in
=>
wpfb_unit_complex_out_sosi_arr
(
I
),
snk_in
=>
wpfb_unit_complex_out_sosi_arr
(
I
),
src_out
=>
wpfb_
unit
_out_resized_sosi_arr
(
I
)
src_out
=>
wpfb_
complex
_out_resized_sosi_arr
(
I
)
);
);
END
GENERATE
;
END
GENERATE
;
...
@@ -479,18 +486,18 @@ BEGIN
...
@@ -479,18 +486,18 @@ BEGIN
PORT
MAP
(
PORT
MAP
(
rst
=>
dp_rst
,
rst
=>
dp_rst
,
clk
=>
dp_clk
,
clk
=>
dp_clk
,
snk_in
=>
wpfb_
unit
_out_resized_sosi_arr
(
I
),
snk_in
=>
wpfb_
complex
_out_resized_sosi_arr
(
I
),
src_out
=>
wpfb_fifo_sosi_arr
(
I
),
src_out
=>
wpfb_
complex_out_
fifo_sosi_arr
(
I
),
src_in
=>
wpfb_fifo_siso_arr
(
I
)
src_in
=>
wpfb_
complex_out_
fifo_siso_arr
(
I
)
);
);
END
GENERATE
;
END
GENERATE
;
-- rewire 1d array of 1 X S_pn to 2d array of 2 X P_pfb
-- rewire 1d array of 1 X S_pn to 2d array of 2 X P_pfb
gen_rewire
:
FOR
I
IN
0
TO
c_sdp_P_pfb
-1
GENERATE
gen_rewire
:
FOR
I
IN
0
TO
c_sdp_P_pfb
-1
GENERATE
wpfb_resized_sosi_2arr
(
I
)(
0
)
<=
wpfb_fifo_sosi_arr
(
2
*
I
);
wpfb_
complex_out_
resized_sosi_2arr
(
I
)(
0
)
<=
wpfb_
complex_out_
fifo_sosi_arr
(
2
*
I
);
wpfb_resized_sosi_2arr
(
I
)(
1
)
<=
wpfb_fifo_sosi_arr
(
2
*
I
+
1
);
wpfb_
complex_out_
resized_sosi_2arr
(
I
)(
1
)
<=
wpfb_
complex_out_
fifo_sosi_arr
(
2
*
I
+
1
);
wpfb_fifo_siso_arr
(
2
*
I
)
<=
wpfb_resized_siso_2arr
(
I
)(
0
);
wpfb_
complex_out_
fifo_siso_arr
(
2
*
I
)
<=
wpfb_
complex_out_
resized_siso_2arr
(
I
)(
0
);
wpfb_fifo_siso_arr
(
2
*
I
+
1
)
<=
wpfb_resized_siso_2arr
(
I
)(
1
);
wpfb_
complex_out_
fifo_siso_arr
(
2
*
I
+
1
)
<=
wpfb_
complex_out_
resized_siso_2arr
(
I
)(
1
);
END
GENERATE
;
END
GENERATE
;
-- Interleave 2 to 1 for all S_pn signals.
-- Interleave 2 to 1 for all S_pn signals.
...
@@ -502,8 +509,8 @@ BEGIN
...
@@ -502,8 +509,8 @@ BEGIN
PORT
MAP
(
PORT
MAP
(
rst
=>
dp_rst
,
rst
=>
dp_rst
,
clk
=>
dp_clk
,
clk
=>
dp_clk
,
snk_in_arr
=>
wpfb_resized_sosi_2arr
(
I
),
snk_in_arr
=>
wpfb_
complex_out_
resized_sosi_2arr
(
I
),
snk_out_arr
=>
wpfb_resized_siso_2arr
(
I
),
snk_out_arr
=>
wpfb_
complex_out_
resized_siso_2arr
(
I
),
src_out
=>
subband_equalizer_in_sosi_arr
(
c_sdp_P_pfb
+
I
)
src_out
=>
subband_equalizer_in_sosi_arr
(
c_sdp_P_pfb
+
I
)
);
);
END
GENERATE
;
END
GENERATE
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment