外观
SLogic16U3:800MHz 逻辑分析仪,sigrok 全开源链路直采直解
Sipeed SLogic16U3 是 16 通道 USB3 逻辑分析仪(最高 800MHz/4ch)。 它走的是 sigrok/libsigrok 标准协议——从源码编译 Sipeed 的驱动 fork + sigrok-cli + 解码库, 命令行直接采集波形、解码 131 种协议,无需图形界面。本文 Apple Silicon Mac 实测全链路。
成果速览
| 能力 | 实测 |
|---|---|
| 设备识别 | SLogic16 U3 · USB3.0 · VID:PID 359F:3031 |
| 采集 | 5MHz~800MHz 全档通过,200MHz/16ch 与 800MHz/4ch 数据零误码 |
| 自检图样 | Emulation 模式输出二分频波形(D0 满幅方波,逐级 /2) |
| 协议解码 | 131 个解码器;合成 UART 帧解出 0x55 逐位+字节全对 |
协议栈:一条 sigrok 标准链路
控制走厂商自定义 USB 控制传输(寄存器 R32_CTRL/0x04、R32_FLAG/0x08、R32_AUX/0x0C),采样走 USB3 bulk IN 流式——16 通道每样本 2 字节。
采集实测
Emulation 自检模式(无被测信号时验证链路)输出教科书式二分频图样:
D0 满幅方波到 100MHz(200MHz 采样下逐样本翻转),逐级二分频、零毛刺——USB3 → libsigrok → CSV 全链路数据正确。
bash
SR=/Volumes/my-work-arm/slogic-prefix/bin/sigrok-cli
# 16ch 200MHz 采 100 万样本 → CSV
$SR --driver sipeed-slogic-analyzer --config samplerate=200m \
--samples 1000000 -O csv -o cap.csv
# 4ch 800MHz:先降硬件通道数
$SR --driver sipeed-slogic-analyzer --config logic_channels=4 \
--config samplerate=800m --samples 500000 -O csv -o cap.csv
# 触发采集:D0 上升沿
$SR --driver sipeed-slogic-analyzer --config samplerate=20m \
--triggers D0=r --samples 100000 -O csv -o cap.csv解码实测(合成 UART 帧验证管线)
接不到信号时,用 VCD 输入合成一帧验证解码器:
| 段 | 空闲 | 起始 | d0…d7(LSB 先) | 停止 | → 解码 |
|---|---|---|---|---|---|
| 电平 | 1 1 | 0 | 1 0 1 0 1 0 1 0 | 1 | 0x55 ✓ |
真实采集解码同理(接上线即可):
bash
# UART:D0=RX;I2C:D0=SCL D1=SDA
$SR --driver sipeed-slogic-analyzer --config samplerate=20m --samples 1000000 \
-P uart:baudrate=19200:rx=D0 -A uart踩坑档案
| 现象 | 根因 | 解决 |
|---|---|---|
| 设 800MHz 被 wrap 到 200MHz | 只设了 --channels D0-D3,硬件仍按 16 通道算 | 降采样率先设 logic_channels=4(硬件通道数) |
--channels D0-D15 报 Invalid channel | 范围语法 a-b 只认纯数字通道名,本设备是 D0 | 用逗号列表 D0,D1,D2,D3,或省略(默认全通道) |
| 构建报找不到 Python 头文件 | 系统 Python 3.9.6 无 dev headers / 无 python3-embed.pc | brew install python@3.12,configure 加其 pkgconfig 路径 |
| 合成 VCD 解码缺最后一位 | 帧前缺起始空闲高电平,start bit 检测点偏移 | 帧前补 ≥2 bit 的 idle 高电平 |
| 合成 VCD 解不出字节 | 尾帧恒高无时间戳,输入模块截断在最后一个跳变 | 末尾补显式 #N 结束时间戳 |
| 采集数据全 0 | 没接信号(空闲电平),不是故障 | pattern=Emulation 自检模式验证链路 |
复现与出处
- 完整构建流程(依赖、fork 地址、configure 参数、幂等脚本)见 skill
slogic16u3参考文档 [1.从源码构建] - 驱动源码:sipeed/libsigrok · slogic-dev;官方上位机:PulseView(图形界面替代品)
- 本机已装前缀
/Volumes/my-work-arm/slogic-prefix/(libsigrok 0.6 + sigrok-cli 0.8 + libsigrokdecode,131 解码器)