mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-22 12:23:37 -05:00
New frame format, new symbol lengths and ndown values, gen_fst280wave now returns a waveform aligned so that first message symbol starts at t=1s.
This commit is contained in:
parent
31f98b94b9
commit
f06f5d77a5
@ -49,9 +49,9 @@ program fst280sim
|
|||||||
nsps=0
|
nsps=0
|
||||||
if(nsec.eq.15) nsps=800
|
if(nsec.eq.15) nsps=800
|
||||||
if(nsec.eq.30) nsps=1680
|
if(nsec.eq.30) nsps=1680
|
||||||
if(nsec.eq.60) nsps=4000
|
if(nsec.eq.60) nsps=3888
|
||||||
if(nsec.eq.120) nsps=8400
|
if(nsec.eq.120) nsps=8200
|
||||||
if(nsec.eq.300) nsps=21504
|
if(nsec.eq.300) nsps=21168
|
||||||
if(nsps.eq.0) then
|
if(nsps.eq.0) then
|
||||||
print*,'Invalid TR sequence length.'
|
print*,'Invalid TR sequence length.'
|
||||||
go to 999
|
go to 999
|
||||||
@ -99,7 +99,7 @@ program fst280sim
|
|||||||
icmplx=1
|
icmplx=1
|
||||||
f0=f00+1.5*hmod*baud
|
f0=f00+1.5*hmod*baud
|
||||||
call gen_fst280wave(itone,NN,nsps,nmax,fsample,hmod,f0,icmplx,c0,wave)
|
call gen_fst280wave(itone,NN,nsps,nmax,fsample,hmod,f0,icmplx,c0,wave)
|
||||||
k=nint((xdt+1.0)/dt)-nsps
|
k=nint(xdt/dt)
|
||||||
c0=cshift(c0,-k)
|
c0=cshift(c0,-k)
|
||||||
if(k.gt.0) c0(0:k-1)=0.0
|
if(k.gt.0) c0(0:k-1)=0.0
|
||||||
if(k.lt.0) c0(nmax+k:nmax-1)=0.0
|
if(k.lt.0) c0(nmax+k:nmax-1)=0.0
|
||||||
|
@ -68,6 +68,7 @@ subroutine gen_fst280wave(itone,nsym,nsps,nwave,fsample,hmod,f0, &
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
! Compute the ramp-up and ramp-down symbols
|
! Compute the ramp-up and ramp-down symbols
|
||||||
|
kshift=nsps-nint(fsample)
|
||||||
if(icmplx.eq.0) then
|
if(icmplx.eq.0) then
|
||||||
wave(1:nsps/2)=0.0
|
wave(1:nsps/2)=0.0
|
||||||
wave(nsps/2+1:nsps)=wave(nsps/2+1:nsps) * &
|
wave(nsps/2+1:nsps)=wave(nsps/2+1:nsps) * &
|
||||||
@ -76,6 +77,7 @@ subroutine gen_fst280wave(itone,nsym,nsps,nwave,fsample,hmod,f0, &
|
|||||||
wave(k1+nsps/2:)=0.0
|
wave(k1+nsps/2:)=0.0
|
||||||
wave(k1:k1+nsps/2-1)=wave(k1:k1+nsps/2-1) * &
|
wave(k1:k1+nsps/2-1)=wave(k1:k1+nsps/2-1) * &
|
||||||
(1.0+cos(twopi*(/(i,i=0,nsps/2-1)/)/real(nsps)))/2.0
|
(1.0+cos(twopi*(/(i,i=0,nsps/2-1)/)/real(nsps)))/2.0
|
||||||
|
wave=cshift(wave,kshift)
|
||||||
else
|
else
|
||||||
cwave(1:nsps/2)=0.0
|
cwave(1:nsps/2)=0.0
|
||||||
cwave(nsps/2+1:nsps)=cwave(nsps/2+1:nsps) * &
|
cwave(nsps/2+1:nsps)=cwave(nsps/2+1:nsps) * &
|
||||||
@ -84,6 +86,7 @@ subroutine gen_fst280wave(itone,nsym,nsps,nwave,fsample,hmod,f0, &
|
|||||||
cwave(k1+nsps/2:)=0.0
|
cwave(k1+nsps/2:)=0.0
|
||||||
cwave(k1:k1+nsps/2-1)=cwave(k1:k1+nsps/2-1) * &
|
cwave(k1:k1+nsps/2-1)=cwave(k1:k1+nsps/2-1) * &
|
||||||
(1.0+cos(twopi*(/(i,i=0,nsps/2-1)/)/real(nsps)))/2.0
|
(1.0+cos(twopi*(/(i,i=0,nsps/2-1)/)/real(nsps)))/2.0
|
||||||
|
cwave=cshift(cwave,kshift)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
! call system_clock(count1,clkfreq)
|
! call system_clock(count1,clkfreq)
|
||||||
|
@ -92,11 +92,17 @@ subroutine genfst280(msg0,ichk,msgsent,msgbits,i4tone,iwspr)
|
|||||||
if(is.eq.3) itmp(i)=2
|
if(is.eq.3) itmp(i)=2
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
i4tone(1:8)=isyncword
|
i4tone(1:7)=itmp(1:7)
|
||||||
i4tone(9:78)=itmp(1:70)
|
i4tone(8:14)=itmp(15:21)
|
||||||
|
i4tone(15:35)=itmp(29:49)
|
||||||
|
i4tone(36:43)=isyncword
|
||||||
|
i4tone(44:78)=itmp(50:84)
|
||||||
i4tone(79:86)=isyncword
|
i4tone(79:86)=isyncword
|
||||||
i4tone(87:156)=itmp(71:140)
|
i4tone(87:121)=itmp(85:119)
|
||||||
i4tone(157:164)=isyncword
|
i4tone(122:129)=isyncword
|
||||||
|
i4tone(130:150)=itmp(120:140)
|
||||||
|
i4tone(151:157)=itmp(22:28)
|
||||||
|
i4tone(158:164)=itmp(8:14)
|
||||||
|
|
||||||
999 return
|
999 return
|
||||||
|
|
||||||
|
@ -72,18 +72,19 @@ contains
|
|||||||
if(hmod.eq.4) ndown=10
|
if(hmod.eq.4) ndown=10
|
||||||
if(hmod.eq.8) ndown=5
|
if(hmod.eq.8) ndown=5
|
||||||
else if(ntrperiod.eq.60) then
|
else if(ntrperiod.eq.60) then
|
||||||
nsps=4000
|
nsps=3888
|
||||||
nmax=60*12000
|
nmax=60*12000
|
||||||
ndown=100/hmod
|
ndown=96/hmod
|
||||||
if(hmod.eq.8) ndown=16
|
if(hmod.eq.1) ndown=108
|
||||||
else if(ntrperiod.eq.120) then
|
else if(ntrperiod.eq.120) then
|
||||||
nsps=8400
|
nsps=8200
|
||||||
nmax=120*12000
|
nmax=120*12000
|
||||||
ndown=200/hmod
|
if(hmod.eq.1) ndown=205
|
||||||
|
ndown=100/hmod
|
||||||
else if(ntrperiod.eq.300) then
|
else if(ntrperiod.eq.300) then
|
||||||
nsps=21504
|
nsps=21168
|
||||||
nmax=300*12000
|
nmax=300*12000
|
||||||
ndown=512/hmod
|
ndown=504/hmod
|
||||||
end if
|
end if
|
||||||
nss=nsps/ndown
|
nss=nsps/ndown
|
||||||
fs=12000.0 !Sample rate
|
fs=12000.0 !Sample rate
|
||||||
@ -256,26 +257,51 @@ contains
|
|||||||
|
|
||||||
hbits=0
|
hbits=0
|
||||||
where(bitmetrics(:,1).ge.0) hbits=1
|
where(bitmetrics(:,1).ge.0) hbits=1
|
||||||
ns1=count(hbits( 1: 8).eq.(/0,0,0,1,1,0,1,1/))
|
ns1=count(hbits( 71: 78).eq.(/0,0,0,1,1,0,1,1/))
|
||||||
ns2=count(hbits( 9: 16).eq.(/0,1,0,0,1,1,1,0/))
|
ns2=count(hbits( 79: 86).eq.(/0,1,0,0,1,1,1,0/))
|
||||||
ns3=count(hbits(157:164).eq.(/0,0,0,1,1,0,1,1/))
|
ns3=count(hbits(157:164).eq.(/0,0,0,1,1,0,1,1/))
|
||||||
ns4=count(hbits(165:172).eq.(/0,1,0,0,1,1,1,0/))
|
ns4=count(hbits(165:172).eq.(/0,1,0,0,1,1,1,0/))
|
||||||
ns5=count(hbits(313:320).eq.(/0,0,0,1,1,0,1,1/))
|
ns5=count(hbits(243:250).eq.(/0,0,0,1,1,0,1,1/))
|
||||||
ns6=count(hbits(321:328).eq.(/0,1,0,0,1,1,1,0/))
|
ns6=count(hbits(251:258).eq.(/0,1,0,0,1,1,1,0/))
|
||||||
nsync_qual=ns1+ns2+ns3+ns4+ns5+ns6
|
nsync_qual=ns1+ns2+ns3+ns4+ns5+ns6
|
||||||
if(nsync_qual.lt. 26) cycle !### Value ?? ###
|
if(nsync_qual.lt. 26) cycle !### Value ?? ###
|
||||||
|
|
||||||
scalefac=2.83
|
scalefac=2.83
|
||||||
llra( 1:140)=bitmetrics( 17:156, 1)
|
llra( 1: 14)=bitmetrics( 1: 14, 1)
|
||||||
llra(141:280)=bitmetrics(173:312, 1)
|
llra( 15: 28)=bitmetrics(315:328, 1)
|
||||||
|
llra( 29: 42)=bitmetrics( 15: 28, 1)
|
||||||
|
llra( 43: 56)=bitmetrics(301:314, 1)
|
||||||
|
llra( 57: 98)=bitmetrics( 29: 70, 1)
|
||||||
|
llra( 99:168)=bitmetrics( 87:156, 1)
|
||||||
|
llra(169:238)=bitmetrics(173:242, 1)
|
||||||
|
llra(239:280)=bitmetrics(259:300, 1)
|
||||||
llra=scalefac*llra
|
llra=scalefac*llra
|
||||||
llrb( 1:140)=bitmetrics( 17:156, 2)
|
llrb( 1: 14)=bitmetrics( 1: 14, 2)
|
||||||
llrb(141:280)=bitmetrics(173:312, 2)
|
llrb( 15: 28)=bitmetrics(315:328, 2)
|
||||||
|
llrb( 29: 42)=bitmetrics( 15: 28, 2)
|
||||||
|
llrb( 43: 56)=bitmetrics(301:314, 2)
|
||||||
|
llrb( 57: 98)=bitmetrics( 29: 70, 2)
|
||||||
|
llrb( 99:168)=bitmetrics( 87:156, 2)
|
||||||
|
llrb(169:238)=bitmetrics(173:242, 2)
|
||||||
|
llrb(239:280)=bitmetrics(259:300, 2)
|
||||||
llrb=scalefac*llrb
|
llrb=scalefac*llrb
|
||||||
llrc( 1:140)=bitmetrics( 17:156, 3)
|
llrc( 1: 14)=bitmetrics( 1: 14, 3)
|
||||||
llrc(141:280)=bitmetrics(173:312, 3)
|
llrc( 15: 28)=bitmetrics(315:328, 3)
|
||||||
|
llrc( 29: 42)=bitmetrics( 15: 28, 3)
|
||||||
|
llrc( 43: 56)=bitmetrics(301:314, 3)
|
||||||
|
llrc( 57: 98)=bitmetrics( 29: 70, 3)
|
||||||
|
llrc( 99:168)=bitmetrics( 87:156, 3)
|
||||||
|
llrc(169:238)=bitmetrics(173:242, 3)
|
||||||
|
llrc(239:280)=bitmetrics(259:300, 3)
|
||||||
llrc=scalefac*llrc
|
llrc=scalefac*llrc
|
||||||
llrd( 1:140)=bitmetrics( 17:156, 4)
|
llrd( 1: 14)=bitmetrics( 1: 14, 4)
|
||||||
llrd(141:280)=bitmetrics(173:312, 4)
|
llrd( 15: 28)=bitmetrics(315:328, 4)
|
||||||
|
llrd( 29: 42)=bitmetrics( 15: 28, 4)
|
||||||
|
llrd( 43: 56)=bitmetrics(301:314, 4)
|
||||||
|
llrd( 57: 98)=bitmetrics( 29: 70, 4)
|
||||||
|
llrd( 99:168)=bitmetrics( 87:156, 4)
|
||||||
|
llrd(169:238)=bitmetrics(173:242, 4)
|
||||||
|
llrd(239:280)=bitmetrics(259:300, 4)
|
||||||
llrd=scalefac*llrd
|
llrd=scalefac*llrd
|
||||||
apmask=0
|
apmask=0
|
||||||
|
|
||||||
@ -329,7 +355,7 @@ contains
|
|||||||
else
|
else
|
||||||
xsnr=-99.9
|
xsnr=-99.9
|
||||||
endif
|
endif
|
||||||
!write(*,*) xsig,base,arg,xsnr
|
!write(*,*) xsig,base,arg,xsnr,nsync_qual,ntype,nharderrors,dmin,msg
|
||||||
endif
|
endif
|
||||||
nsnr=nint(xsnr)
|
nsnr=nint(xsnr)
|
||||||
iaptype=0
|
iaptype=0
|
||||||
@ -400,9 +426,9 @@ contains
|
|||||||
f0save=f0
|
f0save=f0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
i1=i0 !Costas arrays
|
i1=i0+35*nss !Costas arrays
|
||||||
i2=i0+78*nss
|
i2=i0+78*nss
|
||||||
i3=i0+156*nss
|
i3=i0+121*nss
|
||||||
|
|
||||||
s1=0.0
|
s1=0.0
|
||||||
s2=0.0
|
s2=0.0
|
||||||
|
Loading…
Reference in New Issue
Block a user