拆了台正点原子DL16 Plus逻辑分析仪:1GHz采样的背后,是国产FPGA在默默加班
调板子调到头大,SPI总线上偶尔冒出来的一个毛刺,拿示波器抓了半天也没抓到,最后是接上逻辑分析仪,开了1GHz采样,把触发条件设成下降沿,才在几毫秒的窗口里逮住了那个一闪而过的异常电平。这事之后我就在想:一台两三百克的USB逻辑分析仪,凭什么能做到16通道1GHz采样?要知道很多入门级设备只有24MHz,差了整整两个数量级。好奇心上来,干脆把它拆了。
这篇文章就把拆机过程、板上器件的分工、1GHz采样背后的实现逻辑,以及那颗国产FPGA在系统里到底干了多少活,一次讲清楚。想搞清楚逻辑分析仪的工作原理、想入门FPGA高速采集、或者单纯好奇这类调试工具为什么能卖这个价的朋友,都可以跟着往下看。
1. 为什么要拆:DL16 Plus到底是个什么设备
1.1 逻辑分析仪和示波器的本质区别
很多人第一次接触逻辑分析仪时都会问:我有示波器了,为什么还要它?
示波器的核心是一颗高速ADC,它把连续的模拟电压采样成波形,能看到信号的幅值、上升沿陡峭程度、振铃、过冲这些模拟特征。逻辑分析仪不一样,它不关心信号是3.3V还是2.8V,只关心一个问题:这一瞬间,信号是高还是低。所以它不需要高分辨率的ADC,但需要极快的比较速度和大量的通道。
打个比方:示波器像拍照片,把每一帧画面都记录下来,色彩、光影都在;逻辑分析仪像读文字,它只把字符提取出来,忽略字体和配色。调试数字总线协议(SPI、I2C、UART、SDIO)时,写进代码里的数据才是重点,没人关心那个高电平究竟是2.8V还是3.3V,只要它能稳定地被识别成逻辑“1”就行。
这就引出了逻辑分析仪的核心指标:采样率、通道数、存储深度。采样率决定你能看到多窄的脉冲,通道数决定你能同时观察多少根信号线,存储深度决定你能记录多长的波形。DL16 Plus的命名里,“16”就是16通道,“Plus”代表高配版本,它的采样率高到了1GHz,这在便携USB逻辑分析仪里属于相当能打的参数。
1.2 16通道1GHz采样意味着什么
先说清楚“1GHz采样”的含义。它指的是每秒钟采样10亿次,也就是每个采样点的间隔是1纳秒。注意,这不是带宽1GHz,逻辑分析仪谈带宽没有太大意义,因为它根本没有模拟前端放大器。
1纳秒能干什么?SPI时钟跑50MHz时,一个时钟周期是20纳秒,用1GHz采样率去采,每个bit能采到20个点,波形方方正正,毛刺和亚稳态一览无余。如果是一般的25MHz采样率,连一个完整的SPI数据位都采不全,抓出来的波形全是锯齿,根本无法判断时序关系。
霍尔传感器、电机编码器、MIPI调试、DDR训练、高速ADC/DAC的数字接口,这些场景下的信号上升沿经常只有1到3纳秒。采样率不够,窄脉冲就直接被漏掉,你会看到数据莫名其妙跳变,查一天都查不出原因。这也是为什么一定要上高采样率逻辑分析仪的原因:它不是用来“看波形好不好看”的,而是用来“捕获那些一闪而过的异常”的。
1.3 拆机的目标:看数据到底怎么从探头流到屏幕
我这次拆机的目的很明确:想搞清楚三个问题。
第一,1GHz的采样时钟是怎么产生的?FPGA内部的逻辑工作频率一般也就几百MHz,它凭什么能采到1GHz的实时信号?第二,16个通道同时以1GHz采样,每秒产出16Gbit的数据,这数据量用什么来存、怎么传回电脑?第三,板子中央那颗FPGA芯片,到底是哪家产的,它在这个系统里具体负责什么模块划分。
带着这三个问题拆机,就不会只是看个热闹,而是顺着信号流向一步步还原整个数据通路,这也是拆机最有价值的地方。
2. 拆解实记:外壳、板卡与核心器件布局
2.1 外壳与结构:屏蔽不只是为了好看
DL16 Plus用的是铝合金外壳,CNC加工的,表面做了喷砂氧化处理。这种外壳不只是为了手感好,更重要的是电磁屏蔽和散热。逻辑分析仪采的是纳秒级的数字信号,如果外壳屏蔽性能差,环境中的高频噪声会耦合进内部电路,导致采样结果出现莫名毛刺。散热方面,1GHz采样时FPGA虽然不至于烫手,但长时间满载运行会明显升温,金属外壳等于一个被动散热器。
拆解时需要注意,仪器底部的螺丝是内六角的,不是常见的十字或一字。拧的时候要用合适的批头,否则容易滑丝。拆开后我注意到,PCB和外壳之间没有大量导热垫,说明这颗FPGA的功耗控制得还算不错,没有到必须加强制散热的地步。
2.2 主板布局:顺着信号流看电路
打开外壳之后,板卡的布局非常规整。信号从顶部的排针接口进入,经过一小段保护电路,然后直接进到板子中央那颗FPGA芯片。FPGA周围分布着几颗存储芯片,靠近USB接口的位置有一颗USB转接芯片,电源管理部分放在板子的角落。
这种布局思路跟高速PCB设计的通用原则完全一致:模拟/数字分区、高速走线短而直、电源去耦靠近芯片引脚。值得注意的是,输入端到FPGA之间的走线明显做了等长处理,各通道的走线长度差距被控制在很小范围内。为什么要等长?因为16路信号如果走线长度差很多,到达FPGA的时间就不一致,高速采样时通道间会出现时延偏差,波形对比就失去了意义。
我还注意到输入接口旁边有几颗不起眼的小芯片,那应该是ESD静电保护器件。逻辑分析仪经常要接外部设备,如果被测设备有静电,最先遭殃的就是输入端。有了ESD防护,至少能扛住一般的静电放电。这里也提醒一句:千万别在雷雨天用逻辑分析仪测户外设备的长线缆,ESD保护处理不了感应雷。
2.3 几个容易忽略的细节
拆机过程中有几个细节印象很深。
第一,板上有独立的温补晶振,丝印是TCXO。对于采样类仪器,采样时钟的稳定性直接影响测量结果。普通晶振的频率会随温度漂移,TCXO会好很多。1GHz采样时哪怕只有几十ppm的漂移,累积下来也会造成存储数据的时序错位。
第二,USB接口附近有一颗专用的USB桥接芯片,而不是直接用FPGA内嵌的USB控制器。这个设计很务实:逻辑分析仪的数据量太大,USB协议栈放在独立的桥接芯片上跑,能减轻FPGA的负担,让FPGA专注于采集和触发。
第三,PCB上有一个4针的JTAG接口,这是给FPGA烧写和调试用的。量产产品还保留JTAG接口,说明厂家在售后和固件升级方面留有后手。如果你手里的逻辑分析仪出了固件问题,理论上是可以通过JTAG重新烧录的。
3. 1GHz采样是如何实现的
3.1 采样定理与工程上的“过采样”
从奈奎斯特定理出发,采样率至少要是信号最高频率的两倍,才能无失真地恢复原始信号。但这只是理论下限,工程上做逻辑分析仪时,很少卡着两倍去设计。
为什么?因为逻辑分析仪要判断的不是波形形状,而是电平状态和时序关系。1GHz采样率下的每个采样点间隔1纳秒,如果信号上有5纳秒宽的毛刺,理论上用500MHz采样率就能看到,但边界非常模糊——你可能只采到一两个点,毛刺的真实宽度根本测不准。过采样则不同,采样率越高,每个脉冲上的采样点越多,毛刺宽度、通道间时延这些细节就越精确。
实际测量中还有一个混叠问题。如果信号的边沿比采样间隔还快,采样结果可能产生“假毛刺”:本来很干净的数字信号,因为采样时刻刚好落在边沿跳变的瞬间,被判成了中间态或毛刺。过采样能显著降低这种误判。所以逻辑分析仪追求高采样率,核心目的就是:不漏采、不误采。
3.2 FPGA内部的时间魔术:多相时钟与串并转换
这是整个拆机过程中最值得讲的部分。
FPGA内部的常规逻辑工作频率通常不超过几百MHz,但1GHz采样要求每纳秒都要锁存一次16路信号的电平,这个速度远超普通逻辑单元的能力。实际上,FPGA并不是真的在主频1GHz下做全部逻辑运算,而是利用专门的IO硬件来实现高速采样。
关键在于FPGA的IO模块中有一组叫作“输入串并转换”的硬件单元,在Xilinx里叫ISERDES,在高云、紫光同创等国产FPGA中也有对应的原语。这组硬件的原理是把高速串行的数据流按位拆分成多路并行数据,用相对较低的时钟频率去处理。比如用500MHz的DDR模式,同时利用时钟的上升沿和下降沿采样,就能得到等效1GHz的采样率。
更普遍的做法是多相时钟采样:FPGA内部的PLL生成四个相位相差90度的250MHz时钟,四路采样逻辑轮番上阵,每个时钟周期内完成4次采样,拼接起来正好是1GHz实时采样。打个简单的比方,一个人一秒只能写一个字,那就安排四个人接力,每个人负责四分之一秒,整体速度就提上去了。FPGA干的就是这件事,它用面积换速度,用并行度换频率。
3.3 16Gbit/s的数据洪流如何消化
每秒16Gbit的数据,听起来吓人,但实际并不会直接灌给电脑。逻辑分析仪的采样数据经过FPGA处理后,首先要经过一个“触发筛选”的环节。没有触发条件时,数据只往一个环形缓冲区里写,写满就覆盖最旧的数据。触发条件满足的那一刻,FPGA立刻停止覆盖,把触发前后的数据锁存下来,再按顺序上传。
这就引出了存储系统的设计。16通道1GHz采样,如果要连续记录1毫秒数据,就是16Mbit,约2MB。这个量级普通SRAM还能勉强承受,但如果想记录更长时间,或者同时开启更深的存储模式,板载DDR内存颗粒是必不可少的。DL16 Plus板上有DDR颗粒,容量足够支撑深存储,它的作用就是给采样数据提供一个大的蓄水池。
另一个瓶颈是USB传输。USB 2.0的极限带宽是480Mbps,远不够承载1GHz采样,所以这台设备用的是USB 3.0方案,理论带宽5Gbps。即便如此,长时间连续满速采样也不现实,上位机软件处理数据的能力同样有限。正确的使用方式是:先设置好触发条件,再开始采集,而不是让设备一直全速运行。这也是为什么几乎所有逻辑分析仪的软件界面里,采样率和存储深度的设置都放在最显眼位置。
4. 藏在板子中央的国产FPGA
4.1 芯片识别与选型判断
拆开外壳后,板子中央那颗FPGA芯片的丝印因为批次和散热贴覆盖的原因,看得不是很完整,但从封装形式、IO数量和周边配套可以做出合理的判断:这应该是一颗国产FPGA厂商的中端型号,封装是BGA,引脚数量在200以上,属于中等规模器件。
判断依据有几个。第一,旁边的DDR颗粒走线密集,需要有足够的IO引出;第二,16路高速输入加上USB桥接、控制信号、LED指示,总共需要小两百个IO;第三,从正点原子一贯的产品定位来看,这颗FPGA大概率出自高云、紫光同创、安路这几家国内厂商中的某一家。
这里也解释一下,为什么FPGA厂商的名字在仪器上一般不印大Logo。器件采购时,原厂出货可能是无丝印或定制丝印版本,为的是防止下游方案被抄板。拆机文章里如果看不清型号,不代表技术不行,反而说明厂商在供应链细节上留了心眼。
4.2 为什么用国产FPGA而不是赛灵思或英特尔
这是很多人拆机后第一个想问的问题。原因其实很实在。
成本是最大的因素。逻辑分析仪是量产型消费级仪器,一颗中端国产FPGA的价格通常只有同规格国外芯片的几分之一。1GHz采样的需求看起来唬人,但它消耗的主要是IO资源和少量的DDR控制器,属于中端FPGA完全能覆盖的范围,根本没有必要上赛灵思的高端旗舰。
供货是第二个因素。中端FPGA的用量大、货源稳定,国产厂商在交付周期上非常灵活。相比之下,某些国外FPGA的交期动不动就要几十周,产品研发和量产排期都会被拖垮。对仪器厂商来说,供应链稳定比品牌光环重要得多。
性能上,国产中端FPGA的IO速率已经能支持数百MHz到1GHz级别的信号采样,内部逻辑资源和DDR硬核也够用。虽然它的高速SerDes、PCIe硬核等能力确实不如国外高端型号,但DL16 Plus这款产品的定义里根本用不到那些,方案选型讲究的是合适,不是盲目堆料。
4.3 FPGA在逻辑分析仪里的分工
这颗FPGA在系统里身兼数职,可以说是全板最忙的芯片。我梳理了一下它内部的功能模块。
输入采样端,它利用IO硬件完成16路信号的高速串并转换,把1GHz的实时数据流降频成并行数据。时钟管理方面,PLL负责生成多相采样时钟,并且校准通道间的时延偏差。触发引擎是另一个关键模块,它实时比对采样数据与预设条件,包括边沿触发、码型触发、毛刺触发,一旦命中立刻产生触发信号,把存储流程从“循环写”切换到“抓取保留”。存储控制方面,FPGA内部集成DDR控制器,负责把采集数据写入外部DDR颗粒,并按地址读出。最后是通信协议处理,它从DDR读回数据,打包成USB帧格式,交给桥接芯片上传。
可以说,没有FPGA,这台逻辑分析仪的核心功能根本无法实现。这也是为什么“1GHz采样的背后,是国产FPGA在默默加班”——它承担的正是系统里最重、最核心的调度任务。
4.4 国产FPGA的调试体验与生态现状
拆完机,我特意用国产FPGA的开发流程做了一次对比测试。说实话,国产FPGA的EDA工具和Vivado、Quartus相比还有差距,界面、IP生成器、时序分析报告的完善程度都在追赶阶段。但基本流程是完全一样的:写Verilog或VHDL,引脚约束,综合,布局布线,生成比特流,下载到芯片。如果你是FPGA新手,直接拿国产开发板入门一点都不虚,所有资料都能找到。
一个容易被忽略的点是:国产FPGA的IO有可配置的推挽、开漏、上拉、下拉等模式,跟ARM单片机的GPIO配置很像,但灵活性更高。很多初学者在写FPGA代码时,以为IO模式只能在约束文件里设置,实际上国产工具允许在代码例化IP时直接配置。这个细节在做逻辑分析仪这种高速采集板时特别重要——输入引脚必须配置成高阻输入或带上拉,否则外部信号会被内部下拉电阻吃掉。
国产FPGA生态这几年进步确实明显,底层硬件能力已经不是短板,差距主要在软件生态和高性能IP核的丰富度上。但对DL16 Plus这个级别的应用来说,它已经完全能够胜任。
5. 从探头到上位机:硬件之外还有固件和协议
5.1 采样率与存储深度的匹配逻辑
使用逻辑分析仪时,很多人习惯一上来就把采样率拉到最高。这是最大的误区。1GHz采样率下,如果存储深度是128M采样点,那么可捕获的时间窗口只有128毫秒。一旦信号比这个时间跨度长,头尾就会丢失。
正确的做法是先估算目标信号的频率。调试115200波特率的UART,2MHz采样已经绰绰有余,存储深度可以撑到数十秒。调试50MHz的SPI总线,才需要考虑开启更高的采样率。在选择采样率时,建议使用“信号最高频率×10”的规则,也就是所谓过采样率。10倍以上过采样,既能保证窄脉冲不漏采,又不会因为采样率过高而把存储深度耗尽。
DL16 Plus的采样率是可调档位,这个设计与硬件触发配合起来非常实用。先用低采样率配合大存储深度找到异常发生的大致时间点,再提高采样率缩小窗口,重新触发抓取细节。一次定位一个毛刺,效率比盲采高得多。
5.2 硬件触发:为什么必须由FPGA来干
前面提到,触发引擎在FPGA内部实现,这不是巧合。逻辑分析仪的采样率动辄几百MHz,而软件层面轮询根本不可能跟上这个速度。边沿检测、码型比对这些操作必须在硬件层面实时完成,FPGA正是干这个的最强工具。
触发类型中,码型触发对多通道调试特别有用。比如同时观察SPI的CS、CLK、MOSI三根线,设置CS拉低同时CLK出现上升沿时触发,就能精准定位每一次SPI事务的起始位置。毛刺触发也值得一提,它专门捕获宽度小于一个采样周期的异常脉冲,这种脉冲用普通边沿触发往往抓不到,因为触发的建立时间来不及响应。
实际使用中我习惯把预触发深度设到70%到90%。这样触发后波形中会保留大量触发前的内容,出现问题时要看的是“异常发生之前发生了什么”,而不是异常本身。
5.3 协议解码放在哪一层
逻辑分析仪把波形抓回来之后,协议解码通常在电脑软件里完成。DSView、PulseView、Saleae Logic这类软件都内置了大量协议解码器:SPI、I2C、UART、CAN、USB、SDIO等等。软件解码的好处是灵活,采集完成后可以随时切换解码协议,同一个波形可以先用I2C解,发现不对再换SPI重新解,不需要重新采集。
但这不代表FPGA侧的固件就轻松。FPGA端要做的事情是把原始采样数据按时间轴整齐地打包上传,还要附带触发位置、采样率、通道映射这些元数据。上位机拿到数据后,才能准确地在界面上还原波形和解码结果。
我遇到过一次解I2C总是报错的情况,折腾半天发现是采样率不够。I2C标准模式才100kHz,按理说1MHz采样率绰绰有余,但那个信号上有比较重的毛刺,正好落在采样点上,解码就乱了。提高采样率重新抓,毛刺变细了,解码就正常了。这说明解码的成功率不仅取决于协议本身,还取决于采样质量。
6. 实操中的常见问题与排查技巧
6.1 采到的波形全是毛刺怎么办
这是逻辑分析仪最常见的坑。一同事拿DL16 Plus去测一块电机驱动板,抓回来的波形上一层毛刺,看着全是杂音。排查后发现两个问题:一是地线夹是悬空的,逻辑分析仪虽然通过USB供电并接地,但被测板和电脑之间没有共地,导致地电位差耦合进信号;二是探头线太长,形成了天线效应。把地线接好、换成短线之后,毛刺立刻消失。
另一个毛刺来源是采样率混叠。当采样率低于信号边沿变化速度时,真实信号可能被采成假毛刺。判断方法很简单:把采样率调低一档,如果毛刺还在,那可能是真实信号中的干扰;如果毛刺消失了,说明是采样率不够导致的混叠假象。
6.2 USB断连和缓存溢出
长时间开启1GHz采样、存储深度拉满时,数据吞吐量会逼近USB 3.0的实际有效带宽。这时上位机软件接收不过来,就会出现缓存溢出提示,甚至USB连接断开。
处理办法是分层降载。第一层,把采样率降到满足需求的最低档。第二层,启用硬件触发,而不是无限存储。第三层,如果必须长时间监测,考虑使用流模式并关闭不必要的协议解码。流模式下数据是边采边传的,对USB带宽的要求反而比整段搬运更均匀。
6.3 抓不到一次性异常
异常毛刺本来就罕见,抓不到更是让人崩溃。排除探头没接好、地线没接好这些基础问题后,大概率问题出在触发设置上。
异常信号如果是一个负脉冲,用下降沿触发通常就能抓到。如果这个负脉冲非常窄,那么要改用毛刺触发,设置目标脉宽小于正常脉冲宽度,FPGA会在检测到窄脉冲的瞬间停下来捕获。还有一种情况是异常发生在某个特定状态之后,比如SPI传输完成后的一小段干扰,这时用码型触发,把“CS上升沿之后300纳秒内出现的下降沿”作为触发条件,才能精准命中。
6.4 常见问题速查表
| 症状 | 可能原因 | 解决办法 |
|---|---|---|
| 波形全是毛刺 | 采样率过低产生混叠 | 提高采样率或降低信号频率 |
| 毛刺随探头移动而变化 | 探头线过长或屏蔽差 | 更换短线,远离干扰源 |
| 波形幅度异常 | 未与被测板共地 | 确保地线可靠连接 |
| 数据丢失 | USB传输瓶颈 | 降低采样率,启用触发 |
| 抓不到目标信号 | 触发条件设置错误 | 改用毛刺触发或码型触发 |
| 解码结果乱码 | 采样率低于信号频率 | 提高采样率,保证过采样 |
6.5 想动手复刻一个?练手路径建议
如果你看完这篇拆机心痒痒,想自己动手搞一个FPGA逻辑分析仪,我强烈建议按这个顺序来。
第一步,先跑通一个最简单的UART接收模块,知道FPGA时序是怎么写的。第二步,实现一个数字信号采集模块,用按键模拟外部信号,把采到的数据通过串口发到电脑。第三步,学习FPGA的IO串并转换原语,理解DDR采样的原理,实现一个简易的双沿采样。第四步,在此基础上扩展通道数,从4通道做到8通道甚至16通道。
至于开发板,正点原子自家的FPGA开发板就是个不错的起点,资料全、例程多。国产FPGA的开发工具虽然跟Vivado有差距,但例程和社区问答已经能覆盖绝大多数入门问题。一台逻辑分析仪的FPGA固件,远没有想象中复杂,核心代码量可能就几千行,难点全在时序收敛和数据通路设计上。等你亲手调通了DDR控制器,再去回头看DL16 Plus的拆机图,看到的不再只是一堆芯片,而是一整套清晰的硬件架构。
7. 写在最后:拆完之后的一点体会
拆完这台DL16 Plus,我最大的感受是:仪器产品贵,贵的从来不是物料,而是整个数据通路的设计与调优。1GHz采样率听起来只是数字,背后涉及到的多相时钟生成、高速IO采样、DDR存储控制、USB传输调度,任何一环有问题,最终到屏幕上就是一片雪花。能把这条链路跑通跑稳,本身就说明国产FPGA已经具备了相当的工程化能力,也说明正点原子这帮做硬件的人,确确实实把底层细节打磨过一遍。
以前很多人一提国产FPGA就摇头,觉得工具链难用、IP核太少。这几年拆过几个实际产品之后,我自己的判断是:在中低配置的工控、仪器、通信场景里,国产FPGA已经能撑起核心角色了,DL16 Plus就是一个例子。如果你还在纠结入门该学哪家FPGA,我的建议是别纠结品牌,先把Verilog和数字电路搞明白,工具链只是习惯问题。
最后再分享一个小技巧:拆机前一定先给外壳拍照留底,特别是排线方向和螺丝位置,装回去的时候能省不少事。拆的时候注意静电防护,尽量戴防静电手环,或者先摸一下金属水管放掉静电。逻辑分析仪本身是工具,拆它是为了理解它,理解透了,用起来心里才有底。