How to Determine Time of BLE Signal burst with Synchronized ADCs (Multi-tile Sync)

Hi,

I’m working on a BLE signal detection project using a Xilinx RFSoC zcu208 board running PYNQ. I’m capturing data from multiple ADC channels that are synchronized using multi-tile sync.

I need accurate time-of-arrival (ToA) estimation of BLE signal peaks given by a beacon on an NRF52DK — specifically, I want to determine the precise timestamp (in m-seconds or nanoseconds) when a BLE burst peak occurs on a specific channel.

Details:

  • ADC sampling rate: 4 GSPS (I know this will aliase the signals, but for the moment that is okay, I just want to identify a large signal burst from the BLE)
  • Number of ADC channels: 8, but 1 is used as a reference clock
  • Multi-tile sync is configured and appears to be working (no data skew across channels)
  • I’m using PYNQ to run Python code on the Zynq processor
  • Using a max-hold and fourier transform, I can identify that there are indeed BLE signals as I see 3 peaks in the freq domain (3 advertising channels)

My Questions:

How can I identify the burst in the time domain? What pynq functions could I use, or data acquisition and signal processing techniques.

I want to eventually compare the time differences of BLE peaks across multiple ADC channels to estimate signal direction.

Any advice from those who’ve done TDoA work on RFSoC would be really appreciated.

Thanks in advance,