As mobile devices become smaller and increasingly complex, it becomes especially important for engineers and developers to be able to accurately and effectively measure the power consumption of the products they are designing. Often, the commercial success of a mobile device is tied to the size of the device and its battery life. However, as devices get smaller, the size of the battery also must shrink. Thus, significant emphasis is often placed on the optimization of power consumption during product development.
Often, in order to successfully and accurately measure the power consumption of a device, a platform system is developed in parallel with the form factor device. This platform system must retain all the functionality of the device, while also providing access points for monitoring the power consumption of the various subsystems. Often, a data acquisition system (“DAQ”) is then used to gather and analyze the power consumption data. DAQs are widely available and used as a standard method of development in the mobile hardware industry. However, they are often expensive. Low end models usually costs several thousand U.S. dollars, and high-end models can be upwards of tens of thousands in U.S. dollars. As a result, a small development team may only have enough resources to obtain one or two DAQs. This presents several challenges to the team because the DAQs will need to be shared, which may increase setup times and possibly introduce measurement errors due to human error.
Furthermore, DAQs frequently utilize a sequential method of sampling. Sequential sampling creates a timing accuracy delta (differential) between the sampling of the first channel and the sampling of the last channel This timing accuracy delta can make it difficult to effectively analyze and correlate the power consumption data from the various sample points. Therefore, such DAQs are not effective when developing mobile devices that require the timing accuracy to be within, for example, 10 ns, and require the time sampling resolution to be much finer than, for example, 1 ms.
The technology relates to a system and method for monitoring, in parallel, the power consumption of multiple subsystems of a device under test (“DUT”). Aspects of the technology provide highly accurate and affordable power sampling tools for monitoring the power consumption of a DUT. For instance, some embodiments provide one or more of the following: (1) the system is capable of monitoring, in parallel, the power consumption of numerous subsystems of a DUT, (2) the system is extremely cost efficient, (3) the timing resolution of the power consumption data collected by the system is finer than 1 ms, and (4) the timing accuracy of the power consumption data collected by the system is within 10 ns.
One aspect of the disclosure provides a power monitoring system comprising: (1) a plurality of sensors configured to measure real-time power consumption data of a plurality of subsystems of the device under test, (2) a first circuit including one or more temporary memories and a plurality of communications interfaces, wherein the plurality of communications interfaces are communicatively coupled to one or more of the sensors through a plurality of buses, and (3) one or more processing devices configured to: (a) prime the communications interfaces of the first circuit for data collection by sending instructions to the communications interfaces, and (b) broadcast a start command to the communications interfaces to cause the communications interfaces to: (i) obtain, in parallel, real-time power consumption data from the plurality of sensors, (ii) timestamp the real-time power consumption data obtained from the plurality of sensors, and (iii) store the timestamped real-time power consumption data in the one or more temporary memories of the first circuit.
Another aspect of the disclosure provides a method for monitoring power comprising: (1) priming a plurality of communications interfaces, communicatively coupled to one or more sensors through a plurality of buses for data collection, by sending instructions to the communications interfaces; and (2) broadcasting a start command to the communications interfaces that causes the communications interfaces to: (a) obtain, in parallel, real-time power consumption data for a plurality of subsystems of a device under test from the one or more sensors; (b) timestamp the real-time power consumption data obtained from the plurality of sensors; and (c) store the timestamped real-time power consumption data in the one or more temporary memories of the first circuit.
Aspects, features and advantages of the disclosure will be appreciated when considered with reference to the following description of embodiments and accompanying figures. The same reference numbers in different drawings may identify the same or similar elements. Furthermore, the following description is not limiting; the scope of the present technology is defined by the appended claims and equivalents. For example, while certain processes may be shown in the figures as occurring in a linear fashion, this is not a requirement unless expressly stated herein. Different processes may be performed in a different order or concurrently. Steps may also be added or omitted unless otherwise stated.
The sequential nature of this sampling scheme may introduce a problematic measurement error. As noted above, there is a time delta between the measurement of the voltages of the first DUT load and the voltages of the last DUT load. The value of this time delta changes depending on the specific application and the number of DUT loads. For example, when a DAQ is used to monitor the power consumption of only two DUT loads, the time delta may be very small because the high speed ADC and the high speed multiplexer only need to switch between four channels (e.g., two shunt voltages and two bus voltages). However, when a DAQ is used to monitor, for example, 40 DUT loads, the time delta may be quite significant, (e.g., greater than 100 ns) because the high speed multiplexer needs to switch between 80 channels. Time deltas of this magnitude, or otherwise in excess of 10 ns, make it very difficult to properly reconstruct the overall power consumption of a DUT. Such reconstruction may be computationally expensive or introduce other delays into the system. Reconstruction may also introduce artifacts and errors into the data.
The ability to gather power consumption data with a high degree of timing accuracy can be very important to designing certain complex systems. For example, in a camera system with an LED flash, it is extremely useful to understand how much lead time is necessary for the LED to turn on before the camera shutter can be opened. Any extra time that the LED is turned on results in wasted power. With a parallel power monitoring system, an engineer or developer could effectively optimize this type of a problem. However, with a sequential power monitoring system, this optimization problem becomes much more challenging to solve because of the time delta error.
Since the data is not collected in a sequential manner, it is not subject to the time delta discussed with reference to
DAQ 310 comprises a host computer 311, an FPGA chip 312, and power monitors 371-374. The power monitors 371-374 are used to monitor the power consumption of DUT loads 341-344. This may be accomplished, in part, by monitoring the voltages across sense resistors 331-334 (e.g., shunt voltages 351-354) and the voltages across DUT loads 341-344 (e.g., bus voltages 161-164). Power monitors 371-374 may be implemented using a chip such as the Texas Instruments INA226 chip, which is a current shunt and power monitor with an I2C interface. FPGA chip 312 may be implemented using a chip such as a Xilinx XC7A100T chip. Host computer 311 may be used for displaying and analyzing the power consumption data of DUT Loads 341-344.
Other variations of the embodiment depicted in
Furthermore, numerous communication interfaces or standards can be utilized between host computer 311 and FPGA chip 312. For example, FPGA chip 312 may communicate with host computer 311 through any one of the following types of interfaces: USB, Ethernet, RS-232, Serial Peripheral Interface (“SPI”), I2C, or a custom-defined communications interface. FPGA chip 112 may also communicate with host computer 311 wirelessly through, for example, WiFi, Bluetooth, ZigBee, or a custom-defined wireless communications protocol. Similarly, numerous communication interfaces or standards can be utilized between FPGA chip 312 and power monitors 371-374.
In order to process this information digitally, the internal ADC 420 may be used to sample the shunt voltage 351 and the bus voltage 361. Switch 410 may be used to change the sampling inputs to the ADC 420. Furthermore, the information obtained from the ADC 420 may be processed by computing device 430, and then serialized by I2C Interface 440 before it is sent to, for example, the FPGA chip 312. SDA 441 and SCL 442 are the data and clocking lines that form the I2C bus between the power monitor 371 and the FPGA chip 312.
As mentioned above, the FPGA chip 312 in any one of
As shown in
The I2C core 804 retrieves, timestamps, and stores the power consumption data received from power monitors 371-374 in temporary memory. As shown in
By timestamping the data, the computing device 803 can retrieve the data stored in memories 821-824 without creating a timing delta. After retrieving the power consumption data from memories 821-824 of the I2C core 804, the computing device 803 can process the data and store it in the out-data buffer of the FIFO core 802. For example, if power monitors 371-374 simply provide data concerning the shunt and the bus voltages, the computing device 803 may perform the calculations discussed above with reference to
The FIFO core 802 automatically handles the timing protocols and resources needed to package and transmit the power consumption data to the host computer 311. The computing device 803 needs to process and transmit the power consumption data obtained from the I2C core 804 very quickly and it does not have the computational resources to wait around for the next polling packet from the host computer 311. Therefore, the FIFO core 802 automatically handles these processes. The memory of the FIFO core 802 should be large enough to store all of the data generated during an especially long or extended polling period of the host computer 311. For example, since a USB bulk data transfer is asynchronous, there can be large variations in polling periods. Furthermore, for non-real time operating systems, such as Windows and Linux, polling periods can vary, especially when the host computer is performing heavy computations. Therefore, in an embodiment where packets of data are generated by the FPGA chip 312 every 1 ms, and each of those packets has a length of approximately 273 bytes, it may be appropriate to allocate at least 8192 bytes to each of the buffers in the memory 830. In such an embodiment, a polling period may be upwards of 20+/−10% ms. Therefore, it would be advantageous to be able to store at least 30+/−10% ms of data in the memory 830 of the FIFO core 802.
In order to guarantee that no packets of data are lost, the FIFO core 802 may include a locking mechanism that locks out the consumption of the data during any SPI traffic (for both directions). Because the amount of data written into the memory 830 of the FIFO core 802 is high, it might take some time before a full write operation can finish. As a result, if the computing device 803 is pushing data into the data-out buffer of the memory 830 and the USB/SPI bridge 801 is pulling out data, there might be a situation where there is a race condition. This can be avoided by including a locking mechanism. As shown in
It is also possible combine memories 821-824 and 830. For example, the I2C masters 811-814 could store the raw data received from power monitors 371-374 in the data-out buffer of the memory 830. However, there is some benefit to processing the data first. For example, by using the computing device 803 to perform some of the calculations discussed above with reference to
In block 910, the one or more processing devices prime a plurality of communications interfaces (e.g., I2C masters) by sending instructions to the communications interfaces. The one or more processing devices can prime the communications interfaces in a sequential manner These instructions prime the communications interfaces, but they do not cause them to initiate communications with, for example, a plurality of sensors communicatively coupled to the communications interfaces through a plurality of buses (e.g., power monitors).
In block 920, the one or more processing devices broadcast a start command to the communications interfaces that causes them to obtain, in parallel, real-time power consumption data from a plurality of sensors configured to measure real-time power consumption data of a plurality of subsystems of a DUT. The received power consumption data can be stored and timestamped in one or more temporary memories of a first circuit (e.g., the memories associated with the communications interfaces). The timestamps may correspond with when the start command was sent by the one or more processing devices.
In blocks 930 and 940, the one or more processing devices retrieve the timestamped real-time power consumption data from the one or more temporary memories of the first circuit and calculate the amount of power consumed by the subsystems of the DUT based on the retrieved data. For example, if the sensors simply provide data concerning the shunt and the bus voltages associated with the plurality of subsystems of the DUT, the one or more processing devices may perform the calculations discussed above with reference to
In block 950, the one or more processing devices store the calculated amount of power consumed by the subsystems of the DUT in a data-out buffer within a memory (e.g., a FIFO buffer) of a second circuit. The second circuit can then automatically handle the timing protocols and resources needed to package and transmit the real-time power consumption data to, for example, a host computer.
While the examples above describe monitoring components of a DUT, it should be understood that the techniques and principles described in the examples may similarly be applied in monitoring components of multiple DUTs at a given time. As these and other variations and combinations of the features discussed above can be utilized without departing from the disclosure as defined by the claims, the foregoing description of the embodiments should be taken by way of illustration rather than by way of limitation of the disclosure as defined by the claims. It will also be understood that the provision of examples of the disclosure (as well as clauses phrased as “such as,” “e.g.”, “including” and the like) should not be interpreted as limiting the disclosure to the specific examples; rather, the examples are intended to illustrate only some of many possible embodiments.
The present application claims the benefit of the filing date of U.S. Provisional Patent Application No. 62/425,414 filed Nov. 22, 2016, the disclosure of which is hereby incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62425414 | Nov 2016 | US |