IC卡是集成电路卡(Integrated?Circuit?Card)的简称,有些国家和地区称之为微芯片卡(Microchip?Card)或微电路卡(Microcircuit?Card)。IC卡的大小和磁卡相同,它把集成电路镶在塑料卡片上,芯片一般是数据不易丢失的存储器(ROM,?EPROM.EPROM),?保护逻辑电路,或者CPU。IC卡最初是为了解决金融交易中的安全性问题而设计的,它带来全新的交易概念与巨大的优势。很快,这一优势也为其他应用部门所看中,使之广泛应用于电话、医疗保健、路禁控制和门锁控制等等系统中。随着时间的推移,应用范围还在不断扩大,使用IC卡的数量呈几何级数增长。同时,为了不同应用场合的需求,IC卡制造商们仍在不断地向市场推出新的IC卡,IC卡的价格将随着使用量的增加而逐年下降,所有这些,无疑又会大大推进IC卡在各个领域的普及。??
????按照IC卡与读写设备的数据交换方式,IC卡可分为接触型IC卡和非接触型IC卡。接触型IC卡就是在使用时,通过有形的电极触点将卡的集成电路与外部接口设备直接接触连接来进行数据交换的IC卡。非接触型IC卡是通过无线电波或电磁场感应的方式,将卡中集成电路内的数据与外部设备接口设备通信,卡片不用直接接触接口设备的电极就可以进行数据读写。按照IC卡的功能和结构又可以把IC卡分为存储型IC卡和智能型IC卡。存储型IC卡是属于被动型,它只能实现数据的各种输入/输出。这种类型IC卡内部电路可分为两大功能部分,数据存储部分和数据加密操作控制部分。而且不是所有IC卡都必须具有这两大功能。我们把只有数据存储功能的IC卡称为非加密型存储卡?(Memory?Card)。把具有数据存储功能和数据加密操作控制的IC卡称为加密型存储卡
(Memory?Card?with?Security?Logic),?它们有暂时或永久的数据存储能力,其内容可供处理或判断之用。智能型IC卡就是在IC卡的集成电路中带有微处理器电路的IC卡。它是一种主动型IC卡,不仅能够管理各种数据的I/O操作,校验来自接口设备的个人密码,而且能够根据应用系统的要求主动识别与之连接的接口设备。因此,在智能型IC卡中能够建立各种应用系统的授权,存放多个应用系统的相关数据,并实现对数据信息存储的高可靠性、高安全性控制,可以进行复杂的信息处理和计算。?
2?IC卡国际标准和读写要求?
由于IC卡使用具有流动性与全球性,建立相应的国际标准和国家标准就显得特别重要。在信息技术领域,ISO(国际标准化组织)和IEC(国际电子技术委员会)共同建立了一个技术委员会ISO/IEC?JTC1以制定相应国际标准。在IC卡应用系统的设计中,读写设备对IC卡的读写控制的每一个环节都应当遵照相应的国际标准,才能保证数据的正确读取。这是IC卡读写器终端设计的基础。?
而在这些标准当中,对芯片和电气特征的定义和操作时序的要求又显得尤为重要。此处以同步卡的电气特征和时序为例进行介绍。使用这种卡时,接口设备将所有线置于状态L,然后VCC加电,Vpp处于空闲状态,CLK、RST和FCB处于状态L,接口设备的I/O置于接收模式。时钟脉冲在VCC上升沿之后相隔t20后提供,时钟脉冲的持续时间为t25。在时钟脉冲上升沿之后至少相隔t22时间FCB仍维持状态L。在I/O线上得到的第1位数据可视为应答,此时CLK处于状态L,并在CLK下降沿t27之后有效。当FCB置于状态H时,每一个时钟脉冲用于读出I/O线上的下个数据位。在复位应答时,第一个时钟脉冲在FCB上升沿之后t24时间给出。时钟脉冲状态H的持续时间为t25,状态L的持续时间为1us(t26)。第二个及其随后的数据位在时钟为低和CLK下降沿之后t27时间给出。数据位依次用时钟脉冲的上升沿采样。?
???????????????????????????????????????????????????????????图?一?
3????????SLEE4442接口电路的设计?
SLE4442是由德国西门子公司设计的逻辑加密存储卡。它具有2K位的存储容量和完全独立的可编程加密代码存储器。内部电压提升电路保证了芯片能够以单5V电压供电,较大的存储器容量能够满足应用领域的各种要求。是目前国内应用较多的一种IC卡芯片。这种芯片的特点是采用多存储器结构;2线连接协议,串行接口满足ISO7816同步传送协议;芯片采用NMOS工艺技术,每字节的擦除/写入编程时间为2.5ms;存储器采用至少104次的擦除/写入周期,数据保持时间至少为10年。?
而读写器的主控芯片采用的是89C51单片机。89C51单片机是Intel公司开发的8位的系列化处理芯片。内部带有一个8位的CPU,256个字节的RAM,21个特殊功能寄存器(SFR),2个16位的定时/计数器,4个8位并行接口,一个全双工的串行接口,5个中断源及片内时钟振荡器等。由于这是一款非常成熟的单片机,因此本文不作更多的赘述。?
该读写器的核心模块即如何实现对IC芯片的有效控制和读写操作。而接口电路的设计直接反映了对该芯片的具体操作思想。由于IC卡的逻辑接口电路一般采用集电极开路(OC)输出及非保护式输入结构,所有让上拉电阻R源端与IC卡的供电电源相连接。当IC卡处于供电状态时,整个接口电路接通,接口设备与IC卡间构成逻辑通路;而当IC卡处于下电状态时,上拉电阻R的源端失去了供电,整个与卡接口的电路均处于不带电状态。所有的IC卡接口部分都加入了保护二极管,这些二极管可以使各引脚上的电压严格地限定在-VD~VCC+?VD之间(VD是保护二极管的正向压降,通常为0.6左右)。这样,可以抑制由于线路干扰和逻辑电平变化的边沿产生抖动所带来的瞬间过压,为IC卡提供了进一步的保护措施。所设计的接口电路图如图二所示。?
图 二? IC卡控制和读写电路
??IC卡的插入与退出的识别是通过IC卡适配插座上的感应开关来识别的,对于简单的手动插拔的IC卡适配插座来说,这种识别过程相当简单,仅有一个开关,表示卡是否已插入。如果卡己插入到正确位置,IC卡适配插座就会给出一个开关接通(或断开)的信号,而一旦卡离开这个位置,该信号就会立即发生翻转。设计中采用的适配器,无卡插入时开关常闭,卡插到位时开关断开。对于手动式IC卡适配插座来说,这一信号已经足够了。为了确保IC卡已准确地插到位置,插入的识别过程必须加入消颤处理,这主要由软件来实现。?
大多数符合ISO7816标准的同步型IC卡的地址计数器是与时钟紧密相关的,当卡复位时,地址计数器置0。以后每向卡发一个节拍的时钟,都将使IC卡的地址计数器加‘1’。这一时钟频率上限为50kHz或280kHz。复位之后的头32个时钟周期内,是卡的复位响应过程,该过程中,厂家的产品编码以位编码方式逐一在数据线上送出,以后的字段则根据厂家及用户所定义的含义不同而各不相同。若某字段定义为可读的,则可将时钟运行到该字段上,然后再逐时钟读出。数据的读出过程可分为三个基本过程:复位,数据字段的定位和数据读出。?
4、89C51软件模块设计?
由于89C51是主控芯片,因此89C51需要完成对IC芯片的复位、读写等操作。首先对于复位响应操作,由于复位响应是根据ISO7816标准来进行的。在操作期间的任何时候都可以复位,只有经过了复位才能对IC卡进行其他操作。开始时地址计数器随一个时钟脉冲而被设置成0。当RST线从H状态置到L状态时,第一个数据位的内容被送到I/O线上。若连续输入32个时钟脉冲,主存储器中的前4个字节地址单元中的内容被读出。在第33个时钟脉冲的下降沿,I/O线被置成H状态而关闭。?在复位响应期间,“启动”和“停止”状态被忽略。单片机上的程序设计如下:?
CARD_RST:???????????
CLR????RST?
CLR????CLK?
LCALL??DELAY_20US?
SETB????RST?
LCALL??DELAY_20US?
SET?????CLK?
LCALL??DELAY_20US?
CLR?????CLK?
LCALL???DELAY_20US?
CLR?????RST?
LCALL??DELAY_20US?
MOV????B,#32?
RESET1:?
SETB????CLK?
LCALL???DELAY_20US?
CLR?????CLK?
LCALL???DELAY_20US?
DJNZ????B,RESET1?
RET?
在命令模式下,复位响应之后,芯片等待着命令。每条命令都以一个“启动状态”开始。整个命令包括三个字节。随后紧跟着一个附加脉冲并用一个“停止状态”来结束操作。当CLK为H状态期间,I/O线的下降沿为启动状态;当CLK为H状态期间,I/O线的上升沿为停止状态;限于篇幅,此处不再列出整个读写操作的程序代码。需要注意的是:脉冲的下降沿之后,I/O线上的第一位数据变为有效。随后每增加一个时钟脉冲,芯片内部的一位数据被送到I/O线上。其输出的顺序是从侮个字节的最低位开始。当所需要的最后一个数据送出以后,需要再附加一个时钟脉冲来把I/O线置成H状态,以便准备接受新的命令。在输出数据期间,任何“启动状态”和“停止状态”均被屏蔽掉。?
5、结束语?
?????本文的创新点是提出了一种新型的IC卡读写器设计方案,在串口通讯的设计中,除了要对单片机的异步通讯口进行操作,还要对PC?机的串口进行底层实时控制,并通过调用系统的API?函数的方法成功的解决了这一问题。由于西门子公司的SLE4442型逻辑加密IC卡是一种比较通用的IC卡芯片,因此通过更新读写器软件也可以操作其他类型的接触式同步IC一卡,使得这种接触式IC卡读写器成为一种通用的读写器。