mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-29 21:02:26 -04:00
Make frequency search more efficient in msk144 realtime decoder.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7111 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
3ea464c785
commit
766c978709
@ -6,8 +6,8 @@ subroutine makepings(pings,npts,width,sig)
|
|||||||
|
|
||||||
iping0=-999
|
iping0=-999
|
||||||
dt=1.0/12000.0
|
dt=1.0/12000.0
|
||||||
do i=1,14,2
|
do i=1,14
|
||||||
t0(i)=i !Make pings at t=1, 3, ... 13 s.
|
t0(i)=i !Make pings at t=1, 2, ... 14 s.
|
||||||
enddo
|
enddo
|
||||||
w=width
|
w=width
|
||||||
amp=sig
|
amp=sig
|
||||||
|
@ -87,13 +87,12 @@ subroutine msk144decodeframe(c,msgreceived,nsuccess)
|
|||||||
ssig=sqrt(s2av-sav*sav)
|
ssig=sqrt(s2av-sav*sav)
|
||||||
softbits=softbits/ssig
|
softbits=softbits/ssig
|
||||||
|
|
||||||
sigma=0.72
|
sigma=0.75
|
||||||
llr(1:48)=softbits(9:9+47)
|
llr(1:48)=softbits(9:9+47)
|
||||||
llr(49:128)=softbits(65:65+80-1)
|
llr(49:128)=softbits(65:65+80-1)
|
||||||
llr=2.0*llr/(sigma*sigma)
|
llr=2.0*llr/(sigma*sigma)
|
||||||
|
|
||||||
max_iterations=10
|
max_iterations=10
|
||||||
max_dither=1
|
|
||||||
! call timer('bpdec144 ',0)
|
! call timer('bpdec144 ',0)
|
||||||
call bpdecode144(llr,max_iterations,decoded,niterations)
|
call bpdecode144(llr,max_iterations,decoded,niterations)
|
||||||
! call timer('bpdec144 ',1)
|
! call timer('bpdec144 ',1)
|
||||||
|
@ -154,7 +154,7 @@ subroutine msk144spd(cbig,n,ntol,nsuccess,msgreceived,fc,fret,tret)
|
|||||||
msgreceived=' '
|
msgreceived=' '
|
||||||
npeaks=2
|
npeaks=2
|
||||||
ntol0=8
|
ntol0=8
|
||||||
ndf=2
|
deltaf=2.0
|
||||||
do icand=1,ndet ! Try to sync/demod/decode each candidate.
|
do icand=1,ndet ! Try to sync/demod/decode each candidate.
|
||||||
ib=max(1,nstart(icand)-NSPM)
|
ib=max(1,nstart(icand)-NSPM)
|
||||||
ie=ib-1+3*NSPM
|
ie=ib-1+3*NSPM
|
||||||
@ -166,7 +166,7 @@ subroutine msk144spd(cbig,n,ntol,nsuccess,msgreceived,fc,fret,tret)
|
|||||||
fo=fc+ferrs(icand)
|
fo=fc+ferrs(icand)
|
||||||
do iav=1,NPATTERNS
|
do iav=1,NPATTERNS
|
||||||
navmask=navpatterns(1:3,iav)
|
navmask=navpatterns(1:3,iav)
|
||||||
call msk144sync(cdat,3,ntol0,ndf,navmask,npeaks,fo,fest,npkloc,nsyncsuccess,c)
|
call msk144sync(cdat,3,ntol0,deltaf,navmask,npeaks,fo,fest,npkloc,nsyncsuccess,c)
|
||||||
|
|
||||||
if( nsyncsuccess .eq. 0 ) cycle
|
if( nsyncsuccess .eq. 0 ) cycle
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine msk144sync(cdat,nframes,ntol,ndf,navmask,npeaks,fc,fest,npklocs,nsuccess,c)
|
subroutine msk144sync(cdat,nframes,ntol,delf,navmask,npeaks,fc,fest,npklocs,nsuccess,c)
|
||||||
|
|
||||||
parameter (NSPM=864)
|
parameter (NSPM=864)
|
||||||
complex cdat(NSPM*nframes)
|
complex cdat(NSPM*nframes)
|
||||||
@ -55,8 +55,11 @@ subroutine msk144sync(cdat,nframes,ntol,ndf,navmask,npeaks,fc,fest,npklocs,nsucc
|
|||||||
xmax=0.0
|
xmax=0.0
|
||||||
bestf=0.0
|
bestf=0.0
|
||||||
n=nframes*NSPM
|
n=nframes*NSPM
|
||||||
do ifr=-ntol,ntol,ndf !Find freq that maximizes sync
|
nf=nint(ntol/delf)
|
||||||
ferr=ifr
|
fac=1.0/(48.0*sqrt(float(navg)))
|
||||||
|
|
||||||
|
do ifr=-nf,nf !Find freq that maximizes sync
|
||||||
|
ferr=ifr*delf
|
||||||
call tweak1(cdat,n,-(fc+ferr),cdat2)
|
call tweak1(cdat,n,-(fc+ferr),cdat2)
|
||||||
c=0
|
c=0
|
||||||
do i=1,nframes
|
do i=1,nframes
|
||||||
@ -75,7 +78,7 @@ subroutine msk144sync(cdat,nframes,ntol,ndf,navmask,npeaks,fc,fest,npklocs,nsucc
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
xcc=abs(cc)
|
xcc=abs(cc)
|
||||||
xb=maxval(xcc)/(48.0*sqrt(float(navg)))
|
xb=maxval(xcc)*fac
|
||||||
if(xb.gt.xmax) then
|
if(xb.gt.xmax) then
|
||||||
xmax=xb
|
xmax=xb
|
||||||
bestf=ferr
|
bestf=ferr
|
||||||
|
@ -99,9 +99,9 @@ subroutine mskrtd(id2,nutc0,tsec,ntol,nrxfreq,line)
|
|||||||
do iavg=1,NPATTERNS
|
do iavg=1,NPATTERNS
|
||||||
iavmask=iavpatterns(1:8,iavg)
|
iavmask=iavpatterns(1:8,iavg)
|
||||||
navg=sum(iavmask)
|
navg=sum(iavmask)
|
||||||
ndf=nint(7.0/navg)
|
deltaf=7.0/real(navg) ! search increment for frequency sync
|
||||||
npeaks=2
|
npeaks=2
|
||||||
call msk144sync(cdat(1:8*NSPM),8,ntol,ndf,iavmask,npeaks,fc,fest,npkloc,nsyncsuccess,c)
|
call msk144sync(cdat(1:8*NSPM),8,ntol,deltaf,iavmask,npeaks,fc,fest,npkloc,nsyncsuccess,c)
|
||||||
if( nsyncsuccess .eq. 0 ) cycle
|
if( nsyncsuccess .eq. 0 ) cycle
|
||||||
|
|
||||||
do ipk=1,npeaks
|
do ipk=1,npeaks
|
||||||
|
Loading…
x
Reference in New Issue
Block a user