Code modulated spread spectrum communications systems and methods

GB2644854APending Publication Date: 2026-06-03ROBERT BUCKLE +1

Patent Information

Authority / Receiving Office
GB · GB
Patent Type
Applications
Current Assignee / Owner
ROBERT BUCKLE
Filing Date
2024-07-08
Publication Date
2026-06-03

AI Technical Summary

Technical Problem

Current wireless data transmission methods, such as CDMA, TDMA, and DSSS, face limitations in efficiency and security, particularly in low signal-to-noise ratios and power consumption, especially in scenarios requiring long-range or low-power communication.

Method used

The code modulated spread spectrum (CMSS) method, which involves converting binary data into code symbols with a longer code length than the data bits, spreading these symbols on a waveform, and decoding using correlation algorithms, allowing for reliable data transmission even below the noise threshold with lower power requirements.

Benefits of technology

CMSS enables reliable data transmission with reduced power consumption and improved security by utilizing pseudorandom noise algorithms, effectively distinguishing code symbols in low signal-to-noise environments, making it suitable for long-range and low-power applications.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

The present invention comprises a method of transmitting data wirelessly by converting data into code symbols and then using code symbols as spreading codes on an underlying waveform. Code symbols may
Need to check novelty before this filing date? Find Prior Art

Description

IN THE UNITED STATES PATENT AND TRADEMARK OFFICE- Utility Patent Specification -Prepared by:RAYMOND G. AREAUX (Reg. 33,643)J. MATTHEW MILLER III (Reg. 66,178) Carver, Darden, Koretzky, Tessier, Finn, Blossman & Areaux, LLC.1100 Poydras StreetEnergy Centre Suite 3100New Orleans, LA 70163(Telephone: 504 / 585-3803)(Facsimile: 504 / 585-3801)(P / A File 10: 24971)Code Modulated Spread Spectrum System and Method for the Wireless Transmission of DataCROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application claims priority from United States Provisional Patent Application No. 63 / 525,284 (Buckle) filed July 6, 2023, which is incorporated by reference as if set forth in full below.TECHNICAL FIELD

[0002] The present disclosure relates generally to wireless transmission of data using spread spectrum techniques.BACKGROUND OF THE INVENTION

[0003] Wireless communications systems are widely deployed and provide various types of data transmission. These systems may utilize code division multiple access (CDMA), time division multiple access (TDMA), frequency division multiple access (FDMA), direct sequence spread spectrum (DSSS), quadrature amplitude modulation (QAM), or other known methods for converting data into a signal that can be transmitted, received, and converted back into data. The present invention provides an alternative method, referred to herein as code modulated spread spectrum ("CMSS") for utilizing one or more portions of the electromagnetic spectrum to transmit data wireless and, we speculate, provides a number of unique advantages over other methods.SUMMARY OF THE INVENTION

[0004] Disclosed herein is a method for transmitting a series of units of binary data from a set of units of binary data using radio telecommunications equipment comprising the steps of: a. choosing a plurality of code symbols to form a set of code symbols, wherein each said code symbol has a code length, each said code symbol comprises a number of binary values equal to said code length, and each unit of binary data in said set of units of binary data is associated with at least one of said code symbols in said set of code symbols; b. obtaining a next unit of binary data from said series of units of binarydata; c. selecting, from said set of code symbols, a next code symbol, wherein said next code symbol is associated with said next unit of binary data; d. spreading said next code symbol on a waveform to produce an encoded waveform; e. transmitting said encoded waveform at a first power level; f. receiving said encoded waveform; g. performing a correlation on said encoded waveform for a plurality of code symbols in said set of code symbols to produce a set of correlations; h. decoding a decoded unit of data based on said set of correlations, wherein said decoded unit of data is equal to said next unit of binary data. Also disclosed is a method wherein each said next unit of binary data contains between 8 and 32 bits. Also disclosed is a method wherein said performing step is performed using a plurality of correlators wherein each of said plurality of correlators is uniquely associated with one of said code symbols in said set of code symbols. Also disclosed is a method wherein said code length for each said code symbol in said set of code symbols is between 32 and 65,536. Also disclosed is a method wherein said first power level is no more than lOdb above a noise floor. Also disclosed is a method wherein said decoding step comprises calculating a confidence value for each correlation in said set of correlations, comparing each such confidence value to a threshold, and determining said decoded unit of data based on a highest such confidence value that exceeds said threshold. Also disclosed is a method, wherein said binary data includes one or more parity bits; wherein said decoding step comprises the step of calculating an error rate based on said one or more parity bits; and wherein said method further comprises the step of adjusting one or more of said first power level, said threshold, and said code length. Also disclosed is a method wherein said code length for each of said plurality of code symbols defines an excess code length relative to said set of units of binary data and said excess code length is at least 24.

[0005] Disclosed herein is a communications system comprising: a processor; a software defined radio operatively coupled to said processor, a memory operatively coupled to said processor, and an antenna operatively coupled to said software defined radio, wherein said memory comprises instructions that,when executed by said processor, configure said communications system to: a. obtain a first next unit of binary data from a first series of units of binary data; b. choose a plurality of code symbols to form a first set of code symbols, wherein each said code symbol has a first code length, each said code symbol comprises a number of binary values equal to said first code length, and each unit of said first series of units of binary data is associated with at least one of said code symbols in said first set of code symbols; c. select, from said first set of code symbols, a first next code symbol, wherein said first next code symbol is associated with said first next unit of binary data; d. spread said first next code symbol on a first waveform to produce a first encoded waveform; and e. transmit said encoded waveform at a first power level. Also disclosed is a system wherein said memory comprises instructions that, when executed by said processor, configure said communications system to: a. receive said first encoded waveform; b. correlate said first encoded waveform for a plurality of said code symbols in said first set of code symbols to produce a first set of correlations; and c. decode a first decoded unit of data based on said first set of correlations. Also disclosed is a system wherein each said first next unit of binary data contains between 8 and 32 bits and wherein performing said correlation is performed using a plurality of correlators wherein each of said plurality of correlators is uniquely associated with one of said code symbols in said first set of code symbols and wherein said first code length for each said code symbol in said first set of code symbols is between 32 and 65,536 and wherein said first power level is no more than lOdb above a noise floor and wherein said decoding step comprises calculating a confidence value for each correlation in said first set of correlations, comparing each such confidence value to a threshold, and determining said first decoded unit of data based on a highest such confidence value that exceeds said threshold. Also disclosed is a system wherein said memory comprises instructions that, when executed by said processor, configure said communications system to: a. obtain a second next unit of binary data from a second series of units of binary data; b. choose a second set of code symbols, wherein each said code symbol in said second set of code symbols has a second code length, each saidcode symbol comprises a number of binary values equal to said second code length, and each unit of said second series of units of binary data is associated with at least one code symbol in said second set of code symbols; c. select, from said second set of code symbols, a second next code symbol, wherein said second next code symbol is associated with said second next unit of binary data; d. spread said second next code symbol on a second waveform to produce a second encoded waveform; e. transmit said second encoded waveform at a second power level; f. receive said second encoded waveform; g. correlate on said second encoded waveform for each said code symbol in said second set of code symbols to produce a second set of correlations; and h. decode a second decoded unit of data based on said second set of correlations. Also disclosed is a system, wherein said first encoded waveform and said second encoded waveform are received together as a joint waveform. Also disclosed is a system, wherein each said first next unit of binary data contains between 8 and 32 bits and wherein each said second next unit of binary data contains between 8 and 32 bits. Also disclosed is a system, wherein performing said correlation is performed using a plurality of correlators wherein each of said plurality of correlators is uniquely associated with one of said code symbols in said first set of code symbols or one of said code symbols in said second set of code symbols. Also disclosed is a system, wherein said first code length for each said code symbol in said first set of code symbols is between 32 and 65,536 and wherein said second code length for each said code symbol in said second set of code symbols is between 32 and 65,536. Also disclosed is a system, wherein said first power level is no more than lOdb above a noise floor. Also disclosed is a system, wherein said decoding step comprises calculating a first confidence value for each correlation in said first set of correlations, comparing each such confidence value to a first threshold, and determining said first decoded unit of data based on a highest such confidence value that exceeds said first threshold; and wherein said decoding step comprises calculating a second confidence value for each correlation in said second set of correlations, comparing each such confidence value to a second threshold, and determining said second decoded unit of data based on amaximum such confidence value that exceeds said second threshold. Also disclosed is a system, wherein said first code length for each of said first plurality of code symbols defines a first excess code length relative to said set of units of binary data and said first excess code length is at least 24. Also disclosed is a system, wherein said first code length for each of said first plurality of code symbols defines a first excess code length relative to said set of units of binary data, wherein said second code length for each of said second plurality of code symbols defines a second excess code length relative to said set of units of binary data, and said first excess code length and said second excess code length are both at least 24.BRIEF DESCRIPTION OF DRAWINGS

[0006] FIG. 1 depicts a ground-to-satellite CMSS data transmission system.

[0007] FIG. 2A is a logic diagram for a direct sequence spread spectrum data transmission system.

[0008] FIG. 2B is a logic diagram for certain components of a CMSS data transmission system.

[0009] FIG. 2C is a diagram showing a logic diagram and spectral power density graph for various aspects of a direct sequence spread spectrum data transmission system.

[0010] FIG. 3A is a flow chart illustrating the steps of a CMSS communication method.

[0011] FIG. 3B is a graphical representation of certain aspects of the steps of a CMSS communication method.

[0012] FIG. 3C is a diagram depicting steps for decoding data using a CMSS communication method.

[0013] FIG. 4A is a spectral power density graph of a code symbol transmitted with a high signal to noise ratio.

[0014] FIG. 4B is a spectral power density graph of a code symbol transmitted with an intermediate signal to noise ratio.

[0015] FIG. 4C is a spectral power density graph of a code symbol transmitted with a low signal to noise ratio.

[0016] FIG. 5A is a diagram showing a plurality of correlators.[0017} FIG. 5B is a graph illustrating a time series of correlator outputs as code symbols are transmitted and then received.[0018J FIG. 6 depicts a vehicle-to-vehicle CMSS communication system.DETAILED DESCRIPTION OF THE INVENTION

[0019] Example embodiments of the inventive concepts will now be described more fully with reference to the accompanying drawings, in which example embodiments are shown. Example embodiments of the inventive concepts may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the concept of example embodiments to those of ordinary skill in the art. In the drawings, the thicknesses of layers and regions may be exaggerated for clarity. Like reference numerals in the drawings denote like elements, and thus their description will be omitted.

[0020] The word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs.

[0021] Various embodiments will be presented in terms of systems that may include a number of devices, components, modules, and the like. It is to be understood and appreciated that the various systems may include additional devices, components, modules, etc. and / or may not include all of the devices, components, modules etc. discussed in connection with the figures. A combination of these approaches may also be used.

[0022] It will be understood that when an element is referred to as being "connected" or "coupled" to another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, when an element is referred to as being "directly connected" or "directly coupled" to another element, there are no intervening elements present. As used herein the term"and / or" includes any and all combinations of one or more of the associated listed items. Other words used to describe the relationship between elements or layers should be interpreted in a like fashion (e.g., "between" versus "directly between," "adjacent" versus "directly adjacent," "on" versus "directly on").

[0023] As used in this application, the terms "component," "module," "system," and the like are intended to refer to a computer-related entity, either hardware, firmware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an integrated circuit, an object, an executable, a thread of execution, a program, and / or a computer. By way of illustration, both an application running on a computing device and the computing device can be a component. One or more components can reside within a process and / or thread of execution and a component may be localized on one computer and / or distributed between two or more computers. In addition, these components can execute from various computer readable media having various data structures stored thereon.

[0024] It will be understood that, although the terms "first", "second", etc. may be used herein to describe various elements, components, regions, layers and / or sections, these elements, components, regions, layers and / or sections should not be limited by these terms. These terms are only used to distinguish one element, component, region, layer or section from another element, component, region, layer or section. Thus, a first element, component, region, layer or section discussed below could be termed a second element, component, region, layer or section without departing from the teachings of example embodiments.

[0025] Spatially relative terms, such as "beneath," "below," "lower," "above," "upper" and the like, may be used herein for ease of description to describe one element or feature's relationship to another element(s) or feature(s) as illustrated in the figures. It will be understood that the spatially relative terms are intended to encompass different orientations of the device in use or operation in addition tothe orientation depicted in the figures. For example, if the device in the figures is turned over, elements described as "below" or "beneath" other elements or features would then be oriented "above" the other elements or features. Thus, the exemplary term "below" can encompass both an orientation of above and below. The device may be otherwise oriented (rotated 90 degrees or at other orientations) and the spatially relative descriptors used herein interpreted accordingly.

[0026] As used herein, the singular forms "a," "an" and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "comprises", "comprising", "includes" and / or "including," if used herein, specify the presence of stated features, integers, steps, operations, elements and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components and / or groups thereof.

[0027] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of example embodiments. Example embodiments of the inventive concepts are described herein with reference to cross-sectional illustrations that are schematic illustrations of idealized embodiments (and intermediate structures) of example embodiments. As such, variations from the shapes of the illustrations as a result, for example, of manufacturing techniques and / or tolerances, are to be expected. Thus, example embodiments of the inventive concepts should not be construed as limited to the particular shapes of regions illustrated herein but are to include deviations in shapes that result, for example, from manufacturing.

[0028] Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which example embodiments of the inventive concepts belong. It will be further understood that terms, such as those defined in commonly-used dictionaries, should be interpreted as having a meaning that is consistentwith their meaning in the context of the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.

[0029] Turning now to the figures, Fig. 1 shows communications system 100. Communications system 100 is an exemplary embodiment of a wireless communications system implementing code modulated spread spectrum (CMSS) methods of communication, specifically, an exemplary embodiment of CMSS method 300. Communications system 100 comprises ground system 110, satellite system 120, and signal 130. Ground system 110 comprises tower 111, ground radio system 115, and ground antenna 116. Satellite system 120 comprises satellite 121, satellite radio system 125, and satellite antenna 126. Signal 130 comprises a waveform of energy in the electromagnetic spectrum. Ground radio system 115 further comprises ground SDR 117, and satellite radio system 125 further comprises satellite SDR 127.

[0030] Ground radio system 115 and satellite radio system 125 are computer systems that are configured to, and which are capable of, calculating, generating, and transmiting electromagnetic radiation to produce signal 130. Ground radio system 115 and satellite radio system 125 are also computer systems that are configured to, and which are capable of, detecting, receiving, and decoding signal 130. This process of calculating, generating, and transmitting a signal 130, and then detecting, receiving, and decoding signal 130 may be repeated with different information in each instance of signal 130. Ground radio system 115 includes ground SDR 117 and satellite radio system 125 includes satellite SDR 127, each of which are software defined radios (SDRs) which are each respectively configured to transmit and / or receive signal 130 and to perform some or all of the functions of ground radio system 115 and satellite radio system 125. Each of ground SDR 117 and satellite SDR 127 may be one SDR or may be multiple SDRs.

[0031] Signal 130 may be an amplified signal. Signal 130 may be emitted and / or received through ground antenna 116 or satellite antenna 126, respectively. In an alternative embodiment, ground system 110 may be a handheld mobile device; and, in such instances, ground system 110 does notinclude a tower 111. Also, while communication system 100 is shown in Fig. 1 to include a satellite system 120, it should be understood that the methods and systems described herein likewise work with terrestrial-only communications systems, such as a ground system 110 communication with another ground system 110.

[0032] A software defined radio (SDR) is a radio communication system which uses software for the modulation and demodulation of radio signals alongside waveform shaping, radio and baseband filtering, data packetization, framing, and forward error correction. Software defined radios perform signal processing on a general purpose computer, or on a reconfigurable digital electronic system such as a field programmable gate array (FPGA). As used with reference to software defined radios, the term "sampling rate" means the per second rate at which an analog to digital converter (ADC) can take instantaneous measurements of an analog signal and is normally specified in samples per second (SPS), Currently available systems are, we speculate, capable of sampling in the range of between approximately 2.4 million SPS and 24 billion SPS. As used with reference to software defined radios, the term "resolution" refers to the number of discrete values used (i.e., how many bits are used) to represent a range of analog values converted by an analog-to-digital converter (ADC) in a SDR. Typical ADCs currently used in SDRs have resolution in the range of between 8 bits and 24 bits. The term "frequency range" refers to the entire portion of the radio frequency spectrum over which all components of an SDR, including ADCs, FPGAs, filters, and amplifiers are able to operate. The term "maximum bandwidth" is the frequency which, in this case, refers to the number of times per second an SDR can sample a particular portion of the radio frequency spectrum; and, in most cases, the maximum bandwidth will be the same as the sampling rate but this is not true in all cases. Some examples of SDRs which may be used with CMSS method 300 and for ground SDR 117, satellite SDR 127, first vehicle SDR 617, and second vehicle SDR 627 include; (1) Adalm Pluto SDR, which, we speculate, has a frequency range of 70 MHz • 6 GHz, maximum bandwidth of 20 MHz, ADC resolution of 12 bits, and sample rate of61.44 MSPS; (2) Lime SDR, which, we speculate, has a frequency range of 100 kHz - 3.8 GHz, maximum bandwidth of 61.44 MHz, ADC resolution of 12 bits, and sample rate of 61.44 MSPS; and (3) RTL SDR, which, we speculate, has a frequency range of 500 kHz - 1.7 MHz, maximum bandwidth of 2.4 MHz, ADC resolution of 8 bits, and sample rate of 2.4 MSPS.

[0033] In one embodiment, CMSS method 300 operates using a first ground radio system 115 and a second ground radio system 115 and a satellite radio system 125, where the satellite radio system 125 comprises a transponder that is used to receive signal 130 from a first ground radio system 115 on a first frequency and then returns signal 130 on a second frequency to a second ground radio system 115. This method of operation is sometimes referred to in the industry as "bent pipe" satellite communications. We speculate that because, in some embodiments, CMSS method 300 can use more computational resources to allow lower power transmission than conventional methods, CMSS method 300 is particularly well suited for improving so called "bent pipe” satellite communications. This is, we speculate, because: (a) first ground radio system 115 and second ground radio system 115 can be provided with additional computational resources to perform CMSS method 300 to transmit lower power signals 130; (b) satellite radio system 125 can receive and re-transmit more signals 130 even when those signals 130 are at lower power. This, we speculate, allows more signals 130 to be sent through satellite radio system 125 without upgrading satellite radio system 125.

[0034] In an exemplary embodiment, a type of SDR is used with CMSS method 300 and for ground SDR 117, satellite SDR 127, first vehicle SDR 617, and second vehicle SDR 627 which analyzes the radio frequency spectrum by a quadrature demodulator and which makes use of at least two ADCs together with an FPGA. The incoming radio frequency from an antenna (such as ground antenna 116, satellite antenna 126, first vehicle antenna 616, and second vehicle antenna 626) is first fed into a splitter with each of its two outputs connected to two separate mixers. Using a single local oscillator (such as receiverCMSS local oscillator 155) in conjunction with a phase shifter, two separate signals are generated withone being 90 degrees out of phase with the other. For a receiver, the signal is then fed into the two separate mixers and the resulting outputs are connected to two ADCs, The digital output from these two ADCs, now defined I and Q, can be fed to a computer for processing. This type of SDR is capable of retrieving all signals (including noise) across the entire bandwidth of this type of SDR from a central frequency in order to receive code symbols 249 broadcast with CMSS method 300.

[0035] Traditional modes of communication may be implemented using CMSS method 300, including, but not limited to full duplex, half duplex, point-to-point, point-to-multipoint, multipoint-to-point, multipoint-to-multipoint, push to talk, open broadcast transmit, open broadcast receive, closed group transmit, and closed group receive.

[0036] Although the methods disclosed herein are, we speculate, applicable to any type of waveformbased signal, we speculate that signal 130 works best when signal 130 is comprised of non-ionizing electromagnetic radiation having a wavelength in the approximate range of 1000m to lOnm, However, CMSS method 300, we speculate, is not limited to radio frequency, and, we speculate, can be used over any medium that can be adequately sampled, including, without limitation, copper tracks or laser systems. In an exemplary embodiment of communication system 100, signals 130 are transmitted in the S-Band handset downlink channel (for signals 130 sent by satellite radio system 125 to ground radio system 115) and are transmitted in the l-Band handset uplink channel (for signals 130 sent by ground radio system 115 to satellite radio system 125).

[0037] In some exemplary embodiments, light is modulated instead of radio frequency electromagnetic radiation, in these embodiments, electronic components still use ADCs (connected to photodiodes) and DACs connected to laser systems, potentially with FPGAs or other computing resources, to support laser modulation techniques. We speculate that CMSS method 300 can be employed to support longer ranges or lower power requirements.[0038) Exemplary embodiments of CMSS method 300 are, we speculate, different than other methods for transmitting information wirelessly because of how CMSS method 300 converts data into signals 130. CMSS method 300 is based on the concept of code symbols 249. Code symbols 249 may also be thought of as "spreading codes" used to transmit spread spectrum data, but, CMSS method 300 uses code symbols 249 to transmit data, as opposed to merely using spreading codes (such as code symbols 249) to spread a waveform across a spectrum. Put simply, and explained in more detail below, CMSS method 300 converts a unit of binary data 311 into a code symbol 249, which is a set containing a plurality of Boolean values 299. The exact number of Boolean values 299 in each code symbol 249 is that code symbol's 249 code length 252. Boolean values 299 are values that are either "on” or "off" (i.e., "1" or "0” or "true" or "false"), in the figures, "on", "1", and "true" Boolean values 299 are shown as either the number "1” or as check marks, and "off", "0”, and "false" Boolean values 299 are shown as either the number "0" or as x marks. In exemplary embodiments, a code symbol 249 has more, and perhaps many more, Boolean values 299 than the number of binary digits (bits) in binary data 311. A Boolean value 299 may be referred to herein or in the claims as a "binary value." After converting binary data 311 into a code symbol 249, CMSS method 300 transmits the code symbol 249 over a baseline waveform in the same or similar fashion that a "spreading code" is applied to spread a waveform, after which a receiver can interpret the codes as binary data 311.

[0039] FIG. 2A shows an exemplary logic diagram for a direct sequence spread spectrum (DSSS) data transmission system. As shown: (1) a unit of binary data 311 is fed into the DSSS system; (2) that binary data 311 is encoded onto a carrier signal generated by DSSS local oscillator 151 via binary shift phase keying (BPSK), with the rate the binary data 311 is encoded being referred to as the "symbol rate"; (3) the carrier signal, now carrying binary data 311, is then "spread" using DSSS code 152, which is a "spreading code" to create a spread spectrum waveform; (4) the spread spectrum waveform is then transmitted over the air; and (5) as the spread spectrum waveform is received, DSSS code 152 is thenused, along with a DSSS local oscillator 153, in the process for decoding binary data 311. More specifically, a correlation algorithm, also referred to as a correlator, is used to detect the presence of DSSS code 152. The presence of DSSS code 152 can be used, for example, to verify that the correct waveform is being decoded to retrieve binary data 311. In this process, DSSS code 152 comprises a plurality of Boolean values 299, with each such Boolean value 299 treated as a rectangular pulse having a +1 or -1 amplitude, and each such rectangular pulse referred to as a "chip." The carrier signal carrying binary data 311 is multiplied by each chip, and the rate at which chips applied to the carrier signal carrying binary data 311 is referred to as the "chip rate." Additionally, the chip rate divided by the symbol rate is referred to as the "spreading factor" The Spreading factor is typically greater than one, meaning that the frequency of multiplying the carrier signal by chips is greater than the frequency at which the binary data 311 is applied to the carrier signal. This process of applying a spreading code to a waveform is referred to herein and the claims as "spreading" a code on a waveform.

[0040] FIG. 2B shows a logic diagram for CMSS method 300. In a simple exemplary embodiment, CMSS method 300, instead of using spreading codes to verify that a signal is from a desired source as with DSSS systems, CMSS method 300 uses a plurality of spreading codes to represent data, thereby providing a data channel. As shown, in CMSS method 300, extraneous data 312 is optionally first applied to a waveform output from transmitter local oscillator 154 using industry standard techniques. Such techniques include, without limitation, ASK, APSK, CPM, FSK, BPSK, Q.PSK, MFSK, MSK, OOK, PPM, PSK, Q.AM, SC-FDE, and TCM. CMSS method 300 is agnostic as to whether extraneous data 312 is encoded on the waveform output from transmitter local oscillator 154. Separately, a unit of binary data 311 is first converted into a code symbol 249. This conversion is a two-way process, whereby particular units of binary data 311 are converted into unique code symbols 249, which can later be converted back into the same particular unit of binary data 311 at the receiver. FIG. 28 represents this by showing codeset 325 containing a plurality of units of binary data 311, each associated with a code symbol 249. Then, codesymbol 249 is used as a spreading code, whereby code symbol 249 is converted into the functional analog of the "chips" of a DSSS data transmission system and applied to the carrier waveform (without regard to whether extraneous data 312 has or has not been encoded onto the carrier waveform). The resulting waveform is then broadcast. Next, the transmitted waveform is received over the air, a receiver CMSS local oscillator 155 and correlation algorithms are used to detect the presence of code symbol 249. Because each unique code symbol 249 is associated with one particular unit of binary data 311, the detection of each unique code symbol 249 indicates that a particular unit of binary data 311 has been received. Optionally, and if present, extraneous data 312 may be recovered. CMSS method 300 is agnostic about whether such underlying data may be recovered. However, in some embodiments, it may be useful to include extraneous data 312 when CMSS method 300 is transmitting at very low power. For example, if extraneous data 312 is included on signal 130, a third party attempting to decode signal 130 may focus on attempting to recover and decode extraneous data 312 (which, because of low power, may not be possible). In other words, encoding extraneous data 312 (that the sender does not intend to be received) on signal 130 may further obfuscate binary data 311.

[0041] In some embodiments, extraneous data 312 is encoded as a waveform, then a code symbol 249 is used to spread that waveform (i.e., the waveform is multiplied by each chip at desired increments), and finally the spread waveform is applied to a carrier waveform, which is then broadcast. In other embodiments where extraneous data 312 is not used, a code symbol 249 is used to spread a carrier waveform. One of skill in the art will recognize that the order of operations may be performed in various orders to achieve the same result,

[0042] The sample rate, discussed above, is the number of times per second a radio system such as ground radio system 115 or satellite radio system 125 can take instantaneous digital recordings of an analog signal (such as signal 130 or V2V signal 630). in exemplary embodiments of CMSS method 300,the sample rate is between 2.4 million samples per second and 61.44 million samples per second, although, we speculate that higher or lower sample rates may be used.

[0043] Fig. 2C depicts the operation of a DSSS data transmission system and shows simple waveform 260, data-encoded waveform 261, and spread waveform 262. Simple waveform 260, data-encoded waveform 261, and spread waveform 262 are all shown in the frequency domain. However, data- encoded waveform 261 is also shown in the time domain. Simple waveform 260 is a sinusoidal waveform at the center frequency (and thus, it appears asymptotic in the frequency domain). In DSSS data transmission system, binary data 311 is first encoded using the binary phase shift keying on simple waveform 260 to create data-encoded waveform 261. This process spreads the power of simple waveform 260 across a wider frequency band, as can be seen when comparing simple waveform 260 and data-encoded waveform 261. Next, DSSS code 152 (which is shown as a series of rectangular pulses, or "chips") is applied to data-encoded waveform 261 to create spread waveform 262, This process further spreads data-encoded waveform 261 across the full range of occupied bandwidth 210 while still keeping spread waveform 262 at the center frequency 212. As DSSS data transmission system operates, DSSS code 152 is used as a "spreading code" to spread the spread waveform 262. While DSSS code 152 might be changed periodically, it is not, in our understanding, used to represent the binary data 311. By contrast, CMSS method 300 uses spreading codes to represent units of the binary data 311. Furthermore, while CMSS method 300 might first encode extraneous data 312 on a simple waveform 260, CMSS method 300 is agnostic as to whether extraneous data 312 is encoded on simple waveform 260 and instead focuses on encoding the binary data 311 as spreading codes (referred to as code symbols 249) using available means for applying spreading codes to a base waveform (which could be a waveform like simple waveform 260 or a waveform with data encoded on it already like data- encoded waveform 261).[0044) Fig, 3A is a flow chart illustrating the steps of a CMSS method 300, and Fig. SB is a graphical representation that illustrates aspects of CMSS method 300. The numbers and codes shown in Fig. 3B are not limiting and are for illustrative purposes only. CMSS method 300 is comprised of inputting step 310, codeset creation step 315, symbol creating step 320, spreading step 330, transmitting step 340, and decoding step 350.

[0045] In inputting step 310, binary data 311 is provided to the radio system such as ground system 110 or satellite system 120 implementing CMSS method 300. In some exemplary embodiments, the binary data 311 provided to said radio system is 10 bits of data. In some of those exemplary embodiments, the 10 bits of data is the next 10 bits of data of a stream of to-be-transmitted data. Other bit lengths may be used for the binary data 311. The binary data 311 may be individual data units from a stream of data and collectively any type of data transfer protocol may be sent through CMSS method 300. After obtaining the binary data 311 in inputting step 310, CMSS method 300 optionally moves to codeset creation step 315 or to symbol creating step 320. Codeset creation step 315 is performed when CMSS method 300 needs a codeset 325 to be created. Codeset creation step 315 must be performed at least once before symbol creating step 320 can be completed, and codeset creation step 315 may be performed one or more times, typically after a predetermined period of time or after a predetermined number of code symbols 249 have been transmitted. In some embodiments, codeset creation step 315 is performed outside of CMSS method 300 (i.e., not at runtime) and one or more of the codeset 325 used are predetermined. We speculate that the frequency of performance of codeset creation step 315 may be increased where greater security is desired or to aid in channel optimization. In one exemplary embodiment where higher security is desired, codeset creation step 315 is performed every ten (10) seconds. In another exemplary embodiment, codeset creation step 315 is re-performed when reception is poor (i.e., there is interference resulting in a high bit error rate or a low signal to noise ratio).[0046) In codeset creation step 315,. CMSS method 300 creates a codeset 325 that is used in symbol creating step 320 to create a code symbol 249 for binary data 311. A codeset 325 is a set of code symbols 249 where at least one code symbol 249 in the codeset 325 corresponds to each possible binary data 311 obtained in the prior step. For example, in an exemplary embodiment where the binary data 311 is an 8-bit number, there are 256 possibilities for that number and so a suitable codeset 325 contains at least 256 unique code symbols 249. in other words, in an exemplary embodiment, ail of the possible binary numbers having a given number of binary digits form a set of possible data units, each individual unit of binary data 311 is one of those possible data units (i.e., one of the possible binary numbers), and a codeset 325 contains code symbols 249 for all of the possible data units (i.e., all of the possible binary numbers) in that set of possible data units. Thus, the code length 252 for the code symbols 249 must be long enough so that there are at least as many possible code symbols 249 as possibilities for binary data 311. However, in preferred embodiments, a codeset 325 comprises only a small subset of the possible code symbols 249 given the code length 252. Given a specific number of binary digits for binary data 311 encoded as code symbols 249 using CMSS method 300, the longer the code length 252 used, we speculate the more reliably CMSS method 300 can recover code symbols 249 in decoding step 350.

[0047] In various embodiments, code symbols 249 can have a code length 252 of 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360, 16384, 17408, 18432, 19456, 20480, 21504, 22528, 23552, 24576, 25600, 26624, 27648, 28672, 29696, 30720, 31744, 32768, 33792,34816, 35840, 36864, 37888, 38912, 39936, 40960, 41984, 43008, 44032, 45056, 46080, 47104, 48128,49152, 50176, 51200, 52224, 53248, 54272, 55296, 56320, 57344, 58368, 59392, 60416, 61440, 62464,63488, 64512, 65536, 66560, 67584, 68608, 69632, 70656, 71680, 72704, 73728, 74752, 75776, 76800,77824, 78848, 79872, 80896, 81920, 82944, 83968, 84992, 86016, 87040, 88064, 89088, 90112, 91136,92160, 93184, 94208, 95232, 96256, 97280, 98304, 99328, 100352, 101376, 102400, 103424, 104448,105472, 106496, 107520, 108544, 109568, 110592, 111616, 112640, 113664, 114688, 115712, 116736,117760, 118784, 119808, 120832, 121856., 122880, 123904, 124928, 125952, 126976, 128000, 129024, 130048, or any value in between or higher; and, in each such embodiment, binary data 311 can be a 2- bit number, a 3-bit number, a 4-bit number, a 5-bit number, a 6-bit number, a 7-bit number, an 8-bit number, a 9-bit number, a 10-bit number, an 11-bit number, a 12-bit number, a 13-bit number, a 14-bit number, a 15-bit number, a 16-bit number, a 24-bit number, a 32-bit number, a 64-bit number, a 96-bit number, a 128-bit number, a 256-bit number, a 512-bit number, or a number with any number of binary digits in between or higher.[0048) Another way of viewing this concept is that each individual unit of binary data 311 is from a set of units of binary data 311, and that set is comprised of each value defined by the number of binary digits used. For example, if binary data 311 is 8-bit data, the set of binary data 311 has a cardinality of 256 and is itself comprised of the values from 0 to 255,

[0049] We speculate that embodiments of CMSS method 300 work better as the code length 252 is longer than the number of binary digits in the binary data 311 encoded as code symbols 249 because we speculate that it is easier to distinguish code symbols 249 from one another if the code symbols 249 in a codeset 325 are less similar to one another and further because code symbols 249 are less likely to be similar to one another if fewer code symbols 249 of the possible code symbols 249 are being used. In other words, as but one example, considering two systems implementing CMSS method 300, where, in a first system, binary data 311 is an 8-bit value (for which there are 2a(256) possibilities for binary data 311} and if the code length 252 is 10 (leading to 210(1024) possibilities for code symbols 249), and further considering a second system where binary data 311 is a 8-bit value and the code length 252 is 512 (with 2512possible codes), then we speculate that the second system will be able to operate with lower signal-to-noise ratios. We further speculate that this is because when code symbols 249 are less intercorrelated, CMSS method 300 will more readily be able to distinguish between various correlationoutputs 395 from various correlators 393 and thus more readily be able to detect the presence of code symbols 249 in the second system. We further speculate that CMSS method 300 works if the code length 252 minus the number of binary digits for binary data 311 (referred to as "excess code length") is at least 1, but works better as the excess code length increases to 2, 4, 8, 16, 24, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, or even higher. We further speculate that, because the symbol rate decreases as the code length increases, for various embodiments, it will be particularly beneficial to balance the symbol rate and acceptable signal-to-noise ratios to achieve desired effects; and that such balanced embodiments include, without limitation, binary data 311 / code length 252 of 8-bit / 512, 8-bit / 1024, 8-bit / 8192, 8-bit / 16384, 16-bit / 8192, 16-bit / 16384, 16-bit / 32768, 32toit / 16384, 32-bit / 32768.

[0050] In one exemplary embodiment of codeset creation step 315, each code symbol 249 in codeset 325 is any binary number having the desired number of binary digits. While this exemplary embodiment wifi work, our opinion is that this embodiment is not idea! for some applications.

[0051] In another exemplary embodiment of codeset creation step 315, the code symbols 249 in codeset 325, as a whole, have an equal number of "zero" Boolean values 299 and "one" Boolean values 299, thereby causing spreading step 330 to represent the energy across a wider frequency and prevent artifacts appears in spectrum plots making the signal visible to the human eye. However, in our view, algorithms that are mathematically proven to produce sets of numbers that are similar to noise (i.e., pseudorandom noise algorithms) are better than merely creating sets that have an equal number of "zero" Boolean values 299 and "one" Boolean values 299.

[0052] In exemplary embodiments of codeset creation step 315, each code symbol 249 in a codeset 325 represents pseudorandom noise generated from a pseudorandom noise generating algorithm, i.e., code symbols 249 may be one or more of Gold codes, Kasami codes, and Weil codes, or a combination thereof. In these exemplary embodiments, the binary digits (bits) of the Gold, Kasami, Weil, or othercodes generated are used to determine the Boolean values 299 of each code symbol 249. One benefit of using pseudorandom noise generating algorithms to generate codesets 325 is that algorithms can be selected that produce repeatable (but still random-looking) sets of numbers which sets can be varied based on a predetermined seed value. When CMSS method 300 uses these types of algorithms, a transmitting system and a receiving system can both generate new codesets 325 based on a predetermined sequence of seed values. Another benefit, we speculate, of using algorithms that create codesets 325 having code symbols 249 that are evenly distributed is that the code symbols 249 used are less readily distinguished (by an outside observer) from noise, thereby adding an element of security, particularly when CMSS method 300 transmits below the noise threshold.

[0053] In some embodiments, the code length 252 used, and thus the number of possible code symbols 249, may be more, or much more, than needed. This means that there could be many more possible code symbols 249 for codeset 325 than needed to represent all possibilities of binary data 311. In other words, if each unit of binary data 311 is 8-bits and if the code length is 128, there are 2s(256) possibilities for binary data 311 and 2128(340,282,366,920,938,463,463,374,607,431,768,211,456) possibilities for possible code symbols 249. The additional code symbols 249 may be either: (a) used for redundancy (i.e., multiple code symbols 249 correspond to the same binary data 311); or (b) not used. Where a given code length 252 results in more possible unique code symbols 249 than possibilities for binary data 311 and some possible unique code symbols 249 are not used, this allows a receiver to make estimates of the probability that a code symbol 249 has been received, through the use of a correlation algorithm (i.e., a correlator) based on receiving only a portion of a code symbol 249 in the codeset 325 and further allows for CMSS method 300 to determine that a code symbol 249 has been received if such probability exceeds a threshold. The ability to estimate the probability of receipt of code symbols 249 in this way, we speculate, increases as the number of possibilities for code symbols 249 increases relative to the number of possibilities for binary data 311 because there is likely to be less similarity betweeneach code symbol 249 in the codeset 325 allowing for probability of receipt to be estimated more reliably when some of each code symbol 249 is not received or is received incorrectly. Another advantage of having many more possibilities for code symbols 249 relative to binary data 311 is that two codesets 325 can be used where no code symbol 249 in one of the two codesets 325 is in the second codeset 325, thereby reducing potential interference if multiple code symbols 249 are transmitted on the same occupied bandwidth 210 at the same time. However, any code symbol 249 can be transmitted at the same time and on the same occupied bandwidth 210 and center frequency 212 so long as correlation algorithms (e.g., correlators 393} are capable of detecting and distinguishing code symbols 249. We speculate that codesets 325 based on mathematically proven pseudorandom noise algorithms, such as Gold, Kasami, Weil, and other such algorithms will produce good results when multiple code symbols 249 are transmitted at the same time,

[0054] After creating a codeset 325, CMSS method 300 moves to symbol creating step 320, In symbol creating step 320, CMSS method 300 first obtains the appropriate codeset 325, then the code symbol 249 associated with binary data 311 in codeset 325 is selected. In other words, in this step, CMSS method 300 looks up the appropriate code symbol 249 from the appropriate codeset 325. After obtaining the appropriate code symbol 249, CMSS method 300 moves to spreading step 330.

[0055] In spreading step 330, the code symbol 249 generated in symbol creating step 320 applied to a waveform in the manner discussed with reference to Fig 28. In this step, a waveform oscillating at center frequency 212 is obtained from transmitter local oscillator 154. In some but not all embodiments, the waveform may be encoded with extraneous data 312. After the waveform is obtained, the code symbol 249 is applied to the waveform using spread spectrum techniques. In one embodiment, this is performed by first converting each Boolean value 299 of the code symbol 249 into rectangular pulses and then multiplying the waveform by those rectangular pulses in the same way that other techniques apply a spreading code (i.e., DS5S code 152) to a waveform. More specifically, eachBoolean value 299 is treated either as a rectangular pulse having a positive amplitude (i.e., "true" values being treated as "+1 rectangular pulse") or as a rectangular pulse having a negative amplitude (i.e., "false" values being treated as "-1 rectangular pulse"). While other methods may refer to these rectangular pulses as "chips" to distinguish them from "bits" of data, CMSS method 300 is agnostic as to whether extraneous data 312 is encoded on the waveform. The rate at which code symbol 249 is applied to the waveform is determined so as to achieve a desired occupied bandwidth 210.

[0056] The occupied bandwidth 210 and center frequency 212 are determined based on either: (a) the occupied bandwidth 210 and center frequency 212 that are currently in use; {b) present noise conditions (i.e., to avoid interference); or (c) a predetermined sequence of changing the occupied bandwidth 210 and center frequency 212. In some embodiments, the occupied bandwidth 210 and center frequency 212, or changes thereto, are communicated over the air on a separate channel using the methods described herein. In some embodiments, the occupied bandwidth 210 and center frequency 212 are determined based on the regulated bandplan for a particular country. After performing spreading step 330, CMSS method 300 moves to transmitting step 340.

[0057] In transmitting step 340, the waveform applied in spreading step 330 is transmitted as signal 130. CMSS method 300 then proceeds to inputting step 310.

[0058] Decoding step 350 is repeated as necessary in a receiving system such as ground radio system 115 or satellite radio system 125. In decoding step 350, a signal 130 is received and converted into binary data 311. Fig. 3C depicts this process and first shows a spectral power density graph 380 for signal 130, Next, Fig. 3C shows correlators 393 for a plurality of code symbols 249, with each of the correlators 393 being configured to detect the respective correlator probability 395 that each respective code symbol 249 has been transmitted over signal 130. If a correlator probability 395 is above a threshold, CMSS method 300 treats the code symbol 249 associated with the respective correlator 393as being received. The particular binary data 311 associated with the received code symbol 249 is then retrieved from codeset 325.

[0059] Decoding step 350 utilizes as many correlators 393 as is necessary for the codeset 325, all executed at or about the same time. This means that decoding step 350 uses at least one correlator 393 for each code symbol 249 of a codeset 325; and, because each such code symbol 249 corresponds one potential unit of binary data 311, decoding step 350 uses at least one correlator 393 for each potential unit of binary data 311. This means that, for example, if binary data 311 is 8-bit data, decoding step 350 will use at least 256 correlators 393 and if binary data 311 is 16-bit data, decoding step 350 will use at least 65,536 correlators 393.

[0060] In certain embodiments, correlators 393 implement the following cross correlation function, where f is a binary sequence, g is received data, tau is the displacement (lag or phase), t is time, and the output is a unitless value:

[0061] In some embodiments, correlators 393 use a combination of logic gates on an FPGA implementing XOR and ADD logic circuits, along with registers to buffer inputs and outputs, in other embodiments, correlators 393 are implemented in software running on general purpose computers with central processing units (CPUs) and optionally with graphics processing units (GPUs).

[0062] The threshold for determining whether a correlator 393 has detected a code symbol 249 is determined based on a variety of factors including the power of signal 130, noise levels, and user thresholds. However, in one simulated embodiment, signal 130 Is broadcast at 1 mW against a noise level of over 100 dB, and code symbols are detected if one of the correlation outputs 395 is distinguishable and exceeds the user threshold. Correlation outputs 395 are also referred to as ''cross correlation" outputs and are unitless values.[0063) One aspect of the disclosed system is that correlators 393 can detect if a code symbol 249 is present, even if all of the Boolean values 299 for that code symbol 249 are not detected. Furthermore: {a) because the code symbols 249 in a codeset 325 are dissimilar to one another (i.e., have low intercorrelation); and (b) because the code symbols 249 are unlikely to be the result of background noise, then, even if there is a relatively low correlation output 395 for a particular correlator 393, there can still be a strong likelihood that a code symbol 249 was actually transmitted. For example, in one simulated embodiment, a correlator 393 outputs a correlation output 395 of between 0.025 and 0.035 when a signal 130 includes a Walsh code as a code symbol 249, but the same correlator 393 outputs a correlation output 395 of between 0.00 and 0.002 when a code symbol 249 is not included in signal 130. Because of these properties, a significant number of Boolean values 299 can be unreceived or received incorrectly and code symbol 249 can still be detected. In one embodiment using a code length 252 of 512 (i.e., code symbol 249 contains 512 Boolean values 299), at least twenty Boolean values 299, and likely more than twenty, can be lost while still having a strong probability of receiving a code symbol 249. Additionally, for a given strength of signal 130 and for a given number of binary digits in each unit of binary data 311, as the code length 252 of the code symbols 249 used increases, there is a greater ability to detect code symbols 249.

[0064] Additionally, CMSS method 300 can implement forward error correction (FEC), whereby some portion of binary data 311 is "parity" or "check" bits; and, if high error rates are detected, code length 252, transmit power, or confidence values can be configured for a particular application and in some embodiments, code length 252, or confidence values can be adjusted dynamically in response to high error rates detected by the forward error correction algorithm used. In one exemplary embodiment, CMSS method implements a simple Hamming(12,8) system, where twelve code symbols 249 are transmitted where eight code symbols 249 are the data to be transmitted, and four extra code symbols249 are transmitted for forward error correction. We speculate, this would be used in a closed loopwhere a false positive rate could either increase the FEC rates, reconfigure the codeset 325 to longer code lengths 252 or more complex combinations, or even to increase in RF transmission power. Conversely, this method could also be used to reduce FEC rates, reduce codes lengths 252 / complexities, or reduce the RF power. We speculate that code length 252, transmit power, and confidence levels can be dynamically adjusted to maintain a low signal to noise ratio. We speculate this would be very important for optimizing where 'in the noise' the signal can exist and would be important for secure communication applications (satellite, defense, military),

[0065] We speculate that the amount of power required to perform CMSS method 300 is lower than other methods. For example, for the 1024-QAM scheme in IEEE 802.1 lax, there are 8.33 bits per symbol given the code rate of 5 / 6 and this scheme requires a signal to noise ratio of 38dB (6.3 Watts) to receive at a bit error rate (8ER) of 10s. By contrast, in an exemplary embodiment where CMSS method 300 uses lObit binary data 311 that is converted into code symbols 249 having a code length of 1024 (and so, each transmitted code symbol 249 comprises 210or 1024 Boolean values 299 together representing 10-bit binary data 311) to match the 1024-QAM system, such an exemplary embodiment of CMSS methods would require signal to noise ratio of only 9.6 dB (9 Milliwatts). Also, bandwidth is a function of the symbol rate (Rs), sample rate (RSAMP) and the modulation rate (Rm). This relationship is: BW = (Rsx RSAMP) / Rm- Comparing such a 1024-QAM system to CMSS method 300 using the classic BPSK baseline requiring 9.6 dB (or 9 mW) and 10 bits per symbol, there is a bandwidth to power trade off by fixing the symbol rate at 1 Mbps:1024-QAM BW = IMb / s x 4 samples / 8.33 b / sym = 480 kHz1024-CMSS = 1Mb / s x 4 samples x 1024 code / 10 b / sym = 400 MHzThus, certain embodiments of CMSS method 300 require 800 times more spectrum to meet a hypothetical data rate requirement of 1 Mbps. However, even though CMSS method 300 requires more bandwidth to meet the same data rate, we speculate that CMSS requires about 700 times less powerper symbol than the 802.11ax 1024-QAM scheme. Furthermore, we speculate that bare BPSK requires 9.6 dB for a bit error rate of 10'5and a code symbol 249 having 1024 Boolean values 299 broadcast using CMSS method 300 where the spreading technique is the same spreading technique as used in DSSS, requires only -12 to -18 dB (approximately 20 dB lower signal strength) to achieve the same bit error rate of 10-S.

[0056] Because we speculate that CMSS method 300 works well even if significant portions of a code symbol 249 are not received, we further speculate that CMSS method 300 is particularly well-suited for environments with a low signal-to-noise ratio allowing for a significantly lower bit error rate given the same signal-to-noise ratio. This means that CMSS method 300 can be used in scenarios where signal 130 is transmitted at or well below a noise threshold. Furthermore, we speculate that CMSS method 300 is particularly well suited for low power, stealth, or long-range use cases.

[0067] Another aspect of the disclosed system is that the system works better when code symbols 249 in a codeset 325 are not correlated with one another. In other words, when there is a low similarity between each code symbol 249 in a codeset 325, there will be greater differentiation between the correlation output 395 from each respective correlator 393; and thus, even when a signal 130 contains a code symbol 249 but that code symbol 249 is not fully received, one of correlators 393 will output a correlation output 395 that is statistically significantly higher than the others. This lack of correlation between code symbols 249 in a codeset 325 is a property of using pseudorandom noise to generate the code symbols 249.

[0068] Decoding step 350 may also optionally include the use of what we refer to as a memory array layer 390. A memory array layer 390 Is a data storage component of a system Implementing CMSS method 300. in the exemplary embodiment shown in Fig. 3C, a memory array layer 390 is an array or an associative array data structure that links binary data 311 with an associated data structure such as data structures 399A-F, Data structures 399A-F are unique data structures containing one or more units ofbinary data 311 or one or more units of predetermined data (e.g., user information, images, location data, or other data). In other embodiments, memory array layer 390 may be a SQL database and data structures 399A-F may be any type of data capable of being stored in a SQL database. A memory array layer 390 may have any number of data structures 399A-F. Thus, binary data 311 transmitted in CMSS method 300, predetermined data, or some combination thereof, may be stored in a data structure such as data structures 399A-F of memory array layer 390, Iterations of CMSS method 300 may transmit a code symbol 249 that directs decoding step 350 to use the binary data 311 to access data in the memory array layer 390 to obtain data stored in the memory array layer 390 (e.g., to obtain a particular one or more of data structures 399A-F). In this fashion, a code symbol 249 may transmit coordinates for (i.e., a pointer to) a location in a memory array layer 390, allowing a small amount of binary data 311 to cause a larger amount of data to be loaded for use by the receiving system such as ground radio system 115 or satellite radio system 125.

[0069] In some embodiments, decoding step 350 may also include the step of decoding extraneous data 312 from signal 130 after binary data 311 has been obtained.

[0070] In some embodiments, decoding step 350 may also use correlators 393 to obtain and use phase information to determine the range of signal 130 (i.e., the distance signal 130 has traveled).

[0071] According to the techniques and steps outlined above, CMSS method 300 may be performed for multiple signals 130 at the same time: (a) using the same or different codesets 325; and (b) using the same or different center frequency 212 and occupied bandwidth 210. Furthermore, because CMSS method 300 is resistant to increasing levels of noise, and further because multiple signals 130 being broadcast at the same time serve to increase the level of noise perceived by a receiving system, CMSS method 300 we speculate is particularly well suited for simultaneous transmission of multiple channels of data over the same bandwidth. Such simultaneous transmission may be performed, for example, between a first ground radio system 115 and a second ground radio system 115 or between a firstplurality of ground radio systems 115 and a second plurality of ground radio systems 115. In other words, multiple signals 130 sent on the same bandwidth may be sent using the same ground radio system 115 or using a plurality of different ground radio systems 115.

[0072] Figs. 4A-C illustrate spectral power density graphs for Blackman-Harris window function of a simulated signal 130 transmitting a code symbol 249 using CMSS method 300 at various power levels and with various levels of noise. The simulated embodiment uses a 12.8 kHz BPSK waveform., does not apply any extraneous data 312 using traditional methods outlined above, and applies code symbols 249 directly to the base waveform at 128 kHz, thereby producing a signal 130 that has an occupied bandwidth of approximately 128 kHz.

[0073] Fig. 4A shows signal 130 having a first peak power 441 of approximately -36 dB transmitted against a first noise floor 451 of approximately -105 dB. Fig. 48 shows signal 130 having a second peak power 442 of approximately -60 dB transmitted against a second noise floor 452 of approximately -86 dB. Thus, Fig. 4B shows signal 130 being transmitted with a lower signal-to-noise ratio than shown in Fig. 4A. Fig. 4C shows signal 130 having a third peak power 443 of approximately -48 dB transmitted against a third noise floor 453 of approximately -58 dB. Thus, Fig. 4C shows signal 130 being transmitted with a lower signal-to-noise ratio than shown in Fig. 4B. CMSS method 300, we speculate, is capable of reliable operation in all three examples. We speculate that using CMSS method 300 for recovery of code symbols 249, and thus recovery of binary data 311, further signal to noise ratio (SNR) improvements will be made beyond a DSSS system.

[0074] The simulated embodiments discussed herein were implemented using gnuradio 3.10.7 which is a free & open-source software development toolkit that provides signal processing blocks to implement software radios. In experiments testing CMSS method 300, gnuradio is used both alongside software- defined radio (SDR) hardware for over the air experiments, or without SDR hardware for a simulationlike environment. Existing gnuradio blocks are utilized for BPSK data generation, input data streams,filtering, correlators, estimators and sinks for viewing and debugging purposes. This simulation mode! also uses the in-built channel model to modify the path loss or noise level. There are custom blocks that implement portions of CMSS method 300, e.g., entering binary data for conversion to code symbols (via keyboard and / or over UDP / IP networks) - as well as the decoding step 350 (i.e., demodulation) which uses cross correlation outputs (i.e., correlation outputs 395) to determine received symbol decisions,

[0075] Fig, 5A shows first symbol 503, second symbol 504, first correlator 505, second correlator 506, first correlation output 507, and second correlation output 508. First symbol 503 is a code symbol 249, and second symbol 504 is a different code symbol 249. First correlator 505 is a correlator 393 configured to correlate against first symbol 503 to produce first correlation output 507, and second correlator 506 is a correlator 393 configured to correlate against second symbol 504 to produce second correlation output 508. First correlation output 507 and second correlation output 508 are both correlation outputs 395.

[0076] Fig, 5B shows correlation output graph 500 at an instant in time, which has correlation output axis 501 and time axis 502. Correlation output graph depicts a first time series 510, which shows a time sequence of first correlation output 507 a second time series 520 showing a time sequence of second correlation output 508. Values towards the right of correlation output graph occurred between 0 and about 620 milliseconds prior to the instant in time shown by correlation output graph 500.

[0077] As shown, both first time series 510 and second time series 520 vary along time axis 502. This variation is because first correlator 505 and second correlator 506 vary slightly as they correlate against noise. However, when first correlator 505 correlates against first symbol 503, first correlation output 507 increases significantly; and, when second correlator 506 correlates against second symbol 504, second correlation output 508 increases significantly. First symbol detections 515 show this significant increase in first correlation output 507 as first symbol 503 is transmitted at approximately 75ms and160ms prior to the time shown by correlation output graph 500. Second symbol detections 525 showthis significant increase in second correiation output 508 as second symbol 504 is transmitted at approximately 555 and 620 milliseconds prior to the time shown by correlation output graph 500.

[0078] When first correlation output 507 is above a threshold 530, CMSS method 300 determines that first symbol 503 has been detected; and when second correiation output 508 is above a threshold 530, CMSS method 300 determines that second symbol 504 has been detected.

[0079] In an exemplary embodiment, CMSS method 300 determines threshold 530 by performing a statistical analysis of first time series 510 and second time series 520 and determining the value at which any given first correlation output 507 or any given second correlation output 508 corresponds to a transmission of first symbol 503 or second symbol 504, respectively, with a statistical confidence value.

[0080] In one such exemplary embodiment, CMSS method 300: [a] first determines a sample window whereby CMSS method 300 considers only a limited number of the most recent correlation outputs 395; (b) then uses all correlation outputs 395 within the sample window to calculate an average correlation output 395 and a standard deviation of the correlation output 395; and (c) sets threshold 530 to a value that is 2.6 standard deviations above the average correlation output 395, thereby determining a code symbol 249 has been detected only if a correlation output 395 is in the 9931percentile of the sample window.

[0081] In some exemplary embodiments, the sample rate of the receiving radio system (such as ground radio system 115, satellite radio system 125, first vehicle radio system 615, or second vehicle radio system 625) is a multiple of the sample rate of the transmitting radio system (such as ground radio system 115, satellite radio system, first vehicle radio system 615, or second vehicle radio system 625). This multiple Is referred to as the "oversampling rate." In some of these exemplary embodiments, the sample window size is the code length 252 multiplied by the oversampling rate. Thus, in an embodiment using a code length of 1024 and an oversampling rate of 4, the sample window contains4,096 samples for each correlator 393.

[0082] In some exemplary embodiments, the average and standard deviation are calculated for each correlator 393; and in other exemplary embodiments the average and standard deviation are calculated collectively for all correlators 393.

[0083] In another exemplary embodiment, the number of standard deviations above the average correlation output 395 is varied based on a desired confidence, appropriate for a given application.

[0084] Fig. 6 shows vehicie-towehicle communications system 600. Vehicle-to-vehicle communications system 600 is an exemplary embodiment CMSS method 300. Vehicle-to-vehicle communications system 600 comprises first vehicle system 610, second vehicle system 620, and V2V signal 630. First vehicle system 610 comprises first vehicle 611, first vehicle radio system 615, and first vehicle antenna 616. Second vehicle system 620 comprises second vehicle 621, second vehicle radio system 625, and second vehicle antenna 626. V2V Signal 630 is a signal 130 (and we use V2V as an abbreviation for "vehicle to vehicle")

[0085] First vehicle radio system 615 and second vehicle radio system 625 are computer systems that are configured to, and which are capable of, calculating, generating, and transmitting electromagnetic radiation to produce V2V signal 630. First vehicle radio system 615 and second vehicle radio system 625 are also computer systems that are configured to, and which are capable of, detecting, receiving, and decoding signal V2V 630. First vehicle radio system 615 includes first vehicle SDR 617 and second vehicle radio system 625 includes second vehicle SDR 627, each of which are software defined radios (SDRs) which are each respectively configured to transmit and / or receive V2V signal 630 and to perform some or ail of the functions of first vehicle radio system 615 and second vehicle radio system 625. Each of first vehicle SDR 617 and second vehicle SDR 627 may be one SDR or may be multiple SDRs.

[0086] This process of calculating, generating, and transmitting a V2V signal 630, and then detecting, receiving, and decoding V2V signal 630 may be repeated with different information in each instance ofV2V signa! 630. First vehicle radio system 615 and second vehicle radio system 625 may each includeone or more software defined radios (SDRs) which are each respectively configured to transmit and / or receive V2V signal 630 as described in more detail herein. V2V signa! 630 may be an amplified signal. V2V signal 630 may be emitted and / or received through first vehicle antenna 516 or second vehicle antenna 626, respectively.

[0087] In an exemplary embodiment of vehicle to vehicle communications system 500 implementing CMSS method 300, part of the binary data 311 input into CMSS method 300 in inputting step 310 includes position identifier information. Thus, position identifier information is included in one or more V2V signals 630. Position identifier information is the position of the first vehicle 611 or second vehicle 621 that is transmitting V2V signal 630 (although both may transmit and both may transmit simultaneously). Relevant implementations of CMSS method 300 on vehicle to vehicle communications system 600 may choose to detect only code symbols 249 that contain position information for transmitting vehicles near a receiving first vehicle 611 or second vehicle 621.

[0088] Various embodiments of CMSS method 300 may be more or less well suited to certain applications. For example, point-to-point applications such as between a first ground radio system 115 and a second ground radio system 115 or between a first ground radio system 115 and a satellite radio system 125, it may be advantageous to implement a more sophisticated codeset creation step 315 whereby multiple code families are combined, for example, a combination two or more of: Gold codes, Kasami codes, Weil codes, and Walsh codes may be used to create what we speculate is an obscure code, thereby creating security through obscurity- Alternatively, because code symbols 249 with longer code length 252 require more processing power to correlate, various applications desiring lower processing requirements may use code symbols 249 having a shorter code length 252, Embodiments such as vehicle communications system 600 may broadcast at such lower power so as to allow reception only by nearby cars; and, in this type of environment, where security may be less of a priority, it may be advantageous to use code symbols 249 having a shorter code length 252. Additionally, it may beadvantageous to optimise code length 252 for various radii of transmission, with the longer range communications using Songer code lengths 252. For communication systems 100 involving a satellite radio system 125, there is a large Sink margin to be overcome; therefore making it advantageous to useSonger code lengths 252.

[0089] Parts List:

Claims

Claims1. A method for transmitting a series of units of binary data from a set of units of binary data using radio telecommunications equipment comprising the steps of: a. choosing a plurality of code symbols to form a set of code symbols, wherein each said code symbol has a code length, each said code symbol comprises a number of binary values equal to said code length, and each unit of binary data in said set of units of binary data is associated with at least one of said code symbols in said set of code symbols; b. obtaining a next unit of binary data from said series of units of binary data; c. selecting, from said set of code symbols, a next code symbol, wherein said next code symbol is associated with said next unit of binary data; d. spreading said next code symbol on a waveform to produce an encoded waveform; and e. transmitting said encoded waveform at a first power level; f. receiving said encoded waveform; g. performing a correlation on said encoded waveform for a plurality of code symbols in said set of code symbols to produce a set of correlations; and h. decoding a decoded unit of data based on said set of correlations, wherein said decoded unit of data is equal to said next unit of binary data,2. The method of claim 1, wherein each said next unit of binary data contains between 8 and 32 bits,3. The method of claim 2, wherein said performing step is performed using a plurality of correlators wherein each of said plurality of correlators is uniquely associated with one of said code symbols in said set of code symbols.

4. The method of claim 3, wherein said code length for each said code symbol in said set of code symbols is between 32 and 65,536.

5. The method of claim 4, wherein said first power level is no more than lOdb above a noise floor.

6. The method of claim 5, wherein said decoding step comprises calculating a confidence value for each correlation in said set of correlations, comparing each such confidence value to a threshold, and determining said decoded unit of data based on a highest such confidence value that exceeds said threshold.

7. The method of claim 6, wherein said binary data includes one or more parity bits; wherein said decoding step comprises the step of calculating an error rate based on said one or more parity bits; and wherein said method further comprises the step of adjusting one or more of said first power level, said threshold, and said code length.

8. The method of claim 3, wherein said code length for each of said plurality of code symbols defines an excess code length relative to said set of units of binary data and said excess code length is at least 24.

9. A communications system comprising: a processor; a software defined radio operatively coupled to said processor, a memory operatively coupled to said processor, and an antenna operatively coupled to said software defined radio, wherein said memory comprises instructions that, when executed by said processor, configure said communications system to: a. obtain a first next unit of binary data from a first series of units of binary data; b. choose a plurality of code symbols to form a first set of code symbols, wherein each said code symbol has a first code length, each said code symbol comprises a number of binary values equal to said first code length, and each unit of said first series of units of binary data is associated with at least one of said code symbols in said first set of code symbols;c. select, from said first set of code symbols, a first next code symbol, wherein said first next code symbol is associated with said first next unit of binary data; d. spread said first next code symbol on a first waveform to produce a first encoded waveform; and e. transmit said encoded waveform at a first power level.

10. The communications system of claim 9, wherein said memory comprises instructions that, when executed by said processor, configure said communications system to: a. receive said first encoded waveform; b. correlate said first encoded waveform for a plurality of said code symbols in said first set of code symbols to produce a first set of correlations; and c. decode a first decoded unit of data based on said first set of correlations.

11. The system of claim 10, wherein each said first next unit of binary data contains between 8 and 32 bits.

12. The system of claim 11, wherein performing said correlation is performed using a plurality of correlators wherein each of said plurality of correlators is uniquely associated with one of said code symbols in said first set of code symbols.

13. The system of claim 12, wherein said first code length for each said code symbol in said first set of code symbols is between 32 and 65,536.

14. The system of claim 13, wherein said first power level is no more than lOdb above a noise floor.

15. The system of claim 14, wherein said decoding step comprises calculating a confidence value for each correlation in said first set of correlations, comparing each such confidence value to a threshold, and determining said first decoded unit of data based on a highest such confidence value that exceeds said threshold.

16. The system of claim 10, wherein said memory comprises instructions that, when executed by said processor, configure said communications system to: a. obtain a second next unit of binary data from a second series of units of binary data; b. choose a second set of code symbols, wherein each said code symbol in said second set of code symbols has a second code length, each said code symbol comprises a number of binary values equal to said second code length, and each unit of said second series of units of binary data is associated with at least one code symbol in said second set of code symbols; c. select, from said second set of code symbols, a second next code symbol, wherein said second next code symbol is associated with said second next unit of binary data; d. spread said second next code symbol on a second waveform to produce a second encoded waveform; e. transmit said second encoded waveform at a second power level; f. receive said second encoded waveform; g. correlate on said second encoded waveform for each said code symbol in said second set of code symbols to produce a second set of correlations; and h. decode a second decoded unit of data based on said second set of correlations.

17. The system of claim 16, wherein said first encoded waveform and said second encoded waveform are received together as a joint waveform.

18. The system of claim 17, wherein each said first next unit of binary data contains between 8 and 32 bits and wherein each said second next unit of binary data contains between 8 and 32 bits.

19. The system of claim 18, wherein performing said correlation is performed using a plurality of correlators wherein each of said plurality of correlators is uniquely associated with one of saidcode symbols in said first set of code symbols or one of said code symbols in said second set of code symbols.

20. The system of claim 19, wherein said first code length for each said code symbol in said first set of code symbols is between 32 and 65,536 and wherein said second code length for each said code symbol in said second set of code symbols is between 32 and 65,536.

21. The system of claim 20, wherein said first power level is no more than lOdb above a noise floor.

22. The system of claim 21, wherein said decoding step comprises calculating a first confidence value for each correlation in said first set of correlations, comparing each such confidence value to a first threshold, and determining said first decoded unit of data based on a highest such confidence value that exceeds said first threshold; and wherein said decoding step comprises calculating a second confidence value for each correlation in said second set of correlations, comparing each such confidence value to a second threshold, and determining said second decoded unit of data based on a maximum such confidence value that exceeds said second threshold.

23. The system of claim 13, wherein said first code length for each of said first plurality of code symbols defines a first excess code length relative to said set of units of binary data and said first excess code length is at least 24.

24. The system of ciaim 20, wherein said first code length for each of said first plurality of code symbols defines a first excess code length relative to said set of units of binary data, wherein said second code length for each of said second plurality of code symbols defines a second excess code length relative to said set of units of binary data, and said first excess code length and said second excess code length are both at least 24.