基于DSP的自动指纹识别系统
摘要:文章介绍了一种基于TI公司的TMS320VC5402来构造指纹识别系统的方法。详细论述了系统的各个组成部分以及指纹识别算法的实现流程,结合VC5402的指令集和自身结构特点,讨论了如何高效的设计应用程序的方法。文章对如何将DSP的主机接口(HPI)改造成通用输入输出口(GPIO)、将多通道缓冲串行口(McBSP)设置成SPI接口进行了详细的说明,对数据图像处理需要较大空间而DSP可寻址的数据空间又过小的矛盾,提出了切实可行的解决办法。
关键词:指纹识别;DSP;混合语言编程
指纹识别技术是以数字图像处理技术为基础,而逐步发展起来的。相对于密码、各种证件等传统身份认证技术和诸如语音、虹膜等其它生物认证技术而言,指纹识别是一种更为理想的身份认证技术。使用指纹识别具有许多优点,例如:每个人的指纹都不相同,极难进行复制或被盗用;指纹比较固定,不会随着年龄的增长或健康程度的变化而变化;最重要的在于指纹图像便于获取,易于开发识别系统,具有很高的实用性和可行性。
1 指纹识别系统的架构
本课题设计了一个嵌入式系统,通过DSP来完成指纹图像的采集和指纹识别的算法。另外为使系统有更广阔的应用领域,在设计上还采用异步串行通讯方式实现了DSP和PC之间的数据交互。据此,系统由指纹传感芯片、复杂可编程逻辑器件、闪烁存储器和UART等硬件组成。系统的结构框图和主要程序流程图如图1和图2所示:
2 系统各部分设计要点
2.1 DSP的选择和存储空间的设计
TMS320VC5402具有很高的性价比,可以访问1M的程序空间和64K的数据空间。内部自带的16K 双寻址RAM,可以在一个指令周期内完成两次读操作或一次读和一次写操作。锁相环电路则可提供高达100MHz的工作频率,从而使VC5402完全有能力在较短的时间内完成指纹的识别操作。
由于指纹图像具有数据量大特点,因此程序的设计不可避免的需要较大的存储空间。系统中所采集到的8bits灰度图像大小为300×256,则存储一幅图像就需要75K的空间,而VC5402可寻址的数据空间范围总共才有64K。为此,可以参照VC5402空间分配结构图,通过程序空间页扩展功能来解决图像的存储和运算问题,运用RPT、READA和WRITA指令完成图像数据在程序空间和数据空间的搬移操作。
2.2 指纹采集电路的设计
指纹传感芯片选用Fujitsu公司的MBF200。它由256列×300行电容阵列组成,芯片内设计有两套采样保持电路用于指纹图像的采集。图像传输速度最大可达30帧/秒,能够满足连续指纹图像的采集和比对。MBF200具有手指自动检测电路(AFD),它允许DSP在没有指纹时处在低功耗待命模式,当有手指时才通过中断唤醒它进行相应的处理。然而实验证明,AFD功能的可靠性较差,不能满足设计要求。为此,在设计上采用了手动开关加软件查询方式来判断是否进行指纹的采集。当主机接口(HPI)中的HPIENA管脚通过电阻接地,则系统复位上电后,HPI接口将作为通用输入输出口(GPIO)来使用。将手动开关的输出信号线和GPIO的一个指定的输入口相连接,当要进行指纹采集时,通过开关产生一个输出信号;而系统初始化后DSP不断的查询GPIO中指定的输入口状态,一旦发现状态发生变化,就进行指纹图像的采集。实验证明,这种方式很好的解决了图像采集的问题,提升了系统的可靠性。除此之外,GPIO中其它的管脚可作为输出管脚来使用,用于控制声光报警电路。
2.3 DSP与PC接口的设计
为了充分利用VC5402的片上资源,降低成本。系统中使用MAXIM公司的通用异步串行收发器MAX3111E实现DSP和PC的通信。MAX3111E应用SPI接口与主控制器进行通信,它具有四个RS-232电平转换器,这样无需再接入MAX232进行电平转换,从而应用一个芯片就实现了具有SPI接口的主控器与PC进行异步数据传输的功能。
VC5402的时钟停止模式兼容SPI通信协议。当McBSP被设置成时钟停止模式时,可将发送帧同步信号(FSX)用作SPI协议中/SS,将发送时钟(CLKX)用作SPI协议中SCK;接收串行数据(DR)和发送串行数据(DX)分别作为协议中的MISO和MOSI。由于发送器与接收器在芯片内部实现了同步,所以接收时钟(CLKR)和接收帧同步信号(FSR)不用于SPI模式中。当将VC5402配置为主器件,MAX3111E配置为从器件时,系统中McBSP各个寄存器参数的设置如表1所示:
表1 DSP作为SPI协议主器件时,McBSP的配置信息
需要设置的位 | 所在寄存器 | 功能描述 | 系统所采用的值 |
CLKSTP | SPCR1 | 禁止或使能SPI模式 | 11b |
CLKXP | PCR | 控制BCLKX信号的极性 | 0b |
CLKXM | PCR | 控制BCLKX信号的方向 | 1b |
CLKSM | SRGR2 | 采样率时钟从CPU时钟中取得 | 1b |
CLKGDV | SRGR1 | 设定采样率分频系数 | 29 |
FSXM | PCR | 控制BFSX信号的方向 | 1b |
FSGM | SRGR2 | BFSX在每次数据传输时有效 | 0b |
FSXP | PCR | 控制BFSX信号极性 | 1b |
XDATDLY | XCR2 | 给BFSX信号提供正确的建立时间 | 01b |
RDATDLY | RCR2 | 给BFSX信号提供正确的建立时间 | 01b |
RWDLEN1 | RCR1 | 控制接受数据包长度 | 010b |
XWDLEN1 | XCR1 | 控制发送数据包长度 | 010b |
2.4 握手信号与程序加载的设计
系统中使用EPM7128SLC84作为全局逻辑控制器件。FLASH用于存储系统的应用程序,当系统复位后