專利名稱:一種高速隨機(jī)性檢測(cè)卡的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于TMS320C672x系列DSP的高速隨機(jī)性檢測(cè)卡,該檢測(cè)卡完全兼容 并支持國家隨機(jī)性檢測(cè)標(biāo)準(zhǔn)指出的15種隨機(jī)性檢測(cè)項(xiàng)目,可以對(duì)任意二元序列的隨機(jī)性 進(jìn)行快速檢測(cè),也可以對(duì)能夠轉(zhuǎn)化為等價(jià)二元序列的其它任意序列的隨機(jī)性進(jìn)行快速檢 測(cè)。
背景技術(shù):
隨機(jī)數(shù)在信息科學(xué)的眾多應(yīng)用領(lǐng)域以及工業(yè)界中都發(fā)揮著極其重要的作用,己被廣泛 地應(yīng)用于工業(yè)和學(xué)術(shù)研究領(lǐng)域。例如,工業(yè)仿真領(lǐng)域需要用到隨機(jī)數(shù),娛樂業(yè)(博彩、抽 獎(jiǎng)等)中使用到隨機(jī)數(shù),商業(yè)決策處理過程中需要使用隨機(jī)數(shù),計(jì)算機(jī)模擬與軟件測(cè)試中 需要隨機(jī)數(shù),人工智能研究領(lǐng)域更需要使用大量的隨機(jī)數(shù),等等。
隨機(jī)性檢測(cè)是使用一種或多種特定的檢測(cè)方法,從多個(gè)方面?zhèn)让鎸?duì)任意待測(cè)序列的隨 機(jī)性進(jìn)行檢測(cè),并確定其隨機(jī)性指標(biāo)的過程。
美國聯(lián)邦政府在2001年發(fā)布的密碼模塊評(píng)估標(biāo)準(zhǔn)(FIPS PUB 140-2 SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES)中指定了 4項(xiàng)基本的隨機(jī)性檢測(cè)項(xiàng)目,分別 為單比特頻數(shù)檢測(cè)、撲克檢測(cè)、游程總數(shù)檢測(cè)以及塊內(nèi)最大"1"游程檢測(cè)。我國有關(guān)主 管部門制定的隨機(jī)性檢測(cè)標(biāo)準(zhǔn)除了包括上述4項(xiàng)隨機(jī)性檢測(cè)項(xiàng)目,還指定了 ll項(xiàng)擴(kuò)展的 隨機(jī)性檢測(cè)項(xiàng)目。
目前,國內(nèi)外機(jī)構(gòu)和組織己開發(fā)出了一些較為成熟的隨機(jī)性檢測(cè)軟件。例如,美國佛 羅里達(dá)州立大學(xué)研制的Diehard軟件、美國國家標(biāo)準(zhǔn)技術(shù)局研制的RNGT軟件以及澳大利 亞昆士蘭理工大學(xué)研制的CRYPT-X軟件等。此外,國內(nèi)的一些科研院所和高校也開發(fā)了一 些包含統(tǒng)計(jì)檢測(cè)功能的軟件。但是,目前的隨機(jī)性檢測(cè)工具主要以純軟件系統(tǒng)的形式提供, 尚沒有完全兼容并支持國家相關(guān)隨機(jī)性檢測(cè)標(biāo)準(zhǔn)中全部15項(xiàng)檢測(cè)項(xiàng)目的硬件系統(tǒng)或者工 具。
與純軟件系統(tǒng)相比,硬件系統(tǒng)具有兼容性強(qiáng)、檢測(cè)效率高、穩(wěn)定性好等優(yōu)點(diǎn)??蓶碎?到的公開資料表明,目前只有日本郵政省通信綜合研究所(CRL)曾在Xilinx Virtex II FPGA 上實(shí)現(xiàn)了 FIPS 140提出的4項(xiàng)基本的隨機(jī)性檢測(cè)項(xiàng)目;但是,該系統(tǒng)規(guī)模小,且僅適用 于密碼產(chǎn)品的自檢。此外,荷蘭的L'哈爾斯申請(qǐng)了幾個(gè)單項(xiàng)的隨機(jī)性檢測(cè)方法的專利,用于工業(yè)中在線輸出序列的隨機(jī)性檢測(cè),但是這幾項(xiàng)檢測(cè)也比較分散、并且也不全面,并 沒有形成系統(tǒng)的硬件支撐工具。
發(fā)明內(nèi)容
本發(fā)明提供了一種完全兼容并支持國家隨機(jī)性檢測(cè)標(biāo)準(zhǔn)的高速隨機(jī)性檢測(cè)卡,使用該 檢測(cè)卡可以對(duì)任意二元序列(或能夠轉(zhuǎn)化為等價(jià)二元序列的其它形式的任意序列)進(jìn)行高 速的隨機(jī)性檢測(cè)。
本發(fā)明與帶有USB接口的主機(jī)配合使用,構(gòu)成C/S (客戶端/服務(wù)器端)結(jié)構(gòu),隨機(jī)性 檢測(cè)卡為服務(wù)器端,USB主機(jī)為客戶端。USB主機(jī)可以是任何帶有USB傳輸接口的計(jì)算設(shè) 備,包括個(gè)人電腦、服務(wù)器、甚至帶有USB接口的移動(dòng)計(jì)算設(shè)備。
隨機(jī)性檢測(cè)包括兩個(gè)要素,樣本和參數(shù),樣本指定隨機(jī)性檢測(cè)的對(duì)象;參數(shù)指定需要 對(duì)樣本進(jìn)行哪項(xiàng)檢測(cè)以及該項(xiàng)檢測(cè)的參數(shù);檢測(cè)卡需要在這兩種要素齊備的前提下對(duì)樣本 進(jìn)行檢測(cè)。檢測(cè)卡接收USB主機(jī)發(fā)送來的待測(cè)樣本和檢測(cè)參數(shù)、適時(shí)執(zhí)行隨機(jī)性檢測(cè),給 USB主機(jī)返回檢測(cè)結(jié)果,并對(duì)多任務(wù)檢測(cè)的并行處理提供支持。
1. 本發(fā)明的硬件體系結(jié)構(gòu)
本發(fā)明硬件結(jié)構(gòu)的基本組件包括TMS320C672X數(shù)字信號(hào)處理器、用于存放固化程序 的FLASH(閃速儲(chǔ)存器)、用于與USB主機(jī)數(shù)據(jù)傳輸?shù)腢SB控制芯片、以及至少一片用于通 用儲(chǔ)存功能的SDRAM (Synchronous Dynamic Random Access Memory,同步動(dòng)態(tài)隨機(jī)存取儲(chǔ) 存器),此外,還包括ESAM(Embedded Secure Access Module,嵌入式安全模塊),為隨機(jī) 性檢測(cè)卡提供防檢測(cè)、抗攻擊、自毀等硬件特性,而且通過加密認(rèn)證功能,ESAM還可以 保護(hù)隨機(jī)性檢測(cè)卡的軟件不被非法拷貝。
隨機(jī)性檢測(cè)卡上預(yù)留了硬件擴(kuò)展接口,以方便其它外圍設(shè)備與DSP中UHPI(Universal Host Port Interface,通用主機(jī)接口)的連接,為硬件升級(jí)和功能擴(kuò)展提供了條件。
2. 本發(fā)明的軟件體系結(jié)構(gòu)
本發(fā)明的軟件系統(tǒng)采用了高度模塊化、可擴(kuò)展的體系結(jié)構(gòu),包括硬件配置模塊、USB 傳輸模塊、數(shù)據(jù)包處理模塊和隨機(jī)性檢測(cè)算法庫,這些軟件模塊是隨機(jī)性檢測(cè)的基本功能 模塊。此外,為了同時(shí)響應(yīng)USB主機(jī)的多個(gè)隨機(jī)性檢測(cè)請(qǐng)求,還加入了任務(wù)管理模塊和儲(chǔ) 存管理模塊。USB主機(jī)的每一個(gè)檢測(cè)請(qǐng)求,對(duì)應(yīng)檢測(cè)卡內(nèi)的一個(gè)檢測(cè)任務(wù),各個(gè)檢測(cè)任務(wù)的處理邏輯基于FSM (finite state machine,有限狀態(tài)自動(dòng)機(jī)模型)。FSM是一種抽象的計(jì) 算模型,它擁有有限數(shù)量的狀態(tài),每個(gè)狀態(tài)可以遷移到零個(gè)或多個(gè)狀態(tài),輸入字串決定執(zhí) 行哪個(gè)狀態(tài)的遷移。有限狀態(tài)自動(dòng)機(jī)可以表示為一個(gè)有向圖。本發(fā)明中,F(xiàn)SM各個(gè)狀態(tài)對(duì) 應(yīng)著檢測(cè)任務(wù)執(zhí)行的各個(gè)階段,輸入字串為接收到數(shù)據(jù)包的種類,檢測(cè)任務(wù)根據(jù)當(dāng)前輸入 數(shù)據(jù)包的種類轉(zhuǎn)移到其他狀態(tài),該狀態(tài)可供USB主機(jī)隨時(shí)獲取。這種機(jī)制確保了主機(jī)對(duì)檢 測(cè)卡運(yùn)行狀態(tài)的可知性和可控性,給檢測(cè)卡軟硬件的調(diào)試和升級(jí)帶來方便。
目前,本發(fā)明可支持的最大檢測(cè)樣本長度是以SDRAM的容量為限制的,SDRAM具 有遠(yuǎn)大于DSP的片內(nèi)高速RAM的儲(chǔ)存空間。但是,CPU對(duì)SDRAM的訪問速度比RAM 慢很多,CPU直接訪問SDRAM讀取樣本數(shù)據(jù),無疑會(huì)急劇降低隨機(jī)性檢測(cè)的效率。本發(fā) 明對(duì)樣本數(shù)據(jù)的讀取采用新穎的PING-PONG緩沖技術(shù)。PING-PONG緩沖區(qū)技術(shù)又稱"雙 緩沖技術(shù)",是利用DSP中的D區(qū)X(Dual Data Movement Accelerator,雙路數(shù)據(jù)傳輸加速 器)實(shí)現(xiàn)在高速RAM中進(jìn)行數(shù)據(jù)緩沖的數(shù)據(jù)存取技術(shù)。針對(duì)隨機(jī)性檢測(cè)卡的功能需要,本 發(fā)明對(duì)PING-PONG緩沖技術(shù)進(jìn)行適應(yīng)性改造,確保CPU以片內(nèi)RAM作為高速緩存,高 速的讀取外擴(kuò)SDRAM中的樣本數(shù)據(jù)。
3.本發(fā)明的功能特性
目前,本發(fā)明能夠?qū)﹂L度小于或等于108比特的任意二元序列(對(duì)于其它形式的序列, 需要轉(zhuǎn)化為等價(jià)的二元序列)進(jìn)行高速的隨機(jī)性檢測(cè)。本發(fā)明支持FIPS 140-2指定的4種 基本隨機(jī)性檢測(cè)項(xiàng)目,同時(shí)也完全兼容并支持國家隨機(jī)性檢測(cè)標(biāo)準(zhǔn)指定的15種隨機(jī)性檢 測(cè)項(xiàng)目。對(duì)于每一個(gè)檢測(cè)項(xiàng)目,本發(fā)明以浮點(diǎn)數(shù)的形式返回給USB主機(jī),包括標(biāo)準(zhǔn)化 ; -w /""統(tǒng)計(jì)值等多項(xiàng)檢測(cè)結(jié)果。
本發(fā)明支持檢測(cè)任務(wù)的并發(fā)處理功能,可以對(duì)來自USB主機(jī)的多個(gè)隨機(jī)性檢測(cè)請(qǐng)求進(jìn) 行響應(yīng),提供了完善的API (Application Programming Interface,應(yīng)用編程接口),封裝 了檢測(cè)卡提供的各種檢測(cè)邏輯,用戶可以通過API在USB主機(jī)上方便的開發(fā)出基于本檢測(cè) 卡的應(yīng)用程序。
本發(fā)明的優(yōu)點(diǎn)和技術(shù)效果如下
1. 本發(fā)明提供了跨PC操作系統(tǒng)的高速、穩(wěn)定、便捷的隨機(jī)性檢測(cè)基礎(chǔ)支撐工具。
2. 本發(fā)明與純軟件的隨機(jī)性檢測(cè)工具相比,具有占用系統(tǒng)資源低、檢測(cè)速度快、便攜、 易于安裝和使用等優(yōu)點(diǎn)。3. 本發(fā)明的軟硬件設(shè)計(jì)還為日后的功能擴(kuò)展和軟硬件升級(jí)提供了完善的接口。
4. 本發(fā)明提供安全方便的固件程序的在線更新功能,可以通過USB接口把待更新的程 序代碼固化到FLASH中,實(shí)現(xiàn)檢測(cè)卡的功能升級(jí)。
5. 本發(fā)明的軟件模塊之間具有很低的耦合度,易于對(duì)本發(fā)明進(jìn)行功能升級(jí)和性能優(yōu)化。
圖l隨機(jī)性檢測(cè)卡硬件體系結(jié)構(gòu)簡圖; 圖2隨機(jī)性檢測(cè)卡的軟件結(jié)構(gòu)圖; 圖3 PING-PONG緩沖示意圖4儲(chǔ)存管理模塊"收緊"操作示意; 其中a)未"收緊"前的樣本儲(chǔ)存狀態(tài);
b)"收緊"后的樣本儲(chǔ)存狀態(tài);
C)"收緊"后的儲(chǔ)存空間可以容納樣本D; 圖5檢測(cè)狀態(tài)轉(zhuǎn)換圖; 圖6檢測(cè)流程a)為一般的順序檢測(cè)流程;b)為批量檢測(cè)時(shí)的檢測(cè)流程; 圖7檢測(cè)卡工作流程圖; 圖8中斷處理程序流程圖。
具體實(shí)施例方式
1. 硬件實(shí)現(xiàn)
本發(fā)明的硬件體系結(jié)構(gòu)如圖1所示。CPU通過EMIF(External Memory Interface,外 部儲(chǔ)存接口)實(shí)現(xiàn)CPU與SDRAM、 FLASH、和USB接口的數(shù)據(jù)傳輸;通過UHPI實(shí)現(xiàn)對(duì)FLASH 和USB控制器的部分邏輯控制以及對(duì)ESAM的訪問;此外,預(yù)留了UHPI中的部分總線實(shí)現(xiàn) 擴(kuò)展的硬件接口。
2. 軟件架構(gòu)
如圖2所示,本實(shí)施例的軟件系統(tǒng)由6個(gè)軟件模塊構(gòu)成,各個(gè)模塊的功能描述如下 1)隨機(jī)性檢測(cè)算法庫
本模塊提供了國家隨機(jī)性檢測(cè)標(biāo)準(zhǔn)中指定的15種隨機(jī)性檢測(cè)項(xiàng)目的高效DSP實(shí)現(xiàn)算 法。DSP實(shí)現(xiàn)算法基于C語言,并且針對(duì)DSP的功能特性進(jìn)行優(yōu)化,充分利用了C672X系
6列DSP固有的并行特性和循環(huán)優(yōu)化功能,實(shí)現(xiàn)了較高的執(zhí)行效率。
本算法庫提供固定格式的接口,輸入?yún)?shù)包括樣本位置,樣本長度,參數(shù)結(jié)構(gòu);輸出 結(jié)果包括精確到0. 000001的統(tǒng)計(jì)值和/7-w/"e 。
由于從SDRAM中直接讀取數(shù)據(jù)效率較低,本發(fā)明使用PING-PONG緩沖技術(shù)支持隨機(jī)性 檢測(cè)算法庫的調(diào)用。
PING-PONG緩沖技術(shù)是通過DMAX控制器與RTI (Real Time Interrupt,實(shí)時(shí)中斷)計(jì)時(shí) 器中斷配合實(shí)現(xiàn)的。首先,在RAM中申請(qǐng)兩塊長度為L字節(jié)的連續(xù)儲(chǔ)存區(qū)域,分別記為A(稱 為"PING緩沖區(qū)")和B(稱為"PONG緩沖區(qū)"),稱這個(gè)長度為2L字節(jié)的儲(chǔ)存區(qū)域?yàn)?"PING-PONG緩沖區(qū)"。在啟動(dòng)某一個(gè)隨機(jī)性檢測(cè)項(xiàng)目之前,首先通過把樣本數(shù)據(jù)的前2L 字節(jié)長度的數(shù)據(jù)通過DMAX復(fù)制到PING-PONG緩沖區(qū);然后,啟動(dòng)計(jì)時(shí)器中斷,系統(tǒng)以固 定的時(shí)間間隔進(jìn)入中斷處理程序;初始化CNT (檢測(cè)長度計(jì)數(shù)器)為0字節(jié),表示已經(jīng)處 理的樣本長度為O字節(jié);啟動(dòng)檢測(cè)程序。
啟動(dòng)檢測(cè)程序之后,系統(tǒng)不斷的進(jìn)入計(jì)時(shí)器中斷處理程序。中斷處理程序中,首先讀 取CNT的值,當(dāng)CNT的值大于L字節(jié)時(shí),表示檢測(cè)程序已經(jīng)檢測(cè)完了一塊PING(PONG)緩沖 區(qū),此時(shí),將CNT值減去L字節(jié),并再次啟動(dòng)DMAX傳輸,將SDRAM中樣本數(shù)據(jù)中的下一 塊長度為L字節(jié)的數(shù)據(jù)傳到檢測(cè)程序剛剛處理過的PING-PONG緩沖區(qū)中;如此往復(fù),直到 整個(gè)檢測(cè)結(jié)束。在整個(gè)檢測(cè)結(jié)束之后,關(guān)閉計(jì)時(shí)器中斷。
圖3為PING-PONG緩沖原理的示意圖,PING-PONG緩沖實(shí)質(zhì)上就是利用DMAX的數(shù)據(jù)搬 運(yùn)功能,使RAM成為CPU從SDRAM中讀取數(shù)據(jù)的高速緩存。
為了使得PING-PONG緩沖技術(shù)能夠正常工作,對(duì)隨機(jī)性檢測(cè)算法庫中數(shù)據(jù)地址做相應(yīng) 的調(diào)整。記樣本數(shù)據(jù)中的某字節(jié)數(shù)據(jù)在SDRAM中對(duì)于該樣本起始地址的相對(duì)地址為Addr, 則在使用PING-PONG緩沖技術(shù)之后,獲取該字節(jié)需要訪問的地址為Addr%2L( "%"為求模 操作符),該地址即為當(dāng)前需要檢測(cè)字節(jié)在PING-PONG緩沖區(qū)中的相對(duì)地址。
2)硬件配置模塊
該模塊實(shí)現(xiàn)對(duì)隨機(jī)性檢測(cè)卡的各種硬件的參數(shù)配置,這些配置為檢測(cè)卡運(yùn)行和檢測(cè)邏 輯提供支撐。
對(duì)系統(tǒng)運(yùn)行提供基本功能支撐的主要包括對(duì)EMIF、 PLLC(Phase-Locked Loop Controller,鎖相環(huán))的配置。其中,EMIF用于配置SDRAM和FLASH的工作方式;PLLC用 于配置CPU和其他外圍設(shè)備的工作頻率;USB控制器用于配置USB傳輸方式;UHPI控制器
7用于配置DSP通用輸入輸出總線的工作方式,這些總線用于外圍設(shè)備的控制或者數(shù)據(jù)傳輸 以及為檢測(cè)卡提供硬件升級(jí)的接口 。
對(duì)檢測(cè)功能提供支撐的包括RTI、 DMAX以及硬件中斷的配置,RTI和DMAX主要用于 PING-PONG緩沖的實(shí)現(xiàn),硬件中斷設(shè)置了各個(gè)硬件中斷事件以及相應(yīng)的中斷處理程序。
上述各個(gè)系統(tǒng)硬件的配置是通過TI(美國德州儀器公司)提供的CSL(Chip Support Library,芯片支持庫)中相應(yīng)的模塊來實(shí)現(xiàn)的。
3) USB傳輸模塊
該模塊實(shí)現(xiàn)數(shù)據(jù)在DSP和USB主機(jī)之間的雙向傳輸功能,DSP和USB主機(jī)以定長數(shù)據(jù) 包的形式傳輸數(shù)據(jù)。
首先,在系統(tǒng)初始化中需要配置USB中各個(gè)端點(diǎn)(Endpoint)的工作方式、傳輸速率, 數(shù)據(jù)緩沖大小等各種配置信息,本發(fā)明中的配置使用一個(gè)傳入端點(diǎn)(IN Endpoint)和一 個(gè)傳出端點(diǎn)(OUT Endpoint),都采用USB2. O(或USB1. l)標(biāo)準(zhǔn)中指定的Bulk Transfer (塊 傳輸)的工作方式。
USB數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)是通過檢測(cè)卡的硬件中斷與USB控制器的配合使用來實(shí)現(xiàn)的,當(dāng) USB主機(jī)發(fā)生數(shù)據(jù)傳輸或者USB配置請(qǐng)求的時(shí)候,檢測(cè)卡中會(huì)產(chǎn)生相應(yīng)的硬件中斷,陷入 中斷處理程序之后,檢測(cè)卡首先根據(jù)USB控制器中寄存器的狀態(tài)判斷為傳入中斷還是傳出 中斷,之后通過對(duì)USB控制器中各個(gè)寄存器的設(shè)置,實(shí)現(xiàn)數(shù)據(jù)的輸入輸出。
4) 儲(chǔ)存管理模塊
本發(fā)明支持多個(gè)隨機(jī)性檢測(cè)任務(wù)并行執(zhí)行,每個(gè)檢測(cè)任務(wù)支持的最大樣本數(shù)據(jù)長度為 108比特。對(duì)于如此海量的樣本數(shù)據(jù),只能將其儲(chǔ)存在片外SDRAM中并對(duì)儲(chǔ)存空間加以管 理,以便充分利用SDRAM的儲(chǔ)存空間,并盡可能允許后續(xù)任務(wù)的檢測(cè)。
儲(chǔ)存管理模塊主要包括査詢當(dāng)前儲(chǔ)存狀況、樣本儲(chǔ)存空間的申請(qǐng)、釋放、樣本緩沖區(qū) "收緊"功能。
本發(fā)明以雙向鏈表的方式表示儲(chǔ)存器空間,鏈表中的每個(gè)結(jié)點(diǎn)代表儲(chǔ)存器中的一段連 續(xù)的空閑空間的起始位置和大小,各個(gè)結(jié)點(diǎn)按照儲(chǔ)存器中空閑空間的先后位置排列,只需 遍歷該鏈表即可獲取儲(chǔ)存器的所有當(dāng)前信息。
申請(qǐng)儲(chǔ)存空間的方法為從雙向鏈表的起始結(jié)點(diǎn)開始,找到一個(gè)容量大于或者等于欲 申請(qǐng)長度的節(jié)點(diǎn),改變?cè)摻Y(jié)點(diǎn)的起始地址為原起始地址加上樣本長度,改變?cè)摻Y(jié)點(diǎn)的大小為大小減去樣本長度,如果改節(jié)點(diǎn)的長度變?yōu)?,則在雙向鏈表中刪除此結(jié)點(diǎn);返回原起 始地址為申請(qǐng)到的樣本地址。
釋放儲(chǔ)存空間的方法為申請(qǐng)一個(gè)結(jié)點(diǎn),其長度為欲釋放的空間大小,地址為欲釋放 空間的位置,將其鏈接到雙向鏈表的合適位置,如果該結(jié)點(diǎn)與其前一結(jié)點(diǎn)或者其后一結(jié)點(diǎn) 所代表的空閑空間是連續(xù)的,則將該兩個(gè)連續(xù)結(jié)點(diǎn)中的前一個(gè)的長度改為兩個(gè)結(jié)點(diǎn)的長度 之和,并在鏈表中刪除后一結(jié)點(diǎn)。
本發(fā)明中,樣本數(shù)據(jù)只能儲(chǔ)存在連續(xù)的內(nèi)存區(qū)域。見圖4,在檢測(cè)卡運(yùn)行若干檢測(cè)項(xiàng) 目樣本空間的申請(qǐng)和釋放之后,其樣本緩沖區(qū)中可能包含多個(gè)不連續(xù)的樣本數(shù)據(jù),這會(huì)使 樣本緩沖區(qū)中存在"空隙"。某些時(shí)候,樣本緩沖區(qū)的剩余空間在"空隙"中分散,雖然 其總量足夠大,但是仍然無法容納某些長度的樣本數(shù)據(jù),從而導(dǎo)致檢測(cè)任務(wù)的失敗。為此, 本發(fā)明利用樣本緩沖區(qū)"收緊"功能,把當(dāng)前已有的樣本重新連續(xù)排列,讓分散的空閑儲(chǔ) 存空間集中起來,以便能夠容納更長的樣本。這種技術(shù)的采用提高了隨機(jī)性檢測(cè)卡的可靠 性和穩(wěn)定性。圖4的圖a)中,因?yàn)闃颖緝?chǔ)存區(qū)中存在"空隙",雖然空隙的總量足夠大, 但是仍然無法為樣本D申請(qǐng)空間;圖b)中,對(duì)樣本儲(chǔ)存區(qū)作了收緊操作,使得A、 B、 C 三塊樣本數(shù)據(jù)連續(xù)排列,這樣,分散的剩余空間被集中起來,圖c)中,樣本D此時(shí)已經(jīng) 可以置入樣本儲(chǔ)存區(qū)。
5) 任務(wù)管理模塊
任務(wù)管理模塊記錄各個(gè)檢測(cè)任務(wù)的狀態(tài)信息的數(shù)據(jù)結(jié)構(gòu),支持檢測(cè)任務(wù)的并發(fā)處理。 該模塊中的數(shù)據(jù)結(jié)構(gòu)記錄了各個(gè)檢測(cè)任務(wù)的各種信息,包括參數(shù)個(gè)數(shù)、參數(shù)種類、參數(shù)和 樣本儲(chǔ)存位置、檢測(cè)狀態(tài)、傳輸狀態(tài),錯(cuò)誤編號(hào)等,這些信息是檢測(cè)卡在各個(gè)檢測(cè)任務(wù)之 間調(diào)度的依據(jù)。
每項(xiàng)檢測(cè)任務(wù)的任務(wù)管理模塊在USB主機(jī)發(fā)送任務(wù)初始化命令的時(shí)候被初始化。為了 提高效率,本檢測(cè)卡的任務(wù)管理模塊預(yù)置了8個(gè)檢測(cè)任務(wù)的數(shù)據(jù)結(jié)構(gòu),表示最多可以同時(shí) 處理USB主機(jī)發(fā)出的8個(gè)任務(wù)的處理請(qǐng)求。每個(gè)檢測(cè)任務(wù)有一個(gè)任務(wù)編號(hào),與提供給USB 主機(jī)的API中預(yù)置編號(hào)相對(duì)應(yīng),所以,檢測(cè)卡一旦接收到USB主機(jī)傳送的數(shù)據(jù)包,即可從 數(shù)據(jù)包中讀取其所屬的任務(wù)編號(hào),繼而根據(jù)該編號(hào),把數(shù)據(jù)包分配給特定的檢測(cè)任務(wù)進(jìn)行 處理。
檢測(cè)任務(wù)狀態(tài)的每一次轉(zhuǎn)化,都在任務(wù)管理結(jié)構(gòu)中體現(xiàn)出來,并且被實(shí)時(shí)地置于USB 上行(從檢測(cè)卡到USB主機(jī))數(shù)據(jù)緩沖區(qū),供主機(jī)周期性的獲取檢測(cè)卡的運(yùn)行狀態(tài)。
6) 數(shù)據(jù)包處理模塊數(shù)據(jù)包處理模塊是對(duì)從USB端口收到的數(shù)據(jù)包進(jìn)行解析,并根據(jù)數(shù)據(jù)包類型進(jìn)行相應(yīng) 處理的模塊,該模塊在邏輯上是所有模塊的核心。
本發(fā)明的任務(wù)處理邏輯采用有限狀態(tài)自動(dòng)機(jī)模型,任務(wù)狀態(tài)的轉(zhuǎn)化和轉(zhuǎn)化中執(zhí)行的操 作根據(jù)輸入數(shù)據(jù)包的種類和內(nèi)容決定。根據(jù)接收到數(shù)據(jù)包種類的不同,調(diào)用任務(wù)管理模塊、 儲(chǔ)存管理模塊等,保證處理任務(wù)正確有序的執(zhí)行。 該有限狀態(tài)自動(dòng)機(jī)模型定義了 5種任務(wù)狀態(tài)
(1) 空閑狀態(tài)(TASK—IDLE)
(2) 參數(shù)就緒狀態(tài)(TASK_PARA—READT)
(3) 任務(wù)就緒狀態(tài)(TASK—READY)
(4) 檢測(cè)結(jié)果就緒狀態(tài)(TASK_RST—READY)
(5) 錯(cuò)誤狀態(tài)(ERROR)
本發(fā)明預(yù)先定義了三類數(shù)據(jù)包,數(shù)據(jù)包有固定的格式定義,這些數(shù)據(jù)包為有限狀態(tài)自 動(dòng)機(jī)的輸入條件,其種類驅(qū)動(dòng)自動(dòng)機(jī)的狀態(tài)變化,不符合預(yù)定義格式的數(shù)據(jù)包會(huì)使系統(tǒng)進(jìn) 入"錯(cuò)誤狀態(tài)"。這3種數(shù)據(jù)包分別為
(1) 參數(shù)數(shù)據(jù)包(para):參數(shù)包中包括檢測(cè)任務(wù)編號(hào)、載荷長度、 一個(gè)或多個(gè)參數(shù) 結(jié)構(gòu)、以及其他保留字段。
(2) 樣本數(shù)據(jù)包(sample):樣本包包括任務(wù)編號(hào)、載荷長度、樣本包編號(hào)、以及其 他保留字段。
(3) 命令數(shù)據(jù)包(cmd):命令包包括任務(wù)編號(hào)、命令種類以及其他保留字段。 進(jìn)一步的,命令數(shù)據(jù)包定義了三種命令復(fù)位命令(reset);開始檢測(cè)命令(test);
新樣本命令(another sample)。
輸入數(shù)據(jù)包后,系統(tǒng)在5種運(yùn)行狀態(tài)中轉(zhuǎn)移,如圖5所示。檢測(cè)任務(wù)以"空閑"為初 始狀態(tài),合法遷移條件是接受到"參數(shù)包"。如果收到"參數(shù)包",則從該數(shù)據(jù)包中解析 出樣本長度,調(diào)用儲(chǔ)存管理模塊,為樣本數(shù)據(jù)申請(qǐng)儲(chǔ)存空間,并將從參數(shù)包解析出的參數(shù) 儲(chǔ)存,并進(jìn)入"參數(shù)就緒"狀態(tài)。
在"參數(shù)就緒"狀態(tài)中,合法的遷移條件是收到"復(fù)位"命令和"樣本數(shù)據(jù)包"。如 果收到"復(fù)位命令",任務(wù)則進(jìn)入"空閑"狀態(tài);如果收到"樣本數(shù)據(jù)包",則將樣本數(shù) 據(jù)儲(chǔ)存,任務(wù)進(jìn)入"任務(wù)就緒"狀態(tài)。
在"任務(wù)就緒"狀態(tài)中,合法的狀態(tài)遷移條件是收到"開始檢測(cè)"命令。收到該命令后,將當(dāng)前檢測(cè)任務(wù)加入檢測(cè)任務(wù)隊(duì)列,等待檢測(cè),檢測(cè)完畢之后,系統(tǒng)進(jìn)入"檢測(cè)完畢 狀態(tài)",等待主機(jī)獲取檢測(cè)結(jié)果。此時(shí),合法的狀態(tài)轉(zhuǎn)移條件是收到"復(fù)位"命令,收到 該命令后,調(diào)用儲(chǔ)存管理模塊,釋放當(dāng)前樣本的儲(chǔ)存空間,系統(tǒng)重新進(jìn)入"空閑"狀態(tài)。
在"檢測(cè)完畢"狀態(tài)時(shí),還可能收到"新樣本"命令,這是為了使用同樣的參數(shù)對(duì)多 個(gè)樣本進(jìn)行批量檢測(cè)而設(shè)置的命令,當(dāng)收到該命令之后,系統(tǒng)重新進(jìn)入"參數(shù)就緒"狀態(tài)。 在其它情況下,檢測(cè)卡進(jìn)入"錯(cuò)誤狀態(tài)",等待USB主機(jī)獲取相應(yīng)的錯(cuò)誤代碼。
提供給USB主機(jī)的API接口主要包括數(shù)據(jù)包格式結(jié)構(gòu)定義和對(duì)檢測(cè)卡的基本操作。數(shù) 據(jù)包的格式設(shè)計(jì)支持對(duì)類別、序號(hào)、長度等信息的靈活定義;對(duì)檢測(cè)卡的基本操作包括 初始化和終止任務(wù)、傳輸參數(shù)、傳輸樣本以及發(fā)送各種檢測(cè)命令。此外,API接口中也提 供了對(duì)"新樣本"命令的支持,如圖6所示,圖a)中, 一個(gè)檢測(cè)任務(wù)中,僅僅對(duì)一個(gè)樣 本進(jìn)行了隨機(jī)性檢測(cè);而圖b)中,通過"新樣本"命令,實(shí)現(xiàn)了在同一個(gè)檢測(cè)任務(wù)中, 對(duì)多個(gè)樣本進(jìn)行隨機(jī)性檢測(cè),進(jìn)一步提高設(shè)備的易用性和使用效率。
實(shí)際上,還存在一種特別的數(shù)據(jù)包——"目標(biāo)文件"。這種數(shù)據(jù)包是用于檢測(cè)卡固件 升級(jí)的。出于固件升級(jí)與隨機(jī)性檢測(cè)邏輯上的獨(dú)立性,為了方便表述,沒有將此類數(shù)據(jù)包 的定義和處理方式與檢測(cè)流程相關(guān)的數(shù)據(jù)包一起表達(dá),事實(shí)上固件升級(jí)就是將USB主機(jī)的 編譯好的目標(biāo)文件燒寫到檢測(cè)卡中FLASH的過程。而目標(biāo)文件本身可以被認(rèn)為是與待測(cè)樣 本相同的二進(jìn)制串,在USB主機(jī)中,逐字節(jié)讀取之后,通過與樣本包相同的數(shù)據(jù)包的形式, 發(fā)送到檢測(cè)卡的SDRAM中;之后,調(diào)用"固件升級(jí)"命令,啟動(dòng)FLASH燒寫程序,將保存 在SDRAM中的目標(biāo)文件燒寫在FLASH中,實(shí)現(xiàn)固件的更新。
因?yàn)椴捎昧撕蜆颖緜鬏斚嗤膫鬏敊C(jī)制,所以升級(jí)固件實(shí)現(xiàn)中固有的保留了樣本傳輸 的安全性和正確性。
本檢測(cè)卡實(shí)現(xiàn)以硬件配置模塊為物理基礎(chǔ),硬件的時(shí)鐘頻率、數(shù)據(jù)位寬、數(shù)據(jù)傳輸方 式、中斷配置以及其它控制邏輯等所有的硬件配置在該模塊中被設(shè)置的功能。本發(fā)明中, "數(shù)據(jù)包"是整個(gè)隨機(jī)性檢測(cè)處理邏輯的核心概念,處理過程也是圍繞數(shù)據(jù)包處理模塊進(jìn) 行的。USB傳輸模塊、任務(wù)管理模塊和儲(chǔ)存管理模塊都直接與數(shù)據(jù)包處理模塊直接雙向連 通。數(shù)據(jù)包處理模塊在接收到不同種類的數(shù)據(jù)包時(shí),調(diào)用各軟件模塊,進(jìn)行樣本儲(chǔ)存、空 間釋放、任務(wù)管理、執(zhí)行隨機(jī)性檢測(cè)等各種操作。在操作過程中,所有的操作信息都通過 檢測(cè)任務(wù)管理模塊來保存。
113.檢測(cè)流程
為了進(jìn)一步說明各個(gè)軟件模塊在檢測(cè)卡內(nèi)的功能和使用方式,下面給出檢測(cè)卡的工作
流程
如圖7所示,在檢測(cè)卡上電后,首先進(jìn)行初始化操作,包括硬件初始化和軟件初始化, 需要調(diào)用硬件配置模塊進(jìn)行DSP片內(nèi)和片外設(shè)備的初始化;調(diào)用任務(wù)管理模塊進(jìn)行任務(wù)管 理數(shù)據(jù)結(jié)構(gòu)的初始化;調(diào)用儲(chǔ)存管理模塊進(jìn)行樣本儲(chǔ)存空間的初始化。之后,進(jìn)入一個(gè)無 條件循環(huán)中,該循環(huán)不斷査詢?nèi)蝿?wù)隊(duì)列,如果存在待測(cè)任務(wù),則調(diào)用隨機(jī)性檢測(cè)算法庫進(jìn) 行檢測(cè)。檢測(cè)之前和之后,需要分別開啟和關(guān)閉計(jì)時(shí)器中斷(RTI),以便應(yīng)用PING-PONG 緩沖技術(shù)。
檢測(cè)邏輯是在中斷處理程序中實(shí)現(xiàn)的。圖8中給出了中斷處理程序的流程,在硬件初 始化結(jié)束之后,檢測(cè)卡的中斷就處于開啟狀態(tài),配置的中斷包括USB中斷、計(jì)時(shí)器中斷(RTI) 等,當(dāng)USB設(shè)備產(chǎn)生數(shù)據(jù)傳輸請(qǐng)求時(shí),產(chǎn)生中斷,CPU保存當(dāng)前檢測(cè)任務(wù)的運(yùn)行狀態(tài)(可 能在進(jìn)行檢測(cè),也可能尚在輪訓(xùn)任務(wù)隊(duì)列),陷入中斷處理程序,進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)傳 輸結(jié)束之后立即調(diào)用數(shù)據(jù)包處理模塊,根據(jù)接收到的數(shù)據(jù)進(jìn)行相應(yīng)的處理(進(jìn)入有限狀態(tài) 自動(dòng)機(jī)的狀態(tài)轉(zhuǎn)移模型)。對(duì)數(shù)據(jù)包的處理結(jié)束之后,中斷返回,系統(tǒng)恢復(fù)到中斷前的運(yùn) 行狀態(tài)。
本發(fā)明各個(gè)軟硬件模塊的功能和性能特點(diǎn)保證了隨機(jī)性檢測(cè)的高速執(zhí)行。首先, TMS320C6727芯片提供了 300MHz的主頻,配合其并行指令結(jié)構(gòu),可以實(shí)現(xiàn)每秒高達(dá)2.4G 次的浮點(diǎn)運(yùn)算。隨機(jī)性檢測(cè)算法庫充分利用了DSP的指令結(jié)構(gòu),提供了算法的高速實(shí)現(xiàn)。 PING-PONG緩沖技術(shù)的釆用解決了數(shù)據(jù)讀取的效率瓶頸,USB傳輸模塊保證了主機(jī)和USB 之間數(shù)據(jù)的高速傳輸,這也是檢測(cè)任務(wù)高效執(zhí)行的必要條件。
當(dāng)然,高速的檢測(cè)是實(shí)現(xiàn)建立在系統(tǒng)的穩(wěn)定性和檢測(cè)結(jié)果的正確性的基礎(chǔ)之上的。硬 件設(shè)計(jì)本身和硬件處理模塊保證了系統(tǒng)執(zhí)行中的硬件穩(wěn)定性,數(shù)據(jù)包處理模塊及其他相關(guān)
模塊的支撐,保證了檢測(cè)任務(wù)的穩(wěn)定執(zhí)行以及處理邏輯的清晰簡潔。
盡管為說明目的公開了本發(fā)明的具體實(shí)施例和附圖,其目的在于幫助理解本發(fā)明的內(nèi) 容并據(jù)以實(shí)施,但是本領(lǐng)域的技術(shù)人員可以理解在不脫離本發(fā)明及所附的權(quán)利要求的精 神和范圍內(nèi),各種替換、變化和修改都是可能的。本發(fā)明不應(yīng)局限于本說明書最佳實(shí)施例 和附圖所公開的內(nèi)容,本發(fā)明要求保護(hù)的范圍以權(quán)利要求書界定的范圍為準(zhǔn)。
權(quán)利要求
1. 一種高速隨機(jī)性檢測(cè)卡,包括硬件結(jié)構(gòu)和軟件結(jié)構(gòu),其特征在于硬件結(jié)構(gòu)包含TMS320C672X數(shù)字信號(hào)處理器、FLASH和USB控制芯片以及至少一片SDRAM,其中SDRAM、FLASH和USB控制芯片通過EMIF總線與所述數(shù)字信號(hào)處理器連接,軟件結(jié)構(gòu)包含硬件配置模塊、USB傳輸模塊、數(shù)據(jù)包處理模塊和隨機(jī)性檢測(cè)算法庫;其中a)隨機(jī)性檢測(cè)算法庫兼容并支持國家隨機(jī)性檢測(cè)標(biāo)準(zhǔn)中的15種檢測(cè)項(xiàng)目;b)硬件配置模塊實(shí)現(xiàn)對(duì)隨機(jī)性檢測(cè)卡上各種硬件的參數(shù)配置;c)USB傳輸模塊實(shí)現(xiàn)數(shù)據(jù)在檢測(cè)卡與USB主機(jī)之間的雙向傳輸功能;d)數(shù)據(jù)包處理模塊對(duì)從USB端口收到的數(shù)據(jù)包進(jìn)行解析,并按照數(shù)據(jù)包的類型進(jìn)行相應(yīng)處理。
2. 如權(quán)利要求1所述的一種高速隨機(jī)性檢測(cè)卡,其特征在于所述檢測(cè)卡增加了儲(chǔ)存管理 模塊和任務(wù)管理模塊,以并行處理多個(gè)檢測(cè)任務(wù),其中儲(chǔ)存管理模塊實(shí)現(xiàn)多個(gè)檢測(cè)任 務(wù)條件下樣本儲(chǔ)存區(qū)的管理,任務(wù)管理模塊實(shí)現(xiàn)對(duì)多任務(wù)執(zhí)行狀態(tài)、傳輸狀態(tài)的記錄。
3. 如權(quán)利要求1所述的一種高速隨機(jī)性檢測(cè)卡,其特征在于檢測(cè)卡的硬件結(jié)構(gòu)中增加嵌 入式安全模塊,通過UHPI總線與數(shù)字信號(hào)處理器連接。
4. 如權(quán)利要求1所述的一種高速隨機(jī)性檢測(cè)卡,其特征在于檢測(cè)卡的硬件結(jié)構(gòu)中預(yù)留硬 件擴(kuò)展接口,通過UHPI總線與數(shù)字信號(hào)處理器連接。
5. 如權(quán)利要求1所述的一種高速隨機(jī)性檢測(cè)卡,其特征在于在檢測(cè)卡的FLASH中固化固 件升級(jí)程序。
6. 如權(quán)利要求1所述的一種高速隨機(jī)性檢測(cè)卡,其特征在于隨機(jī)性檢測(cè)算法庫讀取樣本 數(shù)據(jù)時(shí)采用PING-PONG緩沖技術(shù)。
7. 如權(quán)利要求1所述的一種高速隨機(jī)性檢測(cè)卡,其特征在于檢測(cè)卡的檢測(cè)任務(wù)處理邏輯 釆用有限狀態(tài)自動(dòng)機(jī)模型,定義的數(shù)據(jù)包包括參數(shù)包、樣本包和命令包;定義的系統(tǒng) 狀態(tài)包括空閑、參數(shù)就緒、任務(wù)就緒、檢測(cè)完畢以及錯(cuò)誤5種狀態(tài)。
8. 如權(quán)利要求1所述的一種高速隨機(jī)性檢測(cè)卡,其特征在于所述檢測(cè)卡提供API接口, 支持多種檢測(cè)流程。
全文摘要
本發(fā)明涉及一種基于TMS320C672x系列DSP的高速隨機(jī)性檢測(cè)卡,可以對(duì)任意二元序列或者能夠轉(zhuǎn)化為二元序列的其他形式的任意序列進(jìn)行快速隨機(jī)性檢測(cè)。檢測(cè)卡具有高度可擴(kuò)展的軟硬件體系結(jié)構(gòu),完全兼容并支持國家隨機(jī)性檢測(cè)標(biāo)準(zhǔn)指定的15種隨機(jī)性檢測(cè)項(xiàng)目。本發(fā)明支持安全方便的在線程序代碼升級(jí),本發(fā)明的軟硬件設(shè)計(jì)為日后的功能擴(kuò)展和軟硬件升級(jí)提供了完善的接口,與純軟件的隨機(jī)性檢測(cè)工具相比,具有占用系統(tǒng)資源低、檢測(cè)速度快、穩(wěn)定性強(qiáng)、可靠性高、便攜、易于安裝和使用等優(yōu)點(diǎn)。
文檔編號(hào)G06F7/58GK101470597SQ200710304080
公開日2009年7月1日 申請(qǐng)日期2007年12月25日 優(yōu)先權(quán)日2007年12月25日
發(fā)明者馮登國, 劉繼業(yè), 周永彬, 華 陳 申請(qǐng)人:中國科學(xué)院軟件研究所