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
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RTSD
HDL
Merge requests
!97
initial commit of node_sdp_correlator and st_xsq_dp_to_mm
Code
Review changes
Check out branch
Open in Workspace
Download
Patches
Plain diff
Expand sidebar
Merged
initial commit of node_sdp_correlator and st_xsq_dp_to_mm
L2SDP-286
into
master
Overview
3
Commits
2
Pipelines
0
Changes
5
2 open threads
Hide all comments
Merged
initial commit of node_sdp_correlator and st_xsq_dp_to_mm
Reinier van der Walle
requested to merge
L2SDP-286
into
master
May 25, 2021
Overview
3
Commits
2
Pipelines
0
Changes
5
2 open threads
Hide all comments
Closes
L2SDP-286
0
0
Merge request reports
Compare
master
version 1
58a12a2b
May 25, 2021
master (base)
and
latest version
latest version
cba6abc2
2 commits,
May 26, 2021
version 1
58a12a2b
1 commit,
May 25, 2021
5 files
+
432
−
0
Side-by-side
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
5
applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd
0 → 100644
+
299
−
0
View file @ cba6abc2
Edit in single-file editor
Open in Web IDE
-------------------------------------------------------------------------------
--
-- Copyright 2021
-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
--
-- Author: R. van der Walle
-- Purpose:
-- . Implements the functionality of the Subband Correlator in the
-- LOFAR2 SDPFW design.
-- Description:
-- Remark:
-- .
-------------------------------------------------------------------------------
LIBRARY
IEEE
,
common_lib
,
dp_lib
,
reorder_lib
,
st_lib
,
mm_lib
;
USE
IEEE
.
STD_LOGIC_1164
.
ALL
;
USE
common_lib
.
common_pkg
.
ALL
;
USE
common_lib
.
common_mem_pkg
.
ALL
;
USE
common_lib
.
common_network_layers_pkg
.
ALL
;
USE
dp_lib
.
dp_stream_pkg
.
ALL
;
USE
work
.
sdp_pkg
.
ALL
;
ENTITY
node_sdp_correlator
IS
GENERIC
(
g_sim
:
BOOLEAN
:
=
FALSE
;
g_P_sq
:
NATURAL
:
=
c_sdp_P_sq
--g_offload_time : NATURAL := c_sdp_offload_time
);
PORT
(
dp_clk
:
IN
STD_LOGIC
;
dp_rst
:
IN
STD_LOGIC
;
in_sosi_arr
:
IN
t_dp_sosi_arr
(
c_sdp_P_pfb
-1
DOWNTO
0
);
--xst_udp_sosi : OUT t_dp_sosi;
--xst_udp_siso : IN t_dp_siso;
mm_rst
:
IN
STD_LOGIC
;
mm_clk
:
IN
STD_LOGIC
;
reg_dp_sync_insert_v2_mosi
:
IN
t_mem_mosi
:
=
c_mem_mosi_rst
;
reg_dp_sync_insert_v2_miso
:
OUT
t_mem_miso
;
reg_crosslets_info_mosi
:
IN
t_mem_mosi
:
=
c_mem_mosi_rst
;
reg_crosslets_info_miso
:
OUT
t_mem_miso
;
reg_bsn_scheduler_xsub_mosi
:
IN
t_mem_mosi
:
=
c_mem_mosi_rst
;
reg_bsn_scheduler_xsub_miso
:
OUT
t_mem_miso
;
ram_st_xsq_mosi
:
IN
t_mem_mosi
:
=
c_mem_mosi_rst
;
ram_st_xsq_miso
:
OUT
t_mem_miso
;
--sdp_info : IN t_sdp_info;
--gn_id : IN STD_LOGIC_VECTOR(c_sdp_W_gn_id-1 DOWNTO 0);
--stat_eth_src_mac : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0);
--stat_ip_src_addr : IN STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0);
--stat_udp_src_port : IN STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0)
out_crosslets_info
:
OUT
STD_LOGIC_VECTOR
(
c_sdp_crosslets_info_reg_w
-1
DOWNTO
0
)
);
END
node_sdp_correlator
;
ARCHITECTURE
str
OF
node_sdp_correlator
IS
-- CONSTANT c_nof_masters : POSITIVE := 2;
-- crosslet statistics offload
-- SIGNAL ram_st_offload_mosi : t_mem_mosi := c_mem_mosi_rst;
-- SIGNAL ram_st_offload_miso : t_mem_miso := c_mem_miso_rst;
-- SIGNAL master_mem_mux_mosi : t_mem_mosi := c_mem_mosi_rst;
-- SIGNAL master_mem_mux_miso : t_mem_miso := c_mem_miso_rst;
-- SIGNAL master_mosi_arr : t_mem_mosi_arr(0 TO c_nof_masters-1) := (OTHERS=>c_mem_mosi_rst);
-- SIGNAL master_miso_arr : t_mem_miso_arr(0 TO c_nof_masters-1) := (OTHERS=>c_mem_miso_rst);
SIGNAL
quant_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
xin_sosi_arr
:
t_dp_sosi_arr
(
c_sdp_P_pfb
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
xsel_sosi
:
t_dp_sosi
:
=
c_dp_sosi_rst
;
SIGNAL
crosslets_sosi_arr
:
t_dp_sosi_arr
(
g_P_sq
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_dp_sosi_rst
);
SIGNAL
crosslets_mosi_arr
:
t_mem_mosi_arr
(
g_P_sq
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_mem_mosi_rst
);
SIGNAL
crosslets_miso_arr
:
t_mem_miso_arr
(
g_P_sq
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
c_mem_miso_rst
);
BEGIN
---------------------------------------------------------------
-- Requantize 18b to 16b
---------------------------------------------------------------
gen_requantize
:
FOR
I
IN
0
TO
c_sdp_P_pfb
-1
GENERATE
u_dp_requantize
:
ENTITY
dp_lib
.
dp_requantize
GENERIC
MAP
(
g_complex
=>
TRUE
,
g_representation
=>
"SIGNED"
,
g_lsb_w
=>
0
,
g_lsb_round
=>
TRUE
,
g_lsb_round_clip
=>
FALSE
,
g_msb_clip
=>
TRUE
,
g_msb_clip_symmetric
=>
FALSE
,
g_in_dat_w
=>
c_sdp_W_subband
,
g_out_dat_w
=>
c_sdp_W_crosslet
)
PORT
MAP
(
rst
=>
dp_rst
,
clk
=>
dp_clk
,
snk_in
=>
in_sosi_arr
(
I
),
src_out
=>
quant_sosi_arr
(
I
)
);
END
GENERATE
;
---------------------------------------------------------------
-- dp_sync_insert_v2
---------------------------------------------------------------
u_dp_sync_insert_v2
:
ENTITY
dp_lib
.
dp_sync_insert_v2
GENERIC
MAP
(
g_nof_streams
=>
c_sdp_P_pfb
,
g_nof_blk_per_sync
=>
200000
,
g_nof_blk_per_sync_min
=>
19530
)
PORT
MAP
(
dp_rst
=>
dp_rst
,
dp_clk
=>
dp_clk
,
mm_rst
=>
mm_rst
,
mm_clk
=>
mm_clk
,
reg_mosi
=>
reg_dp_sync_insert_v2_mosi
,
reg_miso
=>
reg_dp_sync_insert_v2_miso
,
in_sosi_arr
=>
quant_sosi_arr
,
out_sosi_arr
=>
xin_sosi_arr
);
---------------------------------------------------------------
-- Crosslet Subband Select
---------------------------------------------------------------
u_crosslets_subband_select
:
ENTITY
work
.
sdp_crosslets_subband_select
GENERIC
MAP
(
g_N_crosslets
=>
c_sdp_N_crosslets
)
PORT
MAP
(
dp_clk
=>
dp_clk
,
dp_rst
=>
dp_rst
,
in_sosi_arr
=>
xin_sosi_arr
,
out_sosi
=>
xsel_sosi
,
mm_rst
=>
mm_rst
,
mm_clk
=>
mm_clk
,
reg_crosslets_info_mosi
=>
reg_crosslets_info_mosi
,
reg_crosslets_info_miso
=>
reg_crosslets_info_miso
,
reg_bsn_scheduler_xsub_mosi
=>
reg_bsn_scheduler_xsub_mosi
,
reg_bsn_scheduler_xsub_miso
=>
reg_bsn_scheduler_xsub_miso
,
out_crosslets_info
=>
out_crosslets_info
);
---------------------------------------------------------------
-- Repack 32b to 64b
---------------------------------------------------------------
-- Not implemented yet
---------------------------------------------------------------
-- ring_mux
---------------------------------------------------------------
-- Not implemented yet
---------------------------------------------------------------
-- Repack 64b to 32b
---------------------------------------------------------------
-- Not implemented yet
---------------------------------------------------------------
-- dp_demux
---------------------------------------------------------------
-- Not implemented yet
---------------------------------------------------------------
-- dp_bsn_aligner_v2 Not implemented yet, using st_xsq_dp_to_mm as a tempory replacement
---------------------------------------------------------------
gen_dp_to_mm
:
FOR
I
IN
0
TO
g_P_sq
-1
GENERATE
u_st_xsq_dp_to_mm
:
ENTITY
st_lib
.
st_xsq_dp_to_mm
GENERIC
MAP
(
g_nof_crosslets
=>
c_sdp_N_crosslets
,
g_nof_signal_inputs
=>
c_sdp_S_pn
,
g_dsp_data_w
=>
c_sdp_W_crosslet
)
PORT
MAP
(
rst
=>
dp_rst
,
clk
=>
dp_clk
,
in_sosi
=>
xsel_sosi
,
out_sosi_info
=>
crosslets_sosi_arr
(
I
),
mm_mosi
=>
crosslets_mosi_arr
(
I
),
mm_miso
=>
crosslets_miso_arr
(
I
)
);
END
GENERATE
;
---------------------------------------------------------------
-- Crosslets Statistics (XST)
---------------------------------------------------------------
u_crosslets_stats
:
ENTITY
st_lib
.
st_xst
GENERIC
MAP
(
g_nof_streams
=>
g_P_sq
,
g_nof_crosslets
=>
c_sdp_N_crosslets
,
g_nof_signal_inputs
=>
c_sdp_S_pn
,
g_in_data_w
=>
c_sdp_W_crosslet
,
g_stat_data_w
=>
c_longword_w
,
g_stat_data_sz
=>
c_longword_sz
/
c_word_sz
)
PORT
MAP
(
mm_rst
=>
mm_rst
,
mm_clk
=>
mm_clk
,
dp_rst
=>
dp_rst
,
dp_clk
=>
dp_clk
,
in_sosi
=>
crosslets_sosi_arr
(
0
),
mm_mosi_arr
=>
crosslets_mosi_arr
,
mm_miso_arr
=>
crosslets_miso_arr
,
ram_st_xsq_mosi
=>
ram_st_xsq_mosi
,
--master_mem_mux_mosi,
ram_st_xsq_miso
=>
ram_st_xsq_miso
--master_mem_mux_miso
);
-- ---------------------------------------------------------------
-- -- MM master multiplexer
-- ---------------------------------------------------------------
-- -- Connect 2 mm_masters to the common_mem_mux output
-- master_mosi_arr(0) <= ram_st_bst_mosi; -- MM access via QSYS MM bus
-- ram_st_bst_miso <= master_miso_arr(0);
-- master_mosi_arr(1) <= ram_st_offload_mosi; -- MM access by SST offload
-- ram_st_offload_miso <= master_miso_arr(1);
--
-- u_mem_master_mux : ENTITY mm_lib.mm_master_mux
-- GENERIC MAP (
-- g_nof_masters => c_nof_masters,
-- g_rd_latency_min => 1 -- read latency of statistics RAM is 1
-- )
-- PORT MAP (
-- mm_clk => mm_clk,
--
-- master_mosi_arr => master_mosi_arr,
-- master_miso_arr => master_miso_arr,
-- mux_mosi => master_mem_mux_mosi,
-- mux_miso => master_mem_mux_miso
-- );
--
-- ---------------------------------------------------------------
-- -- XST UDP offload
-- ---------------------------------------------------------------
-- u_sdp_bst_udp_offload: ENTITY work.sdp_statistics_offload
-- GENERIC MAP (
-- g_statistics_type => "XST",
-- g_offload_time => g_offload_time,
-- g_beamset_id => g_beamset_id
-- )
-- PORT MAP (
-- mm_clk => mm_clk,
-- mm_rst => mm_rst,
--
-- dp_clk => dp_clk,
-- dp_rst => dp_rst,
--
-- master_mosi => ram_st_offload_mosi,
-- master_miso => ram_st_offload_miso,
--
-- reg_enable_mosi => reg_stat_enable_mosi,
-- reg_enable_miso => reg_stat_enable_miso,
--
-- reg_hdr_dat_mosi => reg_stat_hdr_dat_mosi,
-- reg_hdr_dat_miso => reg_stat_hdr_dat_miso,
--
-- sdp_info => sdp_info,
-- gn_index => TO_UINT(gn_id),
--
-- in_sosi => bf_sum_sosi,
-- out_sosi => bst_udp_sosi,
-- out_siso => bst_udp_siso,
--
-- eth_src_mac => stat_eth_src_mac,
-- udp_src_port => stat_udp_src_port,
-- ip_src_addr => stat_ip_src_addr
-- );
END
str
;
Loading