DSPRelated.com
Forums

V.27ter

Started by Luiz Carlos November 29, 2004
I need some help on the V.27ter modulator (PSK).

At 4800 bps we have:
Modulation frequency fm=1800[Hz]
Symbol/baud rate fb=1600[Hz] (symbol/s)

Let's suppose the follow spectrum for the symbols:
Obs.: I will keep a small part of the negative spectrum just for a
better visualization.

       /|\
      / | \
     /  |  \
+-------+-------+
        |       |
        0       fb/2=800[Hz]

Using a sampling (resampling) frequency fs = 8000[Hz], we have 5
samples for symbol (fs/fb).
Inserting 4 zeroes between each 2 symbols we will have:

       /|\             /|\             /|\
      / | \           / | \           / | \
     /  |  \         /  |  \         /  |  \
+-------+-------+-------+-------+-------+-------+
        |       |                               |
        0       fb/2=800[Hz]                    fs/2=4000[Hz]

Now we must eliminate the replicas (low pass filter) to get:

       /|\
      / | \
     /  |  \
+-------+-------+-------+-------+-------+-------+
        |       |       |               |       |
        0       fb/2    fb              2*fb    fs/2=4000[Hz]

Modulating with fm:

                         /|\
                        / | \
                       /  |  \
+-------+-------+-------+-------+-------+-------+
        |                 |                     |
        0                 fm=1800[Hz]           fs/2=4000[Hz]


If the symbol's bandwith is small enough we can use a b-spline filter
(zeros at fb and 2*fb).
If not, a "normal" LPF can do the job.
But, V.27 ter says:
"The 50% raised cosine energy spectrum shaping is equally divided
between the receiver and transmitter.
The energy density at 1000 Hz and 2600 Hz shall be attenuated 3.0 dB �
2.0 dB with respect to the maximum energy density between 1000 Hz and
2600 Hz."

Why?
How to calculate this filter?
What's the relation between the 3dB at 1000 and 2600[Hz] and the
rolloff factor?
What's the shape of this filter (where must be the zeroes)?

Luiz Carlos.
Luiz Carlos wrote:
> I need some help on the V.27ter modulator (PSK). > > At 4800 bps we have: > Modulation frequency fm=1800[Hz] > Symbol/baud rate fb=1600[Hz] (symbol/s) > > Let's suppose the follow spectrum for the symbols: > Obs.: I will keep a small part of the negative spectrum just for a > better visualization. > > /|\ > / | \ > / | \ > +-------+-------+ > | | > 0 fb/2=800[Hz] > > Using a sampling (resampling) frequency fs = 8000[Hz], we have 5 > samples for symbol (fs/fb). > Inserting 4 zeroes between each 2 symbols we will have: > > /|\ /|\ /|\ > / | \ / | \ / | \ > / | \ / | \ / | \ > +-------+-------+-------+-------+-------+-------+ > | | | > 0 fb/2=800[Hz] fs/2=4000[Hz] > > Now we must eliminate the replicas (low pass filter) to get: > > /|\ > / | \ > / | \ > +-------+-------+-------+-------+-------+-------+ > | | | | | > 0 fb/2 fb 2*fb fs/2=4000[Hz] > > Modulating with fm: > > /|\ > / | \ > / | \ > +-------+-------+-------+-------+-------+-------+ > | | | > 0 fm=1800[Hz] fs/2=4000[Hz] > > > If the symbol's bandwith is small enough we can use a b-spline filter > (zeros at fb and 2*fb). > If not, a "normal" LPF can do the job. > But, V.27 ter says: > "The 50% raised cosine energy spectrum shaping is equally divided > between the receiver and transmitter. > The energy density at 1000 Hz and 2600 Hz shall be attenuated 3.0 dB � > 2.0 dB with respect to the maximum energy density between 1000 Hz and > 2600 Hz." > > Why? > How to calculate this filter? > What's the relation between the 3dB at 1000 and 2600[Hz] and the > rolloff factor? > What's the shape of this filter (where must be the zeroes)? > > Luiz Carlos.
The only filter you need to get the output signal you want is the root raised cosine one. There are some online tools which will do design for you. Try http://www-users.cs.york.ac.uk/~fisher/mkfilter/racos.html You have picked the easy version of V.27ter. Generating V.27ter at 2400bps is a little more fiddly, as the baud time is not a whole number of samples at 8000samples/second. Interpolating and decimating is the simplistic solution, but a little simple fudging of the corners of your pulses works nicely, if you get it right :-) Regards, Steve
Hi Steve,

Thanks for your input, but I'm still puzzled.

> The only filter you need to get the output signal you want is the root > raised cosine one. There are some online tools which will do design for > you. Try http://www-users.cs.york.ac.uk/~fisher/mkfilter/racos.html
Why the root raised cosine? I can't see anything special about it. If you don't choose carefully it's lenght and roll-off, it will not have even a zero at fb (symbol rate). (At some paper I read it must have zeroes at n*fb!) ITU-T V.27ter only specifies -3dB at 1000 and 2600[Hz]. It looks like there is something missing! Filter order?
> You have picked the easy version of V.27ter. Generating V.27ter at > 2400bps is a little more fiddly, as the baud time is not a whole number > of samples at 8000samples/second. Interpolating and decimating is the > simplistic solution, but a little simple fudging of the corners of your > pulses works nicely, if you get it right :-) > > Regards, > Steve
Yes. Step by step! Luiz Carlos
Luiz Carlos wrote:

>Hi Steve, > >Thanks for your input, but I'm still puzzled. > > > >>The only filter you need to get the output signal you want is the root >>raised cosine one. There are some online tools which will do design for >>you. Try http://www-users.cs.york.ac.uk/~fisher/mkfilter/racos.html >> >> > >Why the root raised cosine? >I can't see anything special about it. >If you don't choose carefully it's lenght and roll-off, it will not >have even a zero at fb (symbol rate). (At some paper I read it must >have zeroes at n*fb!) > >ITU-T V.27ter only specifies -3dB at 1000 and 2600[Hz]. It looks like >there is something missing! Filter order? > >
Raised cosine gives exactly what we want in a pulse filter. Spliting it half and half between receiver and transmitter is common practice, so root raised cosine is widely used at the transmitter. Most of the ITU V specs only vaguely define the filter, through a spectral mask. V.27 is unusual in actually saying it should be RRC. RRC works fine for all the V specs I have tried, though. The critical thing in the transmit side filter is that it should meet the spectral requirements permitted for the channel. Comms books tend to focus on ideal performance. In the real world we focus on getting products through approvals :-) Meeting spectral requirements is critical for that. Typically making the RRC filter an FIR +-4 bauds long gives excellent results. You can usually cut it shorter, and reduce the compute load, without serious effects. Even if you have the ideal filter, line distortion will screw it up to some extent, anyway. If the pulse filters are not perfect, the adaptive equalizer at the receiver will tune itself accordingly. If you are using the raised cosine/root raised cosine filter designer I pointed to, there are notes guiding you about reasonable parameters to use. One thing that might not be obvious is the selection of sinc compensation. This is to compensate for the sinc response of a D/A converter, if your sigal is going straight out through a D/A converter of most sorts. If you are, say, going to convert the signal to Alaw, and pass it through an E1, you won't want this compensation. Since you are sampling at 8000samples/second this might well be what you are doing. Regards, Steve
>>You have picked the easy version of V.27ter. Generating V.27ter at >>2400bps is a little more fiddly, as the baud time is not a whole number >>of samples at 8000samples/second. Interpolating and decimating is the >>simplistic solution, but a little simple fudging of the corners of your >>pulses works nicely, if you get it right :-) >> >>Regards, >>Steve >> >> > >Yes. Step by step! > >
A good policy :-) Regards, Steve
Hi Steve,

Thankyou again.

From what I read and your help now I can design the filter, but I'm
still not satisfied!
I'll try to explain what I understood, or I think I uderstood, and
what is missing.

If we have a)large bandwidth and b)very low distortion channel, we can
send symbols as square pulses, and they will be received as (almost)
square pulses. Ex.: Microprocessor memory bus.

But, our bandwidth is in general limited, so the symbols(pulses) must
be low-pass filtered (shaped), but we must still be able to retrieve
them. When we low pass the symbols, we spread them in time and over
other symbols. And here comes the Raised Cosine Filter. It is a
reasonable filter and it has an impulse response containing zeroes at
multiples of the symbol period.

In the V.27ter (4800 bps), at 8000[Hz] we have 5 samples per symbol,
So a simple raised cosine filter could be like this (one sample per
space):

         ---
        /   \
       /     \
      /       \
+----+----+----+----+
 \  /           \  /
  --             --

To transmit the symbols A, B and C we do:

A----B----C----...

         --- shaping A: maximum = A
        /   \
       /     \
      /       \
+----+----+----+----+----+----+
 \  /           \  /
  --             --

              --- shaping B: maximum = B
             /   \
            /     \
           /       \
+----+----+----+----+----+----+
      \  /           \  /
       --             --

                   --- shaping C: maximum = c
                  /   \
                 /     \
                /       \
+----+----+----+----+----+----+
           \  /           \  /
            --             --

And we add them to have the tx waveform (not swown):

+----+----+----+----+----+----+
          |    |    |
          |    |    +-> At this point we have 0+0+C = C
          |    +------> At this point we have 0+B+0 = B
          +-----------> At this point we have A+0+0 = A

So we can recover the original signal.

But here we didn't count the channel distortion.
If we convolve the channel impulse response and the rised cosine
filter impulse response, the zeroes at multiples of the symbol period
possibly are gone!
And what can we do now????

Maybe we must consider the channel frequency transfer function almost
constant for the band of the shaped symbols! We in general use a
carrier for trasmitting the symbols, so it looks reasonable!

What's the truth?

Luiz Carlos.
Hi Luiz,

We have no idea what the channel will look like, other than some overall 
constraints - e.g. the 8kHz sampling in the PCM sections of the channel 
will definitely impose hard frequency limiting. The received signal, 
after moving to baseband and root raised cosine filtering, can be 
*massively* distorted on real phase lines.

Channels vary a lot. You can't ignore them. The only way to decode a 
V.27ter signal successfully is to use an adaptive equalizer at the 
receiver. It is a part of the spec., although the implementation is left 
entirely up to you. That is why I said it doesn't matter too much is 
your transmit filter is not ideal. You will need an adaptive filter at 
the receiver, to compensate for channel behaviour, anyway.

If you want to see a working V.27ter modem, there is a free one in my 
spandsp library, at ftp://ftp.opencall.org/pub/spandsp. Some aspects of 
it are less than ideal, as I have not had the time to optimise all of 
it. It is functional, though.

Regards,
Steve


Luiz Carlos wrote:
> Hi Steve, > > Thankyou again. > > From what I read and your help now I can design the filter, but I'm > still not satisfied! > I'll try to explain what I understood, or I think I uderstood, and > what is missing. > > If we have a)large bandwidth and b)very low distortion channel, we can > send symbols as square pulses, and they will be received as (almost) > square pulses. Ex.: Microprocessor memory bus. > > But, our bandwidth is in general limited, so the symbols(pulses) must > be low-pass filtered (shaped), but we must still be able to retrieve > them. When we low pass the symbols, we spread them in time and over > other symbols. And here comes the Raised Cosine Filter. It is a > reasonable filter and it has an impulse response containing zeroes at > multiples of the symbol period. > > In the V.27ter (4800 bps), at 8000[Hz] we have 5 samples per symbol, > So a simple raised cosine filter could be like this (one sample per > space): > > --- > / \ > / \ > / \ > +----+----+----+----+ > \ / \ / > -- -- > > To transmit the symbols A, B and C we do: > > A----B----C----... > > --- shaping A: maximum = A > / \ > / \ > / \ > +----+----+----+----+----+----+ > \ / \ / > -- -- > > --- shaping B: maximum = B > / \ > / \ > / \ > +----+----+----+----+----+----+ > \ / \ / > -- -- > > --- shaping C: maximum = c > / \ > / \ > / \ > +----+----+----+----+----+----+ > \ / \ / > -- -- > > And we add them to have the tx waveform (not swown): > > +----+----+----+----+----+----+ > | | | > | | +-> At this point we have 0+0+C = C > | +------> At this point we have 0+B+0 = B > +-----------> At this point we have A+0+0 = A > > So we can recover the original signal. > > But here we didn't count the channel distortion. > If we convolve the channel impulse response and the rised cosine > filter impulse response, the zeroes at multiples of the symbol period > possibly are gone! > And what can we do now???? > > Maybe we must consider the channel frequency transfer function almost > constant for the band of the shaped symbols! We in general use a > carrier for trasmitting the symbols, so it looks reasonable! > > What's the truth? > > Luiz Carlos.