基于FPGA的指纹采集接口设计与实现
时间:08-02
来源:互联网
点击:
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的指纹图像传输完毕。
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工具数据转化得到指纹图像,它足以满足后续的指纹特征点提取、比对等要求。
四、小结
这种基于FPGA芯片XC3S400与固体指纹传感器MBF300的SPI接口具有设计实现简单,传输速率高的特点,完全能胜任指纹采集的任务。而MBF300的高精度更能保证采集到的指纹图像的质量,这有利于简化后续的指纹图像增强、二值化等算法。总之,基于FPGA与指纹传感器的指纹采集系统的SPI接口的成功实现,为指纹识别技术的SOC片上集成打开一个良好的开端。
接口时钟采用传感器内部的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的指纹图像传输完毕。
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工具数据转化得到指纹图像,它足以满足后续的指纹特征点提取、比对等要求。
四、小结
这种基于FPGA芯片XC3S400与固体指纹传感器MBF300的SPI接口具有设计实现简单,传输速率高的特点,完全能胜任指纹采集的任务。而MBF300的高精度更能保证采集到的指纹图像的质量,这有利于简化后续的指纹图像增强、二值化等算法。总之,基于FPGA与指纹传感器的指纹采集系统的SPI接口的成功实现,为指纹识别技术的SOC片上集成打开一个良好的开端。
传感器 电子 集成电路 FPGA Xilinx 电容 CMOS 电压 总线 USB 振荡器 电路 DSP ARM VHDL 电流 ModelSim 仿真 相关文章:
- 基于FPGA的高速图像采集系统设计(03-30)
- 在单个FPGA平台上采用多种工业以太网标准进行设计(03-13)
- 基于CPLD的CCD信号发生器的研究(04-08)
- 在嵌入式设计中降低CPLD的功耗(04-30)
- Xilinx FPGA的功耗优化设计(04-08)
- 基于太空级Virtex FPGA的灵活高性能计算平台(04-08)