嵌入式指纹处理模块设计与实现

[复制链接]
1533|2
手机看帖
扫描二维码
随时随地手机跟帖
jie4567|  楼主 | 2010-8-19 11:18 | 显示全部楼层 |阅读模式
本帖最后由 jie4567 于 2010-8-19 17:24 编辑

嵌入式指纹处理模块设计与实现



一、引言
人体的指纹由于具有长期不变性、稳定性和难于伪造等特点,已经成为现代生物识别技术的首选,自动指纹识别系统(AFIS)是指集指纹图像的采集、识别并给出身份验证结果为一体的软硬件相结合的系统。目前,自动指纹识别系统可以分为两类:一类是用专门的硬件设备来采集指纹图像,然后将采集到的图像传送给上位机,利用上位机强大的运算能力和海量的指纹特征库,来实现指纹的识别。一类是将指纹的采集与识别在一个嵌入式系统中完成,这类系统通常是用DSP这类具有高速运算能力的器件来构建。由于嵌入式指纹识别系统存在价格低廉、使用灵活方便等优点,越来越受到人们的重视。本文的目的就是要搭建一款低成本的嵌入式指纹处理模块,使其具有独立的指纹图像采集与识别并给出识别结果的能力。

二、模块硬件组成
对于嵌入式指纹处理模块硬件的构建,考虑到整个模块所需实现的功能、成本和处理速度的要求,选用TI公司生产的DSP处理器TMS320VC5402作为整个模块的核心处理芯片,它是TI公司推出的一款性价比极高的DSP处理器,其内部包括4KW ROM16KW 片内DARAM2个定时器,4个外部中断,外部程序空间可扩展到1MW,并且它可工作在3种低功耗方式(IDLE1IDLE2IDLE3),能较好的满足本模块需要。指纹图像采集芯片选择FUJITSU公司推出的新一代固态指纹传感器MBF200。它是一款专为嵌入式系统设计的高性能、低功耗的电容指纹传感器。由于TMS320VC5402掉电不保存程序且一幅经MBF200采集的分辨率为256×300的指纹图像需要75KB存储空间,所以整个模块外扩了容量为256KW FLASHSRAM 各一片用于存储整个系统的程序和指纹图像数据。为了提高模块的可扩展性和适用性,采用USB接口芯片CH375扩展了模块的USB接口,使模块具有了外挂海量存储器和与上位机进行通行的能力。由于TMS320VC540216根数据可以作为通用I/O口使用,采用两片8位的总线缓冲器74HC245来实现本模块的ID设置。此外,系统还选用一片Altera生产的全局逻辑控制器EPM3032AE来实现整个模块的逻辑控制。
系统的工作原理可描述如下:通过小键盘输入ID号码,如果用户输入的ID号正确,MBF200采集用户的指纹,利用DSPCPLD将指纹图像存储到SRAM 中,在数据处理阶段,DSPSRAM 中的数据分块取到其内部的16KW RAM 中作为指纹图像处理以及识别算法的临时数据,将处理结果与FLASH 中预先采集提取的特征指纹进行匹配,并用LCD显示识别结果。系统的原理框图如图1所示。

1、模块逻辑功能实现
模块逻辑部分主要是为整个系统提供片选信号和读写控制信号,它是整个模块正常工作的核心,本系统选用CPLD芯片EPM3032AE来完成该部分的功能。TMS320VC5402可供访问的存储器空间有3个:1MW 的程序存储空间、64KW的数据空间,64KW I/O空间,系统设计时将外扩的256KWFLASHSRAM 都映射到数据空间,这两者应分时占据数据空间的,所以访问不同存储器芯片时需要分别为它们安排选通信号,该选通信号可由DSP的数据空间选择信号/DSTMS320VC5402的通用I/O口信号XF来实现,即FLASH的片选型号由/DSXF产生,SRAM 的片选信号由DS#XF产生。模块上电后,TMS320VC5402XF引脚输出为高电平,此时由FLASH占用数据空间,“BootLoader”开始运行,Load完成后,编写程序使TMS320VC5402XF引脚输出低电平使系统放弃FLASH 而选通SRAM,从而使SRAM 占用数据空问。
另外,我们将指纹传感器MBF200USB接口芯片CH375LCD 以及小键盘都映射到TMS320VC5402I/O 空问,要在访问它们时不发生访问冲突,需要对对它们进行编址。采用DSP的数据线A15A14A13对映射到DSPI/O空间外围设备进行编址,具体实现过程如下:在EPM3032AE中设计一个三.八译码器,A15A14A13作为输入端,其八个低电平有效的输出端作为各外围设备的片选使能信号,由于系统选用的MBF200、液晶SED1335FCH375都具有一根地址线A0,用来在功能寄存器和数据寄存器之间切换,所以也需要将DSPA0接入各外围芯片的A0,让它们分别占用两个地址位。模块中映射到I/O空间的各外围设备的地址如表1所示(在表中的第二栏中未列出的地址线A2A12可以为任意状态)。在软件编程时,对I/O空间的相应地址的访问,就是对映射到I/O空间各种外围设备的访问,例如对I/O空间0x0000~0x1FFE(注意要保证地址位A0为低电平)的读写,就是对指纹传感器命令寄存器的读写。对于系统各个芯片的读写信号,CPLD 主要完成将TMS320VC5402MOTOROLA格式的读写信号转化为INTEL格式的读写信号,如FlashSRAM 的读信号通过DSP/MSTRBR/W 信号进行运算得到,FlashSRAM 的写信号通过DSP R/W 信号的非运算后再与/MSTRB进行或运算得到;同理将DSP/IOSTRB R/W进行相类似的逻辑运算便可得到I/O 空间的读写信号。采用Altera公司的Maxplus II软件进行VHDL语言编程,可较为容易的实现该系统所需的逻辑功能。

1 映射到I/O空间的外围设备编址

功能/名称

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位可读写

相关帖子

jie4567|  楼主 | 2010-8-19 17:25 | 显示全部楼层
本帖最后由 jie4567 于 2010-8-19 17:28 编辑

2、程序与数据空间的扩展
    系统要访问的存储器有三个:TMS320VC5402 内部16KW 的DRAM,系统外扩的256KW 的FLASH和SRAM。对于本系统使用的DSP,其数据空间的寻址范围为64KW,而系统扩展的SRAM 为256KW,怎样对高地址的196KW 的数据空间进行访问,借鉴TMS320VC5402程序空间分页寻址的方法,对数据空间进行分页寻址,方法如下:将SRAM的16根数据线(D0-D15)、低16位地址线(A0-A15)与TMS320VC5402对应的数据线、地址线直接相连,而将HD0-HD1通过寄存器GPIOCR编程设置成输出作为SRAM 的A16、A17的地址发生信号,即当HD0=0、HD1=0时访问数据空间的第一页,HD0=0、HD1=1时,访问数据空间的第二页,依次类推就把外扩的SRAM 分成容量为64KW 的四页。由于DSP访问其内部的16KW 的DRAM 时,外部地址线保持为高电平,所以其内部的自带的16KWDRAM 占据了每一页的低16KW 的数据空间,这和程序空间的分页扩展是类似的,这样的数据空间地址分别为:0x4000~0xFFFF(HD1=0、HD0=0)、0x14000~0x1FFFF (HD1=0、HD0=I)、0x24000~0x2FFFF(HD1=1、HD1=0)、0x34000~0x3FFFF (HD1=1、HD1=1),在编程访问时必须首先配置HD0、HD1的相应状态,才能正
确对数据空间进行访问。至于FLASH芯片的与DSP的连接,由于系统运行时用不到FLASH 的高地址空间,所以可将它们的地址线、数据线对应连接就可以了。

3、指纹采集与识别部分硬件设计
    该部分主要由TMS320VC5402和指纹传感器MBF200组成。MBF200提供三种接口:
(1)SPI:只需6条线就可以与带SPI接口的微处理器连接;
(2)USB:可作为标准的USB设备来使用;
(3)MCU:MBF200内置的标准8位微处理器总线。
    本文采用了MBF200的MCU模式获取指纹图像。它与DSP和CPLD的硬件连接如下:传感器的8位数据线直接与TMS320VC5402 的低8位数据线相连,读写信号线由EPM3032AE控制(具体实现方法见本文逻辑控制部分),通过编程可将采集到的指纹图像数据直接存储到SRAM 四页中的任意一页或两页中, 由于SRAM 每页最多只能提供48KW 的数据空间,为了后续编写指纹识别程序的方便,编写程序设置MBF200的寄存器将采集图像数据控制在48KB以内,本文所采集的指纹图像像素为220×220,存于SRAM的第一页。另外,需要注意的是MBF200的两种起振方式:采用内部多谐振荡器起振,将MBF200的FSET 管脚通过者外接晶体振荡电路,使用外部时钟时通过XTAL1.XTAL2连接晶体电路来产生时钟信号。本文通过设置MBF200寄存器CTRLB的XTALSEL位为低采用第一种起振方式。指纹采集部分的硬件连接如图2所示。



2 指纹采集部分硬件连接图
4、模块的USB接口扩展
考虑到模块板可能需要外挂海量存储器存储指纹模版及与PC机等上位机进行通信,采用CH375扩展了系统的USB接口,它是一个USB总线的通用设备接口芯片,无需用户编写驱动程序,CH375C语言子程序库提供了USB存储设备的文件级接口,这些应用层接ISIAPI包含了常用的文件级操作,可以方便移植并嵌入到各种常用的单片机程序中,这样对USB 设备的通信就几乎和访问本地硬盘一样。它具有8位数据总线(D0-D7)、读(/RD)、写(/WR)、片选控制线(/CS)以及中断输出(/INT),可以方便地与TMS320VC5402进行连接。另外CH375有一个地址线A0,它占用两个地址位,当A0引脚为高电平时选择命令端口,可以写入命令;A0引脚为低电平时选择数据端口,可以读写数据,其硬件连接如图3
所示

3 USB扩展硬件连接图


使用特权

评论回复
jie4567|  楼主 | 2010-8-19 17:29 | 显示全部楼层
三、嵌入式软件系统框架的构建
    在各功能模块软硬件调试通过后,就要考虑构建整个模块的软件系统,使其能完成预定的工作,模块的预定工作流程如图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所示。在此基础上加入指纹图像预处理、指纹特征提取以及指纹匹配等指纹识别算法程序,能够构成一个完整的指纹识别系统。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

71

帖子

1

粉丝