《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > JavaCard CPU的設計與FPGA實現

JavaCard CPU的設計與FPGA實現

2008-03-31
作者:張德學,郭 立,傅忠謙,何

  摘 要: 給出了一種基于微碼的JavaCard指令處理器的FPGA設計和實現,以此JavaCard CPU為核心搭建的測試平臺" title="測試平臺">測試平臺已集成在一塊FPGA上實現。
  關鍵詞: JavaCard 處理器 智能卡


1 JavaCard簡介
  智能卡是指集成了CPU、ROM、RAM、COS(芯片操作系統)和EEPROM,能儲存信息和圖像,具備讀/寫能力,信息能被加密保護的便攜卡。智能卡的最基本標準是ISO/IEC7816。智能卡在銀行、電信等行業得到廣泛應用,但在發展過程中也遇到很多問題,主要有:各廠商指令集" title="指令集">指令集不統一;編程接口APIs太復雜;開發環境不通用,新卡開發都要熟悉開發環境;系統不兼容,??▽S?。由于開發門檻過高,影響了智能卡的發展。市場對智能卡的發展提出了新的要求,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應用?;谟布椒ㄊ?a class="cblue" href="http://www.jysgc.com/search/?q=硬件邏輯" title="硬件邏輯">硬件邏輯實現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硬件實現" title="硬件實現">硬件實現部分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,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中的微碼。
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位整型" title="整型">整型數。對32位整型數的支持是可選的,本次沒有實現對32位整型數操作的指令,遇到未定義指令的操作為宕機。共定義了109條微碼指令。用了3273條微碼指令序列完成系統初始化操作和解釋JavaCard指令,每條JavaCard指令約用17條微碼指令執行(主要是有些面向對象的復雜指令需要更多的微碼解釋)。
  整個系統占用資源很少:4個Block RAM,2 052個Slice,可以在普通FPGA上實現。
  測試代碼下載到板上的ROM中,以24MHz時鐘運行通過,驗證了JavaCard指令處理的正確性,性能完全滿足JavaCard虛擬機標準要求。
  實現JavaCard硬件CPU是JavaCard的發展方向。因用途原因,它不需要很高的性能,而更需要成本低、資源占用少、功耗低等特性。JavaCard指令集是面向對象的復雜指令集,很難直接用硬件實現。采用微碼方式實現是很好的選擇,每一條微碼對應一個很簡單的硬件動作,硬件實現容易,且使用的資源少。用微碼序列完成JavaCard指令,使硬件設計保持簡潔、靈活、修改方便,有些改動只需重寫微碼序列而不需要更改硬件設計;添加新功能支持的也只需要修改微碼,如硬件實現加密方法調用接口。JavaCard硬件CPU的實現必將促進JavaCard的應用。
參考文獻
1 Martin Schoeberl.JOP:A Java Optimized Processor.http://www.jopdesign.com
2 Martin Schoeberl.Java Technology in an FPGA.http://www.jopdesign.com

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美亚洲免费电影| 在线视频亚洲一区| 日韩亚洲欧美在线观看| 在线精品视频一区二区| 国产一区二区三区直播精品电影| 欧美先锋影音| 欧美色图一区二区三区| 欧美片第一页| 欧美日韩成人网| 欧美日本在线视频| 欧美乱人伦中文字幕在线| 欧美黄网免费在线观看| 欧美高清视频www夜色资源网| 欧美3dxxxxhd| 欧美国产一区在线| 欧美久久一级| 欧美日韩一二三区| 欧美日韩一区自拍| 欧美午夜剧场| 国产精品免费小视频| 国产精品夜夜夜| 国产精品一区二区男女羞羞无遮挡| 国产精品夜色7777狼人| 国产日韩视频| 一区二区亚洲精品| 亚洲第一视频| 亚洲欧洲另类国产综合| 99精品国产高清一区二区| 在线视频欧美一区| 亚洲免费视频网站| 久久av红桃一区二区小说| 久久精品视频免费观看| 亚洲国产一区二区三区高清| 日韩视频一区二区三区在线播放免费观看| 亚洲精品美女在线| 在线天堂一区av电影| 亚洲欧美国产另类| 久久精品国产久精国产一老狼| 久久免费国产精品| 欧美国产综合视频| 国产精品久久久久毛片软件 | 美女国内精品自产拍在线播放| 美日韩精品视频| 欧美日韩亚洲国产一区| 国产精品婷婷| 在线观看一区欧美| 一区二区91| 久久精品99国产精品酒店日本| 亚洲美女中出| 欧美一区二区三区电影在线观看| 久久综合色影院| 欧美日韩一区二区在线观看视频 | 亚洲一区二区在线免费观看视频| 欧美在线网址| 日韩系列欧美系列| 午夜视频精品| 男人插女人欧美| 国产精品久久久久久影视| 一区二区三区在线视频播放| 99国产精品99久久久久久粉嫩 | 久久国产精品99国产| 一本久久综合| 久久国产欧美| 欧美精品亚洲精品| 国产乱码精品一区二区三区av| 在线播放视频一区| 亚洲一区二区三区在线看| 亚洲国产一区二区精品专区| 午夜亚洲激情| 欧美激情一区二区三区蜜桃视频| 国产精品欧美风情| 最新热久久免费视频| 香蕉成人啪国产精品视频综合网| 日韩写真在线| 久久精品国亚洲| 欧美色网在线| 亚洲国产mv| 欧美亚洲在线| 亚洲一区二区在线视频| 媚黑女一区二区| 国产人久久人人人人爽| 日韩亚洲欧美一区二区三区| 亚洲国产一区二区精品专区| 久久爱www.| 欧美三级午夜理伦三级中视频| 在线观看国产日韩| 欧美亚洲日本国产| 亚洲欧美另类在线| 欧美日韩国产精品| 1000部国产精品成人观看| 欧美亚洲综合久久| 午夜精品久久久久| 亚洲尤物视频在线| 亚洲人成77777在线观看网| 性欧美xxxx视频在线观看| 欧美日韩免费观看一区=区三区| 狠狠入ady亚洲精品| 亚洲免费中文| 亚洲小视频在线| 欧美肥婆在线| 在线观看三级视频欧美| 欧美一级大片在线观看| 午夜精品久久久| 国产精品福利av| 日韩一级黄色大片| 日韩一级视频免费观看在线| 蘑菇福利视频一区播放| 黄色av一区| 久久精品五月婷婷| 久久久精品国产一区二区三区| 国产精品永久免费视频| 亚洲视频 欧洲视频| 亚洲先锋成人| 欧美日韩一区二区三区在线看| 亚洲日本成人网| 日韩亚洲欧美精品| 欧美另类人妖| 日韩午夜一区| 亚洲在线免费视频| 欧美性一区二区| 一区二区三区高清视频在线观看 | 欧美日韩国产专区| 亚洲美女视频| 国产精品99久久久久久人 | 国产精品久久久久久模特 | 99国产精品视频免费观看| 欧美风情在线观看| 亚洲精品欧美日韩| 一本色道久久加勒比88综合| 欧美精品免费视频| 亚洲精品一级| 一本色道久久综合亚洲精品高清| 欧美日韩小视频| 一区二区三区四区蜜桃| 亚洲欧美在线一区| 国产女精品视频网站免费| 欧美一区二区成人| 久久人人爽爽爽人久久久| 亚洲成在人线av| 99爱精品视频| 国产精品国码视频| 羞羞视频在线观看欧美| 免费试看一区| 亚洲理伦在线| 性欧美大战久久久久久久久| 国产一区二区成人久久免费影院| 欧美中文字幕视频在线观看| 欧美成人情趣视频| 亚洲最新视频在线播放| 欧美一区二区在线免费观看| 黄色日韩精品| 一本色道久久综合亚洲精品小说 | 欧美国产精品| av成人天堂| 久久久久久国产精品mv| 亚洲国产精品黑人久久久 | 欧美日韩中文字幕日韩欧美| 亚洲无人区一区| 久久久国产一区二区三区| 亚洲国产成人在线视频| 亚洲图片欧洲图片日韩av| 国产日韩欧美在线视频观看| 亚洲三级观看| 国产精品xvideos88| 久久国产精品一区二区| 欧美巨乳波霸| 午夜精品视频| 欧美精品国产精品| 亚洲欧美日韩视频二区| 欧美1区2区| 亚洲免费在线电影| 美日韩免费视频| 亚洲视屏一区| 免费不卡亚洲欧美| 亚洲视频播放| 免费观看日韩av| 国产精品99久久久久久久久久久久| 久久精品日韩欧美| 亚洲日本va午夜在线电影| 久久精品五月| 99精品欧美一区| 久久综合给合| 亚洲网在线观看| 欧美激情第五页| 新片速递亚洲合集欧美合集| 欧美日韩 国产精品| 欧美一区二区视频网站| 欧美日韩国产黄| 亚洲国产成人久久综合| 性做久久久久久久久| 在线观看欧美黄色| 亚洲欧美中文日韩在线| 亚洲第一精品夜夜躁人人爽| 午夜精品久久99蜜桃的功能介绍| 亚洲国产91色在线| 久久久噜噜噜久久久| 在线亚洲自拍| 欧美激情一级片一区二区| 久久精品1区| 国产日韩欧美一区二区|