
ThunderScope开源复刻
简介
本项目为Aleksa在 https://hackaday.io/project/180090-thunderscope 上开源的项目「开源四通道示波器 ThunderScope」的复刻。
简介:本项目为Aleksa在 https://hackaday.io/project/180090-thunderscope 上开源的项目「开源四通道示波器 ThunderScope」的复刻。开源协议
:MIT License
(未经作者授权,禁止转载)描述
ThunderScope开源复刻
本项目为Aleksa在 https://hackaday.io/project/180090-thunderscope 上开源的项目「开源四通道示波器 ThunderScope」的复刻。本项目开源协议遵守与原始项目一致的
MIT license
。
该项目是一个8bit 1Gsps 四通道示波器,其中硬件的部分只涉及高速信号采集,并通过PCIe Gen2 x4通道发送给上位机(高性能PC),并通过高性能PC来处理信号并提供示波器的其他功能。该方法实现的示波器相对于传统示波器在信号处理上更为灵活,理论上只要电脑处理得动,就可以获得100%的波形采集率及比传统示波器高得多的采样深度。尽管PCIe扩展卡似乎只能插在机箱里,但如果有合适雷电接口解决方案,该示波器的灵活性会得到进一步地提高(。
如何高效地读本篇项目说明 —— 写给大忙人
硬件信息在立创EDA工程中;固件、驱动、软件、机械件等文件在网盘连接中。
注意事项和3D 打印外壳与组装有一些对你有用的信息。
有关于硬件的讨论你可以跳过,直接打样并贴片该工程即可。
你应该认真阅读FPGA固件与上位机驱动部分,并按照说明完成固件、驱动、软件的安装。
如同独立显卡一样,该项目的硬件并不是即插即用的,你需要固件与驱动等来让硬件正确运行。
你如果对本工程有所关心,请参考本工程其他部分的内容或私信联系。
目录
- 项目简介、原理解析与说明:介绍该项目硬件部分
- 底板:介绍底板子系统,讨论模拟前端的带宽与响应、电源噪声。
- XC7A100T核心板:介绍该项目使用的FPGA核心板,该核心板可被复用。
- 3D 打印外壳与组装:外壳文件,并介绍如何组装版本Thunderscope。
- FPGA固件与上位机驱动:介绍该项目固件、软件部分
- 编译、烧写 FPGA 固件
- 安装 XDMA 驱动
- 编译上位机驱动
- 编译、安装ngscopeclient开源示波器软件
- 连接ThunderScope
- 参考运行效果(PCB验证无误证明)
- 注意事项与TODO
项目简介、原理解析与说明
该项目电路主要由底板和 XC7A100T 核心板两部分组成,此外还包含一个 3D 打印外壳。主要部分的框图如下:
底板
底板和核心板:
底板(上图蓝色PCB)为面积10cm*10cm的四层板,在不需要加工艺边的情况下可以白嫖 PCB 打样(但如果要做 SMT 就必须加上工艺边,导致超过可以白嫖的尺寸)。
该底板上包括模拟前端、1 Gsps 8 bit ADC(HMCAD1511)、50 fs Jitter PLL(LMK05318BRGZT)、供电模块和PCIe连接器(金手指)等子系统。下文主要讨论供电与模拟前端等子系统。
模拟前端带宽测试
测试环境:PGA 的带宽不做限制,同时拆焊了 ADC 输入端的 500 MHz 低通滤波器。测量 BNC 接口输入电平到 PGA 后 IPEX 接口测量电平的衰减。
测试方法:100 Hz - 10 MHz的响应使用 Rigol MSO5000 系列示波器测量,10 MHz - 1 GHz的响应使用 Nano-VNA 测量。下图中已除去 PGA 和外部测量端接电阻造成的衰减(对整个测量过程近似为定值),只考虑阻容网络的衰减。
由于均没有使用非常专业的仪器设备,测量结果仅供参考。
50 Ω 通路(衰减 14 dB)
50 Ω 通路(衰减 14 dB)的 -3 dB 带宽为 830 MHz,但带内平整度看起来并不高。对比1 MΩ 通路的带内平整度,作者认为50 Ω 通路低频带内平整度不够好更可能是测量仪器驱动能力不足导致的测量偏差。
1 MΩ 通路(衰减 0 dB)
1 MΩ 通路(衰减 0 dB)的 -3 dB 带宽为 350 MHz,带内平整度较好,但在 100 MHz 以上有一个神奇的 3 dB 增益……这个在50 Ω 通路中并没有出现,目前推测为线路寄生电感和寄生电容之间形成的LC滤波器Q值太高导致的,应当在下一板中将继电器直通线上串接小电阻抑制振铃。
1 MΩ 通路(衰减 34 dB)
1 MΩ 通路(衰减 0 dB)的 -3 dB 带宽为 190 MHz,带内平整度较好。但在250 MHz 后衰减比迅速下降,信号上升至 -20 dB 左右。推测这主要是由于下半边电容接地过孔等效电感导致的,考虑在下一板改善该问题。
XC7A100T核心板
该项目还包含一个 XC7A100T-2FGG484I 的核心板,共引出 54 对差分线,板载两颗内存颗粒共 1 GiB 内存与FT2232 芯片,核心板可以直接通过 USB 调试。该核心板和底板通过两个 FX8-100S 板对板连接器连接,同时可以使用最多三个 M2 螺丝固定在底板上。在该项目中所使用到的所有子系统,包括JTAG调试烧录、固件烧录、LVDS信号输入、DDR3子系统均测试正常。
这个核心板只使用了六层板,有机会可以白嫖。
一些基本信息如下:
项目 | 说明 |
---|---|
FPGA | XC7A100T-2FGG484I |
RAM | 板载两颗 MT41K256M16TW-107 DDR3 内存颗粒,总容量 1 GiB,32 bit 位宽。 |
FLASH | 因 BANK 14 默认电压为 2.5 V,使用宽电压支持的 IS25LP128F 作为闪存。 |
IO | 该开发板默认引出 20+18+16 对差分线,其中:BANK 13为向下兼容更低规格的 Artix 系列 FPGA,未引出;BANK 14(默认 2.5 V)引出 20 对差分线,等长 1550 mil; BANK 15(默认 3.3 V)引出 16 对差分线,差分线间未做等长; BANK 16(默认 2.5 V)引出 18 对差分线,等长 695 mil。 |
GTP | 所有高速信号接口全部引出,但 Lane 顺序和官方 IP 默认的 4x PCIe 的 Lane 顺序正好相反(原理图符号上的 GTP Lane 的编号和推荐的 PCIe Lane 的编号正好相反是不是有点大病,而且 IP 里面的 Lane Reversal 选项不起作用(但还好可以通过在 impl 之前用 tcl 命令强制修改 PCIe Lane 的接法))。 |
供电 | 该开发板只需要从 BTB 或者 USB 接口输入一个 5 V 电源轨即可工作,1.0 V 核心供电采用 SIC431AED ,其余供电采用 TPS82130SILR 电源模块。默认电压 BANK 14、BANK 16为 2.5 V,BANK 15 为 3.3 V。如果您需要改变某个 BANK 的电压,BANK 14/15/16 也可以通过更改 5 mΩ 电阻的焊接位置,通过 BTB 对某个BANK 单独供电。 |
调试 | 板载 FT2232HQ,可以直接通过 USB 进行调试和烧写。也可以通过 BTB 将 JTAG 引到底板上。同时板载一个 3.3 V 供电指示 LED、一个 DONE 指示 LED、一个用户自定义 LED 和一颗 WS2812B RGB 灯珠。 |
3D 打印外壳与组装
打印文件参见网盘连接中的 外壳.stl
,要安装外壳还需要少量M2螺丝、M3螺丝和螺母。
要使用螺丝固定FPGA小板在底板上,你还需要焊接M2*3*4贴片螺母在底板上。如果你需要安装雷电模块,还需要在背面焊接M3*2.5*5贴片螺母。
FPGA固件与上位机驱动
这一部分主要介绍如何安装、编译硬件所必需的固件、驱动和软件。主要包括 FPGA 固件、XDMA驱动、上位机驱动和 ngscopeclient 开源示波器软件四个部分。作者在这里强烈建议任何复制该工程的人在自己的电脑上重新编译上位机驱动,因为已知编译与运行环境不同可能导致兼容性问题。
下文中所提到的 *.rar\*
等路径均仅意在说明文件以压缩包为根目录时的相对位置,所有操作均需要解压之后进行。文中的所有压缩文件都放在网盘连接 中。
该部分内容也请参考 ThunderScope 原始工程,但请注意由于FPGA、PLL等芯片的选型不同,FPGA 固件、上位机驱动并不通用。
作者仅在 Windows 10 环境下进行了测试。
1. 编译、烧写 FPGA 固件
- 本文假设所有尝试复现该工程的人知道如何使用 Vivado,烧写所需的 bitstream 为
03_XDMA.rar\03_XDMA\workspace\04_boot\toplevel.mcs
。你可以直接用 FT2232 提供的 USB 转 JTAG 烧写,也可以通过底板上的 JTAG 接口烧写。 - 本文编写 FPGA 固件所使用的 Vivado 版本为 2020.1,理论上使用更高版本的 Vivado 可以打开该工程,但可能需要自行处理 IP 版本的问题。此外,如果想使用 Vivado 的
program_ftdi
命令直接配置 FT2232,则你的 Vivado 版本需要高于 2022.1。
2. 安装 XDMA 驱动
- 本工程提供了 Windows 平台下的 XDMA 驱动,如果需要 Linux 平台下的驱动请查看原始工程。
- 由于 Xilinx 提供的 XDMA 驱动没有签名,因此请使用管理员权限的 powershell 运行
Bcdedit.exe -set TESTSIGNING ON
并重启,打开调试模式。 - 本工程提供的驱动安装文件所在位置为
xdma_driver_win_src_2018_2.rar\xdma_driver_win_src_2018_2\Installers\Win10_x64_Release\XDMADriverInstaller.msi
,双击运行,并在询问你是否使用 polling 的时候选择否。
这时候你可以安装采集卡并重启电脑,如果一切正常你应该能在设备管理器中看到一个叫做
Xilinx Driver
的硬件。
3. 编译上位机驱动
- 要编译上位机程序,你需要 Visual Studio 2022,并安装 .Net 开发环境。你可能还需要另外安装 .Net 8.0 SDK以及 Windows SDK。
- 工程文件为
TS.NET.rar\TS.NET\source\TS.NET.sln
,使用 VS2022 打开并重新编译所有项目。 - 运行
TS.NET.rar\TS.NET\build-scripts\TS.NET.Engine (win-x64).ps1
,随后打包好的上位机驱动能在TS.NET.rar\TS.NET\builds\win-x64\TS.NET.Engine\0.1.0\TS.NET.Engine.exe
被找到。请注意同一文件夹下应有thunderscope.yaml
和appsettings.json
。其中thunderscope.yaml
文件中HardwareRevision
项应为RevC1
。
这时候你双击运行
TS.NET.Engine.exe
应当可以正常运行并没有任何报错信息。且驱动报告的读取速度应约等于 1000 MB/s。
4. 编译、安装ngscopeclient开源示波器软件
- 这是另一个开源项目,要安装ngscopeclient开源示波器界面软件,可以参考他们的用户手册。在编译的时候可能会遇到缺少
hidapi
依赖项的情况,执行pacman -S mingw-w64-ucrt-x86\_64-hidapi
可以解决。 - 这里提供一个编译好的版本(
ngscopeclient-8e149977-windows-x64-portable.zip
),应当可以解压即用。如果有bug,你应该自己重新编译一下(。
上位机驱动与ngscopeclient开源示波器软件之间的通讯是通过网络协议进行的,因此采集卡和示波器并不必须在同一台电脑上。
5. 连接ThunderScope
- 确保你的上位机驱动(
TS.NET.Engine.exe
)与ngscopeclient开源示波器软件运行正常。 - 在 ngscopeclient 的 Add -> Oscilloscope 下添加 ThunderScope,并使用 “thunderscope” 驱动程序、“Twinlan” 传输和 “Localhost:5025:5026” 作为路径
- 如果上位机驱动不运行在本机上,请把 Localhost 改为对应计算机的 ip 地址,你可能需要注意防火墙的端口设置。
参考运行效果(PCB验证无误证明)
完成以上配置之后,接入信号你应该能得到如下的情况:
ngscopeclient上显示的信号与示波器显示的基本一致则说明以上所有流程已经跑通,ThunderScope工作正常。
注意事项与TODO
- 请先焊接 12.0 V 输入电解电容引脚再焊接背面的二极管,否则很难焊接。
- 目前雷电模组不能正常工作,由于这个模组非常闭源很难进一步探究具体原因。
- 由于原始开源项目设计问题,PGA输入参考电平直接引入了电源噪声导致约 2 mVpp 的底噪。如果你希望这个东西能好用,应该考虑重新设计这一部分。
- TPS7A4700输出电容如果不够可以考虑飞电解电容
- 焊接IPEX连接器的时候容易导致短接LMH6518SQ/NOPB的输出到地,造成LMH6518SQ/NOPB损坏,请注意。
TODO:
- 供电:TPS7A4700输出电容太小了,另外5V3供电轨噪声有点大。
- 供电:加入能部分关闭模拟前端的功能以节省功率
- 前端:解决模拟前端的参考电平的噪声问题
- 前端:解决模拟前端的各种寄生参数问题
- FPGA:把GTX的Lane顺序完全反过来
- 机械:制作屏蔽壳
设计图

BOM


评论