接觸式CPU卡中T=0異步半雙工字符傳輸協議的硬件實現
摘 要:T=0異步半雙工字符傳輸協議是接觸式IC卡國際標準ISO/IEC 7816中規定的一種通信協議。本文首先分析了ISO/IEC 7816-3中對于電信號和傳輸協議的規定,在此基礎上介紹了T=0異步半雙工字符傳輸協議的硬件實現方法。
關鍵詞:ISO/IEC 7816;異步半雙工字符傳輸協議;CPU卡
引言
CPU卡作為IC卡家族中功能最強、安全性最高的成員,已經逐漸在各種應用中占據主導地位。在ISO/IEC 7816-3中介紹了兩種通信協議:T=0和T=1通信協議。T=0是異步半雙工字符傳輸協議,T=1是異步半雙工塊傳輸協議。目前大多數接口設備都支持T=0通信協議,因此該協議應用較為廣泛。
T=0通信協議可以通過軟件編程來實現。但在軟件實現過程中,需要通過軟件編程來控制數據收發,對于實時性很強的通信處理,CPU的處理能力常常滿足不了要求,而且通信的可靠性和穩定性也不是很理想,而硬件電路實現不存在上述問題。
傳輸協議描述
ISO/IEC 7816-3規定了IC卡的電氣特性和傳輸協議。包括該類卡和接口設備間的電源、電氣信號協議和信息交換協議。通信過程中,由接口設備給IC卡提供電源(Vcc),復位信號(RST)和時鐘(CLK),卡和接口設備間通過I/O端口進行串行通信。
定義I/O端口有兩種可能狀態:
傳號或高電平(狀態Z):當卡和接口設備均處于接收狀態時,I/O端口處于狀態Z。也可由發送方強制定義為狀態Z。
空號或低電平(狀態A):可由發送方強制定義為狀態A。
根據T=0異步半雙工字符傳輸協議,IC卡和接口設備之間以字符為單位(簡稱字符幀)進行傳輸,采用偶校驗,每個字符由10bit組成,如圖1所示。傳輸字符幀之前,I/O線處于狀態Z,第1bit為起始位(狀態A);后面8bit為數據位D1~D8;第10bit為偶校驗位,即8位數據和奇偶校驗位中1的個數為偶數。
串行通信是按位傳送的,每位信息寬度(持續時間)定義為基本時間單位etu(elementary time unit)。在復位應答期間的信息寬度稱為“初始etu”,它等于372個時鐘周期,即1etu = 372/f 。復位應答后的信息寬度稱為“當前etu”,其計算公式為:
當前etu
其中:F是時鐘頻率變換因數;D是比特率調整因數;f是時鐘頻率。
硬件實現方案
按照上述標準實現的可編程串行接口系統如圖2所示。
可編程串行接口內部的特殊功能寄存器有:
1. 串行接口控制/狀態寄存器SCON(復位后為00H)。
寄存器各位定義如下:
SCON[0]:接收中斷標志位;
SCON[1]:發送中斷標志位;
SCON[2]:發送出錯標志位;
SCON[3]:接收出錯標志位;
SCON[4]:允許發送標志位;
SCON[5]:允許接收標志位;
SCON[6]:保留;
SCON[7]:可編程串行接口允許標志位。
SCON[4]、SCON[5]不能同時為1,否則I/O接口將處于邏輯混亂狀態。
2.串行接口數據緩沖器SBUF(復位后為00H) 。發送時,SBUF作為發送數據緩沖器,用于緩存待發的數據。接收時,SBUF作為接收數據緩沖器,用于緩存收到的數據。
3. 波特率寄存器MR、BR (復位后MR=0BH,BR=13H,串行接口工作于基本速率)。為了簡化硬件電路設計,將復位應答信號中TA1包含的F1和D1對應的波特率譯碼工作交由軟件完成,由軟件設置通信波特率。內部13bit定時器根據波特率寄存器MR、BR 值( &)對CLK信號 進行分頻,以確定信息寬度。因為1etu,所以MR,BR寄存器設定為MR[7?]&BR[4?]= -1,例如,基本速率時,F=372,D=1,可得,設置MR=0BH,BR=13H,即“00001011,10011”=371;對于手機中常用的增強速率,F=512,D=8,可得,設置MR=01H,BR=1FH,即“00000001,11111”=63。
下面介紹可編程串行接口的工作過程。在發送和接收數據前,按以下步驟初始化串行接口:
1. 根據應用,通過設置MR、BR寄存器來設定通信速率。
2. 清除SCON[0]和SCON[1]中斷標志。
3. 置位串行接口允許標志位SCON[7],使能串行接口。
初始化工作完成后,可選擇發送模式或接收模式。
發送模式
首先將發送數據寫入SBUF,數據移位寄存器data_shift_reg [10~0]將自動寫入 “ ”,其中P為奇偶校驗位,為欲發送數據,0為起始位,1代表狀態Z,最低兩位“01”用于產生起始位下降沿。
置位SCON[4],數據開始發送。根據波特率寄存器中設置的值,接收/發送控制模塊中,13位定時器在每位數據將結束時產生計數脈沖。當計數脈沖有效時,數據移位寄存器右移1位,最低位輸出到I/O線,最高位補入I/O線采樣數據。
當校驗位發送完畢后,I/O線變為高阻態,發方在11etu處對I/O線進行采樣,如果為狀態Z,則認為接收正確;如果為狀態A,則認為傳輸出錯,根據結果刷新串行接口控制/狀態寄存器中相應位。
當一幀數據發送完畢后,無論發送是否正確,SCON[1] 都將硬件置位,產生發送中斷申請。如果發送正確,SCON[4]將被硬件自動清0;如果發送出錯,發送出錯標志位SCON[2]將被硬件置位,SBUF中的數據將從檢測到錯誤那一刻起2etu后自動重發,如圖3所示。在重發完畢前,必須軟件清除SCON[1]及發送出錯標志位SCON[2],否則將會出現循環重發錯誤。
接收模式
置位SCON[5] ,系統處于接收狀態。
起始位的檢測是通過對I/O線進行周期性采樣判決得到的。為了提高抗噪聲性能,當檢測到起始位后,在每位數據中間進行3次采樣,根據采樣判決結果產生采樣數據,根據波特率寄存器中設置的值,接收/發送控制模塊中13位定時器在每位數據中間產生計數脈沖。在計數脈沖控制下,將采樣數據串行移入數據移位寄存器。
當一幀數據接收完畢后,進行數據校驗。根據校驗結果,在起始位下降沿后第10.5個etu起發送確認位。確認位為狀態Z,表示接收正確,為狀態A,表示接收出錯。確認位信號寬度為1個etu,如圖4所示。無論接收是否正確, SCON[0]都將在起始位下降沿后第10.5個etu置位,產生接收中斷,并根據校驗結果刷新串行接口控制/狀態寄存器中相應位。如果正確接收,SCON[5]將被硬件自動清除,數據移位寄存器中收到的8bit數據將自動加載到SBUF中;如果不正確,則置位接收出錯標志位SCON[3],等待數據重發。軟件清除SCON[0]和SCON[3] 必須在下一幀數據接收完畢前完成。
由于設有數據移位寄存器和SBUF緩沖器,從而能在一幀數據接收完,由數據移位寄存器裝入SBUF后,立即開始接收下一幀信息,CPU應在下一幀數據接收結束前從SBUF緩沖器中將數據取走,否則前一幀數據將丟失。
通過上述可編程串行接口,當接收或發送完一幀數據后,內部硬件自動置位SCON[0] 或SCON[1],CPU可以通過查詢中斷標志位或響應中斷申請來進行串行通信處理。兩個中斷請求標志位不能由硬件自動清0,而必須通過軟件清0。
結語
ISO/IEC 7816,T=0異步半雙工字符傳輸協議的硬件實現電路具有如下特點:對每位數據采取多次采樣判決的方式,提高了接口抗干擾能力;通信波特率軟件可調,滿足不同系統對通信速率的要求;T=0協議基于字符幀檢錯重發。為了避免可能出現的無限次的重發現象,在軟件中可設置最大重發次數。同T=1協議相比,在通信質量不理想的情況下,T=0協議只需要重發錯誤字符幀,提高了工作效率?!?/P>
參考文獻
1 International Standard ISO/IEC 7816-3 . Identification cards. Integrated circuit(s) cards with contacts,Part 3:Electronic signals and transmission protocols,1997
2 王愛英. 智能卡技術-IC卡第二版. 清華大學出版社,2000.10
作者簡介:
龔宗躍,工程師,碩士,研究方向為數字集成電路前端設計;孫東昱,工程師,碩士,研究方向為數字集成電路前端設計。
評論