關(guān) 閉

新聞中心

EEPW首頁 > 安全與國防 > 設(shè)計(jì)應(yīng)用 > 接觸式CPU卡中T=0異步半雙工字符傳輸協(xié)議的硬件實(shí)現(xiàn)

接觸式CPU卡中T=0異步半雙工字符傳輸協(xié)議的硬件實(shí)現(xiàn)

作者:■ 大唐微電子技術(shù)有限公司 龔宗躍 孫東昱 張學(xué)志 時(shí)間:2005-04-27 來源:eaw 收藏

摘    要:T=0是接觸式IC卡國際標(biāo)準(zhǔn) 中規(guī)定的一種通信協(xié)議。本文首先分析了 -3中對(duì)于電信號(hào)和傳輸協(xié)議的規(guī)定,在此基礎(chǔ)上介紹了T=0的硬件實(shí)現(xiàn)方法。
關(guān)鍵詞: ;;

引言
作為IC卡家族中功能最強(qiáng)、安全性最高的成員,已經(jīng)逐漸在各種應(yīng)用中占據(jù)主導(dǎo)地位。在ISO/IEC 7816-3中介紹了兩種通信協(xié)議:T=0和T=1通信協(xié)議。T=0是異步半雙工字符傳輸協(xié)議,T=1是異步半雙工塊傳輸協(xié)議。目前大多數(shù)接口設(shè)備都支持T=0通信協(xié)議,因此該協(xié)議應(yīng)用較為廣泛。
T=0通信協(xié)議可以通過軟件編程來實(shí)現(xiàn)。但在軟件實(shí)現(xiàn)過程中,需要通過軟件編程來控制數(shù)據(jù)收發(fā),對(duì)于實(shí)時(shí)性很強(qiáng)的通信處理,CPU的處理能力常常滿足不了要求,而且通信的可靠性和穩(wěn)定性也不是很理想,而硬件電路實(shí)現(xiàn)不存在上述問題。

傳輸協(xié)議描述
ISO/IEC 7816-3規(guī)定了IC卡的電氣特性和傳輸協(xié)議。包括該類卡和接口設(shè)備間的電源、電氣信號(hào)協(xié)議和信息交換協(xié)議。通信過程中,由接口設(shè)備給IC卡提供電源(Vcc),復(fù)位信號(hào)(RST)和時(shí)鐘(CLK),卡和接口設(shè)備間通過I/O端口進(jìn)行串行通信。
定義I/O端口有兩種可能狀態(tài):
傳號(hào)或高電平(狀態(tài)Z):當(dāng)卡和接口設(shè)備均處于接收狀態(tài)時(shí),I/O端口處于狀態(tài)Z。也可由發(fā)送方強(qiáng)制定義為狀態(tài)Z。
空號(hào)或低電平(狀態(tài)A):可由發(fā)送方強(qiáng)制定義為狀態(tài)A。
根據(jù)T=0異步半雙工字符傳輸協(xié)議,IC卡和接口設(shè)備之間以字符為單位(簡稱字符幀)進(jìn)行傳輸,采用偶校驗(yàn),每個(gè)字符由10bit組成,如圖1所示。傳輸字符幀之前,I/O線處于狀態(tài)Z,第1bit為起始位(狀態(tài)A);后面8bit為數(shù)據(jù)位D1~D8;第10bit為偶校驗(yàn)位,即8位數(shù)據(jù)和奇偶校驗(yàn)位中1的個(gè)數(shù)為偶數(shù)。
串行通信是按位傳送的,每位信息寬度(持續(xù)時(shí)間)定義為基本時(shí)間單位etu(elementary  time  unit)。在復(fù)位應(yīng)答期間的信息寬度稱為“初始etu”,它等于372個(gè)時(shí)鐘周期,即1etu = 372/f 。復(fù)位應(yīng)答后的信息寬度稱為“當(dāng)前etu”,其計(jì)算公式為:
當(dāng)前etu
其中:F是時(shí)鐘頻率變換因數(shù);D是比特率調(diào)整因數(shù);f是時(shí)鐘頻率。

硬件實(shí)現(xiàn)方案
按照上述標(biāo)準(zhǔn)實(shí)現(xiàn)的可編程串行接口系統(tǒng)如圖2所示。
可編程串行接口內(nèi)部的特殊功能寄存器有:
1. 串行接口控制/狀態(tài)寄存器SCON(復(fù)位后為00H)。
寄存器各位定義如下:
SCON[0]:接收中斷標(biāo)志位;
SCON[1]:發(fā)送中斷標(biāo)志位;
SCON[2]:發(fā)送出錯(cuò)標(biāo)志位;
SCON[3]:接收出錯(cuò)標(biāo)志位;
SCON[4]:允許發(fā)送標(biāo)志位;
SCON[5]:允許接收標(biāo)志位;
SCON[6]:保留;
SCON[7]:可編程串行接口允許標(biāo)志位。
SCON[4]、SCON[5]不能同時(shí)為1,否則I/O接口將處于邏輯混亂狀態(tài)。
2.串行接口數(shù)據(jù)緩沖器SBUF(復(fù)位后為00H) 。發(fā)送時(shí),SBUF作為發(fā)送數(shù)據(jù)緩沖器,用于緩存待發(fā)的數(shù)據(jù)。接收時(shí),SBUF作為接收數(shù)據(jù)緩沖器,用于緩存收到的數(shù)據(jù)。
3. 波特率寄存器MR、BR (復(fù)位后MR=0BH,BR=13H,串行接口工作于基本速率)。為了簡化硬件電路設(shè)計(jì),將復(fù)位應(yīng)答信號(hào)中TA1包含的F1和D1對(duì)應(yīng)的波特率譯碼工作交由軟件完成,由軟件設(shè)置通信波特率。內(nèi)部13bit定時(shí)器根據(jù)波特率寄存器MR、BR 值( &)對(duì)CLK信號(hào) 進(jìn)行分頻,以確定信息寬度。因?yàn)?etu,所以MR,BR寄存器設(shè)定為MR[7?]&BR[4?]= -1,例如,基本速率時(shí),F(xiàn)=372,D=1,可得,設(shè)置MR=0BH,BR=13H,即“00001011,10011”=371;對(duì)于手機(jī)中常用的增強(qiáng)速率,F(xiàn)=512,D=8,可得,設(shè)置MR=01H,BR=1FH,即“00000001,11111”=63。
下面介紹可編程串行接口的工作過程。在發(fā)送和接收數(shù)據(jù)前,按以下步驟初始化串行接口:
1. 根據(jù)應(yīng)用,通過設(shè)置MR、BR寄存器來設(shè)定通信速率。
2. 清除SCON[0]和SCON[1]中斷標(biāo)志。
3. 置位串行接口允許標(biāo)志位SCON[7],使能串行接口。
初始化工作完成后,可選擇發(fā)送模式或接收模式。
發(fā)送模式
首先將發(fā)送數(shù)據(jù)寫入SBUF,數(shù)據(jù)移位寄存器data_shift_reg [10~0]將自動(dòng)寫入 “ ”,其中P為奇偶校驗(yàn)位,為欲發(fā)送數(shù)據(jù),0為起始位,1代表狀態(tài)Z,最低兩位“01”用于產(chǎn)生起始位下降沿。
置位SCON[4],數(shù)據(jù)開始發(fā)送。根據(jù)波特率寄存器中設(shè)置的值,接收/發(fā)送控制模塊中,13位定時(shí)器在每位數(shù)據(jù)將結(jié)束時(shí)產(chǎn)生計(jì)數(shù)脈沖。當(dāng)計(jì)數(shù)脈沖有效時(shí),數(shù)據(jù)移位寄存器右移1位,最低位輸出到I/O線,最高位補(bǔ)入I/O線采樣數(shù)據(jù)。
當(dāng)校驗(yàn)位發(fā)送完畢后,I/O線變?yōu)楦咦钁B(tài),發(fā)方在11etu處對(duì)I/O線進(jìn)行采樣,如果為狀態(tài)Z,則認(rèn)為接收正確;如果為狀態(tài)A,則認(rèn)為傳輸出錯(cuò),根據(jù)結(jié)果刷新串行接口控制/狀態(tài)寄存器中相應(yīng)位。
當(dāng)一幀數(shù)據(jù)發(fā)送完畢后,無論發(fā)送是否正確,SCON[1] 都將硬件置位,產(chǎn)生發(fā)送中斷申請。如果發(fā)送正確,SCON[4]將被硬件自動(dòng)清0;如果發(fā)送出錯(cuò),發(fā)送出錯(cuò)標(biāo)志位SCON[2]將被硬件置位,SBUF中的數(shù)據(jù)將從檢測到錯(cuò)誤那一刻起2etu后自動(dòng)重發(fā),如圖3所示。在重發(fā)完畢前,必須軟件清除SCON[1]及發(fā)送出錯(cuò)標(biāo)志位SCON[2],否則將會(huì)出現(xiàn)循環(huán)重發(fā)錯(cuò)誤。
接收模式
置位SCON[5] ,系統(tǒng)處于接收狀態(tài)。
起始位的檢測是通過對(duì)I/O線進(jìn)行周期性采樣判決得到的。為了提高抗噪聲性能,當(dāng)檢測到起始位后,在每位數(shù)據(jù)中間進(jìn)行3次采樣,根據(jù)采樣判決結(jié)果產(chǎn)生采樣數(shù)據(jù),根據(jù)波特率寄存器中設(shè)置的值,接收/發(fā)送控制模塊中13位定時(shí)器在每位數(shù)據(jù)中間產(chǎn)生計(jì)數(shù)脈沖。在計(jì)數(shù)脈沖控制下,將采樣數(shù)據(jù)串行移入數(shù)據(jù)移位寄存器。
當(dāng)一幀數(shù)據(jù)接收完畢后,進(jìn)行數(shù)據(jù)校驗(yàn)。根據(jù)校驗(yàn)結(jié)果,在起始位下降沿后第10.5個(gè)etu起發(fā)送確認(rèn)位。確認(rèn)位為狀態(tài)Z,表示接收正確,為狀態(tài)A,表示接收出錯(cuò)。確認(rèn)位信號(hào)寬度為1個(gè)etu,如圖4所示。無論接收是否正確, SCON[0]都將在起始位下降沿后第10.5個(gè)etu置位,產(chǎn)生接收中斷,并根據(jù)校驗(yàn)結(jié)果刷新串行接口控制/狀態(tài)寄存器中相應(yīng)位。如果正確接收,SCON[5]將被硬件自動(dòng)清除,數(shù)據(jù)移位寄存器中收到的8bit數(shù)據(jù)將自動(dòng)加載到SBUF中;如果不正確,則置位接收出錯(cuò)標(biāo)志位SCON[3],等待數(shù)據(jù)重發(fā)。軟件清除SCON[0]和SCON[3] 必須在下一幀數(shù)據(jù)接收完畢前完成。
由于設(shè)有數(shù)據(jù)移位寄存器和SBUF緩沖器,從而能在一幀數(shù)據(jù)接收完,由數(shù)據(jù)移位寄存器裝入SBUF后,立即開始接收下一幀信息,CPU應(yīng)在下一幀數(shù)據(jù)接收結(jié)束前從SBUF緩沖器中將數(shù)據(jù)取走,否則前一幀數(shù)據(jù)將丟失。
通過上述可編程串行接口,當(dāng)接收或發(fā)送完一幀數(shù)據(jù)后,內(nèi)部硬件自動(dòng)置位SCON[0] 或SCON[1],CPU可以通過查詢中斷標(biāo)志位或響應(yīng)中斷申請來進(jìn)行串行通信處理。兩個(gè)中斷請求標(biāo)志位不能由硬件自動(dòng)清0,而必須通過軟件清0。

結(jié)語
ISO/IEC 7816,T=0異步半雙工字符傳輸協(xié)議的硬件實(shí)現(xiàn)電路具有如下特點(diǎn):對(duì)每位數(shù)據(jù)采取多次采樣判決的方式,提高了接口抗干擾能力;通信波特率軟件可調(diào),滿足不同系統(tǒng)對(duì)通信速率的要求;T=0協(xié)議基于字符幀檢錯(cuò)重發(fā)。為了避免可能出現(xiàn)的無限次的重發(fā)現(xiàn)象,在軟件中可設(shè)置最大重發(fā)次數(shù)。同T=1協(xié)議相比,在通信質(zhì)量不理想的情況下,T=0協(xié)議只需要重發(fā)錯(cuò)誤字符幀,提高了工作效率?!?/P>

參考文獻(xiàn)
1 International Standard ISO/IEC 7816-3 . Identification cards. Integrated circuit(s) cards with contacts,Part 3:Electronic signals and transmission protocols,1997
2 王愛英. 智能卡技術(shù)-IC卡第二版. 清華大學(xué)出版社,2000.10

作者簡介:
龔宗躍,工程師,碩士,研究方向?yàn)閿?shù)字集成電路前端設(shè)計(jì);孫東昱,工程師,碩士,研究方向?yàn)閿?shù)字集成電路前端設(shè)計(jì)。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉