智能卡控制器IP核的设计与实现

发布者:一直333最新更新时间:2011-04-15 关键字:ASIC  ISO7816  智能卡  IP核  Verilog  语言 手机看文章 扫描二维码
随时随地手机看文章
    1、引言
    随着信息技术的飞速发展,越来越多的地方要求对用户身份的识别以及重要数据的安全存储。而智能卡(SmartCard)又称集成电路卡(Integrated Circuit Card 即IC卡),是具有高的可靠性安全性和灵活性的数据承载设备,现已被广泛应用于政府、金融、电信、交通及公共事业等领域。
智能卡控制器是连接智能卡和主控设备的桥梁,由于智能卡的应用不断增加,越来越多的SOC芯片内嵌了智能卡控制器IP核。这种基于IP核的设计方式已成为IC设计的主流,这里主要介绍智能卡控制器IP核的数字逻辑实现方法以及其在硬盘加密芯片中的应用。
 
    2、协议简介
这里仅对本文中要用到的部分协议内容作简要说明,详细的协议内容请见参考文献1。
智能卡共有八个触点,其中有用的就C1、C2、C3、C5、C6、和C7六个触点,具体见下表:
 
 
 
 
表1:智能卡触点
智能卡控制器是通过智能卡触点C7(I/O)与控制器进行半双工串行通信的,在每一时刻触点C7只有状态Z和状态A两种状态。
智能卡要传输一个字节(8个Bit)数据的要11个Bit位的时间宽度,在下表中被记成t1到t11。其中第一个时刻t1传输的Start位被称为起始位;第二到第九个时刻,即时刻t2到时刻t9,传输的数据ba到bh为一个字节的八个位;时刻t10传送的pi位为奇偶校验位;最后一个时刻t11传输的Stop位被称为停止位,标志着一个字节(8个Bit)的数据传输完成。请见下表:

 

 

表2:智能卡串行传输数据格式
3、微体系结构
3.1、接口信号
该IP核接口主要分为CPU总线接口、中断信号和智能卡控制接口,这里主要介绍一下有关智能卡控制的接口信号,即连接或控制智能卡上有效触点的信号,它们为:
1) 智能卡是否存在信号IC_PRES:用于探测智能卡座上是否有智能卡存在,当有智能卡插入或拔出时,该信号的电平发生跳变,本IP核能够探测该信号的电平的变化,并以中断等方式报告给CPU;
2) 智能卡电源控制信号IC_PWR:用于控制智能卡的电源VCC或VPP(触点C1或C6),用于打开和关闭智能卡电源;
3) 时钟信号IC_CLK:同智能卡触点C3相连接,用于向智能卡输入一定频率的时钟信号;
4) 复位信号IC_RST:同智能卡触点C2相连接,用于向智能卡发出复位信号;
5) 双向串行数据信号IC_IO:同智能卡触点C7相连接,用于实现与智能卡的双向数据通信。

 

3.2、模块和功能

智能卡控制器核内部有发送和接收模块(Transmitter and Receiver)、中断仲裁模块(Interrupt Arbitrator)、函数模块(Function Generator)、时钟模块(Clock Generator)、智能卡接口模块(Interface Device)和访问寄存器模块(Register Access Control)六大模块,这些模块之间的关系见图1所示:

 

 

 

图1 ISO7816智能卡控制器模块结构图

 

 

主要模块功能及特征描述如下:
1.       发送和接收模块
发送和接收模块负责处理数据帧的发送和接收。发送模块是将FIFO发送队列中的数据按照设定的格式把并行数据转换为串行数据帧,并通过发送端口送出去。接收模块则监视接收端信号,一旦出现有效开始位,就进行接收,并实现将接收到的异步串行数据帧转换为并行数据,存入FIFO接收队列中,同时检查数据帧格式是否有错。智能卡控制器的帧结构是通过LCR(Line Control Reg)寄存器设置的,接收和传送器的状态被保存在LSR(Line Status Reg)寄存器中。
2.      中断仲裁模块
当任何一种中断条件被满足时,并且在中断使能寄存器(IER, Interrupt Enable Reg)中相应位置1,那么智能卡的中断请求信号INT被置为有效状态。为了减少和外部软件的交互,智能卡控制器把中断分为四个级别,并且在中断标识寄存器(IIR, Interrupt ID Reg)中标识这些中断。四个级别的中断按优先级级别由高到低的顺序排列为:智能卡插拔中断、接收线路状态中断、接收数据准备好中断和传送拥有寄存器为空中断;。
3.         函数模块
该模块产生智能卡的相关时序。通过向函数寄存器(FR, Function Register)相应的位置入相关的参数来探测智能卡、管理电源和产生复位时序等。
4.      时钟模块
时钟模块产生相应频率的时钟供给智能卡,时钟的频率由CPU总线的时钟频率和写入时钟分频寄存器(CDR, Clock Divisor Register)的值来决定,关系表达式如下:
fIC_CLK = fCPU /(2 * CDR)
 
5.        智能卡接口模块
该模块将相关信号进行适当的调整,以便适合于IC智能卡的通信。
6.       访问寄存器模块
当智能卡控制器被总线控制器选中时,CPU可通过读或写操作访问被地址线选中的寄存器。
4、设计实现
这部分将对本智能卡控制器中主要模块的数字逻辑的实现方法逐一作简单说明。
4.1、数据接收模块
在设计接收模块的过程中,关键是如何实现Receiver Shift的逻辑电路,下图是本智能卡控制器数据接收模块中有关Receiver Shift逻辑电路的主控状态转换图:
 
 
 
 
 
图2 接收模块主控状机

 

该状态机共有十个状态,其中主要状态是:状态1(REC_START)用来探测数据的起始位Start;状态2(REC_BIT)用来接收数据ba到bh,组成一个字节;状态3(REC_PARITY)用来接收数据的奇偶校验位;状态4(REC_STOP)探测Stop位。

下面是该状态机控制有关逻辑读入数据的仿真波形图:

 

 

              图3 接收一个字节数据的状态变换波形图

 

 

4.2、数据发送模块
同样, 对于发送模块的设计,主要问题也是如何实现Transmitter Shift的逻辑电路,下图是本智能卡控制器数据发送模块的主控状态转换图:

 

 

图4 发送模块主控状机

 

该状态机共有五个状态:状态1(SEND_START)用来发送数据的起始位Start;状态2(SEND_BYTE)用来发送数据ba到bh;状态3(SEND_PARITY)用来发送数据的奇偶校验位;状态4(SEND_STOP)发送Stop位,最后状态机转入空闲状态0(SEND_IDLE)。
下面是该状态机控制有关逻辑发送数据的仿真波形图:

 

 

图5发送一个字节数据的状态变换波形图
4.3、函数模块
函数模块可以在软件控制下产生激活智能卡和关闭智能卡所需的相关时序。这里简单介绍一下本控制器在软件的支配下,激活智能卡的过程,见下面的波形图。
 
图6激活智能卡时的波形图

 

 

在该波形图中,信号IC_PRES首先变低,表明有智能卡插入。接着智能卡控制器通过IC_PWR打开智能卡的电源。待电源稳定后,智能卡控制器通过IC_CLK向智能卡输出时钟信号。同样,在时钟稳定后,智能卡控制器通过IC_RST向智能卡输出复位信号。最后智能卡控制器在数据信号IC_IO上探测到智能卡复位应答(ATR,Answer to Reset),这样就完成了智能卡的激活工作。
 
    5.结论
本方案所设计的智能卡控制器IP核,采用Verilog HDL语言,以较少的硬件代价,在本公司研发的硬盘数据加密芯片中,成功实现了对智能卡密钥的读写控制,并且该方案具有较强的灵活性,可以方便地移植到其它嵌入式应用系统中,具有较高的使用价值。
 
关键字:ASIC  ISO7816  智能卡  IP核  Verilog  语言 引用地址:智能卡控制器IP核的设计与实现

上一篇:UHF RFID系统测试的挑战
下一篇:RFID技术在反恐与国防上的应用

推荐阅读最新更新时间:2024-05-07 16:24

挖矿不止 继台积电后三星开始代工ASIC矿机芯片
  挖矿一般是利用大型并行运算硬件进行一定的计算,现在火热的ETH虚拟币则是用显卡进行挖掘,而难度极高的比特币和莱特币则是使用算力更为强大的 ASIC 矿机。传闻世界最大的矿机制造商“比特大陆”每个月向 台积电 采购一万块晶圆,用作生产 ASIC 矿机芯片。近期韩国媒体报道三星电子已经开始代工 ASIC 矿机芯片,并开始为中国某个挖矿设备生产商代工这种挖矿芯片。下面就随手机便携小编一起来了解一下相关内容吧。   其实像比特币、莱特币这种称之为第一代虚拟货币,由于处于区块链技术研究初期,其挖掘算法有些不合理。大多数情况下都是通过无脑地进行大规模整数运算进行挖矿,因此抗击ASIC矿机性能非常差。而针对算法特定研发出来的FPGA、AS
[手机便携]
第10节:一个用来学习C语言的模板程序
从业十年,教你单片机入门 第10讲: 目前,几乎所有的初学者在学习和上机练习C语言的时候,都是在电脑上安装VC这个调试软件,在源代码里只要调用打印语句printf就可以观察到不同的变量结果,挺方便的。但是现在我要提出另外一种方法,学习单片机的C语言,不一定非要用VC调试软件,也可以直接在坚鸿51学习板上学习和上机练习的。我可以做一个调试模板程序给初学者使用,利用8位数码管和16个LED灯来显示不同的变量结果,利用3个按键来切换显示不同的变量,这样就能达到类似在VC平台下用printf语句来观察变量的效果。甚至我个人认为这样比用VC调试的效果还更加直观。现在重点介绍这个模板程序的使用。 在模板程序里,初学者只需要在主程序的初始化区域
[单片机]
GPU不再主导AI芯片,换 ASIC 称王?
GPU 在人工智慧(AI)运算大放异彩,激励两家 GPU 大厂 Nvidia、超微(AMD)股价狂飙。但是分析师警告,明年 GPU 在 AI 的地位,也许会遭“特殊应用积体电路”(ASIC)取代。 12 日 Nvidia 下跌 1.96%,13 日续跌 2.44% 收在 186.18 美元。12 日超微下跌 2.56%,13 日反弹 2.12% 收在 10.11 美元。 MarketWatch、Smarter Analyst 报导,Susquehanna 分析师 Christopher Rolland 12 日报告称,2017 年 AI GPU 当道,2018 年可能换成 ASIC 发威。AI 运用深度学习解决真实世界问题,也使用
[半导体设计/制造]
Verilog HDL实现I2C总线功能
摘要:简述了I2C总线的特点;介绍了开发FPGA时I2C总线模块的设计思想;给出并解释了用Verilog HDL实现部分I2C总线功能的程序,以及I2C总线主从模式下的仿真时序图。 关键词:I2C总线 FPGA Verilog HDL 时序 开发FPGA时,利用EDA工具设计芯片实现系统功能已经成为支撑电子设计的通用平台,并逐步向支持系统级的设计方向发展。在软件设计过程中,越来越强调模块化设计。I2C总线是Philips公司推出的双向两线串行通讯标准,具有接口线少、通讯效率高等特点。把I2C总线设计成相应的模块,有利于相关FPCA的开发。 目前有一些介绍相关开发的资料,但都是利用VHDL语言或AHDL语言实现的。本文给出利用Veri
[半导体设计/制造]
格芯及复旦微电子团队交付下一代双界面智能卡
格芯55LPx平台内含嵌入式非易失性存储器和集成射频,助力复旦微电子打造中国最先进的CPU银行卡。 格芯(GLOBALFOUNDRIES)及 上海复旦微电子集团股份有限公司 今日宣布,已通过使用格芯55纳米 低功率扩展 (55LPx) 技术平台,制造出下一代双界面CPU卡 芯片 。格芯55LPx平台能够将多种功能集成到单芯片上,从而提供安全、低功耗且具成本效益的解决方案,该解决方案尤其适合中国银行卡市场,包括金融、社会保障、交通、医疗和移动支付 等 应用。 复旦微电子集团股份有限公司的双界面 CPU 卡 FM1280 ,支持接触式和非接触式通信模式,采用低功耗 CPU 以及经过格芯硅验证的 55LPx 射频 IP 。 FM1
[安防电子]
单片机C语言程序设计:串行数据转换为并行数据
/* 名称:串行数据转换为并行数据 说明:串行数据由 RXD 发送给串 并转换芯片 74164,TXD 则用于输出移位时钟脉冲,74164 将串行输入的 1 字节转换为并行数据,并将转换的数据通过 8 只 LED 显示出来。本例串口工作模式 0,即移位寄存器 I/O 模式。 */ #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit SPK=P3^7; uchar FRQ=0x00; //延时 void DelayMS(uint ms) { uchar i;
[单片机]
单片机C<font color='red'>语言</font>程序设计:串行数据转换为并行数据
张纲:IC产业迎来机遇 智能卡市场前景广阔
【赛迪网讯】自2000年国务院颁布《国务院关于印发鼓励软件产业和集成电路产业发展若干政策的通知》(后称“18号文”)以来,我国集成电路产业走过飞速发展的黄金十年。今年6月2日,工业和信息化部部长李毅中在北京举行的第十四届中国国际软件博览会上透露,工信部正在研究并已拿出政策草案向国务院汇报,欲进一步鼓励集成电路产业发展,出台新的推动政策。 2010年,正值国家发布“18号文”十周年之际,记者采访了复旦微电子有限公司的产品经理张纲,详细的了解了我国集成电路企业的发展情况。张纲在采访中介绍,我国集成电路企业在这十年的发展中主要分为以下几种模式,一是以逆向工程起家的集成电路企业,复旦微电子就是这样的企业,这种企业大多是对国外的产
[安防电子]
查表指令(2条)举例——mcs51单片机汇编语言
查表 指令 (2条) 这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式: MOVC A,@A+DPTR ;((A))+(DPTR)→(A) 表格地址单元中的内容送到累加器A中 MOVC A,@A+PC ;((PC))+1→(A),((A))+(PC)→(A) 表格地址单元中的内容送到累加器A中 本指令是将ROM的数据送入A中,本指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格。 说明: 1、此条指令引出了一个特殊的寻址方式,即变址寻址,在上节课时我们已进行过讲解,本指令是要在ROM的一个地址单元中找出数据,显然必须知道这个单元的地址,这个单元的地址是这样确定的:在执行本指令立脚点
[单片机]
小广播
最新网络通信文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved