XXX
分类:
2013-03-21 16:17:26
原文地址:嵌入式指纹处理模块设计与实现 作者:风中残月
一、引言
人体的指纹由于具有长期不变性、稳定性和难于伪造等特点,已经成为现代生物识别技术的首选,
自动指纹识别系统(AFIS)是指集指纹图像的采集、识别并给出身份验证结果为一体的软硬件相结合的系统。目前,自动指纹识别系统可以分为两类:一类是用
专门的硬件设备来采集指纹图像,然后将采集到的图像传送给上位机,利用上位机强大的运算能力和海量的指纹特征库,来实现指纹的识别。一类是将指纹的采集与
识别在一个嵌入式系统中完成,这类系统通常是用DSP这类具有高速运算能力的器件来构建。由于嵌入式指纹识别系统存在价格低廉、使用灵活方便等优点,越来
越受到人们的重视。本文的目的就是要搭建一款低成本的嵌入式指纹处理模块,使其具有独立的指纹图像采集与识别并给出识别结果的能力。
二、模块硬件组成
对于嵌入式指纹处理模块硬件的构建,考虑到整个模块所需实现的功能、成本和处理速度的要求,选用TI公司生产的DSP处理器TMS320VC5402作为
整个模块的核心处理芯片,它是TI公司推出的一款性价比极高的DSP处理器,其内部包括4KW 的ROM,16KW
片内DARAM,2个定时器,4个外部中断,外部程序空间可扩展到1MW,并且它可工作在3种低功耗方式(IDLE1,IDLE2,IDLE3),能较好
的满足本模块需要。指纹图像采集芯片选择FUJITSU公司推出的新一代固态指纹传感器MBF200。它是一款专为嵌入式系统设计的高性能、低功耗的电容
指纹传感器。由于TMS320VC5402掉电不保存程序且一幅经MBF200采集的分辨率为256×300的指纹图像需要75KB存储空间,所以整个模
块外扩了容量为256KW 的FLASH和SRAM
各一片用于存储整个系统的程序和指纹图像数据。为了提高模块的可扩展性和适用性,采用USB接口芯片CH375扩展了模块的USB接口,使模块具有了外挂
海量存储器和与上位机进行通行的能力。由于TMS320VC5402的16根数据可以作为通用I/O口使用,采用两片8位的总线缓冲器74HC245来实
现本模块的ID设置。此外,系统还选用一片Altera生产的全局逻辑控制器EPM3032AE来实现整个模块的逻辑控制。
系统的工作原理可描述如下:通过小键盘输入ID号码,如果用户输入的ID号正确,MBF200采集用户的指纹,利用DSP和CPLD将指纹图像存储到
SRAM 中,在数据处理阶段,DSP将SRAM 中的数据分块取到其内部的16KW RAM
中作为指纹图像处理以及识别算法的临时数据,将处理结果与FLASH
中预先采集提取的特征指纹进行匹配,并用LCD显示识别结果。系统的原理框图如图1所示。
1、模块逻辑功能实现
模块逻辑部分主要是为整个系统提供片选信号和读写控制信号,它是整个模块正常工作的核心,本系统选用CPLD芯片EPM3032AE来完成该部分的功能。
TMS320VC5402可供访问的存储器空间有3个:1MW 的程序存储空间、64KW的数据空间,64KW
的I/O空间,系统设计时将外扩的256KW的FLASH及SRAM
都映射到数据空间,这两者应分时占据数据空间的,所以访问不同存储器芯片时需要分别为它们安排选通信号,该选通信号可由DSP的数据空间选择信号/DS和
TMS320VC5402的通用I/O口信号XF相“或”来实现,即FLASH的片选型号由/DS与XF相“或”产生,SRAM
的片选信号由DS#与XF的“非”相“或”产生。模块上电后,TMS320VC5402的XF引脚输出为高电平,此时由FLASH占用数据空
间,“BootLoader”开始运行,Load完成后,编写程序使TMS320VC5402的XF引脚输出低电平使系统放弃FLASH
而选通SRAM,从而使SRAM 占用数据空问。
另外,我们将指纹传感器MBF200、USB接口芯片CH375、LCD
以及小键盘都映射到TMS320VC5402的I/O
空问,要在访问它们时不发生访问冲突,需要对对它们进行编址。采用DSP的数据线A15、A14、A13对映射到DSP的I/O空间外围设备进行编址,具
体实现过程如下:在EPM3032AE中设计一个三.八译码器,A15、A14、A13作为输入端,其八个低电平有效的输出端作为各外围设备的片选使能信
号,由于系统选用的MBF200、液晶SED1335F、CH375都具有一根地址线A0,用来在功能寄存器和数据寄存器之间切换,所以也需要将DSP的
A0接入各外围芯片的A0,让它们分别占用两个地址位。模块中映射到I/O空间的各外围设备的地址如表1所示(在表中的第二栏中未列出的地址线
A2.A12可以为任意状态)。在软件编程时,对I/O空间的相应地址的访问,就是对映射到I/O空间各种外围设备的访问,例如对I/O空间
0x0000~0x1FFE(注意要保证地址位A0为低电平)的读写,就是对指纹传感器命令寄存器的读写。对于系统各个芯片的读写信号,CPLD
主要完成将TMS320VC5402的MOTOROLA格式的读写信号转化为INTEL格式的读写信号,如Flash及SRAM
的读信号通过DSP的/MSTRB与R/W 信号进行“或”运算得到,Flash及SRAM 的写信号通过DSP 的R/W
信号的非运算后再与/MSTRB进行或运算得到;同理将DSP的/IOSTRB 与R/W进行相类似的逻辑运算便可得到I/O
空间的读写信号。采用Altera公司的Maxplus II软件进行VHDL语言编程,可较为容易的实现该系统所需的逻辑功能。
功能/名称 | A15/A14/A13/A0状态 | I/O空间地址/区域 | 操作 |
MBF200命令寄存器 | 0\0\0\0 | 0x1000-0x1FFE(A0=0) | 8位可读写 |
MBF200数据寄存器 | 0\0\01 | 0x1001-0x1FFF(A0=1) | 8位可读写 |
LCD命令寄存器 | 0\01\0 | 0x3000-0x3FFE(A0=0) | 8位可读写 |
LCD数据寄存器 | 0\011 | 0x3001-0x3FFF(A0=0) | 8位可读写 |
CH375命令寄存器 | 01\0\0 | 0x5000-0x5FFE(A0=0) | 8位可读写 |
CH375数据寄存器 | 0111 | 0x5001-0x5FFF(A0=0) | 8位可读写 |
小键盘数据寄存器 | 10\0x | 0x5001-0x5FFF | 16位可读写 |
三、嵌入式软件系统框架的构建
在各功能模块软硬件调试通过后,就要考虑构建整个模块的软件系统,使其能完成预定的工作,模块的预定工作流程如图4所示,主要包括以下几个部分:
(1)系统初始化
该部分的工作主要包括系统工作时钟设置、中断设置和各寄存器的设置。
(2)密码识别
该部分主要实现确认用户ID和更改用户ID 的功能。
(3)指纹图像的采集与识别
该部分主要实现指纹图像的采集与识别的功能。
(4)USB接口通信
该部分实现系统与上位机进行USB接口通行和访问外挂海量储存器的功能。
图4 模块程序流程图
TMS320VC5402提供了四个外部中断,系统设计时将INT0用于触发密码识别,INTI用于触发指纹图像采集和识别,INT2用于触发USB接口
通信。在软件程序的开发中,为了减小中断服务程序的程序量,引入WINDOWS消息触发的编程思想,在程序中设计了一个队列,在中断服务程序中,只是将中
断类型添加入该队列中,在主程序的死循环中不断扫描中断队列是否有中断,有则取出队列中的第一个中断类型,进行相应处理,没有中断就使模块进入节电模式,
程序框架如下:
main()
{
int i,ImageFlag,intType1,intType;
/**********初始化目标板*********/
Init_Board();
InitQueue(&q);//初始化队列
while(1)//进入死循环
{
if(!emptyQueue(&q))
{/*删除队列中的首节点,并返回该节点的值域*/
intType1=outQueue(&q);
/*根据中断类型触发各个功能模块*/
switch(intType1)
{
case 0:
PassWord_Get();//调用密码识别程序
case 1:
ImageGet(0x4000,0x01);//获得指纹图像
FVSStart0; break;//调用指纹识别程序
case 2:
CH375();break;//进行USB接口通信
default: break;
}
}else Idle1();//进入节电模式
}
}
/*外部中断0触发密码验证模块*/
interrupt void Int0()
{
intType=0;
enQueue(&q,intType);//在队列尾加入新的中断
}
interrupt void Int1()/* 外部中断1触发图像采集及识别模块*/
{
intType=1;
enQueue(&q,intType);//在队列尾加入新的中断
}
interrupt void Int2() /*外部中断2触发USB接口通信模块*/
{
intType=2;
enQueue(&q,intType);//在队列尾加入新的中断
}
四、结论
本文采用了基于TMS320VC5402和MBF200的嵌入式技术,设计了一个能独立运行的嵌入式自动指纹识别系统,并根据各硬件模块的组成构建了系统
的嵌入式软件框架。实验表明本系统板能实现快速的指纹图像采集和用户ID识别,采集的指纹图像如图5所示。在此基础上加入指纹图像预处理、指纹特征提取以
及指纹匹配等指纹识别算法程序,能够构成一个完整的指纹识别系统。