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)
|
||||
read(arg,*) nfiles
|
||||
sig=sqrt(2.0)*10.0**(0.05*snrdb)
|
||||
twopi=8.d0*atan(1.d0)
|
||||
h=default_header(12000,NMAX)
|
||||
|
||||
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
|
||||
print*,'Illegal message'
|
||||
go to 999
|
||||
@ -57,7 +75,7 @@ program JTMSKsim
|
||||
j=mod(j+1,864)
|
||||
xx=gran()
|
||||
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)
|
||||
enddo
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine genmsk144(msg0,ichk,msgsent,waveform,itype)
|
||||
subroutine genmsk144(msg0,ichk,msgsent,i4tone,itype)
|
||||
|
||||
!!!!!!!!!!!!!!!!!! Experimental small blocklength ldpc version
|
||||
! 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
|
||||
enddo
|
||||
|
||||
dphi=2*pi*1500/12000.0;
|
||||
phi=0.0
|
||||
do i=1,864
|
||||
waveform(i)=imag(complex(xi(i),xq(i))*complex(cos(phi),sin(phi)))
|
||||
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
|
||||
! dphi=2*pi*1500/12000.0;
|
||||
! phi=0.0
|
||||
! do i=1,864
|
||||
! waveform(i)=imag(complex(xi(i),xq(i))*complex(cos(phi),sin(phi)))
|
||||
! phi=mod(phi+dphi,twopi)
|
||||
! 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
|
||||
|
||||
!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"
|
||||
! do i=1,140
|
||||
! print*,i,i4tone(i)
|
||||
! do i=1,144
|
||||
! print*,i,bitseq(i),i4tone(i)
|
||||
! enddo
|
||||
|
||||
999 return
|
||||
end subroutine genmsk
|
||||
end subroutine genmsk144
|
||||
|
Loading…
Reference in New Issue
Block a user