JavaCard CPU的設(shè)計(jì)與FPGA實(shí)現(xiàn)_第1頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、javacard cpu的設(shè)計(jì)與fpga實(shí)現(xiàn)智能卡是指集成了cpu、rom、ram、cos(芯片操作系統(tǒng))和eeprom,能儲(chǔ)存信息和圖像,具備讀/寫(xiě)能力,信息能被加密庇護(hù)的便攜卡。智能卡的最基本標(biāo)準(zhǔn)是 iso/iec7816。智能卡在銀行、電信等行業(yè)得到廣泛應(yīng)用,但在進(jìn)展過(guò)程中也碰到無(wú)數(shù)問(wèn)題,主要有:各廠商命令集不統(tǒng)一;編程接口apis太復(fù)雜;開(kāi)發(fā)環(huán)境不通用,新卡開(kāi)發(fā)都要認(rèn)識(shí)開(kāi)發(fā)環(huán)境;系統(tǒng)不兼容,??▽S谩R?yàn)殚_(kāi)發(fā)門(mén)檻過(guò)高,影響了智能卡的進(jìn)展。市場(chǎng)對(duì)智能卡的進(jìn)展提出了新的要求,sun公司提出了java card開(kāi)放標(biāo)準(zhǔn)。javacard技術(shù)將智能卡與java技術(shù)相結(jié)合,克服了智能卡開(kāi)發(fā)技術(shù)太

2、專業(yè)、開(kāi)發(fā)周期長(zhǎng)等妨礙智能卡普及的缺點(diǎn),允許智能卡運(yùn)行 java編寫(xiě)的應(yīng)用程序。javacard技術(shù)繼承了java語(yǔ)言的優(yōu)點(diǎn),制定了一個(gè)平安、便捷且多功能的智能卡平臺(tái)。javacard基本的硬件配置(來(lái)自sun文檔)為:512b ram、24kb rom、8kb eeprom、8位處理器。典型的javacard設(shè)備有8位或16位的cpu,3.7mhz時(shí)鐘頻率,1kb的ram和大于16kb的非易失存儲(chǔ)(eeprom或flash)。高性能的智能卡帶有自立的處理器、加密芯片及密碼信息。javacard系統(tǒng)的實(shí)現(xiàn)有基于軟件虛擬機(jī)和基于硬件兩種辦法。基于軟件虛擬機(jī)辦法是在非java處理器上用軟件辦法模擬

3、實(shí)現(xiàn)javacard平臺(tái),在此平臺(tái)上實(shí)現(xiàn)javacard應(yīng)用?;谟布k法是硬件規(guī)律實(shí)現(xiàn)javacard處理器,在此硬件基礎(chǔ)上實(shí)現(xiàn)javacard平臺(tái),再在此平臺(tái)上實(shí)現(xiàn)javacard應(yīng)用。2 java處理器的實(shí)現(xiàn)方式比較java處理器有以下幾種實(shí)現(xiàn)方式:(1)通用cpu+os+java軟件說(shuō)明器,軟件說(shuō)明執(zhí)行java命令。(2)通用cpu+os+java jit(just-in-time)編譯器,按塊編譯執(zhí)行java命令。(3)java加強(qiáng)cpu+os+特別的java編譯器,充分用法java加強(qiáng)硬件的優(yōu)勢(shì)。(4)java 硬件cpu,本地支持java命令,執(zhí)行效率最高。目前的java系統(tǒng)是基

4、于軟件虛擬機(jī)實(shí)現(xiàn)的,軟件解析執(zhí)行java命令,如(1)、(2)。用軟件實(shí)現(xiàn)javacard虛擬機(jī),需要軟件 javacard命令說(shuō)明器,將java命令轉(zhuǎn)換到本地cpu的命令集。這樣,不但速度慢,而且虛擬機(jī)本身占用內(nèi)存資源,不適合在智能卡這種資源有限的硬件中應(yīng)用。方式(3)要求cpu硬件實(shí)現(xiàn)部分java命令,它需要特別的編譯器來(lái)充分發(fā)揮java加強(qiáng)cpu的功能。方式(4)是最有效的解決辦法, java命令的執(zhí)行不再需要先轉(zhuǎn)換到宿主cpu的本地命令集,同時(shí),它也不占用ram等軟件資源,可以給應(yīng)用程序提供更多的資源。本文介紹javacard cpu。系統(tǒng)采納描述,設(shè)計(jì)成一個(gè)配置靈便、修改便利、資源占

5、用少、兼容性好、可以在一般中實(shí)現(xiàn)的軟核。3 javacard cpu的設(shè)計(jì)3.1 java cpu的硬件實(shí)現(xiàn)技術(shù)在cpu的設(shè)計(jì)中,當(dāng)從內(nèi)存中取出下一條命令時(shí),執(zhí)行這條命令有兩種辦法,即硬件規(guī)律辦法和微碼序列辦法。硬件規(guī)律辦法用法譯碼器、鎖存器、計(jì)數(shù)器和其他一些規(guī)律部件轉(zhuǎn)移和操作數(shù)據(jù),完成命令功能。微碼序列辦法是在內(nèi)部實(shí)現(xiàn)一個(gè)十分簡(jiǎn)潔、迅速的微碼處理器。此微碼處理器的每條命令對(duì)應(yīng)很容易的硬件動(dòng)作(普通都是單周期命令),將要執(zhí)行的cup命令作為索引,索引到微碼rom中的某個(gè)地址,通過(guò)執(zhí)行此地址處的一組微碼完成命令功能。硬件規(guī)律辦法的優(yōu)點(diǎn)是能設(shè)計(jì)出更快的cpu,缺點(diǎn)是難以實(shí)現(xiàn)復(fù)雜的命令集,同時(shí)會(huì)導(dǎo)致

6、芯片面積增大。微碼序列辦法的優(yōu)點(diǎn)是可以減小芯片的面積,實(shí)現(xiàn)復(fù)雜命令集,缺點(diǎn)是速度有時(shí)較慢。兩種辦法的速度快慢并非肯定,微碼命令是容易命令,普通每個(gè)時(shí)鐘就能執(zhí)行一條命令。硬件規(guī)律辦法在執(zhí)行cpu命令時(shí),通常也是劃分為幾個(gè)階段執(zhí)行,同樣需要幾個(gè)時(shí)鐘。實(shí)際設(shè)計(jì)中采納哪種辦法要權(quán)衡利弊,在速度不是關(guān)鍵時(shí),微碼序列辦法是個(gè)很好的挑選。3.2 javacard cpu結(jié)構(gòu)javacard cpu采納微碼實(shí)現(xiàn),核心部分是微碼處理器,用微碼命令序列實(shí)現(xiàn)javacard命令。微碼處理器主要組成為:主控規(guī)律core,運(yùn)算單元alu,內(nèi)部堆棧單元stack,微碼rom,微碼命令指針調(diào)節(jié)模塊mcpc,外存讀寫(xiě)接口me

7、mrw,通過(guò)wishbone銜接外部ram、rom、i/o。各模塊之間銜接關(guān)系、數(shù)據(jù)通路、控制通路以及應(yīng)答信號(hào)銜接見(jiàn)圖1。3.3 微碼處理器各模塊接口及功能(1)運(yùn)算單元alumodule alu(x,y,op,z,flag,calc,rst,a ck,clk);x、y為輸入操作數(shù),op為操作碼,z為輸出結(jié)果,flag為輸出運(yùn)算結(jié)果標(biāo)記,calc為運(yùn)算使能控制信號(hào),ack為運(yùn)算結(jié)束應(yīng)答。本模塊完成op定義的運(yùn)算,并給出標(biāo)記位和應(yīng)答。(2)內(nèi)部堆棧stackmodule stack(clk,rst,pop,push,data_i,data_o,sp,ack);pop、push為堆棧的彈出及壓入操

8、作信號(hào),data_i、data_o為數(shù)據(jù)輸入輸出,sp為堆棧指針,ack為堆棧操作結(jié)束應(yīng)答。本模塊按照pop、push信號(hào)對(duì)堆棧舉行操作。(3)微碼rommodule microcoderom(mcp,mcr);mcp為微碼rom的指針,mcr為微碼寄存器。按照微碼指針mcp,在mcr上輸出mcp處的微碼數(shù)據(jù)。(4)微碼命令指針調(diào)節(jié)模塊mcpcmodule mcpc(clk,rst,load,new_mcp,hold,remap,instr,mcp);微碼指針有保持、重加載、重映射三種操作。重加載是用new_mcp的值作為新的mcp值。重映射是將cpu命令instr對(duì)應(yīng)的微碼序列首地址作為新的

9、mcp值。load信號(hào)有效,用new_mcp的值給mcp賦值;hold信號(hào)有效,保持mcp值不變;remap信號(hào)有效,則將cpu命令instr做為索引,得到instr命令對(duì)應(yīng)的微碼序列首地址,將首地址賦給mcp。以上三個(gè)信號(hào)均無(wú)效時(shí),每時(shí)鐘mcp自動(dòng)加1。(5)外存讀寫(xiě)接口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);對(duì)外接口采納開(kāi)源的wishb

10、one總線標(biāo)準(zhǔn),wb*信號(hào)是wishbone相關(guān)信號(hào)。按照rd、wr讀寫(xiě)信號(hào),操作wishbone信號(hào),等待wishbone的應(yīng)答,然后將數(shù)據(jù)和應(yīng)答信號(hào)反饋給主控模塊。3.4 本javacard cpu設(shè)計(jì)的特點(diǎn)(1)主控模塊與其他從模塊之間用使能信號(hào)和應(yīng)答信號(hào)保持同步,從模塊在完成操作后只需給出應(yīng)答信號(hào),即可匹配不同速度的從模塊。(2)微碼命令的設(shè)計(jì)。全部的微碼命令為單命令,即不帶任何操作數(shù)。微碼命令本身包含所需操作的信息,如在哪兩個(gè)寄存器之間轉(zhuǎn)移數(shù)據(jù)等。對(duì)于跳轉(zhuǎn)操作等必需帶后續(xù)操作數(shù)的命令實(shí)行變通辦法,先將所需操作數(shù)存入內(nèi)部寄存器,再執(zhí)行跳轉(zhuǎn)等命令。具體示例為:微碼定義為16位。位15指示

11、本微碼是命令還是數(shù)據(jù)。位15=1表示是數(shù)據(jù),此時(shí)微碼的低8位是一個(gè)數(shù)據(jù),處理此微碼時(shí),要將此8位數(shù)據(jù)提取出來(lái),存入內(nèi)部寄存器;位15=0表示是命令。當(dāng)需要執(zhí)行一個(gè)跳轉(zhuǎn)jmp 0x0809時(shí),微碼序列辦法用法三條微碼表示:0x8008 /位15=1,是數(shù)據(jù)型微碼0x8009jmp /命令型微碼助記符執(zhí)行時(shí),碰到前面兩個(gè)數(shù)據(jù)型微碼,會(huì)將08和09存入內(nèi)部16位數(shù)據(jù)寄存器的凹凸8位;執(zhí)行jmp命令時(shí),隱含用法此內(nèi)部數(shù)據(jù)寄存器。(3)全部的微碼命令是單周期命令。因?yàn)椴杉{了(2)中所述的單命令微碼,在執(zhí)行當(dāng)前微碼命令的同時(shí)讀取下一條微碼命令,可以做到每個(gè)時(shí)鐘執(zhí)行一條微碼。(4)簡(jiǎn)潔的主控規(guī)律。全部jav

12、acard命令均由微碼執(zhí)行,不采納硬件陷入、軟件模擬方式,簡(jiǎn)化了主控規(guī)律設(shè)計(jì)。主控模塊狀態(tài)機(jī)僅有exec_mc和hlt兩個(gè)狀態(tài)。cpu復(fù)位后,向來(lái)處于執(zhí)行微碼exec_mc狀態(tài),直到執(zhí)行hlt微碼命令。(5)適應(yīng)性好。采納了應(yīng)答機(jī)制,可以匹配不同速度的部件;對(duì)外采納wishbone總線,簡(jiǎn)化了各部件接口的設(shè)計(jì),便利了外部設(shè)備的擴(kuò)充。(6)i/o采納內(nèi)存映射方式統(tǒng)一編址,避開(kāi)了非java命令的引入,保證了兼容性。3.5 verilog表述的微碼處理器核心規(guī)律下面是主控規(guī)律框架代碼的一部分。本段代碼體現(xiàn)了如何處理數(shù)據(jù)型微碼和命令型微碼,可以在your_micro_code_instr處添加需要的微

13、碼命令以及對(duì)應(yīng)的操作。always(posedge clk or posedge reset)beginif(reset)beginnew_mcp15:0/序列首地址pop,push,alu_calc,memrd,memwr,load_mcp,hold_mcp,remap_mcp系統(tǒng)采納微碼實(shí)現(xiàn),用微碼序列控制讀取java命令、存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn)java命令。javacard命令被說(shuō)明執(zhí)行的過(guò)程如下:讀取javacard pc處的javacard命令至命令寄存器instr,發(fā)出remap信號(hào)給微碼指針調(diào)節(jié)模塊mcpc,微碼指針寄存器mcp得到新的javacard命令對(duì)應(yīng)的微碼序列首地址,mcp的變

14、幻使微碼命令寄存器mcr變?yōu)樵撐⒋a序列的首個(gè)微碼命令,再由微碼處理器執(zhí)行此mcr中的微碼。4 javacard cpu測(cè)試平臺(tái)的fpga實(shí)現(xiàn)4.1 外圍接口和模塊測(cè)試平臺(tái)是以一塊xc2s200芯片為核心的容易開(kāi)發(fā)板,所有設(shè)計(jì)都在此芯片內(nèi)實(shí)現(xiàn),包括cpu規(guī)律、存儲(chǔ)單元等,板上的8位led指示燈用作i/o輸出端口。4.2 測(cè)試平臺(tái)框架測(cè)試平臺(tái)框架結(jié)構(gòu)2所示。4.3 結(jié)果解釋設(shè)計(jì)是用verilog語(yǔ)言實(shí)現(xiàn)的,內(nèi)部用法16位數(shù)據(jù)總線,對(duì)外是8位的wishbone總線,微碼rom為4kb,外接512b的rom和512b的ram。javacard 定義了187條命令,其中47條命令涉及32位整型數(shù)。對(duì)32

15、位整型數(shù)的支持是可選的,本次沒(méi)有實(shí)現(xiàn)對(duì)32位整型數(shù)操作的命令,碰到未定義命令的操作為宕機(jī)。共定義了109條微碼命令。用了3273條微碼命令序列完成系統(tǒng)初始化操作和說(shuō)明javacard命令,每條javacard命令約用17條微碼命令執(zhí)行(主要是有些面對(duì)對(duì)象的復(fù)雜命令需要更多的微碼說(shuō)明)。囫圇系統(tǒng)占用資源很少:4個(gè)block ram,2 052個(gè)slice,可以在一般fpga上實(shí)現(xiàn)。測(cè)試代碼下載到板上的rom中,以24mhz時(shí)鐘運(yùn)行通過(guò),驗(yàn)證了javacard命令處理的正確性,性能徹低滿足javacard虛擬機(jī)標(biāo)準(zhǔn)要求。實(shí)現(xiàn)javacard硬件cpu是javacard的進(jìn)展方向。因用途緣由,它不需要很高的性能

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論