mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-12-23 19:25:37 -05: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
|
||||
dt=1.0/12000.0
|
||||
do i=1,14,2
|
||||
t0(i)=i !Make pings at t=1, 3, ... 13 s.
|
||||
do i=1,14
|
||||
t0(i)=i !Make pings at t=1, 2, ... 14 s.
|
||||
enddo
|
||||
w=width
|
||||
amp=sig
|
||||
|
@ -87,13 +87,12 @@ subroutine msk144decodeframe(c,msgreceived,nsuccess)
|
||||
ssig=sqrt(s2av-sav*sav)
|
||||
softbits=softbits/ssig
|
||||
|
||||
sigma=0.72
|
||||
sigma=0.75
|
||||
llr(1:48)=softbits(9:9+47)
|
||||
llr(49:128)=softbits(65:65+80-1)
|
||||
llr=2.0*llr/(sigma*sigma)
|
||||
|
||||
max_iterations=10
|
||||
max_dither=1
|
||||
! call timer('bpdec144 ',0)
|
||||
call bpdecode144(llr,max_iterations,decoded,niterations)
|
||||
! call timer('bpdec144 ',1)
|
||||
|
@ -154,7 +154,7 @@ subroutine msk144spd(cbig,n,ntol,nsuccess,msgreceived,fc,fret,tret)
|
||||
msgreceived=' '
|
||||
npeaks=2
|
||||
ntol0=8
|
||||
ndf=2
|
||||
deltaf=2.0
|
||||
do icand=1,ndet ! Try to sync/demod/decode each candidate.
|
||||
ib=max(1,nstart(icand)-NSPM)
|
||||
ie=ib-1+3*NSPM
|
||||
@ -166,7 +166,7 @@ subroutine msk144spd(cbig,n,ntol,nsuccess,msgreceived,fc,fret,tret)
|
||||
fo=fc+ferrs(icand)
|
||||
do iav=1,NPATTERNS
|
||||
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
|
||||
|
||||
|
@ -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)
|
||||
complex cdat(NSPM*nframes)
|
||||
@ -55,8 +55,11 @@ subroutine msk144sync(cdat,nframes,ntol,ndf,navmask,npeaks,fc,fest,npklocs,nsucc
|
||||
xmax=0.0
|
||||
bestf=0.0
|
||||
n=nframes*NSPM
|
||||
do ifr=-ntol,ntol,ndf !Find freq that maximizes sync
|
||||
ferr=ifr
|
||||
nf=nint(ntol/delf)
|
||||
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)
|
||||
c=0
|
||||
do i=1,nframes
|
||||
@ -75,7 +78,7 @@ subroutine msk144sync(cdat,nframes,ntol,ndf,navmask,npeaks,fc,fest,npklocs,nsucc
|
||||
enddo
|
||||
|
||||
xcc=abs(cc)
|
||||
xb=maxval(xcc)/(48.0*sqrt(float(navg)))
|
||||
xb=maxval(xcc)*fac
|
||||
if(xb.gt.xmax) then
|
||||
xmax=xb
|
||||
bestf=ferr
|
||||
|
@ -99,9 +99,9 @@ subroutine mskrtd(id2,nutc0,tsec,ntol,nrxfreq,line)
|
||||
do iavg=1,NPATTERNS
|
||||
iavmask=iavpatterns(1:8,iavg)
|
||||
navg=sum(iavmask)
|
||||
ndf=nint(7.0/navg)
|
||||
deltaf=7.0/real(navg) ! search increment for frequency sync
|
||||
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
|
||||
|
||||
do ipk=1,npeaks
|
||||
|
Loading…
Reference in New Issue
Block a user