Electronics > Projects, Designs, and Technical Stuff

Building an oscilloscope

(1/5) > >>

I know this will be a project I'll probably never finish, but I've been wanting to build/design my own oscilloscope. I'll start off by saying that my experience with electronics is very limited; I've only used Arduinos and similar boards (Metro from Adafruit, ESP8266, etc.).

I have no designs yet because I want to get the hardware selection down first. I was thinking of using an FPGA that would handle the intake from the ADC(s) and save the bits into memory. Then the main processor (essentially a BeagleBone Black) would read data off the RAM and perform the bulk of the processing. I was initially thinking of using the PRUs in the BBB, but I'm not sure that would be a good idea because I'd like to avoid doing everything on the BBB.

I was thinking of using the BeagleBone Black (or possible a Raspberry Pi) because it would give me a full OS to build off. Then I could use something like Qt for the GUI instead of writing my own software stack. It seems other scopes use full operating systems as well, but I could be wrong.

As for the FPGA, I've never worked with them before, so I don't know how portable the code would be, but I was thinking of designing using a DE0-Nano which uses a Cyclone IV. I could also use the DE10-Nano (Cyclone V) if needed.

I'm not going for a budget design here; I'm wanting to do this for the learning experience: working with SBC besides the Arduino, programming an FPGA, learning circuit layout, etc.

Anyways, my question is this: Is my choice of hardware good enough for a, say, 10 to (maybe) 100 MS/s scope? (I'm still looking at what ADC to use)


--- Quote --- Then the main processor (essentially a BeagleBone Black) would read data off the RAM and perform the bulk of the processing
--- End quote ---
Most processor do not have the processing power to handle the data in real time. Have the FPGA do the real time data processing. Only use the processor to handle gui.

I have worked on system where real time data is overlaid into video memory and the main processor handles user interactions, draw the gui around the video overlay and configure the FPGA for data aquisition and display.

Personally I would avoid Linux for this kind of thing. There is a reason why commercial scopes use Windows for their GUI ! It is partly to do with licensing, a lot more to do with development tools. Commercially, there is better support for Windows based tools for FPGAs and embedded software development. Many on this forum will dissagree, but that is because they are thinking about hobby use.
I do this kind of thing for a living, I would not waste my/company time on freeware tools (it wastes a lot of time !) However, commercial tools may be out of reach for most hobbiests.

You have already realised that the FPGA needs to grab real time ADC readings and route that into memory. It also needs to handle timing, how often to grab data and put it into video overlay RAM. Do this at the right rate and you have sort of got your time base working. It therefore must generate the right RAM addressing.
The FPGA will also have to do the trigger.

I am not sure what platform will work best for you. I do not think bbb or rasberry pi will work. You need something which will give the FPGA shared access to large amount of RAM, the video RAM so that you can overlay the captured data. I do not know of any off the shelf dev board that allows this.

The other part is the analogue front end. You need analogue circuit with bandwith of 100MHz if I understand your requirement. This front end  needs to amplifiy and attenuate the input signal. It also needs to interface to osilloscope probes.

What are you talking about? The big FPGA dev environments are native Linux software that has been ported to Windows, it works fine in either.

What on earth does that have to do with the OS running on the scope itself? Why anyone would want an oscilloscope to run Windows is beyond me. I've seen scopes that ran WinXP embedded but I'm pretty sure most of them now are on embedded Linux or some sort of realtime OS. Windows embedded is pretty much dead.

Work out what you might be able to achieve, and equally importantly not achieve.

Implement it.

Work out what you would do better/differently next time.
Work out the next steps for an improved device.

You will make many mistakes - but that really doesn't matter!

It will look good on your CV.

Start by reading all the design info on the Digilent Analog Discovery 2.  It uses a combination of an FPGA and USB to the PC for graphics.  Now try to download and install the Waveforms software on a Raspberry Pi.  The Pi 4.0 supports USB 3.0 so it should work out pretty well.

Or, look at the sound card oscilloscope software.  No real electronics required but very limited bandwidth and voltages.


[0] Message Index

[#] Next page

There was an error while thanking
Go to full version