專利名稱:一種稅控加密卡的控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)應(yīng)用技術(shù),具體地說(shuō)是一種稅控加密卡的控制方法。本發(fā)明涉及電子信息領(lǐng)域,主要應(yīng)用于稅控行業(yè)加密卡對(duì)專用密碼算法芯片 SSX12的控制。核心是利用了 FPGA的硬件技術(shù)——狀態(tài)機(jī)和DMA控制器,通過(guò)硬件描述語(yǔ) 言VHDL設(shè)計(jì)出加密卡的控制方法和狀態(tài)機(jī),從而使得信息的加解密過(guò)程變的快速而高效。
背景技術(shù):
狀態(tài)機(jī)電路是一種重要的數(shù)字邏輯電路,同時(shí)又屬于時(shí)序邏輯電路的范疇,通常 用來(lái)描述數(shù)字系統(tǒng)的控制單元,是大型控制電路設(shè)計(jì)的基礎(chǔ)。根據(jù)其輸出與當(dāng)前輸入是否 有關(guān)可以把狀態(tài)機(jī)分為Mealy型和Moore型兩大類。Moore型輸出僅是當(dāng)前狀態(tài)的函數(shù), Mealy型不僅輸出當(dāng)前狀態(tài)的函數(shù),而且還與輸入信號(hào)有關(guān)。本發(fā)明采用的是Moore型狀態(tài) 機(jī)。DMA傳輸對(duì)于高效能嵌入式系統(tǒng)算法和網(wǎng)絡(luò)是很重要的,它允許不同速度的硬件 裝置來(lái)溝通,而不需要依賴CPU的大量中斷負(fù)載。否則,CPU需要從來(lái)源把每一片段的資料 復(fù)制到暫存器,然后把他們?cè)俅螌?xiě)回到新的地方。在這個(gè)時(shí)間中,CPU無(wú)法參與別的工作。 DMA傳輸?shù)闹匾饔檬菍⒁粋€(gè)內(nèi)存區(qū)從一個(gè)裝置復(fù)制到另外一個(gè)。當(dāng)CPU初始化DMA傳輸 之后,傳輸動(dòng)作本身是由DMA控制器來(lái)實(shí)行和完成的。在實(shí)現(xiàn)DMA傳輸時(shí),是由DMA控制器直接掌管總線,因此,存在著一個(gè)總線控制權(quán) 轉(zhuǎn)移問(wèn)題。即DMA傳輸前,CPU要把總線控制權(quán)交給DMA控制器,而在結(jié)束DMA傳輸后,DMA 控制器應(yīng)立即把總線控制權(quán)再交回給CPU。一個(gè)完整的DMA傳輸過(guò)程必須經(jīng)過(guò)4個(gè)步驟 DMA請(qǐng)求、DMA相應(yīng)、DMA傳輸、DMA結(jié)束。本發(fā)明是利用了 FPGA的DMA控制器實(shí)現(xiàn)數(shù)據(jù)的 DMA傳輸?shù)摹?br>
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種稅控加密卡的控制方法。本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,包括如下內(nèi)容,利用FPGA的算法狀態(tài)機(jī)和DMA控制器實(shí)現(xiàn)對(duì)密碼算法芯片SSX12的控制;或采用 FPGA的硬件描述語(yǔ)言VHDL組成算法狀態(tài)機(jī)對(duì)密碼算法芯片進(jìn)行高效控制;采用FPGA的嵌入式DMA控制器,實(shí)現(xiàn)數(shù)據(jù)的高速傳輸;在稅控加密卡對(duì)算法芯片的操作過(guò)程中及數(shù)據(jù)傳輸?shù)倪^(guò)程中,不需要CPU的干 預(yù);在稅控加密卡數(shù)據(jù)傳輸?shù)拈_(kāi)始和結(jié)束階段,分別由PC機(jī)和加密卡的FPGA發(fā)起數(shù) 據(jù)的DMA傳輸;稅控加密卡的工作過(guò)程采用“中斷”的方式,整個(gè)過(guò)程產(chǎn)生2次中斷,分別為DMA讀 結(jié)束后和算法芯片完成運(yùn)算后產(chǎn)生2次中斷給FPGA相應(yīng)的模塊;業(yè)務(wù)流程實(shí)施步驟如下
1)稅控加密卡上電、復(fù)位及初始化結(jié)束后,CPU對(duì)DMA控制器初始化,包括設(shè)置待 傳送的加密或解密數(shù)據(jù)包,設(shè)置FPGA相關(guān)的寄存器,提供要傳送的數(shù)據(jù)的起始位置和數(shù)據(jù) 長(zhǎng)度;2)DMA控制器對(duì)DMA請(qǐng)求判別優(yōu)先級(jí)及屏蔽,向總線裁決邏輯提出總線請(qǐng)求,當(dāng) CPU執(zhí)行完當(dāng)前總線周期釋放總線控制權(quán),此時(shí),總線裁決邏輯輸出總線應(yīng)答,表示DMA已 經(jīng)響應(yīng),通過(guò)DMA控制器通知加密卡開(kāi)始DMA傳輸;3)DMA控制器獲得總線控制權(quán)后,CPU即刻掛起或只執(zhí)行內(nèi)部操作,由DMA控制器 輸出讀寫(xiě)命令,直接控制內(nèi)存區(qū)與加密卡上的RAM區(qū)進(jìn)行DMA傳輸,此時(shí)數(shù)據(jù)包通過(guò)PCI總 線依次傳入到加密卡上的RAM存儲(chǔ)區(qū),以上是DMA讀的過(guò)程;4)DMA讀完成后,向FPGA的算法控制模塊產(chǎn)生中斷,算法控制模塊收到中斷后將 其清除,并設(shè)置相關(guān)程序進(jìn)程,啟動(dòng)算法狀態(tài)機(jī),算法控制模塊讀取相應(yīng)RAM區(qū)中的數(shù)據(jù), 把數(shù)據(jù)傳到外部的算法芯片SSX12 ;5)算法芯片SSX12芯片開(kāi)始工作,此時(shí)FPGA等待運(yùn)算的完成;6)算法芯片SSX12運(yùn)算完成后將加密或解密后的數(shù)據(jù)傳回到相應(yīng)的RAM區(qū),之后 算法控制模塊產(chǎn)生結(jié)束信號(hào),F(xiàn)PGA收到此信號(hào)后設(shè)置相應(yīng)的程序進(jìn)程,啟動(dòng)DMA寫(xiě)操作,將 運(yùn)算完成的數(shù)據(jù)再通過(guò)PCI總線傳回到PC機(jī);7)當(dāng)完成DMA寫(xiě)的過(guò)程后,DMA控制器釋放總線控制權(quán),CPU重新取得總線的控制 權(quán)并執(zhí)行一段檢查本次DMA傳輸操作正確性的代碼,至此完成了一筆業(yè)務(wù)運(yùn)算,包括加密 芯片自檢;8)根據(jù)PC機(jī)的命令處理完所有的業(yè)務(wù)流程,包括生成非對(duì)稱密鑰對(duì)、產(chǎn)生SK、 AK、生成支付密碼;算法狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移方式如下1)稅控加密卡復(fù)位時(shí)狀態(tài)機(jī)處于“空閑”狀態(tài);2)當(dāng)算法開(kāi)始,信號(hào)sf_start變?yōu)楦唠娖綍r(shí),進(jìn)入“算法開(kāi)始”狀態(tài),否則算法狀 態(tài)機(jī)一直處于“空閑”狀態(tài)等待;3)當(dāng)算法狀態(tài)機(jī)檢測(cè)到加密芯片處于不忙的狀態(tài)時(shí),算法芯片SSX12的B_nRd引 腳為低電平,算法狀態(tài)機(jī)進(jìn)入“寫(xiě)命令”狀態(tài),在此狀態(tài)加密卡要把相應(yīng)的命令字寫(xiě)入算法 芯片SSX12 ;4)之后狀態(tài)機(jī)進(jìn)入“寫(xiě)數(shù)據(jù)”狀態(tài),把待操作的數(shù)據(jù)依次寫(xiě)入算法芯片SSX12 ;5)算法狀態(tài)機(jī)進(jìn)入“等待”狀態(tài),等待加密芯片的運(yùn)算完成;6)當(dāng)檢測(cè)到B_nRd引腳為低電平時(shí),算法狀態(tài)機(jī)進(jìn)入“讀數(shù)據(jù)”狀態(tài),F(xiàn)PGA將操作 完成的數(shù)據(jù)依次傳回到相應(yīng)的MM區(qū)中;7)待本次業(yè)務(wù)的數(shù)據(jù)讀取完畢,算法狀態(tài)機(jī)進(jìn)入“結(jié)束”狀態(tài),至此一次狀態(tài)機(jī)流 程就完成了;8)之后算法狀態(tài)機(jī)返回“空閑”狀態(tài),等待下一次的業(yè)務(wù)開(kāi)始。本發(fā)明的優(yōu)異效果是采用Moore型狀態(tài)機(jī)作為整個(gè)加密卡的核心控制單元,對(duì) 專用密碼算法芯片進(jìn)行控制和操作。另外通過(guò)DMA控制器在內(nèi)存和加密卡上的RAM區(qū)開(kāi)辟 了 一條直接傳送數(shù)據(jù)的通路,實(shí)現(xiàn)數(shù)據(jù)的DMA傳輸,使得加密卡在速度和效率方面大大提
尚ο
圖1是稅控加密卡的控制流程圖;圖2是算法狀態(tài)機(jī)的工作流圖。
具體實(shí)施例方式參照說(shuō)明書(shū)附圖對(duì)本發(fā)明的稅控加密卡的控制方法作以下詳細(xì)地說(shuō)明。稅控加密卡的一次業(yè)務(wù)通常包括多筆運(yùn)算過(guò)程。例如生成一次支付密碼的業(yè)務(wù)包 括自檢、生成非對(duì)稱密鑰對(duì)、讀入簽名密鑰密文、讀入賬戶密鑰密文等運(yùn)算過(guò)程。附圖1是 該發(fā)明的業(yè)務(wù)流程,具體實(shí)施方式
如下1)稅控加密卡上電、復(fù)位及初始化結(jié)束后,CPU對(duì)DMA控制器初始化,包括設(shè)置待 傳送的加密或解密數(shù)據(jù)包,設(shè)置FPGA相關(guān)的寄存器,提供要傳送的數(shù)據(jù)的起始位置和數(shù)據(jù) 長(zhǎng)度。2)DMA控制器對(duì)DMA請(qǐng)求判別優(yōu)先級(jí)及屏蔽,向總線裁決邏輯提出總線請(qǐng)求。當(dāng) CPU執(zhí)行完當(dāng)前總線周期即可釋放總線控制權(quán)。此時(shí),總線裁決邏輯輸出總線應(yīng)答,表示 DMA已經(jīng)響應(yīng),通過(guò)DMA控制器通知加密卡開(kāi)始DMA傳輸。3)DMA控制器獲得總線控制權(quán)后,CPU即刻掛起或只執(zhí)行內(nèi)部操作,由DMA控制器 輸出讀寫(xiě)命令,直接控制內(nèi)存區(qū)與加密卡上的RAM區(qū)進(jìn)行DMA傳輸。此時(shí)數(shù)據(jù)包通過(guò)PCI 總線依次傳入到加密卡上的RAM存儲(chǔ)區(qū)。以上是DMA讀的過(guò)程。4)DMA讀完成后,向FPGA的算法控制模塊產(chǎn)生中斷。算法控制模塊收到中斷后將 其清除,并設(shè)置相關(guān)程序進(jìn)程,啟動(dòng)算法狀態(tài)機(jī)。算法控制模塊讀取相應(yīng)RAM區(qū)中的數(shù)據(jù), 把數(shù)據(jù)傳到外部的算法芯片SSX12。5)SSX12芯片開(kāi)始工作,此時(shí)FPGA等待運(yùn)算的完成。6) SSX12運(yùn)算完成后將加密或解密后的數(shù)據(jù)傳回到相應(yīng)的RAM區(qū),之后算法控制 模塊產(chǎn)生結(jié)束信號(hào),F(xiàn)PGA收到此信號(hào)后設(shè)置相應(yīng)的程序進(jìn)程,啟動(dòng)DMA寫(xiě)操作,將運(yùn)算完成 的數(shù)據(jù)再通過(guò)PCI總線傳回到PC機(jī)。7)當(dāng)完成DMA寫(xiě)的過(guò)程后,DMA控制器釋放總線控制權(quán),CPU重新取得總線的控制 權(quán)并執(zhí)行一段檢查本次DMA傳輸操作正確性的代碼,至此完成了一筆業(yè)務(wù)運(yùn)算(例如加密 芯片自檢)。8)根據(jù)PC機(jī)的命令處理完所有的業(yè)務(wù)流程(如生成非對(duì)稱密鑰對(duì)、產(chǎn)生SK、AK、 生成支付密碼等)。附圖2是算法狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移圖,其實(shí)施方式如下1)稅控加密卡復(fù)位時(shí)狀態(tài)機(jī)處于“空閑”狀態(tài)。2)當(dāng)算法開(kāi)始信號(hào)sf_start變?yōu)楦唠娖綍r(shí),進(jìn)入“算法開(kāi)始”狀態(tài),否則狀態(tài)機(jī)一 直處于“空閑”狀態(tài)等待。3)當(dāng)狀態(tài)機(jī)檢測(cè)到加密芯片處于不忙的狀態(tài)時(shí)(SSX12芯片的B_nRd引腳為低電 平),狀態(tài)機(jī)進(jìn)入“寫(xiě)命令”狀態(tài),在此狀態(tài)加密卡要把相應(yīng)的命令字寫(xiě)入SSX12。4)之后狀態(tài)機(jī)進(jìn)入“寫(xiě)數(shù)據(jù)”狀態(tài),把待操作的數(shù)據(jù)依次寫(xiě)入SSX12。5)狀態(tài)機(jī)進(jìn)入“等待”狀態(tài),等待加密芯片的運(yùn)算完成。
6)當(dāng)檢測(cè)到B_nRd引腳為低電平時(shí),狀態(tài)機(jī)進(jìn)入“讀數(shù)據(jù)”狀態(tài),F(xiàn)PGA將操作完成 的數(shù)據(jù)依次傳回到相應(yīng)的RAM區(qū)中。7)待本次業(yè)務(wù)的數(shù)據(jù)讀取完畢,狀態(tài)機(jī)進(jìn)入“結(jié)束”狀態(tài),至此一次狀態(tài)機(jī)流程就 完成了。8)之后狀態(tài)機(jī)返回“空閑”狀態(tài),等待下一次的業(yè)務(wù)開(kāi)始。該狀態(tài)機(jī)的具體硬件實(shí)現(xiàn)是通過(guò)FPGA的硬件描述語(yǔ)言VHDL完成的。實(shí)施例1)PC機(jī)設(shè)置待傳輸?shù)臄?shù)據(jù)包,并設(shè)置FPGA的寄存器,對(duì)DMA控制器初始化。2)PC機(jī)啟動(dòng)DMA讀(Master read)的過(guò)程,將數(shù)據(jù)包一次性傳入稅控加密卡上的 RAM存儲(chǔ)單元。3)加密卡啟動(dòng)FPGA的狀態(tài)機(jī)(狀態(tài)機(jī)的算法、工作流圖等說(shuō)明在后面詳述),控 制密碼專用算法芯片SSX12開(kāi)始工作。4)密碼專用算法芯片SSX12結(jié)束工作后,把運(yùn)算完成的數(shù)據(jù)傳回相應(yīng)的RAM存儲(chǔ) 單元。5)稅控加密卡啟動(dòng)DMA寫(xiě)(Master write)的過(guò)程,將運(yùn)算完成的數(shù)據(jù)包傳回到 PC機(jī)。除說(shuō)明書(shū)所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。
權(quán)利要求
1. 一種稅控加密卡的控制方法,其特征在于,包括如下內(nèi)容,利用FPGA的算法狀態(tài)機(jī)和DMA控制器實(shí)現(xiàn)對(duì)密碼算法芯片SSX12的控制;或采用FPGA 的硬件描述語(yǔ)言VHDL組成算法狀態(tài)機(jī)對(duì)密碼算法芯片進(jìn)行高效控制;采用FPGA的嵌入式DMA控制器,實(shí)現(xiàn)數(shù)據(jù)的高速傳輸;在稅控加密卡對(duì)算法芯片的操作過(guò)程中及數(shù)據(jù)傳輸?shù)倪^(guò)程中,不需要CPU的干預(yù);在稅控加密卡數(shù)據(jù)傳輸?shù)拈_(kāi)始和結(jié)束階段,分別由PC機(jī)和加密卡的FPGA發(fā)起數(shù)據(jù)的 DMA傳輸;稅控加密卡的工作過(guò)程采用“中斷”的方式,整個(gè)過(guò)程產(chǎn)生2次中斷,分別為DMA讀結(jié) 束后和算法芯片完成運(yùn)算后產(chǎn)生2次中斷給FPGA相應(yīng)的模塊;業(yè)務(wù)流程實(shí)施步驟如下1)稅控加密卡上電、復(fù)位及初始化結(jié)束后,CPU對(duì)DMA控制器初始化,包括設(shè)置待傳 送的加密或解密數(shù)據(jù)包,設(shè)置FPGA相關(guān)的寄存器,提供要傳送的數(shù)據(jù)的起始位置和數(shù)據(jù)長(zhǎng) 度;2)DMA控制器對(duì)DMA請(qǐng)求判別優(yōu)先級(jí)及屏蔽,向總線裁決邏輯提出總線請(qǐng)求,當(dāng)CPU執(zhí) 行完當(dāng)前總線周期釋放總線控制權(quán),此時(shí),總線裁決邏輯輸出總線應(yīng)答,表示DMA已經(jīng)響 應(yīng),通過(guò)DMA控制器通知加密卡開(kāi)始DMA傳輸;3)DMA控制器獲得總線控制權(quán)后,CPU即刻掛起或只執(zhí)行內(nèi)部操作,由DMA控制器輸出 讀寫(xiě)命令,直接控制內(nèi)存區(qū)與加密卡上的RAM區(qū)進(jìn)行DMA傳輸,此時(shí)數(shù)據(jù)包通過(guò)PCI總線依 次傳入到加密卡上的RAM存儲(chǔ)區(qū),以上是DMA讀的過(guò)程;4)DMA讀完成后,向FPGA的算法控制模塊產(chǎn)生中斷,算法控制模塊收到中斷后將其清 除,并設(shè)置相關(guān)程序進(jìn)程,啟動(dòng)算法狀態(tài)機(jī),算法控制模塊讀取相應(yīng)RAM區(qū)中的數(shù)據(jù),把數(shù) 據(jù)傳到外部的算法芯片SSX12 ;5)算法芯片SSX12芯片開(kāi)始工作,此時(shí)FPGA等待運(yùn)算的完成;6)算法芯片SSX12運(yùn)算完成后將加密或解密后的數(shù)據(jù)傳回到相應(yīng)的RAM區(qū),之后算法 控制模塊產(chǎn)生結(jié)束信號(hào),F(xiàn)PGA收到此信號(hào)后設(shè)置相應(yīng)的程序進(jìn)程,啟動(dòng)DMA寫(xiě)操作,將運(yùn)算 完成的數(shù)據(jù)再通過(guò)PCI總線傳回到PC機(jī);7)當(dāng)完成DMA寫(xiě)的過(guò)程后,DMA控制器釋放總線控制權(quán),CPU重新取得總線的控制權(quán)并 執(zhí)行一段檢查本次DMA傳輸操作正確性的代碼,至此完成了一筆業(yè)務(wù)運(yùn)算,包括加密芯片 自檢;8)根據(jù)PC機(jī)的命令處理完所有的業(yè)務(wù)流程,包括生成非對(duì)稱密鑰對(duì)、產(chǎn)生SK、AK、生 成支付密碼;算法狀態(tài)機(jī)的工作流程如下1)稅控加密卡復(fù)位時(shí)狀態(tài)機(jī)處于“空閑”狀態(tài);2)當(dāng)算法開(kāi)始,信號(hào)sf_start變?yōu)楦唠娖綍r(shí),進(jìn)入“算法開(kāi)始”狀態(tài),否則算法狀態(tài)機(jī) 一直處于“空閑”狀態(tài)等待;3)當(dāng)算法狀態(tài)機(jī)檢測(cè)到加密芯片處于不忙的狀態(tài)時(shí),算法芯片SSX12的B_nRd引腳為 低電平,算法狀態(tài)機(jī)進(jìn)入“寫(xiě)命令”狀態(tài),在此狀態(tài)加密卡要把相應(yīng)的命令字寫(xiě)入算法芯片 SSX12 ;4)之后狀態(tài)機(jī)進(jìn)入“寫(xiě)數(shù)據(jù)”狀態(tài),把待操作的數(shù)據(jù)依次寫(xiě)入算法芯片SSX12;5)算法狀態(tài)機(jī)進(jìn)入“等待”狀態(tài),等待加密芯片的運(yùn)算完成;6)當(dāng)檢測(cè)到8_111 (1引腳為低電平時(shí),算法狀態(tài)機(jī)進(jìn)入“讀數(shù)據(jù)”狀態(tài),F(xiàn)PGA將操作完成 的數(shù)據(jù)依次傳回到相應(yīng)的RAM區(qū)中;7)待本次業(yè)務(wù)的數(shù)據(jù)讀取完畢,算法狀態(tài)機(jī)進(jìn)入“結(jié)束”狀態(tài),至此一次狀態(tài)機(jī)流程就 完成了 ;8)之后算法狀態(tài)機(jī)返回“空閑”狀態(tài),等待下一次的業(yè)務(wù)開(kāi)始。
全文摘要
本發(fā)明提供了一種稅控加密卡的控制方法,該方法是通過(guò)FPGA的狀態(tài)機(jī)和DMA控制器實(shí)現(xiàn)的。本發(fā)明采用Moore型狀態(tài)機(jī)作為整個(gè)加密卡的核心控制單元,對(duì)專用密碼算法芯片進(jìn)行控制和操作。另外通過(guò)DMA控制器在內(nèi)存和加密卡上的RAM區(qū)開(kāi)辟了一條直接傳送數(shù)據(jù)的通路,實(shí)現(xiàn)數(shù)據(jù)的DMA傳輸,使得加密卡在速度和效率方面大大提高。
文檔編號(hào)G06F13/30GK102110066SQ201110034888
公開(kāi)日2011年6月29日 申請(qǐng)日期2011年2月9日 優(yōu)先權(quán)日2011年2月9日
發(fā)明者蘇振宇 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司