S-6-1 正文、结论、参考文献等标准格式(理工农科专业学生用)

更新时间:2024-05-13 07:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

淮安信息学院毕业设计(论文) 第 1 页 共 1 页 1 绪论

1.1 指纹识别的背景

指纹识别是依据人手指指尖表面的脊线和谷线的分布状态来识别和验证个人身份的方法。公元前7000年到6000年以前,古叙利亚和中国已经开始利用指纹来鉴别身份。据考古发现,在这个时代,一些粘土陶器上留有陶艺匠人的指纹,中国的一些文件上印有起草者的大拇指指纹,在Jercho的古城市的房屋留有砖匠一对大拇指指纹的印记等。公元前2700多年前的周代,指纹被用于民间契约的签署,即画押,旨在保持契约的可信度。尽管指纹在我国应用较早,但由于缺乏专门的系统研究,那时还未能成为一门专门的学科。英国科学家Galton于1892年出版了《指纹学》和《指纹分析法》

[1]

,向世人介绍了用于单个指纹分类的细节特征,首次系统地阐述了指纹学,完善地

确立了一整套指纹识别的方法,从此奠定了指纹科学研究的基础。

由于人体指纹具有终身稳定性和唯一性,很快就被用于刑事侦查,并被尊为“物证之首”。但早期的指纹识别采用的方法是人工识别法。这项工作需要有一些经过专门训练的专业技术人员和有经验的指纹专家凭经验对指纹逐个对比,从而得出鉴定的结果。那时候世界上许多国家都建立了指纹库,仅美国联邦调查局的指纹库中就存有二亿多张指纹卡。然而用传统的指纹识别方法进行指纹鉴定,不但效率低、速度慢,查找范围也很有限,远远不能满足现代社会的需要。从二十世纪六十年代开始,随着计算机技术的发展,传统的指纹识别技术发生了重大变化。人们开始利用计算机来建立指纹识别系统。

1.2 指纹识别研究的目的和意义

随着世界经济的飞速发展与社会信息化的日益普及,访问控制与信息安全已成为人们的关注热点,身份认证也越来越多地受到人们的重视。传统的身份认证主要依靠两种手段:(1)所掌握的,如证件、钥匙、IC卡等;(2)所知道的,如密码、口令等。然而,这些认证手段均存在这易丢失、遗忘、复制以及破译等安全隐患,已经无法满足现代社会对于身份认证所提出的准确性、安全性和实用性等更高的要求。

生物特征识别技术利用人体“所固有的”生理特征和行为特征来进行个人身份的鉴定。人体的生理特征包括指纹、掌纹、虹膜、面相、耳廓等;行为特征包括语音、笔记、步态、击键习惯等[2]。

淮安信息学院毕业设计(论文) 第 2 页 共 2 页 生物特征识别技术相对于传统的身份认证手段具有独特优势。首先,生物特征体现的是人体的自然属性和行为习惯,具有普遍性,不存在应用局限;其次,生物特征对于任何个体来说都是唯一的,这就确保了使用的安全性;另外,生物特征受外界环境及其他因素的影响非常小,具备了良好的稳定性。这些特点使得生物特征识别技术成为当前身份认证领域的研究热点和应用发展趋势。

在所有的生物特征中,指纹相对稳定,但采集指纹不是非侵犯性的;面相特征具有很多优势,如主动性、非侵犯性和用户友好等,但面部会随着年龄变化,而且容易被伪装;语音特征具有与面相特征相似的优点,也会随着年龄、健康状况及环境等因素而变化,而且语音识别系统比较容易被录所欺骗、被伪造;虹膜特征解决了上述问题,同时还具有上述其他生物特征所具有的一些优点,但是技术的应用没有指纹成熟,而且造价较高。所以相对而言,利用指纹识别技术来进行身份认证是一种较好的解决方案。到目前为止,指纹识别是一种应用最为成熟、最为广泛的生物特征识别技术。

1.3 指纹识别技术的研究现状及发展分析

1.3.1 国内外研究现状

目前,世界上拥有众多的指纹识别系统开发厂商与科研机构。美国在这一领域的研究水平居于世界最前沿。亚洲在这一领域研究水平最高的是朝鲜,其鸭绿江公司的指纹产品在国际上享有一定的声誉[3]。国内从事自动指纹识别技术研究的公司和机构基本上可以分为两大类:一类主要是从事国外产品代理业务,一类是从事自主研发。其中,第二类数目较少,以北京四方元大公司、西安青松企业集团和长春鸿达集团为代表。尽管各个指纹识别系统的生产商都报出极高的识别率,但是他们都是在自己的实验库上做测试,而不是在一个统一的标准指纹库上测试,结果的可比性不大。所以在指纹识别算法的研究上,还存在着许多需要改进的地方,这使得指纹识别算法的研究还在继续。

目前,自动指纹识别技术在刑侦、司法部门已得到广泛的应用。近年来,信息社会的高速运转使得自动指纹识别在政府部门、商业机构被迅速推广应用,掀起了生物识别市场新一轮的热潮。其在各部门的主要应用如下:

(1)刑侦司法部门:死者鉴定、罪犯调查、恐怖分子认证、亲身父母鉴定、查找遗失孩童等;

(2)政府部门:身份证、驾驶证、社保、福利发放、出入境检查、护照等; (3)商业机构:计算机网络登录、电子信息安全、电子商务、互联网访问、自动取

淮安信息学院毕业设计(论文) 第 3 页 共 3 页 款机、信用卡、物理访问控制、手机、个人数字助理、医疗记录管理、远程教育等。 1.3.2 指纹识别面临的挑战以及发展趋势

自动指纹识别的广泛应用使得很多人存有一种误解,认为自动指纹识别技术已经成为一个完全解决了的问题,继续研究的必要性和意义因此受到质疑。事实上,尽管已经有众多成型的自动指纹识别产品在使用,但在很多民用领域指纹匹配的准确度仍然达不到要求。主要问题在于:

1.指纹采集过程中的噪声、形变、按压力度不均、有效面积太小、放置位置偏离中心等影响了指纹质量。此外,影响指纹采集图像差异的因素还包括:人体本身因素(手指太干或太湿)、疤痕导致的不同时期的指纹差异、不同年龄阶段导致指纹差异等,甚至一小部分人群因为某种原因无法提供指纹用于识别。尽管现在已经有一些采集设备配有指纹质量监控软件,但不能从根本上保证指纹图像采集的质量问题。这无疑是自动指纹识别技术研究中的一个薄弱环节,对指纹图像特征提取的鲁棒性和适应性提出了很高的要求。

2.不同的应用场合对指纹识别的性能要求不同。在验证模式下,对使用性和拒识率要求较高(一般要求处理时间<1s,要求用户输入<3次),以防给用户带来不便;在辨识模式下,由于要对数据库进行检索和匹配,所以对匹配时间和检索空间,同时还要求。这样就要求选择合适的指纹特征表示方式以减少所占用的贮存空间,同时还要合适的匹配算法加快匹配速度和精度。

3.自动指纹分类技术仍然是自动指纹识别技术中的一大难题。一方面指纹类别本身存在着类别与类别之间的交叉模糊边界(如弓形与帐弓形、脊与帐弓形),另一方面自动指纹分类算法本身还需作改进。

4.自动指纹识别产品的相关设备的更新以及越来越广阔的应用领域需求也对传统的指纹识别技术提出了新的要求。例如,指纹采集设备正在向具有低价格和小型化发展。这使得指纹产品可以嵌入到其它设备中(如鼠标、手机等),但同时由于采集到的指纹图像区域变小,必然对匹配算法提出了新的要求,即在采集到的指纹区域小的情况下能否取出足够多的特征用于识别。

综上所述,自动指纹识别中还存在大量尚未解决的问题,还需更好的指纹识别模式与匹配技术来改善系统性能。一方面,就指纹特征而言,结合多种可行的指纹特征表述方式以提供丰富的指纹信息用于匹配识别;就识别系统而言,通过增加每个人指纹模板数目(采集同一个人多个手指指纹或同一个手指的多次采集)提高系统的安全系

淮安信息学院毕业设计(论文) 第 4 页 共 4 页 数。另一方面,每种生物特征都有自己的使用范围。比如,有些人的指纹无法提取特征,患白内障的人虹膜会发生变化等。在对安全有严格要求的应用领域中,融合多种生物识别特征来实现高精度的识别系统无疑是身份识别领域发展的必然趋势。

1.4 本文研究的主要内容及工作安排

本课题是基于TMS320VC5416 DSP的指纹识别系统知识的软件设计,主要是通过指纹采集器将现场采集的指纹图像传输给定点DSP,并运用数字图像处理的相关理论知识对原始指纹图像进行预处理、特征提取、指纹比对等一系列操作,最后实现个人身份认证。论文具体结构安排如下:

第一章 绪论。对指纹识别技术的研究目的、意义及国内外发展动态进行了概述,并对其研究现状进行了分析。

第二章 自动指纹识别技术。简单介绍了指纹识别的工作流程以及指纹识别的基本原理,包括指纹特征结构、分类方式等。

第三章 自动指纹识别系统设计方案介绍。介绍了设计的硬件平台、核心硬件的组成以及各模块之间的通信方式。

第四章 指纹识别系统软件设计。介绍了系统的软件设计方案,各模块初始化方法等,并给出相应的工作流程图。并完成软件设计和调试。

最后对本次毕业设计进行了总体概述,总结了设计心得、过程中遇到的困难以及自己的成长过程,并对以后的工作和学习提出了展望。

2 自动指纹识别技术

2.1 指纹特征分析

指纹其实是比较复杂的。与人工处理不同,大多数生物识别技术公司并不直接存储指纹的图像。多年来在各个公司及其研究机构产生了许多数字化的算法(美国有关法律认为,指纹图像属于个人隐私,因此不能直接存储指纹图像)。但指纹识别算法最终都归结为在指纹图像上找出指纹的特征并用来进行比对。

在指纹识别系统中,通常采用全局特征和局部特征两种层次的结构特征。据相关证明显示,两枚指纹可能具有相同的全局特征,但局部特征却不可能完全相同。英国学者E.R.Herry认为,在只考虑局部特征的条件下,只要有超过13个特征点比对重合,那么就可以确认这两枚指纹来自同一个手指。 2.1.1 全局特征

淮安信息学院毕业设计(论文) 第 5 页 共 5 页 全局特征是指那些用人眼就可以直接观察到的特征,包括:

(1) 基本纹型,包括环型(loop),弓型(arch),螺旋形(whorl),如图2.1所示。其他的指纹图案都基于这三种基本图案。仅仅依靠指纹图案来鉴定指纹时远远不够的,因为这只是一个粗略的分类,但是通过这种分类却可以使得在海量数据库中搜索指纹变得更加方便。

(a)环型 (b)弓型 (c)螺旋形

图2.1 指纹基本图案分类

(2) 模式区(pattern area)是指指纹上包括了总体特征的区域,即从模式区就能分辨出指纹属于那一种基本类型。有的指纹识别算法只使用模式区的数据,但也有的不是,如Secure Touch的指纹识别算法就使用了所取的完整指纹而不仅仅是模式区来进行分析和识别。

(3) 核心点(core point)即指位于指纹纹路的渐进中心,在读取指纹和指纹比对是作为参考点。许多算法是基于核心点的,即只能处理和识别具有核心点的指纹。

(4) 三角点(delta)即位于从核心点开始的第一个分叉点或断点、或者两条纹路会聚处、孤立点、转折点,或者指向这些奇异点。三角点提供了指纹纹路的计数跟踪的开始之处。

(5) 纹数(ridge count)指模式区内指纹纹路的数量。在计算指纹纹数时,一般先连接核心点和三角点,这条连线与指纹纹路相交的数量即可认为是指纹的纹路。

(d)模式区 (f)核心点 (e)三角点 (f)纹数

图2.2 指纹特征示意图

淮安信息学院毕业设计(论文) 第 6 页 共 6 页 2.1.2 局部特征

局部特征是指指纹上的节点的特征,这些具有某种特征的节点称为特征点。两枚指纹经常会具有相同的全局特征,但是它们的具有特征却不可能完全相同。

指纹纹路并不是连续的、平滑笔直的,而是经常出现中断、分叉或者打折。这些断电、分叉点和转折点就称为“特征点”。就是这些特征点提供了指纹唯一性的确认信息。指纹上的节点有四种不同特征:

(1) 特征点的分类

有以下几种类型,最经典的是终结点和分叉点,如表2.1所示。

表2.1 指纹细节点示意图

(2) 方向(orientation)即节点可以朝着一定的方向。 (3) 曲率(curvature)即描述纹路方向的改变速度。

(4) 位置(position)节点的位置通过(x,y)坐标来表示,可以用绝对坐标,也可以用相对坐标表示[4]。

2.2 自动指纹识别技术的分类及工作原理

由于人体的生理特征具有不可复制的特点,人们把目光转向了生物识别技术,希望可以借此技术来应付现行系统所面临的安全性问题的挑战。要把人体特征用于身份识别,这些特征必须具有唯一性和稳定性。经研究表明,人的指纹、掌纹、面相、语音、虹膜、视网膜等都具有唯一性和稳定性,基于这些,人们发展了指纹识别、面相识别、语音识别等多种生物识别技术,目前许多技术都已经发展成熟并得以应用,其中对指纹识别技术的研究最为深入和成熟。 2.2.1 自动指纹识别系统的分类

按照用途和功能的不同可以将自动指纹识别系统分为两类,即身份验证系统(verification)和身份辨识系统(identification)[4]。

身份验证就是在他或她的指纹已经在指纹库中注册的前提下,把现场采集到的指纹与已经注册登记的指纹进行一对一比对(one-to-one matching),从而来确认身份。指纹以一定的压缩格式存贮,并与其姓名或其标识(ID,PIN)联系起来。随后在比对现场,

淮安信息学院毕业设计(论文) 第 7 页 共 7 页 先验证其标识,然后利用系统的指纹模板与现场采集的指纹比对来证明其标识是合法的。验证其实是回答了这样一个问题:“他是你自称的这个人码?”这是应用系统中使用的较多的方法,验证过程如图2.3所示。

身份辨识则是把现场采集到的指纹同指纹库中的指纹逐一比对,从中找出与现场指纹相匹配的指纹,这也叫一对多(one-to-many matching)。验证其实是回答了这样一个问题:“他是谁?”辨识主要应用于犯罪指纹匹配的系统领域中。一个身份不明的人的指纹与指纹库中有犯罪记录的人的指纹进行比对,来确定此人是否曾经有过犯罪记录,辨识过程如图2.4所示。

图2.3 指纹验证过程

图2.4 指纹辨识过程

验证和辨识在比对算法和系统设计上各具特点。身份验证系统主要用于民用领域,一般只考虑对完整指纹进行比对,更强调易用性;身份辨识系统主要用于警用领域,因此还要考虑到对残纹的比对,易用性和安全性都要兼顾;;验证系统对比算法的速度要求不如辨识系统高,但更强调易用性;另外在辨识系统中,一般要使用分类计数来加快搜索的速度。

除了验证系统一对一和辨识系统一对多的比对方法,在实际应用中还有一对几个

淮安信息学院毕业设计(论文) 第 8 页 共 8 页 匹配(ont-to-few matching)匹配方式,它主要应用于只有几个(few),例如一个家庭的成员要进入他们的房子。一对几个匹配一般使用与一对一匹配相同的方法。

指纹是人体独一无二的生物特征,其复杂程度足以提供用于身份鉴别的特征。指纹识别技术已经发展成为目前最方便、可靠、非侵害和价格低廉的生物识别技术解决方案,随着相关技术的逐步成熟,指纹识别技术的应用将有着广阔的市场空间。 2.2.2 指纹识别系统工作原理

一般来讲,自动指纹识别算法体系由指纹图像采集、指纹图像预处理、指纹特征提取、指纹分类和指纹比对几个部分组成。系统识别框图如图2.5所示。

指纹采集图像处理特征提取指纹库系统学习模块图像采集图像处理特征提取指纹比对输出结果指纹识别模块

图2.5 自动指纹识别系统框图

图中的学习模块负责采集用户指纹数据,对指纹图像进行预处理,提取出指纹特征,用来作为指纹模板存入指纹库。而识别模块则负责采集和处理指纹图像,在提取特征后与指纹库中的指纹模板进行比对,然后判断是否匹配,得出结论。整个系统的核心就是图像处理、特征提取以及指纹比对。

1.指纹图像采集

较早出现的活体指纹采集设备是光电式的,现在仍为大多数自动指纹识别系统所使用。后来出现的电容式和电感式采集设备,在某些条件下可以提高指纹采集的质量,但在耐磨性和稳定性等方面还存在一些问题。

到目前为止,光学采集头提高了更加可靠的解决方案。通过改进原来的光学取像技术,新一代的光学指纹采集器更是以无可挑剔的性能与低廉的价格赢得了广阔的市场[5]。

光学取像设备依据的是光的全反射原理(FTIR),它需要一个光源从三棱镜反射到按在采集头上的手指上,光线照到压有指纹的玻璃表面,反射光线由CCD获取,反

淮安信息学院毕业设计(论文) 第 9 页 共 9 页 射光线的总量依赖于压在玻璃表面的指纹脊线和谷线的深度和皮肤与玻璃间的油脂和水分。光线经玻璃射到谷线后在玻璃与空气的界面发生全反射,光线被反射到CCD,而射到脊线的光线不发生全反射,而是被脊线与玻璃的接触面吸收或漫反射到其他地方,这样就在CCD上形成了指纹图像。

2.图像预处理

通常,由指纹采集器采集到的原始指纹图像的质量是比较低的,存在较多的噪声。通过对原始指纹灰度图像进行预滤波、方向图计算、基于方向图滤波、二值化、细化等一系列操作,将其转化为单像素宽的脊线线条二值图像,基于此二值图像对指纹的中心参考点,以及细节特征点进行特征提取[6]。指纹预处理的一般过程如图2.6所示。

预处理预滤波方向图方向滤波二值化细化

图2.6 指纹图像预处理流程

3.指纹特征提取

指纹特征点分为全局特征(如核心点、三角点)和局部特征(指纹细节点)。在考虑局部特征的情况下,英国的E.R.H.erry认为,在比对时,只要有13个特征点重合,就可以确定是同一枚指纹。指纹的细节特征有150多种,但这些特征出现的概率并不相等,有的特征是极其罕见的。

一般在指纹识别技术中只使用两种细节特征,即纹线的终结点和分叉点。纹线端点指的是纹线突然终止的位置,分叉点则是纹线突然一分为二的位置。大量统计结果和实际应用表明,这两类特征点在指纹中出现的概率最大、最稳定,而且比较容易获取。

4.指纹分类

指纹分类的目的是方便海量指纹库的管理,尽可能减小搜索空间,从而加速指纹匹配所需的时间。指纹分类方法越完善,划分的类型越详细,指纹库中每类中所包含的指纹模板数量就越少,对一次识别任务来讲,需要比对的次数和时间花费就会越少。

在大部分研究中,指纹一般分为旋涡型(whorl)、左环型(left loop)、右环型(right

淮安信息学院毕业设计(论文) 第 10 页 共 10 页 loop)、拱型(arch)、尖拱型(tented arch)5类[7]。对于要求严格的专用指纹识别系统,仅仅按照这样的分类方式是远远不能满足系统要求的,因此还需要进一步进行更加细致的分类。

5.指纹比对

指纹比对是通过将两枚指纹进行计较从而确定它们是否来自同一手指的过程。指纹比对主要是通过比较两枚指纹的局部特征和相互关系来决定指纹的唯一性。细节特征的集合形成一个拓扑结构,所以指纹比对的过程实际上是两个拓扑结构的匹配问题。

由于采集过程中的变形、特征点位置的偏差、真正特征点的丢失和伪特征点的存在等问题,会造成即使是同源指纹但所获得的特征信息却不完全一样,所以指纹比对的过程是一个模糊匹配的过程。 2.2.3 自动指纹识别系统系能评价指标

1.拒真率与认假率

算法是指纹识别系统实现其功能最重要的部分。据此,人们引入了拒识率(False Rejection Rate,FRR)和误识率(False Accept Rate,FAR)来描述系统的精确度[8]。

FRR拒识率又称拒真率,指将相同的指纹误认为是不同指纹,而加以拒绝的出错概率。其定义为:

FRR=拒识的指纹数目考察的指纹总数目?100%

FAR误识率又称认假率,指将不同的指纹误认为是相同指纹,而加以接收的出错概率。其定义为:

FAR?误识的指纹数目考察的指纹总数目?100%

自动指纹识别系统的拒真率和认假率存在一定的关系,其关系图如图2.7所示。

淮安信息学院毕业设计(论文) 第 11 页 共 11 页

图2.7 FAR和FRR关系

2.拒登率

拒登率(Error Rejection Rate,ERR)用来描述指纹设备的适应性。

ERR指的是指纹设备出现不能登录或对指纹图像不能进行处理的概率,拒登率ERR过高将会严重影响系统的使用范围。

3.速度

指纹识别系统的工作速度主要由采集时间、图像处理时间、比对时间和平均识别速度几项指标构成[9]。采集时间通常包含了采集的操作时间和图像的输出时间;图像处理时间指的是从计算机处理指纹图像开始到提取出所有特征并输出指纹模板所花费的时间;比对时间指计算机对两组指纹特征数据进行比对开始并给出比对结果所花费的时间;平均识别速度指计算机从指纹库中搜索出特定指纹模板的速度,它通常是一个统计平均值,与指纹库的分类方法有很大关系。

3 自动指纹识别系统设计方案介绍

3.1 系统硬件构架

目前的嵌入式处理器各种各样。TI公司的数字信号处理器(DSP)芯片具有很高的性价比。由于DSP芯片具有很强的数学计算能力,合理利用它的处理特性,在某些方面可以和高性能的工作站相比。利用DSP芯片构建嵌入式系统的硬件平台,可以很好的满足实际需要。另外,DSP芯片具有灵活的外部接口,和各种外设的接口电路设计相当方便,并且成本也越来越低。正因为如此,DSP芯片取得了广泛的应用。本系统以TMS320VC5416为核心处理单元(以下简称VC5416),来构成系统的硬件处理平台。

硬件平台大致可以分为5个部分:电源部分、核心部件(CPU)、JTAG调试接口以及外部串口单元(McBSP)。系统硬件接口框图如图3.1所示。

淮安信息学院毕业设计(论文) JTAG调试接口第 12 页 共 12 页 POWER核心部分外接串口 图3.1 系统硬件接口框图

POWER电源部分负责给系统供电。该系统是一个多电平系统,包括5V电源,3.3V电源以及1.8V电源。电源部分采用常见的TPS76318电压转换芯片实现输入电压到3.3V和1.8V的转换。

JTAG调试接口用于程序的跟踪和调试。 McBSP用于和UART互联。

核心部件是系统最主要的部分,它包括中央处理单元DSP芯片、外接SRAM以及外接FLASH。

指纹识别系统主要包括:DSP最小系统、指纹图像采集部分、串口通信部分、外部存储部分、供电系统等。其结构框图如图3.2所示。

指纹识别模块SRAMDSPFLASH人机接口交互界面 图3.2 指纹识别系统硬件结构框图

3.2 系统核心介绍

3.2.1 指纹识别模块

本文采用基于光学传感器的独立处理模块FPM10A,它主要由指纹图像采集和指纹处理模块两部分组成,两者之间由150mm长的电缆相连,指纹采集板上有一个5芯插座和一个15芯插座,15芯的插座用于与150mm的电缆相连,连接指纹采集头,5芯的插座留给用户接口。指纹采集头主要负责采集指纹图像并准确无误的传输给指

淮安信息学院毕业设计(论文) 第 13 页 共 13 页 纹处理板,采集到的图像格式为256×288像素。指纹处理板则负责根据用户的命令来完成一系列的操作,可以完成指纹录入、图像处理、模板存储、指纹比对和指纹搜索等功能。其结构图如图3.3所示。

指纹图像处理任务(图像增强、二值化、细化、特征提取、特征匹配)指纹传感器串口(输出指纹识别结果)控制模块

图3.3 指纹识别模块结构图

指纹识别模块FPM10A通过UART异步串行口与外部接口,使用者通过此接口来命令它完成指纹采集、指纹比对等一系列操作。UART接口采用半双工异步串行通信,默认波特率为57600bps,可通过命令设置为9600~115200bps;传送的帧格式为10位,1位0电平起始位,8位数据位(低位在前)和1位停止位,无校验位。其管脚定义如表3.1所示。

表3.1 指纹处理板上与用户接口的5芯插座的管脚定义

引脚号 1 2 3 4 5 名称 VIN TXD RXD GND NC 类型 in out in GND — 功能描述 电源正输入端。(线色:红) 串行数据输出。TTL逻辑电平。(线色:绿) 串行数据输入。TTL逻辑电平。(线色:白) 信号地。内部与电源地连接。(线色:黑) (一体式模块无此引脚) 指纹识别模块FPM10A性能指标: 工作电压:3.6V~7V

供电电流:100mA(典型值)、150mA(峰值) 工作温度:-20℃~+40℃

通讯波特率:(9600×N)bps,其中N=1~12(默认值N=6,即57600bps) 3.2.2 使用McBSP实现UART数据通信

本设计中利用VC5416的多通道缓冲串行口(McBSP)与指纹识别模块FPM10A进行通信。但是FPM10A外部接口是异步串行接口,而McBSP是同步串行接口,所以要保证通信可以正确进行,必须在DSP方面加一个专门软件来实现。

软件实现UART有多种方法,其中数据接收是关键。因异步通信没有可参照的时钟信号,发送方随时都可能发送数据,任何时刻串行数据到来时,系统都应该及时准

淮安信息学院毕业设计(论文) 第 14 页 共 14 页 确的接收。比较而言,本机发送串行数据相对容易,只要对发送出去的电平做持续时间的定时即可。

为了模拟异步串口,必须要设计一种方案使McBSP能检测和产生UART的数据帧。因为不能和UART数据帧同步,所以不能保证同步串口的时钟和UART数据帧的起始位的上升沿或下降沿对齐。这样UART数据帧和同步串口间会有偏移,同时也会因DSP的同步串口时钟频率和UART数据帧的波特率不匹配而产生数据的速度偏移。为了减少这两个偏移,可以采用过采样技术,即同步串口对UART数据流进行过采样,然后再识别或产生UART的数据帧。同时采用过采样技术也有利于高速的SPI和低速的UART数据流相匹配。过采样的采样速率可以有多种选择,因为VC5416的数据位都是16位,为了便于处理本文采用16倍采样率过采样。

TMS320VC5416的McBSP接口有6个信号线:BSFX(帧同步脉冲发送)、BFSR(帧同步脉冲接收)、BCLKX(发送数据时钟)、BCLKR(接收数据时钟)、BDX(串口数据发送)、BDR(串口数据接收)。应用时将BFSR和BDR连在一起都和异步串口的发送数据线连接,将BDX和异步串口的接收数据线连接,其他悬空即可[10]。图3.4给出了理想时序。

图3.4 McBSP口对UART数据采集时钟的理想时序

3.2.3 分频系数计算

McBSP时钟频率也就是采样频率。TMS320C54X系列DSP的McBSP时钟频率可以由DSP主时钟分频得到。通过对寄存器设置可以设定分频系数。

分频系数div可由如下公式得到:

div?f16Br

式中f为DSP的工作时钟,Br为异步串口的工作波特率。计算后div若非整数则需取整。分频寄存器只有8bits,故最大分频值是256。TMS320VC5416主频为160MHz,串口默认波特率设定为5600bps,则:

淮安信息学院毕业设计(论文) 第 15 页 共 15 页 Div=160M/(16×5600)=11(取整)

4 自动指纹识别系统软件设计

4.1 软件设计环境CCS平台介绍

CCS(Code Composer Studio)是TI公司为其TMS320系列DSP提供的一个高度集成的软件开发和调试环境,它将DSP工程项目管理、源代码的编辑、目标代码的生成、调试和分析都打包在一个环境中,使其可以基本涵盖软件开发的每一个环节。CCS主要包括以下工具:

1.C编译器、汇编优化器和连接器(代码生成工具) 2.指令集仿真器(Simulator) 3.实时的基础软件(DSP/BIOS)

4.主机和目标机之间的实时数据交换(RTDX)

利用CCS,用户可方便的建立一个DSP的工程项目,并对相应的源文件进行管理或编辑修改。所有源文件的编辑、汇编和链接只需要一个按钮就可以一次完成,用户不必再通过输入冗长的命令来完成这些操作。

经过上面的过程产生的目标代码可以在CCS的环境下通过硬件仿真工具,如XDS510等,下载到用户目标系统中进行调试和运行。如果没有用户目标系统,还可以将目标代码装载到Simulator中运行。Simulator利用计算机的资源模拟DSP的运行情况,可以帮助用户熟悉DSP的内部结构和指令,在有的情况下还可以对部分的程序功能进行非实时的验证。

在CCS中,用户可以利用其提供的数据可视化工具按照数据的自然格式来观察数据,如眼图、星座图、FFT瀑布图等,对于图像数据,CCS也提供了多种格式(如YUV或RGB格式等)来读取原始数据并加以显示,这些工具使得位于DSP存储器中的数据得以形象的表现,从而可以大大提高分析测试的速度。

4.2 系统初始化

系统初始化程序包括TMS320VC5416内部初始化和各个片内外设的初始化,以及外接接口电路的初始化。DSP系统上电后,DSP芯片已有部分进行了定义,因为DSP内两个状态寄存器(ST0、ST1)的所有状态位都处于确定状态,因此,上电复位后,DSP处于一种预定义状态。用户可以在系统上电后通过编写初始化程序,对两个状态寄存器的相应状态位进行修改,以满足不同系统的配置和应用要求。其中主要包括:

淮安信息学院毕业设计(论文) 第 16 页 共 16 页 堆栈指针初始化(SP)、存储器映射外围控制寄存器(SWWSR和BSCR)初始化、状态寄存器初始化(ST0、ST1)、处理器方式状态寄存器(PMST),其流程如图4.1所示。

数据页指针复位堆栈指针初始化设置存储器外围映射控制寄存器状态寄存器初始化处理器方式状态寄存器初值设定

图4.1 TMS320VC5416初始化流程图

4.3 McBSP与指纹识别模块FPM10A的数据通信

同步通信依赖三个独立的信号来传输和接收数据:数据、时钟、帧同步。然而作为异步通信,传输数据只需一根线,根本不需要时钟,它的通信格式完全由软件实现,见图4.2所示。

起始位 数据位 数据位 停止位 图4.2 同步通信数据格式

软件共分为3个大部分:串口的初始化;串口的接收;串口的发送。

(1)串口初始化。主要功能是:McBSP和DMA寄存器。McBSP产生正确的时钟、帧同步和波特率。其流程图如图4.2所示。

淮安信息学院毕业设计(论文) McBSP复位第 17 页 共 17 页 保存状态寄存器配置接收控制寄存器和引脚控制寄存器的初值配置接收、发送控制寄存器的初值 图4.2 McBSP初始化

(2)串口的接收。接收分为两个过程:首先当新包刚接收时所进行的操作;其次是怎样从Buffer中读取该包。第一个过程由DMA中断服务程序UARTDMARxISR实现,我们使用了ABU方式,DMA寄存器的设置见表3.第二个过程由用户调用现成UARTDMARxCHar实现,流程图如图4.3所示。

(3)串口的发送。发送分为两个过程:首先把新包放到发送Buffer中去;其次当一个新包刚发送时,应进行的操作,对于DMA寄存器的设置类似于接收,只是源地址为DMA缓冲区,目的地址是McBSP的DXR寄存器。第一个过程由用户调用现成UARTTxCHar来实现;第二个过由DMA发送中断服务程序UARTDMATxISR实现,流程图如图4.3所示。

淮安信息学院毕业设计(论文) 开始第 18 页 共 18 页 定时器初始化关闭无关中断Y定时到?N由低位到高位依次发送某位数据Y8位数据发送完毕?N发送停止位关闭定时器开发中断结束

图4.3 发送过程流程图

4.4 中断向量表设计

中断服务程序的地址(中断向量)要装载到存储器的合适区域。一般这些向量都定位在0x0开始的程序存储器中。但有些处理器要求或者可以在其他的存储区域安装中断向量。 TMS320C5402复位向量定位在0x0,其他中断向量可以定位于任何2K字的程序存储器中,中断向量表的定位是与PMST寄存器的IPTR位有关。当程序中需要响应中断时,应设计中断向量表,并将其加入工程中去。本程序系统复位、指纹数据输入和都需要设置响应中断。中断流程图如图4.4所示。

淮安信息学院毕业设计(论文) 开始第 19 页 共 19 页 定时器初始化关闭无关中断一个8位定时到达?移位寄存器右移一位新数据为1?移位寄存器+80H移位寄存器不变计算奇偶位一个位定时到达?8位数据接收完毕?保存数据至缓冲单元关闭定时器,开放中断结束 图4.4 中断程序流程图

4.5 程序自举加载(Boot Loader)

可编程的数字信号处理器芯片VC5416从上电复位后到进入工作状态前的阶段叫自举加载阶段(Boot Loader)。当上电复位后,它的程序指针自动指到ROM中(从F800H

淮安信息学院毕业设计(论文) 第 20 页 共 20 页 到FBFFH)的一个称为Boot Loader的程序,该程序是由生产商固化和升级管理的,主要完成一些数据的搬移和程序的重新定位工作。该程序根据环境选用相应的Boot Loader模式,将外部FLASH中的程序搬到DSP内部的RAM程序区中,并将程序指针移到执行程序的第一行处。

按照Boot时程序由外部FLASH存储器进入DSP片上RAM通道不同可分为HPI、串行口、并行口等模式,按照数据进入DSP时字长不同可分为8位和16位模式。

VC5416的Boot过程如图4.5上电复位后,C5416首先判断位于IMR和IFR寄存器的INT2标志位,若INT2有效则采取HPI模式,否则进一步判断INT3标志位;若INT3有效,则采用串行模式(Serial Mode);否则读取I/O空间的FFFFh地址处,当该地址为有效地址,采用并行模式(Parallel Mode);若该地址也无效,则读数据空间的FFFFh地址处,若该地址有效则仍采用并行模式,如果仍不满足条件时,进一步判断其他Boot模式。本文即采用了8位的并行加载方式。

图4.5 VC5416的Boot Loader 部分流程图

Boot Loader过程: (1)生成Boot表

CCS系统编译生成的.out格式的文件不能直接通过JTAG口加载到FLASH中,而是要通过CCS自带的hex500.exe和一个特定的.cmd文件将.out文件生成一个.hex格式的文件,也叫Boot表。将已经编译好的名为fingerchip.out的文件加载到FLASH中,则需创建一个.cmd文件,取名为fingerchip.cmd。

将hex500.exe 、fingerchip.cmd和 fingerchip.out放在同一目录下,执行窗口命令行:

淮安信息学院毕业设计(论文) 第 21 页 共 21 页 hex500 fingerchip.cmd 即得到fingerchip.hex 和fingerchip.mxp,从fingerchip.mxp文件中可以容易的找到程序入口地址。

(2)数据转换

用C编写一个数据转换程序,把二进制数据文件fingerchip.hex中的数据取出,并形成一个数组文件的形式,转换为数组头文件fingerchip.h。则在CCS环境下,FLASH的加载主程序包含此头文件,编译链接后通过仿真器下载到DSP中,运行DSP,用户程序就被加载FLASH中。转换程序见附录2。

(3)加载程序到FLASH存储器 a.FLASH擦除

在每次对Flash写入之前,要对其原来的内容进行擦除。Flash的擦除包括扇区擦除(128扇)块擦除(每块32KW)和整片擦除三种。块擦除是对一个模块进行擦除,整片擦除是擦除整个Flash的内容。因此,对Flash的操作,是以模块为基本单元的。本例使用第三种擦除方式。擦除步骤如表4.1所示。

表4.1:FLASH擦除

步骤 地址(0x) 数据(0x) 1 D555 AA 2 AAAA 55 3 D555 80 4 D555 AA 5 AAAA 55 6 D555 10 擦除过程中FLASH DQ6引脚出现0和1两种电平的跳变,当DQ6稳定为一个电位,表明擦除完成。

b.写入FLASH

对FLASH写入程序由两个时序控制:一种是由WE\\控制的,另一种是由CE\\控制的。本例选用WE\\控制方式。写入步骤如表4.2所示。

表4.2 写入FLASH

步骤 地址(0x) 数据(0x) 1 D555 AA 2 AAAA 55 3 D5555 A0 4 写入地址 写入数据 将Boot表写入到FLASH中,同时仍可用FLASH DQ6端口作为写完成标志位。当DQ6电平稳定后,Boot表被存储到FLASH中。这样就完成了一次完整的并行加载。即实现系统的脱机运行。程序流程如图4.6。

淮安信息学院毕业设计(论文) 程序开始第 22 页 共 22 页 VC5416初始化对CPU的初始化,设置0VLY=1,DROM=1,MP/MC=0等向FLASH编程,使之处于可读写状态设置FLASH进入正常工作状态擦除整片FLASH从0x8000开始讲BOOT表写入并口BOOT只能将程序写入0x8000~0xffff向FLASH的0xffff写入0x8000FLASH的0xffff必须存储BOOT表首地址结束 图4.6 VC5416 BootLoader流程图

4.6 指纹识别模块控制

4.6.1 模块指令介绍

1.录入指纹图像GenImg

功能说明:探测手指,探测到后录入指纹图像存于ImageBuffer,并返回录入成功确认码;若探测不到手指,直接返回五手指确认码

输入参数:none 返回参数:确认字 指令包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 XXXX 1 byte 包标识 01H 2 bytes 包长度 03H 1 byte 指令码 01H 2 bytes 校验和 05H 应答包格式:

2 bytes 包头 4 bytes 模块地址 1 byte 包标识 2 bytes 包长度 1 byte 确认码 2 bytes 校验和

淮安信息学院毕业设计(论文) 0xEF01 Xxxx 07H 03H 第 23 页 共 23 页 xxH Sum 注: 确认码=00H表示录入成功; 确认码=01H表示收包有错; 确认码=02H表示传感器上无手指; 确认码=03H表示录入指纹不成功; 2.上传图像UpImage

功能说明:将模块图像缓冲区Img_Buffer中的数据上传给上位机 输入参数:none 返回参数:确认字 指令代码:0aH 指令包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 Xxxx 1 byte 包标识 01H 2 bytes 包长度 03H 1 byte 指令码 0aH 2 bytes 校验和 000eH 应答包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 Xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2 bytes 校验和 sum 注:确认码=00H表示接着发送后续数据包; 确认码=01H表示收包有错;

确认码=0fH表示不能发送后续数据包; 应答之后模块发送后续数据包 3.下载图像DomnImage

功能说明:上位机下载图像数据到模块图像缓冲区Img_Buffer 输入参数:none 返回参数:确认字 指令代码:0bH 指令包格式:

2 bytes 包头 4 bytes 模块地址 1 byte 包标识 2 bytes 包长度 1 byte 指令码 2 bytes 校验和

淮安信息学院毕业设计(论文) 0xEF01 Xxxx 01H 03H 第 24 页 共 24 页 0bH 000fH 应答包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 Xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2 bytes 校验和 sum 注: 确认码=00H表示可以接收后续数据包; 确认码=01H表示收包有错;

确认码=0eH表示不能接收后续数据包;

应答之后接收后续数据包,数据包长度必须为64,128或256。 4. 图像生成特征Img2Tz

功能说明:将ImageBuffer中的原始图像生成指纹特征,文件存于CharBuffer1或CharBuffer2。

输入参数:BufferID(特征缓冲区号) 返回代码:确认字 指令代码:02H 指令包格式:

2 bytes 包头 0xEF01 4 bytes 模块识别 xxxx 1 byte 包标识 01H 2 bytes 包长度 04H 1 byte 指令码 02H 1 byte 缓冲区号 BufferID 2 bytes 校验和 sum 注:缓冲区CharBuffer1、CharBuffer2的BufferID分别为1h和2h,如果指定其他指,按照处理CharBuffer2处理。

应答包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 XxH 2 bytes 校验和 sum 注:确认码=00H表示生成特征成功; 确认码=01H表示收包有错;

确认码=06H表示指纹图像太乱而生不成特征;

确认码=07H表示指纹图像正常,但特征点太少而生不成特征; 确认码=15H表示图像缓冲区内没有有效原始图而生不成图像;

淮安信息学院毕业设计(论文) 第 25 页 共 25 页 5.特征合成模板RegModel

功能说明:将CharBuffer1与CharBuffer2中的特征文件合并生成模板,结果存于CharBuffer1与CharBuffer2(两者内容相同)。

输入参数:none 指令代码:05H 指令包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 01H 2 bytes 包长度 03H 1 byte 指令码 05H 2 bytes 校验和 09H 应答包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2 bytes 校验和 sum 注:确认码=00H表示合并成功; 确认码=01H表示收包有错;

确认码=0aH表示合并失败(两枚指纹同一手指); 6.上传特征或模板UpChar

功能说明:将特征缓冲区CharBuffer1或CharBuffer2中的特征文件上传给上位机。 输入参数:BufferID(缓冲区号) 返回参数:确认字 指令代码:08H 指令包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 01H 2 bytes 包长度 04h 1 byte 指令码 08H 1 byte 缓冲区号 BufferID 2 bytes 校验和 sum 注:缓冲区CharBuffer1、CharBuffer2的BufferID分别为1h和2h 应答包格式:

2 bytes 包头 4 bytes 模块地址 1 byte 包标识 2 bytes 包长度 1 byte 确认码 2 bytes 校验和

淮安信息学院毕业设计(论文) 0xEF01 xxxx 07H 03H 第 26 页 共 26 页 xxH sum 注:确认码=00H表示随后发数据包; 确认码=01H表示收包有错; 确认码=0dH表示指令执行失败; 应答之后发送后续数据包;

该指令不影响模块特征缓冲区中的内容。 7.下载特征或模板DownChar

功能说明:上位机下载文件按到模块的一个特征缓冲区 输入参数:BufferID(缓冲区号) 指令代码:09H 指令包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 01H 2 bytes 包长度 04H 1 byte 指令码 09H 1 byte 缓冲区号 BufferID 2 bytes 校验和 sum 注:缓冲区Charbuffer1、CharBuffer2的BufferID分别为1h和2h 应答包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2 bytes 校验和 sum 注:1:确认码=00H表示可以接受后续数据包; 确认码=01H表示收包有错;

确认码=0eH傲视不能接收后续数据包; 2:应答之后接收后续数据包 8.存储模板Store

功能说明:将指定的特征缓冲区(Buffer1或者Buffer2)中的模板数据存储到FLASH指纹库中指定位置。

输入参数:BufferID(缓冲区号),PageID(指纹库位置号,两个字节,高字节在前)。 返回参数:确认字 指令代码:06H 指令包格式:

淮安信息学院毕业设计(论文) 2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 01H 2 bytes 包长度 06H 1 byte 指令码 06H 1 byte 缓冲区号 BufferID 第 27 页 共 27 页 2 bytes 位置号 PageID 2 bytes 校验和 sum 注:缓冲区CharBuffer1、CharBuffer2的BufferID分别为1h和2h 应答包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2 bytes 校验和 sum 注:确认码=00H表示存储成功; 确认码=01H表示收包有错;

确认码=0bH表示PageID超出指纹库范围; 确认码=18H表示写FLASH出错; 9.读出模板LoadChar

功能说明:将FLASH数据库中指定ID号的指纹模板读入到指纹模板缓冲区CharBuffer1或CharBuffer2

输入参数:BufferID(缓冲区号),PageID(指纹库模板号,两个字节,高字节在前)。 返回参数:确认字 指令代码:07H 指令包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 01H 2 bytes 包长度 06H 1 byte 指令码 07H 1 byte 缓冲区号 BufferID 2 bytes 位置号 PageID 2 bytes 校验和 sum 注:缓冲区CharBuffer1、CharBuffer2的BufferID分别为1h和2h 应答包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2 bytes 校验和 sum 注:确认码=00H表示读出成功; 确认码=01H表示收包有错;

确认码=0cH表示读出有错或模板无效;

淮安信息学院毕业设计(论文) 第 28 页 共 28 页 确认码=0BH表示PageID超出指纹库范围。 10.删除模板DeletChar

功能说明:删除模块指纹库中指定的一段(指定ID号开始的N个指纹模板)模板。 输入参数:PageID(指纹库模板号),N删除的模板个数。 返回参数:确认字 指令代码:0cH 指令包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 01H 2 bytes 包长度 07H 1 byte 指令码 0cH 2 bytes 页码 PageID 2 bytes 删除个数 N 2 bytes 校验和 sum 应答包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2 bytes 校验和 sum 注:确认码=00H表示删除模板成功; 确认码=01H表示收包有错; 确认码=10H表示删除模板失败; 11.精确比对两枚指纹特征Match

功能说明:模板精确比对(1:1)CharBuffer1与CharBuffer2中的特征文件,并给出比对结果。

输入参数:none

返回参数:确认字,比对得分 指令代码:03H 指令包格式:

2 bytes 包头 0xEF01 4 bytes 模块地址 xxxx 1 byte 包标识 01H 2 bytes 包长度 03H 1 byte 指令码 03H 2 bytes 校验和 07H 应答包格式:

2 bytes 包头 4 bytes 模块地址 1 byte 包标识 2 bytes 包长度 1 byte 确认码 2 bytes 得分 2 bytes 校验和

淮安信息学院毕业设计(论文) 0xEF01 xxxx 07H 05H xxH 第 29 页 共 29 页 xxH sum 注:1:确认码=00H表示指纹匹配; 确认码=01H表示收包有错; 确认码=08H指纹不匹配;

2:该指令执行后,两特征缓冲区中的内容不变。 12.指令代码介绍

代码 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 助记符 GenImg Img2Tz Match Search RegModel Store LoadChar UpChar DownChar UpIamge DownImage DeletChar 功能说明 录入指纹图像 图像转特征 指纹比对 搜索指纹 特征合成模板 存储模板 读出模板 上传特征 下载特征 上传图像 下载图像 删除模板 代码 0DH 0EH 0FH 12H 13H 14H 15H 17H 18H 19H 1BH 1DH 助记符 Empty SetSysPara ReadSysPara SetPwd VfyPwd GetRandomCode SetAdder Control WriteNotepad ReadNotepad HiSpeedSearch TempleteNum 功能说明 清空指纹库 设置系统参数 读系统参数 设置口令 校验口令 采样随机数 设置地址 端口控制 写记事本 读记事本 高速度搜索指纹 读指纹模板数 13.确认码定义

序号 1 2 3 4 5 6 7 8 确认码 00h 01h 02h 03h 06h 07h 08h 09h 表示指令执行完毕或OK 表示数据包接收有错 表示传感器上没有手指 表示录入手指图像失败 表示指纹图像太乱而生成不了特征 表示指纹图像正常,但特征点太少而生成不了特征 表示指纹不匹配 表示没有搜索到指纹 定义说明

淮安信息学院毕业设计(论文) 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 13h 15h 18h 19h 1Ah 1Bh 1Ch 1Dh 表示特征合并失败 第 30 页 共 30 页 表示访问指纹库时地址序号超出指纹库范围 表示从指纹库读模板出错或无效 表示上传特征失败 表示模板不能接收后续数据包 表示上传图像失败 表示删除模板失败 表示清空指纹库失败 表示口令不正确 表示缓冲区内没有有效原始图像而生成不了图像 表示读写FLASH出错 未定义错误 无效寄存器号 寄存器设定内容错误号 记事本页码指定错误 端口操作失败 注:其他系统保留 4.6.2

1.录入指纹图像流程图(如图4.7所示)

流程图设计

淮安信息学院毕业设计(论文) 程序入口第 31 页 共 31 页 读图像GenImg确认码=0x00生成特征,存于CharBuffer1Img2Tz确认码=0x00读图像GenImg确认码=0x00生成特征,存于CharBnffer2Img2Tz确认码=0x00合成特征模板RegMoedl确认码=0x00存储模板Store确认码=0x00推出程序其他确认码录入指纹操作失败其他确认码确认码=0x02?其他确认码确认码=0x02?Y其他确认码Y其他确认码 图4.7 指纹录入流程图

2.搜索指纹流程图(如图4.8所示)

淮安信息学院毕业设计(论文) 程序入口第 32 页 共 32 页 读图像GenImg确认码=0x00生成图像特征Img2T确认码=0x00搜索指纹Search确认码=0x00确认码=0x02?其他确认码其他确认码确认码=0x02?Y其他确认码搜索到匹配指纹没有搜索到匹配指纹搜索操作失败退出程序 图4.8 指纹搜索流程图

淮安信息学院毕业设计(论文) 第 33 页 共 33 页 结 论

指纹具有唯一性、稳定性以及便于携带的特征,因而基于指纹识别的生物识别技术呗广泛地应用于需要进行身份鉴别的领域,如指纹门禁系统、指纹考勤系统、指纹保险系统等。自动指纹识别系统具有广阔的应用前景,但在国内目前还处于应用的初期阶段。

本文的只要工作是基于DSP的自动指纹识别系统的软件设计。系统主要由指纹识别模块FPM10A、DSP以及外接人机交换电路组成。在开发过程中,在对DSP的多通道缓冲串行口(McBSP),FPM10A指纹识别模块的功能及其外部UART接口进行详细分析的基础上,通过对DSP进行软件编程模拟UART串口和外部控制逻辑的设计,实现了模块之间同步串口与异步串口之间的通信,指纹注册、指纹搜索、指纹比对等功能。

目前,本设计的硬件电路的制作工作基本完成,但是键盘、LCD显示屏等人机接口部分还未完成。算法程序部分目前也仍处于仿真阶段,还尚未在硬件电路中实际运行,其效果的检测和改进成为下一步工作的重点。

通过这次毕业设计,让我对DSP有了更深刻的了解!虽然学起来有不少困难但我对这门课程还是很有兴趣的,不仅让我掌握了不少软件的操作,还锻炼了我把理论应用于实际的动手能力,这对我在以后的学习和工作生活中都有很大的帮助!

淮安信息学院毕业设计(论文) 第 34 页 共 34 页

致 谢

转眼间本次毕业设计即将进入尾声。在整个过程中,通过我自己的努力和他人的帮助,已经顺利完成了毕业设计任务。在此,我要感谢很多帮助过我的人。首先要对我的指导老师杨定礼老师表示深深的感谢,要是没有杨老师的细心指导和耐心讲解,我就无法在这有限的时间内完成设计任务。之前的我只是对理论有较好的掌握,但是对实际应用却很陌生,在设计过程中难免会发生很多问题,杨老师激发了我的积极性和创造性,他使我对设计方面有了整体概念,教会了我如何发现问题、如何分析问题、如何解决问题。

当然,同组的朱薛权同学对我的帮助也很大,他有着参加省电子竞技大赛的经验,教会了我不少硬件设计方面的知识。在整个过程中,我自己也成长了许多,懂得了在相互沟通中化解分歧,在坦诚交流中凝聚共识,在评判与自我批评的气氛中取长补短。

最后,我再次对所有帮助过我人表示中心的感谢,谢谢你们!

淮安信息学院毕业设计(论文) 第 35 页 共 35 页

参考文献

1 陈定国.指纹自动识别系统的应用[J].刑事技术,2010,3:61

2 孙冬梅,裘正定.生物指纹识别技术综述[J].电子学报,2001,29(12A):1744~1747

3 杨文杉.指纹识别技术的现状与发展[J].软件导刊,2008,7(10):187~188 4 汤敏.通用指纹处理分析平台的研发与应用[J].计算机工程与设计,2010,31(4):791~749

5 赵春.指纹取像与指纹识别[R].计算机工程与应用,2002,28(4):10~12 6 黄绍平.基于指纹识别系统的应用开发技术[D].2001,10(42)

7 章毓晋.图像处理和分析[M].清华大学出版社,1999年3月第1版,76~78 8 洪松.高精确度实时指纹识别系统[R].中国激光,2001,28(16):79~81 9 王波涛.指纹图像识别技术及其应用[R].计算机工程与应用.2001,7

10 张雄伟,曹铁勇.DSP芯片的原理与开发应用(第2版)[M].北京:电子工业出版社

淮安信息学院毕业设计(论文) 第 36 页 共 36 页 附录

/*------------------ FINGERPRINT命令字 --------------------------*/

//FINGERPRINT_获得指纹图像命令 void FINGERPRINT_Cmd_Get_Img(void) {

unsigned char i;

for(i=0;i<6;i++) //发送包头

UART1_Send_Byte(FP_Pack_Head[i]);

for(i=0;i<6;i++) //发送命令 0x1d

UART1_Send_Byte(FP_Get_Img[i]); }

//将图像转换成特征码存放在Buffer1中

void FINGERPRINT_Cmd_Img_To_Buffer1(void) {

unsigned char i;

for(i=0;i<6;i++) //发送包头 {

UART1_Send_Byte(FP_Pack_Head[i]); }

for(i=0;i<7;i++) //发送命令将图像转换成特征码存CHAR_buffer1 { UART1_Send_Byte(FP_Img_To_Buffer1[i]); } }

//将图像转换成特征码存放在Buffer2中

void FINGERPRINT_Cmd_Img_To_Buffer2(void) {

unsigned char i;

for(i=0;i<6;i++) //发送包头 {

UART1_Send_Byte(FP_Pack_Head[i]);

淮安信息学院毕业设计(论文) 第 37 页 共 37 页 } for(i=0;i<7;i++) //发送命令将图像转换成特征码存放CHAR_buffer1 { UART1_Send_Byte(FP_Img_To_Buffer2[i]); } }

//将BUFFER1跟 BUFFER2 中的特征码合并成指纹模版 void FINGERPRINT_Cmd_Reg_Model(void) {

unsigned char i;

for(i=0;i<6;i++) //包头 {

UART1_Send_Byte(FP_Pack_Head[i]); }

for(i=0;i<6;i++) //命令合并指纹模版 {

UART1_Send_Byte(FP_Reg_Model[i]); } }

//删除指纹模块里的所有指纹模版

void FINGERPRINT_Cmd_Delete_All_Model(void) {

unsigned char i;

for(i=0;i<6;i++) //包头

UART1_Send_Byte(FP_Pack_Head[i]);

for(i=0;i<6;i++) //命令合并指纹模版

UART1_Send_Byte(FP_Delet_All_Model[i]); }

淮安信息学院毕业设计(论文) 第 38 页 共 38 页 //删除指纹模块里的指定指纹模版 void FINGERPRINT_Cmd_Delete_Model(unsigned int uiID_temp) {

volatile unsigned int uiSum_temp = 0; unsigned char i;

FP_Delete_Model[4]=(uiID_temp&0xFF00)>>8; FP_Delete_Model[5]=(uiID_temp&0x00FF);

for(i=0;i<8;i++)

uiSum_temp = uiSum_temp + FP_Delete_Model[i];

//UART0_Send_Byte(uiSum_temp);

FP_Delete_Model[8]=(uiSum_temp&0xFF00)>>8;

FP_Delete_Model[9]=uiSum_temp&0x00FF;

for(i=0;i<6;i++) //包头

UART1_Send_Byte(FP_Pack_Head[i]);

for(i=0;i<10;i++) //命令合并指纹模版

UART1_Send_Byte(FP_Delete_Model[i]); }

//获得指纹模板数量

void FINGERPRINT_Cmd_Get_Templete_Num(void) { unsigned int i;

unsigned char temp[14];

for(i=0;i<6;i++) //包头

UART1_Send_Byte(FP_Pack_Head[i]);

//发送命令 0x1d for(i=0;i<6;i++)

UART1_Send_Byte(FP_Templete_Num[i]);

淮安信息学院毕业设计(论文) 第 39 页 共 39 页 }

//搜索全部用户999枚

void FINGERPRINT_Cmd_Search_Finger(void) {

unsigned char i;

for(i=0;i<6;i++) //发送命令搜索指纹库 {

UART1_Send_Byte(FP_Pack_Head[i]); }

for(i=0;i<11;i++) {

UART1_Send_Byte(FP_Search[i]); }

}

//指纹添加新用户

unsigned char FP_add_new_user(unsigned char ucH_user,unsigned char ucL_user) { do {

FINGERPRINT_Cmd_Get_Img(); //获得指纹图像

FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码 }

while ( UART1_FINGERPRINT_RECEVICE_BUFFER[9]!=0x0 ); //检测是否成功的按了指纹

FINGERPRINT_Cmd_Img_To_Buffer1(); //将图像转换成特征码存放在Buffer1中 FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码

do{ FINGERPRINT_Cmd_Get_Img(); //获得指纹图像 FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码 }

while( UART1_FINGERPRINT_RECEVICE_BUFFER[9]!=0x0 );

FINGERPRINT_Cmd_Img_To_Buffer2(); //将图像转换成特征码存放在

淮安信息学院毕业设计(论文) 第 40 页 共 40 页 Buffer2中 FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码 FP_Cmd_Reg_Model();//转换成特征码 FINGERPRINT_Recevice_Data(12);

FINGERPRINT_Cmd_Save_Finger(ucH_user,ucL_user);

FINGERPRINT_Recevice_Data(12); return 0; }

//系统初始化 c54init: _c_int00

ld #0h,DP stm #2000h,SP ssbx INTM ssbx SXM

STM #0x7208,SWWSR STM #0,SWCR

STM #0xF800,BSCR STM #0,ST0

STM #0x2b00,ST1 STM #0xBfe4,PMST STM #0xFFFF,IFR STM #0x0488,IMR STM #0,CLKMD LDM CLKMD,A

clkcon:

;INTM=1 off interrupt ;Interrupt vector map Bf80

;Timer0 enabel interrupt

AND #0x01,A BC clkcon,ANEQ STM #0x43ff,CLKMD STM #0x0010,TCR1 STM #0x0010,TCR STM #12800,PRD STM #0x0020,TCR //中断向量表 .include c54.inc .sect \

;PLL MUL=(4+1) *20=100MHz ;timer1 stop ;TSS=1 Timer stop

本文来源:https://www.bwwdw.com/article/vny7.html

Top