Reply by Greg Berchin July 7, 20172017-07-07
On Fri, 7 Jul 2017 16:19:03 -0700, Peter Mairhofer <63832452@gmx.net> wrote:

>Suppose I have frequency domain measurements from a channel between 1 >and 10 GHz - for example like (c) in this figure:
...
>What is the best way to upsample the impulse response to a higher rate?
Once again, FDLS might be the right answer, if you have phase as well as magnitude measurements. You can try extrapolating the magnitude and phase curves up to half your desired upsampled rate, creating just enough discrete points in the extrapolated region to make the algorithm happy. The example Matlab code that I wrote and distribute is capable of creating a weighted least-squares fit; you should definitely weight the measured frequency response points higher than the extrapolated points. Once you have the transfer function model, it is a trivial matter to use it to compute the impulse response. I experimented with such high-frequency extrapolation 30 years ago, but I do not remember how successful the results were. So if you try it, please tell the world whether it worked ... or didn't. Greg
Reply by Peter Mairhofer July 7, 20172017-07-07
Hi,

Suppose I have frequency domain measurements from a channel between 1
and 10 GHz - for example like (c) in this figure:

https://www.researchgate.net/profile/Sergey_Rylov/publication/2983309/figure/fig1/AS:394710586806272@1471117745152/Fig-1-Backplane-channel-characteristics-a-Backplaneline-card-application-b.ppm

What is the best way to upsample the impulse response to a higher rate?

(In the rest of the posting I describe the details and what I've tried)

Thanks,
Peter






At the rate of 20 GHz, the impulse response is trivially given as

h = ifft([ A ; conj(A(end:-1:2) ]);

Now suppose I want to simulate this channel together with an equalizer
at a rate of 5x20 = 100 GHz. There are multiple options like:

1.) h1a = upsample(h,5);
2.) h1b = resample(h,5,1);

Option 1 is not physical since it represents a pulse train. Option 2
performs nice interpolation and removes the images. However, the impulse
response has ringing (looks like a windowed sinc function). This results
in the problem that after I equalize for the channel (which naturally
happens at the symbol rate) I see this ringing as a big overshoot:

https://snag.gy/qxIusN.jpg

Looking at the eye diagram, it can be seen that the eye for a [-1,1]
signal is closed although the equalization is nearly optimal:

https://snag.gy/VO82Dk.jpg

The reason (I think) is that the convolution between the (upsampled)
impulse response and the equalizer coefficients is this nice ringing
interpolation filter:

https://snag.gy/mWnKp6.jpg

However, in practice, this equalized pulse response looks like a spread
pulse, like:

https://snag.gy/AWy49P.jpg


Of course I do not have the filter response beyond 10 GHz. However,
using the Kaiser window resample uses results in a sudden drop in the
frequency response of the filter. In practice, it can be assumed that
the requency response continues to drop at the same rate beyond 10 GHz.

So is there a way to perform the upsampling in a way such that the
frequency data beyond 10 GHz is assumed to be a smooth as possible
continuation of the given frequency response, hence minimizing time
domain ringing?