WARP Project Forums - Wireless Open-Access Research Platform

You are not logged in.

#1 2009-Jun-03 19:29:46

vijay
Member
Registered: 2009-Jun-03
Posts: 6

WARPLAB siso communication preamble synchronization issue

Hi,
I have a question with regards to WARPLAB preamble synchronization in workshop example warplab_siso_example_Comm.

From what I understood, at the Tx
ytx_mod_filt = [preamble--payload]
ytx_mod_filt_up= [(preamble--payload)*exp(j 2 pi fc t1)]       ---- (1)

At Rx (due to Tx-Rx sync issue) we receive
Node2_Radio2_RxData= [Noise--(preamble--payload)*exp(j 2 pi fc t1)]

Then we downconvert the signal to baseband
yrx_bb = [Noise--(preamble--payload)*exp(j 2 pi fc t1)]*exp(-j 2 pi fc t2) ----(2)

So yrx_bb will not be equal to  [Noise--(preamble--payload)] unless Tx and Rx are phase synchronized (ie. t1 = t2). The same is the case for matched filter to work. Does this mean that WARPLAB reference design provides phase synchronization between Tx and Rx. Can you please explain how this works.

Thanks.

Offline

 

#2 2009-Jun-04 01:43:57

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: WARPLAB siso communication preamble synchronization issue

The comm example uses differential encoding to handle the phase ambiguity; see DQPSK for more details.

The carrier frequencies at the two nodes are independent, so there is definitely a frequency offset between the up and downconversion stages (fc in (1) is slightly different from fc in (2) ). This means that over the course of the received waveform, the phase relationship of the Tx and Rx waveforms will change. If the frequency offset is constant during the exchange, the phase offset will be increasing at a constant rate (frequency is just rate-of-change of phase). As long as this rate is much slower than the symbol period (i.e. the phase change due to carrier frequency offset between adjacent symbols is very small relative to the phase difference between modulation points), differential encoding will work. This is also why the received constellation looks like a circle (usually; sometimes the CFO is so small that you can actually see discrete points).

Offline

 

#3 2009-Jun-04 20:48:05

vijay
Member
Registered: 2009-Jun-03
Posts: 6

Re: WARPLAB siso communication preamble synchronization issue

My concern is more with finding preamble_start.  I'm assuming the reason for having a preamble is to achieve initial phase synchnonization between Tx and Rx. The phase ambiguities caused by the channel and due to slight frequency mismatch between Tx and Rx will be taken care by DQPSK. But for finding preamble_start(this is to remove the initial phase difference between Tx and Rx), won't the following approach be more robust:
1. Construct reference_matrix using ytx_mod_filt_up(1:length_preamble_upsamp+delay*nsamp)
2. At the receiver, correlate the received samples from buffer Node2_Radio2_RxData with reference_matrix. This will give the index of first valid sample(valid_index).
3. Now apply rrc filter as
yrx_bb = Node2_Radio2_RxData (valid_index:end).* exp(-sqrt(-1)*2*pi*5e6*time).';
yrx_bb=yrx_bb.';
yrx_bb_mf = rcosflt(yrx_bb,1,nsamp,'Fs/filter',rrcfilter);

This will remove the noise jitter caused caused due to sync signal to Tx and Rx. Kindly let me know if I'm missing something.

Thanks.

Offline

 

#4 2009-Jun-05 09:53:27

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: WARPLAB siso communication preamble synchronization issue

I think the two methods are equivalent. In the current code, the Rx flow is:
-Downconvert from 5MHz to (0Hz + some small CFO)
-Apply matched filter (without decimating)
-Search for preamble correlation, indicating first sample of first symbol
-Downsample filter output, aligned to the correlation peak
-Demodulate the DQPSK symbols

As I understand your flow, it is:
-Downconvert from 5MHz to (0Hz + some small CFO)
-Search for preamble correlation, indicating first sample of first symbol
-Apply matched filter (without decimating)
-Downsample the filter output
-Demodulate the DQPSK symbols

I think these will achieve the same result.

Also, a handy reference worth archiving here is the MATLAB commdoc_rrc example, which follows a similar flow.

Offline

 

#5 2009-Jun-08 12:04:37

vijay
Member
Registered: 2009-Jun-03
Posts: 6

Re: WARPLAB siso communication preamble synchronization issue

Thanks for the clarification. You got me right. I was not sure if searching the preamble can be done after applying matched filter. But I guess both will result in the same. Also, I want to get a sample to sample correspondence between  transmitted samples and received samples. Can you confirm if the relation Node1_Radio2_TxData(i)=Node2_Radio2_RxData(i+preamble_start-(nsamp*delay*2+1)) is true. I'm not sure if it should be nsamp*delay*2+1 or nsamp*delay+1. My experimental observations show that it is (nsamp*delay*2+1). I guess one nsamp*delay is due to the rrcfilter at Tx and the other at Rx.

Offline

 

#6 2009-Jun-08 21:41:06

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: WARPLAB siso communication preamble synchronization issue

vijay wrote:

I want to get a sample to sample correspondence between  transmitted samples and received samples.

WARPLab triggers the Tx/Rx cycles at two nodes using a broadcast Ethernet packet. If the nodes are on a common switch, they will start at nearly the same time. "Nearly", of course, isn't exactly. There will always be some jitter. This is why we have the TxDelay parameter (to assure the Rx node captures the first transmitted sample, even if the Tx node starts a little early). It's also why we used the preamble in the comm example (to find the actual first symbol boundary precisely, in order to decimate the matched filter output correctly).

Offline

 

Board footer