首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 基于FPGA的智能卡控制器的实现
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于FPGA的智能卡控制器的实现
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-6-10 19:57
|
只看该作者
基于FPGA的智能卡控制器的实现
集成电路
,
微处理器
,
工程设计
,
市场需求
,
控制器
智能卡(Smart Card)又称集成电路卡(Integrated Circuit Card),即IC卡,目前大量使用的交通卡、门禁卡、银行支付卡等都是智能卡。智能卡接口控制器是连接智能卡和主控设备的桥梁,是智能卡处理设备中的最重要组成部分之一。面对巨大的市场需求,越来越多的公司、科研机构都在研究此类控制器。 FPGA具有可重构性、开发周期短以及开发流程简单等优点,越来越多的工程师选择将FPGA作为工程设计的首选。由于其内嵌微处理器,FPGA在嵌入式方面也获得了大量的运用。此外,为缩短产品面市时间,FPGA厂商还会提供多种知识产权(IP)核。这类IP核可以作为功能模块运用在不同的设计中,方便了各种开发的推进。本文尝试在EDK中开发一个新的IP核,其功能就是实现对IC卡的接口控制。
1 用卡过程
正常的用卡过程可划分为几个阶段:(1)将IC卡插入到接口设备IFD(Interface Device),并接通各触点;(2)对IC卡进行复位,在终端和IC卡间建立通信;(3)执行交易;(4)释放触点并取出IC卡。
2 字符的物理传送
交易过程中,数据以异步半双工方式经I/O线在终端和IC卡之间双向传送。由终端向IC卡提供时钟信号,并以此来控制交易的时序。数据在I/O线上以字符帧传送,一个字符帧包含着10个相连的数位:1 bit状态为低(L)的起始位、8 bit组成的数据字节和1 bit偶校验位,如图1所示。
Input AFIFO接收来自总线的命令、地址和数据等,依次存储在FIFO中(深度为16 bit),Device Controller则读取该FIFO中数据,并进行相应的操作。 Output AFIFO用于接收Device(智能卡)返回的数据,并将其传输给总线。 Output Latch的作用是进行状态缓存与命令缓存,主要是为了满足相关时序的要求。 Device Controller是设计的核心环节,它主要有以下功能特征: (1)参数的传递以及协议的设定; (2)时钟频率的转换; (3)功能的激活; (4)时钟的停止; (5)功能的释放; (6)复位; (7)应用协议数据单元APDU(Application Protocol Data Unit)传送; (8)PPS交换。 该模块通过PLB接收来自CPU(即Microblaze)的数据,并将它们转换成串行信号。智能卡(Device)接收这些串行信号,并作出相应的响应。CPU通过PLB总线读取这些响应。其中,协议的选定是通过软件来实现的,而且Device Controller的参数传输也是通过软件来实现的。根据该模块的主要功能特征,将该模块细化成以下几个小的模块。 (1)状态机模块:用于对通信状态过程的转换; (2)计数器模块:用于发送或接收数据的位数计算; (3)时钟分频模块:产生合适的时钟频率,用于与智能卡的通信; (4)信号接口模块:接收并解码总线数据(命令、地址和数据); (5)数据接收模块:用于接收Device发送的数据,并封装成32 bit格式。
3.2 IP核的顶层模块
控制器的顶层模块的结构图如图3所示。
在这个控制模块中,有6个输入信号是本控制器接收来自主控制器(Microblaze)的信号,分别为总线时钟信号Bus2IP_Clk、总线复位信号Bus2IP_Reset、数据信号Bus2IP_Data、总线选择信号Bus2IP_BE、总线读使能信号Bus2IP_RdCE以及总线写使能信号Bus2IP_WrCE。5个信号用于本控制器发送响应给主控制器(Microblaze),分别为IP发送数据信号IP2Bus_Data、IP读响应信号IP2Bus_RdAck、IP写响应信号IP2Bus_WrAck、IP报错信号IP2Bus_Error以及IP中断信号IP2Bus_IntrEvent。还有6个信号用于本控制器与智能卡之间的通信,分别为输出给智能卡的时钟信号SCID2SC_CLK、复位信号SCID2SC_RST、电压信号SCID2SC_VPP、接收智能卡返回值SCID2SC_IO_I、输出信号给智能卡SCID2SC_IO_O、输入输出选择信号SCID2SC_IO_T。在时钟频率的选择上,由于
Spartan-3A
的工作频率是62.5 MHz,因此Bus2IP_Clk采用的是62.5 MHz,而智能卡在这样的高频下则无法有效工作,因此通过DCM来实现分频,最终选取IP_CLK的频率为33.25 MHz。
3.3 控制器的工作流程
当此控制器IP核接收到来自总线的命令后,就将开始工作,实现对智能卡的接口控制,其工作的状态转换如图4所示。
上电后,该控制器开始处于起始状态(INITIAL),当接收到来自总线的信号后,信号接收模块便会识别信号中的命令。当命令为CMD_ACT、CMD_RST、CMD_ATR时,则开始工作;否则,继续处于起始状态。开始工作后,首先进入到SIGNAL_ST_CLK状态,在这个状态里,时钟生成模块开始工作,它将产生一个需要的时钟频率,作为控制器与智能卡进行通信的工作频率。接着就要对智能卡进行第一次复位(冷复位),即进入到SIGNAL_ST_RST状态,复位后进入SIGNAL_ST_ATR状态(ATR为复位应答),等待来自智能卡的返回信息。当智能卡发送信号有效时,进入到SIGNAL_ST_GET状态,接收来自智能卡的响应。如果返回值正确,则将进入空闲状态(IDLE),等待下一命令。如果返回值不正确,则需要智能卡重新发送,并重新进入到SIGNAL_ST_GET状态。 在IDLE状态下,控制器会根据总线后续的命令来进行操作,在本设计中主要是发送CMD_ATR、CMD_APDU和CMD_PPS命令,其过程是对智能卡进行数据的发送。首先进入到SIGNAL_ST_SEND状态,每发完一组数据(10 bit)后,都会对这组数据进行检查,即进入SIGNAL_ST_CHECK状态。 当所有操作命令都完成,就需要对此状态机进行释放,进入SIGNAL_ST_DACT状态。释放过程分为3步:首先对智能卡进行复位操作,然后要停止向智能卡输出时钟信号,最后将控制器对智能卡的输出信号拉低。至此,本次状态转换就结束了,对智能卡的一次控制也就完成了。
4 FPGA的实现
在ISE 12.4开发环境中新建一个SmartCard控制器的工程,并添加EDK开发模块,运用其IP生成功能来生成一个智能卡的控制IP核iso7816_intf_dev,输入相应的Verilog HDL代码,并将生成的IP添加到EDK系统中。整个EDK系统的工作平台如图5所示。
只需在将此工程生成相应的比特流,并下载到FPGA开发板上,就可以对智能卡进行控制操作了。为了在硬件上实现该控制器的功能,选用Xilinx公司的Spartan-3A系列XC3S700A-4FG484开发板来实现该控制器。其内部消耗资源概况如图6所示。 最后,借助于Xilinx的SDK对该控制器进行测试。在SDK中,可以运用函数Xil_Out32或者Xil_In32来进行数据的发送与接收。
Xil_Out32(Base_Address+Offset,command/data),Xil_In32(Base_Address+Offset)。验证此IP核能否正常工作,主要需要验证ATR、APDU和PPS这3个命令是否能够正确地发送并接收正确的响应。由于这3个命令的发送与接收都是运用同样的函数,只是命令符与地址不同,因此只列出ATR的测试情况。 运用下面的函数向对应的地址发送命令: Xil_Out32(0xcce00004,0x03000003); Xil_Out32(0xcce00000,0x00000101)。 运用下面的函数接收来自智能卡的响应: fpireg0=Xil_In32(0xcce0001c); xil_printf("data0:%x\r\n",fpireg0)。 智能卡对此命令的响应如下,它返回12个字符:3B,19,96,00,21,02,00,00,00,FF,90,00。这些响应是符合此类智能卡的响应规定,因此,该IP核对于ATR功能是正确的。利用同样的验证方法可以看出,该IP核对于APDU以及PPS等命令的响应都是完全正确的。经验证,本方案所设计的智能卡控制器是可行的。在进行嵌入式设计时,可以将该IP核直接添加到相关的EDK工程中去,从而减少了设计的复杂度。但是本设计还只是局限于将IP核运用在FPGA上,以后需要继续研究,能够将该IP核通用化,这样就可以添加到任何目标系统中去,方便SoC的设计,这将是今后研究的重点所在。
参考文献
[1] International Standard ISO/IEC 7816-3[S].[2] Xilinx公司. Spartan-3 FPGA Family Data Sheet[Z].[3] Xilinx公司. Spartan-3 Starter Kit Board User Guide[Z].[4] 夏宇闻,甘伟.Verilog HDL入门[M].北京:北京航空航天大学出版社,2008.作者:马 峰,徐和根,赵 曼,来源:微型机与应用2013年第1期
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
MCU 单片机技术
DSP技术
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议