基于AMBA總線的智能卡控制器設(shè)計
塊傳輸(如圖5所示)的接收過程和字符傳輸類似,按照起始位、8 b數(shù)據(jù)位的狀態(tài)機接收數(shù)據(jù)。一個字節(jié)接收完畢后返回IDLE,當(dāng)沒有發(fā)送任務(wù)時就進(jìn)入下一次起始位等待。一個字節(jié)數(shù)據(jù)發(fā)送完畢后有若干個ETU的保護(hù)時間,然后進(jìn)入Prepare狀態(tài)準(zhǔn)備發(fā)送下一個字節(jié)數(shù)據(jù)。當(dāng)所有數(shù)據(jù)發(fā)送完畢后,系統(tǒng)維持一個塊保護(hù)時間BGT(Block Guard Time),然后進(jìn)入IDLE等待新任務(wù)。
3.3 讀寫數(shù)據(jù)緩沖器模塊
由于APB總線上連接多個功能模塊,如USB,UART等都需要占用總線進(jìn)行數(shù)據(jù)傳輸,智能卡控制器只能通過發(fā)出總線請求在有限時間占有總線。這使得在進(jìn)行智能卡讀寫操作時會申請不到總線從而來不及存儲已收到的數(shù)據(jù)或者來不及獲取新的發(fā)送數(shù)據(jù),增加讀寫數(shù)據(jù)緩沖器實現(xiàn)數(shù)據(jù)暫存可以很好地解決這個問題。緩沖器采用寬度為8位,深度為16的同步FIFO。該FIFO通過在最高位額外設(shè)置1 b來判斷空/滿標(biāo)志位。當(dāng)讀寫指針的8 b數(shù)據(jù)位和1 b最高位都相同時,F(xiàn)IFO為空。當(dāng)讀寫指針的8 b數(shù)據(jù)位相同并且1 b最高位相反時,F(xiàn)IFO為滿。根據(jù)FIFO的空滿狀態(tài)來請求或停止新的數(shù)據(jù)。
3.4 APB總線接口模塊
ARM內(nèi)核通過APB總線讀寫智能卡控制器,完成了對寄存器的設(shè)置、中斷狀態(tài)的讀取以及收發(fā)數(shù)據(jù)的讀寫,讀寫時序需要符合AMBA APB總線協(xié)議。
系統(tǒng)通過總線接口模塊設(shè)置了控制器工作頻率,傳輸方式、編碼方式、時鐘轉(zhuǎn)換因子、波特率調(diào)整因子。當(dāng)解析出智能卡為異步半雙工字符傳輸模式時,設(shè)置字符發(fā)送完畢后的保護(hù)時間和最大等待時間。當(dāng)解析出智能卡為異步半雙工塊傳輸模式時,設(shè)置塊之問保護(hù)時間,最大等待之間,以及塊內(nèi)字符間的最大等待時間。系統(tǒng)按照上述設(shè)置工作。
系統(tǒng)在設(shè)定的參數(shù)下完成對接收FIFO的讀取和對發(fā)送FIFO的寫人,并且發(fā)出讀寫使能信號控制FIFO讀寫。
在收發(fā)控制模塊產(chǎn)生中斷后,對中斷狀態(tài)寄存器設(shè)置并交由軟件處理。
4 仿真結(jié)果及FPGA驗證
智能卡控制器采用RTL級的Verilog實現(xiàn),在系統(tǒng)仿真過程中編寫智能卡仿真模型。使用Synopsys公司VCS對控制器進(jìn)行功能仿真和驗證。對智能卡的數(shù)據(jù)收發(fā)波形如圖6所示。
從仿真結(jié)果可以看出,智能卡控制器符合ISO7816-3協(xié)議,可以對智能卡進(jìn)行復(fù)位及讀寫操作。
在FPGA驗證中,采用Altera公司的StratixⅡ芯片。將智能卡控制器、AMBA總線等模塊的RTL代碼燒錄到ARM開發(fā)板的FPGA中,并且將外接一塊帶有智能卡插槽的擴展板與ARM開發(fā)板連接。使用ARM的調(diào)試軟件ARMulator對控制器進(jìn)行功能測試。測試結(jié)果表明該控制器可以成功完成對智能卡的復(fù)位和數(shù)據(jù)讀寫操作。
5 結(jié) 語
根據(jù)上述VCS仿真和FPGA驗證的結(jié)果,說明該智能卡控制器已經(jīng)達(dá)到功能要求,實現(xiàn)了ISO/IEC7816-3傳輸協(xié)議。利用Design Compiler對該模塊進(jìn)行綜合并編寫腳本對芯片的面積和時序進(jìn)行優(yōu)化,最終邏輯單元為1 368 cells,符合設(shè)計目標(biāo),實現(xiàn)了對智能卡的數(shù)據(jù)復(fù)位及收發(fā)操作。
評論