[工程科技]基于VHDL密码锁设计.doc
上传人:天马****23 上传时间:2024-09-09 格式:DOC 页数:41 大小:1.8MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

[工程科技]基于VHDL密码锁设计.doc

[工程科技]基于VHDL密码锁设计.doc

预览

免费试读已结束,剩余 31 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

[工程科技]基于VHDL密码锁设计【完整版】(文档可以直接使用,也可根据实际需要修订后使用,可编辑放心下载)基于FPGA的数字密码器设计(黑体小三,1.5倍行距,段后1行,新起一页,居中)4.1数字密码器总体设计(黑体四号,1.5倍行距,段前0.5行)4.1.1设计要求(黑体小四,1.5倍行距,段前0.5行)1〕密码预先在内部设置,可以设置任意位密码,这里采用6位十进制数字作为密码;2〕密码输入正确后,密码器将启动开启装置。这里密码器只接受前6位密码输入,并以按键音提示,多余位数的密码输入将不起作用;3〕允许密码输入错误的最大次数为三次,密码错误次数超过三次那么进入死锁状态,并发出警报;4〕报警后,内部人员可以通过按键SETUP使密码器回到初始等待状态;5〕密码器具有外接键盘,可以用来输入密码和操作指令;4.1.2设计思路(黑体小四,1.5倍行距,段前0.5行)先对数字密码器进行顶层设计并写出相应的VHDL程序,然后将数字密码器划分为分频模块、消抖同步模块、使能电路模块、密码预置模块、编码模块、比拟模块、计数器选择模块、数码管显示译码模块、指示电路模块、数码管扫描模块、误码模块和控制器模块12个局部,将各个模块一一实现。顶层设计中各个模块是作为元件来引用的,因此这里需要将各个模块设计成独立设计实体的具体形式,这样便可以在顶层设计来引用这些模块了。4.1.3数字密码器的根本原理(黑体小四,1.5倍行距,段前0.5行)首先,密码器通过外接键盘输入数字密码,然后密码需要经过10线至4线编码器变成BCD码;接下来通过4位比拟器与存储在系统中的预置密码进行比拟,同时将输入的密码通过数码管扫描模块和数码管显示译码模块显示出来;最后将比拟的结果DEP送到控制器模块中。本次设计中的密码是串行输入的,每次分别与一个预置码比拟。可见,6个十进制的密码分别有24个端口送入,因此需要使用一个数据选择器来进行选择。这里,数据选择器是一个4位的六选一数据选择器,它的两位选择信号是由一个模6的计数器来给出的,计数器的控制信号是由控制信号RESET和时钟信号CNP是由控制模块来提供的。外接键盘每送一个密码数字,计数器的计数值加1。如果计数器的数值计到6时,那么表示6个密码已经输入完毕。接下来计数器应向控制器发出反应信号FULL,这表示控制器已经可以进入到启动状态。计数器2用来记录输入密码错误次数,当密码输入错误时,密码器将发出警报,并提示用户还可以输入密码的次数。当密码输入错误的到达次数三次时,计数器2应向控制器反应信号NOTC,密码器将进入死锁状态,并发出警报。这时只能通过内部按键SETUP使密码器回到初始状态。×××(宋体小四,1.25倍行距)4.2数字密码器的实现××××(黑体四号,1.5倍行距,段前0.5行)密码器的顶层设计由各个子模块构成。其中各个模块是以元件的形式给出的,首先必须进行元件的说明,然后进行元件的例化调用就可以构成顶层模块。顶层设计的模块图如图2-3所示。图2-3顶层设计模块图由上图可以给出数字密码器的对外接口信号,即输入和输出信号。数字按键输入信号A0~A9,用来进行密码的输入操作;外部时钟信号CLK,用来作为内部操作时钟和驱动蜂鸣器;按键输入信号READY,用来设置密码器的准备操作状态;按键输入信号WAIT_T,用来建立密码器的等待状态;按键输入信号SETUP,用来恢复密码器的等待状态;按键输入信号OPEN_T,用来设置密码器进入到启动状态;绿灯指示驱动信号LED_G,驱动绿灯显示;红灯指示驱动信号LED_R,驱动红灯显示;蜂鸣器驱动信号ALERT,驱动报警蜂鸣器;10、数码管显示译码输出A,B,C,D,E,F,G。×××××××(宋体小四,1.25倍行距)4.2.1分频模块设计(黑体小四,1.5倍行距,段前0.5行)1、分频模块的输入、输出图2-4分频模块图分频模块的模块图如图2-4所示,可以定义输入、输出信号如下:CLK:系统输入时钟,300Hz。CLK_DIV1、CLK_DIV2:分频输出时钟信号,分别为10Hz、1Hz。2、模块描述在数字密码器中,它的外部时钟信号CLK是由外部晶振来提供的,时钟频率为300Hz。对CLK进行分频输出两路时钟CLK_DIV1和CLK_DIV2,其中CLK_DIV1作为按键检测消抖时钟和控制器模块时钟,而CLK_DIV2作为密码错误次数计数模块的时钟。CLK时钟信号还作为蜂鸣器启动信号和LED显示扫描时钟信号。CLK_DIV1设为CLK的30分频,为10Hz。再将CLK_DIV1进行10分频可以得到CLK_DIV2时钟,为1HZ。因此,分频模块可以采用10分频和30分频电路来构成,如图2-5所示。30分频