8a

The World of LF.. special report G3YXM

.1. LF News
.2. News Archive
.3. LF WWW
.4. Getting On
.6. Build a TX
.7. Circuits
.8. Features
.9. The Matrix
.10. The Gallery
.11. /P Diary
.12. LF/M!
.13. Logbook
.14. Topband.
.15. Noticeboard
...Help...

Meet Jason.

Jason is a keyboard mode displaying the received message as text.

Version 0.92 was released on 20/01/2002. It is not compatible with the previous versions.

The message above was decoded from a barely perceptable signal (see later in write-up).

Alberto explains:

Basically, the information is coded in the absolute value of the difference between two frequencies sent sequentially. This has the advantage of not needing a precise initial tuning. A tuning error of a few Hertz is perfectly acceptable. Another characteristic is that, being the frequencies sent one at a time, you don't need a linear amplifier. A class-D mosfet TX will do nicely.

The frequency deltas can assume one of 16 different values. After sending one tone, the next one is shifted by the appropriate amount in the direction of the barycenter of the range. With this method, a total of 32 different slots are needed to be able to send a delta ranging from 1 to 16.

With 16 possible deltas, each baud (a baud is a change in the signal transmitted, in this case a change in frequency) encodes 4 bits (called a nibble), which are not enough for a reasonable alphabet. So we need two nibbles for our alphabet. But now a problem arises : how can we get character synchronization ? In other words, which is the high-order and which is the low-order nibble ? I solved the problem in the simplest way, may be not the optimal one. I used the high order bit of each nibble to encode this info. So the high-order nibble is of the form '1xxx'b, while '0xxx'b is the low-order one. Here xxx stands for the actual information transmitted.

So now there are 6 bits available to encode our alphabet, enough for 64 symbols. I decided that my alphabet would be that that in ASCII code goes from x'20' (the blank) to x'5f'. This allows the transmission of all the letters (upper case only...), the ten digits, and practically all the interpunction symbols normally used.

Ok, this explains the encoding. What about the signalling ?

For this version of Jason (but may change in future versions), I choose the following parameters :

- The center frequency is 800 Hz

- Each one of the 32 slots is separated from the adjacent by 3 FFT bins, so to guarantee some orthogonality.

- Each FFT bin is roughly 84 millihertz, so the slots are at a distance of roughly 252 millihertz, for a total band occupancy of 8.075 Hz

- Each baud (each tone sent) lasts for roughly 11.89 seconds (the inverse of the FFT bin width)

The program has a capture range of 1.5 times the band width (my arbitrary choice), i.e. slightly more than 12 Hz. The capture range can be easily positioned with the mouse.

Which are the frequency stability requirements ?

It is evident that the combination of the Tx and Rx drifts must be such that, in each 11.89 sec. interval, the frequency must stay in one single FFT bin, i.e. 84 millihertz. To say the truth, a drift from -1 to +1 bin is tolerated, and accounted for, by the program. But let's remain on the conservative side.

If we translate this into short term stability, where short term means a period of 10 minutes, we compute that our oscillator must not drift, each 10-minute interval, not more than 0.084 * 600 / 11.89=4.24 Hz (roughly). This means, at 136kHz, a stability of 31 ppm, which doesn't look like a difficult figure to achieve.

----

Interfacing

How does Jason interfaces with the radio ? For reception, it's quite easy. Just bring the Rx into audio into the sound card, just as you do now with Argo and Spectran. For transmission, I have envisaged three different modes, to make interfacing the most easy possible.

- Parallel port output : via the Options menu, you can choose between LPT1 or LPT2. The code (ranging from 0 to 31) for the tone to be sent is output, with the strobe pulsed high for 100ms. The Tx condition is indicated by the SelectInput pin being high.

- Serial port output : via the Options menu, you can choose between COM1, COM2 or COM3. The code (ranging from 0 to 31) for the tone to be sent is output. The Tx condition is indicated by the RTS being active.

- Audio output : selectable via the Options menu. If you choose this method, a note is generated using the sound card, with a software implementation of a DDS, with a very long sine table (262144 entries), which ensures low distortion. The center frequency generated is 800Hz.

With these interfacing possibilities, it should be easy to hook-up a Tx to Jason, both if you have the possibility to up-convert the audio tone to the working frequency, or if you use a DDS board, either with a parallel or serial interface.

If you use a DDS board, you will need the following table to set up the frequency to generate, depending on the code output from Jason. Obviously these would be the received frequencies, they will need to be up-converted to 137kHz.

Code Frequency (Hz)

0 796.089

1 796.341

2 796.593

3 796.846

4 797.098

5 797.350

6 797.603

7 797.855

8 798.107

9 798.360

10 798.612

11 798.864

12 799.117

13 799.369

14 799.621

15 799.874

16 800.126

17 800.379

18 800.631

19 800.883

20 801.136

21 801.388

22 801.640

23 801.893

24 802.145

25 802.397

26 802.650

27 802.902

28 803.154

29 803.407

30 803.659

31 803.911

These are also the frequencies generated when using the audio output, provided that your sound card has an exact sampling rate. The encoding is taken care of by Jason, the DDS board task is only to generate the appropriate frequency, according to the received code. I do hope this notes are sufficient to make you understand how Jason works, and how to interface it with a Tx for LF work. Should you have any residual doubts, feel free to contact me at dibene@usa.net

My initial tests.

Eager to try the new mode I loaded Jason onto my shack PC and it ran beautifully but I needed a signal to decode. I got another PC and tried that, 256 colour, Jason won't start in 256 colour.... Another try and I have 2 PCs running. I selected sound card mode under "options" "TX port" and when I switched to TX I got nice tones out of one PC. I connected it to the other with great optimism.

To transmit, you can either type the message first and then select TX and it will start sending, or you can switch to TX and type. It sends quite slowly, about one character every 2.5 seconds, so you don't need to type fast, the characters queue up in the transmit window. The first tone sent is 800Hz, centre frequency, followed by a pair of tones for each character.

In receive mode the idea is to get the tones to lie between the two yellow cursors on the Spectral display. If they are off centre you can shift the receive window by clicking the mouse either side of the centre of the window. If you transmit with no text in the TX window, you will get a two-tone sequence at the limits, ideal for centering the receive window. I had everything centred nicely but was only getting the odd wrong character on the display. It was difficult to reduce the local signal enough to prevent it "blooming" across the display, you really need to reduce the input level so you get nice sharp lines. Still no luck though.

It appears that my 200MHz machine is too slow to do the number-crunching required to decode at this speed. (Alberto has now brought out a version for slower PCs V0.91 which has switchable speed. I have now tried it on a 100MHz PC and it works. Get it from the link at the bottom of the page.)

I went and got a faster machine (850MHz) and brought it into the shack. Success! I then generated a weak signal by feeding the tones into my IC735 transceiver and listened to it against real band noise.

The Argo screen-shot below was taken at the limit of decoding. The message "2468 motorway" was being sent (don't ask me why, I just typed it!) and the same audio was going to the PC running Argo as to the PC running Jason.

Even the bit in the middle where it goes very feint was decoded OK, see the Jason screen at the top of the page, I think it's about "6" in the message.

That signal would probably be an "M" copy in QRSS or DFCW so the mode works well in noise. It doesn't cope quite so well when conditions are quiet and the Loran lines are visible in the decoder window. If the Jason signal is not significantly louder than the Loran lines then decoding is upset. Alberto may have a solution to that in future.

He is still developing the software and new versions, including a half-bandwidth version (now implemented, see below) that should fit between Loran lines. Look out for updates.

Version 0.92 is now out with some major mods:

Alberto explains:

The mods are :

- Ctrl-Z clears the reception screen
- The blooming of the waterfall trace has been fixed.
- There should be now much less garbled and repeated
characters when receiving just noise
- The new 17-tone signalling scheme is implemented
- When using audio output, it is possible to apply a multiplying
factor to the steps between the tones
- A beacon mode is implemented
- Selectable USB/LSB both for Rx and Tx

Regarding this last point, a few notes are in order :

On the transmitting side, the Tx and Jason must be set both
either on USB or LSB. There is no need to announce in advance
which mode the transmission will be, as long as the above

The same holds for the receiving side. Keep both the Rx and Jason
either on USB or LSB, irrespective on how the setting is on the
transmitting side.

A last word about the beacon mode.
The text to be beaconed must be surrounded by braces :  {   }
When the opening brace is encountered, then the text found until
the closing brace is endlessly repeated.  As an example, suppose
the following is typed :

HELLO ALL { THIS IS A TEST}

What will be transmitted is:

HELLO ALL THIS IS A TEST THIS IS A TEST THIS IS A TEST.....
and so on.

Any text following the closing brace will be ignored.

As usual, any and all reports are welcome

As of 22/7/02 0.94 is the current version.

This version has selectable decoders, the original one and one based on Wolf by KK7RA which is better in marginal conditions.

It also has the facilty to analyse a stored wav file so you can record a file with windows sound recorder or similar and try the alternative decoders. Remember to record at 11025 samples/sec.

The TX format remains the same so it is still compatible with previous versions back to 0.92.