Skip to content
Snippets Groups Projects
Commit 07891eb4 authored by Reinier van der Walle's avatar Reinier van der Walle
Browse files

changes after debugging on hardware

parent abce9a62
Branches
No related tags found
1 merge request!152Resolve L2SDP-423
......@@ -220,7 +220,7 @@ BEGIN
-- Enable xsub
----------------------------------------------------------------------------
mmf_mm_bus_wr(c_mm_file_reg_bsn_sync_scheduler_xsub, 1, c_ctrl_interval_size, tb_clk); -- Interval size
mmf_mm_bus_wr(c_mm_file_reg_bsn_sync_scheduler_xsub, 2, 1, tb_clk); -- first write low then high part
mmf_mm_bus_wr(c_mm_file_reg_bsn_sync_scheduler_xsub, 2, c_nof_block_per_sync, tb_clk); -- first write low then high part
mmf_mm_bus_wr(c_mm_file_reg_bsn_sync_scheduler_xsub, 3, 0, tb_clk); -- assume v_bsn < 2**31-1
mmf_mm_bus_wr(c_mm_file_reg_bsn_sync_scheduler_xsub, 0, 1, tb_clk); -- enable
----------------------------------------------------------------------------
......
......@@ -243,7 +243,7 @@ BEGIN
---------------------------------------------------------------
-- REG_NOF_CROSSLETS
---------------------------------------------------------------
u_crosslets_info : ENTITY common_lib.mms_common_reg
u_nof_crosslets : ENTITY common_lib.mms_common_reg
GENERIC MAP(
g_mm_reg => c_sdp_mm_reg_nof_crosslets
)
......@@ -261,8 +261,10 @@ BEGIN
in_reg => nof_crosslets,
out_reg => nof_crosslets_reg
);
-- Force nof crosslets to max nof crosslets if a higher value is written via MM.
nof_crosslets <= nof_crosslets_reg WHEN TO_UINT(nof_crosslets_reg) <= c_sdp_N_crosslets_max ELSE TO_UVEC(c_sdp_N_crosslets_max, c_sdp_nof_crosslets_reg_w);
-- Force nof crosslets to max nof crosslets if a higher value is written or to 1 if a lower value is written via MM.
nof_crosslets <= TO_UVEC(1, c_sdp_nof_crosslets_reg_w) WHEN TO_UINT(nof_crosslets_reg) < 1 ELSE
nof_crosslets_reg WHEN TO_UINT(nof_crosslets_reg) <= c_sdp_N_crosslets_max ELSE
TO_UVEC(c_sdp_N_crosslets_max, c_sdp_nof_crosslets_reg_w);
---------------------------------------------------------------
-- XST UDP offload
......
......@@ -332,7 +332,7 @@ PACKAGE sdp_pkg is
adr_w => 1,
dat_w => ceil_log2(c_sdp_N_crosslets_max+1),
nof_dat => 1,
init_sl => '1'); -- Default = 1
init_sl => '0'); -- Default = 1
CONSTANT c_sdp_nof_crosslets_reg_w : NATURAL := c_sdp_mm_reg_nof_crosslets.nof_dat*c_sdp_mm_reg_nof_crosslets.dat_w;
CONSTANT c_sdp_xst_nof_clk_per_sync_min : NATURAL := (c_sdp_f_adc_MHz *10**6) / 10; -- 0.1 second
......
......@@ -244,12 +244,11 @@ BEGIN
v.start_pulse := '1';
v.start_address := 0;
v.block_count := 0;
IF g_statistics_type = "XST" AND TO_UINT(nof_crosslets) = 1 THEN
v.block_count := c_sdp_N_crosslets_max; -- Instead of setting v.block_count to 0 we need to set it to N_crosslets_max = 7 to prevent another block to stream out.
END IF;
v.crosslet_count := 0;
v.nof_crosslets := TO_UINT(nof_crosslets); -- register nof_crosslets to make sure it does not change during packet output.
-- Disable output by setting block_count to c_nof_packets-1 when the nof_crosslets is set to 0.
IF g_statistics_type = "XST" AND TO_UINT(nof_crosslets) = 0 THEN
v.block_count := c_nof_packets-1;
END IF;
ELSIF done = '1' THEN
-- Use done to start next packets
IF r.block_count < c_nof_packets-1 THEN
......@@ -260,27 +259,26 @@ BEGIN
END IF;
v.start_pulse := '1';
v.block_count := r.block_count + 1;
ELSE
-- Prepare for next trigger interval.
v.start_address := 0;
v.block_count := 0;
END IF;
IF g_statistics_type = "XST" THEN
IF r.crosslet_count < r.nof_crosslets-1 THEN
v.crosslet_count := r.crosslet_count + 1;
ELSE
v.crosslet_count := 0;
IF r.block_count < c_nof_packets-1 THEN -- skip block indices for unused XST blocks
v.block_count := r.block_count + 1 + c_sdp_N_crosslets_max - r.nof_crosslets;
END IF;
v.block_count := r.block_count + 1 + c_sdp_N_crosslets_max - r.nof_crosslets; -- skip block indices for unused XST blocks.
END IF;
END IF;
ELSE
-- Prepare for next trigger interval.
v.start_address := 0;
v.block_count := 0;
v.crosslet_count := 0;
END IF;
END IF;
-- Release header info per packet offload
IF trigger = '1' OR done = '1' THEN
-- Release header info per packet offload
v.dp_header_info := dp_header_info;
END IF;
nxt_r <= v;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment