位置:51电子网 » 技术资料 » 其它综合

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

发布时间:2008/6/3 0:00:00 访问次数:2055

摘 要:t=0异步半双工字符传输协议是接触式ic卡国际标准iso/iec 7816中规定的一种通信协议。本文首先分析了iso/iec 7816-3中对于电信号和传输协议的规定,在此基础上介绍了t=0异步半双工字符传输协议的硬件实现方法。
关键词:iso/iec 7816;异步半双工字符传输协议;cpu卡

引言
cpu卡作为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]及发送出错标

摘 要:t=0异步半双工字符传输协议是接触式ic卡国际标准iso/iec 7816中规定的一种通信协议。本文首先分析了iso/iec 7816-3中对于电信号和传输协议的规定,在此基础上介绍了t=0异步半双工字符传输协议的硬件实现方法。
关键词:iso/iec 7816;异步半双工字符传输协议;cpu卡

引言
cpu卡作为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]及发送出错标

相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!