智能卡控制器IP核的設計與實(shí)現
文章出處:http://psychicreadingswithdeb.com 作者: 人氣: 發(fā)表時(shí)間:2012年03月07日
摘要:本文介紹了一款兼容ISO7816-3協(xié)議的智能卡控制器IP核。該IP核能實(shí)現對智能卡的探測、電源管理、復位和讀寫(xiě)控制等功能。文章側重于介紹智能卡控制器采用Verilog語(yǔ)言實(shí)現數字邏輯的方法。
關(guān)鍵詞:ASIC;ISO7816;智能卡;IP核;Verilog 語(yǔ)言
1、引言
隨著(zhù)信息技術(shù)的飛速發(fā)展,越來(lái)越多的地方要求對用戶(hù)身份的識別以及重要數據的安全存儲。而智能卡(SmartCard)又稱(chēng)集成電路卡(Integrated Circuit Card 即IC卡),是具有高的可靠性安全性和靈活性的數據承載設備,現已被廣泛應用于政府、金融、電信、交通及公共事業(yè)等領(lǐng)域。
智能卡控制器是連接智能卡和主控設備的橋梁,由于智能卡的應用不斷增加,越來(lái)越多的SOC芯片內嵌了智能卡控制器IP核。這種基于IP核的設計方式已成為IC設計的主流,這里主要介紹智能卡控制器IP核的數字邏輯實(shí)現方法以及其在硬盤(pán)加密芯片中的應用。
2、協(xié)議簡(jiǎn)介
這里僅對本文中要用到的部分協(xié)議內容作簡(jiǎn)要說(shuō)明,詳細的協(xié)議內容請見(jiàn)參考文獻1。
智能卡共有八個(gè)觸點(diǎn),其中有用的就C1、C2、C3、C5、C6、和C7六個(gè)觸點(diǎn),具體見(jiàn)下表:
表1:智能卡觸點(diǎn)
智能卡控制器是通過(guò)智能卡觸點(diǎn)C7(I/O)與控制器進(jìn)行半雙工串行通信的,在每一時(shí)刻觸點(diǎn)C7只有狀態(tài)Z和狀態(tài)A兩種狀態(tài)。
智能卡要傳輸一個(gè)字節(8個(gè)Bit)數據的要11個(gè)Bit位的時(shí)間寬度,在下表中被記成t1到t11。其中第一個(gè)時(shí)刻t1傳輸的Start位被稱(chēng)為起始位;第二到第九個(gè)時(shí)刻,即時(shí)刻t2到時(shí)刻t9,傳輸的數據ba到bh為一個(gè)字節的八個(gè)位;時(shí)刻t10傳送的pi位為奇偶校驗位;最后一個(gè)時(shí)刻t11傳輸的Stop位被稱(chēng)為停止位,標志著(zhù)一個(gè)字節(8個(gè)Bit)的數據傳輸完成。請見(jiàn)下表:
表2:智能卡串行傳輸數據格式
3、微體系結構
3.1、接口信號
該IP核接口主要分為CPU總線(xiàn)接口、中斷信號和智能卡控制接口,這里主要介紹一下有關(guān)智能卡控制的接口信號,即連接或控制智能卡上有效觸點(diǎn)的信號,它們?yōu)椋?/p>
1) 智能卡是否存在信號IC_PRES:用于探測智能卡座上是否有智能卡存在,當有智能卡插入或拔出時(shí),該信號的電平發(fā)生跳變,本IP核能夠探測該信號的電平的變化,并以中斷等方式報告給CPU;
2) 智能卡電源控制信號IC_PWR:用于控制智能卡的電源VCC或VPP(觸點(diǎn)C1或C6),用于打開(kāi)和關(guān)閉智能卡電源;
3) 時(shí)鐘信號IC_CLK:同智能卡觸點(diǎn)C3相連接,用于向智能卡輸入一定頻率的時(shí)鐘信號;
4) 復位信號IC_RST:同智能卡觸點(diǎn)C2相連接,用于向智能卡發(fā)出復位信號;
5) 雙向串行數據信號IC_IO:同智能卡觸點(diǎn)C7相連接,用于實(shí)現與智能卡的雙向數據通信。
3.2、模塊和功能
智能卡控制器核內部有發(fā)送和接收模塊(Transmitter and Receiver)、中斷仲裁模塊(Interrupt Arbitrator)、函數模塊(Function Generator)、時(shí)鐘模塊(Clock Generator)、智能卡接口模塊(Interface Device)和訪(fǎng)問(wèn)寄存器模塊(Register Access Control)六大模塊,這些模塊之間的關(guān)系見(jiàn)圖1所示:
圖1 ISO7816智能卡控制器模塊結構圖
主要模塊功能及特征描述如下:
1. 發(fā)送和接收模塊:發(fā)送和接收模塊負責處理數據幀的發(fā)送和接收。發(fā)送模塊是將FIFO發(fā)送隊列中的數據按照設定的格式把并行數據轉換為串行數據幀,并通過(guò)發(fā)送端口送出去。接收模塊則監視接收端信號,一旦出現有效開(kāi)始位,就進(jìn)行接收,并實(shí)現將接收到的異步串行數據幀轉換為并行數據,存入FIFO接收隊列中,同時(shí)檢查數據幀格式是否有錯。智能卡控制器的幀結構是通過(guò)LCR(Line Control Reg)寄存器設置的,接收和傳送器的狀態(tài)被保存在LSR(Line Status Reg)寄存器中。
2. 中斷仲裁模塊:當任何一種中斷條件被滿(mǎn)足時(shí),并且在中斷使能寄存器(IER, Interrupt Enable Reg)中相應位置1,那么智能卡的中斷請求信號INT被置為有效狀態(tài)。為了減少和外部軟件的交互,智能卡控制器把中斷分為四個(gè)級別,并且在中斷標識寄存器(IIR, Interrupt ID Reg)中標識這些中斷。四個(gè)級別的中斷按優(yōu)先級級別由高到低的順序排列為:智能卡插拔中斷、接收線(xiàn)路狀態(tài)中斷、接收數據準備好中斷和傳送擁有寄存器為空中斷;。
3. 函數模塊:該模塊產(chǎn)生智能卡的相關(guān)時(shí)序。通過(guò)向函數寄存器(FR, Function Register)相應的位置入相關(guān)的參數來(lái)探測智能卡、管理電源和產(chǎn)生復位時(shí)序等。
4. 時(shí)鐘模塊:時(shí)鐘模塊產(chǎn)生相應頻率的時(shí)鐘供給智能卡,時(shí)鐘的頻率由CPU總線(xiàn)的時(shí)鐘頻率和寫(xiě)入時(shí)鐘分頻寄存器(CDR, Clock Divisor Register)的值來(lái)決定,關(guān)系表達式如下:
fIC_CLK = fCPU /(2 * CDR)
5. 智能卡接口模塊:該模塊將相關(guān)信號進(jìn)行適當的調整,以便適合于IC智能卡的通信。
6. 訪(fǎng)問(wèn)寄存器模塊:當智能卡控制器被總線(xiàn)控制器選中時(shí),CPU可通過(guò)讀或寫(xiě)操作訪(fǎng)問(wèn)被地址線(xiàn)選中的寄存器。
4、設計實(shí)現
這部分將對本智能卡控制器中主要模塊的數字邏輯的實(shí)現方法逐一作簡(jiǎn)單說(shuō)明。
4.1、數據接收模塊
在設計接收模塊的過(guò)程中,關(guān)鍵是如何實(shí)現Receiver Shift的邏輯電路,下圖是本智能卡控制器數據接收模塊中有關(guān)Receiver Shift邏輯電路的主控狀態(tài)轉換圖:
圖2 接收模塊主控狀機
該狀態(tài)機共有十個(gè)狀態(tài),其中主要狀態(tài)是:狀態(tài)1(REC_START)用來(lái)探測數據的起始位Start;狀態(tài)2(REC_BIT)用來(lái)接收數據ba到bh,組成一個(gè)字節;狀態(tài)3(REC_PARITY)用來(lái)接收數據的奇偶校驗位;狀態(tài)4(REC_STOP)探測Stop位。
下面是該狀態(tài)機控制有關(guān)邏輯讀入數據的仿真波形圖:
圖3 接收一個(gè)字節數據的狀態(tài)變換波形圖
4.2、數據發(fā)送模塊
同樣, 對于發(fā)送模塊的設計,主要問(wèn)題也是如何實(shí)現Transmitter Shift的邏輯電路,下圖是本智能卡控制器數據發(fā)送模塊的主控狀態(tài)轉換圖:
圖4 發(fā)送模塊主控狀機
該狀態(tài)機共有五個(gè)狀態(tài):狀態(tài)1(SEND_START)用來(lái)發(fā)送數據的起始位Start;狀態(tài)2(SEND_BYTE)用來(lái)發(fā)送數據ba到bh;狀態(tài)3(SEND_PARITY)用來(lái)發(fā)送數據的奇偶校驗位;狀態(tài)4(SEND_STOP)發(fā)送Stop位,最后狀態(tài)機轉入空閑狀態(tài)0(SEND_IDLE)。
下面是該狀態(tài)機控制有關(guān)邏輯發(fā)送數據的仿真波形圖:
圖5發(fā)送一個(gè)字節數據的狀態(tài)變換波形圖
4.3、函數模塊
函數模塊可以在軟件控制下產(chǎn)生激活智能卡和關(guān)閉智能卡所需的相關(guān)時(shí)序。這里簡(jiǎn)單介紹一下本控制器在軟件的支配下,激活智能卡的過(guò)程,見(jiàn)下面的波形圖。
圖6激活智能卡時(shí)的波形圖
在該波形圖中,信號IC_PRES首先變低,表明有智能卡插入。接著(zhù)智能卡控制器通過(guò)IC_PWR打開(kāi)智能卡的電源。待電源穩定后,智能卡控制器通過(guò)IC_CLK向智能卡輸出時(shí)鐘信號。同樣,在時(shí)鐘穩定后,智能卡控制器通過(guò)IC_RST向智能卡輸出復位信號。最后智能卡控制器在數據信號IC_IO上探測到智能卡復位應答(ATR,Answer to Reset),這樣就完成了智能卡的激活工作。
5.結論
本方案所設計的智能卡控制器IP核,采用Verilog HDL語(yǔ)言,以較少的硬件代價(jià),在本公司研發(fā)的硬盤(pán)數據加密芯片中,成功實(shí)現了對智能卡密鑰的讀寫(xiě)控制,并且該方案具有較強的靈活性,可以方便地移植到其它嵌入式應用系統中,具有較高的使用價(jià)值。
參考文獻:
[1] GB/T 16649.3-1996 識別卡-帶觸點(diǎn)的集成電路卡-第3部分:電信號和傳輸協(xié)議[S].
[2]Donald E, Thomas, Philip R, Moorby. 硬件描述語(yǔ)言Verilog[M] .北京:清華大學(xué)出版社,2002:15-261
[3]Neil H.E.Weste, David Harris.CMOS超大規模集成電路設計[M] .北京:中國電力出版社,2006:129-506
[4]沈理.SOC/ASIC設計、驗證和測試方法學(xué)[M] .廣州:中山大學(xué)出版社,2006:31-202
作者簡(jiǎn)介:蘇州市中科集成電路設計中心 章世華 鄒麗麗 董湘麟