Skip to content
Snippets Groups Projects

Clarify g_nof_destinations_max design revision parameter and package constants...

Merged Eric Kooistra requested to merge L2SDP-964 into master
1 file
+ 43
31
Compare changes
  • Side-by-side
  • Inline
@@ -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,
Loading