Skip to content
Snippets Groups Projects
Commit b1743314 authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Use proc_common_wait_until_clk_and_high() for correct rx_beamlet_* read out.

parent 3b0118bc
No related branches found
No related tags found
1 merge request!311Correct beamlet output indexing in tr_10GbE_src_out.data. Verify exact beamlet...
Pipeline #44827 passed
......@@ -419,9 +419,9 @@ BEGIN
-- Read 3 packets to make sure we get 1 from each beamset. It can happen that two packets
-- (but not three) from the same beamset are received back to back.
FOR packet IN 0 TO 10 LOOP
FOR packet IN 0 TO 2 LOOP
-- Get beamlet_index from packet header
proc_common_wait_until_high(ext_clk, tr_10GbE_src_out.sop);
proc_common_wait_until_clk_and_high(ext_clk, tr_10GbE_src_out.sop);
FOR I IN 0 TO 8 LOOP -- Packet header is 9.25 words wide, which can be discarded
IF I = 7 THEN
rx_beamlet_scale <= tr_10GbE_src_out.data(55 DOWNTO 40);
......@@ -434,8 +434,7 @@ BEGIN
rx_block_period <= tr_10GbE_src_out.data(63 DOWNTO 48);
rx_bsn(63 DOWNTO 16) <= tr_10GbE_src_out.data(47 DOWNTO 0);
END IF;
proc_common_wait_until_high(ext_clk, tr_10GbE_src_out.valid);
proc_common_wait_some_cycles(ext_clk, 1);
proc_common_wait_until_clk_and_high(ext_clk, tr_10GbE_src_out.valid);
END LOOP;
rx_bsn(15 DOWNTO 0) <= tr_10GbE_src_out.data(63 DOWNTO 48);
......@@ -456,8 +455,7 @@ BEGIN
beamlet_arr2_re(v_beamlet_index_offset + 1) <= tr_10GbE_src_out.data(23 DOWNTO 16);
beamlet_arr2_im(v_beamlet_index_offset + 2) <= tr_10GbE_src_out.data(15 DOWNTO 8);
beamlet_arr2_re(v_beamlet_index_offset + 2) <= tr_10GbE_src_out.data(7 DOWNTO 0);
proc_common_wait_until_high(ext_clk, tr_10GbE_src_out.valid);
proc_common_wait_some_cycles(ext_clk, 1);
proc_common_wait_until_clk_and_high(ext_clk, tr_10GbE_src_out.valid);
rx_beamlet_cnt <= rx_beamlet_cnt + 1;
rx_beamlet_sop <= '0';
-- . get beamlets during block, there are 4 complex beamlets per 64b word
......@@ -470,8 +468,7 @@ BEGIN
beamlet_arr2_re(v_beamlet_index_offset + I*4 +1) <= tr_10GbE_src_out.data(23 DOWNTO 16);
beamlet_arr2_im(v_beamlet_index_offset + I*4 +2) <= tr_10GbE_src_out.data(15 DOWNTO 8);
beamlet_arr2_re(v_beamlet_index_offset + I*4 +2) <= tr_10GbE_src_out.data(7 DOWNTO 0);
proc_common_wait_until_high(ext_clk, tr_10GbE_src_out.valid);
proc_common_wait_some_cycles(ext_clk, 1);
proc_common_wait_until_clk_and_high(ext_clk, tr_10GbE_src_out.valid);
rx_beamlet_cnt <= rx_beamlet_cnt + 1;
END LOOP;
-- . get last beamlet of block
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment