您当前的位置:首页 > 计算机论文>软件开发论文

基于FPGA的指纹采集系统设计

2015-09-12 09:33 来源:学术参考网 作者:未知

摘 要:本文设计了一个基于Xilinx公司FPGA芯片XC3S500E的实用指纹采集系统。给出了指纹采集系统的总体结构和控制流程,并详细描述了各个控制模块的工作原理以及设计实现方法。

关键词:指纹采集 ; FPGA ; I2C总线

     生物识别技术是利用人体所特有的生理特性(如虹膜、声音、指纹等)进行身份鉴别的一项技术。由于人体生理特性的唯一性,使得这种技术比传统的身份识别方式具有更好的安全行和方便性。其中,指纹识别是被应用最多而且最成熟的生物识别技术。本文提出了一种利用FPGA芯片作为主控制芯片,采用OV7120指纹传感器的指纹采集系统的设计方案。
1.指纹采集系统总体设计
  本系统采用Xilinx公司Spartan-3E系列XC3S500E型FPGA芯片作为控制核心,其50万门的容量满足了全系统设计的需要。选用基于OV7120黑白CMOS图像传感器芯片的指纹传感器,采集640×480的灰度指纹图像。
  指纹采集系统的总体结构如图1所示。整个系统中的I2C控制模块、SRAM模块和VGA显示控制模块全部在FPGA芯片上设计实现。OV7120指纹传感器有16根信号线,通过FPC16扁平电缆连接XC3S500E系统板上的FX2-100S-1.27DS连接器。同时,XC3S500E系统板也提供了标准VGA接口连接显示器。


2.指纹采集系统控制流程设计
  整个指纹采集系统的软件控制流程如下:主控FPGA芯片XC3S500E向指纹传感器发出开始工作命令;然后,通过FPGA中的I2C总线控制模块向指纹传感器发出工作方式设置命令;在I2C控制模块完成对OV7120指纹传感器的工作方式设置后,开始实时接收采集的指纹数据,同时将采集到的一帧指纹数据写入在FPGA中设计的SRAM中;最后由VGA控制模块读取SRAM中的指纹数据经VGA端口送到显示器显示。
2.1 I2C总线控制模块设计
  OV7120指纹传感器的工作方式、数据输出格式、扫描模式等参数的设置通过SCCB串行接口来实现的。而SCCB串行接口就是简化的I2C总线。在XC3S500E芯片上采用VHDL语言程序软件模拟方式,实现对I2C总线接口控制,完成对OV7120指纹传感器工作方式的设置。
  根据I2C总线的通信协议,将总线上的信号划分为空闲(idle)、启动(start)、写(write)、确认(ack)和停止(stop)五种工作状态。I2C控制模块在接受到FPGA发出的启动信号后,进入start状态,并根据写寄存器命令,进入write状态。由于写操作都是以字节进行的,对应8个周期的I2C总线写操作,故设计一个8节拍的计数器,使得write状态能维持8个SCL周期。在完成字节写操作之后,将进入ack状态。进入ack状态,标志一个写寄存器命令已经完成。I2C总线状态转换关系如图2所示。


  I2C总线控制模块的状态转换部分源程序如下:
case sta is
   when idle=>  scl<='1';  ——空闲状态
       sda<='1';
       sta<=start;
   when start=> scl<='1';   ——接收到start信号后,进入到启动状态
       sda<='0';
       sta<=init;   
   when init=>  bit_cnt<=0;  ——表示主控设备发送数据
       data<=datain(n);  ——主控设备发送的数据
       sda<='0';
       scl<='0';
       sta<=write;  ——进入维持8个SCL周期的写状态
  ·
  ·
  ·
   when t6=>   scl<='1';  ——确认状态,写寄存器工作完成。
      sda<='0';
      sta<=stop;
   when stop=> scl<='1';  ——停止状态,重回空闲状态,等待下次启动命令
      sda<='1';
      sta<=idle;
  end case;
2.2 SRAM模块设计
  在XC3S500E芯片内部设计SRAM模块进行数据的缓存,相比采用外部SRAM芯片存储,大大提高了数据读写速度。指纹传感器输出的一帧指纹图象数据大小约为300k,相应设计的SRAM有19个地址引脚,8根数据线,有片选引脚CS、写有效引脚wr、读有效引脚rd。wr和rd分别与CS联合控制读写使能。
2.3 VGA显示控制模块设计
  VGA显示控制模块设计总体结构如图3所示。图中二分频子模块把50mhz时钟频率分成25mhz并提供给其它子模块作为时钟;VGA时序控制子模块用于产生640X480显示范围,并控制显示范围和消隐范围以及产生水平同步时序信号hs和垂直同步时序信号vs的值;按照SRAM中数据存储地址读出显示数据,并将R、G、B的值通过VGA接口传到CRT显示器。


  VGA时序控制子模块部分的行列控制源程序如下:
  ProA:process(clk)                  ——行扫描控制进程,640个像素点,
   Begin                              行同步头时间大约等于间大约等
  if(rising_edge(clk))then       于扫描160个像素点的时间
  if(hcnt <800)then hcnt<=hcnt+1;           
     else hcnt<=0;
     end if;
    end if;
   end process;
  ProB:process(clk)                  ——列扫描控制进程,扫描480行的
   Begin                              时间,场同步头时间大约等于扫
    if(rising_edge(clk))then       描45行时间
     if(hcnt <640+8)then
      if(vcnt<525)then
       vcnt<=vcnt+1;
       n<=n+1;
      else vcnt<=0;
      end if;
     end if;
    end if;
   end process;
3.总结
  这种基于FPGA芯片的指纹采集系统,全部控制逻辑在单个FPGA芯片内部实现,简化了外部电路设计;利用FPGA较高的工作频率使得指纹采集、传输、处理速度快,在后期还可加入图像处理的算法进一步提高成像质量。全系统具有机构简单、体积小、可靠性高等优点,具有较强的实用价值。
参考文献: 
[1] 田耘,徐文波. Xilinx FPGA开发实用教程[M].清华大学出版社,2008:1-25.
[2] 徐志军,徐光辉.CPLD/FPGA的开发与应用[M].北京:电子工业出版社,2002:30-70.
[3] 李泽文.I2C总线控制及基于FPGA的实现[J].科技经济市场,2006,8:23-25.
[4] 罗钧,吴克松,廖红华.基于NiosII的图像采集和显示的实现[J].电子技术应用,2007,(2):24~27.
[5] Advanced Information Preliminary OV7620/OV7120[Z].Omnivision Inc,April,2008.

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页