一、項目概述
1.1 引言
人的指紋是生物特征之一。指紋識別是生物識別技術中最為成熟的, 其唯一性、穩(wěn)定性, 一直都被視為身份鑒別的可靠手段之一。在當今大學生活中,大學生的身體素質逐漸達不到標準,需要學校引導學生進行鍛煉。然而若進行人工管理會非常不便,而進行機器智能管理,則相對簡單。而指紋識別,能將各個學生的信息統(tǒng)一進行管理,促進了學校對學生體育鍛煉的管理。
1.2 項目背景/選題動機
本系統(tǒng)基于Xilinx的FPGA開發(fā)平臺Nexys?3 Spartan-6 作為核心控制器件,這款器件擁有48M字節(jié)的外部存儲器,以及豐富的I/O器件和接口,適用于本系統(tǒng)。通過一些高精度的指紋識別算法,然后通過FPGA的運算,我們達到指紋圖像的采集,存儲,處理和對比功能,SDRAM 和Flash分別用作存儲指紋程序運行時的臨時數(shù)據(jù)和指紋數(shù)據(jù)信息。同時,通過USB與電腦相連,在電腦中建立數(shù)據(jù)庫,并實現(xiàn)FPGA與電腦的通信,完成指紋識別管理系統(tǒng)。
二、需求分析
2.1 功能要求
使用指紋采集器采集指紋信息,傳送至SDRAM存儲。在FPGA上對指紋進行處理和匹配,同時編寫程序使FPGA與計算機通信并且在計算機上建立數(shù)據(jù)庫,使得可以使用計算機的數(shù)據(jù)庫完成數(shù)據(jù)管理。
2.2 性能要求
實現(xiàn)以精準,快速,實用性強的指紋識別系統(tǒng)。同時實現(xiàn)良好的FPGA與計算機通信的功能。
2.3 系統(tǒng)要點
本系統(tǒng)主要難點在于指紋識別的算法以及XILINX 與PC機通信時所需要寫的驅動。
三、方案設計
3.1 系統(tǒng)功能實現(xiàn)原理
本系統(tǒng)采用Xilinx公司 Spartan 6系列FPGA作為核心控制芯片,通過FPC1011F傳感器采集指紋傳送至存儲器SDRAM存儲。在Spartan上運行的指紋處理程序對指紋信息進行處理獲得特征點,并存儲在SDRAM中或與SDRAM中的指紋信息進行匹配。最終,通過USB與計算機通信,使用計算機中的學生數(shù)據(jù)庫。
系統(tǒng)框圖如圖所示:
3.2 硬件平臺選用及資源配置
3.2.1 指紋傳感器FPC1011F
FPC1011F 是瑞典Fingerprint Cards公司成功推出的一種電容式面裝指紋傳感器。該傳感器采用了多項專利,如獨立的晶圓體信號放大、傳感器表面的保護膜等。內部具有A/D轉換,高速的SPI接口,8PIN的軟排線可以方便的接入各種系統(tǒng)。
FPC1011F指紋傳感器具有以下特點:
(1)FPC1011F芯片產自瑞典,采用獨特的反射式測量法,抗靜電可達正負15 kV,耐磨100萬次,已被國內金融界公認為銀行指定零件。
(2)采用專業(yè)的指紋識別芯片PS1802DSP和最優(yōu)化的指紋算法,指紋成像效果好。
(3)處理速度快,峰值能達到480MIPS,在1:1 000模式下,時間小于1 s。
(4)功耗較同類產品低,正常工作主頻120 MHz下,只有120 mW。
(5)模塊體積為35 mm×26 mm×1 mm,便于各種指紋產品的開發(fā)。
(6)對干濕手指有自動調節(jié)功能。
FPC1011F指紋傳感器含有小電容板,傳感器使用高靈敏度像素放大器,讓每個像素即使是非常微弱的信號FPC1011F都能探測到,以此提高圖像質量。用了交替命令的并排列和傳感器電板,交替板的形式是兩個電容板,以及指紋的山谷和山脊成為板之間的電介質。兩者之間的恒量電介質傳感器檢測變化生成指紋圖像。
3.2.2 SPI 通信接口
SPI接口主要應用在 EEPROM,F(xiàn)LASH,實時時鐘,AD轉換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議。
SPI總線系統(tǒng)是一種同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進行通信以交換信息。外圍設置FLASHRAM、網絡控制器、LCD顯示驅動器、A/D轉換器和MCU等。SPI總線系統(tǒng)可直接與各個廠家生產的多種標準外圍器件直接接口,該接口一般使用4條線:串行時鐘線(SCK)、主機輸入/從機輸出數(shù)據(jù)線MISO、主機輸出/從機輸入數(shù)據(jù)線MOSI和低電平有效的從機選擇線SS(有的SPI接口芯片帶有中斷信號線INT、有的SPI接口芯片沒有主機輸出/從機輸入數(shù)據(jù)線MOSI)。
SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(用于單向傳輸時,也就是半雙工方式)。也是所有基于SPI的設備共有的,它們是SDI(數(shù)據(jù)輸入),SDO(數(shù)據(jù)輸出),SCK(時鐘),CS(片選)。
SDO – 主設備數(shù)據(jù)輸出,從設備數(shù)據(jù)輸入 。
SDI – 主設備數(shù)據(jù)輸入,從設備數(shù)據(jù)輸出 。
SCLK – 時鐘信號,由主設備產生 。
CS – 從設備使能信號,由主設備控制 。
圖3.3 SPI接口信號
其中CS是控制芯片是否被選中的,也就是說只有片選信號為預先規(guī)定的使能信號時(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線上連接多個SPI設備成為可能。 接下來就負責通訊的3根線了。通訊是通過數(shù)據(jù)交換完成的,這里先要知道SPI是串行通訊協(xié)議,也就是說數(shù)據(jù)是一位一位的傳輸?shù)?。這就是SCK時鐘線存在的原因,由SCK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過 SDO線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數(shù)據(jù)傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數(shù)據(jù)的傳輸。
要注意的是,SCK信號線只由主設備控制,從設備不能控制信號線。同樣,在一個基于SPI的設備中,至少有一個主控設備。這樣傳輸?shù)奶攸c:這樣的傳輸方式有一個優(yōu)點,與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而SPI允許數(shù)據(jù)一位一位的傳送,甚至允許暫停,因為SCK時鐘線由主控設備控制,當沒有時鐘跳變時,從設備不采集或傳送數(shù)據(jù)。也就是說,主設備通過對SCK時鐘線的控制可以完成對通訊的控制。SPI還是一個數(shù)據(jù)交換協(xié)議:因為SPI的數(shù)據(jù)輸入和輸出線獨立,所以允許同時完成數(shù)據(jù)的輸入和輸出。不同的SPI設備的實現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義,具體請參考相關器件的文檔。
在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。在多個從設備的系統(tǒng)中,每個從設備需要獨立的使能信號,硬件要稍微復雜一些。
SPI接口在內部硬件實際上是兩個簡單的移位寄存器,傳輸?shù)臄?shù)據(jù)為8位,在主器件產生的從器件使能信號和移位脈沖下,按位傳輸,高位在前,低位在后。如圖3.4所示,在SCLK的下降沿上數(shù)據(jù)改變,同時一位數(shù)據(jù)被存入移位寄存器。
FPC1011F口主要由4個引腳構成:SPI_CK、SPI_DO、SPI_DI、/SS,SPI_CK是整個SPI總線的公用時鐘,SPI_DO、SPI_DI作為主機,從機的輸入輸出的標志,SPI_DO是主機的輸出,從機的輸入,SPI_DI是主機的輸入,從機的輸出。/SS是從機的標志管腳,在互相通信的兩個SPI總線的器件,/SS管腳的電平低的是從機,相反/SS管腳的電平高的是主機。在一個SPI通信系統(tǒng)中,必須有主機。SPI總線可以配置成單主單從,單主多從,互為主從。
SPI的片選可以擴充選擇16個外設。
SPI接口的缺點:沒有指定的流控制,沒有應答機制確認是否接收到數(shù)據(jù)。
3.2.3 SDRAM
SDRAM:同步動態(tài)隨機存儲器,同步動態(tài)隨機存儲器,同步是指 Memory工作需要同步時鐘,內部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準;動態(tài)是指存儲陣列需要不斷的刷新來保證數(shù)據(jù)不丟失;隨機是指數(shù)據(jù)不是線性依次存儲,而是自由指定地址進行數(shù)據(jù)讀寫。
3.2.4 FIFO模塊
此模塊主要功能是對已經收到的指紋數(shù)據(jù)進行緩存,避免指紋數(shù)據(jù)的丟失,因此此系統(tǒng)SPI工作頻率為16MByte,而UART串口工作頻率為38MByte。所以需要設定FIFO來使得SPI和UART協(xié)調工作。
3.2.5 UART模塊
此模塊的主要功能是和計算機進行通信,把接受到的數(shù)據(jù)通過計算機數(shù)據(jù)庫顯示出來。
3.3系統(tǒng)軟件架構
3.3.1 指紋采集步驟
初始化SPI接口模塊
復位FPC1011指紋傳感器
初始化傳感器
發(fā)送啟動傳感器命令rd_sensor: 0x11
讀傳傳感器指令
指令rd_sensor (11 H)
模式串行
輸入參數(shù)1虛擬字節(jié)
數(shù)據(jù)延遲(363±2)tCLK
返回字節(jié)0
數(shù)據(jù)延遲指直至FIFO中的數(shù)據(jù)有效前,指令的延遲該指令用來讀取傳感器全部或部分區(qū)域。
該指令僅用于開啟傳感序列,指令本身并不返回任何數(shù)據(jù)。傳感器序列的第一組數(shù)據(jù)在大約363個時鐘周期后進入FIFO。此后每隔8個時鐘周期,一個新字節(jié)就會寫入FIFO,直至由XSENSE, YSENSE, XSHIFT和YSHIFT寄存器定義的區(qū)域被讀取。
如果FIFO裝載數(shù)據(jù)已滿,我們將讓傳感器暫停工作直至數(shù)據(jù)從FIFO中讀出來防止溢出。在暫停期間所有分析模塊均有效,ASIC將在一個正常傳感操作中產生電流。
指令輸入后,SPI_DI將作為輸入保持低電平,以防下一個字節(jié)被誤認為一條新指令了。
如果設置SPI_CS_N為高電平,讀出程序將停止,為了在之后繼續(xù)執(zhí)行讀出,我們需要使用rd_spidata指令。
5) 重復發(fā)送讀數(shù)據(jù)狀態(tài)寄存器命令rd_spistat: 0x21直到指紋數(shù)據(jù)準備完畢。
指令rd_spistat (21 H)
模式串行
輸入參數(shù)1虛擬字節(jié)
數(shù)據(jù)延遲0
返回字節(jié)1
SPI狀態(tài)寄存器保存SPI接口狀態(tài)信息,當接收到rd_spistat命令時,SPI_STAT寄存器中的內容將被返回。如果傳感器讀出指令正在執(zhí)行,使用該指令不會中斷讀出指令。
6) 發(fā)送讀數(shù)據(jù)指令rd_spidata: 0x20 讀取指紋數(shù)據(jù)并存入SDRAM中。
讀傳SPI數(shù)據(jù)指令
指令rd_spidata (20 H)
模式串行
輸入參數(shù)1虛擬字節(jié)
數(shù)據(jù)延遲0
返回字節(jié)n
發(fā)送讀取SPI數(shù)據(jù)指令rd_spidata后,指紋像素數(shù)據(jù)將被返回。只要SPI_CS_N和SPI_DI保持低電平,數(shù)據(jù)將持續(xù)返回。
3.3.2指紋數(shù)據(jù)存儲的軟件實現(xiàn)
由于本次設計所采集的指紋圖像過大,并且在指紋圖像處理過程中多次生成處理后的圖像信息,我們采用大容量的SDRAM作為存儲介質。
通過調用EDK自帶的SDRAM IP內核,我們可以很方便的對SDRAM的讀寫操作進行控制。
SDRAM寫數(shù)據(jù)函數(shù):
void XDdr_mWriteReg(Xuint32 BaseAddress, unsigned RegOffset, Xuint32 Data)
其中參數(shù)含義:
BaseAddress:寫數(shù)據(jù)在SDRAM的基地址
RegOffset:地址偏移量,數(shù)據(jù)寫在SDRAM的(BaseAddress+ RegOffset)位置
Data:要寫在SDRAM的數(shù)據(jù)
SDRAM讀數(shù)據(jù)函數(shù):
Void XDdr_mReadReg(Xuint32 BaseAddress, unsigned RegOffset)
其中參數(shù)含義:
BaseAddress:從SDRAM讀數(shù)據(jù)的基地址
RegOffset:地址偏移量,讀出在SDRAM的(BaseAddress+ RegOffset)位置的數(shù)據(jù)
3.3.3指紋圖像預處理的軟件實現(xiàn)
指紋圖像預處理可以分為圖像分割、增強、二值化和細化等幾個步驟,但是根據(jù)具體的情況,預處理的步驟也不盡相同。圖像分割是指把指紋圖像從背景中分離出來,減少后續(xù)處理的時間,提高特征提取的可靠性。也有一些文獻將把指紋圖像二值化,即將指紋脊(脊指的是手指皮膚凸起部姚按在指紋采集器上形成指紋圖上的黑色線條;谷指的是脊之間的空白部分)從指紋圖像中提取出來也歸為圖像分割部分。圖像增強的目的是突出指紋紋線結構,抑制紋線上及背景中的噪聲干擾;二值化是將指紋圖像變?yōu)槎祱D像;細化是將前面兩步己經處理過的指紋圖像中指紋的脊的寬度降到最小,去除原紋線上的毛刺,使紋線更加清晰,盡量減少因為毛刺生成的偽交叉點、斷點等。
3.3.4 指紋圖像的特征點提取
常用的指紋特征描述方法是基于紋路結構特征。指紋特征可以分為全局特征、局部特征和細微特征。 全局特征包括:(i)基本紋路圖案:基本紋路圖案通常分為左箕型(letfloop)、右箕型(rightloop)、斗型(whorl)、拱型(acrh)和尖拱型(etntedacrh),如圖4.6所示。 (ii)模式區(qū)(PattemAera):模式區(qū)是指紋圖像上包含了總體特征的區(qū)域,從模式區(qū)能夠分辨出指紋屬于那種類型。 (iii)核心點(CorePoint):核心點位于指紋紋路的漸近中心,它常用作讀取指紋和比對指紋時的參考點。 (iv)三角點(Detla):三角點是指紋圖像中三角形紋路區(qū)域的中心點,離該點最近的三條指紋紋線構成一個近似等邊三角形,三角點提供了指紋紋路計數(shù)和跟蹤的起始位置。 核心點和三角點統(tǒng)稱為奇異點。 (v)紋數(shù)(Ridge Cuont):作為全局特征,紋數(shù)一般是指模式區(qū)內指紋紋路的數(shù)量。 也有些算法用某兩個點之間的紋路數(shù)作為指紋特征,比如兩個節(jié)點之間的紋路數(shù)。
(1)左箕型 (2)右箕型 (3)斗型 (4)拱型 (5)尖拱型
圖4.6 基本紋路圖案
局部特征包括:(i)端點(Ending):一條紋路在此終結。 (ii)分叉點(Biofcratino):一條紋路在此分成兩條或多條紋路。 (iii)分歧點(Ridge Divegrneee):兩條平行的紋路在此分開。 (iv)孤立點(Dot or Island):一條特別短的紋路,以至于成為一點。 (v)短紋(ShortRidge):一條較短但不至于成為一點的紋路。 (vi)環(huán)點(Enclosuer):一條紋路分成兩條后又立即合成一條,這樣形成的一個小環(huán)稱為環(huán)點。 (vii)橋(Bridge):兩條并行的紋路在此被搭接起來。 (viii)曲率(Curvauter):紋路方向改變的速度。 如圖4.7所示。
圖4.7 基本紋路圖案
另外,除了局部特征外,從高分辨率的傳感器采集的高質量的指紋圖像中還可以提取比局部特征更細微的特征:毛孔。 提取毛孔特征一般要求傳感器分辨率達到1000dpi,而且要求手指皮膚質量較高。 但指紋傳感器的分辨率一般在500dpi左右,而且受環(huán)境、皮膚條件的影響,采集的圖像中往往難以正確地提取毛孔特征,所以實際的系統(tǒng)中一般不使用毛孔特征。
3.3.5 指紋圖像的匹配
指紋圖像經預處理和特征提取后已消除了大量的冗余信息,得到了表示指紋特征本身的真實特征數(shù)據(jù)。 指紋匹配就是將兩幅指紋圖像的特征數(shù)據(jù)的相似性比較
3.3.6 FPGA與計算機通信
為了實現(xiàn)指紋能與數(shù)據(jù)庫進行通信,需要使用完成PC機的通信。
通信協(xié)議
此部分主要完成接受指紋匹配特征信息并返回結果。返回結果在LCD上進行顯示。
此過程需要定義幀的標志定義。需要比較長的時間考慮。
由于不同的開發(fā)平臺針對應用于不同領域實現(xiàn)難易程度不同。所以指紋識別與匹配采用MATLAB編程,而COM+具有跨平臺調用的優(yōu)點,且操作方便。所以將COM+組件技術作為數(shù)據(jù)庫接口部分。而數(shù)據(jù)庫接口部分采用ACESS數(shù)據(jù)庫。
本系統(tǒng)期望實現(xiàn)指紋特征信息的存取,更新用戶信息等相關操作。
4.系統(tǒng)軟件流程
(完)
評論