CPU 卡中T=0 通讯协议的分析与实现 发布: 2011-4-29 14:09 | 作者: —— | 来源: 21IC TAG: CPU 芯片 IC 卡的应用越来越广泛,从存储卡到逻辑加密卡,目前CPU 卡已经逐渐在应用中占据主导地位。CPU 卡根据通讯协议可分为两种:接触式和非接触式。接触式CPU 卡主要采用两种通讯协议:T=0 和T=1 通讯协议。T=0 是异步半双工字符传输协议,T=1 是异步半双工块传输协议。目前T=0 通讯协议的应用较为广泛,国内外大多数CPU 卡都支持该协议,在金融交易中也采用这种通讯协议。为了便于说明问题,本文从T=0 协议的功能出发,将该协议分为四个层次:物理层、数据链路层、终端传输层和应用层,见图 1。 由于该协议的特殊性,终端传输层与应用层联系非常紧密,实现起来比较繁琐,在CPU 卡中,这些任务通过卡片操作系统(COS)来实现。终端在与卡的信息交换中,始终处于主动地位,终端向卡发送符合 T=0 协议的命令字节,卡中的COS 完成对数据的处理并将处理结果返回给终端。下面对T=0 协议的四个层次进行详述。 1 T=0 协议的物理层描述 终端与智能卡之间通过改变 I/O 传输线上的电平来交换信息。由于T=0 协议是面向字符的传输协议,这里先定义字符帧的结构,并对组成字符帧位的信息表示作了具体描述。字符帧的结构如图 2 所示。 字符帧由 1 个起始位S、8 个数据位和1 个偶校验位P 共 10 位组成。在数据传输中每一位的持续时间称为基本时间单元 etu(elementary time unit),etu 的值由时钟频率决定,etu与时钟频率呈现性关系: 1etu=(F/D) × (1/f) (1) 其中F 称为时钟频率转换因子,D 称为波特率调整因子。时钟频率的范围为1MHz~5MHz,正常的工作频率为3.57MHz,数据传输的波特率采用 9600bps,根据国际标准的取值范围,取 F=372,D=1,代入式(1),可得: 1etu=372/f=372 (2) 即一个基本时间单元为372 个时钟周期。将工作频率定为3.57MHz,可以保证数据传输的波特率为9600bps。如果要提高数据的传输率,可以调整参数 F 来确定传输率。对每一位电平采用三次采样来确定,在位持续时间的中间和左右 15%的间隔各取样一次,取样点如图 3 所示。当有两次以上电平为低,则判断该位为0;否则该位为1,这样确保了取样值的可靠性。由于数据位的持续时间是用汇编语句来控制的,可以通过延时语句调整采样的时间间隔。但实现采样的最基本汇编语句的执行时间不能再缩短,因此数据传输率有一...