From e2a62aa0c4de442be8c904dd69b743cb6abee9cb Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Mon, 1 Oct 2012 19:40:23 +0000 Subject: [PATCH] Another step toward a jt9 decoder. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@2624 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- jt9.txt | 8 ++++---- libm65/Makefile.MinGW | 41 ++++++++++++----------------------------- libm65/jt9.f90 | 2 +- libm65/jt9sim.f90 | 4 +++- libm65/symspec.f90 | 2 +- mainwindow.cpp | 2 +- 6 files changed, 22 insertions(+), 37 deletions(-) diff --git a/jt9.txt b/jt9.txt index 05699bd46..b5a436886 100644 --- a/jt9.txt +++ b/jt9.txt @@ -44,12 +44,12 @@ Receiving --------- 1. Apply noise blanking with the timf2 method 2. Filter to 1000 Hz bandwidth and downsample (1/8) to 1500 Hz, saving - complex data to array c0(1350000). + complex data to array c0(1350000). (FIR? FFT2?) 3. Compute symbol-length spectra at half-symbol steps. Use for - waterfall display s(15750) and save in ss(184,15750) and - savg(15750) for detecting sync vectors. + waterfall display s(22000) and save in ss(184,22000) and + savg(22000), for detecting sync vectors. 4. At time Tdec, find sync vectors in ss(); get estimates of DF, DT -5. Do full-length FFT, NFFT1=96*nsps2, zero-pad as required. +5. Do full-length FFT, NFFT1=96*nsps2, zero-padded as required. 6. For each candidate signal, do inverse FFT of length 1536. This yields 16 complex samples per symbol, and sync tone should be close to zero frequency. diff --git a/libm65/Makefile.MinGW b/libm65/Makefile.MinGW index 9d80257fa..8cc614a8b 100644 --- a/libm65/Makefile.MinGW +++ b/libm65/Makefile.MinGW @@ -17,7 +17,8 @@ CFLAGS = -I. -fbounds-check -mno-stack-arg-probe %.o: %.F90 ${FC} ${FFLAGS} -c $< -all: libm65.a jt9sim.exe +all: libm65.a jt9sim.exe jt9.exe +#all: libm65.a jt9.exe OBJS1 = trimlist.o display.o getdphi.o pctile.o ccf65.o \ decode1a.o sort.o filbig.o fil6521.o afc65b.o \ @@ -35,19 +36,20 @@ OBJS1 = trimlist.o display.o getdphi.o pctile.o ccf65.o \ db.o specjtms.o genmsk.o mskdf.o tweak1.o syncmsk.o \ lenmsk.o decodemsk.o ping.o makepings.o alignmsg.o match.o \ rtping.o jtmsk.o hipass.o setupmsk.o foldmsk.o genjt9.o \ - packbits.o unpackbits.o vit216.o tab.o + packbits.o unpackbits.o encode232.o interleave9.o entail.o \ + fano232.o libm65.a: $(OBJS1) ar cr libm65.a $(OBJS1) ranlib libm65.a -OBJS3 = jt9sim.o noisegen.o gran.o tab.o +OBJS3 = jt9sim.o gran.o jt9sim.exe: $(OBJS3) libm65.a $(FC) -o jt9sim.exe $(OBJS3) libm65.a -OBJS2 = JT65code.o -JT65code.exe: $(OBJS2) libm65.a - $(FC) -o JT65code.exe $(OBJS2) libm65.a +OBJS2 = jt9.o symspec.o timf2x.o timer.o +jt9.exe: $(OBJS2) libm65.a + $(FC) -o jt9.exe $(OBJS2) libm65.a ../libfftw3f_win.a INCPATH = -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/include/QtCore' \ -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/include' \ @@ -56,36 +58,17 @@ INCPATH = -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/include/QtCore' \ ipcomm.o: ipcomm.cpp g++ -c $(INCPATH) ipcomm.cpp -#m65a.o: m65a.f90 -# $(FC) -c -fno-second-underscore -cpp m65a.f90 - sec_midn.o: sec_midn.f90 $(FC) -c -fno-second-underscore sec_midn.f90 #symspec.o: ../symspec.f90 # $(FC) -c $(FFLAGS) -o symspec.o ../symspec.f90 -OBJS4 = tastro.o astro0.o libm65.a -tastro.exe: $(OBJS4) - $(FC) $(FFLAGS) -o tastro.exe $(OBJS4) libm65.a - -OBJS5 = t1.o genms.o libm65.a -t1.exe: $(OBJS5) - $(FC) $(FFLAGS) -o t1.exe $(OBJS5) libm65.a ../libfftw3f_win.a \ - -#astro0.o: ../astro0.f90 -# $(FC) -c $(FFLAGS) -o astro0.o ../astro0.f90 - -init_rs.o: init_rs.c - $(CC) -c -DBIGSYM=1 -o init_rs.o init_rs.c - -encode_rs.o: encode_rs.c - $(CC) -c -DBIGSYM=1 -o encode_rs.o encode_rs.c - -decode_rs.o: decode_rs.c - $(CC) -c -DBIGSYM=1 -o decode_rs.o decode_rs.c +OBJS5 = t1.o +t1.exe: $(OBJS5) libm65.a + $(FC) -o t1.exe $(OBJS5) libm65.a ../libfftw3f_win.a .PHONY : clean clean: - rm -f *.o libm65.a m65.exe jt65code.exe + rm -f *.o libm65.a wsjtx.exe jt9sim.exe jt9.exe diff --git a/libm65/jt9.f90 b/libm65/jt9.f90 index 2de0cfe6c..b5d04a47a 100644 --- a/libm65/jt9.f90 +++ b/libm65/jt9.f90 @@ -32,7 +32,7 @@ program jt9 endif read(arg,*) ntrperiod ifile1=2 - limtrace=10000 + limtrace=0 lu=12 call timer('jt9 ',0) !### diff --git a/libm65/jt9sim.f90 b/libm65/jt9sim.f90 index f5fcf85ee..acbfa1dff 100644 --- a/libm65/jt9sim.f90 +++ b/libm65/jt9sim.f90 @@ -95,7 +95,9 @@ program jt9sim open(10,file=fname//'.wav',access='stream',status='unknown') if(snrdb.lt.90) then - call noisegen(dat,npts) !Generate Gaussian noise + do i=1,npts + dat(i)=gran() + enddo else dat(1:npts)=0. endif diff --git a/libm65/symspec.f90 b/libm65/symspec.f90 index 7bb512b33..91b251930 100644 --- a/libm65/symspec.f90 +++ b/libm65/symspec.f90 @@ -139,7 +139,7 @@ subroutine symspecx(k,ntrperiod,nsps,ndiskdat,nb,nbslider,pxdb,s,ihsym, & s(i)=sx enddo - if(ihsym.eq.175) then + if(ihsym.eq.168) then do i=1,iz write(71,3001) i*df3,savg(i),10.0*log10(savg(i)) 3001 format(f12.6,e12.3,f12.3) diff --git a/mainwindow.cpp b/mainwindow.cpp index 48d16902e..a120db1b3 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1,4 +1,4 @@ -//-------------------------------------------------------------- MainWindow +//------------------------------------------------------------- MainWindow #include "mainwindow.h" #include "ui_mainwindow.h" #include "devsetup.h"