一种实现ISO7816-3传输协议的方法

2020-08-31 14:40于茫
物联网技术 2020年8期
关键词:接收数据字符寄存器

于茫

摘 要:针对单片机实现PSAM卡读写过程中存在的实时性差及时钟不可配的问题,设计了基于FPGA实现ISO7816-3半双工串行通信系统的方法。利用该方法访问PSAM数据,时钟周期灵活可配,缩减了数据交互时间,实时性好。同时考虑到接收数据中遇到的超时、校验失败等问题,设计了中断模块,采用共享中断线区分中断号的方法上报给上位机,不仅节省了器件引脚,而且达到了区分中断的目的。最终该方法通过仿真及板级验证,与PSAM正常通信。

关键词:ISO/IEC7816;FPGA;PSAM;秘钥管理;串/并转换;串行通信

0 引 言

随着越来越多的RFID读写器和标签应用在物流、珠宝、电子车牌等行业,数据的保密性和完整性已经变得越来越重要。为解决数据保密问题,通过阅读器下发秘钥授权访问标签的存储区成为当下关注的热点,因此如何设计秘钥的载体成为读写器厂家考虑的重点。其中一种常用的方法是参考银行的IC卡设计,在读写器终端放置已经存储秘钥的PSAM卡[1-4]。

PSAM卡属于IC接触式卡的一种,数据传输须符合ISO/IEC 7816协议。软件设计一般参考ISO/IEC 7816-3和ISO/IEC 7816-4协议。ISO/IEC 7816-3规定了智能卡与接口设备的电信号和传输协议,为半双工协议;ISO/IEC 7816-4规定了智能卡和接口设备的交互命令[5-6]。

IC卡的数据访问实现方案有多种,方案一利用单片机实现,但实现过程中数据的实时性差,IC卡的时钟周期由外部独立器件产生,时钟无法灵活配置,同时还存在PCB布局浪费等问题[7]。方案二虽然利用FPGA器件的并行处理优势进行设计,但实现过程中未考虑实际接收数据时遇到的超时、奇偶校验失败等问题,所以设计的模块在工程应用中存在风险[8]。

本文设计了一种ISO7816-3半双工串行通信系统[9-10]。该系统上位机通过EMC总线配置FPGA进行复位、激活、读写等状态机的跳转,配置etu寄存器、字符保护时间寄存器等。Tx模块完成并串转换,添加起始字符,将奇偶校验字符发送给PSAM卡数据端。Rx模块接收PSAM卡返回的响应数据,完成串并转换与奇偶校验,将数据写入RAM且发送正常。超时、校验失败等错误判断信号发送至中断模块,中断模块采用共享中断线区分中断号的方法上报给上位机,上位机根据不同的中断号作出响应。

1 系统设计

本设计采用的PSAM卡是T=0异步半双工字符传输类型。1个字符10 bit,按照小端传输,起始字符bit1为0,bit10对bit2~bit9的字符个数进行偶校验[3]。初始化字符TS如图1所示。

根据复位响应中的TA1字段bit8~bit5定义F,通过bit4~bit1定义D。上位机在收到该字符后需要重新计算etu的时间。计算公式如下:

PSAM卡复位响应如图2所示。

复位响应的第一个字符TS(0x3B)代表字符按照小端传输。T0字符中bit5,bit6,bit7,bit8分别代表TA1,TB1,TC1,TD1字符是否存在,其中1表示存在,0表示不存在。TD1高4 bit分别代表TA2,TB2,TC2,TD2是否存在,依次类推。bit4~bit1表示历史字节的个数。第二个字符T0(0X7F)为二进制数“01111111”,代表本卡的TA1,TB1,TC1字符存在,有15个历史字节,而TD1不存在,所以默认为T=0异步半双工字符传输类型。第三个字符TA1(“0X18”)的bit8~bit5是“0001”(F=372),bit4~bit0是“1000”(D=120),上位机更新的etu時间为31个Psam_clk周期,极大地缩减了数据交互时间。

协议研读后,对FPGA进行系统设计。系统包括状态机模块、Tx发送模块、Rx接收模块、中断模块,具体如图3所示。

(1)状态机模块:完成冷复位、热复位、接收数据、发送命令、激活等状态跳转,配置etu寄存器、字符保护时间寄存器等。

(2)Tx发送模块:把上位机下发的命令写入Tx_ram,按照协议添加起始字符和奇偶校验字符,并完成转串与大小端转换,设置字符间保护时间和等待时间,把数据发送给Psam_dat。

(3)Rx接收模块:对Psam_dat进行串转并、偶校验、大小端转换,并把校验成功的数据按照字节写入Rx_ram。在接收过程中设置超时、校验失败、正常接收数据完成等信号发送给中断模块。上位机在收到TA1字符后,根据F,D值计算新的etu,并通过EMC总线更新至FPGA,由FPGA重新调整Psam_clk周期。

(4)中断模块:Rx接收模块发送超时、校验失败信息并正常接收数据,将这些信息写入中断寄存器,同时上报至上位机。上位机收到中断信号后查询中断寄存器,并进行相应的处理。

2 仿真及验证

为了说明方法的可行性,按照系统设计进行编码,并利用Modelsim对其进行仿真。FPGA接收的数据为”3B 7F 18 00 00 86 88”,如图4所示。FPGA发送的数据为”75 86 32 A5”,如图5所示。

在开发板上进行验证,通过上位机打印获取PSAM数据,并与写入数据进行对比,结果表明两者数据一致,证明数据传输及解析无误。

3 结 语

本文利用FPGA实现对PSAM卡的数据访问,根据PSAM的响应字符TA1,灵活调整时钟周期,数据实时性强。设计中充分考虑工程中遇到的超时、奇偶校验失败等情况,中断模块采用共享中断线、区分中断号的方法解决这一问题。最后工程进行了读写仿真,并在板级上实现了与PSAM卡的通信,进一步证明了该方案的可行性。

参考文献

[1]白振兴,何华灿,魏宝刚.智能IC卡的分类与标准及技术性能分析[J].现代电子技术,1997,20(2):18-19.

[2]俞刚.智能卡-PKI私钥的安全载体[J].计算机与数字工程,2008(11):107-110.

[3]潘梁.ETC秘钥国产化升级改造方案设计与实现[J].中国交通信息化,2020(2):115-118.

[4]李文涛.广东省联网收费IC卡系统安全性浅析[J].中国交通信息产业,2009(7):80.

[5] International standard ISO/IEC 7816-3,Identification cards integrated circuit cards. Part3:Cards with contacts-Electrical interface and transmission protocols [S]. 2004.

[6] International standard ISO/IEC 7816-3,Identification cards integrated circuit cards. Part3:Organization,security and command for interchange [S]. 2005.

[7]高继森,刘春华.单片机直接读写SIM卡的软件设计[J].五邑大学学报(自然科学版),2010(4):24-27.

[8]张子武,丁晓明,沈超.ISO/IEC7816-3通信协议的FPGA实现[J].现代电子技术,2008,33(3):164-165.

[9]蒋晓光,黄光周,于继荣.基于ISO7816-3标准的智能卡接口控制器设计[J].今日电子,2005(2):62-63.

[10]王静,李华军,韦巍.串行通信的一种可靠性设计方案[J].机电工程,2001(4):33-35.

猜你喜欢
接收数据字符寄存器
冲激噪声背景下基于幅度预处理的测向新方法*
Lite寄存器模型的设计与实现
字符代表几
一种USB接口字符液晶控制器设计
低复杂度多输入多输出雷达目标角度估计方法
消失的殖民村庄和神秘字符
分簇结构向量寄存器分配策略研究*
单片机模拟串口数据接收程序的实现及优化
高速数模转换器AD9779/AD9788的应用
一种可重构线性反馈移位寄存器设计