FPGAs (Field Programmable Gate Arrays) have become the powerhouse in modern electronics, particularly in the rapidly moving fields of Machine Learning, Computer Vision, Artificial Intelligence and Edge Computing due to their impressive Digital Signal Processing capabilities
The best way to learn Digital Signal Processing is to get your hands dirty, and FPGA's are a serious weapon when it comes to DSP. In this course we will cover the basics of DSP all the way to advanced topics in the context of FPGA's.
Signal Processing refers to the manipulation of an input signal to produce a desired output. A common example is an amplifier, where a human voice is input to a microphone and then amplified before going through a loudspeaker, we can say the voice signal has been processed to achieve amplification.
Filtering is another common process applied to signals where frequencies are attenuated within a given range, for example a low pass filter will pass through low frequencies and attenuate higher frequencies while a band pass filter will only allow frequencies within a defined range to pass without attenuation.
Analog Signal Processing was the original way of achieving amplification and filtering where discrete components such as resistors, capacitors and transistors are arranged to achieve the desired result. This practice is still a part of modern circuit design, however, it is almost always accompanied by DSP.
DSP (Digital Signal Processing)
DSP simply put is Signal Processing applied in the Digital Domain, i.e. the world of 1's and 0's - binary.
Why would we want to process a signal digitally? For a start cost, it is far cheaper to digitally process a signal than require analog components for analog filtering for example which would increase the BOM cost and potentially the size of the PCB and increase the complexity of the layout.
Another reason is flexibility, with digital processing we can change the bandwidth of a filter at runtime or even the characteristics entirely! We don't have this flexibility with analog apart from perhaps having a potentiometer for a resistor value which as you turn changes the -3dB point, but again this is still limited.
Performance, modern FPGA's are processing animals, 10 pole filters for example are possible using limited resources of the FPGA.
How can we handle the analog signal processing example of the microphone and loudspeaker in the digital domain?
The answer is with an ADC and DAC. The basic idea is the incoming signal is converted to a digital value via the ADC which is then in a format that can be understood by the FPGA which then performs digital processing before outputting this data back to a voltage (analog domain) via a DAC.
This is shown pictorially below: