From bd0d414365fe94a067a0067b16763a365dd76014 Mon Sep 17 00:00:00 2001 From: Steven Franke Date: Sun, 22 Apr 2018 19:51:31 +0000 Subject: [PATCH] More work on a simulator for dpsk with root-raised-cosine pulses. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8632 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- lib/fsk4hf/genwsprdpsk.f90 | 12 +++++++----- lib/fsk4hf/wsprdpsksim.f90 | 14 ++++---------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/lib/fsk4hf/genwsprdpsk.f90 b/lib/fsk4hf/genwsprdpsk.f90 index 353ef1339..022bd8a4d 100644 --- a/lib/fsk4hf/genwsprdpsk.f90 +++ b/lib/fsk4hf/genwsprdpsk.f90 @@ -14,7 +14,7 @@ subroutine genwsprdpsk(msg,msgsent,imessage) logical first integer ipreamble(16) !Freq estimation preamble integer isync(32) !Long sync vector - integer imessage(NN) + integer imessage(NN) data ipreamble/1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1/ data first/.true./ data iuniqueword0/z'30C9E8AD'/ @@ -47,11 +47,13 @@ write(*,'(50i1,1x,14i1,1x,4i1)') msgbits call encode204(msgbits,codeword) !Encode the test message -! Message structure: -! d100 p16 d100 - imessage(1:100)=codeword(1:100) - imessage(101:132)=isync + imessage(1)=1 !reference bit + imessage(2:101)=codeword(1:100) + imessage(102:132)=isync(1:31) !only use 31 of the sync bits imessage(133:232)=codeword(101:200) + do i=2,232 + imessage(i)=mod(imessage(i-1)+imessage(i),2) + enddo return end subroutine genwsprdpsk diff --git a/lib/fsk4hf/wsprdpsksim.f90 b/lib/fsk4hf/wsprdpsksim.f90 index e4b2558cf..80f7dff13 100644 --- a/lib/fsk4hf/wsprdpsksim.f90 +++ b/lib/fsk4hf/wsprdpsksim.f90 @@ -15,7 +15,6 @@ program wsprdpsksim complex cwav(0:NMAX-1) real*8 fMHz integer imessage(NN) - integer idemess(NN) !Differentially encoded message integer*2 iwave(NMAX) !Generated full-length waveform ! Get command-line argument(s) @@ -54,17 +53,12 @@ program wsprdpsksim txt=NN*NSPS0/12000.0 call genwsprdpsk(msg,msgsent,imessage) !Encode the message, get itone + imessage=2*imessage-1 write(*,1000) f0,xdt,txt,snrdb,fspread,delay,nfiles,msgsent 1000 format('f0:',f9.3,' DT:',f6.2,' txt:',f6.1,' SNR:',f6.1, & ' fspread:',f6.1,' delay:',f6.1,' nfiles:',i3,2x,a22) -! Assume 0'th message bit is 0 - imessage=2*imessage-1 - idemess(1)=-1*imessage(1) - do i=2,NN - idemess(i)=imessage(i-1)*imessage(i) - enddo - + beta=1.0 ! excess bandwidth if(nwav.eq.0) then df=fs/(NMAX/NDOWN) ! @@ -84,7 +78,7 @@ program wsprdpsksim istart=xdt/dt c0=0.0 do i=1,NN - c0(istart+(i-1)*200)=idemess(i) + c0(istart+(i-1)*200)=imessage(i) enddo call four2a(c0,NMAX/NDOWN,1,1,1) c0=c0*conjg(c) @@ -141,7 +135,7 @@ write(*,*) 'sample SNR: ',10*log10(snrtest)+10*log10(0.4/2.5) istart=xdt/dt c0wav=0.0 do i=1,NN - c0wav(istart+(i-1)*200*NDOWN)=idemess(i) + c0wav(istart+(i-1)*200*NDOWN)=imessage(i) enddo call four2a(c0wav,NMAX,1,1,1) c0wav=c0wav*conjg(cwav)