Every electronics engineer in both the hobby world and the professional world needs a good oscilloscope. Unfortunately good scopes are pretty pricey (thousands of dollars pricey) so those in the hobbyist world have to find alternate ways, and EE graduate Aleksa Bjelogrlic has been doing just that for the past few years.
Since 2018, Bjelogrlic has been developing his own software-defined oscilloscope. His goal is to build a scope that has four channels that can achieve at least 100MHz and come with a price tag of no more than $500. It's a pretty lofty goal, but Bjelogrlic is tackling the project head on with an extremely intuitive modular design approach.
There is an interesting blurb written at the beginning of his project post, where Bjelogrlic describes how his reluctance to post the project until it was complete led to him missing out on the help from the open source community. And how he spent many hours being stuck on problems that probably could have been pointed out a lot faster with the extra sets of eyes on it from an experienced community.
However, now that the project is nearing its completion, he's chosen to write a series of blog posts outlining the various obstacles he's had to overcome to make his goal a reality. It seems as though there are still a few posts to be written.
Bjelogrlic starts with the explanation of how he conceptualized the design, in that he was inspired by Bunnie's oscilloscope module for the Novena. His lofty goal was to ADC every sample out of the ADC and onto the user's computer in real time where all of the processing is done on the CPU. This is desirable because theoretically, the performance of an oscilloscope like this would only be limited by the amount of RAM available to the CPU.
This idea gave way to the initial modularized block design above: an external trigger, 10KHz probe compensation, Front of Front End (FFE) for each of the four channels each with their own programmable gain amplifier (PGA), the analog-to-digital converter (ADC) chip, the FPGA, and finally the USB interface to the user PC.
So far Bjelogrlic has created eight blog posts outlining his struggles with various aspects of his software-defined oscilloscope design including: getting his 350MHz bandwidth FFE design working, falling into the trap of creating problems for himself by not fully reading datasheets of each part, pin swaps on the FPGA board layout, and the nontrivial task of teaching himself Verilog and FPGA design.
Overall, the way each part of the design (both hardware and software) is broken down into isolated modules for independent and more manageable testing and verification is a great example of how to tackle a large, complex project such as this. His project logs are definitely worth the read to understand exactly how he was able to accomplish everything!