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:
parent
181b22be67
commit
cc005bf69b
71
lib/superfox/gen_sfox.f90
Normal file
71
lib/superfox/gen_sfox.f90
Normal 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
|
Loading…
Reference in New Issue
Block a user