# How to extract unknown packet from collision between said packet and another, known packet?

I need to apply successive interference cancellation (SIC) to an RF signal which is the result of collisions between 2 or more unsynchronised packets. For this question let's just assume that the number of packets is 2.

In SIC, you store the collided packets until one of the packets are repeated and use the 'clean' packet to extract the other packet from the collided data.

My question is, what techniques can be used to extract an unknown packet from a collision between that packet and a known packet?

How do you deal with the packet sources not being synchronised?

Going through the possible tags for this question, it seems that 'deconvolution' is relevant.

In case it is relevant, the context is RFID tag inventory, the channel access mechanism is framed slotted ALOHA (FSA) random access, the carrier is 868 MHz (EU) and subcarrier is 256 kHz.

Thank you.

• Are you sure that deconvolution is the way to go? Amplitude modulated radio signals add together when transmitted simultaneously. Deconvolution wouldn't seem to be a good fit for that. From what I've read, SIC consists of subtracting the known signal from the mix of the two signals, leaving the second signal. You would have to synchronize you subtraction with the start of the first signal, but you already know where that was once you've managed to decode it. – JRE Oct 24 '14 at 9:49

As JRE said, deconvolution is not what you need. You need to subtract the known signal from the combined signal to leave the unknown signal by itself.

If the signals are baseband signals (I'm aware that yours are modulated- I will get to that later in the answer) then you need to know when the known signal started and how strong it is. You can get an estimate of both of those things through cross-correlation. You cross-correlate the combined signal with a clean reconstruction of the known signal. You should get a strong peak at the location of the known signal. From this you can determine when the signal started. You can also estimate the signal amplitude using the peak's amplitude.

$$y[n] = \sum\limits_m x[m]r[n+m]$$

This is the definition of cross-correlation, where x[n] is the combined signal, r[n] is the reconstructed known signal, and y[n] is the cross-correlation.

$$y[n] = \sum\limits_m (s_1[m] + s_2[m] + noise[n])r[n+m] \approx \sum\limits_m s_2[m]r[m]$$

In this equation I have broken x[n] into its constituent parts: $s_1[n]$ (the unknown signal, $s_2[n]$ (the known signal), and noise. If we assume that $s_1[n]$ does not correlate strongly with $s_2[m]$ then we can simply disregard $s_1[n]$ and the noise term with the understanding that they will both likely add some error to the result.

So, the peak's amplitude is approximately equal to $\sum\limits_m s_2[m]r[n+m]$. Since you know $r[n]$ completely, you can use this value to determine the amplitude of $s_2[n]$.

Once you know the start time and amplitude of $s_2[n]$, you can subtract it out of $x[n]$, leaving only $s_1[n]$, the noise term, and whatever error was in your estimate of $s_2[n]$.

If the packets are modulated the same basic process is followed, except you will also have to find/determine any carrier offset in $s_2[n]$, and it's phase. The phase you can get from the cross-correlation peak's phase. The carrier offset you can find using the fourth power technique (for PSK signals), or by searching for the best cross-correlation result at various carrier offsets.