當(dāng)前位置:首頁(yè) > EDA > 電子設(shè)計(jì)自動(dòng)化
[導(dǎo)讀]摘要:分析了UART核的結(jié)構(gòu)和智能卡的傳輸協(xié)議,提出一種基于UART核的智能卡接口IP核的設(shè)計(jì)。該設(shè)計(jì)以成熟的UART核為基礎(chǔ),無(wú)需編寫異步串口的時(shí)序與接口邏輯,僅在串口核中增加收發(fā)緩沖器和協(xié)議處理等模塊,減少了工

摘要:分析了UART核的結(jié)構(gòu)和智能卡的傳輸協(xié)議,提出一種基于UART核的智能卡接口IP核的設(shè)計(jì)。該設(shè)計(jì)以成熟的UART核為基礎(chǔ),無(wú)需編寫異步串口的時(shí)序與接口邏輯,僅在串口核中增加收發(fā)緩沖器和協(xié)議處理等模塊,減少了工作量并縮短了開(kāi)發(fā)周期。最后對(duì)所設(shè)計(jì)的IP核進(jìn)行仿真和實(shí)際測(cè)試,結(jié)果表明該IP核設(shè)計(jì)正確,運(yùn)行穩(wěn)定,適合在多卡系統(tǒng)中應(yīng)用。
關(guān)鍵詞:UART;智能卡;IC卡;IP核;FPGA

引言
    智能卡以其安全、靈活、通用等特點(diǎn),被廣泛應(yīng)用在金融、交通以及其他安全終端設(shè)備上。目前許多讀卡器都采用單片機(jī)來(lái)實(shí)現(xiàn),而在一些特殊應(yīng)用中,同時(shí)需要多張甚至10張以上的智能卡。由于卡片嚴(yán)格的時(shí)序要求,僅用單片機(jī)已經(jīng)很難實(shí)現(xiàn)多卡的并行操作。FPGA具有硬件并行性和可編程等優(yōu)點(diǎn),很容易實(shí)現(xiàn)并行且對(duì)時(shí)序邏輯要求較高的操作,同時(shí)IP核的應(yīng)用又給基于FPGA的開(kāi)發(fā)帶來(lái)了極大的便利,能減少大量開(kāi)發(fā)時(shí)間。
    本文首先介紹了智能卡的基本規(guī)范,著重分析字符傳輸協(xié)議(T=0)的操作流程。然后分析了Altera公司提供的UART IP核的結(jié)構(gòu),在此基礎(chǔ)上給出了智能卡接口IP核的設(shè)計(jì),并結(jié)合智能卡的操作流程,給出了傳輸協(xié)議的狀態(tài)轉(zhuǎn)換圖以及實(shí)現(xiàn)方法。最后對(duì)IP核進(jìn)行仿真分析和實(shí)際測(cè)試。

1 智能卡操作流程簡(jiǎn)介
   
智能卡是IC卡的一種,帶有微處理器、存儲(chǔ)單元以及芯片操作系統(tǒng),不僅具有數(shù)據(jù)存儲(chǔ)功能,同時(shí)還具有命令處理和數(shù)據(jù)安全保護(hù)等功能。智能卡采用異步半雙工通信方式,其傳輸協(xié)議分為字符傳輸協(xié)議(T=0)和塊傳輸協(xié)議(T=1),本文重點(diǎn)討論字符傳輸協(xié)議(T=0),它是目前使用較廣泛的通信協(xié)議。
    智能卡主要有復(fù)位操作和指令操作。復(fù)位操作是將智能卡的復(fù)位引腳拉低若干周期,拉高后智能卡回復(fù)1個(gè)數(shù)據(jù)幀,提供了協(xié)議選擇、時(shí)鐘轉(zhuǎn)換因子、波特率調(diào)整因子等參數(shù),可供后續(xù)操作使用。該幀的長(zhǎng)度在第2個(gè)字節(jié)中體現(xiàn),因此先接收2個(gè)字節(jié),再接收固定長(zhǎng)度的數(shù)據(jù),操作流程圖如圖1所示。


    T=0時(shí),指令操作主要有4種情況,如表1所列。


    根據(jù)中國(guó)金融集成電路(IC)卡規(guī)范的規(guī)定,可在情況1后面補(bǔ)0,組成5字節(jié)指令。這時(shí),4種情況都可歸納為:發(fā)送前5字節(jié),等待接收1字節(jié)回復(fù),由回復(fù)決定后續(xù)的操作。
    1字節(jié)的回復(fù)分為過(guò)程字節(jié)和狀態(tài)字節(jié)兩類,過(guò)程字節(jié)主要有INS(或INS補(bǔ)碼)、60、61、6C;除過(guò)程字節(jié)以外的其他回復(fù)都屬于狀態(tài)字節(jié)。收到過(guò)程字節(jié)后須執(zhí)行對(duì)應(yīng)操作。接收到狀態(tài)字節(jié)后須再等待接收1字節(jié)狀態(tài)回復(fù),將兩個(gè)狀態(tài)字節(jié)上傳給控制器,終止本次操作。T=0
時(shí)的指令操作流程圖如圖2所示。



2 智能卡接口IP核的設(shè)計(jì)與實(shí)現(xiàn)
2.1 UART核分析
    UART接口已經(jīng)很成熟,已有許多現(xiàn)成的IP核可使用,利用UART進(jìn)行智能卡接口IP核的設(shè)計(jì)可減少大量的開(kāi)發(fā)時(shí)間。本文以Altera公司的Avalon總線接口的UART核(下文中所有UART核均指該核)為基礎(chǔ)進(jìn)行設(shè)計(jì)。
    UART核主要有三大模塊;發(fā)送模塊(TX)、接收模塊(RX)、寄存器模塊(REG)。與CPU連接端為Avalon總線接口,與外部連接端為txd和rxd其主要結(jié)構(gòu)和信號(hào)連接如圖3所示。


    REG模塊通過(guò)tx_wr_strobe把數(shù)據(jù)tx_data寫到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 智能卡接口IP核結(jié)構(gòu)設(shè)計(jì),
   
智能卡的引腳有電源、地、復(fù)位、時(shí)鐘、數(shù)據(jù),其中只有復(fù)位和數(shù)據(jù)線與操作有關(guān),因此在IP核中只需要復(fù)位線和數(shù)據(jù)線。
    智能卡操作過(guò)程中,接收的數(shù)據(jù)和發(fā)送的指令都需要哲存在IP核內(nèi),因此要在UART核上增加發(fā)送和接收緩沖。除此之外,還需要增加協(xié)議處理模塊用于操作過(guò)程中的判斷和交互,增加收發(fā)切換模塊實(shí)現(xiàn)異步半雙工的切換,增加發(fā)送控制模塊用于發(fā)送不同的數(shù)據(jù)。基于UART核的智能卡接口IP核結(jié)構(gòu)如圖4所示。


    圖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所示。


    空閑狀態(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í)都被清除。
2.4 智能卡接口IP核的實(shí)現(xiàn)
   
由于篇幅有限,本文只介紹狀態(tài)轉(zhuǎn)換和指令的實(shí)現(xiàn)方法。
    用變量state表示當(dāng)前的狀態(tài),有效值為0~5,其他值均為無(wú)效狀態(tài),在無(wú)效狀態(tài)下將直接跳轉(zhuǎn)到空閑狀態(tài)。狀態(tài)與state的對(duì)應(yīng)關(guān)系如表2所列。


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

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


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


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

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉