<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 基于UART的智能卡接口IP核設計

基于UART的智能卡接口IP核設計

作者: 時(shí)間:2012-12-16 來(lái)源:網(wǎng)絡(luò ) 收藏

2.4 的實(shí)現
由于篇幅有限,本文只介紹狀態(tài)轉換和指令的實(shí)現方法。
用變量state表示當前的狀態(tài),有效值為0~5,其他值均為無(wú)效狀態(tài),在無(wú)效狀態(tài)下將直接跳轉到空閑狀態(tài)。狀態(tài)與state的對應關(guān)系如表2所列。

本文引用地址:http://dyxdggzs.com/article/189738.htm

b.JPG


本文所使用的收發(fā)緩沖模塊為SCFIFO,所有下發(fā)指令都先寫(xiě)入到發(fā)送FIFO,所有接收的數據都進(jìn)入到接收FIFO。
表1中,4種指令長(cháng)度都大于4,為實(shí)現復位操作,定義復位指令長(cháng)度為1。實(shí)現時(shí),為便于判斷指令,在指令之前先將指令長(cháng)度寫(xiě)到發(fā)送FIFO中。定義復位操作指令為01 01,其他操作指令為L(cháng)EN(指令長(cháng)度)+CMD(指令本身)。先取出指令長(cháng)度,當FIFO數據達到該長(cháng)度時(shí)表示一個(gè)完整的指令已經(jīng)下發(fā),這時(shí)才可對進(jìn)行操作。

3 仿真與實(shí)際測試
3.1 Modelsim仿真分析
為驗證的正確性,在Modelsim ASE6.6d上進(jìn)行了仿真分析。仿真時(shí),測試程序模擬CPU向IP核發(fā)送指令,同時(shí)模擬智能卡給IP核回復數據。
3.1.1 復位操作仿真
測試程序模塊CPU向發(fā)送緩沖區寫(xiě)復位指令01 01,再模擬智能卡回復3b 7d 94 00 00 57 44 37 51 90 86 93 85 3e 97 06 2e 24(數據來(lái)源于實(shí)際PSAM卡)。圖6是復位操作的Modelsim仿真圖。

c.JPG


圖6中,收到01 01指令后,IP核清空發(fā)送緩沖(tx_bur_clr=1),使IC卡復位(ic_reset=0),并跳轉到復位狀態(tài)(state=5)。由圖中可以看出,IP核接收到2字節后計算出回復的總長(cháng)度為18,狀態(tài)變?yōu)榻邮斩ㄩL(cháng)數據狀態(tài)(state=4)。當接收到的數據個(gè)數達到設定長(cháng)度時(shí)(rx_buf_len =18),向CPU申請中斷(irq=1),同時(shí)回到空閑狀態(tài)(state=0)。
由仿真看出,復位操作時(shí)序正確。
3.1.2 取隨機數操作仿真
測試程序模擬CPU向發(fā)送緩沖區寫(xiě)取隨機數指令05 00 84 00 OO 08,再模擬智能卡回復84 11 22 33 44 5566 77 88 90 00(8字節隨機數任意填寫(xiě))。圖7是取隨機數操作的Modelsim仿真圖。

d.JPG


圖7中,取隨機數指令下發(fā)后,IP核將數據線(xiàn)切換為發(fā)送(t_r_sel=0),發(fā)送指令并跳轉到接收1字節狀態(tài)(state=1)。當第1個(gè)字節等于INS(84)且LC=0時(shí),清空接收緩沖區中的過(guò)程響應(rx_bur_elr=1),設置接收長(cháng)度為10(rx_const_len=0a),跳轉到接收定長(cháng)數據狀態(tài)(state= 4)。當接收到10個(gè)數據(rx_bur_len=00a)后跳轉到空閑狀態(tài),同時(shí)向CPU申請中斷(irq=1)。
由仿真看出,取隨機數據操作時(shí)序正確。
3.2 實(shí)際測試
對本文設計的IP核進(jìn)行了實(shí)際測試。采用Ahera公司的Nios Il CPU作為控制器,EP3C40F48417N為FPGA芯片,用10張PSAM卡作為測試的IC卡,CPU時(shí)鐘為88.473 6 MHz,PSAM時(shí)鐘為5.529 6 MHz。
測試操作過(guò)程為:
①返回根目錄3f00;
②取PSAM卡序列號;
③進(jìn)入文件目錄df01;
④初始化加密認證;
⑤取認證碼;
⑥取隨機數。
6個(gè)操作為1輪,每秒對10張PSAM卡進(jìn)行一輪測試。共測了201 803輪,耗時(shí)20 908 s,平均每秒9.65輪,所有操作全部成功。
由此驗證,該IP核設計正確,運行穩定。

結語(yǔ)
本文分析了核與智能卡的結構,對T=0時(shí)的操作進(jìn)行歸納,設計出基于的智能卡接口IP核。由于不需要重新設計的接收、發(fā)送以及相關(guān)寄存器等功能,使開(kāi)發(fā)周期縮短了至少一半。將該IP核用在多卡系統中,能大量減輕CPU的負擔,提高CPU的效率。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: UART IP核 智能卡 接口

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>