石家庄铁道大学四方学院毕业设计
图2-4 SLE4442的内部结构
表2-2 SLE4442的地址分配
地址 主存储器 保护存储器 加密存储器 255 数据字节255 -- -- … … -- -- 31 数据字节31 保护位31 -- … … … --
3 数据字节3 保护位3 密码字节3 2 数据字节2 保护位2 密码字节2 1 数据字节1 保护位1 密码字节1 0 数据字节0 保护位0 错误计数器
表2-3 SLE4442IC卡指令格式
控制字 地址 数据
- 7 -
石家庄铁道大学四方学院毕业设计
B7 B6 B5 B4 B3 B2 B1 B0 A7 A6 A5 A4 A3 A2 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0
图2-5 SLE4442指令模式时序
表2-4 读主存储器的指令格式
Control Address Data B7 B6 B5 B4 B3 B2 B1 B0 A7-A0 D7-D0 Binary 0 0 1 1 0 0 0 0 Address No effect Hexadecimal 0x30 0x00-0Xff No effect
图2-6 读主存储器时序
(2)写主存储器
此指令按地址对EEPROM主存储器写入数据。根据所写数据的新老程度,其间将发生如下几种内部处理模式(即在指令发出之后需要延迟时间,以供芯片进行内部处理)。
擦除和写入(5毫秒)——相当于255个时钟脉冲 只写不擦(2.5毫秒)——相当于124个时钟脉冲 只擦不写(2.5毫秒)——相当于124个时钟脉冲 (以上为式中频率为50KHZ的情况下)
写主存储器的指令格式如表2-5所示。如图2-7是写主存储器的时序图。
表2-5 写主存储器的指令格式
- 8 -
石家庄铁道大学四方学院毕业设计
Control Address Data B7 B6 B5 B4 B3 B2 B1 B0 A7-A0 D7-D0 Binary 0 0 1 1 1 0 0 0 Address Input Data Hexadecimal 0x38 0x00-0xFF Input Data
图2-7 写主存储器时序
(3)读保护存储器
此指令后连续输入32个时钟脉冲将读出保护存储器的内容,然后额外提供一个脉冲将I/O口变为高阻态。保护存储器始终可读。读保护存储器的指令格式如表2-6所示。
表2-6 读保护存储器的指令格式
Control Address Data B7 B6 B5 B4 B3 B2 B1 B0 A7-A0 D7-D0 Binary 0 0 1 1 0 1 0 0 No effect No effect Hexadecimal 0x34 No effect No effect
(4)写保护存储器
此操作包含将输入数据与原数据相比较的过程。如果输入的数据与要保护的数据一致,则该地址的数据不能再次被改写,否则此次操作无效。SLE4442内部4B(32位)的写保护存储器分别和主存储器的前32B一一对应。写保护存储器即将保护存储器的对应位由l变为0。写保护存储器的指令格式如表2-7所示。
图2-8 读保护存储器时序
表2-7 写保护存储器的指令格式
Control Address Data
- 9 -
石家庄铁道大学四方学院毕业设计
B7 B6 B5 B4 B3 B2 B1 B0 A7-A0 D7-D0 Binary 0 0 1 1 1 1 0 0 Address Input Data Hexadecimal 0x3c 0x00-0x1F Input Data
(5)读安全存储器
此指令是读出4B安全码存储器的内容,与读保护存储器指令类似,32个时钟脉冲读出了4个字节的数据,只额外提供一个时钟脉冲使I/O变为高阻态。在密码校验成功之前,读取的安全代码存储器的内容除错误计数器外全部为0。错误计数器的初始值为OX07。读安全代码的指令格式如表2-8所示。
表2-8 读安全代码的指令格式
Control Address Data B7 B6 B5 B4 B3 B2 B1 B0 A7-A0 D7-D0 Binary 0 0 1 1 0 0 0 1 No effect No effect Hexadecimal 0x31 No effect No effect
图2-9 读安全代码存储器时序
(6)写安全代码存储器
只有在安全代码校验正确之后才能对安全存储器进行修改,否则只能把错误计数器的各位由l该为O,所需时间和时钟脉冲与主存储器相同。写安全代码存储器的指令格式如表2-9所示。
表2-9 写安全代码存储器的指令格式
Control Address Data B7 B6 B5 B4 B3 B2 B1 B0 A7-A0 D7-D0 Binary 0 0 1 1 1 1 0 1 Address Input Data Hexadecimal 0x39 0x00-0x03 Input Data
(7)校验密码
校验密码指令只有与错误计数器结合使用才有效。指令执行一次比较一个字节的数据。因此,此指令要连续执行三次。在进入内部处理模式期间,必须提供时钟脉冲。
密码校验的过程如下:首先将错误计数器的低三位的某一位写0,然后连续校验
- 10 -
石家庄铁道大学四方学院毕业设计
三字节的密码,接着再将错误计数器清除,再错误计数器的值,如果低三位都是l,则校验正确。如果连续三次校验失败,错误计数器的低三位被清零,IC卡报废。校验密码的指令格式如表2-10所示。图2-10是校验密码的时序图。
表2-10 校验密码的指令格式
Control Address Data B7 B6 B5 B4 B3 B2 B1 B0 A7-A0 D7-D0 Binary 0 0 1 1 0 0 1 1 Address Input Data Hexadecimal 0x33 0x00-0x03 Input Data
图2-10 校验密码时序
在本设计中,SLE4442卡与STC89C52的连接如图2-11所示。由于SLE4442是开漏结构,在I/O口必须接上拉电阻以提供高电平。详细的硬件设计如图2-11。
- 11 -