1
0
mirror of https://github.com/saitohirga/WSJT-X.git synced 2025-03-28 23:19:00 -04:00

Add gen_sfox.f90. We're now generating data as well as sync symbols.

This commit is contained in:
Joe Taylor 2024-01-31 12:58:27 -05:00
parent 181b22be67
commit cc005bf69b

71
lib/superfox/gen_sfox.f90 Normal file
View File

@ -0,0 +1,71 @@
subroutine gen_sfox(idat,f0,fsample,syncwidth,cdat,clo)
include "sfox_params.f90"
complex cdat(NMAX) !Generated complex waveform
complex clo(NMAX) !Complex Local Oscillator
complex w,wstep
integer*1 idat(ND)
twopi=8.0*atan(1.0)
tsync=NS*NSPS/fsample
! Generate complex LO for SuperFox sync
w=1.0
a0=1500.0+ syncwidth/2.0 !Frequency at midpoint of LO waveform
a2=2.0*syncwidth/tsync !Frequency drift rate
x0=0.5*(nsync+1)
s=2.0/nsync
do i=1,nsync
if(i.eq.nsync/2+1) a2=-a2 !Reverse sign of drift at midpoint
x=s*(i-x0)
dphi=(a0 + x*a2)*(twopi/fsample)
wstep=cmplx(cos(dphi),sin(dphi))
w=w*wstep
clo(i)=conjg(w)
enddo
! Generate complex SuperFox waveform
df=fsample/NSPS
j=0
k=0
! First group of data symbols:
do n=1,ND1
k=k+1
dphi=(f0 + (idat(k)-65)*df)*(twopi/fsample)
wstep=cmplx(cos(dphi),sin(dphi))
do i=1,NSPS
j=j+1
w=w*wstep
cdat(j)=w
enddo
enddo
! Sync waveform
a1=f0 + syncwidth/2.0 !Frequency at midpoint of sync waveform
a2=2.0*syncwidth/tsync !Frequency drift rate
cdat=0.
do i=1,nsync
j=j+1
if(i.eq.nsync/2+1) a2=-a2 !Reverse sign of drift at midpoint
x=s*(i-x0)
dphi=(a1 + x*a2) * (twopi/fsample)
wstep=cmplx(cos(dphi),sin(dphi))
w=w*wstep
cdat(j)=w
enddo
! Final group of data symbols:
do n=1,ND2
k=k+1
dphi=(f0 + (idat(k)-65)*df)*(twopi/fsample)
wstep=cmplx(cos(dphi),sin(dphi))
do i=1,NSPS
j=j+1
w=w*wstep
cdat(j)=w
enddo
enddo
return
end subroutine gen_sfox