JavaCard指令处理器的FPGA设计

发布者:转眼人老最新更新时间:2012-01-19 来源: elecfans关键字:JavaCard  FPGA 手机看文章 扫描二维码
随时随地手机看文章
 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。

  

[page]

 

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

  (1)运算单元ALU

  module alu(x,y,op,z,flag,calc,rst,ack,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信号对堆栈进行操作。

  (3)微码ROM

  module microcoderom(mcp,mcr);

  MCP为微码ROM的指针,MCR为微码寄存器。根据微码指针MCP,在MCR上输出MCP处的微码数据。

  (4)微码指令指针调整模块MCPC

  module mcpc(clk,rst,load,new_mcp,hold,remap,instr,mcp);

  微码指针有保持、重加载、重映射三种操作。重加载是用new_mcp的值作为新的MCP值。重映射是将CPU指令Instr对应的微码序列首地址作为新的MCP值。

  load信号有效,用new_mcp的值给MCP赋值;

  hold信号有效,保持MCP值不变;

  remap信号有效,则将CPU指令Instr做为索引,得到Instr指令对应的微码序列首地址,将首地址赋给MCP。

  以上三个信号均无效时,每时钟MCP自动加1。

  (5)外存读写接口MEMRW

  module 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);

  对外接口采用开源的wishbone总线标准,wb*信号是wishbone相关信号。根据rd、wr读写信号,操作wishbone信号,等待wishbone的应答,然后将数据和应答信号反馈给主控模块。

  3.4 本JavaCard CPU设计的特点

  (1)主控模块与其他从模块之间用使能信号和应答信号保持同步,从模块在完成操作后只需给出应答信号,即可匹配不同速度的从模块。

  (2)微码指令的设计。所有的微码指令为单指令,即不带任何操作数。微码指令本身包含所需操作的信息,如在哪两个寄存器之间转移数据等。对于跳转操作等必须带后续操作数的指令采取变通方法,先将所需操作数存入内部寄存器,再执行跳转等指令。详细示例为:

  微码定义为16位。位15指示本微码是指令还是数据。位15==1表示是数据,此时微码的低8位是一个数据,处理此微码时,要将此8位数据提取出来,存入内部寄存器;位15==0表示是指令。当需要执行一个跳转Jmp 0x0809时,微码序列方法使用三条微码表示:

  0x8008 //位15==1,是数据型微码

  0x8009

  JMP //指令型微码助记符

  执行时,遇到前面两个数据型微码,会将08和09存入内部16位数据寄存器的高低8位;执行JMP指令时,隐含使用此内部数据寄存器。

  (3)所有的微码指令是单周期指令。由于采用了(2)中所述的单指令微码,在执行当前微码指令的同时读取下一条微码指令,可以做到每个时钟执行一条微码。

  (4)简洁的主控逻辑。所有JavaCard指令均由微码执行,不采用硬件陷入、软件模拟方式,简化了主控逻辑设计。主控模块状态机仅有EXEC_MC和HLT两个状态。CPU复位后,一直处于执行微码EXEC_MC状态,直到执行HLT微码指令。

  (5)适应性好。采用了应答机制,可以匹配不同速度的部件;对外采用wishbone总线,简化了各部件接口的设计,方便了外部设备的扩充。

  (6)I/O采用内存映射方式统一编址,避免了非Java指令的引入,保证了兼容性。

  3.5 Verilog表述的微码处理器核心逻辑

  下面是主控逻辑框架代码的一部分。本段代码体现了如何处理数据型微码和指令型微码,可以在YOUR_MICRO_CODE_INSTR处添加需要的微码指令以及对应的操作。

  always@(posedge clk or posedge reset)

  begin

  if(reset)

  begin

  new_mcp[15:0]<=init_ADDR;//初始化微码

  //序列首地址

  {pop,push,alu_calc,memrd,memwr,load_mcp,hold_mcp,remap_mcp}<=8′b00000000;

  H_READED<=1′b0;//表示是否读过了一次

  //数据型微码

  state[1:0]<=EXEC_MC;

  end

  else

  begin

  case(state[1:0])

  EXEC_MC:

  begin//首先根据mcr的位15判断是数据型

  //微码还是指令型微码

  if(mcr[15])//mcr中存放微码,位15==1表示

  //此微码是数据型,先保存高8位,再低8位

  begin

  if(H_READED==1′b0)//首个数据型

  //微码,数据保存到高8位

  begin

  {mcdata[15:8]}<=mcr[7:0];

  //mcdata是内部数据寄存器

  H_READED<=1′b1;

  end

  else

  begin

  {mcdata[7:0]}<=mcr[7:0];

  H_READED<=1′b0;

  end

  end

  else//表示此微码是指令,根据后面的15位

  //分支操作

  begin

  case(mcr[15:0])

  YOUR_MICRO_CODE_INSTR://

  begin

  ……//定义的微码操作

  end

  ……//其他微码指令处理

  endcase

  end//end for mcr为指令处理

  end

  HLT://state[1:0]=HLT,宕机状态处理

  …

  endcase//end for state[1:0]

  end//end for reset

  end//end for always@(posedge clk or posedge reset)

  系统采用微码实现,用微码序列控制读取Java指令、存储数据,实现Java指令。JavaCard指令被解释执行的过程如下:

  读取JavaCard PC处的JavaCard指令至指令寄存器Instr,发出remap信号给微码指针调整模块MCPC,微码指针寄存器MCP得到新的JavaCard指令对应的微码序列首地址,MCP的变化使微码指令寄存器MCR变为该微码序列的首个微码指令,再由微码处理器执行此MCR中的微码。

[page]

 

    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  FPGA 引用地址:JavaCard指令处理器的FPGA设计

上一篇:视频信号发生器设计方案
下一篇:基于FPGA的SOC外部组件控制器IP的设计

推荐阅读最新更新时间:2024-05-02 21:52

汽车电子中的DSP和FPGA运用
 1  引言   20世纪末,全球范围内兴起的信息革命浪潮,为汽车工业的突破性发展提供了千载难逢的机遇,信息技术的广泛应用是解决汽车带来的诸如交通拥挤、交通安全、环境污染、能源枯竭等问题的最佳途径。同时,随着汽车电子技术的发展,电子组件所占整车成本的比例也逐步上升。据统计资料表明,目前,在欧美国家生产的汽车上,电子组件已占到汽车总成本的20%~30%,并且,车用电子组件还以每年8.8%的速度快速增长,特别是数字信号处理器芯片(DSP)的用量更是将以每年25%的速度增长。估计到2005年,汽车电子组件的市场规模,将达到170亿美元。由此可见,电子化、集成化、数字化、信息化、网络化、智能化、小型化和个性化已经成为并且还将继续是汽车
[嵌入式]
通过FPGA实现一个以太网控制器MAC的实例
PWM有着非常广泛的应用,比如直流电机的无极调速,开关电源、逆变器等等,个人认为,要充分理解或掌握模拟电路、且有所突破,很有必要吃透这三个知识点: PWM 电感 纹波 PWM是一种技术手段,PWM波是在这种技术手段控制下的脉冲波,如果你不理解是把握不住PWM波的! 如图1所示,这种比喻很形象也很恰当,希望对学习的朋友有所帮助与启发。 图1:形象的比喻 PWM全称Pulse Width ModulaTIon:脉冲宽度调制(简称脉宽调制,通俗的讲就是调节脉冲的宽度),是电子电力应用中非常重要的一种控制技术,在理解TA之前我们先来了解几个概念 。 理解PWM可以参考这些文章怎么把PWM信号转为模拟量浅析PWM控制电机
[嵌入式]
通过<font color='red'>FPGA</font>实现一个以太网控制器MAC的实例
英特尔简化 FPGA 加速应用
今天,英特尔推出一款完备的硬件和软件平台解决方案,旨在加快实现基于现场可编程门阵列 (FPGA) 的定制化的网络、存储和计算工作负载加速。 基因组学、金融、工业 4.0 以及其他领域的数据密集型复杂应用正在挑战数据中心的能力极限。通过英特尔® FPGA 加速可充分利用并行化硬件卸载功能,最大限度地提高数据中心的性能和降低功耗。 这款新的解决方案可大幅降低实施的复杂性,帮助架构师和开发人员以更节能的方式快速开发和部署各种应用和工作负载加速。 该解决方案包括三大要素: 英特尔认证的FPGA 加速平台,可与英特尔® 至强® CPU 无缝协作 面向包含 FPGA 的英特尔至强CPU 的加速堆栈,提供行业标准框架、
[嵌入式]
英特尔简化 <font color='red'>FPGA</font> 加速应用
使用LabVIEW 与 NI FlexRIO实现基于FPGA的单原子反馈控制
图1. 用于研究光与物质基本相互作用的激光系统的一部分。系统包括多种透镜,镜面,以及光学模块。 "使用NI FlexRIO,我们定制了自己的高性能硬件设备。基于LabVIEW FPGA,我们能够快速开发FPGA代码,因为它具有很高程度的概括性,同时适当地集成了VHDL IP" – Christian Sames, Max-Planck Institute of Quantum Optics The Challenge: 开发一种定制的时域数字转换器来研究光与物质相互作用的基本量子性质。 The Solution: 使用NI公司的 FlexRIO 与 LabVIEW FPGA模块来创建强大的,多功能的定制仪器,从而使我
[测试测量]
使用LabVIEW 与 NI FlexRIO实现基于<font color='red'>FPGA</font>的单原子反馈控制
基于MPC8260处理器和FPGA的DMA接口设计
   引言   在基于软件无线电的某无线通信信号侦收平台的设计中,天线接收到的信号经过变频器处理和A/D变换之后,经过高速通道把采集的信号送入主控板进行数据分发处理。系统的结构框图如图1所示。 图1 主控板的系统结构框图   主控板的硬件核心是嵌入式微处理器MPC8260,负责系统软件的加载、数据的分发以及与外界命令控制的交互。软件上,采用高性能的VxWorks嵌入式实时操作系统。从天线接收到的射频信号经过变频和A/D变换之后作为数据源连接到FPGA,FPGA对接收到的数据进行中频变换和信道估计等预处理后,在CPU的控制下将数据传输到本地内存,最后CPU对数据打包后进行快速分发。因此,将40~50 Mbps的高速数据流从
[嵌入式]
基于MPC8260处理器和<font color='red'>FPGA</font>的DMA接口设计
一种多光谱可见光遥感图像压缩系统设计
   摘要: 为了实现多光谱可见光遥感图像高质量压缩的要求,提出以JPEG2000压缩标准为理论,将FPGA与专用压缩芯片ADV212相结 合的空间遥感图像压缩方法。该系统设计采用ADV212,通过小波变换及熵编码实现对大数据量的空间遥感图像进行高质量实时压缩,并且采用FPGA完成图 像数据输入、压缩码流输出、图像预处理以及对ADV212的工作模式进行控制。实验结果表明,该系统设计功耗低、成本低、调试简单合理,具有较好的压缩效 果。可满足多光谱可见光遥感图像对高质量压缩比的要求。   近年来,随着航天遥感技术的发展空间遥感数据量日益庞大,图像数据量的巨大带来传输的瓶颈。同时,空间相机图像细节丰富,卫星飞行高度通常几百千米以上,
[安防电子]
一种多光谱可见光遥感图像压缩系统设计
片上网络技术的发展及其给高端FPGA带来的优势
概述 在摩尔定律的推动下,集成电路工艺取得了高速发展,单位面积上的晶体管数量不断增加。片上系统(System-on-Chip,SoC)具有集成度高、功耗低、成本低等优势,已经成为大规模集成电路系统设计的主流方向,解决了通信、图像、计算、消费电子等领域的众多挑战性的难题。 随着片上系统SoC的应用需求越来越丰富,SoC需要集成越来越多的不同应用的IP(Intellectual Property)。另外,片上多核系统MPSoC(MultiProcessor-System-on-Chip)也已经成为必然的发展趋势。 随着SoC的高度集成以及MPSoC的高速发展,对片上通信提出了更高的要求。片上网络技术(Network-on-Ch
[嵌入式]
片上网络技术的发展及其给高端<font color='red'>FPGA</font>带来的优势
Actel新推高性能可重新编程FPGA
Actel日前推出高性能可重新编程FPGA——AFS090-1500。该产品采用先进的130nm 7层金属基于闪存的CMOS工艺,工作电压为3.3V,拥有350MHz系统性能,66MHz 64位PCI。 该系列产品采用FlashLock对FPGA内容进行安全保密,闪存容量从256KB到1MB,数据宽度有8位/16位或32位,读模式的存取时间为10ns。该产品集成了8/10/12位分辨率的ADC,取样频率达600KSPS,内部有2.56V基准电压源,、30个可升级输入通路,高压直接连接到输入容差±12V,具有电流和温度监视器,并且拥有10个MOSFET栅极驱动器输出。其可编程驱动力度为1μA、3μA、10μA、30μA和25mA。
[新品]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved