I’ve put a set of Radio Astronomy-related blocks up on cgran:
https://www.cgran.org/svn/projects/gr-ra_blocks
It includes
o an oblivous “slicer” that can be used in a Dicke-switching
environment when there’s no way of explicitly tagging samples as to
which
“switch state” they belong to. It requires that there be a
significant power difference between “Sky”, and “Reference”. It’s a
decimator.
o A synchronous detector. Like above–again used in Dicke switching,
but it has an explicit switch-state input. It’s left as an exercise for
the reader as to how you actually synchronize the internal notion
of the switch state with the switch hardware, and the resulting
data-streams,
given the latency-uncertainties of Gnu Radio. Like the above,
it’s a decimator.
o A “clock generator”. It takes a sample-stream as input, and
produces a series of (logical) 1s and 0s as an output, using the input
stream purely
as a timing source. It’s a decimator, so you can produce any
integer-fractional rate of the incoming data stream. One might use this
block
to provide “switch state” to the synchronous detector block,
above, perhaps with a delay block in between.
o A “vector power” block (not sure what to actually call this). It
takes a vector as input, usually the output magnitude vector of a
previous FFT,
and allows you to synthesize sub-channels by combining numbers of
adjacent FFT output bins into a signal power estimate for that
collection
of bins. This is cheaper than a PFB, but is useful only for power
estimation, since generally, it takes an
already-IIR-filtered-and-decimated
stream of FFT output vectors as input, and allows non-uniform
output channels cheaply.
o A pulsar folder – of the true folding type. It produces a fixed
vector as output which hopefully contains the folded pulse profile.
The input
sample-rate must have already been fractionally-resampled to
vector_size * notional-pulse-rate
o Another pulsar folder – using an IIR output filter. Same
sample-rate constraints as the “true folder”, but it produces continuous
vector
outputs, and applies a single-pole IIR filter to each element of
the output vector. This is a GRC-derived hier block.
o An RA-friendly FFT block – very much like the Log Power FFT block,
but with linear magnitude outputs. Nothing fancy. It’s a GRC-derived
hier block.
I’ll likely add others as time and inspiration permit. For example, a
hier block that can be used for coherent de-dispersion where you just
give it the DM, Fc, and bandwidth, and let it compute the filter
coefficients. I have Python “helper code” that can do this already,
just not
sure how to integrate it into a hier block “cleanly”.
Similarly, an incoherent de-dispersion block using filter-and-delay
might also be useful–again taking DM, Fc, and bandwidth as parameters,
and breaking up the bandwidth uniformly, and inserting appropriate
delays.
Simple_ra doesn’t actually use any of these, although if I add pulsar
capability, it’s going to at least use on of the folder blocks, and one
of
the not-yet-written dedispersion blocks.
–
Marcus L.
Principal Investigator
Shirleys Bay Radio Astronomy Consortium