From 76d11691400e96e715693028d77376fcb1231ef9 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Thu, 6 Jul 2017 13:38:06 +0000 Subject: [PATCH] FT8 now uses nsps=1920. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7784 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- lib/fsk4hf/ft8_downsample.f90 | 7 ++++--- lib/fsk4hf/ft8_params.f90 | 4 ++-- lib/fsk4hf/ft8b.f90 | 4 ++-- lib/fsk4hf/ft8sim.f90 | 3 +-- lib/fsk4hf/sync8.f90 | 12 ++++++++---- lib/fsk4hf/sync8d.f90 | 4 ++-- lib/ft8_decode.f90 | 2 +- 7 files changed, 20 insertions(+), 16 deletions(-) diff --git a/lib/fsk4hf/ft8_downsample.f90 b/lib/fsk4hf/ft8_downsample.f90 index 2c8a43e30..98544b969 100644 --- a/lib/fsk4hf/ft8_downsample.f90 +++ b/lib/fsk4hf/ft8_downsample.f90 @@ -1,9 +1,10 @@ subroutine ft8_downsample(dd,newdat,f0,c1) -! Downconvert to complex data sampled at 187.5 Hz, 32 samples/symbol +! Downconvert to complex data sampled at 200 Hz ==> 32 samples/symbol parameter (NMAX=15*12000) - parameter (NFFT1=200000,NFFT2=3125) !200000/64 = 3125 + parameter (NFFT1=192000,NFFT2=3200) !192000/60 = 3200 + logical newdat complex c1(0:NFFT2-1) complex cx(0:NFFT1/2) @@ -20,7 +21,7 @@ subroutine ft8_downsample(dd,newdat,f0,c1) endif df=12000.0/NFFT1 - baud=12000.0/2048.0 + baud=12000.0/1920.0 i0=nint(f0/df) ft=f0+8.0*baud it=min(nint(ft/df),NFFT1/2) diff --git a/lib/fsk4hf/ft8_params.f90 b/lib/fsk4hf/ft8_params.f90 index b139d6913..48018b00c 100644 --- a/lib/fsk4hf/ft8_params.f90 +++ b/lib/fsk4hf/ft8_params.f90 @@ -3,8 +3,8 @@ parameter (KK=87) !Information bits (75 + CRC12) parameter (ND=58) !Data symbols parameter (NS=21) !Sync symbols (3 @ Costas 7x7) parameter (NN=NS+ND) !Total channel symbols (79) -parameter (NSPS=2048) !Samples per symbol at 12000 S/s -parameter (NZ=NSPS*NN) !Samples in full 15 s waveform (161,792) +parameter (NSPS=1920) !Samples per symbol at 12000 S/s +parameter (NZ=NSPS*NN) !Samples in full 15 s waveform (151,680) parameter (NMAX=15*12000) !Samples in iwave (180,000) parameter (NFFT1=2*NSPS, NH1=NFFT1/2) !Length of FFTs for symbol spectra parameter (NHSYM=2*NMAX/NH1-1) !Number of symbol spectra (1/2-symbol steps) diff --git a/lib/fsk4hf/ft8b.f90 b/lib/fsk4hf/ft8b.f90 index af7dd09c2..789a0727a 100644 --- a/lib/fsk4hf/ft8b.f90 +++ b/lib/fsk4hf/ft8b.f90 @@ -12,14 +12,14 @@ subroutine ft8b(dd0,newdat,nfqso,f1,xdt,nharderrors,dmin,nbadcrc,message,xsnr) real dd0(15*12000) integer*1 decoded(KK),apmask(3*ND),cw(3*ND) integer itone(NN) - complex cd0(3125) + complex cd0(3200) complex ctwk(32) complex csymb(32) logical newdat max_iterations=40 norder=2 - fs2=12000.0/64.0 + fs2=12000.0/60.0 dt2=1.0/fs2 twopi=8.0*atan(1.0) delfbest=0. diff --git a/lib/fsk4hf/ft8sim.f90 b/lib/fsk4hf/ft8sim.f90 index 29769724f..158e84e30 100644 --- a/lib/fsk4hf/ft8sim.f90 +++ b/lib/fsk4hf/ft8sim.f90 @@ -52,12 +52,11 @@ program ft8sim ! call sgran() c=0. do ifile=1,nfiles - c0=0. do isig=1,25 f0=(isig+2)*100.0 phi=0.0 - k=-1 + nint(xdt/dt) + k=-1 + nint(xdt+0.5/dt) do j=1,NN !Generate complex waveform dphi=twopi*(f0+itone(j)*baud)*dt if(k.eq.0) phi=-dphi diff --git a/lib/fsk4hf/sync8.f90 b/lib/fsk4hf/sync8.f90 index 96ad39148..ae95ec33e 100644 --- a/lib/fsk4hf/sync8.f90 +++ b/lib/fsk4hf/sync8.f90 @@ -1,7 +1,7 @@ subroutine sync8(iwave,nfa,nfb,nfqso,s,candidate,ncand) include 'ft8_params.f90' - parameter (JZ=35) !DT up to +/- 3 s + parameter (JZ=31) !DT up to +/- 2.5 s complex cx(0:NH1) real s(NH1,NHSYM) real savg(NH1) @@ -20,9 +20,9 @@ subroutine sync8(iwave,nfa,nfb,nfqso,s,candidate,ncand) ! Compute symbol spectra at half-symbol steps. savg=0. - istep=NSPS/2 !1024 - tstep=istep/12000.0 !0.085333 s - df=12000.0/NFFT1 !2.93 Hz + istep=NSPS/2 !960 + tstep=istep/12000.0 !0.08 s + df=12000.0/NFFT1 !3.125 Hz ! Compute symbol spectra at half-symbol steps fac=1.0/300.0 @@ -38,6 +38,10 @@ subroutine sync8(iwave,nfa,nfb,nfqso,s,candidate,ncand) savg=savg + s(1:NH1,j) !Average spectrum enddo savg=savg/NHSYM +! do i=1,NH1 +! write(51,3051) i*df,savg(i),db(savg(i)) +!3051 format(f10.3,e12.3,f12.3) +! enddo ia=max(1,nint(nfa/df)) ib=nint(nfb/df) diff --git a/lib/fsk4hf/sync8d.f90 b/lib/fsk4hf/sync8d.f90 index 5bfc8e6b6..eb7eeaf0f 100644 --- a/lib/fsk4hf/sync8d.f90 +++ b/lib/fsk4hf/sync8d.f90 @@ -19,10 +19,10 @@ subroutine sync8d(cd0,i0,ctwk,itwk,sync) ! Set some constants and compute the csync array. if( first ) then twopi=8.0*atan(1.0) - fs2=12000.0/64.0 !Sample rate after downsampling + fs2=12000.0/60.0 !Sample rate after downsampling dt2=1/fs2 !Corresponding sample interval taus=32*dt2 !Symbol duration - baud=1/taus !Keying rate + baud=1.0/taus !Keying rate do i=0,6 phi=0.0 dphi=twopi*icos7(i)*baud*dt2 diff --git a/lib/ft8_decode.f90 b/lib/ft8_decode.f90 index f7dc7cf48..20e259031 100644 --- a/lib/ft8_decode.f90 +++ b/lib/ft8_decode.f90 @@ -64,7 +64,7 @@ contains f1,nbadcrc,message) ! write(*,'(f7.2,i5,f7.2,f9.1,i5,f7.2,2x,a22)') sync,nsnr,xdt,f1,nharderrors,dmin,message ! write(13,1110) datetime,0,nsnr,xdt,f1,nharderrors,dmin,message -1110 format(a13,2i4,f6.2,f7.1,i4,' ~ ',f6.2,2x,a22,' FT8') +!1110 format(a13,2i4,f6.2,f7.1,i4,' ~ ',f6.2,2x,a22,' FT8') ! write(51,3051) xdt,f1,sync,dmin,nsnr,nharderrors,nbadcrc,message !3051 format(4f9.1,3i5,2x,a22) ! flush(51)