本文以ASIC芯片為應用背景,提出了一種基于FPGA的指紋識別系統,及其采集接口的設計與實現方案,采用滑動式指紋傳感器完成高質量的指紋采集工作。
早在十九世紀初科學家就發現了指紋的兩個重要特征:性和穩定性,這個研究成果使得指紋在犯罪鑒別中得以正式應用。20世紀60年代,隨著計算機性能的提高和應用的增加,人們開始使用計算機來處理指紋,自動指紋識別系統(AFIS)在法律實施方面的研究與應用由此展開。而近幾年,隨著電子商務的發展和消費類電子的普及,越來越多的領域需要指紋識別系統。目前,基于DSP、ARM的獨立式指紋識別系統已經成功應用于考勤、門禁、安檢等領域。
本文選用具有高集成度、低功耗、短開發周期等優點的FPGA(現場可編程門陣列)來設計實現自動指紋識別系統,下文將重點介紹系統軟硬件結構以及指紋采集接口的設計方案。
指紋識別系統的設計實現
系統軟件結構設計
本文設計的自動指紋識別系統的軟件算法采用BST FingerAPI 1.0版本,包括1:1比對(即驗證)模式和1:N比對(即識別)模式,主要實現指紋的檢測與采集、指紋圖像的增強、特征點的提取與匹配幾大功能,具體結構見圖1。
圖1 指紋識別系統的軟件流程圖
指紋檢測與采集
首先將指紋區與背景區分離。為了方便判別,在判別之前需要對圖像進行平滑處理和邊緣提取。將圖像分為8×8的塊,并計算每塊內各點灰度值的標準差,若該值大于某一閾值(本算法中設置為8,共為256),則該塊的所有點都為指紋數據,否則為背景數據。接著判斷指紋數據塊中指紋區面積占整個圖像區域面積的比例,若該值大于給定的閾值,則進行指紋圖像采集,否則重新檢測并采樣。
指紋圖像增強
首先計算直角坐標系下8×8塊指紋圖像的方向,然后根據相鄰圖像塊的方向,過濾掉脊線方向發生變化過大的圖像塊,并按脊線平滑變化的規律恢復脊線原有方向,再對圖像數據進行Gabor濾波。
指紋特征點提取
本算法的特征點選擇脊線的端點和交叉點。首先記錄每個特征點的信息,包括類型、位置(直角坐標系)、方向以及在特征點集中的序號,然后去除掉由于噪聲引起的大量偽特征點。此方法采用了一種基于脊線跟蹤的直接從灰度級指紋圖像提取細節特征點的新穎算法,這種算法不必經過二值化和細化過程,減少了程序運行時間。
指紋特征點數據庫
將成功提取到的指紋圖像特征點信息保存到數據庫中,以供指紋識別認證時把這些數據庫里的指紋信息與認證的指紋特征點信息進行對比,查找是否有與之匹配的指紋信息。
Hough變換特征點匹配
在指紋比對時,在直角坐標系中,通過基于特征點的Hough變換匹配算法識別出指紋的幾何形狀,使圖像匹配可以不受指紋擺放的角度和位置平移的影響。接著計算現場指紋與數據庫中指紋的相似度。若匹配的特征點占模板中所有特征點的30%,則判定兩枚指紋匹配,否則進入極坐標的比較。
極坐標變換,特征點匹配
極坐標變化用以減小直角坐標系中的匹配誤差。若在兩個坐標系中所有匹配的特征點占模板中所有特征點的30%,則仍判定兩枚指紋匹配,否則判為不匹配。
系統硬件結構設計
整個電路系統由指紋傳感器、FPGA、PROM、SRAM和Flash構成,如圖2所示。其中,SRAM的地址線和數據線分別與Flash的地址線和數據線共用。
圖2 指紋識別系統結構硬件結構
指紋傳感器
主要負責指紋檢測與采集,是整個系統的首要任務。本系統選用富士通公司的MBF300滑動式電容指紋采集傳感器。這款指紋傳感器采用標準CMOS技術,含有8位A/ D變換器,在2.8V~5V的寬電壓范圍內工作,能自動檢測到是否有指紋到達傳感器,并實現在線采集。與以往采用的面積式指紋傳感器相比,它的優點是在保證指紋圖像高分辨率(500dpi)的同時大大減小了傳感器的尺寸(13.3×3.6mm2)。
FPGA
它是系統的核心控制器件。按照其功能,FPGA內部可分為指令控制模塊、指紋傳感器控制模塊、Flash控制模塊、SRAM控制模塊和算法模塊,見圖3。本系統選用Xilinx公司SpartanIII系列的XC3S400型FPGA芯片,封裝形式為PQ208。這款芯片采用90nm工藝,容量40萬門,工作頻率高達200MHz,足以完成系統需要。
圖3 FPGA內容結構圖
PROM
PROM主要負責向FPGA加載程序,因為FPGA內部的SRAM掉電時不能保存自身配置。本系統選用Xilinx公司用于SpartanIII系列的專用PROM芯片XCF02S。
SRAM
SRAM用于存儲部分算法程序運行時的臨時數據,包括圖像數據、向量、特征值等,這是由于FPGA內部RAM容量不能滿足程序運行需要而擴展的。本系統選用Cypress公司的芯片CY7C1021V33-12,其大小為64k×16bits。
Flash
Flash是一個指紋數據庫,用來存儲指紋特征點數據。它的容量決定了該指紋識別系統能夠儲存的指紋數據的數量。本系統選用AMD公司的芯片AM29LV160,其大小為1M×16bits,能存儲約256K枚指紋。
指紋采集接口的設計與實現
指紋傳感器MBF300
MBF300為富士通公司新推出的滑動式指紋傳感器,它支持3種通信接口:8位微處理器總線接口、集成的USB全速接口和集成SPI接口。
本文選用SPI接口,在選擇了SPI模式后,MBF300的其它兩種模式將自動禁止。XC3S400通過讀寫MBF300內部的寄存器實現對它的控制,以完成指紋檢測與采集、自動A/D轉換、數據傳輸等任務。
指紋采集接口硬件設計
本系統中SPI接口主設備為FPGA芯片XC3S400,從設備為指紋傳感器MBF200。由于FPGA沒有特定管腳的要求,本文任意選用XC3S400的4個I/O口137—140,分別與指紋傳感器MBF300的相應管腳連接,見圖4所示。
圖4 XC3S400與MBF300的SPI鏈接圖
指紋采集接口軟件設計
接口時鐘采用傳感器內部的12MHz時鐘,整個采集指紋圖像流程依次為初始化XC3S400和MBF300、調整MBF300寄存器參數、讀取指紋數據、存儲指紋數據。
·初始化XC3S400和MBF300
系統上電后首先對FPGA器件XC3S400進行初始化,即從PROM中讀取配置數據(指紋識別算法和控制指令等)到內部的SRAM中,接著初始化指紋傳感器MBF300,其中部分VHDL源程序如下:
……
ENTITY ini_mbf300 IS
PORT(......
PGC: INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
DTR: INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
DCR: INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
THR: INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
CTRLB: INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
ISR: INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
ICR: INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
......);--定義需要初始化的MBF300寄存器;
END ini_mbf300;
ARCHITECTURE ini_mbf300 OF ini_mbf300 IS
BEGIN
PGC <= "00000110 "; --初始設置圖像增益為1.5;
DTR<= "00111111";
DCR<= "00000001";
THR<= "00101100";
CTRLB <= "00000001"; --使能陣列,AD及時鐘;
ISR<= "00000011"; --清空中斷;
ICR<= "01011001"; --使能自動檢測;…...
END ini_mbf300;......
調整MBF300寄存器參數
調整MBF300參數,也就是調整PGC、DTR、DCR三個寄存器的值來調整放電時間、放電電流速率和圖像的放大增益,直到獲得質量的圖像。經多次實驗表明,當DTR=0x15,DCR=0x20,PGC=0x01時,指紋圖像為清晰。
采集指紋圖像數據
XC3S400按照MBF300的SPI時序(見圖5)要求,在MOSI信號線上發送一系列讀寫MBF300寄存器的指令,并由MBF300在MISO信號線上發送A/D轉換后的指紋數據,直到一幅完整的256×32的指紋圖像傳輸完畢。詳細的工作流程見圖5。
圖5 MBF300在SPI從模式下工作流程
存儲指紋圖像數據
采集到的原始指紋圖像保存到片外SRAM中,地址空間為0000 0000 0000 0000~FFFF FFFF FFFF FFFF。
實驗調試與結果
所有模塊在ISE7.1軟件平臺上用VHDL編程,并且盡量地應用軟件工具提供的IP資源Synplify和XST進行邏輯綜合和實現,并比較兩種工具綜合的結果,可以看出哪種綜合實現,占用FPGA資源較少。綜合實現之后,用Modelsim工具進行寄存器級和門級仿真。仿真完成之后,把功能代碼通過JTAG數據口下載到對FPGA芯片配置的PROM,編寫測試向量在FPGA芯片內測試,通過邏輯分析儀對中間數據和結果數據進行分析和測試。 圖6為MBF300寄存器設置為DTR=0x15,DCR=0x20,PGC=0x01時采集到的指紋數據通過Matlab工具數據轉化得到的指紋圖像,它足以滿足后續的指紋特征點提取、比對等要求。
圖6 指紋圖像
結語
本文介紹了一個完整的、獨立運行的基于FPGA的嵌入式指紋識別系統及其指紋采集接口的設計與實現方案。該系統能實現快速的指紋登錄以及指紋比對,指紋比對所需的時間在0.5s以內,完全能滿足用戶的要求。
參考文獻:
1. Huang Hong, Li Jian-wei, Li Dong-liang, et al, The design and realization of automatic fingerprint identification system based on DSP, Electronic Design & Application, 2005
2. Zhou Ning-jie ,Fu Yu-zhuo ,Zhou Yu, Hardware Design of a Fingerprint Recognition Platform Based on DSP, Computer Emulation, 2005
3. Huang Lin-bo, Du Kun-mei, Xie Jian-yang, et al, Study and development of fingerprint recognition algorithm based on ARM, Journal of Harbin University of Commerce (Natural Sciences Edition), 2005
4. Shen Xiao-feng , Li Xiao- bei, A portable fingerprint identification system, Automatization technology and application, 2005
5. MBF300 Solid State Fingerprint Sweep Sensor,Data Sheet[Z], 2002
6. Spartan-3 FPGA Family: Complete Data Sheet [Z], 2005