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