JavaCard CPU的设计与FPGA实现_第1页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、javacard cpu的设计与fpga实现智能卡是指集成了cpu、rom、ram、cos(芯片操作系统)和eeprom,能储存信息和图像,具备读/写能力,信息能被加密庇护的便携卡。智能卡的最基本标准是 iso/iec7816。智能卡在银行、电信等行业得到广泛应用,但在进展过程中也碰到无数问题,主要有:各厂商命令集不统一;编程接口apis太复杂;开发环境不通用,新卡开发都要认识开发环境;系统不兼容,专卡专用。因为开发门槛过高,影响了智能卡的进展。市场对智能卡的进展提出了新的要求,sun公司提出了java card开放标准。javacard技术将智能卡与java技术相结合,克服了智能卡开发技术太

2、专业、开发周期长等妨碍智能卡普及的缺点,允许智能卡运行 java编写的应用程序。javacard技术继承了java语言的优点,制定了一个平安、便捷且多功能的智能卡平台。javacard基本的硬件配置(来自sun文档)为:512b ram、24kb rom、8kb eeprom、8位处理器。典型的javacard设备有8位或16位的cpu,3.7mhz时钟频率,1kb的ram和大于16kb的非易失存储(eeprom或flash)。高性能的智能卡带有自立的处理器、加密芯片及密码信息。javacard系统的实现有基于软件虚拟机和基于硬件两种办法。基于软件虚拟机办法是在非java处理器上用软件办法模拟

3、实现javacard平台,在此平台上实现javacard应用。基于硬件办法是硬件规律实现javacard处理器,在此硬件基础上实现javacard平台,再在此平台上实现javacard应用。2 java处理器的实现方式比较java处理器有以下几种实现方式:(1)通用cpu+os+java软件说明器,软件说明执行java命令。(2)通用cpu+os+java jit(just-in-time)编译器,按块编译执行java命令。(3)java加强cpu+os+特别的java编译器,充分用法java加强硬件的优势。(4)java 硬件cpu,本地支持java命令,执行效率最高。目前的java系统是基

4、于软件虚拟机实现的,软件解析执行java命令,如(1)、(2)。用软件实现javacard虚拟机,需要软件 javacard命令说明器,将java命令转换到本地cpu的命令集。这样,不但速度慢,而且虚拟机本身占用内存资源,不适合在智能卡这种资源有限的硬件中应用。方式(3)要求cpu硬件实现部分java命令,它需要特别的编译器来充分发挥java加强cpu的功能。方式(4)是最有效的解决办法, java命令的执行不再需要先转换到宿主cpu的本地命令集,同时,它也不占用ram等软件资源,可以给应用程序提供更多的资源。本文介绍javacard cpu。系统采纳描述,设计成一个配置灵便、修改便利、资源占

5、用少、兼容性好、可以在一般中实现的软核。3 javacard cpu的设计3.1 java cpu的硬件实现技术在cpu的设计中,当从内存中取出下一条命令时,执行这条命令有两种办法,即硬件规律办法和微码序列办法。硬件规律办法用法译码器、锁存器、计数器和其他一些规律部件转移和操作数据,完成命令功能。微码序列办法是在内部实现一个十分简洁、迅速的微码处理器。此微码处理器的每条命令对应很容易的硬件动作(普通都是单周期命令),将要执行的cup命令作为索引,索引到微码rom中的某个地址,通过执行此地址处的一组微码完成命令功能。硬件规律办法的优点是能设计出更快的cpu,缺点是难以实现复杂的命令集,同时会导致

6、芯片面积增大。微码序列办法的优点是可以减小芯片的面积,实现复杂命令集,缺点是速度有时较慢。两种办法的速度快慢并非肯定,微码命令是容易命令,普通每个时钟就能执行一条命令。硬件规律办法在执行cpu命令时,通常也是划分为几个阶段执行,同样需要几个时钟。实际设计中采纳哪种办法要权衡利弊,在速度不是关键时,微码序列办法是个很好的挑选。3.2 javacard cpu结构javacard cpu采纳微码实现,核心部分是微码处理器,用微码命令序列实现javacard命令。微码处理器主要组成为:主控规律core,运算单元alu,内部堆栈单元stack,微码rom,微码命令指针调节模块mcpc,外存读写接口me

7、mrw,通过wishbone衔接外部ram、rom、i/o。各模块之间衔接关系、数据通路、控制通路以及应答信号衔接见图1。3.3 微码处理器各模块接口及功能(1)运算单元alumodule alu(x,y,op,z,flag,calc,rst,a ck,clk);x、y为输入操作数,op为操作码,z为输出结果,flag为输出运算结果标记,calc为运算使能控制信号,ack为运算结束应答。本模块完成op定义的运算,并给出标记位和应答。(2)内部堆栈stackmodule stack(clk,rst,pop,push,data_i,data_o,sp,ack);pop、push为堆栈的弹出及压入操

8、作信号,data_i、data_o为数据输入输出,sp为堆栈指针,ack为堆栈操作结束应答。本模块按照pop、push信号对堆栈举行操作。(3)微码rommodule microcoderom(mcp,mcr);mcp为微码rom的指针,mcr为微码寄存器。按照微码指针mcp,在mcr上输出mcp处的微码数据。(4)微码命令指针调节模块mcpcmodule mcpc(clk,rst,load,new_mcp,hold,remap,instr,mcp);微码指针有保持、重加载、重映射三种操作。重加载是用new_mcp的值作为新的mcp值。重映射是将cpu命令instr对应的微码序列首地址作为新的

9、mcp值。load信号有效,用new_mcp的值给mcp赋值;hold信号有效,保持mcp值不变;remap信号有效,则将cpu命令instr做为索引,得到instr命令对应的微码序列首地址,将首地址赋给mcp。以上三个信号均无效时,每时钟mcp自动加1。(5)外存读写接口memrwmodule memrw(clk,addr,data_read_in,data_write_out,ack,rst,rd,wr,wb_stb_out, wb_cyc_out,wb_ack_in,wb_addr_out, wb_data_in,wb_data_out,wb_we_out);对外接口采纳开源的wishb

10、one总线标准,wb*信号是wishbone相关信号。按照rd、wr读写信号,操作wishbone信号,等待wishbone的应答,然后将数据和应答信号反馈给主控模块。3.4 本javacard cpu设计的特点(1)主控模块与其他从模块之间用使能信号和应答信号保持同步,从模块在完成操作后只需给出应答信号,即可匹配不同速度的从模块。(2)微码命令的设计。全部的微码命令为单命令,即不带任何操作数。微码命令本身包含所需操作的信息,如在哪两个寄存器之间转移数据等。对于跳转操作等必需带后续操作数的命令实行变通办法,先将所需操作数存入内部寄存器,再执行跳转等命令。具体示例为:微码定义为16位。位15指示

11、本微码是命令还是数据。位15=1表示是数据,此时微码的低8位是一个数据,处理此微码时,要将此8位数据提取出来,存入内部寄存器;位15=0表示是命令。当需要执行一个跳转jmp 0x0809时,微码序列办法用法三条微码表示:0x8008 /位15=1,是数据型微码0x8009jmp /命令型微码助记符执行时,碰到前面两个数据型微码,会将08和09存入内部16位数据寄存器的凹凸8位;执行jmp命令时,隐含用法此内部数据寄存器。(3)全部的微码命令是单周期命令。因为采纳了(2)中所述的单命令微码,在执行当前微码命令的同时读取下一条微码命令,可以做到每个时钟执行一条微码。(4)简洁的主控规律。全部jav

12、acard命令均由微码执行,不采纳硬件陷入、软件模拟方式,简化了主控规律设计。主控模块状态机仅有exec_mc和hlt两个状态。cpu复位后,向来处于执行微码exec_mc状态,直到执行hlt微码命令。(5)适应性好。采纳了应答机制,可以匹配不同速度的部件;对外采纳wishbone总线,简化了各部件接口的设计,便利了外部设备的扩充。(6)i/o采纳内存映射方式统一编址,避开了非java命令的引入,保证了兼容性。3.5 verilog表述的微码处理器核心规律下面是主控规律框架代码的一部分。本段代码体现了如何处理数据型微码和命令型微码,可以在your_micro_code_instr处添加需要的微

13、码命令以及对应的操作。always(posedge clk or posedge reset)beginif(reset)beginnew_mcp15:0/序列首地址pop,push,alu_calc,memrd,memwr,load_mcp,hold_mcp,remap_mcp系统采纳微码实现,用微码序列控制读取java命令、存储数据,实现java命令。javacard命令被说明执行的过程如下:读取javacard pc处的javacard命令至命令寄存器instr,发出remap信号给微码指针调节模块mcpc,微码指针寄存器mcp得到新的javacard命令对应的微码序列首地址,mcp的变

14、幻使微码命令寄存器mcr变为该微码序列的首个微码命令,再由微码处理器执行此mcr中的微码。4 javacard cpu测试平台的fpga实现4.1 外围接口和模块测试平台是以一块xc2s200芯片为核心的容易开发板,所有设计都在此芯片内实现,包括cpu规律、存储单元等,板上的8位led指示灯用作i/o输出端口。4.2 测试平台框架测试平台框架结构2所示。4.3 结果解释设计是用verilog语言实现的,内部用法16位数据总线,对外是8位的wishbone总线,微码rom为4kb,外接512b的rom和512b的ram。javacard 定义了187条命令,其中47条命令涉及32位整型数。对32

15、位整型数的支持是可选的,本次没有实现对32位整型数操作的命令,碰到未定义命令的操作为宕机。共定义了109条微码命令。用了3273条微码命令序列完成系统初始化操作和说明javacard命令,每条javacard命令约用17条微码命令执行(主要是有些面对对象的复杂命令需要更多的微码说明)。囫囵系统占用资源很少:4个block ram,2 052个slice,可以在一般fpga上实现。测试代码下载到板上的rom中,以24mhz时钟运行通过,验证了javacard命令处理的正确性,性能彻低满足javacard虚拟机标准要求。实现javacard硬件cpu是javacard的进展方向。因用途缘由,它不需要很高的性能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论