I have written my own LSE equalizer (that works on the bit level), and literature I have read says that 'fractional' based ones are much better. So how exactly does one get 'fractional' bits? Is it as simple as resampling the softbit decisions to 2x, 4x or whatever of their bit rate and applying the equalizer like that?



A typical ("non-fractional") equalizer operates at the symbol rate. That is, the inputs that you apply to the equalizer are generally soft decisions on what the unequalized received symbols are. A linear equalizer then takes this stream of soft symbol metrics and applies a linear filter that (hopefully) corrects for any non-ideal frequency response found in the path from modulator to demodulator.

The only difference with a fractionally-spaced equalizer (FSE) is the sample rate that it runs at: instead of the one sample per symbol that you see with a "standard" equalizer, an FSE operates at some multiple of the symbol rate. Typical values I've seen before are $T/2$- and $T/4$-spaced equalizers, which operate at twice and four times the symbol rate, respectively.

These samples should be straightforward to obtain; whatever processing steps in your system are used to generate the symbol decisions (e.g. when obtaining symbol timing synchronization) almost certainly operate at a minimum of 2 samples per symbol. Instead of decimating the receiver output to one sample per symbol, keep the higher sample rate intact through the equalizer in that case.

| improve this answer | |
  • $\begingroup$ Great answer Jason! Last paragraph though still not getting something - let us say there are 20 samples/bit at the output of the complex match filters. I have an algorithm that steps through, looks at the envelope to find the 'ideal' peak from where I should then sample. (In a sense, decimating it). Let us say ideal peak was at sample 16 out of the 20. How then to pick a second sample assuming I wanted to do a T/2? It seems that I would have to pick one of his neighbours 14 or 15? Would they then be not ideal? $\endgroup$ – Spacey Nov 7 '11 at 14:44
  • 1
    $\begingroup$ As the name indicates, you want the samples to be spaced (for example) $T/2$ (i.e. half of a symbol time). If you have 20 samples per symbol and the ideal peak is at sample index 13, then you would feed samples 3, 13, 23 (i.e. the 3rd sample from the next symbol interval), 33 (the 13th sample from the next symbol interval), and so on into the filter. If you have a timing tracking loop that follows the peak over time, you would adjust the sample that you pass to the filter accordingly. You just want to ensure the right amount of time spacing between samples. $\endgroup$ – Jason R Nov 7 '11 at 15:06
  • $\begingroup$ I see, and would the trainer sequence also be 'upsampled' to reflect this? For example if at the symbol level trainer was [1 -1 1] and we were doing T/2, would the new trainer now just be [1 1 -1 -1 1 1]? Seems so yes? $\endgroup$ – Spacey Nov 7 '11 at 15:24
  • $\begingroup$ You would fill the expected training sequence with what you would expect to see out of your receiver in the ideal case. So, whatever the ideal matched filter would output $T/2$ before and after the symbol centers would be what you would put in. $\endgroup$ – Jason R Nov 7 '11 at 15:47
  • 1
    $\begingroup$ In general, the output of a matched filter is going to be very peaky, with the peaks corresponding to the times that the symbols should be sampled. Ideally, the skirts surrounding the peak will be small; this makes the peak easier to discriminate. That also means that the SNR is going to be much higher at the peak than the surrounding samples. When the overall SNR is low (which of interest when analyzing receiver behavior), then the SNR at the non-peak locations is going to be even lower, and thus equalizing on what the matched filter output is expected to be there doesn't make sense. $\endgroup$ – Jason R Nov 8 '11 at 5:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.