指紋U盤的設(shè)計
指紋U盤的設(shè)計,指紋,設(shè)計
1. 引言
隨著計算機(jī)圖像處理和模式識別理論及大規(guī)模集成電路技術(shù)的不斷發(fā)展與成熟,指紋自動識別系統(tǒng)發(fā)生了質(zhì)的飛躍,體積縮小,速度提高,實現(xiàn)成本以及對運(yùn)行環(huán)境的要求逐步降低,指紋采集的速度和方便性都得到提高。這些都使指紋認(rèn)證技術(shù)的實用化向前邁進(jìn)了一大步,大量應(yīng)用于政府、銀行、稅務(wù)、社保、學(xué)校和公司機(jī)構(gòu)等部門的文件保密、信息安全、門禁控制、考勤管理與證卡管理等各類需要計算機(jī)進(jìn)行自動身份認(rèn)證的場合。
一般的U盤在存儲數(shù)據(jù)時,不能保障數(shù)據(jù)的保密、安全,里面的數(shù)據(jù)很容易被他人讀取。而本論文研究的指紋U盤,利用了指紋識別技術(shù),在用戶讀取U盤中數(shù)據(jù)時,必須使自己的指紋和U盤中預(yù)先存儲的指紋信息相符,才能正常使用U盤。指紋在此系統(tǒng)中起著密碼鎖的作用.使用指紋識別具有許多優(yōu)點,例如:每個人的指紋都不相同,極難進(jìn)行復(fù)制或被盜用;指紋比較固定,不會隨著年齡的增長或健康程度的變化而變化;最重要的在于指紋圖像便于獲取,易于開發(fā)識別系統(tǒng),具有很高的實用性和可行性。
2. 設(shè)計目標(biāo)
本論文旨在設(shè)計一種新型的U盤,當(dāng)U盤和PC機(jī)連接的時候,需要把用戶的手指按在U盤的指紋識別區(qū)域,當(dāng)系統(tǒng)識別到的指紋信息和U盤中預(yù)存的合法指紋信息一致時,則可以正確的使用U盤,否則則不能讀取U盤中的數(shù)據(jù)。本U盤中可以預(yù)先存儲多個指紋,可供多個用戶擁有對U盤的使用權(quán),也可以避免用戶在手指受傷或其它不能正確識別指紋信息的情況發(fā)生時,也能使用U盤。
3. 指紋識別系統(tǒng)原理
3.1 指紋識別過程
圖1是指紋識別的過程,分為指紋注冊過程和指紋對比過程,指紋注冊過程是把用戶的合法指紋采集起來經(jīng)過處理存儲到模板庫中,指紋對比過程是在使用時把采集到的指紋信息和指紋庫中存儲的指紋信息相對比,以確定用戶身份的合法性。
指紋采集
圖像增強(qiáng)
提取特征值
特征值模板入庫
指紋采集
圖像增強(qiáng)
提取特征值
比對匹配
圖1 指紋識別過程
3.2指紋圖象處理
指紋圖像預(yù)處理的目的主要是為特征值提取的有效性、準(zhǔn)確性作好準(zhǔn)備。一般包括如下幾個過程。
(1)指紋圖像增強(qiáng)
指紋圖像增強(qiáng)的目的主要是為了減少噪音,增強(qiáng)嵴峪對比度,使得圖像更加清晰真實,便于后續(xù)指紋特征值提取的準(zhǔn)確性。指紋圖像增強(qiáng)的方法較多,通常需設(shè)定合適的過濾閾值。處理時依據(jù)每個像素處嵴的局部走向,會增強(qiáng)在同一方向嵴的走向,并且在同一位置,減弱任何不同于嵴的方向。這樣使得嵴線相對背景更加清晰,特征點走向更加明顯。如圖2。
圖2 圖像處理前后對比
(2)指紋圖像平滑處理
平滑處理是為了讓整個圖像取得均勻一致的明暗效果。平滑處理的過程是選取整個圖像的象素與其周圍灰階差的均方值作為閾值來處理的。指紋圖像平滑處理還有其它方法可以使用。
(3)指紋圖像二值化
在原始灰階圖像中,各象素的灰度是不同的,并按一定的梯度分布。在實際處理中只需要知道象素是不是嵴線上的點,而無需知道它的灰度。所以每一個象素對判定嵴線來講,只是一個“是與不是”的二問題。所以,指紋圖像二值化是對每一個象素點按事先定義的閾值進(jìn)行比較,大于閾值的,使其值等于1(假定),小于閾值的,使其值等于0。圖像二值化后,不僅可以大大減少數(shù)據(jù)量,而且使后面的處理過程少受干擾,大大簡化其后的處理。
(4)指紋圖像細(xì)化
圖像細(xì)化就是將嵴的寬度降為單個像素的寬度,得到嵴線的骨架圖像的過程。這個過程進(jìn)一步減少了圖像數(shù)據(jù)量,清晰化了嵴線形態(tài),為之后的特征值提取作好準(zhǔn)備。由于我們所關(guān)心的不是嵴線的粗細(xì),而是嵴線的有無。因此,在不破壞圖像連通性的情況下必須去掉多余的信息。因而應(yīng)先將指紋嵴線的寬度采用逐漸剝離的方法,使得嵴線成為只有一個象素寬的細(xì)線,這將非常有利于下一步分析。如圖3。
? 圖3 指紋圖像處理
3.3 指紋識別的實現(xiàn)方法
指紋是比較復(fù)雜的, 指紋識別算法最終都?xì)w結(jié)為在指紋圖像上找到并比對指紋的特征點。指紋學(xué)指出, 出現(xiàn)頻率較高的指紋特征有8 種, 其中端點和分叉點占指紋特征的80 %以上, 本系統(tǒng)選用了這兩種特征作為算法提取和比對的對象。對細(xì)化后的指紋圖像提取特征點數(shù)據(jù), 并去除偽特征點, 將處理結(jié)果與指紋數(shù)據(jù)庫中已有的模板數(shù)據(jù)進(jìn)行匹配識別, 模板是系統(tǒng)在學(xué)習(xí)功能階段將用戶的指紋數(shù)據(jù)經(jīng)過上述相同的處理后保存下來的。指紋數(shù)據(jù)庫中的指紋模式根據(jù)細(xì)節(jié)特征進(jìn)行了分類, 這樣可以減少預(yù)識別指紋與指紋數(shù)據(jù)庫的對比數(shù)量, 大大節(jié)省了識別的時間, 提高了識別的準(zhǔn)確度。指紋特征點的提取: 采用8 鄰域法對二值化后的指紋圖像抽取特征點, 提取分叉點和端點, 并去除偽特征點。指紋圖像中心點的提取: 以指紋最內(nèi)層弧的頂點作為中心點, 就是紋線上曲率最大處, 若最內(nèi)層弧頂點處有分叉線存在, 且此分叉線走向與兩旁紋線走向一致, 則定義分叉點為中心點, 并進(jìn)一步確定各特征點相對于中心點的方向。系統(tǒng)中就用特征點的類型, 特征點與中心點的方向, 特征點與中心點的紋線數(shù)這三個參量來表征一個特征點的特征信息。兩個指紋圖像的匹配實際就是兩幅圖像特征點信息(3 個參量) 的比對, 獲取的指紋圖像靠近中心點的是圖像質(zhì)量較好的, 離中心點越遠(yuǎn), 特征信息準(zhǔn)確度越差, 所以比對時盡可能取中心點附近的特征點, 若兩幅指紋有10 個以上的特征點匹配即可基本判定兩幅指紋屬同一個指紋。[2]
3.4 傳感采集設(shè)備
指紋傳感器(又稱指紋Sensor)是實現(xiàn)指紋自動采集的關(guān)鍵器件。指紋傳感器按傳感原理,即指紋成像原理和技術(shù),分為光學(xué)指紋傳感器、半導(dǎo)體電容傳感器、半導(dǎo)體熱敏傳感器、半導(dǎo)體壓感傳感器、超聲波傳感器和射頻RF傳感器等.
目前市場上有兩種固態(tài)指紋傳感器:第一種是單次觸摸型傳感器,要求手指在指紋采集區(qū)進(jìn)行可靠的觸摸;第二種則需要用手指在傳感器表面擦過,傳感器會采集一套特定的數(shù)據(jù),然后進(jìn)行快速分析和認(rèn)證。這兩類指紋傳感器將得到越來越廣泛的應(yīng)用。
單觸型傳感器與劃擦型傳感器的尺寸和成本都不一樣。接觸式傳感器較大,通常有效接觸面為15×15mm,可迅速地采集最大的指紋或拇指指紋。這種傳感器易于使用,并可將整個指紋圖像以500dpi(自動指紋識別標(biāo)準(zhǔn))的精度進(jìn)行快速傳輸。
劃擦型傳感器是一種新型指紋采集器件,要求用戶將手指在器件上劃過。劃擦型傳感器的優(yōu)點是尺寸小(如富士通的MBF300尺寸僅為3.6×13.3 mm2)和成本低。這些器件主要用于移動設(shè)備的嵌入式安全識別應(yīng)用,如手機(jī)和PDA。精密的圖像重建軟件以接近2000幀/秒的速度快速地從傳感器上采集多個圖像,并將每個幀的數(shù)據(jù)細(xì)節(jié)組織到一起。
4. 系統(tǒng)硬件設(shè)計
4.1系統(tǒng)組成
本系統(tǒng)整體上可以分為圖像采集模塊、圖像處理及識別模塊以及輸出模塊三部分組成。該系統(tǒng)是由FPS200 指紋傳感器、CPLD、DSP、FLASH和USB接口芯片等硬件組成.如圖4.
圖4 系統(tǒng)組成框圖
4.1.1工作原理
系統(tǒng)包括DSP芯片TMS320VC5402、指紋傳感器FPS200、CPLD,程序存儲器和數(shù)據(jù)存儲器、電源管理芯片等幾個主要部分。使用了兩類存儲器,SRAM用于存放運(yùn)算中的臨時指紋圖像,F(xiàn)LASH則是用于存放程序代碼和指紋特征模板。電源管理模塊可提供3.3 V和2.5 V電壓。
模式選擇開關(guān)則用于設(shè)定和選擇系統(tǒng)上電后的3種工作方式:
(1)指紋錄入方式:錄入新的指紋到指紋模板庫。
(2)指紋比對方式:將輸入指紋與指紋模板庫中的指紋搜索比對,輸出比對結(jié)果。
(3)上位機(jī)命令方式:通過接口函數(shù),系統(tǒng)在上位機(jī)的命令下完成指紋錄入、比對等工作,這是在二次開發(fā)系統(tǒng)中使用的工作方式。
4.1.2指紋采集模塊硬件設(shè)計
本系統(tǒng)選擇的是Veridioom公司的FPS200固體指紋識別傳感器。FPS200是Veridicom 公司推出的第三代半導(dǎo)體指紋傳感器。它基于電容器充放電原理,傳感陣列的每一點是一個金屬電極,充當(dāng)電容器的一極,按在傳感面上的手指頭的對應(yīng)點則作為另一極。傳感面形成兩極之間的介電層。由于指紋的脊和谷,導(dǎo)致各點的電容值不同,這個電容值陣列就形成一幅指紋圖像。FPS200是在吸收了已廣泛應(yīng)用的FPS110系列傳感器優(yōu)點的基礎(chǔ)上,全新推出的新一代指紋傳感器。
FPS200在性能、尺寸、集成方便度等指標(biāo)上建立了一套新的標(biāo)準(zhǔn),是Veridicom半導(dǎo)體指紋傳感器家族中重要的新成員。主要特征和優(yōu)點如下:
(1)高分辨率:256X300陣列,1.28cm×1.50cm傳感面積,500dpi分辨率。
(2)專為便攜設(shè)備設(shè)計的更小的封裝
(3)圖像搜索技術(shù)(ImageSeekTM)即使手指過干或過濕時仍能獲得高精度識別。
(4)高速圖像傳輸:30frame/s(MCU模式),13frame/s(USB模式),10frame/s(SPI模式)。
(5)內(nèi)置USB核、MCU模式和SPI通訊模式,減低整個系統(tǒng)的成本。
(6)內(nèi)置8位A/D轉(zhuǎn)換電路,最高可節(jié)約75%的電源消耗。
(7)FPS200封裝為只有l(wèi).4mm厚的塑料外殼,非常適用于各種Intemet設(shè)備、便攜設(shè)備和手機(jī)等。
4.1.3 FPS200功能與接口
圖5是FPS200的功能結(jié)構(gòu)框圖。
圖5 FPS200的結(jié)構(gòu)圖
FPS200傳感器支持三種接口方式:8位的系統(tǒng)總線接口、集成的全速的USB接口和集成的串行外設(shè)接口(SPI)。其豐富的接口方式方便了指紋傳感器的調(diào)試和使用。其自帶的USB接口可以將其數(shù)據(jù)直接傳送到PC機(jī)上,這樣就可以利用PC平臺上的編譯和調(diào)試工具來調(diào)試各種指紋識別的算法,方便了用戶的初期測試,提高了效率和準(zhǔn)確性。圖6是FPS200與DSP的接口連接圖。
圖6 FPS200與DSP的接口連接圖
如圖5所示,利用傳感器提供的MCU系統(tǒng)總線接口可以很方便地實現(xiàn)其與DSP的連接??刂菩盘朿s0和csl都是片選信號,cs0低有效,csl高有效,這是為不同的CPU片選信號高低電平特征提供便利。本系統(tǒng)選用的是cs0;~RD和
~ WR分別為讀、寫控制信號。
MODE0和MODEl兩根信號線決定了FPS200工作在何種模式下:
MODE[1:O]=00b系統(tǒng)總線接口工作模式,用于與DSP相連,正常工作時使用;
MODE[1:0]=Olb SPI接口工作模式;
MODE[1:0]=lOb USB接口工作模式,用于與PC相連,調(diào)試時使用;
A0地址線,F(xiàn)PS200共有兩個接口寄存器,索引寄存器和數(shù)據(jù)寄存器,A0決定了是寫索引寄存器還是讀寫數(shù)據(jù)寄存器。A0拉低時為寫索引寄存器,數(shù)據(jù)總線D7~ D0的內(nèi)容寫到索引寄存器;A0拉高時可讀寫數(shù)據(jù)寄存器,數(shù)據(jù)總線上D7~D0 的內(nèi)容讀寫到數(shù)據(jù)寄存器。本系統(tǒng)對FPS200的操作有以下兩種:
(1)FPS200的控制:傳感器是由內(nèi)部寄存器控制的,而對傳感器的內(nèi)部控制器的讀寫是通過寫索引寄存器以選擇合適的內(nèi)部寄存器后,才可以讀寫具體的寄存器值。讀操作過程見圖7。
先將A0管腳的電平拉低,發(fā)出寫信號,將要讀寫的內(nèi)部寄存器地址送到數(shù)據(jù)總線上,寫入控制寄存器并由FPS200送到它的索引寄存器。再將A0管腳拉高,發(fā)出讀信號,將數(shù)據(jù)寄存器上的值讀人DSP。寫操作的過程類似,只是在寫入索引寄存器后,發(fā)出寫信號即可。
圖7 FPS200信號的讀寫過程
(2) FPS200的數(shù)據(jù)讀取:即指紋圖象的讀取,需要注意的是控制寄存器A,寫這一寄存器就初始化了一幅指紋圖象的采集。然后循環(huán)讀這一寄存器則可以讀出A/D轉(zhuǎn)換出來的結(jié)果。整個圖象采集流程如圖8所示。
圖8 FPS200圖象采集過程流程圖 圖9系統(tǒng)主要程序流程圖
4.2 系統(tǒng)硬件核心介紹
4.2.1 DSP的選擇[3]
系統(tǒng)的核心處理單元是TI公司推出的高性能數(shù)字信號處理器 TMS320VC5402,該芯片具有精度高、靈活性大、可靠性高、時分復(fù)用等特點。其采用程序空間與數(shù)據(jù)空間完全獨(dú)立的哈佛總線結(jié)構(gòu),指令的執(zhí)行采用流水線結(jié)構(gòu),內(nèi)部有一到多個處理內(nèi)核,帶有片上硬件乘法器,指令執(zhí)行速度最快為幾十納秒,處理能力為100 MIPS。片內(nèi)有8條總線、片上存儲器和片上外圍電路等硬件,并且有高度專業(yè)化的指令系統(tǒng) 。TMS320VC5402片外直接數(shù)據(jù)尋址空間為64 kB,程序空間尋址能力可達(dá)1MB,但是通過程序空間來擴(kuò)展數(shù)據(jù)空間將影響系統(tǒng)處理速度。但是TMS320VC5402在實際使用過程中,程序和數(shù)據(jù)的一次連續(xù)處理一般都不會超過64 kB,所以把核心的程序常駐TMS320VC5402內(nèi)16kB空間,一般控制在1~2 kB,再留7~8 kB的空間調(diào)用所需的程序,程序在片內(nèi)的執(zhí)行速度要比片外的快許多,通過來回到程序,就能實現(xiàn)程序的全速運(yùn)行。
C5402 的核心作用是對原始指紋圖像進(jìn)行預(yù)處理。原始的指紋圖像有很多噪聲, 比如手指有傷痕, 手指干燥、濕潤或撕破都會影響圖像的質(zhì)量。指紋圖像特征的抽取和識別要求有很高的精度, 因此指紋圖像的預(yù)處理過程相對復(fù)雜, 一般包括以下步驟: 圖像裁剪、平滑處理、銳化處理、圖像二值化、圖像修飾和細(xì)化。在基本不損失有用指紋信息的基礎(chǔ)上, 運(yùn)用一定的算法將原始圖像進(jìn)行裁剪產(chǎn)生一幅比原始圖像小的指紋圖像, 可以減小后面各步驟中所要處理的圖像數(shù)據(jù)量[14]。
4.2.2 DSP的BOOT LOADER
DSP的引導(dǎo)模式有如下幾種:
(1) 主機(jī)接口(HPI)引導(dǎo)模式
(2) 串行存儲器引導(dǎo)模式
(3) 16位/8位并行存儲器引導(dǎo)模式
(4) 16位/8位并行I/。引導(dǎo)模式
(5) 串口引導(dǎo)模式
(6) WARM引導(dǎo)模式
DSP的引導(dǎo)順序如下:
引導(dǎo)程序先檢查INT2是否為1,如為1,則采用主機(jī)接口(HPI)方式;如果INT2不為1,再看INT3是否為1,如為1,則采用串行EEPROM引導(dǎo)模式;否則,從工,I/O空間的FFFFH讀取內(nèi)容,如為有效的關(guān)鍵字,則開始傳送;否則,從數(shù)據(jù)空間的FFFFH讀取內(nèi)容,如為有效的關(guān)鍵字,則開始傳送;否則,則開始初始化串口,把XF置為低,從串口1讀取數(shù)據(jù),如果是有效的關(guān)鍵字,則開始傳送數(shù)據(jù);如果不是,從串口0讀取數(shù)據(jù),如果是有效的關(guān)鍵字,則開始傳送數(shù)據(jù):否則,檢測BIO是否為低,是否有有效關(guān)鍵字,如果有,則為I/0引導(dǎo)模式;否則,第二次檢查HPI口,看是否為HPI引導(dǎo)方式。
本文選用的是8位并行存儲器引導(dǎo)模式。引導(dǎo)表可放在4000H~FFFFH的數(shù)據(jù)空間中,引導(dǎo)程序通過讀數(shù)據(jù)空間的FFFFH單元內(nèi)容確定引導(dǎo)表的起始地址,然后檢測起始地址的內(nèi)容是否為關(guān)鍵字。如為關(guān)鍵字,則引導(dǎo)程序繼續(xù)裝載剩下的引導(dǎo)表,并開始執(zhí)行程序。
4.2.3 DSP的電源設(shè)計
TMS320C5402的電源分兩種,即內(nèi)核電源(CVDD)和I/0電源(DVDD)。其中I/0電源一般采用3.3V電源,而內(nèi)核電源采用1.8V,降低內(nèi)核電壓的主要目的是降低功耗。TMS320C5402的電流消耗主要取決于器件的激活度,CVDD消耗的電流主要決定于CPU的激活度,外設(shè)消耗的電流決定于正在工作的外設(shè)及其速度,一般來說,與CPU相比,外設(shè)消耗的電流是比較小的。時鐘電路也需要消耗一小部分電流,而且這部分電流是恒定的,與CPU和外設(shè)的激活度無關(guān)。CVDD為器件的所有內(nèi)部邏輯提供電流,包括CPU、時鐘電路和所有外設(shè)。DVDD只為外部接口引腳提供電壓,消耗的電流決定于外部輸出的速度和數(shù)量,以及在這些輸出上的負(fù)載電容。
按照每MHZ (CLKOUT) 1. 5mA來計算,TMS320C5402工作在100h4HZ的最大估計電流為:
(1 .5mA/MHZ)×(100MHZ)=150mA
由于TMS320C5402有兩個電源,需要考慮加電次序。理想情況下,DSP芯片上的兩個電源同時加電。出于以上種種考慮,選用了TI公司的TPS73HD318電源芯片。該芯片具有如下特點,即:
(1) 雙輸出電壓提供兩路分離供電.
(2) 3.3V/1.8V的輸出電壓.
(3) 很低的靜態(tài)電流,當(dāng)不考慮輸入時,每一路的典型值為340Ua.
(4) 兩個低有效的復(fù)位信號,其脈沖寬度為200ms.
(5) 每一路的輸出電流范圍為0mA~750mA.
(6) 由該芯片得到3.3V和1.8V兩路電源,并給DSP芯片提供復(fù)位信號。
4.2.4 DSP的時鐘模式
時鐘發(fā)生器給C5402提供時鐘,它有內(nèi)部振蕩器和鎖相環(huán)電路。時鐘發(fā)生器要求參考時鐘輸入,參考時鐘可通過晶振和內(nèi)部振蕩器共同產(chǎn)生,或通過外部時鐘源產(chǎn)生。本文使用晶振和內(nèi)部振蕩器共同產(chǎn)生的方法。鎖相環(huán)可通過軟件編程,具有很高的靈活性,其提供一個時鐘的倍頻因子,提供不同的時鐘倍數(shù),能夠使能或者不使能鎖相環(huán)。鎖相環(huán)的時鐘被用于延遲轉(zhuǎn)換到鎖相環(huán)電路,直到鎖相環(huán)己經(jīng)鎖住時鐘。鎖相環(huán)通過16位的存儲器映射寄存器(0058h)時鐘模式寄存器(CLKMD)來控制,時鐘模式寄存器定義鎖相環(huán)的時鐘模式。在復(fù)位的時候,時鐘模式寄存器的初始值由CLKMDI, CLKMD2, CLKMD3引腳的值所唯一確定。DSP的時鐘模式如表1所示.
表1
CLKMD1
CLKMD2
CLKMD3
CLKMD RESET VALUE
CLOCK MODE
0
0
0
E007H
PLL X 15
0
0
1
9007H
PLL X 10
0
1
0
4007H
PLL X 5
1
0
0
1007H
PLL X 2
1
1
0
F007H
PLL X 1
1
1
1
0000H
1/2(PLL DISABLED)
1
0
1
F000H
1/4(PLL DISABLED)
0
1
0
Reserved(bypass mode)
本文所選用的晶振為IOMHZ,選擇模式為CLKMDI=CLKMD2=0, CLKMD3=1,即為PLL X 10的模式,剛好得到了100MHZ的時鐘。復(fù)位時,可根據(jù)設(shè)置不同的跳線來實現(xiàn)不同的時鐘頻率[11]。
4.2.5 TMS320C5402對圖象的處理
系統(tǒng)中的指紋處理算法由DSP芯片實現(xiàn),算法采用匯編語言編寫,其處理流程如圖10所示。
圖10 指紋處理流程圖
本系統(tǒng)的指紋處理功能主要為錄入和驗證兩大部分,詳細(xì)算法流程如圖1所示。
(1)采用自適應(yīng)圖像與背景分離:采用自適應(yīng)的局部閾值圖像分離法,圖像的指紋部分是由黑白相間的紋理組成,灰度變化很大,具有較大的標(biāo)準(zhǔn)差;而背景部分灰度分布比較平坦,標(biāo)準(zhǔn)差較小,因此計算以各點為中心的一組象素的標(biāo)準(zhǔn)差,當(dāng)標(biāo)準(zhǔn)差大于某一門限時,就可以確定該點為前景,否則為背景。
(2)方向信息提?。翰捎靡环N新的紋線提取方法,沿指紋紋線的方向?qū)D像進(jìn)行平滑,沿紋線的法線方向?qū)D像進(jìn)行增強(qiáng),獲得了良好的指紋方向信息。
(3)圖像分割:局部二值化算法,對指紋圖像進(jìn)行處理,便于后續(xù)的細(xì)化處理。
(4)細(xì)化處理:采用快速細(xì)化算法對二值化圖像進(jìn)行處理,得到一幅指紋圖像的骨架。
(5)后處理:對細(xì)化后的圖像進(jìn)行修復(fù)斷線,去除毛刺,短線,小孔等后處理。
(6)細(xì)節(jié)特征提?。翰捎盟惴▽?xì)化圖像進(jìn)行細(xì)節(jié)特征提取,得到一幅指紋圖像的所有分叉點和端點。
(7)指紋匹配:采用基于曲線擬合技術(shù)的指紋匹配算法,將待識圖像和模板圖像進(jìn)行特征點匹配給出最后的匹配結(jié)果[9]。
4.3 USB接口部件
在進(jìn)行一個USB 設(shè)備開發(fā)之前,首先要根據(jù)具體使用要求選擇合適的USB 控制器。目前,市場上供應(yīng)的USB 控制器主要有兩種:帶USB 接口的單片機(jī)(MCU)或純粹的USB接口芯片。帶USB 接口的單片機(jī)從應(yīng)用上又可以分成兩類,一類是從底層設(shè)計專用于USB 控制的單片機(jī);另一類是增加了USB 接口的普通單片機(jī),如Cypress 公司的EZ-USB(基于8051),選擇這類USB 控制器的最大好處在于開發(fā)者對系統(tǒng)結(jié)構(gòu)和指令集非常熟悉,開發(fā)工具簡單,但對于簡單或低成本系統(tǒng)。但價格因素也是在實際選擇過程中需要考慮的因素。
本系統(tǒng)采用的是第二種USB控制芯片,就是純粹的USB接口芯片,用的是Philips公司的ISP1581芯片。
ISP1581 是一種價格低、功能強(qiáng)的通用串行總線(USB)接口器件,它完全符合USB 2.0 規(guī)范,并為基于微控制器或微處理器的系統(tǒng)提供了高速USB 通信能力。ISP1581 與系統(tǒng)的微控制器/微處理器的通信是通過一個高速的通用并行接口來實現(xiàn)的。
ISP1581 支持USB 2.0 系統(tǒng)運(yùn)作的自動檢測。USB 1.1 的返回工作模式允許器件在全速條件下正常工作。
ISP1581 是一個通用的USB 接口器件,它符合現(xiàn)有的大多數(shù)器件的分類規(guī)格,比如:成像類、海量存儲器件、通信器件、打印設(shè)備以及人機(jī)接口設(shè)備。內(nèi)部通用DMA 模塊使得數(shù)據(jù)流很方便的集成。另外,多種結(jié)構(gòu)的DMA 模塊實現(xiàn)了海量存儲的應(yīng)用。
這種實現(xiàn)USB 接口的標(biāo)準(zhǔn)組件使得使用者可以在各種不同類型的微控制器中選擇出一種最合適的微控制器。通過使用已有的結(jié)構(gòu)和減少固件上的投資縮短了開發(fā)時間、減少了開發(fā)風(fēng)險和費(fèi)用。從而用最快捷的方法實現(xiàn)了最經(jīng)濟(jì)的USB 外設(shè)的解決方案。
* 接與ATA/ATAPI 外設(shè)相連
* 全符合通用串行總線(USB)Rev 2.0 規(guī)范
* 符合大多數(shù)器件的分類規(guī)格
*高性能的USB 接口器件,集成了串行接口引擎(SIE)、PIE、FIFO 存儲器、數(shù)據(jù)收發(fā)器和3.3v 的電壓調(diào)整器
*支持USB 2.0 的自檢工作模式和USB 1.1 的返回工作模式
*高速的DMA 接口
*完全自治的多結(jié)構(gòu)DMA 操作
*7個IN 端點,7 個OUT 端點和1 個固定的控制IN/OUT 端點
* 集成8K 字節(jié)的多結(jié)構(gòu)FIFO 存儲器
* 端點的雙緩沖配置增加了數(shù)據(jù)吞吐量并輕松實現(xiàn)實時數(shù)據(jù)傳輸
* 同大部分的微控制器/微處理器有單獨(dú)的總線接口(15 M 字節(jié)/秒或15 M 字/秒)
* 集成了PLL 的12MHZ 的晶體振蕩器,有著良好的EMI 特性
* 集成了5v 到3v 的內(nèi)置電壓調(diào)整器
* 可通過軟件控制與USB 總線的連接(SoftConnectTM)
* 符合ACPITM,OnNOWTM 和USB 電源管理的要求
* 可通過內(nèi)部上電復(fù)位和低電壓復(fù)位電路復(fù)位,也可通過軟件復(fù)位
* 工作在擴(kuò)展USB 總線電壓范圍(4.0~5.5)內(nèi),I/O 端口最大可承受5V 的電壓
* 操作溫度:-40℃~+85℃
* LQFP64 的封裝形式
U盤系統(tǒng)是本設(shè)計的主要部分,圖11是U盤接口的原理圖
圖11 U盤接口原理圖
5. 軟件設(shè)計
系統(tǒng)上電后進(jìn)入主程序,等待串口中斷,根據(jù)上位機(jī)發(fā)送給串口的指令包,執(zhí)行不同部分的功能。初始化系統(tǒng)并執(zhí)行指紋采集和指紋匹配的功能[5]。
下面給出主程序入口控制部分的核心代碼:
#include
……
cregister unsigned int IE,IF,ST,IOF;
interrupt void uartO(void);
#define UART_BASE_ADDR OxC00000
#define UART_ REV_ADDR *(int * )OxC00000
……
unsigned int uartstate;
……
unsigned int FP_ ImgData[320*320];
unsigned int * FP_ImgData=(unsigned int*)OxlO00;
typedef struct{
……
}FP_MinutiaeFeature;
#pragma DATA_ SECTION(FP_MinutiaeF,”.MinutiaeData”);
#pragma DATA_ SECCTION(In_MinutiaeF,”.MinutiaeData”);
static FP_MinutiaeFeature FP_MinutiaeF[100];
static FP_MinutiaeFeature In_MinutiaeF[100];
int * Match_Flag=(int*)Ox3D000;
int Flag;/* 第幾個指紋的特征點 */
unsigned int inp_bufer[5];
/* 輸入的指令包,4個字節(jié),1:command,2:parml,3:parm2,
4:return value * /
……
main()
{
unsigned int*VECS=(unsigned int*)Ox809fec0
……
for(i=0;i<5;i++)
{
inp_bufer[i]=O;
}
……}
interrupt void uart0(void)
{
uartstate = LSR&Oxff;
inp_ bufer[index]=RBR&Oxff;
if(index> =4)
{
if(inp_bufer[0]==Ox61)/*send a means采集*/
{
……}
else if(inp_bufer[0]==0x62)/*b means getminutiae獲取特征點 */
{
……}
else if(inp_bufer[0]==Ox6d)/* m means match匹配*/
{
……}
index+ + ;
index=index%5;
}
5.1 固件設(shè)計
固件編程(firmware programming)是USB數(shù)據(jù)傳輸系統(tǒng)中終端設(shè)備程序設(shè)計的重要部分,微處理器通過固件程序與計算機(jī)進(jìn)行數(shù)據(jù)交換。由于采用不帶MCU 內(nèi)核的USB接口芯片,所以關(guān)于USB2.0協(xié)議規(guī)范的實現(xiàn)都必須靠DSP (TMS320VC5402)控制ISP1581芯片完成:在DSP(TMS320VC5402)的平臺上編寫程序,以完成USB2.0規(guī)范所要求的標(biāo)準(zhǔn)請求及用戶根據(jù)產(chǎn)品需要自己定義的請求。當(dāng)設(shè)備連接到主機(jī)后,主機(jī)通過給ISP1581的端點0發(fā)送包含標(biāo)準(zhǔn)USB請求的控制傳輸(即Setup包),ISP1581產(chǎn)生一個中斷給MCU (INT0),MCU通過讀ISP1581的中斷寄存器和最后一次傳輸狀態(tài)寄存器來對每一個請求做出響應(yīng),并通過ISP1581的端點O回送請求信息。主機(jī)從返回的信息中讀取描述數(shù)據(jù)(包括設(shè)備描述符、配置描述符、接口描述符、端點描述符、字符串描述符),分配和載入一個設(shè)備驅(qū)動程序并對設(shè)備進(jìn)行配置。設(shè)備配置完成后,就可以使用配置中支持
的端點傳輸數(shù)據(jù)[13]。固件程序結(jié)構(gòu)如圖12所示。
圖12 固件程序結(jié)構(gòu)圖
5.2 設(shè)備驅(qū)動
PC機(jī)的驅(qū)動程序由Philips公司提供。用VC++6.0通過調(diào)用API函數(shù),編寫PC的應(yīng)用程序。這樣即可實現(xiàn)PC機(jī)對DSP(TM$320VC5402)指紋取像系統(tǒng)的控制以及圖像的傳輸。主要使用的API函數(shù)是DevicelOControl()、ReadFile()、WriteFile()。其中DevicelOControl()用于PC(主機(jī))向DSP圖像采集系統(tǒng)發(fā)送請求;ReadFile()和writeFile()分別用于從圖像采集系統(tǒng)讀出數(shù)據(jù)以及向圖像采集系統(tǒng)寫入數(shù)據(jù)。在設(shè)計過程中必須注意的問題是:由于USB接口是主從方式的接口,其一切傳輸過程都必須通過主機(jī)向外設(shè)發(fā)送請求后才可以開始,所以在
使用ReadFile()、WriteFile()讀寫數(shù)據(jù)前,必須先通過DevicelOControl()向圖像采集系統(tǒng)發(fā)送請求。圖13為系統(tǒng)的固件流程圖.
圖13系統(tǒng)固件流程圖
5.3初始化USB設(shè)備
初始化USB設(shè)備的具體流程在圖14中有很詳細(xì)的說明。UsbKbd驅(qū)動程序在“創(chuàng)建”IRP處理程序中做流程中的工作。
檢查設(shè)備是否啟用?
在某個配置中選擇接口
讀取其他描述符
訪問設(shè)備,發(fā)出命令
圖14 初始化USB設(shè)備流程
檢查設(shè)備是否啟用時,如果有必要,還需把設(shè)備復(fù)位,并重新啟動,自定義函數(shù)UsbGetPortStatus(…)完成這部分工作;在讀描述符時,除了設(shè)備描述符以外,還可能要讀字符串描述符,類描述或者廠商特定的描述符,自定義函數(shù)UsbGetDeviceDescriptor(…)完成這部分工作;設(shè)備啟動后,就可以對設(shè)備進(jìn)行操作,給設(shè)備發(fā)出讀寫的命令,初始化管道以便發(fā)送數(shù)據(jù),自定義函數(shù)UsbDoInterruptTransfer(…)和UsbSendOutputReport(…)完成這些功能,
圖15說明了程序的基本流程。
完成右邊的功能
創(chuàng)建并初始化IRP
調(diào)用USBDI
初始化Usb設(shè)備
構(gòu)造內(nèi)部IOCTL
存儲URB指針
發(fā)出URB
關(guān)閉設(shè)備
調(diào)用下一個驅(qū)動程序
UsbKbd驅(qū)動程序流程 調(diào)用USBDI流程
圖15 程序基本流程圖
UsbKbd驅(qū)動程序中主要的實現(xiàn)功能代碼都在Usb.cpp中,其中有幾個很重要的自定義函數(shù)在這里需要說明一下,因為這幾個函數(shù)和USB的規(guī)范配合的很緊密,而且完成的代碼就是針對UsbKbd驅(qū)動程序要完成的功能,而其他的一些函數(shù)都是搭建驅(qū)動程序的框架,在很大的程度上是通用的。
5.4部分程序說明
下邊給出了系統(tǒng)設(shè)備復(fù)位的程序說,當(dāng)一個USB設(shè)備插入PC時,PC要知道此時總線已經(jīng)給電USB外設(shè)了,這要完成“PNP“ IRP,首先必須初始化設(shè)備,讀取設(shè)備的端口狀態(tài),如果需要,還需要重啟USB設(shè)備,以進(jìn)行USB信號的傳輸[6]。
下面的程序偽代碼說明了當(dāng)一個WIN32程序打開設(shè)備的一個句柄時,UsbKbd如何得到端口的狀態(tài)并復(fù)位它的設(shè)備的。UsbGetPortStatus發(fā)出IOCTL_INTERAL_USB_GET_PORT_STATUS,得到端口狀態(tài)位。UsbResetDevice檢查USBD_PORT_CONNECTED和USBD_PORT_ENALBLE位,如果有需要,則調(diào)用UsbResetPort。UsbResetPort簡單地向USB類驅(qū)動程序發(fā)出IOCTL_IN_INTERNAL_USB_RESET_PORT。程序的說明已經(jīng)在注釋中添加。
NTSTATUS UsbGetPortStatus( IN PUSBKBD_DEVICE_EXTENSION dx,
OUT ULONG& PortStatus//輸出端口狀態(tài))
{
PortStatus = 0;//初始化
NTSTATUS status = CallUSBDI( dx, &PortStatus,
IOCTL_INTERNAL_USB_GET_PORT_STATUS);
//調(diào)用內(nèi)部IOCTL,并賦值給PortStatus
return status;}//返回調(diào)用狀態(tài)
NTSTATUS UsbResetPort( IN PUSBKBD_DEVICE_EXTENSION dx)
{
NTSTATUS status = CallUSBDI( dx, NULL,
IOCTL_INTERNAL_USB_RESET_PORT);//調(diào)用內(nèi)部復(fù)位IOCTL
return status;//返回狀態(tài)}
NTSTATUS UsbResetDevice( IN PUSBKBD_DEVICE_EXTENSION dx)
{
ULONG PortStatus;
//得到端口狀態(tài)
NTSTATUS status = UsbGetPortStatus( dx, PortStatus);
//檢查端口狀態(tài)是否正確,否則返回
if( !NT_SUCCESS(status)) return status;
// 如果端口狀態(tài)位USB外設(shè)沒有連接到PC,則返回
if( !(PortStatus & USBD_PORT_CONNECTED))
return STATUS_NO_SUCH_DEVICE;
//如果端口可以工作,則返回OK
if( PortStatus & USBD_PORT_ENABLED)
return status;
//如果端口連接上去了,但是不能工作,則對設(shè)備復(fù)位
status = UsbResetPort(dx);
if( !NT_SUCCESS(status))
return status;
// 檢查此時端口能不能工作,順序大致如上
status = UsbGetPortStatus( dx, PortStatus);
if( !NT_SUCCESS(status))
return status;
if( !(PortStatus & USBD_PORT_CONNECTED) ||
!(PortStatus & USBD_PORT_ENABLED))
return STATUS_NO_SUCH_DEVICE;
return status;//返回最終狀態(tài)
}
如果設(shè)備有嚴(yán)重的通信問題(或者設(shè)備是壞的,或者缺省管道的控制傳輸一直失敗),可能需要復(fù)位端口。但是,如果另一個管道暫停,則不要復(fù)位該端口。如果管道暫停,或者USBDI檢測超時,則該管道停止。USBD_HALTED宏檢測到這個錯誤,連接到當(dāng)前的URB的所有URB都被取消。停止的管道不能接收任何其他管道的傳輸,直到發(fā)出“管道復(fù)位”URB。但是缺省管道決不能暫停。如果這里發(fā)生超時或者暫停,則報告一個錯誤。這個錯誤應(yīng)使用USBD_ERROR宏檢測,而不是使用USBD_HALTED宏。
結(jié) 論
USB設(shè)備具有熱插拔,即插即用,自動配置的能力,隨著U盤存儲容量的不斷擴(kuò)大,U盤數(shù)據(jù)的安全性越來越收到人們的重視,本文提出了一種基于傳感器FPS200和DSP芯片TMS320VC5402的指紋U盤的軟硬件設(shè)計流程,能夠在指紋圖像的處理速度和質(zhì)量上可滿足U盤上指紋識別的要求。所設(shè)計出的指紋U盤體積小,速度快,簡單易用,能準(zhǔn)確識別出用戶身份合法性。本文重點討論了整個指紋U盤系統(tǒng)的設(shè)計,對部分系統(tǒng)沒有做更詳細(xì)的闡述,還有許多工作沒有完善。例如,指紋算法的過程,DSP部分電路的設(shè)計等。
致 謝
本課題在選題及研究過程中得到常文平老師的悉心指導(dǎo),常老師多次詢問研究進(jìn)程,并為我指點迷津,幫助我開拓研究思路,精心點撥、熱忱鼓勵。感謝信息工程各位老師對我的教育培養(yǎng)。四年來,他們認(rèn)真教授我們專業(yè)知識,細(xì)心指導(dǎo)我的學(xué)習(xí)與研究,在此,我要向諸位老師深深地鞠上一躬。
?在論文即將完成之際,我的心情無法平靜,從開始進(jìn)入課題到論文的順利完成,有多少可敬的師長、同學(xué)、朋友給了我無言的幫助,在這里請接受我誠摯的謝意!
參考文獻(xiàn)
[1]張雄偉.DSP芯片的原理與開發(fā)應(yīng)用(第3版),北京:電子工業(yè)出版社,2003
[2]劉旭,田捷.自動指紋識別算法在嵌入式系統(tǒng)上的實現(xiàn)[J].計算機(jī)工程與應(yīng)用.2002.(21):120—122
[3]楊志龍,張維新,寇建鋒.基于TMS320VC5402的指紋識別系統(tǒng)[J].電子技術(shù).電子技術(shù),2002,(10):57—58
[4] 岡薩雷斯. 數(shù)字圖像處理(第二版)[M].阮秋琦,阮宇智,等譯.北京電子工業(yè)出版社,2004.
[5] 萬靜,李忠民.USB2.0通用串行總線軟件系統(tǒng)的設(shè)計[J] .電子工程師,2004 , 30(5):55 - 58.
[6]黃堅,朱節(jié)云等,基于DSP的實時多任務(wù)嵌入式系統(tǒng)[J],微計算機(jī)信息,2004.10:25—27
[7]陳慶接,李見為,張騰等,基于ARM9的嵌入式自動指紋識別模塊系統(tǒng)[J], 重慶大學(xué)學(xué)報,Vo1.27,No.9,22-26,2004.
[8]王丹,陳紀(jì)椿.DSP上的指紋識別模塊的實現(xiàn)[J],電子技術(shù)應(yīng)用,2004.
[9]梁倬.自動指紋識別系統(tǒng)的預(yù)處理技術(shù)[D],成都:電子科技大學(xué),2004
[10]趙紅怡.DSP技術(shù)與應(yīng)用實例[M].北京:電子工業(yè)出版社,2003
[11]張?zhí)幂x,田捷,劉旭.基于DSP指紋識別核心算法的設(shè)計與實現(xiàn)[J].計算機(jī)工程與應(yīng)用.2003.(16):25—27.
[12]戴明楨,周建江.TMS320C54xDSP結(jié)構(gòu)、原理及應(yīng)用[M],北京:北京航空航天大學(xué)出版社,2001.
[13]謝健陽,李鐵才,唐降龍,佟喜峰.指紋識別系統(tǒng)的設(shè)計與實現(xiàn)[J].微計算機(jī)信息.微計算機(jī)信息.2006,3—2:156—157
[14]Texas Instrument.TMS320C54x DSP Reference.
[15]USB Implementers Forum, inc. On-The-Go Supplement to the USB 2.0 specification Revision 1.0a, 2003
[16]Philips Electronics. ISP1362 Single-Chip Universal Serial Bus On-The-Go controller, 2004
23
收藏