The present invention relates to marking data for selective processing.
Many high speed measurement systems acquire many gigabytes per second (GB/s) of data and dump the acquired data to local memory for later processing, particularly when that processing is complex and highly reconfigurable. Dumping to local memory can be done, for example, to maintain throughput. In some cases (e.g., transient measurements or pulsed radio frequency (RF) measurements) only localized portions of the data are of interest and only the relevant portions need be processed to improve system throughput. In the case of quasi-periodic or triggered events, data is marked so that the events can later be identified. This is acceptable when the sampling rate is not extremely fast relative to the event rate. However, when the sampling rate is extremely fast, much time is spent looking for the marking events and large amounts of data may be transferred in intermediate stages that waste memory and time. In addition, in complex triggering situations the marking may not be available at the first transient event and important information is lost.
A method for marking relevant data within an acquired set of data in accordance with an embodiment includes receiving a location of a first synchronization event within a synchronizing time pulse synchronized with the acquired set of data, searching the synchronizing time pulse within a predetermined window for the first synchronization event based on the location, identifying the first synchronization event based on the search, and obtaining data from the acquired set of data within an offset range determined based on the identified first synchronization event.
The location is used as a current location and the method iteratively includes, for a predetermined number of periods, applying an offset delta value to the current location to predict a location of a next synchronization event within the synchronizing time pulse, searching the synchronizing time pulse within a window based on a target period fraction for the next synchronization event based on the current location, and obtaining data from the acquired set of data within an offset range determined based on the identified next synchronization event. The offset delta value is based on an estimate of the period.
Upon failing to identify the next synchronization event, the window for searching can be iteratively widened, and the search repeated within the widened window until identifying the next synchronization event or reaching a predefined maximum width for the window. Once the next synchronization event is identified, the current location is updated for the next iteration based on the offset data value and a location of the identified next synchronization event within the synchronizing time pulse.
In an embodiment, the first synchronization event is received from a register, and a data start time and a data stop time from the register is also received from the register. In an embodiment, the offset delta is modified to be reduced by a number of samples based on a combination of the data start time and the data stop time and the offset range is modified to be reduced by a number of samples based on the data start time.
A system for marking relevant data within an acquired set of data in accordance with an embodiment includes an acquisition component configured to acquire a set of data and a synchronizing time pulse synchronized with the acquired set of data, a register configured to store the location of the first synchronization event, and a processing engine. The acquisition device can be, for example, a field-programmable gate array (FPGA) and is configured to identify a location of a first synchronization event within the synchronizing time pulse and the location is received in the register from the acquisition device. The processing engine is configured to perform the method described above.
Further details of the present invention are explained with the help of the attached drawings in which:
The following description is of the best modes presently contemplated for practicing various embodiments of the present invention. The description is not to be taken in a limiting sense but is made merely for the purpose of describing the general principles of the invention. The scope of the invention should be ascertained with reference to the claims. In the description of the invention that follows, like numerals or reference designators will be used to refer to like parts or elements throughout. In addition, the first digit of a reference number identifies the figure in which the part or element is first discussed.
In this type of semi-transient or transient measurement, it can be desirable to process small time intervals separately so that the evolution of some aspect of the signal over the time epoch being measured can be viewed. For example, short-time Fourier transforms (also referred to as limited discrete Fourier transforms) can be applied over small intervals of data to construct an envelope response. An example of a plot of the envelope response is shown in
While other types of processing are possible, typically the time scale of the collected data is referenced to another feature. For example, the time scale may be referenced to a synchronizing time pulse (illustrated in
Complications can result when analyzing data records that are very long. For example, searching for every mark in the TO record can be time consuming and a specific delay may need to be processed after many pulses are identified. Further, if the data is being transferred continuously, there may be large spans of data that are of no interest. Pre-processing or transmitting this data can be needlessly time consuming and if many GBs of data are involved, this can be problematic. Still further, if a search process is not controlled carefully, the first (or first few) events can be missed in complex triggering situations (e.g., if device behavior on initial power-up or start-up needs to be studied, there may be triggering needed to start bias and stimulus very close in time to the initial measurement). Important transient information in these situations can then be lost. The first two of these complications can become more relevant as the fraction of data that is of interest declines (for example in a pulse measurement, when the duty cycle becomes small).
Systems and methods in accordance with embodiments can be applied to improve the marking and/or processing of regions of interest in long, continuously-acquired data records to keep track of transients of interest while maintaining throughput and reducing memory use by only analyzing regions of importance and not transferring uninteresting data. In embodiments, systems and methods can use register marking of a primary synchronization (synch) event and can use known pseudo-periodicity to project future likely locations of those synch events (at which location a localized search can be done). Further, in embodiments, systems and methods can use a gated transfer process to only move data further down a processing chain when proximal to a synch event or projected synch event.
Register Marking and Predictive Search
The core of data acquisition can identify when an initial trigger occurs. In an embodiment, a system can comprise a field-programmable gate array (FPGA) gating an analog-to-digital converter (ADC) for acquiring data, although in other embodiments, the system can comprise some other implementation or device for acquiring data. In an embodiment, the system can be set up to flag a first synch event after the initial trigger, thereby placing the location of this event in memory in a register for later processing stages to look at. Once all of the data (or a predetermined portion of all of the data) is acquired and processing of the data begins, the register can be used to analyze the first event. The processing stage can then begin a search at later periods for the next synch event based on an approximation of the period of events. In an embodiment, the search can be started, for example, at 0.01% of the period, a value which can be adjusted. If a synch event is not found in a given location, the search can be widened up to some predetermined limit before skipping to the next event. Once the synch event is found for a given period, the delay offset then tells the processing stage where to collect and analyze the data. Since searching through the whole synchronization record is not employed, time is saved. Since the first synch event is captured in the register, no transient information is missed.
A method for marking relevant data for processing in accordance with an embodiment is shown in the sequence of events of
Once all of the data (or a predetermined portion of all of the data) is acquired, the method comprises processing the data via a processing engine. The processing engine receives the location of the first synch event from the register (Step 600) and identifies the first synch event in the synchronizing time pulse string, TO (as shown, the first synch event is “A”)(Step 602). The location received from the register may require additional searching to identify the first synch event within the synchronizing time pulse string. For example, a search can be performed within a certain range, such as the broken circle shown including the A event in
Once the first set of data is obtained, an offset ‘delta’ is then applied to the location A of the first synch event to predict the location A+delta of the next synch event based on period estimates, for example (Step 606). The location predicted based on the offset ‘delta’ can be used as a rough estimate, with a search being performed for the next synch event within a range based on a target period fraction (Step 608). For example, the target period fraction is shown as the broken circle including the “A+delta” predicted event location in
If the next synch event is not identified, the period fraction limit can be iteratively widened until either the next synch event is found or until a period fraction limit is reached. If the synch event is not found, processing can be restarted with new period estimates, for example. If the next synch event is found (Step 610), using the location of the synch event of the synchronizing time pulse string, the method further comprises obtaining and processing data from the acquired data string in a desired offset range from the next synch event (Step 612).
Once the second set of data is obtained, the method can iteratively repeat the steps of introducing the offset ‘delta’ to the location of the previous synch event to predict the location of the next synch event based on the period estimates, determining the location of the next synch event, and using the location of the synch event of the synchronizing time pulse string to obtain and process data from the acquired data string. The iterative repetition of steps can continue until data is obtained and processed for a desired number of periods (Step 614).
In other embodiments, the steps can be performed in different order. For example, in an embodiment the processing of the data obtained from the acquired data string can be performed after all of the data is obtained for the desired number of periods. Still further, in other embodiments the data string can be processed in parallel. For example, in an embodiment, once a threshold accuracy of predicting the location of subsequent events is achieved, the acquired data can be processed in parallel so that two or more threads search multiples of a refined “delta” difference to locate events in parallel.
Gated Transfer Process
Register marking and predictive search can reduce search time by roughly the ratio of the period to the sampling rate and avoids losing initial data. In embodiments, gated transfer can provide further improvement. For example, time is lost moving to a processing engine data that will not be used, as moving data can involve transferring data from one memory location to another with some index processing and other overhead. Systems and methods in accordance with embodiments can ignore sections of data during transfer and initial processing steps where a course estimate is available of the data of interest (e.g., a predicted pulse width).
In addition to the steps described with respect to the method illustrated in
A method for marking relevant data and gating transfer of data for processing in accordance with an embodiment is shown in the sequence of events of
Once all of the data (or a predetermined portion of all of the data) is acquired, the method comprises processing the data via a processing engine. The processing engine receives the location of the first synch event from the register and additionally receives the data start time and the data stop time values from the register (Step 800). The processing engine then identifies the first synch event in the synchronizing time pulse string, TO (as shown, the first synch event is “A”)(Step 802). The location received from the register may require additional searching to identify the first synch event within the synchronizing time pulse string. For example, a search can be performed within a certain range, such as the broken circle shown including the A event in
Once the first set of data is obtained, a modified offset ‘delta’ is then applied to the location A of the first synch event to predict the location A+delta of the next synch event (Step 806). The offset ‘delta’ is modified by reducing a default delta (based on the period estimate, for example as used in the method of
If the next synch event is not identified, the period fraction limit can be iteratively widened until either the next synch event is found or until a period fraction limit is reached. The period fraction limit (i.e., the maximum search range) can be further constrained to be no more than the estimated period less the combination of the data start time and data stop time values. If the next synch event is not found, processing can be restarted with new period estimates, for example. If the next synch event is found (Step 810), the method further comprises obtaining and processing data from the acquired data string from the next synch event in a desired offset range reduced by the data time start value (Step 812).
Once the second set of data is obtained, the method can iteratively repeat the steps of introducing the modified offset ‘delta’ to the location of the previous synch event to predict the location of the next synch event based on the period estimates, determining the location of the next synch event, and using the location of the synch event of the synchronizing time pulse string to obtain and process data from the acquired data string. The iterative repetition of steps can continue until data is obtained and processed for a desired number of periods (Step 814).
The present invention may be conveniently implemented using one or more conventional general purpose or specialized digital computer, computing device, machine, or microprocessor, including one or more processors, memory and/or computer readable storage media programmed according to the teachings of the present disclosure. Appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure, as will be apparent to those skilled in the software art.
In some embodiments, the present invention includes a computer program product which is a storage medium or computer readable medium (media) having instructions stored thereon/in which can be used to program a computer to perform any of the processes of the present invention. The storage medium can include, but is not limited to, any type of disk including floppy disks, optical discs, DVD, CD-ROMs, microdrive, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, DRAMs, VRAMs, flash memory devices, magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data.
The previous description of the preferred embodiments is provided to enable any person skilled in the art to make or use the embodiments of the present invention. While the invention has been particularly shown and described with reference to preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention.
Number | Name | Date | Kind |
---|---|---|---|
5801525 | Oldfield | Sep 1998 | A |
5812039 | Oldfield | Sep 1998 | A |
5909192 | Finch | Jun 1999 | A |
5977779 | Bradley | Nov 1999 | A |
6049212 | Oldfield | Apr 2000 | A |
6291984 | Wong | Sep 2001 | B1 |
6316945 | Kapetanic | Nov 2001 | B1 |
6331769 | Wong | Dec 2001 | B1 |
6496353 | Chio | Dec 2002 | B1 |
6504449 | Constantine | Jan 2003 | B2 |
6509821 | Oldfield | Jan 2003 | B2 |
6525631 | Oldfield | Feb 2003 | B1 |
6529844 | Kapetanic | Mar 2003 | B1 |
6548999 | Wong | Apr 2003 | B2 |
6650123 | Martens | Nov 2003 | B2 |
6665628 | Martens | Dec 2003 | B2 |
6670796 | Mori | Dec 2003 | B2 |
6680679 | Stickle | Jan 2004 | B2 |
6700366 | Truesdale | Mar 2004 | B2 |
6700531 | Abou-Jaoude | Mar 2004 | B2 |
6711225 | Sutardja | Mar 2004 | B1 |
6714898 | Kapetanic | Mar 2004 | B1 |
6766262 | Martens | Jul 2004 | B2 |
6826245 | Brown | Nov 2004 | B1 |
6832170 | Martens | Dec 2004 | B2 |
6839030 | Noujeim | Jan 2005 | B2 |
6882160 | Martens | Apr 2005 | B2 |
6888342 | Bradley | May 2005 | B2 |
6894581 | Noujeim | May 2005 | B2 |
6917892 | Bradley | Jul 2005 | B2 |
6928373 | Martens | Aug 2005 | B2 |
6943563 | Martens | Sep 2005 | B2 |
7002517 | Noujeim | Feb 2006 | B2 |
7011529 | Oldfield | Mar 2006 | B2 |
7016024 | Bridge | Mar 2006 | B2 |
7019510 | Bradley | Mar 2006 | B1 |
7054776 | Bradley | May 2006 | B2 |
7068046 | Martens | Jun 2006 | B2 |
7088111 | Noujeim | Aug 2006 | B2 |
7108527 | Oldfield | Sep 2006 | B2 |
7126347 | Bradley | Oct 2006 | B1 |
7284141 | Stickle | Oct 2007 | B2 |
7304469 | Bradley | Dec 2007 | B1 |
7307493 | Feldman | Dec 2007 | B2 |
7509107 | Bradley | Mar 2009 | B2 |
7511496 | Schiano | Mar 2009 | B2 |
7511577 | Bradley | Mar 2009 | B2 |
7521939 | Bradley | Apr 2009 | B2 |
7545151 | Martens | Jun 2009 | B2 |
7683602 | Bradley | Mar 2010 | B2 |
7683633 | Noujeim | Mar 2010 | B2 |
7705582 | Noujeim | Apr 2010 | B2 |
7746052 | Noujeim | Jun 2010 | B2 |
7764141 | Noujeim | Jul 2010 | B2 |
7792230 | Gallagher | Sep 2010 | B1 |
7795230 | Michelet | Sep 2010 | B2 |
7872467 | Bradley | Jan 2011 | B2 |
7924024 | Martens | Apr 2011 | B2 |
7957462 | Aboujaoude | Jun 2011 | B2 |
7983668 | Tiernan | Jul 2011 | B2 |
8027390 | Noujeim | Sep 2011 | B2 |
8058880 | Bradley | Nov 2011 | B2 |
8145166 | Barber | Mar 2012 | B2 |
8156167 | Bradley | Apr 2012 | B2 |
8159208 | Brown | Apr 2012 | B2 |
8169993 | Huang | May 2012 | B2 |
8185078 | Martens | May 2012 | B2 |
8278944 | Noujeim | Oct 2012 | B1 |
8294469 | Bradley | Oct 2012 | B2 |
8305115 | Bradley | Nov 2012 | B2 |
8306134 | Martens | Nov 2012 | B2 |
8410786 | Bradley | Apr 2013 | B1 |
8417189 | Noujeim | Apr 2013 | B2 |
8457187 | Aboujaoude | Jun 2013 | B1 |
8493111 | Bradley | Jul 2013 | B1 |
8498582 | Bradley | Jul 2013 | B1 |
8593158 | Bradley | Nov 2013 | B1 |
8629671 | Bradley | Jan 2014 | B1 |
8630591 | Martens | Jan 2014 | B1 |
8666322 | Bradley | Mar 2014 | B1 |
8718586 | Martens | May 2014 | B2 |
8760148 | Bradley | Jun 2014 | B1 |
8816672 | Bradley | Aug 2014 | B1 |
8816673 | Barber | Aug 2014 | B1 |
8884664 | Bradley | Nov 2014 | B1 |
8903149 | Noujeim | Dec 2014 | B1 |
8903324 | Bradley | Dec 2014 | B1 |
8942109 | Dorenbosch | Jan 2015 | B2 |
9103856 | Brown | Aug 2015 | B2 |
9103873 | Martens | Aug 2015 | B1 |
9176174 | Bradley | Nov 2015 | B1 |
9176180 | Bradley | Nov 2015 | B1 |
9210598 | Bradley | Dec 2015 | B1 |
9239371 | Bradley | Jan 2016 | B1 |
9287604 | Noujeim | Mar 2016 | B1 |
9331633 | Robertson | May 2016 | B1 |
9366707 | Bradley | Jun 2016 | B1 |
9455792 | Truesdale | Sep 2016 | B1 |
9560537 | Lundquist | Jan 2017 | B1 |
9571142 | Huang | Feb 2017 | B2 |
9588212 | Bradley | Mar 2017 | B1 |
9594370 | Bradley | Mar 2017 | B1 |
9606212 | Martens | Mar 2017 | B1 |
9696403 | Elder-Groebe | Jul 2017 | B1 |
9733289 | Bradley | Aug 2017 | B1 |
9753071 | Martens | Sep 2017 | B1 |
9768892 | Bradley | Sep 2017 | B1 |
9860054 | Bradley | Jan 2018 | B1 |
9964585 | Bradley | May 2018 | B1 |
9967085 | Bradley | May 2018 | B1 |
9977068 | Bradley | May 2018 | B1 |
10003453 | Bradley | Jun 2018 | B1 |
10006952 | Bradley | Jun 2018 | B1 |
10064317 | Bradley | Aug 2018 | B1 |
10116432 | Bradley | Oct 2018 | B1 |
20040076246 | Vanderperren | Apr 2004 | A1 |
20060250135 | Buchwald | Nov 2006 | A1 |
20110037667 | Varjonen | Feb 2011 | A1 |
20110050995 | Ozawa | Mar 2011 | A1 |
20160050032 | Emerson | Feb 2016 | A1 |
Number | Date | Country | |
---|---|---|---|
61894185 | Oct 2013 | US |