High-level description of PulseNet
The front-end flash converters latch on
both edges of the clock for 1 GHz sampling. At each edge and for each
of thirty-two samplers, seven Strongarm latches compare the input to
seven reference voltages. The output of this flash converter is in
thermometer code, and is encoded to 3-bit Gray code on the next clock.
This data is delayed for 8 clock cycles in a shift register array
while other computations take place. Meanwhile, particular levels in
the thermometer code (which say if the input exceed the reference on
the clock) are passed to separate logic blocks that look for
coincident pulses (an AND array) and that count the number of times
that the level was exceeded (more on this astronomy module later). If
a coincidence is detected, the data from the coincident pair
(including a few clocks worth from before the coincidence) are routed
into a 512-bit deep shift register memory. Both shift register
memories use two-phase non-overlapping clocks (which are derived from
the sampler/encoder clock). After a coincident pulse event is stored,
PulseNet raises an external flag and waits for the outside world
(an 8051 microcontoller) to clock the data out. In addition
the sample data, PulseNet will pass the address of the coincident
pixels and some diagnostic data.
The other function of PulseNet is to monitor particular levels from a
particular pixel pair. By quickly cycling through the various pairs
(16 per chip), one can get a map of the single photon count rates on
each pixel, and thus obtain an image of the sky as it drifts by. At
the heart of this rather simple module are two 32-bit counters which
count the number of times that the threshold was exceed between
user-specified start and stop times. This module also has a serial
interface and will talk to a microcontroller.