The present disclosure relates to radar systems and methods and, more particularly, to radar systems and methods that estimate range and velocity using stepped-frequency waveforms.
This section provides background information related to the present disclosure which is not necessarily prior art.
Automotive radar sensors are used in vehicle sensing systems to determine information about objects in the environment of the vehicle, such as the location, size, orientation, velocity, and acceleration of objects in the environment of the vehicle. The sensed information can, for example, be used by other vehicle systems, such as autonomous driving systems and/or advanced driver assistance systems (ADAS), such as automatic and adaptive cruise control systems, blind spot monitoring systems, etc., to control steering systems, braking systems, throttle systems, driver alert and warning systems, and/or other vehicle systems.
A radar system may transmit a number of radar chirps within a particular transmit frame and then receive signals corresponding to the transmitted chirps reflected from an object within the environment of the vehicle. The frequency of the radar signal may vary during each individual chirp. For example, the frequency during a particular chirp may increase during the time period of the chirp from an initial frequency of the chirp to a higher end frequency of the chirp, resulting in an up-chirp having a frequency that increases over the time period of the chirp. Alternatively, the frequency during a particular chirp may decrease during the time period of the chirp from an initial frequency of the chirp to a lower end frequency of the chirp, resulting in a down-chirp having a frequency that decreases over the time period of the chirp.
In addition, the initial frequency and the end frequency of each chirp can stay the same for each chirp over the course of the transmit frame. In other radar systems, however, a stepped-frequency waveform can be used such that the initial frequencies and end frequencies of the transmitted signals change from chirp to chirp. For example, a radar system may utilize a down-frame or step-down frequency waveform such that the initial frequency and end frequency of each subsequent chirp is lower than the initial frequency and end frequency of the previous chirp within the frame. Alternatively, a radar system may utilize an up-frame or step-up frequency waveform such that the initial frequency and end frequency of each subsequent chirp is higher than the initial frequency and end frequency of the previous chirp within the frame.
Existing radar systems, however, can be subject to errors due to range migration, Doppler aliasing, etc.
This section provides a general summary of the disclosure and is not a comprehensive disclosure of its full scope or all of its features.
A radar system is provided an includes at least one processor and memory configured to: transmit radar signals within a frame having N radar chirps, the N radar chirps having a stepped frequency waveform such that an initial transmit frequency and an end transmit frequency are changed for each subsequent chirp within the N radar chirps, and with N being greater than 1; receive and sample radar signals reflected from a target to generate receive values from the received and sampled radar signals; perform range fast Fourier transform (FFT) processing, including a first domain FFT, and Doppler FFT processing, including a second domain FFT, on the receive values to generate range FFT values and Doppler FFT values; estimate a range and a velocity of the target based on the range FFT values and Doppler FFT values, wherein the estimated range, r, and the estimated velocity, v, of the target are calculated based on at least one equation that includes (i) a first term corresponding to a target range, r0, measured by a first radar chirp of the Nradar chirps, and (ii) a second term corresponding to a center wavelength, λN/2, of the plurality of radar chirps of the frame.
In other features, the at least one equation further includes a third term corresponding to an average range measurement from all N radar chirps within the frame,
where TN corresponds to the transmitting time of each chirp.
In other features, at least one equation includes the following equations:
wherein: F1 and F2 represent frequencies measured after the first and second domain FFTs, respectively; sc and sf represent directions of the chirp and frame slope, respectively; fr1 represents a first domain range frequency, defined as
where kc is a chirp slope and c is the speed of light; fr2 denotes a second domain range frequency, defined as
λ0 is the wavelength of the first chirp in a frame; and n is the chirp index.
In other features, the stepped frequency waveform of the radar signals of the N radar chirps are generated to conform to the following condition:
In other features, the at least one processor and memory are further configured to determine whether sc sf is greater than 0 and whether sc is less than 0 and, in response to sc sf being greater than 0 and sc being less than 0, to unfold an index for the second domain FFT.
In other features, the at least one processor and memory are further configured to determine whether sc sf is positive or negative and perform a downshift of a Doppler spectrum of the Doppler FFT values based on whether sc sf is positive or negative.
In other features, the at least one processor and memory are further configured to perform an expansion of the Doppler spectrum based on a number of times a range frequency of the first domain FFT has been folded, K.
In other features, the at least one processor and memory are further configured to calculate K based on the following equation:
represents a maximum coverage of the second domain range, r1Bin is a bin size of the first domain range, and Δf corresponds to a frequency offset between radar chirps of the N radar chirps.
In other features, the at least one processor and memory are configured to generate the stepped frequency waveform of the N radar chirps such that the initial transmit frequency and the end transmit frequency of each radar chirp after a first radar chirp are lower than the initial transmit frequency and the end transmit frequency, respectively, of an immediately preceding radar chirp.
In other features, the radar system is installed in a vehicle having at least one vehicle system, the at least one processor and memory are configured to communicate the estimate of the range and the velocity of the target to the at least one vehicle system, and the at least one vehicle system is configured to control at least one of a steering system, a braking system, a throttle system, or a driver alert and warning system based on the estimate of the range and the velocity of the target.
A method is also provided and includes: transmitting, with at least one processor and memory of a radar system, radar signals within a frame having N radar chirps, the N radar chirps having a stepped frequency waveform such that an initial transmit frequency and an end transmit frequency are changed for each subsequent chirp within the Nradar chirps, and with N being greater than 1; receiving and sampling, with an analog-to-digital converter of the radar system, radar signals reflected from a target to generate receive values from the received and sampled radar signals; performing, with the at least one processor and memory, range fast Fourier transform (FFT) processing, including a first domain FFT, and Doppler FFT processing, including a second domain FFT, on the receive values to generate range FFT values and Doppler FFT values; estimating, with the at least one processor and memory, a range and a velocity of the target based on the range FFT values and Doppler FFT values, wherein the estimated range, r, and the estimated velocity, v, of the target are calculated based on at least one equation that includes (i) a first term corresponding to a target range, r0, measured by a first radar chirp of the N radar chirps, and (ii) a second term corresponding to a center wavelength, λN/2, of the plurality of radar chirps of the frame.
In other features, the at least one equation further includes a third term corresponding to an average range measurement from all N radar chirps within the frame,
where TN corresponds to the transmitting time of each chirp.
In other features, the at least one equation includes the following equations:
wherein: F1 and F2 represent frequencies measured after the first and second domain FFTs, respectively; sc and sf represent directions of the chirp and frame slope, respectively; fr1 represents a first domain range frequency, defined as
where kc is a chirp slope and c is the speed of light; fr2 denotes a second domain range frequency, defined as
λ0 is the wavelength of the first chirp in a frame; and n is the chirp index.
In other features, the stepped frequency waveform of the radar signals of the N radar chirps are generated to conform to the following condition:
In other features, the method further includes determining whether sc sf is greater than 0 and whether sc is less than 0 and, in response to sc sf being greater than 0 and sc being less than 0, unfolding an index for the second domain FFT.
In other features, the method further includes determining whether sc sf is positive or negative and performing a downshift of a Doppler spectrum of the Doppler FFT values based on whether sc sf is positive or negative.
In other features, the method further includes performing an expansion of the Doppler spectrum based on a number of times a range frequency of the first domain FFT has been folded, K.
In other features, the method further includes calculating K based on the following equation:
represents a maximum coverage of the second domain range, r1Bin is a bin size of the first domain range, and Δf corresponds to a frequency offset between radar chirps of the N radar chirps.
In other features, the method further includes generating the stepped frequency waveform of the N radar chirps such that the initial transmit frequency and the end transmit frequency of each radar chirp after a first radar chirp are lower than the initial transmit frequency and the end transmit frequency, respectively, of an immediately preceding radar chirp.
In other features, the radar system is installed in a vehicle having at least one vehicle system, the method further comprising communicating the estimate of the range and the velocity of the target to the at least one vehicle system, and the at least one vehicle system is configured to control at least one of a steering system, a braking system, a throttle system, or a driver alert and warning system based on the estimate of the range and the velocity of the target.
Further areas of applicability will become apparent from the description provided herein. The description and specific examples in this summary are intended for purposes of illustration only and are not intended to limit the scope of the present disclosure.
The drawings described herein are for illustrative purposes only of selected embodiments, not all possible implementations, and are not intended to limit the scope of the present disclosure.
Corresponding reference numerals indicate corresponding parts throughout the several views of the drawings.
Example embodiments will now be described more fully with reference to the accompanying drawings.
The present disclosure provides methodologies, procedures, and conditions for improving the accuracy of estimating range and velocity of objects using radar systems that transmit radar signals by changing a frequency of radar chirps within a transmit frame according to a stepped-frequency waveform.
In a first aspect of the present disclosure, new equations are provided for estimating range and velocity that reduce range and velocity estimation errors due to range migration, as discussed in further detail below.
In a second aspect of the present disclosure, waveform constraints and conditions are provided that reduce range and velocity estimation errors due to Doppler aliasing errors, as discussed in further detail below.
In a third aspect of the present disclosure, a comprehensive framework is provided for processing of the four different combinations of stepped-frequency waveforms, i.e., up-chirp up-frame, down-chirp up-frame, up-chirp down-frame, and down-chirp down-frame. As discussed in further detail below, the comprehensive framework can provide a process and methodology by which expands the Doppler indices, i.e., second domain indices, based on range information and unfolds the Doppler indices based on the positive and negative velocity coverage, as discussed in further detail below.
With reference to
The radar system 100 includes a processor 200 and memory 202 that stores code executed by the processor 200 to perform the required functionality for transmitting, receiving, and processing signals 104, 108 and determining the information about the target 106, such as range and velocity, based on the characteristics of the received signals 108. While the example implementation illustrates a single processor 200, multiple processors and/or modules working together can alternatively be used. The radar system 100 includes a transmitter 204 that transmits the signals 104 and a receiver 206 that receives the signals 108 using an antenna array 207. The antenna array 207 includes one or more transmit (TX) antennas and one or more receive (RX) antennas for transmitting and receiving signals 104, 108. The processor 200, for example, executes transmit/receive code 208 stored in the memory 202 to control the transmitter 204 and receiver 206 to transmit and receive the signals 104, 108 using the antenna array 207. The memory 202 also stores code 210 used by the processor 200 to perform a first-domain range fast Fourier transform (FFT) and code 212 to perform a second-domain Doppler FFT on received radar signals 108208. For example, the processor 200 performs range FFT using the range FFT code 210 to generate a first-domain range index and performs Doppler FFT using the Doppler FFT code 212 to generate a second-domain Doppler index. The processor 200 then uses range estimation code 214 and velocity estimation code 216 to process the range and Doppler indices to determine the range and velocity, respectively, of the target 106, in accordance with the present disclosure. The processes and methods utilized by the range estimation code 214 and velocity estimation code 216 executed by the processor 200 in accordance with the present disclosure are discussed in further detail below.
The processor 200 can communicate the determined information about the target 106, such as the location, size, orientation, velocity and acceleration of the target 106 determined based on the range and velocity information, to other vehicle systems 220, such as autonomous driving systems and/or advanced driver assistance systems (ADAS), such as automatic cruise control systems, blind spot monitoring systems, etc. The other vehicle systems 220 can then utilize and process the information about the target 106 to appropriately control steering systems, braking systems, throttle systems, driver alert and warning systems, and/or other systems of the vehicle 102 based on the information about the target 106.
The radar system 100 also includes an analog-to-digital converter (ADC) 205 used to sample the received radar signal 108 using a specified sample rate and to convert analog information about the received radar signals, such as a receive frequency, to a digital format. The ADC 205 can be implemented using a separate processor, multiple processors, and/or a separate module configured to perform analog-to-digital radar signal processing in accordance with the present disclosure.
Prior radar systems have used a Frequency Modulated Continuous Waveform (FMCW) technique to determine the range, velocity, and angle or orientation of objects in the environment of the vehicle.
With reference to
After a transmitted signal 104 is reflected back from the target, the return signal 108 is sampled by the ADC at a sample rate of fs, forming a two-dimensional matrix 500, shown in
wherein F1 and F2 represent the frequencies measured after the first and second domain FFTs, respectively, the parameters r and v denote the target's range and Doppler velocity, λ0 corresponds to the wavelength of the first chirp in the frame, and sc and sf represent the directions of the chirp and frame slopes. When the chirp slope is positive, sc is assigned a value of 1, otherwise sc is assigned a value −1. Similarly, when the frame slope is positive, sf is assigned a value of 1, otherwise sf is assigned a value of −1. The term fr1 refers to the first domain range frequency, defined as
where kc is the chirp slope and c represents the speed of light. By utilizing fr1, the target's range, r, is transformed into a frequency value measured within the first domain. Similarly, fr2 denotes the second domain range frequency, defined as
Given that F1 and F2 from Equations 1 and 2 can be derived from the location of the target peak following the 2D FFT, and all other parameters are fixed and determined by the waveform, it becomes straightforward for the processor 200 to calculate the unknown parameters, ranger and velocity v of the target, using Equations 1 and 2.
In scenarios where the target's velocity is relatively low, Equations 1 and 2 yield satisfactory accuracy for both range and velocity estimation. However, when the target exhibits faster motion as velocity increases, the measured range varies significantly for each chirp, leading to substantial errors if a constant target range is assumed. This phenomenon, known as range migration, introduces errors in both range and velocity estimation with systems and methods that use Equations 1 and 2.
In addition to the range and velocity estimation errors resulting from range migration,
As noted above, prior systems using Equations 1 and 2 have two major drawbacks. First, the presence of range migration leads to increased errors in both range and velocity measurements as the target's velocity increases. Second, when the Doppler velocity becomes aliased, the utilization of a wrapped velocity introduces an additional offset in both range and velocity measurements.
To overcome these limitations and drawbacks of the prior systems, the present disclosure includes the use of equations that address these limitations and drawbacks and minimize the above-noted errors for range and velocity calculations. The present disclosure additionally provides waveform conditions and constraints for a stepped frequency waveform to further decrease and minimize errors. In particular, in place of Equations 1 and 2, systems and methods of the present disclosure utilize Equations 3 and 4:
wherein:
where kc is the chirp slope and c represents the speed of light (as described above);
(as described above),
Equations 3 and 4 differ from Equations 1 and 2 in several respects. For example, in Equations 3 and 4, the target range measured by the first chirp, denoted as r0, is utilized instead of an unspecified target range r, as in Equations 1 and 2. In addition, Equations 3 and 4 utilize and reference the frame's center wavelength, λN/2, instead of just the wavelength of the first chirp in the farm, λ0, as in Equations 1 and 2.
In further contrast to Equations 1 and 2, Equations 3 and 4 take into account the influence of range migration and the variation in wavelength among chirps within the stepped-frequency waveform. For example, assuming a target moves at a constant speed within one frame, the range measurement from each chirp can be expressed as r0−vTn. Then, the target range measured by the entire frame is the averaged range value measured by all chirps given as:
Thus, utilizing the averaged range measurement from each chirp provides a more accurate representation of the real-world scenario. The same principle applies to the Doppler frequency in the first domain. Since each chirp possesses a different wavelength, the averaged Doppler frequency is represented in Equations 3 and 4 as 2v/λN/2, instead of 2v/λ0 as used in Equations 1 and 2.
In this way, radar systems and methods using Equations 3 and 4 provide more accurate range and velocity measurements of a target, as compared with systems and methods that use Equations 1 and 2.
This section presents the mathematical proof supporting Equations 3 and 4.
The linear frequency modulated waveform can be defined according to Equation 5:
wherein ti=i/fs represents ADC sampling time, fn=f0+nΔf denotes the center frequency of each chirp. The received signal reflected from the target is represented according to Equation 6:
wherein τi,n=2ri,n/c is the time delay for each fast sample, ti. The target range is given by ri,n=r0−vTn−vti, where
represents the chirp timing, which is described in further detail in EP3796038. In the receiver, the transmitted signal is conjugated and multiplied with the received signal as Equation 7:
Through several cancellations, Equation 7 can be represented as Equation 8:
Considering that the quadratic phase delay τi,n2 is relatively small and can be ignored, Equation 8 can be further simplified as Equation 9:
Replacing τi,n with r0−vTn−vti in Equation 9, yields Equation 10:
If the quadratic term vti2 is neglected and fn=f0+nsfΔf and
are used in Equation 10, the equation can then be represented as Equation 11:
The term 2r0f0/c in Equation 11 is a constant term and can be disregarded. By using
Equation 11 can be further simplified as Equation 12:
Since ti is the fast time (referring to the frequency and time scale at which individual samples are made within a chirp) and nT0 is the slow time (referring to the frequency and time scale of the frame of chirps as a whole), the first and second domain frequency associated with each chirp are represented by Equation 13 and Equation 14, respectively.
To the simplify the equations, the first domain frequency can be made non-negative by multiplying −sc into Equation 12, resulting in Equations 15 and 16:
The first domain frequency measured by each chirp, as defined in Equation 15, undergoes averaging after a 2D FFT, leading to a final detection with the frequency given by Equation 17:
It is evident that Equation 16 remains constant regardless of the chirp index n. Then Equation 16 can be expressed as Equation 18:
This section describes waveform constraints and conditions for a stepped-frequency waveform that mitigate and reduce the “jumping” errors discussed above.
Equations 3 and 4 can be rewritten as Equations 19 and 20, as follows:
When Doppler aliasing occurs, the Doppler velocity becomes folded in M times. Consequently, there is a difference between the folded velocity and the measured velocity, given by VunM, where Vun represents the maximum unambiguous velocity supported by the waveform. Utilizing Equations 19 and 20, the range error can be expressed according to Equation 21:
Similarly, the velocity error can be calculated according to Equation 22:
From Equations 21 and 22, it is evident that both the range and velocity errors can be reduced to zero if the waveform parameters satisfy the condition outlined in Equation 23:
The waveform condition of Equation 23 implies that a down-chirp waveform is necessary to eliminate the estimation errors caused by Doppler aliasing.
Another benefit of the methods for calculating range and velocity of the present disclosure is the streamlined and adaptable method for calculating the second domain index.
In Equations 19 and 20, the unknown values of r0 and v are to be determined, while the other parameters are either predefined by the waveform or obtained from measurements. The quantities F1 and F2 can be derived from the target's indices (idx1, idx2) after performing a 2D FFT. Specifically, F1 corresponds to the first domain index and can be calculated using the equation:
where, f1Bin represents the first domain frequency bin size, defined as f1Bin=fs/Nfft1, where Nfft1 is the first domain FFT size. On the other hand, calculating the value of F2 is more complex, as it depends on the relationship between the second domain range and the Doppler frequency under different conditions. In this section the example of a stepped-frequency waveform with scsf>0, along with another example, to illustrate how F2 can be determined.
To ascertain the value of F2, the pattern of zero Doppler index must be ascertained for each range bin. When scsf>0 and v=0, a positive value of F2 would be observed, resulting in the formation of multiple diagonal lines with a positive slope, as illustrated in
represents the maximum coverage of the second domain range, and r1Bin is the bin size of the first domain range in meters. Once the folded times, K, is determined, the second domain indices can be unfolded, as shown in
In addition to the aliased range frequency in the second domain, the Doppler frequency can also be subject to aliasing. The maximum index separation between the positive and negative Doppler frequencies and the zero Doppler index can be denoted as pVelCov and nVelCov, respectively. The combined coverage of these two regions should equal the size of the second domain FFT, i.e., pVelCov+nVelCov=Nfft2.
The present disclosure provides a comprehensive framework with equations and processing methods to address waveform variations, such as upchirp-upframe, downchirp-upframe, upchirp-downframe, and downchirp-downframe. The comprehensive framework of the present disclosure expands the Doppler indices based on range information and unfolds the Doppler indices based on the positive and negative velocity coverage.
In this way, the present disclosure provides significant advancements and technical benefits in the field of target range and velocity estimation using stepped-frequency waveforms in radar systems. In particular, the present disclosure addresses critical challenges in accurate estimation by accounting for range migration in the first domain frequency calculation and eliminating estimation errors caused by Doppler aliasing. Additionally, a comprehensive framework is provided to effectively handle different waveform conditions.
As discussed above, a first aspect of the present disclosure addresses range migration during the calculation of the first domain frequency. By addressing range migration effects, the accuracy of range estimation is significantly improved. This innovation takes into account factors such as target motion and the time delay between fast time and slow time, leading to more precise and reliable range and velocity calculations.
As further discussed above, a second aspect of the present disclosure addresses the issue of estimation errors resulting from Doppler aliasing. Doppler aliasing can introduce inaccuracies in both range and velocity estimation, leading to distorted target trajectories. The systems and methods of the present disclosure minimize and/or eliminate these errors by providing guidelines, techniques, and waveform conditions and constraints to remove the effects of Doppler aliasing. This innovation ensures more accurate velocity estimation, enhancing the overall quality of target tracking and fusion processes.
As further discussed above, the present disclosure provides a comprehensive framework that considers and handles different waveform conditions. The framework addresses waveform variations such as upchirp-upframe, downchirp-upframe, upchirp-downframe, and downchirp-downframe. By accounting for these diverse conditions, the framework enables more accurate frequency calculations and unfolding of indices, leading to improved estimation accuracy across various scenarios.
The results of the present disclosure provide significant enhancements in the accuracy of target range and velocity estimation compared to existing methods. These advancements have wide-ranging applications in autonomous systems, where precise target tracking and situational awareness are crucial.
The foregoing description of the embodiments has been provided for purposes of illustration and description and is not intended to be exhaustive or to limit the disclosure. Individual elements or features of a particular embodiment are generally not limited to that particular embodiment, but, where applicable, are interchangeable and can be used in another embodiment, even if not specifically shown or described. The various embodiments may also be varied in many ways. Such variations are not to be regarded as a departure from the disclosure, and all such modifications are intended to be included within the scope of the disclosure. Although each of the embodiments is described above as having certain features, any one or more of those features described with respect to any embodiment of the disclosure can be implemented in and/or combined with features of any of the other embodiments, even if that combination is not explicitly described. In other words, the described embodiments are not mutually exclusive, and permutations of one or more embodiments with one another remain within the scope of this disclosure.
Example embodiments are provided so that this disclosure will be thorough and will fully convey the scope to those who are skilled in the art. Specific details are set forth, including examples of specific components, devices, and methods, to provide a thorough understanding of embodiments of the present disclosure. It will be apparent to those skilled in the art that specific details need not be employed, that example embodiments may be embodied in many different forms and that neither should be construed to limit the scope of the disclosure. In some example embodiments, well-known processes, well-known device structures, and well-known technologies are not described in detail.
In the written description and claims, one or more steps within a method may be executed in a different order (or concurrently) without altering the principles of the present disclosure. Similarly, one or more instructions stored in a non-transitory computer-readable medium may be executed in different order (or concurrently) without altering the principles of the present disclosure. Unless indicated otherwise, numbering or other labeling of instructions or method steps is done for convenient reference and not to indicate a fixed order.
Spatial and functional relationships between elements (for example, between modules) are described using various terms, including “connected,” “engaged,” “interfaced,” and “coupled.” Unless explicitly described as being “direct,” when a relationship between first and second elements is described in the above disclosure, that relationship encompasses a direct relationship where no other intervening elements are present between the first and second elements, and also an indirect relationship where one or more intervening elements are present (either spatially or functionally) between the first and second elements.
The phrase “at least one of A, B, and C” should be construed to mean a logical (A OR B OR C), using a non-exclusive logical OR, and should not be construed to mean “at least one of A, at least one of B, and at least one of C.” The term “set” does not necessarily exclude the empty set. The term “non-empty set” may be used to indicate exclusion of the empty set. The term “subset” does not necessarily require a proper subset. In other words, a first subset of a first set may be coextensive with (equal to) the first set.
In the figures, the direction of an arrow, as indicated by the arrowhead, generally demonstrates the flow of information (such as data or instructions) that is of interest to the illustration. For example, when element A and element B exchange a variety of information, but information transmitted from element A to element B is relevant to the illustration, the arrow may point from element A to element B. This unidirectional arrow does not imply that no other information is transmitted from element B to element A. Further, for information sent from element A to element B, element B may send requests for, or receipt acknowledgements of, the information to element A.
In this application, including the definitions below, the term “module” or the term “controller” may be replaced with the term “circuit.” The term “module” may refer to, be part of, or include processor hardware (shared, dedicated, or group) that executes code and memory hardware (shared, dedicated, or group) that stores code executed by the processor hardware.
The module may include one or more interface circuits. In some examples, the interface circuit(s) may implement wired or wireless interfaces that connect to a local area network (LAN) or a wireless personal area network (WPAN). Examples of a LAN are Institute of Electrical and Electronics Engineers (IEEE) Standard 802.11-2016 (also known as the WIFI wireless networking standard) and IEEE Standard 802.3-2015 (also known as the ETHERNET wired networking standard). Examples of a WPAN are the BLUETOOTH wireless networking standard (including Core Specification versions 3.0, 4.0, 4.1, 4.2, 5.0, and 5.1 from the Bluetooth SIG) from the Bluetooth Special Interest Group (SIG).
The module may communicate with other modules using the interface circuit(s). Although the module may be depicted in the present disclosure as logically communicating directly with other modules, in various implementations the module may actually communicate via a communications system. The communications system includes physical and/or virtual networking equipment such as hubs, switches, routers, and gateways. In some implementations, the communications system connects to or traverses a wide area network (WAN) such as the Internet. For example, the communications system may include multiple LANs connected to each other over the Internet or point-to-point leased lines using technologies including Multiprotocol Label Switching (MPLS) and virtual private networks (VPNs).
In various implementations, the functionality of the module may be distributed among multiple modules that are connected via the communications system. For example, multiple modules may implement the same functionality distributed by a load balancing system. In a further example, the functionality of the module may be split between a server (also known as remote, or cloud) module and a client (or, user) module. For example, the client module may include a native or web application executing on a client device and in network communication with the server module.
The term code, as used above, may include software, firmware, and/or microcode, and may refer to programs, routines, functions, classes, data structures, and/or objects. Shared processor hardware encompasses a single microprocessor that executes some or all code from multiple modules. Group processor hardware encompasses a microprocessor that, in combination with additional microprocessors, executes some or all code from one or more modules. References to multiple microprocessors encompass multiple microprocessors on discrete dies, multiple microprocessors on a single die, multiple cores of a single microprocessor, multiple threads of a single microprocessor, or a combination of the above.
Shared memory hardware encompasses a single memory device that stores some or all code from multiple modules. Group memory hardware encompasses a memory device that, in combination with other memory devices, stores some or all code from one or more modules.
The term memory hardware is a subset of the term computer-readable medium. The term computer-readable medium, as used herein, does not encompass transitory electrical or electromagnetic signals propagating through a medium (such as on a carrier wave); the term computer-readable medium is therefore considered tangible and non-transitory. Non-limiting examples of a non-transitory computer-readable medium are nonvolatile memory devices (such as a flash memory device, an erasable programmable read-only memory device, or a mask read-only memory device), volatile memory devices (such as a static random access memory device or a dynamic random access memory device), magnetic storage media (such as an analog or digital magnetic tape or a hard disk drive), and optical storage media.
The apparatuses and methods described in this application may be partially or fully implemented by a special purpose computer created by configuring a general-purpose computer to execute one or more particular functions embodied in computer programs. Such apparatuses and methods may be described as computerized apparatuses and computerized methods. The functional blocks and flowchart elements described above serve as software specifications, which can be translated into computer programs by the routine work of a skilled technician or programmer.
The computer programs include processor-executable instructions that are stored on at least one non-transitory computer-readable medium. The computer programs may also include or rely on stored data. The computer programs may encompass a basic input/output system (BIOS) that interacts with hardware of the special purpose computer, device drivers that interact with particular devices of the special purpose computer, one or more operating systems, user applications, background services, background applications, etc.
The computer programs may include: (i) descriptive text to be parsed, such as HTML (hypertext markup language), XML (extensible markup language), or JSON (JavaScript Object Notation), (ii) assembly code, (iii) object code generated from source code by a compiler, (iv) source code for execution by an interpreter, (v) source code for compilation and execution by a just-in-time compiler, etc. As examples only, source code may be written using syntax from languages including C, C++, C #, Objective C, Swift, Haskell, Go, SQL, R, Lisp, Java®, Fortran, Perl, Pascal, Curl, OCaml, JavaScript®, HTML5 (Hypertext Markup Language 5th revision), Ada, ASP (Active Server Pages), PHP (PHP: Hypertext Preprocessor), Scala, Eiffel, Smalltalk, Erlang, Ruby, Flash®, Visual Basic®, Lua, MATLAB, SIMULINK, and Python®.