有人分析模拟示波器实现bad apple是这样的,数字示波器应该没那么复杂:
视频中使用的是模拟示波器,原理是使用电子枪打点方式显示的。估计方法是:
1)先将视频变换为帧图像,压缩图像,然后逐帧进行描边,得到视频的二维数组(帧采集我不熟悉,图像压缩、描边,PS或matlab都能实现);
2)制作一块单片机小板,带两个DAC输出,编程,使用第一步中得到的数组;
(好多人都说:同一列上有两个y值,这不科学!我来解释一下:
方法一,利用视觉残留原理,提高采样速率,第一次扫描时,例如点打在A(1,3)位置,第二次点打在B(1,5)位置,而视觉上,A点并未消失,就形成了同一列上有两个y值;
方法二:x-y输入方式,固定x的值,y上的值你爱输出几个就输出几个。
视频中部分线条较暗,显然是该列的点数较多,导致每一点(根据使用方法,也可能是某一点)的视觉残留效应不够强。)
3)将单片机板的x轴、y轴的DAC的输出接到示波器上对应的x轴输入、y轴输入,扫描频率档打到x-y档上,开始进行测试和调整。
整个过程的难点:1.需要的专业知识多,视频处理技术、图像处理技术、示波器原理、单片机相关技术、DAC相关技术等。
2.需要繁杂的工作,罪繁杂的大概是帧图像到二维数组吧,其实二维数组到单片机可用的数值还需要一步处理的。然后,大概后期测试和微调也是相当麻烦的吧。
3.速率匹配的计算,示波器最大扫描速率,单片机速率、DAC速率之间需要较高精度的匹配。
上图显然是数字示波器,而且显然没有数字示波器该有的行首、行尾的波形数据(例如扫描带宽等)。那么,它的处理器和处理方式就不是走示波器显示原理,而是电脑类型的处理器,加上示波器的屏而已。
猜测是将示波器的屏幕接口接上电脑主机(可能需要一块转接板,毕竟电脑的分辨率和示波器屏的分辨率不一样)。如果是这样的话,最大的难度就在转接板,根据接口协议的不同,转接板可能很简单,可能比较难。 |