The present invention relates to methods and apparatus for encoding events, and more particularly to such methods and apparatus that are capable of determining the identity of multiple simultaneous events in a single snap-shot without requiring arbitration.
It has been proposed, that an address-event representation (AER) would be appropriate for communicating between plurality of senders and receivers, especially in cases where the number of senders and receivers residing on separate integrated circuit exceeds the wiring capability available between the integrated circuits (see U.S. Pat. No. 5,404,556). This approach has been originally proposed in the context of communicating neuronal activity of many artificial neurons from one chip to another. When a neuron fires a pulse (i.e., an “event”) on an event bus, the identity of a firing neuron (i.e., its “address”) could be communicated to the second chip. Since time is inherently measured across the entire system, the neuronal activity expressed in temporal periods and firing rates can be communicated to a second chip. Alternatively, time stamps could be associated with each address to preserve event timing in irregular pipelined systems.
Biological neurons fire infrequently, from a few Hz to a couple of hundred Hz. This signaling scheme saves energy in biological systems, but leaves neuronal “wiring” underutilized. It has been suggested that the speed of electronic circuits can be traded for the connectivity of nervous systems by sharing a few wires to communicate (infrequent) events from many artificial neurons while still preserving the timing of events to a very fine time scale (Mead, C. A., “Analog VLSI and Neural System”, Addison-Wesley, 1989). In fact, due to this wire resource sharing, signaling rates in artificial perceptual systems can be in order of 10 MHz (see Culurciello et al.: “Arbitrated Address-event representation digital image sensor”, Electronic Letters, Vol 37, No. 24, November 2001, pp. 1443-1445, and Landolt et al.: “Visual sensor with resolution enhancement by mechanical vibrations,” Proc. Conf. on Advanced Research in VLSI, 2001, pp 249-264).
There can be thousands of neurons firing their “events” on thousands of wires of an event bus. The task of an address-event encoder is to receive these many events, correlate the precise timing of their onset with the identity of the corresponding neuron, and timely communicate address-event pairs off-chip. It is trivial to encode an address of a single firing neuron. A problem arises when several neurons fire simultaneously thus causing event collisions at the address-event encoder and shared wiring resources.
There are two existing techniques that address the problem of address-event coding when simultaneous events occur on the event bus: arbitration and collision detection.
The first technique originally proposed by Mahowald (U.S. Pat. No. 5,404,556) and subsequently further developed by several researchers arbitrates among colliding events (see Boahen, “Point-to-point connectivity between neuromorphic chips using address events,” IEEE Tran. Circuits and Systems II, Vol. 47, No. 5, May 2000, pp. 416-434; and Deiss et al.: “A pulse-coded communications infrastructure for neuromorphic systems,” in Pulsed Nerual Networks, Maass and Bishop (eds.), The MIT Press, 1999.) It selects one event at a time, encodes that event's address, and communicates the address off chip. A binary tree search implemented in a circuit has been proposed to speed up the event selection process. Still this search takes time that is at best proportional to the number of events queued for arbitration. During that time, new events could be arriving and joining the arbitration process, causing the system to lose time associated with each event. Although a new event originates at a later point in time, as it enters the arbitration process it could be selected and read before the older event, that is still waiting a selection. One remedy for this time confusion is to latch the event bus thus keeping new events from entering the selection process until the current set of events is completely encoded. Still, some time uncertainty remains because while the current set of events is being examined, new events are queuing in the background. The time at which these new events fired is not precisely known. The best one can say is that they fired during the time period the previous set of events was handled. Furthermore, as time is spent to arbitrate events in one bus state, the chance that there will be collisions in the next bus state increases. The faster one can examine each bus state, the less chance for many collisions in the incoming event bus state. In fact, in extreme situations, the arbiter may just partially encode some events, discard the remaining events, and move on to the next sample.
Two image sensors using this kind of arbitrated address-event coding have been proposed: 1) Culurciello et al.: “Arbitrated Address-event representation digital image sensor”, Electronic Letters, Vol 37, No. 24, November 2001, pp. 1443-1445, and 2) U.S. Pat. No. 6,660,989. In the first approach pixels in an array fire at a rate that is proportional to their illumination. The arbitrated address-event encoder communicates this activity to the outside of the array. In the invention of U.S. Pat. No. 6,660,989 inventors use the method proposed by my earlier invention (U.S. Pat. No. 5,699,278) in which a single event is generated by each pixel after its reset time. U.S. Pat. No. 6,660,989 mentions that due to limited throughput of arbitrated address-event coding, the technique may be appropriate only for small imagers, recognizing the problem with arbitrated address-event encoding for large number of input events.
The second method for address-encoding—the collision detection address-event—was proposed in Mortara et al. “A communication scheme for analog VLSI perceptive systems,” IEEE Jour. Solid-State Circuits, Vol. 30, No. 6, June 1995, pp. 660-669. This method does not arbitrate but uses a binary encoder with a special collision detection code. This allows the event bus to frequently produce event addresses, but only when a single event occurs. When a single event occurs, the encoder provides a “valid” code whose value indicates the address of the event. This is communicated to the second chip. When a collision occurs on the event bus, the encoder provides an “out-of-valid-set” code indicating that the collision occurred. Generally, it is not possible to tell from this code how many and which events collided. All that can be concluded is that the collision occurred and that the system should not trust the produced code to encode any events. The encoder uses about (log 2N+2) bits to detect collision on an event bus with N wires. For example, a 1000-wire event bus would require about 10+2=12 bits. The 2 bits are necessary overhead to provide collision detection.
The collision detection address-event method has the advantage of providing event addresses within a small temporal snapshot (e.g., propagation delay of the encoder of about a few nanoseconds.) Unlike with the arbitrated approach, this technique minimizes the chance of collisions in the next time increment. However this technique is “lossy” address-event encoding since the identity of the colliding events will be unrecoverable. The argument by neorumophic engineering researchers goes that the loss due to collisions in both arbitrated and non-arbitrated cases can be tolerated in a statistical sense as the neurons periodically generate new events that are unlikely to collide in another period, therefore the receiving circuits could still be able to reconstruct neural activity received from the sender chip. However there are many important applications where address-event could be beneficial but the loss or errors cannot be tolerated.
An object of the present invention is to provide an event address encoder for lossless and substantially instantaneous production of a code that contains the identity of plural colliding events. Such a coder is useful in multi-channel analog-to-digital conversion, image sensors, and other massively parallel systems whose “cells” need to communicate their internal activity or signal levels to the outside world.
This invention provides a method of encoding identity of events comprising: receiving an event bit pattern having bits representative of events, and determining a code from the event bit pattern, said code containing the information for recovering identity of events when one or more events are simultaneously present in the event bit pattern.
The invention also encompasses an apparatus comprising a plurality of inputs for receiving an event bit pattern having bits representative of events, an event encoder for receiving the event bit pattern and for producing a code containing the information for recovering identity of events when one or more events are simultaneously present in the event bit pattern, and a decoder for recovering event identities.
In another aspect, the invention provides an address encoder comprising a plurality of inputs for receiving an event bit pattern representative of events, a plurality of outputs, and a plurality of exclusive OR gates connected between the inputs and outputs, wherein the exclusive OR gates correspond to a parity matrix to produce a code on the outputs, the code containing the information for recovering identity of events when one or more events are simultaneously present in the event bit pattern.
The invention also encompasses an apparatus comprising means for generating an event bit pattern having bits representative of events, means for determining a code from the event bit pattern, said code containing the information for recovering identity of events when one or more events are simultaneously present in the event bit pattern, and a decoder for recovering the event identities.
In another aspect, the invention provides a method for determining identity of events comprising steps of communicating events as an event bit pattern to an event bus, and producing an event identity code with an event identity encoder on an event identity code bus, in response to said event bit pattern, said event identity code encoding the location of all active events in the event bit pattern.
The invention also encompasses a method for image sensing comprising the steps of receiving radiation with a plurality of radiation-sensitive event-generating cells disposed on a surface, generating an event with each event-generating cell at event times that are uniquely related to the received radiation by the each event-generating cell, producing the identity of generated events by the event identifying means, and storing the event identity with associated timestamps when the event occurred.
In yet another aspect, the invention provides a method for analog-to-digital conversion comprising the steps of receiving a physical quantity with a plurality of event-generating cells, generating an event with each event-generating cell at event times that are uniquely related to the received physical quantity by the each event-generating cell, producing the identity of generated events, and storing the event identity with associated timestamps when the event occurred
A complete understanding of the present invention may be obtained by reference to the accompanying drawings, when considered in conjunction with the subsequent, detailed description, in which:
a,
4
b, and 4c are more detailed schematic diagrams that illustrate how a bit in the identity code bus of
a and 5b are a particular example of the event identity encoder which uses BCH error-correcting code with n=15, m=4, and t=2.
a,
6
b, and 6c are block diagrams that illustrate how the event identity code may be decoded and utilized.
a and 7b are block diagrams that illustrate how time may be associate with input events, event identity code, and output events.
a and 8b show an array of event-firing cells that provide events to the event identity encoder.
a is a plurality of cells arranged in a two-dimensional array in which cells along columns share vertical event bus wires, and cells along the rows share horizontal event bus wires.
a and 12b show an event firing photodetector cell appropriate for radiation and image sensing.
Referring to the drawings in greater detail wherein like reference numerals refer to similar or identical parts throughout the various views, several preferred embodiments of the present invention and methods of practicing the present invention will be considered.
The event identity code encodes the identity, or “addresses”, of all simultaneously occurring events (or “ones”) on the event bus 20 if any are present. If no events are present, the code indicates that as well. As shown in
Still referring to
In ECC, k-information bits are encoded into an n-bit code c, where n>k. The n-k redundancy bits allow error correction at the receiver end. The received word r is a result of the channel inflicting bit errors onto the sent code word c,
r=c+e
where e is the error pattern with a “I” at locations where the code word c bit was altered. In the GF(2) arithmetic ‘+’ stands for a logical “exclusive OR” XOR, and multiplication stands for a logical AND. The receiver needs to answer the question “what was the transmitted code word c”. It turns out that it is easier to answer the question “what was the error pattern e inflicted by the channel”. Once the receiver knows e, it can “undo” the channel damage from r and recover c.
In order to recover e, the receiver usually computes a syndrome s of the received word r. For this purpose, the receiver can use a parity check matrix H. The matrix H is determined by the particular ECC code selected. The parity matrix H has the property that Hc=0. The syndrome is computed as:
s=Hr=H(c+e)=Hc+He=He
Generally, for ECC codes that can correct t bits in the code of length n:2(m-1)≦n≦2m−1, the syndrome is 2·t·m bits wide. In the binary case, however, it is t·m bits wide because some rows of general matrix H can be dropped and the syndrome can be calculated based on other rows of H. The decoding process in ECC theory deals with different ways to recover e from s.
Returning to the problem of recovering the identity of the events occurring on the event bus 20, one can observe that the error pattern e looks like the state of the event bus with “ones” where events occurred and “zeros” elsewhere. Therefore, by computing the syndrome as s=He, the exact pattern of e can be recovered from s, provided that there are no more than t “ones” on the event bus at any given time.
Each bit si in the event identity code is produced as a logic combination of the bits in the event bit pattern on the event bus 20. This is performed with a parity-matrix network bit-slice 40 in
To further illustrate the operation of the event identity encoder,
It is important to note that the event identity coder of the present invention scales well. The structure of the parity matrix H, does not change as additional rows are padded to enlarge its error detection capability t. For example, to detect only one occurring event, the parity matrix of the example shown in
Those skilled in ECC art will realize that the present invention is not restricted to any particular ECC code. Any ECC code would work. Various ECC codes have various “good” and “bad” features in practice. Some are easier to decode than others; some are restricted to a certain size or error correcting capability, and so on. Which particular ECC code will be used depends on an application, but all of them fall within the scope of the present invention.
Notice that in conventional ECC practice, the syndrome is computed using the received word r. In fact, direct computation based on matrix H is rarely done. In communication systems, error correction hardware is structured to take advantage of the fact that the received bits are sequentially streaming into a receiver. In address-event coding of the present invention, a particular encoding of code words c is used to construct the parity check matrix H. Messages are never encoded and codes c are never sent, except for permanently presenting c=0 on the event bus 20. When events occur, the code c=0 becomes “corrupted” resulting in event bit pattern e. By decoding the event idendity code s, we find locations of events in the bit pattern e and thus identify all simultaneously occurring events.
There are several ways to recover the identity of events from the event identity code produced by the encoder 10. Algorithmically the most efficient known methods are Berlekamp's iterative algorithm, and Chien's search algorithm (see ECC reference cited above). These would be appropriate for software implementation. For fast hardware implementation, the Euclidian algorithm or the majority-logic decoding may be more appropriate due to their regular structure. These and other decoding methods, depending on a particular ECC code used, are described in 1) Lin, S., Costello, D., Error Control Coding: Fundamentals and Applications, Prentice-Hall, 1983, and 2) Berlekamp, E., Algebraic Coding Theory, Aegean Park Press, 1984, both of which are incorporated by reference.
c illustrates that the event identity encoder 10 and the event identity decoder 60 may reside on a sending system 70 and receiving system 80 respectively. Thus the present invention enables the communication of event activity across integrated circuits, or other subsystems by only communicating over the event identity bus 30. The systems that could benefit from this communication are numerous, and include various perceptual and neuromorphic systems as discussed by many researchers.
So far in this description that the word “event” implicitly implies a “time” associated with it. The information in many systems is represented by the timing of onset or duration of various “events”. It has been discussed above that such systems include neural systems (both biological and artificial). Some analog-to-digital converter (A/D) architectures—such as single and dual slope A/D architecture—encode information of analog physical quantities by the timing of “events”. And in my earlier invention—U.S. Pat. No. 5,699,278—I have shown how the timing of events can be used in image sensors and image processing. Further, physical quantities that are encoded as a frequency of analog, digital, or pulse train signals, also encode information in the timing of events.
a illustrates that the time is inherently measured across the system. Both the event identity encoder 10, and processor 55 can monitor the passage of time with one or more timers 90, and associate a timestamp or other time quantity with the onset, termination, and/or duration of events.
b illustrates that the events on an asynchronous event bus 20a are sampled by a latch 100 and held at predetermined points in time according to some external clock derived from an oscillator 110. The event identity encoder then receives the sampled events on a synchronous event bus 20b. The oscillator 110 may be used to derive a clock for the timer 90. The sampling periods in modern circuits can be very small, for example a few nanoseconds, or less. Therefore, for most practical purposes synchronous operation approaches the temporal fidelity of asynchronous operation while providing an added margin or robustness that is associated with synchronous electronic design. A particular choice between asynchronous and synchronous design will depend on the application, and those skilled in the art can readily adapt the present invention to both cases.
In some applications it may be advantageous to provide an enable “hand-shaking” between the event firing cells and the event identity encoder, so that all the events are reliably detected and processed.
Often the cells will fire infrequently, or only once during an observation period. Then the wires in the event bus 20 may be shared by multiple event generating cells provided that there is an additional mechanism to identify which cell on each such shared wire generated the event on the shared wire. One such embodiment is shown in
The operation of the system embodiment is as follows. Cells are operating independently and firing their events according to their own internal state. The row and column event identity encoders 10a and 10b will detect the identity of potentially multiple events on horizontal and vertical event buses 20a and 20b. When the system finds multiple events on rows and columns, there can be several combinations of cells 120 responding inside the array 126. This ambiguity is illustrated in
a and 10b illustrate a more desirable way to resolve ambiguities in two-dimensional event firing arrays that share vertical and horizontal event wires. Nonetheless, a row arbiter 10b may be provided as shown in
a and 12b show an example of a radiation-sensitive cell 120 that would be appropriate to operate as a pixel in an imaging array, among other applications. Referring to
b shows one embodiment of the one-shot radiation-sensitive cell 120 of
The event generation by the cell 120 can be accomplished by generating an edge with a voltage, charge, or current comparator 180. The comparator output transitions through an edge at a time when the signal sig(t) and the reference ref(t) assume magnitude values that satisfy a certain predetermined mathematical relationship. One simple example is that the comparator would fire when sig(t)=ref(t), but depending on the comparator construction, the mathematical relationship could be f(sig(t))=g(ref(t)) or generally, ff(sig(t), ref(t))=0. A pulse generator 185 generates a pulse around the edge in the comparator output. This can be accomplished by (digitally) differentiating the comparator's output. The pulse is then communicated on the event bus 20. The duration of the pulse/event may be controlled by an optional acknowledge signal provided on the acknowledge bus 130. The reset signal and functional waveform of ref may be common for a plurality of pixels and can be generated externally.
Arranging radiation-sensitive cells 120 in an array results in an image sensor. The processor 55 (in
Due to the preceding teaching of how the event identity encoder 10 of present invention is used in conjunction with radiation-sensitive event-firing cells 120 is used for image sensing, it will now become obvious to those skilled in the art that this methodology can be extended to provide additional embodiments that are appropriate for analog-to-digital (A/D) conversion for example.
The performance of an example system is discussed below. Assume a plurality of cells (e.g., neurons) that are periodically firing events. Event firing “anywhere in the network” is well described by the Poison distribution (Mortara, et al., “A communication scheme for analog VLSI perceptive systems,” IEEE Jour. Solid-State Circuits, Vol. 30, No. 6, June 1995, pp. 660-669). The probability that k simultaneous events occur during a sampling interval T is given by:
where n is the number of neurons, and fo the average activity rate for each neuron. The average firing rate in the system is determined by simultaneous firing of all neurons and is:
λ=nfo
In this analysis, assume that the event bus is sampled each T seconds. While one sample is being encoded during T seconds, no additional events are allowed to enter the encoding process. However, any events that may have fired during the current encoding interval are queued and will be sampled and encoded in the next sampling interval.
For reasonable event identity code bus 30 sizes (e.g., 32 and 64, or even 124 bits), a sufficient number of simultaneous events t can be encoded, achieving de facto lossless event communication. First, calculate the probability that more than t events fire simultaneously as:
This is also the probability of loss, since it represents the probability that the maximum designed encoding capability t of the event identity encoder 10 was exceeded. resulting in loss. Next select a probability of loss to be 1% and calculate the maximum neuron firing rate for two examples, n=256 and n=1024. In calculations in this example T=10 ns, but more dense temporal sampling would improve performance and is also practically feasible. Results are shown in the table below. For comparison the probability of loss for the collision detecting code for the same conditions (Mortara et al.) was also calculated. Since the collision detecting code loses any two or higher order collisions, its loss is expectedly much greater. The arbitrated encoder would exhibit even greater loss in this example. First, it would have difficulty achieving the 10 ns-processing period if the typical binary search circuit with forward and backward pass is used (U.S. Pat. No. 5,404,556). Second, the arbitrated coder would probably need to resort to encoding only one event among many in order to preserve any kind of coherence at firing rates shown in this example.
From the results in the table above, it can be seen that increasing the firing rate (for oscillating event-generating cells 120 in this example) to the point where about 1% of events are lost (due to exceeding the design simultaneous event capability t), the alternative techniques would lose 20-80% of events. The benefit of the present invention is clear. Furthermore, the one-shot event-firing cells 120 would not flood the encoder with as many events, which would result in further improved performance. All other address-event coders and systems proposed thus far that use the same, are less capable in terms of event handling performance, temporal and signal fidelity, and scaling ability.
While the invention has been described in terms of several embodiments, it will be apparent to those skilled in the art that various changes can be made to the described embodiments without departing from the invention as set forth in the following claims.
This application claims the benefit of U.S. Provisional Patent Application Ser. No. 60/572,857 filed May 20, 2004, which is hereby incorporated by reference.
The present invention was supported by the National Science Foundation under the Contract Nos. 0082364 and 0102272. The United States Government has certain rights in this invention.
Number | Date | Country | |
---|---|---|---|
60572857 | May 2004 | US |