摘要:说明1:如同独立显卡一样,该项目的硬件并不是即插即用的,你需要固件与驱动等来让硬件正确运行!详情见本文第3章- FPGA固件与上位机驱动
用免费的6层PCB,做个8bit 1Gsps 四通道示波器!
已开源!
还写了详细的资料文档!
等等,这个项目,是不是有开源过的?
是的!你没看错!
这是【星火计划-悬赏赛道】出的一道特别的题目——遵循原项目的开源协议MIT license复刻一个【开源四通道示波器】
原项目▼
原作者:Aleksa
原工程:https://hackaday.io/project/180090-thunderscope
该项目是设计和构建一个开源的 PC 连接替代方案,以替代低成本台式 1000 系列示波器。
项目规格:在四个通道上至少达到 100MHz。
价格与其他入门级示波器相似,让其在性能和价格上都具有竞争力。
本项目▼
作者:hiragi_haru
工程:https://oshwhub.com/hiragi_haru/thunderscope-open-source-re-engr
本项目目标:
使用嘉立创EDA设计原有工程电路完成原工程所有指标给热爱开源的朋友提供优质示波器开源复刻方案,进行学习参考~
接下来,咱们就一起纯享一下!
这个示波器的功能亮点?软硬件如何设计?如何编译、烧写FPGA固件 ?复刻成本?开源网址?
这不是一个传统的示波器!
当你将其连接到电脑主机,理论上只要电脑处理得动,即可获得:
100%的波形采集率比传统示波器高得多的采样深度在信号处理上更为灵活在四个通道上至少达到100MHz演示一下▼
怎么连接?▼
说明1:如同独立显卡一样,该项目的硬件并不是即插即用的,你需要固件与驱动等来让硬件正确运行!详情见本文第3章- FPGA固件与上位机驱动
说明2:硬件部分只涉及高速信号采集,通过PCIe Gen2 x4通道发送给上位机(高性能PC),再通过高性能PC处理信号,并提供示波器的其他功能。
说明3:尽管PCIe扩展卡似乎只能插在机箱里,但如果有合适雷电接口的解决方案,该示波器的灵活性会得到进一步地提高!
二、硬件设计该项目电路主要由两部分组成:
底板XC7A100T 核心板此外还包含一个 3D 打印外壳。
底板原理图
底板PCB图
核心板原理图1
核心板原理图2
核心板原理图3
核心板原理图4
核心板PCB图
下面分别说明一下两块板子的参数和实测情况。
1.底板
底板参数:四层板,10cm*10cm,尺寸支持免费打样
在不需要加工艺边的情况下可以白嫖 PCB 打样(但如果要做 SMT 就必须加上工艺边,导致超过可以白嫖的尺寸)
底板上包括:
模拟前端1 Gsps 8 bit ADC(HMCAD1511)50 fs Jitter PLL(LMK05318BRGZT)供电模块PCIe连接器(金手指)等子系统模拟前端带宽测试:
测试环境:
PGA带宽不做限制拆焊ADC输入端的500MHz低通滤波器测量:当BNC接口输入电平到PGA后,IPEX接口测量到的电平的衰减测试方法:
100Hz-10MHz的响应,使用 Rigol MSO5000 系列示波器测量10MHz-1GHz的响应,使用 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 左右。推测这主要是由于下半边电容接地过孔等效电感导致的,考虑在下一板改善该问题。
2.XC7A100T核心板
核心板只使用了六层板,有机会可以白嫖!基本说明如下:
引出 54 对差分线板载两颗内存颗粒1GiB内存与FT2232 芯片可以直接通过USB调试在该项目中所使用到的所有子系统,包括JTAG调试烧录、固件烧录、LVDS信号输入、DDR3子系统均测试正常一些基本信息如下:
FPGA:XC7A100T-2FGG484IRAM:板载两颗 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 灯珠。这一部分主要介绍如何安装、编译硬件所必需的FPGA 固件、XDMA驱动、上位机驱动和 ngscopeclient 开源示波器软件。
作者在这里强烈建议任何复制该工程的人在自己的电脑上重新编译上位机驱动,因为已知编译与运行环境不同可能导致兼容性问题。下文中所提到的 *.rar\* 等路径均仅意在说明文件以压缩包为根目录时的相对位置,所有操作均需要解压之后进行。文中的所有压缩文件都放在网盘连接 中。该部分内容也请参考 ThunderScope 原始工程,但请注意由于FPGA、PLL等芯片的选型不同,FPGA 固件、上位机驱动并不通用。作者仅在 Windows 10 环境下进行了测试。
①编译、烧写 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。
②安装 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 的硬件。
③编译上位机驱动
要编译上位机程序,你需要 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。
④编译、安装ngscopeclient开源示波器软件
这是另一个开源项目,要安装ngscopeclient开源示波器界面软件,可以参考他们的用户手册。
在编译时,遇到缺少 hidapi 依赖项的情况?
执行pacman -S mingw-w64-ucrt-x86\_64-hidapi 就可以解决!这里提供一个编译好的版本(ngscopeclient-8e149977-windows-x64-portable.zip),应当可以解压即用。如果有bug,再重新编译一下即可。
上位机驱动与ngscopeclient开源示波器软件之间的通讯是通过网络协议进行的,因此采集卡和示波器并不必须在同一台电脑上。
⑤连接ThunderScope
确保你的上位机驱动(TS.NET.Engine.exe)与ngscopeclient开源示波器软件运行正常。
在 ngscopeclient 的 Add -> Oscilloscope 下添加 ThunderScope,并使用 “thunderscope” 驱动程序、“Twinlan” 传输和 “Localhost:5025:5026” 作为路径
如果上位机驱动不运行在本机上,请把 Localhost 改为对应计算机的 ip 地址,你可能需要注意防火墙的端口设置。
参考运行效果(PCB验证无误证明)
完成以上配置之后,接入信号你应该能得到如下的情况:
ngscopeclient上显示的信号与示波器显示的基本一致则说明以上所有流程已经跑通,ThunderScope工作正常。
四、成本说明贺喜作者,获得开源活动奖金8000元
成本说明:星火计划已报销耗材项如下
底板2片SMT:2312.35元核心板2片SMT:1897.56 元手焊的话,个人DIY成本基本在1220元
你觉得这个示波器如何?你会考虑自己DIY一个吗?[呲牙]
【正文完】
你的点赞+关注,是我最大的动力!
来源:嘉立创EDA