2024-02-26 17:04:04 -05:00
|
|
|
subroutine sfox_demod(crcvd,f,t,isync,s3)
|
2024-01-31 14:02:33 -05:00
|
|
|
|
2024-02-08 10:45:43 -05:00
|
|
|
use sfox_mod
|
2024-01-31 14:02:33 -05:00
|
|
|
complex crcvd(NMAX) !Signal as received
|
|
|
|
complex c(0:NSPS-1) !Work array, one symbol long
|
2024-02-26 17:04:04 -05:00
|
|
|
real s3(0:NQ-1,0:NN-1) !Synchronized symbol spectra
|
|
|
|
integer isync(44)
|
|
|
|
! integer ipk(1)
|
2024-01-31 14:02:33 -05:00
|
|
|
|
2024-02-26 17:04:04 -05:00
|
|
|
j0=nint(12000.0*(t+0.5))
|
2024-01-31 14:02:33 -05:00
|
|
|
df=12000.0/NSPS
|
2024-02-26 17:04:04 -05:00
|
|
|
i0=nint(f/df)-NQ/2
|
|
|
|
k=-1
|
|
|
|
do n=1,NDS !Loop over all symbols
|
|
|
|
if(any(isync(1:NS).eq.n)) cycle
|
|
|
|
jb=n*NSPS + j0
|
|
|
|
ja=jb-NSPS+1
|
|
|
|
if(ja.lt.1 .or. jb.gt.NMAX) cycle
|
|
|
|
k=k+1
|
|
|
|
c=crcvd(ja:jb)
|
2024-01-31 14:02:33 -05:00
|
|
|
call four2a(c,NSPS,1,-1,1) !Compute symbol spectrum
|
2024-02-26 17:04:04 -05:00
|
|
|
do i=0,NQ-1
|
|
|
|
s3(i,k)=real(c(i0+i))**2 + aimag(c(i0+i))**2
|
2024-01-31 14:02:33 -05:00
|
|
|
enddo
|
2024-02-26 17:04:04 -05:00
|
|
|
! ipk=maxloc(s3(0:NQ-1,k))
|
|
|
|
! if(k.lt.10) print*,'AAA',k,ipk(1)-1
|
2024-01-31 14:02:33 -05:00
|
|
|
enddo
|
|
|
|
|
2024-02-15 15:46:09 -05:00
|
|
|
call pctile(s3,NQ*NN,50,base)
|
|
|
|
s3=s3/base
|
|
|
|
|
2024-01-31 14:02:33 -05:00
|
|
|
return
|
2024-02-13 12:02:04 -05:00
|
|
|
end subroutine sfox_demod
|