
non-cents productions, LLC
This
page sports some selected documents (and excerpts) apropos to Digital
Signal Processing (DSP) technology.
They (like the other pages here) serve to give brief, illustrative
glimpses into a few of
the works of ncp.
Here is presented a Programmer's Reference
manual
for a custom programmable DSP we created for purposes of specific
wireless communications algorithm research.
One
of the goals in creating the instruction set of this DSP was to
minimise the effort required to translate the algorithms into source
code programs for the processor. The target algorithms were mostly
written in the "c" programming language (or often described
in
"pseudo-c").
Unfortunately, though
the common "OPCODE OPERAND OPERAND" type of assembly code allowed for
dense and optimised code, it often made the resulting translations
cumbersome
and un-obvious at best ... and at worst unclear and prone to errors.
Consider also, that the underlying machine
architecture consisted of a 5 stage pipeline and 7 variant processor
and addressing units (the astute/experienced will now realise that
programming the machine was an exercise in keeping track of a 5x7
matrix of machine activities) so maximal similarity between source
algorithms and processor code was very strongly desired. Hence, the
machine instructions for this processor were made as c-like as possible.
Here
is part of a document detailing
the initial estimations of chip
resource characteristics for a direct/dedicated hardware implementation of a
specific algorithm.
Prior
to spending a million bucks or more to do a chip, it's a good idea to
do a sanity check on the approach: is the size ok, is the power
consumption ok, etc. -- and to ask "is there a better way than the
obvious approach?"
This
excerpt shows an example optimisation. It is based upon use of a
half-band filter rather than a pair of general filters. This
simplification is made possible by understanding the details of the
problem space and some special characteristics of the computations
involved.
One will notice that a detailed explanation of the approach is provided
along with the analysis in the document. That is because it is held
that there are two important audiences for any
design/system/hardware/software/etc. First, and foremost is "the user"
(be that a person, a machine, whatever)
of the design
and all that is wanted by "the user" is that the design do what it
should do. If it does not work, then clearly it is not much good. The
second
audience for any design is all too
often forgotten: it's the poor schmuck that must maintain it and fix it
as needed. These latter are deserving of, and thankful for, all the
explanations and notes and hints that the designer can provide beyond
just basic documentation.