I’ve been thinking for some time about a DSP-based ham radio. After
considering and discarding more grandiose schemes, I was inspired by my
Norcal 40A. It and the original Norcal 40 are fairly simple and highly
reproducible (thousands were built). However, performance was not
sacrificed in the name of simplicity. Instead, the rig was carefully
designed to make the most of its NE602 mixers and crystal filter.
Why not try for the same goals in a DSP-based rig? In theory, one should
be able to subsume all of the IF and most of the RF and baseband into the
DSP, leaving little but filtering components and a few amplifiers outboard.
The result would have a small number of components and would be fairly easy
I set a goal to build a self-contained radio, not a PC-based software defined radio. It will be narrow band for simplicity. As much functionality as practical will be done digitally. Finally, the design should be reproducible by others. That, in turn, means that it should be documented, it should use a low-cost DSP toolchain, and it should be insensitive to component variation.
Finally, I have an interest in delta-sigma techniques and multirate DSP, and the radio will be an excellent platform to explore and experiment with those technologies.
I don’t know if the project will be a success, but the journey will be its own reward.
Why FPGA DSP
After some thinking and investigation, I decided to do the radio’s digital
signal processing in an FPGA. The problem was finding a suitably powerful
DSP with a free or very low-cost toolchain. I also constrained myself to
packages I could easily solder at home, which rules out QFNs, BGAs, and
anything with a central heat sink pad.
As for computing power, I wanted to be able to handle 24-bit incoming data,
which has a dynamic range of about 144 dB. For efficiency reasons, that
rules out inexpensive 16-bit DSPs — the DSP will have to be 24-bit, 32-bit,
or floating-point. (It is worth noting that noise means the radio won’t
achieve 144 dB dynamic range. I would be delighted with 120 dB and satisfied
with the roughly 90 dB of an NE602.)
I couldn’t find a digital signal microprocessor that had a free toolchain
and the dynamic range required. Some FPGAs, however, do have free toolchains
available, and reasonably-priced programmers. The bit width of their
data is arbitrary and determined by their programming, so not only can
an FPGA handle the dynamic range I seek, it can be tuned to balance circuit
size versus dynamic range.
A Project Plan
Some more thought led to a plan for the radio:
- Build an adapter PCB for the FPGA that is suitable for skywired breadboarding.
- Bring up the adapter with an iambic keyer for Morse code. It’s a simple project to create a module that I will want to include in the radio.
- Get the USB MAC and PHY from OpenCores (www.opencores.org) working and configure them as an audio I/O device. This will provide a debugging interface for moving data into and out of the FPGA DSP. Later in the project, perhaps the USB interface will become a virtual serial port for CI-V or a similar control protocol.
- Develop delta-sigma converters using the FPGA.
- Baseband DAC and ADC.
- Bandpass ADC
- Bandpass DAC (maybe)
- Develop multirate filters for down-conversion, up-conversion, and filtering.
- Integrate it all into a radio.
The goal is a radio, but the path has many small steps. Many of the steps will extend my skills as an engineer, as I work in areas that interest me but which I haven’t had a chance to use on the job. I’m looking forward to the journey as much as the destination. I hope you will enjoy it as well.