DSPRelated.com
Forums

Raised Cosine filter output not what I expect

Started by bill mofson August 8, 2006
I'm working on a digital transmission system that requires a raised 
cosine filter on the transmitted data.   Symbol rate is 1e6MHz, Sample 
rate is 6e6Mhz.  Rolloff (Beta) is .5  Filter length is 6 bits (actually 
6.1666 bits since I re-specify the taps to be 37 instead of 36 so I can 
get a peak out of the impulse response).

Because this filter is used to decrease ISI, the coefficients are 
supposed to be 0 every 6 samples, except for the impulse sample - and my 
filter tools are generating exactly this (Quartus 6.0 FIR filter as well 
as ScopeFIR).  I'm referencing a spec which calls out this raised cosine 
filter and shows an example output of a specific data pattern.  In this 
example, they are using the filter before an FM modulator.  So with this 
filter they show how the modulator goes from a 1(+dF) to a -1(-dF) 
smoothly.  The significance of the example is that at each sample 
period, the output is either 1 or -1, whereas between sample periods, 
the frequency output is greater or less than (1,-1) due to the effects 
of the raised cosine filter and the specific bit pattern as it goes 
through the filter (e.g. a pattern of 010 goes directly from -1,1,-1 
with no overshoot at either 1 or -1.  A pattern of 011 goes from -1 to 
1, settles at about 1.4 before coming back to 1 between the second and 
third bits).

My filter doesn't do this.  The filter output differs based on what bit 
pattern is run through it.  For example, if all 0's go through, I'll 
declare the filter value to be -1.  If all 1's I'll declare the value 
equivalent to the 1. If I run alternating 0,1 (e.g. 01010101) - I get, 
say, something on the order of .8 to -.8 (always undershoots).  If I run 
groups of 0,1 (e.g. 11001100), the filter overshoots at the sample 
period, not between the sample period.  Basically I never see values 
that represent 1 and -1 for any random bit pattern.


Any insight as to what I'm doing wrong is very much appreciated.

Bill M.
bill mofson wrote:
> I'm working on a digital transmission system that requires a raised > cosine filter on the transmitted data. Symbol rate is 1e6MHz, Sample > rate is 6e6Mhz. Rolloff (Beta) is .5 Filter length is 6 bits (actually > 6.1666 bits since I re-specify the taps to be 37 instead of 36 so I can > get a peak out of the impulse response). > > Because this filter is used to decrease ISI, the coefficients are > supposed to be 0 every 6 samples, except for the impulse sample - and my > filter tools are generating exactly this (Quartus 6.0 FIR filter as well > as ScopeFIR). I'm referencing a spec which calls out this raised cosine > filter and shows an example output of a specific data pattern. In this > example, they are using the filter before an FM modulator. So with this > filter they show how the modulator goes from a 1(+dF) to a -1(-dF) > smoothly. The significance of the example is that at each bit > period, the output is either 1 or -1, whereas between bits, > the frequency output is greater or less than (1,-1) due to the effects > of the raised cosine filter and the specific bit pattern as it goes > through the filter (e.g. a pattern of 010 goes directly from -1,1,-1 > with no overshoot at either 1 or -1. A pattern of 011 goes from -1 to > 1, settles at about 1.4 before coming back to 1 between the second and > third bits). > > My filter doesn't do this. The filter output differs based on what bit > pattern is run through it. For example, if all 0's go through, I'll > declare the filter value to be -1. If all 1's I'll declare the value > equivalent to the 1. If I run alternating 0,1 (e.g. 01010101) - I get, > say, something on the order of .8 to -.8 (always undershoots). If I run > groups of 0,1 (e.g. 11001100), the filter overshoots at the sample > period, not between the sample period. Basically I never see values > that represent 1 and -1 for any random bit pattern. > > > Any insight as to what I'm doing wrong is very much appreciated. > > Bill M.
"bill mofson" <bill.mofson@removeverizon.net> wrote in message 
news:H%8Cg.67804$Lh4.3012@trnddc02...
> bill mofson wrote: >> I'm working on a digital transmission system that requires a raised >> cosine filter on the transmitted data. Symbol rate is 1e6MHz, Sample >> rate is 6e6Mhz. Rolloff (Beta) is .5 Filter length is 6 bits (actually >> 6.1666 bits since I re-specify the taps to be 37 instead of 36 so I can >> get a peak out of the impulse response). >> >> Because this filter is used to decrease ISI, the coefficients are >> supposed to be 0 every 6 samples, except for the impulse sample - and my >> filter tools are generating exactly this (Quartus 6.0 FIR filter as well >> as ScopeFIR). I'm referencing a spec which calls out this raised cosine >> filter and shows an example output of a specific data pattern. In this >> example, they are using the filter before an FM modulator. So with this >> filter they show how the modulator goes from a 1(+dF) to a -1(-dF) >> smoothly. The significance of the example is that at each bit >> period, the output is either 1 or -1, whereas between bits, the frequency >> output is greater or less than (1,-1) due to the effects of the raised >> cosine filter and the specific bit pattern as it goes through the filter >> (e.g. a pattern of 010 goes directly from -1,1,-1 with no overshoot at >> either 1 or -1. A pattern of 011 goes from -1 to 1, settles at about 1.4 >> before coming back to 1 between the second and third bits). >> >> My filter doesn't do this. The filter output differs based on what bit >> pattern is run through it. For example, if all 0's go through, I'll >> declare the filter value to be -1. If all 1's I'll declare the value >> equivalent to the 1. If I run alternating 0,1 (e.g. 01010101) - I get, >> say, something on the order of .8 to -.8 (always undershoots). If I run >> groups of 0,1 (e.g. 11001100), the filter overshoots at the sample >> period, not between the sample period. Basically I never see values that >> represent 1 and -1 for any random bit pattern. >> >> >> Any insight as to what I'm doing wrong is very much appreciated. >> >> Bill M.
Hi Bill : I can't see any difference between your second, corrected, post and the first. When you say 'never see values that represent 1 and -1 for any random bit pattern' does this mean that you never see outputs with absolute value close to X and spaced at 37 samples? Best of luck - Mike
"Mike Yarwood" <mpyarwood@btopenworld.com> wrote in message 
news:dsydnc03kI71v0TZnZ2dnUVZ8qidnZ2d@bt.com...
> > "bill mofson" <bill.mofson@removeverizon.net> wrote in message > news:H%8Cg.67804$Lh4.3012@trnddc02... >> bill mofson wrote:
<... no point in repeating this again...>
> Hi Bill : > When you say 'never see values that represent 1 and -1 for any random bit > pattern' does this mean that you never see outputs with absolute value > close to X and spaced at 37 samples?
I should have said every 6 samples shouldn't I?
>
Best of luck - Mike
"Mike Yarwood" <mpyarwood@btopenworld.com> wrote in message 
news:dsydnc03kI71v0TZnZ2dnUVZ8qidnZ2d@bt.com...
>
<snip>
> When you say 'never see values that represent 1 and -1 for any random bit > pattern' does this mean that you never see outputs with absolute value > close to X and spaced at 37 samples?
But should have said every 6 samples. Wondering whether there is a constant delay and/or scaling factor somewhere. Best of Luck - Mike
Mike Yarwood wrote:
> "Mike Yarwood" <mpyarwood@btopenworld.com> wrote in message > news:dsydnc03kI71v0TZnZ2dnUVZ8qidnZ2d@bt.com... > <snip> >> When you say 'never see values that represent 1 and -1 for any random bit >> pattern' does this mean that you never see outputs with absolute value >> close to X and spaced at 37 samples? > > But should have said every 6 samples. > > Wondering whether there is a constant delay and/or scaling factor somewhere. > > Best of Luck - Mike > >
Mike, Forgot to add that, yes, the coefficients have been scaled - though the coefficients at every 6 samples (except for the impulse itself) are always zero for any scaling function. For alternating 01 patterns, I don't see |X| (1,-1) values; it's more like some fraction, say .7 - .8 (it's consistent, I don't have the exact value at hand this moment). If the pattern is random, then I'll see values that go beyond |X|, but these values are <not> at the bit period samples. Recall that at the values 1, -1 (or 1,0 - or however one wants to represent it), these are the points where the carrier is to modulated with the +/- f0 (in this case it's 150KHz). If the carrier isn't delta f0 at the bit times, then the receiver won't have the maximum energy in its receiver filter to sample. Thanks for your time, Bill
bill mofson wrote:
> I'm working on a digital transmission system that requires a raised > cosine filter on the transmitted data. Symbol rate is 1e6MHz, Sample > rate is 6e6Mhz.
... Please tell me what you use to sample at 6,000,000,000,000 Hz. Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Mike Yarwood wrote:
> "Mike Yarwood" <mpyarwood@btopenworld.com> wrote in message > news:dsydnc03kI71v0TZnZ2dnUVZ8qidnZ2d@bt.com... > <snip> >> When you say 'never see values that represent 1 and -1 for any random bit >> pattern' does this mean that you never see outputs with absolute value >> close to X and spaced at 37 samples? > > But should have said every 6 samples. > > Wondering whether there is a constant delay and/or scaling factor somewhere.
Maybe he isn't sampling at 6,000 GHz (6 THz) after all. The sodium D lines are less that 600 THz. If the design assumes one number and the test signals are actually at another, there'd be trouble right there. A wavelength of his stated sampling frequency is about 60 microns (in air; less on a circuit board), less than 2.5 microinches. That makes for tough board layout. Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Jerry Avins wrote:
> Mike Yarwood wrote: >> "Mike Yarwood" <mpyarwood@btopenworld.com> wrote in message >> news:dsydnc03kI71v0TZnZ2dnUVZ8qidnZ2d@bt.com... >> <snip> >>> When you say 'never see values that represent 1 and -1 for any random >>> bit pattern' does this mean that you never see outputs with absolute >>> value close to X and spaced at 37 samples? >> >> But should have said every 6 samples. >> >> Wondering whether there is a constant delay and/or scaling factor >> somewhere. > > Maybe he isn't sampling at 6,000 GHz (6 THz) after all. The sodium D > lines are less that 600 THz. If the design assumes one number and the > test signals are actually at another, there'd be trouble right there. A > wavelength of his stated sampling frequency is about 60 microns (in air; > less on a circuit board), less than 2.5 microinches. That makes for > tough board layout. > > Jerry
Oops! My mistake: sampling rate is 6MHz (6e6) and bit rate is 1MHz (1e6) Bill
Jerry Avins wrote:
> bill mofson wrote: >> I'm working on a digital transmission system that requires a raised >> cosine filter on the transmitted data. Symbol rate is 1e6MHz, Sample >> rate is 6e6Mhz. > > ... > > Please tell me what you use to sample at 6,000,000,000,000 Hz. > > Jerry
Oops! Sampling at 6MHz (6e6) and bit rate is 1Mhz (1e6) Bill