Sensor output sample synchronization
The hardware-based synchronization of sensor outputs using master and non-master sensor controllers addresses the inefficiencies of existing methods by reducing power consumption and sample loss, enabling efficient and fast synchronization in electronic devices.
Patent Information
- Application Number
- JP2023189996
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2023-11-07
- Publication Date
- 2025-02-05
- Estimated Expiration
- 2039-11-18
AI Technical Summary
Existing methods for synchronizing sensor output from multiple devices in electronic devices, such as smartphones, often rely on expensive and power-consuming high-resolution timers, leading to inaccurate data synchronization and potential sample loss, especially when switching modes like from speakerphone to non-speakerphone.
A hardware-based solution using sensor controllers, where one controller acts as a master to generate synchronous signals, and others as non-masters, storing or generating output values based on these signals, allowing dynamic programming of sampling rates and modes.
This approach reduces power consumption, minimizes sample loss, and enables faster mode switching with high-level synchronization, simplifying circuitry and reducing reliance on costly timers.
Smart Images

Figure 0007627323000001 
Figure 0007627323000002 
Figure 0007627323000003
Abstract
Description
[Technical field]
[0001] TECHNICAL FIELD This specification relates to signal processing, and more particularly to synchronizing multiple signals generated by a device having multiple sensors. [Background technology]
[0002] Modern electronic devices, e.g., smartphones and tablets, may include multiple sensors, each of which may begin sensing the device's environment at a different time. For example, if the device is a mobile phone, when the user holds the device up to his or her ear, the device may activate only one microphone located at the bottom of the phone close to the user's mouth. When the device is instead operating in speakerphone mode, the device may activate multiple microphones. Thus, when switching from a non-speakerphone mode to a speakerphone mode, the device may activate microphones other than the one already activated. To ensure that output samples from multiple sensors simultaneously reflect the environment, the device may use timestamp-based synchronization to align the samples, e.g., by interpolation. However, these methods may not adequately reflect the actual data and may rely on accurate (e.g., low skew), high-resolution timers. Such timers may be expensive and consume significant power, so it is advantageous for electronic devices not to include timers. Furthermore, the circuits used to distribute the signals generated by such timers may be complex and prone to inaccuracies, and these circuits may be omitted if the timers are omitted. Another problem associated with these methods is that samples may be lost during the synchronization process, which may lead to unwanted distortion of the sensor data. Summary of the Invention [Means for solving the problem]
[0003] A hardware solution for synchronizing sensor output samples is described. The disclosed subject matter includes a sensor controller for each sensor of a device. When a sensor is enabled, its corresponding sensor controller receives input samples from the sensor. When multiple sensors are enabled, at least one of the corresponding sensor controllers can operate as a master sensor controller that outputs a synchronization (sync) signal according to a predetermined sampling rate. Each remaining sensor controller receiving input samples from a sensor can operate as a non-master sensor controller that reads from the common bus to determine if the master sensor controller has output a synchronization signal. If the master sensor controller has not output a synchronization signal, each non-master sensor controller can store the input samples received from its respective sensor in a sensor controller data storage. If the master sensor controller instead outputs a synchronization signal, each non-master sensor controller can generate an output value using the input samples received from its respective sensor, including the input samples stored in its sensor controller data storage. The master sensor controller can also store input samples and generate output values together with the non-master sensor controllers.
[0004] In general, in a first aspect, a system includes a plurality of sensors and, for each sensor, a respective sensor controller of the plurality of sensor controllers. Each sensor controller is configured to implement a respective decimation filter configured to generate a single output value from a plurality of input samples generated by a corresponding sensor of the plurality of sensors. The system further includes a master sensor controller of the plurality of sensor controllers, the master sensor controller configured to generate a synchronization signal upon receiving a threshold number of input samples. Each sensor controller other than the master sensor controller is configured to monitor the synchronization signal generated by the master sensor controller and provide an output value generated from the input samples upon determining that the master sensor controller has generated the synchronization signal.
[0005] Implementations of the system may include one or more of the following features. For example, each sensor controller may include a programmable register space that includes a mode value that indicates whether the sensor controller is a master sensor controller. In some implementations, the programmable register space includes a synchronization mask that indicates which sensor controllers monitor a synchronization signal. In some implementations, the programmable register space includes an enable value that indicates whether the sensor controller should generate an output value.
[0006] In some implementations, each sensor controller is configured to perform a mode switching process upon detecting an update to the programmable register space. Performing the mode switching process by a particular sensor controller can include determining that a mode value for the particular sensor controller indicates that the particular sensor controller should be a master sensor controller, and, in response, assuming a role as the master sensor controller. Assuming a role as the master sensor controller can include generating one or more output values without waiting for any synchronization signal from any other sensor controller.
[0007] In some implementations, performing a mode switching process by the particular sensor controller includes determining that a mode value for the particular sensor controller indicates that the particular sensor controller should be a non-master sensor controller, and assuming a role as a non-master sensor controller accordingly. Assuming a role as a non-master sensor controller can include waiting to generate an output value until a synchronization signal is received from the new master sensor controller.
[0008] The plurality of sensors may include one or more of an audio sensor, a light sensor, or a proximity sensor. The plurality of sensors may include both an audio sensor and a light sensor.
[0009] In another aspect, the invention includes a method performed by a device having a master sensor controller of a plurality of sensor controllers, each sensor controller of the plurality of sensor controllers configured to implement a respective decimation filter configured to generate a single output value from a plurality of input samples generated by a corresponding sensor of the plurality of sensors. The method includes receiving an input sample from a sensor of the plurality of sensors. The method further includes determining whether a threshold number of input samples have been received by the sensor controller. The method also includes outputting a synchronization signal if the result of the determining step is a determination that the threshold number of input samples have been received by the sensor controller. The method further includes generating an output value using one or more of the received input samples and outputting the output sample.
[0010] Implementations of the method may include one or more of the following features. For example, each sensor controller of the plurality of sensor controllers may include a programmable register space that includes a mode value indicating whether the sensor controller is a master sensor controller. The programmable register space may include a synchronization mask that indicates which sensor controller monitors a synchronization signal. The programmable register space may include an enable value that indicates whether the sensor controller should generate an output value.
[0011] In some implementations, the method further includes determining, by the sensor controller, that a mode value for the sensor controller indicates that the sensor controller should be a non-master sensor controller, and assuming a role as a non-master sensor controller accordingly. Assuming a role as a non-master sensor controller can include waiting to generate an output value until a synchronization signal is received from the new master sensor controller.
[0012] In some implementations, the method further includes determining, by the sensor controller, that a mode value for the sensor controller indicates that the sensor controller should be a master sensor controller, and, in response, assuming the role of master sensor controller.
[0013] In some implementations, the method may further include storing the input samples in a sensor controller data storage if the result of the determining step is a determination that a threshold number of input samples have not been received by the sensor controller.
[0014] In some implementations, outputting the synchronization signal includes writing to a bus to which each sensor controller of the plurality of sensor controllers is communicatively coupled.
[0015] In another aspect, the invention includes a method performed by a system including a plurality of sensors and, for each sensor, a respective sensor controller of the plurality of sensor controllers, each sensor controller configured to implement a respective decimation filter configured to generate a single output value from a plurality of input samples generated by a corresponding sensor of the plurality of sensors. The method includes generating, by a master sensor controller of the plurality of sensor controllers, a synchronization signal upon receiving a threshold number of input samples. The method further includes monitoring, by each sensor controller other than the master sensor controller, the synchronization signal generated by the master sensor controller. The method further includes providing, by each sensor controller other than the master sensor controller, an output value generated from the input samples upon determining that the master sensor controller has generated the synchronization signal.
[0016] Among other advantages, embodiments feature methods and systems that allow output samples from multiple sensors to be synchronized using a dynamically programmable hardware interface. The number of input samples that the master sensor controller data storage stores before outputting a synchronization signal reflects the desired sampling rate of the sensor controller. For example, the number of input samples can be dynamically changed to achieve a sampling rate tailored to the type and / or number of sensors, allowing the sampling rate to be dynamically programmed. Furthermore, whereas conventional synchronization schemes may include a controller that operates regardless of the number of sensors that are enabled, the subject matter of the present disclosure can be used to selectively operate the sensor controller only when it is needed, i.e., only when the sensor corresponding to the sensor controller is enabled. Thus, the subject matter of the present disclosure can be used to reduce the power consumption of a device compared to devices that use conventional synchronization schemes. Yet another advantage is that the subject matter provides a high fidelity synchronization method that is less likely to lose samples and has faster mode switching compared to conventional synchronization schemes. Additionally, embodiments of the system described in this disclosure can include circuitry that is simpler than circuitry required by conventional synchronization schemes, such that the system described in this disclosure can be more easily incorporated into embedded circuitry than conventional systems.
[0017] Other advantages will become apparent from the description, the drawings, and the claims. [Brief description of the drawings]
[0018] [Figure 1] FIG. 1 is a diagram of a device including multiple sensors and a corresponding number of sensor controllers. [Diagram 2] 11 is a flowchart illustrating operations that may be performed by a master sensor controller during an exemplary synchronization cycle. [Diagram 3]3 is a flowchart illustrating operations that may be performed by a non-master sensor controller during the example synchronization cycle of FIG. 2. [Figure 4] 11 is a flow chart illustrating operations that may be performed by the sensor controller when the sensor controller detects a change in its programmable register space. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0019] Like reference numbers in the various drawings indicate like elements.
[0020] 1 is a diagram of a device 110 including multiple sensors 102, 104, and 106 and a corresponding number of sensor controllers 112b, 114b, and 116b. With reference to FIG. 1, the device 110 includes the sensors 102, 104, and 106 communicatively coupled to a system on chip (SoC) 120, which further includes the sensor controllers 112b, 114b, and 116b, a system controller 130, a bus 140, and a sensor engine 150. Each sensor controller is communicatively coupled to the system controller 130, the bus 140, and the sensor engine 150.
[0021] The sensors 102, 104, and 106 may be any suitable sensors capable of receiving information about the environment of the device 110 and outputting samples corresponding to the received information. For example, the sensors 102, 104, and 106 may be a proximity sensor, an audio sensor such as a microphone, an electromagnetic radiation sensor such as an infrared sensor, a visible light sensor, or a flicker sensor, a radar sensor, or a combination of one or more types of sensors. The information received by the sensors may be filtered by the sensor controller and output to the sensor engine 150 for processing.
[0022] A sensor may sample information at a first sampling rate and output samples at the first sampling rate, while sensor engine 150 may operate at a different, e.g., lower, sampling rate. Thus, for the sensor to communicate this information to sensor engine 150, the samples output by the sensor may be decimated or downsampled before being sent to sensor engine 150. This may be accomplished using a pulse density modulation (PDM) interface, which may be a digital serial interface used to communicate oversampled data from one domain, e.g., the sensor output domain, to another domain, e.g., the sensor engine domain.
[0023] Each sensor 102, 104, and 106 can output samples to a corresponding sensor controller 112b, 114b, and 116b. Each corresponding sensor controller 112b, 114b, and 116b can receive input samples labeled 102a, 104a, and 106a and use these input samples to generate output values 102b, 104b, and 106b when it is time to synchronize its output with the other sensor controllers. When it is not time to synchronize its output, each sensor controller 112b, 114b, and 116b can store these input samples in its respective sensor controller data storage 112a, 114a, and 116a. Instead of storing the input samples, each sensor controller can discard the samples when it is not time to synchronize its output.
[0024] A sensor controller is said to be enabled when it is receiving samples from a sensor and generating output values or storing input samples in a corresponding sensor controller data storage (or simply data storage). When enabled, the sensor controller can operate in a master mode, a non-master mode, or a disabled mode. Each sensor controller can include a programmable register space that can store data representing whether the sensor controller is enabled and / or a mode value that indicates the mode of the sensor controller. In some implementations, the mode value indicates whether the sensor controller is a master sensor controller or not.
[0025] The system controller 130 can generally determine which sensor controllers are enabled and in which mode each sensor controller should operate. The system controller 130 can also enable the sensor controllers or set the mode of the sensor controllers. In response to information that, for example, a sensor has switched from a disabled to an enabled state because, for example, a user of the device 110 has activated a mode of the device, such as a speaker mode, the system controller can enable the sensor controller corresponding to the newly enabled sensor. Enabling the sensor controller can include setting an enable value of a programmable register space of the sensor controller to an enable value. The system controller 130 can also change the mode of the sensor controller by setting a mode value of the programmable register space of the sensor controller to a mode, for example, a master mode or a non-master mode.
[0026] Regardless of the mode in which the sensor controller is operating, each sensor controller can read from and write to the bus 140. When the sensor controller is operating in a master mode, the sensor controller is configured to output a synchronization signal onto the bus 140 that can be read by each non-master sensor controller. After outputting the synchronization signal, the master sensor controller can output an output value including data received from its respective sensor to the sensor engine 150. The synchronization signal triggers each non-master sensor controller to output its own samples, i.e., using the input samples received from their respective sensors, to the sensor engine 150.
[0027] Each sensor controller sends its output value to the sensor engine 150, which processes the output values. For example, the sensor engine 150 can combine the output values into a single value for a particular downstream application. If the output values are, for example, audio values, the sensor engine 150 can generate a single audio value from each of the different output values. The sensor engine 150 can use any suitable processing technique to combine the different output values. In some implementations, the output generated by the sensor engine 150 is output by the device 110, for example, by one or more speakers of the device, as an audio output. In other implementations, the output of the sensor engine 150 can be displayed by an electronic display of the device 110, for example, as an image or another representation of the device's environment.
[0028] 2 is a flowchart 200 illustrating operations that may be performed by a master sensor controller during an exemplary synchronization cycle. For example, a synchronization cycle lasts from when a sensor controller receives an input sample from its corresponding sensor to when the sensor controller generates an output value. The flowchart is described as being performed by a master sensor controller configured in accordance with the present specification, such as a sensor controller 112b, 114b, or 116b operating in a master mode. The master sensor controller is part of a device that includes one or more sensors and a corresponding number of sensor controllers.
[0029] The master sensor controller receives input samples from the sensors (205). The master sensor controller is communicatively coupled to the sensors, which receive information about the device's environment and output samples to the master sensor controller. The sensors output data sampled by the sensors at a sampling rate that is higher than the sampling rate of the processor, e.g., the sensor engine, used to process the data. Thus, the master sensor controller can direct the decimation of the data by a predefined decimation factor, i.e., the ratio of the input sampling rate to the desired output sampling rate. Prior to decimation, the system controller can configure the master sensor controller to downsample the data according to the decimation factor. That is, the system controller can determine the sample size, i.e., the number of input samples to be collected by the master sensor controller, before the controller generates and outputs the samples.
[0030] The master sensor controller determines whether to output a sample (210). The master sensor controller determines whether a threshold number of input samples have been received by the controller. For example, the threshold number of input samples may be equal to a sample size.
[0031] If, at step 210, the master sensor controller determines that it is time to output a sample (i.e., the "yes" branch), the master sensor controller outputs a synchronization signal (215). When the master sensor controller determines that a threshold number of input samples have been received, the controller outputs a synchronization signal to a signal bus that is read by one or more non-master sensor controllers. The synchronization signal alerts the one or more non-master sensor controllers that samples should be generated, for example, on a clock cycle according to which the master sensor controller outputs the synchronization signal.
[0032] As an example, the synchronization signal may be encoded into a synchronization mask that includes a bit corresponding to each sensor controller of the device, where the bit corresponding to the master sensor controller can have a high or low value, and the bits corresponding to the non-master sensor controllers are set as a low value.
[0033] The synchronization mask can be a one-hot signal such that when it is time to output a sample, the master sensor controller outputs a synchronization mask containing a high value corresponding to its bits and a low value for each of the one or more non-master sensor controller bits onto the signal bus. When it is not time to output a sample, the master sensor controller can output a synchronization mask containing all low values onto the signal bus. Each non-master sensor controller reads the synchronization mask from the signal bus and uses the mask to determine whether to output a sample.
[0034] In some implementations, each sensor controller includes a value that indicates which sensor controller monitors the synchronization signal. For example, when the synchronization mask is a one-hot signal, the value can indicate which bits, and therefore which sensors, to monitor. The value can be stored in a programmable register space for each sensor.
[0035] The master sensor controller generates a sample output (220). The master sensor controller generates output values using the input samples received from the sensors, and the controller communicates the output values to the sensor engine. When generating the sample output, the master sensor controller may perform one or more calculations on the input samples. For example, the master sensor controller and each non-master sensor controller may include a decimation filter configured to generate a single output value from multiple input samples generated by the respective sensors of the sensor controller.
[0036] If, at step 210, the master sensor controller determines that it is not time to output a sample (i.e., the "no" branch), the master sensor controller stores the input samples received from the sensor in the sensor controller data storage (225). The sensor controller data storage may store the input samples received from the sensor until a threshold number of input samples have been received to generate a sample.
[0037] While Figure 2 describes operations performed by an exemplary master sensor controller, Figure 3 is a flowchart 300 that describes operations performed by an exemplary non-master sensor controller during an exemplary synchronization cycle. The flowchart is described as being performed by a non-master sensor controller configured in accordance with the present specification, for example, a sensor controller such as sensor controller 112b, 114b, or 116b operating in a non-master mode. The non-master sensor controller is part of a device that includes one or more sensors and a corresponding number of sensor controllers.
[0038] The non-master sensor controllers receive input samples from the sensors 305. Similar to the master sensor controller, the non-master sensor controllers are communicatively coupled to the sensors that receive information about the device's environment and output samples to the non-master sensor controllers.
[0039] The non-master sensor controller determines whether to output a sample (310). The non-master sensor controller uses the signal received from the signal bus to determine whether to output a sample. For example, the non-master sensor controller can read a synchronization mask from the signal bus to determine whether the master sensor controller has output a synchronization signal.
[0040] If, at step 310, the non-master sensor controller determines that it is time to output a sample (i.e., the "yes" branch), the non-master sensor controller generates a sample output (315). Similar to the master sensor controller, the non-master sensor controller may perform one or more calculations on the input samples received from its respective sensor to generate a sample output, which the non-master sensor controller communicates to the sensor engine.
[0041] If, at step 310, a non-master sensor controller determines that it is not time to output a sample, the non-master sensor controller stores the input samples received from its respective sensor in its controller data storage (branch to 320). A non-master sensor controller may store the input samples received from its corresponding sensor in its sensor controller data storage.
[0042] In some situations, a non-master sensor controller may need to discard samples rather than store them. For example, when a sensor switches from a disabled state to an enabled state, one or more input samples received from the sensor may not be synchronized with the input samples received by the current master sensor controller. Thus, the non-master sensor controller corresponding to the newly enabled sensor may discard the out-of-sync input samples. When the non-master sensor controller receives a synchronization signal from the master sensor controller, the non-master sensor controller may stop discarding input samples and start storing the samples in its controller data storage.
[0043] FIG. 4 is a flow chart illustrating operations that may be performed by a sensor controller when the sensor controller detects a change in its programmable register space. The flow chart is described as being performed by a sensor controller configured according to the present specification, such as, for example, sensor controller 112b, 114b, or 116b. The sensor controller is part of a device that includes one or more sensors and a corresponding number of sensor controllers. In the example of FIG. 4, the sensor controller may start in master mode, non-master mode, or not start in either mode. For example, the sensor controller may be disabled, i.e., the sensor is not in master mode or non-master mode because the sensor controller has not received or stored input samples from the corresponding sensor of the device (e.g., because the sensor has not received information about the device's environment).
[0044] As an example, the device may be a mobile phone that includes two sensors: a first microphone located at the top of the phone and a second microphone located at the bottom of the phone. When the phone is in speaker mode, the phone may operate both microphones simultaneously to maximize the audio input received by the phone. When the phone is in non-speaker mode, the phone may instead operate only one of the two microphones. When transitioning from non-speaker mode to speaker mode, the system controller of the mobile phone may enable a disabled microphone such that the microphone begins receiving audio input from the mobile phone's environment.
[0045] The sensor controller detects the update in its programmable register space (405). For example, the system controller can enable the sensor controller by changing an enable value in its programmable register space from a disable value to an enable value, e.g., in response to the system controller detecting that a sensor corresponding to the sensor controller has been enabled. As another example, the system controller may change a mode value stored in the programmable register space of the sensor controller.
[0046] In some implementations, instead of or in addition to detecting updates in the programmable register space, the sensor controller can detect changes in the sensor controller data storage. For example, a change in the data storage may result from a corresponding sensor of the sensor controller going from a disabled state to an enabled state. When enabled, a sensor can receive information about the device's environment and send input samples to the sensor controller data storage.
[0047] The sensor controller determines whether to act as a master sensor controller (410). For example, the sensor controller can set the sensor controller mode value to be the master mode value. The sensor controller can read the mode value from its programmable register space.
[0048] If, in step 410, the sensor controller determines that it should operate in master mode, the sensor controller enters master mode 415. As part of entering master mode, the master sensor controller is configured to output samples at a predefined sampling rate, so that the system controller can communicate the sampling rate to the sensor controller.
[0049] It may be unnecessary for a device to have more than one sensor controller acting as a master at the same time. If another different sensor controller of the device is currently acting as a master, the operation of step 415 may include the sensor controller synchronizing with this different sensor controller, i.e., the "new" master sensor controller synchronizes with the "old" master sensor controller. For example, the new master sensor controller may receive input samples from its corresponding sensors and read data from the signal bus. Although the old master sensor controller has not written a synchronization signal to the signal bus, the new master sensor controller may store the input samples received from its respective sensor in its data storage, e.g., as in step 225. When the new master sensor controller reads the synchronization signal from the signal bus, the new master sensor controller generates an output value.
[0050] After generating the output values, the new master sensor controller begins storing the input samples in its sensor controller data storage (e.g., stage 225) and outputting a synchronization signal according to the sampling rate communicated to the master sensor controller by the system controller (e.g., stage 215). Once the new master sensor controller synchronizes its sampling rate with the old master sensor controller, the old master sensor controller transitions to either a non-master mode or a disabled mode if the sensor corresponding to the old master sensor controller is disabled.
[0051] In some implementations, the new master sensor controller is not synchronized with the old master sensor controller. For example, as one of the operations of stage 415, when the sensor controller assumes the role of master, the new master sensor controller may begin storing input samples in its sensor controller data storage (e.g., stage 225) and outputting a synchronization signal according to the sampling rate (e.g., stage 215) while the old master controller may transition to a non-master mode or a disabled mode.
[0052] In some implementations, the new master sensor controller is not synchronized with the old master sensor controller, and the operations of stage 415 include the new master sensor controller outputting a synchronization signal (e.g., stage 215). In these implementations, following the output of the synchronization signal, each sensor controller may output samples that include any input samples that the sensor controller stored in its respective sensor controller data storage. The operations of stage 415 may further include the old master sensor controller transitioning to a non-master mode or to a disabled mode. In these implementations, an initial output value following the operations of stage 415 may be generated without the sensor controller receiving a threshold number of input samples, but subsequent output values are generated after the new master sensor controller receives a threshold number of input samples.
[0053] The exemplary process can thus achieve signal synchronization substantially without relying on software routines or timestamps, thereby resulting in faster synchronization. Additionally, the exemplary process achieves signal synchronization without dropping as many samples as would be dropped when using a timestamp or software routine that stops the decimation process until a particular timestamp indicates that an output should be generated again.
[0054] If, in step 410, the sensor controller determines that it should not operate in master mode, the sensor controller goes into non-master mode 420. Assuming the non-master role may include performing the actions of flowchart 300, such as waiting to generate output values until a synchronization signal is received from the new master sensor controller.
[0055] Embodiments of the subject matter and functional operations described herein may be implemented in digital electronic circuitry, in tangibly embodied computer software or firmware, in computer hardware, including the structures disclosed herein and their structural equivalents, or in one or more combinations thereof.
[0056] The term "data processing apparatus" refers to data processing hardware and encompasses any kind of apparatus, device, and machine for processing data, including, by way of example, a programmable processor, a computer, or multiple processors or computers. An apparatus may also be or further include dedicated logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). In addition to hardware, an apparatus may possibly include code that creates an execution environment for a computer program, such as code that constitutes a processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of these.
[0057] The processes and logic flows described herein may be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows may also be performed by special purpose logic circuitry, e.g., FPGAs or ASICs, or by a combination of special purpose logic circuitry and one or more programmed computers.
[0058] Although the specification contains many specific implementation details, these should not be construed as limitations on the scope of any invention or on the scope of what may be claimed, but rather as descriptions of features that may be specific to certain embodiments of a particular invention. Some features described in the context of separate embodiments herein may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, although features may be described above as functioning in a combination and may even initially be claimed as such, one or more features from a claimed combination may in some cases be deleted from the combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination.
[0059] Similarly, although operations are shown in the figures in a particular order, this should not be understood as requiring that such operations be performed in the particular order or sequence shown, or that all of the illustrated operations be performed, to achieve desirable results. In certain environments, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system modules and components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the program components and systems described may generally be integrated into a single software product or packaged into multiple software products.
[0060] Specific embodiments of the subject matter have been described. Other embodiments are within the scope of the claims. For example, the actions recited in the claims may be performed in a different order and still achieve desirable results. As an example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In some cases, multitasking and parallel processing may be advantageous. [Explanation of symbols]
[0061] 102 Sensors 102a Input 102b Output value 104 Sensors 104a Input 104b Output value 106 Sensors 106a Input 106b Output value 110 Devices 112a Data Storage 112b Sensor Controller 114a Data Storage 114b Sensor Controller 116a Data Storage 116b Sensor Controller 120 System on a Chip (SoC) 130 System Controller 140 Bus 150 Sensor Engine
Claims
1. A method performed by a device having a plurality of sensor controllers, each sensor controller of the plurality of sensor controllers configured to implement a respective decimation filter configured to generate a single sample output from a plurality of input samples generated by a corresponding sensor of the plurality of sensors, the method comprising: receiving and storing, by a non-master sensor controller of the plurality of sensor controllers, one or more input samples from the corresponding sensor while monitoring a synchronization signal from a master sensor controller of the plurality of sensor controllers; upon receiving the synchronization signal from the master sensor controller, generating, by the non-master sensor controller, a sample output from the one or more input samples received while monitoring the synchronization signal; outputting, by the non-master sensor controller, the sample output generated from the one or more input samples received while monitoring the synchronization signal from the master sensor controller; Including, method.
2. The method of claim 1, wherein each sensor controller of the plurality of sensor controllers includes a programmable register space containing a mode value indicating whether the sensor controller is the master sensor controller or not.
3. The method of claim 2, wherein the programmable register space includes a synchronization mask indicating which sensor controller monitors a synchronization signal.
4. The method of claim 2, wherein the programmable register space includes an enable value indicating whether the sensor controller should generate an output value. determining, by the master sensor controller, that the mode value for the master sensor controller indicates that the master sensor controller should be a non-master sensor controller; accordingly assuming the role of said non-master sensor controller; Further comprising: The method of claim 2.
6. The method of claim 5, wherein the step of assuming the role as a non-master sensor controller includes a step of waiting to generate any output values until another synchronization signal is received from a new master sensor controller. determining, by the non-master sensor controller, that the mode value for the non-master sensor controller indicates that the non-master sensor controller should be a master sensor controller; accordingly assuming the role of said master sensor controller; Further comprising: The method according to claim 6.
8. The method of claim 1, wherein the plurality of sensors includes one or more of an audio sensor, a light sensor, or a proximity sensor.
9. The method of claim 1, wherein the plurality of sensors includes both audio sensors and light sensors.
10. A system including a plurality of sensor controllers, each sensor controller of the plurality of sensor controllers configured to implement a respective decimation filter configured to generate a single sample output from a plurality of input samples generated by a corresponding sensor of the plurality of sensors, wherein a non-master sensor controller of the plurality of sensor controllers is configured to: receiving and storing, by the non-master sensor controllers of the plurality of sensor controllers, one or more input samples from the corresponding sensors while monitoring a synchronization signal from a master sensor controller of the plurality of sensor controllers; upon receiving the synchronization signal from the master sensor controller, generating, by the non-master sensor controller, a sample output from the one or more input samples received while monitoring the synchronization signal; outputting, by the non-master sensor controller, the sample output generated from the one or more input samples received while monitoring the synchronization signal from the master sensor controller; configured to perform operations including system.
11. The system of claim 10, wherein each sensor controller of the plurality of sensor controllers includes a programmable register space containing a mode value indicating whether the sensor controller is the master sensor controller.
12. The system of claim 11, wherein the programmable register space includes a synchronization mask indicating which sensor controller monitors a synchronization signal.
13. The system of claim 11, wherein the programmable register space includes an enable value indicating whether the sensor controller should generate an output value.
14. The operation determining, by the master sensor controller, that the mode value for the master sensor controller indicates that the master sensor controller should be a non-master sensor controller; accordingly assume the role of said non-master sensor controller; The system of claim 11 further comprising:
15. The system of claim 14, wherein assuming the role as the non-master sensor controller includes waiting to generate any output values until another synchronization signal is received from a new master sensor controller. determining, by the non-master sensor controller, that the mode value for the non-master sensor controller indicates that the non-master sensor controller should be a master sensor controller; Accordingly, taking on the role of said master sensor controller; Further comprising: The system of claim 13.
17. The system of claim 10, wherein the plurality of sensors includes one or more of an audio sensor, a light sensor, or a proximity sensor.
18. The system of claim 10, wherein the plurality of sensors includes both audio sensors and light sensors.
19. The method of claim 18, further comprising: determining that a threshold number of input samples have not been received by the sensor controller; correspondingly storing the input samples in a sensor controller data storage for the sensor controller; The method of claim 1 further comprising: determining by the sensor controller that a threshold number of input samples have not been received by the sensor controller; correspondingly storing the input samples in a sensor controller data storage for the sensor controller; The system of claim 10 further comprising:
Citation Information
Patent Citations
Distributed process inputting and outputting device
JP2000112519A
System and method for multipoint measurement
JP2007188299A
High-performance architecture for process transmitters
JP2010539587A
Sensor network system and formation method thereof
JP2012083847A
Method and apparatus for coupling a first sensor with at least one second sensor
JP2014528132A