This homemade scope is pretty simple and has proven useful. The MAX1000 (available from https://shop.vhdplus.com/ - Euro33.6) has an integrated 12 bit 1Msample analog to digital converter that can be multiplexed over eight inputs (about 3K logic elements used <20%).  This project was built on jlcpcb board ($8 with shipping), has 4 channel op amp buffering, adjustable gain, a couple channels of output frequency synthesis and eight logic level inputs.
 
The other major system component coverts fpga tty serial output  to usb cable, in this case a cp2102 module, to our desktop supporting a 2MBaus data rate as well as oscilloscope module power.  

System Specs
Sample rate - Up to 1Msampsec shared between active channels 
Trigger - First rising edge of channel 1 or none 
Trigger delay - 0% to 100% of sample time 
Signal Buffer - Up to 8K samples shared between active channels 

  The hardware
  EasyEDA has credible design tools and an extensive part library to make your own pcb about as easy as it can be. The project teams with jlcpcb to deliver manufactured boards to you for about $10 with two week delivery for five 100mmx100mm two layer pcbs.
  The pcb pictured has :
     1. four variable gain buffered oscope inputs
     2. max1000 altera max10 fpga module
     3. cp2102 usb serial interface module
     4. two two-pole filtered buffered outputs
     5. Four channels synthesized outputs  
  Rounding out the system hardware is a usb cable connected to a computer.

  The firmware
  The fpga is programmed and vhdl code compiled with the Altera Quartus Prime 21.1 lite edition software. This can be downloaded and run on the max10 fpgas for free. This software is of a professional industry standard, is pretty easy to install and well documented. This project is about 850 lines of vhdl, most of which are modules built by the software (pll, sram, etc - 300 code lines) and ip from previous projects (uart, textinterface, sine  lookup table, top level, memory map - 400 code lines). 

  The software
A program acts as interface between fpga, user control menu and output pipe to gnuplot. A snapshot of the user menu presented in a terminal is shown in the gallery. The software program sets up a 2Mbaud serial port to the fpga, writes a gnuplot header setting up graph axis, grid, labels, etc, synchronizes incoming data packet, processes the input stream to populate gnuplot data arrays then sends the plot commands. Several times per second updated packets from fpga are synchronized, piped to gnuplot and plotted. 
  The C program also has a menu system allowing acquisition and display parameters to be altered in real time.

The code can pretty easily be modified to
- add up to ten analog inputs
- add at least eight digital logic inputs
- add more trigger support options

  Repository