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

Merge branch 'master' into L2SDP-836

parents 2b32d0bf 21da4446
No related branches found
No related tags found
1 merge request!288Resolve L2SDP-836
Pipeline #38142 passed
Detailed design: Transient Buffer function (LIFT)
References:
[1] https://plm.astron.nl/polarion/#/project/LOFAR2System/workitem?id=LOFAR2-12060 Transient buffer data
[1] LIFT requirements: https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/Overview%20pages/LIFT%20Reference
[2] https://support.astron.nl/confluence/display/L2M/2022-10-24+LIFT+meeting+notes
[3] L1 LOFAR2 Decision: Transport of buffer data from Station to CEP, https://support.astron.nl/confluence/pages/viewpage.action?pageId=94766339
[4] LOFAR1 TBB: https://support.astron.nl/confluence/display/L2M/Temporary+storage+of+documents+and+papers
1) DDR4 memory per receiver input
......@@ -17,7 +20,12 @@ Assume 4 % storage overhead for packet header information
==> Per recveiver input T_tbuf = 1.33 GByte = 10.6 Gbit, so at full 10GbE rate it takes about 1 s to read all samples from 1 receiver input
==> 192 * 1.33 = 256 GByte / LB for T_tbuf = 3.2 s
In [1] time series data en pulse data, wat is pulse data ?
In LOFAR12060 [1] time series data en pulse data, wat is pulse data :
De Transient Buffer Time-Series Data Product zijn de ruwe samples, zoals we daar net ook over spraken
De Transient Buffer Pulse Data Product is dat wat er uit de Transient Detect moet komen
Voor beide geldt dan natuurlijk dat CEP er een data product van moet maken
Hoe streng is de 3.33 s, mag 3.2 s ook ?
Gebruik een 16 GByte module per FPGA, zodat uitbreiding naar 6.66 s mopgelijkl is door beide slots the gebruiken
Uitlezen per receiver input, zodat uitlezen van een deel vd receiver inputs mogelijk is (bijv 12 vd 192 in [1])
......@@ -25,3 +33,24 @@ Defineer TB functie per receiver input:
. zodat de TB functie makkelijk uitbreidbaar is naar meer inputs en naar meer DDR4 modules.
. data capture en uitlezen van een receiver input onafhankelijk kan van de andere receiver inputs
2) Meeting EK-BH 24 okt 2022 [2]
Design decision 16GByte DDR4 na L2SDP-854, 850
. uitbreidbaar door andere slot ook te vullen
. 1 slot met 16GB kost minder FPGA resources dan 2 slots met 8GB
- Uitgaan van 14 bit ingepakt
- < 14 bit --> select reg voor welke 8 bit als veld in header
- ICD SC-SDP CP, MP
. unfreeze, freeze, read out range from buffer
- ICD SDP-CEP
. packet header and payload data format 3.1.2 in TBB1 doc
. applied coarse delay (compenseert voor cable delay)
. receiver configuration (LB, HB, frequency band, attenuation)
. read out flow control
- One dual polarion
- Ring
- Buffer lengte versus nof antennes
- Self trigger
......@@ -65,7 +65,7 @@ noise /= np.std(noise)
# Noise level range, 1 unit = 1 LSbit
sigma_lo = 0.1
sigma_hi = 5
sigma_hi = 25
sigmas = np.arange(sigma_lo, sigma_hi, 0.1)
N_sigmas = len(sigmas)
......
......@@ -75,6 +75,10 @@ ARCHITECTURE rtl of nw_arp_request IS
CONSTANT c_dp_field_blk_snk_data_w : NATURAL := field_slv_len(c_hdr_field_arr);
CONSTANT c_dp_field_blk_src_data_w : NATURAL := c_data_w;
SIGNAL valid_sha : STD_LOGIC := '0';
SIGNAL valid_spa : STD_LOGIC := '0';
SIGNAL valid_tpa : STD_LOGIC := '0';
SIGNAL valid_arp : STD_LOGIC := '0';
SIGNAL pps_cnt : NATURAL := 0;
SIGNAL trigger : BOOLEAN := FALSE;
......@@ -101,11 +105,20 @@ BEGIN
p_dp_pps : PROCESS (dp_clk, dp_rst)
BEGIN
IF dp_rst = '1' THEN
valid_sha <= '0';
valid_spa <= '0';
valid_tpa <= '0';
valid_arp <= '0';
trigger <= FALSE;
pps_cnt <= 0;
dp_field_blk_snk_in <= c_dp_sosi_rst;
ELSIF RISING_EDGE(dp_clk) THEN
-- Use signal to indicate if ARP can be enabled.
valid_sha <= vector_or(arp_sha);
valid_spa <= vector_or(arp_spa);
valid_tpa <= vector_or(arp_tpa);
valid_arp <= valid_sha AND valid_spa AND valid_tpa;
IF valid_arp = '1' THEN
dp_field_blk_snk_in <= nxt_dp_field_blk_snk_in;
IF trigger AND dp_field_blk_snk_out.ready = '1' AND dp_field_blk_snk_out.xon = '1' THEN
trigger <= FALSE;
......@@ -122,7 +135,11 @@ BEGIN
trigger <= TRUE;
END IF;
END IF;
ELSE
trigger <= FALSE;
pps_cnt <= 0;
dp_field_blk_snk_in <= c_dp_sosi_rst;
END IF;
END IF;
END PROCESS;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment