《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 基于89C51的IC卡讀寫器設(shè)計與實現(xiàn)
基于89C51的IC卡讀寫器設(shè)計與實現(xiàn)
摘要:  IC卡是集成電路卡(Integrated Circuit Card)的簡稱,,有些國家和地區(qū)稱之為微芯片卡(Microchip Card)或微電路卡(Microcircuit Card),。IC卡的大小和磁卡相同,,它把集成電路鑲在塑料卡片上,,芯片一般是數(shù)據(jù)不易丟失的存儲器(ROM, EPROM.EPROM), 保護(hù)邏輯電路,,或者CPU,。IC卡最初是為了解決金融交易中的安全性問題而設(shè)計的,,它帶來全新的交易概念與巨大的優(yōu)勢。
Abstract:
Key words :

  1,、前言

  IC卡是集成電路卡(Integrated Circuit Card)的簡稱,,有些國家和地區(qū)稱之為微芯片卡(Microchip Card)或微電路卡(Microcircuit Card)。IC卡的大小和磁卡相同,,它把集成電路鑲在塑料卡片上,,芯片一般是數(shù)據(jù)不易丟失的存儲器(ROM, EPROM.EPROM), 保護(hù)邏輯電路,或者CPU,。IC卡最初是為了解決金融交易中的安全性問題而設(shè)計的,,它帶來全新的交易概念與巨大的優(yōu)勢。很快,,這一優(yōu)勢也為其他應(yīng)用部門所看中,,使之廣泛應(yīng)用于電話、醫(yī)療保健,、路禁控制和門鎖控制等等系統(tǒng)中,。隨著時間的推移,應(yīng)用范圍還在不斷擴(kuò)大,,使用IC卡的數(shù)量呈幾何級數(shù)增長,。同時,為了不同應(yīng)用場合的需求,,IC卡制造商們?nèi)栽诓粩嗟叵蚴袌鐾瞥鲂碌腎C卡,,IC卡的價格將隨著使用量的增加而逐年下降,所有這些,,無疑又會大大推進(jìn)IC卡在各個領(lǐng)域的普及,。無線SOC開發(fā)平臺499元 S3C44B0 ARM7開發(fā)板378元 S3C2410 ARM9開發(fā)板780元 AT91SAM7S64 ARM7

  按照IC卡與讀寫設(shè)備的數(shù)據(jù)交換方式,IC卡可分為接觸型IC卡和非接觸型IC卡,。接觸型IC卡就是在使用時,,通過有形的電極觸點將卡的集成電路與外部接口設(shè)備直接接觸連接來進(jìn)行數(shù)據(jù)交換的IC卡。非接觸型IC卡是通過無線電波或電磁場感應(yīng)的方式,,將卡中集成電路內(nèi)的數(shù)據(jù)與外部設(shè)備接口設(shè)備通信,,卡片不用直接接觸接口設(shè)備的電極就可以進(jìn)行數(shù)據(jù)讀寫。按照IC卡的功能和結(jié)構(gòu)又可以把IC卡分為存儲型IC卡和智能型IC卡,。存儲型IC卡是屬于被動型,,它只能實現(xiàn)數(shù)據(jù)的各種輸入/輸出。這種類型IC卡內(nèi)部電路可分為兩大功能部分,,數(shù)據(jù)存儲部分和數(shù)據(jù)加密操作控制部分,。而且不是所有IC卡都必須具有這兩大功能。我們把只有數(shù)據(jù)存儲功能的IC卡稱為非加密型存儲卡 (Memory Card),。把具有數(shù)據(jù)存儲功能和數(shù)據(jù)加密操作控制的IC卡稱為加密型存儲卡(Memory Card with Security Logic),, 它們有暫時或永久的數(shù)據(jù)存儲能力,,其內(nèi)容可供處理或判斷之用。智能型IC卡就是在IC卡的集成電路中帶有微處理器電路的IC卡,。它是一種主動型IC卡,,不僅能夠管理各種數(shù)據(jù)的I/O操作,校驗來自接口設(shè)備的個人密碼,,而且能夠根據(jù)應(yīng)用系統(tǒng)的要求主動識別與之連接的接口設(shè)備,。因此,在智能型IC卡中能夠建立各種應(yīng)用系統(tǒng)的授權(quán),,存放多個應(yīng)用系統(tǒng)的相關(guān)數(shù)據(jù),,并實現(xiàn)對數(shù)據(jù)信息存儲的高可靠性、高安全性控制,,可以進(jìn)行復(fù)雜的信息處理和計算,。

  2、IC卡國際標(biāo)準(zhǔn)和讀寫要求

  由于IC卡使用具有流動性與全球性,,建立相應(yīng)的國際標(biāo)準(zhǔn)和國家標(biāo)準(zhǔn)就顯得特別重要,。在信息技術(shù)領(lǐng)域,ISO(國際標(biāo)準(zhǔn)化組織)和IEC(國際電子技術(shù)委員會)共同建立了一個技術(shù)委員會ISO/IEC JTC1以制定相應(yīng)國際標(biāo)準(zhǔn),。在IC卡應(yīng)用系統(tǒng)的設(shè)計中,,讀寫設(shè)備對IC卡的讀寫控制的每一個環(huán)節(jié)都應(yīng)當(dāng)遵照相應(yīng)的國際標(biāo)準(zhǔn),才能保證數(shù)據(jù)的正確讀取,。這是IC卡讀寫器" title="IC卡讀寫器">IC卡讀寫器終端設(shè)計的基礎(chǔ),。

  而在這些標(biāo)準(zhǔn)當(dāng)中,對芯片和電氣特征的定義和操作時序的要求又顯得尤為重要,。此處以同步卡的電氣特征和時序為例進(jìn)行介紹,。使用這種卡時,接口設(shè)備將所有線置于狀態(tài)L,,然后VCC加電,,Vpp處于空閑狀態(tài),CLK,、RST和FCB處于狀態(tài)L,,接口設(shè)備的I/O置于接收模式。時鐘脈沖在VCC上升沿之后相隔t20后提供,,時鐘脈沖的持續(xù)時間為t25,。在時鐘脈沖上升沿之后至少相隔t22時間FCB仍維持狀態(tài)L。在I/O線上得到的第1位數(shù)據(jù)可視為應(yīng)答,,此時CLK處于狀態(tài)L,,并在CLK下降沿t27之后有效。當(dāng)FCB置于狀態(tài)H時,每一個時鐘脈沖用于讀出I/O線上的下個數(shù)據(jù)位,。在復(fù)位應(yīng)答時,第一個時鐘脈沖在FCB上升沿之后t24時間給出,。時鐘脈沖狀態(tài)H的持續(xù)時間為t25,,狀態(tài)L的持續(xù)時間為1us(t26)。第二個及其隨后的數(shù)據(jù)位在時鐘為低和CLK下降沿之后t27時間給出,。數(shù)據(jù)位依次用時鐘脈沖的上升沿采樣,。

基于<a class=89C51" title="89C51">89C51的IC卡讀寫器設(shè)計與實現(xiàn)" onclick="get_larger(this)" src="http://files.chinaaet.com/images/20110516/43d0d630-79de-4664-abb8-65e5357cce02.jpg" />

  圖 一

  3、SLEE4442接口電路的設(shè)計

  SLE4442是由德國西門子公司設(shè)計的邏輯加密存儲卡,。它具有2K位的存儲容量和完全獨立的可編程加密代碼存儲器,。內(nèi)部電壓提升電路保證了芯片能夠以單5V電壓供電,較大的存儲器容量能夠滿足應(yīng)用領(lǐng)域的各種要求,。是目前國內(nèi)應(yīng)用較多的一種IC卡芯片,。這種芯片的特點是采用多存儲器結(jié)構(gòu);2線連接協(xié)議,,串行接口滿足ISO7816同步傳送協(xié)議,;芯片采用NMOS工藝技術(shù),每字節(jié)的擦除/寫入編程時間為2.5ms,;存儲器采用至少104次的擦除/寫入周期,,數(shù)據(jù)保持時間至少為10年。

  而讀寫器的主控芯片采用的是89C51單片機(jī)" title="51單片機(jī)">51單片機(jī),。89C51單片機(jī)是Intel公司開發(fā)的8位的系列化處理芯片,。內(nèi)部帶有一個8位的CPU,256個字節(jié)的RAM,,21個特殊功能寄存器(SFR),,2個16位的定時/計數(shù)器,4個8位并行接口,,一個全雙工的串行接口,,5個中斷源及片內(nèi)時鐘振蕩器等。由于這是一款非常成熟的單片機(jī),,因此本文不作更多的贅述,。

  該讀寫器的核心模塊即如何實現(xiàn)對IC芯片的有效控制和讀寫操作。而接口電路的設(shè)計直接反映了對該芯片的具體操作思想,。由于IC卡的邏輯接口電路一般采用集電極開路(OC)輸出及非保護(hù)式輸入結(jié)構(gòu),,所有讓上拉電阻R源端與IC卡的供電電源相連接。當(dāng)IC卡處于供電狀態(tài)時,,整個接口電路接通,,接口設(shè)備與IC卡間構(gòu)成邏輯通路;而當(dāng)IC卡處于下電狀態(tài)時,上拉電阻R的源端失去了供電,,整個與卡接口的電路均處于不帶電狀態(tài),。所有的IC卡接口部分都加入了保護(hù)二極管,這些二極管可以使各引腳上的電壓嚴(yán)格地限定在-VD~VCC+ VD之間(VD是保護(hù)二極管的正向壓降,,通常為0.6左右),。這樣,可以抑制由于線路干擾和邏輯電平變化的邊沿產(chǎn)生抖動所帶來的瞬間過壓,,為IC卡提供了進(jìn)一步的保護(hù)措施,。所設(shè)計的接口電路圖如圖二所示。

基于89C51的IC卡讀寫器設(shè)計與實現(xiàn)

  圖 二 IC卡控制和讀寫電路

  IC卡的插入與退出的識別是通過IC卡適配插座上的感應(yīng)開關(guān)來識別的,,對于簡單的手動插拔的IC卡適配插座來說,,這種識別過程相當(dāng)簡單,僅有一個開關(guān),,表示卡是否已插入,。如果卡己插入到正確位置,IC卡適配插座就會給出一個開關(guān)接通(或斷開)的信號,,而一旦卡離開這個位置,,該信號就會立即發(fā)生翻轉(zhuǎn)。設(shè)計中采用的適配器,,無卡插入時開關(guān)常閉,,卡插到位時開關(guān)斷開。對于手動式IC卡適配插座來說,,這一信號已經(jīng)足夠了,。為了確保IC卡已準(zhǔn)確地插到位置,插入的識別過程必須加入消顫處理,,這主要由軟件來實現(xiàn),。

  大多數(shù)符合ISO7816標(biāo)準(zhǔn)的同步型IC卡的地址計數(shù)器是與時鐘緊密相關(guān)的,當(dāng)卡復(fù)位時,,地址計數(shù)器置0,。以后每向卡發(fā)一個節(jié)拍的時鐘,都將使IC卡的地址計數(shù)器加‘1’,。這一時鐘頻率上限為50kHz或280kHz,。復(fù)位之后的頭32個時鐘周期內(nèi),是卡的復(fù)位響應(yīng)過程,,該過程中,,廠家的產(chǎn)品編碼以位編碼方式逐一在數(shù)據(jù)線上送出,以后的字段則根據(jù)廠家及用戶所定義的含義不同而各不相同,。若某字段定義為可讀的,,則可將時鐘運行到該字段上,然后再逐時鐘讀出。數(shù)據(jù)的讀出過程可分為三個基本過程:復(fù)位,,數(shù)據(jù)字段的定位和數(shù)據(jù)讀出,。

  4、89C51軟件模塊設(shè)計

  由于89C51是主控芯片,,因此89C51需要完成對IC芯片的復(fù)位,、讀寫等操作。首先對于復(fù)位響應(yīng)操作,,由于復(fù)位響應(yīng)是根據(jù)ISO7816標(biāo)準(zhǔn)來進(jìn)行的。在操作期間的任何時候都可以復(fù)位,,只有經(jīng)過了復(fù)位才能對IC卡進(jìn)行其他操作,。開始時地址計數(shù)器隨一個時鐘脈沖而被設(shè)置成0。當(dāng)RST線從H狀態(tài)置到L狀態(tài)時,,第一個數(shù)據(jù)位的內(nèi)容被送到I/O線上,。若連續(xù)輸入32個時鐘脈沖,主存儲器中的前4個字節(jié)地址單元中的內(nèi)容被讀出,。在第33個時鐘脈沖的下降沿,,I/O線被置成H狀態(tài)而關(guān)閉。 在復(fù)位響應(yīng)期間,,“啟動”和“停止”狀態(tài)被忽略,。單片機(jī)上的程序設(shè)計如下:

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

  在命令模式下,復(fù)位響應(yīng)之后,,芯片等待著命令,。每條命令都以一個“啟動狀態(tài)”開始。整個命令包括三個字節(jié),。隨后緊跟著一個附加脈沖并用一個“停止?fàn)顟B(tài)”來結(jié)束操作,。當(dāng)CLK為H狀態(tài)期間,I/O線的下降沿為啟動狀態(tài),;當(dāng)CLK為H狀態(tài)期間,,I/O線的上升沿為停止?fàn)顟B(tài);限于篇幅,,此處不再列出整個讀寫操作的程序代碼,。需要注意的是:脈沖的下降沿之后,I/O線上的第一位數(shù)據(jù)變?yōu)橛行?。隨后每增加一個時鐘脈沖,,芯片內(nèi)部的一位數(shù)據(jù)被送到I/O線上。其輸出的順序是從侮個字節(jié)的最低位開始,。當(dāng)所需要的最后一個數(shù)據(jù)送出以后,,需要再附加一個時鐘脈沖來把I/O線置成H狀態(tài),以便準(zhǔn)備接受新的命令。在輸出數(shù)據(jù)期間,,任何“啟動狀態(tài)”和“停止?fàn)顟B(tài)”均被屏蔽掉,。

  5、結(jié)束語

  本文的創(chuàng)新點是提出了一種新型的IC卡讀寫器設(shè)計方案,,在串口通訊的設(shè)計中,,除了要對單片機(jī)的異步通訊口進(jìn)行操作,還要對PC 機(jī)的串口進(jìn)行底層實時控制,,并通過調(diào)用系統(tǒng)的API 函數(shù)的方法成功的解決了這一問題,。由于西門子公司的SLE4442型邏輯加密IC卡是一種比較通用的IC卡芯片,因此通過更新讀寫器軟件也可以操作其他類型的接觸式同步IC一卡,,使得這種接觸式IC卡讀寫器成為一種通用的讀寫器,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。