Associating analog signals with satellite downlink signals

By receiving and processing packet preamble and header data of CubeSats satellite downlink signal in the computing system, generating analog signals and calculating signal associations, the problem of high loss rate in CubeSats signal decoding is solved, and more efficient signal decoding and data acquisition are achieved.

CN120226281APending Publication Date: 2025-06-27MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380079615.5
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-11-18
Filing Date
2023-10-19
Publication Date
2025-06-27

AI Technical Summary

Technical Problem

The prior art has a high packet loss rate when decoding CubeSats satellite downlink signals, mainly due to signal interference and noise problems caused by the low signal transmission power and wide beam of CubeSats.

Method used

A computing system is provided to receive satellite-associated packet preamble and packet header binary data through a processor, generate an analog signal, and calculate the association of the signal with the analog signal in multiple sampling intervals of the satellite downlink signal to identify and decode binary satellite signal data.

Benefits of technology

By improving the accuracy and efficiency of signal decoding, the packet loss rate is reduced, and the signal-to-noise ratio of the received signal from the satellite is enhanced, thereby obtaining more available data.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120226281A_ABST
    Figure CN120226281A_ABST
Patent Text Reader

Abstract

A computing system includes a processor configured to receive packet preamble binary data and packet header binary data associated with a satellite. The processor may generate an analog signal encoding the packet preamble binary data and the packet header binary data. The processor may receive a satellite downlink signal. Within each of a plurality of sampling intervals of the satellite downlink signal, the processor may calculate a respective association between the satellite downlink signal and at least a portion of the analog signal. The processor may select an identified sampling interval of the plurality of sampling intervals based at least in part on the plurality of associations. The processor may decode the binary satellite signal data based at least in part on the identified samples of the satellite downlink signal. The processor may output the binary satellite signal data.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] An increasing number of small satellites, known as CubeSats, have recently been deployed into orbits around the Earth. These satellites are designed to have low cost, low power levels, and small form factors. CubeSats are typically deployed in constellations of multiple satellites (e.g., approximately 150 satellites) that generally follow similar orbits. Additionally, CubeSats are configured to transmit data to ground stations located on Earth, where the downlink data can be processed or offloaded for processing at other locations. Signals transmitted from CubeSats to ground stations are typically transmitted in the form of radio waves that encode data packets. During processing, the radio waves are converted into digital signals in order to extract the encoded data. Summary of the Invention

[0002] According to one aspect of the present disclosure, a computing system is provided that includes a processor configured to receive packet preamble binary data and packet header binary data associated with a satellite. The processor may also be configured to generate an analog signal that encodes the packet preamble binary data and the packet header binary data. The processor may also be configured to receive a satellite downlink signal. Within each of a plurality of sampling intervals of the satellite downlink signal, the processor may also be configured to calculate a corresponding correlation between the satellite downlink signal and at least a portion of the analog signal. The processor may also be configured to select an identified sampling interval among the plurality of sampling intervals based at least in part on the plurality of correlations. The processor may also be configured to: decode binary satellite signal data based at least in part on the identified sampling of the satellite downlink signal. The processor may also be configured to output the binary satellite signal data.

[0003] The Summary of the Invention is provided to introduce a selection of concepts that are further described below in the Detailed Description in a simplified form. The Summary of the Invention is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Additionally, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of the present disclosure. Brief Description of the Drawings

[0004] Figure 1 A computing system, a satellite, and a ground station are shown in accordance with an example embodiment.

[0005] Figure 2 Schematically depicts a computing system when processing satellite-specific packet metadata and a satellite downlink signal according to an example of Figure 1 .

[0006] Figure 3Schematically shows an example packet configured to be received from a satellite at a computing system according to Figure 1 The example shown is of a packet configured to be received from a satellite at a computing system.

[0007] Figure 4 Shows an example graph of the variation over time of the amplitude of a satellite downlink signal according to Figure 1 The example shown is of a graph of the variation over time of the amplitude of a satellite downlink signal.

[0008] Figure 5 Schematically shows a computing system when a processor is configured to execute a verification module according to an example of Figure 1 The example shown is of a computing system when a processor is configured to execute a verification module.

[0009] Figure 6 Schematically shows a computing system when a processor is configured to execute a starting position identification module according to an example of Figure 1 The example shown is of a computing system when a processor is configured to execute a starting position identification module.

[0010] Figure 7A Shows a graph of Figure 4 in an example where a plurality of additional identified samples included in corresponding ones of a plurality of additional sampling intervals of a satellite downlink signal have been selected.

[0011] Figure 7B Schematically shows a computing system when processing additional identified samples according to an example of Figure 7A The example shown is of a computing system when processing additional identified samples.

[0012] Figure 7C Schematically shows a computing system when a processor is configured to execute a verification module for a plurality of candidate additional identified samples according to an example of Figure 7B The example shown is of a computing system when a processor is configured to execute a verification module for a plurality of candidate additional identified samples.

[0013] Figure 8 Schematically shows a computing system when a processor is configured to execute a verification module for a plurality of next highest associated samples according to an example of Figure 1 The example shown is of a computing system when a processor is configured to execute a verification module for a plurality of next highest associated samples.

[0014] Figure 9 Shows an example algorithm that can be executed at a processor of a computing system to locate and decode a packet in a satellite downlink signal according to an example of Figure 1 The example shown is of an algorithm that can be executed at a processor of a computing system to locate and decode a packet in a satellite downlink signal.

[0015] Figure 10A Shows a flowchart of an example method that can be executed at a computing system to decode a satellite downlink signal according to an example of Figure 1 The example shown is of a flowchart of a method that can be executed at a computing system to decode a satellite downlink signal.

[0016] Figures 10B to 10G Shows additional steps of a method that can be executed in some instances of Figure 10A The example shown is of additional steps of a method that can be executed in some instances.

[0017] Figure 11illustrates an example computing environment of a computing system in which Figure 1 can be instantiated. Figure 1 A schematic diagram of an example computing environment of a computing system in which Figure 1 can be instantiated. DETAILED DESCRIPTION

[0018] Existing methods for decoding downlink CubeSat data typically have a high packet loss rate. For example, the rate of successfully decoding data packets from the downlink signal can be approximately 10%. This low decoding rate can be at least partially the result of the low signal transmission power of CubeSats. As another contributing factor to the low decoding rate, CubeSats included in the same constellation can be located in closely spaced orbits, and the beams by which CubeSats transmit data to ground stations can be wide (e.g., on the order of hundreds or thousands of miles in diameter). Thus, the beams transmitted by CubeSats can interfere with each other. Ground radio sources can also be sources of noise in the signals received at ground stations. In addition, the low elevation angle of CubeSats above the horizon signal and / or the obstruction of the downlink signal due to weather can exacerbate the above challenges regarding signal strength and interference.

[0019] To address the above challenges, a computing system 10 is provided, as shown in the example of Figure 1 . Figure 1 as shown in the example of Figure 1 . Figure 1 Also shown are a satellite 20 and a ground station 30. Figure 1 In the example of Figure 1 , the computing system 10 and the ground station 30 are located on the Earth, while the satellite 20 is in orbit 24. For example, the satellite 20 can be located in a low Earth orbit (LEO). The satellite 20 can be included in a constellation of multiple satellites 20.

[0020] As discussed in further detail below, the computing system can be configured to process satellite downlink signals 22 received from the satellite 20 at the ground station 30. In some examples, the computing system 10 can be located at the ground station 30. Alternatively, the computing system 10 can be located away from the ground station 30 and can be configured to receive the satellite downlink signal 22 from the ground station 30 via a wired or wireless connection. For example, the computing system 10 can include one or more server computing devices located at a data center, where the satellite downlink signal 22 is configured to be processed in a cloud computing environment.

[0021] The computing system 10 can include a processor 12 communicatively coupled to a memory 14. In some examples, other components can also be included in the computing system 10, such as one or more user input devices and / or one or more user output devices. Although the computing system 10 is depicted as a single physical computing device in the example of Figure 1 , the functions of the processor 12 and / or the memory 14 can alternatively be distributed among multiple physical computing devices. Figure 1 in the example of Figure 1 , the functions of the processor 12 and / or the memory 14 can alternatively be distributed among multiple physical computing devices.

[0022] Figure 2 Schematically depicts the computing system 10 when processing satellite - specific packet metadata 40 and satellite downlink signal 22 at the processor 12. As Figure 2 shown, the processor 12 can be configured to receive satellite - specific packet metadata 40, including receiving packet preamble binary data 42 and packet header binary data 44 associated with the satellite 20. The satellite - specific packet metadata 40 can be received during a setup phase prior to processing the satellite downlink signal 22. In some examples, the processor 12 can be configured to receive satellite - specific packet metadata 40 prior to the transmission of the satellite 20.

[0023] Figure 3 Schematically shows an example packet 80 configured to be received from a satellite at the computing system 10. In Figure 3 the example, the packet 80 is shown after being decoded at the processor 12. The packet 80 can start with a packet preamble 82. In some examples, the data included in the packet preamble 82 of the respective packet 80 can be the same for each packet 80 included in a plurality of packets 80 transmitted from the satellite 20 included in a satellite constellation to the ground station 30.

[0024] The packet 80 can also include a packet header 84 located after the packet preamble 82. The packet header 84 can include, for example, a satellite identifier unique to a particular satellite 20 among a plurality of satellites 20 in the constellation. Thus, the packet header 84 can be used to identify which satellite 20 sent the packet 80. In some examples, additional metadata such as the node address of the ground station 30 can be included in the packet header 84.

[0025] The packet 80 can also include a packet payload 86 after the packet header 84. In some examples, the respective packet payloads 86 of the packets 80 received from the satellite 20 at the ground station 30 can each have a fixed size. In other examples, the packet payload 86 can have a variable size. In an example where the packet payload 86 has a variable size, the size of the packet payload 86 can be indicated in the packet header 84.

[0026] Return Figure 2 , the packet preamble binary data 42 and the packet header binary data 44 can be bit strings that respectively encode the packet preamble 82 and the packet header 84 of the packet 80 configured to be received from the satellite 20. In some examples, the processor 12 can be configured to receive separate satellite - specific packet metadata 40 for each satellite 20 in the constellation.

[0027] Processor 12 may also be configured to generate an analog signal 46 that encodes packet preamble binary data 42 and packet header binary data 44 for satellite 20. Processor 12 may be configured to generate analog signal 46, for example, at least in part by replicating the signal encoding protocol by which packet 80 is converted into satellite downlink signal 22 at satellite 20. Thus, analog signal 46 may simulate a noise-free version of the portion of satellite downlink signal 22 that encodes packet preamble 82 and packet header 84.

[0028] As described above, processor 12 may also be configured to receive satellite downlink signal 22. For example, satellite downlink signal 22 may be an in-phase quadrature (IQ) signal. Satellite downlink signal 22 may include one or more packets 80, but the position of packet 80 within satellite downlink signal 22 may be obscured by noise. Thus, processor 12 may be configured to use the techniques provided below to determine the corresponding positions of one or more packets 80 within satellite downlink signal 22. The position of packet 80 may be calculated at signal processing module 60 that may be executed at processor 12.

[0029] Within each of a plurality of sampling intervals 50 of satellite downlink signal 22, processor 12 may be configured to calculate a corresponding correlation 62 between satellite downlink signal 22 and at least a portion of analog signal 46. Sampling intervals 50 may each have an interval size 52, which may be a predetermined amount of time. Thus, the total duration of satellite downlink signal 22 may be divided into a plurality of sampling intervals 50, each having a duration equal to interval size 52. For example, interval size 52 may be greater than or equal to the duration of analog signal 46. Correlation 62 may be, for example, a linear correlation. In other examples, some other correlation formula may be used to calculate correlation 62.

[0030] Figure 4 An example graph 90 of the amplitude of satellite downlink signal 22 over time is shown. Figure 4 Also shown are the plurality of sampling intervals 50 into which satellite downlink signal 22 is divided. In the Figure 4 example, sampling intervals 50 each have an interval size 52. During processing of satellite downlink signal 22, processor 12 may be configured to calculate the value of correlation 62 for each sampling interval 50 such that the full extent of satellite downlink signal 22 is examined for correlation with analog signal 46.

[0031] Return Figure 2, the processor 12 may also be configured to determine that the identified sampling interval 50A among the plurality of sampling intervals 50 has an association 62 with the analog signal 46 that is higher than a predetermined association threshold 64. An association 62 that is higher than the predetermined association threshold 64 between the identified sampling interval 50A and the analog signal 46 may indicate that the identified sampling interval 50A includes a packet preamble 82 and a packet header 84. The steps for selecting the identified sampling interval 50A are discussed in further detail below.

[0032] The processor 12 may also be configured to decode the binary satellite signal data 70 included in the identified sampling interval 50A, where the identified sampling interval 50A has an association 62 with the analog signal 46 that is higher than a predetermined association threshold 64. The binary satellite signal data 70 may be the data included in the packet 80. Thus, after the position of the packet 80 within the satellite downlink signal 22 has been determined based on the association 62, the processor 12 may also be configured to convert the identified sample 22A of the satellite downlink signal 22 that encodes the packet 80 into binary data. In some examples, the identified sample 22A of the satellite downlink signal 22 that is to be decoded may be a sample of the satellite downlink signal 22 that is within the identified sampling interval 50A. In other examples, the identified sample 22A of the satellite downlink signal 22 may extend beyond the end of the identified sampling interval 50A. The processor 12 may be configured, for example, to select the size of the identified sample 22A at least in part based on the packet size data included in the packet header binary data 44.

[0033] In some examples, as Figure 5 shown, the processor 12 may also be configured to execute a verification module 100 on the identified sample 22A of the satellite downlink signal 22 after identifying the identified sampling interval 50A. By executing the verification module 100, the processor 12 may further be configured to determine whether the identified sampling interval 50A includes packet data or whether the identification of the identified sampling interval 50A is a false positive. When the processor 12 executes the verification module 100, the processor 12 may further be configured to convert the identified sample 22A from the time domain to the frequency domain to obtain a frequency domain signal sample 104. For example, as Figure 5 shown, the processor 12 may be configured to generate the frequency domain signal sample 104 at least in part by performing a fast Fourier transform on the identified sample 22A.

[0034] The processor 12 may further be configured to compute a frequency deviation 108 between a first frequency-domain peak 106A and a second frequency-domain peak 106B within the frequency-domain signal sample 104. The frequency deviation 108 is the distance in the frequency space between the first frequency-domain peak 106A and the second frequency-domain peak 106B. Thus, when the frequency-domain signal sample 104 encodes the packet 80, the frequency-domain signal sample 104 may have a frequency deviation 108 approximately equal to a predefined frequency deviation 110 between the first frequency-domain peak 106A and the second frequency-domain peak 106B. In Figure 5 an example, the packet 80 is a Gaussian frequency shift keying (GFSK) packet. The predefined frequency deviation may be, for example, 10 kHz. When the processor 12 determines that the identified sample 22A has a frequency deviation 108 that matches the predefined frequency deviation 110, the processor 12 may be configured to continue to compute the binary satellite signal data 70 based on the identified sample 22A. Otherwise, the processor 12 may be configured to discard the identified sample 22A as a false positive.

[0035] In some examples, the processor 12 may also be configured to update the interval size 52 and / or the predefined association threshold 64 at least in part based on a determination made at the verification module 100. In such examples, when the processor 12 determines that the identification of the identified sample 22A is a false positive, the processor 12 may be configured to increase the interval size 52. When the processor 12 determines that the frequency deviation 108 approximately matches the predefined frequency deviation 110, the processor 12 may be configured to decrease the interval size 52. Setting the interval size 52 may allow the processor 12 to manage the trade-off between false negatives and false positives, where decreasing the interval size 52 may decrease the false negative rate but increase the false positive rate. Conversely, increasing the interval size 52 may increase the false negative rate and decrease the false positive rate.

[0036] The processor 12 may also be configured to manage the trade-off between false negatives and false positives by adjusting the predefined association threshold 64. Decreasing the predefined association threshold 64 may decrease the false negative rate and increase the false positive rate. Increasing the predefined association threshold 64 may increase the false negative rate and decrease the false positive rate. Thus, when the processor 12 determines that the frequency deviation 108 approximately matches the predefined frequency deviation 110, the processor 12 may be configured to decrease the predefined association threshold 64. When the processor 12 determines that the identification of the identified sample 22A is a false positive, the processor 12 may be configured to alternatively increase the predefined association threshold 64.

[0037] In some examples, the processor 12 may also be configured to modify the interval size 52 of each of the plurality of sampling intervals 50 at least in part based on a modification to a predetermined correlation threshold 64. When the predetermined correlation threshold 64 is decreased, the processor 12 may be configured to increase the interval size 52. Thus, the processor 12 may be configured to adjust the interval size 52 to be longer in order to cope with an increase in the noise level when the predetermined correlation threshold 64 is decreased. When the predetermined correlation threshold 64 is increased, the processor 12 may be configured to decrease the interval size 52. By decreasing the interval size 52, the processor 12 may cope with a decrease in the noise level when the predetermined correlation threshold 64 is increased.

[0038] Figure 6 Schematically illustrated is a start position identification module 120 which, in some examples, may be executed at the processor 12 to determine the position at which a packet 80 begins within an identified sample 22A. In some examples, the start position identification module 120 may be executed after the verification module 100. At the start position identification module 120, the processor 12 may be configured to compute a plurality of candidate decoded preambles 124 starting at a plurality of different start positions 122 within the identified sample 22A of the satellite downlink signal 22. Each candidate decoded preamble 124 may be a bit string.

[0039] The processor 12 may also be configured to check whether each of the candidate decoded preambles 124 matches the packet preamble binary data 42. The processor 12 may be configured to check the candidate decoded preambles 124 until the processor 12 identifies a start position 122A for which the corresponding candidate decoded preamble 124 matches the packet preamble binary data 42. The processor 12 may also be configured to decode the identified sample 22A starting at the identified start position 122A to compute binary satellite signal data 70.

[0040] Figure 7A illustrates an example in which a plurality of additional identified samples 92 included in respective ones of a plurality of additional sampling intervals 94 of the satellite downlink signal 22 have been selected Figure 4 of a graph 90. As Figure 7AAs depicted in the example of, the processor 12 can also be configured to select, in the satellite downlink signal 22, one or more additional sampling intervals 94 that are spaced apart from the identified sampling interval 50A by one or more respective integer multiples of a predefined inter-packet time gap 96. The predefined inter-packet time gap 96 can be defined, for example, in a communication protocol via which the satellite 20 is configured to communicate with the ground station 30. As an example, the predefined inter-packet time gap 96 can be 30 seconds. Thus, the one or more additional sampling intervals 94 can be sampling intervals 50 that are expected to include additional packets 80.

[0041] Figure 7B FIG. shows the computing system 10 when processing additional identified samples 92 at the signal processing module 60. As Figure 7B shown in the example of, each of the additional identified samples 92 can be spaced apart from the identified sample 22A by a respective integer n multiplied by the predefined inter-packet time gap 96. The processor 12 can further be configured to decode additional binary satellite signal data 98 based at least in part on one or more additional identified samples 92 of the satellite downlink signal 22 located within one or more additional sampling intervals 94. The processor 12 can further be configured to output the additional binary satellite signal data 98 to an additional computing process 72.

[0042] In some examples, as Figure 7C shown, selecting one or more additional sampling intervals 94 can include performing a frequency deviation check. At the verification module 100, the processor 12 can further be configured to compute a respective plurality of additional frequency domain signal samples 134. The additional frequency domain signal samples 134 can be computed based at least in part on a plurality of candidate additional identified samples 130 of the satellite downlink signal 22 located within a plurality of candidate additional sampling intervals 132. The candidate additional identified samples 130 can be samples of the satellite downlink signal 22 that are spaced apart from the identified sampling interval 50A by a respective integer multiple of the predefined inter-packet time gap 96.

[0043] After generating the additional frequency domain signal samples 134, the processor 12 can further be configured to compute a respective additional frequency deviation 136 of the plurality of additional frequency domain signal samples 134. The processor 12 can also be configured to select, as the one or more additional sampling intervals, one or more of the plurality of candidate additional sampling intervals 132 having a respective additional frequency deviation 136 that is substantially equal to the predefined frequency deviation 110. Thus, the processor 12 can be configured to check the additional frequency deviation 136 of the candidate additional identified samples 130 at the verification module 100 during the selection of one or more additional identified samples 92 of the satellite downlink signal 22.

[0044] Return Figure 7B , in some examples, the processor 12 may also be configured to determine that one or more additional identified samples 92 among the additional identified samples 92 have a corresponding association 62 with the analog signal 46 that is lower than a predetermined association threshold 64. Thus, the additional identified samples 92 may be false negatives. In response to determining that the association 62 of the additional identified samples 92 is lower than the predetermined association threshold 64, the processor 12 may further be configured to set the predetermined association threshold 64 to the association 62 associated with the additional identified samples 92. Thereby, the processor 12 may be configured to lower the predetermined association threshold 64 when a false negative is detected.

[0045] Now turn to Figure 8 , in the example, the selection of an identified sampling interval 50A is schematically depicted, in which the satellite downlink signal 22 does not have an association 62 with the analog signal 46 that is greater than the predetermined association threshold 64 in any of the sampling intervals 50 into which the satellite downlink signal 22 is divided. In Figure 8 's example, the processor 12 may be configured to select the identified sampling interval 50A at least in part by generating a sampling interval association ranking 140, in which a plurality of sampling intervals 50 are ranked according to the association 62 of the satellite downlink signal 22 with the analog signal 46 within those sampling intervals 50. In Figure 8 's example, the sampling intervals 50 are sorted in descending order, while in other examples, the sampling intervals 50 may be sorted in ascending order. The processor 12 may also be configured to determine that the highest associated sample 142 located within the highest associated sampling interval 144 among the plurality of sampling intervals 50 does not have a corresponding association 62 that is higher than the predetermined association threshold 64. Thus, in Figure 8 's example, none of the samples of the satellite downlink signal 22 exceed the predetermined association threshold 64.

[0046] In response to determining that the highest-correlation sample 142 does not have a correlation 62 higher than a predetermined correlation threshold 64, the processor 12 may also be configured to perform a frequency deviation check at the verification module 100 for each of a predetermined number 145 of next-highest-correlation samples 146 located within the corresponding next-highest-correlation sampling interval 148. As an example, the processor 12 may further be configured to perform a frequency deviation check on the five next-highest-correlation samples after the highest-correlation sample 142. For each of the next-highest-correlation samples 146, the processor 12 may further be configured to calculate the corresponding frequency-domain signal sample 104 at least in part based on the next-highest-correlation sample 142. The processor 12 may further be configured to calculate the corresponding frequency deviation 108 of each of the frequency-domain signal samples 104. The processor 12 may also be configured to select the next-highest-correlation sample 142 among the predetermined number 145 of next-highest-correlation samples 142 having a frequency deviation 108 that is substantially equal to a predefined frequency deviation 110 as the identified sample 22A. Thus, when the predetermined correlation threshold 64 is high, the processor 12 may be configured to check the high-correlation intervals of the satellite downlink signal 22 for the packet 80 even if no sampling interval 50 exceeds the predetermined correlation threshold 64.

[0047] Figure 9 An example satellite signal decoding algorithm 200 that may be executed at the processor 12 of the computing system 10 to locate and decode a packet 80 in a satellite downlink signal 22 is shown. In Figure 9 the example satellite signal decoding algorithm 200, the processor 12 may be configured to generate an analog signal 46 according to satellite-specific packet metadata 40. The processor 12 may also be configured to iteratively calculate a corresponding correlation 62 in the time domain between the analog signal 46 and the satellite downlink signal 22 for a plurality of sampling intervals 50. In Figure 9 the example satellite signal decoding algorithm 200, the correlations 62 are stored in a heap.

[0048] When at least one correlation 62 exceeds a predetermined correlation threshold 64, the processor 12 may further be configured to map the corresponding identified sampling interval 50A to an identified sample 22A estimated as the location of the packet 80 in the satellite downlink signal 22. For example, the identified sample 22A may be the highest-correlation sample 142 included in the satellite downlink signal 22. The processor 12 may further be configured to estimate the frequency deviation 108 within the identified sample 22A as a check as to whether the identified sample 22A includes the packet 80. When the frequency deviation 108 is substantially equal to a predefined frequency deviation 110, the frequency deviation 108 may indicate that the identified sample 22A includes the packet 80.

[0049] When no association 62 exceeds a predetermined association threshold 64, the processor 12 may alternatively be configured to estimate a corresponding frequency deviation 108 within a predetermined number 145 of the next-highest associated samples 146. In Figure 9 an example, five of the next-highest associated samples 146 are examined. If a next-highest associated sample 146 has a frequency deviation 108 that is substantially equal to a predefined frequency deviation 110, the processor 12 may be configured to select that next-highest associated sample 146 as the identified sample 22A. The processor 12 may further be configured to update the predetermined association threshold 64 to the association 62 of that next-highest associated sample 146 that is selected as the identified sample 22A. If none of the next-highest associated samples 146 have a frequency deviation 108 that matches the predefined frequency deviation 110, the processor 12 may alternatively be configured to stop examining the satellite downlink signal 22 for the packet 80.

[0050] When the processor 12 examines the associations 62 of multiple sampling intervals 50 and further examines the frequency deviations 108 within at least one subset of the multiple sampling intervals 50, the processor 12 may further be configured to update the predetermined association threshold 64. Additionally, the processor 12 may further be configured to recalculate the interval size 52. The processor 12 may also be configured to carry the updated value of the predetermined association threshold 64 to a future instance of performing the satellite signal decoding algorithm 200.

[0051] The processor 12 may further be configured to decode the identified sample 22A of the satellite downlink signal 22 at multiple starting positions 122 within the identified sample 22A to obtain multiple candidate decoded preambles 124. The processor 12 may also be configured to identify a candidate decoded preamble 124 that matches the packet preamble binary data 42 included in the satellite-specific packet metadata 40, and thereby may select the identified starting position 122A. After selecting the identified starting position 122A, the processor 12 may further be configured to decode the entire packet 80 starting from the identified starting position 122A. Thus, the processor 12 may be configured to obtain the binary satellite signal data 70 as the output of the satellite signal decoding algorithm 200.

[0052] Figure 10AFIG. 300 is a flow diagram of an example method that may be performed at a computing system configured to communicate with a ground station. At step 302, method 300 may include receiving packet preamble binary data and packet header binary data associated with a satellite. The satellite may be a CubeSat included in a satellite constellation and may thus be formed of one or more standard units having a useful volume less than or equal to 1 liter and a mass less than or equal to 2 kg. The satellite may have a form factor of 1-12 standard units, with 3 units being a typical size. The packet preamble binary data and packet header binary data may be calculated according to the specifications of a protocol via which the satellite is configured to communicate with the ground station.

[0053] At step 304, method 300 may further include generating an analog signal that encodes the packet preamble binary data and the packet header binary data. The analog signal may be a noise-free version of the signal, where the packet preamble binary data and the packet header binary data have been encoded according to the communication protocol used at the satellite.

[0054] At step 306, method 300 may further include receiving a satellite downlink signal from the satellite.

[0055] At step 308, method 300 may further include, within each of a plurality of sampling intervals of the satellite downlink signal, calculating a respective correlation between the satellite downlink signal and at least a portion of the analog signal. Each correlation may be, for example, a linear correlation. The plurality of sampling intervals may cover the entire time range of the satellite downlink signal received at processor 12. In some examples, the sampling intervals for which the correlations are calculated may each have the same interval size.

[0056] At step 310, method 300 may further include selecting an identified sampling interval among the plurality of sampling intervals based at least in part on the plurality of correlations. For example, the identified sampling interval may be the sampling interval in which the satellite downlink signal and the analog signal have the highest correlation.

[0057] At step 312, method 300 may further include decoding binary satellite signal data based at least in part on the sampling of the identified satellite downlink signal. The binary satellite signal data may be decoded according to the communication protocol used by the satellite and the ground station. At step 314, method 300 may further include outputting the binary satellite signal data.

[0058] Figure 10BIllustrates additional steps of method 300 that can be performed when the identified sampling interval is selected at step 310. At step 316, method 300 may further include determining that the identified sampling of the satellite downlink signal located within the identified sampling interval has an association higher than a predetermined association threshold.

[0059] At step 318, method 300 may further include calculating a frequency-domain signal sample at least in part based on the sampling of the identified satellite downlink signal. The frequency-domain signal sample can be calculated by performing a fast Fourier transform on the identified sampling. At step 320, method 300 may further include calculating a frequency deviation between a first frequency-domain peak and a second frequency-domain peak within the frequency-domain signal sample. At step 322, method 300 may further include determining that the frequency deviation is substantially equal to a predefined frequency deviation. A frequency deviation that matches the predefined frequency deviation may indicate that the identified sampling encodes a packet.

[0060] Figure 10C Illustrates additional steps of method 300 that can be performed in some examples to set the predetermined association threshold and interval size. In some examples, method 300 may further include: at step 324, determining the interval size of each of the plurality of sampling intervals at least in part based on the packet size data indicated in the packet header binary data. Step 324 can be performed after receiving the packet preamble binary data and the packet header data at step 302 and before receiving the satellite downlink signal at step 306.

[0061] At step 326, method 300 may further include calculating two or more corresponding frequency deviations of the satellite downlink signal within two or more of the plurality of sampling intervals. As discussed below, two or more frequency deviations can be calculated in examples where a frequency deviation check is performed for one or more additional sampling intervals spaced a predefined distance from the identified sampling interval.

[0062] At step 328, method 300 may further include calculating a false positive rate over two or more sampling intervals. At step 330, method 300 may further include modifying the predetermined association threshold at least in part based on the false positive rate. The predetermined association threshold can be increased when the false positive rate is high (e.g., when the false positive rate exceeds a false positive rate threshold), and the predetermined association threshold can be decreased when the false positive rate is low (e.g., when the false positive rate is below the false positive rate threshold).

[0063] At step 332, method 300 may further include modifying the interval size of each of the plurality of sampling intervals at least in part based on a modification to a predetermined correlation threshold. The interval size may increase when the predetermined correlation threshold decreases and may decrease when the predetermined correlation threshold increases. Increasing or decreasing the interval size when the predetermined correlation threshold changes may allow the computing system to adjust the balance between the false positive rate and the false negative rate. When modifying the interval size, the modified interval size may be used in one or more subsequent executions of the satellite signal decoding algorithm.

[0064] Figure 10D Illustrates additional steps of method 300 that may be performed after decoding the identified sampled binary satellite signal data at step 314 in some instances. At step 334, method 300 may further include: selecting one or more additional sampling intervals in the satellite downlink signal that are spaced apart from the identified sampling interval by one or more respective integer multiples of a predefined inter-packet time gap. The predefined inter-packet time gap may be specified, for example, in the communication protocol used at the satellite. Accordingly, the positions of one or more additional packets in the satellite downlink signal may be identified.

[0065] Step 334 may include: at step 336, calculating a respective plurality of additional frequency domain signal samples at least in part based on a plurality of candidate additional identified samples of the satellite downlink data located within the plurality of candidate additional sampling intervals. The plurality of candidate additional sampling intervals may be spaced apart from the identified sampling interval by respective integer multiples of the predefined inter-packet time gap. Thus, the candidate additional sampling intervals may be the predicted positions of the additional packets. At step 338, step 334 may further include calculating a respective additional frequency deviation of the plurality of additional frequency domain signal samples. At step 340, step 334 may further include selecting one or more of the plurality of candidate additional sampling intervals having a respective additional frequency deviation that is substantially equal to a predefined frequency deviation as the one or more additional sampling intervals. Accordingly, the frequency deviation of the candidate additional identified samples may be examined to determine whether the candidate additional identified samples encode a packet.

[0066] At step 342, method 300 may further include: decoding additional binary satellite signal data at least in part based on one or more additional identified samples of the satellite downlink signal located within the one or more additional sampling intervals. At step 344, method 300 may further include outputting the additional binary satellite signal data.

[0067] Figure 10E Illustrates where it may be performed Figure 10DAdditional steps of method 300 performed in some examples of the steps. At step 346, method 300 may also include determining that the additional identified samples among one or more additional identified samples have a corresponding association with the analog signal that is below a predetermined association threshold. Thus, the additional identified samples may be false positives. At step 348, method 300 may also include, in response to determining that the association of the additional identified samples is below the predetermined association threshold, setting the predetermined association threshold to the association associated with the additional identified samples. Thereby, when it is determined that the additional identified samples have a frequency deviation that matches a predefined frequency deviation and the association for the additional identified samples does not exceed the predetermined association threshold, the predetermined association threshold can be reduced.

[0068] Figure 10F Some examples of additional steps of method 300 that may be performed when the identified sampling interval is selected at step 310 are shown. At step 350, method 300 may also include determining that the highest associated sample within the highest associated sampling interval among a plurality of sampling intervals does not have a corresponding association that is higher than a predetermined association threshold. Thus, in the example where step 350 is performed, no sample exceeds the predetermined association threshold.

[0069] Steps 352 and 354 may be performed for each of a predetermined number of second-highest associated samples within the corresponding second-highest associated sampling intervals. As an example, steps 352 and 354 may be performed for samples that have five second-highest associations with the analog signal. At step 352, method 300 may also include calculating a frequency domain signal sample at least in part based on the second-highest associated samples. At step 354, method 300 may also include calculating a frequency deviation of the frequency domain signal sample.

[0070] At step 356, method 300 may also include selecting, as the identified sample, a second-highest associated sample among the predetermined number of second-highest associated samples that has a frequency deviation that is substantially equal to a predefined frequency deviation. In some instances, a plurality of second-highest associated samples may have a frequency deviation that is substantially equal to the predefined frequency deviation. In such examples, the second-highest associated sample that has the highest association with the analog signal may be selected as the identified sample.

[0071] Figure 10GShows additional steps of method 300 that may be performed in some examples. At step 358, method 300 may also include determining the identified start position of the binary satellite signal data. The identified start position may be the position where the packet starts within the identified sample. At step 360, step 358 may include: for each candidate start position among a plurality of candidate start positions in the identified sample of the satellite downlink signal, calculating a corresponding plurality of candidate preambles before decoding. At step 362, step 358 may also include selecting, as the identified start position, the candidate start position among the plurality of candidate start positions that has a corresponding candidate preamble before decoding that matches the binary data of the packet preamble. Thus, the specific position where the packet starts can be identified by decoding a portion of the identified sample and detecting the binary sequence of the packet preamble.

[0072] Using the systems and methods discussed above, satellite downlink data received from CubeSats or from other low-transmission-power satellites can be decoded in a manner that allows packets to be more reliably distinguished from noise. Thus, the signal-to-noise ratio of the signals received from the satellite can be increased, and a larger amount of available data can be obtained.

[0073] In some embodiments, the methods and processes described herein may be bound to the computing system of one or more computing devices. In particular, such methods and processes may be implemented as a computer application or service, an application programming interface (API), a library, and / or other computer program products.

[0074] Figure 11 A non-limiting embodiment of a computing system 400 that may execute one or more of the above methods and processes is schematically shown. Computing system 400 is shown in a simplified form. Computing system 400 may embody the computing system 10 described above and Figure 1 as shown. The components of computing system 400 may be instantiated in one or more personal computers, server computers, tablet computers, home entertainment computers, network computing devices, video game devices, mobile computing devices, mobile communication devices (e.g., smart phones), and / or other computing devices, as well as wearable computing devices (such as smart watches and head-mounted augmented reality devices).

[0075] Computing system 400 includes a logic processor 402, volatile memory 404, and a non-volatile storage device 406. Computing system 400 may optionally include a display subsystem 408, an input subsystem 410, a communication subsystem 412, and / or Figure 1 other components not shown in

[0076] The logical processor 402 includes one or more physical devices configured to execute instructions. For example, the logical processor may be configured to execute instructions that are part of one or more applications, programs, routines, libraries, objects, components, data structures, or other logical constructs. Such instructions may be implemented to perform tasks, implement data types, transform the state of one or more components, achieve a technical effect, or otherwise achieve a desired result.

[0077] The logical processor may include one or more physical processors (hardware) configured to execute software instructions. Additionally or alternatively, the logical processor may include one or more hardware logic circuits or firmware devices configured to execute hardware-implemented logic or firmware instructions. The processors of the logical processor 402 may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel, and / or distributed processing. Optionally, the various components of the logical processor may be distributed across two or more separate devices, which may be located remotely and / or configured to coordinate processing. Aspects of the logical processor may be virtualized and executed by remotely accessible networked computing devices configured in a cloud computing configuration. In such a case, it should be understood that these virtualized aspects run on different physical logical processors of various different machines.

[0078] The non-volatile storage device 406 includes one or more physical devices configured to hold instructions executable by the logical processor to implement the methods and processes described herein. When implementing such methods and processes, the state of the non-volatile storage device 406 may be transformed, for example, to hold different data.

[0079] The non-volatile storage device 406 may include removable and / or built-in physical devices. The non-volatile storage device 406 may include optical memory (e.g., CD, DVD, HD-DVD, Blu-ray Disc, etc.), semiconductor memory (e.g., ROM, EPROM, EEPROM, flash memory, etc.), and / or magnetic memory (e.g., hard disk drive, floppy disk drive, tape drive, MRAM, etc.) or other mass storage device technologies. The non-volatile storage device 406 may include non-volatile, dynamic, static, read / write, read-only, sequential access, location-addressable, file-addressable, and / or content-addressable devices. It should be understood that the non-volatile storage device 406 is configured to hold instructions even when the non-volatile storage device 406 is powered off.

[0080] The volatile memory 404 may include physical devices that include random access memory. The volatile memory 404 is typically used by the logical processor 402 to temporarily store information during the processing of software instructions. It should be understood that when the volatile memory 404 is powered off, the volatile memory 404 generally does not continue to store instructions.

[0081] Aspects of the logic processor 402, volatile memory 404, and non-volatile storage device 406 may be integrated together into one or more hardware logic components. For example, such hardware logic components may include field programmable gate arrays (FPGAs), programmable and application specific integrated circuits (PASIC / ASICs), programmable and application specific standard products (PSS / ASSPs), system on chips (SOCs), and complex programmable logic devices (CPLDs).

[0082] The terms "module", "program", and "engine" may be used to describe aspects of the computing system 400 that are typically implemented in software by a processor to use portions of the volatile memory to perform specific functions that involve transformational processing that specifically configures the processor to perform the functions. Thus, portions of the volatile memory 404 may be used to instantiate a module, program, or engine via the logic processor 402 that executes instructions maintained by the non-volatile storage device 406. It should be understood that different modules, programs, and / or engines may be instantiated from the same application, service, code block, object, library, routine, API, function, etc. Similarly, the same module, program, and / or engine may be instantiated by different applications, services, code blocks, objects, routines, APIs, functions, etc. The terms "module", "program", and "engine" may encompass individuals or groups of executable files, data files, libraries, drivers, scripts, database records, etc.

[0083] When included, the display subsystem 408 may be used to present a visual representation of data maintained by the non-volatile storage device 406. The visual representation may take the form of a graphical user interface (GUI). Since the methods and processes described herein change the data maintained by the non-volatile storage device and thus transform the state of the non-volatile storage device, the state of the display subsystem 408 may likewise be transformed to visually represent the change in the underlying data. The display subsystem 408 may include one or more display devices utilizing almost any type of technology. Such display devices may be combined with the logic processor 402, volatile memory 404, and / or non-volatile storage device 406 in a shared housing, or such display devices may be peripheral display devices.

[0084] When included, the input subsystem 410 may include or interface with one or more user input devices such as a keyboard, mouse, touch screen, or game controller. In some embodiments, the input subsystem may include or dock with selected natural user input (NUI) components. Such components may be integrated or peripheral, and the translation and / or processing of input actions may occur on-vehicle or off-vehicle. Example NUI components may include a microphone for voice and / or speech recognition; infrared, color, stereo, and / or depth cameras for machine vision and / or gesture recognition; head trackers, eye trackers, accelerometers, and / or gyroscopes for motion detection and / or intent recognition; and electric field sensing components for evaluating brain activity; and / or any other suitable sensors.

[0085] When included, the communication subsystem 412 may be configured to communicatively couple the various computing devices described herein to each other and to other devices. The communication subsystem 412 may include wired and / or wireless communication devices compatible with one or more different communication protocols. By way of non-limiting example, the communication subsystem may be configured to communicate via a wireless telephone network or a wired or wireless local or wide area network (such as HDMI over a Wi-Fi connection). In some embodiments, the communication subsystem may allow the computing system 400 to send messages to and / or receive messages from other devices via a network such as the Internet.

[0086] The following paragraphs discuss several aspects of the present disclosure. According to one aspect of the present disclosure, a computing system is provided that includes a processor configured to receive packet preamble binary data and packet header binary data associated with a satellite. The processor may also be configured to generate an analog signal encoding the packet preamble binary data and the packet header binary data. The processor may also be configured to receive a satellite downlink signal. During each sampling interval of a plurality of sampling intervals of the satellite downlink signal, the processor may also be configured to calculate a respective correlation between the satellite downlink signal and at least a portion of the analog signal. At least partially based on the plurality of correlations, the processor may also be configured to select an identified sampling interval of the plurality of sampling intervals. The processor may also be configured to decode binary satellite signal data at least partially based on an identified sample of the satellite downlink signal located within the identified sampling interval. The processor may also be configured to output the binary satellite signal data.

[0087] According to this aspect, the processor may be configured to select the identified sampling interval at least partially by determining that the identified sample of the satellite downlink signal located within the identified sampling interval has a correlation higher than a predetermined correlation threshold.

[0088] According to this aspect, the processor may be configured to: select the identified sampling interval by calculating frequency-domain signal samples at least in part based on the identified samples of the satellite downlink signal. Selecting the identified sampling interval may also include calculating a frequency deviation between a first frequency-domain peak and a second frequency-domain peak within the frequency-domain signal samples. Selecting the identified sampling interval may also include determining that the frequency deviation is substantially equal to a predefined frequency deviation.

[0089] According to this aspect, the processor may also be configured to calculate two or more corresponding frequency deviations of the satellite downlink signal within two or more of the plurality of sampling intervals. At least in part based on the two or more frequency deviations, the processor may also be configured to calculate a false positive rate over the two or more sampling intervals. The processor may also be configured to modify a predetermined association threshold at least in part based on the false positive rate.

[0090] According to this aspect, the processor may also be configured to modify the interval size of each of the plurality of sampling intervals at least in part based on the modification of the predetermined association threshold.

[0091] According to this aspect, the processor may also be configured to: select one or more additional sampling intervals in the satellite downlink signal that are spaced apart from the identified sampling interval by one or more respective integer multiples of a predefined inter-packet time gap. The processor may also be configured to: decode additional binary satellite signal data at least in part based on one or more additional identified samples of the satellite downlink signal within the one or more additional sampling intervals. The processor may also be configured to output the additional binary satellite signal data.

[0092] According to this aspect, the processor may be configured to select one or more additional sampling intervals by calculating respective multiple additional frequency-domain signal samples at least in part based on multiple candidate additional identified samples of the satellite downlink data within a plurality of candidate additional sampling intervals. The plurality of candidate additional sampling intervals may be spaced apart from the identified sampling interval by respective integer multiples of the predefined inter-packet time gap. Selecting the one or more additional sampling intervals may also include calculating respective additional frequency deviations of the plurality of additional frequency-domain signal samples. Selecting the one or more additional sampling intervals may also include selecting, as the one or more additional sampling intervals, one or more of the plurality of candidate additional sampling intervals having respective additional frequency deviations that are substantially equal to the predefined frequency deviation.

[0093] According to this aspect, the processor may also be configured to determine that an additional identified sample among one or more additional identified samples has a corresponding association with the analog signal that is lower than a predetermined association threshold. In response to determining that the association of the additional identified sample is lower than the predetermined association threshold, the processor may also be configured to set the predetermined association threshold to the association associated with the additional identified sample.

[0094] According to this aspect, the processor may be configured to select an identified sampling interval at least in part by determining that a highest associated sample within a highest associated sampling interval among a plurality of sampling intervals does not have a corresponding association that is higher than a predetermined association threshold. For each of a predetermined number of second-highest associated samples located within a corresponding second-highest associated sampling interval, selecting the identified sampling interval may also include calculating a frequency-domain signal sample at least in part based on the second-highest associated sample. For each of the predetermined number of second-highest associated samples, selecting the identified sampling interval may also include calculating a frequency deviation of the frequency-domain signal sample. Selecting the identified sampling interval may also include selecting, as the identified sample, a second-highest associated sample among the predetermined number of second-highest associated samples that has a frequency deviation that is substantially equal to a predefined frequency deviation.

[0095] According to this aspect, the processor may also be configured to determine an identified start position of binary satellite signal data at least in part by calculating a corresponding plurality of candidate decoded preambles for each of a plurality of candidate start positions among the identified samples of the satellite downlink signal. Determining the identified start position may also include selecting, as the identified start position, a candidate start position among the plurality of candidate start positions that has a corresponding candidate decoded preamble that matches the packet preamble binary data.

[0096] According to this aspect, the processor may be configured to determine an interval size of each sampling interval among a plurality of sampling intervals at least in part based on packet size data indicated in packet header binary data.

[0097] According to another aspect of the present disclosure, a method for use with a computing system is provided. The method may include receiving packet preamble binary data and packet header binary data associated with a satellite. The method may further include generating an analog signal encoding the packet preamble binary data and the packet header binary data. The method may further include receiving a satellite downlink signal. During each of a plurality of sampling intervals of the satellite downlink signal, the method may further include calculating a respective correlation between the satellite downlink signal and at least a portion of the analog signal. At least partially based on the plurality of correlations, the method may further include selecting an identified sampling interval among the plurality of sampling intervals. The method may further include decoding binary satellite signal data at least partially based on the sampling of the identified satellite downlink signal. The method may further include outputting the binary satellite signal data.

[0098] According to this aspect, selecting the identified sampling interval may include: determining that an identified sampling of the satellite downlink signal located within the identified sampling interval has a correlation higher than a predetermined correlation threshold.

[0099] According to this aspect, selecting the identified sampling interval may further include: calculating frequency domain signal samples at least partially based on the sampling of the identified satellite downlink signal. Selecting the identified sampling interval may further include calculating a frequency deviation between a first frequency domain peak and a second frequency domain peak within the frequency domain signal samples. Selecting the identified sampling interval may further include determining that the frequency deviation is substantially equal to a predefined frequency deviation.

[0100] According to this aspect, the method may further include: selecting one or more additional sampling intervals in the satellite downlink signal that are separated from the identified sampling interval by one or more respective integer multiples of a predefined inter-packet time gap. The method may further include: decoding additional binary satellite signal data at least partially based on one or more additional identified samplings of the satellite downlink signal located within the one or more additional sampling intervals. The method may further include outputting the additional binary satellite signal data.

[0101] In accordance with this aspect, selecting one or more additional sampling intervals may further include: calculating respective multiple additional frequency domain signal samples based at least in part on multiple candidate additional samplings of satellite downlink data located within the multiple candidate additional sampling intervals. The multiple candidate additional sampling intervals may be spaced apart from the identified sampling interval by an integer multiple of a predefined inter-packet time gap. Selecting the one or more additional sampling intervals may further include calculating respective additional frequency offsets of the multiple additional frequency domain signal samples. Selecting one or more additional sampling intervals may further include selecting one or more candidate additional sampling intervals among the multiple candidate additional sampling intervals having respective additional frequency offsets that are substantially equal to a predefined frequency offset as the one or more additional sampling intervals.

[0102] In accordance with this aspect, the method may further include determining that an additional identified sampling among the one or more additional identified samplings has a respective association with the analog signal that is below the predetermined association threshold. In response to determining that the association of the additional identified sampling is below the predetermined association threshold, the method may further include setting the predetermined association threshold to the association associated with the additional identified sampling.

[0103] In accordance with this aspect, selecting the identified sampling interval may include determining that a highest associated sampling within a highest associated sampling interval among the multiple sampling intervals does not have a respective association that is higher than a predetermined correlation threshold. Selecting the identified sampling interval may further include: for each of a predetermined number of second-highest associated samplings located within a respective second-highest associated sampling interval, calculating a frequency domain signal sample based at least in part on the second-highest associated sampling. Selecting the identified sampling interval may further include calculating a frequency offset of the frequency domain signal sample for each of the predetermined number of second-highest associated samplings. Selecting the identified sampling interval may further include selecting a second-highest associated sampling among the predetermined number of second-highest associated samplings having a frequency offset that is substantially equal to a predefined frequency offset as the identified sampling.

[0104] In accordance with this aspect, the method may further include: determining an identified start position of binary satellite signal data by calculating respective multiple candidate preambles before decoding for each of multiple candidate start positions among the identified samplings of the satellite downlink signal at least in part. Determining the identified start position may further include selecting a candidate start position among the multiple candidate start positions having a respective candidate preamble before decoding that matches the preamble binary data of the packet as the identified start position.

[0105] According to another aspect of the present disclosure, a computing system is provided that includes a processor configured to receive satellite-specific packet metadata associated with a satellite. The processor may also be configured to generate an analog signal encoding the satellite-specific packet metadata. The processor may also be configured to receive a satellite downlink signal. During each sampling interval of a plurality of sampling intervals of the satellite downlink signal, the processor may also be configured to calculate a corresponding correlation between the satellite downlink signal and at least a portion of the analog signal. During each sampling interval of a plurality of sampling intervals of the satellite downlink signal, the processor may also be configured to calculate a corresponding correlation between the satellite downlink signal and at least a portion of the analog signal. The processor may also be configured to: determine an identified starting position within an identified sampling interval by, at least in part, calculating corresponding candidate decoded packet metadata for each of a plurality of candidate starting positions within the identified sampling of the satellite downlink signal. Determining the identified starting position may also include selecting, as the identified starting position, a candidate starting position among the plurality of candidate starting positions having corresponding candidate decoded packet metadata that matches the satellite-specific packet metadata. Starting from the identified starting position, the processor may also be configured to decode binary satellite signal data based at least in part on the identified sampling of the satellite downlink signal. The processor may also be configured to output the binary satellite signal data.

[0106] As used herein, "and / or" is defined as inclusive or, ∨, as specified by the following truth table:

[0107] A B A ∨ B True True True True False True False True True False False False

[0108] It should be understood that the configurations and / or methods described herein are exemplary in nature and these specific embodiments or examples should not be considered limiting as many variations are possible. The specific routines or methods described herein may represent one or more of any number of processing strategies. Accordingly, the various acts shown and / or described may be performed in the order shown and / or described, in other orders, in parallel, or omitted. Similarly, the order of the above processes may be changed.

[0109] The subject matter of the present disclosure includes all novel and non-obvious combinations and sub-combinations of the various processes, systems, and configurations, as well as other features, functions, acts, and / or properties disclosed herein, and any and all equivalents thereof.

Claims

1. A computing system, comprising: a processor configured to: receive packet preamble binary data and packet header binary data associated with a satellite; generate an analog signal encoding the packet preamble binary data and the packet header binary data; receive a satellite downlink signal; calculate a corresponding correlation between the satellite downlink signal and at least a portion of the analog signal within each of a plurality of sampling intervals of the satellite downlink signal; select an identified sampling interval among the plurality of sampling intervals based at least in part on the plurality of correlations; decode binary satellite signal data based at least in part on an identified sample of the satellite downlink signal located within the identified sampling interval; and output the binary satellite signal data.

2. The computing system according to claim 1, wherein, The processor is configured to select the identified sampling interval by at least partially determining that the identified sample of the satellite downlink signal located within the identified sampling interval has a correlation higher than a predetermined correlation threshold.

3. The computing system according to claim 2, wherein, The processor is configured to select the identified sampling interval by at least partially: calculate frequency domain signal samples based at least in part on the identified sample of the satellite downlink signal; calculate a frequency deviation between a first frequency domain peak and a second frequency domain peak within the frequency domain signal samples; and determine that the frequency deviation is substantially equal to a predefined frequency deviation.

4. The computing system according to claim 3, wherein, The processor is further configured to: calculate two or more corresponding frequency deviations of the satellite downlink signal within two or more of the plurality of sampling intervals; calculate a false positive rate over the two or more sampling intervals based at least in part on the two or more frequency deviations; and modify the predetermined correlation threshold based at least in part on the false positive rate.

5. The computing system according to claim 4, wherein, The processor is further configured to modify the interval size of each of the plurality of sampling intervals based at least in part on the modification of the predetermined correlation threshold.

6. The computing system according to claim 3, wherein, The processor is further configured to: select one or more additional sampling intervals of the satellite downlink signal that are spaced apart from the identified sampling interval by one or more corresponding integer multiples of a predefined inter-packet time gap; decode additional binary satellite signal data based at least in part on one or more additional identified samples of the satellite downlink signal located within the one or more additional sampling intervals; and output the additional binary satellite signal data.

7. The computing system according to claim 6, wherein, The processor is configured to select the one or more additional sampling intervals by at least partially: calculate corresponding multiple additional frequency domain signal samples based at least in part on multiple candidate additional identified samples of the satellite downlink data located within multiple candidate additional sampling intervals, wherein the multiple candidate additional sampling intervals are spaced apart from the identified sampling interval by corresponding integer multiples of the predefined inter-packet time gap; calculate corresponding additional frequency deviations of the multiple additional frequency domain signal samples; and Select one or more candidate additional sampling intervals among the plurality of candidate additional sampling intervals that have respective additional frequency deviations that are substantially equal to the predefined frequency deviation as the one or more additional sampling intervals.

8. The computing system according to claim 6, wherein, The processor is further configured to: Determine that an additionally identified sample among the one or more additionally identified samples has a respective association with the analog signal that is below the predetermined association threshold; and In response to determining that the association of the additionally identified sample is below the predetermined association threshold, set the predetermined association threshold to the association associated with the additionally identified sample.

9. The computing system according to claim 1, wherein, The processor is configured to select the identified sampling interval at least in part by: Determining that a highest associated sample located within the highest associated sampling interval among the plurality of sampling intervals does not have a respective association that is higher than the predetermined association threshold; For each of a predetermined number of next-highest associated samples located within a respective next-highest associated sampling interval: Calculate a frequency domain signal sample at least in part based on the next-highest associated sample; And Calculate the frequency deviation of the frequency domain signal sample; And Select the next-highest associated sample among the predetermined number of next-highest associated samples that has a frequency deviation that is substantially equal to the predefined frequency deviation as the identified sample.

10. The computing system according to claim 1, wherein, The processor is further configured to determine the identified start position of the binary satellite signal data at least in part by: For each of a plurality of candidate start positions among the identified samples of the satellite downlink signal, calculate a respective plurality of candidate decoded preambles; And Select the candidate start position among the plurality of candidate start positions that has a respective candidate decoded preamble that matches the packet preamble binary data as the identified start position.

11. The computing system according to claim 1, wherein, The processor is configured to determine the interval size of each sampling interval among the plurality of sampling intervals at least in part based on the packet size data indicated in the packet header binary data.

12. A method for use with a computing system, the method comprising: Receiving packet preamble binary data and packet header binary data associated with a satellite; Generating an analog signal that encodes the packet preamble binary data and the packet header binary data; Receiving a satellite downlink signal; Calculating a respective association between the satellite downlink signal and at least a portion of the analog signal within each of a plurality of sampling intervals of the satellite downlink signal; Selecting an identified sampling interval among the plurality of sampling intervals at least in part based on a plurality of associations; Decoding binary satellite signal data at least in part based on the identified samples of the satellite downlink signal; And Outputting the binary satellite signal data.

13. The method according to claim 12, wherein, Selecting the identified sampling interval includes: determining that the identified samples of the satellite downlink signal located within the identified sampling interval have an association that is higher than the predetermined association threshold.

14. The method according to claim 12, wherein, Selecting the identified sampling interval includes: Determine that the highest correlated sample within the highest correlated sampling interval among the plurality of sampling intervals does not have a corresponding correlation higher than a predetermined correlation threshold; For each of a predetermined number of second-highest correlated samples within the corresponding second-highest correlated sampling interval: Calculate a frequency-domain signal sample at least in part based on the second-highest correlated sample; and Calculate a frequency deviation of the frequency-domain signal sample; and Select the next-highest correlated sample among the predetermined number of second-highest correlated samples having a frequency deviation substantially equal to a predefined frequency deviation as the identified sample.

15. The method according to claim 12, further comprising determining the identified starting position of the binary satellite signal data at least in part by: For each of a plurality of candidate starting positions among the identified samples of the satellite downlink signal, calculate a corresponding plurality of candidate preambles before decoding; and Select the candidate starting position among the plurality of candidate starting positions having a corresponding candidate preamble before decoding that matches the binary data of the packet preamble as the identified starting position.