Processing system for lidar measurements

By using an optical measurement system that subdivides time intervals and accumulates photon counts using multiple registers, the problem of inaccurate ranging in LIDAR systems under a wide range of environmental conditions is solved, achieving higher temporal resolution and background noise suppression, thus improving ranging accuracy.

CN114424086BActive Publication Date: 2025-11-07OUSTER INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202080066762.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-08-05
Filing Date
2020-08-05
Publication Date
2025-11-07
Estimated Expiration
2040-08-05

AI Technical Summary

Technical Problem

Existing LIDAR systems struggle to provide robust distance accuracy down to a few centimeters under a wide range of environmental conditions, and single-photon avalanche diodes (SPADs) are susceptible to background noise, resulting in insufficient measurement accuracy.

Method used

An optical measurement system is employed to estimate the background noise level and aggregate the total photon count by subdividing time intervals and using multiple registers. Combined with arithmetic logic circuits and selection signals, the system improves time resolution and measurement accuracy.

Benefits of technology

It improves the ranging accuracy of the LIDAR system in changing environments, reduces the impact of background noise on the measurement, and enhances the time resolution and measurement accuracy.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114424086B_ABST
    Figure CN114424086B_ABST
Patent Text Reader

Abstract

An optical measurement system can improve the accuracy of its estimates of distances to surrounding objects by improving various aspects of its data path. Spatial resolution can be improved by subdividing histogram bins or integration registers based on spatial orientation. Saturation at any point in the data path can be detected and used to stop counting photons in individual pixels, which can then be normalized after the end of the measurement. Multiple peaks can be detected using a recursive or iterative technique to identify the largest remaining peak at each stage. Instead of iterating through the histogram memory multiple times, thresholds can be precomputed based on an estimated ambient noise level, and peaks can be detected in a single pass.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross Reference to Related Applications

[0002] This application claims the benefit of and priority to U.S. Provisional Application No. 62 / 882,907, filed August 5, 2019, which is incorporated by reference herein in its entirety. TECHNICAL FIELD

[0003] The present disclosure generally describes a light detection and ranging (LIDAR) system. More specifically, the present disclosure describes a SPAD-based LIDAR system that estimates background noise levels and aggregates total photon counts in the process of measurements with improved temporal resolution. BACKGROUND

[0004] LIDAR systems are used for object detection and ranging, for example, for vehicles such as cars, trucks, boats, etc. LIDAR systems are also used for mobile applications (e.g., for facial recognition), home entertainment (e.g., gesture capture for video game input), and augmented reality. LIDAR systems measure distances to objects by illuminating a landscape with pulses from a laser and then measuring the time for a photon to travel to an object and return after reflection, as measured by a receiver of the LIDAR system. The detected signal is analyzed to detect the presence of a reflected signal pulse among background light. The distance to an object can be determined based on the time of flight from transmission of a pulse to receipt of a corresponding reflected pulse.

[0005] In particular, it can be difficult to provide robust distance accuracy down to a few centimeters under all conditions at the economic cost of a LIDAR system. Promising new detector technologies like single-photon avalanche diodes (SPADs) are attractive, but have significant deficiencies when used to measure time of flight and other signal characteristics, particularly over a wide range of environmental conditions and target distances due to their limited dynamic range. Additionally, because of their sensitivity to even small amounts of photons, SPADs can be extremely susceptible to environmental levels of background noise light.

[0006] LIDAR systems would benefit from a more accurate method of detecting reflected laser pulses and measuring their time of flight under varying real-world conditions. In particular, SPAD-based LIDAR systems would benefit from a method of accurately estimating background noise levels and aggregating total photon counts in the process of measurements with improved temporal resolution. SUMMARY

[0007] In some embodiments, an optical measurement system can include a light source configured to transmit one or more pulse trains in one or more first time intervals as part of an optical measurement. Each of the one or more first time intervals can include one of the one or more pulse trains. The optical measurement system can also include a light sensor comprising one or more photodetectors configured to detect photons from the one or more pulse trains and photons from ambient light. The optical measurement system can additionally include a plurality of first registers that accumulate photon counts from the one or more photodetectors received during the one or more first time intervals. Each of the one or more first time intervals can be subdivided into a plurality of first time bins, and each of the plurality of first registers can accumulate photon counts received during a corresponding one of the plurality of first time bins in each of the one or more first time intervals to represent a histogram of photon counts received during the one or more first time intervals. The optical measurement system can further include a plurality of second registers that accumulate photon counts from the one or more photodetectors in a second time interval that overlaps at least a portion of the one or more first time intervals. The second time interval can be subdivided into a plurality of second time bins, and each of the plurality of second registers can accumulate photon counts received during a corresponding one of the plurality of second time bins.

[0008] In some embodiments, a method of using an optical measurement system can include transmitting one or more pulse trains in one or more first time intervals as part of an optical measurement. Each of the one or more first time intervals can include one of the one or more pulse trains. The method can also include detecting photons from the one or more pulse trains and photons from ambient light. The method can additionally include accumulating photon counts from the one or more photodetectors received during the one or more first time intervals into a plurality of first registers. Each of the one or more first time intervals can be subdivided into a plurality of first time bins, and each of the plurality of first registers can accumulate photon counts received during a corresponding one of the plurality of first time bins in each of the one or more first time intervals to represent a histogram of photon counts received during the one or more first time intervals. The method can further include accumulating photon counts in a second time interval that overlaps at least a portion of the one or more first time intervals into a plurality of second registers. The second time interval can be subdivided into a plurality of second time bins. Each of the plurality of second registers can accumulate photon counts received during a corresponding one of the plurality of second time bins.

[0009] In any embodiment, any and all of the following features can be included, in any combination, but are not limited to. The optical measurement system can further include an arithmetic logic circuit that aggregates the photon counts in each of the plurality of second registers to produce a total photon count received during the second time interval. Each of the one or more first time intervals can be defined by a first start signal. The second time interval can be defined by a second start signal that is independent of the first start signal. The one or more photodetectors can include one or more single photon avalanche diodes (SPADs). Each of the one or more first time intervals can be included in the second time interval. The optical measurement system can further include a selection signal that selects which of the plurality of second registers accumulate photon counts during each of the plurality of second time intervals. The selection signal can be generated by a timer. The selection signal can be generated on the same integrated circuit as the plurality of second registers. The selection signal can alternatively not be generated on the same integrated circuit as the plurality of second registers. The selection signal can be generated based on an angular position of the light sensor at a time around the central axis. The method / system operations can further include aggregating the photon counts in each of the plurality of second registers to produce a total photon count received during the second time interval; and estimating background noise detected by the optical measurement system during the second time interval using the total photon count. Estimating the background noise can include dividing the total photon count by a length of the second time interval. Estimating the background noise can include identifying one or more time intervals of the plurality of first time intervals during which reflected photons caused by one or more pulse trains are estimated to have been received by the optical measurement system; and excluding photon counts received in the one or more time intervals from the total photon count. The background noise can be removed from the plurality of first registers. The second time interval can include time intervals outside of the one or more first time intervals. A histogram of the photon counts in the plurality of first registers received during the one or more first time intervals can represent a single optical measurement made by the optical measurement system. The method / system operations can further include using the photon counts stored in the plurality of second registers in the second time interval to produce an environmental image of the surrounding environment. The photon counts stored in the plurality of second registers in the second time interval can include photons from one or more pulse trains and photons from ambient light.

[0010] In some embodiments, an optical measurement system can include a light source configured to transmit one or more pulse trains in one or more first time intervals as part of an optical measurement. Each of the one or more first time intervals can include one of the one or more pulse trains. The optical measurement system can also include a light sensor comprising one or more photodetectors configured to detect photons from the one or more pulse trains. The optical measurement system can also include a data path comprising an arithmetic logic circuit and a plurality of first registers. The data path can be configured to populate the plurality of first registers with photon counts from the one or more pulse trains aggregated by the arithmetic logic circuit such that the plurality of first registers represent a histogram of photon counts received during the one or more first time intervals. The optical measurement system can additionally include a saturation detection circuit that determines when saturation occurs in the data path and causes the data path to stop populating the plurality of first registers in a time interval of the one or more first time intervals that occurs after saturation occurs.

[0011] In some embodiments, a method of using an optical measurement system can include transmitting one or more pulse trains in one or more first time intervals as part of an optical measurement. Each of the one or more first time intervals can include one of the one or more pulse trains. The method can also include detecting photons from the one or more pulse trains using one or more photodetectors. The method can additionally include populating a plurality of first registers in a data path with photon counts from the one or more photodetectors. The photon counts are aggregated by an arithmetic logic circuit in the data path such that the plurality of first registers represent a histogram of photon counts received during the one or more first time intervals. The method can further include determining when saturation occurs in the data path. The method can also include causing the data path to stop populating the plurality of first registers in a time interval of the one or more first time intervals that occurs after saturation occurs.

[0012] In any embodiment, any and all of the following features can be included, in any combination, but are not limited to. The data path can include a counter that counts a number of one or more first time intervals that occur before the saturation detection circuit causes the data path to stop populating the plurality of first registers. The counter can be incremented by a signal that also starts the one or more first time intervals. The data path can further include a counter that counts a number of times the arithmetic logic circuit updates the plurality of first registers before the saturation detection circuit causes the data path to stop populating the plurality of first registers. The saturation detection circuit can receive a signal from the arithmetic logic circuit indicating that the arithmetic logic circuit has saturated. The saturation detection circuit can receive a signal indicating that a result from the arithmetic logic circuit is greater than a maximum number to be stored in one of the plurality of first registers. The saturation detection circuit can cause the data path to stop populating the plurality of first registers by disabling a periodic signal that causes the arithmetic logic circuit to accumulate photon counts. The saturation detection circuit can cause the data path to stop populating the plurality of first registers by disabling a periodic signal that causes the plurality of first registers to store updated photon counts. The system can also include a second data path comprising a second arithmetic logic circuit and one or more integration registers, where the second data path is configurable to accumulate photon counts from one or more photodetectors into the one or more integration registers in a second time interval comprising at least one or more first time intervals. The second data path can include a second saturation detection circuit that determines when saturation occurs in the second data path and causes the second data path to stop accumulating photon counts from the one or more photodetectors into the one or more integration registers during the second time interval after saturation occurs. The system can also count a number of events that occur before the data path is caused to stop populating the plurality of first registers. The system can also calculate a multiplier using: the number of events that occur before the data path is caused to stop populating the plurality of first registers; and a total number of events that occur during the one or more first time intervals. The system can also scale a histogram of photon counts in the plurality of first registers using the multiplier. The system can also locate a peak in the histogram of photon counts in the plurality of first registers after scaling the histogram of photon counts. The system can also populate one or more integration registers in a second data path with photon counts from one or more photodetectors, where the photon counts can be accumulated by a second arithmetic logic circuit in the second data path such that the one or more integration registers represent a total photon count received in a second time interval comprising at least one or more first time intervals; determine when saturation occurs in the second data path; and cause the second data path to stop populating the one or more integration registers after saturation occurs.The system can also count the number of events that occur before causing the second data path to stop filling the one or more integration registers; and scale the total photon count in the one or more integration registers using the number of events that occur before causing the second data path to stop filling the one or more integration registers. The system can also calculate an ambient background noise level after scaling the total photon count. The system can also use the ambient background noise level to set a threshold for detecting peaks in the optical measurement. The system can also remove the ambient background noise level from a histogram of photon counts in the plurality of first registers.

[0013] In some embodiments, an optical measurement system can include a light source configured to transmit one or more pulse trains in one or more first time intervals as part of an optical measurement, where each of the one or more first time intervals includes one of the one or more pulse trains. The system can also include a light sensor having one or more light detectors configured to detect photons from the one or more pulse trains. The system can additionally include a plurality of first registers that accumulate photon counts received from the one or more light detectors during the one or more first time intervals to represent a histogram of photon counts received during the one or more first time intervals, each of the plurality of first registers corresponding to a time bin in the histogram. The system can further include a peak detection circuit configured to identify a maximum peak in at least a portion of the histogram in the plurality of first registers each time the peak detection circuit executes. The system can also include a masking circuit configured to cause the peak detection circuit to exclude a register corresponding to a peak identified as a maximum peak during a previous execution of the peak detection circuit from being identified as a maximum peak during a subsequent execution of the peak detection circuit, such that multiple executions of the peak detection circuit identify multiple peaks.

[0014] In some embodiments, a method of using an optical measurement system can include transmitting one or more pulse trains in one or more first time intervals as part of an optical measurement. Each of the one or more first time intervals can include one of the one or more pulse trains. The method can also include detecting photons from the one or more pulse trains using one or more light detectors. The method can additionally include accumulating photon counts from the one or more light detectors into a plurality of first registers to represent a histogram of photon counts received during the one or more first time intervals, each of the plurality of first registers corresponding to a time bin in the histogram. The method can further include identifying a plurality of peaks in the histogram in the plurality of first registers through multiple executions of a peak detection circuit. Each execution of the peak detection circuit can identify a maximum peak in at least a portion of the histogram. A register corresponding to a peak identified as a maximum peak during a previous execution of the peak detection circuit can be excluded from being identified as a maximum peak during a subsequent execution of the peak detection circuit.

[0015] In any embodiment, any and all of the following features can be included, in any combination, but are not limited thereto. The system can also include a plurality of second registers configured to store a plurality of peaks identified by the peak detection circuit. Each of the plurality of peaks can be stored as a series of time bins representing time intervals in the histogram around the peak. Each of the plurality of peaks can be stored with a relative time in the histogram where the peak occurs. The system can be configured to send the plurality of peaks identified by the peak detection circuit to a processor, where the processor can operate on an integrated circuit chip that is different from an integrated circuit chip on which the peak detection circuit operates. The plurality of peaks can be sent to the processor without applying a filter to values representing the plurality of peaks. Each execution of the peak detection circuit can be configured to loop through the plurality of first registers and identify a maximum value in the plurality of first registers that has not been excluded by the masking circuit. The maximum peak can include a subset of the plurality of first registers centered around one of the plurality of first registers storing the maximum value. The peak detection circuit can be configured to loop through the plurality of first registers at least three times to identify at least three maximum peaks in the histogram. The one or more light detectors can include one or more SPADs. The method / system operations can also include applying a low pass filter to the histogram stored in the plurality of first registers prior to identifying the maximum peaks. The method / system operations can also include applying a matched filter to the histogram stored in the plurality of first registers prior to identifying the maximum peaks, where the matched filter can correspond to one or more pulse trains. A peak identified as a maximum peak during a previous execution of the peak detection circuit can be excluded from being identified as a maximum peak during a subsequent execution of the peak detection circuit by masking the register in the plurality of first registers representing the peak previously identified as a maximum peak from the peak detection circuit during the subsequent execution. A peak identified as a maximum peak during a previous execution of the peak detection circuit can be excluded from being identified as a maximum peak during a subsequent execution of the peak detection circuit by: setting a threshold to be at or below a maximum value from the peak previously identified as a maximum peak; and excluding peaks that meet or exceed the threshold during the subsequent execution of the peak detection circuit. Excluding peaks that meet or exceed the threshold during the subsequent execution of the peak detection circuit can include: identifying a register in the plurality of first registers that has a value that meets or exceeds the threshold; and excluding registers around the register in the plurality of first registers. The method / system operations can also include excluding an initial peak in the histogram from an execution of the peak detection circuit. The initial peak can be generated by a reflection of one or more pulse trains out of a housing of the optical measurement system. The initial peak can meet or exceed a saturation threshold for the saturation detection circuit. The method / system operations can also include masking the initial peak from the saturation detection circuit.

[0016] In some embodiments, an optical measurement system can include a light source configured to transmit one or more pulse trains in one or more first time intervals as part of an optical measurement. Each of the one or more first time intervals can include one of the one or more pulse trains. The system can also include a light sensor having one or more photodetectors configured to detect photons from the one or more pulse trains. The system can additionally include a first integrated circuit including a plurality of first registers that accumulate counts of photons received from the one or more photodetectors during the one or more first time intervals to represent a histogram of counts of photons received during the one or more first time intervals. Each of the plurality of first registers can correspond to a time bin in the histogram. The first integrated circuit can also include a threshold detection circuit configured to provide a threshold for identifying one or more peaks in the histogram; and a peak detection circuit configured to traverse through the plurality of first registers and identify the one or more peaks represented in the histogram using the threshold. The system can also include a second integrated circuit having a processor. The first integrated circuit can be configured to send information describing the one or more peaks detected using the threshold to the processor on the second integrated circuit.

[0017] In some embodiments, a method of using an optical measurement system can include transmitting one or more pulse trains in one or more first time intervals as part of an optical measurement. Each of the one or more first time intervals can include one of the one or more pulse trains. The method can also include detecting photons from the one or more pulse trains using one or more photodetectors. The method can additionally include accumulating counts of photons from the one or more photodetectors into a plurality of first registers on a first integrated circuit to represent a histogram of counts of photons received during the one or more first time intervals, where each of the plurality of first registers can correspond to a time bin in the histogram. The method can further include providing a threshold on the first integrated circuit for identifying one or more peaks in the histogram. The method can also include identifying the one or more peaks represented in the histogram on the first integrated circuit by traversing through the plurality of first registers with the threshold. The method can additionally include sending information describing the one or more peaks detected using the threshold from the first integrated circuit to a processor on a second integrated circuit.

[0018] In any embodiment, any and all of the following features can be included, in any combination, but are not limited to. The threshold detection circuit can be configured to use an existing threshold. The threshold detection circuit can be configured to calculate the threshold based on a background noise level present during one or more first time intervals. The system can also include one or more integration registers that accumulate photon counts from the one or more photodetectors in a second time interval that overlaps at least a portion of the one or more first time intervals, wherein the threshold detection circuit can be further configured to use one or more values in the one or more integration registers to calculate the background noise level. The threshold detection circuit can be further configured to calculate the background noise level by dividing the total photon counts in the one or more integration registers by a duration during which the one or more integration registers are enabled. The duration during which the one or more integration registers are enabled can be determined based on a total number of clock cycles during which the one or more integration registers are enabled. The threshold detection circuit can be further configured to calculate the background noise level by: identifying one or more time intervals in the histogram that represent one or more peaks; and subtracting the photon counts in the one or more time intervals from the total photon counts in the one or more integration registers. The system can also include a plurality of second registers configured to store the one or more peaks identified by the peak detection circuit. Each of the one or more peaks can be stored as: a time interval window that represents time intervals in the histogram around the peak; and a relative time in the histogram at which the peak occurred. The first integrated circuit can be implemented on a physically separate and different chip from a chip on which the second integrated circuit is implemented. The one or more peaks can be sent to the processor without applying a filter to values representing the one or more peaks in the histogram. The method / system operations can also include removing the background noise level from the one or more peaks represented in the histogram. The method / system operations can also include determining the background noise level based on samples of photons received by the one or more photodetectors between the one or more pulse trains. Providing the threshold can include setting the threshold to be a predetermined interval above the background noise level. Providing the threshold can include setting the threshold to be an interval above the background noise level that is a predetermined percentage of the background noise level. The method / system operations can also include applying a low pass filter to the histogram stored in the plurality of first registers prior to identifying the one or more peaks. The method / system operations can also include applying a matched filter to the histogram stored in the plurality of first registers prior to identifying the one or more peaks, wherein the matched filter can correspond to the one or more pulse trains. The one or more peaks can include peaks that correspond to reflections of the one or more pulse trains and peaks that do not correspond to reflections of the one or more pulse trains. Identifying the one or more peaks represented in the histogram can use only a single pass through the plurality of first registers. BRIEF DESCRIPTION OF DRAWINGS

[0019] A further understanding of the nature and advantages of various embodiments can be realized by reference to the remaining portions of the specification and the drawings, wherein like reference numerals are used throughout several of the figures to refer to similar components. In some instances, a sub-label is associated with a reference numeral to denote one of multiple similar components. When reference is made to a reference numeral without specification to an existing sub-label, it is intended to refer to all such multiple possible occurrences of the reference numeral.

[0020] Figure 1A and 1B An automotive light ranging device, also referred to herein as a LIDAR system, is shown in accordance with some embodiments.

[0021] Figure 2 A block diagram of an exemplary LIDAR device for implementing various embodiments is shown.

[0022] Figure 3 Operation of a typical LIDAR system that can be improved by embodiments is described.

[0023] Figure 4 An illustrative example of a light transmission and detection process for a light ranging system in accordance with some embodiments is shown.

[0024] Figure 5 Various stages of a sensor array and associated electronics in accordance with embodiments of the present application are shown.

[0025] Figure 6 A histogram in accordance with embodiments of the present application is shown.

[0026] Figure 7 Accumulation of a histogram over multiple pulse trains for selected pixels in accordance with embodiments of the present application is shown.

[0027] Figure 8 Circuitry for receiving photons and producing a collection of signals stored in a memory representing a histogram in accordance with some embodiments is shown.

[0028] Figure 9 Timing associated with different shots in a measurement in accordance with some embodiments is shown.

[0029] Figure 10 A data path with an integration register in accordance with some embodiments is shown.

[0030] Figure 11 A timing plot for an integration data path in accordance with some embodiments is shown.

[0031] Figure 12 Timing plots for integration data paths and histogram data paths in accordance with some embodiments are described.

[0032] Figure 13An integration data path is shown that includes an ALU for providing an aggregated sum from all integration registers, according to some embodiments.

[0033] Figure 14 A relative timing diagram for an integration data path and a histogram data path is shown, according to some embodiments.

[0034] Figure 15 An integration data path is shown that generates selection signals on-chip, according to some embodiments.

[0035] Figure 16 An integration data path is shown that receives selection signals from off-chip sources, according to some embodiments.

[0036] Figure 17 Ambient light measurement using multiple integration registers for an electric vehicle is illustrated, according to some embodiments.

[0037] Figure 18 A method for using an optical measurement system is illustrated, according to some embodiments.

[0038] Figure 19 The contents of a histogram memory when saturation occurs is shown, according to some embodiments.

[0039] Figure 20 The impact that saturation can have on the overall shape of a received photon count histogram is shown, according to some embodiments.

[0040] Figure 21 The contents of a histogram memory from the measurement depicted in Figure 19

[0041] Figure 22 A process for scaling a saturated histogram memory using an event counter is shown, according to some embodiments.

[0042] Figure 23 A circuit diagram of a histogram data path with saturation detection is shown, according to some embodiments.

[0043] Figure 24 A timeline of photon counts received during a measurement for an integration data path is illustrated, according to some embodiments.

[0044] Figure 25 How photon counts can continue to be aggregated in one or more integration registers during a measurement is illustrated, according to some embodiments.

[0045] Figure 26 How aggregation of photon counts into integration registers can stop when saturation occurs is shown, according to some embodiments.​

[0046] Figure 27 Illustrating an integral data path with saturation protection according to some embodiments.

[0047] Figure 28 Illustrating a flowchart of a method for handling saturation using an optical measurement system according to some embodiments.

[0048] Figure 29 Illustrating an initial peak that can be identified and masked according to some embodiments.

[0049] Figure 30 Illustrating multiple peaks represented in a histogram memory according to some embodiments.

[0050] Figure 31 Illustrating a previously detected pulse that is masked from subsequent execution by a peak detection circuit according to some embodiments.

[0051] Figure 32 Illustrating how a masking circuit can continuously generate a new mask as additional peaks are identified by a peak detection circuit according to some embodiments.

[0052] Figure 33 Illustrating a circuit for detecting multiple peaks in a histogram memory according to some embodiments.

[0053] Figure 34 Illustrating a flowchart of a method for detecting multiple peaks in a measurement according to some embodiments.

[0054] Figure 35 Illustrating a method for detecting multiple peaks using an optical measurement system according to some embodiments.

[0055] Figure 36 Illustrating a plot of light detected at an optical measurement system caused by multiple excitations according to some embodiments.

[0056] Figure 37 Illustrating an estimated background noise level compared to received photon counts in a histogram memory according to some embodiments.

[0057] Figure 38 Illustrating a plot in which an estimated background noise can be used to set a signal threshold for detecting peaks in a histogram memory according to some embodiments.

[0058] Figure 39 Illustrating a peak window detected by a threshold operation that can be off-chip communicated to a processor according to some embodiments.

[0059] Figure 40Circuits for calculating thresholds and detecting one or more peaks in a histogram memory are shown in accordance with some embodiments.

[0060] Figure 41 Methods for detecting multiple peaks using an optical measurement system are shown in accordance with some embodiments.

[0061] The term

[0062] The term "ranging" particularly when used in the context of methods and apparatus for measuring an environment or assisting vehicle operation can refer to determining a distance or distance vector from one position or location to another position or location. "Optical ranging" can refer to a class of ranging methods that utilize electromagnetic waves to perform the ranging method or function. Thus, an "optical ranging apparatus" can refer to an apparatus for performing an optical ranging method or function. "Lidar" or "LIDAR" can refer to a class of optical ranging methods that measure distance to a target by illuminating the target with a pulsed laser and thereafter measuring the reflected pulse with a sensor. Thus, a "lidar apparatus" or "lidar system" can refer to a class of optical ranging apparatus for performing a lidar method or function. An "optical ranging system" can refer to a system that includes at least one optical ranging apparatus (e.g., a lidar apparatus). The system can further include one or more other apparatus or components in various arrangements.

[0063] A "burst" can refer to one or more pulses transmitted together. The emission and detection of a burst can be referred to as an "excitation." An excitation can occur in a "detection time interval" (or "detection interval").

[0064] A "measurement" can include N bursts emitted and detected in N excitations, each excitation lasting a detection time interval. The entire measurement can be in a measurement time interval (or just "measurement interval"), which can equal the N detection intervals of the measurement or longer, for example when a pause occurs between detection intervals.

[0065] An "optical sensor" or "light sensitive element" can convert light into an electrical signal. An optical sensor can include a plurality of "light detectors," for example, single photon avalanche diodes (SPADs). An optical sensor can correspond to a particular resolution pixel in a ranging measurement.

[0066] A "histogram" can refer to any data structure representing a series of values over time, such as values discretized over time intervals. A histogram can have a value assigned to each time interval. For example, a histogram can store a counter of the number of light detectors that fired during a particular time interval in each of one or more detection intervals. As another example, a histogram can correspond to the digitization of an analog signal at different times. A histogram can include signal (e.g., pulses) and noise. Thus, a histogram can be viewed as a combination of signal and noise as a time series of photons or photon flux. A raw / digitized histogram (or cumulative photon time series) can contain signal and noise digitized in memory without filtering. A "filtered histogram" can refer to the output after a raw histogram passes through a filter.

[0067] An emitted signal / pulse can refer to an "ideal" or "template" pulse or pulse train that is not distorted. A reflected signal / pulse can refer to a reflected laser pulse from an object and can be distorted. A digitized signal / pulse (or raw signal) can refer to the digitized result from detection of one or more pulse trains as a detection interval stored in memory, and thus can be equivalent to a portion of a histogram. A detected signal / pulse can refer to the location in memory where a signal was detected. A detected pulse train can refer to the actual pulse train found by a matched filter. An expected signal profile can refer to the shape of a digitized signal resulting from a particular emitted signal with a particular distortion in the reflected signal. DETAILED DESCRIPTION

[0068] The present disclosure relates generally to the field of object detection and ranging, and more specifically to the use of time-of-flight optical receiver systems for applications such as real-time three-dimensional mapping and object detection, tracking, and / or classification. Various improvements can be realized with various embodiments of the present invention. Such improvements can be increased accuracy, reduced noise, and increased energy efficiency.

[0069] The following section introduces an illustrative automotive LIDAR system, followed by a description of example techniques for detecting signals by an optical ranging system, and then different embodiments are described in more detail.

[0070] I. Illustrative Automotive LIDAR System

[0071] Figure 1A And 1BA vehicle light ranging device, also referred to herein as a LIDAR system, is shown in accordance with some embodiments. The vehicle application of the LIDAR system is chosen here for illustrative purposes only, and the sensors described herein can be used in other types of vehicles, such as boats, airplanes, trains, etc., as well as in a variety of other applications where 3D depth images are useful, such as medical imaging, mobile phones, augmented reality, geodesy, geomatics, archaeology, topography, geology, geomorphology, seismology, forestry, atmospheric physics, laser guidance, airborne laser swath mapping (ALSM), and laser altimetry. In accordance with some embodiments, a LIDAR system, such as scanning LIDAR system 101 and / or solid-state LIDAR system 103, can be mounted on the roof of vehicle 105, as shown in Figure 1A and 1B .

[0072] Figure 1A Scanning LIDAR system 101, shown in

[0073] , can employ a scanning architecture, in which the orientation of LIDAR light source 107 and / or detector circuit 109 can be scanned about one or more fields of view 110 within an external field or scene outside of vehicle 105. In the case of a scanning architecture, emitted light 111 can be scanned, as shown, over the surrounding environment. For example, the output beam of one or more light sources (such as infrared or near-infrared pulsed IR lasers, not shown in the figures) positioned in LIDAR system 101 can be scanned (e.g., rotated) to illuminate the scene in the vicinity of the vehicle. In some embodiments, the scanning, represented by rotating arrow 115, can be implemented by mechanical means, such as by mounting the light emitters to a rotating column or platform. In some embodiments, the scanning can be implemented by other mechanical means, such as by using a galvanometer. Chip-based steering techniques can also be employed, such as by using a microchip employing one or more MEMS-based reflectors, such as a digital micromirror (DMD) device, a digital light processing (DLP) device, and the like. In some embodiments, the scanning can be achieved by non-mechanical means, such as by using electronic signals to steer one or more optical phased arrays.

[0073] For a fixed architecture, such as solid-state LIDAR system 103, shown in Figure 1B , one or more solid-state LIDAR subsystems (e.g., 103a and 103b) can be mounted to vehicle 105. Each solid-state LIDAR unit can face a different direction (possibly with partially overlapping and / or non-overlapping fields of view between units) in order to capture a composite field of view that is larger than the field of view that each unit is capable of capturing on its own.

[0074] In a scanning or fixed architecture, objects within a scene can reflect portions of the light pulses emitted from the LIDAR light source. One or more reflected portions then travel back to the LIDAR system and can be detected by the detector circuitry. For example, reflected portion 117 can be detected by detector circuitry 109. The detector circuitry can be housed in the same enclosure as the emitter. Aspects of scanning systems and fixed systems are not mutually exclusive, and thus can be used in combination. For example, Figure 1B Individual LIDAR subsystems 103a and 103b in FIG. 1 can employ steerable emitters, such as optical phased arrays, or the entire composite unit can be rotated by mechanical means, scanning the entire scene in front of the LIDAR system, for example, from field of view 119 to field of view 121.

[0075] Figure 2 A more detailed block diagram of a rotating LIDAR system 200 is illustrated in accordance with some embodiments. More specifically, Figure 2 A rotating LIDAR system that can employ a rotating actuator on a rotating circuit board, which can receive power and data (as well as transmit) from a stationary circuit board, is optionally illustrated.

[0076] LIDAR system 200 can interact with one or more instances of a user interface 215. Different instances of user interface 215 can vary and can include, for example, a computer system with a monitor, keyboard, mouse, CPU, and memory; a touch screen in a car; a handheld device with a touch screen; or any other appropriate user interface. User interface 215 can be local to the object on which LIDAR system 200 is installed, but can also be a remotely operated system. For example, commands and data to / from LIDAR system 200 can be routed through a cellular network (LTE, etc.), a personal area network (Bluetooth, Zigbee, etc.), a local area network (WiFi, IR, etc.), or a wide area network such as the Internet.

[0077] A user interface 215 of hardware and software can present LIDAR data to a user from the device, but can also allow a user to control LIDAR system 200 with one or more commands. Example commands can include commands to activate or deactivate the LIDAR system, specify light detector exposure levels, bias, sampling durations, and other operational parameters (e.g., emission pulse patterns and signal processing), specify light emitter parameters such as brightness. In addition, commands can allow a user to select a method for displaying results. The user interface can display LIDAR system results, which can include, for example, single frame snapshot images, constantly updated video images, and / or displays of other light measurements for some or all pixels. In some embodiments, user interface 215 can track the distance of an object from a vehicle (proximity) and potentially provide a warning to a driver or provide such tracking information for analysis of driver performance.

[0078] In some embodiments, the LIDAR system can be in communication with a vehicle control unit 217 and can modify one or more parameters associated with control of the vehicle based on received LIDAR data. For example, in a fully autonomous vehicle, the LIDAR system can provide real-time 3D images of the environment surrounding the car to assist in navigation. In other cases, the LIDAR system can be used as part of an advanced driver assistance system (ADAS) or part of a safety system that, for example, can provide 3D image data to any number of different systems such as adaptive cruise control, automatic parking, driver drowsiness monitoring, blind spot monitoring, collision avoidance systems, etc. When the vehicle control unit 217 is communicably coupled to the light ranging device 210, alerts can be provided to the driver or tracking of proximity of objects can be tracked.

[0079] Figure 2 The LIDAR system 200 shown in FIG. 2 includes a light ranging device 210. The light ranging device 210 includes a ranging system controller 250, a light transmission (Tx) module 240, and a light sensing (Rx) module 230. Ranging data can be generated by the light ranging device by transmitting one or more light pulses 249 from the light transmission module 240 to an object in a field of view surrounding the light ranging device. Reflected portions 239 of the transmitted light are then detected by the light sensing module 230 after some delay time. Based on the delay time, a distance to the reflecting surface can be determined. Other ranging methods such as continuous wave, Doppler, and the like can also be employed.

[0080] The Tx module 240 includes a transmitter array 242, which can be a one- or two-dimensional array of transmitters, and a Tx optical system 244, which when combined together can form an array of micro-optical transmitter channels. The transmitter array 242 or individual transmitters are examples of laser sources. The Tx module 240 further includes a processor 245 and a memory 246. In some embodiments, pulse coding techniques such as Barker codes and the like can be used. In such cases, the memory 246 can store a pulse code that indicates when light should be transmitted. In one embodiment, the pulse code is stored as a sequence of integers stored in the memory.

[0081] The Rx module 230 can include a sensor array 236, which can be, for example, a one- or two-dimensional array of light sensors. Each light sensor or photosensitive element (also referred to as a sensor) can include a collection of light detectors, e.g., APDs or the like, or the sensor can be a single-photon detector (e.g., a SPAD). Similar to the Tx module 240, the Rx module 230 includes an Rx optical system 237. Together, the Rx optical system 237 and the sensor array 236 can form an array of micro-optical receiver channels. Each micro-optical receiver channel measures light corresponding to an image pixel in a distinct field of view of the surrounding volume. For example, due to the geometric configuration of the light sensing module 230 and the light transmitting module 240, each sensor (e.g., a collection of SPADs) of the sensor array 236 can correspond to a particular emitter of the emitter array 242.

[0082] In one embodiment, the sensor array 236 of the Rx module 230 is fabricated as part of a monolithic device on a single substrate (using, e.g., CMOS technology) that includes an array of photon detectors as well as an ASIC 231 for signal processing of raw histograms from individual photon detectors (or groups of detectors) in the array. As an example of signal processing, for each photon detector or group of photon detectors, a memory 234 (e.g., SRAM) of the ASIC 231 can accumulate counts of detected photons over successive time intervals, and these time intervals, taken together, can be used to recreate a time series of reflected light pulses (i.e., photon counts versus time). This time series of accumulated photon counts is referred to herein as an intensity histogram (or just a histogram). The ASIC 231 can implement matched filter and peak detection processing and time identification of return signals. In addition, the ASIC 231 can implement certain signal processing techniques (e.g., by a processor 238), such as multi-curve matched filtering, to help recover photon time series that are less affected by pulse shape distortions that occur due to SPAD saturation and quenching. In some embodiments, all or part of such filtering can be performed by the processor 258, which can be implemented in an FPGA.

[0083] In some embodiments, the Rx optical system 237 can also be part of the same monolithic structure as the ASIC, with a separate substrate layer for each receiver channel layer. For example, the aperture layer, collimating lens layer, filter layer, and light detector layer can be stacked and bonded at the wafer level before dicing. The aperture layer can be formed by disposing an opaque substrate on top of a transparent substrate or by coating the transparent substrate with an opaque film. In yet other embodiments, one or more components of the Rx module 230 can be external to the monolithic structure. For example, the aperture layer can be implemented as a separate sheet of metal with pinholes.

[0084] In some embodiments, the photon time series output from the ASIC are sent to the ranging system controller 250 for further processing, e.g., the data can be encoded by one or more encoders of the ranging system controller 250 and then sent as data packets to the user interface 215. The ranging system controller 250 can be implemented in a number of ways, including, for example, by using a programmable logic device such as an FPGA as an ASIC or as part of an ASIC, using a processor 258 with memory 254, and some combination of the above. The ranging system controller 250 can operate in cooperation with the fixed base controller or independently of the base controller (via preprogrammed instructions) to control the light sensing module 230 by sending commands including starting and stopping light detection and adjusting light detector parameters. Similarly, the ranging system controller 250 can control the light transmission module 240 by sending commands or forwarding commands from the base controller including starting and stopping light emission control and can adjust other light emitter parameters (e.g., pulse code). In some embodiments, the ranging system controller 250 has one or more wired interfaces or connectors for exchanging data with the light sensing module 230 and the light transmission module 240. In other embodiments, the ranging system controller 250 communicates with the light sensing module 230 and the light transmission module 240 via wireless interconnections such as optical communication links.

[0085] A motor 260 can be an optional component needed when system components such as the Tx module 240 and or Rx module 230 need to be rotated. The system controller 250 controls the motor 260 and can start rotation, stop rotation, and change the rotational speed.

[0086] II. Detection of Reflected Pulses

[0087] The light sensors can be arranged in a number of ways for detecting the reflected pulses. For example, the light sensors can be arranged in an array and each light sensor can include an array of light detectors (e.g., SPADs). Different patterns of transmitted pulses (pulse trains) during a detection interval are also described below.

[0088] A. Time-of-Flight Measurement and Detector

[0089] Figure 3 The operation of a typical LIDAR system that can be improved by some embodiments is illustrated. A laser produces a short duration pulse of light 310. The horizontal axis represents time and the vertical axis represents power. An example laser pulse duration, characterized by a full width at half maximum (FWHM), is a few nanoseconds with a peak power of about a few watts for a single emitter. Embodiments using side emitter lasers or fiber lasers can have much higher peak powers, while embodiments with small diameter VCSELs can have peak powers of tens of milliwatts to hundreds of milliwatts.

[0090] The start time 315 of the transmission of the pulse need not coincide with the leading edge of the pulse. As shown, the leading edge of the optical pulse 310 can be after the start time 315. It can be desirable for the leading edge to be different in cases where pulses of different patterns are transmitted at different times, e.g., for encoded pulses.

[0091] The optical receiver system can start detecting received light at the same time as the laser is started, i.e., at the start time. In other embodiments, the optical receiver system can start at a later time, which is a known time after the start time of the pulse. The optical receiver system initially detects background light 330 and after some time detects the laser pulse reflection 320. The optical receiver system can compare the detected light intensity to a threshold to identify the laser pulse reflection 320. The threshold can distinguish between the background light 330 and light corresponding to the laser pulse reflection 320.

[0092] The time of flight 340 is the time difference between the sending of the pulse and the receiving of the pulse. The time difference can be measured by subtracting the transmission time of the pulse (e.g., as measured relative to the start time) from the time of receipt of the laser pulse reflection 320 (e.g., also measured relative to the start time). The distance to the target can be determined as half the product of the time of flight and the speed of light. Pulses from the laser device are reflected at different times from objects in the scene, and the pixel array detects the reflected pulses of radiation.

[0093] B. Object detection using array lasers and light sensor arrays

[0094] Figure 4 An illustrative example of a light transmission and detection process for a light ranging system is shown, in accordance with some embodiments. Figure 4 A light ranging system (e.g., solid state or and / or scanning) that collects three-dimensional distance data for a volume or scene around the system is shown. Figure 4 Is an idealized drawing highlighting the relationship between the emitters and the sensors, and thus other components are not shown.

[0095] The light ranging system 400 includes a light emitter array 402 and a light sensor array 404. The light emitter array 402 includes an array of light emitters, e.g., VCSEL arrays and the like, such as emitter 403 and emitter 409. The light sensor array 404 includes an array of light sensors, e.g., sensors 413 and 415. The light sensors can be pixelated light sensors that employ a collection of discrete light detectors for each pixel, such as single photon avalanche diodes (SPADs) and the like. However, various embodiments can deploy any type of photonic sensor.

[0096] Each emitter can be slightly offset from its neighbors, and can be configured to transmit light pulses into a different field of view than its neighboring emitters, in turn illuminating a respective field of view associated with the emitter. For example, emitter 403 emits an illuminating light beam 405 (formed of one or more light pulses) into a circular field of view 407 (which is enlarged in size for clarity). Likewise, emitter 409 emits an illuminating light beam 406 (also referred to as an emitter channel) into a circular field of view 410. While Figure 4 Not shown in FIG. 4 to avoid complicating the figure, each emitter emits a corresponding illuminating light beam into its corresponding field of view, resulting in a 2D array of illuminated fields of view (21 distinct fields of view in this example).

[0097] Each field of view illuminated by an emitter can be thought of as a pixel or spot in the corresponding 3D image produced from the range-finding data. Each emitter channel can be distinct from each emitter and non-overlapping with other emitter channels, i.e., there is a one-to-one mapping between the set of emitters and the set of non-overlapping fields or view angles. Thus, in the example of FIG. 4, the system can sample 21 distinct points in 3D space. A denser sampling of points can be achieved by having a denser array of emitters or by scanning the angular position of the emitter light beams over time so that one emitter can sample several points in space. As described above, scanning can be achieved by rotating the entire emitter / sensor assembly. Figure 4

[0098] Each sensor can be slightly offset from its neighbors, and like the emitters described above, each sensor can see a different field of view of the scene in front of the sensor. Furthermore, the field of view of each sensor is generally coincident with, e.g., overlapping and the same size as, the field of view of the respective emitter channel.

[0099] In FIG. 4, the distance between the corresponding emitter-sensor channels has been exaggerated relative to the distance to an object in the field of view. In reality, the distance to an object in the field of view is much greater than the distance between the corresponding emitter-sensor channels, and thus the path of light from the emitter to the object is roughly parallel to the path of reflected light from the object back to the sensor (i.e., it is nearly "bounced back"). Thus, there is a range of distances in front of the system 400 where the fields of view of the individual sensors and emitters are overlapping. Figure 4

[0100] ​​Because the field of view of a transmitter overlaps with the field of view of its corresponding sensor, each sensor channel can ideally detect a reflected illumination beam originating from its corresponding transmitter channel that ideally has no cross-talk, i.e., no reflected light from other illumination beams. Thus, each light sensor can correspond to a respective light source. For example, transmitter 403 transmits illumination beam 405 into circular field of view 407, and some of the illumination beams reflect from object 408. Ideally, reflected beam 411 is detected only by sensor 413. Thus, transmitter 403 and sensor 413 share the same field of view, e.g., field of view 407, and form a transmitter-sensor pair. Likewise, transmitter 409 and sensor 415 form a transmitter-sensor pair, sharing field of view 410. Although transmitter-sensor pairs are shown in FIG. 4 as being in the same relative orientation in their respective arrays, any transmitter can be paired with any sensor, depending on the design of the optics used in the system. Figure 4

[0101] During a ranging measurement, reflected light from different fields of view around a volume distributed around the LIDAR system is collected by various sensors and processed to yield distance information for any objects in each respective field of view. As described above, a time-of-flight technique can be used, in which a light transmitter transmits a precisely timed pulse, and the reflection of the pulse is detected by a corresponding sensor after some elapsed time. The elapsed time between transmission and detection, along with a known speed of light, is then used to calculate the distance to the reflecting surface. In some embodiments, additional information can be obtained by the sensor to determine other properties of the reflecting surface in addition to distance. For example, the Doppler shift of the pulse can be measured by the sensor and used to calculate the relative velocity between the sensor and the reflecting surface. The pulse intensity can be used to estimate the target reflectivity, and the pulse shape can be used to determine whether the target is a hard or diffuse material.

[0102] In some embodiments, the LIDAR system can be composed of relatively large 2D arrays of transmitter and sensor channels and operate as a solid-state LIDAR, i.e., it can obtain frames of range data without needing to scan the orientation of the transmitters and / or sensors. In other embodiments, the transmitters and sensors can be scanned, e.g., rotated about an axis, to ensure that the fields of view of the collection of transmitters and sensors sample a complete 360-degree region (or some useful portion of a 360-degree region) of the surrounding volume. For example, range data collected from a scanning system over some predefined period of time can then be post-processed into one or more data frames, which can then be further processed into one or more depth images or 3D point clouds. The depth images and / or 3D point clouds can be further processed into map tiles for 3D mapping and navigation applications.

[0103] C. Multiple light detectors in each light sensor

[0104] Figure 5 ​Various stages of a sensor array and associated electronics according to embodiments of the application are shown. Array 510 shows light sensors 515, each corresponding to a different pixel. Array 510 can be a staggered array. In this particular example, array 510 is 18x4 light sensors. Array 510 can be used to achieve high resolution (e.g., 72x1024) as the implementation is amenable to scanning.

[0105] Array 520 shows a magnified view of a portion of array 510. As can be seen, each light sensor 515 is made up of a plurality of light detectors 525. The signals from the light detectors of a pixel collectively contribute to the measurement of the pixel.

[0106] In some embodiments, each pixel has a large number of single-photon avalanche diode (SPAD) cells, which increases the dynamic range of the pixel itself. Each SPAD can have an analog front-end circuit for biasing, quenching, and recharging. The SPAD is typically biased with a bias voltage above the breakdown voltage. A suitable circuit senses the leading edge of the avalanche current, produces a standard output pulse synchronized with the avalanche build-up, quenches the avalanche by lowering the bias down below the breakdown voltage, and restores the photodiode to an operating level.

[0107] The SPADs can be positioned so as to maximize their fill factor in the local area, or a microlens array can be used, which allows for high optical fill factor at the pixel level. Thus, the imager pixel can include an array of SPADs to increase the efficiency of the pixel detector. A diffuser can be used to diffuse the rays passing through the aperture and collimated by the microlenses. A pot diffuser is used to diffuse the collimated rays in a way that some radiation is received by all the SPADs belonging to the same pixel.

[0108] Figure 5 A particular light detector 530 (e.g., SPAD) that detects a photon 532 is further shown. In response to the detection, light detector 530 produces an avalanche current 534 of charge carriers (electrons or holes). A threshold circuit 540 regulates the avalanche current 534 by comparing it to a threshold. When a photon is detected and the light detector 530 is functioning properly, the avalanche current 534 rises above the comparator threshold, and threshold circuit 540 produces a time-accurate binary signal 545 that indicates the exact time of the SPAD current avalanche, which in turn is an accurate measurement of the photon arrival. The correlation of the current avalanche to the photon arrival occurs with nanosecond resolution, in turn providing high timing resolution. The rising edge of binary signal 545 can be latched by a pixel counter 550.

[0109] The binary signal 545, avalanche current 534, and pixel counter 550 are examples of data values that can be provided by a photosensor including one or more SPADs. The data values can be determined from respective signals from each of a plurality of photodetectors. Each of the respective signals can be compared to a threshold to determine whether the corresponding photodetector was triggered. The avalanche current 534 is an example of an analog signal, and thus the respective signals can be analog signals.

[0110] The pixel counter 550 can count the number of photodetectors for a given pixel that have been triggered by one or more photons during a particular time interval (e.g., a 1, 2, 3, etc. nanosecond time window) controlled by the periodic signal 560 using the binary signal 545. The pixel counter 550 can store a counter for each of a plurality of time intervals for a given measurement. The value of the counter for each time interval can start at zero and be incremented based on the binary signal 545 indicating that a photon was detected. The counter can be incremented when any photodetector of the pixel provides such a signal.

[0111] The periodic signal 560 can be generated by a phase-locked loop (PLL) or a delay-locked loop (DLL) or any other method of generating a clock signal. The coordination of the periodic signal 560 and the pixel counter 550 can act as a time-to-digital converter (TDC), which is a device for recognizing events and providing a digital representation of the time at which they occurred. For example, the TDC can output the time of arrival of each detected photon or optical pulse. The measured time can be the time elapsed between two events (e.g., a start time and a detected photon or optical pulse) rather than an absolute time. The periodic signal 560 can be a relatively fast clock that switches between a set of memories including the pixel counter 550. Each register in the memories can correspond to one histogram bin, and the clock can switch between them at the sampling interval. Thus, when the respective signal is greater than the threshold, a binary value indicating a trigger can be sent to a histogram circuit. The histogram circuit can aggregate the binary values across a plurality of photodetectors to determine the number of photodetectors that were triggered during a particular time interval.

[0112] The time intervals can be measured relative to a start signal, such as in Figure 3the start time 315. Thus, the counter of the time interval just after the start signal can have a low value corresponding to a background signal, such as background light 330. The last time interval can correspond to the end of the detection time interval (also referred to as the shot) of a given burst, which is further described in the next section. The number of cycles of the periodic signal 560 since the start time can serve as a timestamp when a rising edge of the avalanche current 534 indicates a detected photon. The timestamp corresponds to a time interval for a particular counter in the pixel counter 550. Such operation is different from a simple analog-to-digital converter (ADC) following a photodiode, such as for an avalanche photodiode (APD). Each of the counters of the time intervals can correspond to a histogram, which is described in more detail below. Thus, while an APD is a linear amplifier for an input optical signal with a finite gain, a SPAD is a flip-flop device that provides a binary output of yes / no to a triggered event that occurs in a time window.

[0113] D. Bursts

[0114] Ranging can also be achieved by using bursts, defined as containing one or more pulses. Within a burst, the number of pulses, the width of the pulses, and the duration between pulses (collectively referred to as the pulse pattern) can be selected based on several factors, some of which include:

[0115] 1 - Maximum laser duty cycle - The duty cycle is the fraction of time that the laser is on. For pulsed lasers, this can be determined by the FWHM as explained above and the number of pulses emitted during a given period.

[0116] 2 - Eye safety limits - This is determined by the maximum amount of radiation that the device can emit without harming the eyes of a bystander who happens to be looking in the direction of the LIDAR system.

[0117] 3 - Power consumption - This is the power consumed by the emitter in order to illuminate the scene.

[0118] For example, the interval between pulses in a burst can be on the order of single digits or tens of nanoseconds.

[0119] Multiple bursts can be emitted during one measurement time span. Each burst can correspond to a different time interval, such as not emitting a subsequent burst before the time limit for detecting reflected pulses of a previous burst expires.

[0120] For a given transmitter or laser device, the time between the emission of pulse trains determines the maximum detectable range. For example, if pulse train A is emitted at time t0 = 0 ns and pulse train B is emitted at time t1 = 1000 ns, then reflected pulse trains detected after t1 must not be assigned to pulse train A, as they are more likely reflections from pulse train B. Therefore, the time between pulse trains and the speed of light define the maximum limit of the system's range, as given in the following equation.

[0121] R max = c×(t1-t0) / 2

[0122] The time between excitation (emission and detection of the pulse train) can be about 1 μs to allow the entire pulse train enough time to travel to a distant object approximately 150 meters away and then return.

[0123] III. Histogram signal from the photodetector

[0124] One operating mode of a LIDAR system is Time-Correlated Single-Photon Counting (TCSPC), which is based on counting individual photons in a periodic signal. This technique is well-suited for low levels of periodic radiation, making it appropriate for LIDAR systems. This time-correlated counting can be affected by... Figure 5 The periodic signal 560 is controlled and can be used within a time interval, such as for... Figure 5 The discussion.

[0125] The frequency of a periodic signal specifies a time resolution within which data values ​​of the signal are measured. For example, a measurement can be obtained for each photodetector in each cycle of the periodic signal. In some embodiments, the measurement can be the number of photodetectors triggered during the cycle. The time period of the periodic signal corresponds to a time interval, where each cycle is a different time interval.

[0126] Figure 6 A histogram 600 is shown according to an embodiment of the invention. The horizontal axis corresponds to the time interval as measured relative to a start time 615. As described above, the start time 615 may correspond to the start time of the pulse train. Any offset between the rising edge of the first pulse of the pulse train and the start time of any one or both of the pulse train and the detection time interval may be considered, where the reception time will be used for time-of-flight measurement. The vertical axis corresponds to the number of SPADs triggered. In some embodiments, the vertical axis may correspond to the output of an ADC following an APD. For example, the APD may exhibit conventional saturation effects, such as a constant maximum signal rather than the dead-time-based effect of the SPAD. Some effects may occur for both SPADs and APDs; for example, pulse tailing on a highly tilted surface may occur for both SPADs and APDs.

[0127] The counters for each of the time intervals correspond to different bins in the histogram 600. The counters for early time intervals are relatively low and correspond to background noise 630. At some point, a reflected pulse 620 is detected. The corresponding counter is much larger and can be above a threshold that distinguishes between background and detected pulses. The reflected pulse 620 (after digitization) is shown as corresponding to four time intervals, which can result from a laser pulse with a similar width, e.g., a 4 ns pulse when the time intervals are each 1 ns. But as described in more detail below, the number of time intervals can vary, e.g., based on properties of the particular object in the angle of incidence of the laser pulse.

[0128] The time positions of the time intervals corresponding to the reflected pulse 620 can be used to determine a reception time, e.g., relative to the start time 615. As described in more detail below, a matched filter can be used to identify the pulse pattern, which in turn effectively increases the signal-to-noise ratio, and more accurately determines the reception time. In some embodiments, the accuracy of determining the reception time can be less than the time resolution of a single time interval. For example, for a time interval of 1 ns, the resolution would correspond to about 15 cm. However, it can be desirable to have an accuracy of only a few centimeters.

[0129] Thus, a detected photon can cause a particular time interval of the histogram to be incremented based on its arrival time relative to a start signal, e.g., indicated by the start time 615. The start signal can be periodic, such that multiple pulse trains are sent during a measurement. Each start signal can be synchronized to a laser pulse train, with multiple start signals such that multiple pulse trains are transmitted in multiple detection intervals. Thus, a time interval (e.g., from 200 to 201 ns after a start signal) will occur for each detection interval. The histogram can accumulate counts, with the count for a particular time interval corresponding to the sum of measured data values that all occurred in that particular time interval across multiple excitations. When detected photons are histogrammed based on such techniques, they result in a signal-to-noise ratio for a return signal that is the square root of the number of excitations made larger than a single pulse train.

[0130] Figure 7 Cumulative accumulation of a histogram over multiple pulse trains for a selected pixel is shown in accordance with an embodiment of the application. Figure 7 Three detected pulse trains 710, 720, and 730 are shown. Each detected pulse train corresponds to a transmitted pulse train with the same pattern of two pulses separated by the same amount of time. Thus, each detected pulse train has the same pulse pattern, as shown by the two time intervals with distinct values. The counters for the other time intervals are not shown for ease of illustration, but the other time intervals can have relatively low non-zero values.

[0131] In the first detected pulse train 710, the counters for time intervals 712 and 714 are the same. This can result from the same number of photons being detected by the light detector during the two time intervals. Or in other embodiments, approximately the same number of photons are detected during the two time intervals. In other embodiments, more than one consecutive time interval can have a consecutive non-zero value; but for ease of illustration, individual non-zero time intervals have been shown.

[0132] Time intervals 712 and 714 occur 458 ns and 478 ns after start time 715, respectively. The shown counters for the other detected pulse trains occur at the same time intervals relative to their respective start times. In this example, start time 715 is identified as occurring at time 0, but the actual time is arbitrary. A first detection interval for the first detected pulse train can be 1 μβ. Thus, the number of time intervals measured from start time 715 can be 1,000. Then, this first detection interval ends, and a new pulse train can be transmitted and detected. The start and end of the different time intervals can be controlled by a clock signal, which can be part of a circuit acting as a time-to-digital converter (TDC), such as described in Figure 5

[0133] For the second detected pulse train 720, start time 725 is at 1 μβ, e.g., at which time the second pulse train can be emitted. Such separate detection intervals can occur so that any pulses transmitted at the start of the first detection interval will have been detected, and thus will not cause confusion with the pulses detected in the second time interval. For example, if there is no additional time between excitations, the circuit can confuse the back-reflection stop sign at 200 m with an object that reflects much less at 50 m (assuming an excitation period of about 1 us). The two detection time intervals for pulse trains 710 and 720 can be the same length and have the same relationship to the respective start times. Time intervals 722 and 724 occur at the same relative times as time intervals 712 and 714, 458 ns and 478 ns. Thus, when the accumulation step occurs, the corresponding counters can be added. For example, the counter values at time intervals 712 and 722 can be added together.

[0134] For the third detected pulse train 730, start time 735 is at 2 μβ, e.g., at which the third pulse train can be emitted. Time intervals 732 and 734 also occur at 458 ns and 478 ns relative to their respective start time 735. Even if the emitted pulses have the same power, the counters for the different time intervals can have different values, e.g., due to the random nature of the scattering process by which the light pulses leave the object.

[0135] ​Histogram 740 shows the accumulation from the counters of three detected pulse trains at time intervals 742 and 744, which also correspond to 458 ns and 478 ns. Histogram 740 can have a fewer number of time intervals measured during the respective detection interval, e.g., due to discarding time intervals at the beginning or end, or having values less than a threshold. In some implementations, about 10 to 30 time intervals can have a significant value, depending on the pattern of pulse trains.

[0136] For example, the number of pulse trains emitted to create a single histogram during a measurement can be about 1 to 40 (e.g., 24), but can also be much higher, e.g., 50, 100, or 500. Once a measurement is complete, the counters used for the histogram can be reset, and a set of pulse trains can be emitted to perform a new measurement. In various embodiments and depending on the number of detection intervals in the respective duration, a measurement can be performed every 25, 50, 100, or 500 ps. In some embodiments, the measurement intervals can overlap, e.g., so a given histogram corresponds to a particular sliding window of pulse trains. Any weighting applied to detected photons can be the same for each histogram, or such weighting can be independently controlled.

[0137] IV. Histogram Data Path

[0138] Figure 8 Circuitry for receiving photons and generating a set of signals stored in a memory representing a histogram is shown, according to some embodiments. As described above with respect to Figure 5 The array of photosensors can be used to receive reflected pulses and background photons from ambient light in the optical measurement system. A single photosensor 802 can include a plurality of photodetectors. Each photodetector can be implemented by a SPAD or other light-sensitive sensor, and the photodetectors can be arranged in a grid pattern for the photosensor 802, as illustrated in Figure 8 A filter can be used in each of the photosensors to block light received by the photosensor outside the range centered around the light source of the LIDAR system. However, even with this filter, some ambient light at or near the wavelength emitted by the light source can pass through the filter. This can result in photons from the ambient light as well as photons emitted from the LIDAR light source being received by the photosensor.

[0139] Each photodetector in the photosensor 802 can include an analog front-end circuit for generating an output signal indicating when a photon is received by the photodetector. For example, referring back to Figure 5 the avalanche current 534 from the SPAD can trigger the threshold circuit 540 to generate an output binary signal 545. Turning back to Figure 8Each photodetector in the optical sensor 802 can generate its own signal corresponding to the received photon. Therefore, the optical sensor 802 can generate a set of signals 816 corresponding to the number of photodetectors in the optical sensor 802. The optical sensor 802 can also be referred to as a "pixel" or "pixel sensor" because it can correspond to a single pixel of information when displayed or analyzed in later stages of the optical measurement system. When a signal is generated in response to a received photon (e.g., a transition from logic "0" to logic "1"), this can be called a "positive" signal.

[0140] The Arithmetic Logic Unit (ALU) 804 can be used to implement... Figure 5 The functionality of the pixel counter 550. Specifically, the ALU 804 can receive a set of signals 816 from individual photodetectors of the light sensor 802 and aggregate the number of these signals, each indicating the detection of photons. The ALU 804 may include combined digital electronic circuitry that performs arithmetic and / or other bitwise operations on the set of signals 816. For example, the ALU 804 can receive each of the signals 816 as a binary signal (i.e., "0" or "1") as an input or operand of the ALU 804. By aggregating or adding the inputs together, the ALU 804 can count the number of positive signals in the set of signals 816, which indicate that photons have been received within a specific time interval. For example, by adding each of the signals indicating a "1" signal level, the output of the ALU 804 can indicate the number of signals in the set of signals 816 associated with photodetectors that have received photons during the time interval.

[0141] The ALU 804 is specifically designed to receive at least the number of inputs corresponding to the number of photodetectors in the optical sensor 802. Figure 8 In this example, the ALU 804 can be configured to receive 32 parallel inputs of a single bit width. Internally, the ALU 804 can be implemented using digital logic gates to form ripple carry adders, carry-lookahead adders, carry-hold adders, and / or any other type of adder that can aggregate a relatively large number of inputs with low propagation time. The output of the ALU 804 can be referred to as the "total signal count" and can be represented as an n-bit binary number output from the ALU 804 or from a stage of the ALU 804.

[0142] As described above, the output of the ALU 804 can characterize the total number of photons received by the photosensor 802 during a particular time bin. Each time the ALU 804 completes an accumulation operation, the total signal count can be added to the corresponding memory location in the memory 806 representing the histogram 818. In some embodiments, the memory 806 can be implemented using SRAM. Thus, over the course of multiple excitations, each of which includes a burst, the total signal count from the ALU 804 can be accumulated with the existing value in the corresponding memory location in the memory 806. A single measurement can include multiple excitations that fill the memory 806 to produce a histogram 818 of values in the time bins that can be used to detect reflected signals, background noise, peaks, and / or other signals of interest.

[0143] The ALU 804 can also perform a second accumulation operation that adds the total signal count to the existing value in the memory location of the memory 806. Recall Figure 7 that with each excitation, a new total signal count can be added to the existing value in the corresponding time bin of the memory 806. In this way, the histogram 818 can be built up in the memory 806 over several excitations. When the total signal count is generated by the ALU 814, the current value 820 for the corresponding memory location of the time bin can be retrieved from the memory 806. The current value 820 can be provided as an operand to the ALU 804, which can be combined with the total signal count from the set of signals 816. In some embodiments, the ALU 804 can be composed of a first stage and a second stage, where the first stage calculates the total signal count from the photosensor 802, and the second stage combines the total signal count with the current value 820 from the memory location of the time bin in the memory 806. In some embodiments, the accumulation of the set of signals 816 and the accumulation of the total signal count and the current value 820 can be performed as a single operation. Thus, even though these two operations can be functionally described as separate "accumulations," they can actually be performed together using a combination of parallel and sequential circuitry in the ALU 804.

[0144] As described above with respect to Figure 5 the ALU 804 can receive a periodic signal 560 that triggers the accumulation operation. The periodic signal 560 can be generated using any of the techniques described above. The periodic signal 560 can define the length of each time bin. In some embodiments, the periodic signal 560 and the corresponding time bins can be relative to the time of the excitation as Figure 3Each cycle of the periodic signal 560 can cause an accumulation operation to be performed in the ALU 804 and can cause a memory address of the memory 860 to be incremented to the next time interval. For example, a rising edge of the periodic signal 560 can cause the ALU 804 to produce a result that accumulates the total signal count and the current value 820 together. A corresponding periodic signal 808 can also be sent to the memory interface circuit, which increments the address to the memory location of the current time interval, so that each cycle also moves to the next time interval in the memory 806.

[0145] The clock circuit 810 can be used to generate the periodic signal 560 based on the start signal described in the summary and the measurement for the optical measurement system. For example, the start input 814 can correspond to Figure 3 The start input 814 can reset the address of the memory 806 to a start memory location corresponding to the first time interval of the histogram 818. The start input 814 can also cause the clock circuit 810 to start generating the periodic signal 560 for the ALU 804 and / or the periodic signal 808 that increments the address of the memory 806. Additionally, the clock circuit 810 can receive a measurement input 812 that defines the start / end of a measurement. The measurement can include a plurality of shots that incrementally build the histogram 818. The measurement signal 812 can be used to reset the values in the memory 806 so that the histogram can start over for each new measurement.

[0146] The memory 806 can include a plurality of registers that accumulate photon counts from a photodetector. By accumulating photon counts in respective registers corresponding to time intervals, the registers in the memory 806 can store photon counts based on the time of arrival of the photons. For example, photons that arrive in a first time interval can be stored in a first register in the memory 806, photons that arrive in a second time interval can be stored in a second register in the memory 806, and so on. Each "shot" can include a pass through each of the registers in the memory 806 corresponding to time intervals for the photosensor. The shot signal 814 can be referred to as an "enable" signal for the plurality of registers in the memory 806, as the shot signal 814 enables the registers in the memory 806 to store results from the ALU 804 during the current shot.

[0147] Periodic signal 560 can be generated such that it is configured to capture the set of signals provided asynchronously from light sensor 802 as they are provided. For example, threshold circuit 540 can be configured to hold the output signal high for a predetermined time interval. Periodic signal 560 can be timed such that it has a period that is less than or equal to the hold time of threshold circuit 540. Alternatively, the period of periodic signal 560 can be a percentage of the hold time of threshold circuit 540, such as 90%, 80%, 75%, 70%, 50%, 110%, 120%, 125%, 150%, 200%, and so on. Some embodiments can use a rising edge detection circuit as described in Figure 5

[0148] Figure 9 Timing associated with different shots in a measurement is shown according to some embodiments. The vertical axis represents the total number of light detector signals measured for a single light sensor. For example, the vertical axis can represent total photon counts. The horizontal axis represents time. When a new optical measurement is started, as indicated by measurement signal 812, a first shot can start with shot signal 814-1 as a start signal. Periodic signal 506 illustrates how each clock of ALU 804 corresponds to a single time interval and a corresponding memory location in memory 806.

[0149] With each subsequent shot, a histogram can be built in memory 806 as described in Figure 9 Figure 9 Whenever a shot input 814 is received, the addressing of memory 806 can be reset so that a new total signal count can be added to the existing signal count. In the example of Figure 9 , there is a non-zero time interval separating each shot. For example, the shot started by shot signal 814-1 ends, and a non-zero time interval elapses before the shot started by shot signal 814-2. Alternatively, some embodiments can not have a delay between subsequent shots so that periodic signal 506 is continuously clocked throughout the measurement. Subsequent shot signals 814-2, 814-3 can then define both the end of a previous shot and the start of a subsequent shot.

[0150] In some embodiments, the timing of the measurement signal 812, the excitation signal 814, and the periodic signal 506 of the timing ALU 804 can all be coordinated and generated relative to each other. Therefore, the timing of the ALU can be triggered by the start signal of each excitation and depends on the start signal of each excitation. Additionally, the period of the periodic signal 506 can define the length of each time interval associated with each memory location in the histogram.

[0151] Figure 8 The data path described herein is primarily configured to construct a histogram 818 over several excitations. However, in some embodiments, the histogram may be filled only during excitation. Any photons received between excitations will not be aggregated by ALU 804 in the time interval and will not be stored in memory 806. Furthermore, the contents of memory 806 can be reset after each measurement is completed and before the start of a subsequent measurement. Therefore, photons received before and / or after the current measurement can be readily obtained without saving or not at all. Moreover, the total count of all photons received in the histogram is not readily available in the histogram data path, and when the histogram is deactivated, the total count of all photons received during the measurement period is unavailable if there are non-zero intervals between excitations. In order to record received photons in a continuous manner dependent on the excitation / measurement timing, in addition to Figure 8 A second parallel data path may be used in addition to the histogram data path described herein.

[0152] V. Integral Data Path

[0153] To record the cumulative total number of photons from all photodetectors in a light sensor, some embodiments provide a parallel data path including an integration register. This integration data path receives the total positive signal count for each time interval and adds the value to a single integration register instead of individual time intervals to form a histogram. This integration register can record photon counts before, during, and after excitation. Because it can be timed separately and independently of the histogram data path described above, it can record photon counts even when no excitation occurs within an active measurement or multi-excitation measurement. It provides the light sensor or pixel with an easily obtainable total number of photons that can be used to estimate background noise, set thresholds, and provide real-time image data.

[0154] Figure 10 The diagram illustrates a data path with an integration register according to some embodiments. A light sensor 802 with multiple photodetectors can generate data as described above relative to... Figure 8The set of signals 816 is described. The second ALU 1006 can accumulate positive signals received during a time interval as described above. However, instead of storing a total signal count accumulated by the ALU 1006 in a discrete time interval in the memory 806, this second data path can add the total signal count to a value stored in the integration register 1004, which represents the total number of positive signals received from the light detector across each of the time intervals in any number of firings. For example, the integration register 1004 can provide a current value 1010 in the integration register 1004 to the ALU 1006. A first stage of the ALU 1006 can accumulate the set of signals 816 from the light sensor 802 to produce a total signal count for the current time interval. A second stage of the ALU 1006 can then add the total signal count for the current time interval to the current value 1010 representing the total photon count in the integration register 1004 and store the updated total photon count in the integration register 1004.

[0155] The integration signal 1008 can be provided to a clock circuit 1003 to start an integration period. The clock circuit 1003 can produce a periodic signal 1012 that can clock the ALU 1006. For example, the periodic signal 1012 can define a time interval during which the set of signals 816 can be accumulated by the ALU 1006. The clock circuit 1003 can also produce a periodic signal 1011 for latching new values into the integration register 1004. For example, a rising clock edge on the periodic signal 1011 can cause the integration register 1004 to latch a result from the ALU 1006. The result from the ALU 1006 can be the accumulated sum of the total signal count and the current value 1010 of the integration register 1004 before the new result value is latched.

[0156] The timing associated with the integration register 1004 and / or the ALU 1006 can be independent of Figure 8 the timing of the clock circuit 810 in the histogram data path. For example, the periodic signal 1012 in the integration data path need not be phase aligned with the periodic signal 560 in the histogram data path. These periodic signals 1012, 560 can also have different periods and / or duty cycles. In addition, the integration signal 1008 defining the start and / or length of the integration period need not be aligned with or derived from the firing signal 814 or the measurement signal 812 of the histogram data path. Thus, the timing of the histogram data path and the integration data path can be completely independent of each other.

[0157] In some embodiments, the integration register 1004 can accumulate photon counts from the photosensor 802 during one or more intervals defined by the integration signal 1008. In this sense, the integration signal 1008 can also be referred to as an “enable” signal, as it enables the integration register 1004 to accumulate photon counts. In some embodiments, each enable of the integration signal 1008 can reset the integration register 1004 so that accumulation of photon counts begins anew. In other embodiments, each enable of the integration signal 1008 can restart the integration register 1004 so that it continues accumulating photon counts where it left off. This allows the integration register 1004 to accumulate photon counts in one or more time intervals that can be defined by the integration (i.e., enable) signal 1008.

[0158] Figure 11 A timing diagram for an integration data path is shown, according to some embodiments. The vertical axis on the bottom plot represents the total signal count for each time bin. The vertical axis of the top plot represents the total value stored in the integration register. The horizontal axes of the top and bottom plots represent time. When the integration signal is received 1008, the clock circuit 1003 can begin generating a periodic signal 1012. As illustrated in the bottom plot, the periodic signal 1012 can define a time bin for each sample of the ALU 1006. Note that the term “time bin” in the integration data path need not correspond to a particular memory location in the histogram, as the time bins do in the histogram data path. Rather, a time bin of the integration data path refers to the interval between times at which the aggregate result becomes available from the ALU 1006. As described above with respect to the periodic signal 560 of the histogram data path, the frequency of the periodic signal 1012 of the integration data path can be timed relative to the hold time of the threshold circuit 540, so that positive sensor responses to photons are not missed or overcounted between the aggregation operations of the ALU 1006. In some embodiments, the analog front end of the SPAD can implement a rising edge detector to convert the photodetector signal to a synchronously clocked signal, as described above.

[0159] While not necessarily timed with the excitation of the histogram data path, three such excitations 910, 912, and 914 are shown in FIG. 10. The first excitation 910 is shown as occurring at a time t0. The second excitation 912 is shown as occurring at a time t1. The third excitation 914 is shown as occurring at a time t2. Figure 11The top plot illustrates the value 1108 of the integration register 1004 over time. The top plot does not represent a histogram, but rather each vertical bar represents the value of the integration register 1004 at that point in time. The values from the bottom plot are also illustrated as black boxes in the top plot, which are added to the value 1108 of the integration register 1004 for each time interval. For example, the time intervals in the bottom plot with values 8, 10, 11, 9 add to the value 1108 in the integration register in the top plot during the corresponding time intervals. When the value 8 is stored in the histogram time interval, it is also added to the existing value 1108 in the integration register to produce an updated value of 16. Next, the current value 10 is added to its time interval and to the existing value 16 in the integration register to produce an escalated value of 26, and so on. Instead of storing the updated value in a memory location and incrementing the address of the memory, the same integration register is continuously updated with the new values from the ALU 1006. As described above, the value of the integration register 1004 can continuously increase without regard to the recording of a stimulus in the histogram data path.

[0160] Figure 11 The top plot illustrates the value 1108 of the integration register 1004 over time. The top plot does not represent a histogram, but rather each vertical bar represents the value of the integration register 1004 at that point in time. The values from the bottom plot are also illustrated as black boxes in the top plot, which are added to the value 1108 of the integration register 1004 for each time interval. For example, the time intervals in the bottom plot with values 8, 10, 11, 9 add to the value 1108 in the integration register in the top plot during the corresponding time intervals. When the value 8 is stored in the histogram time interval, it is also added to the existing value 1108 in the integration register to produce an updated value of 16. Next, the current value 10 is added to its time interval and to the existing value 16 in the integration register to produce an escalated value of 26, and so on. Instead of storing the updated value in a memory location and incrementing the address of the memory, the same integration register is continuously updated with the new values from the ALU 1006. As described above, the value of the integration register 1004 can continuously increase without regard to the recording of a stimulus in the histogram data path.

[0161] VI. Multiple Integration Registers

[0162] The above embodiments use a single integration register to accumulate photon counts of photons received before, during, between, and / or after excitations in one or more optical measurements. This aggregate value stored in the integration register can be used to estimate a background noise level for distinguishing between background noise and photons reflected from the pulse train as part of a measurement. Additionally, the value in the integration register can be used to produce an ambient light image of the surrounding environment. For example, each of the excitations in a measurement can fall within an integration window of the integration register. While the histogram data path will produce distance measurements of objects in the surrounding environment, the value in the integration register can be used to produce an ambient light image (e.g., grayscale) of the surrounding environment. The spatial resolution of the resulting ambient light image can generally coincide with the spatial resolution of the measurements of the LIDAR system, such that each distance measurement corresponds to one grayscale image value of the ambient light image.

[0163] Instead of using a single integration register, some embodiments can use multiple integration registers to increase the spatial resolution of the image data captured in the integration registers. Figure 12 An integration data path with multiple integration registers 1202 is shown in accordance with some embodiments. Figure 12 The integration data path shown in Figure 10 The integration data path shown in. However, instead of a single integration register 1004 that accumulates all photon counts received while the integration register 1004 is enabled, this integration data path includes multiple integration registers 1202. Instead of storing all photon counts in a single integration register 1004, the photon counts from the ALU 1006 can be stored in the multiple integration registers 1202 based on various stimuli such as timing, bearing, threshold, etc.

[0164] As shown in Figure 12 The ALU 1006 can provide an output of the photon counts in the current ALU clock cycle to the integration register 1210 group, as shown in. The integration register 1210 group can then select one of the integration registers 1202, and the selected integration register can then add the photon counts received from the ALU 1006 during the current clock cycle to its current stored value. A selection signal 1204 can be provided to the integration register 1210 group and used to select and cycle through each of the integration registers 1202. The selection signal 1204 can also be used by the integration register 1210 group to select an output from the integration registers 1202 to use as the current value 1010 sent to the ALU 1006, and to select one of the integration registers 1202 to which an updated value from the ALU 1006 should be stored.

[0165] When the integration signal 1008 triggers the start of an integration period on the integration data path, the integration register 1210 group selects a first integration register of the selectable plurality of integration registers 1202. For example, a selection signal 1204 can be provided to a multiplexer 1206 that receives outputs from the plurality of integration registers 1202 and selects the output of one of those integration registers 1202 to serve as the current value 1010. As selected by the selection signal 1204, this first integration register can provide its stored sum of photon counts from the previous ALU clock period to the ALU 1006, and the ALU 1006 can add this current value 1010 from the selected integration register to the current photon count from the light sensor 802. This updated value can then be provided back to the integration register group.

[0166] When the integration register 1210 group receives the updated value from the ALU 1006, the selection signal 1204 can again be used to select the same integration register, with the output selected by the above multiplexer 1206. In some embodiments, the selection signal 1204 can act as an enable signal for each of the integration registers 1202 individually. The output of the ALU 1006 can be provided to an input of each of the integration registers 1202, and the selection signal 1204 can select one of the integration registers 1204 to latch in the updated value from the ALU 1006. While Figure 12 not explicitly shown in FIG. 12, some embodiments can instead or additionally include a demultiplexer or inverse multiplexer to send the updated value from the ALU 1006 to the selected integration register.

[0167] The selection signal 1204 can select the same integration register over multiple ALU clock periods before selecting a different one of the integration registers 1202. In selecting the integration registers, they can aggregate photon counts in the same manner described above with respect to integration data paths having only a single integration register. However, embodiments having multiple integration registers 1202 can switch to a new one of the integration registers 1202 during a single integration interval. For example, when the integration signal 1008 is enabled to start an integration period, the selection signal 1204 can select a first one of the integration registers 1202 as described above. During the same integration period, and without requiring a new enablement of the integration signal 1008, the selection signal 1204 can change or increment to select a second one of the integration registers 1202. This process can then continue so that the selection signal 1204 cycles through each of the integration registers 1202 during the integration period. This effectively splits the total photon count stored in the single integration register in Figure 10 FIG. 12 into multiple individual integration registers 1202 in embodiments of FIG. 12. Figure 12

[0168] ​A. Total Photon Count from Integration Registers

[0169] When the select signal 1204 causes the integration operation to move from one to the next of the integration registers 1202, the accumulated value stored in the previous one of the integration registers 1202 can be maintained. Thus, when the subsequent one of the integration registers 1202 is selected, the previous integration register in the integration register group 1210 can maintain its value until the end of the integration period or until the start of the subsequent integration period. For example, when the integration signal 1008 is enabled to start a new integration period, the stored value in the integration registers 1202 can be reset to zero.

[0170] Figure 13 An integration data path including an ALU 1302 for providing an accumulated sum from all of the integration registers 1202 is shown according to some embodiments. Because each of the integration registers 1202 maintains its stored value as the select signal 1204 is stepped through the integration registers 1202, the accumulated sum from each of the integration registers 1202 at any point during the integration period can provide the total photon count up to that point in the integration period. After the integration period is complete, the values in the integration registers 1202 can still be maintained so that the accumulated sum of the values in the integration registers 1202 can be used at any point before the start of the subsequent integration period.

[0171] To produce a total photon count 1304 for an integration period, the ALU 1302 can receive an output from each of the integration registers 1202. The output of the ALU 1302 can then represent the total photon count 1304. In some embodiments, the ALU 1302 can be asynchronous so that it dynamically provides a new total photon count 1304 as the values are updated on the outputs of the integration registers 1202. In some embodiments, the ALU 1302 can be a synchronous ALU and can be clocked using the same clock signal as the ALU 1006 used to accumulate the photon counts from the light sensor 802.

[0172] The total photon count 1304 can be provided as an output to be used by a control processor that generates the select signal 1204 and / or the integration signal 1008 and processes data from the histogram data path to identify a reflection pulse train. In some embodiments, the integration register group 1210 can also include additional registers that receive the total photon count 1304 from the ALU 1302 each time the integration registers 1202 are updated and a new value is available from the ALU 1302 and store the total photon count. These embodiments can provide photon counts from individual integration registers 1204 as well as from registers that store the total photon count 1304 throughout the integration period at the same time.

[0173] B. Relative timing between data paths

[0174] The integration data path can be distinguished from the histogram data path at least in part by different timing of the enable, select, and / or clock signals used in each of the data paths, as well as various time intervals and time bins. The select signal 1204, the clock signal 1012 for the ALU 1006, the integration signal 1008, and the clock signal 1011 for the set of integration registers 1210 in the integration data path can each be independent of any or all of the timing signals in the histogram data path, respectively. For example, each of the timing signals in the integration data path can be generated by a different source when compared to the timing signals in the histogram data path. However, some of these signals can depend on each other, or at least temporarily align with each other, in some embodiments. For example, the clock signals 1012 and 1011 can be shared between the data paths when the circuitry for the ALU 1006 is shared between the data paths.

[0175] Figure 14 A relative timing diagram for the integration data path and the histogram data path is shown, according to some embodiments. Starting with the histogram data path in the bottom plot, each measurement can include one or more “firing.” A firing can be defined as a time interval during which a burst of pulses is transmitted from a light source and received by a corresponding light sensor. For example, Figure 14 A plurality of firings is illustrated, each of which occurs during a firing time interval 1408 (also referred to as a “first time interval”). The first firing in the measurement can occur during a time interval 1408a, the second firing in the measurement can occur during a time interval 1408b, the third firing in the measurement can occur during a time interval 1408c, and so on. Each of the firings in the measurement and the corresponding time intervals 1408 can be defined by the firing (or “start”) signal 814 in the histogram data path.

[0176] Each of the firing time intervals 1408 can be subdivided into a plurality of firing time bins 1406 (also referred to as “first time bins”). Each of the firing time intervals 1408 can include the same number of time bins 1406, and each of the time bins can correspond to a bin in the histogram data path. Figure 8The photon counts received in the first time interval in each of the excitation time intervals 1408 can be aggregated in the same first register in the SRAM, the photon counts received in the second time interval in each of the excitation time intervals 1408 can be aggregated in the same second register in the SRAM, and so on. To distinguish the registers in the SRAM from the registers in the group of integration registers 1210, the registers in the SRAM can be referred to as a plurality of "first registers." As described above, because the time intervals each aggregate values from multiple excitation time intervals 1408, this set of registers in the SRAM can represent, as a whole, a histogram of values received in multiple excitations during a measurement. Note that, Figure 14 The other embodiments can have the excitation time intervals 1408 occur back-to-back, such that there is no delay between the excitation time intervals 1408.

[0177] Turning to the integration data path illustrated in the top plot, instead of using multiple time intervals to define a measurement, the integration data path can use a single integration time interval 1402 (also referred to as a "second time interval") during which photon counts are sequentially aggregated in the group of integration registers 1202. The time scale of the top plot can be the same as the time scale of the bottom plot. The start of the integration time interval 1402 can be triggered by the integration signal 1008 as described above. When this signal is received, the select signal 1204 can select the first of the integration registers 1202 and begin integrating photon counts from the ALU as Figure 14 the photon counts from the ALU.

[0178] When the select signal changes / increments, the second of the integration registers 1202 can begin receiving photon counts from the ALU. This process can continue until each of the integration registers 1202 has been selected. Thus, each of the integration registers 1202 can be associated with a corresponding time interval 1404 that subdivides the integration time interval 1402. These can also be referred to as "second time intervals" that distinguish them from the first time intervals in each of the excitation time intervals of the histogram data path. For example, the first time interval 1404a in the integration data path can correspond to the first integration register in the group of integration registers 1210. The first time interval 1404a can be much larger than the time intervals 1406 in the histogram data path. Additionally, some embodiments can allow each of the integration time intervals 1404 to have a different length. This can be true when the select signal 1204 is not governed by a timer, but is actually generated by an external stimulus such as a position sensor.

[0179] The integration time intervals 1404 need not be time-aligned with either the time intervals 1406 from the histogram data path or the excitation time intervals 1408. For example, the time interval 1404a can begin or end in the middle of the excitation time interval 1408a, can include multiple excitation time intervals 1408, and / or can aggregate photon counts that fall outside of any of the excitation time intervals 1408. In some embodiments, the time intervals 1404 can be synchronized with the excitation time intervals 1408 so that a number of excitation time intervals 1408 fall within each of the integration time intervals 1404. For example, some embodiments can be timed so that two or more excitation time intervals 1408 fall uniformly within each of the integration time intervals 1404.

[0180] The duration of the integration time intervals 1402 also need not align with the excitation time intervals 1408 that make up a single measurement of the optical measurement system. For example, the integration time interval 1402 can include excitation from multiple measurements. The integration time interval 1402 can also include fewer excitation time intervals 1408 than in a single measurement. In some embodiments, multiple integration time intervals 1402 can fit within a single excitation time interval and / or a single measurement. Some integration time intervals 1402 can begin before a measurement and extend beyond the measurement. Thus, the integration time intervals 1402 can aggregate photon counts into the integration register 1202 between excitations, between measurements, and / or at other times when no pulse train is being transmitted from the light source.

[0181] VII. Selecting the Integration Register

[0182] As described above, the select signal 1204 can be used to pass through the integration register 1202. The select signal 1204 can be generated by a variety of different sources, including an interval timer and an external stimulus that need not conform to precise timing requirements. The select signal 1204 can be generated on the same integrated circuit chip as the integration data path or, alternatively, off-chip.

[0183] A. On-Chip Signals

[0184] Figure 15An integration data path that generates a select signal 1204 on-chip is shown according to some embodiments. The select signal 1204 can be generated by a timer 1502. The timer 1502 can be configured to generate the select signal 1204 at regular intervals such that each of the integration time intervals (i.e., second time intervals) can be uniform in length. The timer can define the length of each integration interval (i.e., second time interval) by subdividing the integration interval into integration time intervals that total the desired length of the integration interval. For example, if the integration data path is used to generate a total photon count for a pixel in an environmental image of a surrounding environment, the timer 1502 can be configured to generate time intervals that total the length of time corresponding to the pixel. The time associated with each pixel can correspond to the rate at which the optical measurement system physically rotates to scan the surrounding environment. The timer 1502 can then subdivide the time interval associated with each pixel with the number of integration registers 1202 in the integration register 1210 group to generate the final period for the select signal 1204.

[0185] In some embodiments, the timer 1502 can be configured such that it corresponds to the length of time associated with each optical measurement. For example, if each measurement is configured to take approximately 1 μβ, the timer can be configured to increment the select signal 1204 by dividing the time for each measurement by the number of integration registers 1202 in the integration register 1210 group. This configuration can be used when the integration interval should coincide with the corresponding measurement. For example, when the integration value is used to estimate a background noise level to set a threshold for a measurement, the integration interval can be temporally aligned to include the measurement.

[0186] The timer 1502 can also be used as a proxy for measuring the position of the optical measurement system. Because the rate at which the optical measurement system can rotate about a central axis can be known, the timer 1502 can be configured to provide a predetermined spatial resolution for the ambient light measurements. For example, if the optical measurement system rotates 360° about its central axis every 100 ms, and the system should generate 1000 pixels, the timer 1502 can be configured to increment the select signal 1204 every 100 μβ divided by the number of integration registers 1202 in the integration register group 1210, or every 25 μβ. Thus, the timer can be used to generate the on-chip select signal 1204 based on the approximate angular position of the optical measurement system without requiring off-chip external signals from an angular encoder.

[0187] B. Off-chip signals

[0188] Figure 16An integration data path that receives a selection signal 1204 from an off-chip source is shown according to some embodiments. When generated off-chip, an input can be received by the integrated circuit chip 1504 from an external source, and the input can be converted to a selection signal 1204 for the integration data path. For example, the input can be received on a pin as an interrupt from a control processor that interfaces with the integrated circuit 1504. The control processor can then generate a periodic signal that acts as the selection signal 1204 for incrementing the integration registers 1202. Thus, the external signal can define the length of the integration time interval, and the control processor can use the external signal to generate the selection signal 1204, which in turn defines the length of the integration time interval for each of the integration registers 1202 as described above.

[0189] In some embodiments, the external signal can be generated by an angle encoder 1602. When the integration time interval is based on the angular position of the optical measurement system as it rotates about its central axis, the angle encoder 1602 can be used to determine the position of the optical measurement system during rotation. For example, the angle encoder 1602 can be included as described in U.S. Patent Application No. 15 / 980,509, filed May 15, 2018, and entitled AUGMENTING PANORAMIC LIDAR RESULTS WITH COLOR, which is incorporated by reference herein. The angle encoder 1602 can be configured to generate a selection signal that can be sent to the integration data path every 0.36° of rotation (or 1 / 1000 of a full rotation). Alternatively, the angle encoder 1602 can send a signal representing the value of the angle of rotation to a control processor, which can in turn generate the selection signal 1204 based on the received angle of rotation.

[0190] While the angle encoder 1602 is used as an example in Figure 16 Other embodiments can use any other external source to generate the selection signal 1204. For example, some systems can vary the speed of the integration period so that the integration interval is reduced in low light conditions. This can result in a higher resolution ambient light image. Some embodiments can use the speed of the vehicle on which the optical measurement system is used to affect the frequency of the selection signal 1204. For example, the period of the selection signal 1204 can be reduced when the vehicle is traveling quickly, while the period can be increased when the vehicle is waiting at a traffic light. Other onboard vehicle systems can also provide input to the optical measurement system to affect the generation of the selection signal 1204, including safety systems, collision detection systems, received weather forecasts, and other systems that measure and / or respond to the surrounding environment.

[0191] C. Increasing Spatial Resolution

[0192] One of the effects of subdividing each integration interval into a number of integration time intervals, each of which is captured in a corresponding integration register, is to improve the spatial resolution of the ambient light measurements of the integration process. Figure 17 Ambient light measurements using multiple integration registers for an electric vehicle 1703 are illustrated in accordance with some embodiments. In this example, an optical measurement system 1701 can be mounted on the top of an electric vehicle 1703. The optical measurement system 1701 can be configured to rotate multiple times per second around its central axis to scan the surrounding area and produce both depth images and ambient light images of the surrounding environment. Each integration interval can correspond to one pixel in the ambient light images.

[0193] In some embodiments, the measurements of depth images captured by the histogram data path can be temporarily aligned with the ambient light measurements made by the integration data path as described above. In particular, a single depth measurement can correspond to a single integration period, so that the ambient light measurements can be used to estimate background noise, remove background noise from depth images, compute thresholds for detecting reflected pulses, etc. When only a single integration register is used, the spatial resolution of the ambient light images can thus be defined by the length of the measurements made by the histogram data path, where the length can be defined in terms of the temporal length or the physical length of the field of view created by the system as it scans to capture the histogram.

[0194] However, when multiple integration registers are used, the spatial resolution of the ambient light images from the integration data path can be improved based on the number of integration registers used. In Figure 17 In the example of FIG. 12, the integration register 1210 group includes four integration registers 1202. The incremental angular rotation 1702 corresponding to a measurement (and thus to an integration period in this example) can be subdivided into four angular increments, each of which aggregates the received photon counts in a corresponding one of the integration registers 1202a-d. This improves the spatial resolution of the ambient light images by a factor of four. As described above, the selection signal 1204 can be generated by an angular encoder on the optical measurement system 1701, can be generated by a timer used as a proxy for position based on a known rotational speed, or can be generated by any other position sensing device.

[0195] VIII. Methods for using multiple integration registers

[0196] Figure 18A method for using an optical measurement system is described. At block 1802, the method can include transmitting one or more pulse trains in one or more first time intervals as part of an optical measurement. Each of the first time intervals can correspond to an excitation time interval as described above, and each of the first time intervals can correspond to one of the transmitted pulse trains. These pulse trains can be transmitted by a light source of the optical measurement system and can each include one or more individual pulses.

[0197] At block 1804, the method can also include detecting photons from the one or more pulse trains and photons from ambient light. The pulse trains and ambient light can be detected using a plurality of photodetectors on a photosensor. The photodetectors can be implemented using single-photon avalanche diodes (SPADs). When a photon is received, the photodetectors can generate a signal, and a threshold circuit can generate a positive signal to indicate that a photon was received. An ALU can aggregate these positive signals during an ALU clock period to generate a photon count during the ALU clock period.

[0198] At block 1806, the method can additionally include accumulating photon counts from the one or more photodetectors during the one or more first time intervals. These photon counts can be accumulated in a first plurality of registers. The first plurality of registers can include the registers in the SRAM of the histogram data path as described above. Each of the first time intervals can be subdivided into a plurality of first time bins for the histogram. A corresponding time bin in each of the one or more first time intervals can be accumulated in a single register in the first plurality of registers. Each of the first time intervals can represent an excitation, and the one or more first time intervals together can represent a measurement for the optical measurement system. Each of the first time intervals can be delimited by a start signal or an excitation signal of a first register in the histogram to which memory is reset back to.

[0199] At block 1808, the method can additionally include accumulating photon counts in a second time interval that overlaps at least a portion of the one or more first time intervals. These photon counts can be accumulated into a second plurality of registers. The second registers can be implemented using the plurality of integration registers described above. The second time interval can correspond to the integration time interval described above, and the second time interval can include at least a portion of one or more of the first time intervals for the histogram data path. The second time interval can also be subdivided into second time bins. Each of the second time bins can be delimited by a select signal, and the second time bins can each correspond to an individual integration register in the second plurality of registers. Some embodiments can also include an arithmetic logic circuit, such as an ALU, that produces an aggregate sum of the values stored in all of the second registers, which represents a total photon count received during the integration interval. This total photon count can then be used to estimate background noise and to generate a threshold for detecting a reflected pulse.

[0200] IX. Histogram register saturation

[0201] The width of the histogram data path described above can not be overly large, as the contents of the histogram memory can typically be reset at the beginning of each measurement. For example, some embodiments can use 12-bit SRAM, where each 12-bit register can store an unsigned value in the range of 0 to 4095. In normal situations, this provides enough memory so that the counts of photons in a burst from each measurement can be gathered in the histogram registers without exceeding the 12-bit range. Other data path components in the histogram data path can be at least as wide as the registers in the histogram memory.

[0202] Under normal operating conditions, the registers in the histogram memory and / or other data path components can be large enough so that saturation is not common. However, in certain operating conditions, excessive ambient light can be present so that saturation can occur. Alternatively or additionally, highly reflective and / or retro-reflective surfaces can be encountered that reflect a large amount of light from the optical measurement system back into the corresponding photosensor. A retro-reflective surface is a surface that reflects radiation containing light back to its source with minimal scattering. Retro-reflective surfaces can commonly be encountered in driving situations where the optical measurement system is mounted on a vehicle. These retro-reflective surfaces can include road signs, vehicle reflectors, safety vests, safety barriers, and other objects with reflective surfaces. The optical measurement system on a vehicle can also encounter a large amount of ambient light in the form of vehicle headlamps, construction lights, high beams, street lights, and / or other artificial light sources that illuminate the road. The optical measurement system on a vehicle can also experience a large amount of light received from natural sources such as the sun. When the optical measurement system encounters any of these light sources and / or reflective surfaces, saturation of one or more of the histogram registers can occur.

[0203] As used herein, the term "saturate" can describe a situation in which a photon count is received from a photosensor, and adding the received photon count to an existing value stored in a histogram register for the time interval would cause the value to exceed what can be represented in at least one component of the histogram data path. For example, some embodiments can use an unsigned 12-bit data path that can represent values in the range of 0 to 4095. When a received photon count added to an existing value in a time interval register exceeds 4095, this data path can saturate. For example, if a register stores a value of 3825 for photon counts from a previous excitation, and a current excitation attempts to add an additional 425 photon counts to the register for the time interval, the data path will saturate when trying to accumulate and / or store a value greater than 4095. The behavior of a data path when saturated depends on the implementation of the ALU, register, and other data path components. When trying to accumulate or store a value greater than a maximum value, some components can maintain the maximum value (e.g., 4095). Some components can reset the value to 0. Some components can restart the count at 0 and add the amount that exceeded the maximum value to 0 (e.g., 3825 + 425 = 155). Regardless of component behavior, the actual value that exceeds the maximum value of the register will be lost when the data path saturates.

[0204] In some embodiments, the registers in the histogram memory can form a separate component from the ALU that accumulates photon counts in a current excitation and adds the value to an existing value in the register. As explained in Figure 8 The ALU 804 can retrieve the current value 820 from the histogram memory 806 and add the value to the photon counts in a current excitation, as explained in

[0205] Figure 19 The contents of the histogram memory when saturation occurs are shown in accordance with some embodiments. Each of the vertical bars in the graph represents a single time bin stored in a register in the histogram memory. The horizontal divisions in each bar represent the values accumulated in the register during each shot. In this example, eight shots have occurred in the optical measurement. As described above, the photon counts from each shot can be added to the existing values of the photon counts accumulated in the register from previous shots. Each register representing a time bin can be implemented using an N-bit register, where N is an integer value such as 8, 10, 12, 16, 24, 32, 64, etc. Typically, the registers need not store any indication of which photon counts were received during a particular shot. Thus, the vertical divisions in each bar need not be represented in the values stored in the registers themselves, but are included for illustrative purposes to show how the photon counts can accumulate in the registers in the histogram memory over time.

[0206] Figure 19 The horizontal line in the middle represents a saturation limit 1902, which can apply to each of the registers in the histogram memory. As described above, the saturation limit 1902 can be a limit derived from the bit width of any of the data path components in the histogram data path. The saturation limit 1902 can represent the maximum unsigned value that can be stored by each individual register. For example, the saturation limit 1902 can be the value 4095 for a 12-bit register. The saturation limit 1902 can also represent the maximum width of the output of the ALU in the histogram data path, such that after the saturation limit 1902 is exceeded, the ALU produces a carry output and / or starts counting up from the lower ALU limit. Due to a high level of ambient light and / or due to a very reflective surface, Figure 19 The histogram in the middle contains a peak that exceeds the saturation limit 1902, such that multiple time bins will store saturated values rather than actual photon counts.

[0207] Regardless of the particular data path component that saturates, such saturation can occur when a new photon count is received by the ALU and an attempt is made to add the new photon count to an existing value. The new photon count can be added to the register for a particular time interval in the histogram memory multiple times during each shot. The clock signal for the ALU can switch at regular intervals during the time interval to capture a positive indication from individual light detectors in the light sensor as photons arrive. Thus, saturation can occur at any point during the time interval because the accumulation operation adds new photon counts regularly during the time interval rather than adding the accumulated photon count at the end of the time interval. Some embodiments can accumulate all photon counts for the duration of the time interval and then attempt to add the number of total photon counts to the corresponding register in the histogram memory during the time interval. In either case, saturation can occur during the accumulation operation by the ALU and / or when the updated total photon count is sent to the histogram memory for storage.

[0208] Figure 20 The impact that saturation can have on the overall shape of a received photon count histogram is shown according to some embodiments. As described above in this disclosure, the width, height, and shape of a received pulse can be processed by a matched filter to identify a pulse of light that has been emitted by a light source of an optical measurement system, reflected by a surrounding environment, and received by a light sensor. The matched filter can distinguish a reflected pulse from incidental or background light received from the surrounding environment. The shape of the pulse is also important in determining the exact bearing of the pulse. The bearing of the pulse (i.e., the time interval in which the peak of the pulse is located) can be used to determine the distance between the optical measurement system and the reflecting object in the surrounding environment.

[0209] Figure 20 The content of the registers in the histogram memory is shown when saturation occurs in Figure 19 Instead of accurately representing the magnitude of the photon counts received in the pulse time interval 2002, the registers in the histogram memory can saturate at their maximum value. For example, a 12-bit unsigned register can saturate at a value of 4095. Because the individual registers only store a value representing the total photon count for a measurement, the individual registers do not distinguish when individual photons arrived during the measurement for a particular time interval. Thus, the histogram data path does not know the true magnitude of the saturated registers. For example, it cannot be discerned whether the register saturated due to only a few photon counts and is therefore extremely accurate, or whether the register saturated due to many photon counts in the middle of the measurement and is therefore extremely inaccurate. Not only does the saturation of the registers affect the accuracy of the individual registers representing the total photon count, it also fails to store any information indicating when saturation occurred in the measurement.

[0210] In addition to the inaccuracy of the individual registers, Figure 20The saturation depicted in the middle also changes the shape of the received light pulse. Because the registers for the remaining time intervals in the measurement are not saturated, they continue to accurately accumulate photon counts until the end of the measurement. Because the photon counts in the pulse time interval 2002 are saturated, the relative distance between the recorded top of the pulse and the background noise is reduced. This results in a lower signal-to-noise ratio (SNR) and thus reduces the confidence in the measurement by making it more difficult to distinguish the peak from the background noise. Saturation also has the effect of "flattening" the pulse. Instead of a well-defined pulse peak position that can be identified in a single time interval, Figure 20 The pulse time intervals 2002 are not distinguishable from each other after saturation. The peak of the pulse can be anywhere in the pulse time intervals 2002. This uncertainty reduces the accuracy with which the peak can be located and thus reduces the accuracy with which the distance to the reflecting object can be calculated in the ambient environment. Changing the shape of the reflected pulse in the pulse time intervals 2002 also affects the accuracy with which the matched filter can identify the pulse.

[0211] A. Counter-based saturation scaling

[0212] To address these and other technical problems associated with saturation in the histogram data path, the data path can include a counter that counts the number of shots and / or exposures during a measurement. As described above, a "shot" begins with a start / shot signal and includes the recording of photon counts in multiple time intervals in the histogram memory. A shot fills one layer of the histogram that is incrementally accumulated over the course of a multi-shot measurement. Each aggregation of photon counts in a time interval within a shot can be referred to as an "exposure," and a shot can include multiple exposures, with the ALU and histogram memory clocked to aggregate and store updated photon counts in a single time interval. When saturation occurs and is detected, the aggregation and storage of additional photon counts during the measurement in all registers in the histogram memory for that light sensor can be disabled. The counter can store the number of shots and / or exposures that occurred up to the time of saturation, and this number, together with the total number of shots and / or exposures in the measurement for the entire measurement, can be used to scale the incomplete photon counts in the histogram memory. This preserves the overall shape of the reflected pulse and allows the true magnitude to be estimated.

[0213] Figure 21 Figure 6 shows the histogram data path when detected saturation causes the histogram data path to stop accumulating and storing new photon counts. The histogram data path is shown in the middle of a measurement. The histogram data path is shown in the middle of a measurement. Figure 19The contents of the histogram memory as depicted in the middle. When a single saturation for a particular photosensor is detected in a single time bin, for the rest of the measurements for all registers, the accumulation of new photon counts can be disabled in all time bins for the photosensor. Disabling the photosensor after saturation does not need to cause any impact to other photosensors in the photosensor array. This allows saturation to be detected and handled individually at each photosensor without impacting other photosensors. For example, if several photosensors receive a large light pulse that causes saturation, this event can be isolated to only the photosensors that were affected. Further, the affected photosensors can scale their results so that they are comparable to the results of the unaffected photosensors as described below.

[0214] The histogram data path can include an event counter 2002 that counts the number of events that occur between the start of the measurement and the time that saturation occurs. "Events" can include the number of firings, the number of exposures accumulated by the ALU, and / or any other timing event that occurs periodically during the measurement. In this example, the event counter 2002 can represent the number of firings since the start of the measurement. However, this is not meant to be limiting, and any other event can be used in a similar manner.

[0215] For each event, the event counter 2002 can be incremented. In this example, the event counter 2002 can be incremented at the start or end of each firing. For example, the start signal that causes the clock to begin sending pulses to the ALU and the histogram memory can also cause the event counter 2002 to increment. Each firing after the start of the measurement can continue to cause the event counter 2002 to increment until saturation occurs in the histogram data path or until the measurement ends. The component that causes saturation or otherwise detects saturation can send a signal to the event counter 2002 that causes the event counter 2002 to stop incrementing with subsequent start signals at the start of subsequent firings. Thus, at the end of the measurement, the value in the event counter 2002 can represent the number of firings that occurred since the start of the measurement until saturation occurred in the histogram data path.

[0216] As described above with respect to Figure 19 , Figure 21 Each of the vertical bars in the histogram represents the cumulative sum of the photon counts stored in the register representing a single time bin that is repeatedly filled in over multiple firings in the measurement. Each of the segments within the vertical bar represents the photon counts received in a single firing. Thus, this example shows a total of four firings that are accumulated and stored in the histogram memory before saturation occurs.

[0217] In this example, the register associated with time bin 2102 reaches saturation during the fourth shot. As described above, this can include saturation at the ALU, saturation in the registers of the histogram memory, and / or saturation in any other component of the histogram data path. The result of saturation is that the total photon counts during the fourth shot can not be accurately accumulated and / or represented in the associated register. When saturation is detected, the photon counts for the remainder of the current shot can be handled in several different ways. In some embodiments, for the remainder of the shot, the current register can be disabled while other registers in the histogram memory continue to accumulate photon counts until the end of the current shot. After the current shot ends, then the remaining registers in the histogram memory can be disabled. When this happens, the periodic clock signal that causes the ALU to increment and the histogram memory to update can be turned off. In this example, the full photon counts for each register can be accumulated and stored except for the portion of the photon counts for time bin 2102 that are above the saturation limit 1902.

[0218] Alternatively, when saturation occurs in any of the histogram registers, some embodiments can then cause the ALU to stop accumulating and the histogram memory to stop storing new values. The saturation event need only occur on a single register in the histogram data path for the light sensor. Instead of stopping accumulation for that single register, all accumulation and storage of new photon counts in the light sensor can be disabled. This can then occur such that when saturation occurs in the middle of a shot, photons will no longer be accumulated in any register for the remaining time bins of the remaining measurements. In this example, the time bins until time bin 2104 can contain full photon counts for the current shot, time bin 2102 will contain partial photon counts for the current shot, and the time bins from time bin 2106 onward will contain no photon counts from the current shot. This will remove the top block from Figure 21 in FIG. 21 1.

[0219] In some embodiments, an exposure counter can be used in addition to or instead of a shot counter. When saturation occurs in time interval 2102, the exposure counter can record the number of exposures in the current shot, which are stored in the register for time interval 2102. While time intervals prior to timing 2104 can include full photon counts for the current shot, the register for time interval 2106 and later can count photons up to the number of exposures in the current shot that successfully executed prior to saturation in time interval 2102. Thus, time interval 2106 and later can accumulate photon counts for a portion of the current shot that matches the portion of the current shot captured in time interval 2102 prior to saturation. This portion is represented by the dashed line in each of the time intervals after time interval 2106. For example, if the updated time interval 2104 saturates and only 50% of the photons counted in the current exposure can be represented in the histogram register for time interval 2104, then the photon counts in the subsequent histogram registers from time interval 2106 and later can also be reduced by 50% for the current shot.

[0220] Other embodiments can use different methods for stopping the accumulation and storage of new photon counts when saturation occurs during a shot. Any combination of the above methods can be used. In particular, each time interval can be handled independently of other time intervals in the measurement. For example, time interval 2102, where saturation occurs, can stop accumulating immediately, while time intervals prior to time interval 2004 and after time interval 2106 can store full photon counts and / or partial photon counts for the current shot, or can be completely disabled after saturation occurs in time interval 2102. These different methods can be used in any combination in any time interval and are not limited in various embodiments.

[0221] Because the accumulation and storage of new photon counts can stop when saturation occurs, the overall shape of the histogram stored in the histogram memory can approximate the overall shape of the histogram captured without the saturation limitation 1902 as depicted in FIG. 19B. Because the overall shape is preserved, the SNR is not as adversely affected as when the accumulation and storage of photon counts does not stop as shown in FIG. 19A. In addition, preserving the shape of the histogram makes it more likely that the matched filter will correctly identify the reflected pulses corresponding to the pulse train emitted from the light source of the optical measurement system. Figure 19 Figure 20

[0222] ​​While the overall shape can remain, the magnitudes of the pulses captured by the histogram memory can be significantly less than the actual magnitudes of the pulses received by the photosensor during the entire measurement. However, because the event counter 2002 records the number of events that occurred before saturation, and because the total number of events for the measurement can also be known and / or recorded in a separate counter, the value stored in the event counter 2002 can be used to scale (or otherwise normalize) the shape of the histogram so that the magnitudes approximate the magnitudes that would have been received, accumulated, and stored without the saturation limit 1902.

[0223] Figure 22 A process for scaling a saturated histogram memory using an event counter is shown according to some embodiments. This example continues to use the number of excursions in the measurement as the value stored in the event counter 2002, i.e., four excursions as described above. The total number of excursions can be stored in a separate counter 2210 or can otherwise be a known value within the optical measurement system. For example, the control process that provides the start signal can store the number of start signals to be sent during each measurement. The total number of events can be divided by the value in the event counter 2002 to produce a multiplier 2214 for scaling the histogram 2202 stored in the histogram memory after saturation. In this example, the measurement can include a total of eight excursions in the counter 2210, and a value of four excursions in the event counter 2002, resulting in a multiplier of two.

[0224] In some embodiments, the multiplier 2214 can be transferred off-chip along with the values of the peaks identified in the histogram memory. An auxiliary processor can then scale the values in the histogram 2202 by the multiplier 2214 to obtain the magnitudes of the values in the histogram 2202. Figure 22 It is illustrated how the values in the histogram 2202 can be scaled by the multiplier 2204, resulting in the values illustrated in the histogram 2204. The processor can include much larger memory registers than the registers used by the on-chip histogram memory, and can therefore be able to represent these values after scaling by the multiplier 2214 without saturation. It should be noted that the shape of the histogram 2204 after saturation and scaling is similar to the shape of the received photon counts in Figure 19 the histogram 2202 without saturation. Some embodiments can also perform the scaling and normalization functions on-chip.

[0225] Scaling the values in the histogram memory by the multiplier 2214 also allows for the calculation of the background noise level and threshold values used for peak detection. Without the multiplier 2214, the background noise recorded in the histogram 2202 can not be accurate. However, when scaled by the multiplier 2214, the background noise can be more accurately estimated and used to set the threshold values for detecting peaks in the current measurement.

[0226] B. Histogram saturation circuit

[0227] Figure 23 A circuit diagram showing a histogram data path with saturation detection according to some embodiments is shown. Figure 23 In operation, it is similar to Figure 8 The histogram data path shown in the image, however, Figure 23 The histogram data path contains various counters and components for detecting saturation along the data path. These additional components allow the histogram data path to detect when saturation occurs along the data path, and in response to detecting saturation, cause the ALU 804 and / or histogram memory 806 to stop accumulating / storing additional photon counts, and record the number of events (e.g., excitation, exposure, etc.) that occur during the current measurement until saturation occurs.

[0228] The histogram data path may include an excitation counter 2304 that increments with each excitation in the measurement. The excitation counter 2304 may be reset when a new measurement begins. The excitation counter 2304 may increment whenever the excitation input 814 triggers the start of a new excitation. For example, the excitation input 1804 may be provided as an input to the excitation counter 2304, and the excitation counter 2304 may increment its stored value in response to a rising edge on the excitation input 814. Some embodiments may include more than one counter in the excitation counter 2304. For example, the excitation counter 2304 may include a first excitation counter that counts excitations until saturation occurs, and a second excitation counter that counts the total number of excitations in the measurement regardless of saturation. This allows each photodetector to provide both a total count for the received excitation inputs and a total count for the excitations before saturation.

[0229] As described above, any event can be counted to determine when saturation occurs. In addition to the excitation counter 2304, some embodiments can include additional counters that increment with other events in the histogram data path. For example, some embodiments can include an exposure counter 2306 that counts the number of exposures captured by the light sensor in the current measurement. The clock 810 can generate a periodic signal 560 that causes the ALU 804 to aggregate the received photon counts with the current value 820 in the register for the current time interval. This periodic signal 560 can also be provided to the exposure counter 2306 to cause the value stored in the exposure counter 2306 to increment with each exposure. The exposure counter 2306 can be implemented in a similar design to the excitation counter 2304, in which the exposure counter 2306 includes multiple individual counters. For example, a first exposure counter can count the number of exposures until saturation occurs, while a second exposure counter can count the total number of exposures in the current measurement. By counting both values, the exposure counter 2306 can also be used to generate a multiplier for scaling the final values in the histogram memory.

[0230] The histogram data path can also include a saturation detection circuit 2306 that detects saturation along the histogram data path and provides an output signal that causes the ALU 804 and / or the histogram memory 806 to stop aggregating new photon counts after saturation. Because saturation can occur in several different places in the histogram data path, the saturation detection circuit 2302 can use different implementations in different embodiments. For example, if saturation occurs when the ALU 804 overflows, the ALU can provide a carry output that indicates that the result of the ALU 804 has exceeded its bit width. This output can be sent to the saturation detection circuit 2302 and used as an enable signal for the clock 810 and / or the excitation counter 2304. Alternatively, when saturation occurs in the histogram memory 806, the memory interface can send a signal to the saturation detection circuit 2302 that can similarly be used as an enable signal for the clock 810 and / or the excitation counter 2304. Some embodiments can also use a comparator in the saturation detection circuit 2302 to determine when the higher order bits in the histogram data path have a non-zero value, indicating that the current aggregated value can exceed the bit width of the histogram memory 806. The saturation detection circuit 2302 can latch a value that indicates the current saturation state of the histogram data path (e.g., a logical '1' when saturation has occurred), and this value can be sent with the value in the event counter when the histogram memory is processed for peak detection to indicate that saturation occurred. The saturation detection circuit 2302 can reset this state value for a new measurement when a new measurement signal 812 is received.

[0231] In response to saturation detection by saturation detection circuit 2302, the output signal from saturation detection circuit 2302 can cause the histogram data path for this single photosensor to stop accumulating new photon counts. In some embodiments, the output can serve as an enable signal for clock 810, which generates the periodic signals 560, 808 that trigger ALU 804 and histogram memory 806. If saturation detection circuit 2302 disables clock 810, these periodic signals 560, 808 can no longer be provided to ALU 804 and histogram memory 806, which in turn can prevent them from accumulating and storing new photon counts for the remainder of the measurement. Note that turning off clock 810 also causes exposure counter 2306 to stop incrementing. Similarly, any other event counters used in the histogram data path can be selectively disabled by the output of saturation detection circuit 2302.

[0232] Saturation detection circuit 2302 can include one or more delay elements or counters that insert a delay between the time when saturation occurs and the time when the accumulation and / or storage of new photon counts stops. As described above, various embodiments can cause the histogram data path to continue functioning normally until the current excitation ends, while other embodiments can cause the histogram data path to shut down immediately in response to saturation. Depending on the embodiment, saturation detection circuit 2302 can wait until the next excitation signal 814 is received before turning off clock 810 or otherwise disabling the histogram data path.

[0233] X. Integral Register Saturation

[0234] As described above, an optical measurement system can include multiple parallel data paths operating simultaneously for each photosensor. The multiple parallel data paths can include both a histogram data path and an integral data path. While these data paths are not shown together in Figure 23 it should be understood that they can all be connected to the same photosensor and operate simultaneously in parallel.

[0235] The integral data path can face similar saturation problems as described above with respect to the histogram data path. In particular, the integral data path can have a bit width limit that can saturate due to a high level of ambient and / or reflected light received by the photosensor during the integration interval. While the root of the problem is the same, the circuit solutions for detecting and addressing saturation can include some differences from the histogram data path.

[0236] A. Counter-Based Saturation Scaling

[0237] As described in detail above, the integral data path can aggregate the photon counts received by the light sensor within all or some of the "second time interval" or excitations that can be included in the time intervals used by the histogram data path. The total photon count can be stored in one or more individual integral registers, and the total photon count can be used to estimate the background noise level, set a peak detection threshold, remove background noise from the detected peaks, and / or generate an ambient light image of the surrounding environment.

[0238] Figure 24 This describes a timeline of photon counts 2406 received during measurements for an integration data path, according to some embodiments. Instead of subdividing the photon counts into excitations, the photon counts for the integration data path can be received as a continuous stream of photons aggregated by the ALU in the integration data path. The time intervals for the integration data path can overlap and / or cover the intervals between photons collected by the ALU in the integration data path. Figure 24 The interval 2402 in the figure represents the excitation interval from the histogram data path. Therefore, photon counting can be continuously accumulated by the integral data path before, during, between, and / or after the excitations occur simultaneously in the histogram data path.

[0239] Because the photon count is continuously aggregated in the integral data path, the total photon count represented in one or more integral registers can be significantly higher than any of the photon counts represented in the registers of the histogram memory in the histogram data path. Figure 25 This illustrates how photon counting, according to some embodiments, can be continuously accumulated in one or more integration registers during measurement. In this example, in Figure 24 The incremental photon count received within the time period described herein is continuously added to Figure 25 The value of the integration register in the image. Each vertical bar represents the total number of aggregated photons represented by the integration register as the integration interval progresses. The dark portion of each vertical bar represents the number of photons added from the ALU in the integration data path during the current aggregation operation.

[0240] Similar to the situation described above for the histogram data path, the integration data path can include saturation limits 2502 that can be imposed by any of the components in the integration data path. For example, the ALU in the integration data path can include a maximum bit width for any output result. While the integration registers can typically be larger than the registers used by the histogram memory (e.g., 64 bits), the integration registers can still have saturation limits that define the maximum photon count that can be stored in the integration registers. While not drawn to scale, the saturation limits 2502 illustrate how continued aggregation of photon counts into the integration registers can cause saturation in some portion of the integration data path. When saturation occurs in the integration data path, the integration registers can face similar problems as experienced in the histogram data path. For example, the total photon count represented by the integration registers can no longer be accurate, making it difficult to accurately estimate the background noise level or generate an environmental image for the surrounding environment of the particular pixel.

[0241] Figure 26 Saturation detection circuitry can also be implemented in the integration data path so that when saturation occurs, the integration data path can stop adding new values to the integration registers and effectively maintain the current value for the rest of the integration interval. When the saturation limits 2502 are reached by one or more components in the integration data path, the value in the integration registers can be preserved. As described above with respect to the histogram data path, an event counter can count the number of events that occur from the start of the integration interval until saturation occurs. In this example, the counted events can include exposures, where the integration ALU aggregates new photon counts from the photosensor and updates the value in the integration registers. The total number of exposures 2602 can be divided by the exposure count 2604 to calculate a multiplier 2608, which can then be applied to the value stored in the integration registers to generate a total photon count 2610 for the integration interval.

[0242] While the total photon count stored in the integration registers can not be accurate for the full integration interval due to saturation, the scaled total photon count can be an accurate estimate of the total number of photons received by the photosensor during the integration interval. Thus, the scaled total photon count can be used to estimate the background noise level, set a detection threshold, remove background noise from detected peaks, and / or generate an environmental image of the surrounding environment as described in detail below.

[0243] B. Integration Saturation Circuitry

[0244] Figure 27This describes an integration data path with saturation protection according to some embodiments. The integration data path may include one or more event counters, such as exposure counter 2704, which increments with each exposure captured by ALU 1006. The exposure counter may be incremented using a periodic signal 1012 generated by clock 1003, which operates continuously during the integration interval. This allows exposure counter 2704 to count each exposure between the start time of the integration interval with integration signal 1008 and the time when saturation occurs.

[0245] The integral data path may also include a saturation detection circuit 2702, which is used in conjunction with the histogram data path. Figure 23 The saturation detection circuit 2302 operates in a similar manner. For example, the saturation detection circuit 2702 may receive carry or overflow indications from the ALU 1006. The saturation detection circuit 2702 may also receive a signal from the integration register 1004 indicating that the value to be stored in the integration register 1004 is greater than the allowed bit width. The saturation detection circuit 2702 may also include one or more comparators that compare the values ​​at various points in the integration data path with saturation limits. The saturation detection circuit 2702 may use any of these inputs to generate an output signal to the clock 1003. This signal (e.g., logic '0') may act as a deactivation signal for the clock 1003 and cause the clock 1003 to stop generating periodic signals 1012, 1011. After the periodic signals 1012, 1011 are deactivated, the ALU 1006 and the integration register 1004 may stop accumulating and storing new photon counts for the remaining integration intervals. In addition, the exposure counter 2704 will stop incrementing and thus store the number of exposures that occurred before saturation.

[0246] XI. Methods for handling memory saturation

[0247] Figure 28 A flowchart illustrating a method for handling saturation using an optical measurement system according to some embodiments is shown. At block 2802, the method may include transmitting one or more pulse trains as part of an optical measurement within one or more first time intervals. Each of the first time intervals may correspond to an excitation time interval as described above, and each of the first time intervals may correspond to one of the transmitted pulse trains. These pulse trains may be transmitted by a light source of the optical measurement system and may each contain one or more individual pulses.

[0248] At block 2804, the method can also include detecting photons from one or more pulse trains and photons. Photons from ambient light can also be detected. The pulse trains and ambient light can be detected using multiple photodetectors on the photosensor. The photodetectors can be implemented using single-photon avalanche diodes (SPADs). When a photon is received, the photodetector can generate a signal, and a latching circuit can generate a positive signal to indicate that a photon was received. The ALU can aggregate these positive signals during an ALU clock period to generate a photon count during the ALU clock period.

[0249] At block 2806, the method can additionally include populating a first plurality of registers in a data path with photon counts from one or more photodetectors. The first plurality of registers can include registers in the SRAM of the histogram data path as described above. Each of the first time intervals can be subdivided into a plurality of first time bins for the histogram. A corresponding time bin in each of the one or more first time intervals can be accumulated in a single register in the first plurality of registers. Each of the first time intervals can represent a shot, and the one or more first time intervals together can represent a measurement for the optical measurement system. Each of the first time intervals can be bounded by a start signal or a shot signal in the histogram that the memory resets back to. The photon counts can be aggregated by an arithmetic logic circuit in the data path, such as the ALU described above.

[0250] At block 2808, the method can further include determining when saturation occurs in the data path. Saturation can be determined by receiving a signal from the arithmetic logic circuit indicating an overflow or carry operation. Saturation can also be determined by receiving an indication from the first plurality of registers that a value to be stored in the first plurality of registers is too large. Saturation can also be determined by comparing any value at any point in the data path to a predetermined saturation limit.

[0251] At block 2810, the method can also include causing the data path to stop populating the first plurality of registers in time intervals in the one or more first first time intervals that occur after saturation occurs. The data path can include a saturation detection circuit that generates a disable signal for a clock circuit that, when disabled, causes the arithmetic logic circuit and / or the first plurality of registers to stop accumulating photon counts. The method can cause the data path to stop populating the first plurality of registers immediately upon detecting saturation, or alternatively can wait until the current time interval ends (e.g., the current shot ends) to stop populating the registers.

[0252] In some embodiments, the method can additionally include counting a number of events that occur before causing the data path to stop populating the plurality of first registers. The data path can include an event counter, such as a shot counter and / or an exposure counter that increments with each shot and / or exposure. The value in the event counter can then be used with the total number of events during the measurement to scale the histograms in the plurality of first registers as described above.

[0253] XII. Multiple Peaks in a Histogram

[0254] The examples in this disclosure generally use a single peak transmitted from a light source and detected by a light sensor as an example of how light measurements can be used to determine a distance between an optical measurement system and an object in the surrounding environment. However, these examples are not meant to be limiting. In addition to the expected peak caused by a pulse train reflecting off of an object of interest, the histogram memory can include other peaks caused by more immediate, unexpected reflections of the pulse train, as well as peaks that are not necessarily produced by the pulse train at all. For example, additional peaks can correspond to the light source, reflections, or other environmental light phenomena in the surrounding environment. An initial peak can be produced by a reflection of the pulse train off of the housing of the optical measurement system or from an unexpected, obstructing object in front of the LIDAR system. In these cases, instead of detecting only a single peak, the optical measurement system can detect multiple peaks that can thus be present in the histogram memory. Each of these peaks can then be communicated to the processor for further analysis to determine which peak corresponds to the expected reflected pulse train and which peaks are produced by other sources or unexpected objects.

[0255] A. Excluding an Initial Peak from Multiple Peaks in a Histogram

[0256] The embodiments described herein can use various methods to accurately detect multiple peaks in the histogram memory. These methods can include detecting and masking an initial peak caused by photons from the light source reflecting off of the housing of the optical measurement system. This can be used to exclude the initial peak from the saturation detection described above and from the analysis of light reflected from the surrounding environment outside of the optical measurement system. After masking the initial peak, subsequent peaks can be detected in a recursive manner or iteratively by a peak detection circuit configured to identify the largest peak in the histogram memory. Upon identifying the largest peak, it can be masked such that it is excluded from any subsequent execution of the peak detection circuit, in turn allowing for a new peak to be identified with each execution.

[0257] Figure 29 An initial peak 2904 that can be identified and masked is shown in accordance with some embodiments. Figure 29The graph illustrates the values ​​stored in the registers of the histogram memory over time. Each vertical bar in the histogram corresponds to a register or time interval in the histogram memory, as described in detail above. Continuous curves are superimposed on... Figure 29 The general shape of the histogram is shown above the vertical bars for clarity, but it should be understood that... Figure 29 Continuous curves in the histogram do not actually need to be stored as individual values ​​by the histogram data path. Additionally, Figure 29 This only describes the initial portion of the histogram memory. The subsequent contents of the histogram memory can be found from... Figure 29 Continue to the right side of the graph.

[0258] like Figure 29 As described above, the initial portion of the histogram memory may contain an initial peak 2904 generated by the emission of photons from a light source on the optical measurement system. As described above, the light source for the optical measurement system emits photons that are reflected from the surrounding environment and received by the photosensitive sensor. When photons are initially emitted, at least a portion of those photons may be detected by the photosensitive sensor immediately after reflection from the housing of the optical measurement system without being reflected from the surrounding environment outside the optical measurement system. In some cases, the initial peak may also be caused by an object close to the photosensitive sensor that obstructs the normal emission, reflection, and reception of photons through the surrounding environment. For example, a plastic bag or other object may inadvertently become attached to the optical measurement system, causing a large portion of the light emitted by the light source to be reflected back to the photosensitive sensor. Each of these cases may generate an initial peak 2906 detected at the start of excitation and stored in the initial portion of the histogram memory. However, this initial object is not the desired object that is ultimately detected.

[0259] Because of the proximity of this early reflection (e.g., from a casing or covering object), the intensity of the initial peak 2904 can be extremely high. As described above, some embodiments can detect when saturation occurs in any time interval of the histogram memory. Detecting saturation in one time interval can cause the histogram data path to stop filling the histogram memory for the optical sensor during other time intervals in subsequent excitations. Because the initial pulse 2904 can be extremely high, receiving the initial pulse in the initial portion of the histogram memory can cause the histogram data path to saturate slightly earlier in the measurement. This saturation can occur early enough in the measurement that a relatively small amount of excitation is received for detecting reflected photons from the surrounding environment.

[0260] To prevent the initial pulse 2904 from saturating the histogram data path, some embodiments can exclude the initial pulse 2904 from saturation detection and / or peak detection. Because the initial pulse 2904 can occur predictably in the initial portion of the histogram memory, the initial time interval can be excluded from saturation detection. For example, a predetermined number of time intervals can be excluded from saturation detection using a mask interval 2906. If saturation occurs in the histogram data path during the mask interval 2906, the histogram data path can ignore the saturation and allow the photosensor to continue collecting and accumulating photon counts in the histogram memory.

[0261] Briefly returning to Figure 23 After a predetermined number of clock cycles has passed, the saturation detection circuit 2302 can receive an input from the clock 810. The signal from the clock 810 can be used as an enable signal for the saturation detection circuit 2302 so that it does not detect saturation during the initial portion of each shot. Some embodiments can instead use an internal counter in the saturation detection circuit 2302 that is reset and started by the shot signal 814. The output of the internal counter can be fed into a comparator that compares the internal counter value to the predetermined number of clock cycles during the initial portion of each shot. When the predetermined number of clock cycles has passed, the saturation detection circuit 2302 can be enabled by the output of the comparator.

[0262] The number of clock cycles excluded by the mask interval 2906 can be set based on the length of each time interval and a predetermined distance from the optical measurement system. For example, some embodiments can exclude initial pulses that reflect within 2 feet of the optical measurement system. The number of registers in the mask interval 2906 can be determined by dividing the time it takes for a photon to travel back and forth within a 2 foot range by the time represented by each time interval. Other embodiments can use a different range than 2 feet depending on how and where the optical measurement system is installed. For example, other embodiments can use ranges such as 1 foot, 2 feet, 3 feet, 5 feet, etc. Some embodiments can also allow the range represented by the mask interval 2906 to be set / adjusted dynamically during operation based on various factors such as the speed at which a vehicle carrying the optical measurement system is traveling, weather conditions, traffic conditions, and / or any other factors that can cause large initial pulses 2904.

[0263] B. Detecting multiple peaks

[0264] In addition to excluding saturation detection as described above, the initial peak 2904 can also be excluded when additional peaks received in subsequent time bins of the histogram memory are detected. In fact, the large initial peak 2904 can be followed by a number of peaks representing photons reflected from objects in the surrounding environment. The number of peaks following the initial peak can be used to determine distances between the optical measurement system and the reflecting objects. Thus, to avoid interfering with the accuracy of these distance measurements, some embodiments can include peak detection circuitry capable of excluding previously detected peaks such as the initial peak 2904.

[0265] 1. Recursive masking of previous peaks

[0266] Figure 30 A number of peaks represented in a histogram memory according to some embodiments are shown. The histogram memory can include the initial peak 2904 described above that exceeds the saturation limit 2902 of the histogram data path. In addition, the histogram memory can include a number of subsequent peaks 3002, 3004, 3006, 3008 representing photon counts caused by reflections off of objects in the surrounding environment. To accurately calculate distances, the peak detection circuitry can loop through the registers of the histogram memory to identify each peak while excluding previously detected peaks from being identified more than once.

[0267] As described above, the raw histogram data can undergo one or more filtering operations before being analyzed to detect peaks. Some embodiments can use a low pass filter on the raw histogram data to eliminate any transient signals, smooth the data, and / or extend the width of any reflection peaks. Some embodiments can also use a matched filter corresponding to the burst of pulses emitted by the light source of the optical measurement system. The matched filter can alter the shape of the data stored by the histogram memory to produce peaks that can be more easily identified than the signals in the raw data. The matched filter can also be used to distinguish reflection pulse transients and / or ambient background light received by the light sensor.

[0268] The embodiments described herein for detecting a number of pulses and masking initial pulses can be used with any type of data in the histogram memory. For example, these embodiments can be used with unfiltered data to detect peaks in the raw data. These embodiments can also be used with filtered data such as data that has undergone a low pass filtering operation and data that has been filtered using a matched filter. The filters can be applied to the data before and after peaks have been detected by the peak detection circuitry without affecting its operation. The portions of the histogram memory identified as peaks can also be sent to the processor in filtered and / or unfiltered formats.

[0269] Some embodiments can use a method of recursive masking to exclude the initial peak 2904 and any peaks previously identified by the peak detection circuit. The peak detection circuit can be configured to loop through the registers in the histogram memory and identify the maximum value. For example, the peak detection circuit can continuously step through each register in the histogram memory to detect the maximum value stored in the register. Because the values stored in each histogram register represent the photon counts accumulated during each of the excitation of the optical measurement, this maximum value can represent the maximum number of photons received during any single time bin.

[0270] After the maximum value has been identified, a portion of the histogram memory around the maximum value can be identified as a peak. Some embodiments can identify a predetermined number of time bins around the maximum value that can be designated as the peak. For example, a predetermined number of time bins, such as 5 time bins, 9 time bins, 15 time bins, 17 time bins, etc. can be identified around the maximum value and centered around the maximum value to represent the entire peak. Some embodiments can identify surrounding time bins that have values within a percentage of the maximum value. This can result in a variable number of time bins that can be used to represent a peak depending on the width of the peak. For example, time bins around the maximum value can be included in the peak when their values are within 25% of the maximum value. The width of the peak can be used when masking identified peaks in later iterations to identify other peaks.

[0271] In Figure 30 For example, a narrow peak such as peak 3004 can include 6 time bins around the maximum value, while a wider peak such as peak 3002 can include 12 time bins around the maximum value. Some embodiments can also exclude maximum values where the resulting peak would be too narrow. For example, a maximum value that would result in a peak that is only three time bins wide can be considered a transient peak rather than a reflection peak. These relatively narrow peaks can be excluded by the peak detection circuit because they are unlikely to be generated by photons reflected from an object at the particular distance in the surrounding environment. Using either of these methods, the peak detection circuit can identify a number of time bins to represent a peak, and the values in these time bins can be sent to the processor to calculate the distance to the reflecting object.

[0272] Each operation or execution by the peak detection circuit can detect the maximum value in the histogram memory. Without modification, each execution of the peak detection circuit would likely identify the same maximum value and return the same peak. Therefore, some embodiments can use a masking circuit that is coupled to the peak detection circuit to detect multiple peaks as the peak detection circuit makes multiple passes through the histogram memory. The masking circuit can use peaks previously detected by the peak detection circuit to cause the peak detection circuit to exclude these peaks from subsequent execution cycles. This allows each execution of the peak detection circuit to identify new peaks that are not considered the maximum peak in a previous iteration.

[0273] In Figure 30 which the initial peak 2904 can be a known peak or a previously detected peak. Thus, the masking circuit can provide a mask to the peak detection circuit to exclude time bins in the mask interval 2906. For example, the masking circuit can provide a value to the peak detection circuit that identifies the first 12 (or other number) of time bins in the histogram memory as time bins that should be excluded from the execution of the peak detection circuit. When the peak detection circuit executes, any maximum values identified in the mask interval 2906 can be excluded from the current execution cycle. For example, the peak detection circuit can skip time bins in the mask interval 2906. Instead of skipping time bins in the mask interval 2906, the peak detection circuit can instead ignore any values identified as maximum values within the mask interval 2906. For the initial peak 2904, the mask interval 2906 can be used by the peak detection circuit during the first execution of the peak detection circuit such that the initial peak 2904 is not identified as a peak corresponding to photons reflected from an object in the ambient environment.

[0274] When the initial peak 2904 is excluded from the execution of the peak detection circuit, the next maximum peak in the histogram memory can be identified. In Figure 30 the example, the peak 3004 can be identified as a peak during the first execution of the peak detection circuit. The peak 3004 can include a maximum value that is greater than any other remaining values in the histogram memory. The peak detection circuit can continue looping through the registers until the end of the histogram memory, then determine that the maximum value in the histogram memory corresponds to the peak 3004. The peak detection circuit can then determine a peak caused by the maximum value that includes, for example, 9 time bins around this maximum value in order to define the peak 3004. An indication of these time bins can then be communicated to the set of registers storing the identified peak and / or to the masking circuit so that the peak 3004 can be excluded from subsequent executions of the peak detection circuit.

[0275] Figure 31 A previously detected pulse that is masked for subsequent executions of the peak detection circuit is shown in accordance with some embodiments. After the peak 3004 is identified during the first execution of the peak detection circuit, which uses the mask 2906, the masking circuit can generate a mask interval 3102 that identifies time bins associated with the peak 3004. These time bins can be provided in addition to the time bins from the mask interval 2906 associated with the initial peak 2904. During the second execution of the peak detection circuit, the maximum values identified in the mask interval 2906 and the mask interval 3102 can be excluded from consideration. Alternatively, any time bins in the mask interval 2906 or the mask interval 3102 need not have their values examined for consideration as a maximum value and can be skipped by the peak detection circuit.

[0276] During a second execution of the peak detection circuit, the next largest remaining peak can be identified. In Figure 31 In the example of FIG. 30, peak 3008 can be identified by virtue of being the largest valid maximum value remaining in the histogram memory. As described above, the time interval around peak 3008 can be identified by the peak detection circuit and stored in a set of registers and / or communicated to the masking circuit to exclude the time interval associated with peak 3008 from consideration during subsequent executions of the peak detection circuit.

[0277] Figure 32 It is explained how the masking circuit can continue to generate new masks as additional peaks are identified by the peak detection circuit, according to some embodiments. After peak 3008 is detected, the masking circuit can generate mask interval 3202 identifying the time interval associated with peak 3008. The masking circuit can communicate mask interval 3202 to the peak detection circuit so that those time intervals are excluded from subsequent executions of the peak detection circuit. For example, during a third execution of the peak detection circuit, the time intervals associated with mask interval 2906, mask interval 3102, and mask interval 3202 can be excluded from searching for maximum values. As more peaks are identified during subsequent executions of the peak detection circuit, the number of time intervals that need to be considered by the peak detection circuit decreases. This can increase the speed at which subsequent executions of the peak detection circuit can cycle through the histogram memory, and can reduce the overall time for detecting multiple peaks in a measurement.

[0278] Figures 30 to 32 It is explained how the peak detection circuit can be executed as a recursive process, where results from previous executions are used to influence each subsequent execution. The masking process described above allows the peak detection circuit to be executed any number of times, and thus any number of peaks can be detected in the histogram memory. Some embodiments can detect a predefined number of peaks in each measurement. For example, for a system configured to find three peaks in each measurement, the peak detection circuit can be executed three times, with each execution detecting a new peak as a result of the previously detected peaks being masked. In Figure 32 In the example of FIG. 30, after peaks 3004 and 3008 are detected, the peak detection circuit can be executed a third time to detect peak 3006. After identifying three peaks for the current measurement, the peak detection circuit can complete its execution cycle for the current measurement.

[0279] Some embodiments need not identify a predetermined number of peaks, but can instead identify a number of peaks that meet a threshold. In general, a "threshold" can include a predetermined number of peaks as described above. Additionally, a "threshold" can include a variable number of peaks that meet certain criteria. Some embodiments can identify any peak that has a maximum value that exceeds a threshold. Some embodiments can identify any peak that has a maximum value that is within a threshold percentage of the maximum value of the maximum peak. For example, after identifying the maximum peak, an additional peak can be identified that has a maximum value that is within 50% of the maximum value of the maximum peak. Some embodiments can identify a predetermined number of peaks identified from a first detected peak in a predetermined time interval. For example, a peak detection circuit can identify a first peak, then identify peaks that occur within 50 time intervals after the first peak. In either of these cases, after meeting a threshold for identifying a pulse, the peak detection circuit can end its execution for the current measurement.

[0280] 2. Limiting of previous peaks

[0281] The examples described above use a mask interval to exclude time intervals from consideration by a subsequent execution of the peak detection circuit. However, some embodiments can use an alternative method to exclude consideration of previously identified peaks. For example, instead of identifying a particular time interval to exclude, a masking circuit can adjust a maximum threshold for peaks detected by the peak detection circuit. Using a threshold can provide the advantage that only a single value needs to be stored and / or updated between the masking circuit and the peak detection circuit for subsequent executions.

[0282] Referring back to Figure 30 An initial peak 2904 can be excluded by means of a threshold 3010 instead of (or in addition to) the mask interval 2906. The threshold 3010 can be set at or below the saturation limit 1902. The peak detection circuit can then exclude any peak that has a maximum value that meets or exceeds the threshold 3010. For example, when analyzing the initial peak 2904, the peak detection circuit can determine that at least one of the time intervals in the initial peak 2904 meets the saturation limit 1902. The peak action circuit can then identify time intervals around any time intervals that meet or exceed the threshold 3010 and eliminate consideration of those time intervals during the current peak execution period. The time intervals around time intervals that meet or exceed the threshold 3010 can be identified using any of the methods described above with respect to determining the mask interval 2906.

[0283] After setting threshold 3010 at or near the saturation limit 1902, a first execution of the peak detection circuit can identify peak 3004 using the maximum value method described above. In particular, the time interval in peak 3004 can include the maximum value in the histogram memory, and surrounding time intervals can be identified to bound the peak 3004 for both the processor and the masking circuit.

[0284] Referring again to Figure 31 , threshold 3110 can be set to exclude both initial peak 2904 and peak 3004. For example, threshold 3110 can be set at or below the maximum value found in peak 3004. As described above, when a maximum value is encountered that exceeds threshold 3010, the peak detection circuit can exclude both the maximum value and any time intervals surrounding the maximum value. Because each subsequent peak identified by the peak detection circuit will necessarily be smaller in magnitude than any of the previously identified peaks, threshold 3110 can continue to move downward to exclude its identified peaks. Peak 3008 can be identified by the peak detection circuit as a maximum value that does not satisfy or exceed threshold 3110. The time intervals surrounding peak 3008 can then be identified for both the processor and the masking circuit.

[0285] Threshold 3210 can be set to exclude the most recently identified peak 3008. Threshold 3210 can also exclude peak 3004 and initial peak 2904 because they were also previously identified and thus greater in magnitude than peak 3008. This process can continue iteratively until a threshold number of peaks have been identified. As described above with respect to recursive masking, this threshold can indicate a number of peaks that meet a predefined criterion, and / or any other type of threshold.

[0286] XIII. Peak Detection Circuit

[0287] Figure 33 A circuit for detecting multiple peaks in a histogram memory is shown in accordance with some embodiments. This circuit is similar to the histogram data path described above in Figure 8 and Figure 10 . This circuit can include a peak detection circuit 3306 that can communicate with the memory interface of the histogram memory 806. The peak detection circuit 3306 can operate as described above to loop through each of the registers in the histogram memory 806 to identify a maximum value and surrounding registers representing a time interval to bound each peak. The peak detection circuit 3306 can include one or more comparators to identify a value in the histogram memory 806 that is a maximum value, one or more registers to specify a mask and / or threshold that should be excluded from consideration, and an addressing unit to request information from the histogram memory 806.

[0288] The circuitry can also include a plurality of registers 3304 that store the peaks identified by the peak detection circuit 3306. The peaks can be stored as a series of time bins with the associated values read from the histogram memory 806. For example, the values from the histogram memory 806 can be copied into the plurality of registers 3304 to represent the identified peaks in the histogram memory. The plurality of registers 3304 can also represent the peaks as addresses or memory locations in the histogram memory 806. When sending the identified peaks to a processor for distance calculations, the registers 3304 can read the values from the histogram memory 806 and send the read values from the histogram memory 806 to the processor. In addition to storing the values for each time bin and / or referencing the time bins in the histogram memory 806, the registers 3304 can also store relative time information indicating the time location for each of the identified peaks. For example, the registers 3304 can store a number of relative time bins (e.g., time bin 45) that can be used to estimate the time of the time bin from the start of the excitation. Portions of the time bin can also be stored, for example, when using an interpolation filter. The plurality of registers 3304 can also be referred to herein as a "plurality of second registers" to distinguish them from the "plurality of first registers" in the histogram memory.

[0289] The plurality of registers 3304 can transfer the stored peaks to a processor 3308. The processor can correspond to the ranging system controller 250 in FIG. 1. Figure 2 In some embodiments, the processor 3308 can be an off-chip processor. For example, the processor 3308 can be implemented in an integrated circuit chip that is physically separate and distinct from the integrated circuit chip on which the peak detection circuit 3306 is implemented. The processor 3308 can receive each of the stored peaks in the plurality of registers 3304 for each measurement and can perform distance and / or timing calculations to determine the distance between the optical measurement system and a reflecting object in the surrounding environment. As an example, the processor 3308 can apply an interpolation filter to the histogram portion (or filtered portion) of the stored peaks. In some embodiments, the registers 3304 can send an unfiltered version of the data to the processor 3308. For example, the processor 3308 can receive raw data from the histogram memory 806 that has not been low-pass filtered or matched filtered. In other embodiments, the filtered data can actually be transferred to the processor 3308.

[0290] The masking circuit 3302 can use the stored peaks in the plurality of registers 3304 to cause the peak detection circuit 3306 to exclude peaks that have been detected from subsequent executions of the peak detection circuit 3306. In some embodiments, the masking circuit 3302 can send a range of time intervals that can be excluded from execution of the peak detection circuit 3306, including a range of addresses in the histogram memory 806. In some embodiments, the masking circuit 3302 can send a threshold such that peaks above the threshold can be excluded from execution of the peak detection circuit 3306. In some embodiments, the masking circuit 3302 can be integrated with the peak detection circuit 3306 such that the mask and / or threshold are stored internally in the peak detection circuit 3306. In other embodiments, the masking circuit 3302 and the peak detection circuit 3306 can separate their functionality into different areas on the integrated circuit.

[0291] This circuit can optionally include filters 3310 for applying one or more filters to the data values stored in the histogram memory 806. These filters can include low pass filters that smooth out transition signals, improve the signal-to-noise ratio (SNR), increase the width of any peaks, etc. These filters can also include matched filters configured to identify a burst pattern emitted from a light source. Any of the filters 3310 can be applied before, after, or during operation of the peak detection circuit 3306. For example, the peak detection circuit 3306 can operate on raw histogram data as received from the ALU 804. In some embodiments, the peak detection circuit 3306 can operate on registers in the histogram memory after one or more of the filters 3310 have been applied. Some embodiments can allow the peak detection circuit 3306 to process filtered data and then transfer unfiltered data corresponding to filtered peaks to an off-chip processor 3308.

[0292] XIV. Methods for Multi-Peak Detection

[0293] Methods for detecting multiple peaks in a histogram memory iteratively or in a recursive manner can include a top-level process that includes transmitting a burst, receiving a reflected signal and an ambient light signal, accumulating photon counts in a histogram memory, and identifying peaks in the histogram. These methods can also include a lower-level process that includes multiple executions of a peak detection circuit to incrementally detect peaks in the histogram memory. This section will first describe the lower-level process for multiple executions of the peak detection circuit. This section will then describe the top-level process for completing a measurement using the lower-level process.

[0294] Figure 34 A flowchart illustrating a method for detecting multiple peaks in a measurement according to some embodiments is described. This method can be performed by the peak detection circuit described above.

[0295] At block 3402, the method can begin by cycling through the histogram memory to identify a maximum peak. For example, the peak detection circuit can continuously send addresses or address ranges to the histogram memory to retrieve values stored in the histogram memory. Each value retrieved from the histogram memory can be compared to the stored maximum value to locate the overall maximum value in the histogram memory. Using the above-described method, the peak detection circuit can then define a peak around the maximum value in the histogram memory, which can include a number of time intervals around the time interval in the histogram memory with the maximum value.

[0296] At block 3406, the method can optionally determine whether the peak detected in the current execution of the peak detection circuit and the peaks detected in previous executions of the peak detection circuit meet or exceed a threshold. As described above, this threshold can include a predefined number of peaks and / or a variable number of peaks that meet a predefined criterion, such as peaks falling in a predetermined time interval, peaks within a threshold percentage of the maximum value of the maximum peak, etc. If capping is not performed, the method can continue to block 3410. In some implementations, instead of capping, block 3406 can determine whether the number of peaks has reached a maximum.

[0297] At block 3408, if the detected peak meets or exceeds the threshold, the method can continue and send the stored peak to a processor for distance and / or timing calculations.

[0298] At block 3410, if the number of detected peaks still does not meet or exceed the threshold, the method can continue by storing the maximum peak from the current execution of the peak detection circuit with any peaks detected from previous executions of the peak detection circuit.

[0299] At block 3412, the method can include generating a mask and / or threshold to exclude each of the stored peaks from subsequent executions of the peak detection circuit. As described above, the mask and / or threshold can cause the peak detection circuit to ignore maximum values that fall within a range of time intervals belonging to a previously identified peak. The mask and / or threshold can also cause the peak detection circuit to ignore maximum values that meet or exceed a threshold. The method can then continue at block 3402 and again cycle through the histogram memory to identify another maximum peak other than the previously identified maximum peak.

[0300] Figure 35A method for detecting multiple peaks using an optical measurement system is shown in accordance with some embodiments. At block 3502, the method can include transmitting one or more pulse trains in one or more first time intervals as part of an optical measurement. Each of the first time intervals can correspond to an excitation time interval as described above, and each of the first time intervals can correspond to one of the transmitted pulse trains. These pulse trains can be transmitted by a light source of the optical measurement system and can each include one or more individual pulses.

[0301] At block 3504, the method can also include detecting photons from the one or more pulse trains and ambient light. Photons from the ambient light can also be detected. The pulse trains and ambient light can be detected using multiple photodetectors on a photosensor. The photodetectors can be implemented using single photon avalanche diodes (SPADs). When a photon is received, the photodetectors can generate a signal, and a threshold circuit can generate a positive signal to indicate that a photon was received. An ALU can aggregate these positive signals during an ALU clock period to generate a photon count during the ALU clock period.

[0302] At block 3506, the method can additionally include accumulating photon counts from the photodetectors into registers to represent a histogram of photon counts in a plurality of first registers. The plurality of first registers can include registers in the SRAM of the histogram data path as described above. Each of the first time intervals can be subdivided into a plurality of first time bins for the histogram. A corresponding time bin in each of the one or more first time intervals can be accumulated in a single register of the first plurality of registers. Each of the first time intervals can represent an excitation, and the one or more first time intervals together can represent a measurement for the optical measurement system. Each of the first time intervals can be delimited by a start signal or an excitation signal of a first register in the histogram to which memory representing the histogram is reset back. The photon counts can be aggregated by an arithmetic logic circuit in the data path, such as the ALU described above.

[0303] At block 3508, the method can further include identifying multiple peaks in the histogram represented by the first plurality of registers by multiple executions of a peak detection circuit. Each execution of the peak detection circuit can identify a maximum peak in the histogram. As described above, the peak detection circuit can step through the time bins in the histogram memory to identify a maximum value, and then identify a plurality of time bins representing a peak having the maximum value. In addition, peaks identified as maximum peaks during a previous execution of the peak detection circuit can be excluded from being identified as maximum peaks during a subsequent execution of the peak detection circuit. These previously identified peaks can be excluded using a time bin mask and / or a threshold as described in detail above.

[0304] XV. Calculating a threshold with an integration register

[0305] Some of the above embodiments describe systems and methods for detecting one or more peaks in a measurement in a recursive manner or iteratively. These recursive or iterative methods can be suitable for identifying peaks without additional information about the ambient environment in which the measurement is taken. In particular, no information about ambient light levels, background noise, reflected light intensity, etc. is required. Rather, these methods use the iterative or recursive circuit described above to continuously identify the largest remaining unidentified peak in the measurement until a criterion has been met, such as identifying a predetermined number of peaks in the measurement.

[0306] Instead of using an iterative or recursive method, some embodiments can actually use information measured from the ambient environment to calculate the threshold. For example, the background noise level can be measured from the ambient environment using one or more of the integration registers described above. Because the integration registers represent the total photon counts received during the measurement, this total photon count can be divided by the total time during which the integration registers were enabled to calculate the background noise level, which represents ambient light photons received from the ambient environment at or near the wavelength of the LIDAR light source. Some embodiments can optionally remove any reflected light peaks caused by one or more pulse trains emitted by the optical measurement system from the calculation of the background noise level. This background noise level can then be used to calculate a threshold for detecting peaks in the measurement from which the threshold was derived.

[0307] Several technical advantages can be achieved by calculating a threshold for detecting peaks in a measurement. For example, the threshold allows each measurement to set a measurement-specific threshold based on the background noise level present during the measurement. It also allows a single threshold to be used for detecting multiple peaks in a measurement, and thus only needs to be calculated once. Furthermore, a single threshold allows the peak detection circuit to make a single pass through the histogram memory. Making multiple passes through the histogram memory requires additional time and power for each pass. Instead of requiring a pass through the histogram memory for each identified peak, these methods allow multiple peaks to be identified with only a single pass, thereby reducing the time and power required to identify multiple peaks.

[0308] The threshold for identifying multiple peaks can be calculated using several different techniques. For example, an estimate of the background noise level can be obtained or calculated by the optical measurement system. This estimate of the background noise level can then be used to set the threshold as described in more detail below. Estimating the background noise level can also be achieved using several different techniques. Some embodiments can use a statistical sampling of the light received between excitations in the measurement to estimate the background noise level. Other embodiments can utilize the integration registers described above.

[0309] A. Estimating Background Noise

[0310] Figure 36A graph showing light detected at an optical measurement system resulting from a plurality of excitations is shown in accordance with some embodiments. In this example, each of the excitations can receive at least a first peak 3606 and a second peak 3608. Note that additional peaks can continue to be received beyond the right side of the graph over time, which is not explicitly shown in Figure 26 The first peak 3606 and / or the second peak 3608 can result from photons from one or more pulse trains previously emitted from a light source of the optical measurement system. In some environments, the first peak 3606 and / or the second peak 3608 can also result from other reflections or light sources in the ambient environment.

[0311] As described above, some embodiments can apply various filters to the contents of the histogram memory prior to identifying peaks in the histogram. For example, a low pass filter can be applied to the histogram data. Some embodiments can additionally or alternatively apply a matched filter to the histogram data. These embodiments for identifying a plurality of peaks with a threshold can be used on both filtered and unfiltered data. Thus, Figure 36 The graph in

[0312] The vertical axis of the graph can represent photon counts received by one of the photosensor array. The horizontal axis can represent time. These photons can have been received over a plurality of excitations to store a digitized representation of the signal histogram memory. Thus, Figure 36 Each of the vertical bars in Figure 36 The values in each of the time bins shown in the histogram memory in

[0313] As described above, some embodiments can include a single integration register, while other embodiments can include a plurality of integration registers. The integration register configuration is compatible with these methods for estimating a background noise level and generating a peak detection threshold. Thus, the specification can use the term "integration register" to refer to a single integration register and to refer to a plurality of integration registers that provide an aggregated sum of photon counts within a measurement.

[0314] The first peak 3606 can be associated with a first window 3602 that includes a number of time intervals as described above. The second peak 3608 can also be associated with a second window 3604 in the same manner. The time intervals in the first window 3602 and the second window 3604 can thus be associated with the first peak 3606 and the second peak 3608, respectively. The remaining time intervals outside of the first window 3602 and the second window 3604 can be referred to as background time intervals 3610. The background time intervals 3610 can represent background noise received during each of those time intervals since they are not associated with a reflected pulse train or other strong light source or reflection that is part of the measurement.

[0315] The background noise level can be determined by the values in the background time intervals 3610. For example, a standard deviation analysis of the histogram data can be used to estimate the background noise level. This analysis can remove outlier time intervals that occur in the first window 3602 and the second window 3604 and average the values found in the background time intervals 3610 to calculate the background noise level. Alternatively, a sample can be obtained from the histogram values of the background time intervals 3610 outside of the first window 3602 and the second window 3604 as an estimate of the background noise.

[0316] Instead of relying solely on the contents of the histogram memory, some embodiments can additionally or alternatively use the total photon count of the integration register to calculate the background noise level. The total value stored in the integration register can provide a more accurate and computationally inexpensive method of estimating the background noise level in the measurement. Because the integration register stores the overall sum of all photons received by the photosensor in a known time interval, this value can be divided by the total time interval during which the integration operation occurs to estimate the background noise. For example, the number of clock cycles of the periodic signal used to time the integration ALU and / or integration register can be tracked along with the total photon count in the integration register. The total photon count can then be divided by the number of clock cycles to calculate the background noise level.

[0317] Some embodiments can also compensate for any peaks 3606, 3608 recorded by the integration register when calculating the background noise level. It should be noted that, Figure 36Not drawn to scale with respect to time. The actual return pulse constitutes substantially only a small fraction of the total integrated value recorded in the integration register. Thus, the photons received due to the return pulse can be considered negligible compared to the total number of photons received due to background noise throughout the measurement. The photons in the peak can depend on the size of the windows 3602, 3604 to the extent that they affect the estimation of the background noise level compared to the total integration time. If the size of the windows 3602, 3604 is small (e.g., less than 5%) compared to the total integration time, their effect on the background noise estimation can be considered negligible, and the total signal photon count can be used to estimate the background noise level.

[0318] However, if the size of the windows 3602, 3604 constitutes a non-negligible portion of the total integration time (e.g., more than 10%), an additional step can be taken to more accurately estimate the background noise level. For example, the photons received during the windows 3602, 3604 can be subtracted from the value in the integration register. The photon counts in the histogram register during the time interval in the windows 3602, 3604 can be subtracted from the value in the integration register. Additionally, the length of the windows 3602, 3604 can be subtracted from the total integration time. The modified value for the total photon count in the integration register can then be divided by the modified integration time to better estimate the background noise value. This can allow the optical measurement system to reduce the impact that multiple strong peaks would otherwise cause when calculating the background noise level.

[0319] Figure 37 The estimated background noise level 3610 is illustrated compared to the received photon counts in the histogram memory according to some embodiments. Using any of the processes described above, the background noise level 3712 can be calculated for the measurement. Optionally, the photon counts received during the first interval 3602 and / or the second interval 3604 can be removed from the estimation procedure by subtracting the photon counts received during the first window 3602 and / or the second window 3604 as described in the sections above. This can result in an estimated background noise level 3712 that is very close to the actual average value of the background noise level stored in the background time interval 3610.

[0320] The estimated background noise level 3712 can be used by the optical measurement system for several different signal processing procedures. In some embodiments, the estimated background noise level 3712 can be subtracted from each of the peaks 3606, 3608 before they are analyzed for distance measurement. For example, the estimated background noise level can be subtracted from each time bin in the histogram register that falls within the time window associated with the identified peak, such as the time bins in the first window 3602 and the second window 3604. Subtracting the background noise level can reduce the photon counts in each of the time bins associated with the identified peak, which can provide a more accurate magnitude measurement for the peak.

[0321] Some embodiments can implement the histogram data path and the integration data path in an integrated circuit chip that can detect peaks in the histogram memory and transfer information describing those peaks to a separate processor for distance calculation, data visualization, and other data analysis operations. Some implementations can transfer information about the signal strength of the peaks 3606, 3608, and the strength (i.e., magnitude) of these peaks can be used in addition to their temporal location. The estimated background noise level 3712 can be used as a signal floor and subtracted from the peaks 3606, 3608 before the peak data is transferred from the integrated circuit. This can provide a more accurate characterization of the pulse magnitude by removing the background noise level before analyzing the shape and / or height of those peaks 3606, 3608.

[0322] B. Setting a Detection Threshold

[0323] Figure 38 A graph is shown in which the estimated background noise can be used to set a signal threshold for detecting peaks in the histogram memory, according to some embodiments. After estimating the background noise level 3712, the estimate can be used as a baseline for setting a threshold 3802 for detecting peaks in the histogram memory, such as the peaks 3606 and / or 3608. By using the background noise level 3712 as a baseline, the threshold can be set such that any background noise identified in the background time bins 3610 can be excluded as a peak by setting the threshold a distance above the background noise level 3712.

[0324] Some embodiments can start with the estimated background noise level 3712 and add a predetermined percentage of the background noise level 3712 to calculate the desired threshold. The predetermined percentage by which the background noise level 3712 can be increased can be 10%, 20%, 30%, 40%, 50%, 75%, 100%, 125%, 150%, and so on. For example, Figure 38The threshold 3802 is set by increasing the background noise level 3712 by approximately 125%. This allows the threshold for each measurement to be scaled according to the magnitude of the background noise level 3712. In environments with more background noise, the threshold 3802 can be scaled up to provide a greater margin in noisy environments.

[0325] Instead of increasing the background noise level 3712 by a percentage, some embodiments can also add a predetermined value to the background noise level 3712 to produce the threshold 3802. For example, Figure 38 The threshold 3802 in Equation 3 can be set by adding a predetermined photon count to the background noise level 3712. This can provide a constant margin above the background noise level 3712 that is constant with respect to various background noise levels.

[0326] Instead of using an estimate of the average background noise level as described above, some embodiments can find the maximum value in the background time interval 3610 and generate a threshold based on the maximum value. For example, the maximum value can be identified in the background time interval 3610, and the threshold can be set based on the maximum value instead of the average or mean value using any of the methods described above. This can result in a threshold 3804 that is higher than the threshold 3802 based on the average or mean value. The higher threshold 3804 can ensure that the calculated margin 3808 excludes all of the background time interval 3610 in the measurement.

[0327] XVI. Single-Pass Peak Detection

[0328] After a threshold has been determined for a measurement, the threshold can be used by a peak detection circuit to make a single pass through the histogram memory to identify any peaks in the measurement. The iterative and / or recursive methods described above incrementally identify peaks by generating thresholds, and thus can require multiple passes through the histogram memory to identify multiple peaks. In contrast, these embodiments that pre-compute thresholds can use a single pass through the histogram memory to identify multiple peaks.

[0329] A. Detecting Peaks

[0330] Referring again to Figure 38 , any of the depicted thresholds can be used to identify peaks. To identify one or more peaks, a peak detection circuit can make a pass through the histogram memory. As used herein, the term "pass" can refer to an operation or set of operations that successively accesses memory locations in the histogram memory and evaluates the photon counts stored in the memory locations against a threshold. For example, a pass through the histogram memory can include providing an address or range of addresses to the histogram memory, retrieving photon counts from those addressed locations, and / or comparing those photon counts to one or more thresholds.

[0331] In Figure 38 In the example of FIG. 36, each of the time bins represented by the vertical bars in the graph can represent a bin in the histogram memory. As described above, these bins can be referred to as "a plurality of first registers" of a histogram storing counts of photons received within a plurality of firings. The values of these memory bins depicted by the vertical bars in the graph can be sequentially accessed in the histogram memory and compared to a threshold value, such as threshold 3804. When a memory bin contains a value that exceeds the threshold 3804, that memory bin can be identified as belonging to a peak. For example, nine of the middle memory bins in peak 3606 (or another number) can be identified as belonging to a peak because the counts of photons stored in each of those memory bins exceed threshold 3804.

[0332] After one or more memory bins in the histogram memory have been identified as belonging to a peak, a peak window around those memory bins can be determined using the techniques described in detail above. For example, after the central memory bin of peak 3606 is identified as exceeding threshold 3804, first window 3602 can be determined by various methods described above. These methods can include designating a predetermined number of time bins around a peak as part of a first window 3602, designating surrounding time bins that exceed a lower threshold as part of a first window 3602, and so on.

[0333] B. Off-chip transmission of peaks

[0334] The peak detection methods described above can be performed on an integrated circuit that includes a histogram memory, a peak detection circuit, and a threshold detection circuit. This integrated circuit can be implemented in a single chip package that is separate and distinct from a processor that analyzes the detected peaks for distance calculations, image generation, image processing, and so on. Thus, some embodiments can detect peaks in a histogram memory, designate time bin windows that include those peaks, and transmit information describing those peaks from the integrated circuit to a separate processor.

[0335] Figure 39 A peak window detected by threshold operations that can be off-chip transmitted to a processor according to some embodiments is shown. In this example, a first window 3602 and a second window 3604 that include the detected peaks from Figure 38 are extracted from the rest of the histogram memory. Recall that the time windows that include peaks can be relatively small compared to the overall time represented in the histogram memory that corresponds to firings and / or measurements. Thus, on-chip peak detection greatly reduces the amount of memory that can need to be streamed from the integrated circuit to the processor.

[0336] Some embodiments can read from the histogram memory values identified as belonging to a peak and transfer those values to an off-chip processor. For example, a series of numbers representing the photon counts for a time bin belonging to a peak 3606 can be sent to the processor. Additionally, some embodiments can send an identifier that provides relative timing information for the start / end of a detected peak. For example, a time bin number, a memory location address, or other identifier can be used to specify where an identified peak starts / ends in a measurement.

[0337] As described above, depending on the embodiment, data values in the histogram memory representing identified peaks can be transferred off-chip to a processor in filtered and / or unfiltered format. For example, raw histogram values representing photon counts received from a light sensor can be sent to the processor. If desired, any filtering that occurs on the integrated circuit can then be replicated by the processor. This allows the processor to use unfiltered data while still allowing the processor to filter the unfiltered data separately if any operations require filtered data. Some embodiments can instead or additionally send data that has been filtered using any of the filtering options described above, including low pass filters, matched filters, and the like.

[0338] XVII. Threshold and Peak Detection Circuitry

[0339] Figure 40 Circuitry for calculating a threshold and detecting one or more peaks in a histogram memory is shown according to some embodiments. This example shows how a histogram data path and an integration data path can be combined in the same integrated circuit. The histogram data path can include any of the circuit elements depicted in FIG. 8, including the histogram memory 806, the clock 810, the excitation signal 814, the measurement signal 812, the periodic signal 560, 808, and the like. The histogram data path can include any of the circuit elements depicted in FIG. 8, including the histogram memory 806, the clock 810, the excitation signal 814, the measurement signal 812, the periodic signal 560, 808, and the like. Figure 8 The integration data path can include any of the circuit elements depicted in FIG. 10, including the integration register 1004, the clock 1003, the periodic signal 1011, the integration signal 1008, and the like. The integration register 1004 can also include a plurality of individual registers as depicted in FIG. 10. In this embodiment, the integration data path and the histogram data path can share the ALU 804. For example, a first stage of the ALU 804 can accumulate a positive signal 816 from a light detector, and one or more second stages of the ALU 804 can add this value to a current value 820 for a time bin in the histogram memory 806 and to a current value 1010 in the integration register 1004. The integration signal 1008 can be timed independently of the measurement signal 812 and / or the excitation signal 814. Figure 10 Figure 12 The integration data path can include any of the circuit elements depicted in FIG. 10, including the integration register 1004, the clock 1003, the periodic signal 1011, the integration signal 1008, and the like. The integration register 1004 can also include a plurality of individual registers as depicted in FIG. 10. In this embodiment, the integration data path and the histogram data path can share the ALU 804. For example, a first stage of the ALU 804 can accumulate a positive signal 816 from a light detector, and one or more second stages of the ALU 804 can add this value to a current value 820 for a time bin in the histogram memory 806 and to a current value 1010 in the integration register 1004. The integration signal 1008 can be timed independently of the measurement signal 812 and / or the excitation signal 814.

[0340] ​When the measurement is complete, the threshold detection circuit 4002 can use the various methods described above to calculate one or more thresholds for peak detection. For example, the threshold detection circuit 4002 can receive or aggregate the total photon counts from the integration register 1004 to estimate a background noise level. Alternatively, the threshold detection circuit 4002 can sample or use other statistical methods to derive a background noise level from the contents of the histogram memory 806 from background time intervals that do not correspond to reflection peaks. The threshold detection circuit 4002 can scale the background noise level or add a value to the background noise level to produce one or more thresholds.

[0341] The threshold detection circuit 4002 can transmit the one or more calculated thresholds to the peak detection circuit 4004. The peak detection circuit can use the one or more thresholds calculated by the threshold detection circuit 4002 to make a pass through the histogram memory 806 to identify one or more peaks in the histogram. Some embodiments can use only a single pass through the histogram memory 806 to identify multiple peaks. The peak detection circuit 4002 can then use the methods described above to identify a window or interval around the identified peaks.

[0342] The elements of the histogram data path, the elements of the integration data path, the threshold detection circuit 4002, and the peak detection circuit 4004 can be implemented in a first integrated circuit 4020. For example, the first integrated circuit 4020 can include each of these individual circuits implemented in a unit of semiconductor material that is physically separate and distinct from other integrated circuit chips in the optical measurement system.

[0343] In some embodiments, the peak detection circuit 4004 can transmit the intervals representing the peaks to an off-chip processor 4008. The off-chip processor 4008 can correspond to the ranging system controller 250 in FIG. 1. Figure 2

[0344] ​In some embodiments, the peak detection circuit 4004 can transmit the intervals representing peaks to the off-chip processor 4008 as they are detected by the peak detection circuit 4004. Other embodiments can store each of the identified peaks and transmit the peaks together to the off-chip processor 4008 after they have all been detected. For example, a second set of registers 4006 can store information representing the identified peaks as they are identified by the peak detection circuit 4004. The second set of registers 4006 can store ranges of addresses in the histogram memory 806, values from the histogram memory 806, numbers of time bins from the histogram memory 806, and so forth. The second set of registers 4006 can be significantly smaller in size than the histogram memory 806. While the histogram memory 806 can store the entirety of a histogram of photon counts, the second set of registers 4006 can only need to store information (or reference information) representing a limited number of peaks in the histogram. Thus, because the information stored in the second set of registers 4006 is significantly smaller than the information stored in the histogram memory 806, the bandwidth and memory required to transmit this information between the first integrated circuit 4020 and the second integrated circuit 4022 can be greatly reduced by these embodiments.

[0345] While depicted as separate circuit elements in FIG. 40, the threshold detection circuit 4002, the peak detection circuit 4004, and / or the second set of registers 4006 can be implemented in any combination without limitation. For example, the threshold detection circuit 4002 can be an integrated part of the peak detection circuit 4004 without any functional separation between the two circuits. Alternatively, the threshold detection circuit 4002 and the peak detection circuit 4004 can be functionally separated in the data path. Figure 40

[0346] XVIII. Methods for threshold peak detection

[0347] Figure 41 A method for detecting multiple peaks using an optical measurement system is shown in accordance with some embodiments.

[0348] At block 4102, the method can include transmitting one or more pulse trains as part of an optical measurement in one or more first time intervals. Each of the first time intervals can correspond to an excitation time interval as described above, and each of the first time intervals can correspond to one of the transmitted pulse trains. These pulse trains can be transmitted by a light source of the optical measurement system and can each include one or more individual pulses.

[0349] ​At block 4104, the method can also include detecting photons from the one or more pulse trains and photons. Photons from ambient light can also be detected. The pulse trains and ambient light can be detected using multiple photodetectors on the photosensor. The photodetectors can be implemented using single photon avalanche diodes (SPADs). When a photon is received, the photodetector can generate a signal, and a threshold circuit can generate a positive signal to indicate that a photon was received. The ALU can aggregate these positive signals during the ALU clock period to generate a photon count during the ALU clock period.

[0350] At block 4106, the method can additionally include accumulating the photon counts from the photodetectors into registers to represent a histogram of photon counts in a plurality of first registers. The plurality of first registers can include registers in the SRAM of the histogram data path as described above. Each of the first time intervals can be subdivided into a plurality of first time bins for the histogram. A corresponding time bin in each of the one or more first time intervals can be accumulated in a single register in the first plurality of registers. Each of the first time intervals can represent a shot, and the one or more first time intervals together can represent a measurement for the optical measurement system. Each of the first time intervals can be delimited by a start signal or a shot signal for a first register in the histogram to which memory is reset back. The photon counts can be aggregated by an arithmetic logic circuit in the data path, such as the ALU described above. Accumulating the photon counts from the photodetectors can be performed on the first integrated circuit. The plurality of first registers can also reside on the first integrated circuit.

[0351] At block 4108, the method can further include providing a threshold for identifying one or more peaks in the histogram. In some embodiments, the threshold can include a default threshold that does not require any computation during the current measurement. For example, the threshold can be reused from a previous measurement or can be calculated based on the threshold used in a previous measurement. The threshold can also be the threshold used unless a threshold is calculated specific to the current measurement.

[0352] In some embodiments, a background noise level can be determined and used to calculate the threshold. The background noise level can be determined using an integration register that accumulates the total photon counts present in a time interval that overlaps with the measurement. For example, the total photon counts can be divided by the time during which the integration register was enabled. Multiple integration registers can be used and aggregated to calculate the total photon counts. The background noise level can be removed from any identified peaks later. Additionally, the background noise level can be used to generate the threshold. For example, the threshold can be calculated such that it is a value above the background noise level or a predetermined percentage of the value. These operations can be performed using any of the methods described above, including by Figure 40The peak detection circuit 4004 and the threshold detection circuit 4002 perform the method described above with respect to the peak detection circuit 4004 and the threshold detection circuit 4002. The threshold can be provided by a circuit implemented on a first integrated circuit having a plurality of first registers. The integration registers can also be implemented on the first integrated circuit.

[0353] At block 4110, the method can further include identifying one or more peaks represented in the histogram by traversing the first plurality of registers with the threshold. As described above, the traversal of the first plurality of registers can include an operation or set of operations that continuously retrieve values from the histogram memory and compare them to the threshold. Identifying the peaks can include identifying values that exceed the threshold, as well as identifying a time window or interval around the values that exceed the threshold. The time window can include a plurality of values in a time interval of the histogram memory and an indication of when the interval occurs in the histogram memory. Some embodiments can store the one or more peaks in a separate set of registers, such as a second set of registers 4006, and can transmit the one or more peaks to an off-chip processor in filtered and / or unfiltered format. The peaks can be identified on the first integrated circuit.

[0354] At block 4112, the method can further include sending information describing the one or more peaks detected using the threshold to a processor on a second integrated circuit. As depicted above in Figure 40 the processor can include an off-chip processor implemented on a separate integrated circuit. The first integrated circuit can be physically separate and distinct from the second integrated circuit. The processor can be configured to identify a peak in the one or more peaks caused by a burst of pulses reflected from an object of interest in the surrounding environment. The processor can also be configured to perform distance calculations, generate images, and / or perform other processing functions on the information describing the one or more peaks sent from the first integrated circuit. The information describing the one or more peaks can include values from the plurality of first registers representing counts of photons received in a time interval of the histogram. The information can also include timing information indicating when the counts of photons were received relative to measurements made by the optical measurement system.

[0355] XIX. Additional Embodiments

[0356] While some embodiments disclosed herein focus on application of light ranging in the context of 3D sensing for automotive use cases, the systems disclosed herein can be used in any application without departing from the scope of the disclosure. For example, the systems can have a small or even miniature form factor that enables several additional use cases, such as for solid state light ranging systems. For example, the systems can be used for 3D cameras and / or depth sensors within devices such as mobile phones, tablets, laptops, desktop PCs, or other peripheral and / or user interface devices. For example, one or more embodiments can be employed within a mobile device to support facial recognition and facial tracking capabilities, eye tracking capabilities, and / or 3D scanning for objects. Other use cases include forward-facing depth cameras for augmented and virtual reality applications in mobile devices.

[0357] Other applications include deploying one or more systems on board vehicles such as airplanes, helicopters, drones, and the like. Such instances can provide 3D sensing and depth imaging to aid in navigation (autonomously or otherwise) and / or to generate 3D maps for later analysis, such as to support geophysical, architectural, and / or archaeological analysis.

[0358] Systems can also be mounted to fixed objects and structures such as buildings, walls, utility poles, bridges, scaffolding, and the like. In such cases, the systems can be used to monitor outdoor areas such as manufacturing facilities, assembly lines, industrial facilities, construction sites, excavation sites, roadways, railroads, bridges, and the like. Further, the systems can be mounted indoors and used to monitor movement of individuals and or objects within a building, such as movement of inventory within a warehouse or people, luggage, or cargo within an office building, airport, train station, and the like. As will be appreciated by one of ordinary skill in the art having the benefit of the present disclosure, many different applications of light ranging systems are possible, and thus, the examples provided herein are provided for illustrative purposes only and should not be interpreted as limiting use of such systems to only the explicitly disclosed examples.

[0359] XX. Computer System

[0360] Any of the computer systems or circuits mentioned herein can utilize any suitable number of subsystems. Subsystems can be connected via an system bus 75. As examples, subsystems can include an input / output (I / O) device, a system memory, a storage device, and a network adapter (e.g., Ethernet, Wi-Fi, etc.) that can be used to connect the computer system to other devices (e.g., an engine control unit). The system memory and / or storage device can embody a computer readable medium.

[0361] A computer system can include a plurality of the same components or subsystems, each of which are the same as one another but for possibly undergoing different processing functions or being located in different parts of the computer system. By way of example, one or more processing units can be the same as each other but for processing different sets of data in a parallel fashion. The computer system can be communicably coupled to servers, computers, routers, network PCs, and the like via networks.

[0362] Aspects of the embodiments can be implemented using hardware circuitry (e.g., an application specific integrated circuit or a field programmable gate array) and / or using computer software with a generally programmable processor in a modular or integrated manner. As used herein, a processor can include a single-core processor, multiple-core processor, or multiple processors on a single integrated chip, multiple processors on a single circuit board or networked, and specialized hardware. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will know and appreciate other ways and / or methods to implement embodiments of the present application using hardware and a combination of hardware and software.

[0363] Any of the software components or functions described in this application can be implemented as software code to be executed by a processor using any suitable computer language such as, for example, Java, C, C++, C#, Objective-C, Swift, or scripting language such as Perl or Python. The software code can be stored as a series of instructions or commands on a computer readable medium for storage and / or transmission. A suitable non-transitory computer readable medium can include random access memory (RAM), a read only memory (ROM), a magnetic medium, optical medium, or other suitable medium. The computer readable medium can be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.

[0364] Such programs can also be encoded and transmitted using carrier signals adapted to carry digital or analog data, including sounds, images, and / or video information, in compressed or uncompressed form. As such, a computer readable medium can include a computer readable storage medium or computer readable signal medium. A computer readable storage medium can be, for example, but not limited to, random access memory (RAM), read only memory (ROM), electrically erasable programmable read only memory (EEPROM), flash memory, compact disc read only memory (CD-ROM), digital versatile disc (DVD), or other optical disk storage, magnetic disk storage, or other magnetic storage devices that are used to store and / or transfer information. A computer readable storage medium can be any combination of such storage mediums. A computer readable signal medium can be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport program code. These computer program products can also be loaded onto a computer and / or other programmable apparatus to cause a series of operations to be performed on the computer and / or other programmable apparatus to produce a computer implemented process, such that the computer program code which executes on the computer and / or other programmable apparatus provides steps which implement the functions specified in the flow diagrams and / or illustrations described herein.

[0365] Any of the methods described herein can be wholly or partially performed with a computer system including one or more processors, which can be configured to perform the steps thereof. Thus, embodiments can be directed to computer systems configured to perform the steps of any of the methods described herein, potentially with different components performing each of the steps or groups of steps. Although presented as numbered steps in a figure, the steps of methods herein can be performed at the same time or at different times than indicated, or in different orders than presented. Further, aspects of each step can be used with aspects of other steps. Additionally, not all of the steps can be used, or some of the steps can be used more than once. Further, some of these steps can be optional. Additionally, any of the steps of any of the methods can be performed with modules, units, circuits, or other means for performing these steps.

[0366] The particular embodiments described above can be combined in any suitable manner. Other embodiments of the application, however, can relate to particular embodiments of the individual aspects or particular combinations of these individual aspects.

[0367] The above description of example embodiments of the application has been presented for the purpose of illustration and description. It is not intended to be exhaustive or to limit the application to the precise form described, and many modifications and variations are possible in light of the above teachings.

[0368] The recitation "a," "an" or "the" is intended to mean "one or more" unless specifically indicated to the contrary. The use of "or" is meant to encompass both "and" and "exclusive or" unless specifically indicated to the contrary. Reference to a "first" component does not necessarily imply that a second component must be provided. Further, unless specifically stated otherwise, reference to a "first" or "second" component does not limit the referenced component to a particular position or orientation. The term "based on" is meant to indicate "based, at least in part, on."

[0369] All patents, patent applications, publications, and descriptions mentioned herein are incorporated by reference in their entirety for all purposes. None is admitted to be prior art.

Claims

1. An optical measurement system, comprising: a light source configured to transmit one or more pulse trains in one or more first time intervals as part of an optical measurement, wherein each of the one or more first time intervals contains one of the one or more pulse trains; a light sensor comprising one or more photodetectors configured to detect photons from the one or more pulse trains; a first integrated circuit comprising: a plurality of first registers on a first data path that accumulate counts of photons received from the one or more photodetectors during the one or more first time intervals to represent a histogram of counts of photons received during the one or more first time intervals, each of the plurality of first registers corresponding to a time bin in the histogram; one or more integration registers on a second data path that accumulate the counts of photons from the one or more photodetectors in second time intervals that overlap at least portions of the one or more first time intervals; a threshold detection circuit configured to provide a threshold for identifying one or more peaks in the histogram, wherein the threshold detection circuit is further configured to calculate the threshold using one or more values in the one or more integration registers; and a peak detection circuit configured to iterate through the plurality of first registers and use the threshold to identify the one or more peaks represented in the histogram; and a second integrated circuit comprising a processor, wherein the first integrated circuit is configured to send information describing the one or more peaks detected using the threshold to the processor on the second integrated circuit.

2. The optical measurement system of claim 1, wherein the threshold detection circuit is configured to use an existing threshold.

3. The optical measurement system of claim 1, wherein the threshold detection circuit is configured to calculate the threshold based on a background noise level present during the one or more first time intervals.

4. The optical measurement system of claim 1, wherein the threshold detection circuit is further configured to calculate a background noise level by dividing a total count of photons in the one or more integration registers by a duration during which the one or more integration registers are enabled.

5. The optical measurement system of claim 4, wherein the duration during which the one or more integration registers are enabled is determined based on a total number of clock cycles during which the one or more integration registers are enabled.

6. The optical measurement system of claim 1, wherein the threshold detection circuit is further configured to calculate a background noise level by: identifying one or more time intervals in the histogram representing the one or more peaks; and subtracting photon counts in the one or more time intervals from total photon counts in the one or more integration registers.

7. The optical measurement system of claim 1, further comprising a plurality of second registers configured to store the one or more peaks identified by the peak detection circuit.

8. The optical measurement system of claim 7, wherein each of the one or more peaks is stored as: a time interval window representing a time interval around the peak in the histogram; and a relative time at which the peak appears in the histogram.

9. The optical measurement system of claim 1, wherein the first integrated circuit is implemented on a physically separate and different chip from a chip on which the second integrated circuit is implemented.

10. The optical measurement system of claim 1, wherein the one or more peaks are sent to the processor without applying a filter to values representing the one or more peaks in the histogram.

11. A method of using an optical measurement system, the method comprising: transmitting one or more pulse trains as part of an optical measurement in one or more first time intervals, wherein each of the one or more first time intervals contains one of the one or more pulse trains; detecting photons from the one or more pulse trains using one or more photodetectors; accumulating photon counts from the one or more photodetectors into a plurality of first registers on a first integrated circuit to represent a histogram of photon counts received during the one or more first time intervals, each of the plurality of first registers corresponding to a time interval in the histogram; accumulating the photon counts from the one or more photodetectors in a second time interval overlapping at least a portion of the one or more first time intervals by one or more integration registers located on a second data path; providing a threshold on the first integrated circuit for identifying one or more peaks in the histogram, wherein the threshold is computed using one or more values in the one or more integration registers; identifying the one or more peaks represented in the histogram on the first integrated circuit by traversing the plurality of first registers with the threshold; and sending information describing the one or more peaks detected using the threshold from the first integrated circuit to a processor on a second integrated circuit.

12. The method of claim 11, further comprising removing a background noise level from the one or more peaks represented in the histogram.

13. The method of claim 11, further comprising determining a background noise level based on samples of photons received by the one or more photodetectors between the one or more pulse trains.

14. The method of claim 11, wherein providing the threshold comprises setting the threshold to a predetermined interval above a background noise level.

15. The method of claim 11, wherein providing the threshold comprises setting the threshold to an interval above a background noise level, the interval being a predetermined percentage of the background noise level.

16. The method of claim 11, further comprising applying a low pass filter to the histogram stored in the plurality of first registers prior to identifying the one or more peaks.

17. The method of claim 11, further comprising applying a matched filter to the histogram stored in the plurality of first registers prior to identifying the one or more peaks, wherein the matched filter corresponds to the one or more pulse trains.

18. The method of claim 11, wherein the one or more peaks comprise peaks corresponding to reflections of the one or more pulse trains and peaks not corresponding to reflections of the one or more pulse trains.

19. The method of claim 11, wherein identifying the one or more peaks represented in the histogram uses only a single pass through the plurality of first registers.

Citation Information

Patent Citations

  • Augmenting panoramic LIDAR results with color

    US10809380B2

  • Accurate photo detector measurements for lidar

    US20180299552A1

  • Systems and methods for efficient multi-return light detectors

    US20190179018A1