摘 要: 機(jī)頂盒中采用智能卡技術(shù)實現(xiàn)條件接收" title="條件接收">條件接收,,主要介紹了機(jī)頂盒芯片" title="機(jī)頂盒芯片">機(jī)頂盒芯片Sti5516的智能卡接口" title="智能卡接口">智能卡接口和用于實現(xiàn)機(jī)頂盒與智能卡之間通信的TDA8004T芯片,,介紹了T=0通訊協(xié)議,,并給出了通訊的實現(xiàn)過程。
關(guān)鍵詞: 機(jī)頂盒 智能卡 T=0協(xié)議
在利用數(shù)字機(jī)頂盒收看數(shù)字電視節(jié)目時,,為了滿足不同用戶的需要,保證每個用戶的利益,,需要采用條件接收系統(tǒng)管理用戶的權(quán)限并確保用戶的正常收看,。而在機(jī)頂盒中,通常使用智能卡技術(shù)實現(xiàn)條件接收,。
智能卡有自己的微處理器,、存儲器和一個與機(jī)頂盒通信的接口。采用智能卡實現(xiàn)條件接收的優(yōu)勢在于:它具有高度的安全性和保密性,,主要用于存儲用戶的私人密鑰,、控制授權(quán)、保密算法等信息,,可以保證整個數(shù)字電視系統(tǒng)的安全,。
本文主要討論智能卡與機(jī)頂盒之間的通信。機(jī)頂盒中的主芯片一般都提供與智能卡通信的接口,,利用相應(yīng)的硬件和通信協(xié)議,,就可以實現(xiàn)它們之間的正常通信。在本文中,,機(jī)頂盒芯片采用ST公司的Sti5516,。由于Sti5516提供的智能卡接口需要外接一個接口芯片才能與智能卡通信,所以還采用了Philips公司的TDA8004T芯片,。整個硬件框圖如圖1 所示,。
1 Sti5516的智能卡接口
Sti5516支持智能卡接口——異步收發(fā)控制器(UART),用于實現(xiàn)Sti5516與二個智能卡控制器的通信,。異步收發(fā)控制器支持全雙工異步通信,,接收器與發(fā)送器使用相同的數(shù)據(jù)格式和波特率,。數(shù)據(jù)的傳輸和接收可以是雙BUFFER,也可以是16位FIFO,。通信過程中奇偶校驗位,、數(shù)據(jù)位、停止位都是可編程的,。同時,,在傳輸和接收中的錯誤覺察增強(qiáng)了數(shù)據(jù)傳輸?shù)姆€(wěn)定性,UART與智能卡的握手協(xié)議確保了數(shù)據(jù)傳輸?shù)陌踩?。Sti5516有一個智能卡時鐘產(chǎn)生器,,提供給智能卡一個時鐘信號。智能卡使用這個時鐘驅(qū)動智能卡與UART之間的通信,。這個時鐘也用于智能卡CPU時鐘,。智能卡接口操作要求卡的時鐘可以調(diào)整,這樣波特率可以改變,,時鐘的調(diào)整可以根據(jù)ISO7816標(biāo)準(zhǔn),。Sti5516提供的智能卡接口支持T=0、T=1協(xié)議,。
2 TDA8004T介紹
TDA8004T提供了一個低成本的異步智能卡接口,,可用于電子付費(fèi)、讀卡器,、付費(fèi)電視等,。它可以取代智能卡與微控制器之間的一些外部元器件,提供微控制器與智能卡之間穩(wěn)定,、低噪音并符合ISO-7816 標(biāo)準(zhǔn)的通信接口[1],。其原理結(jié)構(gòu)圖如圖2所示。
3 通信協(xié)議
在Sti5516與智能卡的通信過程中,,本文采用了T=0協(xié)議,。
T=0協(xié)議是異步半雙工字節(jié)傳輸協(xié)議" title="傳輸協(xié)議">傳輸協(xié)議[2],即協(xié)議所處理的最小單位是單個字節(jié),。通信命令總是由接口設(shè)備啟動,以命令報頭通知卡做什么,并且允許在卡發(fā)出的過程字節(jié)的控制下傳輸數(shù)據(jù)字節(jié),。命令報頭由連續(xù)的5個字節(jié)組成,這5個字節(jié)指定為CLA,、INS,、P1、P2,、P3,。其中CLA為指令類別,INS為指令類別中的指令代碼,P1,、P2為一個完成指令代碼的參考符號(例如地址),P3由一個可變長度的條件體組成,。條件體包括命令數(shù)據(jù)域長度字節(jié)Lc,、命令數(shù)據(jù)域和響應(yīng)返回的最大長度字節(jié)Le。根據(jù)不同的命令,,條件體的組成也不相同,。
這樣,在一個5字節(jié)命令報頭傳輸后,接口設(shè)備等待一個或者兩個過程字節(jié)。過程字節(jié)的值將指明接口設(shè)備請求的動作,。如果過程字節(jié)的值與INS字節(jié)相同,,表示接口設(shè)備向卡發(fā)送或者從卡接收所有數(shù)據(jù);如果與INS字節(jié)的補(bǔ)碼相同,,表示接口設(shè)備向卡發(fā)送或者從卡接收下一個字節(jié),;如果為0x60,表示延長等待時間;如果為0x61,,表示接口設(shè)備等待第二個過程字節(jié),,并根據(jù)第二個過程字節(jié)發(fā)送命令取回數(shù)據(jù);如果為0x6c,表示接口設(shè)備等待第二個過程字節(jié),,并根據(jù)第二個過程字節(jié)重發(fā)上一條命令,。如果過程字節(jié)是0x90、0x00,,表示通信成功完成[2~3],。
4 通信的實現(xiàn)
在實際通信過程中,本文將工作頻率" title="工作頻率">工作頻率定為3.57MHz,,保證數(shù)據(jù)傳輸?shù)牟ㄌ芈蕿?600bps,。數(shù)據(jù)格式采用帶奇偶校驗的8個數(shù)據(jù)位和2個停止位,如圖3所示,。
在機(jī)頂盒與智能卡發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的過程中,,使用了Sti5516智能卡接口UART的驅(qū)動。因此在進(jìn)行通信之前首先要對UART初始化,。初始化之后,,進(jìn)行卡的復(fù)位應(yīng)答,如果應(yīng)答正確才能與卡通信,。
根據(jù)T=0協(xié)議的定義,,機(jī)頂盒與智能卡通信的流程圖如圖4所示。
5 調(diào)試經(jīng)驗
(1) 在寫智能卡接口UART的驅(qū)動時,,必須按照T=0協(xié)議標(biāo)準(zhǔn)配置工作頻率,、數(shù)據(jù)傳輸波特率和數(shù)據(jù)格式;
(2) 在確保卡的復(fù)位應(yīng)答正確后,,才能進(jìn)行卡與機(jī)頂盒的通信,;
(3) 命令報頭的傳送一般是有一定的先后順序的,在測試過程中,,需要按照順序發(fā)送命令報頭,,才能正常接收數(shù)據(jù);
(4) 判斷過程字節(jié)和條件體形式時,,一定要按圖4所描述的,,考慮仔細(xì)、全面,,以免通信錯誤,。
由于目前大多數(shù)智能卡支持T=0協(xié)議,所以本文主要介紹了基于T=0協(xié)議的機(jī)頂盒與智能卡之間的通信,。在此基礎(chǔ)上,,以后可以實現(xiàn)基于T=1協(xié)議的通信,以便支持更多的智能卡,。
參考文獻(xiàn)
1 TDA8004T Data sheet. Product specification,1999 Dec 30,Philips
2 GB/T 16649.3 -1996 識別卡-帶觸點的集成電路卡-第3部分: 電信號和傳輸協(xié)議.ISO/IEC 7816-4:1995識別卡-帶觸點的集成電路卡-第4部分:交換用行業(yè)間指令
3 Wolfgang Ranki, Wolffang Effing編著,, 王卓人,王鋒編譯.智能卡大全-智能卡的結(jié)構(gòu)功能應(yīng)用. 北京:電子工業(yè)出版社,,2002