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
Commits
7cc6f645
Commit
7cc6f645
authored
Aug 27, 2015
by
Pepping
Browse files
Options
Downloads
Patches
Plain Diff
Added block generator and BSN monitor
parent
05f5d8be
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
applications/apertif/designs/apertif_unb1_correlator/src/vhdl/node_apertif_unb1_correlator_processing.vhd
+154
-51
154 additions, 51 deletions
...ator/src/vhdl/node_apertif_unb1_correlator_processing.vhd
with
154 additions
and
51 deletions
applications/apertif/designs/apertif_unb1_correlator/src/vhdl/node_apertif_unb1_correlator_processing.vhd
+
154
−
51
View file @
7cc6f645
...
...
@@ -63,7 +63,9 @@ ENTITY node_apertif_unb1_correlator_processing IS
g_sim
:
BOOLEAN
:
=
FALSE
;
-- Overridden by TB
g_sim_fast
:
BOOLEAN
:
=
TRUE
;
-- TRUE = fast accumulator model and no inter-channel delay in the correlator output stream.
g_use_db
:
BOOLEAN
:
=
FALSE
;
g_use_bg
:
BOOLEAN
:
=
FALSE
;
g_use_wpfb
:
BOOLEAN
:
=
TRUE
;
--
g_use_chan_stats
:
BOOLEAN
:
=
FALSE
;
g_use_cor
:
BOOLEAN
:
=
TRUE
;
--
g_usr_data_w
:
NATURAL
:
=
16
;
-- Specifies the datawidth of Re + Im
g_nof_input_streams
:
NATURAL
:
=
8
;
-- 8: Indicates the number of input streams, where each stream is coming from a unique node.
...
...
@@ -92,11 +94,25 @@ ENTITY node_apertif_unb1_correlator_processing IS
reg_diag_data_buf_mosi
:
IN
t_mem_mosi
:
=
c_mem_mosi_rst
;
reg_diag_data_buf_miso
:
OUT
t_mem_miso
;
-- . block generator
reg_diag_bg_mosi
:
IN
t_mem_mosi
:
=
c_mem_mosi_rst
;
reg_diag_bg_miso
:
OUT
t_mem_miso
;
ram_diag_bg_mosi
:
IN
t_mem_mosi
:
=
c_mem_mosi_rst
;
ram_diag_bg_miso
:
OUT
t_mem_miso
;
-- MM
--. Filterbank
ram_fil_coefs_mosi
:
IN
t_mem_mosi
;
ram_fil_coefs_miso
:
OUT
t_mem_miso
;
--. Channel stats
ram_st_sst_mosi
:
IN
t_mem_mosi
;
ram_st_sst_miso
:
OUT
t_mem_miso
;
--. BSN Monitor
reg_bsn_monitor_mosi
:
IN
t_mem_mosi
;
reg_bsn_monitor_miso
:
OUT
t_mem_miso
;
--. 1GbE visibility offload TX
reg_dp_offload_tx_hdr_dat_mosi
:
IN
t_mem_mosi
;
reg_dp_offload_tx_hdr_dat_miso
:
OUT
t_mem_miso
...
...
@@ -114,11 +130,21 @@ ARCHITECTURE str OF node_apertif_unb1_correlator_processing IS
CONSTANT
c_nof_interleaved_streams
:
NATURAL
:
=
c_nof_10GbE_streams
*
c_nof_bf_modules
;
-- 12
CONSTANT
c_nof_deinterleaved_streams
:
NATURAL
:
=
c_interleave_factor
*
c_nof_interleaved_streams
;
-- 24
CONSTANT
c_compl_dat_w
:
NATURAL
:
=
g_usr_data_w
/
c_nof_complex
;
-- 16/2=8
CONSTANT
c_block_period
:
NATURAL
:
=
186
;
--256; --FIXME: first block size was 176/256. Now 128/186,18 (non-integer...), assuming 186 is OK.
CONSTANT
c_nof_blocks_per_sync
:
NATURAL
:
=
800000
;
CONSTANT
c_nof_blk_per_sync
:
NATURAL
:
=
sel_a_b
(
g_sim
,
16
,
c_nof_blocks_per_sync
);
-- Re- and Deinterleaver
CONSTANT
c_use_complex
:
BOOLEAN
:
=
TRUE
;
-----------------------------------------------------------------------------
-- Block Generator
-----------------------------------------------------------------------------
CONSTANT
c_bg_nof_streams
:
NATURAL
:
=
c_nof_interleaved_streams
;
CONSTANT
c_bg_dat_w
:
NATURAL
:
=
16
;
CONSTANT
c_bg_addr_w
:
NATURAL
:
=
7
;
CONSTANT
c_bg_file_name_prefix
:
STRING
:
=
"hex/composite_signals"
;
-- Correlator
CONSTANT
c_nof_cor_inputs
:
NATURAL
:
=
c_nof_deinterleaved_streams
;
CONSTANT
c_nof_input_folds
:
NATURAL
:
=
1
;
...
...
@@ -194,11 +220,18 @@ ARCHITECTURE str OF node_apertif_unb1_correlator_processing IS
CONSTANT
c_db_data_w
:
NATURAL
:
=
c_nof_complex
*
c_wpfb_in_dat_w
;
-- 16 = 8b real + 8bit imaginary
CONSTANT
c_db_nof_data
:
NATURAL
:
=
8
;
-- BSN Monitor
CONSTANT
c_nof_bsn_mon_streams
:
NATURAL
:
=
6
;
CONSTANT
c_bsn_sync_time_out
:
NATURAL
:
=
(
c_block_period
*
c_nof_blocks_per_sync
*
10
)
/
8
;
--*10/8 as margin
SIGNAL
reinterleave_in_arr
:
t_dp_sosi_arr
(
c_nof_cor_inputs
-1
DOWNTO
0
);
SIGNAL
reinterleave_out_arr
:
t_dp_sosi_arr
(
c_nof_interleaved_streams
-1
DOWNTO
0
);
SIGNAL
dp_pipeline_src_out
:
t_dp_sosi
;
-- Block Generator
SIGNAL
bg_snk_in_arr
:
t_dp_sosi_arr
(
c_nof_interleaved_streams
-1
DOWNTO
0
);
-- Filterbank and Correlator
SIGNAL
wpfb_eop
:
STD_LOGIC
;
SIGNAL
wpfb_snk_in_ctrl
:
t_dp_sosi
;
...
...
@@ -208,6 +241,7 @@ ARCHITECTURE str OF node_apertif_unb1_correlator_processing IS
SIGNAL
correlator_snk_in_arr
:
t_dp_sosi_arr
(
c_nof_interleaved_streams
-1
DOWNTO
0
);
SIGNAL
correlator_src_out_arr
:
t_dp_sosi_arr
(
1-1
DOWNTO
0
);
-- 1GbE Visibility Offload
SIGNAL
dp_fifo_sc_snk_in
:
t_dp_sosi
;
SIGNAL
dp_repack_data_snk_in
:
t_dp_sosi
;
...
...
@@ -217,9 +251,11 @@ ARCHITECTURE str OF node_apertif_unb1_correlator_processing IS
SIGNAL
dp_offload_tx_src_out_arr
:
t_dp_sosi_arr
(
1-1
DOWNTO
0
);
SIGNAL
dp_offload_tx_src_in_arr
:
t_dp_siso_arr
(
1-1
DOWNTO
0
);
BEGIN
-- BSN monitors
SIGNAL
dp_bsn_monitor_in_siso_arr
:
t_dp_siso_arr
(
c_nof_bsn_mon_streams
-1
DOWNTO
0
);
SIGNAL
dp_bsn_monitor_in_sosi_arr
:
t_dp_sosi_arr
(
c_nof_bsn_mon_streams
-1
DOWNTO
0
);
BEGIN
-----------------------------------------------------------------------------
-- Beamlet routing from 10GbE inputs T2..T0 to unfolder correlator inputs 23..0: ***48 VISIBILITY VERSION***
...
...
@@ -344,50 +380,36 @@ BEGIN
-- were OK. They are now not OK and therefor some trickery has to be done to generate
-- proper sosi-control signals for the wpfb.
--------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------
-- DP Pipeline to recover the sosi-control signals after the reinterleaving
-----------------------------------------------------------------------------
u_st_ctrl_pipe
:
ENTITY
dp_lib
.
dp_pipeline
gen_dp_block_gen
:
FOR
I
IN
0
TO
c_nof_interleaved_streams
-1
GENERATE
u_dp_block_gen
:
ENTITY
dp_lib
.
dp_block_gen
GENERIC
MAP
(
g_pipeline
=>
1
-- 0 for wires, > 0 for registers,
g_use_src_in
=>
FALSE
,
g_nof_blk_per_sync
=>
c_nof_blk_per_sync
,
g_nof_data
=>
128
)
PORT
MAP
(
rst
=>
dp_rst
,
clk
=>
dp_clk
,
snk_in
=>
reinterleave_in_arr
(
0
),
src_out
=>
dp_pipeline_src_out
);
-- EOP should be one later then the other signals due to reinterleavinga
u_pipe_eop
:
ENTITY
common_lib
.
common_pipeline
GENERIC
MAP
(
g_pipeline
=>
2
,
g_in_dat_w
=>
1
,
g_out_dat_w
=>
1
)
PORT
MAP
(
rst
=>
dp_rst
,
clk
=>
dp_clk
,
in_dat
=>
slv
(
reinterleave_in_arr
(
0
)
.
eop
),
sl
(
out_dat
)
=>
wpfb_eop
snk_in
=>
reinterleave_out_arr
(
I
),
src_out
=>
bg_snk_in_arr
(
I
)
);
END
GENERATE
;
-----------------------------------------------------------------------------
-- Merge reinterleaved data again with pipelined sosi-control signals.
-----------------------------------------------------------------------------
p_add_st_ctrl
:
PROCESS
(
reinterleave_out_arr
,
dp_pipeline_src_out
)
BEGIN
FOR
I
IN
0
TO
c_nof_interleaved_streams
-1
LOOP
wpfb_snk_in_arr
(
i
)
<=
dp_pipeline_src_out
;
-- SOSI ctrl
wpfb_snk_in_arr
(
i
)
.
data
<=
reinterleave_out_arr
(
i
)
.
data
;
wpfb_snk_in_arr
(
i
)
.
im
<=
reinterleave_out_arr
(
i
)
.
im
;
wpfb_snk_in_arr
(
i
)
.
re
<=
reinterleave_out_arr
(
i
)
.
re
;
wpfb_snk_in_arr
(
i
)
.
eop
<=
wpfb_eop
;
wpfb_snk_in_arr
(
i
)
.
valid
<=
reinterleave_out_arr
(
i
)
.
valid
;
END
LOOP
;
END
PROCESS
;
--
p_add_st_ctrl : PROCESS(reinterleave_out_arr, dp_pipeline_src_out)
--
BEGIN
--
FOR I IN 0 TO c_nof_interleaved_streams-1 LOOP
--
wpfb_snk_in_arr(
I
) <= dp_pipeline_src_out; -- SOSI ctrl
--
wpfb_snk_in_arr(
I
).data <= reinterleave_out_arr(i).data;
--
wpfb_snk_in_arr(
I
).im <= reinterleave_out_arr(i).im;
--
wpfb_snk_in_arr(
I
).re <= reinterleave_out_arr(i).re;
--
wpfb_snk_in_arr(
I
).eop <= wpfb_eop;
--
wpfb_snk_in_arr(
I
).valid <= reinterleave_out_arr(i).valid;
--
END LOOP;
--
END PROCESS;
gen_databuffer
:
IF
g_use_db
=
TRUE
GENERATE
u_data_buf
:
ENTITY
diag_lib
.
mms_diag_data_buffer
...
...
@@ -410,11 +432,51 @@ BEGIN
reg_data_buf_mosi
=>
reg_diag_data_buf_mosi
,
reg_data_buf_miso
=>
reg_diag_data_buf_miso
,
-- ST interface
in_sync
=>
wpf
b_snk_in_arr
(
0
)
.
sync
,
in_sosi_arr
=>
wpf
b_snk_in_arr
in_sync
=>
b
g
_snk_in_arr
(
0
)
.
sync
,
in_sosi_arr
=>
b
g
_snk_in_arr
);
END
GENERATE
;
---------------------------------------------------------------------------------------
-- Block Generator
---------------------------------------------------------------------------------------
u_bg
:
ENTITY
diag_lib
.
mms_diag_block_gen
GENERIC
MAP
(
-- Generate configurations
g_use_usr_input
=>
TRUE
,
g_use_bg
=>
g_use_bg
,
g_use_tx_seq
=>
FALSE
,
-- General
g_nof_streams
=>
c_bg_nof_streams
,
-- BG settings
g_use_bg_buffer_ram
=>
TRUE
,
g_buf_dat_w
=>
c_bg_dat_w
,
g_buf_addr_w
=>
c_bg_addr_w
,
g_file_name_prefix
=>
c_bg_file_name_prefix
,
-- User input multiplexer option
g_usr_bypass_xonoff
=>
FALSE
)
PORT
MAP
(
-- System
mm_rst
=>
mm_rst
,
mm_clk
=>
mm_clk
,
dp_rst
=>
dp_rst
,
dp_clk
=>
dp_clk
,
-- MM interface
reg_bg_ctrl_mosi
=>
reg_diag_bg_mosi
,
reg_bg_ctrl_miso
=>
reg_diag_bg_miso
,
ram_bg_data_mosi
=>
ram_diag_bg_mosi
,
ram_bg_data_miso
=>
ram_diag_bg_miso
,
-- ST interface
usr_siso_arr
=>
OPEN
,
usr_sosi_arr
=>
bg_snk_in_arr
,
out_siso_arr
=>
(
OTHERS
=>
c_dp_siso_rdy
),
out_sosi_arr
=>
wpfb_snk_in_arr
);
-----------------------------------------------------------------------------
-- WPFB
-----------------------------------------------------------------------------
...
...
@@ -422,7 +484,7 @@ BEGIN
u_wpfb_unit
:
ENTITY
wpfb_lib
.
wpfb_unit
GENERIC
MAP
(
g_wpfb
=>
c_wpfb
,
g_stats_ena
=>
FALSE
,
g_stats_ena
=>
g_use_chan_stats
,
g_use_bg
=>
FALSE
,
g_file_index_arr
=>
array_init
(
0
,
128
,
1
),
g_coefs_file_prefix
=>
c_wpfb_coefs_file_prefix
...
...
@@ -434,8 +496,8 @@ BEGIN
mm_clk
=>
mm_clk
,
ram_fil_coefs_mosi
=>
ram_fil_coefs_mosi
,
ram_fil_coefs_miso
=>
ram_fil_coefs_miso
,
ram_st_sst_mosi
=>
c_mem
_mosi
_rst
,
ram_st_sst_miso
=>
OPEN
,
ram_st_sst_mosi
=>
ram_st_sst
_mosi
,
ram_st_sst_miso
=>
ram_st_sst_miso
,
reg_bg_ctrl_mosi
=>
c_mem_mosi_rst
,
reg_bg_ctrl_miso
=>
OPEN
,
ram_bg_data_mosi
=>
c_mem_mosi_rst
,
...
...
@@ -623,6 +685,47 @@ BEGIN
data_src_out_arr
<=
dp_offload_tx_src_out_arr
;
dp_offload_tx_src_in_arr
<=
data_src_in_arr
;
-----------------------------------------------------------------------------
-- processing node: BSN monitors at several stages in the stream
-----------------------------------------------------------------------------
u_dp_bsn_monitor
:
ENTITY
dp_lib
.
mms_dp_bsn_monitor
GENERIC
MAP
(
g_nof_streams
=>
c_nof_bsn_mon_streams
,
g_sync_timeout
=>
c_bsn_sync_time_out
,
g_log_first_bsn
=>
TRUE
)
PORT
MAP
(
mm_rst
=>
mm_rst
,
mm_clk
=>
mm_clk
,
reg_mosi
=>
reg_bsn_monitor_mosi
,
reg_miso
=>
reg_bsn_monitor_miso
,
dp_rst
=>
dp_rst
,
dp_clk
=>
dp_clk
,
in_siso_arr
=>
dp_bsn_monitor_in_siso_arr
,
in_sosi_arr
=>
dp_bsn_monitor_in_sosi_arr
);
-- 0) Monitor the data input
dp_bsn_monitor_in_sosi_arr
(
0
)
<=
data_snk_in_arr
(
0
);
dp_bsn_monitor_in_siso_arr
(
0
)
<=
c_dp_siso_rdy
;
-- 1) Monitor the reinterleave output
dp_bsn_monitor_in_sosi_arr
(
1
)
<=
reinterleave_out_arr
(
0
);
dp_bsn_monitor_in_siso_arr
(
1
)
<=
c_dp_siso_rdy
;
-- 2) Monitor the WPFB input
dp_bsn_monitor_in_sosi_arr
(
2
)
<=
wpfb_snk_in_arr
(
0
);
dp_bsn_monitor_in_siso_arr
(
2
)
<=
c_dp_siso_rdy
;
-- 3) Monitor the WPFB output
dp_bsn_monitor_in_sosi_arr
(
3
)
<=
wpfb_src_out_arr
(
0
);
dp_bsn_monitor_in_siso_arr
(
3
)
<=
c_dp_siso_rdy
;
-- 4) Monitor the correlator output / visibility offload input
dp_bsn_monitor_in_sosi_arr
(
4
)
<=
correlator_src_out_arr
(
0
);
dp_bsn_monitor_in_siso_arr
(
4
)
<=
c_dp_siso_rdy
;
-- 5) Monitor visibility offload output
dp_bsn_monitor_in_sosi_arr
(
5
)
<=
dp_offload_tx_src_out_arr
(
0
);
dp_bsn_monitor_in_siso_arr
(
5
)
<=
dp_offload_tx_src_in_arr
(
0
);
-----------------------------------------------------------------------------
-- Stream recorder to record the correlator output stream to a file
-- . The data buffer can only take snapshots.
...
...
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