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
3caca1a4
Commit
3caca1a4
authored
1 year ago
by
Eric Kooistra
Browse files
Options
Downloads
Patches
Plain Diff
Update FIFO size for payload error. Capture destination index (DI) from channel field at sop.
parent
95eaf110
No related branches found
No related tags found
1 merge request
!359
Clarify g_nof_destinations_max design revision parameter and package constants...
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd
+43
-31
43 additions, 31 deletions
...s/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd
with
43 additions
and
31 deletions
applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd
+
43
−
31
View file @
3caca1a4
...
...
@@ -319,34 +319,36 @@ begin
-----------------------------------------------------------------------------
-- Register output info dependent on DN and DI to ease timing closure
p_reg
:
process
(
dp_clk
)
variable
v_DN
:
natural
;
-- number of destinations
variable
v_DI
:
natural
;
-- destination index
begin
if
rising_edge
(
dp_clk
)
then
v_DN
:
=
multi_destinations_info
.
nof_destinations_act
;
v_DI
:
=
to_uint
(
dp_fifo_data_src_out
.
channel
);
s_DN
<=
v_DN
;
s_DI
<=
v_DI
;
-- Variable values that depend on DN set via MM and/or on current DI
-- from dp_packet_unmerged that is passed on via
-- dp_fifo_data_src_out.channel.
-- . Use s_DN to ease timing closure. Use v_DI to ensure that the mdi
-- values are valid at dp_pipeline_data_src_out.sop
mdi_eth_dst_mac
<=
multi_destinations_info
.
eth_destination_mac_arr
(
v_DI
);
mdi_ip_dst_addr
<=
multi_destinations_info
.
ip_destination_address_arr
(
v_DI
);
mdi_udp_dst_port
<=
multi_destinations_info
.
udp_destination_port_arr
(
v_DI
);
-- . Account for beamset offset in beamlet index
mdi_beamlet_index_per_destination
<=
c_beamset_beamlet_index
+
c_beamlet_index_per_destination_mat
(
s_DN
,
v_DI
);
-- . In total there are S_sub_bf = 488 beamlets for nof_destinations.
-- The packet for last destination contains the same number of
-- beamlets as the first destinations, or less beamlets.
if
v_DI
<
s_DN
-
1
then
mdi_nof_beamlets_per_block_per_destination
<=
mdi_nof_beamlets_per_block_first_destinations
;
else
mdi_nof_beamlets_per_block_per_destination
<=
mdi_nof_beamlets_per_block_last_destination
;
-- Register number of destinations (DN)
s_DN
<=
multi_destinations_info
.
nof_destinations_act
;
-- Capture destination index (DI) from channel field, valid at sop
if
dp_fifo_data_src_out
.
sop
=
'1'
then
v_DI
:
=
to_uint
(
dp_fifo_data_src_out
.
channel
);
s_DI
<=
v_DI
;
-- for view in Wave window
-- Variable values that depend on DN set via MM and/or on current DI
-- from dp_packet_unmerged that is passed on via
-- dp_fifo_data_src_out.channel.
-- . Use s_DN to ease timing closure. Use v_DI to ensure that the mdi
-- values are valid at dp_pipeline_data_src_out.sop
mdi_eth_dst_mac
<=
multi_destinations_info
.
eth_destination_mac_arr
(
v_DI
);
mdi_ip_dst_addr
<=
multi_destinations_info
.
ip_destination_address_arr
(
v_DI
);
mdi_udp_dst_port
<=
multi_destinations_info
.
udp_destination_port_arr
(
v_DI
);
-- . Account for beamset offset in beamlet index
mdi_beamlet_index_per_destination
<=
c_beamset_beamlet_index
+
c_beamlet_index_per_destination_mat
(
s_DN
,
v_DI
);
-- . In total there are S_sub_bf = 488 beamlets for nof_destinations.
-- The packet for last destination contains the same number of
-- beamlets as the first destinations, or less beamlets.
if
v_DI
<
s_DN
-
1
then
mdi_nof_beamlets_per_block_per_destination
<=
mdi_nof_beamlets_per_block_first_destinations
;
else
mdi_nof_beamlets_per_block_per_destination
<=
mdi_nof_beamlets_per_block_last_destination
;
end
if
;
end
if
;
end
if
;
end
process
;
...
...
@@ -408,15 +410,25 @@ begin
);
-- FIFO: to store and align payload error bit from eop to sop
-- Simple fifo to store the payload error bit at eop of FIFO input to be used
-- at sop of FIFO output, so that payload_err can then be used in the packet
-- header. Typically the u_dp_fifo_data will store between 0 and
-- c_sdp_N_beamsets = 2 packets. Choose g_nof_words > c_sdp_N_beamsets to
-- have some margin compared to c_fifo_size of the data FIFO.
-- . The payload error bit is set when dp_packet_merge detects an BSN
-- increment error. The dual page mechanism in reorder_col_select makes
-- that the sosi.err bit will be valid during the entire output packet,
-- so that it can be passed on at the sop via the application header.
-- For g_nof_destinations > 1 each destination packet will have its
-- payload error bit set as well, because dp_packet_unmerge applies the
-- input sosi.err at the sop to all unmerged output packets.
-- . Simple fifo to store the payload error bit at eop of FIFO input to be
-- used at sop of FIFO output, so that payload_err can then be used in
-- the packet header. Typically the u_dp_fifo_data will store between 0
-- and c_sdp_N_beamsets = 2 packets. Choose g_nof_words > c_sdp_N_beamsets
-- to have some margin compared to c_fifo_size of the data FIFO.
-- . No need to account for g_nof_destinations_max > 1 in FIFO g_nof_words,
-- because the BDO packets are multiplexed round-robin with fair chance
-- per beamset by the dp_mux in sdp_station.vhd
u_common_fifo_err
:
entity
common_lib
.
common_fifo_sc
generic
map
(
g_dat_w
=>
1
,
g_nof_words
=>
g_nof_destinations_max
*
c_sdp_N_beamsets
+
2
g_nof_words
=>
c_sdp_N_beamsets
+
2
)
port
map
(
rst
=>
dp_rst
,
...
...
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