QRA66: change NSPS from 1920 to 1800. TxT=85*1800/12000=12.75 s.

This commit is contained in:
Joe Taylor 2020-08-05 11:06:18 -04:00
parent 2bb9566731
commit 7256d70016
5 changed files with 24 additions and 23 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);
}