From 7256d70016646454085a2d91087b668d5fc17748 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Wed, 5 Aug 2020 11:06:18 -0400 Subject: [PATCH] QRA66: change NSPS from 1920 to 1800. TxT=85*1800/12000=12.75 s. --- lib/jt9.f90 | 1 + lib/qra/qra66/qra66sim.f90 | 6 +++--- lib/qra66_decode.f90 | 6 ++++-- lib/spec66.f90 | 30 ++++++++++++++---------------- widgets/mainwindow.cpp | 4 ++-- 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/lib/jt9.f90 b/lib/jt9.f90 index 3c017ac18..052d35cb9 100644 --- a/lib/jt9.f90 +++ b/lib/jt9.f90 @@ -226,6 +226,7 @@ program jt9 endif shared_data%id2=0 !??? Why is this necessary ??? if(mode.eq.5) npts=21*3456 + if(mode.eq.66) npts=15*12000 do iblk=1,npts/kstep k=iblk*kstep if(mode.eq.8 .and. k.gt.179712) exit diff --git a/lib/qra/qra66/qra66sim.f90 b/lib/qra/qra66/qra66sim.f90 index e7903eee4..901f72e84 100644 --- a/lib/qra/qra66/qra66sim.f90 +++ b/lib/qra/qra66/qra66sim.f90 @@ -43,11 +43,11 @@ program qra66sim dt=1.d0/fsample !Sample interval (s) twopi=8.d0*atan(1.d0) npts=NMAX !Total samples in .wav file - nsps=1920 + nsps=1800 nsym=85 !Number of channel symbols if(csubmode.eq.'B') then - nsps=960 - nsym=169 + nsps=nsps/2 + nsym=2*nsym-1 endif ichk=66 !Flag sent to genqra64 diff --git a/lib/qra66_decode.f90 b/lib/qra66_decode.f90 index 3f4b63f4a..0fdd47579 100644 --- a/lib/qra66_decode.f90 +++ b/lib/qra66_decode.f90 @@ -50,7 +50,7 @@ contains save nc1z,nc2z,ng2z,maxaptypez this%callback => callback - nsps=1920 + nsps=1800 baud=12000.0/nsps df1=12000.0/NFFT1 @@ -100,11 +100,13 @@ contains a(1)=-(f0 + 2.0*baud) !Data tones start 2 bins higher call twkfreq(c0,c0,15*6000,6000.0,a) xdt=jpk/6000.0 - 0.5 - call spec66(c0(jpk:jpk+85*NSPS/2-1),s3) + call spec66(c0(jpk:),nsps/2,s3) do j=1,63 !Normalize to symbol baseline call pctile(s3(:,j),192,40,base) s3(:,j)=s3(:,j)/base + write(71,3071)j,maxloc(s3(:,j)) +3071 format(2i5) enddo s3max=20.0 diff --git a/lib/spec66.f90 b/lib/spec66.f90 index 9242f6a59..0d381cf78 100644 --- a/lib/spec66.f90 +++ b/lib/spec66.f90 @@ -1,30 +1,28 @@ -subroutine spec66(c0,s3) +subroutine spec66(c0,nsps,s3) - parameter (LL=3*64) !Frequency channels - parameter (NN=63) !Data symbols - parameter (NSPS=960) !Samples per symbol at 6000 Hz - parameter (NMAX=85*NSPS) - complex c0(0:NMAX-1) !Synchrinized complex data - complex cs(0:NSPS-1) !Complex symbol spectrum - real s3(LL,NN) !Synchronized symbol spectra + parameter (LL=3*64) !Frequency channels + parameter (NN=63) !Data symbols + complex c0(0:85*nsps-1) !Synchronized complex data at 6000 S/s + complex cs(0:nsps-1) !Complex symbol spectrum + real s3(LL,NN) !Synchronized symbol spectra real xbase0(LL),xbase(LL) - fac=1.0/NSPS - ja=-NSPS + fac=1.0/nsps + ja=-nsps do j=1,NN - ja=ja+NSPS - if(mod(ja/NSPS,4).eq.0) ja=ja+NSPS - jb=ja+NSPS-1 + ja=ja+nsps + if(mod(ja/nsps,4).eq.0) ja=ja+nsps + jb=ja+nsps-1 cs=fac*c0(ja:jb) - call four2a(cs,NSPS,1,-1,1) !c2c FFT to frequency + call four2a(cs,nsps,1,-1,1) !c2c FFT to frequency do ii=1,LL i=ii-65 - if(i.lt.0) i=i+NSPS + if(i.lt.0) i=i+nsps s3(ii,j)=real(cs(i))**2 + aimag(cs(i))**2 enddo enddo - df=6000.0/NSPS + df=6000.0/nsps do i=1,LL call pctile(s3(i,1:NN),NN,45,xbase0(i)) !Get baseline for passband shape enddo diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index d78d05ec4..557f95488 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -7390,9 +7390,9 @@ void MainWindow::transmit (double snr) } if (m_modeTx == "QRA66") { - toneSpacing=12000.0/1920.0; + toneSpacing=12000.0/1800.0; Q_EMIT sendMessage (m_mode, NUM_QRA66_SYMBOLS, - 1920.0, ui->TxFreqSpinBox->value () - m_XIT, + 1800.0, ui->TxFreqSpinBox->value () - m_XIT, toneSpacing, m_soundOutput, m_config.audio_output_channel (), true, false, snr, m_TRperiod); }