DSPRelated.com
Forums

question on FIR channel

Started by philgo August 15, 2006
here, channel means some medium that the signal goes through from the
transmitter to the receiver. The signal gets distorted during this
process and the distortion can be modeled as an FIR filter. We call it
multipath channel.

Jerry Avins wrote:
> philgo wrote: > > ... > > > I agree it might not end up w ith 10 taps. Coud you be more specific on > > how to generate the new channel from the old one? thanks > > Could be more specific about what you mean by "channel" in this context? > > Jerry > -- > Engineering is the art of making what you want from things you can get. > =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=
=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF= =AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF
I didn't see your second reply before my previous post.
It's getting more interesting now.

Suppose I choose M a very large number, say 1024, as I want to make it
quite an accurate approximation.

And as you suggested, I first calculate the discrete time fourier
transform, ie. the frequency response H(w).

The next step, I am supposed to sample 1024 points from H(w), i.e., to
get the DFT of the original a[k]'s. Because H(w) is a continuous signal
and is periodical, then I just sample 1024 uniformly distributed points
in a single period of H(w).

The next step, I do size 1024 IDFT.

I am a little unclear about the windowing. What shall I do exactly to
the size 1024 sequence that I obtained after the IDFT. What should I
with the window length and the window shape to control the
approximation? Thanks a lot.


Andor wrote:
> I wrote: > > philgo wrote: > > > hi, suppose I have the FIR channel with 10 taps. > > > My target sampling rate is, for example, 50MHz, i.e., the sampling > > > period is 20ns. > > > But my channel taps do not fall on integer units of the sampling > > > period, say they fall on > > > 33, 44, 55, 66, 77, 88, 99, 111, 122, 133 ns respectively. > > > What shall I do to create a FIR channel with taps falling exactly on > > > integer number of samplings? thank you in advance. > > > > Let's say the input signal was x[n], and you wanted to compute > > > > y[n] = sum_k a_k delay( x[n], t_k), > > > > where the function delay(x[n], t) simply delays the signal x[n] by the > > real value t, the t_k are the tap delays and the a_k are the tap > > weights. The only problem is to compute the delay function. You can do > > this by seperating t into integer and fractional part, ie. > > > > t = m + f, > > > > for example 3.14142... = 3 + sqrt(2) / 10. This way you can reduce the > > delay function to compute delays that lie in [0, 1[ by using > > > > delay(x[n], t) = delay(x[n-m], f). > > > > That last function is called a fractional delay and can be implemented > > using an FIR filter (with integer tap delays). An easy method to design > > the filter is via windowed sinc. Do you need more help with this? > > On second thoughts, perhaps a more direct approach to model your filter > is with the windowing technique. If we assume the above impulse > response, the frequency response is given by > > H(w) = sum_k a_k exp(-j w t_k). > > You can sample H on a regular grid with M points, compute the inverse > DFT and then window with a window of size N<M to get the impulse > response (the regularly-tapped FIR filter coefficients). M, N and the > window are parameters that allow you to determine the grade of the > approximation. > > > > > Regards, > > Andor
Hi Andor,

I didn't see your second reply before my previous post.
It's getting more interesting now.

Suppose I choose M a very large number, say 1024, as I want to make it
quite an accurate approximation.

And as you suggested, I first calculate the discrete time fourier
transform, ie. the frequency response H(w).

The next step, I am supposed to sample 1024 points from H(w), i.e., to
get the DFT of the original a[k]'s. Because H(w) is a continuous signal
and is periodical, then I just sample 1024 uniformly distributed points
in a single period of H(w).

The next step, I do size 1024 IDFT.

I am a little unclear about the windowing. What shall I do exactly to
the size 1024 sequence that I obtained after the IDFT. What should I
with the window length and the window shape to control the
approximation? Thanks a lot.

Andor wrote:
> I wrote: > > philgo wrote: > > > hi, suppose I have the FIR channel with 10 taps. > > > My target sampling rate is, for example, 50MHz, i.e., the sampling > > > period is 20ns. > > > But my channel taps do not fall on integer units of the sampling > > > period, say they fall on > > > 33, 44, 55, 66, 77, 88, 99, 111, 122, 133 ns respectively. > > > What shall I do to create a FIR channel with taps falling exactly on > > > integer number of samplings? thank you in advance. > > > > Let's say the input signal was x[n], and you wanted to compute > > > > y[n] = sum_k a_k delay( x[n], t_k), > > > > where the function delay(x[n], t) simply delays the signal x[n] by the > > real value t, the t_k are the tap delays and the a_k are the tap > > weights. The only problem is to compute the delay function. You can do > > this by seperating t into integer and fractional part, ie. > > > > t = m + f, > > > > for example 3.14142... = 3 + sqrt(2) / 10. This way you can reduce the > > delay function to compute delays that lie in [0, 1[ by using > > > > delay(x[n], t) = delay(x[n-m], f). > > > > That last function is called a fractional delay and can be implemented > > using an FIR filter (with integer tap delays). An easy method to design > > the filter is via windowed sinc. Do you need more help with this? > > On second thoughts, perhaps a more direct approach to model your filter > is with the windowing technique. If we assume the above impulse > response, the frequency response is given by > > H(w) = sum_k a_k exp(-j w t_k). > > You can sample H on a regular grid with M points, compute the inverse > DFT and then window with a window of size N<M to get the impulse > response (the regularly-tapped FIR filter coefficients). M, N and the > window are parameters that allow you to determine the grade of the > approximation. > > > > > Regards, > > Andor
philgo wrote:

> Hi Andor, > > I didn't see your second reply before my previous post. > It's getting more interesting now. > > Suppose I choose M a very large number, say 1024, as I want to make it > quite an accurate approximation. > > And as you suggested, I first calculate the discrete time fourier > transform, ie. the frequency response H(w). > > The next step, I am supposed to sample 1024 points from H(w), i.e., to > get the DFT of the original a[k]'s. Because H(w) is a continuous signal > and is periodical, then I just sample 1024 uniformly distributed points > in a single period of H(w).
H(w) is not necessarily periodic - if one single ratio t_k / t_m is irrational, there is no common time grid which covers all the delay times t_k. This means that H(w) is not periodic. However, that does not concern you, as you are only interested applying the filter to bandlimited signals. Therefore you sample H(w) in the interval [-pi, pi[ at N evenly distributed points.
> > The next step, I do size 1024 IDFT. > > I am a little unclear about the windowing. What shall I do exactly to > the size 1024 sequence that I obtained after the IDFT. What should I > with the window length and the window shape to control the > approximation? Thanks a lot.
Thinking about this more, I'm also a little unclear :-). H(w) is probably not a linear-phase filter, so one would have to come up with some sort of asymmetric window. I haven't seen the windowing method mentioned for general phase FIR filters. It would require some more thought. In the meantime, just take the IDFT of the sampled H(w) as FIR coefficients. By the way, yet another method would be to sample the impulse response. Continuing with our notation, the (continuous time) impulse response of your filter is h(t) = sum_k a_k sinc(t - t_k). An FIR approximation could be h_n = h(n), for n = - M1, -(M1-1), ..., -1, 0, 1, 2, ..., M2, where the two tuning constants M1 and M2 can be chosen to satisfy your approximation condition for the filter. For positive t_k, one would probably chose M2 > M1. Regards,
> > Andor wrote: > > I wrote: > > > philgo wrote: > > > > hi, suppose I have the FIR channel with 10 taps. > > > > My target sampling rate is, for example, 50MHz, i.e., the sampling > > > > period is 20ns. > > > > But my channel taps do not fall on integer units of the sampling > > > > period, say they fall on > > > > 33, 44, 55, 66, 77, 88, 99, 111, 122, 133 ns respectively. > > > > What shall I do to create a FIR channel with taps falling exactly on > > > > integer number of samplings? thank you in advance. > > > > > > Let's say the input signal was x[n], and you wanted to compute > > > > > > y[n] = sum_k a_k delay( x[n], t_k), > > > > > > where the function delay(x[n], t) simply delays the signal x[n] by the > > > real value t, the t_k are the tap delays and the a_k are the tap > > > weights. The only problem is to compute the delay function. You can do > > > this by seperating t into integer and fractional part, ie. > > > > > > t = m + f, > > > > > > for example 3.14142... = 3 + sqrt(2) / 10. This way you can reduce the > > > delay function to compute delays that lie in [0, 1[ by using > > > > > > delay(x[n], t) = delay(x[n-m], f). > > > > > > That last function is called a fractional delay and can be implemented > > > using an FIR filter (with integer tap delays). An easy method to design > > > the filter is via windowed sinc. Do you need more help with this? > > > > On second thoughts, perhaps a more direct approach to model your filter > > is with the windowing technique. If we assume the above impulse > > response, the frequency response is given by > > > > H(w) = sum_k a_k exp(-j w t_k). > > > > You can sample H on a regular grid with M points, compute the inverse > > DFT and then window with a window of size N<M to get the impulse > > response (the regularly-tapped FIR filter coefficients). M, N and the > > window are parameters that allow you to determine the grade of the > > approximation. > > > > > > > > Regards, > > > Andor