mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-10-31 23:57:10 -04:00
genmsk144 now generates the tone indices need by Modulator.cpp.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6708 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
ce8ebd25a9
commit
8e6b4ac9bc
@ -33,11 +33,29 @@ program JTMSKsim
|
|||||||
call getarg(5,arg)
|
call getarg(5,arg)
|
||||||
read(arg,*) nfiles
|
read(arg,*) nfiles
|
||||||
sig=sqrt(2.0)*10.0**(0.05*snrdb)
|
sig=sqrt(2.0)*10.0**(0.05*snrdb)
|
||||||
twopi=8.d0*atan(1.d0)
|
|
||||||
h=default_header(12000,NMAX)
|
h=default_header(12000,NMAX)
|
||||||
|
|
||||||
ichk=0
|
ichk=0
|
||||||
call genmsk(msg,ichk,msgsent,waveform,itype) !this is genmsk144
|
call genmsk144(msg,ichk,msgsent,itone,itype)
|
||||||
|
twopi=8.d0*atan(1.d0)
|
||||||
|
|
||||||
|
dphi0=twopi*1000/12000.0
|
||||||
|
dphi1=twopi*2000/12000.0
|
||||||
|
phi=0.0
|
||||||
|
indx=0
|
||||||
|
do i=1,144
|
||||||
|
if( itone(i) .eq. 0 ) then
|
||||||
|
dphi=dphi0
|
||||||
|
else
|
||||||
|
dphi=dphi1
|
||||||
|
endif
|
||||||
|
do j=1,6
|
||||||
|
waveform(indx)=cos(phi);
|
||||||
|
indx=indx+1
|
||||||
|
phi=mod(phi+dphi,twopi)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
if(itype.lt.1 .or. itype.gt.7) then
|
if(itype.lt.1 .or. itype.gt.7) then
|
||||||
print*,'Illegal message'
|
print*,'Illegal message'
|
||||||
go to 999
|
go to 999
|
||||||
@ -57,7 +75,7 @@ program JTMSKsim
|
|||||||
j=mod(j+1,864)
|
j=mod(j+1,864)
|
||||||
xx=gran()
|
xx=gran()
|
||||||
wave(i)=pings(i)*waveform(j) + fac*xx
|
wave(i)=pings(i)*waveform(j) + fac*xx
|
||||||
write(*,*) pings(i),fac,waveform(j),wave(j)
|
! write(*,*) pings(i),fac,waveform(j),wave(j)
|
||||||
iwave(i)=30.0*wave(i)
|
iwave(i)=30.0*wave(i)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine genmsk144(msg0,ichk,msgsent,waveform,itype)
|
subroutine genmsk144(msg0,ichk,msgsent,i4tone,itype)
|
||||||
|
|
||||||
!!!!!!!!!!!!!!!!!! Experimental small blocklength ldpc version
|
!!!!!!!!!!!!!!!!!! Experimental small blocklength ldpc version
|
||||||
! s8 + 48bits + s8 + 40 bits = 144 bits (72ms message duration)
|
! s8 + 48bits + s8 + 40 bits = 144 bits (72ms message duration)
|
||||||
@ -153,43 +153,31 @@ subroutine genmsk144(msg0,ichk,msgsent,waveform,itype)
|
|||||||
xi(is:is+11)=bitseq(2*i)*pp
|
xi(is:is+11)=bitseq(2*i)*pp
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
dphi=2*pi*1500/12000.0;
|
! dphi=2*pi*1500/12000.0;
|
||||||
phi=0.0
|
! phi=0.0
|
||||||
do i=1,864
|
! do i=1,864
|
||||||
waveform(i)=imag(complex(xi(i),xq(i))*complex(cos(phi),sin(phi)))
|
! waveform(i)=imag(complex(xi(i),xq(i))*complex(cos(phi),sin(phi)))
|
||||||
phi=mod(phi+dphi,twopi)
|
! phi=mod(phi+dphi,twopi)
|
||||||
enddo
|
|
||||||
|
|
||||||
! Map bits to I and Q (in anticipation of coherent demodulation),
|
|
||||||
! If bit indices run from 1 to 140.
|
|
||||||
! I bits are 1,3,5,...139
|
|
||||||
! Q bits are 2,4,6,...140
|
|
||||||
! Sample the offset qpsk waveform at 140 sampling instants to determine tones.
|
|
||||||
! Send low tone if I and Q have different sign, send high tone if I and Q have same sign.
|
|
||||||
! Modulator will take care of ensuring phase continuity.
|
|
||||||
! i4tone=0
|
|
||||||
! iq=140
|
|
||||||
! it=1
|
|
||||||
! do ii=1,139,2
|
|
||||||
! do inner=1,2
|
|
||||||
! if( bitseq(ii) .eq. bitseq(iq) ) then
|
|
||||||
! i4tone(it)=1
|
|
||||||
! endif
|
|
||||||
! print*,it,ii,iq,bitseq(ii),bitseq(iq),bitseq(it),i4tone(it)
|
|
||||||
! if( mod(it,2) .eq. 1 ) then
|
|
||||||
! iq=mod(iq+2,140)
|
|
||||||
! if( iq .eq. 0 ) iq=140
|
|
||||||
! endif
|
|
||||||
! it=it+1
|
|
||||||
! enddo
|
|
||||||
! enddo
|
! enddo
|
||||||
|
|
||||||
|
! Map I and Q to tones.
|
||||||
|
i4tone=0
|
||||||
|
iq=144
|
||||||
|
it=1
|
||||||
|
do i=1,72
|
||||||
|
i4tone(2*i-1)=(bitseq(2*i)*bitseq(2*i-1)+1)/2;
|
||||||
|
i4tone(2*i)=-(bitseq(2*i)*bitseq(mod(2*i,144)+1)-1)/2;
|
||||||
|
enddo
|
||||||
endif
|
endif
|
||||||
|
|
||||||
!i4tone(1:11)=b11
|
! Had to flip the polarity - not sure if this will be needed when we are
|
||||||
|
! sending the tone to Modulator.cpp.
|
||||||
|
i4tone=-i4tone+1
|
||||||
|
|
||||||
! print*,"transmitted tones"
|
! print*,"transmitted tones"
|
||||||
! do i=1,140
|
! do i=1,144
|
||||||
! print*,i,i4tone(i)
|
! print*,i,bitseq(i),i4tone(i)
|
||||||
! enddo
|
! enddo
|
||||||
|
|
||||||
999 return
|
999 return
|
||||||
end subroutine genmsk
|
end subroutine genmsk144
|
||||||
|
Loading…
Reference in New Issue
Block a user