位置:51电子网 » 技术资料 » EDA/PLD

JavaCard CPU的设计与FPGA实现

发布时间:2008/8/21 0:00:00 访问次数:654

1 javacard简介

  智能卡是指集成了cpu、rom、ram、cos(芯片操作系统)和eeprom,能储存信息和图像,具备读/写能力,信息能被加密保护的便携卡。智能卡的最基本标准是 iso/iec7816。智能卡在银行、电信等行业得到广泛应用,但在发展过程中也遇到很多问题,主要有:各厂商指令集不统一;编程接口apis太复杂;开发环境不通用,新卡开发都要熟悉开发环境;系统不兼容,专卡专用。由于开发门槛过高,影响了智能卡的发展。市场对智能卡的发展提出了新的要求,sun公司提出了java card开放标准。javacard技术将智能卡与java技术相结合,克服了智能卡开发技术太专业、开发周期长等阻碍智能卡普及的缺点,允许智能卡运行 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处理器上用软件方法模拟实现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系统是基于软件虚拟机实现的,软件解析执行java指令,如(1)、(2)。用软件实现javacard虚拟机,需要软件 javacard指令解释器,将java指令转换到本地cpu的指令集。这样,不但速度慢,而且虚拟机本身占用内存资源,不适合在智能卡这种资源有限的硬件中应用。方式(3)要求cpu硬件实现部分java指令,它需要特殊的编译器来充分发挥java加强cpu的功能。方式(4)是最有效的解决方法, java指令的执行不再需要先转换到宿主cpu的本地指令集,同时,它也不占用ram等软件资源,可以给应用程序提供更多的资源。

  本文介绍javacard cpu。系统采用verilog描述,设计成一个配置灵活、修改方便、资源占用少、兼容性好、可以在普通fpga中实现的软核。

3 javacard cpu的设计

3.1 java cpu的硬件实现技术

  在cpu的设计中,当从内存中取出下一条指令时,执行这条指令有两种方法,即硬件逻辑方法和微码序列方法。硬件逻辑方法使用译码器、锁存器、计数器和其他一些逻辑部件转移和操作数据,完成指令功能。微码序列方法是在内部实现一个非常简洁、快速的微码处理器。此微码处理器的每条指令对应很简单的硬件动作(一般都是单周期指令),将要执行的cup指令作为索引,索引到微码rom中的某个地址,通过执行此地址处的一组微码完成指令功能。

  硬件逻辑方法的优点是能设计出更快的cpu,缺点是难以实现复杂的指令集,同时会导致芯片面积增大。微码序列方法的优点是可以减小芯片的面积,实现复杂指令集,缺点是速度有时较慢。两种方法的速度快慢并非绝对,微码指令是简单指令,一般每个时钟就能执行一条指令。硬件逻辑方法在执行cpu指令时,通常也是划分为几个阶段执行,同样需要几个时钟。实际设计中采用哪种方法要权衡利弊,在速度不是关键时,微码序列方法是个很好的选择。

3.2 javacard cpu结构

  javacard cpu采用微码实现,核心部分是微码处理器,用微码指令序列实现javacard指令。微码处理器主要组成为:主控逻辑core,运算单元alu,内部堆栈单元stack,微码rom,微码指令指针调整模块mcpc,外存读写接口memrw,通过wishbone总线连接外部ram、rom、i/o。各模块之间连接关系、数据通路、控制通路以及应答信号连接见图1。

3.3 微码处理器各模块接口及功能

  (1)运算单元alu

  module alu(x,y,op,z,flag,calc,rst,a ck,clk);
  x、y为输入操作数,op为操作码,z为输出结果,flag为输出运算结果标志,calc为运算使能控制信号,ack为运算结束应答。本模块完成op定义的运算,并给出标志位和应答。

  (2)内部堆栈stack

  module stack(clk,rst,pop,push,data_i,data_o,sp,ack);
  pop、push为堆栈的弹出及压入操作信号,data_i、data_o为数据输入输出,sp为堆栈指针,ack为堆栈操作结束应答。本模块根据pop、push信

1 javacard简介

  智能卡是指集成了cpu、rom、ram、cos(芯片操作系统)和eeprom,能储存信息和图像,具备读/写能力,信息能被加密保护的便携卡。智能卡的最基本标准是 iso/iec7816。智能卡在银行、电信等行业得到广泛应用,但在发展过程中也遇到很多问题,主要有:各厂商指令集不统一;编程接口apis太复杂;开发环境不通用,新卡开发都要熟悉开发环境;系统不兼容,专卡专用。由于开发门槛过高,影响了智能卡的发展。市场对智能卡的发展提出了新的要求,sun公司提出了java card开放标准。javacard技术将智能卡与java技术相结合,克服了智能卡开发技术太专业、开发周期长等阻碍智能卡普及的缺点,允许智能卡运行 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处理器上用软件方法模拟实现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系统是基于软件虚拟机实现的,软件解析执行java指令,如(1)、(2)。用软件实现javacard虚拟机,需要软件 javacard指令解释器,将java指令转换到本地cpu的指令集。这样,不但速度慢,而且虚拟机本身占用内存资源,不适合在智能卡这种资源有限的硬件中应用。方式(3)要求cpu硬件实现部分java指令,它需要特殊的编译器来充分发挥java加强cpu的功能。方式(4)是最有效的解决方法, java指令的执行不再需要先转换到宿主cpu的本地指令集,同时,它也不占用ram等软件资源,可以给应用程序提供更多的资源。

  本文介绍javacard cpu。系统采用verilog描述,设计成一个配置灵活、修改方便、资源占用少、兼容性好、可以在普通fpga中实现的软核。

3 javacard cpu的设计

3.1 java cpu的硬件实现技术

  在cpu的设计中,当从内存中取出下一条指令时,执行这条指令有两种方法,即硬件逻辑方法和微码序列方法。硬件逻辑方法使用译码器、锁存器、计数器和其他一些逻辑部件转移和操作数据,完成指令功能。微码序列方法是在内部实现一个非常简洁、快速的微码处理器。此微码处理器的每条指令对应很简单的硬件动作(一般都是单周期指令),将要执行的cup指令作为索引,索引到微码rom中的某个地址,通过执行此地址处的一组微码完成指令功能。

  硬件逻辑方法的优点是能设计出更快的cpu,缺点是难以实现复杂的指令集,同时会导致芯片面积增大。微码序列方法的优点是可以减小芯片的面积,实现复杂指令集,缺点是速度有时较慢。两种方法的速度快慢并非绝对,微码指令是简单指令,一般每个时钟就能执行一条指令。硬件逻辑方法在执行cpu指令时,通常也是划分为几个阶段执行,同样需要几个时钟。实际设计中采用哪种方法要权衡利弊,在速度不是关键时,微码序列方法是个很好的选择。

3.2 javacard cpu结构

  javacard cpu采用微码实现,核心部分是微码处理器,用微码指令序列实现javacard指令。微码处理器主要组成为:主控逻辑core,运算单元alu,内部堆栈单元stack,微码rom,微码指令指针调整模块mcpc,外存读写接口memrw,通过wishbone总线连接外部ram、rom、i/o。各模块之间连接关系、数据通路、控制通路以及应答信号连接见图1。

3.3 微码处理器各模块接口及功能

  (1)运算单元alu

  module alu(x,y,op,z,flag,calc,rst,a ck,clk);
  x、y为输入操作数,op为操作码,z为输出结果,flag为输出运算结果标志,calc为运算使能控制信号,ack为运算结束应答。本模块完成op定义的运算,并给出标志位和应答。

  (2)内部堆栈stack

  module stack(clk,rst,pop,push,data_i,data_o,sp,ack);
  pop、push为堆栈的弹出及压入操作信号,data_i、data_o为数据输入输出,sp为堆栈指针,ack为堆栈操作结束应答。本模块根据pop、push信

相关IC型号

热门点击

 

推荐技术资料

声道前级设计特点
    与通常的Hi-Fi前级不同,EP9307-CRZ这台分... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!