該IP核接口主要分為CPU總線接口、中斷信號和智能卡控制接口,這里主要介紹一下有關(guān)智能卡控制的接口信號,即連接或控制智能卡上有效觸點的信號,它們?yōu)椋?/div>
1) 智能卡是否存在信號IC_PRES:用于探測智能卡座上是否有智能卡存在,當(dāng)有智能卡插入或拔出時,該信號的電平發(fā)生跳變,本IP核能夠探測該信號的電平的變化,并以中斷等方式報告給CPU;
2) 智能卡電源控制信號IC_PWR:用于控制智能卡的電源VCC或VPP(觸點C1或C6),用于打開和關(guān)閉智能卡電源;
3) 時鐘信號IC_CLK:同智能卡觸點C3相連接,用于向智能卡輸入一定頻率的時鐘信號;
4) 復(fù)位信號IC_RST:同智能卡觸點C2相連接,用于向智能卡發(fā)出復(fù)位信號;
5) 雙向串行數(shù)據(jù)信號IC_IO:同智能卡觸點C7相連接,用于實現(xiàn)與智能卡的雙向數(shù)據(jù)通信。
3.2、模塊和功能
智能卡控制器核內(nèi)部有發(fā)送和接收模塊(Transmitter and Receiver)、中斷仲裁模塊(Interrupt Arbitrator)、函數(shù)模塊(Function Generator)、時鐘模塊(Clock Generator)、智能卡接口模塊(Interface Device)和訪問寄存器模塊(Register Access Control)六大模塊,這些模塊之間的關(guān)系見圖1所示:
主要模塊功能及特征描述如下:
1. 發(fā)送和接收模塊
發(fā)送和接收模塊負(fù)責(zé)處理數(shù)據(jù)幀的發(fā)送和接收。發(fā)送模塊是將FIFO發(fā)送隊列中的數(shù)據(jù)按照設(shè)定的格式把并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)幀,并通過發(fā)送端口送出去。接收模塊則監(jiān)視接收端信號,一旦出現(xiàn)有效開始位,就進(jìn)行接收,并實現(xiàn)將接收到的異步串行數(shù)據(jù)幀轉(zhuǎn)換為并行數(shù)據(jù),存入FIFO接收隊列中,同時檢查數(shù)據(jù)幀格式是否有錯。智能卡控制器的幀結(jié)構(gòu)是通過LCR(Line Control Reg)寄存器設(shè)置的,接收和傳送器的狀態(tài)被保存在LSR(Line Status Reg)寄存器中。
2. 中斷仲裁模塊
當(dāng)任何一種中斷條件被滿足時,并且在中斷使能寄存器(IER, Interrupt Enable Reg)中相應(yīng)位置1,那么智能卡的中斷請求信號INT被置為有效狀態(tài)。為了減少和外部軟件的交互,智能卡控制器把中斷分為四個級別,并且在中斷標(biāo)識寄存器(IIR, Interrupt ID Reg)中標(biāo)識這些中斷。四個級別的中斷按優(yōu)先級級別由高到低的順序排列為:智能卡插拔中斷、接收線路狀態(tài)中斷、接收數(shù)據(jù)準(zhǔn)備好中斷和傳送擁有寄存器為空中斷;。
3. 函數(shù)模塊
該模塊產(chǎn)生智能卡的相關(guān)時序。通過向函數(shù)寄存器(FR, Function Register)相應(yīng)的位置入相關(guān)的參數(shù)來探測智能卡、管理電源和產(chǎn)生復(fù)位時序等。
4. 時鐘模塊
時鐘模塊產(chǎn)生相應(yīng)頻率的時鐘供給智能卡,時鐘的頻率由CPU總線的時鐘頻率和寫入時鐘分頻寄存器(CDR, Clock Divisor Register)的值來決定,關(guān)系表達(dá)式如下:
fIC_CLK = fCPU /(2 * CDR)
5. 智能卡接口模塊
該模塊將相關(guān)信號進(jìn)行適當(dāng)?shù)恼{(diào)整,以便適合于IC智能卡的通信。
6. 訪問寄存器模塊
當(dāng)智能卡控制器被總線控制器選中時,CPU可通過讀或?qū)懖僮髟L問被地址線選中的寄存器。
4、設(shè)計實現(xiàn)
這部分將對本智能卡控制器中主要模塊的數(shù)字邏輯的實現(xiàn)方法逐一作簡單說明。
4.1、數(shù)據(jù)接收模塊
在設(shè)計接收模塊的過程中,關(guān)鍵是如何實現(xiàn)Receiver Shift的邏輯電路,下圖是本智能卡控制器數(shù)據(jù)接收模塊中有關(guān)Receiver Shift邏輯電路的主控狀態(tài)轉(zhuǎn)換圖:
圖2 接收模塊主控狀機
該狀態(tài)機共有十個狀態(tài),其中主要狀態(tài)是:狀態(tài)1(REC_START)用來探測數(shù)據(jù)的起始位Start;狀態(tài)2(REC_BIT)用來接收數(shù)據(jù)ba到bh,組成一個字節(jié);狀態(tài)3(REC_PARITY)用來接收數(shù)據(jù)的奇偶校驗位;狀態(tài)4(REC_STOP)探測Stop位。
下面是該狀態(tài)機控制有關(guān)邏輯讀入數(shù)據(jù)的仿真波形圖:
圖3 接收一個字節(jié)數(shù)據(jù)的狀態(tài)變換波形圖
4.2、數(shù)據(jù)發(fā)送模塊
同樣, 對于發(fā)送模塊的設(shè)計,主要問題也是如何實現(xiàn)Transmitter Shift的邏輯電路,下圖是本智能卡控制器數(shù)據(jù)發(fā)送模塊的主控狀態(tài)轉(zhuǎn)換圖:
該狀態(tài)機共有五個狀態(tài):狀態(tài)1(SEND_START)用來發(fā)送數(shù)據(jù)的起始位Start;狀態(tài)2(SEND_BYTE)用來發(fā)送數(shù)據(jù)ba到bh;狀態(tài)3(SEND_PARITY)用來發(fā)送數(shù)據(jù)的奇偶校驗位;狀態(tài)4(SEND_STOP)發(fā)送Stop位,最后狀態(tài)機轉(zhuǎn)入空閑狀態(tài)0(SEND_IDLE)。