1.36k likes | 1.56k Views
第 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 卡的存储器芯片. 存储器的性能:.
E N D
第8章 IC卡及其芯片 本章主要内容 存储器芯片 逻辑加密芯片 CPU芯片(内含COS)
第8章 IC卡及其芯片 8.1 IC卡的存储器芯片8.2 接触式IC卡的逻辑加密卡8.3 非接触式IC卡 (Mifare卡)8.4 COS (Chip Operating System)
引 言 IC卡按使用芯片不同,可分成存储卡、逻辑加密卡和智能卡。
8.1 IC卡的存储器芯片 存储器的性能: • 存储固定信息和消费信息(可修改); • 只有与读写器接触时才取得能量; 存储器的类型: EEPROM; 有8个引出端、其中一个为数据I/O端; 信息传送以串行方式进行;
美国ATMEL公司的AT24C01A/02/04/08/16为例: 1. 芯片特点 • 低电压 • 内部组成AT24C01A(1K:128*8) • 双线串行接口(时钟SCL,串行数据SDA) • 支持ISO/IEC 7816-10 同步协议 • 高可靠性:10万次、100年
VCC GND C1 C5 NC NC C2 C6 SCL C3 C7 SDA 2. 芯片封装
3. EEPROM逻辑图 Q:EEPROM如何读写 ? 器件地址 输入端 (标准封装)
SCL(串行时钟):SCL上升沿将数据输入到EEPROM芯片,下降沿将EEPROM中的数据读出。SCL(串行时钟):SCL上升沿将数据输入到EEPROM芯片,下降沿将EEPROM中的数据读出。 SDA(串行数据):双向串行数据传送端,采用漏极开路驱动,可以进行? 串行控制逻辑:用于区分SCL和SDA。 地址/计数器:形成访问EEPROM的地址,分别 送X译码器进行字选,送Y译码器进行位选。 升压/定时线路:为EEPROM的写入操作提供高电压(12V~20V)
4. 器件操作 数据和时钟传送:SCL和SDA通常各自通过一个电阻上拉到高电平。 SDA上的数据仅在和SCL为高电平时有效,低电平时允许数据变化。
( 1) 输出数据 当数据(包括地址、数据)由接口设备送往AT24Cxx时,称为输出数据(写数据)。数据总是按字节(8位)逐位串行输出,每个时钟脉冲输出一位。SDA总线上的数据应在SCL低电平期间改变(输出),在SCL高电平期间稳定。 基于MCS-51单片机的接口设备可利用如下串行输出字节子程序WRITE来实现输出(写)一个字节数据的操作。
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为高
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
(2) 输入数据 当接口设备从AT24Cxx的数据线上读取数据时,称为输入数据(读数据)。数据总是按字节(8位)逐位串行输入,每个时钟脉冲输入一位。AT24Cxx的EEPROM在SCL低电平期间将数据送往SDA总线,在SCL高电平期间,SDA总线上的数据稳定,可供接口设备读取。 基于MCS-51单片机的接口设备可利用如下串行输入字节子程序READ 来实现输入(读)一个字节数据的操作。
READ: ;从AT24Cxx串行输入一个字节,高位在前。调用前,SCL为低。返回时,SCL为低。返回时接收到的数据置于A中 SETB SDA ;使SDA为高,准备读 PUSH B MOV B,#8 ;设置位计数器 L2: NOP ;保持SCL为低且使数据稳定 NOP SETB SCL ;升高时钟
NOP ;保持SCL为高 NOP MOV C, SDA ;输入位 RLC A ;将位移入A CLR SCL ;降低时钟 DJNZ B, L2 ;传送下一位 POP B RET
当SCL高电平时,如数据变化,则将形成“开始”或“停止”两种状态。当SCL高电平时,如数据变化,则将形成“开始”或“停止”两种状态。 (1)开始状态(START) SCL处于高电平时,SDA从高电平转向低电平表示一个“开始”状态,该状态表示一种操作的开始,因此必须在任何其他命令之前执行。AT24Cxx开始/停止定义时序图见图。
基于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 ;保持数据建立延迟及周期延迟
CLR SDA ;降低SDA ACALL DELAY_4 μs;保持SDA为低,保持时间4 μs CLR SCL ;降低SCL CLR C ;清零错误标志 AJMP BACK1 ERROR1: SETB C ;置位错误标志 BACK1: RET
(2)停止状态(STOP) SCL处于高电平时,SDA由低电平转向高电平表示一个“停止”状态。该状态表示一种操作的结束并将终止所有通信。在一个读序列之后,停止命令置EEPROM于待机模式。
基于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
5. 器件寻址 1K、2K、4K、8K和16K EEPROM在开始状态之后紧跟8位器件地址,使芯片能执行读/写操作。 1K/2K MSB LSB • A2、A1、A0为器件地址,与硬布线输入端相对应。 • R/W是读/写操作选择位,高电平为读,低电平为写。
4K MSB LSB 8K 16K 4K EEPROM:A2、A1为地址位,另一位为页面地址位P0。A2A1必须与硬件布线端相对应。 页面地址位也就是随后的数据字地址的最高位。
6. 写操作 (1)写字节( BYTE WRITE) 写字节时序见图8.1 。写字节时序要求在给出“开始”状态、器件地址码和收到卡的确认应答ACK后,紧跟着给出一个8位地址码(32 KB芯片是2个8位地址码)。卡收到地址码后发出确认应答ACK。
图8.1 AT24Cxx写字节时序图 然后送8位数据到SDA线上,并进入EEPROM单元,每个时钟节拍送入1位。EEPROM单元收到数据后,通过SDA线发出确认应答ACK。数据传送设备必须用“停止”状态来结束写操作。这时EEPROM进入内部定时的写周期,如图中的tWR,在写周期期间,将数据写入非易失性存储器,并禁止所有其他操作直到写完成。
基于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 ;设置写,建立器件地址
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
(2)写页面( 输出数据) 1K/2K EEPROM能进行8字节页面写入,4K/8K/16K设备能进行16字节页面写入。 写页面操作与写字节操作类似,但数据传送设备不需要在第一个字节输入后发停止状态。 在EEPROM确认收到第一个数据后,数据传送设备再传送7个(1K/2K)或15个(4K/8K/16K)字节数据,在每一个数据收到后,EEPROM都要通过SDA送回确认信号,最后数据传送设备通过停止状态终止写页面。
数据地址的低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来实现写页面操作。
WRITE_BLOCK: • ;向AT24Cxx写入一页数据。调用时器件地址的可编程地址置于A中,第一个字节地址置于寄存器ADDR_H和ADDR_L中,数据置于BUFFER中,字节计数器置于寄存器COUNT中。未等待写周期完成。返回时CY位为1表明总线无效或器件无应答。占用A,COUNT,INDEX(注:INDEX为数据缓冲区指针,可使用工作寄存器R0) • ACALL START • JC BACK3 ;总线无效则中断 • OR A, #FADDR ;生成器件地址
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 ;指向数据缓冲区首地址
L3: MOV A, @INDEX ;取数据 ACALL WRITE ;发送数据 JC ERROR3 ;无应答则中断 INC INDEX ;地址指针加1 DJNZ COUNT, L3 ;下一个字节 CLR C ;清零错误标志 ERROR3: ACALL STOP BZCK3: RET
复习 • IC卡的详细分类(家族图) • 存储卡的芯片特点 • 存储卡的器件操作方式 • 器件寻址方式(按字节寻址和页面寻址) • 如何实现存储卡芯片的写操作(结合时序)
8.2 接触式IC卡的逻辑加密卡 • 逻辑加密卡主要由EEPROM单元阵列和密码控制逻辑电路构成; • 功能介于存储卡和CPU卡之间; • 适用于需要保密,但对保密功能要求不高的场合;
8.2.1 名词定义 1)写入:向EEPROM写入“0” 2)擦除:向EEPROM写入“1” 3)熔断:对EEPROM单元进行一次性的写入操作 4)个人化:发行商将IC卡发行给个人时,写入发行商代码、用户密码、用户身份标识,并擦除其余应用区EEPROM的过程。 5)密码错误计数:密码错误输入的次数,超过该次数,IC卡将自锁。
逻辑加密卡的主要内容 • 逻辑加密卡的功能框图 • 逻辑加密卡的存储区的分类 • 典型芯片案例 (1)ATMEL公司的芯片案例 (2)Siemens公司的芯片案例
EEPROM单元阵列 保密逻辑部分 地址计数器 地址译码器 密码比较电路 内部寄存器 8.2.2 逻辑加密卡的功能框图 逻辑加密卡芯片从功能上分两个部分:
RST信号将地址计数器置全0; • 行/字驱动器与列/位选择器为EEPROM单元提供选择信号;由列选择器选择其中的某位进行读/写。
地址计数器:仅是计数器,EEPROM的访问按地址顺序逐一进行。地址计数器:仅是计数器,EEPROM的访问按地址顺序逐一进行。 • 地址译码器 • 密码比较器
内部寄存器:锁存密码比较器的结果和应用区的读/写属性,供逻辑控制阵列。内部寄存器:锁存密码比较器的结果和应用区的读/写属性,供逻辑控制阵列。 • 逻辑控制阵列:控制EEPROM的读/写。
8.2.3 芯片内部存储区域 采用分区结构 • 制造代号区 • 发行代号区 • 用户密码区 • 密码比较计数区 • 用户个人区 • 应用区 • 擦除密码区 • 擦除计数区
1. 制造商代码区(FZ, Fabrication Zone) • 记录卡芯片生产商的特定信息(例如:生产批号、日期及特别制定的特征代码)。 • 该区域里的单元信息一般由制造商在芯片出厂前写入。 • 当控制本区的熔丝(FUSE1)没有熔断时,该区的存储单元可像普通的EEPROM存储单元一样擦除和改写。 • 一旦熔丝熔断,所写入的“制造商代码”就不可再更改。 • 芯片出厂时,厂商一般将此代码注入,并熔断保护熔丝(FUSE1),从而使写入该区的标识信息不可更改,只能以读出。
特征: • 标识代号由生产商事先选定, • 代码注入后将保护熔丝熔断,以确保日后不可更改。 因此在卡片发行应用中,将这一标识作为系统中验证卡片真伪的重要标识。
2. 发行商代码区(IZ,Issuer Zone) • 用于记录卡片发行商的特定信息(例如:发行批号、日期、地区编号及特定用户编号等特征代码)。 • 该区域的单元信息是在卡片进行个人化处理的过程中写入。 • 当控制本区的熔丝(FUSE2)没有熔断时,该区的存储单元内容可以自由地擦除或改写。 • 个人化处理完成之后,控制该区的熔丝(FUSE2)熔断,即可将注入的“发行商代码”完全固化。
在随后的卡片应用中,该区的内容不可更改,但可以任意读出。在随后的卡片应用中,该区的内容不可更改,但可以任意读出。 该代码也是识别卡片的真伪,区分卡片应用类别的重要标识。