IV - Extra

1. CubeSat performances.

1.1 Measurement of encoding/decoding time.

1.1.1 In simulation.

The following program measures the time taken by the device 16-bit dsPIC33FJ256GP710 in order to perform the encoding process, the decoding process and the whole encoder/decoder RS process.

The function clock() returns the number of clock ticks elapsed since the program was launched. Thus, the calling of clock just before and after the encoding process or the decoding process reveals the number of clock ticks elapsed during their execution. Thereafter, the value of the variable CLOCKS_PER_SEC, combined with the results of the previous functions, gives the time elapsed during the execution of encoding and decoding process.

The following hypothesis is assumed : POSIX requires that CLOCKS_PER_SEC equals 1000000 independent of the actual resolution.


1000 ticks per milliseconds


Time measurement of data encoding


Printing clock data

Thereby, a chart with the 3 curves illustrating the information word length [byte] as a function of the execution time [ms]. It highlights the linear behavior of the execution time, which is demonstrated afterwards. The simulation has been launched without intruducing error in the message, so we could reckon that the more errors there are, the shaper the slope of the decoding execution time would be.


Chart of Reed Solomon time measurement

1.1.2 With Floating-Point OPeration (FLOP)

Hence, encoding stands for O(nbytes x NPAR) with nbytes is the codeword length, NPAR the number of parity bits.
Since it is a systematic code nbytes = information_word_length + NPAR encoding stands for O(information_word_length) with NPAR constant.

Note that a more accurate way would be to consider processor speed and Salvo function OSGetTiks :
p=.

1.2 Busy memory on CubeSat.

The dsPIC33F data width is 16 bits. All internal registers and data space memory are organized as 16 bits wide. The dsPIC33F features two data spaces. The data spaces can be accessed separately (for some Digital Signal Processing (DSP) instructions), or together as one 64-Kbyte linear address range (for microcontroller (MCU) instructions).


Before RS integration


After RS integration

Memory comparison :
  • Data : 6% to 15% - Space for the storage of variables
  • Program : 13% to 16% - Storage of the application

More information about memory management for the dsPIC33F Data Memory Manual


2. Current topics.

For the purpose of reliability for Land Mobile Satellite (LMS) channel, a solution is discussed about error correcting code on the Transport layer [1]. Regarding new trends of erasure codes related to satellites [2], an efficient way to perform encoding over LMS channel is to consider Non-Binary codes such as Reed-Solomon code (studied in III - Advanced Project chapter) or Non-Binary LDPC code (which is highly complex to implement). The Non-Binary characteristic would be to consider a whole packet or a sliced packet as a symbol in order to decrease the error probability of packets.
A possible continuity to this project could be to integrate the OpenFEC code available on OpenFEC - Downloads in the CubeSat Kit. This would be easily done by following chapter II - Tutorial and III - Advanced Project that could be a integration pattern for any CubeSat project.

Research papers proposed on IEEE Website :
[1] Transport layer coding for the land mobile satellite channel
[2] Erasure Codes for Space Communications: Recent Findings and New Challenges