一種新型SoPC自動(dòng)指紋識(shí)別系統(tǒng)設(shè)計(jì)
目前,基于FPGA的自動(dòng)指紋識(shí)別系統(tǒng)主要有純硬件方式實(shí)現(xiàn)[1]和在以Nios II為CPU的軟核中實(shí)現(xiàn)[2-4]兩種方式。以純硬件方式實(shí)現(xiàn)雖然速度較快,但由于指紋處理算法比較復(fù)雜,實(shí)現(xiàn)困難,同時(shí)算法精度差,設(shè)計(jì)周期長(zhǎng);而以下載到FPGA的軟核Nios II為控制模塊,具有靈活的設(shè)計(jì)方式,并具備軟硬件在系統(tǒng)可編程的功能,較大程度上提高了系統(tǒng)速度,但是該方案中軟硬件處理交替進(jìn)行,涉及到軟硬件之間頻繁的指紋數(shù)據(jù)傳輸,限制了系統(tǒng)的速度,同時(shí)增加了系統(tǒng)的復(fù)雜度。
本文提出了一種基于SoPC的新型結(jié)構(gòu)的自動(dòng)指紋識(shí)別設(shè)計(jì)方案。具有以下特點(diǎn):
(1)根據(jù)對(duì)指紋識(shí)別算法的分析和優(yōu)化,在軟、硬件結(jié)合的基礎(chǔ)上將軟件設(shè)計(jì)和硬件設(shè)計(jì)分開,把指紋識(shí)別系統(tǒng)中耗時(shí)較大的圖像預(yù)處理部分用硬件來實(shí)現(xiàn),而耗時(shí)較少的特征提取、匹配和操作控制等部分則在NiosⅡ軟核中實(shí)現(xiàn)。從而使得系統(tǒng)結(jié)構(gòu)明晰,處理性能得到提升。
(2)用一塊SRAM作指紋處理中間數(shù)據(jù)的緩存。指紋圖像前期處理以硬件實(shí)現(xiàn),中間數(shù)據(jù)緩存于SRAM中;指紋圖像后期處理軟件從SRAM中將所有數(shù)據(jù)讀入NiosⅡ的數(shù)據(jù)存儲(chǔ)器。這樣的存儲(chǔ)設(shè)計(jì)使得軟件處理和硬件處理之間不涉及大量的數(shù)據(jù)流傳輸,使軟硬件數(shù)據(jù)接口簡(jiǎn)單,數(shù)據(jù)流的控制更加簡(jiǎn)單易行,同時(shí)避免了頻繁的軟硬件數(shù)據(jù)傳輸帶來的時(shí)間消耗。
(3)在軟硬件處理結(jié)合的基礎(chǔ)上使指紋處理時(shí)間大大降低,1.5 s內(nèi)可以完成一幅指紋圖像的預(yù)處理,3 s內(nèi)可以完成一幅指紋圖像的比對(duì)。
1 設(shè)計(jì)思路
1.1 指紋系統(tǒng)結(jié)構(gòu)
從整個(gè)指紋處理系統(tǒng)的角度來考慮,根據(jù)各算法處理特性仔細(xì)地劃分系統(tǒng)子模塊。通過對(duì)指紋處理算法的分析發(fā)現(xiàn),指紋的預(yù)處理部分使用到多次數(shù)據(jù)循環(huán)運(yùn)算,運(yùn)算量較大而且單一,使用硬件實(shí)現(xiàn)明顯降低時(shí)間消耗,所以選擇對(duì)指紋的預(yù)處理部分實(shí)行整體硬件化;對(duì)于指紋匹配部分,運(yùn)算量相對(duì)較少但算法復(fù)雜多樣,使用軟件算法相對(duì)比較簡(jiǎn)單而且可以達(dá)到很高的精度,所以使用Nios II軟件算法來實(shí)現(xiàn)。選擇預(yù)處理部分整體硬件化,匹配部分整體軟件化的另外一個(gè)好處是軟硬件處理不需要進(jìn)行頻繁的數(shù)據(jù)交換傳輸,節(jié)省時(shí)間的同時(shí)降低了系統(tǒng)的復(fù)雜度。
如圖1所示,系統(tǒng)工作流程主要分為指紋硬件采集、指紋圖像硬件預(yù)處理和指紋軟件匹配。其中SRAM作為指紋數(shù)據(jù)的緩存設(shè)備,F(xiàn)lash做為指紋特征數(shù)據(jù)的存儲(chǔ)設(shè)備,對(duì)指紋數(shù)據(jù)的處理步驟按照箭頭所指示的方向進(jìn)行。
1.2 NiosⅡ軟件功能
Nios II作為主要控制模塊,通過Avalon總線協(xié)調(diào)指紋處理各個(gè)子模塊的運(yùn)行。其中預(yù)處理硬件模塊由于處理中各算法步驟順序執(zhí)行,所以以一個(gè)整體掛在Avalon總線上,方便模塊的控制。指紋圖像預(yù)處理后的特征提取匹配使用NiosⅡ軟件實(shí)現(xiàn),指紋數(shù)據(jù)儲(chǔ)存于程序的數(shù)據(jù)存儲(chǔ)器中,按照軟件處理流程調(diào)用各個(gè)函數(shù)進(jìn)行處理。為了方便觀察調(diào)試結(jié)果,在Avalon上掛有VGA和LCD顯示,每一步算法完成后調(diào)用VGA顯示查看處理結(jié)果,使用LCD提示處理步驟。
1.3 硬件優(yōu)化技術(shù)
針對(duì)FPGA算術(shù)運(yùn)算中的乘法、除法易出現(xiàn)的時(shí)序問題,對(duì)浮點(diǎn)數(shù)運(yùn)算、開方算法、反正切算法等耗費(fèi)大量資源的通用性問題,特別做了如下優(yōu)化:
(1)乘除法均采用Quartus自帶的IP核進(jìn)行運(yùn)算,IP核采用流水線結(jié)構(gòu),減少系統(tǒng)中時(shí)序不滿足情況的發(fā)生,提高系統(tǒng)的穩(wěn)定性;
(2)浮點(diǎn)數(shù)運(yùn)算均通過擴(kuò)大倍數(shù)后轉(zhuǎn)為定點(diǎn)數(shù)再進(jìn)行運(yùn)算,可以在降低運(yùn)算復(fù)雜度的同時(shí)降低時(shí)間消耗;
(3)開方算法采用不恢復(fù)余數(shù)開方算法實(shí)現(xiàn),只涉及加減和移位,處理時(shí)間只有輸入位寬的1/2,可降低系統(tǒng)消耗,減少處理時(shí)間;
(4)反正切運(yùn)算采用CORDIC算法,采用狀態(tài)機(jī)結(jié)構(gòu),通過反復(fù)迭代實(shí)現(xiàn),算法簡(jiǎn)單。
評(píng)論