《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于FPGA的智能卡控制器的實現(xiàn)
基于FPGA的智能卡控制器的實現(xiàn)
來源:微型機(jī)與應(yīng)用2013年第1期
馬 峰,徐和根,趙 曼
(同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海201804)
摘要: 嘗試在FPGA上實現(xiàn)對IC卡的控制,運(yùn)用EDK中的IP開發(fā)工具生成一個智能卡控制器的IP核,用以實現(xiàn)對IC卡的硬件控制。
關(guān)鍵詞: FPGA IC卡 IP SPARTAN-3A
Abstract:
Key words :

摘  要: 嘗試在FPGA上實現(xiàn)對IC卡的控制,運(yùn)用EDK中的IP開發(fā)工具生成一個智能卡控制器的IP核,用以實現(xiàn)對IC卡的硬件控制。
關(guān)鍵詞: IC卡;IP;FPGA

 智能卡(Smart Card)又稱集成電路卡(Integrated Circuit Card),即IC卡,目前大量使用的交通卡、門禁卡、銀行支付卡等都是智能卡。智能卡接口控制器是連接智能卡和主控設(shè)備的橋梁,是智能卡處理設(shè)備中的最重要組成部分之一。面對巨大的市場需求,越來越多的公司、科研機(jī)構(gòu)都在研究此類控制器。
 FPGA具有可重構(gòu)性、開發(fā)周期短以及開發(fā)流程簡單等優(yōu)點,越來越多的工程師選擇將FPGA作為工程設(shè)計的首選。由于其內(nèi)嵌微處理器,F(xiàn)PGA在嵌入式方面也獲得了大量的運(yùn)用。此外,為縮短產(chǎn)品面市時間,F(xiàn)PGA廠商還會提供多種知識產(chǎn)權(quán)(IP)核。這類IP核可以作為功能模塊運(yùn)用在不同的設(shè)計中,方便了各種開發(fā)的推進(jìn)。本文嘗試在EDK中開發(fā)一個新的IP核,其功能就是實現(xiàn)對IC卡的接口控制。
1 用卡過程
 正常的用卡過程可劃分為幾個階段:(1)將IC卡插入到接口設(shè)備IFD(Interface Device),并接通各觸點;(2)對IC卡進(jìn)行復(fù)位,在終端和IC卡間建立通信;(3)執(zhí)行交易;(4)釋放觸點并取出IC卡。
2 字符的物理傳送
 交易過程中,數(shù)據(jù)以異步半雙工方式經(jīng)I/O線在終端和IC卡之間雙向傳送。由終端向IC卡提供時鐘信號,并以此來控制交易的時序。
數(shù)據(jù)在I/O線上以字符幀傳送,一個字符幀包含著10個相連的數(shù)位:1 bit狀態(tài)為低(L)的起始位、8 bit組成的數(shù)據(jù)字節(jié)和1 bit偶校驗位,如圖1所示。

 Input AFIFO接收來自總線的命令、地址和數(shù)據(jù)等,依次存儲在FIFO中(深度為16 bit),Device Controller則讀取該FIFO中數(shù)據(jù),并進(jìn)行相應(yīng)的操作。
  Output AFIFO用于接收Device(智能卡)返回的數(shù)據(jù),并將其傳輸給總線。
  Output Latch的作用是進(jìn)行狀態(tài)緩存與命令緩存,主要是為了滿足相關(guān)時序的要求。
  Device Controller是設(shè)計的核心環(huán)節(jié),它主要有以下功能特征:
 (1)參數(shù)的傳遞以及協(xié)議的設(shè)定;
 (2)時鐘頻率的轉(zhuǎn)換;
 (3)功能的激活;
 (4)時鐘的停止;
 (5)功能的釋放;
 (6)復(fù)位;
 (7)應(yīng)用協(xié)議數(shù)據(jù)單元APDU(Application Protocol Data Unit)傳送;
 (8)PPS交換。
  該模塊通過PLB接收來自CPU(即Microblaze)的數(shù)據(jù),并將它們轉(zhuǎn)換成串行信號。智能卡(Device)接收這些串行信號,并作出相應(yīng)的響應(yīng)。CPU通過PLB總線讀取這些響應(yīng)。其中,協(xié)議的選定是通過軟件來實現(xiàn)的,而且Device Controller的參數(shù)傳輸也是通過軟件來實現(xiàn)的。
根據(jù)該模塊的主要功能特征,將該模塊細(xì)化成以下幾個小的模塊。
 (1)狀態(tài)機(jī)模塊:用于對通信狀態(tài)過程的轉(zhuǎn)換;
 (2)計數(shù)器模塊:用于發(fā)送或接收數(shù)據(jù)的位數(shù)計算;
 (3)時鐘分頻模塊:產(chǎn)生合適的時鐘頻率,用于與智能卡的通信;
 (4)信號接口模塊:接收并解碼總線數(shù)據(jù)(命令、地址和數(shù)據(jù));
 (5)數(shù)據(jù)接收模塊:用于接收Device發(fā)送的數(shù)據(jù),并封裝成32 bit格式。
3.2 IP核的頂層模塊
 控制器的頂層模塊的結(jié)構(gòu)圖如圖3所示。

 在這個控制模塊中,有6個輸入信號是本控制器接收來自主控制器(Microblaze)的信號,分別為總線時鐘信號Bus2IP_Clk、總線復(fù)位信號Bus2IP_Reset、數(shù)據(jù)信號Bus2IP_Data、總線選擇信號Bus2IP_BE、總線讀使能信號Bus2IP_RdCE以及總線寫使能信號Bus2IP_WrCE。5個信號用于本控制器發(fā)送響應(yīng)給主控制器(Microblaze),分別為IP發(fā)送數(shù)據(jù)信號IP2Bus_Data、IP讀響應(yīng)信號IP2Bus_RdAck、IP寫響應(yīng)信號IP2Bus_WrAck、IP報錯信號IP2Bus_Error以及IP中斷信號IP2Bus_IntrEvent。還有6個信號用于本控制器與智能卡之間的通信,分別為輸出給智能卡的時鐘信號SCID2SC_CLK、復(fù)位信號SCID2SC_RST、電壓信號SCID2SC_VPP、接收智能卡返回值SCID2SC_IO_I、輸出信號給智能卡SCID2SC_IO_O、輸入輸出選擇信號SCID2SC_IO_T。在時鐘頻率的選擇上,由于Spartan-3A的工作頻率是62.5 MHz,因此Bus2IP_Clk采用的是62.5 MHz,而智能卡在這樣的高頻下則無法有效工作,因此通過DCM來實現(xiàn)分頻,最終選取IP_CLK的頻率為33.25 MHz。
3.3 控制器的工作流程
 當(dāng)此控制器IP核接收到來自總線的命令后,就將開始工作,實現(xiàn)對智能卡的接口控制,其工作的狀態(tài)轉(zhuǎn)換如圖4所示。

 上電后,該控制器開始處于起始狀態(tài)(INITIAL),當(dāng)接收到來自總線的信號后,信號接收模塊便會識別信號中的命令。當(dāng)命令為CMD_ACT、CMD_RST、CMD_ATR時,則開始工作;否則,繼續(xù)處于起始狀態(tài)。
開始工作后,首先進(jìn)入到SIGNAL_ST_CLK狀態(tài),在這個狀態(tài)里,時鐘生成模塊開始工作,它將產(chǎn)生一個需要的時鐘頻率,作為控制器與智能卡進(jìn)行通信的工作頻率。接著就要對智能卡進(jìn)行第一次復(fù)位(冷復(fù)位),即進(jìn)入到SIGNAL_ST_RST狀態(tài),復(fù)位后進(jìn)入SIGNAL_ST_ATR狀態(tài)(ATR為復(fù)位應(yīng)答),等待來自智能卡的返回信息。當(dāng)智能卡發(fā)送信號有效時,進(jìn)入到SIGNAL_ST_GET狀態(tài),接收來自智能卡的響應(yīng)。如果返回值正確,則將進(jìn)入空閑狀態(tài)(IDLE),等待下一命令。如果返回值不正確,則需要智能卡重新發(fā)送,并重新進(jìn)入到SIGNAL_ST_GET狀態(tài)。
 在IDLE狀態(tài)下,控制器會根據(jù)總線后續(xù)的命令來進(jìn)行操作,在本設(shè)計中主要是發(fā)送CMD_ATR、CMD_APDU和CMD_PPS命令,其過程是對智能卡進(jìn)行數(shù)據(jù)的發(fā)送。首先進(jìn)入到SIGNAL_ST_SEND狀態(tài),每發(fā)完一組數(shù)據(jù)(10 bit)后,都會對這組數(shù)據(jù)進(jìn)行檢查,即進(jìn)入SIGNAL_ST_CHECK狀態(tài)。
 當(dāng)所有操作命令都完成,就需要對此狀態(tài)機(jī)進(jìn)行釋放,進(jìn)入SIGNAL_ST_DACT狀態(tài)。釋放過程分為3步:首先對智能卡進(jìn)行復(fù)位操作,然后要停止向智能卡輸出時鐘信號,最后將控制器對智能卡的輸出信號拉低。至此,本次狀態(tài)轉(zhuǎn)換就結(jié)束了,對智能卡的一次控制也就完成了。
4 FPGA的實現(xiàn)
 在ISE 12.4開發(fā)環(huán)境中新建一個SmartCard控制器的工程,并添加EDK開發(fā)模塊,運(yùn)用其IP生成功能來生成一個智能卡的控制IP核iso7816_intf_dev,輸入相應(yīng)的Verilog HDL代碼,并將生成的IP添加到EDK系統(tǒng)中。整個EDK系統(tǒng)的工作平臺如圖5所示。

 

 

 只需在將此工程生成相應(yīng)的比特流,并下載到FPGA開發(fā)板上,就可以對智能卡進(jìn)行控制操作了。
為了在硬件上實現(xiàn)該控制器的功能,選用Xilinx公司的Spartan-3A系列XC3S700A-4FG484開發(fā)板來實現(xiàn)該控制器。其內(nèi)部消耗資源概況如圖6所示。
 最后,借助于Xilinx的SDK對該控制器進(jìn)行測試。在SDK中,可以運(yùn)用函數(shù)Xil_Out32或者Xil_In32來進(jìn)行數(shù)據(jù)的發(fā)送與接收。

 Xil_Out32(Base_Address+Offset,command/data),Xil_In32(Base_Address+Offset)。
驗證此IP核能否正常工作,主要需要驗證ATR、APDU和PPS這3個命令是否能夠正確地發(fā)送并接收正確的響應(yīng)。由于這3個命令的發(fā)送與接收都是運(yùn)用同樣的函數(shù),只是命令符與地址不同,因此只列出ATR的測試情況。
 運(yùn)用下面的函數(shù)向?qū)?yīng)的地址發(fā)送命令:
 Xil_Out32(0xcce00004,0x03000003);
 Xil_Out32(0xcce00000,0x00000101)。
 運(yùn)用下面的函數(shù)接收來自智能卡的響應(yīng):
 fpireg0=Xil_In32(0xcce0001c);
 xil_printf("data0:%x\r\n",fpireg0)。
 智能卡對此命令的響應(yīng)如下,它返回12個字符:3B,19,96,00,21,02,00,00,00,F(xiàn)F,90,00。
這些響應(yīng)是符合此類智能卡的響應(yīng)規(guī)定,因此,該IP核對于ATR功能是正確的。
利用同樣的驗證方法可以看出,該IP核對于APDU以及PPS等命令的響應(yīng)都是完全正確的。
經(jīng)驗證,本方案所設(shè)計的智能卡控制器是可行的。在進(jìn)行嵌入式設(shè)計時,可以將該IP核直接添加到相關(guān)的EDK工程中去,從而減少了設(shè)計的復(fù)雜度。但是本設(shè)計還只是局限于將IP核運(yùn)用在FPGA上,以后需要繼續(xù)研究,能夠?qū)⒃揑P核通用化,這樣就可以添加到任何目標(biāo)系統(tǒng)中去,方便SoC的設(shè)計,這將是今后研究的重點所在。
參考文獻(xiàn)
[1] International Standard ISO/IEC 7816-3[S].
[2] Xilinx公司. Spartan-3 FPGA Family Data Sheet[Z].
[3] Xilinx公司. Spartan-3 Starter Kit Board User Guide[Z].
[4] 夏宇聞,甘偉.Verilog HDL入門[M].北京:北京航空航天大學(xué)出版社,2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲一区二区三区免费观看| 久久综合九色综合网站| 欧美一区二区大片| 一区二区三区久久| 亚洲精品视频免费观看| 永久免费精品影视网站| 国产一区二区无遮挡| 国产精品一区二区三区观看| 国产精品成人一区二区网站软件 | 久久久99国产精品免费| 亚洲国产成人91精品| 欧美一区二区三区在线播放| 亚洲亚洲精品三区日韩精品在线视频| 一本色道久久综合狠狠躁篇怎么玩| 亚洲高清在线观看一区| 在线免费不卡视频| 亚洲大胆人体视频| 亚洲成色999久久网站| 在线看视频不卡| 在线免费日韩片| 亚洲激情国产| 99精品视频免费观看视频| 亚洲最新色图| 亚洲一区二区三区高清不卡| 亚洲网站在线观看| 亚洲欧美日韩一区在线观看| 午夜精品久久久久久久99水蜜桃 | 久久av在线| 玖玖国产精品视频| 亚洲第一视频网站| 伊人久久大香线蕉av超碰演员| 国内精品久久久久影院优| 国内在线观看一区二区三区 | 欧美一级免费视频| 亚洲成在人线av| 亚洲精品综合久久中文字幕| 亚洲作爱视频| 亚洲一区www| 欧美在线亚洲| 免费久久久一本精品久久区| 欧美激情一区在线观看| 国产精品s色| 国产在线观看精品一区二区三区| 在线观看国产一区二区| 99精品视频一区二区三区| 亚洲在线中文字幕| 亚洲高清不卡在线观看| 一区二区欧美激情| 欧美一区二区三区视频| 美女黄网久久| 国产精品sss| 激情久久五月天| 日韩视频精品在线| 午夜伦理片一区| 亚洲精品偷拍| 欧美一乱一性一交一视频| 免费在线观看日韩欧美| 国产精品久久7| 国产自产精品| 日韩亚洲精品视频| 欧美在线短视频| 这里只有精品丝袜| 久久久久久黄| 欧美色区777第一页| 韩日成人av| 中文亚洲字幕| 亚洲黄色av| 午夜久久久久久久久久一区二区| 男人的天堂亚洲| 国产精品素人视频| 亚洲精品视频二区| 久久精品国产69国产精品亚洲| 一区二区三区日韩精品| 久久亚洲综合| 国产日韩欧美亚洲| 毛片一区二区三区| 国产精品久久亚洲7777| 亚洲福利视频一区| 午夜伦欧美伦电影理论片| 一本色道久久精品| 噜噜噜噜噜久久久久久91| 国产精品网站在线观看| 亚洲国产小视频在线观看| 午夜精品视频在线观看一区二区| 99re6这里只有精品| 久久婷婷麻豆| 国产伦精品一区二区三区四区免费| 亚洲精品免费网站| 久久狠狠久久综合桃花| 亚洲在线第一页| 欧美日本乱大交xxxxx| 狠狠爱成人网| 亚洲欧美日韩综合一区| 亚洲一级一区| 欧美日韩ab| 亚洲激情视频在线观看| 亚洲高清免费在线| 久久国产精品99国产| 国产精品yjizz| 亚洲精品婷婷| 亚洲日本成人网| 可以看av的网站久久看| 国产欧美视频一区二区| 一本色道久久综合狠狠躁篇的优点 | 老鸭窝91久久精品色噜噜导演| 国产九色精品成人porny| 在线综合亚洲欧美在线视频| 亚洲精品日韩激情在线电影| 久久综合狠狠综合久久综青草| 国产日本欧美一区二区| 亚洲视频在线一区| 亚洲图片在区色| 欧美日韩成人在线观看| 亚洲激情网址| 99国产精品久久久久老师| 欧美mv日韩mv国产网站app| 伊甸园精品99久久久久久| 欧美在线网站| 久久久夜夜夜| 伊人久久大香线| 亚洲激情午夜| 欧美大片免费看| 最新热久久免费视频| 亚洲人体1000| 欧美激情一区二区三区全黄| 亚洲人成人一区二区三区| 日韩一级黄色av| 欧美另类视频在线| 亚洲日本成人网| 亚洲视频高清| 国产精品精品视频| 午夜精品久久久久久久久久久久| 欧美中在线观看| 韩国精品久久久999| 亚洲福利视频一区| 欧美国产欧美亚州国产日韩mv天天看完整| 一区二区三区亚洲| 亚洲精品久久久蜜桃| 美日韩免费视频| 亚洲欧洲一区二区天堂久久| 一区二区三区视频在线播放| 欧美性片在线观看| 亚洲欧美综合另类中字| 久久一区二区精品| 亚洲国产欧美一区二区三区同亚洲 | 欧美超级免费视 在线| 亚洲欧洲久久| 亚洲无线视频| 国产精品一区2区| 亚洲成人在线视频播放 | 一区二区在线观看视频在线观看| 亚洲第一区中文99精品| 欧美成年视频| 制服诱惑一区二区| 久久精品国产亚洲高清剧情介绍| 在线免费高清一区二区三区| 中文在线不卡| 国产一二三精品| 亚洲精品国产精品乱码不99| 欧美日韩性视频在线| 午夜在线视频观看日韩17c| 麻豆精品在线观看| 一道本一区二区| 久久久久88色偷偷免费| 亚洲精品看片| 欧美在线高清| 亚洲激情视频| 欧美一区二区三区播放老司机| 伊人成人在线视频| 亚洲一区日韩| 黄色成人免费网站| 亚洲午夜影视影院在线观看| 国产午夜精品理论片a级探花| 亚洲国语精品自产拍在线观看| 欧美性色视频在线| 亚洲国产精选| 欧美日韩专区| 亚洲电影免费观看高清完整版在线| 欧美日韩精品免费在线观看视频| 午夜精品久久久久久久99水蜜桃| 欧美va天堂va视频va在线| 亚洲图片你懂的| 欧美韩日一区二区| 午夜激情综合网| 欧美日韩视频在线| 久久精品日产第一区二区| 国产精品国产三级国产普通话三级 | 欧美在线免费观看亚洲| 亚洲国产综合91精品麻豆| 亚洲欧美日韩国产另类专区| 影音先锋日韩有码| 午夜综合激情| 亚洲毛片在线| 免费人成网站在线观看欧美高清| 亚洲综合日韩| 欧美日韩免费观看一区| 亚洲第一黄色网| 国产精品一区二区久久精品| 99精品热6080yy久久| 国内精品久久久久国产盗摄免费观看完整版 |