

Digital Signal Processing (DSP)
DSPs are targeted at signal processing. Consequently they generally run faster than microcontrollers and often have fewer built-in peripherals although most have sophisticated serial protocol hardware (UART, SPI, I2C etc).
​
What sets DSPs apart is that their architecture allows for faster computation using logic optimised for arithmetic, particularly data in vector format.
​
Enhancements include SIMD (instructions that can work on multiple sets of data at the same time), fast DMA transfers, high-speed cache memory, dedicated hardware computations blocks etc). This makes them particularly suitable for Fourier transforms, digital filters, image processing etc.
​
There are some microcontrollers with built-in enhancements, particularly hardware multipliers and sometimes dividers, which help them cross the performance gap towards the lower spec DSPs. ARM Cortex M4s and Microchip's dsPICS are an example.
​
Steve has particular experience with Analog Devices' Blackfin, SHARC (including 3-core devices with built in FFT hardware) and dsPICs.
​
As DSPs tend to have more internal memory, external memory busses and faster clocks, it can be easier to use them with real-time operating systems.
​
Steve has been writing software for these since 2005 in C and C++.


