智能卡(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格式。 |