Merged master 8748
This commit is contained in:
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 16 KiB |
@@ -1,156 +0,0 @@
|
||||
subroutine extract(s3,nadd,mode65,ntrials,naggressive,ndepth,nflip, &
|
||||
mycall_12,hiscall_12,hisgrid,nexp_decode,ncount,nhist,decoded, &
|
||||
ltext,nft,qual)
|
||||
|
||||
! Input:
|
||||
! s3 64-point spectra for each of 63 data symbols
|
||||
! nadd number of spectra summed into s3
|
||||
! nqd 0/1 to indicate decode attempt at QSO frequency
|
||||
|
||||
! Output:
|
||||
! ncount number of symbols requiring correction (-1 for no KV decode)
|
||||
! nhist maximum number of identical symbol values
|
||||
! decoded decoded message (if ncount >=0)
|
||||
! ltext true if decoded message is free text
|
||||
! nft 0=no decode; 1=FT decode; 2=hinted decode
|
||||
|
||||
use prog_args !shm_key, exe_dir, data_dir
|
||||
use packjt
|
||||
use jt65_mod
|
||||
use timer_module, only: timer
|
||||
|
||||
real s3(64,63)
|
||||
character decoded*22
|
||||
character*12 mycall_12,hiscall_12
|
||||
character*6 mycall,hiscall,hisgrid
|
||||
integer dat4(12)
|
||||
integer mrsym(63),mr2sym(63),mrprob(63),mr2prob(63)
|
||||
integer correct(63),tmp(63)
|
||||
logical ltext
|
||||
common/chansyms65/correct
|
||||
save
|
||||
|
||||
if(mode65.eq.-99) stop !Silence compiler warning
|
||||
mycall=mycall_12(1:6)
|
||||
hiscall=hiscall_12(1:6)
|
||||
qual=0.
|
||||
nbirdie=20
|
||||
npct=50
|
||||
afac1=1.1
|
||||
nft=0
|
||||
nfail=0
|
||||
decoded=' '
|
||||
call pctile(s3,4032,npct,base)
|
||||
s3=s3/base
|
||||
s3a=s3 !###
|
||||
|
||||
! Get most reliable and second-most-reliable symbol values, and their
|
||||
! probabilities
|
||||
1 call demod64a(s3,nadd,afac1,mrsym,mrprob,mr2sym,mr2prob,ntest,nlow)
|
||||
|
||||
call chkhist(mrsym,nhist,ipk) !Test for birdies and QRM
|
||||
if(nhist.ge.nbirdie) then
|
||||
nfail=nfail+1
|
||||
call pctile(s3,4032,npct,base)
|
||||
s3(ipk,1:63)=base
|
||||
if(nfail.gt.30) then
|
||||
decoded=' '
|
||||
ncount=-1
|
||||
go to 900
|
||||
endif
|
||||
go to 1
|
||||
endif
|
||||
|
||||
mrs=mrsym
|
||||
mrs2=mr2sym
|
||||
|
||||
call graycode65(mrsym,63,-1) !Remove gray code
|
||||
call interleave63(mrsym,-1) !Remove interleaving
|
||||
call interleave63(mrprob,-1)
|
||||
|
||||
call graycode65(mr2sym,63,-1) !Remove gray code and interleaving
|
||||
call interleave63(mr2sym,-1) !from second-most-reliable symbols
|
||||
call interleave63(mr2prob,-1)
|
||||
ntry=0
|
||||
|
||||
call timer('ftrsd ',0)
|
||||
param=0
|
||||
call ftrsd2(mrsym,mrprob,mr2sym,mr2prob,ntrials,correct,param,ntry)
|
||||
call timer('ftrsd ',1)
|
||||
ncandidates=param(0)
|
||||
nhard=param(1)
|
||||
nsoft=param(2)
|
||||
nerased=param(3)
|
||||
rtt=0.001*param(4)
|
||||
ntotal=param(5)
|
||||
qual=0.001*param(7)
|
||||
nd0=81
|
||||
r0=0.87
|
||||
if(naggressive.eq.10) then
|
||||
nd0=83
|
||||
r0=0.90
|
||||
endif
|
||||
if(ntotal.le.nd0 .and. rtt.le.r0) nft=1
|
||||
|
||||
if(nft.eq.0 .and. iand(ndepth,32).eq.32) then
|
||||
qmin=2.0 - 0.1*naggressive
|
||||
call timer('hint65 ',0)
|
||||
call hint65(s3,mrs,mrs2,nadd,nflip,mycall,hiscall,hisgrid,qual,decoded)
|
||||
if(qual.ge.qmin) then
|
||||
nft=2
|
||||
ncount=0
|
||||
else
|
||||
decoded=' '
|
||||
ntry=0
|
||||
endif
|
||||
call timer('hint65 ',1)
|
||||
go to 900
|
||||
endif
|
||||
|
||||
ncount=-1
|
||||
decoded=' '
|
||||
ltext=.false.
|
||||
if(nft.gt.0) then
|
||||
! Turn the corrected symbol array into channel symbols for subtraction;
|
||||
! pass it back to jt65a via common block "chansyms65".
|
||||
do i=1,12
|
||||
dat4(i)=correct(13-i)
|
||||
enddo
|
||||
do i=1,63
|
||||
tmp(i)=correct(64-i)
|
||||
enddo
|
||||
correct(1:63)=tmp(1:63)
|
||||
call interleave63(correct,63,1)
|
||||
call graycode65(correct,63,1)
|
||||
call unpackmsg(dat4,decoded) !Unpack the user message
|
||||
ncount=0
|
||||
if(iand(dat4(10),8).ne.0) ltext=.true.
|
||||
endif
|
||||
900 continue
|
||||
if(nft.eq.1 .and. nhard.lt.0) decoded=' '
|
||||
|
||||
return
|
||||
end subroutine extract
|
||||
|
||||
subroutine getpp(workdat,p)
|
||||
|
||||
use jt65_mod
|
||||
integer workdat(63)
|
||||
integer a(63)
|
||||
|
||||
a(1:63)=workdat(63:1:-1)
|
||||
call interleave63(a,1)
|
||||
call graycode(a,63,1,a)
|
||||
|
||||
psum=0.
|
||||
do j=1,63
|
||||
i=a(j)+1
|
||||
x=s3a(i,j)
|
||||
s3a(i,j)=0.
|
||||
psum=psum + x
|
||||
s3a(i,j)=x
|
||||
enddo
|
||||
p=psum/63.0
|
||||
|
||||
return
|
||||
end subroutine getpp
|
||||
@@ -1,337 +0,0 @@
|
||||
_WSJT-X_ v1.8 suppports a number of features designed for use
|
||||
on the VHF and higher bands. These features now include:
|
||||
|
||||
- *JT4*, a mode particularly useful for EME on the microwave bands
|
||||
|
||||
- *JT9* fast modes, useful for scatter propagation on VHF bands
|
||||
|
||||
- *QRA64*, a mode for EME using a "`Q-ary Repeat Accumulate`" code,
|
||||
a low-density parity-check (LDPC) code using a 64-character symbol
|
||||
alphabet
|
||||
|
||||
- *MSK144*, a mode for meteor scatter using a binary LDPC code and
|
||||
Offset Quadrature Phase-Shift Keying (OQPSK). The resulting waveform
|
||||
is sometimes called Minimum Shift Keying (MSK).
|
||||
|
||||
- *ISCAT*, intended for aircraft scatter and other types of scatter
|
||||
propagation
|
||||
|
||||
- *Echo* mode, for detecting and measuring your own lunar echoes
|
||||
|
||||
- *Doppler tracking*, which becomes increasingly important for EME
|
||||
on bands above 1.2 GHz.
|
||||
|
||||
[[VHF_SETUP]]
|
||||
=== VHF Setup
|
||||
|
||||
To activate the VHF-and-up features:
|
||||
|
||||
- On the *Settings | General* tab check *Enable VHF/UHF/Microwave
|
||||
features* and *Single decode*.
|
||||
|
||||
- For EME, check *Decode at t = 52 s* to allow for extra path delay on
|
||||
received signals.
|
||||
|
||||
- If you will use automatic Doppler tracking and your radio accepts
|
||||
frequency-setting commands while transmitting, check *Allow Tx
|
||||
frequency changes while transmitting*. Transceivers known to permit
|
||||
such changes include the IC-735, IC-756 Pro II, IC-910-H, FT-847,
|
||||
TS-590S, TS-590SG, TS-2000 (with Rev 9 or later firmware upgrade),
|
||||
Flex 1500 and 5000, HPSDR, Anan-10, Anan-100, and KX3. To gain full
|
||||
benefit of Doppler tracking your radio should allow frequency changes
|
||||
under CAT control in 1 Hz steps.
|
||||
|
||||
NOTE: If your radio does not accept commands to change frequency
|
||||
while transmitting, Doppler tracking will be approximated with a
|
||||
single Tx frequency adjustment before a transmission starts, using a
|
||||
value computed for the middle of the Tx period.
|
||||
|
||||
- On the *Radio* tab select *Split Operation* (use either *Rig* or
|
||||
*Fake It*; you may need to experiment with both options to find one
|
||||
that works best with your radio).
|
||||
|
||||
- On the right side of the main window select *Tab 1* to present the
|
||||
traditional format for entering and choosing Tx messages.
|
||||
|
||||
The main window will reconfigure itself as necessary to display
|
||||
controls supporting the features of each mode.
|
||||
|
||||
- If you are using transverters, set appropriate frequency offsets on
|
||||
the *Settings | Frequencies* tab. Offset is defined as (transceiver
|
||||
dial reading) minus (on-the-air frequency). For example, when using a
|
||||
144 MHz radio at 10368 MHz, *Offset (MHz)* = (144 - 10368) =
|
||||
-10224.000. If the band is already in the table, you can edit the
|
||||
offset by double clicking on the offset field itself. Otherwise a new
|
||||
band can be added by right clicking in the table and selecting
|
||||
*Insert*.
|
||||
|
||||
image::Add_station_info.png[align="center",alt="Station information"]
|
||||
|
||||
- On the *View* menu, select *Astronomical data* to display a window
|
||||
with important information for tracking the Moon and performing
|
||||
automatic Doppler control. The right-hand portion of the window
|
||||
becomes visible when you check *Doppler tracking*.
|
||||
|
||||
image::Astronomical_data.png[align="center",alt="Astronomical data"]
|
||||
|
||||
Three different types of Doppler tracking are provided:
|
||||
|
||||
- Select *Full Doppler to DX Grid* if you know your QSO partner's locator
|
||||
and he/she will not be using any Doppler control.
|
||||
|
||||
- Select *Receive only* to enable EME Doppler tracking of your receive
|
||||
frequency to a specific locator. Your Tx frequency will remain fixed.
|
||||
|
||||
- Select *Constant frequency on Moon* to correct for your own one-way
|
||||
Doppler shift to or from the Moon. If your QSO partner does the same
|
||||
thing, both stations will have the required Doppler compensation.
|
||||
Moreover, anyone else using this option will hear both of you
|
||||
without the need for manual frequency changes.
|
||||
|
||||
- See <<ASTRODATA,Astronomical Data>> for details on the quantities
|
||||
displayed in this window.
|
||||
|
||||
=== JT4
|
||||
|
||||
JT4 is designed especially for EME on the microwave bands, 2.3 GHz and
|
||||
above.
|
||||
|
||||
- Select *JT4* from the *Mode* menu. The central part of the main
|
||||
window will look something like this:
|
||||
|
||||
image::VHF_controls.png[align="center",alt="VHF Controls"]
|
||||
|
||||
- Select the desired *Submode*, which determines the spacing of
|
||||
transmitted tones. Wider spacings are used on the higher microwave
|
||||
bands to allow for larger Doppler spreads. For example, submode JT4F
|
||||
is generally used for EME on the 5.7 and 10 GHz bands.
|
||||
|
||||
- For EME QSOs some operators use short-form JT4 messages consisting
|
||||
of a single tone. To activate automatic generation of these messages,
|
||||
check the box labeled *Sh*. This also enables the generation of a
|
||||
single tone at 1000Hz by selecting Tx6, to assist in finding signals
|
||||
initially. The box labeled *Tx6* toggles the Tx6 message from 1000Hz
|
||||
to 1250Hz to indicate to the other station that you are ready to
|
||||
receive messages.
|
||||
|
||||
- Select *Deep* from the *Decode* menu. You may also choose to
|
||||
*Enable averaging* over successive transmissions and/or *Enable deep
|
||||
search* (correlation decoding).
|
||||
|
||||
image::decode-menu.png[align="center",alt="Decode Menu"]
|
||||
|
||||
The following screen shot shows one transmission from a 10 GHz EME
|
||||
QSO using submode JT4F.
|
||||
|
||||
image::JT4F.png[align="center",alt="JT4F"]
|
||||
|
||||
=== JT65
|
||||
|
||||
In many ways JT65 operation on VHF and higher bands is similar to HF
|
||||
usage, but a few important differences should be noted. Typical
|
||||
VHF/UHF operation involves only a single signal (or perhaps two or
|
||||
three) in the receiver passband. You may find it best to check
|
||||
*Single decode* on the *Settings -> General* tab. There will be
|
||||
little need for *Two pass decoding* on the *Advanced* tab. With VHF
|
||||
features enabled the JT65 decoder will respond to special message
|
||||
formats often used for EME: the OOO signal report and two-tone
|
||||
shorthand messages for RO, RRR, and 73. These messages are always
|
||||
enabled for reception; they will be automatically generated for
|
||||
transmission if you check the shorthand message box *Sh*.
|
||||
|
||||
Be sure to check *Deep* on the *Decode* menu; you may optionally
|
||||
include *Enable averaging* and *Deep search*.
|
||||
|
||||
The following screen shot shows three transmissions from a 144 MHz EME
|
||||
QSO using submode JT65B and shorthand messages. Take note of the
|
||||
colored tick marks on the Wide Graph frequency scale. The green
|
||||
marker at 1220 Hz indicates the selected QSO frequency (the frequency
|
||||
of the JT65 Sync tone) and the *F Tol* range. A green tick at 1575 Hz
|
||||
marks the frequency of the highest JT65 data tone. Orange markers
|
||||
indicate the frequency of the upper tone of the two-tone signals for
|
||||
RO, RRR, and 73.
|
||||
|
||||
image::JT65B.png[align="center",alt="JT65B"]
|
||||
|
||||
=== QRA64
|
||||
|
||||
QRA64 is an experimental mode in Version 1.8 of _WSJT-X_. The mode is
|
||||
designed especially for EME on VHF and higher bands; its operation is
|
||||
generally similar to JT4 and JT65. The following screen shot shows an
|
||||
example of a QRA64C transmission from DL7YC recorded at G3WDG over the
|
||||
EME path at 24 GHz. Doppler spread on the path was 78 Hz, so although
|
||||
the signal is reasonably strong its tones are broadened enough to make
|
||||
them hard to see on the waterfall. The triangular red marker below
|
||||
the frequency scale shows that the decoder has achieved
|
||||
synchronization with a signal at approximately 967 Hz.
|
||||
|
||||
image::QRA64.png[align="center",alt="QRA64"]
|
||||
|
||||
The QRA64 decoder makes no use of a callsign database. Instead, it
|
||||
takes advantage of _a priori_ (AP) information such as one's own
|
||||
callsign and the encoded form of message word `CQ`. In normal usage,
|
||||
as a QSO progresses the available AP information increases to include
|
||||
the callsign of the station being worked and perhaps also his/her
|
||||
4-digit grid locator. The decoder always begins by attempting to
|
||||
decode the full message using no AP information. If this attempt
|
||||
fails, additional attempts are made using available AP information to
|
||||
provide initial hypotheses about the message content. At the end of
|
||||
each iteration the decoder computes the extrinsic probability of the
|
||||
most likely value for each of the message's 12 six-bit information
|
||||
symbols. A decode is declared only when the total probability for all
|
||||
12 symbols has converged to an unambiguous value very close to 1.
|
||||
|
||||
For EME QSOs some operators use short-form QRA64 messages consisting
|
||||
of a single tone. To activate automatic generation of these messages,
|
||||
check the box labeled *Sh*. This also enables the generation of a
|
||||
single tone at 1000Hz by selecting Tx6, to assist in finding signals
|
||||
initially, as the QRA64 tones are often not visible on the waterfall.
|
||||
The box labeled *Tx6* switches the Tx6 message from 1000Hz to 1250Hz
|
||||
to indicate to the other station that you are ready to receive messages.
|
||||
|
||||
|
||||
TIP: QRA64 is different from JT65 in that the decoder attempts to find
|
||||
and decode only a single signal in the receiver passband. If many
|
||||
signals are present you may be able to decode them by double-clicking
|
||||
on the lowest tone of each one in the waterfall.
|
||||
|
||||
=== ISCAT
|
||||
|
||||
ISCAT is a useful mode for signals that are weak but more or less
|
||||
steady in amplitude over several seconds or longer. Aircraft scatter
|
||||
at 10 GHz is a good example. ISCAT messages are free-format and may
|
||||
have any length from 1 to 28 characters. This protocol includes no
|
||||
error-correction facility.
|
||||
|
||||
=== MSK144
|
||||
|
||||
Meteor-scatter QSOs can be made any time on the VHF bands at distances
|
||||
up to about 2100 km (1300 miles). Completing a QSO takes longer in
|
||||
the evening than in the morning, longer at higher frequencies, and
|
||||
longer at distances close to the upper limit. But with patience, 100
|
||||
Watts or more, and a single yagi it can usually be done. The
|
||||
following screen shot shows two 15-second MSK144 transmissions from
|
||||
W5ADD during a 50 MHz QSO with K1JT, at a distance of about 1800 km
|
||||
(1100 mi). The decoded segments have been marked on the *Fast
|
||||
Graph* spectral display.
|
||||
|
||||
image::MSK144.png[align="center",alt="MSK144"]
|
||||
|
||||
Unlike other _WSJT-X_ modes, the MSK144 decoder operates in real time
|
||||
during the reception sequence. Decoded messages will appear on your
|
||||
screen almost as soon as you hear them.
|
||||
|
||||
To configure _WSJT-X_ for MSK144 operation:
|
||||
|
||||
- Select *MSK144* from the *Mode* menu.
|
||||
|
||||
- Select *Fast* from the *Decode* menu.
|
||||
|
||||
- Set the audio receiving frequency to *Rx 1500 Hz*.
|
||||
|
||||
- Set frequency tolerance to *F Tol 100*.
|
||||
|
||||
- Set the *T/R* sequence duration to 15 s.
|
||||
|
||||
- To match decoding depth to your computer's capability, click
|
||||
*Monitor* (if it's not already green) to start a receiving sequence.
|
||||
Observe the percentage figure displayed on the _Receiving_ label in
|
||||
the Status Bar:
|
||||
|
||||
image::Rx_pct_MSK144.png[align="center",alt="MSK144 Percent CPU"]
|
||||
|
||||
- The displayed number (here 17%) indicates the fraction of available
|
||||
time being used for execution of the MSK144 real-time decoder. If
|
||||
this number is well below 100% you may increase the decoding depth
|
||||
from *Fast* to *Normal* or *Deep*, and increase *F Tol* from 100 to
|
||||
200 Hz.
|
||||
|
||||
NOTE: Most modern multi-core computers can easily handle the optimum
|
||||
parameters *Deep* and *F Tol 200*. Older and slower machines may not
|
||||
be able to keep up at these settings; at the *Fast* and *Normal*
|
||||
settings there will be a small loss in decoding capability (relative
|
||||
to *Deep*) for the weakest pings.
|
||||
|
||||
- T/R sequences of 15 seconds or less requires selecting your
|
||||
transmitted messages very quickly. Check *Auto Seq* to have the
|
||||
computer make the necessary decisions automatically, based on the
|
||||
messages received.
|
||||
|
||||
- For operation at 144 MHz or above you may find it helpful to use
|
||||
short-format *Sh* messages for Tx3, Tx4, and Tx5. These messages are
|
||||
20 ms long, compared with 72 ms for full-length MSK144 messages.
|
||||
Their information content is a 12-bit hash of the two callsigns,
|
||||
rather than the callsigns themselves, plus a 4-bit numerical report,
|
||||
acknowledgment (RRR), or sign-off (73). Only the intended recipient
|
||||
can decode short-messages. They will be displayed with the callsigns
|
||||
enclosed in <> angle brackets, as in the following model QSO
|
||||
|
||||
CQ K1ABC FN42
|
||||
K1ABC W9XYZ EN37
|
||||
W9XYZ K1ABC +02
|
||||
<K1ABC W9XYZ> R+03
|
||||
<W9XYZ K1ABC> RRR
|
||||
<K1ABC W9XYZ> 73
|
||||
|
||||
|
||||
NOTE: There is little or no advantage to using MSK144 *Sh*
|
||||
messages at 50 or 70 MHz. At these frequencies, most pings are long
|
||||
enough to support standard messages -- which have the advantage of
|
||||
being readable by anyone listening in.
|
||||
|
||||
- A special *VHF Contest Mode* for FT8 and MSK144 can be activated by
|
||||
checking a box on the *Settings | Advanced* tab. This mode is
|
||||
configured especially for VHF contests in which four-character grid
|
||||
locators are the required exchange. When *Contest Mode* is active,
|
||||
the standard QSO sequence looks like this:
|
||||
|
||||
CQ K1ABC FN42
|
||||
K1ABC W9XYZ EN37
|
||||
W9XYZ K1ABC R FN42
|
||||
K1ABC W9XYZ RRR
|
||||
W9XYZ K1ABC 73
|
||||
|
||||
In contest circumstances K1ABC might choose to call CQ again rather
|
||||
than sending 73 for his third transmission.
|
||||
|
||||
=== Echo Mode
|
||||
|
||||
*Echo* mode allows you to make sensitive measurements of your own
|
||||
lunar echoes even when they are too weak to be heard. Select *Echo*
|
||||
from the *Mode* menu, aim your antenna at the moon, pick a clear
|
||||
frequency, and toggle click *Tx Enable*. _WSJT-X_ will then cycle
|
||||
through the following loop every 6 seconds:
|
||||
|
||||
1. Transmit a 1500 Hz fixed tone for 2.3 s
|
||||
2. Wait about 0.2 s for start of the return echo
|
||||
3. Record the received signal for 2.3 s
|
||||
4. Analyze, average, and display the results
|
||||
5. Repeat from step 1
|
||||
|
||||
To make a sequence of echo tests:
|
||||
|
||||
- Select *Echo* from the *Mode* menu.
|
||||
|
||||
- Check *Doppler tracking* and *Constant frequency on the Moon* on the
|
||||
Astronomical Data window.
|
||||
|
||||
- Be sure that your rig control has been set up for _Split Operation_,
|
||||
using either *Rig* or *Fake It* on the *Settings | Radio* tab.
|
||||
|
||||
- Click *Enable Tx* on the main window to start a sequence of 6-second
|
||||
cycles.
|
||||
|
||||
- _WSJT-X_ calculates and compensates for Doppler shift automatically.
|
||||
As shown in the screen shot below, when proper Doppler corrections
|
||||
have been applied your return echo should always appear at the center
|
||||
of the plot area on the Echo Graph window.
|
||||
|
||||
image::echo_144.png[align="center",alt="Echo 144 MHz"]
|
||||
|
||||
=== VHF+ Sample Files
|
||||
|
||||
Sample recordings typical of QSOs using the VHF/UHF/Microwave modes
|
||||
and features of _WSJT-X_ are available for
|
||||
<<DOWNLOAD_SAMPLES,download>>. New users of the VHF-and-up features
|
||||
are strongly encouraged to practice decoding the signals in these
|
||||
files.
|
||||
Reference in New Issue
Block a user