IC卡存储器介绍

自从80年代中期出现IC电话卡后,基本已取代了原来流行的电话磁卡,磁卡存在存在严重的安全问题,已逐步淘汰。
即使IC电话卡,也不能算很安全,卡内所有数据只要有简单的读写装置并按时序操作都能读取,事实上电话卡和信用卡一样内部没有什么秘密信息,仅仅是带串行输出的128位EPROM而已(对二类卡是256位PROM),不要以为弄懂了它是怎么工作你就有办法重新对卡内数据重新填充,其开始的64位是带写保护的,在出厂时其熔丝位已被编程,你已无法对其更改,其后的40位计数单元受内部逻辑控制在写时只能减少不能增加直至到0为止,因此你想用一般的IC电话卡打免费电话是不可能的,除非你能用微控制器(单片机)仿真它(如果你能读懂本文介绍的所有内容)。IC电话卡是一种一次性使用的计数卡,以一次性的计数方式,从写满的计数器中减“1”,直至存储单元减为空为止。
卡片每次消费计数的“单位价值”根据各种应用系统的实际需要而定。例如:对于中国IC电话卡,如30元卡对应内部计数值为300,每单位值对应0.1元,IC 卡电话机每分钟产生一次扣费信号,扣费值由当地IC电话管理系统设定,一般是价值0.5元或1元,卡片被计数5次和10次。对于其它国家属于第一类IC电话卡而言也是如此,只是内部初始计数值不同,每次扣除额度不一样罢了。其他对于公用加油卡,IC卡计费加油机每一公升(或一加仑)产生一次扣费操作,卡片被操作一次扣2.5元等等,均属于等同原理。事实上,这类卡内部为128位(16字节) NMOS存储器,按如下规律分布:

64 位 EPPOM(8字节) 写保护区(芯片数据代码区、发行数据代码区)
      40 位 EEPROM(5字节)
      24 位 为全“1”(3字节)
      共16字节数据。
Ⅰ-2)引脚:
  -------------+-------------
|   1         |         5   |        引  脚:
|             |             |        -------
+-------\     |     /-------+
|   2    +----+    +    6   |          1 : Vcc = 5V    5 : Gnd
|        |         |        |          2 : Reset       6 : NC
+--------|         |--------+          3 : Clock       7 : I/O
|   3    |         |    7   |          4 : NC          8 : NC
|        +----+----+        |
+-------/     |     \-------+          Vcc:电源 Gnd:地脚 Reset:复位
|   4         |         8   |
|             |             |          Clock:时钟  I/O:数据 NC: 空脚
  -------------+-------------
因有三个脚为空脚,目前一般有采用8脚和6脚封装的,6脚封装的无最下一排两个空脚

Ⅰ-3)主要特性:
-采用单一5V电源供电
-遵循ISO/IEC7816-3同步协议进行双向数据传输
-低功耗
-NMOS技术
-高可靠性,抗静电干扰能力>4KV

Ⅰ-4)时序图
复位:
为使地址计数器复位到0,先让Reset端变高。紧跟着一个Clock脉冲(从低到高再降到0),Reset重新变低,把Clock脉冲包住。随着Reset端变低,地址0单元的数据从I/O上输出。对应 Clock端的每个脉冲,其上升沿使地址计数器增加。其下降沿使被选通地址单元的数据从I/O上输出。地址计数器增加到127后返回到0。

__________________
_____|                  |_____________________________________________ Reset
     :                  :
     :        _____     :  _____       _____       _____       _____
_____:_______|     |____:_|     |_____|     |_____|     |_____|     |_ Clk
     :       :          : :     :     :     :     :     :     :     :
_____:_______:__________:_:_____:_____:_____:_____:_____:_____:_____:_
_____:___n___|_____0____:_|_____1_____|_____2_____|_____3_____|___4_:_ (Address)
     :                  :       :           :           :           :
_____:                  :_______:___________:___________:___________:_
_____XXXXXXXXXXXXXXXXXXXX_______|___________|___________|___________|_ Data
Bit n                      Bit 0    Bit 1        Bit2       Bit3
写位:
在Reset和Clk端均为低的情况下,如果某地址单元允许写操作(64-103位,且该位必需为1),则Reset端上的一个脉冲(即从低到高再回低)将允许芯片进行位写操作。在紧跟着的时钟脉冲期间执行写操作,调整写操作维持时间至少10ms,在这个CLK脉冲期间,地址计数器不会增加,在CLK写脉冲下降沿,数据0从I/O端输出。从Reset脉冲的上升沿到CLK写脉冲的下降沿期间,I/O端的数据是无效的。在下一个才CLK脉冲,且Reset为低时,地址计数器又增1,并在下降沿时,把选通的地址单元的数据送到I/O端。

_____                                _____
_____________|     |______________________________|     |_______________  Reset
             :                                    :
     ___     :           _____           ___      :           _____
____|   |____:__________|     |_________|   |_____:__________|     |____  Clk
    :        :          :     :         :   :     :          :     :
____:________:__________:_____:_________:___:_____:__________:_____:_____
n  |      n+1          |     n+2       |   :    n+3         |     :       
(Address)
----‘--------:----------‘-----:---------‘---:-----:----------‘-----:-----
             :          :     :             :     :          :     :
_________   _:          :     : ____________:  ___:          :     :
_________XXX_XXXXXXXXXXXXXXXXXXX____________ XX___XXXXXXXXXXXXXXXXXXXXXXX  I/O
   n      n+1           :     :     n+1        n+2           :     :
                        :     :                              :     :
                         write                                write
借位写后的字节擦除:
对位地址72-103的字节单元来说,只要在每个字节的前面一位进行一次正常的写操作,就可以对此字节后一字节进行字节擦除操作。也就是说,每向高一字节进行借位(即写一位0),紧接着的擦除时序可以对后一字节按字节擦除(即整个字节写1)。被擦除的字节总是比借位写的字节低一字节。从以下时序图可以看出,首先,完成一个“位写”操作,在CLK的写脉冲结束后,在CLK为低电平时,在发一个Reset脉冲即启动字节擦除操作。在第二个CLK脉冲完成字节擦除,脉冲维持时间整定为擦除周期时间(至少1ms)。芯片逻辑控制电路验证了借位写确已完成从“1”写“0”后,才擦除其低位字节。从Reset的上升沿到擦除操作的CLK脉冲的下降沿,I/O脚上的数据无效。地址计数器仍然停留在借位写的地址上。

_____                      _____
______|     |____________________|     |_________________________________  Rst
      :                          :
      :            _______       :              _______        ___
______:___________|       |______:_____________|       |______|   |______  Clk
      :           :       :      :             :       :      :   :
      :           :       :      :             :       :      :   :
<------------------------- address n ------------------------>:<--- n+1 ------
      :           :       :      :             :       :          :
      :           :       :      :             :       :          :
______:           :       :______:             :       :__________: _____
______XXXXXXXXXXXXXXXXXXXXX______XXXXXXXXXXXXXXXXXXXXXXX__________XX_____  I/O
                  :       :  n                 :       :     n        n+1
                  :       :                    :       :
                    Write                        Erase

上一篇:CentOS7安装Redis单实例


下一篇:python GUI实战项目——tkinter库的简单实例