基于Verilog HDL的数字密码锁的设计.docx

上传人:b****4 文档编号:24319627 上传时间:2023-05-26 格式:DOCX 页数:22 大小:1.07MB
下载 相关 举报
基于Verilog HDL的数字密码锁的设计.docx_第1页
第1页 / 共22页
基于Verilog HDL的数字密码锁的设计.docx_第2页
第2页 / 共22页
基于Verilog HDL的数字密码锁的设计.docx_第3页
第3页 / 共22页
基于Verilog HDL的数字密码锁的设计.docx_第4页
第4页 / 共22页
基于Verilog HDL的数字密码锁的设计.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于Verilog HDL的数字密码锁的设计.docx

《基于Verilog HDL的数字密码锁的设计.docx》由会员分享,可在线阅读,更多相关《基于Verilog HDL的数字密码锁的设计.docx(22页珍藏版)》请在冰豆网上搜索。

基于Verilog HDL的数字密码锁的设计.docx

基于VerilogHDL的数字密码锁的设计

 

课程设计报告

 

题目:

基于VerilogHDL的数字密码锁

的设计

 

******************************

学生学号:

**********

系别:

电气信息工程学院

专业:

电子信息工程

届别:

2013届

*******************

基于VerilogHDL的数字密码锁的设计

学生:

江留胜

*******

电气信息工程学院电子信息工程

1课程设计的任务与要求

1.1课程设计的任务

设计一个6位的数字密码锁,利用VerilogHDL语言来实现,并使用QuartusⅡ进行仿真与调试。

1.2课程设计的要求

设计一个简单的数字密码锁,密码为6位,其功能:

1、在内部设置密码,其密码用6位十进制数表示。

2、输入密码时,每次输入一位数,输入后按#进行确认。

3、当输入的密码顺序与设置的密码一致时,密码锁打开,否则,则报警。

4、具有重置密码的功能。

输入密码正确后按*号键输入要重的密码,按#号键确认密码的重置,连续输入两次,则密码重置成功。

使用VerilogHDL语言编写密码锁的开锁过程的程序,并借助QuartusⅡ软件对其进行仿真,观察实验波形。

1.3课程设计的研究基础(设计所用的基础理论)

密码锁就是要有一定的自我保护功能,并且能够定时更新防止破译的危险。

密码锁控制器是硬件与软件的结合。

VerilogHDL是一种优秀的硬件描述语言,它与C语言有许多相似之处,并继承和借鉴了C语言的多种操作符和语法结构,有C语言基础的人很快就能够学习并使用该语言。

在本次计中,系统开发平台为QuartusⅡ。

QuartusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。

在QuartusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。

在本次设计中,采用的硬件描述语言是VerilogHDL。

VerilogHDL也是目前应用最为广泛的硬件描述语言,并被IEEE采纳为IEEE#1064-1995标准。

VerilogHDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合、仿真验证和时序分析。

VerilogHDL适合算法级(Algorithm)、寄存器传输级(RTL)逻辑级(Logic)、门级(Gate)和版图级(Layout)等各个层次的电路设计和描述。

使设计者在进行电路设计时不必过多考虑工艺实现的具体细节,

VerilogHDL只需要根据系统设计的要求施加不同的约束条件,即可设计出实际电路。

利用计算机的强大功能,在EDA工具的支持下,把逻辑验证与具体工艺库相匹配,将布线及延迟计算分成不同的阶段来实现,减少了设计者的繁重劳动。

2数字密码锁系统方案制定

2.1方案提出(以方框图模块化设计的形式给出至少2个方案,并简要说明)

设计方案一:

采用数字电路控制,用以CMOS构成的数字逻辑电路作为密码锁的控制核心,用verilogHDL硬件描述语言来进行仿真。

设计一个简单的数字密码锁,密码为6位,其功能:

在内部设置密码,其密码用6位十进制数表示。

输入密码时,每次输入一位数,输入后并进行确定。

若输入密码位与对应位相同,则通过并继续输入密码,直至输入结束,最后开锁。

若有一位与对应密码位不同则报警,结束输入,若要开锁需重新输入。

其流程图如下:

方案一的流程图

方案二:

采用以AT89C51单片机为核心控制的方案。

能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。

其主要具有如下功能:

(1)密码通过键盘输入,若密码正确,则将锁打开。

(2)报警功能。

密码输入错误密码则蜂鸣器发出报警。

(3)可以进行密码的重置。

方案二的框图

2.2方案比较

基于单片机的实现方案原理复杂,调试比较麻烦,所用到的器件比较多,而用数字电路的实现过程相对而言比较简单,软件易于实现,容易调试。

2.3方案论证

随着社会物质财富的日益增长,安全防盗已成为全社会关注的问题。

基于EDA技术设计的电子密码锁,以其价格便宜、安全可靠、使用方便,受到了人们的普遍关注。

而以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDE)为主要表达方式,以QuartusⅡ开发软件和GW48EDA开发系统为设计工具设计的电子密码锁,由于其能够实现数码输入、数码清除、密码解除、密码更改、密码上锁和密码解除等功能,因此,能够满足社会对安全防盗的要求。

2.4方案选择

综合以上情况,本次设计采用第一种方案。

3数字密码锁系统方案设计

3.1各单元模块功能介绍及电路设计

1、密码重置模块:

该电路的的具体功能是:

输入密码正确后按*号键输入要设置和更改的密码,按#号键确认密码设置与更改,连续输入两次,则密码设置成功。

按要求,该部分要用到I2C总线E2PROM器件AT24C08。

它的容量为1024×8(8Kbytes),支持2.7V~5.5V工作电压。

当工作电压为5V的时候,其接口速度可以达到400kHz。

实验箱上的供电为3.3V,所以其接口速度最高只能达到100kHz。

AT24C08与外部的I/O接口引脚连接电路如图所示。

在本系统中I2CSCL、I2CSDA分别与FPGA连接。

AT24C08与外部的I/O接口引脚连接电路

2、键盘输入模块:

键盘扫描过程:

在本系统中采用3×4的键盘,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出3行为高电平,然后输出4列为低电平,在读入输出的3行的值,通常高电平会被低电平拉低,如果读入的3行均为高电平,那么肯定没有按键按下,否则,如果读入的3行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。

同理,获取列值也是如此,先输出4列为高电平,然后在输出3行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。

本实验箱上的3×4矩阵键盘的电路原理如图所示。

3×4矩阵键盘电路原理图

3、报警电路:

根据设计要求,当密码输入连续三次错误,则报警电路连通,其中报警声要求为高声2.5KHz,低声1.25KHz交替报警,交替周期为1s(1Hz时钟,需要对系统时钟进行10K分频)。

在整个试验平台的下方有两组跳线,位于左边的一组跳线用来选取喇叭的声源信号。

当跳线位于左边的时候喇叭的声源来自FPGA,位于右边时声源来自AIC23模块的输入信号。

位于右边的一组跳线用来控制喇叭的开关,当跳线位于左边时喇叭为开的状态,位于右边时为关的状态。

要使喇叭发声请确认喇叭处于开的状态,并且声源是信号输入。

扬声器(喇叭)电路图如图所示:

扬声器电路图

4、密码锁处理单元电路

如下图为处理单元逻辑结构图由6位的拨动开关设置的数码作为6选1多路选择器的数据输入,3位二进制计数器的输出作为多路选择器的选择数据输入。

多路选择器的输出与BIT开关产生的数码相比较,两者相同时输出B为1,不同时为0.。

复位后,控制单元发出CLR命令使计数器清零,在控制信号的作用下,多路选择器的输入数据从低位到高位逐位被选择出来。

控制单元根据处理电路反馈回来的B状态信息,获得各次比较的结果。

开锁密码位数的确定由比较器完成,当输入数码的位数为8位时,比较器输出M为1,否则为0。

处理单元逻辑结构图

5、密码锁控制模块

控制器实际上是一个有限状态机,下图为它的状态流程图。

它一共有六个状态:

准备状态S0、密码输入状态S1、密码设置状态S2、确认状态S3、开锁状态S4和报警状态S5。

准备状态S0:

系统开锁、报警或上电后进入准备状态,这时系统不接收除READY信号外的任何输入信号。

密码输入状态S1:

在该状态下,如果按下“READY”则保持该状态不变;如果按下“OK”和“OPEN”则转到报警状态;如果有数据输入,则控制器输入一个DATA-IN信号,输出RD和CNP1信号,从RAM中读取密码进行比较,同时使计数器加1;检查计数是否计数到100,若CNTe1有效,表示已经接收到四个正确的密码,可以转入下一个状态,否则返回本状态,继续接收其它密码。

检查Dep信号状态,Dep=1则密码正确,进入确认状态,反之则输出CNP2信号进入报警状态;如果仍然有数据输入,则说明输入密码错误,则输出CNP2信号进入报警状态。

密码设置状态S2:

在确认状态下按“SET”键进入该状态,EN信号有效。

该状态首先由控制器发RESET-CNT信号;检查是否有数据输入,如果没有则等待;若有数据输入,控制器则输出WR和CNP1信号,向RAM发出信号,并使计数器加1,检查计数器是否计数到100,若CNTe1有效,表示已经接收到四个正确的密码,进入确认状态,否则返回本状态,继续接收其它密码。

确认状态S3:

输入密码正确后进入该状态。

密码输入得到确认才可以进入开锁状态,密码设置完毕后,只有得到确认才可生效,并返回准备状态。

开锁状态S4:

输入密码确认后进入该状态,此时按“OPEN”键,控制器便发出SLT信号开锁并返回到准备状态。

报警状态S5:

每次进入该状态首先检查计数器2是否计数到01。

若输入错误,则CNTe2有效,控制器输出SLB信号,报警电路报警。

3.2电路参数的计算及元器件的选择

I2C总线E2PROM器件AT24C08

实验箱

供电电源5V

导线若干

键盘按键与编码的对应表

编码

0000

0001

0010

0011

0100

0101

按键字符

0

1

2

3

4

5

编码

0110

0111

1000

1001

1010

1011

按键字符

6

7

8

9

#

*

控制状态转换表

3.3特殊器件的介绍

通常在一个键盘中使用了一个瞬时接触开关,并且用如图2所示的简单电路,微处理器可以容易地检测到闭合。

当开关打开时,通过处理器的I/O口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的I/O口的输入将被拉低得到逻辑0。

 

图2简单键盘电路

但是开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的1或者0。

尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。

当触点闭合时,其弹起就像一个球。

弹起效果将产生如图3所示的好几个脉冲。

弹起的持续时间通常将维持在5ms∼30ms之间。

如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。

然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。

 

图3按键抖动

键盘上阵列这些开关最有效的方法(当需要5个以上的键时)就形成了一个如图4所示的二维矩阵。

当行和列的数目一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O端被连接的时候)。

一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。

矩阵所需的键的数目显然根据应用程序

而不同。

每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。

 

图4

3.4系统整体电路图

1、系统电路组成:

2、密码锁的系统结构框图:

 

4数字密码锁系统仿真和调试

4.1仿真软件介绍

QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。

Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。

AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

4.2系统仿真实现

设计程序:

moduleLock_RTL(OPEN,ERROR,nRESET,TRY,READ,BIT,CLK);

inputnRESET,TRY,READ,BIT,CLK;

outputOPEN,ERROR;

regOPEN,ERROR;

wirenRESET,TRY,READ,BIT,CLK;

parameterS0=6’b000001,

S1=6’b000010,

S2=6’b000100,

S3=6’b001000,

S4=6’b010000,

S5=6’b100000;

parameterpassword=8’b01011001;

reg[5:

0]CurrentState,NextState;

regnCLR,CNT;

wireB,M;

reg[2;0]Q;

wireA2,A1,A0;

wire[7:

0]D;

regMux_out;

always@(posedgeCLKornegedgenRESET)

begin:

statereg

if(~nRESET)

beginCurrentState<=S0;

nCLR<=1’b0;

end

else

beginCurrentState<=Nextstate;

nCLR<=1’b1;

end

end//statereg

always@(BITorREADorTRYorBorMorCurrentState)

begin:

fsm

OPEN=1’b0;

ERROR=1’b0;

CNT=1’b0;

case(CurrentState)

S0:

begin

NextState=S1;

end

S1:

begin

CNT=(~TRY&READ==1’b1);

if(TRY)NextState=S5;

elseif(~READ)

NextState=S1;

elseif(~B)NextState=S5;

elseif(M)NextState=S2;

elseNextState=S3;

end

S2:

begin

if(READ)=S5;

elseif(~READ)NextState=S2;

elseNextState=S4;

end

S3:

begin

NestState=S1;

end

S4:

begin

OPEN=1’b1;

NextState=S4;

end

S5:

begin

ERROR=1’b1;

NextState=S5;

end

default:

NextState=S0;

endcase

end

always@(posedgeCLKornegedgenCLR)

begin:

counter

if(~nCLR)Q<=3’b000;

elseif(CNT==1’b1)Q<=Q+1'b1;

elseQ<=Q;

end

assignM=(Q==3’b111);

assign{A2,A1,A0}=Q;

assignD=password;

always@(A2orA1orA0orD)

begin:

Muxltiplexer

case({A2,A1,A0})

3’d0:

Mux_out=D[0];

3’d1:

Mux_out=D[1];

3’d2:

Mux_out=D[2];

3’d3:

Mux_out=D[3];

3’d4:

Mux_out=D[4];

3’d5:

Mux_out=D[5];

endcase

end

assignB=(Mux_out~^BIT);

endmodule

4.3系统测试(要求测试环境、测试仪器、测量数据)

测试环境:

Windows操作系统、QuartusⅡ开发平台

测试仪器:

EDA实验箱、QuartusⅡ软件下的仿真

仿真时序图:

正确开锁的时序图

错误开锁的时序

4.4数据分析(对比系统功能及参数与设计要求是否相符)

由系统的时序仿真图可以看出,当我们输入的密码数字和系统原始预设的密码顺序一样时,我们所设计的密码锁可以正确开锁,而当输入密码与原始预置密码不一样时,系统将发出警报,无法进行开锁,因此我们所设计的系统达到了设计的要求。

5总结

5.1设计小结

本次设计是以FPGA为设计载体,以硬件描述语言VerilogHDL为主要表达方式,以QuartusⅡ开发软件和GW48EDA开发系统为设计工具,设计了一种具有密码输入、密码重置、正确开锁和错误报警等功能的电子密码锁。

同时阐述电子密码锁的工作原理和软硬件实现方法,在QuartusⅡ环境下进行电路的模拟仿真,反馈结果可以验证程序设计的可行性与可靠性,对该电子密码锁进行时序仿真和硬件验证的结果表明:

该电路能够实现所要求的功能。

设计的密码锁控制器设置的是六位密码,在系统复位后,用户按键6次,输入一个完整的密码串,输入完后,系统会进行比对,如果发现密码吻合,则开门,否则系统报警,直到输入正确的密码,报警声停止。

这样的设计可以很好的满足人们的日常需求。

同时,密码锁还具有密码修改功能,方便操作,使得密码锁的使用更加安全、便捷。

5.2收获体会

在软件、硬件设计和仿真过程中遇到不少问题,但最终还是把它们解决了,使得设计符合要求。

除了自己思考设计之外,这与和本组成员的同心协力的合作与讨论是分不开的的。

相互的探讨使得我们的思路更加开阔,解决问题的办法也更多。

总之,此次课程设计让我收益良多,同时因为有了实践操作,对《基于VerilogHDL的现代数字电路与系统》课程所学内容也有了更深的记忆和理解,对EDA技术额能够更好的掌握和应用了。

通过这一课程设计使我们将课堂上的理论知识有了进步的了解,并增强了对EDA这门课程的兴趣。

了解了更多的分析调试和解决问题的能力,但同时也暴露出我在知识上掌握不足等缺点;其次在此次设计过程中由于我们频繁的使用一电子设计软件,因此使我熟悉了软件的使用,同时在电脑的电子设计有了进一步提高。

在设计过程中遇到了一些问题,使得我得和同学一起配合,查找相关资料,从而增长知识的同时增强解决问题和动手的能力。

这一课程设计,使我向更高的精神和知识层次迈向一大步。

在以后的学习生活中,我会努力学习,培养自己独立思考的能力,积极参加多种设计活动,培养自己的综合能力,从而使得自己成为一个有综合能力的人才而更加适应社会。

5.3展望

智能密码锁由于采用VerilogHDL语言设计,用一片FPGA芯片来实现,因而体积小,功耗低,稍加修改就可以改变密码的位数和输入密码的次数,而升级和维护都很方便,而且容易做成ASIC芯片,具有较好的应用前景。

但由于结构还比较简单,有待进一步完善。

6参考文献

[1]康华光主编.电子技术基础模拟部分.北京:

高教出版社,2006.

[2]阎石主编.数字电子技术基础.北京:

高教出版社,2003.

[3]王金明.数字系统设计与VerilogHDL.EDA工具应用丛书.电子工业出版社,2009.1

[4]谭会生等主编.EDA技术及应用,西安电子科技大学出版社,2001

[5](美国)SanirPalnitkar著,夏宇闻胡燕祥刁岚松等译.VerilogHDL数字设计与综合(第2版).电子工业出版社,2009年7月1日.

7附录

系统主要功能展示图

密码锁控制的开锁过程时序图:

器件清单

器件

型号

数量

作用

计算机

Windows操作系统

1台

仿真的环境平台

EDA实验箱

/

1个

硬件连接

键盘按键

/

12个

数字的键入

电源

5V

1个

供电

电源

3.3V

1个

供电

电源

12V

1个

供电

导线

/

若干

连接电路

报警器

/

1个

密码错误时进行报警

拨码开关

/

1个

/

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

当前位置:首页 > PPT模板 > 其它模板

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

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