mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-04 05:50:31 -05: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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user