Skip to content

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/0x04R32_FLAG/0x08R32_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 101 0 1 0 1 0 1 010x55

真实采集解码同理(接上线即可):

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.pcbrew 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 解码器)