WSJT-X/lib/superfox/sync_sf.f90

54 lines
1.3 KiB
Fortran
Raw Normal View History

subroutine sync_sf(crcvd,clo,nv,f,t)
2024-01-31 16:38:22 -05:00
use sfox_mod
2024-01-31 16:38:22 -05:00
parameter (MMAX=150,JMAX=300)
real s(-MMAX:MMAX,-JMAX:JMAX) !s(DT,dFreq)
2024-01-31 16:38:22 -05:00
complex clo(NMAX) !Complex Local Oscillator
complex crcvd(NMAX) !Signal as received
complex c(0:NFFT-1) !Work array
2024-01-31 16:38:22 -05:00
integer ipk(2)
character*1 line(-30:30),mark(0:5)
data mark/' ','.','-','+','X','$'/
s=0.
2024-01-31 16:38:22 -05:00
df=12000.0/NFFT !0.366211
i1=ND1*nsps
do m=-MMAX,MMAX
lag=100*m
c(0:nsync-1)=crcvd(i1+1+lag:i1+nsync+lag)*clo(1:nsync)
c(nsync:)=0.
call four2a(c,NFFT,1,-1,1)
do j=-JMAX,JMAX
k=j
if(k.lt.0) k=k+NFFT
s(m,j)=real(c(k))**2 + aimag(c(k))**2
2024-01-31 16:38:22 -05:00
enddo
enddo
s=s/maxval(s)
ipk=maxloc(s)
2024-01-31 16:38:22 -05:00
ipk(1)=ipk(1)-MMAX-1
ipk(2)=ipk(2)-JMAX-1
if(iand(nv,2).ne.0) then
2024-01-31 18:59:41 -05:00
ma=max(-MMAX,ipk(1)-10)
mb=min(MMAX,ipk(1)+10)
ja=max(-JMAX,ipk(2)-30)
jb=min(JMAX,ipk(2)+30)
do m=ma,mb
do j=ja,jb
k=5.999*s(m,j)
2024-01-31 18:59:41 -05:00
line(j-ipk(2))=mark(k)
enddo
write(*,1300) m/120.0,line
1300 format(f6.3,2x,61a1)
2024-01-31 16:38:22 -05:00
enddo
2024-01-31 18:59:41 -05:00
endif
2024-01-31 16:38:22 -05:00
t=ipk(1)/120.0
dfreq=ipk(2)*df
f=1500.0+dfreq
! write(*,3001) ipk,t,dfreq,f
!3001 format('B',2i5,f7.3,2f7.1)
2024-01-31 16:38:22 -05:00
return
end subroutine sync_sf