基于FPGA电子密码锁门禁系统的设计Word文件下载.docx

上传人:b****4 文档编号:17997032 上传时间:2022-12-12 格式:DOCX 页数:22 大小:247.21KB
下载 相关 举报
基于FPGA电子密码锁门禁系统的设计Word文件下载.docx_第1页
第1页 / 共22页
基于FPGA电子密码锁门禁系统的设计Word文件下载.docx_第2页
第2页 / 共22页
基于FPGA电子密码锁门禁系统的设计Word文件下载.docx_第3页
第3页 / 共22页
基于FPGA电子密码锁门禁系统的设计Word文件下载.docx_第4页
第4页 / 共22页
基于FPGA电子密码锁门禁系统的设计Word文件下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于FPGA电子密码锁门禁系统的设计Word文件下载.docx

《基于FPGA电子密码锁门禁系统的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA电子密码锁门禁系统的设计Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。

基于FPGA电子密码锁门禁系统的设计Word文件下载.docx

市面上存在一些基于单片机的密码锁,其安全性和性能必定远不及基于FPGA。

因为单片机运行速度慢,逻辑性差,所以不利于将电子密码锁集成到大型的门禁系统当中;

相反,FPGA则克服了这些缺点,而且其具有处理更复杂功能的能力,能够实现更多的功能。

经过市场调查后发现,基于FPGA的电子密码锁具有功能实用且多样化,超高性能,较低成本等特点,具有一定的实际应用价值。

关键词:

现场可编程门阵列;

电子密码锁;

程序仿真;

Abstract

Accordingtothemarketresearch,electroniccodelockshavelaidovertraditionalmechanicallocksinperformanceandsafety,whichpromptconsumerstouseelectroniccodelocksmuchmorelikelythaneverbefore.Withtherapiddevelopmentofthechips,electroniccodelocksbecomemuchmoreaccessibleandacceptablebothinperformanceandprice.What’smore,hereareafewreasonsforelectroniccodelocks’popularity.Foronething,nowadays,electroniccodelockscanbecustomizedspecificallyaccordingtoindividualneeds.Forinstance,confidentialityfunction,passworderroralertandchangingpassword,etc.Foranother,therearemorefunctionswhichcanbeappliedaccordingly,suchasfirealarming,remindingthelackofelectricityandautomaticlocking,etc.Thankstothesignificantprogressoftechnology,somemanufacturersareabletoproducecost-effectiveelectroniclockswhicharesimplybasedonchipsandcircuits.Inshort,theelectroniccodelockwillapplytoeachfamilygradually.

Atpresent,somecodelocksbasedonthemicro-controllerinthemarketcannotholdacandletothosewhicharebasedonFPGAbothinperformanceandsafety.Sincemicro-controllerispoorinspeedandlogic,it’snotsuitabletoapplysuchcodelockstolarge-scaleaccesssystems.Onthecontrary,FPGAcanovercomessuchshortcomingseffectively.Besides,ithastheabilitytoprocesscomplexinstructionswhichmaybenefittoimplementingmorefunctions.Tosumup,itcanbeconcludedaccordingtothemarketresearchthatelectroniccodelocks,basedonFPGApossessthecharacteristicsoffunctional,diversified,high-performanceandlow-cost,whichhavethepractical 

application 

value.

Keywords:

FPGA(Field-ProgrammableGateArray);

electroniccodelock;

simulation;

1绪论

1.1电子密码锁的发展趋势

在当今社会,防止盗贼入室,加强防盗工作已经成为每家每户的必要工作。

从古至今,锁的种类日新月异,性能也是越来越强[1]。

然而,目前中国大多数人仍在使用传统的机械锁,而且目前用外键解锁假冒机械锁的概率极高。

当今时代,电子产品更新速度日益加快,电子设计技术更是突飞猛进,继而造成电子产品的研发周期缩短,开发成本降低,可兼容性和可扩展性变好,为此便引入了EDA技术。

所谓EDA(ElectronicDesignAutomation)技术,就是电路设计者通过QuartusⅡ软件采取从上而下的方式对电路进行设计,即在电脑上通过软件利用verilogHDL硬件描述语言完成编程,再利用计算机软件自动完成编译和仿真,最后对芯片进行编译,管脚配置和程序烧入,使其具备理想的功能[2]。

基于FPGA的电子密码锁是当前新一代门禁系统的核心,电子密码锁以其独特的优点逐渐取代现有的传统机械锁,已经成为现代锁业的发展趋势,电子密码锁在不久将来会进入每家每户的必备品。

电子密码锁涉及领域广泛,包含电子,机械,计算机技术,通信技术,生物技术等等诸多新兴技术,它在解决重要部门出入口实现安全防范管理中扮演核心角色,同时也适用于各个领域,如工业,民用,军用,医院,家庭等等[3]。

而经过市场调查,目前市面上的电子密码锁的主控芯片大部分是微型计算机的。

单片机与FPGA的区别在于:

单片机是以软件的形式运行所写代码,运行速度慢,但是FPGA是可用电脑编辑的数字逻辑电路集成芯片,设计者所设计的程序内容,实际上是在设计一个数字电路,因而运行速度相对较快。

另外,单片机在实际应用中,程序容易跑飞,所以系统可靠性较差[4]。

而采用基于FPGA的电子密码锁可以实现性能更佳,功能更加全面,能随时按照需求进行升级和扩展,使系统具有相当大的灵活性,因而更受消费者的青睐。

国外对电子密码锁的研究比国内早很多,尤其是在欧美发达国家,但是基于FPGA的电子密码锁也只是在近几年在欧美国家和亚洲部分国家研究使用。

在国内,随着国内生产商生产硬件的技术逐渐成熟,国内市场也已逐渐进入中高速发展阶段,所以电子密码锁在国内的市场潜力巨大,发展前景值得期待[4]。

1.2电子密码锁发展背景及国内外现状

国内电子锁当下还集中存在一些主要的问题,第一是国内还未颁布关于电子密码锁的产品标准,这对电子锁产品的分类、规格和型号标准都是一大空缺,给生产商和用户带来了诸多不便;

第二是电子锁的可靠性,当前电子锁的可靠性很大程度都是取决于电子元器件和制造工艺的严格把关。

而当前国内的电子锁生产商因为国内元器件的生产质量问题而不敢使用;

第三是电子密码锁的电源问题,当下电子锁电源问题主要集中于整体系统功耗大,备用电源缺少自动充电的功能等[5]。

而目前在西方发达国家,电子密码锁的技术已经相当发达,种类多样,在我国,电子密码锁开发的水平也在不断提高,但还稍落后于西方发达国家的技术水准,所以电子密码锁在我国的发展前景非常可观。

希望在国家政策的支持下,我国的电子科学技术能不断提高,使得电子锁也能在我国成为每家每户的必备品[5]。

1.3设计的目的与意义

当前是信息时代,互联网发展迅速,因特网上资料的传播更是迅速,同时,个人甚至团体的隐私保护成了大问题。

虽然现在云盘发展的很好,但依然经常看到云盘里资料被盗窃的新闻。

所以,将重要信息锁在身边才是最踏实的。

但传统的机械锁又十分脆弱,所以电子密码锁便名正言顺的成了最好的管家。

电子密码锁不仅使用方便,而且安全系数高,是个人、企事业单位的最佳选择[7]。

1.4设计方案对比

方案一:

基于微型计算机的电子密码锁设计

随着微型计算机开发技术的日益成熟,单片机的性能和特点也越来越人性化,受到广大设计者的青睐,更因为其成本低、体积小、功耗低等特性被广泛运用到人们日常生活当中[10]。

由于微型计算机的可编程性,设计者可以根据实际使用情况增加密码数目,而且具有方便随时修改密码的优点。

但是单片机以软件形式运行代码,在实际运用中程序容易跑乱,导致系统的可靠性不高,这在产品生产和使用中是致命的[9]。

方案二:

基于FPGA的电子密码锁设计

随着数字集成电路的发展,FPGA的开发与使用也是越来越广泛。

因为FPGA克服了单片机程序易跑飞,系统可靠性差的缺点,让基于FPGA控制的电子产品的性能更上一层,这让电子密码锁的功能扩展与系统的嵌入变得更加灵活。

基于FPGA的电子密码锁系统分为矩阵键盘模块、警报模块、显示模块等。

该方案的电子密码锁为6位数字密码,输入密码错误后会发出警报,且用户可修改密码。

从上述两个方案可以看出,采用以FPGA为主控芯片的电子密码锁不仅性价比更高,而且可以进行功能的扩展,所以采取方案二。

1.5设计内容与要求

1、设计一个基于FPGA为核心控制的电子密码锁,密码为6位数字,开锁后可修改密码,且掉电保存;

2、按键输入密码,在LCD1602中显示输入状态;

3、密码输入正确,则电磁继电器打开,led灯亮;

输入错误,则蜂鸣器发出警报;

按复位键恢复原始状态;

2系统硬件综述

2.1系统设计方案

该电子密码锁系统由主控芯片(FPGA),显示电路,报警电路,开/关门电路和键盘组成,而主控芯片又可分为按键处理部分,控制部分和显示部分。

该系统总框图如图2-1所示

图2-1系统总体框图

2.2电子密码锁系统组成

电子密码锁系统主要由FPGA主控芯片、LCD1602、电磁继电器、蜂鸣器、LED灯、按键和复位电路组成。

FPGA主控芯片:

FPGA是整个电子密码锁系统的控制核心,接收按键开关状态改变发来的信号,然后再发出处理信号,是按键开关与其他设备的桥梁。

LCD1602:

充当显示屏,时刻显示电子密码锁的输入状态,初始显示“inputpassword”,当按动按键输入密码时,密码以“*”的形式逐一显示;

电磁继电器:

充当锁的作用,它是通过电信号使电磁铁产生磁性,从而影响触电位置来达到状态变化的效果。

当按键输入正确密码按下确认键后,通过FPGA的I/O口向电磁继电器发送信号,将电信号转变为机械能,实现锁的开启与闭合;

蜂鸣器:

充当警报器的作用。

若输入错误密码,按下确认键后,蜂鸣器收到电信号,出发蜂鸣器发声。

键盘:

16个按键组成4x4键盘,分别有0~9数字键,重新输入、恢复密码、确认键、闭合键、设置新密码、确认新密码。

数字键用于输入密码;

按下重新输入键后LCD清空,重新输入密码;

恢复密码键是当忘记密码时,恢复初始密码012345;

确认键是输入密码后确认输入完成,给芯片发送信号;

闭合键是当电磁继电器打开后,按下闭合键,电磁继电器关闭,充当闭合密码锁的作用;

按下新密码键后先输入旧密码,再输入新密码,按下确认新密码键后新密码确定。

复位电路:

用于使系统恢复初始状态。

2.3主控模块

2.3.1Cyclone器件的介绍

Cyclone现场可编辑门列阵是基于1.5V,0.13μm,全覆铜静态随机存储器工艺,密度高达20060逻辑元件和高达288kb的随机存取存储器。

Cyclone设备支持各种I/O标准,包括数据速率高达311兆比特每秒(Mbps)和66MHz,32位,可用于连接和支持ASSP和ASIC设备的外部设备互连总线(PCI)。

Altera公司还提供新的低成本串口配置设备来配置Cyclone设备。

2.4键盘模块电路设计

2.4.1矩阵键盘的设计与原理

键盘模块中总共有16个按键,每个按键都与FPGA的I/O口连接。

识别按键的方法采用的是通用的列扫描法。

列扫描法的原理是先用上拉电阻,这样以后,当没有按键按下时,所有输入端都是高电平,说明无按键按下;

若按键按下,则为低电平。

首先检测列值的状态,若检测发现有一列的电平为低,则说明这一列上的四个按键中有按键被按下;

如果所有列线均为高电平,则没有按键按下。

最后,确定了列线状态后,以同样的方法确定行线状态,即可确定按键具体位置[15]。

矩阵键盘模块电路如图2-2所示。

图2-2矩阵键盘模块电路

2.4.2键盘具体操作说明

键盘为4x4的矩阵键盘,其中十个键代表数字0~9,其余六个按键分别代表重新输入、恢复密码、确认键、闭合键、设置新密码、确认新密码。

按下重新输入键后LCD清空,可重新输入密码;

当输入错误密码并确认后,电磁继电器不打开,蜂鸣器工作发出警报,此时必须按复位键才能恢复原始状态。

2.5显示模块电路设计

2.5.1LCD1602的简介

字符型液晶显示模块是一种专门用于显示字母、数字等点阵LCD,常用的为LCD1602字符型液晶显示器。

LCD1602分为带背光和不带背光,但是两者在应用中无差别。

在本次设计中,采用的是带背光的LCD1602。

以下为16脚接口的各引脚说明。

2.5.2显示模块原理

该系统设计的显示模块为了能达到显示内容多样化以及给予使用者提醒的作用,系统的显示模块采用了LCD1602作为显示屏而取代了数码管。

LCD1602能够显示16列2行,即32个字符。

每一个字符都有一个固定的代码,模块会自动识别,把相应的字符显示出来。

密码锁系统上电后,LCD1602第一行显示“InputPassword”,第二行用于显示系统当前状态。

开锁时,按下数字按键输入密码,每按一次LCD上出现一个“*”,输入六位密码也就会显示六个“*”,按下确认键,LCD显示为“RightOpen!

”,同时LED灯亮起,电磁继电器打开。

若密码输入错误,则LCD显示“WrongRetry!

”,同时警报器响起,需按复位键重新输入。

显示模块电路如图2-3所示。

图2-3显示模块电路

2.6存储模块电路设计

2.6.124C02的简介

(1)24C02描述

24C02是电可擦除PROM,即E2PROM。

待机电流和工作电流分别为1μA和1mA。

24C02具有页写能力,每页为8字节。

24C02具有8-pinPDIP和8-pinSOP两种封装形式。

(2)24C02特点

2.6.2存储模块原理

该模块中数据的存储芯片选用的是24C02,该芯片是电可擦除PROM,即E2PROM。

整个电子密码锁系统有掉电保存密码的关键就是这个芯片。

首先对24C02初始化,并写入初始密码“012345”进行储存,以便将来用户需要更改密码时与新密码的对比。

当用户输入正确密码并确认后,即可按下“修改密码”键进行修改密码,当确认新密码后,新密码便存储在24C02中,当下次给密码锁上电时,密码便为上次修改的新密码。

密码存储模块电路如图2-4所示。

图2-4密码存储模块电路

2.7报警电路设计

当输入密码按下确认键后,数据传送至主控芯片,主控芯片将输入的密码与24C02里存储的数据进行比较,若数据不同,则驱动蜂鸣器发出警报。

即该模块设计中,当密码不正确时,就会进行报警。

报警模块电路如图2-5所示,在本模块电路中,由于芯片的电流不足以驱动蜂鸣器工作,于是使用了三极管放大电流进而达到驱动蜂鸣器的目的,三极管另外一个作用就是充当开关:

当I/O口输出高电平时,三极管截止,蜂鸣器无法工作;

当I/O口输出低电平时,三极管处于导通状态,蜂鸣器正常工作。

同时使用1k电阻限流。

图2-5报警模块电路

3系统软件设计与仿真

3.1分频部分程序设计

每个模块需要不同的频率,但是分频器的程序都是差不多的。

因为芯片为50MHz时钟,需要经过分频后得到不同的频率,分频后获得的新时钟周期的公式为:

新时钟周期=

,其中cnt即为计数子。

分频部分程序如下所示:

always@(posedgei_clk,negedgei_rst_n)

if(!

i_rst_n)

cnt<

=0;

else

=cnt+1'

b1;

wirekey_clk=cnt[19];

由于在always敏感列表里既有时钟信号i_clk也有清零信号i_rst_n,所以显然这是异步清零的分频器,即计数器不需要等待下一个时钟信号来临,当接收到清零信号时可以直接清零。

3.2键盘驱动部分

3.2.1键盘驱动程序设计

矩阵键盘驱动程序的关键在于以下的状态机部分。

首先检测键盘行值是否出现低电平,即检测是否有按键按下,若有,则依次扫描各列,否则一直处于“没有按键按下”的状态。

状态机部分程序如下所示。

case(current_state)//根据条件转移状态

NO_KEY_PRESSED:

//没有按键按下

if(row!

=4'

hF)

next_state=SCAN_COL0;

next_state=NO_KEY_PRESSED;

SCAN_COL0:

//扫描第0列

next_state=KEY_PRESSED;

next_state=SCAN_COL1;

SCAN_COL1:

//扫描第1列

next_state=SCAN_COL2;

SCAN_COL2:

//扫描第2列

next_state=SCAN_COL3;

SCAN_COL3:

//扫描第3列

KEY_PRESSED:

//有按键按下

Endcase

always@(posedgekey_clk,negedgei_rst_n)

begin

col<

h0;

key_pressed_flag<

end

case(next_state)//根据次态给相应寄存器赋值

//清键盘按下标志

//扫描第0列

b1110;

//扫描第1列

b1101;

b1011;

b0111;

col_val<

=col;

//锁存列值

row_val<

=row;

//锁存行值

key_pressed_flag<

=1;

//置键盘按下标志

endcase

这两个状态机为摩尔型有限状态机,即输出只和状态有关而与输入无关。

这个状态机是这样工作的:

在状态机工作之前需要有外部按键按下,当按键按下后,col[3:

0]出现低电平输出,由此开始工作。

比如:

我们模拟按下了第3行第3列的按键,则列输出为4’b1011,根据状态机程序检测行值row[3:

0]为4’b1011不等于4’b1111,故标志有按键按下,同时锁存行值、列值。

键盘驱动程序在QuartusⅡ10.0平台上全编译后,编译报告如图3-1所示,从得到的编译报告可知,该模块总计逻辑器件40个,总计引脚数19个。

3-1键盘驱动程序编译报告

3.2.2键盘驱动程序仿真

由上一节的键盘驱动程序设计中可看出,因为always敏感列表里包含了i_clk和i_rst_n,所以显然这个状态机是异步清零的,键盘驱动程序仿真如图3-2所示,从仿真波形可清晰地看见,当i_rst_n变为低电平时,所有输出信号立即清零,即模拟了按下重置键后,所有输出信号初始化的功能。

从图3-2中还可看出,当行输入row[3:

0]为4’b1011,且列输出col[3:

0]为4’b1011时,按键标志位key_pressed_flag置1,输出高电平,表明有按键按下,同时相应寄存器锁存行值、列值后,输出键值keyboard_val为8’hf9,这就是在矩阵键盘上按下第三行第三列按键的仿真。

图3-2键盘驱动程序仿真波形图

3.3蜂鸣器驱动部分

3.3.1蜂鸣器驱动程序设计

在报警电路设计的分析一节中已经提出,若I/O口输出高电平,则蜂鸣器截止不工作;

若I/O口输出低电平,则蜂鸣器导通正常工作。

因此在蜂鸣器驱动程序设计中只需设计两个状态即可,用if-else语句即可实现指定功能。

蜂鸣器驱动部分程序如下所示,

speek<

=1;

if(tim==2'

b00)

elseif(tim==2'

b01)

=0;

end

由于always敏感列表中有i_clk和i_rst_n两个敏感事件,所以这是异步置位的。

蜂鸣器驱动程序在QuartusⅡ10.0平台上全

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1