如何处理示波器将软盘中传输的模拟信号?

如何处理示波器将软盘中传输的模拟信号?,第1张

最近,vsftpd作者、Google Project Zero创始人Chris Evans和Phil Pemberton一起恢复存储在软盘中的几个古早游戏代码时,他们发现,部分软盘出现了不同程度的损坏,以致于直接用Greaseweazle这样的设备是无法读取的。

 

Greaseweazle F7 Plus

怎么办?大佬决心用万能的示波器,抢救宝贵历史代码。

没错,就是那种用来测试电路、显示波形的仪器。

 

恢复出来的游戏代码竟然还能玩,而且界面显示清晰:

 

这波 *** 作,看得网友直呼:数据考古不要太酷。

手敲0和1,100%恢复古早代码

软盘通常以模拟信号的方式存储数据。

这里面存储的模拟信号,用的是最原始的FM调制(频率调制)。

也就是说,它所存储的信号0和1,分别会以不同的波形频率表示。

如何处理示波器将软盘中传输的模拟信号?,如何处理示波器将软盘中传输的模拟信号?,第2张

这代表的是00101100

以下面这段波形为例,单位周期下,在信号为0时,输出的频率是比较慢的;而当信号变成1时,频率就会突然变快。

如何处理示波器将软盘中传输的模拟信号?,如何处理示波器将软盘中传输的模拟信号?,第3张

因此,只需要找到周期规律,就能判断一个周期里,信号代表的是0还是1。

但也不能仅仅看峰值来判断信号是否为1。例如,在这个周期里,就出现了一个“假峰值”,然而人工解读的结果还是0。

如何处理示波器将软盘中传输的模拟信号?,如何处理示波器将软盘中传输的模拟信号?,第4张

因为这个峰值其实是一个噪音,信号的整体趋势仍然是下降的,波形的频率本质上并没有变化。(但信号为1时,波形会呈现一个完整的周期,起始点和终点的值是非常接近的)

有网友给出了简单的判断方法:一个周期过去,如果信号值变化很大,则代表0;如果信号值几乎不变,则代表1。

如何处理示波器将软盘中传输的模拟信号?,如何处理示波器将软盘中传输的模拟信号?,第5张

据Chris Evans介绍,代表0的正弦波信号,是8μs一个周期;而代表1的正弦波信号,则是4μs一个周期。

这种情况下,用Greaseweazle等“现代设备”直接读取数据,会出现一个问题。

如果软盘中的数据,由于各种外部原因(时间久远、使用次数过多)出现了损坏,那么仅凭机器,是无法从这些带有大量噪音的数据中完成解读的。

如何处理示波器将软盘中传输的模拟信号?,如何处理示波器将软盘中传输的模拟信号?,第6张

△就像这样,有一个扇区出现了问题

但人却可以轻易看出这些数据中的“规律”,从而判断信号的状态。

因此,用示波器将软盘中传输的模拟信号展示出来,再由人工进行解读,会是个更好的方法。

于是Evans和Pemberton将示波器直接连上了软盘驱动器的测试点,看看软盘到底都输出了些什么信号。

其中,输入信号会呈现一正一负两个波形,用来消除一部分噪声。

 

从各种“年代久远”的软盘解读出的信号来看,难怪Greaseweazle这些设备读不出来……(连人也得仔细分辨一会儿)

如何处理示波器将软盘中传输的模拟信号?,如何处理示波器将软盘中传输的模拟信号?,第7张

接下来,就是处理这些神奇的波形了。

为了更好地处理噪音、绘制信号图像,Evans和Pemberton还用上了Audacity来处理模拟信号。

Audacity是一个免费开源的音频分析和编辑工具,能够快速放大和检查波形,还具有多功能低通滤波器,以及直接绘图的功能。

如何处理示波器将软盘中传输的模拟信号?,如何处理示波器将软盘中传输的模拟信号?,第8张

另外,Audacity也支持CSV文件的导入。

Evans和他的小伙伴还利用这样的音频工具搞出了新的衍生玩法……

比如将速度放慢100倍,听一听软盘记录的声音。

恢复出来的数据,效果还不错。

如何处理示波器将软盘中传输的模拟信号?,如何处理示波器将软盘中传输的模拟信号?,第9张

但上面这些,还只能用于数据比较正常的信号。

对于软盘本身有轻微损坏的信号,想要恢复就变得更困难了。
       本文综合整理自量子位 EDN电子技术设计
       责任编辑:pj

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2445432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-03
下一篇 2022-08-03

发表评论

登录后才能评论

评论列表(0条)

保存