Table of Contents
I have not seen many Pi Digital Signal Processor (DSP) boards, but when you need it you need it, and I recently needed such a thing, so I decided to put one together.
This project turned out to be low-cost (about $40-$50) and quick to construct (a few hours) because it only uses a few components. It is almost entirely through-hole PCB construction, there are a few optional surface-mount parts, but they can be omitted if desired.
The main part is the DSP module, which is available from AliExpress for about $20 (the search term is ' ADAU1401 Board ' but if you see ADAU1701 Board, it is identical (they are both the same part functionally, but the 1401 chip works across an automotive temperature range).
Essentially all this project does is connect the I2C pins of the DSP module to the Pi, and bring out some signal input/outputs onto stereo jack and BNC connectors. It's super-easy from a hardware construction perspective.
To actually use the board, see the part 2 blog post here: Wave Miner: 10 Experiments with a Pi Digital Signal Processor (DSP)
There is also an experimental project to convert the Pi and Wave Miner into an Inductance, Capacitance and Resistance (LCR) meter.
What Does it Do?
The DSP board can be used for all sorts of things, like sound effects, audio filtering, and test purposes such as measuring AC signals or audio or generating test signals.
The DSP board works with the Pi (the Pi is required to program and configure the board), but it retains its code afterward so the board can be disconnected from the Pi and used standalone too, for instance as an electronic crossover for speakers.
There are many educational uses, especially for experimenting with speech or music or learning about digital signal processing techniques.
I've put together lots of experiments in a separate blog post covering a range of functionality, and they are easy to execute, using basic equipment such as headphones. This blog post is purely concerned with building the DSP board, which is called the Wave Miner : )
All the files discussed in this blog post are available on the Wave Miner GitHub page.
All DSP connections are brought out to pin headers. There are plenty of jumper connections so that the project is easy to extend. It is possible to plug another board, such as prototyping perfboard, on top, or use jumper wires to connect to a breadboard.
The project can be powered from the Pi, or from an external 7-12V supply, depending on a jumper setting.
A Look at the DSP Module
Here is a block diagram of the ADAU1401 chip; although there are pairs of ADC and DAC devices, it isn't necessary to use them as a stereo pair. It is perfectly acceptable to (say) use just one ADC and generate four separate processed stream outputs from it.
There is not a lot of information about the DSP core, because the manufacturer (Analog Devices) expects users to make use of the AD development environment and algorithms, rather than code the entire device at a very low level; in fact, there is no user-accessible assembler or compiler. In the past, DSP chips required coding in a way similar to microcontrollers, using assembler language, or C code.
The DSP module from AliExpress contains the DSP chip, plus a crystal, EEPROM (for storing code that the DSP can run at power-up, a voltage regulator, and input/output RC filters for the ADCs and DACs.
The photo below shows the AliExpress DSP module. The DSP chip (ADAU1401) and EEPROM chip are both powered by an on-module 3.3V regulator. There is a 12.288 MHz crystal on the module, which is suitable for 48 ksample/sec rates.
There are lots of pins labeled MP; these are multi-purpose connections, a bit like GPIO on a microcontroller. The Wave Miner PCB brings those connections out to pin headers so that future projects can be wired up, or plugged on top.
Building the Wave Miner
The PCB can be ordered by submitting the Gerber files to any PCB manufacturer such as JLC PCB or Elecrow. Refer to the bill of materials to see what needs to be ordered; the main parts are the DSP module and whatever connectors you plan to use. The earlier photos show the fully-populated board with all the connectors. The component L1 is a hand-wound choke, but it can be replaced by any ready-made one that fits the holes, or just use a wire link.
Once the board has been assembled, five jumper connections need to be made as shown here:
The blue jumpers are used to connect the BNC sockets to the input and output wires from the DSP module. For future experiments, you could disconnect the blue jumpers and patch jumper wires from the Wave Miner to a breadboard if desired.
The red jumper connection is used to select the power supply source. When set as shown in the diagram above, the DSP module is powered by the Pi.
The ribbon cable uses IDC connectors, these are not hard to do but need some practice with one or two spare connectors if you've never done it before. A vice is required for applying the force. Probably the better option is to buy a pre-assembled cable, it is cheaper too.
The PCB is designed to fit 1593W series Hammond plastic enclosures, part codes 1593WGY, 1593WBK or 1539WTBU (they are all the same, just different colors). The front and rear panels could also be manufactured as PCBs. For now, I just manually drilled holes in the plastic panels that come with the Hammond case. The details are in the diagram below (the cutout diagram is downloadable as a PDF from the GitHub page).
With a near-trivial amount of effort, it is possible to build the Wave Miner and be ready to experiment with DSP. The PCB files, schematic and bill of materials are at the GitHub site. I'll write up Part 2, which contains such experiments, within a day or two.
Thanks for reading!