❌

Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

Improvements to use the FT8 protocol on the Cortex-M base

Improvements to use the FT8 protocol on the Cortex-M base

Several experiments are underway to use FT8 on the Cortex-M base.Β The previous experiment can be seen in the link below.
http://www.hamskey.com/2019/05/ft8-wsjt-x-20-protocol-decoding-in.html




1.Previous experiment
Β 1.1 Implement FT8 protocol to operate on Cortex-M base
Β Refrence :
Β Β https://physics.princeton.edu/pulsar/k1jt/wsjtx.html
Β Β https://physics.princeton.edu/pulsar/k1jt/wsjtx-2.1.0-rc5.tgz
Β Β https://github.com/kgoba/ft8_lib
Β  https://github.com/phdlee/ft8_libΒ (forked from kgoba/ft8_lib and modified)

Β  and gcc fortran compiler

Β 1.2 Adjust Sampling Frequency and FFT size to use FPU of MCU
Β  Β http://www.hamskey.com/2019/05/ft8-wsjt-x-20-protocol-decoding-in.html

Β 1.3Β Previous experiment results
Β Β The FT8 protocol should be completed decoding and ready for next transmission within 15 seconds.Β The encoding for FT8 transmission is very simple and time consuming, so Ignore it.
Β Β For normal communication, it is still necessary to reduce the time by about 2 to 3 seconds.

2. Parallel processing using DMA and FPU for speed improvement
Β The experimental conditions are the same as before.

Β 2.1 Structure for FT8 decoding
Β  Approximately eight steps are required to decode FT8 in Wsjt-X 2.0. I divided the time consuming part into four large parts.
Power Data (frequency domain data per time unit)

The FT8 requires 12.65sec of transmission time, but I added 900msec to account for the time error. (This time may change later)

After receiving the data for about 13.5 seconds, the FFT process is performed.
It is the longest part of decoding the FT8 signal. (3.5sec)

I adjusted the sampling rate and the FFT unit to use this part in the Cortex-M's built-in FPU.Β As a result, I reduced the time by about 2 seconds.
http://www.hamskey.com/2019/05/ft8-wsjt-x-20-protocol-decoding-in.html


Β 2.2 ModifiedΒ Structure forΒ FT8 decoding

Power Data (frequency domain data per time unit)

I changed the structure so that I could process the FFT together while receiving the signal.

Receiving data is handled by DMA, while Main Core is processing FFT while DMA is receiving data.Β Note that the FFT processing must end within the DMA 1 cycle.
To understand Cortex-M's events, handlers, and pending times, I recommend the following book:Β https://www.amazon.com/Definitive-Guide-Cortex-Cortex-M0-Processors/dp/0128032774


This method reduces most of the time required for FFT.


3.Β Hash callsign (Recent callsign)
Β In Wsjt-x 2.0, a non-standard callsign was added to extend the FT8 protocol.Β This is the best way to add functionality without changing the length of the protocol.

non-standard callsign has 58bit Length
1234567890123456789012345678901234567890123456789012345678
1111111111111111111111111111111111111111111111111111111111
=> DecΒ 288230376151711743

Non-standard callsign can only use the following 38 characters.
Β 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ/

38^11 =Β 238572050223552512
58bit can transmit up to 11 characters.

Below is the processing structure of Non standard Callsign added in Wsjt-x 2.0.

In this experiment, I added the above structure to make it compatible with Wsjt-x 2.0


4. Experiment
Β The experimental conditions are the same as before.
I used one UART as the MCU's output device for debugging.

Β 4.1 Processing speed improvement test
Ready


Start Receive and FFT -> Calculate power
In the screen below, each time two "." Are output, the FFT operation is performed by parallel processing.


complete decoding


620ms + 887ms = 1507msec


Almost came close to the goal.Β But there is a problem.
The less the number of decoded messages, the longer it takes.
Up to 1 sec can be increased.
That is, the time to decode the message is variable. 800msec ~ 1500msec


Β 4.2 non standard callsign test
non standard protocol ('CQ OZ/LA6OP') is decode and displayed normally on the screen below.

'OZ / LA6OP' will be stored in the hash10, has12, and hash22 repositories respectively.


The stored hash code is being converted normally.
(IZ4... <OZ/LA6OP> >


Below is another example of a non standard call


Below is another example of a non standard call


Test Video for this article


5. Conclusion
Perhaps the next experiment may be delayed.
My main project (for business) has started and I am going to be very busy with this semester class lecture.
My seasonal courses are matlab related classes.Β Maybe I could use this project for my class.
Whenever it is time, I will worry for improvement.

Thanks for reading.
Ian KD8CEC




FT8 (Wsjt-x 2.0) protocol decoding in Cortex-M for experiment

FT8 (Wsjt-x 2.0) protocol decoding in Cortex-M for experiment

I implemented FT8 signal decoding on the STM32F746G-Disc board for Expermental.
I want to test whether Cortex-M based FT8 communication is possible. I used Wsjt-x 2.0 and some source code to enable FT8 decoding on the Cortex-M7 base.


I received the FT8 signal directly to the microphones (mems) on the STM32F746G-Disc board.

1.Implementation and experiment preparation
I have used web sdr for the experiment and can do real time testing.

The decoding comparison used Wsjt-x 2.05 (for FT4)

The red square in the picture below is the microphone for receiving the FT8 signal.

2.Experiment

First Decoding :
Compared to Wsjt-x 2.0, decoding is delayed about 2 seconds.

Second Decoding :Β Wsjt-x has already been decoded.

Cortex-M was decoded about 2 seconds later.


Test Video

3.conclusion
Several improvements have been made to the Cortex-M, but it is still difficult to use.
If 2 seconds are delayed, the next signal transmission has already begun.

The STM32F746 is 216Mhz and I have been successful in overclocking near 300Mhz a few years ago. (300Mhz is not accurate)

But I will not solve this problem with Overclock.Β I will keep the CPU speed below 216Mhz for stability.

The part that needs the most time to decode the FT8 protocol is the FFT processing part.


FT8 : Tone spacing = 6.25Hz * 8FSK = 50Hz

FFT Size : 3840 = 1920 * 2
Β  Β  Β  Β  Β  Β  Β 1920 = 12000(bitrate) / 6.25Hz (Tone spacing)
In this way, the FFT Bin unit will be 6.25 Hz.

I modified the Bitrate to slightly reduce the FFT Size while maintaining 6.25Hz.Β I also modified the Kiss-FFT library to work with Cortex-M.

I am going to make a few more improvements to fit Cortex-M. As a result of the improvement, if it is available in Cortex-M, I will make it public.

Thank you for reading

EU1KY AA Firmware stabilization version update (V0.53) and Test about Extended WSPR Band (4m, 2m, 630m, 2190m)

EU1KY AA Firmware stabilization version update (V0.53) and Test about Extended WSPR Band (4m, 2m, 630m, 2390m)


Since Version 0.53 did not cause major problems, I moved 0.53 to the stable version.
My next task is to free memory to add other features. Maybe it will be version 0.6 and it will not be released.
I will release the source to github after a few days of preparation after Version 0.7 is released.






1.Download stabilization version
Click below for more information on the stabilization version.
http://www.hamskey.com/2019/03/eu1ky-antenna-analyzer-cec-stabilized.html


Version 0.53
http://www.hamskey.com/2019/05/release-eu1ky-aa-firmware-cec-version.html


How to create AA
(Information is constantly being updated)
http://www.hamskey.com/2019/02/assembling-faa-450-antenna.html


2.Test about Extended WSPR Band
Four WSPR bands have been added in V0.5.
2190m (136Khz), 630m(474Khz), 4m(70Mhz), 2m (145Mhz)

Maybe your Si5351 chip will use a 27Mhz crystal.Β In such a case, the WSPR transmission may be unstable in the 2m band.
The larger the frequency, the greater the error in the crystal.
If a more stable oscillator such as TCXO is used, it is expected to be used stably in 2M band.

Please use WSPR only for the four bands added at this version.
All protocols are available on the other bands (160m ~ 6m)

2.1 Test WSPR on 2m band
In my case, I had to reduce 300Hz in 2m band to transmit at 1500Hz.
If you want to use WSPR in 2m band, please check if it is transmitted at 1500Hz before using it.
WSPR should be transmitted in the vicinity of 1500Hz.






Receiving used FT-817.


Test Video


2.2 WSPR Test on 2190m








2.3 WSPR Test on 630m





Test Video for 2190m, 630m



Thank you for reading

Ian KD8CEC



❌
❌