于茫
摘 要:針對單片機實現(xiàn)PSAM卡讀寫過程中存在的實時性差及時鐘不可配的問題,設(shè)計了基于FPGA實現(xiàn)ISO7816-3半雙工串行通信系統(tǒng)的方法。利用該方法訪問PSAM數(shù)據(jù),時鐘周期靈活可配,縮減了數(shù)據(jù)交互時間,實時性好。同時考慮到接收數(shù)據(jù)中遇到的超時、校驗失敗等問題,設(shè)計了中斷模塊,采用共享中斷線區(qū)分中斷號的方法上報給上位機,不僅節(jié)省了器件引腳,而且達到了區(qū)分中斷的目的。最終該方法通過仿真及板級驗證,與PSAM正常通信。
關(guān)鍵詞:ISO/IEC7816;FPGA;PSAM;秘鑰管理;串/并轉(zhuǎn)換;串行通信
0 引 言
隨著越來越多的RFID讀寫器和標(biāo)簽應(yīng)用在物流、珠寶、電子車牌等行業(yè),數(shù)據(jù)的保密性和完整性已經(jīng)變得越來越重要。為解決數(shù)據(jù)保密問題,通過閱讀器下發(fā)秘鑰授權(quán)訪問標(biāo)簽的存儲區(qū)成為當(dāng)下關(guān)注的熱點,因此如何設(shè)計秘鑰的載體成為讀寫器廠家考慮的重點。其中一種常用的方法是參考銀行的IC卡設(shè)計,在讀寫器終端放置已經(jīng)存儲秘鑰的PSAM卡[1-4]。
PSAM卡屬于IC接觸式卡的一種,數(shù)據(jù)傳輸須符合ISO/IEC 7816協(xié)議。軟件設(shè)計一般參考ISO/IEC 7816-3和ISO/IEC 7816-4協(xié)議。ISO/IEC 7816-3規(guī)定了智能卡與接口設(shè)備的電信號和傳輸協(xié)議,為半雙工協(xié)議;ISO/IEC 7816-4規(guī)定了智能卡和接口設(shè)備的交互命令[5-6]。
IC卡的數(shù)據(jù)訪問實現(xiàn)方案有多種,方案一利用單片機實現(xiàn),但實現(xiàn)過程中數(shù)據(jù)的實時性差,IC卡的時鐘周期由外部獨立器件產(chǎn)生,時鐘無法靈活配置,同時還存在PCB布局浪費等問題[7]。方案二雖然利用FPGA器件的并行處理優(yōu)勢進行設(shè)計,但實現(xiàn)過程中未考慮實際接收數(shù)據(jù)時遇到的超時、奇偶校驗失敗等問題,所以設(shè)計的模塊在工程應(yīng)用中存在風(fēng)險[8]。
本文設(shè)計了一種ISO7816-3半雙工串行通信系統(tǒng)[9-10]。該系統(tǒng)上位機通過EMC總線配置FPGA進行復(fù)位、激活、讀寫等狀態(tài)機的跳轉(zhuǎn),配置etu寄存器、字符保護時間寄存器等。Tx模塊完成并串轉(zhuǎn)換,添加起始字符,將奇偶校驗字符發(fā)送給PSAM卡數(shù)據(jù)端。Rx模塊接收PSAM卡返回的響應(yīng)數(shù)據(jù),完成串并轉(zhuǎn)換與奇偶校驗,將數(shù)據(jù)寫入RAM且發(fā)送正常。超時、校驗失敗等錯誤判斷信號發(fā)送至中斷模塊,中斷模塊采用共享中斷線區(qū)分中斷號的方法上報給上位機,上位機根據(jù)不同的中斷號作出響應(yīng)。
1 系統(tǒng)設(shè)計
本設(shè)計采用的PSAM卡是T=0異步半雙工字符傳輸類型。1個字符10 bit,按照小端傳輸,起始字符bit1為0,bit10對bit2~bit9的字符個數(shù)進行偶校驗[3]。初始化字符TS如圖1所示。
根據(jù)復(fù)位響應(yīng)中的TA1字段bit8~bit5定義F,通過bit4~bit1定義D。上位機在收到該字符后需要重新計算etu的時間。計算公式如下:
PSAM卡復(fù)位響應(yīng)如圖2所示。
復(fù)位響應(yīng)的第一個字符TS(0x3B)代表字符按照小端傳輸。T0字符中bit5,bit6,bit7,bit8分別代表TA1,TB1,TC1,TD1字符是否存在,其中1表示存在,0表示不存在。TD1高4 bit分別代表TA2,TB2,TC2,TD2是否存在,依次類推。bit4~bit1表示歷史字節(jié)的個數(shù)。第二個字符T0(0X7F)為二進制數(shù)“01111111”,代表本卡的TA1,TB1,TC1字符存在,有15個歷史字節(jié),而TD1不存在,所以默認(rèn)為T=0異步半雙工字符傳輸類型。第三個字符TA1(“0X18”)的bit8~bit5是“0001”(F=372),bit4~bit0是“1000”(D=120),上位機更新的etu時間為31個Psam_clk周期,極大地縮減了數(shù)據(jù)交互時間。
協(xié)議研讀后,對FPGA進行系統(tǒng)設(shè)計。系統(tǒng)包括狀態(tài)機模塊、Tx發(fā)送模塊、Rx接收模塊、中斷模塊,具體如圖3所示。
(1)狀態(tài)機模塊:完成冷復(fù)位、熱復(fù)位、接收數(shù)據(jù)、發(fā)送命令、激活等狀態(tài)跳轉(zhuǎn),配置etu寄存器、字符保護時間寄存器等。
(2)Tx發(fā)送模塊:把上位機下發(fā)的命令寫入Tx_ram,按照協(xié)議添加起始字符和奇偶校驗字符,并完成轉(zhuǎn)串與大小端轉(zhuǎn)換,設(shè)置字符間保護時間和等待時間,把數(shù)據(jù)發(fā)送給Psam_dat。
(3)Rx接收模塊:對Psam_dat進行串轉(zhuǎn)并、偶校驗、大小端轉(zhuǎn)換,并把校驗成功的數(shù)據(jù)按照字節(jié)寫入Rx_ram。在接收過程中設(shè)置超時、校驗失敗、正常接收數(shù)據(jù)完成等信號發(fā)送給中斷模塊。上位機在收到TA1字符后,根據(jù)F,D值計算新的etu,并通過EMC總線更新至FPGA,由FPGA重新調(diào)整Psam_clk周期。
(4)中斷模塊:Rx接收模塊發(fā)送超時、校驗失敗信息并正常接收數(shù)據(jù),將這些信息寫入中斷寄存器,同時上報至上位機。上位機收到中斷信號后查詢中斷寄存器,并進行相應(yīng)的處理。
2 仿真及驗證
為了說明方法的可行性,按照系統(tǒng)設(shè)計進行編碼,并利用Modelsim對其進行仿真。FPGA接收的數(shù)據(jù)為”3B 7F 18 00 00 86 88”,如圖4所示。FPGA發(fā)送的數(shù)據(jù)為”75 86 32 A5”,如圖5所示。
在開發(fā)板上進行驗證,通過上位機打印獲取PSAM數(shù)據(jù),并與寫入數(shù)據(jù)進行對比,結(jié)果表明兩者數(shù)據(jù)一致,證明數(shù)據(jù)傳輸及解析無誤。
3 結(jié) 語
本文利用FPGA實現(xiàn)對PSAM卡的數(shù)據(jù)訪問,根據(jù)PSAM的響應(yīng)字符TA1,靈活調(diào)整時鐘周期,數(shù)據(jù)實時性強。設(shè)計中充分考慮工程中遇到的超時、奇偶校驗失敗等情況,中斷模塊采用共享中斷線、區(qū)分中斷號的方法解決這一問題。最后工程進行了讀寫仿真,并在板級上實現(xiàn)了與PSAM卡的通信,進一步證明了該方案的可行性。
參考文獻
[1]白振興,何華燦,魏寶剛.智能IC卡的分類與標(biāo)準(zhǔn)及技術(shù)性能分析[J].現(xiàn)代電子技術(shù),1997,20(2):18-19.
[2]俞剛.智能卡-PKI私鑰的安全載體[J].計算機與數(shù)字工程,2008(11):107-110.
[3]潘梁.ETC秘鑰國產(chǎn)化升級改造方案設(shè)計與實現(xiàn)[J].中國交通信息化,2020(2):115-118.
[4]李文濤.廣東省聯(lián)網(wǎng)收費IC卡系統(tǒng)安全性淺析[J].中國交通信息產(chǎn)業(yè),2009(7):80.
[5] International standard ISO/IEC 7816-3,Identification cards integrated circuit cards. Part3:Cards with contacts-Electrical interface and transmission protocols [S]. 2004.
[6] International standard ISO/IEC 7816-3,Identification cards integrated circuit cards. Part3:Organization,security and command for interchange [S]. 2005.
[7]高繼森,劉春華.單片機直接讀寫SIM卡的軟件設(shè)計[J].五邑大學(xué)學(xué)報(自然科學(xué)版),2010(4):24-27.
[8]張子武,丁曉明,沈超.ISO/IEC7816-3通信協(xié)議的FPGA實現(xiàn)[J].現(xiàn)代電子技術(shù),2008,33(3):164-165.
[9]蔣曉光,黃光周,于繼榮.基于ISO7816-3標(biāo)準(zhǔn)的智能卡接口控制器設(shè)計[J].今日電子,2005(2):62-63.
[10]王靜,李華軍,韋巍.串行通信的一種可靠性設(shè)計方案[J].機電工程,2001(4):33-35.