Learning Digital Signal Processing (DSP) techniques traditionally involves working through a good bit of mathematics and signal theory. To promote a hands-on approach, [Clyne] developed the DSP PAW (Portable All-in-one Workstation). DSP PAW hardware and software provide a complete learning environment for any computer where DSP algorithms can be entered as C++ code through an Arduino-like IDE.
The DSP PAW hardware comprises a custom board that plugs onto an STM32 NUCLEO Development Board from STMicroelectronics. The board includes headers and 3.5 mm audio jacks for signal interfacing, protection circuitry for analog pins, power circuitry to enable a -3.3 V to +3.3 V signal range, a status LED, and two potentiometers for adjusting parameters in real-time. The hardware can interface with audio signals and lab equipment or it can generate and capture signals in stand-alone operation.
The STM32 microcontroller requires at least a 72 MHz clock, 96 kB of RAM, support for USB, analog to digital conversion, and digital to analog conversion. Hardware floating-point support is useful for many DSP applications.
The DSP PAW firmware leverages the ChibiOS open-source, embedded real-time operating system. The firmware need only be programmed one time, after which DSP algorithms can be loaded from any Linux or Windows computer over USB.
The project’s IDE provides an interface for writing, compiling, uploading, executing, analyzing, and debugging DSP algorithms. The IDE can configure sampling rates, change buffer sizes, measure execution time, view disassembled code, capture signals, and generate signals. Examples are included for signal processing operation such as convolution, FIR filters, and IIR filters.
DSP is quite a rich subject for self-study. You may wish to also explore our DSP Spreadsheet Series or a tasty Tutorial on Signal Processing with Octave.
8 thoughts on “Hackaday Prize 2023: Learn DSP With The Portable All-in-One Workstation”
This is great. It’s not perfect, but it’s great. First, it shows that DSP doesn’t need an expensive special-purpose chip, or an FPGA. The particular Nucleo board used in the project is just a Cortex-M4 with a single-precision floating-point unit. Which is not much different from the hardware on a Black Pill dev board, which can be had for $5. The major limitation is the ADCs, which are only 12 bit, which limits the dynamic range to 72dB. Which is great for education, and probably sufficient for some kinds of music, but not even close to CD quality. The point though, is that it is accessible. Also, the STM32F series has I2S ports, which means you can connect a 16 or even 24 bit ADC to it, to eliminate that particular limitation.
I know this because I just got inspired by a series of YouTube videos by jmhrvy1947, where he uses a Black Pill as part of a really inexpensive DIY ham radio transceiver. Here is where I got gobsmacked: https://www.youtube.com/watch?v=NYJx4SoMVDo. But let me back up a bit, because that wasn’t really the beginning. JW Harvey is a ham who also got the microcontroller bug, and this project is kind of a merging of two different projects. First we have his DIY CW transceiver project, https://www.youtube.com/watch?v=vxcRsNkiOTE, in which he builds a very simple front end for a direct conversion receiver, consisting of a digital VFO and two mixers to produce I and Q baseband, which he just plugs into a laptop through an external audio device, using open source software to do the rest. Interesting to be sure, but not enough for me to break out the soldering iron. But the other path was learning to connect microcontroller dev boards like the Blue Pill (STM32F103-based) to touchscreen LCDs to produce lots of practically instant projects. Where the magic happens, though, is in the first video I linked above, where he realizes from looking at other people’s projects, that all that work being done by the laptop can be done on a computer as simple as a Black Pill (STM32F411) and a touchscreen LCD, to make what at least could be a very portable rig. He uses an inexpensive module that can be found on eBay or Amazon, that does both ADC and DAC using I2S at decent quality audio standards.
I’m interested, but will wait to see more progression.
Speed, resolution, and quantity of ADC / DAC channels are the most significant factors. Closely followed by the bottleneck of system manipulation on said data.
If this is “good enough” for what you want to do, congratulations. Most audiophiles, however, will probably look for better system specifications.
You might want to look at the daisy seed, https://www.electro-smith.com/daisy/daisy cheap, 24 bit audio, faster cpu and an extensive dsp library on github.
You’re right, this system currently isn’t a great choice for audiophiles. Education has been its primary focus, initially with undergraduate engineering courses in mind. That’s why it sticks to processing a single signal/channel at a speed (8kHz-96kHz) and resolution (12-bits) that are easy to comprehend and work with.
That said, this can certainly be adapted to an audiophile audience, and that’s absolutely something I’m interested in. The changes would mostly be in hardware for the factors you’ve identified; I would likely switch to a higher-performance microcontroller too for extra speed and RAM.
You forgot that this is a learning platform. Not a “Do everything Alan expects” project. It’s the first paragraph of the article.
This is a great idea! Perfect for the intended purpose of beginners learning about DSP.
A few suggestions for a nexxt iteration if I may:
– please use OpAmp symbols in schematics so people can see what’s going on.
– I’m not sure connecting the input buffer as a differential amplifier actually does much in terms of ground isolation, and it risks destruction of the opamp if there is a shared path to ground anywhere.
– I’d make the input buffer some kind of second-order filter, then use the second op-amp for scaling and level-shifting. Maybe provide a switch to bypass the filter so you can demonstrate Nyquist/aliasing on purpose instead of by accident.
Thanks for the feedback! I’m actually working on the next iteration of the board right now; I’ll keep those opamp suggestions in mind.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)