1 / 136

第 8 章 IC 卡及其芯片

第 8 章 IC 卡及其芯片. 本章主要内容. 存储器芯片 逻辑加密芯片 CPU 芯片(内含 COS ). 第 8 章 IC 卡及其芯片. 8.1 IC 卡的存储器芯片 8.2 接触式 IC 卡的逻辑加密卡 8.3 非接触式 IC 卡 ( Mifare 卡) 8.4 COS (Chip Operating System). 引 言. IC 卡按使用芯片不同,可分成存储卡、逻辑加密卡和智能卡。. IC 卡家族图. RFID 家族成员示意图. 8.1 IC 卡的存储器芯片. 存储器的性能:.

Download Presentation

第 8 章 IC 卡及其芯片

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第8章 IC卡及其芯片 本章主要内容 存储器芯片 逻辑加密芯片 CPU芯片(内含COS)

  2. 第8章 IC卡及其芯片 8.1 IC卡的存储器芯片8.2 接触式IC卡的逻辑加密卡8.3 非接触式IC卡 (Mifare卡)8.4 COS (Chip Operating System)

  3. 引 言 IC卡按使用芯片不同,可分成存储卡、逻辑加密卡和智能卡。

  4. IC卡家族图

  5. RFID家族成员示意图

  6. 8.1 IC卡的存储器芯片 存储器的性能: • 存储固定信息和消费信息(可修改); • 只有与读写器接触时才取得能量; 存储器的类型: EEPROM; 有8个引出端、其中一个为数据I/O端; 信息传送以串行方式进行;

  7. 美国ATMEL公司的AT24C01A/02/04/08/16为例: 1. 芯片特点 • 低电压 • 内部组成AT24C01A(1K:128*8) • 双线串行接口(时钟SCL,串行数据SDA) • 支持ISO/IEC 7816-10 同步协议 • 高可靠性:10万次、100年

  8. VCC GND C1 C5 NC NC C2 C6 SCL C3 C7 SDA 2. 芯片封装

  9. 3. EEPROM逻辑图 Q:EEPROM如何读写 ? 器件地址 输入端 (标准封装)

  10. SCL(串行时钟):SCL上升沿将数据输入到EEPROM芯片,下降沿将EEPROM中的数据读出。SCL(串行时钟):SCL上升沿将数据输入到EEPROM芯片,下降沿将EEPROM中的数据读出。 SDA(串行数据):双向串行数据传送端,采用漏极开路驱动,可以进行? 串行控制逻辑:用于区分SCL和SDA。 地址/计数器:形成访问EEPROM的地址,分别 送X译码器进行字选,送Y译码器进行位选。 升压/定时线路:为EEPROM的写入操作提供高电压(12V~20V)

  11. 4. 器件操作 数据和时钟传送:SCL和SDA通常各自通过一个电阻上拉到高电平。 SDA上的数据仅在和SCL为高电平时有效,低电平时允许数据变化。

  12. ( 1) 输出数据 当数据(包括地址、数据)由接口设备送往AT24Cxx时,称为输出数据(写数据)。数据总是按字节(8位)逐位串行输出,每个时钟脉冲输出一位。SDA总线上的数据应在SCL低电平期间改变(输出),在SCL高电平期间稳定。 基于MCS-51单片机的接口设备可利用如下串行输出字节子程序WRITE来实现输出(写)一个字节数据的操作。

  13. WRITE: ;串行输出一个字节到AT24Cxx,高位在前。调用前,SCL、SDA为低。返回时,SCL为低。调用时数据置入A中。返回CY为1表明应答失败。占用A累加器 PUSH B MOV B,#8 ;设置位计数器 L1: RLC A ;移一位到CY中 MOV SDA,C ;输出位 NOP ;保持SCL为低且使数据稳定 SETB SCL ;升高时钟 ACALL DELAY_4 μs;保持SCL为高

  14. CLR SCL ;降低时钟 DJNZ B, L1 ;传送下一位 SETB SDA ;释放SDA等待应答 NOP ;保持SCL为低,保持时间tAA NOP SETB SCL ;升高ACK时钟脉冲 ACALL DELAY_4 μs;保持SCL为高 MOV C, SDA ;读入ACK位 CLR SCL ;降低ACK时钟脉冲 POP B RET

  15. (2) 输入数据 当接口设备从AT24Cxx的数据线上读取数据时,称为输入数据(读数据)。数据总是按字节(8位)逐位串行输入,每个时钟脉冲输入一位。AT24Cxx的EEPROM在SCL低电平期间将数据送往SDA总线,在SCL高电平期间,SDA总线上的数据稳定,可供接口设备读取。 基于MCS-51单片机的接口设备可利用如下串行输入字节子程序READ 来实现输入(读)一个字节数据的操作。

  16. READ: ;从AT24Cxx串行输入一个字节,高位在前。调用前,SCL为低。返回时,SCL为低。返回时接收到的数据置于A中 SETB SDA ;使SDA为高,准备读 PUSH B MOV B,#8 ;设置位计数器 L2: NOP ;保持SCL为低且使数据稳定 NOP SETB SCL ;升高时钟

  17. NOP ;保持SCL为高 NOP MOV C, SDA ;输入位 RLC A ;将位移入A CLR SCL ;降低时钟 DJNZ B, L2 ;传送下一位 POP B RET

  18. 当SCL高电平时,如数据变化,则将形成“开始”或“停止”两种状态。当SCL高电平时,如数据变化,则将形成“开始”或“停止”两种状态。 (1)开始状态(START) SCL处于高电平时,SDA从高电平转向低电平表示一个“开始”状态,该状态表示一种操作的开始,因此必须在任何其他命令之前执行。AT24Cxx开始/停止定义时序图见图。

  19. 基于MCS-51单片机的接口设备可利用如下开始子程序START来实现一个开始操作。基于MCS-51单片机的接口设备可利用如下开始子程序START来实现一个开始操作。 START: ;发送START状态,定义当SCL为高时,SDA从高到低。返回时,SCL、SDA为低。当总线无效时,返回CY位为高 SETB SDA ;升高SDA SETB SCL ;校验总线有效 JNB SDA, ERROR1;若SDA不为高则跳转到ERROR1 JNB SCL, BACK1 ;若SCL不为高则跳转到BACK1 NOP ;保持数据建立延迟及周期延迟

  20. CLR SDA ;降低SDA ACALL DELAY_4 μs;保持SDA为低,保持时间4 μs CLR SCL ;降低SCL CLR C ;清零错误标志 AJMP BACK1 ERROR1: SETB C ;置位错误标志 BACK1: RET

  21. (2)停止状态(STOP) SCL处于高电平时,SDA由低电平转向高电平表示一个“停止”状态。该状态表示一种操作的结束并将终止所有通信。在一个读序列之后,停止命令置EEPROM于待机模式。

  22. 基于MCS-51单片机的接口设备可利用如下停止子程序STOP来实现一个停止操作。基于MCS-51单片机的接口设备可利用如下停止子程序STOP来实现一个停止操作。 STOP: ;发送STOP状态,定义当SCL为高时,SDA从低变高。调用前,SCL为低。返回时,SCL、SDA为高 CLR SDA NOP ;保持SCL为低及数据稳定 NOP SETB SCL ACALL DELAY_4 μs;保持建立延迟 SETB SDA RET

  23. 5. 器件寻址 1K、2K、4K、8K和16K EEPROM在开始状态之后紧跟8位器件地址,使芯片能执行读/写操作。 1K/2K MSB LSB • A2、A1、A0为器件地址,与硬布线输入端相对应。 • R/W是读/写操作选择位,高电平为读,低电平为写。

  24. 4K MSB LSB 8K 16K 4K EEPROM:A2、A1为地址位,另一位为页面地址位P0。A2A1必须与硬件布线端相对应。 页面地址位也就是随后的数据字地址的最高位。

  25. 6. 写操作 (1)写字节( BYTE WRITE) 写字节时序见图8.1 。写字节时序要求在给出“开始”状态、器件地址码和收到卡的确认应答ACK后,紧跟着给出一个8位地址码(32 KB芯片是2个8位地址码)。卡收到地址码后发出确认应答ACK。

  26. 图8.1 AT24Cxx写字节时序图 然后送8位数据到SDA线上,并进入EEPROM单元,每个时钟节拍送入1位。EEPROM单元收到数据后,通过SDA线发出确认应答ACK。数据传送设备必须用“停止”状态来结束写操作。这时EEPROM进入内部定时的写周期,如图中的tWR,在写周期期间,将数据写入非易失性存储器,并禁止所有其他操作直到写完成。

  27. 图8.2 AT24Cxx写周期时序图

  28. 基于MCS-51单片机的接口设备可利用如下写字节子程序WRITE_BYTE来实现写字节操作。基于MCS-51单片机的接口设备可利用如下写字节子程序WRITE_BYTE来实现写字节操作。 WRITE_BYTE: ;AT24Cxx写字节功能。调用前可编程的器件地址programmable address置于A中,字节地址置于寄存器ADDR_H和ADDR_L中,数据置于寄存器XDATA中。未等待写周期完成。返回CY为1表明总线无效或该器件无应答。占用A累加器 ACALL START; 开始子程序 JC BACK2 ;若总线无效则中断 OR A, #FADDR ;加入固定器件地址 CLR ACC.0 ;设置写,建立器件地址

  29. ACALL WRITE ;发送器件地址 JC ERROR2 ;若无应答则中断 MOV A, ADDR_H ;发送字节地址的高8位 ACALL WRITE JC ERROR2 ;若无应答则中断 MOV A, ADDR_L ;发送字节地址的低8位 ACALL WRITE JC ERROR2 ;若无应答则中断 MOV A, ADATA ;取数据 ACALL WRITE ;发送数据 JC ERROR2 ;若无应答则中断 CLR C ;清零错误标志 ERROR2: ACALL STOP BACK2: RET

  30. (2)写页面( 输出数据) 1K/2K EEPROM能进行8字节页面写入,4K/8K/16K设备能进行16字节页面写入。 写页面操作与写字节操作类似,但数据传送设备不需要在第一个字节输入后发停止状态。 在EEPROM确认收到第一个数据后,数据传送设备再传送7个(1K/2K)或15个(4K/8K/16K)字节数据,在每一个数据收到后,EEPROM都要通过SDA送回确认信号,最后数据传送设备通过停止状态终止写页面。

  31. 图8.3 写页面时序图

  32. 数据地址的低3位(对于AT24C01/02)或4位(对于AT24C04/08/16)在收到每个数据字后,在芯片内部自动加1。数据字地址的高位字节保持不变,以保持存储器页地址不变。如果传送到EEPROM中的数据字超过8(对于AT24C01/02)或16(对于AT24C04/08/16),数据字地址将“滚动覆盖”,以前写入的数据将被覆盖。数据地址的低3位(对于AT24C01/02)或4位(对于AT24C04/08/16)在收到每个数据字后,在芯片内部自动加1。数据字地址的高位字节保持不变,以保持存储器页地址不变。如果传送到EEPROM中的数据字超过8(对于AT24C01/02)或16(对于AT24C04/08/16),数据字地址将“滚动覆盖”,以前写入的数据将被覆盖。 基于MCS-51单片机的接口设备可利用如下写块子程序WRITE_BLOCK来实现写页面操作。

  33. WRITE_BLOCK: • ;向AT24Cxx写入一页数据。调用时器件地址的可编程地址置于A中,第一个字节地址置于寄存器ADDR_H和ADDR_L中,数据置于BUFFER中,字节计数器置于寄存器COUNT中。未等待写周期完成。返回时CY位为1表明总线无效或器件无应答。占用A,COUNT,INDEX(注:INDEX为数据缓冲区指针,可使用工作寄存器R0) • ACALL START • JC BACK3 ;总线无效则中断 • OR A, #FADDR ;生成器件地址

  34. CLR ACC.0 ;定义写操作 ACALL WRITE ;发送器件地址 JC ERROR3 ;无应答则中断 MOV A, ADDR_H ;发送字节地址高8位 ACALL WRITE JC ERROR3 ;无应答则中断 MOV A, ADDR_L ;发送字节地址低8位 ACALL WRITE JC ERROR3 ;无应答则中断 MOV INDEX, #BUFFER ;指向数据缓冲区首地址

  35. L3: MOV A, @INDEX ;取数据 ACALL WRITE ;发送数据 JC ERROR3 ;无应答则中断 INC INDEX ;地址指针加1 DJNZ COUNT, L3 ;下一个字节 CLR C ;清零错误标志 ERROR3: ACALL STOP BZCK3: RET

  36. 复习 • IC卡的详细分类(家族图) • 存储卡的芯片特点 • 存储卡的器件操作方式 • 器件寻址方式(按字节寻址和页面寻址) • 如何实现存储卡芯片的写操作(结合时序)

  37. 8.2 接触式IC卡的逻辑加密卡 • 逻辑加密卡主要由EEPROM单元阵列和密码控制逻辑电路构成; • 功能介于存储卡和CPU卡之间; • 适用于需要保密,但对保密功能要求不高的场合;

  38. 逻辑加密卡的逻辑结构图

  39. 8.2.1 名词定义 1)写入:向EEPROM写入“0” 2)擦除:向EEPROM写入“1” 3)熔断:对EEPROM单元进行一次性的写入操作 4)个人化:发行商将IC卡发行给个人时,写入发行商代码、用户密码、用户身份标识,并擦除其余应用区EEPROM的过程。 5)密码错误计数:密码错误输入的次数,超过该次数,IC卡将自锁。

  40. 逻辑加密卡的主要内容 • 逻辑加密卡的功能框图 • 逻辑加密卡的存储区的分类 • 典型芯片案例 (1)ATMEL公司的芯片案例 (2)Siemens公司的芯片案例

  41. EEPROM单元阵列 保密逻辑部分 地址计数器 地址译码器 密码比较电路 内部寄存器 8.2.2 逻辑加密卡的功能框图 逻辑加密卡芯片从功能上分两个部分:

  42. 逻辑加密卡的功能框图

  43. RST信号将地址计数器置全0; • 行/字驱动器与列/位选择器为EEPROM单元提供选择信号;由列选择器选择其中的某位进行读/写。

  44. 地址计数器:仅是计数器,EEPROM的访问按地址顺序逐一进行。地址计数器:仅是计数器,EEPROM的访问按地址顺序逐一进行。 • 地址译码器 • 密码比较器

  45. 内部寄存器:锁存密码比较器的结果和应用区的读/写属性,供逻辑控制阵列。内部寄存器:锁存密码比较器的结果和应用区的读/写属性,供逻辑控制阵列。 • 逻辑控制阵列:控制EEPROM的读/写。

  46. 8.2.3 芯片内部存储区域 采用分区结构 • 制造代号区 • 发行代号区 • 用户密码区 • 密码比较计数区 • 用户个人区 • 应用区 • 擦除密码区 • 擦除计数区

  47. 1. 制造商代码区(FZ, Fabrication Zone) • 记录卡芯片生产商的特定信息(例如:生产批号、日期及特别制定的特征代码)。 • 该区域里的单元信息一般由制造商在芯片出厂前写入。 • 当控制本区的熔丝(FUSE1)没有熔断时,该区的存储单元可像普通的EEPROM存储单元一样擦除和改写。 • 一旦熔丝熔断,所写入的“制造商代码”就不可再更改。 • 芯片出厂时,厂商一般将此代码注入,并熔断保护熔丝(FUSE1),从而使写入该区的标识信息不可更改,只能以读出。

  48. 特征: • 标识代号由生产商事先选定, • 代码注入后将保护熔丝熔断,以确保日后不可更改。 因此在卡片发行应用中,将这一标识作为系统中验证卡片真伪的重要标识。

  49. 2. 发行商代码区(IZ,Issuer Zone) • 用于记录卡片发行商的特定信息(例如:发行批号、日期、地区编号及特定用户编号等特征代码)。 • 该区域的单元信息是在卡片进行个人化处理的过程中写入。 • 当控制本区的熔丝(FUSE2)没有熔断时,该区的存储单元内容可以自由地擦除或改写。 • 个人化处理完成之后,控制该区的熔丝(FUSE2)熔断,即可将注入的“发行商代码”完全固化。

  50. 在随后的卡片应用中,该区的内容不可更改,但可以任意读出。在随后的卡片应用中,该区的内容不可更改,但可以任意读出。 该代码也是识别卡片的真伪,区分卡片应用类别的重要标识。

More Related