Skip to main content

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




Comments

  1. Dearest Esteems,

    We are Offering best Global Financial Service rendered to the general public with maximum satisfaction,maximum risk free. Do not miss this opportunity. Join the most trusted financial institution and secure a legitimate financial empowerment to add meaning to your life/business.

    Contact Dr. James Eric Firm via
    Email: fastloanoffer34@gmail.com
    https://urgentloanoffer22.blogspot.com/
    Whatsapp +918929509036
    Best Regards,
    Dr. James Eric.
    Executive Investment
    Consultant./Mediator/Facilitator

    ReplyDelete
  2. his blog is really useful and it is very interesting thanks for sharing, it is really good and exclusive.
    salesforce Training in Bangalore
    uipath Training in Bangalore
    blueprism Training in Bangalore

    ReplyDelete
  3. Nice blog..! I really loved reading through this article. Thanks for sharing such a amazing post with us and keep blogging...Well written article

    salesforce Training in Bangalore
    uipath Training in Bangalore
    blueprism Training in Bangalore

    ReplyDelete
  4. Really awesome blog!!! I finally found great post here.I really enjoyed reading this article. Thanks for sharing valuable information.
    Data Science Course
    Data Science Course in Marathahalli
    Data Science Course Training in Bangalore

    ReplyDelete

Post a Comment

Popular posts from this blog

Release CEC Firmware v1.200 for uBITX All version(include V2, V3, V4, V5)

Release CEC Firmware v1.200 for uBITX All Version (include v2, v3, v4, v5) I did the firmware work for v5 when uBITX V5 was released, but I release it now.
I received the feedback from a thankful beta tester and tested it myself by converting my uBITX v3 to v5 but I was not sure.

I ordered the uBITX V5 and delivered the correct uBITX V5, so I made a little more fine-tuning.
If you use V2, V3, V4, you do not need to update this firmware.

uBITX with Nextion LCD (CEC Firmware) - Installation and Introduction

uBITX with Nextion LCD (CEC Firmware) - Installation and Introduction uBITX CEC Firmware supports various LCD since Version 1.08 (16x02 Parallel, 20x04 Parallel, 16x02  I2C, 20x04 I2C, 16x02 Dual LCD with I2C).
Supports Nextion LCD (Graphic LCD) from Version 1.09, Version 1.09x is primarily aimed at Nextion LCD support. Also 1.09x will continue to be Beta version. If you want a stable version, please use 1.08 or 1.1 version to be released in the future.

Release EU1KY AA Firmware CEC Version 1.01 and 1.0a

Release EU1KY AA Firmware CEC Version 1.01 and 1.0a
It is the stabilized final version of EU1KY AA. Updates starting with Version 0.1 continue to add features. Please refer to the link below for added features.

I have separated the Version to 1.01 and 1.0A for users who want to use AA only for instrumentation purposes.

*  If you want to use all the features added up to Version 0.71, please use Version 1.0A.
*  If you want to use it only for instrument use, please use Version 1.01



Version V1.0A


Version V1.01



1.Download Firmware Version 1.01 and 1.0a
https://github.com/phdlee/antennaanalyzer/releases
Version 1.01 (Version with only antenna analyzer function) https://github.com/phdlee/antennaanalyzer/releases/download/v1.01/AA_CEC_V1.01.zip
Version 1.0A (Version with all features added up to Version 0.71) https://github.com/phdlee/antennaanalyzer/releases/download/v1.01/AA_CEC_V1.0A.zip
ConvertRXP (Converters for using AA measurement data in other tools such as Matlab) https://github.com/phd…