Synchronization of sensor output samples

By equipping each sensor with a sensor controller and using the main sensor controller to generate synchronization signals, the problem of sensor output samples synchronization is solved, and high-precision and low-power signal processing is achieved.

CN119394353APending Publication Date: 2025-02-07GOOGLE LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411317700.3
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2019-11-18
Publication Date
2025-02-07

AI Technical Summary

Technical Problem

When synchronizing multiple sensor output samples, it is difficult to achieve high accuracy and low power consumption, and it is easy to cause sample loss and data distortion.

Method used

Using a hardware solution, by equipping each sensor with a sensor controller, a synchronization signal is generated using the main sensor controller, and the non-main sensor controller reads the synchronization signal from the common bus to ensure sample synchronization.

Benefits of technology

High-precision signal synchronization is achieved, power consumption is reduced, sample loss is avoided, faster mode switching and simpler circuit design is provided.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119394353A_ABST
    Figure CN119394353A_ABST
Patent Text Reader

Abstract

The invention discloses synchronization of sensor output samples. A system includes a plurality of sensors and a respective sensor controller of a plurality of sensor controllers for each sensor. 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 sample upon determining that the master sensor controller has generated the synchronization signal.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Description of the case

[0002] This application is a divisional application of Chinese invention patent application 201980100448.1, with a filing date of November 18, 2019. Technical Field

[0003] The present description relates to signal processing, and more particularly to synchronizing multiple signals generated by a device having multiple sensors. Background Art

[0004] Modern electronic devices, such as smart phones and tablet computers, can include multiple sensors, and each sensor can start sensing the environment of the device at a different time. For example, if the device is a mobile phone, when the user holds the device to their ear, the device may only activate one microphone located at the bottom of the phone near the user's mouth. In contrast, when the device is operated in speakerphone mode, the device can activate multiple microphones. Therefore, when switching from non-speakerphone mode to speakerphone mode, the device can activate microphones other than the already activated microphones. In order to ensure that the output samples from multiple sensors reflect the environment at the same time, the device can use timestamp-based synchronization to align the samples, such as by interpolation. However, these methods may not be a good reflection of the actual data and may depend on accurate (e.g., low skew) and high-resolution timers. Because such timers can be expensive and consume a lot of power, it is advantageous for electronic devices not to include them. In addition, the circuits for distributing the signals generated by such timers may be complex and prone to inaccuracies, and these circuits may also be omitted if the timers are omitted. Another challenge associated with these methods is that samples may be lost during the synchronization process, which may cause undesirable distortion of sensor data. Summary of the invention

[0005] 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 an input sample from the sensor. When multiple sensors are enabled, at least one of the corresponding sensor controllers can operate as a master sensor controller, which outputs a synchronization signal according to a predetermined sampling rate. Each remaining sensor controller that receives input samples from the sensor can operate as a non-master sensor controller, which reads from a common bus to determine whether the master sensor controller has output a synchronization signal. If the master sensor controller has not yet output a synchronization signal, each non-master sensor controller can store the input samples received from its corresponding sensor in a sensor controller data memory. If instead the master sensor controller outputs a synchronization signal, each non-master sensor controller can use the input samples received from its corresponding sensor, including the input samples stored in its sensor controller data memory, to generate an output value. The master sensor controller can also store input samples and generate output values ​​together with the non-master sensor controller.

[0006] In general, in a first aspect, a system includes a plurality of sensors and a corresponding sensor controller of a plurality of sensor controllers for each sensor. Each sensor controller is configured to implement a corresponding 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.

[0007] Implementations of the system can include one or more of the following features. For example, each sensor controller can 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 controller monitors the synchronization signal. In some implementations, the programmable register space includes an enable value that indicates whether the sensor controller should generate an output value.

[0008] In some embodiments, each sensor controller is configured to perform a mode switching process upon detecting an update of 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 a master sensor controller. Assuming a role as a master sensor controller can include generating one or more output values ​​without waiting for any synchronization signal from any other sensor controller.

[0009] In some embodiments, performing a mode switching process by a 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 in response, assuming a role as a non-master sensor controller. Assuming a role as a non-master sensor controller can include waiting to generate any output values ​​until a synchronization signal is received from the new master sensor controller.

[0010] The plurality of sensors can include one or more of an audio sensor, a light sensor, or a proximity sensor. The plurality of sensors can include both an audio sensor and a light sensor.

[0011] In another aspect, the present invention includes a method performed by a device having a master sensor controller in a plurality of sensor controllers, wherein each of the plurality of sensor controllers is configured to implement a corresponding decimation filter configured to generate a single output value from a plurality of input samples generated by a corresponding sensor in a plurality of sensors. The method includes receiving input samples from a sensor in the plurality of sensors. The method also includes determining whether the sensor controller has received a threshold number of input samples. The method also includes outputting a synchronization signal if the result of the determination is to determine that the sensor controller has received a threshold number of input samples. The method further includes generating an output value using one or more of the received input samples and outputting the output sample.

[0012] Implementations of the method can include one or more of the following features. For example, each sensor controller in the plurality of sensor controllers can include a programmable register space including a mode value indicating whether the sensor controller is a master sensor controller. The programmable register space can include a synchronization mask indicating which sensor controller monitors a synchronization signal. The programmable register space can include an enable value indicating whether the sensor controller should generate an output value.

[0013] In some embodiments, the method further includes determining, by the sensor controller, that the mode value for the sensor controller indicates that the sensor controller should be a non-master sensor controller, and in response, assuming a role as the non-master sensor controller. Assuming a role as the non-master sensor controller can include waiting to generate any output values ​​until a synchronization signal is received from the new master sensor controller.

[0014] In some embodiments, the method further includes determining, by the sensor controller, that the mode value for the sensor controller indicates that the sensor controller should be the master sensor controller, and in response, assuming a role as the master sensor controller.

[0015] In some embodiments, the method can further include storing the input samples in a sensor controller data store if the result of the determining is a determination that the sensor controller has not received a threshold number of input samples.

[0016] 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.

[0017] In another aspect, the present invention includes a method performed by a system including a plurality of sensors and a corresponding sensor controller in a plurality of sensor controllers for each sensor, wherein each sensor controller is configured to implement a corresponding decimation filter configured to generate a single output value from a plurality of input samples generated by a corresponding sensor in the plurality of sensors. The method includes generating a synchronization signal by a master sensor controller of the plurality of sensor controllers upon receiving a threshold number of input samples. The method also includes monitoring, by each sensor controller other than the master sensor controller, the synchronization signal generated by the master sensor controller. The method also 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.

[0018] Among other advantages, an embodiment is characterized in that a method and system for synchronizing output samples from multiple sensors using a dynamically programmable hardware interface is allowed. The number of input samples stored by the master sensor controller data memory before outputting a synchronization signal reflects the desired sampling rate of the sensor controller. The number of input samples can be dynamically changed, thereby allowing the sampling rate to be dynamically programmed, for example, to achieve a sampling rate customized to the type and / or number of sensors. In addition, although conventional synchronization schemes may include a controller that operates regardless of the number of enabled sensors, the disclosed subject matter can be used to selectively operate the sensor controller only when the sensor controller is needed, that is, only when the sensor corresponding to the sensor controller is enabled. Therefore, compared with devices using traditional synchronization schemes, the disclosed subject matter can be used to reduce the power consumption of the device. Another advantage is that the present subject matter provides a high-fidelity synchronization method that is less likely to lose samples than conventional synchronization schemes and provides faster mode switching. In addition, embodiments of the described system can include simpler circuits than those required by conventional synchronization schemes, so that the described system can be more easily integrated into embedded circuits than conventional systems.

[0019] Other advantages will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0020] Figure 1 is a diagram of a device including a plurality of sensors and a corresponding number of sensor controllers.

[0021] Figure 2 is a flow chart describing operations that can be performed by a master sensor controller during an example synchronization cycle.

[0022] Figure 3 is described in Figure 2 Flowchart of operations that can be performed by a non-master sensor controller during an example synchronization cycle.

[0023] Figure 4 is a flow chart describing operations that can be performed by a sensor controller when the sensor controller detects a change in its programmable register space.

[0024] Like reference numbers in the various drawings indicate like elements. DETAILED DESCRIPTION

[0025] Figure 1 is a diagram of a device 110 including a plurality of sensors 102, 104, and 106 and a corresponding number of sensor controllers 112b, 114b, and 116b. Figure 1, device 110 includes sensors 102, 104, and 106 communicatively coupled to a system on chip (SoC) 120, which also includes 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.

[0026] Sensors 102, 104, and 106 can be any suitable sensor that can receive information about the environment of device 110 and output samples corresponding to the received information. For example, sensors 102, 104, and 106 can be proximity sensors, audio sensors such as microphones, electromagnetic radiation sensors such as infrared sensors, visible light sensors, or flicker sensors, radar sensors, or a combination of one or more types of sensors. Information received by the sensors can be filtered by a sensor controller and output to sensor engine 150 for processing.

[0027] While the sensor may sample information at a first sampling rate and output samples at the first sampling rate, the sensor engine 150 may operate at a different sampling rate, e.g., a lower sampling rate. Thus, for the sensor to communicate information to the sensor engine 150, the samples output by the sensor can be decimated or downsampled before being sent to the sensor engine 150. This can be accomplished using a pulse density modulation (PDM) interface, which can be a digital serial interface for communicating oversampled data from one domain (e.g., a sensor output domain) to another domain (e.g., a sensor engine domain).

[0028] 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 samples labeled as inputs 102a, 102b, and 102c, and use the input samples to generate output values ​​102b, 104b, and 106b when it is time to synchronize its output with other sensor controllers. When it is time to synchronize its output, each sensor controller 112b, 114b, and 116b can store the input samples in a corresponding sensor controller data memory 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.

[0029] A sensor controller is considered enabled when the sensor controller receives a sample from a sensor and generates an output value or stores an input sample in a corresponding sensor controller data memory (or simply, a data memory). 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 indicating whether the sensor controller is enabled and / or a mode value indicating the mode of the sensor controller. In some embodiments, the mode value indicates whether the sensor controller is a master sensor controller.

[0030] The system controller 130 is generally capable of determining which sensor controllers are enabled and in what mode each sensor controller should operate. The system controller 130 is also capable of enabling sensor controllers or setting the modes of sensor controllers. For example, in response to information that a sensor has been switched from a disabled state to an enabled state, for example, because a user of the device 110 has activated a particular mode of the device, such as a speaker mode, the system controller is capable of enabling 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 is also capable of changing the mode of the sensor controller by setting a mode value of a programmable register space of the sensor controller to a particular mode, for example, a master mode or a non-master mode.

[0031] Regardless of the mode in which the sensor controller operates, each sensor controller is capable of reading from and writing to the bus 140. When the sensor controller operates in the master mode, it is configured to output a synchronization signal to the bus 140, which 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 corresponding sensor to the sensor engine 150. The synchronization signal triggers each non-master sensor controller to output its own sample to the sensor engine 150, i.e., using the input sample received from their corresponding sensor.

[0032] Each sensor controller sends its output value to the sensor engine 150, which processes the output value. For example, the sensor engine 150 can combine the output values ​​into a single value for a specific downstream application. For example, if the output value is an audio value, the sensor engine 150 can generate a single audio value from each different output value. The sensor engine 150 can use any appropriate processing technology to combine different output values. In some embodiments, the output generated by the sensor engine 150 is output by the device 110, for example, as an audio output of one or more speakers of the device. In other embodiments, 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 environment.

[0033] Figure 2 2 is a flowchart 200 describing operations that can be performed by a master sensor controller during an example synchronization period. For example, a synchronization period lasts from when the sensor controller receives input samples from its corresponding sensor to when the sensor controller generates output values. The flowchart is described as being performed by a master sensor controller configured according to the present specification, for example, a sensor controller operating in a master mode, such as sensor controllers 112b, 114b, or 116b. The master sensor controller is part of a device that includes one or more sensors and a corresponding number of sensor controllers.

[0034] The master sensor controller receives input samples from a sensor (205). The master sensor controller is communicatively coupled to the sensor, which receives information about the environment of the device and outputs samples to the master sensor controller. The sensor outputs data sampled by the sensor at a higher sampling rate than a processor (e.g., a sensor engine) used to process the data. Therefore, the master sensor controller can direct the decimation of the data by a predetermined decimation factor, i.e., a 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 collected by the master sensor controller, before the controller generates and outputs the samples.

[0035] The master sensor controller determines whether to output a sample (210). The master sensor controller determines whether the controller has received a threshold number of input samples. For example, the threshold number of input samples can be equal to the sample size.

[0036] If in stage 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 from which one or more non-master sensor controllers read. The synchronization signal alerts one or more non-master sensor controllers that a sample should be generated, for example, in a clock cycle after the clock cycle in which the master sensor controller outputs the synchronization signal.

[0037] As an example, the synchronization signal can be encoded onto a synchronization mask that includes a bit corresponding to each sensor controller of the device. The bit corresponding to the master sensor controller can take a high or low value, while the bit corresponding to the non-master sensor controller is set to a low value.

[0038] The sync mask can be a one-hot signal such that when it is time to output a sample, the master sensor controller outputs a sync mask to the signal bus containing a high value corresponding to its bit and a low value for each of the one or more non-master sensor controller bits. When it is not time to output a sample, the master sensor controller can output a sync mask containing all low values ​​to the signal bus. Each non-master sensor controller reads the sync mask from the signal bus and uses the mask to determine whether to output a sample.

[0039] In some embodiments, each sensor controller includes a value indicating which sensor controller's synchronization signal is to be monitored. For example, when the synchronization mask is a one-hot signal, the value can indicate which bit to monitor, and accordingly which sensor to monitor. The value can be stored in the programmable register space of each sensor.

[0040] The master sensor controller generates a sample output (220). The master sensor controller uses the input samples received from the sensors to generate an output value, which the controller communicates to the sensor engine. In generating the sample output, the master sensor controller can perform one or more calculations on the input samples. For example, the master sensor controller and each non-master sensor controller can include a decimation filter configured to generate a single output value from multiple input samples generated by the corresponding sensor of the sensor controller.

[0041] If in stage 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 a sensor controller data memory (225). The sensor controller data memory can store input samples received from the sensor until a threshold number of input samples has been received for generating a sample.

[0042] Although Figure 2 describes the operations performed by an example master sensor controller, Figure 3 300 is a flowchart describing operations performed by an example non-master sensor controller during an example synchronization cycle. The flowchart is described as being performed by a non-master sensor controller configured according to the present specification, for example, a sensor controller operating in a non-master mode, such as sensor controllers 112b, 114b, or 116b. The non-master sensor controller is part of a device that includes one or more sensors and a corresponding number of sensor controllers.

[0043] The non-master sensor controller receives input samples from the sensor (305). Similar to the master sensor controller, the non-master sensor controller is communicatively coupled to the sensor, which receives information about the device environment and outputs samples to the non-master sensor controller.

[0044] The non-master sensor controller determines whether to output a sample (310). The non-master sensor controller determines whether to output a sample using a signal received from a signal bus. 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.

[0045] If, in stage 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 can 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.

[0046] If in stage 310 the non-master sensor controller determines that it is not time to output samples, the non-master sensor controller stores the input samples received from its corresponding sensor in its controller data memory (branch to 320). The non-master sensor controller can store the input samples received from its corresponding sensor in its sensor controller data memory.

[0047] In some cases, the non-master sensor controller may need to discard samples rather than store them. For example, when a sensor switches from being disabled to being enabled, one or more input samples received from the sensor may not be synchronized with the input samples currently received by the master sensor controller. Therefore, the non-master sensor controller corresponding to the newly enabled sensor can 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 can stop discarding input samples and start storing these samples in its controller data memory.

[0048] Figure 4 is a flow chart describing operations that can 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 master sensor controller configured according to the present specification, for example, a sensor controller such as sensor controller 112b, 114b, or 116b. A sensor controller is part of a device that includes one or more sensors and a corresponding number of sensor controllers. Figure 4 In the example of , the sensor controller can start in a master mode, a non-master mode, or neither mode. For example, the sensor controller may be disabled, i.e., it does not receive or store input samples from a corresponding sensor of the device (e.g., because the sensor does not receive information about the device environment), and thus the sensor is neither in a master mode nor in a non-master mode.

[0049] As an example, the device may be a mobile phone that includes two sensors: a first microphone positioned at the top of the phone and a second microphone positioned at the bottom of the phone. When the phone is in speaker mode, it may operate both microphones simultaneously to maximize the audio input received by the device. Conversely, when the phone is in non-speaker mode, it may operate only one of the two microphones. When transitioning from non-speaker mode to speaker mode, the system controller of the mobile device is able to enable the disabled speaker so that it begins receiving audio input from the environment of the mobile phone.

[0050] The sensor controller detects an update in its programmable register space (405). For example, in response to the system controller detecting that a sensor corresponding to the sensor controller has been enabled, the system controller may enable the sensor controller by changing an enable value of its programmable register space from a disable value to an enable value. As another example, the system controller may change a mode value stored in the programmable register space of the sensor controller.

[0051] In some embodiments, instead of or in addition to detecting updates in the programmable register space, the sensor controller can detect changes in the sensor controller data memory. For example, the change in the data memory can be caused by the corresponding sensor of the sensor controller changing from a disabled state to an enabled state. Once enabled, the sensor can receive information about the device environment and send input samples to the sensor controller data memory.

[0052] The sensor controller determines whether to operate as a master sensor controller (410). For example, the sensor controller can set a mode value of the sensor controller to a master mode value. The sensor controller can read the mode value from its programmable register space.

[0053] If in stage 410 the sensor controller determines that it should operate in master mode, the sensor controller assumes master mode 415. Because the master sensor controller is configured to output samples at a predetermined sampling rate, the system controller can communicate the sampling rate to the sensor controller as part of assuming master mode.

[0054] For the device, it may not be necessary to operate more than one sensor controller as a master sensor controller at the same time. If another different sensor controller of the device is currently operating as a master sensor controller, the operation of stage 415 can include synchronizing the sensor controller with the different sensor controller, that is, the "new" master sensor controller is synchronized with the "old" master sensor controller. For example, the new master sensor controller can receive input samples from its corresponding sensor and read data from the signal bus. Although the old master sensor controller has not yet written the synchronization signal to the signal bus, the new master sensor controller can store the input samples received from its corresponding sensor in its data memory, for example, as in stage 225. When the new master sensor controller reads the synchronization signal from the signal bus, the new master sensor controller generates an output value.

[0055] After generating the output values, the new master sensor controller begins storing input samples in its sensor controller data memory (e.g., stage 225) and outputs synchronization signals according to the sampling rate communicated to it by the system controller (e.g., stage 215). Once the new master sensor controller has synchronized the sampling rates with the old master sensor controller, the old master sensor controller transitions to a non-master mode or disabled mode if the sensor corresponding to the old master sensor controller is disabled.

[0056] In some embodiments, 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 master role, the new master sensor controller may begin storing input samples in its sensor controller data memory (e.g., stage 225) and output synchronization signals according to the sampling rate (e.g., stage 215), while the old master sensor controller may transition to a non-master mode or disabled mode.

[0057] In some embodiments, the new master sensor controller is not synchronized with the old master sensor controller, and the operation of stage 415 includes the new master sensor controller outputting a synchronization signal (e.g., stage 215). In these embodiments, after the synchronization signal is output, each sensor controller can output a sample that includes any input samples that the sensor controller has stored in its corresponding sensor controller data memory. The operation of stage 415 can further include the old master sensor controller transitioning to a non-master mode or a disabled mode. In these embodiments, the initial output value after the operation of stage 415 can be generated when the sensor controller has not yet received a threshold number of input samples, but subsequent output values ​​are generated after the new master sample controller has received a threshold number of input samples.

[0058] Thus, the example process is able to achieve signal synchronization without substantial reliance on software routines or timestamps, resulting in faster synchronization. In addition, the example process achieves signal synchronization without discarding as many samples as would be discarded when using timestamps or software routines that delay the extraction process until a particular timestamp indicates that an output should be generated again.

[0059] If in stage 410 the sensor controller determines that it should not operate in master mode, the sensor controller assumes non-master role 420. Assuming non-master role can include performing the actions of flowchart 300, for example, waiting to generate any output values ​​until a synchronization signal is received from the new master sensor controller.

[0060] Embodiments of the subject matter and functional operations described in this specification can be implemented in digital electronic circuitry, in tangibly embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or a combination of one or more of them.

[0061] The term "data processing apparatus" refers to data processing hardware and covers all kinds of apparatus, devices and machines for processing data, including, for example, a programmable processor, a computer or multiple processors or computers. The apparatus can also be or further include special-purpose logic circuits, such as an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). In addition to the hardware, the apparatus can optionally include code that creates an execution environment for a computer program, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more thereof.

[0062] The processes and logic flows described in this specification can 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 can also be performed by a dedicated logic circuit, such as an FPGA or ASIC, or by a combination of a dedicated logic circuit and one or more programmed computers.

[0063] Although this specification contains many specific implementation details, these details should not be understood as limitations on the scope of any invention or on the scope of the content claimed, but as descriptions of features that can be specific to a particular embodiment of a particular invention. Certain features described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. On the contrary, the various features described in the context of a single embodiment can also be implemented separately in multiple embodiments or in any suitable sub-combination. In addition, although features may be described above as working in certain combinations and even initially claimed as such, in some cases, one or more features from the claimed combination can be deleted from the combination, and the claimed combination may involve a sub-combination or a variant of a sub-combination.

[0064] Similarly, although operations are depicted in a particular order in the figures, this should not be understood as requiring that such operations be performed in the particular order shown or in a sequential order, or that all of the operations described be performed, so as to achieve the desired results. In some cases, multitasking and parallel processing can be advantageous. In addition, the separation of various system modules and components in the above-described embodiments should not be understood as requiring such separation in all embodiments, and it should be understood that the program components and systems generally described can be integrated together in a single software product or packaged in multiple software products.

[0065] Specific embodiments of the subject matter have been described. Other embodiments are within the scope of the appended claims. For example, the actions recited in the claims can be performed in a different order and still achieve the desired results. As an example, the processes depicted in the accompanying drawings do not necessarily require the specific order shown or sequential order to achieve the desired results. In some cases, multitasking and parallel processing can be advantageous.

Claims

1. A method performed by a device having a plurality of sensor controllers, wherein: Each sensor controller of the plurality of sensor controllers is 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 among the plurality of sensor controllers, one or more input samples from the corresponding sensor while monitoring a synchronization signal from a master sensor controller among 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; and The sample output generated by the non-master sensor controller from the one or more input samples received while monitoring the synchronization signal from the master sensor controller is output.

2. The method according to claim 1, wherein: Each sensor controller of the plurality of sensor controllers includes a programmable register space including a mode value indicating whether the sensor controller is the master sensor controller.

3. The method according to claim 2, wherein: The programmable register space includes a synchronization mask that indicates which sensor controller is used to monitor a synchronization signal.

4. The method according to claim 2, wherein: The programmable register space includes an enable value that indicates whether the sensor controller should generate an output value.

5. The method according to claim 2, further comprising: 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; as well as In response, it assumes the role of the non-master sensor controller.

6. The method according to claim 5, wherein: Assuming the role of the non-master sensor controller includes waiting to generate any output values ​​until another synchronization signal is received from the new master sensor controller.

7. The method according to claim 6, further comprising: 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; as well as In response, it assumes the role of the master sensor controller.

8. The method according to claim 1, wherein: The plurality of sensors include one or more of an audio sensor, a light sensor, or a proximity sensor.

9. The method according to claim 1, wherein: The plurality of sensors include both audio sensors and light sensors.

10. The method according to claim 1, further comprising: determining that a threshold number of input samples have not been received by the sensor controller; as well as In response, the input samples are stored in a sensor controller data memory of the sensor controller.

11. A system, comprising: A plurality of sensor controllers, wherein each sensor controller of the plurality of sensor controllers is 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 perform operations comprising: receiving and storing, by the non-master sensor controller among the plurality of sensor controllers, one or more input samples from the corresponding sensor while monitoring a synchronization signal from a master sensor controller among 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; and The sample output generated by the non-master sensor controller from the one or more input samples received while monitoring the synchronization signal from the master sensor controller is output.

12. The system according to claim 11, wherein: Each sensor controller of the plurality of sensor controllers includes a programmable register space including a mode value indicating whether the sensor controller is the master sensor controller.

13. The system according to claim 12, wherein: The programmable register space includes a synchronization mask that indicates which sensor controller is used to monitor a synchronization signal.

14. The system according to claim 12, wherein: The programmable register space includes an enable value that indicates whether the sensor controller should generate an output value.

15. The system of claim 12, wherein: The operations further include: 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; and In response, it assumes the role of the non-master sensor controller.

16. The system of claim 13, wherein: Assuming the role of the non-master sensor controller includes waiting to generate any output values ​​until another synchronization signal is received from the new master sensor controller.

17. The system of claim 14, further comprising: 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; as well as In response, it assumes the role of the master sensor controller.

18. The system of claim 11, wherein: The plurality of sensors include one or more of an audio sensor, a light sensor, or a proximity sensor.

19. The system of claim 11, wherein: The plurality of sensors include both audio sensors and light sensors.

20. The system of claim 11, further comprising: determining, by the sensor controller, that a threshold number of input samples have not been received by the sensor controller; as well as In response, the input samples are stored in a sensor controller data memory of the sensor controller.