IC卡是集成電路卡(Integrated?Circuit?Card)的簡稱,有些國家和地區稱之為微芯片卡(Microchip?Card)或微電路卡(Microcircuit?Card)。IC卡的大小和磁卡相同,它把集成電路鑲在塑料卡片上,芯片一般是數據不易丟失的存儲器(ROM,?EPROM.EPROM),?保護邏輯電路,或者CPU。IC卡最初是為了解決金融交易中的安全性問題而設計的,它帶來全新的交易概念與巨大的優勢。很快,這一優勢也為其他應用部門所看中,使之廣泛應用于電話、醫療保健、路禁控制和門鎖控制等等系統中。隨著時間的推移,應用范圍還在不斷擴大,使用IC卡的數量呈幾何級數增長。同時,為了不同應用場合的需求,IC卡制造商們仍在不斷地向市場推出新的IC卡,IC卡的價格將隨著使用量的增加而逐年下降,所有這些,無疑又會大大推進IC卡在各個領域的普及。??
????按照IC卡與讀寫設備的數據交換方式,IC卡可分為接觸型IC卡和非接觸型IC卡。接觸型IC卡就是在使用時,通過有形的電極觸點將卡的集成電路與外部接口設備直接接觸連接來進行數據交換的IC卡。非接觸型IC卡是通過無線電波或電磁場感應的方式,將卡中集成電路內的數據與外部設備接口設備通信,卡片不用直接接觸接口設備的電極就可以進行數據讀寫。按照IC卡的功能和結構又可以把IC卡分為存儲型IC卡和智能型IC卡。存儲型IC卡是屬于被動型,它只能實現數據的各種輸入/輸出。這種類型IC卡內部電路可分為兩大功能部分,數據存儲部分和數據加密操作控制部分。而且不是所有IC卡都必須具有這兩大功能。我們把只有數據存儲功能的IC卡稱為非加密型存儲卡?(Memory?Card)。把具有數據存儲功能和數據加密操作控制的IC卡稱為加密型存儲卡
(Memory?Card?with?Security?Logic),?它們有暫時或永久的數據存儲能力,其內容可供處理或判斷之用。智能型IC卡就是在IC卡的集成電路中帶有微處理器電路的IC卡。它是一種主動型IC卡,不僅能夠管理各種數據的I/O操作,校驗來自接口設備的個人密碼,而且能夠根據應用系統的要求主動識別與之連接的接口設備。因此,在智能型IC卡中能夠建立各種應用系統的授權,存放多個應用系統的相關數據,并實現對數據信息存儲的高可靠性、高安全性控制,可以進行復雜的信息處理和計算。?
2?IC卡國際標準和讀寫要求?
由于IC卡使用具有流動性與全球性,建立相應的國際標準和國家標準就顯得特別重要。在信息技術領域,ISO(國際標準化組織)和IEC(國際電子技術委員會)共同建立了一個技術委員會ISO/IEC?JTC1以制定相應國際標準。在IC卡應用系統的設計中,讀寫設備對IC卡的讀寫控制的每一個環節都應當遵照相應的國際標準,才能保證數據的正確讀取。這是IC卡讀寫器終端設計的基礎。?
而在這些標準當中,對芯片和電氣特征的定義和操作時序的要求又顯得尤為重要。此處以同步卡的電氣特征和時序為例進行介紹。使用這種卡時,接口設備將所有線置于狀態L,然后VCC加電,Vpp處于空閑狀態,CLK、RST和FCB處于狀態L,接口設備的I/O置于接收模式。時鐘脈沖在VCC上升沿之后相隔t20后提供,時鐘脈沖的持續時間為t25。在時鐘脈沖上升沿之后至少相隔t22時間FCB仍維持狀態L。在I/O線上得到的第1位數據可視為應答,此時CLK處于狀態L,并在CLK下降沿t27之后有效。當FCB置于狀態H時,每一個時鐘脈沖用于讀出I/O線上的下個數據位。在復位應答時,第一個時鐘脈沖在FCB上升沿之后t24時間給出。時鐘脈沖狀態H的持續時間為t25,狀態L的持續時間為1us(t26)。第二個及其隨后的數據位在時鐘為低和CLK下降沿之后t27時間給出。數據位依次用時鐘脈沖的上升沿采樣。?
???????????????????????????????????????????????????????????圖?一?
3????????SLEE4442接口電路的設計?
SLE4442是由德國西門子公司設計的邏輯加密存儲卡。它具有2K位的存儲容量和完全獨立的可編程加密代碼存儲器。內部電壓提升電路保證了芯片能夠以單5V電壓供電,較大的存儲器容量能夠滿足應用領域的各種要求。是目前國內應用較多的一種IC卡芯片。這種芯片的特點是采用多存儲器結構;2線連接協議,串行接口滿足ISO7816同步傳送協議;芯片采用NMOS工藝技術,每字節的擦除/寫入編程時間為2.5ms;存儲器采用至少104次的擦除/寫入周期,數據保持時間至少為10年。?
而讀寫器的主控芯片采用的是89C51單片機。89C51單片機是Intel公司開發的8位的系列化處理芯片。內部帶有一個8位的CPU,256個字節的RAM,21個特殊功能寄存器(SFR),2個16位的定時/計數器,4個8位并行接口,一個全雙工的串行接口,5個中斷源及片內時鐘振蕩器等。由于這是一款非常成熟的單片機,因此本文不作更多的贅述。?
該讀寫器的核心模塊即如何實現對IC芯片的有效控制和讀寫操作。而接口電路的設計直接反映了對該芯片的具體操作思想。由于IC卡的邏輯接口電路一般采用集電極開路(OC)輸出及非保護式輸入結構,所有讓上拉電阻R源端與IC卡的供電電源相連接。當IC卡處于供電狀態時,整個接口電路接通,接口設備與IC卡間構成邏輯通路;而當IC卡處于下電狀態時,上拉電阻R的源端失去了供電,整個與卡接口的電路均處于不帶電狀態。所有的IC卡接口部分都加入了保護二極管,這些二極管可以使各引腳上的電壓嚴格地限定在-VD~VCC+?VD之間(VD是保護二極管的正向壓降,通常為0.6左右)。這樣,可以抑制由于線路干擾和邏輯電平變化的邊沿產生抖動所帶來的瞬間過壓,為IC卡提供了進一步的保護措施。所設計的接口電路圖如圖二所示。?
圖 二? IC卡控制和讀寫電路
??IC卡的插入與退出的識別是通過IC卡適配插座上的感應開關來識別的,對于簡單的手動插拔的IC卡適配插座來說,這種識別過程相當簡單,僅有一個開關,表示卡是否已插入。如果卡己插入到正確位置,IC卡適配插座就會給出一個開關接通(或斷開)的信號,而一旦卡離開這個位置,該信號就會立即發生翻轉。設計中采用的適配器,無卡插入時開關常閉,卡插到位時開關斷開。對于手動式IC卡適配插座來說,這一信號已經足夠了。為了確保IC卡已準確地插到位置,插入的識別過程必須加入消顫處理,這主要由軟件來實現。?
大多數符合ISO7816標準的同步型IC卡的地址計數器是與時鐘緊密相關的,當卡復位時,地址計數器置0。以后每向卡發一個節拍的時鐘,都將使IC卡的地址計數器加‘1’。這一時鐘頻率上限為50kHz或280kHz。復位之后的頭32個時鐘周期內,是卡的復位響應過程,該過程中,廠家的產品編碼以位編碼方式逐一在數據線上送出,以后的字段則根據廠家及用戶所定義的含義不同而各不相同。若某字段定義為可讀的,則可將時鐘運行到該字段上,然后再逐時鐘讀出。數據的讀出過程可分為三個基本過程:復位,數據字段的定位和數據讀出。?
4、89C51軟件模塊設計?
由于89C51是主控芯片,因此89C51需要完成對IC芯片的復位、讀寫等操作。首先對于復位響應操作,由于復位響應是根據ISO7816標準來進行的。在操作期間的任何時候都可以復位,只有經過了復位才能對IC卡進行其他操作。開始時地址計數器隨一個時鐘脈沖而被設置成0。當RST線從H狀態置到L狀態時,第一個數據位的內容被送到I/O線上。若連續輸入32個時鐘脈沖,主存儲器中的前4個字節地址單元中的內容被讀出。在第33個時鐘脈沖的下降沿,I/O線被置成H狀態而關閉。?在復位響應期間,“啟動”和“停止”狀態被忽略。單片機上的程序設計如下:?
CARD_RST:???????????
CLR????RST?
CLR????CLK?
LCALL??DELAY_20US?
SETB????RST?
LCALL??DELAY_20US?
SET?????CLK?
LCALL??DELAY_20US?
CLR?????CLK?
LCALL???DELAY_20US?
CLR?????RST?
LCALL??DELAY_20US?
MOV????B,#32?
RESET1:?
SETB????CLK?
LCALL???DELAY_20US?
CLR?????CLK?
LCALL???DELAY_20US?
DJNZ????B,RESET1?
RET?
在命令模式下,復位響應之后,芯片等待著命令。每條命令都以一個“啟動狀態”開始。整個命令包括三個字節。隨后緊跟著一個附加脈沖并用一個“停止狀態”來結束操作。當CLK為H狀態期間,I/O線的下降沿為啟動狀態;當CLK為H狀態期間,I/O線的上升沿為停止狀態;限于篇幅,此處不再列出整個讀寫操作的程序代碼。需要注意的是:脈沖的下降沿之后,I/O線上的第一位數據變為有效。隨后每增加一個時鐘脈沖,芯片內部的一位數據被送到I/O線上。其輸出的順序是從侮個字節的最低位開始。當所需要的最后一個數據送出以后,需要再附加一個時鐘脈沖來把I/O線置成H狀態,以便準備接受新的命令。在輸出數據期間,任何“啟動狀態”和“停止狀態”均被屏蔽掉。?
5、結束語?
?????本文的創新點是提出了一種新型的IC卡讀寫器設計方案,在串口通訊的設計中,除了要對單片機的異步通訊口進行操作,還要對PC?機的串口進行底層實時控制,并通過調用系統的API?函數的方法成功的解決了這一問題。由于西門子公司的SLE4442型邏輯加密IC卡是一種比較通用的IC卡芯片,因此通過更新讀寫器軟件也可以操作其他類型的接觸式同步IC一卡,使得這種接觸式IC卡讀寫器成為一種通用的讀寫器。