ThunderScope GitHub Repo
Go to file
Aleksa Bjelogrlic b525bbf59c Rev.5 Front End Test Board WIP 2024-08-23 00:36:11 -04:00
Docs Update LiteX.md links 2024-08-17 14:05:46 -04:00
Firmware Add LiteX setup guide to docs. Update Litex firmware submodule 2024-08-16 10:00:54 -04:00
Hardware Rev.5 Front End Test Board WIP 2024-08-23 00:36:11 -04:00
Software Updated ngscopeclient submodule 2024-07-09 21:38:59 -04:00
.gitignore Added bitstream outputs 2024-05-11 16:08:22 -04:00
.gitmodules Updated gitmodules correctly 2024-06-16 23:07:16 -04:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2024-04-30 01:20:20 -04:00
LICENSE Create LICENSE 2021-10-28 20:15:38 -04:00
README.md fix typo in README 2024-08-20 11:20:38 +08:00

README.md

ThunderScope

Low-Cost Four Channel 1GSPS Oscilloscope using Thunderbolt/USB4 to stream data to PC for processing and display.

Join our development discord server

We are now at #thunderscope:matrix.org on matrix or #thunderscope:libera.chat on IRC as well!

Some older long-form documentation is on the Hackaday.io project page

Get the hardware through our crowdsupply page when we launch:

Catch up with these videos on the project:

TEARDOWN 2023 - Open Sourcing the Secrets of Oscilloscope Design

Hackaday Supercon 2023 - A Circuit to Measure Circuits: How do Oscilloscopes do it?

Teardown Session 39: ThunderScope

Quick Start Guide

XDMA

These are instructions for the XDMA gateware, which is currently the most stable gateware and driver.

  1. Install the XDMA driver for Linux or Windows
    • On Windows, first run Bcdedit.exe -set TESTSIGNING ON in administrator powershell and restart your computer
      • Then use the MSI installer, when asked if you want to use polling, click no
    • On Linux, run sudo make install in the xdma directory
      • Run make in the tools directory
      • Create a udev rule so you don't have to run everything acessing the hardware as root:
        • create /etc/udev/rules.d/70-thunderscope.rules file with the line ACTION=="add", SUBSYSTEM=="xdma", TAG+="uaccess"
      • With a TS connected, run sudo ./load_driver.sh in the tests directory
        • Output should be The Kernel module installed correctly and the xmda devices were recognized.
  2. Build TS.NET.Engine using the build scripts
    • Dependences for build scripts on Debian/Ubuntu Linux: sudo apt-get install -y dotnet-sdk-8.0 libgdiplus
    • On Windows, should just need Visual Studio with the C# plugins
    • Copy appsettings.json and thunderscope.yaml into the same directory as the TS.NET.Engine application
  3. Install ngscopeclient, following the instructions in their user manual
  4. Run TS.NET.Engine and ngscopeclient
  5. Add ThunderScope in ngscopeclient under Add -> Oscilloscope with "thunderscope" Driver, "Twinlan" Transport and "Localhost:5025:5026" for the Path

LiteX

Follow the instructions in the LiteX guide to build the gateware and software for running LiteX firmware on the Thunderscope.

LiteX Build and Setup Guide

Troubleshooting

If you are getting under ~1000MB/s throughput on Linux, try turning off VT-d (Intel) or IOMMU/AMD-Vi (AMD) in BIOS or using "intel_iommu=off" in GRUB (Intel)

Beta 2 Front End Rework

Remove the covers on the front end shielding cans, repeat the steps below for each channel.

Screenshot of 3D View of Beta 2 Front End, C30 Labeled With "1", C26 Labeled With "2"

  1. Replace "1" with a 220pF 50V COG 0402 Capacitor (GCM1555C1H221FA16D), this will flatten the crossover response and eliminate peaking for square waves under ~100kHz.
  2. Replace "2" with a 1.2nF 100V C0G 0603 Capacitor (GCM1885C2A122FA16D), this will increase the frequency for which the maximum 100Vpp input voltage rating applies.
  3. Replace "3" with a 50Ω 0402 Resistor, this will eliminate peaking past 300 MHz in the frequency response

Baseboard Hardware

Revision Label Status Location
Rev.1 N/A DEPRECATED Hardware/Altium/Thunderscope_E
Rev.2 N/A DEPRECATED Hardware/Altium/Thunderscope_Rev2
Rev.3 Alpha DEPRECATED Hardware/Altium/Thunderscope_Rev3
Rev.4 Beta 1 ACTIVE Hardware/Altium/Thunderscope_Rev4
Rev.4.1 Beta 2 ACTIVE Hardware/Altium/Thunderscope_Rev4.1

FPGA Module Hardware

Revision Status Location
TE0712 ACTIVE Trenz Electronics TE0712 Module, 100T or 200T Varients
Rev.1 DEPRECATED Hardware/Altium/FPGA_Module
Rev.2 ACTIVE Hardware/Altium/FPGA_Module_Rev2 or Hardware/KiCad/FPGA_Module_Rev2

Firmware

We have two types of firmware, LiteX and XDMA. We are in the process of updating the LiteX firmware to work on the latest hardware, and we will use it moving forward. Until then, use the XDMA firmware if you are not working on LiteX.

TODO: Table of Beta Unit serial numbers with module types and firmware locations

Serial Numbers Module Type XDMA Firmware Location
TS0004, TS0006, TS0015 TE0712 100T Firmware/XDMA/output/xdma_prj_100t_full.mcs
TS0007, TS0008, TS0011-TS0014 TE0712 200T Firmware/XDMA/output/xdma_prj_200t_full.mcs
TS0009, TS0010, TS0016-TS0018 Custom Rev.2 Firmware/XDMA/output/xdma_prj_50t_full.mcs

Follow the instructions in the Software/xdma_driver_linux or Software/xdma_driver_win_src_2018_2 folders to install the XDMA linux or windows driver before proceeding with installing the rest of the software.

For LiteX developers, the Linux driver is stable. Windows and Mac drivers are in development.

Software

Our primary software is TS.NET, which takes in data from the hardware, triggers on it, and sends the triggered data over to ngscopeclient