于茫



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