當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]JavaCard指令處理器的FPGA設計

1 JavaCard簡介

  智能卡是指集成了CPU、ROM、RAM、COS(芯片操作系統(tǒng))和EEPROM,能儲存信息和圖像,具備讀/寫能力,信息能被加密保護的便攜卡。智能卡的最基本標準是ISO/IEC7816。智能卡在銀行、電信等行業(yè)得到廣泛應用,但在發(fā)展過程中也遇到很多問題,主要有:各廠商指令集不統(tǒng)一;編程接口APIs太復雜;開發(fā)環(huán)境不通用,新卡開發(fā)都要熟悉開發(fā)環(huán)境;系統(tǒng)不兼容,??▽S?。由于開發(fā)門檻過高,影響了智能卡的發(fā)展。市場對智能卡的發(fā)展提出了新的要求,Sun公司提出了Java Card開放標準。JavaCard技術將智能卡與Java技術相結合,克服了智能卡開發(fā)技術太專業(yè)、開發(fā)周期長等阻礙智能卡普及的缺點,允許智能卡運行Java編寫的應用程序。JavaCard技術繼承了Java語言的優(yōu)點,制定了一個安全、便捷且多功能的智能卡平臺。

  JavaCard基本的硬件配置(來自Sun文檔)為:512B RAM、24KB ROM、8KB EEPROM、8位處理器。典型的JavaCard設備有8位或16位的CPU,3.7MHz時鐘頻率,1KB的RAM和大于16KB的非易失存儲(EEPROM或Flash)。高性能的智能卡帶有獨立的處理器、加密芯片及密碼信息。

  JavaCard系統(tǒng)的實現有基于軟件虛擬機和基于硬件兩種方法?;谲浖摂M機方法是在非Java處理器上用軟件方法模擬實現JavaCard平臺,在此平臺上實現JavaCard應用?;谟布椒ㄊ怯布壿媽崿FJavaCard處理器,在此硬件基礎上實現JavaCard平臺,再在此平臺上實現JavaCard應用。

  2 Java處理器的實現方式比較

  Java處理器有以下幾種實現方式:

 (1)通用CPU+OS+Java軟件解釋器,軟件解釋執(zhí)行Java指令。

  (2)通用CPU+OS+Java JIT(Just-In-Time)編譯器,按塊編譯執(zhí)行Java指令。

  (3)Java加強CPU+OS+特殊的Java編譯器,充分使用Java加強硬件的優(yōu)勢。

  (4)Java 硬件CPU,本地支持Java指令,執(zhí)行效率最高。

  目前的Java系統(tǒng)是基于軟件虛擬機實現的,軟件解析執(zhí)行Java指令,如(1)、(2)。用軟件實現JavaCard虛擬機,需要軟件JavaCard指令解釋器,將Java指令轉換到本地CPU的指令集。這樣,不但速度慢,而且虛擬機本身占用內存資源,不適合在智能卡這種資源有限的硬件中應用。方式(3)要求CPU硬件實現部分Java指令,它需要特殊的編譯器來充分發(fā)揮Java加強CPU的功能。方式(4)是最有效的解決方法,Java指令的執(zhí)行不再需要先轉換到宿主CPU的本地指令集,同時,它也不占用RAM等軟件資源,可以給應用程序提供更多的資源。

  本文介紹JavaCard CPU。系統(tǒng)采用Verilog描述,設計成一個配置靈活、修改方便、資源占用少、兼容性好、可以在普通FPGA中實現的軟核。

  3 JavaCard CPU的設計

  3.1 Java CPU的硬件實現技術

  在CPU的設計中,當從內存中取出下一條指令時,執(zhí)行這條指令有兩種方法,即硬件邏輯方法和微碼序列方法。硬件邏輯方法使用譯碼器、鎖存器、計數器和其他一些邏輯部件轉移和操作數據,完成指令功能。微碼序列方法是在內部實現一個非常簡潔、快速的微碼處理器。此微碼處理器的每條指令對應很簡單的硬件動作(一般都是單周期指令),將要執(zhí)行的CUP指令作為索引,索引到微碼ROM中的某個地址,通過執(zhí)行此地址處的一組微碼完成指令功能。

  硬件邏輯方法的優(yōu)點是能設計出更快的CPU,缺點是難以實現復雜的指令集,同時會導致芯片面積增大。微碼序列方法的優(yōu)點是可以減小芯片的面積,實現復雜指令集,缺點是速度有時較慢。兩種方法的速度快慢并非絕對,微碼指令是簡單指令,一般每個時鐘就能執(zhí)行一條指令。硬件邏輯方法在執(zhí)行CPU指令時,通常也是劃分為幾個階段執(zhí)行,同樣需要幾個時鐘。實際設計中采用哪種方法要權衡利弊,在速度不是關鍵時,微碼序列方法是個很好的選擇。

  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)微碼指令的設計。所有的微碼指令為單指令,即不帶任何操作數。微碼指令本身包含所需操作的信息,如在哪兩個寄存器之間轉移數據等。對于跳轉操作等必須帶后續(xù)操作數的指令采取變通方法,先將所需操作數存入內部寄存器,再執(zhí)行跳轉等指令。詳細示例為:

  微碼定義為16位。位15指示本微碼是指令還是數據。位15==1表示是數據,此時微碼的低8位是一個數據,處理此微碼時,要將此8位數據提取出來,存入內部寄存器;位15==0表示是指令。當需要執(zhí)行一個跳轉Jmp 0x0809時,微碼序列方法使用三條微碼表示:

  0x8008 //位15==1,是數據型微碼

  0x8009

  JMP //指令型微碼助記符

  執(zhí)行時,遇到前面兩個數據型微碼,會將08和09存入內部16位數據寄存器的高低8位;執(zhí)行JMP指令時,隱含使用此內部數據寄存器。

  (3)所有的微碼指令是單周期指令。由于采用了(2)中所述的單指令微碼,在執(zhí)行當前微碼指令的同時讀取下一條微碼指令,可以做到每個時鐘執(zhí)行一條微碼。

  (4)簡潔的主控邏輯。所有JavaCard指令均由微碼執(zhí)行,不采用硬件陷入、軟件模擬方式,簡化了主控邏輯設計。主控模塊狀態(tài)機僅有EXEC_MC和HLT兩個狀態(tài)。CPU復位后,一直處于執(zhí)行微碼EXEC_MC狀態(tài),直到執(zhí)行HLT微碼指令。

  (5)適應性好。采用了應答機制,可以匹配不同速度的部件;對外采用wishbone總線,簡化了各部件接口的設計,方便了外部設備的擴充。

  (6)I/O采用內存映射方式統(tǒng)一編址,避免了非Java指令的引入,保證了兼容性。[!--empirenews.page--]

  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,宕機狀態(tài)處理

  …

  endcase//end for state[1:0]

  end//end for reset

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

  系統(tǒng)采用微碼實現,用微碼序列控制讀取Java指令、存儲數據,實現Java指令。JavaCard指令被解釋執(zhí)行的過程如下:

  讀取JavaCard PC處的JavaCard指令至指令寄存器Instr,發(fā)出remap信號給微碼指針調整模塊MCPC,微碼指針寄存器MCP得到新的JavaCard指令對應的微碼序列首地址,MCP的變化使微碼指令寄存器MCR變?yōu)樵撐⒋a序列的首個微碼指令,再由微碼處理器執(zhí)行此MCR中的微碼。

 

4 JavaCard CPU測試平臺的FPGA實現

 

  4.1 外圍接口和模塊

  測試平臺是以一塊xc2s200芯片為核心的簡單開發(fā)板,全部設計都在此芯片內實現,包括CPU邏輯、存儲單元等,板上的8位led指示燈用作I/O輸出端口。

  4.2 測試平臺框架

  測試平臺框架結構如圖2所示。

  

 

  4.3 結果說明

  設計是用Verilog語言實現的,內部使用16位數據總線,對外是8位的wishbone總線,微碼ROM為4KB,外接512B的ROM和512B的RAM。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉