I am currently working on a semi-blind #OFDM channel estimation.
After analyzing the recorded signal(sampling frequency is known), and deriving the following parameters:
- Burst structure.
- Preamble size.
- Data Symbol Size.
- FFT size.
- CP size.
And tuning the burst in time and frequency, the 432 bits of the preamble were extracted and found to use BPSK modulation.
Following are the results of the preamble tuning process:
the same steps for the first symbol, does not yield separation, as can be seen
in the best case below:
Following is the FFT of the preamble:
It can be easily seen that every second sample of the FFT output is ~0.
The reason is that the signal is being concatenated.
As a result, if only one half is being taken, down sampled to 512 and fft is applied, the following is received:
Because the bits of the preamble are know, this allows to initially estimate the channel in frequency domain as:
Applying now the H_inv on the frequency and time tuned data symbol, yields:
As compared to the un-estimated/compensated:
Clustering and rotating yields a BPSK constellation for the Data Symbols as well:
And extracting the bits, yields:
However, the separation is not perfect.
Wonder what operations can be performed in order to enhance the performance of the Channel Estimating process, given known preamble and unknown pilots.
Referring to relevant intro level literature will be welcomed as well.
Many Thanks in Advance.
I'm not sure what you mean by "known preamble and unknown pilots", but be careful with the use of the preamble. In many standards the preamble is segmented into sections used for synchronization and channel estimation, and often the channel estimation symbols are repeated so that they can be averaged (or otherwise combined) for SNR gain during channel estimation.
Also, when channel distortion is present it is often the case that equalization will not be perfect. Your recovered BPSK symbols don't look bad, but it's hard to tell how much channel distortion was present.
Thank you Slartibartfast for such a fast reply.
The preamble was derived following a signal analyzis.
The pilots will be derived based on statistics of the data symbols.
In this case the original preamble was concatenated twice, as can be seen from the FFT plotted above(Every second value is 0).
For the equalization, I have used only one half.
Further analysis of the preamble shows that the 432 bits of the preamble are LFSR series with the polynomial 1+x^2+x^11 initialised with the string '11110000000' (and seeded with zeroes).
I wonder how the equalization performance can be enhanced?
A couple of observations.
You might be better off doubling your sampling rate and doubling your FFT length. The reason is that the phase of the sample instant is critical to extract the correct information from the bins. If the sampling phase is off slightly, then the constellations appear to rotate as your sequence through the bins. If you have extra samples, then you can choose a different sample as you starting one and obtain better results. My experience suggests that if you sampling rate is only just above Nyquist requirements, then the task is much harder for OFDM.
If you have the right phase, then the plot below your comment "Following is the FFT of the preamble:" will be similar for all the bins instead of appearing to "smear" as you move toward the bins on the right. Also, the subsequent symbols constellations will "stand still" instead of rolling in phase and fuzziness across bins.
If you have a nice clean interpolation function (not sample rate conversion, just selectable phase change) then you can also play with the sub-sample phase of you data, and it will improve your output greatly.
I have seen the early training sequence of figure 5 in my own work very recently. It is a very interesting synch sequence to find the coarse carrier frequency and phase offset, the best sampling phase and symbol boundaries.
I don't think that you want to use this earliest repeated sequence for EQ. It does not have a cyclic prefix if it is the same thing I have seen.
There should be two subsequent training symbols that are complete with prefix, and each is unique and "orthogonal" with respect to each other. These will be a better bet for the EQ training and can be used for improved carrier estimation etc.
I hope that this is useful.
One more thing.
The frequency response of this early sequence has intentional ripples in the transmit signal. If you equalize the rest of the burst with this early sequence, your results will be very strange.
Once again – thank you very much for the assistance.
Will analyze the signal according to your comments and post an update soon:
- Currently using FFT of 3658 while frequency tuning, will use 1K instead on a signal resampled to 1K.
- Will use the phase for tuning as well.
- Will use the second repetition of the preamble for EQ training.
Re: 3. above: The second repetition of the very first sequence has the same spectral problems as the very first sequence. These two repetitions are each half the length of the regular symbols, without the cyclic prefix.
The very first sequence that has the two repetitions should not be used for EQ at all.
Following the repeated sequence you should find two "real" symbols that have known constellations and are intended for EQ and other training. From a properly quantized and sliced version of these subsequent symbols, you can calculate the EQ.
The only way to EQ using the repeated first sequences would be to try to derive the correct constellation. I have studied it, and it is not clear how you derive it accurately enough to use it to invert the channel.
Using the signal, the frequency and the timing technique as before, I have examined 3 Symbols, following the Preamble:
The absolute value of the three and the aligned CP of each can
be seen bellow:
However, the correlation of the three without the CP(firstXfirst, firstXSecond…), does not demonstrate the expected.
The dot product of the pairs is ~zero as well.
dot(1,1) = 73.5806
dot(1,2) = -1.8265 + 2.6920i
dot(1,3) = -3.6654 + 2.4705i
dot(2,3) = -1.3719 + 2.0209i
As a result, having two questions:
- What did you mean by orthogonality of the two training symbols?
- How exactly can the equalization be performed using the specially designed training sequences of this signal?
Your first diagram is exactly as I had suggested. PR can be used for carrier offset and some phasing information, but not for EQ. TR1 and TR2 should be used for EQ.
1) When I said that the training sequences are orthogonal (or nearly at least) I meant that if you have a reference sequence for each training period [PRPR TR1 TR2], then there will be excellent correlation with respective received sequence, but no correlation with the other received sequences. IE TR1 is orthogonal to TR2, and each is approximately orthogonal to PRPR.
2) Continuing from 1. but also answering 2. If you have an ideal reference sequence for the respective training symbols, then the correlation will tell you exactly when each one has been received. So you will need to run correlation with two separate IDREF sequences for TR1 and TR2, and then you can take the FFT (DFT) of the IDREF and the actual received sequence, and do the divide that you had done before.
Each of the training sequences in TR1 and TR2 will have very nice properties from which you can derive the EQ mag and phase adjustments. However, if the TR1 and TR2 sequences are similar to what I have seen, there will be empty bins again in each, but there will not be any that are empty for both TR1 and for TR2, so that you can average all the bins where there is energy in both symbols, and just use the appropriate information for the bins that are only filled in one or other training sequence.
Thank you very much for the detailed answer.
After working with the two training sequences, still have several open issues.
The elaboration can be seen in the document bellow:
Many Thanks in advance for your advice.
I reviewed the document, but I'm not sure what advice you are looking for. I don't think I can offer more unless I can look at the data myself.
I am not sure how should the transfer function of the channel be combined/derived given the training sequences as elaborated in the document.
You can see the code of the Time and frequency tuning in:
The EQ part is not included yet.
However, your assistance has already been too generous, and I do not want take more of your time.
If the issue is time demanding, please let me know and I will be glad to discuss compensation.