注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

highspeedlogic

FPGA/MATLAB/Simulink

 
 
 

日志

 
 

HighSpeedLogic专题:打印机基带泄漏还原  

2014-05-17 13:25:08|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

专业技术网站:http://www.hslogic.com/

热敏打印机由电源、控制板与热敏打印头组成。控制板接收由主机发来的数据,然后将每一个字符的字形码从内存(ROM)中取出,并按照一定格式放入内存(RAM)中的打印点行缓冲区,最后将点行缓冲区的内容送到打印头的移位寄存器中,进行热敏打印。

        整个打印过程处理了两种包含信息的数据信号,第一种是从主机发送到控制板的数据,一般通过并口、RS232串口或者USB发送,用ASCH编码英文字符,GB2312编码中文;另一种数据时控制板发送大打印头的字形数据,是没有编码的明文数据。所以,可以通过截获这两种数据信号的电磁辐射来再现打印信息。

       设备的实验环境如下:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

 

         通过设备采集后,获得的采集的信号如下所示:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

下面我们对这段采集到的信号进行解析。

第一部分:清晰数据的还原分析

         我们设计的是一种较为通用的识别方法,即未知同步字头的情况下,进行二进制数据的识别。

        这里我们首先对清晰数据或者滤波后的数据进行说明,这里我们只需要人工设定起始点位置,其余为自动识别。

        这里,具体的操作步骤为:

        需要设置代码中的如下参数:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

其中start1end1两个参数,是设置对原始信号的粗步截取,效果如下:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

我们将截取后的信号端放大,如下所示:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

这是第一个峰值坐标为1652,我们然后再设置

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

      对于其他信号,我们也可以采用上面的方式,进行人工的选择,采用这种方法,我们不需要像你之前朋友的那种算法,进行字头检测和字符其实检测。

      一旦设置好上面的参数之后,后面的二进制数据识别检测结果如下所示:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

然后放大显示如下所示:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

上面就是检测到的二进制数据。

        这里检测原理为边沿检测算法,即当出现上边沿的时候,则连续为高电平,如果检测到下边沿,则会连续的低电平信号。

        我们这里设置的信号还原算法比较简单,以上就是基本的操作流程。

下面重点介绍低信噪比下的滤波处理。

第二部分:模糊数据滤波及数据还原分析

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

以上是带噪声的测试信号,通过分析,由于带噪声的信号中,存在如下几种类型的噪声,工频噪声(即总体上的正弦类型的波动),白噪声(即波形上的各种抖动),以及其他电磁干扰。

       我们这里首先滤波去工频滤波:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

       然后通过小波滤波,得到原始的有效信息:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog


放大效果如下所示:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

       然后对滤波后的数据进行识别:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

这里,通过滤波之后,得到的信号进行门限的判决,这里由于每个符号有5个采样点,所以通过滑动窗口的办法,即每5个采样点进行判决,计算其中的最大值和最小值,最大值和最小的差值的0.3倍作为判决门限。

       然后同时判断,如果最大值大于0.5,那么认为该点对应的符号为1,如果最小值小于<-0.5,那么认为该点为-1,然后如果最大值小于0.5同时最小值大于-0.5,那么认为这个值是和前面一个符号是相同的,另外一方面,如果同时满足最大值大于0.5,最小值小于-0.5,那么比较最大值和最小值的绝对值,如果最大值大,那么取1,如果最小值的绝对值大,那么取-1

      另外,从上面滤波后的效果可知,通过滤波,有效信号相对于噪声信号的能量增加了大概0.7~0.8左右,即有效增益增加了5db以上。

       这里,对于信息还原部分的算法,已经差不多就是这样了,如果要进一步提高性能,只能对滤波模块进行提升。

       这里,我们以连续发送的a数据为测试案例,将数据延迟50个采样点,然后重合部分就是相当于数据部分a。如下所示:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

上述一个周期数据即为一个符号a

       上述二进制对应的是0-0101-0111-1

将上面的数据取反:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

那么可以看到一个周期中,有0-1000-0110-1

Aassic码。即接收到A

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

上面还原得到的数据就是对应的字母a

       整个软件系统的GUI界面如下所示:

HighSpeedLogic专题:打印机基带泄漏还原 - highspeedlogicblog - highspeedlogicblog

通过对最后识别得到二进制编码信息,可以得到对应的中文文字信息。

  评论这张
 
阅读(3572)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017