Forums

Variable data rate PSK modem

Started by Mehtap özkan July 18, 2018
Dear All,
 I have a fixed data rate PSK receiver which works fine. Now I have to design a
variable data rate PSK receiver.
The Block Diagram looks like this(Hope ASCII Art works):

ADC->AGC->RRC->Complex Mixer->Coarse/Fine Carr.Recov->Timing Rec->BPSK/QPSK
                     |                 |
                    NCO----------------                                    

When I try to add a Decimator/Interpolator to achieve variable data rate, the
carrier recovery still works if the RRC is bypassed. If the RRC block is added, the
carrier recovery fails.

What is your opinion? Why Carrier Recovery fails if I add the RRC? Where should I
place the Decimator/Interpolator?

Thank you in Advance.
Mehtap &ouml;zkan  <kurtulmehtap@gmail.com> wrote:

> I have a fixed data rate PSK receiver which works fine. Now I have to >design a variable data rate PSK receiver. >The Block Diagram looks like this(Hope ASCII Art works): > >ADC->AGC->RRC->Complex Mixer->Coarse/Fine Carr.Recov->Timing Rec->BPSK/QPSK > | | > NCO---------------- > >When I try to add a Decimator/Interpolator to achieve variable data >rate, the carrier recovery still works if the RRC is bypassed. If the >RRC block is added, the carrier recovery fails. > >What is your opinion? Why Carrier Recovery fails if I add the RRC? Where >should I place the Decimator/Interpolator?
If you can recover the carrier without the RRC, do that, and only use the RRC for bit detection. That may be the simplest fix, although it sounds like something is more basically wrong in your implementation, to cause this problem. Steve
On Wed, 18 Jul 2018 08:50:25 -0700 (PDT),
=?UTF-8?Q?Mehtap_=C3=B6zkan?= <kurtulmehtap@gmail.com> wrote:

>Dear All, > I have a fixed data rate PSK receiver which works fine. Now I have to design a
variable data rate PSK receiver.
>The Block Diagram looks like this(Hope ASCII Art works): > >ADC->AGC->RRC->Complex Mixer->Coarse/Fine Carr.Recov->Timing Rec->BPSK/QPSK > | | > NCO---------------- > >When I try to add a Decimator/Interpolator to achieve variable data rate, the
carrier recovery still works if the RRC is bypassed. If the RRC block is added, the carrier recovery fails.
> >What is your opinion? Why Carrier Recovery fails if I add the RRC? Where should I
place the Decimator/Interpolator?
> >Thank you in Advance.
You can do the RRC after synchronization, and it's usually easier to do it there, especially in a variable rate system. What do the constellation points look like in both cases? Usually that will help figure out what's working and what's not.
Here are the screenshots:
No RX RRC successfull carrier recovery: 
https://photos.google.com/photo/AF1QipM9_47fWRpZDa5agqA8soGVKYK9SDn1eISoQYYN

RX RRC 0.1 roll off, failed carrier recovery: 
https://photos.google.com/photo/AF1QipOeWqYEYK7S_yR8rUVMCASAzJhE5RlVn-wCKtjz



19 Temmuz 2018 Per&#351;embe 02:15:35 UTC+3 tarihinde Eric Jacobsen yazd&#305;:
> On Wed, 18 Jul 2018 08:50:25 -0700 (PDT), > =?UTF-8?Q?Mehtap_=C3=B6zkan?= <kurtulmehtap@gmail.com> wrote: > > >Dear All, > > I have a fixed data rate PSK receiver which works fine. Now I have to design a
variable data rate PSK receiver.
> >The Block Diagram looks like this(Hope ASCII Art works): > > > >ADC->AGC->RRC->Complex Mixer->Coarse/Fine Carr.Recov->Timing Rec->BPSK/QPSK > > | | > > NCO---------------- > > > >When I try to add a Decimator/Interpolator to achieve variable data rate, the
carrier recovery still works if the RRC is bypassed. If the RRC block is added, the carrier recovery fails.
> > > >What is your opinion? Why Carrier Recovery fails if I add the RRC? Where should I
place the Decimator/Interpolator?
> > > >Thank you in Advance. > > You can do the RRC after synchronization, and it's usually easier to > do it there, especially in a variable rate system. > > What do the constellation points look like in both cases? Usually > that will help figure out what's working and what's not.
Couldn't access the screenshots. :-(

Might I suggest you to post the screenshots using imgur.com ?

Gene.


On 19.07.2018 13:41, Mehtap &ouml;zkan wrote:
> Here are the screenshots: > No RX RRC successfull carrier recovery: > https://photos.google.com/photo/AF1QipM9_47fWRpZDa5agqA8soGVKYK9SDn1eISoQYYN > > RX RRC 0.1 roll off, failed carrier recovery: > https://photos.google.com/photo/AF1QipOeWqYEYK7S_yR8rUVMCASAzJhE5RlVn-wCKtjz > > > > 19 Temmuz 2018 Per&#351;embe 02:15:35 UTC+3 tarihinde Eric Jacobsen yazd&#305;: >> On Wed, 18 Jul 2018 08:50:25 -0700 (PDT), >> =?UTF-8?Q?Mehtap_=C3=B6zkan?= <kurtulmehtap@gmail.com> wrote: >> >>> Dear All, >>> I have a fixed data rate PSK receiver which works fine. Now I have to design a
variable data rate PSK receiver.
>>> The Block Diagram looks like this(Hope ASCII Art works): >>> >>> ADC->AGC->RRC->Complex Mixer->Coarse/Fine Carr.Recov->Timing Rec->BPSK/QPSK >>> | | >>> NCO---------------- >>> >>> When I try to add a Decimator/Interpolator to achieve variable data rate, the
carrier recovery still works if the RRC is bypassed. If the RRC block is added, the carrier recovery fails.
>>> >>> What is your opinion? Why Carrier Recovery fails if I add the RRC? Where should
I place the Decimator/Interpolator?
>>> >>> Thank you in Advance. >> >> You can do the RRC after synchronization, and it's usually easier to >> do it there, especially in a variable rate system. >> >> What do the constellation points look like in both cases? Usually >> that will help figure out what's working and what's not. >
Sorry,
 Here are the screenshots for 
No RX RRC successfull carrier recovery and 
RX RRC 0.1 roll off, failed carrier recovery

https://www.flickr.com/photos/143081476@N02/


19 Temmuz 2018 Per&#351;embe 14:03:24 UTC+3 tarihinde Gene Filatov yazd&#305;:
> Couldn't access the screenshots. :-( > > Might I suggest you to post the screenshots using imgur.com ? > > Gene. > > > On 19.07.2018 13:41, Mehtap &ouml;zkan wrote: > > Here are the screenshots: > > No RX RRC successfull carrier recovery: > > https://photos.google.com/photo/AF1QipM9_47fWRpZDa5agqA8soGVKYK9SDn1eISoQYYN > > > > RX RRC 0.1 roll off, failed carrier recovery: > > https://photos.google.com/photo/AF1QipOeWqYEYK7S_yR8rUVMCASAzJhE5RlVn-wCKtjz > > > > > > > > 19 Temmuz 2018 Per&#351;embe 02:15:35 UTC+3 tarihinde Eric Jacobsen yazd&#305;: > >> On Wed, 18 Jul 2018 08:50:25 -0700 (PDT), > >> =?UTF-8?Q?Mehtap_=C3=B6zkan?= <kurtulmehtap@gmail.com> wrote: > >> > >>> Dear All, > >>> I have a fixed data rate PSK receiver which works fine. Now I have to design a
variable data rate PSK receiver.
> >>> The Block Diagram looks like this(Hope ASCII Art works): > >>> > >>> ADC->AGC->RRC->Complex Mixer->Coarse/Fine Carr.Recov->Timing Rec->BPSK/QPSK > >>> | | > >>> NCO---------------- > >>> > >>> When I try to add a Decimator/Interpolator to achieve variable data rate, the
carrier recovery still works if the RRC is bypassed. If the RRC block is added, the carrier recovery fails.
> >>> > >>> What is your opinion? Why Carrier Recovery fails if I add the RRC? Where
should I place the Decimator/Interpolator?
> >>> > >>> Thank you in Advance. > >> > >> You can do the RRC after synchronization, and it's usually easier to > >> do it there, especially in a variable rate system. > >> > >> What do the constellation points look like in both cases? Usually > >> that will help figure out what's working and what's not. > >
Thanks, that's working!

Mehtap, if I've figured it out correctly, your signal consists of square 
pulses with the rate of 4 Mbits/sec.

Why do you filter the signal with a root-raised cosine filter, then?

In any communications system, you should filter the signal with the 
matched filter to get the best SNR (see virtually any textbook on 
communication systems, e.g. Proakis). In your case, the matched filter 
should have the impulse response of a single square pulse.

However, your design fails to work properly due to a different issue. A 
RRC filter has two characteristics -- symbol rate and roll-off factor. 
In your case the symbol rate of the RRC filter is off by a factor of two 
(2 MHz instead of 4 MHz) -- which seems to be the immediate reason for 
the failure.

Gene.



On 19.07.2018 16:25, Mehtap &ouml;zkan wrote:
> Sorry, > Here are the screenshots for > No RX RRC successfull carrier recovery and > RX RRC 0.1 roll off, failed carrier recovery > > https://www.flickr.com/photos/143081476@N02/ > > > 19 Temmuz 2018 Per&#351;embe 14:03:24 UTC+3 tarihinde Gene Filatov yazd&#305;: >> Couldn't access the screenshots. :-( >> >> Might I suggest you to post the screenshots using imgur.com ? >> >> Gene. >> >> >> On 19.07.2018 13:41, Mehtap &ouml;zkan wrote: >>> Here are the screenshots: >>> No RX RRC successfull carrier recovery: >>> https://photos.google.com/photo/AF1QipM9_47fWRpZDa5agqA8soGVKYK9SDn1eISoQYYN >>> >>> RX RRC 0.1 roll off, failed carrier recovery: >>> https://photos.google.com/photo/AF1QipOeWqYEYK7S_yR8rUVMCASAzJhE5RlVn-wCKtjz >>> >>> >>> >>> 19 Temmuz 2018 Per&#351;embe 02:15:35 UTC+3 tarihinde Eric Jacobsen yazd&#305;: >>>> On Wed, 18 Jul 2018 08:50:25 -0700 (PDT), >>>> =?UTF-8?Q?Mehtap_=C3=B6zkan?= <kurtulmehtap@gmail.com> wrote: >>>> >>>>> Dear All, >>>>> I have a fixed data rate PSK receiver which works fine. Now I have to design a
variable data rate PSK receiver.
>>>>> The Block Diagram looks like this(Hope ASCII Art works): >>>>> >>>>> ADC->AGC->RRC->Complex Mixer->Coarse/Fine Carr.Recov->Timing Rec->BPSK/QPSK >>>>> | | >>>>> NCO---------------- >>>>> >>>>> When I try to add a Decimator/Interpolator to achieve variable data rate, the
carrier recovery still works if the RRC is bypassed. If the RRC block is added, the carrier recovery fails.
>>>>> >>>>> What is your opinion? Why Carrier Recovery fails if I add the RRC? Where
should I place the Decimator/Interpolator?
>>>>> >>>>> Thank you in Advance. >>>> >>>> You can do the RRC after synchronization, and it's usually easier to >>>> do it there, especially in a variable rate system. >>>> >>>> What do the constellation points look like in both cases? Usually >>>> that will help figure out what's working and what's not. >>> >
Gene many thanks for the help. I should have mentioned that the signal is B=
PSK modulated. So its 2 Mbits/sec. I guess this fact eliminates the RRC sym=
bol rate error.=20
 You are right about the square wave. I will try again with scrambled data =
and post the results.=20

19 Temmuz 2018 Per=C5=9Fembe 17:15:27 UTC+3 tarihinde Gene Filatov yazd=C4=
=B1:
> Thanks, that's working! >=20 > Mehtap, if I've figured it out correctly, your signal consists of square=
=20
> pulses with the rate of 4 Mbits/sec. >=20 > Why do you filter the signal with a root-raised cosine filter, then? >=20 > In any communications system, you should filter the signal with the=20 > matched filter to get the best SNR (see virtually any textbook on=20 > communication systems, e.g. Proakis). In your case, the matched filter=20 > should have the impulse response of a single square pulse. >=20 > However, your design fails to work properly due to a different issue. A=
=20
> RRC filter has two characteristics -- symbol rate and roll-off factor.=20 > In your case the symbol rate of the RRC filter is off by a factor of two=
=20
> (2 MHz instead of 4 MHz) -- which seems to be the immediate reason for=20 > the failure. >=20 > Gene. >=20 >=20 >=20 > On 19.07.2018 16:25, Mehtap =C3=B6zkan wrote: > > Sorry, > > Here are the screenshots for > > No RX RRC successfull carrier recovery and > > RX RRC 0.1 roll off, failed carrier recovery > > > > https://www.flickr.com/photos/143081476@N02/ > > > > > > 19 Temmuz 2018 Per=C5=9Fembe 14:03:24 UTC+3 tarihinde Gene Filatov yazd=
=C4=B1:
> >> Couldn't access the screenshots. :-( > >> > >> Might I suggest you to post the screenshots using imgur.com ? > >> > >> Gene. > >> > >> > >> On 19.07.2018 13:41, Mehtap =C3=B6zkan wrote: > >>> Here are the screenshots: > >>> No RX RRC successfull carrier recovery: > >>> https://photos.google.com/photo/AF1QipM9_47fWRpZDa5agqA8soGVKYK9SDn1e=
ISoQYYN
> >>> > >>> RX RRC 0.1 roll off, failed carrier recovery: > >>> https://photos.google.com/photo/AF1QipOeWqYEYK7S_yR8rUVMCASAzJhE5RlVn=
-wCKtjz
> >>> > >>> > >>> > >>> 19 Temmuz 2018 Per=C5=9Fembe 02:15:35 UTC+3 tarihinde Eric Jacobsen y=
azd=C4=B1:
> >>>> On Wed, 18 Jul 2018 08:50:25 -0700 (PDT), > >>>> =3D?UTF-8?Q?Mehtap_=3DC3=3DB6zkan?=3D <kurtulmehtap@gmail.com> wrote=
:
> >>>> > >>>>> Dear All, > >>>>> I have a fixed data rate PSK receiver which works fine. Now I have =
to design a variable data rate PSK receiver.
> >>>>> The Block Diagram looks like this(Hope ASCII Art works): > >>>>> > >>>>> ADC->AGC->RRC->Complex Mixer->Coarse/Fine Carr.Recov->Timing Rec->B=
PSK/QPSK
> >>>>> | | > >>>>> NCO---------------- > >>>>> > >>>>> When I try to add a Decimator/Interpolator to achieve variable data=
rate, the carrier recovery still works if the RRC is bypassed. If the RRC = block is added, the carrier recovery fails.
> >>>>> > >>>>> What is your opinion? Why Carrier Recovery fails if I add the RRC? =
Where should I place the Decimator/Interpolator?
> >>>>> > >>>>> Thank you in Advance. > >>>> > >>>> You can do the RRC after synchronization, and it's usually easier to > >>>> do it there, especially in a variable rate system. > >>>> > >>>> What do the constellation points look like in both cases? Usually > >>>> that will help figure out what's working and what's not. > >>> > >
Gene many thanks for the help. I should have mentioned that the signal is BPSK
modulated. So its 2 Mbits/sec. I guess this fact eliminates the RRC symbol rate
error. 
The signals are scrambled.

19 Temmuz 2018 Per&#351;embe 17:15:27 UTC+3 tarihinde Gene Filatov yazd&#305;:
> Thanks, that's working! > > Mehtap, if I've figured it out correctly, your signal consists of square > pulses with the rate of 4 Mbits/sec. > > Why do you filter the signal with a root-raised cosine filter, then? > > In any communications system, you should filter the signal with the > matched filter to get the best SNR (see virtually any textbook on > communication systems, e.g. Proakis). In your case, the matched filter > should have the impulse response of a single square pulse. > > However, your design fails to work properly due to a different issue. A > RRC filter has two characteristics -- symbol rate and roll-off factor. > In your case the symbol rate of the RRC filter is off by a factor of two > (2 MHz instead of 4 MHz) -- which seems to be the immediate reason for > the failure. > > Gene. > > > > On 19.07.2018 16:25, Mehtap &ouml;zkan wrote: > > Sorry, > > Here are the screenshots for > > No RX RRC successfull carrier recovery and > > RX RRC 0.1 roll off, failed carrier recovery > > > > https://www.flickr.com/photos/143081476@N02/ > > > > > > 19 Temmuz 2018 Per&#351;embe 14:03:24 UTC+3 tarihinde Gene Filatov yazd&#305;: > >> Couldn't access the screenshots. :-( > >> > >> Might I suggest you to post the screenshots using imgur.com ? > >> > >> Gene. > >> > >> > >> On 19.07.2018 13:41, Mehtap &ouml;zkan wrote: > >>> Here are the screenshots: > >>> No RX RRC successfull carrier recovery: > >>> https://photos.google.com/photo/AF1QipM9_47fWRpZDa5agqA8soGVKYK9SDn1eISoQYYN > >>> > >>> RX RRC 0.1 roll off, failed carrier recovery: > >>> https://photos.google.com/photo/AF1QipOeWqYEYK7S_yR8rUVMCASAzJhE5RlVn-wCKtjz > >>> > >>> > >>> > >>> 19 Temmuz 2018 Per&#351;embe 02:15:35 UTC+3 tarihinde Eric Jacobsen
yazd&#305;:
> >>>> On Wed, 18 Jul 2018 08:50:25 -0700 (PDT), > >>>> =?UTF-8?Q?Mehtap_=C3=B6zkan?= <kurtulmehtap@gmail.com> wrote: > >>>> > >>>>> Dear All, > >>>>> I have a fixed data rate PSK receiver which works fine. Now I have to design
a variable data rate PSK receiver.
> >>>>> The Block Diagram looks like this(Hope ASCII Art works): > >>>>> > >>>>> ADC->AGC->RRC->Complex Mixer->Coarse/Fine Carr.Recov->Timing Rec->BPSK/QPSK > >>>>> | | > >>>>> NCO---------------- > >>>>> > >>>>> When I try to add a Decimator/Interpolator to achieve variable data rate,
the carrier recovery still works if the RRC is bypassed. If the RRC block is added, the carrier recovery fails.
> >>>>> > >>>>> What is your opinion? Why Carrier Recovery fails if I add the RRC? Where
should I place the Decimator/Interpolator?
> >>>>> > >>>>> Thank you in Advance. > >>>> > >>>> You can do the RRC after synchronization, and it's usually easier to > >>>> do it there, especially in a variable rate system. > >>>> > >>>> What do the constellation points look like in both cases? Usually > >>>> that will help figure out what's working and what's not. > >>> > >
As has been pointed out, the RRC isn't the proper receive filter for
NRZ (rectangular) transmit pulses.   An integrate-and-dump filter is
matched to rectangular pulses.

But I think you have other issues, as well.   The second plot actually
looks pretty good, and while the carrier isn't locked to exactly the
right place on the I-Q plane, it isn't rotating, which means you have
frequency lock.   Maybe that's because it's a simulation and there's
no frequency offset, but at least it's not rotating.

It also appears that you do not have symbol synchronization.   The
phase (carrier) recovery loop will work better once symbol
synchronization is acheived, assuming it's working at all.   It
appears that you've only plotted a few symbols of the signal stream.
It generally takes hundreds to thousands of symbols to pass to allows
the synchronization loops to lock if you have the usual 2nd-order loop
architectures.   Unless there's a preamble and an acquisition
processor, you have to give it time to achieve lock.

On Thu, 19 Jul 2018 08:04:33 -0700 (PDT),
=?UTF-8?Q?Mehtap_=C3=B6zkan?= <kurtulmehtap@gmail.com> wrote:

>Gene many thanks for the help. I should have mentioned that the signal is B= >PSK modulated. So its 2 Mbits/sec. I guess this fact eliminates the RRC sym= >bol rate error.=20 >The signals are scrambled. > >19 Temmuz 2018 Per=C5=9Fembe 17:15:27 UTC+3 tarihinde Gene Filatov yazd=C4= >=B1: >> Thanks, that's working! >>=20 >> Mehtap, if I've figured it out correctly, your signal consists of square= >=20 >> pulses with the rate of 4 Mbits/sec. >>=20 >> Why do you filter the signal with a root-raised cosine filter, then? >>=20 >> In any communications system, you should filter the signal with the=20 >> matched filter to get the best SNR (see virtually any textbook on=20 >> communication systems, e.g. Proakis). In your case, the matched filter=20 >> should have the impulse response of a single square pulse. >>=20 >> However, your design fails to work properly due to a different issue. A= >=20 >> RRC filter has two characteristics -- symbol rate and roll-off factor.=20 >> In your case the symbol rate of the RRC filter is off by a factor of two= >=20 >> (2 MHz instead of 4 MHz) -- which seems to be the immediate reason for=20 >> the failure. >>=20 >> Gene. >>=20 >>=20 >>=20 >> On 19.07.2018 16:25, Mehtap =C3=B6zkan wrote: >> > Sorry, >> > Here are the screenshots for >> > No RX RRC successfull carrier recovery and >> > RX RRC 0.1 roll off, failed carrier recovery >> > >> > https://www.flickr.com/photos/143081476@N02/ >> > >> > >> > 19 Temmuz 2018 Per=C5=9Fembe 14:03:24 UTC+3 tarihinde Gene Filatov yazd= >=C4=B1: >> >> Couldn't access the screenshots. :-( >> >> >> >> Might I suggest you to post the screenshots using imgur.com ? >> >> >> >> Gene. >> >> >> >> >> >> On 19.07.2018 13:41, Mehtap =C3=B6zkan wrote: >> >>> Here are the screenshots: >> >>> No RX RRC successfull carrier recovery: >> >>> https://photos.google.com/photo/AF1QipM9_47fWRpZDa5agqA8soGVKYK9SDn1e= >ISoQYYN >> >>> >> >>> RX RRC 0.1 roll off, failed carrier recovery: >> >>> https://photos.google.com/photo/AF1QipOeWqYEYK7S_yR8rUVMCASAzJhE5RlVn= >-wCKtjz >> >>> >> >>> >> >>> >> >>> 19 Temmuz 2018 Per=C5=9Fembe 02:15:35 UTC+3 tarihinde Eric Jacobsen y= >azd=C4=B1: >> >>>> On Wed, 18 Jul 2018 08:50:25 -0700 (PDT), >> >>>> =3D?UTF-8?Q?Mehtap_=3DC3=3DB6zkan?=3D <kurtulmehtap@gmail.com> wrote= >: >> >>>> >> >>>>> Dear All, >> >>>>> I have a fixed data rate PSK receiver which works fine. Now I have = >to design a variable data rate PSK receiver. >> >>>>> The Block Diagram looks like this(Hope ASCII Art works): >> >>>>> >> >>>>> ADC->AGC->RRC->Complex Mixer->Coarse/Fine Carr.Recov->Timing Rec->B= >PSK/QPSK >> >>>>> | | >> >>>>> NCO---------------- >> >>>>> >> >>>>> When I try to add a Decimator/Interpolator to achieve variable data= > rate, the carrier recovery still works if the RRC is bypassed. If the RRC = >block is added, the carrier recovery fails. >> >>>>> >> >>>>> What is your opinion? Why Carrier Recovery fails if I add the RRC? = >Where should I place the Decimator/Interpolator? >> >>>>> >> >>>>> Thank you in Advance. >> >>>> >> >>>> You can do the RRC after synchronization, and it's usually easier to >> >>>> do it there, especially in a variable rate system. >> >>>> >> >>>> What do the constellation points look like in both cases? Usually >> >>>> that will help figure out what's working and what's not. >> >>> >> > >