
新玩具到手我第一件事永远是拧螺丝。这次拆的是正点原子DL16 Plus逻辑分析仪16通道标称1GHz采样率同价位国产逻辑分析仪里算相当能打了。拆开之前我最好奇的是那颗藏在屏蔽罩下的FPGA——1GHz采样对FPGA的IO速率、时钟管理和内部逻辑都有硬性要求如果用的是国产FPGA那这颗芯片实际承担的工作量远比“采个0和1”要复杂得多。这篇文章不是广告也不是劝退就是一个嵌入式爱好者拆完机器、看完波形之后把内部布局、采样原理和选型心得整理成的一份拆解笔记。想看原理的想买前避坑的或者好奇国产FPGA到底在仪表里干了什么活的都能从里面找到点东西。1. 先别急着拆1GHz采样率在逻辑分析仪里意味着什么1.1 采样率、带宽和存储深度这三个指标先对齐很多刚接触逻辑分析仪的朋友看到“1GHz采样率”就被唬住了以为买回去就能测一切数字信号。其实逻辑分析仪有三大指标采样率、存储深度和输入通道数。采样率决定时间分辨率存储深度决定一次能抓多长通道数决定能同时看多少路。这三个指标互相牵制尤其采样率和存储深度是直接对立的关系。1GHz采样意味着每1纳秒采一个点如果存储深度只有几兆字节那高速模式下连续抓取的时间可能只有几毫秒。我举个实际例子帮大家理解。以16通道、1GHz、单通道1bit计算一秒钟产生的原始数据量是16Gbit也就是2GB。按32MB板载缓存算全通道满速采样时只能连续采16毫秒就把缓存灌满。所以逻辑分析仪的“1GHz采样率”通常不是让你持续录的而是让你在触发条件满足后抓一小段精细波形用的。低速协议、长时间监控场景反而要把采样率降下来腾出存储空间。选逻辑分析仪时官方标称参数不能只看采样率要把“采样率 × 存储深度”打包看再对照你的项目场景问一句我需要抓多久我看什么信号抓SPI的CS片选时序50MHz采样率绰绰有余抓一个纳秒级毛刺没有1GHz根本看不到。DL16 Plus这种1GHz采样配置定位就是“高速小段精细抓取”这个定位决定了它的使用方式也解释了为什么内部必须有一颗像样的FPGA来扛数据。1.2 1GHz到底值多少钱抓毛刺和高速信号时才显真章作为一个常年调板子的人我的经验是1GHz采样率在九成时间里属于“性能过剩”但剩下那一成场景它能救命。典型场景就是查毛刺。数字电路里信号线上一个几纳秒的毛刺可能让触发器误锁存也可能让RS485收发器误动作。普通100MHz采样率逻辑分析仪采样间隔10ns毛刺宽度5ns时可能刚好漏采也可能采到一个不确定电平让你误判成正常信号变化。用1GHz采样就完全是另一回事了。1ns一个采样点能清楚看出毛刺是从哪个时钟沿附近冒出来的脉宽大概几个纳秒和哪根信号线时序相关。如果毛刺反复出现还能结合触发功能把毛刺作为触发条件每次毛刺出现时自动抓一拍慢慢定位源头。另一个非它不可的场景是高速串行信号。比如SDIO、RMII以太网、以及某些FPGA之间的并行总线信号翻转频率在几十到几百兆赫兹。要判断建立保持时间是否满足或者找到哪根数据线偶发翻转错误普通采样率根本看不出来边沿的细微偏移。1GHz采样虽然比不上示波器的实时带宽但在纯数字信号的时序分析上已经足够发现绝大多数问题。所以“1GHz”这个数字不是营销噱头它是针对特定问题的针对性配置只不过这个“特定问题”遇到之前你很难体会它有多重要。2. 拧开四颗螺丝DL16 Plus的内部硬件布局2.1 一块主板上的四个功能分区拆开外壳之后整个板子的功能分区非常清晰基本就是一条流水线输入信号进来先经过保护整形电路然后进FPGA做高速采样和触发采样数据暂时存放在旁边的SDRAM里最后由USB桥接芯片负责把数据搬给上位机。板子不大但每个区域界限分明维修和改版都方便。这种布局在逻辑分析仪里算是标准思路了真正体现设计功力的是每个分区的细节处理。输入保护区是最容易被忽略、但最关键的一环。DL16 Plus每个通道入口都有ESD保护二极管、限流电阻和钳位电路。大概作用就是被测板子万一有浪涌或者接错电平先让保护电路牺牲尽量不伤到后面的FPGA。看板子上这些元件的封装和位置能判断出设计者有没有认真做过试验——元件离接口近、走线短、保护器件的地孔打得足都是认真处理过的痕迹。FPGA区域是整块板的绝对核心。16路采样信号从输入保护电路过来后以LVCMOS电平进入FPGA的普通IO引脚并不经过专用高速串行通道。这说明所谓1GHz采样不是靠SerDes解串而是在FPGA内部用多相位时钟加并行寄存器实现的。这一点稍后详细展开。SDRAM放在FPGA旁边数据线和地址线等长布线的痕迹明显高频下的时序裕量靠这些细节换来。USB桥接芯片在板子另一端与FPGA之间走的是并行总线负责把缓存好的数据搬运到电脑。2.2 那块低调的FPGA从丝印到上电行为都写着“国产”我拿到的这台机器FPGA表面丝印磨掉了看封装和引脚密度第一反应是国产中小容量FPGA的典型封装风格。旁边配套的配置芯片、时钟无源器件和电源方案也和我在国产FPGA开发板上见到的套路高度一致。如果没猜错这颗芯片大概率是高云或同级别国产FPGA容量在几千到上万逻辑单元之间。这类器件资源不大但IO数量多、PLL够用、功耗低用在逻辑分析仪这种“大量并行采样加有限逻辑处理”的场景性价比确实很高。怎么判断一块FPGA是国产还是进口外行看丝印内行看配套电路和软件动作。首先看核心电压Xilinx和Altera的7系列、Cyclone系列多用1.0V核心国产小容量FPGA常见1.2V核心。其次看配置方式很多国产FPGA支持内置flash或者外挂SPI flash启动板子上Flash型号能帮你缩小范围。更直接的判断方法是插上电脑看设备管理器里的USB描述符和厂商ID因为上位机软件往往带FPGA厂商的配置工具或者驱动特征。这种识别方式不保证百分百准确但结合封装、电源和软件表现判断方向八九不离十。还有一点这颗FPGA在板上的角色并不是简单把采样数据转成串口发出去了事。16通道1GHz采样数据速率是2GB/s如果FPGA内部逻辑只做透传数据根本出不去。它内部要同时完成时钟管理、采样对齐、触发判断、FIFO缓存、SDRAM读写控制还要响应USB桥接芯片的读取请求。这个工作负载对IO资源和内部逻辑布局的要求都很刁钻不是随便一颗低成本CPLD能顶下来的。国产FPGA能在这个位置稳定工作至少说明这类中低端器件已经具备做便携仪表的硬实力。2.3 周边电路的用心程度决定1GHz的“含水量”拆机时我格外注意了电源和时钟这两块。1GHz采样对电源纹波极其敏感IO bank供电哪怕有几十毫伏的噪声都会在采样阈值附近制造误码。板上FPGA核心供电和IO供电分得很开高频去耦电容就贴在FPGA电源引脚旁边没有跨过过孔再连接这说明Layout阶段把电源完整性当回事了。另外板上有一个温补晶振或高精度有源晶振给FPGA提供基准时钟。逻辑分析仪的采样时间戳是否准确就看这颗晶振的稳定性能用温补晶振的说明厂商不想在基础指标上偷工减料。时钟树设计也有讲究。FPGA内部PLL会把外部输入时钟倍频到需要的采样基频比如250MHz再通过PLL输出多个相位。这个过程中时钟走线如果跨分割或者离数据线太近会引起时钟抖动最终表现为采样点位置漂移波形在上升沿处出现肉眼可见的“毛边”。我仔细看了板上时钟线附近的铺铜和过孔处理得还算规矩。对于一款几百块价位的产品这种细节到位了1GHz采样率才有可信度。反过来如果板上一片省料、电源噪声明显那即便标称1GHz实际抓出来的波形也不敢全信。3. 所谓的“1GHz采样”在FPGA内部其实是一套数学游戏3.1 250MHz的主时钟如何变身1GHz采样窗口逻辑分析仪不像示波器那样需要高带宽模拟前端它只要判断信号是高还是低所以采样可以走“多相位时钟过采样”这条路。原理其实很朴素假设FPGA内部PLL输出4路频率250MHz、相位间隔90度的时钟相位0在t0时刻采样相位90在t01ns采样相位180在t02ns采样相位270在t03ns采样四路合起来等效每隔1ns采一个点这就是1GHz采样率。在FPGA内部实现时每个输入通道会同时接到这4个时钟域的多组寄存器上。也就是说同一个输入信号在每1ns内被4个不同相位的时钟沿各锁存一次得到4个采样值。这4个采样值在下一个时钟周期被同步到统一时钟域组成一个4bit的并行向量。这样内部逻辑只需要工作在250MHz就可以应对等效1GHz的数据流。这种结构在FPGA里非常好实现关键点是4个相位的时钟偏移要准PLL的相移精度以及IO寄存器布局都会影响最终的采样均匀性。我拆机前本以为1GHz采样会用到FPGA的ISERDES或者SerDes硬核但实际看板子走线输入信号直接连普通IO并没有进专用高速串行通道。这也印证了上面的判断——它用的是“多相位并行过采样”而不是高速串行解串。这种方案的好处是灵活任何支持PLL多相输出和普通IO的FPGA都能做代价是采样数据展开后并行度很高16通道就是16个4bit向量内部逻辑布线压力不小。3.2 最容易翻车的环节相位对齐与亚稳态多相位过采样说起来简单真正让固件工程师头疼的是相位对齐和亚稳态问题。首先PLL输出的4个相位时钟理论上是均匀分布的实际中因为时钟树延迟、负载差异和PVT波动相位误差一定存在。如果相位0和相位90的实际间隔差出几百皮秒采样点在时间轴上就不是均匀分布恢复出来的信号边沿位置会带误差。对于1GHz采样几百皮秒的误差已经能明显影响毛刺宽度判断了。为了解决这个问题固件里通常要做动态校准。常见做法是在上电后由FPGA输出一个已知测试序列回环到输入通道用内部逻辑扫描4个相位的采样结果统计边沿出现在哪个相位区间然后微调PLL的相移设置。这个过程类似示波器的自校正但完全靠FPGA逻辑自动完成。DL16 Plus上电后如果你用示波器看它的时钟引脚会发现有一段规律的翻转序列那就是在校准阶段。亚稳态是另一个躲不掉的坑。输入信号与采样时钟是异步关系信号恰好在时钟采样窗口附近变化时寄存器输出可能进入既不是0也不是1的亚稳态。1GHz过采样下这种风险发生概率比低速采样高得多因为采样点更密信号沿附近总有寄存器踩在“危险区”边缘。设计上采样寄存器后面通常还会接一级或多级同步寄存器把亚稳态通过时间“消化”掉。少数逻辑分析仪还会用“多数表决”机制连续采5个点取3个相同的值作为有效电平本质上也是牺牲一点时间分辨率换稳定性。3.3 触发引擎是逻辑分析仪的灵魂采样数据再多如果上位机拿到的是一堆没有特征的波形找问题依然费劲。逻辑分析仪的真正价值在触发。触发的作用是让设备从“一直录”变成“只在满足特定条件时录”。这个条件可以是上升沿、下降沿、某个电平组合、总线上的某个数据值甚至是特定宽度的毛刺。FPGA内部实现触发的方式是在并行数据流上挂一组比较器每个时钟周期检查当前并行向量是否匹配预设条件。拿毛刺触发举例FPGA维护一个滑动窗口窗口里放最近几个采样周期的并行数据。如果检测到“0→1→0”且高电平持续时间不超过用户设定值就触发。这个检查在250MHz时钟域完成但窗口内数据来自1GHz过采样所以能识别的最小毛刺宽度可以到1ns量级。触发系统还要区分“预触发”和“后触发”预触发要求触发前一段时间的数据也保留下来所以FIFO里始终维护一个环形缓冲触发发生后停止写入并保留缓冲内容。这些逻辑全部在FPGA内部并行运行不占用上位机资源这也是逻辑分析仪必须用FPGA而不是用单片机DMA硬扛的原因。4. 数据从探针到波形固件、USB和上位机如何协同4.1 16通道1GHz每秒产生2GB数据USB真扛不住上面算了笔账16通道全开1GHz采样每秒产出的原始数据量是2GB。就算只用1个通道1GHz采样下也是125MB/s。这个速度USB 2.0的峰值带宽480Mbps换算下来约60MB/s实际有效传输也就30-40MB/sUSB 3.0好不少但受限于桥接芯片和固件效率能稳定跑到350-400MB/s已经不错。无论哪种都远远追不上数据产生速度。所以逻辑分析仪处理高采样率问题的思路从来不是“边采边传”而是“先存后传”。FPGA把采样数据写入板载SDRAM写满预设深度后停止采样再通过USB桥接芯片慢慢往电脑搬运。这就是为什么存储深度这个参数如此重要。DL16 Plus的缓存有限实际使用中高采样率下能抓到的波形长度并不长如果遇到需要长时间捕获的场景就得把采样率降到100MHz甚至更低换取更长的记录时间。我实际使用时一般遵循一个经验法则先根据要观察的协议确定最低够用采样率比如UART解码5倍过采样就够SPI解码至少10倍过采样然后在这个基础上加一点裕量把剩余存储空间留给记录时长。直接用1GHz去抓UART对话看起来威风实际上录不到几帧就满了反而是浪费。你越懂数据带宽的约束越能把这台设备的性能用在刀刃上。4.2 固件状态机与USB搬运工FPGA内部的工作流程可以抽象成一个状态机空闲、等待触发、正在采样、停止采样、数据上传。等待触发时FPGA持续把采到的数据写入环形FIFO并实时比较触发条件。一旦触发条件满足固件会继续采集一段预设的“后触发深度”然后停止。这时候SDRAM里存的就是一段完整的、包含触发点前后上下文的波形。上位机点击“读取”后固件才把SDRAM里的数据分包通过USB批量传输端点发出去。USB桥接芯片在这里的角色更像一个“搬运工”。它不关心数据内容只负责把FPGA输出的并行数据转成USB包。为了不丢数据FPGA和桥接芯片之间通常有一组握手信号比如FIFO空、FIFO满、读使能。上位机也要配合发一个“开始读取”命令然后不停发起USB批量读请求直到收到预期字节数。这个过程如果上位机线程调度不及时缓冲满了就会丢包体现在软件上就是波形中间出现一段缺失。所以好的逻辑分析仪上位机USB读取线程通常会开到高优先级并且内部有环形缓冲和断包重组逻辑。固件里还有个容易被忽略的细节SDRAM的刷新。SDRAM需要周期性刷新刷新期间无法读写数据。如果刷新时机恰好在采样过程中可能导致一段数据写不进去。正经实现会在FPGA里用一个“刷新抢占”机制在采样FIFO将要溢出时插入刷新周期或者把SDRAM控制器设计成在FIFO半满时做突发写尽量避开刷新窗口。拆机后我看到SDRAM布线上有专门的时钟和命令线这部分的稳定运行直接决定了长时间采样有没有“掉帧”。4.3 协议解码的正确打开方式别把采样率当信仰上位机把原始采样点还原成波形之后协议解码功能才算登场。逻辑分析仪的解码本质上是在已经采样得到的0/1时间轴上匹配协议规定的电平跳变和位时序。解码并不需要1GHz采样一般协议解码器会先对采样数据做“抽稀”和“沿提取”然后按协议时序把bit流拼成字节和帧。我见过不少新手把采样率拉到最高觉得这样解码最准。实际上UART一帧9600bps位宽约104微秒就算用10MHz采样率一个bit里也有1040个采样点解码绰绰有余。真正该调高采样率的场景是抓高速接口边沿时序或者毛刺分析而不是跑低速协议。面对低速协议时过高的采样率只会让有限存储深度迅速耗尽抓不了几帧就停了。正确做法是先估信号速率选一个刚满足需求的采样率然后尽可能拉长记录时间只有在需要分析信号完整性问题时才把采样率拉满集中抓一段短波形。从这个角度说DL16 Plus的定位其实很聪明。1GHz采样率满足“工程师手里必须有高速抓拍能力”的硬需求上位机里再配合常见的UART、I2C、SPI、CAN等协议解码日常调试完全够用。你不需要每时每刻都用满1GHz但当你需要查一个纳秒级毛刺时没有这个能力就只能干瞪眼。5. 拆完这台机聊聊我对国产FPGA“默默加班”的真实感受5.1 国产FPGA在仪表类产品里的能力边界以前提到国产FPGA很多人的印象还是“做个流水灯、跑个状态机可以上点高速就虚”。拆完DL16 Plus之后我的看法有变化。至少在逻辑分析仪这种产品形态里国产FPGA是真能顶事的。16通道1GHz多相位过采样对IO数量和PLL相移精度都有要求还要在内部跑触发逻辑、SDRAM控制器、FIFO调度这套组合拳打下来一颗中小容量国产FPGA稳稳接住了。当然能力边界也很明显。国产FPGA在高性能SerDes、超高速收发器、大容量分布式RAM这些方面和国际一线器件还有差距。你真要去搞PCIe Gen3、100G以太网、复杂DSP算法国产器件现阶段还是吃力。但在“IO多、逻辑密度中等、时钟频率几百MHz内、成本敏感”的赛道里国产FPGA的性价比和供应稳定性都很能打。逻辑分析仪、协议转换器、小型采集卡、电机控制、工业IO控制器这些产品用国产FPGA是很务实的选择。我在开发板圈和工控圈见过很多朋友问“国产FPGA能学吗”我的回答都是“能而且应该学”。无论是高云还是紫光同创、安路、易灵思它们的基础开发流程、Verilog语法、时序约束思想和Xilinx/Altera高度一致。先在国产器件上入门FPGA开发把状态机、FIFO、PLL、UART这些基本功练熟后面切到国际大厂平台迁移成本很低。反过来如果一开始就用旗舰芯片做入门很多资源你在小项目里根本用不到学习重点反而被带偏。5.2 用国产FPGA做开发的甜头和弯路既然讲到国产FPGA生态我就把开发中碰到的实际情况摊开说。甜头方面第一是上手成本低国产FPGA开发板几百块能拿下配套教程也越来越多正点原子自家的资料库、B站视频都是中文的对新手友好度比看英文手册高不少。第二是芯片供货稳定这几年全球芯片供应链紧俏国产器件的交期和价格反而稳定做产品的人最在意这个。第三是很多器件支持内置Flash上电即启动外围电路省事适合做小型化产品。弯路也有几条提前说出来帮大家避开。国产FPGA开发工具虽然一直在进步但在编译速度、时序收敛报告、IP核丰富度上和Vivado/Quartus还有差距。有些IP核要单独申请授权文档有时候不够全碰到问题只能去论坛翻帖子或者直接发邮件问原厂FAE。在做1GHz这类高速采样设计时时钟约束和IO约束一定要从项目开始就写好不要等布局布线跑出时序违规才回头补。还有一点国产FPGA型号迭代快同一系列不同后缀的芯片其PLL能力、LVDS支持、内置Flash大小可能差别很大选型时务必逐项核对数据手册不能只看“同系列”就默认一致。另外我建议新手做第一个国产FPGA项目时不要一上来就挑战高速ADC、MIPI接收这种复杂场景。先用它点亮一个数码管跑一个UART再挂一个SDRAM控制器循序渐进地把基础模块调通。高速设计里很多问题不是逻辑写错了而是约束没写全或者电源没处理好。等你能熟练读懂编译报告里的时序路径用国产FPGA做逻辑分析仪这种级别的东西就不存在“能不能”的问题了。5.3 给正在选逻辑分析仪的读者的三个建议拆完机器、测完几个典型场景之后我按自己的经验给正在挑逻辑分析仪的朋友三条建议。第一别只看采样率把“采样率-存储深度-通道数”看作一个整体。尤其是存储深度它决定高采样率下你能抓到多长的波形。如果你主要调试低速协议一个中等采样率加超大存储深度的设备反而比1GHz小缓存设备更实用。反过来如果你经常处理FPGA调试、DDR训练、高速串行接口那1GHz采样加上够用的触发能力就是值得投资的配置。第二看上位机软件和解码生态。逻辑分析仪的硬件决定“能采得多快”上位机决定“能看得多懂”。一个解码器丰富、波形操作流畅、支持导出数据的软件能把调试效率提高好几倍。买之前先下载厂商的软件试用一下看看支持的协议列表再对比硬件参数别冲动下单。第三关注固件迭代能力。逻辑分析仪这种产品硬件定型后固件和上位机才是长期体验的分水岭。厂商愿不愿意持续更新协议解码器、修触发逻辑的Bug、优化USB传输效率直接关系到你用了一年半载之后的体验。这也是我这次拆机格外关注FPGA的原因——如果主控是一颗可编程FPGA意味着产品后期还有大量功能升级空间如果主控是固定逻辑芯片那出厂那天功能就锁死了。我这台DL16 Plus拆完装回去之后又顺手用它抓了一晚上的I2C时序。看着上万帧数据在屏幕上稳定滚过再想想板子上那颗默默跑着多相位采样的国产FPGA我最大的感受是国产芯片不是不能做高速活只是很多时候缺一个让人看见它们工作的机会。这次拆机算是我给“默默加班”的它点了个名。