基于FPGA的指纹采集接口设计与实现
扫描二维码
随时随地手机看文章
摘要:本文以指纹识别认证系统的ASIC化为应用背景,提出了一种基于FPGA的指纹采集接口的设计与实现方案。重点研究接口电路的硬件组成和如何采用硬件语言VHDL编程控制滑动式指纹传感器以完成高质量的指纹采集工作。经验证本方案实现的指纹采集接口完全能满足系统需要。
关键字:FPGA,滑动式指纹传感器,SPI,指纹采集
一、引言
相对于密码、证件等传统身份认证技术和诸如语音、虹膜、脸形、签名等其他生物特征识别认证技术而言,指纹识别认证是一种更为理想的身份认证技术。其优点体现在:
· 广泛性——每个人的每一跟手指都具有指纹;
· 唯一性——每个人的指纹都不相同,极难进行复制;
· 稳定性——指纹不会随着年龄的增长而改变;
· 易采集性——指纹图像可运用专业的指纹传感器获取,易于开发识别认证系统。
随着电子商务的发展和消费类电子的普及,越来越多的领域需要指纹识别系统。目前,基于 、 的独立式指纹识别系统已经成功应用于考勤、门禁、安检等领域 。同时,随着微电子技术的进步,设计开发能应用在小型微型系统(如手机、PDA等)的ASIC
资金资助:上海市科学技术委员会PDC计划项目(No. 047062023)和AM 0403项目
(专用集成电路)指纹识别认证系统,将具有很强的现实意义和广阔的市场空间。
由于FPGA(现场可编程门阵列)具有高集成度,低功耗,短开发周期等优点,本文选用FPGA作为指纹识别认证系统的核心器件,以控制其依次实现指纹采集、指纹特征点提取、存储、比对等等过程。可见,指纹识别认证系统的首要任务是如何采集到高质量指纹图像以保证后续任务的完成,而指纹图像质量不仅与指纹传感器自身的性能有关,也与数据传输通信接口的性能密切相关。因此,如何设计性能优良的通信接口是实际系统设计的一个难点问题。于是本文针对这一问题进行了研究,介绍了一种基于FPGA与滑动式指纹传感器的指纹采集接口的设计与实现方法。
二、简介指纹采集接口器件
本指纹采集接口的核心控制器件为Xilinx公司SpartanIII系列的XC3S400型FPGA芯片,它的封装形式为PQ208。这款芯片采用先进的90ns工艺,最大容量40万门,工作频率高达200M,足以完成系统需要。
另外,本文选用的指纹采集传感器为富士通公司的MBF300滑动式电容指纹采集传感器。这款指纹传感器采用标准CMOS技术,含有8位A/D变换器,能在2.8V~5V的宽电压范围内工作,能自动检测到是否有指纹到达传感器,并实现在线采集。而它与以往采用的面积式指纹传感器相比最大的优点在于,在保证指纹图像高分辨率(500dpi)的同时大大减小了传感器的尺寸(13.3×3.6 )。
MBF300支持3种通信接口:8位微处理器总线接口(microprocessor bus interface)、集成的USB全速接口(Integrated USB Full-Speed Interface)和集成SPI接口(Integrated Serial Peripheral Interface)。其中本文选用SPI接口,并将详细讲述基于MBF300和FPGA的SPI设计与实现方法。
MBF300的SPI接口需要时钟信号线SCK、主进从出信号线MISO、主出从进信号线MOSI和使能信号线 ,共4根信号线。其中,传感器的时钟源可以从外部输人,也可以外接一个晶体振荡器后,利用MBF300内部的振荡电路来获得时钟源。在选择了SPI模式后,MBF300的其他两种模式将自动禁止。在本系统中,MBF300在SPI工作模式下相当于一个从设备,XC3S400作为主设备。XC3S400通过读写MBF300内部的寄存器实现对它的控制,以完成指纹采集的任务。
另外,MBF300在SPI的从设备状态下,它的通信协议的具体内容包括:
· MOSI线上的数据在SCK的上升沿被采样;
· MISO线上的数据在SCK的下降沿发生改变;
· SCK在空闲状态时,可以为高电平,也可以为低电平;
· 串行传输过程中,高位在前(最先被移出)。具体时序见图1 。
三、指纹采集接口的设计与实现
本文中指纹传感器MBF300的主要任务是采集指纹图像,并自动A/D转换,并把转换后的图像数据通过SPI接口传送到FPGA芯片XC3S400中,以进行指纹登记或者指纹识别比对。由此可见,指纹采集是整个指纹识别系统的第一步,采集质量的好坏将直接影响系统的性能与准确度的高低,因此,接下来将重点介绍指纹采集接口——SPI接口的设计,在此过程中,XC3S400为SPI主设备,MBF300为SPI从设备。
1、指纹采集电路
由于FPGA内部采用的SRAM存储器结构,所以需要外置一个PROM在上电时对FPGA进行程序配置。同时,还扩展了一个SRAM和Flash分别用作存储指纹程序运行时的临时数据和指纹数据信息。另外,为了实现与PC机通信,指纹采集部分还设计一个RS232接口,整个的硬件电路如图2所示。由图中可以看出,整个指纹采集的核心部件就是FPGA芯片XC3S400,它相当于常见的嵌入系统中的DSP或者ARM,控制着整个指纹采集,以及指纹登记,指纹比对,结果输出等过程。
2、指纹采集接口硬件设计与实现
本文的SPI接口主设备为FPGA芯片XC3S400,从设备为指纹传感器MBF200。由于FPGA没有特定管脚的要求,本文任意选用XC3S400的4个I/O口137—140 ,分别与指纹传感器MBF300的相应管脚连接,见图3所示。
3、指纹采集接口软件设计与实现
接口时钟采用传感器内部的12M时钟,整个采集指纹图像流程如图4所示,主要有初始化,调整参数,指纹采集,指纹存储几部分组成。
3.1 初始化XC3S400和MBF300
XC3S400为FPGA器件,因此在系统上电后先要对其进行初始化,即从PROM中读取配置数据,以完成后面的指纹采集、特征点提取、存储、比对等工作;初始化XC3S400之后,接着初始化指纹传感器MBF300,其中部分VHDL源程序如下:
……
ENTITY ini_mbf300 IS
PORT(......
pgc : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
dtr : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
dcr : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
thr : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
ctrlb : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
isr : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
icr : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
......);--定义需要初始化的MBF300寄存器;
END ini_mbf300;
ARCHITECTURE ini_mbf300 OF ini_mbf300 IS
BEGIN
pgc <= "00000110 "; --初始设置图像增益为1.5;
dtr <= "00111111";
dcr <= "00000001";
thr <= "00101100";
ctrlb <= "00000001"; --使能阵列,AD及时钟;
isr <= "00000011"; --清空中断;
icr <= "01011001"; --使能自动检测;…...
END ini_mbf300;......
3.2 调整MBF300参数
调整MBF300参数,也就是调整PGC、DTR、DCR三个寄存器的值来调整放电时间、放电电流速率和图像的放大增益,直到获得最佳质量的图像。
3.3 采集指纹图像
XC3S400按照MBF300的SPI时序要求,在MOSI信号线上发送一系列读写MBF300寄存器的指令,并由MBF300在MISO信号线上发送A/D转换后的指纹数据,直到一幅完整的256*32的指纹图像传输完毕。详细的工作流程见图5。
3.4 存储指纹图像
采集到的原始指纹图像保存到片外SRAM中,地址空间为0000 0000 0000 0000~FFFF FFFF FFFF FFFF。
4 实验调试与结论
指纹采集接口的整个程序的VHDL源代码已经通过调试,在ModelSim SE 6.1b中成功仿真,FPGA的SPI时序与MBF300一致,完全能达到指纹采集的目的。于是将MBF300设置为DTR=0x15,DCR=0x20,PGC=0x01,通过SPI接口采集到的原始指纹数据通过图2中的RS232接口传送给PC机,然后利用Matlab工具数据转化得到如图6的指纹图像,它足以满足后续的指纹特征点提取、比对等要求。
四、小结
这种基于FPGA芯片XC3S400与固体指纹传感器MBF300的SPI接口具有设计实现简单,传输速率高的特点,完全能胜任指纹采集的任务。而MBF300的高精度更能保证采集到的指纹图像的质量,这有利于简化后续的指纹图像增强、二值化等算法。总之,基于FPGA与指纹传感器的指纹采集系统的SPI接口的成功实现,为指纹识别技术的SOC片上集成打开一个良好的开端。
本文作者创新点:
虽然基于DSP或者ARM的指纹识别认证系统已经在考勤,门禁等领域实现商品化,但这样的嵌入式系统很难实现小型化集成化,更无法SOC,所以本文采用FPGA来实现指纹识别认证系统,利用FPGA高集成度,低功耗,短开发周期等优点,并以实现系统的ASIC为研究背景,具有很强的现实意义和广阔的市场空间。
只有保证高质量的指纹采集才会保证高质量的指纹识别认证,因此本文主要介绍了基于FPGA的指纹识别系统的指纹采集接口部分的设计与实现方案,经实验研究证实该接口完全能满足实际需要,这为指纹识别系统的片上集成打开了一个良好的开端。
参考文献:
[1]谢健阳,李铁才,唐降龙等.指纹识别系统的设计与实现.微计算机信息 .2006;22(3-2):156-157;
[2]周宁婕,付宇卓,周煜. 基于DSP的指纹识别系统硬件平台设计. 计算机仿真.2005;22 (1):241-243;
[3]黄林波,杜坤梅,谢建阳等. 基于ARM的指纹识别算法的研究与开发. 哈尔滨商业大学学报(自然科学版).2005; 21(2):179-181;
[4]沈小丰, 李小贝.便携式指纹识别系统的设计.自动化技术与应用.2005; 24 (4):55-58
[5] MBF300 Solid State Fingerprint Sweep Sensor,Data Sheet[Z]. 2002
[6] Spartan-3 FPGA Family: Complete Data Sheet [Z]. 2005