在利用數(shù)字機(jī)頂盒收看數(shù)字電視節(jié)目時(shí),為了滿足不同用戶的需要,保證每個(gè)用戶的利益,需要采用條件接收系統(tǒng)管理用戶的權(quán)限并確保用戶的正常收看。而在機(jī)頂盒中,通常使用智能卡技術(shù)實(shí)現(xiàn)條件接收。
智能卡有自己的微處理器、存儲(chǔ)器和一個(gè)與機(jī)頂盒通信的接口。采用智能卡實(shí)現(xiàn)條件接收的優(yōu)勢(shì)在于:它具有高度的安全性和保密性,主要用于存儲(chǔ)用戶的私人密鑰、控制授權(quán)、保密算法等信息,可以保證整個(gè)數(shù)字電視系統(tǒng)的安全。
本文主要討論智能卡與機(jī)頂盒之間的通信。機(jī)頂盒中的主芯片一般都提供與智能卡通信的接口,利用相應(yīng)的硬件和通信協(xié)議,就可以實(shí)現(xiàn)它們之間的正常通信。在本文中,機(jī)頂盒芯片采用ST公司的Sti5516。由于Sti5516提供的智能卡接口需要外接一個(gè)接口芯片才能與智能卡通信,所以還采用了Philips公司的TDA8004T芯片。整個(gè)硬件框圖如圖1 所示。
圖1 機(jī)頂盒與智能卡通信的硬件框圖
1 Sti5516的智能卡接口
Sti5516支持智能卡接口——異步收發(fā)控制器(UART),用于實(shí)現(xiàn)Sti5516與二個(gè)智能卡控制器的通信。異步收發(fā)控制器支持全雙工異步通信,接收器與發(fā)送器使用相同的數(shù)據(jù)格式和波特率。數(shù)據(jù)的傳輸和接收可以是雙BUFFER,也可以是16位FIFO。通信過(guò)程中奇偶校驗(yàn)位、數(shù)據(jù)位、停止位都是可編程的。同時(shí),在傳輸和接收中的錯(cuò)誤覺(jué)察增強(qiáng)了數(shù)據(jù)傳輸的穩(wěn)定性,UART與智能卡的握手協(xié)議確保了數(shù)據(jù)傳輸?shù)陌踩。Sti5516有一個(gè)智能卡時(shí)鐘產(chǎn)生器,提供給智能卡一個(gè)時(shí)鐘信號(hào)。智能卡使用這個(gè)時(shí)鐘驅(qū)動(dòng)智能卡與UART之間的通信。這個(gè)時(shí)鐘也用于智能卡CPU時(shí)鐘。智能卡接口操作要求卡的時(shí)鐘可以調(diào)整,這樣波特率可以改變,時(shí)鐘的調(diào)整可以根據(jù)ISO7816標(biāo)準(zhǔn)。Sti5516提供的智能卡接口支持T=0、T=1協(xié)議。
2 TDA8004T介紹
TDA8004T提供了一個(gè)低成本的異步智能卡接口,可用于電子付費(fèi)、讀卡器、付費(fèi)電視等。它可以取代智能卡與微控制器之間的一些外部元器件,提供微控制器與智能卡之間穩(wěn)定、低噪音并符合ISO-7816 標(biāo)準(zhǔn)的通信接口[1]。其原理結(jié)構(gòu)圖如圖2所示。
圖2 TDA8004原理結(jié)構(gòu)圖
3 通信協(xié)議
在Sti5516與智能卡的通信過(guò)程中,本文采用了T=0協(xié)議。
T=0協(xié)議是異步半雙工字節(jié)傳輸協(xié)議[2],即協(xié)議所處理的最小單位是單個(gè)字節(jié)。通信命令總是由接口設(shè)備啟動(dòng),以命令報(bào)頭通知卡做什么,并且允許在卡發(fā)出的過(guò)程字節(jié)的控制下傳輸數(shù)據(jù)字節(jié)。命令報(bào)頭由連續(xù)的5個(gè)字節(jié)組成,這5個(gè)字節(jié)指定為CLA、INS、P1、P2、P3。其中CLA為指令類別,INS為指令類別中的指令代碼,P1、P2為一個(gè)完成指令代碼的參考符號(hào)(例如地址),P3由一個(gè)可變長(zhǎng)度的條件體組成。條件體包括命令數(shù)據(jù)域長(zhǎng)度字節(jié)Lc、命令數(shù)據(jù)域和響應(yīng)