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
This commit is contained in:
Joe Taylor 2012-10-01 19:40:23 +00:00
parent e72a766337
commit e2a62aa0c4
6 changed files with 22 additions and 37 deletions

View File

@ -44,12 +44,12 @@ Receiving
--------- ---------
1. Apply noise blanking with the timf2 method 1. Apply noise blanking with the timf2 method
2. Filter to 1000 Hz bandwidth and downsample (1/8) to 1500 Hz, saving 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 3. Compute symbol-length spectra at half-symbol steps. Use for
waterfall display s(15750) and save in ss(184,15750) and waterfall display s(22000) and save in ss(184,22000) and
savg(15750) for detecting sync vectors. savg(22000), for detecting sync vectors.
4. At time Tdec, find sync vectors in ss(); get estimates of DF, DT 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 6. For each candidate signal, do inverse FFT of length 1536. This
yields 16 complex samples per symbol, and sync tone should be yields 16 complex samples per symbol, and sync tone should be
close to zero frequency. close to zero frequency.

View File

@ -17,7 +17,8 @@ CFLAGS = -I. -fbounds-check -mno-stack-arg-probe
%.o: %.F90 %.o: %.F90
${FC} ${FFLAGS} -c $< ${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 \ OBJS1 = trimlist.o display.o getdphi.o pctile.o ccf65.o \
decode1a.o sort.o filbig.o fil6521.o afc65b.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 \ db.o specjtms.o genmsk.o mskdf.o tweak1.o syncmsk.o \
lenmsk.o decodemsk.o ping.o makepings.o alignmsg.o match.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 \ 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) libm65.a: $(OBJS1)
ar cr libm65.a $(OBJS1) ar cr libm65.a $(OBJS1)
ranlib libm65.a ranlib libm65.a
OBJS3 = jt9sim.o noisegen.o gran.o tab.o OBJS3 = jt9sim.o gran.o
jt9sim.exe: $(OBJS3) libm65.a jt9sim.exe: $(OBJS3) libm65.a
$(FC) -o jt9sim.exe $(OBJS3) libm65.a $(FC) -o jt9sim.exe $(OBJS3) libm65.a
OBJS2 = JT65code.o OBJS2 = jt9.o symspec.o timf2x.o timer.o
JT65code.exe: $(OBJS2) libm65.a jt9.exe: $(OBJS2) libm65.a
$(FC) -o JT65code.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' \ INCPATH = -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/include/QtCore' \
-I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/include' \ -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 ipcomm.o: ipcomm.cpp
g++ -c $(INCPATH) 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 sec_midn.o: sec_midn.f90
$(FC) -c -fno-second-underscore sec_midn.f90 $(FC) -c -fno-second-underscore sec_midn.f90
#symspec.o: ../symspec.f90 #symspec.o: ../symspec.f90
# $(FC) -c $(FFLAGS) -o symspec.o ../symspec.f90 # $(FC) -c $(FFLAGS) -o symspec.o ../symspec.f90
OBJS4 = tastro.o astro0.o libm65.a OBJS5 = t1.o
tastro.exe: $(OBJS4) t1.exe: $(OBJS5) libm65.a
$(FC) $(FFLAGS) -o tastro.exe $(OBJS4) libm65.a $(FC) -o t1.exe $(OBJS5) libm65.a ../libfftw3f_win.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
.PHONY : clean .PHONY : clean
clean: clean:
rm -f *.o libm65.a m65.exe jt65code.exe rm -f *.o libm65.a wsjtx.exe jt9sim.exe jt9.exe

View File

@ -32,7 +32,7 @@ program jt9
endif endif
read(arg,*) ntrperiod read(arg,*) ntrperiod
ifile1=2 ifile1=2
limtrace=10000 limtrace=0
lu=12 lu=12
call timer('jt9 ',0) !### call timer('jt9 ',0) !###

View File

@ -95,7 +95,9 @@ program jt9sim
open(10,file=fname//'.wav',access='stream',status='unknown') open(10,file=fname//'.wav',access='stream',status='unknown')
if(snrdb.lt.90) then if(snrdb.lt.90) then
call noisegen(dat,npts) !Generate Gaussian noise do i=1,npts
dat(i)=gran()
enddo
else else
dat(1:npts)=0. dat(1:npts)=0.
endif endif

View File

@ -139,7 +139,7 @@ subroutine symspecx(k,ntrperiod,nsps,ndiskdat,nb,nbslider,pxdb,s,ihsym, &
s(i)=sx s(i)=sx
enddo enddo
if(ihsym.eq.175) then if(ihsym.eq.168) then
do i=1,iz do i=1,iz
write(71,3001) i*df3,savg(i),10.0*log10(savg(i)) write(71,3001) i*df3,savg(i),10.0*log10(savg(i))
3001 format(f12.6,e12.3,f12.3) 3001 format(f12.6,e12.3,f12.3)

View File

@ -1,4 +1,4 @@
//-------------------------------------------------------------- MainWindow //------------------------------------------------------------- MainWindow
#include "mainwindow.h" #include "mainwindow.h"
#include "ui_mainwindow.h" #include "ui_mainwindow.h"
#include "devsetup.h" #include "devsetup.h"