<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          基于UART的智能卡接口IP核設(shè)計(jì)

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

          核主要有三大模塊;發(fā)送模塊(TX)、接收模塊(RX)、寄存器模塊(REG)。與CPU連接端為Avalon總線,與外部連接端為txd和rxd其主要結(jié)構(gòu)和信號(hào)連接如圖3所示。

          本文引用地址:http://www.ex-cimer.com/article/189738.htm

          h.JPG


          REG模塊通過(guò)tx_wr_strobe把數(shù)據(jù)tx_data寫(xiě)到TX模塊中,TX模塊按照設(shè)定的波特率往txd串行發(fā)送數(shù)據(jù),同時(shí)把發(fā)送寄存器和發(fā)送移位寄存器的狀態(tài)通過(guò)tx_ready和tx_shift_empty傳回REG模塊。
          RX模塊根據(jù)設(shè)定的波特率對(duì)rxd進(jìn)行采樣接收,當(dāng)接收到1字節(jié)有效數(shù)據(jù)時(shí)置rx_char_ready有效,REG模塊通過(guò)rx_rd_strobe讀取接收的數(shù)據(jù)。
          REG模塊中包含控制寄存器、狀態(tài)寄存器、波特率寄存器、數(shù)據(jù)寄存器,還包含Avalon總線邏輯以及各種寄存器的操作邏輯。
          2.2 結(jié)構(gòu)設(shè)計(jì),
          的引腳有電源、地、復(fù)位、時(shí)鐘、數(shù)據(jù),其中只有復(fù)位和數(shù)據(jù)線與操作有關(guān),因此在中只需要復(fù)位線和數(shù)據(jù)線。
          操作過(guò)程中,接收的數(shù)據(jù)和發(fā)送的指令都需要哲存在內(nèi),因此要在核上增加發(fā)送和接收緩沖。除此之外,還需要增加協(xié)議處理模塊用于操作過(guò)程中的判斷和交互,增加收發(fā)切換模塊實(shí)現(xiàn)異步半雙工的切換,增加發(fā)送控制模塊用于發(fā)送不同的數(shù)據(jù)。基于核的智能卡接口IP核結(jié)構(gòu)如圖4所示。

          f.JPG


          圖4中,保留UART的RX和TX模塊不變,在REG模塊中增加了RX_BUF、TX_BUF、緩沖區(qū)長(zhǎng)度寄存器,還增加了清緩沖區(qū)等功能。
          在UART核的基礎(chǔ)上增加協(xié)議處理模塊,它是操作智能卡的核心。協(xié)議處理模塊從RX模塊直接截取數(shù)據(jù)并處理,根據(jù)流程進(jìn)行各種操作。協(xié)議處理模塊可以清除接收緩沖區(qū)中的過(guò)程數(shù)據(jù)、清除無(wú)效的發(fā)送指令,協(xié)議處理模塊還控制收發(fā)的切換、控制發(fā)送指令、控制IC卡復(fù)位。
          發(fā)送控制根據(jù)協(xié)議處理中的狀態(tài)和命令,發(fā)送不同的指令到智能卡中。
          2.3 協(xié)議處理的實(shí)現(xiàn)
          在圖4中,協(xié)議處理模塊是實(shí)現(xiàn)CPU與智能卡交互的關(guān)鍵,本文采用狀態(tài)轉(zhuǎn)換的方法來(lái)實(shí)現(xiàn)。根據(jù)復(fù)位操作(圖1)和指令操作(圖2)的流程,可將智能卡的操作總結(jié)為7種狀態(tài):空閑狀態(tài)、復(fù)位狀態(tài)、接收1字節(jié)狀態(tài)、接收定長(zhǎng)數(shù)據(jù)狀態(tài)、收到0x61狀態(tài)、收到0x6c狀態(tài)、其他狀態(tài)。狀態(tài)轉(zhuǎn)換的主要條件是接收到特定的數(shù)據(jù)或接收到特定個(gè)數(shù)的數(shù)據(jù),輔助條件是當(dāng)前的狀態(tài)和其他參數(shù)。狀態(tài)轉(zhuǎn)換圖如圖5所示。

          a.JPG


          空閑狀態(tài):剛上電或無(wú)操作時(shí)處于空閑狀態(tài),IP核等待CPU的命令。
          復(fù)位狀態(tài):在空閑狀態(tài)下收到復(fù)位命令后,復(fù)位智能卡并進(jìn)入復(fù)位狀態(tài),等待接收數(shù)據(jù)。根據(jù)前2字節(jié)的回復(fù)設(shè)置接收數(shù)據(jù)長(zhǎng)度,然后進(jìn)入接收定長(zhǎng)數(shù)據(jù)狀態(tài)。
          接收定長(zhǎng)數(shù)據(jù)狀態(tài):根據(jù)前一狀態(tài)的設(shè)置,等待接收固定個(gè)數(shù)的數(shù)據(jù),當(dāng)接收到設(shè)定個(gè)數(shù)的數(shù)據(jù)時(shí),向CPU發(fā)送中斷請(qǐng)求并跳轉(zhuǎn)到空閑狀態(tài)。
          接收1字節(jié)狀態(tài):在空閑狀態(tài)下當(dāng)有效指令操作下發(fā)時(shí),發(fā)送5字節(jié)命令頭,進(jìn)入接收1字節(jié)狀態(tài)。在該狀態(tài)下,收到0x60則不進(jìn)行任何處理;收到INS時(shí)需判斷LC,若LC不為0則發(fā)送剩余指令,若LC為0則設(shè)置接收長(zhǎng)度進(jìn)入到接收定長(zhǎng)數(shù)據(jù)狀態(tài);接收到0x61或0x6c則分別進(jìn)入到相應(yīng)狀態(tài);接收到其他回復(fù)則設(shè)置固定接收長(zhǎng)度為2,并進(jìn)入接收定長(zhǎng)數(shù)據(jù)狀態(tài)。
          收到0x61狀態(tài);接收1字節(jié)數(shù)據(jù)為0x61時(shí)進(jìn)入該狀態(tài),在該狀態(tài)下等待接收1字節(jié)數(shù)據(jù)并將該數(shù)據(jù)加到00 C0 00 00后一起發(fā)送,同時(shí)回到接收1字節(jié)狀態(tài)。
          收到0x6c狀態(tài):與收到0x61過(guò)程基本一樣,將接收到的數(shù)據(jù)加到CLA INS P1 P2后面發(fā)送。
          設(shè)計(jì)時(shí),在非空閑狀態(tài)下設(shè)定超時(shí)計(jì)數(shù)器,計(jì)數(shù)器溢出后無(wú)條件返回到空閑狀態(tài),同時(shí)清除接收和發(fā)送緩沖,表示本次操作失敗。另外,所有的過(guò)程字節(jié)在狀態(tài)處理時(shí)都被清除。



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

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();