新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > 生活百科 > 科技

滴!刷卡的时候发生了什么?

时间:2019-12-06 10:09:07  来源:  作者:

这个情形,有一点像是RFID芯片在发电报。读卡机根据周边电磁场的强弱变化情况,就可以知道RFID中的芯片在“说”什么了。有了RFID技术,刷卡上车,刷卡进站,刷卡开门这些我们生活中常见的事情才成为可能。想要明白RFID技术的原理和“进化”过程,我们得从摩尔斯电码说起。

滴!刷卡的时候发生了什么?

(图源:flickr.com)

撰文 | 吴进远

前两年,有位朋友告诉我,她儿子着迷摩尔斯电码。我很好奇,在电脑手机互联网的时代,他是怎么知道摩尔斯电码的?后来我看了一部谍战电视剧才知道出处,那里面的女主角认真而又神秘地说,赶快把情报用摩尔斯电码发给上级。

我们这篇文章,就聊聊摩尔斯电码,以及其他的一些码。首先,我们需要理清一个可能由听觉引起的误导,摩尔斯是个姓,这个摩和魔法魔术魔力的魔没有关系,正如姓孙和太阳没有关系,姓何或者姓佘与“他”或者“她”没有关系一样。因此,摩尔斯电码尽管很重要,但并不像谍战剧女主角暗示的那样神秘,摩尔斯电码本身甚至连密码都不是。

为什么要编码?

简单地说,凡是没法说人话的时候,就都需要编码。就说打电报吧,发电报的人按下按键,收电报的那一方就听到“嘟”的一声。那么,怎样用电报来传递人话呢?这就需要编码,而摩尔斯电码就是这样一种编码。

摩尔斯电码是用按键的时间长短来传递信息的。按键时间短,称之为点,耳机里就听到“的(di)”的一声,而按键时间长,称之为划,听起来就是“哒”的一声。若干个“的”或者“哒”排列在一起,就代表一个字母。有了字母,你就可以传递人话了。比如你想说“救命啊(SOS)”,你就可以发“··· — — — ···”。

滴!刷卡的时候发生了什么?

(图源:By Rhey T. Snodgrass & Victor F. Camp, 1922- Image:Intcode.png and Image:International Morse Code.PNG, Public Domain, https://commons.wikimedia.org/w/index.php?curid=3902977)

从表中不难看出,不同字母的编码长度是不一样的。大家找找看,最短的编码是哪个?没错,是E。为什么要把E设计成最短的码呢?因为E出现的概率比较高,用比较短的码来表示出现频度高的字符,可以大大提高信息的传输效率。

人同此心,心同此理,事实上,不论古今中外,人们都是这样做的。比如,《红楼梦》有个版本叫《脂砚斋重评石头记》是手抄本。

滴!刷卡的时候发生了什么?

抄写的人,就把一些出现概率高的字,用笔画较少的字代替。林黛玉的“黛”,用“代”来代替,省了很多笔。寶玉和寶钗的“寶”,也被写成“宝”(有没有听人家嘲笑过简化字:宝无貝?嘲笑的人请自觉到脂砚斋的芳冢上压棺材板)。顺便说一句,宝这个字原来有两个写法:寶和寳。学问大的家长,可以给孩子讲讲(也顺便在文章后面留个言),这两个字的用法有什么不同。

从某种意义上说,文字就是一种编码。我们说的人话,没有办法直接记录到龟壳,兽骨,竹简,石碑,锦帛,纸张上,因此就需要用一个符号系列来记录。或者是记录读音,比如各种拼音文字,或者是直接记录事物或动作,比如汉字。

当电报出现后,连字母这种人话的编码都很难传递,于是就进一步码上加码,用按键的长短来把字母和数字编码。

用摩尔斯电码,我们显然可以发送用拉丁字符拼写的信息。可是,要想通过电报发送中文信息又该怎么办呢?在很长一个时期中,中文是用从0000到9999这样的四位数字编码的。而发电报时,再用摩尔斯电码发送四位一组的数字串。哪四个数字代表哪个汉字,当时是有一个全国通用的编码本的,这套编码通常称为明码。

谍战剧里发电报,想来多半不会用明码,而是收发双方各有一本专门编写的密码本,那里面哪个数字对应哪个汉字与明码的规定是不同的。这样的电报,敌方可能监听记录下来,写出来是一串数字。但如果想翻译出来,就很需要大开脑洞了。

由于用一串数字代表一个汉字,因而不难想象,要把中文翻译成数字电码,其中的劳动量是很大的。因此,当年到邮局发电报,收费是按字数计算的。按照当时的物价,在食堂买一个馒头4分钱,而发电报每个字3分5厘。这就要求电文必须简练清晰,没有废话。

比如姥姥要从北京坐火车去上海,妈妈给上海的舅舅打电报让他去车站接。这么一件事妈妈写出的电文是:“母于九月十日五次车下午两点半到上海”,已经够简练了吧?而邮局电报柜台的营业员阿姨会贴心地帮你改成“母9.10 5次1430到沪”。除了把上海简称为沪减少了一个字,电文中还尽量把汉语数字用阿拉伯数字来写。因为我们前面讲过,一个汉字要用四个数字来代表,而直接用阿拉伯数字,需要发送的字符数量就减少了很多,从而省下可以买好多个馒头的钱。

电报早已离开人们的生活走入历史,但那个时期留下的很多概念仍然没有过时。比如通讯安全(密码编制与反破解),数据无损压缩(把E用一个点表示)与有损压缩(用阿拉伯数字代替汉字数字)等,直到现在仍然是我们需要不断解决的问题,同时也经常给我们的科研工作带来启示。

计算机用的串行码

有人把摩尔斯电码中的点划说成是计算机二进制中的1和0,其实这是误解。摩尔斯电码之所以可以正确地传递信息,除了点划这两个要素,另一个必不可少的一个要素是没有声音的空白时间段。

前面的编码表中规定,点是一个单位时间段,划是三个单位时间段。这个单位时间段可长可短,因人而异,熟练的发报员可以短些,而生手可以慢些。除此之外,还规定了点点,点划,划划之间的空当为一个单位时间段,字母之间的空当为三个单位时间段,不同单词之间的空当为七个单位时间段等。只有这样,才不会把不同字母之间的点划连到一起,也不会把同一个字母中的点划拆到两个字母之中。

这样的编码方法可以确保收发报的人类不至于出错,但在计算机出现后,这样的编码就显得效率太低了。那么计算机里用的编码长得什么样子呢?我们举个简单的例子来说明。

当我们在键盘上按下一个字母键的时候,怎样让计算机主机知道我们按的是那一个字母呢?这是通过串行接口传递的高低电平知道的。如果我们找一个旧式的键盘,把键盘和主机之间的电缆剥开,找到许多线中正确的信号线,就可以从示波器上看到类似下图的波形。

滴!刷卡的时候发生了什么?

在没有按下键的时候,串行接口处于静止状态,导线上处于高电平。当我们按下一个按键后,发送端首先把接口上的电平拉低一个单位时间段,然后在后面(即上图竖直实线之后)的8个单位时间段内输出时高时低的电平。具体哪个时间段高哪个时间段低,取决于我们按下的是哪一个字母或数字键。显然,后面这8个单位时间段每个时间段可以传输一个比特的信息。

很多情况下传输一个字符,需要10个单位时间段,这10个时间段包括在8个比特的信息之前需要一个低电平时间段以告知接收方准备接收,以及在8个比特传输之后,设置一个高电平的时间段,以便与后面紧接着的字符区隔。

当然具体使用接口时,我们有时可以把接口参数设置成只用7个比特传输一个字符。因为26个大小写英文字母,加十个数字,再加各种标点符号已经各种控制命令,只需要128种不同字符,因此可以用7个比特编码。尽管很多时候我们传输字符时包含了8个比特,但最高位的第8个比特总是0或者低电平。

如果我们打开示波器的波形记忆功能,则会得到如下的显示。

滴!刷卡的时候发生了什么?

这个图中记录了我们连续发送两个字符时,示波器上看到的波形。在键盘上依次按下不同的字母与数字键,示波器记录下在每个单位时间间隔中信号的高低电平。可以看出,不论对哪一个字符,第一个起始时间段总是0。随后7个时间段,电平可以高也可以低。而第8个比特在传输普通字符时总是低电平。

假定我们按键速度极快,则第一个字符发送后,接口会紧接着发送第二个字符,如上图右半边所示。这第二个字符也是先把接口信号电平拉低一个单位时间间隔,然后发送8个比特的信息。

串行接口传输的速度称为波特率,前面图中接口的波特率是1200,它在每秒钟内可以传输1200个前面所说的单位时间段。换句话说,每个单位时间段的长度为1/1200秒,也就是0.83 毫秒左右。假定我们使用的接口设置是用10个单位时间段发送一个字符,则在波特率为1200时,每秒可以传输120个字符。

每秒120个字符在很多应用中会嫌太慢,毕竟120个字符仅仅对应于很多显示器上一行半文字,因此人们很多时候会需要更高的波特率。反之,如果传输距离很远,电气环境恶劣,而需要传输的信息量不太大时,人们可能需要比较低的波特率,以确保信息传递准确。常见的串行通讯接口往往会支持很多不同的波特率,包括75, 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 等等。

说了半天,计算机具体是怎样把高低电平转换成字符的呢?这就需要我们在把字符编成码。很多计算机设备中,用的都是ASCII编码。这个编码表的一部分如下图所示。

滴!刷卡的时候发生了什么?

计算机首先把收到的高低电平排列成一个二进制数,然后从第2列(或第5,第8列)中找到对应的二进制数,就可以查到对应的字符。

对于人类来说,我们脑子里没有安装计算机中的电子元件,要想根据示波器上的电平翻译出传输的字符,就只能用笨办法了。设想我们在示波器上看到了下面一个波形。

滴!刷卡的时候发生了什么?

这个波形在实虚两条竖线之间,显示了一个“高低高低高高低”的电平序列,我们高兴的话也可以读成“平仄平仄平平仄” 。为了翻译出这个字符,我们首先把这个电平序列写成1010110。不过,这一串数字与前面表上的二进制数还不完全一致。串行接口是先传输低位比特,后传输高位比特的,因此,我们应该把前面这个数的比特前后次序翻过来,变成0110101。用这个数,我们可以从编码表中查出,这个电平序列对应的是第53号字符:数字5。

要是我们在示波器上看到了“仄平仄平仄仄平”的波形,这又是一个什么字符呢?

滴!刷卡的时候发生了什么?

我们把这个电平序列写成0101001,它对应的编码是1001010,也就是第74号字符:字母J。

大家想想看,要是把摩尔斯电码显示到示波器上,会是什么样子?

智能卡与数据编码

现在,我们的生活中到处都是计算机。为此,我们需要与计算机迅速方便地交换信息。只要我们注意观察,在我们周围有许许多多用于信息交换的东西。比如,我们可以从钱包里掏出一张信用卡或者银行卡,和孩子一起看看,很多卡上会有一个 1 厘米见方,切割得像花一样的小方块。

滴!刷卡的时候发生了什么?

这是一块小型的电路板,上表面粘了镀金铜箔,铜箔被光刻腐蚀成8个接脚。当信用卡插入读卡器中时,读卡器中的接点与这8个接脚联通。电路板背面粘贴了一小块芯片,芯片与这8个接脚通过细金属丝点焊在一起。这些接脚的功能是什么呢?

滴!刷卡的时候发生了什么?

上面图中标注了第1,2,3与5,6,7接脚的功能,第4与第8脚是为今后可能的拓展预留的。在有很多信用卡上,包括手机上用的SIM卡上,仅仅使用了6个脚,其他两个脚甚至可以不做出来。

在这些脚中,VCC与读卡器电源正极连接,GND则与公共地线连接,卡上的芯片通过这两个脚来供电。

芯片接上电以后,内部可能处于混乱状态,因此需要通过RST脚短时间内加一个电平,使得芯片内部各个寄存器复位。

芯片复位后,需要知道让它做什么,这就需要从外部送入芯片命令以及其他数据。命令与数据是通过I/O这根线送进去的。尽管I/O只是一根线,我们通过它传输的数据却是包含有很多比特的。因此,它所传输的数据是经过类似前面谈到的串行接口那样的分时编码的。

不过,芯片怎样才能知道I/O接口上哪个时刻的电平属于哪个比特呢?这就需要CLK这个时钟信号。所谓时钟信号,是按照一定频率上下变化的逻辑电平。在芯片当中,寄存器在时钟电平的上升沿或者下降沿,将I/O上的电平记录下来,成为一个比特。这样每一个时钟周期,可以传送一个比特。反过来,芯片向外输出其中数据时,也需要时钟信号的驱动,使之每个周期输出一个比特。此外,芯片中的计算功能也是利用时钟信号来控制其节律的,一般讲,每一个时钟周期可以执行运算程序中的一个步骤。

下图是一个废旧智能卡的复位操作。

滴!刷卡的时候发生了什么?

图中通道1为RST信号。通道4为CLK,由于CLK的频率相对比较高,所以图中显示它的电平变化非常密集。通道2为I/O信号,在没有数据输出时电平为高,而在传输数据时则上下变化。这个波形显示当芯片收到复位信号后,送出一大串数据。这里显示的仅仅是开始的几个比特。

在有一些应用中,芯片需要在断电后仍然能够记忆一些信息,类似U盘那样。这就需要芯片里有 EEPROM 或 FLASH 这样一类存储单元。这些存储单元在写入信息时,往往需要相对比较高的电压。前面图中的第6脚,C6-VPP 就是用来提供这个电压的。

由于这种有芯片的信用卡或银行卡具有一定的加密功能,因此比起只有磁条的普通信用卡,其安全性提高了很多。

RFID与数据编码

前面谈到的接触式芯片卡固然有很多优点,但在一些需要快速完成验证的应用,比如公交地铁的检票系统中,乃至电子门禁中,就不是非常方便了。在这类应用中,人们普遍选用非接触的RFID芯片卡。在有的城市公交或地铁系统中,车票本身就是一张RFID芯片卡,整个卡制作在一张硬纸片上,然后在另一面贴上一层纸保护起来,成本极低。这样的车票放在水里浸泡一段时间就可以很容易揭开,暴露出完整的RFID的构造。

滴!刷卡的时候发生了什么?

这种RFID卡中占据空间最大的是用金属薄膜制做的一个线圈,这个线圈是芯片与外界连接的唯一通道。从下面图中,我们可以看清楚线圈右下角的结构。可以看到有一根跳线,将线圈内圈与外边金属连接。最终,线圈的两端与一个芯片连接在一起。

滴!刷卡的时候发生了什么?

芯片需要有电才能工作,因此怎样向芯片供电是这类技术的头等大事。对于接触式的芯片卡,人们可以利用一对接点来供电,但对于RFID,则只能通过线圈供电。当RFID接近读卡机时,读卡机首先发出一段时间的射频电磁波。比较常用的频率是13.56 MHz,当然有时也有工作在比较低的频段(120-150 kHz)或者很高频段(433 MHz以上)的情形。变化的电磁场通过线圈产生感生电动势,经过芯片整流,变成芯片可以使用的电能。

芯片根据其内部存储的数据,改变自己的有效载荷,有的时间段显得负载重,有时显得负载轻,这样就实现了对周边电磁场的调制。这个情形,有一点像是RFID芯片在发电报,尽管不是用摩尔斯电码,尽管发报距离仅仅几个厘米,而且发报机的电源还是收报方通过变化的电磁场提供的。读卡机根据周边电磁场的强弱变化情况,就可以知道RFID中的芯片在“说”什么了。有了RFID技术,刷卡上车,刷卡进站,刷卡开门这些我们生活中常见的事情才成为可能。

摩尔斯电码的确并不神秘,但它的意义还是很大的。摩尔斯电码出现时,人们甚至还没有幻想到计算机这个东西。但是电信号编码这样一个思想,却深刻地影响着计算机技术的发展。实际上,摩尔斯电码本身,是人们迄今使用时间最久的电信号编码方法。所以我们应该感谢谍战剧普及了摩尔斯电码这个名称,因为在我们今后的技术发展中,它还可能会继续带给我们新的启示。

来源:赛先生

编辑:lwk



Tags:刷卡   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
这个情形,有一点像是RFID芯片在发电报。读卡机根据周边电磁场的强弱变化情况,就可以知道RFID中的芯片在“说”什么了。有了RFID技术,刷卡上车,刷卡进站,刷卡开门这些我们生活中常见的事情才成为可能。想要明白RFID技术的原...【详细内容】
2019-12-06   刷卡  点击:(26)  评论:(0)  加入收藏
银行作为发卡机构,对信用卡的管理一向比较严格,如果因为自己日常刷卡过程的姿势不正确,而被银行盯上,那你接下来的提额就别幻想了,还得小心降额、封卡。看看银行对哪些“姿态”会...【详细内容】
2019-10-29   刷卡  点击:(28)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条