有两个场景比较有趣,一个是示波器的波形没到trig level就触发了。另一个是时基一长示波器trig功能就失效,即便确实有trig信号过来,有时候能触发,有时候不能触发。
第一个案例:
示波器没到trig level就触发的问题
介绍下背景:
channel1:是一个GPIO的波形;channel2:是+12V上电的波形;想看上电时候GPIO的波形长相。
预期长这样:+12V上电,GPIO推电平。
但是有几次测到,示波器触发点处波形没有达到trig level就触发了?
尝试缩小时基打开这trig level的点到底发生了什么:
一无所获没发现什么,但是可以看得见的是channel1的GPIO好像有点“冲动”,有个小台阶但是马上就跌落了。
电源给了它一点点动力。
这个问题就陷入僵局了,因为你不是designer所以这个东西解不掉,你不知道示波器里面的
电路是怎么做的,只能根据一些现有的资料做推断。
什么时候触发?adc的数据和trig流程/时序?
后续找了点资料(40GSPS 示波器的高性能触发模块设计,
电子科技大学的毕业论文),
我的示波器DSOX1202A这个触发电路应该是个模拟的实时的比较器,通过trig level的旋钮控制DAC送出一个Vref电压加在比较器上,通过比较输入信号的大小,送出给
FPGA TRIG信号(假设controller是FPGA/专门的ASIC)。FPGA 获得 trig 信号,把DDR内部的数据展示到屏幕上。
整体的电路长相:
可以看到框图上是两条路径了,触发系统和AD电路完全是两套。
从我们的现象来看就是,触发电路对触发事件做出响应,而这些触发事件事实上不能被采集路径捕获和显示。
那么我就有了以下猜测,在trig点处确实发生了一个Tpluse非常非常短的脉冲(符合上电的情景),也能够被比较器比较,正好送入trig 电路。
示波器在采集的时候,由于时基非常大200 ms/格,ACQ frequency也降到了1Msps。如果ADC采集的两点正好跳过/擦边这个Tpluse非常短的脉冲,那么送出显示模块的数据流必然没有这个脉冲/只有一点点,所以才会看到trig point的波形没有超过trig level,但是trig这个行为却发生了。
可以看到信号本尊和示波器展示的waveform长相差很多,在低采样频率下。
后续做实验尝试着缩小时基,增大ACQ frequency,每次trig的点都能够恢复正常。那么猜测大概率就是对的。
+12V的上电波形也应该长成这样,都是一些毛刺,Tpluse很小,由于采样率的提高,这些毛刺基本都能被捕捉和show出来。
第二个案例:
为什么TRIG行为明明发生了,但是示波器为什么没有波形,仍在wait trig?
介绍下背景:
channel 1:是一个GPIO的波形;channel 2:是+12V上电的波形;
以channel 2作为触发源 trig level 8V,时基放到200 ms,有时候能触发,有时候不能触发,一直wait trig中。。。基本上时基越大,存储深度越深,越触发不到。
是什么原因?
示波器可能90%的时间都是在死区时间,这时候外部信号虽然满足trig条件,trig信号也应当屏蔽掉。
(例如assign true_trig == dispaly_done && fifo_empty && calculate_done && i_ trig)
在数据没显示到屏幕上/fifo没空/数据没运算完/即便是trig信号来了,相与也是0不做trig。
因为这时候数据就没有处理完,需要等到捕获第二个波形才能trig。如果上电的信号trig边沿时间恰好落死区时间(90%都在死区时间,性能越高的示波器越小),那么这个trig就是无效的。又回到了{触发电路对触发事件做出响应,而这些触发事件事实上不能被采集路径捕获和显示}
想象下如果一台8bit adc的示波器以80G的采样率,采真实世界1秒钟,会存下来多少数据?
80Gsps*1s*8bit/sample=640Gbit=80GB,一个DDR颗粒才多少G,512Mbit,我要给160颗DDR做等长吗?layout er:你打死我算了,辞职不干了。
原作者:沈土豪 沈土豪的书屋