资源目录
压缩包内文档预览:(预览前20页/共22页)
编号:551945
类型:共享资源
大小:253.80KB
格式:ZIP
上传时间:2015-12-05
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
机械毕业设计论文
- 资源描述:
-
机械毕业设计1679指纹U盘的设计论文,机械毕业设计论文
- 内容简介:
-
1 1. 引言 随着计算机图像处理和模式识别理论及大规模集成电路技术的不断发展与成熟, 指纹自动识别系统 发生了质的飞跃,体积缩小,速度提高,实现成本以及对运行环境的要求逐步降低,指纹采集的速度和方便性都得到提高。这些都使 指纹认证技术 的实用化向前迈 进了一大步,大量应用于政府、银行、税务、社保、学校和公司机构等部门的文件保密、信息安全、门禁控制、考勤管理与证卡管理等各类需要计算机进行自动身份认证的场合。 一般的 U盘在存储数据时,不能保障数据的保密 、 安全,里面的数据很容易被他人读取。而本论文研究的指纹 U盘,利用了指纹识别技术,在用户读取 U盘中数据时,必须使 自己的指纹和 U 盘中预先存储的指纹信息相符,才能正常使用U 盘。指纹在此系统中起着密码锁的作用 .使用指纹识别具有许多优点,例如:每个人的指纹都不相同,极难进行复制或被盗用;指纹比较固定,不会随着年龄的增长或 健康程度的变化而变化;最重要的在于指纹图像便于获取,易于开发识别系统,具有很高的实用性和可行性。 2. 设计目标 本论文旨在设计一种新型的 U 盘 ,当 U盘和 PC机连接的时候,需要把用户的手指按在 U盘的指纹识别区域,当系统识别到的指纹信息和 U盘中预存的合法指纹信息一致时,则可以正确的使用 U 盘,否则则不能读取 U 盘中的数据。本 U盘中可以预先存储 多 个指纹,可供多个用户拥有对 U盘的使用权,也可以避免用户在手指受伤或其它不能正确识别指纹信息的情况发生时,也能使用 U盘。 3. 指纹识别系统原理 3.1 指纹识别过程 图 1是指 纹识别的过程,分为指纹注册过程和指纹对比过程,指纹注册过程是把用户的合法指纹采集起来经过处理存储到模板库中,指纹对比过程是在使用时把采集到的指纹信息和指纹库中存储的指纹信息相对比,以确定用户身份的合法性。 图 1 指纹识别过程 指纹采集 图像增强 提取特征值 特 征值模板入库 指纹采集 图像增强 提取特征值 比对匹配 nts 2 3.2 指纹图象处理 指纹图像预处理的目的主要是为特征值提取的有效性、准确性作好准备。一般包括如下几个过程。 (1)指纹图像增强 指纹图像增强的目的主要是为了减少噪音,增强嵴峪对比度,使得图像更加清晰真实,便于后续指纹特征 值提取的准确性。指纹图像增强的方法较多,通常需设定合适的过滤阈值。处理时依据每个像素处嵴的局部走向,会增强在同一方向嵴的走向,并且在同一位置,减弱任何不同于嵴的方向。这样使得嵴线相对背景更加清晰,特征点走向更加明显。 如图 2。 图 2 图像处理前后对比 (2)指纹图像平滑处理 平滑处理是为了让整个图像取得均匀一致的明暗效果。平滑处理的 过程是选取整个图像的象素与其周围灰阶差的均方值作为阈值来处理的。指纹图像平滑处理还有其它方法可以使用。 (3)指纹图像二值化 在原始灰阶图像中,各象素的灰度是不同的,并按一定的梯度分布。在实际处理中只需要知道象素是不是嵴线上的点,而无需知道它的灰度。所以每一个象素对判定嵴线来讲,只是一个“是与不是”的二问题。所以,指纹图像二值化是对每一个象素点按事先定义的阈值进行比较,大于阈值的,使其值等于 1(假定),小于阈值的,使其值等于 0。图像二值化后,不仅可以大大减少数据量,而且使后面的处理过程少受干扰,大大简化其后 的处理。 (4)指纹图像细化 图像细化就是将嵴的宽度降为单个像素的宽度,得到嵴线的骨架图像的过程。这个过程进一步减少了图像数据量,清晰化了嵴线形态,为之后的特征值提取作好准备。由于我们所关心的不是嵴线的粗细,而是嵴线的有无。因此,在不破坏图像连通性的情况下必须去掉多余的信息。因而应先将指纹嵴线的宽度采用逐渐剥离的方法,使得嵴线成为只有一个象素宽的细线,这将非常有利于下一步分析。 如图 3。 nts 3 图 3 指纹图像处理 3.3 指纹识别的实现方法 指纹是比较复杂的 , 指纹识别算法最终都归结为在指纹图像上找到并比对指纹的特征点。指纹学指出 , 出现频率较高的指纹特征有 8 种 , 其中端点和分叉点占指纹特征的 80 %以上 , 本系统选用了这两种特征作为算法提取和比对的对象。对细化后的指纹图像提取特征点数据 , 并去除伪特征点 , 将处理结果与指纹数据库中已有的模板数据进行匹配识别 , 模板是系统在学习功能阶段将 用户的指纹数据经过上述相同的处理后保存下来的。指纹数据库中的指纹模式根据细节特征进行了分类 , 这样可以减少预识别指纹与指纹数据库的对比数量 , 大大节省了识别的时间 , 提高了识别的准确度。指纹特征点的提取 : 采用 8 邻域法对二值化后的指纹图像抽取特征点 , 提取分叉点和端点 , 并去除伪特征点。指纹图像中心点的提取 : 以指纹最内层弧的顶点作为中心点 , 就是纹线上曲率最大处 , 若最内层弧顶点处有分叉线存在 , 且此分叉线走向与两旁纹线走向一致 , 则定义分叉点为中心点 , 并进一步确定各特征点相对于中心点的方向。系统中就用特征点的类型 , 特征点与中心点的方向 , 特征点与中心点的纹线数这三个参量来表征一个特征点的特征信息。两个指纹图像的匹配实际就是两幅图像特征点信息 (3 个参量 ) 的比对 , 获取的指纹图像靠近中心点的是图像质量较好的 , 离中心点越远 , 特征信息准确度越差 , 所以比对时尽可能取中心点附近的特征点 , 若两幅指纹有 10 个以上的特征点匹配即可基本判定两幅指纹属同一个指纹 。 2 3.4 传感采集设备 指纹传感器(又称指纹 Sensor)是实现指纹自动采集的关键器件。指纹传感器按传感原理,即指纹成像原理和技术,分为光学 指纹传感器、半导体电容传感器、半导体热敏传感器、半导体压感传感器、超声波传感器和射频 RF 传感器等 . 目前市场上有两种固态指纹传感器:第一种是单次触摸型传感器,要求手指在指纹采集区进行可靠的触摸;第二种则需要用手指在传感器表面擦过,传感器会采集一套特定的数据,然后进行快速分析和认证。这两类指纹传感器将得到越来越广泛的应用。 nts 4 单触型传感器与划擦型传感器的尺寸和成本都不一样。接触式传感器较大,通常有效接触面为 15 15mm,可迅速地采集最大的指纹或拇指指纹。这种传感器易于使用,并可将整个指纹图像以 500dpi(自 动指纹识别标准 )的精度进行快速传输。 划擦型传感器是一种新型指纹采集器件,要求用户将手指在器件上划过。划擦型传感器的优点是尺寸小 (如富士通的 MBF300尺寸仅为 3.6 13.3 mm2)和成本低。这些器件主要用于移动设备的嵌入式安全识别应用,如手机和 PDA。精密的图像重建软件以接近 2000 帧 /秒的速度快速地从传感器上采集多个图像,并将每个帧的数据细节组织到一起。 4. 系统硬件设计 4.1 系统组成 本系统整体上可以分为图像采集模块、图像处理及识别模块以及输出模块三部分组成。该系统是由 FPS200 指纹传感器 、 CPLD、 DSP、 FLASH和 USB接口芯片等硬件组成 .如图 4. D S PF L A S H 存 储 器U S B P C时 钟 芯 片数 据 存 储 器 程 序 存 储 器指 纹 传 感 器F P S 2 0 0C P L D图 4 系统组成框图 4.1.1 工作原理 系统包括 DSP 芯片 TMS320VC5402、指纹传感器 FPS200、 CPLD,程序存储器和数据存储器 、电源管理芯片等几个主要部分。使用了两类存储器, SRAM 用于存放运算中的临时指纹图像, FLASH 则是用于存放程序代码和指纹特征模板。电源管理模块可提供 3 3 V 和 2 5 V 电压。 模式选择开关则用于设定和选择系统上电后的 3种工作方式: (1)指 纹录入方式:录入新的指纹到指纹模板库。 (2)指纹比对方式:将输入指纹与指纹模板库中的指纹搜索比对,输出比对结果。 (3)上位机命令方式:通过接口函数,系统在上位机的命令下完成指纹录入、比对等工作,这是在二次开发系统中使用的工作方式。 nts 5 4.1.2 指纹采集模块硬件设计 本系统选择的是 Veridioom 公司的 FPS200 固体指纹识别传感器。 FPS200 是Veridicom 公司推出的第三代半导体指纹传感器。它基于电容器充放电原理,传感阵列的每一点是一个金属电极,充当电容器的一极,按在传感面上的手指头的对应点则作 为另一极。传感面形成两极之间的介电层。由于指纹的脊和谷,导致各点的电容值不同,这个电容值阵列就形成一幅指纹图像。 FPS200 是在吸收了已广泛应用的 FPS110系列传感器优点的基础上,全新推出的新一代指纹传感器。 FPS200 在性能、尺寸、集成方便度等指标上建立了一套新的标准,是Veridicom 半导体指纹传感器家族中重要的新成员。主要特征和优点如下: (1)高分辨率: 256X300 阵列, 1.28cm 1.50cm 传感面积, 500dpi 分辨率。 (2)专为便携设备设计的更小的封装 (3)图像搜索技术 (ImageSeekTM)即使手指过干或过湿时仍能获得高精度 识别。 (4)高速图像传输: 30frame s(MCU 模式 ), 13frame s(USB 模式 ), 10frame s(SPI 模式 )。 (5)内置 USB 核、 MCU 模式和 SPI 通讯模式,减低整个系统的成本。 (6)内置 8 位 A D转换电路,最高可节约 75 的 电源消耗。 (7)FPS200 封装为只有 l.4mm 厚的塑料外壳,非常适用于各种 Intemet 设备、便携设备和手机等。 4.1.3 FPS200 功能与接口 图 5 是 FPS200 的功能结构框图。 F u n c t i o n r e g i s t e r2 5 6 X 3 0 0 S e n s o r A r r a yS a m p l e a n d h o l dX T A L O S CA / D c o n v e r t e rA n a l o gM u l t i -V i b r a t o rd a t a r e g i s t o ri n d e x r e g i s t e rc o n t r o lM O D E 1M O D E 0P 0P 1D 7 : 0 A 0R D W R W A I T C S 0 C S 1M O S IM O S OD PD ME X T I N TI N T R T E S TA I NI S E TF S E TX T A L 1X T A L 2S P IU S B图 5 FPS200 的结构图 nts 6 FPS200 传感器支持三种接口方式: 8位的系统总线接口、集成的全速的 USB接口和集成的串行外设接口 (SPI)。其丰富的接口方式方便了指纹传感器的调试和使用。其自带的 USB 接口可以将其数据直接传送到 PC 机上,这样就可以利用PC 平台上的编译和调试工具来调试各种指纹识别的算法,方便了用户的初期测试,提高了效率和准确性。图 6是 FPS200 与 DSP 的接口连接图。 D S PS e n s o r地 址数 据控 制地 址数 据控 制 M o d e 0 M o d e 1A 0D 7 D 0图 6 FPS200 与 DSP 的 接口连接图 如图 5 所示,利用传感器提供的 MCU 系统总线接口可以很方便地实现其与DSP 的连接。控制信号 cs0 和 csl 都是片选信号, cs0 低有效, csl 高有效,这是为不同的 CPU 片选信号高低电平特征提供便利。本系统选用的是 cs0; RD 和 WR分别为读、写控制信号。 MODE0和 MODEl 两根信号线决定了 FPS200 工作在何种模式下: MODE1: O=00b 系统总线接口工作模式,用于与 DSP 相连,正常工作时使用; MODE1: 0=Olb SPI 接口工作模式; MODE1: 0=lOb USB 接口工 作模式,用于与 PC相连,调试时使用; A0 地址线, FPS200 共有两个接口寄存器,索引寄存器和数据寄存器, A0 决定了是写索引寄存器还是读写数据寄存器。 A0 拉低时为写索引寄存器,数据总线 D7 D0 的内容写到索引寄存器; A0 拉高时可读写数据寄存器,数据总线上D7 D0 的内容读写到数据寄存器。本系统对 FPS200 的操作有以下两种: (1)FPS200 的控制:传感器是由内部寄存器控制的,而对传感器的内部控制器的读写是通过写索引寄存器以选择合适的内部寄存器后,才可以读写具体的寄存器值。读操作过程见图 7。 先将 A0 管脚的电平拉低,发出写信号,将要读写的内部寄存器地址送到数据总线上,写入控制寄存器并由 FPS200 送到它的索引寄存器。再将 A0 管脚拉高,发出读信号,将数据寄存器上的值读人 DSP。写操作的过程类似,只是在写入索引寄存器后,发出写信号即可。 nts 7 A 0D 7 D 0 W R图 7 FPS200 信号的读写过程 (2) FPS200 的数据读取:即指纹图象的读取,需要注意的是控制寄存器 A,写这一寄存器就初始化了一幅指纹图象的采集。然后循环读这一寄存器则可以读出 A/D 转换出来的结果。整个图象 采集流程如图 8所示。 F P S 2 0 0 初 始 化开 始 采 集 图 象开 始 第 一 次 A / D 转 换开 始 A / D 转 换 将 上 次 转 换结 果 送 至 缓 冲 区读 输 出 缓 冲 区 数 据将 最 后 一 次 A / D 转 换 结 果送 至 输 出 缓 冲 区读 最 后 一 个 传 感 器单 元 的 值图 象 采 集 结 束系 统 上 电 初 始 化读 取 指 纹 图 象是 否 完 成从 R A M 中 输 出 图 象输 出 完 毕D S P 进 行 图 象 处 理输 出 数 据 到 U S B指 纹 比 对输 出 结 果YYNN图 8 FPS200 图象采集过程流程图 图 9系统主要程序流程图 nts 8 4.2 系统硬件核心介绍 4.2.1 DSP 的选择 3 系 统 的核 心 处理 单 元是 TI 公 司 推出 的高 性 能数 字 信号 处理 器 TMS320VC5402,该芯片具有精度高、灵活性大、可靠性高、时分复用等特点。其采用程序 空间与数据空间完全独立的哈佛总线结构,指令 的执行采用流水线结构, 内部有一到多个处理内核,带有片上硬件乘法器,指令执行速度最快为几十纳秒,处理能力为 100 MIPS。片内有 8 条总线、片上存储器和片上外围电路等硬件,并且有高度专业化的指令系统 。 TMS320VC5402 片外直接数据寻址空间为64 kB,程序空间寻址能力可达 1MB, 但是通过程序空间来扩展数据空间将影响系统处理速度。但是 TMS320VC5402 在实际使用过程中,程序和数据的一次连续处理一般都不会超过 64 kB,所以把核心的程序常驻 TMS320VC5402 内 16kB 空间,一般控制在 1 2 kB,再留 7 8 kB 的空间调用所需的程序,程序在片内的执行速度要比片 外的快许多,通过来回到程序, 就能实现程序的全速运行。 C5402 的核心作用是对原始指纹图像进行预处理。原始的指纹图像有很多噪声 , 比如手指有伤痕 , 手指干燥、湿润或撕破都会影响图像的质量。指纹图像特征的抽取和识别要求有很高的精度 , 因此指纹图像的预处理过程相对复杂 , 一般包括以下步骤 : 图像裁剪、平滑处理、锐化处理、图像二值化、图像修饰和细化。在基本不损失有用指纹信息的基础上 , 运用一定的算法将原始图像进行裁剪产生一幅比原始图像小的指纹图 像 , 可以减小后面各步骤中所要处理的图像数据量 14。 4.2.2 DSP 的 BOOT LOADER DSP 的引导模式有如下几种 : (1) 主机接口 (HPI)引导模式 (2) 串行存储器引导模式 (3) 16 位 /8 位并行存储器引导模式 (4) 16 位 /8 位并行 I/。引导模式 (5) 串口引导模式 (6) WARM 引导模式 DSP 的引导顺序如下 : 引导程序先检查 INT2 是否为 1,如为 1,则采用主机接口 (HPI)方式 ;如果INT2 不为 1,再看 INT3 是否为 1,如为 1,则采用串行 EEPROM 引导模式 ;否则,从工, I/O 空间的 FFFFH 读取内容,如为有效的关键字 ,则开始传送 ;否则,从数据空间的 FFFFH 读取内容,如为有效的关键字,则开始传送 ;否则,则开始初始化串口,把 XF 置为低,从串口 1 读取数据,如果是有效的关键字,则开始传nts 9 送数据 ;如果不是,从串口 0读取数据,如果是有效的关键字,则开始传送数据 :否则,检测 BIO 是否为低,是否有有效关键字,如果有,则为 I/0 引导模式 ;否则,第二次检查 HPI 口,看是否为 HPI 引导方式。 本文选用的是 8 位并行存储器引导模式。引导表可放在 4000H FFFFH 的数据空间中,引导程序通过读数据空间的 FFFFH 单元内容确定引导表的起始地址,然 后检测起始地址的内容是否为关键字。如为关键字,则引导程序继续装载剩下的引导表,并开始执行程序。 4.2.3 DSP 的电源设计 TMS320C5402 的电源分两种,即内核电源 (CVDD)和 I/0 电源 (DVDD)。其中 I/0电源一般采用 3.3V 电源,而内核电源采用 1.8V,降低内核电压的主要目的是降低功耗。 TMS320C5402 的电流消耗主要取决于器件的激活度, CVDD 消耗的电流主要决定于 CPU 的激活度,外设消耗的电流决定于正在工作的外设及其速度,一般来说,与 CPU 相比,外设消耗的电流是比较小的。时钟电路也需要 消耗一小部分电流,而且这部分电流是恒定的,与 CPU 和外设的激活度无关。 CVDD 为器件的所有内部逻辑提供电流,包括 CPU、时钟电路和所有外设。 DVDD 只为外部接口引脚提供电压,消耗的电流决定于外部输出的速度和数量,以及在这些输出上的负载电容。 按照每 MHZ (CLKOUT) 1. 5mA 来计算, TMS320C5402 工作在 100h4HZ 的最大估计电流为 : (1 .5mA/MHZ) (100MHZ)=150mA 由于 TMS320C5402 有两个电源,需要考虑加电次序。理想 情况下, DSP 芯片上的两个电源同时加电。出于以上种种考虑,选用了 TI 公司的 TPS73HD318 电源芯片。该芯片具有如下特点,即 : (1) 双输出电压提供两路分离供电 . (2) 3.3V/1.8V 的输出电压 . (3) 很低的静态电流,当不考虑输入时,每一路的典型值为 340Ua. (4) 两个低有效的复位信号,其脉冲宽度为 200ms. (5) 每一路的输出电流范围为 0mA 750mA. (6) 由该芯片得到 3.3V 和 1.8V 两路电源 ,并给 DSP 芯片提供复位信号。 4.2.4 DSP 的时钟模式 时钟发生器给 C5402 提供时钟,它有内部振荡器和锁相环电路。时钟 发生器要求参考时钟输入,参考时钟可通过晶振和内部振荡器共同产生,或通过外部时钟源产生。本文使用晶振和内部振荡器共同产生的方法。锁相环可通过软件编nts 10 程,具有很高的灵活性,其提供一个时钟的倍频因子,提供不同的时钟倍数,能够使能或者不使能锁相环。锁相环的时钟被用于延迟转换到锁相环电路,直到锁相环己经锁住时钟。锁相环通过 16 位的存储器映射寄存器 (0058h)时钟模式寄存器 (CLKMD)来控制,时钟模式寄存器定义锁相环的时钟模式。在复位的时候,时钟模式寄存器的初始值由 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 的时钟。复位时,可根据设置不同的跳线来实现不同的时钟频率 11。 4.2.5 TMS320C5402 对图象的处理 系统中的指纹处理算法由 DSP 芯片实现,算法采用汇编语言编写,其处理流程如图 10所示。 指纹灰度图方向图计算图象增强二值化细化修复特征提取指纹匹配图 10 指纹处理流程图 本 系统的指纹处理功能主要为录入和验证两大部分,详细算法流程如图 1所示。 (1)采用自适应图像与背景分离:采用自适应的局部阈值图像分离法,图像nts 11 的指纹部分是由黑白相间的纹理组成,灰度变化很大,具有较大的标准差;而背景部分灰度分布比较平坦,标准差较小,因此计算以各点为中心的一组象素的标准差,当标准差大于某一门限时,就可以确定该点为前景,否则为背景。 (2)方向信息提取:采用一种新的纹线提取方法,沿指纹纹线的方向对图像进行平滑,沿纹线的法线方向对图像进行增强,获得了良好的指纹方向信息。 (3)图像分割:局部二值化算法,对指纹图像进行处理,便于后续的细化处理。 (4)细化处理:采用快速细化算法对二值化图像进行处理,得到一幅指纹图像的骨架。 (5)后处理:对细化后的图像进行修复断线,去除毛刺,短线,小孔等后处理。 (6)细节特征提取:采用算法对细化图像进行细节特征提取,得到一幅指纹图像的所有分叉点和端点。 (7)指纹匹配:采用基于曲线拟合技术的指纹匹配算法,将待识图像和模板图像进行特征点匹配给出最后的匹配结果 9。 4.3 USB 接口部件 在进行一个 USB 设备开发之前,首先要根据具体使用要 求选择合适的 USB 控制器。目前,市场上供应的 USB 控制器主要有两种:带 USB 接口的单片机( MCU)或纯粹的 USB接口芯片。带 USB 接口的单片机从应用上又可以分成两类,一类是从底层设计专用于 USB 控制的单片机;另一类是增加了 USB 接口的普通单片机,如 Cypress 公司的 EZ USB(基于 8051),选择这类 USB 控制器的最大好处在于开发者对系统结构和指令集非常熟悉,开发工具简单,但对于简单或低成本系统。但价格因素也是在实际选择过程中需要考虑的因素。 本系统采用的是第二种 USB 控制芯片,就是纯粹 的 USB 接口 芯片,用的是Philips 公司的 ISP1581 芯片。 ISP1581 是一种价格低、功能强的通用串行总线( USB)接口器件,它完全符合 USB 2.0 规范,并为基于微控制器或微处理器的系统提供了高速 USB 通信能力。 ISP1581 与系统的微控制器 /微处理器的通信是通过一个高速的通用并行接口来实现的。 ISP1581 支持 USB 2.0 系统运作的自动检测。 USB 1.1 的返回工作模式允许器件在全速条件下正常工作。 ISP1581 是一个通用的 USB 接口器件,它符合现有的大多数器件的分类规格 ,比如:成像类、海量存储器件、通信器件、打印设备以及人机接口设备。内部通用 DMA 模块使得数据流很方便的集成。另外,多种结构的 DMA 模块实现了nts 12 海量存储的应用。 这种实现 USB 接口的标准组件使得使用者可以在各种不同类型的微控制器中选择出一种最合适的微控制器。通过使用已有的结构和减少固件上的投资缩短了开发时间、减少了开发风险和费用。从而用最快捷的方法实现了最经济的 USB 外设的解决方案。 * 接与 ATA/ATAPI 外设相连 * 全符合通用串行总线( USB) Rev 2.0 规范 * 符合大多数器件的分类规格 *高性能的 USB 接口器件,集成了串行接口引擎( SIE)、 PIE、 FIFO 存储器、数据收发器和 3.3v 的电压调整器 *支持 USB 2.0 的自检工作模式和 USB 1.1 的返回工作模式 *高速的 DMA 接口 *完全自治的多结构 DMA 操作 *7 个 IN 端点, 7 个 OUT 端点和 1 个固定的控制 IN/OUT 端点 * 集成 8K 字节的多结构 FIFO 存储器 * 端点的双缓冲配置增加了数据吞吐量并轻松实现实时数据传输 * 同大部分的微控制器 /微处理器有单独的总线接口( 15 M 字节 /秒或 15 M 字 /秒) * 集成了 PLL 的 12MHZ 的晶体振荡器 ,有着良好的 EMI 特性 * 集成了 5v 到 3v 的内置电压调整器 * 可通过软件控制与 USB 总线的连接( SoftConnectTM) * 符合 ACPITM,OnNOWTM 和 USB 电源管理的要求 * 可通过内部上电复位和低电压复位电路复位,也可通过软件复位 * 工作在扩展 USB 总线电压范围( 4.0 5.5)内, I/O 端口最大可承受 5V 的电压 * 操作温度: 40 85 * LQFP64 的封装形式 nts 13 U盘系统是本设计的主要部分,图 11是 U 盘接口的原理图 A P I 接 口U F I / A T A 驱 动U S B 传 输 驱 动C B I / B u l k - O n l yU S B 总 线 U S B 总 线 接 口存 储 介 质( 硬 盘 , 内 存 )U F I / A T A 命 令 处 理U S B 传 输 处 理存 储 介 质 接 口大 容 量 存 储 设 备( U S B 外 设 )主 机 ( U S B - H o s t )图 11 U盘 接口原理图 5. 软件设计 系统上电后进入主程序,等待串口中断,根据上位机发送给串口的指令包,执行不同部分的功能。初始化系统并执行指纹采集和指纹匹配的功能 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_ ImgData320*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_MinutiaeF100; static FP_MinutiaeFeature In_MinutiaeF100; int * Match_Flag=(int*)Ox3D000; nts 14 int Flag; * 第几个指纹的特征点 * unsigned int inp_bufer5; * 输入的指令包, 4 个字节, 1: command, 2: parml, 3: parm2, 4: return value * main() unsigned int*VECS=(unsigned int*)Ox809fec0 for(i=0; i =4) if(inp_bufer0=Ox61) *send a means 采集 * else if(inp_bufer0=0x62) *b means getminutiae 获取特征点 * else if(inp_bufer0=Ox6d) * m means match 匹配 * index+ + ; index=index 5; 5.1 固件设计 固件编程 (firmware programming)是 USB数据传输系统中终端设备程序设计nts 15 的重要部分,微处理器通过固件程序与计算机进行数据交换。由于采用不带 MCU 内核的 USB 接口芯片,所以关于 USB2.0 协议规范的实现都必须靠 DSP (TMS320VC5402)控制 ISP1581 芯片完成:在 DSP(TMS320VC5402)的平台上编写程序,以完成 USB2.0 规范所要求的标准请求及用户根据产品需要自己定义的请求。当设备连接到主机后,主机通过给 ISP1581 的端点 0发送包含标准 USB 请求的控制传输 (即 Setup 包 ), ISP1581 产生一个中断给 MCU (INT0), MCU 通过读 ISP1581的中断寄存器和最后一次传输状态寄存器来对每一个请求做出响应,并通过ISP1581 的端点 O 回送请求信息。主机从返回的信息中读取描述数据 (包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符 ),分配和载入一个设备驱动程序并对设备进行配置。设备配置完成后,就可以使用配置中支持 的端点传输数据 13。固件程序结构如图 12所示。 主 循 环 : 发 送 U S B 请 求 , 处 理 U S B 事 件 和 用 户 功 能 处 理标 准 设 备 请 求处 理中 断 服 务 程 序 厂 商 请 求 处 理I S P 1 5 8 1 命 令 接 口硬 件 提 取 层图 12 固件程序结构图 5.2 设备驱动 PC 机的驱动程序由 Philips 公司提供。用 VC+6 0 通过调用 API 函数,编写 PC 的应用程序。这样 即可实现 PC 机对 DSP(TM$320VC5402)指纹取像系统的控制以及图像的传输。主要使用的 API 函数是 DevicelOControl()、 ReadFile()、WriteFile()。其中 DevicelOControl()用于 PC(主机 )向 DSP 图像采集系统发送请求; ReadFile()和 writeFile()分别用于从图像采集系统读出数据以及向图像采集系统写入数据。在设计过程中必须注意的问题是:由于 USB 接口是主从方式的接口,其一切传输过程都必须通过主机向外设发送请求后才可以开始,所以在 nts 16 使用 ReadFile()、 WriteFile()读写数据前,必须先通过 DevicelOControl()向图像采集系统发送请求。图 13为系统的固件流程图 . 主 程 序初 始 化D S P初 始 化I S P 1 5 8 1循 环是 否 有 中 断 请 求进 入 中 断 服 务程 序Y是 否 有 数 据 传 输 进 行 数 据 读 写NYN图 13系统固件流程图 5.3 初始化 USB 设备 初始化 USB 设备的具体流程在图 14中有很详细的说明。 UsbKbd 驱动程序在“创建” IRP 处理程序中做流程中的工作。 图 14 初始化 USB 设备流程 检查设备是否启用? 在某个配置中选择接口 读取其他描述符 访问设备,发出命令 nts 17 检查设备是否启用时,如果有必要,还需把设备复位,并重新启动,自定义函数 UsbGetPortStatus()完成这部分工作;在读描述符时,除了设备描述符以外,还可能要读字符串描述符,类描述或者厂商特定的描述符,自定义函数UsbGetDeviceDescriptor()完成这部分工作;设备启动后,就可以对设备进行操作,给设备发出读写的命令,初始化管道以便发送数据,自定义函数UsbDoInterruptTransfer()和 UsbSendOutputReport()完成这些功能 , 图 15说明了程序的基本流程 。 UsbKbd 驱动程序流程 调用 USBDI 流程 图 15 程序基本流程图 UsbKbd 驱动程序中主要的实现功能代码都在 Usb.cpp 中,其中有几个很重要的自定义函数在这里需要说明一下,因为这几个函数和 USB 的规范配合的很紧密,而且完成的代码就是针对 UsbKbd 驱动程序要完成的功能,而其他的一些函数都是搭建驱动程序的框架,在很大的程度上是通用的。 5.4 部分程序说明 下边给出了系统 设备复位 的程序说, 当一个 USB 设备插入 PC 时, PC 要知道此时总线已经给电 USB 外设了,这要完成“ PNP“ IRP,首先必须初始化设备,读取设备的端口状态,如果需要,还需要重启 USB 设备,以进行 USB 信号的传输6。 下面的程序伪代码说明了当一个 WIN32 程序打开设备的一个句柄时, UsbKbd如何得到端口 的状态并复位它的设备的。 UsbGetPortStatus 发出IOCTL_INTERAL_USB_GET_PORT_STATUS,得到端口状态位。 UsbResetDevice 检查调用 USBDI 完成右边的功能 创建并初始化 IRP 构造内部 IOCTL 存储 URB 指针 调用下一个驱动程序 初始化 Usb 设备 发出 URB 关闭设备 nts 18 USBD_PORT_CONNECTED 和 USBD_PORT_ENALBLE 位,如果有需要,则调用UsbResetPort 。 UsbResetPort 简单地向 USB 类 驱 动 程 序 发 出IOCTL_IN_INTERNAL_USB_RESET_PORT。程序的说明已经在注释中添加。 NTSTATUS UsbGetPortStatus( IN PUSBKBD_DEVICE_EXTENSION dx, OUT ULONG& PortStatus/输出端口状态 ) PortStatus = 0;/初始化 NTSTATUS status = CallUSBDI( dx, &PortStatus, IOCTL_INTERNAL_USB_GET_PORT_STATUS); /调用内部 IOCTL,并赋值给 PortStatus return status;/返回调用状态 NTSTATUS UsbResetPort( IN PUSBKBD_DEVICE_EXTENSION dx) NTSTATUS status = CallUSBDI( dx, NULL, IOCTL_INTERNAL_USB_RESET_PORT);/调用内部复位 IOCTL return status;/返回状态 NTSTATUS UsbResetDevice( IN PUSBKBD_DEVICE_EXTENSION dx) ULONG PortStatus; /得到端口状态 NTSTATUS status = UsbGetPortStatus( dx, PortStatus); /检查端口状态是否正确,否则返回 if( !NT_SUCCESS(status) return status; / 如果端口状态位 USB 外设没有连接到 PC,则返回 if( !(PortStatus & USBD_PORT_CONNECTED) return STATUS_NO_SUCH_DEVICE; /如果端口可以工作,则返回 OK if( PortStatus & USBD_PORT_ENABLED) return status; /如果端口连接上去了,但是不能工作,则对设备复位 status = UsbResetPort(dx); if( !NT_SUCCESS(status) return status; / 检查此时端口能不能工作,顺序大致如上 nts 19 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;/返回最终状态 如果设备有严重的通信问题(或者设备是坏的,或者缺省管道的控制传输
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。