来源:中国一卡通网 作者:沈文龙 发布时间:2008-01-07 14:05:42 字体:[大 中 小]
关键字:rfid卡 射频识别卡 u2270b 磁卡 仿真模块 射频卡
摘 要:设计一种能从射频识别(RFID)卡读取数据,而后又仿真磁卡格式输出的模块,借助这种模块,能在不改变原有应用系统的基础上,将系统的磁卡替换为RFID卡.本文介绍的模块选择H4001作为替代磁卡的RFID卡,模块本身则主要由天线、非接触式射频卡读写基站芯片U2270B和单片机AT89C2051构成.在介绍应用电路的同时,分析了RFID卡、磁卡的相关编码格式,提出实现RFID卡信息读取、磁卡仿真输出的方法和步骤,并给出了相应的程序流程图.
表1中各字符编码由BCD码(4位二进制数)另加1位奇校验表示,即用P、B3、B2、B1、B0表示1个十进制位或控制/标志符,且P+ B3+B2+B1+B0=1.如ES(结束标志)的代码是0FH,加了校验的BCD码则为1FH,对应的字符是‘?’.
刷卡时按上述规定解码磁卡信息,各字符的装配顺序由低位到高位.这需要磁头、放大整形电路、时钟与数据分离解码电路(可用专门电路或软件解码),解码后由3根信号线CLK、DATA和/CLD 把信息传递给有关处理单元进行解释处理.本模块并不需要解码磁卡信息,但是要求仿真ABA磁卡信息,并由CLK、DATA、/CLD信号线输出.3根信号线的用途如下.(1)CLK(CLOCK)同步时钟信号,1个周期对应1位二进制.(2)DATA数据输出端,在各CLK周期中间位置之前,确定其输出电平.若发送“0”,则DATA置为高;反之,发送“1”则DATA置为低.(3)/CLD(CARD LOAD),有效(低电平)时表示已检测到磁卡,正在刷卡.接收处理单元应做好接收准备.它必须比CLK、DATA先有效,后撤消.
手工刷卡速度范围一般是10—120 cm·s-1,对应的CLK周期变化范围很大.为了便于后续处理,仿真输出可取一个稳定的较大值,满足绝大多数应用系统的要求,因此,本模块设定为3 ms.
5 模块的软件设计
参照图1,U2270B接收114001的信息,并通过U2270B的Output脚把解调的数据输出给AT89C2051 进行解码.AT89C2051除了对H4001卡信息解码,还需进行二进制到十进制数据转换,仿真ABA编码格式输出数据等.本文介绍AT89C2051软件核心部分的设计思路和程序流程.
5.1 H4001输出的64位数据的解码
参照图2的Manchester编码,其解码方法如下:在每个位时钟周期的中间位置检测电平的变化情况,如果检测到电平由低变高则该位解码为“0”;反之,电平由高变低则解码为“1”.若未发生变化则视为信号异常进行出错处理.
这里存在如何检测、界定时钟周期的起始位置、中间位置问题,各种卡的做法并不一致.H4001没有专门的硬同步信号,不能检测特殊信号作为起始标志,而是规定64位数据位的前9位固定为全“1”,最后1位设定为“0”,作为起始和结束标志或设定为同步信息.分析连续的若干位“1”和连续若干位“0”,其波形非常相似,所以实际解码时,应该先检测到1位“0”,再接着检测连续的9位“1”,那么可以肯定,后续的54 个信息位便是40位真正的数据和14位相关的奇偶校验位,有关数据排列顺序见文献[4].可以想象,这里不应该实际上也不可能再次出现1位“0”后跟随连续的9位“1”.接下来是最后1位,必须是“0”,如此继续下一循环,否则便是出错.为了提高效率,可以在循环内边检测校验,边解码保存H4001卡的信息,其程序流程如图4所示.
图4 H4001卡数据的解码程序流程图
图4未对解码得到的40位二进制(BIN)数据进一步分解.其中前8位是客户标识代码,用于区别不同的系或客户;后32位表示该卡的序列号,一般需要转换为l0 位的十进制数.例如,在该模块上检测到某卡的64位二进制数据串如下:111111111 00011 10001 00000 00000 10010 10100 00000 10111 10010 0001l 1001 0.其中最先出现的是起始标志9位“1”,然后l0组5位的数据,各组的最后1位是本组的偶校验码(从实际解码得到的数据看,它们都是正确的),接着的1组4位数据“1001”是这l0组数据的纵向冗余校验码(LRC)或偶校验码,最后1组是1位的结束标志“0”.第1组、第2组数据“0001”、“1000”(剔除校验码,下同)代表客户编号或版本号,第3组到第1O组数据是以二进制表示的本卡号:0000 0000 1001 1010 0000 1011 1001 0001(高位在先),转换成十进制,得到的序列号是0010095505.再分别计算这l0组第1,2,3,4位的偶校验码,应该分别是1,0,0,1,正好是解码得到的LRC.所以,这64位数据串是正确读出的0010095505号H4001 RFID卡上数据.
推荐文章
论坛热帖