关 闭

新闻中心

EEPW首页 > 安全与国防 > 设计应用 > 接触式CPU卡中T=0异步半双工字符传输协议的硬件实现

接触式CPU卡中T=0异步半双工字符传输协议的硬件实现

作者:■ 大唐微电子技术有限公司 龚宗跃 孙东昱 张学志时间:2005-04-27来源:eaw收藏

摘    要:T=0是接触式IC卡国际标准 中规定的一种通信协议。本文首先分析了 -3中对于电信号和传输协议的规定,在此基础上介绍了T=0的硬件实现方法。
关键词:

引言
作为IC卡家族中功能最强、安全性最高的成员,已经逐渐在各种应用中占据主导地位。在ISO/IEC 7816-3中介绍了两种通信协议:T=0和T=1通信协议。T=0是异步半双工字符传输协议,T=1是异步半双工块传输协议。目前大多数接口设备都支持T=0通信协议,因此该协议应用较为广泛。
T=0通信协议可以通过软件编程来实现。但在软件实现过程中,需要通过软件编程来控制数据收发,对于实时性很强的通信处理,CPU的处理能力常常满足不了要求,而且通信的可靠性和稳定性也不是很理想,而硬件电路实现不存在上述问题。

传输协议描述
ISO/IEC 7816-3规定了IC卡的电气特性和传输协议。包括该类卡和接口设备间的电源、电气信号协议和信息交换协议。通信过程中,由接口设备给IC卡提供电源(Vcc),复位信号(RST)和时钟(CLK),卡和接口设备间通过I/O端口进行串行通信。
定义I/O端口有两种可能状态:
传号或高电平(状态Z):当卡和接口设备均处于接收状态时,I/O端口处于状态Z。也可由发送方强制定义为状态Z。
空号或低电平(状态A):可由发送方强制定义为状态A。
根据T=0异步半双工字符传输协议,IC卡和接口设备之间以字符为单位(简称字符帧)进行传输,采用偶校验,每个字符由10bit组成,如图1所示。传输字符帧之前,I/O线处于状态Z,第1bit为起始位(状态A);后面8bit为数据位D1~D8;第10bit为偶校验位,即8位数据和奇偶校验位中1的个数为偶数。
串行通信是按位传送的,每位信息宽度(持续时间)定义为基本时间单位etu(elementary  time  unit)。在复位应答期间的信息宽度称为“初始etu”,它等于372个时钟周期,即1etu = 372/f 。复位应答后的信息宽度称为“当前etu”,其计算公式为:
当前etu
其中:F是时钟频率变换因数;D是比特率调整因数;f是时钟频率。

硬件实现方案
按照上述标准实现的可编程串行接口系统如图2所示。
可编程串行接口内部的特殊功能寄存器有:
1. 串行接口控制/状态寄存器SCON(复位后为00H)。
寄存器各位定义如下:
SCON[0]:接收中断标志位;
SCON[1]:发送中断标志位;
SCON[2]:发送出错标志位;
SCON[3]:接收出错标志位;
SCON[4]:允许发送标志位;
SCON[5]:允许接收标志位;
SCON[6]:保留;
SCON[7]:可编程串行接口允许标志位。
SCON[4]、SCON[5]不能同时为1,否则I/O接口将处于逻辑混乱状态。
2.串行接口数据缓冲器SBUF(复位后为00H) 。发送时,SBUF作为发送数据缓冲器,用于缓存待发的数据。接收时,SBUF作为接收数据缓冲器,用于缓存收到的数据。
3. 波特率寄存器MR、BR (复位后MR=0BH,BR=13H,串行接口工作于基本速率)。为了简化硬件电路设计,将复位应答信号中TA1包含的F1和D1对应的波特率译码工作交由软件完成,由软件设置通信波特率。内部13bit定时器根据波特率寄存器MR、BR 值( &)对CLK信号 进行分频,以确定信息宽度。因为1etu,所以MR,BR寄存器设定为MR[7?]&BR[4?]= -1,例如,基本速率时,F=372,D=1,可得,设置MR=0BH,BR=13H,即“00001011,10011”=371;对于手机中常用的增强速率,F=512,D=8,可得,设置MR=01H,BR=1FH,即“00000001,11111”=63。
下面介绍可编程串行接口的工作过程。在发送和接收数据前,按以下步骤初始化串行接口:
1. 根据应用,通过设置MR、BR寄存器来设定通信速率。
2. 清除SCON[0]和SCON[1]中断标志。
3. 置位串行接口允许标志位SCON[7],使能串行接口。
初始化工作完成后,可选择发送模式或接收模式。
发送模式
首先将发送数据写入SBUF,数据移位寄存器data_shift_reg [10~0]将自动写入 “ ”,其中P为奇偶校验位,为欲发送数据,0为起始位,1代表状态Z,最低两位“01”用于产生起始位下降沿。
置位SCON[4],数据开始发送。根据波特率寄存器中设置的值,接收/发送控制模块中,13位定时器在每位数据将结束时产生计数脉冲。当计数脉冲有效时,数据移位寄存器右移1位,最低位输出到I/O线,最高位补入I/O线采样数据。
当校验位发送完毕后,I/O线变为高阻态,发方在11etu处对I/O线进行采样,如果为状态Z,则认为接收正确;如果为状态A,则认为传输出错,根据结果刷新串行接口控制/状态寄存器中相应位。
当一帧数据发送完毕后,无论发送是否正确,SCON[1] 都将硬件置位,产生发送中断申请。如果发送正确,SCON[4]将被硬件自动清0;如果发送出错,发送出错标志位SCON[2]将被硬件置位,SBUF中的数据将从检测到错误那一刻起2etu后自动重发,如图3所示。在重发完毕前,必须软件清除SCON[1]及发送出错标志位SCON[2],否则将会出现循环重发错误。
接收模式
置位SCON[5] ,系统处于接收状态。
起始位的检测是通过对I/O线进行周期性采样判决得到的。为了提高抗噪声性能,当检测到起始位后,在每位数据中间进行3次采样,根据采样判决结果产生采样数据,根据波特率寄存器中设置的值,接收/发送控制模块中13位定时器在每位数据中间产生计数脉冲。在计数脉冲控制下,将采样数据串行移入数据移位寄存器。
当一帧数据接收完毕后,进行数据校验。根据校验结果,在起始位下降沿后第10.5个etu起发送确认位。确认位为状态Z,表示接收正确,为状态A,表示接收出错。确认位信号宽度为1个etu,如图4所示。无论接收是否正确, SCON[0]都将在起始位下降沿后第10.5个etu置位,产生接收中断,并根据校验结果刷新串行接口控制/状态寄存器中相应位。如果正确接收,SCON[5]将被硬件自动清除,数据移位寄存器中收到的8bit数据将自动加载到SBUF中;如果不正确,则置位接收出错标志位SCON[3],等待数据重发。软件清除SCON[0]和SCON[3] 必须在下一帧数据接收完毕前完成。
由于设有数据移位寄存器和SBUF缓冲器,从而能在一帧数据接收完,由数据移位寄存器装入SBUF后,立即开始接收下一帧信息,CPU应在下一帧数据接收结束前从SBUF缓冲器中将数据取走,否则前一帧数据将丢失。
通过上述可编程串行接口,当接收或发送完一帧数据后,内部硬件自动置位SCON[0] 或SCON[1],CPU可以通过查询中断标志位或响应中断申请来进行串行通信处理。两个中断请求标志位不能由硬件自动清0,而必须通过软件清0。

结语
ISO/IEC 7816,T=0异步半双工字符传输协议的硬件实现电路具有如下特点:对每位数据采取多次采样判决的方式,提高了接口抗干扰能力;通信波特率软件可调,满足不同系统对通信速率的要求;T=0协议基于字符帧检错重发。为了避免可能出现的无限次的重发现象,在软件中可设置最大重发次数。同T=1协议相比,在通信质量不理想的情况下,T=0协议只需要重发错误字符帧,提高了工作效率。■

参考文献
1 International Standard ISO/IEC 7816-3 . Identification cards. Integrated circuit(s) cards with contacts,Part 3:Electronic signals and transmission protocols,1997
2 王爱英. 智能卡技术-IC卡第二版. 清华大学出版社,2000.10

作者简介:
龚宗跃,工程师,硕士,研究方向为数字集成电路前端设计;孙东昱,工程师,硕士,研究方向为数字集成电路前端设计。



评论


相关推荐

技术专区

关闭