Author Topic: WIP: Homemade 100MS/s portable oscilloscope  (Read 5899 times)

0 Members and 1 Guest are viewing this topic.

Offline NollyTopic starter

  • Contributor
  • Posts: 18
  • Country: fr
WIP: Homemade 100MS/s portable oscilloscope
« on: February 03, 2026, 11:23:51 am »
Hi there.

Welcome to my Work In Progress thread.

This first post is regularly updated, for more details on development go to the last page of the thread

This is the current design (version 3), it has has 4 channels and samples at 100Ms/s (without interleaving).
The core uses a STM32F746 at 216 MHz with 8MB of 32-bits SDRAM, a Spartan 7 and 128MB of 16-bits DDR3.

2830500-0  2830508-1

Global features:
Inputs: 4 analog channel, 1Mohms, 20-25pF (T.B.D) + 1 external trigger (50 Ohms, 3.3-5V input)
Output: 1 trigger output (50 Ohms, 3.3V output), to chain 2 scopes
Sampling: 100 Msps (200 Msps T.B.D) on all 4 channels, not interleaved, 8 bits resolution
Bandwidth: 20 Mhz (40-50 MHz T.B.D), limited by analog antialiasing filter
Memory depth: 16,7 millions samples per channel (up to 835ms acquisition time)
Vertical: 20mV/DIV to 5V/DIV inputs, x1 and x10 probes modes
Coupling: DC, AC, GND
Horizontal: 20ns/DIV to 50ms/DIV
- 20ns/DIV to 2ms/DIV : 100MSps sampling
- 5ms/DIV to 50ms/DIV : 10MSps sampling (100Mhz internal + min/max decimation filter)
Mega zoom: zoom-in and zoom-out capacity:
- capture at 2ms/DIV, zoom up to 20ns/DIV after capture
- capture at 50ms/DIV, zoom up to 200ns/DIV after capture
- Slow and Fast browse of the captured samples
Measurements: min, max, peak-to-peak, average, RMS, signal frequency, 512 points FFT, horizontal and vertical cursors
Math: A+B, A-B, A*B (T.B.D)
Trigger: rising and falling edges, internal (CH1 – CH4) or external, trigger output
Calibration: for each individual channel and each individual caliber:
- automatic (vertical internal offset)
- manual (vertical channel precision) an external precision voltage source and multimeter are needed
Vertical precision after calibration: <1%
Connectivity: USB, firmare update, screenshot capture (T.B.D)
Date and time: Internal RTC (T.B.D)
Autonomy: about 5 hours, integrated 3000mAh 12V Li-ion battery
Power input: DC 15V-1A, 7W consumption (15W while charging).
Screen: TFT TN 7” 800x480 60Hz 16bits colors. Average of 45-60 FPS under nominal conditions.
HMI: Rotary encoders and quiet push buttons
Dimensions: 240x115x30mm
Programming: 20pins 1.27 connector + ribbon cable + custom PCB for SWD and JTAG (STM32/ Spartan7)

Development history:

In late 2024 I decided to make my own oscilloscope. For fun and to learn. Old dream. This is how looked like the previous version (please don’t judge the orange buttons):

2746951-2

I have a electronics engineering masters degree and a 10+ years experience background in a multinational corporation. Having changing lifestyle and stopped working for a while, I used this free time to start this project.

It was made using KiCad, FreeCAD, JLCPCB and 3D resin printing. 7” screen. It samples at 100MS/s (10MS/s with decimation filter on larger timebases), embeds a Spartan7 coupled with DDR3, a 180MHz STM32 with TFT interface and SDRAM for video memory. It runs bare metal without any OS, not even using HAL drivers from ST (part of the challenge) and if the drivers are clean the scope logic part is a little messy. I wrote the graphic library myself and use all the DMA I could. Runs smooth 20 to 60 FPS.

It has all basic function a scope could have. It has run / single capture trigger (save up to 128 millions samples), 20ns/div to 20ms/div, different vertical calibers, FFT, vertical and horizontal cursors, possibility to navigate the stored samples in single capture mode, basic measurements. Work still need to be done to integer USB (save screenshots), auto calibration and some bootloader stuff for FW upgrade, but I’m kinda slow at wrinting code. Also a new PCB version is needed with some corrected issues.

It was my first time using FPGA at all and doing such a complex project. First time with DDR routing, with BGA, TFT display etc. It took long, very, very long hours until late. I got quite happy when I went from zero HDL knowledge to a working DDR3 at 400MHz. Also I started from absolute scratch. I don’t even have an oscilloscope myself and didn’t use any.

However I started to spend much less time on it because I’m not sure where this will lead me to, will I gain any benefit from all this work. Does it worth it. At first it was to learn new skills for employability, but I’m not sure I wanna work for a company again. In the other hand, it is now a nice prototype, and it would be stupid to drop all this work. But from a prototype to a final product the step is huge. Another drawback is that it’s also getting complicated on the financial point of view.

Anyway, I though it could be nice to share a bit. Here is what it looks like from the inside.

2746955-3

Offline mikerj

  • Super Contributor
  • ***
  • Posts: 3659
  • Country: gb
Re: Homemade portable oscilloscope
« Reply #1 on: February 03, 2026, 11:29:39 am »
Super nice job, that's a real accomplishment to be proud of  :-+
 
The following users thanked this post: Nolly

Online SteveThackery

  • Super Contributor
  • ***
  • Posts: 2998
  • Country: gb
  • 50 year novice
Re: Homemade portable oscilloscope
« Reply #2 on: February 03, 2026, 11:50:11 am »
Great work!
 
The following users thanked this post: Nolly

Online Whales

  • Super Contributor
  • ***
  • Posts: 2618
  • Country: au
    • Halestrom
Re: Homemade portable oscilloscope
« Reply #3 on: February 03, 2026, 12:05:36 pm »
The orange buttons are amazing, don't doubt yourself, that's awesome.

What's the ADC?


> In the other hand, it is now a nice prototype, and it would be stupid to drop all this work.

Are you of the viewpoint that your time so far is wasted unless you make a perfect product, manufacture, stock, sell and support it?  That's silly, that kind of thinking will leave you permanently unsatisfied because there will always be a bit more you can do.  1GS/s, 2GS/s, multiple screen sizes, packaging, better updatable firmware, USB interface streaming, ...

What you have made is impressive and will continue to be impressive for a long time, and you have a working prototype to show off & use.  A scope in the hand is worth two in the dreams.
 
The following users thanked this post: daqq, tooki, Nolly

Online tunk

  • Super Contributor
  • ***
  • Posts: 1389
  • Country: no
Re: Homemade portable oscilloscope
« Reply #4 on: February 03, 2026, 12:23:37 pm »
Great work!
If you don't end up making it a product, would you publish your design?

From the second picture, it looks like the ADCs are two AD9283. 
 
The following users thanked this post: Nolly

Offline coromonadalix

  • Super Contributor
  • ***
  • Posts: 8487
  • Country: ca
Re: Homemade portable oscilloscope
« Reply #5 on: February 03, 2026, 12:38:24 pm »
yep really good work there,   love the orange buttons, it gives some character  loll    :-+ :-+ :-+


your 4th iteration and up could interest many people here, you could even sell some kits, surely it could compete with others on the market ?
« Last Edit: February 03, 2026, 12:41:58 pm by coromonadalix »
 
The following users thanked this post: Nolly

Offline ftg

  • Frequent Contributor
  • **
  • Posts: 437
  • Country: fi
    • ftg's RF hax paeg
Re: Homemade portable oscilloscope
« Reply #6 on: February 03, 2026, 01:16:55 pm »
Very impressive project.
I'd love to read more about the project and the development process.
 
The following users thanked this post: Nolly

Online SteveThackery

  • Super Contributor
  • ***
  • Posts: 2998
  • Country: gb
  • 50 year novice
Re: Homemade portable oscilloscope
« Reply #7 on: February 03, 2026, 02:52:35 pm »
I'd love to read more about the project and the development process.

Me too, and you could sell the story of its development to an electronics mag. People will find it inspiring.
 
The following users thanked this post: Nolly

Offline 2hda3aw5h@mozmail.com

  • Newbie
  • Posts: 8
  • Country: 00
Re: Homemade portable oscilloscope
« Reply #8 on: February 03, 2026, 03:58:12 pm »
Amazing job, a dream of mine as well. and the fact you did it bare metal is just the cherry on the top.

even though, I am not a professional at all.
I suggest to sell it as a product if you can make it affordable and less time consuming.
Or sell it as a teachable course (someone suggested on electronics mags).

Quote
At first it was to learn new skills for employability, but I’m not sure I wanna work for a company again

why not? you seem to have very professional skills that any job will take you.
 
The following users thanked this post: Nolly

Offline d-el

  • Regular Contributor
  • *
  • Posts: 228
  • Country: ua
Re: Homemade portable oscilloscope
« Reply #9 on: February 03, 2026, 04:12:26 pm »
Looks nice. What about the amplitude frequency response?
 
The following users thanked this post: Nolly

Offline Salitronic

  • Regular Contributor
  • *
  • Posts: 60
  • Country: mt
  • Electronic Design Engineer
    • Salitronic | Electronic Design Services
Re: Homemade portable oscilloscope
« Reply #10 on: February 03, 2026, 04:32:26 pm »
That’s a seriously impressive project for something done in your free time - great job!. The board layout is really neat and the UI looks great. You definitely shouldn’t abandon it, although I get that turning this into a product is a huge effort and expense, and with the amount of low-cost oscilloscope competition in this space it would be very hard to reach a competitive price point.
 
The following users thanked this post: Nolly

Offline NollyTopic starter

  • Contributor
  • Posts: 18
  • Country: fr
Re: Homemade portable oscilloscope
« Reply #11 on: February 03, 2026, 09:52:56 pm »
First thanks a lot for your encouragement. I didn't except so many replies!
It means a lot since I haven't disclose any of this until now and got zero feedback so far.

I'll try to reply to each of you in one message.

ADC are AD9283 indeed, 100Mhz version. It's a very simple 8 bits parallel, quite old ADC, but good to start with. It's driven by the FPGA.
In the first hardware version there were no FPGA and I used the STM32 with DMA on one Port (all 16 bits) and a complex setup of timers. However storing both samples and graphics on external SDRAM I couldn't get higher than 2MS/s.
Analog chain should sustain at least 20MHz. I haven't tested it fully yet. Max amplitude is +/-40Vpp with x1 probe.

You are correct! It's always possible to do better, add new features and it's hard to know where to stop. Also going to production alone for such product is an insane amount of work.
It involve many testing (functionnal, EMC, environment), debug, more FW functions, certification, making expensive plastic molds, setting a supply chain, packaging, distributors, support and continuous engineering..

I am not sure yet what I will do with this. I will probably no go for to a product for the reason above. The FW alone is gonna be a one man year job.
I actually have no idea what I will do with this. :D
I thought about releasing it as development/learning platform, and/or as open hardware.
Maybe some kickstarter.
The 4th iteration is indeed the most interesting!

If you are interested, I will write more about the development process from the very start.
But I must warn, that I am quite a slow poster :)

Quote
Quote
At first it was to learn new skills for employability, but I’m not sure I wanna work for a company again
why not? you seem to have very professional skills that any job will take you.
Thanks! It's just that I would prefer to work for myself than for a boss :)

 
The following users thanked this post: MK14, 2hda3aw5h@mozmail.com

Offline PCB.Wiz

  • Super Contributor
  • ***
  • Posts: 3132
  • Country: au
Re: Homemade portable oscilloscope
« Reply #12 on: February 04, 2026, 12:06:32 am »
Impressive design.
If you are doing a hw revision, my suggestion would be to improve the time base, so it can give good precision frequency counter display almost for free.
100MHz tcxo are not so common, but you can use a very common & low cost 26MHz tcxo with Si5351/MS5351/MS5352 pll to derive your 12MHz &100MHz

Addit: I forgot the spartan 7 has a decent PLL, so you could feed in a TCXO and derive the 100MHz from that.
(Clipped sine could go via 2GU04 + RC)
« Last Edit: February 04, 2026, 05:38:40 am by PCB.Wiz »
 
The following users thanked this post: Nolly

Online Doctorandus_P

  • Super Contributor
  • ***
  • Posts: 5063
  • Country: nl
Re: Homemade portable oscilloscope
« Reply #13 on: February 04, 2026, 12:09:29 am »
I'm quite impressed just by the looks of this. I've seen a whole lot of "diy" level scopes, and I rarely see any scope which has a decent front end. Gabotronics has collected a lot of links to DIY level scopes (40+ or so).

I wonder what the BOM cost of this is, and what it would cost as a final product... But still, Sample rate and bit depth is nothing special for these modern times. As a real product it would have to compete with the handhelds from Owon and Hantek or the Zeewei. That would put it in the EUR 150 to EUR 200 range, and then you're still an uknown / new brand name.

To be successful as a real product, it needs something that sets it apart from these other products. The most logical option would be a connector that makes it possible to add multiple of these scopes together into a modular system. Scopes with more then 4 channels are quite rare and expensive. A way to stack and synchronize a bunch of these scopes will make it interesting to a different marketing segment.

And apart from just more channels of the same, a higher resolution ADC would also be nice. Or even a version with no ADC at all, but buffer for as a Logic Analyzer instead. Yokogawa SL1000 for example has a modular system with a bunch of different modules. Or go fully modular such as with the PXI modules.

Adding Ethernet with full SCPI control would also be a nice addition. I also like the idea of having a manual control panel with both buttons and rotary encoders, but using the bigger and higher resolution of a PC monitor for the graphical output.

PXI is outside of the reach of any normal hobbyist, and I guess there are quite a lot of people which would like it, but are scared away by the cost of a PCI rack too.

My dream is an Open Source rack system with a similar setup (but lower performance) then a PXI rack. But it's difficult to get something started to a point it has become a usable product and attracts interest from others. And such a product requires quite a lot of software development, and this puts it beyond the reach of a single person.
 
The following users thanked this post: Nolly

Offline LaserSteve

  • Super Contributor
  • ***
  • Posts: 1580
  • Country: us
Re: Homemade portable oscilloscope
« Reply #14 on: February 04, 2026, 04:18:03 am »
Feature request from a vector artist if you go commercial some day.  RGB input in XY mode with variable persistence. In other words, Color Vectorscope.  Or even two color "z" input would be an improvement, simulating the dual phosphor tubes that were a fantastic but short lived Fad in the 60s and 70s.

Very Cool Project.

Steve
« Last Edit: February 04, 2026, 04:28:15 am by LaserSteve »
"Programming is more than an important practical art. It is also a gigantic undertaking in the foundations of knowledge"

Adm. Grace Hopper
 
The following users thanked this post: Nolly

Offline CatalinaWOW

  • Super Contributor
  • ***
  • Posts: 6047
  • Country: us
Re: Homemade portable oscilloscope
« Reply #15 on: February 04, 2026, 05:10:58 am »
Very impressive work.  Don't know that I would recommend trying to make a product out of this as an oscilloscope, but there are probably niche markets that would do well enough.  Some that strike me as possibilities (some are variants of thoughts above).

1.  Kit for hobby types.  Not competing on performance, or directly on price but attracting those who want to know a bit about the innards of their tools and want the "built it myself" cred.  Might be tough to partition this so there was electronic assembly, but there is mechanical assembly and possibly calibration.

2.  Development platform for those who want more or unique features.  This would mean opening up the all or a major portion of the code.

3.  Farm it out for local production for countries that make it hard to import this type of gear.  Think pyramid marketing.

4.  Customize it for specific applications.  HVAC diagnosis and repair.  Automotive repair.  Audio.  And a myriad of others.   This would get you out of direct competition with an already fairly crowded market.

If you decide to get back into selling your design skills, either in the corporate world or as a consultant this project makes a pretty good calling card.
 
The following users thanked this post: Nolly

Offline PGPG

  • Super Contributor
  • ***
  • Posts: 1207
  • Country: pl
Re: Homemade portable oscilloscope
« Reply #16 on: February 04, 2026, 12:15:12 pm »
I actually have no idea what I will do with this. :D
.....
Thanks! It's just that I would prefer to work for myself than for a boss :)

I think I know what you can do (or at least consider), if you want.

In 1992 we (I with my brother) have made DSM-51 = Dydaktyczny System Mikroprocesorowy (Didactic Microprocessor System) destined to learn/teach 8051 assembler programming.
I have found two links at some schools showing it:
https://zs3ostrowiec.pl/komputeryzacja2.htm
http://zsp3zamosc.internetdsl.pl/index.php?option=com_content&view=article&id=87&Itemid=48&limitstart=5
Those times many schools in Poland didn't had money to buy even a simplest IBM-XT computers (hard to explain socialistic economy - as academic teacher I earned $13 per month (not a mistake) and IBM-XT without HDD price was $600 (with 20M HDD $800)). Because of this our system (using 2 lines display) allowed to write assembly program (you were selecting everything from menu) and then run it in full speed or step by step. For those who had IBM (with time there were more and more) I have written 8051 assembler and simple environment allowing for debugging (step by step with presenting all registers state after step) programs written in assembler code running in our system (code was not simulated at PC but really run in DSM-51).
Our system was practically the only one schools were using here. Our main concern when designing it was to make it as much 'idiot-proof' as possible (it is important in schools).
In 2006 we had got big government order for many of them. On this occasion, we handed over the distribution of our system to another company that normally deals in measuring equipment. Few years later this company asked as if 'by chance' we may be have something other to be offered for schools because from their contacts with schools they see that the opinion about our system is that if you wrap shit in paper and sign it as offered by us, schools will buy it without asking any questions.

I planned to make 'Analog Education System' having simple few voltage supplies, sine and square generators, multimeter and very simple oscilloscope on board. Everything controlled by program at PC.
The system should have in its center a area for circuit under test and there should be many such circuit samples.

Even our DSM-51 is much simpler device than typical PC, but because it is not mass production and have features not replaceable by other devices can have the price like PC.
Friends working at university asked if we can make such system for more modern microcontrollers. The reason - they tried to use typical starter boards (much cheaper), but they with contact with students lasted a year or two while from our systems bought 15 years ago 0 was broken.
Busy with other things, we didn't found time to make it (modern processor systems or analog education system) and will not find it, I know.

What do you think of making (really good = 'idiot proof' !!) Analog Education System and fight for the education market?



« Last Edit: February 04, 2026, 01:18:31 pm by PGPG »
 
The following users thanked this post: mikerj, Nolly

Online mawyatt

  • Super Contributor
  • ***
  • Posts: 5756
  • Country: us
Re: Homemade portable oscilloscope
« Reply #17 on: February 04, 2026, 02:24:28 pm »
.....
What do you think of making (really good = 'idiot proof' !!) Analog Education System and fight for the education market?

The early Analog Discovery "Systems" might be considered for the educational market.

Best
Curiosity killed the cat, also depleted my wallet!
~Wyatt Labs by Mike~
 
The following users thanked this post: Nolly

Offline sw_guy

  • Regular Contributor
  • *
  • Posts: 62
  • Country: fi
Re: Homemade portable oscilloscope
« Reply #18 on: February 05, 2026, 05:07:17 am »
UI looks impressive!
 
The following users thanked this post: Nolly

Offline NollyTopic starter

  • Contributor
  • Posts: 18
  • Country: fr
Re: Homemade portable oscilloscope
« Reply #19 on: February 05, 2026, 10:27:54 am »
Thanks!

It already integrates a frequency meter. I got quite a decent precision, which I limited to 3 digits.
I haven't tested above 1MHz though. The 100MHz crystal costs 0.4$. With PLL I create a 200MHz internal clock for the DDR3 IP from AMD all all the logic, but might go down with 100MHz due to power consumption and difficulties to close all the timings.

About 250-300$ per prototype (very small quantities) including shipping and VAT. It would need to get about 3 times cheaper to be competitive.
I actually though about cascading scopes. But you would need a bigger screen, it's a different product.
I noticed portable scopes with decent screen size are rare. They have tactile screens or some non-rotating buttons. This is where I would go. Oranges rotating buttons :) Also most equipement are huge. Really, their depth is huge. I would go for compactness.
The PXI modules are as you say out of reach. Even Ethernet is complicated. Actually each time you add an interface, or an idea, you need code behind, tests, maybe a software on host side. Better to have a fully tested, easy to use limited range of features than a bunch of mess.

No idea what is a color vectorscope, but it looks beautiful on google images :)

Kit for hobby or open hardware platform would be the go, I guess. For a specific application, you need lot of knowledge about that specific field usage, which I haven't.
PGPG, targetting state owned companies or universities or whoever has huge budget and buyers which has no clue what they are bying is always a good idea (for the seller). Very often they overpaid without comparing anything because of established rules and buying channels. In that case, it's the company your are taking about which will take the huge margin. Project is still interesting though, but at the moment to far from mine.
It's like a compact station for learning and development.
I might be good to target development, not learning. Developping hardare quicky get messy (cables and instruments everywhere, breadboards..) and expensive.

I spent some time on the UI because I like beautiful things, and because they must be beautiful and easy to use.  ;D


But I said that I will talk about about the development process, so here it starts! I describe the first version.

2753583-0

I wanted the first version to be dirt cheap, and without FPGA, just to get to start with. All the design is based on that. I didn’t use any devboard and made the PCB straight.
It is made of 2 PCBS: the CPU one (4 layers) and the HMI one (2 layers). They connects through PFC 50 pins connector and cable. I wanted to learn Altium but for now I decided to stay with Kicad: Altium is costly and heavy.

PCBs were made at JLCPCB. Their PCB got more expensive above 100x100mm, so I stick to this size. I used 0.3mm vias, maximum number of “basic” components they have in stock, only top assembly, thru-holes I soldered myself. I used many chineses/asian components (DC-DC, OPA, passives, connectors…). Disclaimer: they all work but lack documentation and I’m not sure about their testing.

I designed the case using FreeCad, and get it resin 3D-printed also by JLCPCB, with the case background being resin-transparent because it’s stylish. I have no mechanical background but I read about plastic injection and tried to respect all the basic rules that are used for plastic molding, like draft angles, demolding directions, wall thickness… even if I only get it printed for good practice. I printed the buttons, some platic holder for them, and used another silicon-ready-button-stuff from Aliexpress (similar stuff is inside your TV remote) as press buttons. I tested the final assembly exporting STEP files from Kicad into Freecad.

I got the screen from Aliexpress. I had no idea about TFT screen (protocols, voltage, pinouts). I decided to use a TFT 800x480 with 50pins RGB888 FPC connector I found for cheap. I didn’t want to use any ready module. So the screen has no BRAM, no voltage generator, nothing. I did create all the transistors polarisation voltages (15V, 10V, 4V, -7V) and their sequencing.

I used a STM32F429 as MCU because it integrates a TFT controller with the possibility to use external SDRAM. I had never used any of theses before. I chose the 208pins LQFP and litterally used almost all pins. Like I had only 6 GPIO left. TFT is using full RGB888 protocol (8 wires per color) plus the pixel clock, sync  and other controls: 33 wires. SDRAM is routed full 32bits: 56 wires. 26 wires from the HMI board. 17 wires to the ADC. About 20 wires for front-end control…

The scope always must samples at maximum frequency to respect Nyquist. It is problematic for slow timebases: it create a lot of samples. Internal SDRAM memory is not enough, so external SDRAM is used. I knew from start that I will got problems sharing SDRAM for graphic memory and samples. I just wanted to know, how bad will it be. I expected 10MS/s, I got less.

There are basically two modes of operation for the scope:
The autostop mode, and the continuous mode.
  The autostop mode captures a fixed quantity of samples. It is the “run” mode from user point of view. The quantity of samples depends on the horizontal resolution (seconds/div). When the samples are captured, they are processed and put on screen. Then repeat.
  The continuous mode captures continuously. It is the “trigger single” mode. It starts capturing when the user press the “start” button and wait for a trigger event. Onces it get a triggerd, it captures a fixed amout of samples after this event, having also in memory what happened before this event. This mode uses a circular buffer.

To make thoses modes work, I used a bunch of STM32 timers linked between themselves. They control the DMA transfer, from GPIO port (all 16 bits of data where on a single GPIO port) directly to the external SDRAM. The circular buffer is created using interrupts, to change the DMA destination addresses accordingly when the memory is getting full.
As it is not possible to control when the TFT DMA controller also access the memory, it causes bottleneck: even with SDRAM at 96MHz (STM32 overclocked) I couldn’t sample faster than 2MS/s. But it’s maybe also the DMA system bottleneck. I don’t know.

The trigger is analog: the output an external comparator (one input being driven by the STM32 DAC and the other by any of the 2 inputs channels) is used as a trigger input of for the timers: when a trigger is detected, the number of the sample (trigger info) actually being written into the SDRAM is stored. It helps to know when a trigger happened.

The analog input stage is composed of selectable attenuators, buffer, amplifiers, use analog multiplexers, and additionner for the vertical position. Well it’s quite messy actually. I had some troubles with probe compensation, buffer saturations and ADC saturation. They are getting corrected on the 2nd and 3rd version but I still have trouble with AC input mode, due to offset currents and high impedance. However, For later versions I might simplify all that thing drastically with PGA or similar. It substantially increases the cost, though.

Well that’ it for today. Here a photo of the first version. Later I’ll speak about starting this up and the problems I got. There were many, I let you find some of them on the photo…  :-BROKE
« Last Edit: February 28, 2026, 12:12:39 am by Nolly »
 
The following users thanked this post: mikerj, 1001, Grandchuck, mawyatt, robert.rozee, pcprogrammer, dmowziz, adinsen, ftg

Online Grandchuck

  • Super Contributor
  • ***
  • Posts: 1186
  • Country: us
Re: Homemade portable oscilloscope
« Reply #20 on: February 05, 2026, 01:39:28 pm »
Nolly, thanks for sharing!
 
The following users thanked this post: Nolly

Online pcprogrammer

  • Super Contributor
  • ***
  • Posts: 5954
  • Country: nl
Re: Homemade portable oscilloscope
« Reply #21 on: February 05, 2026, 05:34:46 pm »
Quote
PCBs were made at JLCPCB. Their PCB got more expensive above 100x100mm, so I stick to this size.

So you noticed that too.  :-+

I like JLCPCB and they are still the cheapest even when the PCB is above the 100x100mm. My experience is limited to 2 layers without assembly though.

As an option for a new version of your scope you could look into Allwinner MCU's. They are reasonably cheap. A bunch of the cheap Chinese scopes both portable and desktop are created around the F1C100s, which is an older ARM architecture but still delivers reasonable performance. A beefier one is the R11, but for my next project I'm going with the T113-S4 (T113M4020DC0). It has a dual core ARM-A7 running at up to 1GHz, a Risc-V core running at up to 900MHz and a HiFi4 DSP core plus 256MB DDR3 memory at up to 800MHz. There is no datasheet for it, but there is for the T113-S3 which is the smaller version with only the dual core ARM-A7 and the HiFi4 DSP and 128MB DDR3.

There is a linux variant available for it that allows for easy use of things like networking and USB host.

Offline NollyTopic starter

  • Contributor
  • Posts: 18
  • Country: fr
Re: Homemade portable oscilloscope
« Reply #22 on: February 10, 2026, 09:36:35 am »
Yes I’m aware of these AllWinner chips. They are quite interesting, cheap, with integrated DDR. Unfortunatelly working with chineses chips without datasheet is a no go. They are for chinese market. Also, I’m not familiar at all yet with all that linux stuff and don’t need it for now.
I want to control and understand everything, this is why I’m going little step by little. I need to understand everything and to make sure things are optimised. Now, I will need to add FreeRTOS, a fat system, and bootloader. I don’t need a more powerfull chip for that. Later, I’ll probably go for the STM32H7. Routing DDR3 is also part of the learning process.
They price increase above 100x100 but its not that critical when you go to 0.2mm holes, ENIG, and SMT assembly. It’s just a few dollars.

So here continues a little the story about the first version.

So I got the 2 boards (on photo) routed on kicad, and sent to assembly. The enclosure too. No issues with the enclosure, except with the screws. I will be using metallics inserts for the next version.
I received the boards rapidly. No issues with assembly. Now the boards are on my table, and all I have is a power supply and a multimeter. How to check for short-circuits? Connect a few seconds, finger on each component. Bingo. The SDRAM got super hot very quickly. I interverted a VCC and GND pin. So I had to cut the pin on the board.

Then, randomly:
-3.3V didn’t work. The behavior of on EN pin was not clearly specified in the datasheet. Forgot all pull-ups on open-drain outputs of LM339. Forgot the decoupligg caps on VCAP pins of STM32. Wrong VDD and Vref for the ADC. Inverted EN signal on 74HCT4051 multiplexers. Inverted pins for relays command. Some OPAs oscillating. Some AOP on analog path saturating too early. Attenuation network lacked tuning options. Mirrored FPC connector. And so on.

I finally made all the hardware work as expected. Then a long route of firmware started. I wanted to understand how all the flow works, so I started a project a simple C/C++ and without CubeMX, but on CubeIDE. I used a cheap probe with ODB2 server for debug. Played with cmake, the linker files for the external SDRAM. Wrote all the low-level drivers at register level without HAL. Made the TFT work. Then showed a BMP on it. Then started to build a simple graphics library. Then made the SDRAM work. Set up all the timers, speak with the ADC. Little by little, I made it work, optimizing step by step. Until the last photo. It still had many flaws, imprecision, but was usable to watch signals. I pushed it all to the maximum of optimisation, using all DMA I could (also DMA2D for graphics). Even pushed the 180MHz STM32 to 240MHz. Got only 2MSps, at 30/60FPS.

2762007-0 2762011-1 2762015-2

Time to add an FPGA!
Now I will write about the current version with FPGA.

First, I corrected all the hardware issue (also creating a few new, of course). This version was supposed to work both with FPGA and MCU talking to the ADC, so the ADC bus is shared between STM32 and FPGA. Later on, once FPGA validated, I removed all the code from the MCU, as it was too complicated to maintain, and now it’s working only with the FPGA.

I really had no idea where to start with FPGA. But after a few days of search, I decided to go for Spartan7 because it uses Vivado and not some old software. It also supports DDR3. It was time to go for BGA as well. I also replaced the STM32 and SDRAM with BGA variant. I went down to 0.2/0.35 vias, 0.1 tracks. Everything still on 4 layers. For DDR3, I first used Vivado MIG IP wizard to understand the pin assigment.  I also double-checked the schematics with some other boards (Narvi s7 from Numato Labs and CMOD s7 from Digilent).

For the DD3 routing, I followed all recommendations I could found everywhere, expecially from AMD. First, I put the chip reasonably as close as possible to the FPGA, facing the FPGA bank used for DDR3. Then, I optimized the pinout with Vivado so that lines crosses together the less possible. All signals are routed on external layers only. Each bank on its layer. Trace are 0.12mm, they have 2 to 3 width separation to avoid crosstalk. They are all rounted withing a <12ps propagation delay and <2ps for the differential pairs. All lines less than 25mm. 56 ohms impedance single ended, 105 ohms differential (I used JLCPCB stackup information). As I used only one package and frequency is only 400MHz, I use no termination resistor. Plus, I didn’t have space for this.

Everything else on the board had minor changes. Here is the global system hardware architecture:

2762003-3
« Last Edit: February 10, 2026, 09:50:10 am by Nolly »
 

Offline excitedbox

  • Regular Contributor
  • *
  • Posts: 106
  • Country: de
Re: Homemade portable oscilloscope
« Reply #23 on: February 10, 2026, 12:13:55 pm »
Such an amazing project. I wonder if there is a way to get the cost down by switching the FPGA for some other ASIC like those cheap SDRs which use an old TV Tuner chip if I remember correctly. Maybe some old DSP + a low cost SOC. Obviously ADCs will always be a big expense once you get into the higher speeds.

A few years ago I advocated for an open source license "instrument ASIC" which would have been useful for this, as they have become the big driver for the decrease in scope cost in the last year or so. Back then the opinion on the forum was that nobody would be interested so I gave up but in my research I found several examples of custom 10-20GS ADC ASICs contracted by research projects (Like CERN etc.) with a cost <$40.
 
The following users thanked this post: Nolly

Offline langwadt

  • Super Contributor
  • ***
  • Posts: 5631
  • Country: dk
Re: Homemade portable oscilloscope
« Reply #24 on: February 10, 2026, 01:49:44 pm »
did you consider a Zynq7000? it's basically an Artix7 and a cortex-A9
 
The following users thanked this post: Nolly


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf