Patent Publication Number: US-9853837-B2

Title: High bit-rate magnetic communication

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims the benefit of priority under 35 U.S.C. §119 from U.S. Provisional Patent Application 61/976,009, filed Apr. 7, 2014, which is incorporated herein by reference in its entirety. 
    
    
     FIELD OF THE INVENTION 
     The present invention generally relates to communications and, more particularly, to high bit-rate magnetic communication. 
     BACKGROUND 
     As radio-frequency (RF) and optical electromagnetic signals do not propagate well under the ocean surface or through land, alternative communication methods are to be used for these environments. There are multiple alternative options, each having advantages and disadvantages. Therefore, different approaches may be taken depending on applications. For example, some applications may use a tether to communicate by wire or optical fiber, which can impose maneuvering limits or hazards involving physical contact with vehicles or structures. As another example, acoustic communications are often used, but are affected by multipath and shallow-water resonances, with the consequence that robust acoustic communications have a very low bit rate. Yet, another candidate can be near-field magnetic communications, which works with low-frequency signals, to be measurable at longer ranges thereby limiting bit rate, and signals which have a rapid drop off in signal strength at longer ranges. 
     Traditional modulation schemes used in magnetic communications have a low bit-rate for a given range. If the bit rate could be increased substantially, a variety of applications could benefit from these traditional modulation schemes. For example, one motivating application is the use of unmanned underwater vehicles (UUV) for sensing tasks underwater, such as oil rig inspection or sea-floor pipeline, or well-head inspection. Currently, most data is stored until the vehicle surfaces, meaning that operators have little awareness of how the mission is proceeding and little ability to influence its course, such as re-inspecting an area of interest, or recognizing that the UUV has incorrectly identified a rock as a well head. Another motivating example is a stationary sensor on the ocean floor, which needs to send data to the surface or to a passing underwater vehicle when the opportunity arises. 
     SUMMARY 
     In some aspects, a magnetic communications transmitter includes a magnetic field generator and a controller. The magnetic field generator is configured to generate a magnetic field. The controller is configured to control the magnetic field generator by controlling an electrical current supplied to the magnetic field generator, and causing the magnetic field generator to generate an optimized variable amplitude triangular waveform. 
     In another aspect, a magnetic communications receiver includes a magnetic field sensor and a signal processor. The magnetic field sensor is configured to sense a modulated magnetic field. The signal processor is configured to demodulate the sensed modulated magnetic field. The modulated magnetic field comprises an optimized variable amplitude triangular waveform. 
     In yet another aspect, a method for facilitating magnetic communications includes providing a magnetic field generator that is configured to generate a magnetic field. A controller is provided that is configured to control the magnetic field generator by controlling an electrical current supplied to the magnetic field generator, and causing the magnetic field generator to generate an optimized variable amplitude triangular waveform. 
     The foregoing has outlined rather broadly the features of the present disclosure in order that the detailed description that follows can be better understood. Additional features and advantages of the disclosure will be described hereinafter, which form the subject of the claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of the present disclosure, and the advantages thereof, reference is now made to the following descriptions to be taken in conjunction with the accompanying drawings describing specific embodiments of the disclosure, wherein: 
         FIGS. 1A-1B  are diagrams illustrating examples of a high-level architecture of a magnetic communication transmitter and a schematic of a circuit of a controller, according to certain embodiments; 
         FIGS. 2A-2B  are diagrams illustrating examples of a high-level architecture of a magnetic communication receiver and a set of amplitude modulated waveforms, according to certain embodiments; 
         FIG. 3  is a diagram illustrating an example of a method for providing a magnetic communication transmitter, according to certain embodiments; 
         FIG. 4  is a diagram illustrating an example of a data frame of a magnetic communication transmitter, according to certain embodiments; 
         FIG. 5  is a diagram illustrating an example of motion compensation scheme, according to certain embodiments; 
         FIGS. 6A-6B  are diagrams illustrating examples of throughput results with turning, rolling and tow-frequency compensation, according to certain embodiments; 
         FIG. 7  is a diagram illustrating an example adaptive modulation scheme, according to certain embodiments; 
         FIGS. 8A through 8C  are diagrams illustrating components for implementing an example technique for multiple channel resolution, according to certain embodiments; 
         FIGS. 9A-9B  are diagrams illustrating single channel throughput variations versus transmitter-receiver distance, according to certain embodiments; 
         FIGS. 10A-10B  are diagrams illustrating simulated performance results, according to certain embodiments; and 
         FIG. 11  is a diagram illustrating an example of a system  1100  for implementing some aspects of the subject technology. 
     
    
    
     DETAILED DESCRIPTION 
     The detailed description set forth below is intended as a description of various configurations of the subject technology and is not intended to represent the only configurations in which the subject technology may be practiced. The appended drawings are incorporated herein and constitute a part of the detailed description. The detailed description includes specific details for the purpose of providing a thorough understanding of the subject technology. However, it will be clear and apparent to those skilled in the art that the subject technology is not limited to the specific details set forth herein and may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring the concepts of the subject technology. 
     The present disclosure is directed, in part, to a high bit-rate magnetic communications transmitter that is capable of transmitting magnetic field waves with an optimized waveform. The optimized waveform includes an amplitude modulated triangular waveform. The disclosure is also directed to a high bit-rate magnetic communications receiver including a magnetic sensor, such as diamond nitrogen-vacancy (DNV) sensor, and a signal processor that can demodulate the amplitude modulated triangular waveform. In some implementations, the receiver of the subject technology is enabled to perform motion compensation, for example, compensation for rotations in Earth&#39;s magnetic field. The subject technology achieves a significantly higher bit-rate than other magnetic communications approaches by leveraging the high sensitivity and small form factor of the DNV sensors and utilizing modern signal processing that has made amplitude-dependent coherent modulation a practical reality for high bit rates. Other advantageous features of the disclosed solution include optimized waveform for the magnetic scenario, magnetic-specific error removal, and an optional adaptation scheme and polarity scheme. 
       FIGS. 1A-1B  are diagrams illustrating examples of a high-level architecture of a magnetic communication transmitter  100 A and a schematic of a circuit  100 B of a controller, according to certain embodiments. It is understood that he nearly-universal method of creating a variable magnetic field is by passing current through a coil of wire. The magnetic communication transmitter (hereinafter “transmitter”)  100 A includes a magnetic field generator  110  and a controller  120 . The magnetic field generator  100  includes a magnetic coil and generates a magnetic field, which is proportional to an electrical current (hereinafter “current”) passing through the coil. The controller  120  controls the current provided to the magnetic field generator and can cause the magnetic field generator to generate an optimized waveform. 
     Electrically, the coil is an inductor with some loss that can be modeled as a series resistance. The series resistance may place the following constraints on the design. First, the rate of change of the magnetic field has an upper bound corresponding to the maximum voltage available in drive circuit of the coil, because the derivative of the current is proportional to the voltage across the inductor. This also implies that the magnetic field and current are continuous functions. The optimized waveform is considered to be a waveform that when received and processed by the receiver can result in a desirable signal-to-noise ratio. 
     It is understood that the desirable signal-to-noise ratio can be achieved when the modulation signal has the largest L 2  norm (e.g., the differences between the signals for different symbol values have the largest L 2  norm), and with a rate limited signal. The rate limited signal has a waveform that, in the maximum amplitude case, has a ramp-up derivative equal to a maximum positive derivative, and a ramp-down derivative equal to the maximum negative derivative. Therefore, the subject technology uses, as a basis function, a triangle wave with an optional sustain. The triangular waveform ramps up, can sustain at its peak value, then ramps down. With no sustain, triangular waveform is a ramp-up and ramp-down, and for a given fixed symbol interval and given the rate limit, that would be a desirable waveform. If, however, there is also some reason to impose an inductor current limit that would be exceeded by a maximum ramp-up of the current for half the duration of the symbol interval, then the ramp up would be stopped at the current level and the magnitude would be sustained, and then ramped down proceeds at the maximum rate to zero. To be able to start each successive symbol transmission at the same starting point regardless of the value of the successive symbols, each symbol must start with the same magnetic field strength and must end with that same field strength (e.g., for the required continuity). 
     The controller  120  is responsible for providing the current to the magnetic coil of the magnetic field generator  110  such that the generated magnetic field has the optimized triangular waveform. In some embodiments, the controller includes the circuit  100 B, the schematic of which is shown in  FIG. 1B . The circuit  100 B includes switches (e.g., transistors such as bipolar or other transistor type or other switches) T 1  and T 2 , diodes D 1  and D 2 , an inductor L, capacitors C 1  and C 2 . The inductor L is the magnetic coil of the magnetic field generator  110 . A current i of the inductor L of the magnetic coil is controlled by the transistors T 1  and T 2 . The capacitor C 1  is precharged to +Vp voltage, as shown in  FIG. 1B . The circuit  100 B can be operated in four phases. 
     In a first phase, when the transistor T 1  is on and transistor T 2  is off, the capacitor C 1  is discharged through the transistor T 1  (e.g., an NPN transistor) and the inductor L, which provides an increasing positive current i through the inductor L. In a second phase, the transistors T 1  and T 2  are off, the capacitor C 2  is charged through the diode D 2  and the inductor L, which provides a decreasing positive current i through the inductor L In a third phase, the transistor T 1  is off and the transistor T 2  is on, the capacitor C 2  is discharged through the transistor T 2  and the inductor L, which provides a decreasing negative current i through the inductor L. Finally, in a fourth phase, both transistors T 1  and T 2  are off and the capacitor C 1  is charged through the diode D 1  and the inductor L, which provides an increasing negative current i through the inductor L. 
     More detailed discussion of circuit  100 B and other implementations of the controller  120  can be found in a separate patent application entitled “Energy Efficient Magnetic Field Generator Circuits,” by the applicants of the present patent application, filed on the same date with the present patent application. 
       FIGS. 2A-2B  are diagrams illustrating examples of a high-level architecture of a magnetic communication receiver  200 A and a set of amplitude modulated waveforms  200 B, according to certain embodiments. The magnetic communication receiver (hereinafter “receiver”)  200 A includes a magnetic field sensor  210  and a signal processor  220 . The magnetic field sensor  210  is configured to sense a magnetic field and generate a signal (e.g., an optical signal or an electrical signal such as a current or voltage signal) proportional to the sensed magnetic field. In one or more implementations, the magnetic field sensor  210  may include a DNV sensor. 
     Atomic-sized nitrogen-vacancy (NV) centers in diamond lattices have been shown to have excellent sensitivity for magnetic field measurement and enable fabrication of small (e.g., micro-level) magnetic sensors that can readily replace existing-technology (e.g., Hall-effect) systems and devices. The DNV sensors are maintained in room temperature and atmospheric pressure and can be even used in liquid environments. A green optical source (e.g., a micro-LED) can optically excite NV centers of the DNV sensor and cause emission of fluorescence radiation (e.g., red light) under off-resonant optical excitation. A magnetic field generated, for example, by a microwave coil can probe degenerate triplet spin states (e.g., with m s =−1, 0, +1) of the NV centers to split proportional to an external magnetic field projected along the NV axis, resulting in two spin resonance frequencies. The distance between the two spin resonance frequencies is a measure of the strength of the external magnetic field. A photo detector can measure the fluorescence (red light) emitted by the optically excited NV centers and generate an electrical signal. 
     The signal processor  220  may include a general processor or a dedicated processor (e.g., a microcontroller). The signal processor  220  includes logic circuits or other circuitry and codes configured to implement coherent demodulation of a high-bit rate amplitude modulated signals, such as a high-bit rate amplitude modulated triangular waveform. An example of an amplitude modulated triangular waveform is shown in  FIG. 2B . The amplitude modulated triangular waveform  200 B of  FIG. 2B  includes a high-amplitude (e.g., full-amplitude) positive triangular waveform  232 , a low-amplitude positive triangular waveform  234 , a tow-amplitude negative triangular waveform  236 , and high-amplitude negative triangular waveform  238 . These waveforms are desirable for representing various symbols of a 2-bit representation of data. For example, the waveforms  232 ,  234 ,  236 , and  238  can be used to represent 11, 10, 01, and 00 symbols of the 2-bit representation of data. The waveforms  232 ,  234 ,  236 , and  238  can provide an optimized signal-to-noise ratio (SNR), and due to their continuity, can be readily generated by using a practical voltage supply, as shown for example, by the circuit  100 B of  FIG. 1B . The amplitude of the waveforms  232 ,  234 ,  236 , and  238  are selected to make the spacing between the subsequent symbols as large as possible by the L 2  metric. For example, a partial amplitude waveform (e.g.,  234  or  236 ) may be chosen to have an amplitude that is ⅓ of the amplitude of a high-amplitude waveform (e.g.,  232  or  238 ). 
       FIG. 3  is a diagram illustrating an example of a method  300  for providing a magnetic communication transmitter, according to certain embodiments. The method  300  includes providing a magnetic field generator (e.g.  110  of  FIG. 1A ) configured to generate a magnetic field ( 310 ). A controller (e.g.  120  of  FIG. 1A ) is provided that is configured to control the magnetic field generator by controlling an electrical current (e.g. i of  FIG. 1B ) supplied to the magnetic field generator and causing the magnetic field generator to generate an optimized variable amplitude triangular waveform (e.g.  200 B of  FIG. 2B ) ( 320 ). 
       FIG. 4  is a diagram illustrating an example of a data frame  400  of a magnetic communication transmitter, according to certain embodiments. The data frame  400  includes data portions  402  and  404  and one or more auxiliary portions. The data portions  402  and  404  include data symbols, for example, 11, 00, 10, and 01 symbols. The auxiliary portions include MAX and OFF symbols  410  and  420 . In one or more implementations, the MAX symbol  410  can be a 11 symbol, and the OFF symbol  420  may represent a no symbol interval, which provides an opportunity for synchronization and background field measurement and removal, as explained in more details herein. The calibration and background field removal are critical aspects of the subject technology. The MAX symbol  410  is used to enable the receiver to perform synchronization and calibration of the received signal. The calibration, for example, can correct for the rotation of the sensor relative to the Earth&#39;s magnetic dipole, which results in some change in the background signal. 
       FIG. 5  is a diagram illustrating an example of motion compensation scheme  500 , according to certain embodiments. Motion compensation is an important aspect of the subject disclosure, as the Earth&#39;s magnetic field is a significant part of the background noise in any magnetic field sensing. If the sensor is moving (e.g., rotating) relative to the Earth&#39;s magnetic field vector, the measured signal (e.g.,  510  corresponding to a rotation rate of 0.1 rad/s) can significantly deviate from the measured magnetic signal without rotation (e.g.,  520 ). The subject technology allows for measurement and subtraction of this time varying background while the magnetic signal is analyzed. The OFF symbol intervals  420 ,  422 , and  424  can be used for measurement of the background noise. As seen from  FIG. 5 , the value of the measured signal  510  at OFF symbol intervals  420 ,  422 , and  424  are substantially different from the respective values of the measured signal  520  (e.g., without rotation). These differences at different OFF symbol intervals can be fitted to linear or spline curves and be used to calibrate the signal for motion compensation, for example, by subtraction of the measured background noise from the actual measured signal. 
       FIGS. 6A-6B  are diagrams illustrating examples of throughput results with turning, rolling and tow-frequency compensation, according to certain embodiments. In the diagram  600 A of  FIG. 6A , plot  610  corresponds to no rotation compensation that results is undesirably low throughput values (in kbits/sec), which rapidly turn to zero as the transmitter-to-receiver distance is increased to nearly 200 meters. Plots  620  and  630  correspond to turning of the sensor at 0.1 rad/sec, where measure data are compensated for the motion (e.g., as described above) using linear and spline compensations, respectively. The spline compensation is seen to completely remove rotation effects on bit rate. Not shown here for simplicity, are the removal of all effects of low frequency (e.g., &lt;0.1 Hz) environmental noise and low frequency self-noise (e.g., &lt;5 Hz). In some implementations, the 60 cycle hum and its 120 Hz harmonic can be removed by using notch filters. 
     In the diagram  600 B of  FIG. 6B , plots  612 ,  622 , and  632  are for similar circumstances as plots  610 ,  620 , and  630  of  FIG. 6A , except that the sensor motion is rolling at a higher rate (e.g., 0.3 rad/sec). The spline compensation is seen to be more effective in removing the effects of rolling on bit rate than the linear compensation. 
       FIG. 7  is a diagram illustrating an example adaptive modulation scheme  700 , according to certain embodiments. The adaptive modulation scheme  700  uses an adaptive modulation technique, which is different form the commonly used techniques in other communication media such as RF communication. The subject technology uses period extension to perform adaptive modulation. It is understood that as the performance is degraded due to noise (e.g., SNR is decreased), discriminating various levels  720  denoted by symbols 00, 01, 10, and 11 can be difficult. In other words, the correlation of the measured points  715  with the basis function  710  (e.g., a triangular waveform) may not match one of the expected values (e.g., denoted by symbols 00, 01, 10, and 11). When mismatches are too large relative to amplitude spacings, the receiver can signal for either fewer amplitude levels (e.g., lower performance such as two-level resolution) or longer symbol intervals (e.g., lower bit rate). Conversely, when the mismatches are small, the amplitude levels can be increased (e.g., better resolution performance) or the symbol intervals can be decreased (e.g., higher bit rate). The adaptive modulation may, for example, be implemented by extending the symbol period as shown by the symbol (e.g., basis function)  730 , which has an extended period as compared to the basis function  710 . 
       FIGS. 8A through 8C  are diagrams illustrating components for implementing an example technique for multiple channel resolution, according to certain embodiments. The use of DNV sensors for the receivers of the subject technology allows simultaneous receiving of multiple channel (e.g., up to three) channels transmitted by three different transmitters that are synchronous and cooperative in time, but transmit with different magnetic field (B) orientations. This enables up to three times higher performance of a single channel alone. The magnetic fields of the three transmitters in the coordinate system  800 A of  FIG. 8A , where magnetic vectors  810 ,  820 , and  830  correspond to the fields transmitted by the three transmitters, which form the resultant combined vector  850 . 
     The subject technology uses frame formatting to support the multiple channels scheme. For example, MAX symbols (e.g.,  812 ,  814 , and  816 ) of a data frame  800 B of  FIG. 8B  are used to indicate which of the three transmitters is transmitting. For instance, the MAX symbol  812  indicates that first transmitter is transmitting and the all other transmitters are off. Similarly, MAX symbols  814  and  816  indicate that one of the second or the third transmitters is transmitting, respectively. This information assists the receiver to estimate the corresponding magnetic field (e.g., B i ) vector of the transmitting transmitter (e.g. the i th  transmitter). To resolve a magnetic field B into individual channels, as shown in a matrix equation  8 C of FIG,  8 C, the basis matrix C+ transforms the measurements from the {X,Y,Z} basis into the {B 1 ,B 2 , B 3 } basis. The full performance can be achieved when the matrix C+ has full rank, which happens when all transmitter B fields are mutually orthogonal. In case the B fields are highly co-linear, C+ matrix may become singular and magnify any noise present, thereby degrading the performance. The elements of the C+ matrix are projections of the measured magnetic field of each transmitter B i  fields over the X, Y, and Y axes. For example, B i,y  is the projection of the measured B i  fields over the Y axis, and B i,x , B i,y , and B i,z  define the angle of arrival of the i th  transmitter. The angle of arrival of each transmitter is a vector that is in the direction of the polarization of the B-field vector for that transmitter. The elements of the channels vector give the channel data that each transmitter has actually transmitted. 
       FIGS. 9A-9B  are diagrams illustrating single channel throughput variations  900 A and  900 B versus transmitter-receiver distance, according to certain embodiments. The plots  900 A and  900 B shown in  FIGS. 9A and 9B  are single channel (e.g., with no orthogonal frequency division multiplexing (OFDM) and no 3D-vector multiplexing) simulation results in open air for bit-error rates less than approximately one percent, using existing DNV detectors. The period of the triangular waveform is allowed to vary from 60 to 500 microseconds. The plot  900 B shown in  FIG. 9B  is a zoom-in of the plot  900 A in  FIG. 9A  for closer look. 
       FIGS. 10A-10B  are diagrams illustrating simulated performance results  1001 A and  1000 B, according to certain embodiments. The simulated performance results  1000 A and  1000 B are 2-dimensional plots showing single channel throughput results (in Kbps) as the DNV sensor quantization level and transmitter magnetic field B (in Tesla at 1 meter) are varied. The results  1000 A and  1000 B are, respectively, for 100 m and 500 meter distance between the receiver and the transmitter. The quantization levels define the resolution of the DNV sensors. 
       FIG. 11  is a diagram illustrating an example of a system  1100  for implementing some aspects of the subject technology. The system  1100  includes a processing system  1102 , which may include one or more processors or one or more processing systems. A processor can be one or more processors. The processing system  1102  may include a general-purpose processor or a specific-purpose processor for executing instructions and may further include a machine-readable medium  1119 , such as a volatile or non-volatile memory, for storing data and/or instructions for software programs. The instructions, which may be stored in a machine-readable medium  1110  and/or  1119 , may be executed by the processing system  1102  to control and manage access to the various networks, as well as provide other communication and processing functions. The instructions may also include instructions executed by the processing system  1102  for various user interface devices, such as a display  1112  and a keypad  1114 . The processing system  1102  may include an input port  1122  and an output port  1124 . Each of the input port  1122  and the output port  1124  may include one or more ports. The input port  1122  and the output port  1124  may be the same port (e.g., a bi-directional port) or may be different ports. 
     The processing system  1102  may be implemented using software, hardware, or a combination of both. By way of example, the processing system  1102  may be implemented with one or more processors. A processor may be a general-purpose microprocessor, a microcontroller, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a Programmable Logic Device (PLD), a controller, a state machine, gated logic, discrete hardware components, or any other suitable device that can perform calculations or other manipulations of information. 
     In one or more implementations, the transformation means (e.g., algorithms) and the signal processing of the subject technology may be performed by the processing system  1102 . For example, the processing system  1102  may perform the functionality of the signal processor  220  of  FIG. 2A  or perform the matrix operation  800 C of  FIG. 8C , or other or computational functions and simulations described above. 
     A machine-readable medium can be one or more machine-readable media. Software shall be construed broadly to mean instructions, data, or any combination thereof, whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. Instructions may include code (e.g., in source code format, binary code format, executable code format, or any other suitable format of code). 
     Machine-readable media (e.g.,  1119 ) may include storage integrated into a processing system such as might be the case with an ASIC. Machine-readable media (e.g.,  1110 ) may also include storage external to a processing system, such as a Random Access Memory (RAM), a flash memory, a Read Only Memory (ROM), a Programmable Read-Only Memory (PROM), an Erasable PROM (EPROM), registers, a hard disk, a removable disk, a CD-ROM, a DVD, or any other suitable storage device. Those skilled in the art recognizes how best to implement the described functionality for the processing system  1102 . According to one aspect of the disclosure, a machine-readable medium is a computer-readable medium encoded or stored with instructions and is a computing element, which defines structural and functional interrelationships between the instructions and the rest of the system, which permit the instructions&#39; functionality to be realized. Instructions may be executable, for example, by the processing system  1102  or one or more processors. Instructions can be, for example, a computer program including code for performing methods of the subject technology. 
     A network interface  1116  may be any type of interface to a network (e.g., an Internet network interface), and may reside between any of the components shown in  FIG. 11  and coupled to the processor via the bus  1104 . 
     A device interface  1118  may be any type of interface to a device and may reside between any of the components shown in  FIG. 11 . A device interface  1118  may, for example, be an interface to an external device that plugs into a port (e.g., USB port) of the system  1100 . 
     The foregoing description is provided to enable a person skilled in the art to practice the various configurations described herein. While the subject technology has been particularly described with reference to the various figures and configurations, it should be understood that these are for illustration purposes only and should not be taken as limiting the scope of the subject technology. 
     One or more of the above-described features and applications may be implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (alternatively referred to as computer-readable media, machine-readable media, or machine-readable storage media). When these instructions are executed by one or more processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. In one or more implementations, the computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections, or any other ephemeral signals. For example, the computer readable media may be entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. In one or more implementations, the computer readable media is non-transitory computer readable media, computer readable storage media, or non-transitory computer readable storage media. 
     In one or more implementations, a computer program product (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network. 
     While the above discussion primarily refers to microprocessor or multi-core processors that execute software, one or more implementations are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In one or more implementations, such integrated circuits execute instructions that are stored on the circuit itself. 
     Although the invention has been described with reference to the disclosed embodiments, one having ordinary skill in the art will readily appreciate that these embodiments are only illustrative of the invention. It should be understood that various modifications can be made without departing from the spirit of the invention. The particular embodiments disclosed above are illustrative only, as the present invention may be modified and practiced in different but equivalent manners apparent to those skilled in the art having the benefit of the teachings herein. Furthermore, no limitations are intended to the details of construction or design herein shown, other than as described in the claims below. It is therefore evident that the particular illustrative embodiments disclosed above may be altered, combined, or modified and all such variations are considered within the scope and spirit of the present invention. While compositions and methods are described in terms of “comprising,” “containing,” or “including” various components or steps, the compositions and methods can also “consist essentially of” or “consist of” the various components and operations. All numbers and ranges disclosed above can vary by some amount Whenever a numerical range with a lower limit and an upper limit is disclosed, any number and any subrange falling within the broader range is specifically disclosed. Also, the terms in the claims have their plain, ordinary meaning unless otherwise explicitly and clearly defined by the patentee. If there is any conflict in the usages of a word or term in this specification and one or more patent or other documents that may be incorporated herein by reference, the definitions that are consistent with this specification should be adopted.