Skip to content
GitLab
Explore
Sign in
Register
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
749fce76
Commit
749fce76
authored
1 year ago
by
Eric Kooistra
Browse files
Options
Downloads
Patches
Plain Diff
Prepare for g_use_aligner_at_first_node, use true to have no functional change yet.
parent
bc8c549e
No related branches found
No related tags found
1 merge request
!389
Resolve L2SDP-1013
Pipeline
#75440
passed
1 year ago
Stage: linting
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_remote.vhd
+34
-18
34 additions, 18 deletions
...s/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_remote.vhd
with
34 additions
and
18 deletions
applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_remote.vhd
+
34
−
18
View file @
749fce76
...
@@ -41,10 +41,10 @@ entity sdp_beamformer_remote is
...
@@ -41,10 +41,10 @@ entity sdp_beamformer_remote is
g_nof_aligners_max
:
natural
:
=
c_sdp_N_pn_max
g_nof_aligners_max
:
natural
:
=
c_sdp_N_pn_max
);
);
port
(
port
(
dp_clk
:
in
std_logic
;
dp_clk
:
in
std_logic
;
dp_rst
:
in
std_logic
;
dp_rst
:
in
std_logic
;
rn_index
:
in
natural
range
0
to
c_sdp_N_pn_max
-
1
:
=
0
;
rn_index
:
in
natural
range
0
to
c_sdp_N_pn_max
-
1
:
=
0
;
local_bf_sosi
:
in
t_dp_sosi
;
local_bf_sosi
:
in
t_dp_sosi
;
from_ri_sosi
:
in
t_dp_sosi
;
from_ri_sosi
:
in
t_dp_sosi
;
...
@@ -68,9 +68,13 @@ end sdp_beamformer_remote;
...
@@ -68,9 +68,13 @@ end sdp_beamformer_remote;
architecture
str
of
sdp_beamformer_remote
is
architecture
str
of
sdp_beamformer_remote
is
constant
c_data_w
:
natural
:
=
c_nof_complex
*
c_sdp_W_beamlet_sum
;
constant
c_data_w
:
natural
:
=
c_nof_complex
*
c_sdp_W_beamlet_sum
;
constant
c_block_size
:
natural
:
=
c_sdp_S_sub_bf
*
c_sdp_N_pol_bf
;
constant
c_block_size
:
natural
:
=
c_sdp_S_sub_bf
*
c_sdp_N_pol_bf
;
constant
c_fifo_size
:
natural
:
=
2
**
ceil_log2
((
c_block_size
*
9
)
/
16
);
-- 9/16 = 36/64, 1 block of 64 bit words rounded to the next power of 2 = 1024.
constant
c_fifo_size
:
natural
:
=
2
**
ceil_log2
((
c_block_size
*
9
)
/
16
);
-- 9/16 = 36/64, 1 block of
-- 64 bit words rounded to the next power of 2 = 1024.
signal
dispatch_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_P_sum
-
1
downto
0
)
:
=
(
others
=>
c_dp_sosi_rst
);
-- 1 for local, 1 for remote.
signal
chain_node_index
:
natural
range
0
to
c_sdp_N_pn_max
-
1
:
=
0
;
-- c_sdp_P_sum = 2 streams, 1 for local, 1 for remote
signal
dispatch_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_P_sum
-
1
downto
0
)
:
=
(
others
=>
c_dp_sosi_rst
);
signal
dp_fifo_sosi
:
t_dp_sosi
:
=
c_dp_sosi_rst
;
signal
dp_fifo_sosi
:
t_dp_sosi
:
=
c_dp_sosi_rst
;
signal
dp_fifo_siso
:
t_dp_siso
:
=
c_dp_siso_rdy
;
signal
dp_fifo_siso
:
t_dp_siso
:
=
c_dp_siso_rdy
;
signal
beamlets_data_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_P_sum
-
1
downto
0
)
:
=
(
others
=>
c_dp_sosi_rst
);
signal
beamlets_data_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_P_sum
-
1
downto
0
)
:
=
(
others
=>
c_dp_sosi_rst
);
...
@@ -82,8 +86,10 @@ begin
...
@@ -82,8 +86,10 @@ begin
p_wire_local_bf_sosi
:
process
(
local_bf_sosi
)
p_wire_local_bf_sosi
:
process
(
local_bf_sosi
)
begin
begin
dispatch_sosi_arr
(
0
)
<=
local_bf_sosi
;
dispatch_sosi_arr
(
0
)
<=
local_bf_sosi
;
dispatch_sosi_arr
(
0
)
.
data
(
c_sdp_W_beamlet_sum
-
1
downto
0
)
<=
local_bf_sosi
.
re
(
c_sdp_W_beamlet_sum
-
1
downto
0
);
dispatch_sosi_arr
(
0
)
.
data
(
c_sdp_W_beamlet_sum
-
1
downto
0
)
<=
dispatch_sosi_arr
(
0
)
.
data
(
c_data_w
-
1
downto
c_sdp_W_beamlet_sum
)
<=
local_bf_sosi
.
im
(
c_sdp_W_beamlet_sum
-
1
downto
0
);
local_bf_sosi
.
re
(
c_sdp_W_beamlet_sum
-
1
downto
0
);
dispatch_sosi_arr
(
0
)
.
data
(
c_data_w
-
1
downto
c_sdp_W_beamlet_sum
)
<=
local_bf_sosi
.
im
(
c_sdp_W_beamlet_sum
-
1
downto
0
);
end
process
;
end
process
;
---------------------------------------------------------------
---------------------------------------------------------------
...
@@ -129,20 +135,30 @@ begin
...
@@ -129,20 +135,30 @@ begin
---------------------------------------------------------------
---------------------------------------------------------------
-- dp_bsn_aligner_v2
-- dp_bsn_aligner_v2
---------------------------------------------------------------
---------------------------------------------------------------
-- The SDP beamformer starts at ring node 0 and outputs at the last ring
-- node, therefore the chain_node_index = the rn_index. The chain_node_index
-- does not wrap, because it starts at ring node 0. Therefore a design with
-- an SDP beamformer that is defined for g_nof_aligners_max = c_sdp_N_pn_max
-- = 16 will also work in a ring with less nodes.
chain_node_index
<=
rn_index
;
u_mmp_dp_bsn_align_v2
:
entity
dp_lib
.
mmp_dp_bsn_align_v2
u_mmp_dp_bsn_align_v2
:
entity
dp_lib
.
mmp_dp_bsn_align_v2
generic
map
(
generic
map
(
-- for dp_bsn_align_v2
-- for dp_bsn_align_v2
g_nof_streams
=>
c_sdp_P_sum
,
g_nof_streams
=>
c_sdp_P_sum
,
g_bsn_latency_max
=>
2
,
-- max 2 blocks latency
g_bsn_latency_max
=>
2
,
-- max 2 blocks latency
g_nof_aligners_max
=>
g_nof_aligners_max
,
g_use_aligner_at_first_node
=>
true
,
g_block_size
=>
c_block_size
,
g_nof_aligners_max
=>
g_nof_aligners_max
,
g_data_w
=>
c_data_w
,
g_block_size
=>
c_block_size
,
g_use_mm_output
=>
false
,
g_data_w
=>
c_data_w
,
g_rd_latency
=>
1
,
g_use_mm_output
=>
false
,
g_rd_latency
=>
1
,
-- for mms_dp_bsn_monitor_v2
-- for mms_dp_bsn_monitor_v2
g_nof_clk_per_sync
=>
c_sdp_N_clk_sync_timeout
,
-- Using c_sdp_N_clk_sync_timeout as g_nof_clk_per_sync is used for BSN monitor timeout.
g_nof_clk_per_sync
=>
c_sdp_N_clk_sync_timeout
,
-- Using c_sdp_N_clk_sync_timeout as g_nof_clk_per_sync
g_nof_input_bsn_monitors
=>
c_sdp_P_sum
,
-- is used for BSN monitor timeout.
g_use_bsn_output_monitor
=>
true
g_nof_input_bsn_monitors
=>
c_sdp_P_sum
,
g_use_bsn_output_monitor
=>
true
)
)
port
map
(
port
map
(
-- Memory-mapped clock domain
-- Memory-mapped clock domain
...
@@ -162,7 +178,7 @@ begin
...
@@ -162,7 +178,7 @@ begin
dp_rst
=>
dp_rst
,
dp_rst
=>
dp_rst
,
dp_clk
=>
dp_clk
,
dp_clk
=>
dp_clk
,
node_index
=>
rn
_index
,
chain_
node_index
=>
chain_node
_index
,
-- Streaming input
-- Streaming input
in_sosi_arr
=>
dispatch_sosi_arr
,
in_sosi_arr
=>
dispatch_sosi_arr
,
...
...
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