Reply by John Sampson August 18, 20032003-08-18
"Ian McBride" <ianmcbride2003@yahoo.com> wrote in message
news:bfagg9$1sv$1@slb3.atl.mindspring.net...
> "Jim Thomas" <jthomas@bittware.com> wrote in message > news:3F1800AA.C0893999@bittware.com... > > > > This might help: > > http://www.dspguru.com/info/faqs/mrfaq.htm > > Great! Just shove zeros in there and run it through an FIR.. ..WOW.. > > OK. Another question. Lets say I have FSK data at 1200 bits per second.
I
> translate 0's to -5000Hz and 1's to +5000Hz and compose a "baseband" of 1 > sample per bit. Can I zero stuff this with 79 zeroes, run it through an
FIR
> filter to get my filtered FSK baseband? This seems confusing. I'm > surprised that all of those zeroes wouldn't give you DC output with minor > "bumps" showing up 1200 times a second. > > Thanks! >
A little thought will show you that this won't work. Let's say your data is all ones, which should produce a 5 kHz tone in the baseband. You propose only one sample every 1/1200 sec, but the Nyquist rate is Fs > 10 kHz, which must be satisfied at every point in your system. You can't interpolate your way out of it. John
Reply by Ian McBride July 23, 20032003-07-23
"Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote in message
news:rSzTa.3405$Jk5.2403537@feed2.centurytel.net...

> Ian, > > The answer is "it depends". If you can meet all the specs with one filter > then why not? - subject to breaking the filter up into stages, etc. > > This implies that you want to upsample/interpolate prior to
modulating.....
> I don't understand what your implementation block diagram looks like so
it's
> hard to comment. But it seems a little strange.
This is a personal experiment -- I am carrying on a digital base transmitter project that my company dropped, for my own education. So, it my indeed be strange. A block diagram of sorts.. The transmitter DSP accepts data for transmission -- either 8ksample/s PCM voice, or digital data in the form of 4800 baud 1's and 0's. The PCM voice is converted into FM deviations, and the data is converted into FSK deviations. The voice data is interpolated to 96ksamples per second, by zero-stuffing and polyphase filtering, and the FSK data is "interpolated" by repeating each sample 19 times to create a perfect "square wave" of 4800 baud data at 96ksamples per second. In either mode, the resulting 96ksamples per second is filtered (premodulation filter) and then converted into a step angle for a quadrature NCO also running at 96000 iterations per second which produces an I/Q "baseband" representation of the FM signal. The 96,000 samples per second of I and Q FM are then fed to a graychip part that further interpolates them to 60,000,000 samples per second and mixes them with another NCO to create a 21.4mhz IF of the FM signal. This connects to an A/D converter, to RF circuitry, to a PA, to an antenna. My understanding is that the premodulation filter for data is a 12th-order Bessel with a 3.9khz cutoff, while the voice is a Butterworth with a 3.9khz cutoff. I was assuming that the interpolated data would need to be run through an IIR filter before it is handed to the NCO for conversation into step angles. Also, the output of the NCO will be interpolated and filtered big time by the graychip part, which needs to be programmed with its own FIR filter coefficients. Some of this was put together by the consultants before we backed off of the project. I am taking it at face value that the design makes sense. I am continuing it because (1) I believe we will eventually do it, and (2) I want to learn a bit more on how these things work. If it is restarted, I would like to again be the one managing it, but I need to know more about the subject. Right now I am right after the interpolation, but just prior to the premodulation filter, wondering if the two can be combined. However, I am happy to hear "big picture" comments from anyone reading through my above ramblings! If this is all missing the point on some level, then I'd like to know that too. Thanks to everyone for all the help.
Reply by Fred Marshall July 23, 20032003-07-23
"Ian McBride" <ianmcbride2003@yahoo.com> wrote in message
news:bfm041$f31$1@slb6.atl.mindspring.net...
> > "Jon Harris" <jon_harrisTIGER@hotmail.com> wrote in message > news:3f1aeb4d$1_1@newsfeed... > > In fact, "connecting the dots" is usually a "bad idea" for two reasons: > > > > 1) If the in-between data is all zeros, the FIR filter can be optimized
to
> > execute _much_ faster. The zero valued samples can simply be skipped > since > > they contribute nothing to the result. > > > > 2) Linear interpolation is a low-pass filtering operation, and not a
very
> > good one at that. It introduces some roll-off in the pass-band which is
a
> > problem in some applications. True, it does give you some additional > > stop-band attenuation, but you are almost always better off to skip the > > linear interpolation and use the time saved to do a better (longer)
single
> > FIR. > > OK. Now, I am wondering if the "zero-stuffing/polyphase FIR"
interpolation
> method can also serve as a premodulation filter. I.e., if my
pre-modulation
> filter needs to be an nth-order Butterworth or Bessel with a certain
cutoff,
> can the FIR filter smoothing out all of those zeros also take care of this > too, or is this usually another IIR stage operating on the interpolated > data? >
Ian, The answer is "it depends". If you can meet all the specs with one filter then why not? - subject to breaking the filter up into stages, etc. This implies that you want to upsample/interpolate prior to modulating..... I don't understand what your implementation block diagram looks like so it's hard to comment. But it seems a little strange. Fred
Reply by Ian McBride July 23, 20032003-07-23
"Jon Harris" <jon_harrisTIGER@hotmail.com> wrote in message
news:3f1aeb4d$1_1@newsfeed...
> In fact, "connecting the dots" is usually a "bad idea" for two reasons: > > 1) If the in-between data is all zeros, the FIR filter can be optimized to > execute _much_ faster. The zero valued samples can simply be skipped
since
> they contribute nothing to the result. > > 2) Linear interpolation is a low-pass filtering operation, and not a very > good one at that. It introduces some roll-off in the pass-band which is a > problem in some applications. True, it does give you some additional > stop-band attenuation, but you are almost always better off to skip the > linear interpolation and use the time saved to do a better (longer) single > FIR.
OK. Now, I am wondering if the "zero-stuffing/polyphase FIR" interpolation method can also serve as a premodulation filter. I.e., if my pre-modulation filter needs to be an nth-order Butterworth or Bessel with a certain cutoff, can the FIR filter smoothing out all of those zeros also take care of this too, or is this usually another IIR stage operating on the interpolated data? Thanks for all of the help!
Reply by Fred Marshall July 22, 20032003-07-22
"Jon Harris" <jon_harrisTIGER@hotmail.com> wrote in message
news:3f1c2fc1$1_2@newsfeed...
> "Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote in message > news:YOeTa.3375$Jk5.2341110@feed2.centurytel.net... > > > > "Rick Lyons" <ricklyon@REMOVE.onemain.com> wrote in message > > news:3f1d70f5.21806828@news.earthlink.net... > > > On Mon, 21 Jul 2003 12:24:50 -0700, "Jon Harris" > > > <jon_harrisTIGER@hotmail.com> wrote: > > > > > > (snipped) > > > >> > > > >> Well, the most common method of interpolation is to > > > >> stuff the 11 zeros in between your original samples > > > >> and then lowpass filter the new sequence. (As far as I know, > > > >> there's no benefit in performing the 'linear interpolation' > > > >> of putting the 11 dots on a straight line.) > > > > > > > >In fact, "connecting the dots" is usually a "bad idea" for two
reasons:
> > > > > > > >1) If the in-between data is all zeros, the FIR filter can be
optimized
> > to > > > >execute _much_ faster. The zero valued samples can simply be skipped > > since > > > >they contribute nothing to the result. > > > > > > Hi Jon, > > > > > > > > > VERY GOOD POINT !!! > > > > > > > > > [-Rick-] > > > > This is just another way of saying what a time-domain "polyphse" filter
is
> > doing, right? > > I thought your book made it much clearer than most Rick. > > > > Fred > > Yes. In my way of looking at things, the polyphase filter thing is just a > mathematical formalization of some simple optimizations that would be
pretty
> obvious to most people if when implementing interpolation.
Jon, Yes and it has such a high falutin' name too! Who might imagine that something with a name like that is just another way of saying: "now, common sense about efficiency might suggest ...... (something like what you said)" Worth mentioning so folks can make the connection - my purpose. Fred
Reply by Jon Harris July 22, 20032003-07-22
"Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote in message
news:YOeTa.3375$Jk5.2341110@feed2.centurytel.net...
> > "Rick Lyons" <ricklyon@REMOVE.onemain.com> wrote in message > news:3f1d70f5.21806828@news.earthlink.net... > > On Mon, 21 Jul 2003 12:24:50 -0700, "Jon Harris" > > <jon_harrisTIGER@hotmail.com> wrote: > > > > (snipped) > > >> > > >> Well, the most common method of interpolation is to > > >> stuff the 11 zeros in between your original samples > > >> and then lowpass filter the new sequence. (As far as I know, > > >> there's no benefit in performing the 'linear interpolation' > > >> of putting the 11 dots on a straight line.) > > > > > >In fact, "connecting the dots" is usually a "bad idea" for two reasons: > > > > > >1) If the in-between data is all zeros, the FIR filter can be optimized > to > > >execute _much_ faster. The zero valued samples can simply be skipped > since > > >they contribute nothing to the result. > > > > Hi Jon, > > > > > > VERY GOOD POINT !!! > > > > > > [-Rick-] > > This is just another way of saying what a time-domain "polyphse" filter is > doing, right? > I thought your book made it much clearer than most Rick. > > Fred
Yes. In my way of looking at things, the polyphase filter thing is just a mathematical formalization of some simple optimizations that would be pretty obvious to most people if when implementing interpolation.
Reply by Fred Marshall July 22, 20032003-07-22
"Rick Lyons" <ricklyon@REMOVE.onemain.com> wrote in message
news:3f1d70f5.21806828@news.earthlink.net...
> On Mon, 21 Jul 2003 12:24:50 -0700, "Jon Harris" > <jon_harrisTIGER@hotmail.com> wrote: > > (snipped) > >> > >> Well, the most common method of interpolation is to > >> stuff the 11 zeros in between your original samples > >> and then lowpass filter the new sequence. (As far as I know, > >> there's no benefit in performing the 'linear interpolation' > >> of putting the 11 dots on a straight line.) > > > >In fact, "connecting the dots" is usually a "bad idea" for two reasons: > > > >1) If the in-between data is all zeros, the FIR filter can be optimized
to
> >execute _much_ faster. The zero valued samples can simply be skipped
since
> >they contribute nothing to the result. > > Hi Jon, > > > VERY GOOD POINT !!! > > > [-Rick-]
This is just another way of saying what a time-domain "polyphse" filter is doing, right? I thought your book made it much clearer than most Rick. Fred
Reply by Rick Lyons July 22, 20032003-07-22
On Mon, 21 Jul 2003 12:24:50 -0700, "Jon Harris"
<jon_harrisTIGER@hotmail.com> wrote:

  (snipped)
>> >> Well, the most common method of interpolation is to >> stuff the 11 zeros in between your original samples >> and then lowpass filter the new sequence. (As far as I know, >> there's no benefit in performing the 'linear interpolation' >> of putting the 11 dots on a straight line.) > >In fact, "connecting the dots" is usually a "bad idea" for two reasons: > >1) If the in-between data is all zeros, the FIR filter can be optimized to >execute _much_ faster. The zero valued samples can simply be skipped since >they contribute nothing to the result.
Hi Jon, VERY GOOD POINT !!! [-Rick-]
>
Reply by Jon Harris July 21, 20032003-07-21
"Rick Lyons" <ricklyon@REMOVE.onemain.com> wrote in message
news:3f1804b6.17234828@news.earthlink.net...
> On Fri, 18 Jul 2003 08:09:16 -0400, "Ian McBride" > <ianmcbride2003@yahoo.com> wrote: > > Hello Ian, > > >I am trying to figure out interpolation (I have given up on decimation
for
> >now). > > Humm, I've always found decimation easier to understand than > interpolation. Anyway ... > > >My scenario is that I have 8 ksamples per second audio (from a phone
line),
> >and I want to interpolate it to 96 ksamples per second. I know my audio
is
> >band limited within 0-4kHz, but other than that it could be anything -- > >human voice, modem tones, etc. > > > >I understand the most basic concepts. I could use linear interpolation, > >where I connect the 8kHz dots with lines and then add 11 evenly spaced
dots
> >along these lines. I suppose I could do this and then run the result > >through a LPF filter and it would improve it. But I suspect these
methods
> >are hardly state of the art. > > Well, the most common method of interpolation is to > stuff the 11 zeros in between your original samples > and then lowpass filter the new sequence. (As far as I know, > there's no benefit in performing the 'linear interpolation' > of putting the 11 dots on a straight line.)
In fact, "connecting the dots" is usually a "bad idea" for two reasons: 1) If the in-between data is all zeros, the FIR filter can be optimized to execute _much_ faster. The zero valued samples can simply be skipped since they contribute nothing to the result. 2) Linear interpolation is a low-pass filtering operation, and not a very good one at that. It introduces some roll-off in the pass-band which is a problem in some applications. True, it does give you some additional stop-band attenuation, but you are almost always better off to skip the linear interpolation and use the time saved to do a better (longer) single FIR.
Reply by Fred Marshall July 19, 20032003-07-19
"Ian McBride" <ianmcbride2003@yahoo.com> wrote in message
news:bfagg9$1sv$1@slb3.atl.mindspring.net...
> "Jim Thomas" <jthomas@bittware.com> wrote in message > news:3F1800AA.C0893999@bittware.com... > > > > This might help: > > http://www.dspguru.com/info/faqs/mrfaq.htm > > Great! Just shove zeros in there and run it through an FIR.. ..WOW.. > > OK. Another question. Lets say I have FSK data at 1200 bits per second.
I
> translate 0's to -5000Hz and 1's to +5000Hz and compose a "baseband" of 1 > sample per bit. Can I zero stuff this with 79 zeroes, run it through an
FIR
> filter to get my filtered FSK baseband? This seems confusing. I'm > surprised that all of those zeroes wouldn't give you DC output with minor > "bumps" showing up 1200 times a second. >
Let's see if I understand: FSK +/-5,000Hz Modulation of one bit per symbol: 0=-5,000Hz, 1=+5,000Hz Bit/symbol rate of 1200 bits per second You didn't say what the carrier frequency is. You didn't say what the sample rate is. I guess you consider the FSK baseband to be -1="0" and +1="1", something like that? Assign a carrier frequency of 50,000Hz. Then the data has this as a center frequency and the bandwidth will be something greater than 10kHz. It appears what you would want to do is decimate, not interpolate and in the process you would need to demodulate - which might be part of decimation. I think there's a nonlinear process needed here. Fred