基于FPGA的指纹采集与识别系统(含完整FPGA工程)/FPGA毕业设计/FPGA课程设计

首先先声明一下,本项目已经结题,可以放心根据我的设计进行二次开发和直接套用!!!

完整工程文件下载:基于FPGA的指纹采集与识别系统   提取码:1234


引言

        本课题主要针对指纹采集和识别系统进行深入研究,主要是以FPGA(Cyclone IV)作为整个设计的核心处理芯片,其组件包括光学指纹识别模块(AS608)、UART串口、蜂鸣器、独立按键、LED模块等。首先通过串口FPGA向AS608模块发送对应指令,AS608对采集区域进行逐行扫描,逐点转换数据完成后,传感器将自动进行下一行的扫描和采集,直至将整幅图像采集完成,最后通过UART将数据传输至FPGA中,同时对数据进行存储。其中可通过按键对AS608发送采集、删除、对比指令,更加便于操作和使用。

一、设计背景        

        随着社会水平不断提升和科技不断进步,生物特征个人身份识别和信息安全认证技术得到了越来越多人的青睐和重视,并且已经广泛应用于金融、保险、国防、汽车、手机等各行各业。指纹识别的广泛应用在于指纹的一些独特的特点,第一便是每个人的指纹随着个人的成长并没有变化,第二则是每个人的指纹特点都是不同的。正是由于手指指纹的独特性和准确性,并且便携、设备体积小等多种优势,使得许多企业和国家部门安全的不二之选,也让指纹识别技术得到快速的发展。

二、设计实现功能

1、识别指纹信息,并校验

2、采集指纹信息,并进行保存

3、数码管显示当前状态

4、蜂鸣器提示指纹错误

三、设计选型

1、FPGA芯片:Inter 公司 EP4CE10F17C8N 主芯片

2、指纹模块:AS608指纹模块

3、八段数码管、LED、蜂鸣器

四、设计方案

        本设计为基于FPGA的指纹采集与识别系统。本系统利用FPGA对指纹采集传感器AS608进行指纹采集和指纹数据处理。通过独立按键控制对指纹进行指纹采集,指纹对比,指纹删除以及全局复位,通过uart串口与AS608进行通信,然后AS608对FPGA进行反馈数据,通过led灯、数码管、蜂鸣器的输出形式展示出来。

五、硬件介绍

(1)开发板介绍

        在本次设计中,选用了Intel公司的Cyclone IV E系列的EP4CE6E22C8芯片作为FPGA芯片。芯片一样的开发板也可以。

        因开发板自带数码管、LED、蜂鸣器,所以就不一一介绍了,全部集成在开发板上,这也是开发板最基本的几个模块,如果你的开发板没有的话,也可以通过任意IO连接出来

(2)指纹传感器模块

        指纹识别的关键一步在于选择指纹传感器的类型,生活中最常用的指纹传感器有光学指纹传感器和电容指纹传感器,在本次设计中考虑到夏天演示设计效果非常容易出手汗的情况,我决定本次设计选用光学指纹传感器AS608模块,没有的小伙伴,可以直接在某宝直接搜 AS608模块 同款即可。        

六、设计思路

(1)程序顶层设计

        首先通过按键通过按键消抖模块给AS608状态机一个触发信号,AS608状态机发出指令给uart,uart给AS608发送指令,然后接收到的指令缓存到FIFO,从而发给AS608状态机,AS608根据返回的信息驱动LED、数码管、蜂鸣器

顶层架构设计:

其中的各部分模块都不详细的讲解了,论文里面有详细的讲解,

(2)AS608和FPGA通信方式

        FPGA与其通信方式:模块通讯发送与接收模块指令和数据按照模块指令格式打包,解析指令和接收数据包也按照此格式

七、代码设计

(1)顶层设计

        连接所有模块的文件

 部分代码:

module AS608(
	input        		clk50M,
	input        		rst_n,
	input 	[2:0]  	key,			//key[0]:录入指纹 key[1]:删除指纹 key[2]:对比验证指纹
	input        		uart_rxd,
	output       		uart_txd,
	output       		beep,
	output   [2:0]    led, 			//led[0]: 验证成功 led[1]:录入指纹灯 led[2]:删除指纹灯
	output 	[7:0]		seg,
	output  	[2:0]		sel

);
	wire [3:0] pulse_w;
	wire rst_n_w;						//消抖完的复位
	assign rst_n_w = ~pulse_w[3];
	
	//按键消抖+边沿检测
	key_pulse u_key_pulse_0(
		.clk(clk50M),
		.rst_n(rst_n_w),
		.key({rst_n,key}),
		.pulse(pulse_w)
	);
	
	wire 	[7:0] 	fifo_uart_data_w,fifo_uart_q_w;
	wire       		fifo_uart_wr_w,fifo_uart_rd_w,fifo_uart_empty_w;

(2)AS608状态机

        此模块可以说是整个设计的一个控制中心,上接输入控制信息,下接输出各种信息和指纹采集的信息

部分代码:

//功能:AS608控制状态机
module AS608_fsm(
   input        		clk,
	input        		rst_n,
	input 	[2:0]  	key,							//key[0]:录入指纹 key[1]:删除指纹 key[2]:对比验证指纹
	output 	[7:0] 	fifo_uart_data,
	output       		fifo_uart_wr,
	output       		fifo_uart_rd,
	input 	[7:0]  	fifo_uart_q,
	input        		fifo_uart_empty,
	output       		beep,
	output       		led, 							//验证指纹
	output 	reg 		led1,							//储存指纹使能
	output 	reg 		led2							//删除指纹
);
	localparam IDLE   = 4'd0;						//空闲状态
	localparam STORE  = 4'd1;						//存储指纹状态
	localparam DELETE = 4'd2;						//删除指纹状态
	localparam CHECK  = 4'd3;						//对比验证指纹状态
			
	reg [3:0] state_c,state_n;		
	reg [4:0] tx_cnt;									//已发送的字节数
	reg [4:0] rx_cnt;									//已接收的字节数
	reg [1:0] del_step;								//DELETE的子状态,分为3步:1.发送读取有效模板个数指令 2.接收应答并提取有效模板个数 3.发送删除模板指令
	reg [1:0] chk_step;								//CHECK的子状态,分为2步: 1.发送自动对比验证指纹指令 2.接收应答并提取验证结果
	//reg       rx_valid;							//提取应答中的有效数据完成标志
	reg       fifo_uart_wr_r;						//写端口的写使能,高有效

(3)数码管显示模块设计

        这个模块是一个七段数码管显示模块,主要功能是将输入的数字信号data_in转换成对应的七段数码管显示信号seg和选择信号sel,实现数字的显示。

(4)fifo和uart设计

        此模块的功能是将fifo和uart连接在一起,为了使主程序代码简单化,所以需要把这一功能单独写一个模块来控制。

八、功能演示

上电初始化:

指纹录入:指纹录入的显示效果,LED会亮,同时数码管会显示“load..”字样。

指纹匹配成功:对指纹进行对比时,对比结果如果发现指纹库里面有,则第二个LED会亮,同时数码管模拟显示解锁;若对比指纹不通过,则蜂鸣器会发出警报,此时数码管显示的模拟显示还保持锁住状态。

指纹匹配失败:

删除指纹:删除指纹显示效果,为第三个LED灯会闪烁,表示删除指纹成功。此时在对其原本的指纹进行对比,则会对比指纹失败

这样我们项目的完整功能就测试完毕,后期可根据需求在进行更新!!!

后续继续更新几篇毕业设计相关的文章。

完整工程文件下载:基于FPGA的指纹识别与采集系统   提取码:1234

如果感觉文章对您有用,麻烦三连支持一下,方便下次用到的时候,就可以快速找到我,非常感谢您的支持!!! 

  • 15
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值