IC卡讀/寫器的設(shè)計分析
IC卡(Integrated Circuit Card)是將一個集成電路芯片嵌在塑料基片中,封裝為卡片形式。IC卡最早是在20世紀(jì)70年代初提出來的,由法國布爾(BULL)公司于1976年首先創(chuàng)造出來,并將這項技術(shù)應(yīng)用到金融、交通、醫(yī)療、身份證及餐飲等多個行業(yè)。
我國正在致力于經(jīng)濟(jì)信息化建設(shè),其中以“金橋”、“金卡”及“金關(guān)”三金工程為代表?!敖鹂ā惫こ蹋娮迂泿殴こ蹋┦峭七M(jìn)我國國民經(jīng)濟(jì)信息化的重要工程之一。它以磁卡或IC卡為媒介,利用郵電部和中國人民銀行現(xiàn)有的網(wǎng)絡(luò)資源,并通過“金橋”網(wǎng)構(gòu)成經(jīng)濟(jì)信息系統(tǒng),為銀行、商貿(mào)和旅游等部門服務(wù)。由于IC卡相對磁卡而言,不但具有防水、防潮、防磁和極高的安全、保密、防偽能力,而且使用壽命長,因而是“金卡”工程的首選產(chǎn)品。
一、IC卡簡介
IC卡芯片具有寫入數(shù)據(jù)的存儲數(shù)據(jù)的能力。根據(jù)嵌入卡中的集成電路的不同,可以分成以下三類。
●存儲器卡:卡中的集成電路為E2 PROM;
●邏輯加密卡:卡中的集成電路具有加密邏輯和Ez PROM;
●CPU卡:卡中r集成電路包括中央處理器CPU、E2 PROM、隨機(jī)存儲器RAM以及固
化在只讀存儲器ROM中的片內(nèi)操作系統(tǒng)COS(ChipOperating System)。
IC卡按與外界數(shù)據(jù)傳遞的形式分為接觸型IC卡和非接觸型IC卡。當(dāng)前廣泛使用的是接觸型IC卡。
由于IC卡類型不同,因而有不同的讀/寫方式及硬件要求。我們在開發(fā)IC卡讀/寫器時,使用的是美國ATMEL公司生產(chǎn)的AT24COIA存儲器型IC卡。AT24COIA的容量為1K位(128×8),擦寫次數(shù)為100 000周期,數(shù)據(jù)存儲期為100年。這種IC卡使用的模塊符合ISO/IEC7816協(xié)議,其觸點的安排見表1- 38和圖1- 123。
二、硬件電路設(shè)計
本節(jié)所設(shè)計的IC卡讀/寫器的硬件框圖見圖1- 124。
IC卡讀/寫器電路是以8031單片機(jī)為主,輔以2764、6264、8279等芯片組成的。整個電路分為三部分:基本單片機(jī)系統(tǒng)、顯示和鍵盤電路及IC卡接口電路。
基本單片機(jī)系統(tǒng)電路由8031單片機(jī)、8KROM2764、8K RAM6264和用于地址鎖存的74LS373等芯片組成;顯示和鍵盤電路由8279芯片、LED顯示器和驅(qū)動芯片組成。采用8279芯片可使編程簡單,節(jié)省8031的硬件資源。
IC卡接口電路由雙向模擬開關(guān)和上拉電阻組成。由于IC卡有其獨特的電氣特性,所設(shè)計的硬件電路必須符合其電性能要求。
根據(jù)IC卡的電氣特性設(shè)計的硬件電路見圖1- 125。
由于IC卡為存儲器芯片,若接口硬件設(shè)計不當(dāng),輕則縮短IC卡使用壽命,重則會燒壞IC卡;而合理的設(shè)計會對卡有保護(hù)作用,因而增強(qiáng)IC卡的讀/寫可靠性和延長使用壽命。本節(jié)所設(shè)計的IC卡讀/寫器,從各方面采取了不同的措施,盡可能避免了對卡的損傷。
在IC卡的使用過程中,由于接觸式IC卡是由人工插拔來完成1次讀/寫的,而在插拔過程中,IC卡處于不穩(wěn)定接觸狀態(tài)。如果在這種情況下IC卡的接口設(shè)備帶電,則無疑會對卡造成損傷。因此,在插拔過程中,IC卡接口設(shè)備絕不允許帶電。
在IC卡的卡座上一般都有1個狀態(tài)開關(guān),卡座上有無卡可由開關(guān)信號反映出來。因此通過判斷此開關(guān)信號可以知道卡的有無,從而控制lC卡接口設(shè)備的上、下電。判斷此開關(guān)信號既可通過查詢方式,也可通過中斷方式。但查詢方式的響應(yīng)速度慢,尤其對于拔卡動作。由于人工拔卡帶有很大的隨機(jī)性,若在讀/寫過程中突然拔卡,則會導(dǎo)致讀/寫失敗;又由于不能及時去掉接口設(shè)備電源,容易損壞lC卡。
因此,在設(shè)計中采用中斷方式。將開關(guān)信號分別通過“與”、“非”門,經(jīng)過整形后加到8031的2個外部中斷INTO和INT1上。這樣,只要插拔IC卡通過中斷方式及時響應(yīng),切斷或接通接口設(shè)備電源,就可保護(hù)IC卡。
但是,在插拔過程中,僅僅切斷電源還是不能完全避免對卡的損害。為更進(jìn)一步提高對卡的保護(hù),在設(shè)計中將所有與卡直接接觸的信號線和電源線都通過CD4066雙向模擬開關(guān)與IC卡連接起來,并由圖1 - 125中的Pl.1來控制CD4066的導(dǎo)通,實現(xiàn)信號和電源的通斷。這樣,在插拔卡時,利用中斷及時響應(yīng)。在沒有卡時,迅速切斷與卡有直接連接的信號線和電源線,在硬件上確保了對卡的保護(hù)。
如果IC卡和單片機(jī)主機(jī)共用同一組電源,它們之間就會產(chǎn)生干擾,尤其是主機(jī)對IC卡的干擾。為了避免這種互擾,在設(shè)計上采用雙電源獨立供電法,即IC卡單獨由LM317高穩(wěn)定性電源供電,而主機(jī)由7805供電。這樣,兩組電源分別向1C卡和主機(jī)供電,減弱甚至消除了IC卡與主機(jī)之間的電源干擾,提高了IC卡的讀/寫可靠性,保護(hù)了IC卡。
三、軟件設(shè)計
下面對AT 24COIA的讀/寫時序進(jìn)行分析,并給出程序說明。寫字節(jié)時序見圖l- 126(a)。
通過時序圖可以看出,要寫卡必須由開始狀態(tài)啟動,而開始狀態(tài)一定是在時鐘輸入SCL的高有效期內(nèi);在I/O數(shù)據(jù)線SDA上有1個由低到高的跳變;緊接著送人器件地址,使卡進(jìn)行讀/寫操作。對AT24COIA卡,器件地址高4位一定為1010,最低位為0寫卡,為1讀卡。信息高位先送出,見圖1 - 126(b)。
I/O數(shù)據(jù)線SDA上的狀態(tài)變化一定要發(fā)生在時鐘輸入SCL的低有效期間。在時鐘的上升沿才把數(shù)據(jù)送入E2 PROM,而在讀卡上數(shù)據(jù)時,在時鐘SCL的下降沿將EZ PROM數(shù)據(jù)輸出,即SDA數(shù)據(jù)變化也發(fā)生在SCL的低有效期。因而一定要在SCL高有效期內(nèi)才能讀取卡的數(shù)據(jù)。下面給出8031編程實例。
綜上所述,寫卡時,在時鐘SCL低有效期向I/O數(shù)據(jù)線SDA送人數(shù)據(jù);在時鐘SCL上升沿將數(shù)據(jù)寫入IC卡。讀卡時,在時鐘SCL下降沿,卡中數(shù)據(jù)送入I/O數(shù)據(jù)線SDA,在相應(yīng)的時鐘SCL高有效期讀取這一數(shù)據(jù)。
寫一字節(jié)時,由于是串行傳送,只能按位進(jìn)行,且各位必須保證連續(xù)性,因此時鐘信號SCL頻率的選擇既要滿足卡的動態(tài)特性,又要與程序指令執(zhí)行時間相配合。
以上原則同樣適用于讀字節(jié)程序。
該讀/寫器已成功應(yīng)用于IC卡全自動糧食收購系統(tǒng),讀/寫穩(wěn)定可靠,應(yīng)用效果良好。