基于VHDL密码锁设计.docx

上传人:小飞机 文档编号:3384997 上传时间:2023-03-12 格式:DOCX 页数:49 大小:53.09KB
返回 下载 相关 举报
基于VHDL密码锁设计.docx_第1页
第1页 / 共49页
基于VHDL密码锁设计.docx_第2页
第2页 / 共49页
基于VHDL密码锁设计.docx_第3页
第3页 / 共49页
基于VHDL密码锁设计.docx_第4页
第4页 / 共49页
基于VHDL密码锁设计.docx_第5页
第5页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于VHDL密码锁设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL密码锁设计.docx(49页珍藏版)》请在三一办公上搜索。

1、基于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使密码器

2、回到初始等待状态; 5)密码器具有外接键盘,可以用来输入密码和操作指令; 4.1.2设计思路(黑体小四,1.5倍行距,段前0.5行) 先对数字密码器进行顶层设计并写出相应的VHDL程序,然后将数字密码器划分为分频模块、消抖同步模块、使能电路模块、密码预置模块、编码模块、比较模块、计数器选择模块、数码管显示译码模块、指示电路模块、数码管扫描模块、误码模块和控制器模块12个部分,将各个模块一一实现。顶层设计中各个模块是作为元件来引用的,因此这里需要将各个模块设计成独立设计实体的具体形式,这样便可以在顶层设计来引用这些模块了。 4.1.3 数字密码器的基本原理(黑体小四,1.5倍行距,段前0.5行)

3、 首先,密码器通过外接键盘输入数字密码,然后密码需要经过10线至4线编码器变成BCD码;接下来通过4位比较器与存储在系统中的预置密码进行比较,同时将输入的密码通过数码管扫描模块和数码管显示译码模块显示出来;最后将比较的结果DEP送到控制器模块中。 本次设计中的密码是串行输入的,每次分别与一个预置码比较。可见,6个十进制的密码分别有24个端口送入,因此需要使用一个数据选择器来进行选择。这里,数据选择器是一个4位的六选一数据选择器,它的两位选择信号是由一个模6的计数器来给出的,计数器的控制信号是由控制信号RESET和时钟信号CNP是由控制模块来- 1 - 济南大学毕业设计(论文) 提供的。外接键盘

4、每送一个密码数字,计数器的计数值加1。如果计数器的数值计到6时,那么表示6个密码已经输入完毕。接下来计数器应向控制器发出反馈信号FULL,这表示控制器已经可以进入到启动状态。 计数器2用来记录输入密码错误次数,当密码输入错误时,密码器将发出警报,并提示用户还可以输入密码的次数。当密码输入错误的达到次数三次时,计数器2应向控制器反馈信号NOTC, 密码器将进入死锁状态, 并发出警报。这时只能通过内部按键SETUP使密码器回到初始状态。 (宋体小四,1.25倍行距) 4.2数字密码器的实现(黑体四号,1.5倍行距,段前0.5行) 密码器的顶层设计由各个子模块构成。其中各个模块是以元件的形式给出的,

5、首先必须进行元件的说明,然后进行元件的例化调用就可以构成顶层模块。顶层设计的模块图如图2-3所示。 图2-3 顶层设计模块图 由上图可以给出数字密码器的对外接口信号,即输入和输出信号。 1、 数字按键输入信号A0A9,用来进行密码的输入操作; 2、 外部时钟信号CLK,用来作为内部操作时钟和驱动蜂鸣器; 3、 按键输入信号READY,用来设置密码器的准备操作状态; 4、 按键输入信号WAIT_T,用来建立密码器的等待状态; 5、 按键输入信号SETUP,用来恢复密码器的等待状态; 6、 按键输入信号OPEN_T, 用来设置密码器进入到启动状态; 7、 绿灯指示驱动信号LED_G,驱动绿灯显示;

6、 8、 红灯指示驱动信号LED_R,驱动红灯显示; 9、 蜂鸣器驱动信号ALERT,驱动报警蜂鸣器; 10、数码管显示译码输出A,B,C,D,E,F,G。 (宋体小四,1.25倍行距) 4.2.1 分频模块设计(黑体小四,1.5倍行距,段前0.5行) 1、分频模块的输入、输出 - 2 - 济南大学毕业设计(论文) 图2-4 分频模块图 分频模块的模块图如图2-4所示,可以定义输入、输出信号如下: CLK: 系统输入时钟,300Hz。 CLK_DIV1、CLK_DIV2: 分频输出时钟信号,分别为10Hz、1Hz。 2、模块描述 在数字密码器中,它的外部时钟信号CLK是由外部晶振来提供的,时钟频

7、率为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所示。 CLK 30分频电路 CLK_DIV1 CLK_DIV1 10分频电路 CLK_DIV2 图2-5 3、VHDL设计 由图2-5可知,分频模块内部含有两个单元

8、电路:30分频电路和10分频电路。首先需要进行30分频和10分频这两个单元电路的VHDL设计,这两个单元电路的设计可以采用计数的方法来完成。而对于分频模块的设计,可以通过对两个单元电路元件的例化调用来实现。其中30分频电路和10分频电路的VHDL程序分别为clk_div30.vhd,clk_div10.vhd;分频模块的VHDL程序为clkdiv_model.vhd。 4.2.2消抖同步模块设计(黑体小四,1.5倍行距,段前0.5行) 1、消抖同步模块的输入、输出信号定义 - 3 - 济南大学毕业设计(论文) 图2-6 消抖同步模块图 消抖同步模块的模块图如图2-6所示,由图可以得到输入、输出

9、信号定义: 1)输入信号 C1、C2、C3、C4:分别由WAIT_T、SETUP、READY、OPEN_T操作指令得到; AOOA90:由使能模块提供; CLK:由分频模块输出的CLK_DIV1来提供; 2)输出信号 C11、C22、C33、C44: 由WAIT_T、SETUP、READY、OPEN_T经过消抖后产生; A01A91:有AOOA90经过消抖后产生。 2、模块描述 在数字密码器中,由按键方式产生的数字密码A0A9、READY、OPEN_T、WAIT_T、SETUP的产生时刻和持续长短是随机不定的,同时存在因开关簧片反弹而引起的电平抖动现象,因此必须添加消抖同步模块,目的是保证系统

10、能捕捉到输入脉冲,同时保证每按一键只形成一个宽度为系统时钟周期的脉冲。 3、VHDL设计 在数字电路中,消抖同步电路的设计方案11较多,本设计采用的是一种应用较为广泛的消抖同步电路。如图2-7所示。因为采用与非门构成的触发器使用底电平触发,因此按键输入的数字或者操作指令要设计成低电平有效。 - 4 - 济南大学毕业设计(论文) 输入 D Q D Q CP Q CP Q 输出 CLK 根据图2-7可以看出消抖同步电路含有两个与非门、一个与门和两个D触发器。所以首先必须进行D触发器的VHDL设计,然后构成消抖同步电路的VHDL设计,最后通过元件例化调用完成消抖同步模块的VHDL设计。其中,D触发器

11、的VHDL程序为dff_1.vhd, 消抖同步电路的VHDL程序为key_sync.vhd, 消抖同步模块的VHDL程序为keysync_model.vhd。 图2-7 4.2.3 使能电路模块设计(黑体小四,1.5倍行距,段前0.5行) 1、使能电路模块的输入、输出信号定义 图2-8 使能电路模块图 使能电路模块的模块图如图2-8所示,模块的输入、输出信号定义如下: 1)输入信号 A0A9:由按键09提供; EN :由控制器模块提供。 2)输出信号 A00A90:当其为低电平0时,表示对应的A0A9有信号输入。该输出用于提供给消抖同步模块。 2、模块描述 在数字密码器中,数字密码A0A9的按

12、键输入信号是通过控制器模块给出的使能信号EN来进行控制的:当使能信号有效时,输入的信号A0A9有效;否则输出为高电平。 - 5 - 济南大学毕业设计(论文) 3、VHDL设计 使能电路模块的VHDL程序为enable_model.vhd。 4.2.4 密码预置模块设计(黑体小四,1.5倍行距,段前0.5行) 1、输入输出定义信号定义 图2-9密码预置输出模块图 密码预置输出模块的模块图如图2-9所示,模块的输入、输出信号定义如下: 1)输入信号 S0、S1、S2:由计数器选择模块提供。 2)输出信号 E1、E2、E3、E4:密码预置信号。 2、模块描述 该模块用来预置密码器的密码,用于与输入的

13、数字密码进行比较操作。密码器的密码可以设置成任意位,这里设为6位,为“654321”。它的输入有三个,分别为s2、s1、s0,由计数器选择模块提供;输出有为4位的2进制密码。 3、VHDL设计 密码预置输出模块的VHDL程序为mux4_model.vhd。 4.2.5 编码模块设计(黑体小四,1.5倍行距,段前0.5行) 1、输入输出信号定义 图2-10 密码预置输出模块图 密码预置输出模块的模块图如图2-10所示,模块的输入、输出定义如下: - 6 - 济南大学毕业设计(论文) 1)输入信号 A01A91:由消抖同步模块提供,对应于数字按键09; RESET :由控制器模块提供; DUS :

14、由控制器模块提供,用于检测是否有按键输入; 2)输出信号 B1B4:由按键信号转换成4位BCD码,用来提供给比较模块; DATA_IN:当其为高电平是,表示有密码输入,用来提供给控制器模块; DI :按键音信号,用来提供给指示模块,以驱动扬声器。 IN1IN6:用于按顺序存储密码,其中IN1用于存储第一位密码,IN6用于存储第六位密码。该信号提供给数码管扫描信号,用于动态显示输入的密码。 2、模块描述 编码模块为子模块中的第二大模块,该模块用于将输入的按键信号转换成4位BCD码B1B4送入到比较器中,这一步将通过10线至4线编码器来完成。除此以外,该模块还将输入的按键信号通过移位寄存器按照按键

15、的顺序存储到6个4位BCD码输出信号in1in6中,用于提供给数码管扫描模块的输入信号。同时还将输出di信号提供给指示电路模块用于产生按键音。对于编码器的输出来说,B4是MSB,B1是LSB。 3、VHDL设计 编码模块的VHDL程序为encoder_model.vhd。 4.2.6 比较模块设计(黑体小四,1.5倍行距,段前0.5行) 1、输入输出信号定义 图2-11 比较模块图 比较模块的模块图如图2-11所示,模块的输入、输出信号定义如下: 1)输入信号 B1、B2、B3、B4:由编码模块提供,用于与密码预置模块输出的预置密码信号进行比较; E1、E2、E3、E4:密码预置信号,由密码预

16、置模块提供。 2)输出信号 DEP :该信号用于反馈给控制器模块,用于说明比较的结果。 2、模块描述 在数字密码器中,比较模块的主要功能是对编码模块的输出B1B4这4位数据和密码预置输出模块的输出E1E4这4位数据进行比较,然后将比较的结果送入控制器模块的DEP端口上。比较器的具体工作原理是:当比较结果相等是,DEP的输出为1;当比较结果不相等时,DEP的输出为0。 - 7 - 济南大学毕业设计(论文) 3、VHDL设计 比较模块的VHDL程序为comparator_model.vhd。 4.2.7 计数器选择模块设计(黑体小四,1.5倍行距,段前0.5行) 1、输入输出信号定义 计数器选择模

17、块的模块图如图2-12所示,模块的输入、输出信号定义如下: 1)输入信号 RESET:计数器的复位信号。 CNP :计数器的输入脉冲信号,上升沿有效。 2)输出信号 S0、S1、S2:提供给密码预置输出模块的地址选择信号。 FULL: 提供给密码预置输出模块,用于表示6位密码是否输入完毕。 图2-12 计数器选择模块图 2、模块描述 在密码器中,计数器选择模块的功能是用来给出密码预置输出模块的地址选择信号S0、S1和S2,它的控制信号RESET和时钟信号CNP是由控制器模块来提供的;另外还有一个输出信号FULL,它表示6个密码已经输入完毕,控制器可以进入到启动状态。 3、VHDL设计 计数器选

18、择模块的VHDL程序为counter_model.vhd。 4.2.8 数码管显示译码模块设计(黑体小四,1.5倍行距,段前0.5行) 1、输入输出信号定义 图2-13 数码管显示译码模块图 数码管显示译码模块的模块图如图2-13所示,模块的输入、输出信号定义如下: 1)输入信号 - 8 - 济南大学毕业设计(论文) DATA :4位的BCD码输入信号,由数码管扫描模块提供。 2)输出信号 A、B、C、D、E、F、G:分别对应7段LED的7个输入端口。 2、模块描述 在密码器中,显示设备由8个7段LED组成。前6个LED将显示输入的6个密码,后2个LED在用来在误码状态下显示还可以输入的密码次

19、数。由于采用动态扫描显示,只须输出一个LED所须的驱动信号即可。这里采用共阴极LED,所以输出AG高电平有效。 3、VHDL设计 数码管显示译码模块的VHDL程序为decoder_model.vhd。 4.2.9指示电路模块设计(黑体小四,1.5倍行距,段前0.5行) 1、输入输出信号定义 数码管扫描模块的模块图如图2-14所示,模块的输入、输出信号定义如下: 1)输入信号 CLKSCAN:数码管扫描频率,来源于系统时钟输入CLK。 RESET:数码管复位信号,由控制器模块提供。 IN1IN6:数字密码显示输入信号,由编码模块提供。 IN7、IN8:剩余密码输入次数显示输入信号,由密码错误次数

20、计数模块提供。 2)输出信号 DATA:用于提供给数码管显示译码模块的数据输入。 SEL: 3位的2进制数码管选择信号,当其为111 010时,选择前6位数码管,用于显示输入的密码数字;当其为001000时,选择后2位数码管,用于显示剩余密码输入次数。 图2-14 数码管扫描模块图 2、模块描述 在密码器中,输入的数字密码需显示在LED上,由于输入由6位,所以至少应采用6个LED进行显示。若采用传统静态显示的方法,不仅需要消耗更大的芯片资源和管脚资源,而且还会在电路中会产生一个比较大的电流,很容易造成电路烧坏。通过动态扫描电路可以解决这一问题,通过产生一个扫描信号SEL(000) - SEL(

21、111) 来控制8 个七段显示器,依次点亮8个七段显示器,也就是每次只点亮一个七段显示器。只要扫描信号SEL(000) - SEL(111) 的频率超过人的眼睛视觉暂留频率24Hz 以上,就可以达到尽管每次点亮单个七段显示器,却能具有8 个同时显示的视觉效果,而且显示也不致闪烁抖动。这里数码管扫描频率采用密码器时钟输入CLK,为300Hz。 - 9 - 济南大学毕业设计(论文) 3、VHDL设计 数码管扫描模块的VHDL程序为keyscan_model.vhd。 4.2.10数码管扫描模块设计(黑体小四,1.5倍行距,段前0.5行) 1、输入输出信号定义 图2-15 指示电路模块图 指示电路模

22、块的模块图如图2-15所示,模块的输入、输出信号定义如下: 1)输入信号 WAIT_L、S_LG、S_LR:由控制器模块提供的红绿灯驱动信号。 DI: 由编码模块提供的按键音信号; BJY:由密码错误次数计数模块的警告音信号。 CLK_DIV1:用于报警状态下的扬声器驱动信号。 2)输出信号 LED_G:绿灯驱动信号,高电平有效。 LED_R:红灯驱动信号,高电平有效。 ALERT: 扬声器驱动信号,高电平有效。 2、模块描述 在密码器中,指示电路模块的功能是用来产生红灯指示LED_R、绿灯指示LED_G和蜂鸣装置ALERT。根据图2-2的模块划分图可以看出,绿灯指示LED_G是由控制器模块提

23、供的置位信号S_LG和按下WAIT_T键时提供的WAIT_L信号通过RS触发器来共同控制的;红灯是由控制器模块提供的置位信号S_LR、信号WAIT_L和BJY来来共同控制的;蜂鸣装置ALERT是由由控制器模块提供的置位信号S_LR、信号WAIT_L、单频信号CLK_DIV1、DI和BJY来共同控制的。 3、VHDL设计 指示电路模块的主要元件是RS触发器,控制器提供的置位和复位信号都应该是低电平有效。所以首先应该进行RS触发器的VHDL设计,然后才能构成指示电路模块的VHDL设计。其中RS触发器的VHDL程序为rs_dff.vhd,指示电路模块的VHDL程序为indicator_model.v

24、hd。 4.2.11 误码模块设计(黑体小四,1.5倍行距,段前0.5行) 1、输入输出信号定义 - 10 - 济南大学毕业设计(论文) 图2-16 误码模块图 误码模块的模块图如图2-16所示,模块的输入、输出信号定义如下: 1)输入信号 ANC:由控制器模块来提供,表示密码输入错误。 DS :由控制器模块来提供,作为延时和报警的脉冲信号。 CLK:计数脉冲输入,当其计为4时,延时结束,这是如果密码次数还不到3次,则可以再次输入密码。 RET:复位信号,有控制器提供。 2)输出信号 IN7、IN8:用于显示还可以输入的密码次数。 NOTC :当密码错误次数达到3次时有效,为1,它将反馈给控制

25、器模块。 DSW :表示延时结束,这是密码器可以由警告状态进入到密码输入状态。 BJY :警告状态下的红灯和蜂鸣器驱动信号。 2、模块描述 该模块用于对密码输入错误次数进行计数,当密码输入错误次数不达3次时,密码器将进入到警告状态,这时红灯和蜂鸣器会有相应的指示,大约持续4秒后,可以继续输入密码。当密码器的密码错误次数达到3次时,密码器将进入到死锁状态。 3、VHDL设计 根据前面对该模块的描述,可以给出其VHDL程序,为wrong3_model.vhd。 4.2.12 控制器模块设计(黑体小四,1.5倍行距,段前0.5行) 1、输入输出信号定义 控制器模块的模块图如图2-17所示,模块的输入

26、、输出信号定义如下: 图2-17 控制器模块图 1)输入信号 C11、C22、C33、C44:由消抖模块提供,分别对应键WAIT_T、SETUP、READY、OPEN_T。 - 11 - 济南大学毕业设计(论文) DATA_IN:由编码模块提供,表示有密码输入。 DEP :由比较模块提供,当它为1时,表示输入的数字与预置密码相等。 DSW :由密码错误次数计数器提供,当它为1时,表示定时完,可以进入到下一个状态。 FULL :由计数选择模块提供,当它为1时,表示已经输入了6位的正确密码,可以进入到启动状态。 NOTC :由密码错误次数计数模块提供,当它为1时,表示密码错误次数已经达到3次。这时

27、将进入到报警状态。 CLK :输入时钟,有分频模块提供,与消抖模块的输入时钟同步。 2)输出信号 EN :输入到使能模块的使能信号。 DUS :输入到编码模块的读数脉冲信号。 ANC :输入到密码错误次数计数模块的密码错误次数计数脉冲。 CNP :输入到计数器选择模块的输入密码位数计数脉冲。 RESET:输入到编码模块、计数器选择模块和数码管扫描模块的复位信号。 DS :输入到密码错误次数计数模块的定时信号。 RET :输入到密码错误次数计数模块的密码错误次数复位信号。 WAIT_L、S_LG、S_LR:输入到指示电路模块的红绿灯和蜂鸣器驱动信号。 2、模块描述 控制器模块为数字密码器的核心部

28、分,它在密码器系统中占有重要的地位,要编好这一部分的程序,必须先对该模块的工作原理有清晰的认识。 控制器模块的工作原理如下所示: 1)建立等待状态 建立等待状态是指密码器处于上电、启动或者报警后的状态,这是密码器并没有进入到正常的等待状态,因此密码器不会接受除WAIT_T信号外的任何输入信号。当操作人员按下WAIT_T键后,密码器将会进入到等待状态,这时用来指示密码器工作情况的指示灯和蜂鸣器都处于不工作状态,同时它还将密码错误次数计数器复位为0。 2)准备就绪状态 准备就绪状态是指密码器在被按下WAIT_T键后处于的一种状态。这时如果操作人员按下READY键,密码器将会进入到第3种状态,等待密

29、码数字的输入。在这种情况下,RESET将被置1,DS信号将被置0。 3)密码输入状态 密码输入状态是控制器模块的第3个状态,这是密码器将进入到密码输入的操作状态。当处于这种状态时,控制器模块的EN输出信号将变为有效,它意味着此时允许数字密码A0A9的按键输入。在这种情况下,密码器每收到一个按键信号后,控制器模块应该判断出该按键输入是数字密码还是OPEN_T信号。 如果判断出按键输入OPEN_T信号,那么这是就不符合启动程序,这是密码器将转移到报警状态,同时还向密码错误次数计数模块发出ANC时钟,作为密码错误次数计数输入脉冲。是如果判断出是数字按键输入,则提供DUS时钟给编码模块作为密码输入位数

30、计数脉冲信号,同时如果判断出该按键输入为正确密码,则向计数器选择模块发出CNP时钟信号,目的是选出对应的预置密码与输入的密码进行比较。对于比较模块来说,如果DEP的输出为0,那么控制器模块应该转移到密码错误状态;如果DEP的输出为0,那么这时检查计数器选择模块的输出FULL是否有效。如果FULL有效,那么表示已经接收了6个正确的数字密码,控制器模块将转移到启动状态,否则将返回本状态继续接收密码。 - 12 - 济南大学毕业设计(论文) 4)启动状态 启动状态是控制器模块的第4个状态,这时控制器将判断按键输入的具体信号:如果判断出按键输入是OPEN_T信号,那么将发出S_LG信号;如果判断出是数

31、字按键输入,那么仍向编码模块发出DUS时钟。 5)误码状态 当控制器处于这个状态时,如果按下READY键,那么控制器将发出复位信号RESET,并使控制器返回到密码输入状态:如果按下OPEN_T键,那么控制器将向误码模块发出ANC时钟,同时转移到报警状态;如果判断出是数字按键输入,那么向编码模块发出DUS时钟。 6)报警状态 当控制器处于这个状态时,这时控制器将判断NOTC信号是否有效,如果该信号有效,则表示密码输入错误次数已经达到3次,这时密码器将进入到死锁状态,同时控制器将转移到报警返回状态;如果NOTC信号无效,则向密码错误计数模块发出定时信号,这时指示设备将发出警告信号,这时任何按键输入

32、都将不被响应;如果定时结束则,密码器将再次进入到准备就绪状态,这时允许再次输入密码。 7)报警返回状态 报警返回状态是控制器模块的最后一个状态,这是密码器将判断输入的具体信号:如果按下SETUP信号,那么控制器模块将返回到密码建立等待状态;如果按下其他键,那么状态将不会发生变化。 根据上面对控制器模块的工作原理的描述,可以画出该模块的状态图,如图2-18所示。其中QA、QB、QC、QD、QE、QF、QG分别对应控制器的建立等待状态、准备就绪状态、密码输入状态、启动状态、误码状态、报警状态、报警返回状态这7个状态。 WAIT_T QA WAIT_T FULL READY READY SETUP

33、QB QC READY DSW OPEN_T DEP NOTC QG SETUP 图2-18 控制器模块的状态图 QF OPEN_T QE READY OPEN_T QD 3、VHDL设计 通过前面对控制器模块的详细介绍,可以给出控制器模块的VHDL描述,其VHDL程序为control_model.vhd。 4.2.13具体电路及仿真结果(黑体小四,1.5倍行距,段前0.5行) 下面给出主要模块的仿真波形图。 顶层模块仿真 - 13 - 济南大学毕业设计(论文) 1、密码输入错误 图3-1 密码输入错误状态的仿真波形图 密码输入错误状态的波形仿真图如图3-1所示,从图中可以看出:输入的密码为8

34、54321,而正确密码为654321,所以在按下OPEN_T键后,控制器进入了报警状态,符合控制器工作流程。 2、密码输入正确 密码输入正确下的仿真波形图如图3-2所示。从图中可以看出,当密码输入654321后,控制器进入到了启动状态。在按下OPEN_T键后,控制器又返回了建立等待状态,同时发出LED_G绿灯驱动信号。这完全符合控制器工作流程,满足设计要求。 图3-2 密码输入正确下的仿真波形图 - 14 - 济南大学毕业设计(论文) 编码模块仿真 编码模块的仿真波形图如图3-3所示,从图中可以看出:当检测到有数字按键输入是,DATA_IN将输出一个时钟周期的高电平,同时该按键信号所代表的数值

35、将通过B4B1和IN1IN6存储起来。 图3-3 编码模块的仿真波形图 至此完成了系统软件上的仿真。由于仿真激励文件的不完善,所以时序仿真的通过并不代表加载到FPGA片上的成功,只是通过了FPGA的硬件调试,才是系统设计的真正成功。 由于输入延时及仿真频率的选择问题,输出带有一定的延时,所以应该考虑到输出的延时问题,才能正确的对输入进行设置,从而得到意想的结果。 4.2.1 FPGA验证(黑体小四,1.5倍行距,段前0.5行) FPGA验证就是将编译、综合生成的下载文件下载到指定的芯片上,本设计采用的是EDAV型实验开发系统。本实验器由主板和下载板组成。下载板由ALTERA公司生产的FPGA(

36、EPF10K10LC844)芯片及单片机系统组成,还包括EEPROM等。可以完成FPGA设计资料的下载,存储,显示等功能,可以和主板配合完成CPLD的各种开发及实验。 本设计通过在 Quartus II软件上进行编译、综合,最后下载到FPGA(EPF10K10LC844)芯片并在实验开发系统上进行验证,实际测试表明系统的各项功能要求均得到满足并且系统工作良好。 4.3数字密码器实验总结(黑体四号,1.5倍行距,段前0.5行) 本文设计的密码锁克服了基于单片机的密码锁的可靠性较差的缺点, 利用了FPGA 的ISP 功能可高效的进行功能扩展和产品升级。本设计还突破了一般密码锁只能设置四位密码的限制

37、, 可方便的设置任意位密码, 具有使用灵活、 性能可靠、 安全保密性强等优点, 将有十分良好的应用前景。 - 15 - 济南大学毕业设计(论文) 同时本文还通过数字密码器的设计展现出了现代电子设计方法EDA 技术的灵活性,层次化设计方式的优点。VHDL语言具有很强的电路描述和建模能力13,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。用VHDL 语言实现电路设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺相关的因素花费过多的时间和精力。它必将是现代电子的重要设计手段和发展方向。 附录 数字密码器程序清单 1、顶层模块(cipher_to

38、p.vhd) LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_arith.ALL; USE IEEE.std_logic_unsigned.ALL; USE WORK.cipher_example.ALL; ENTITY cipher_top IS PORT(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 : IN std_logic; wait_t : IN std_logic; ready : IN std_logic; setup : IN std_logic; open_t : IN std_log

39、ic; clk : IN std_logic; led_g,led_r,alert : OUT std_logic; a,b,c,d,e,f,g : OUT std_logic; sel : OUT std_logic_vector(2 DOWNTO 0); END cipher_top; ARCHITECTURE cipher_top_arch OF cipher_top IS COMPONENT keysync_model消抖模块 PORT(c1,c2,c3,c4: IN std_logic; a00,a10,a20,a30,a40,a50,a60,a70,a80,a90: IN std_

40、logic; clk: IN std_logic; c11,c22,c33,c44: OUT std_logic; a01,a11,a21,a31,a41,a51,a61,a71,a81,a91: OUT std_logic); END COMPONENT; COMPONENT enable_model使能电路模块 PORT(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9: IN std_logic; en: IN std_logic; - 16 - 济南大学毕业设计(论文) a00,a10,a20,a30,a40,a50,a60,a70,a80,a90: OUT std_logi

41、c); END COMPONENT; COMPONENT mux4_model密码预置模块 PORT(s0,s1,s2 : IN std_logic; e1,e2,e3,e4 : OUT std_logic); END COMPONENT; COMPONENT encoder_model -编码模块 PORT(a01,a11,a21,a31,a41,a51,a61,a71,a81,a91 : IN std_logic; reset,dus : IN std_logic; b1,b2,b3,b4 : OUT std_logic; data_in,di : OUT std_logic; in1,i

42、n2,in3,in4,in5,in6 : OUT std_logic_vector(3 DOWNTO 0); END COMPONENT; COMPONENT comparator_model比较模块 PORT(b1,b2,b3,b4: IN std_logic; e1,e2,e3,e4: IN std_logic; dep : OUT std_logic); END COMPONENT; COMPONENT counter_model计数模块 PORT(reset : IN std_logic; cnp : IN std_logic; s0,s1,s2 : OUT std_logic; fu

43、ll : OUT std_logic); END COMPONENT; COMPONENT decoder_model数码显示模块 PORT(data : IN std_logic_vector(3 DOWNTO 0); a,b,c,d,e,f,g: OUT std_logic); END COMPONENT; COMPONENT indicator_model指示模块 PORT(wait_l : IN std_logic; s_lg : IN std_logic; s_lr : IN std_logic; di,bjy : IN std_logic; clk_div1 : IN std_lo

44、gic; led_g,led_r,alert: OUT std_logic); END COMPONENT; - 17 - 济南大学毕业设计(论文) COMPONENT control_model控制模块 PORT(c11,c22,c33,c44 : IN std_logic; data_in : IN std_logic; dep,dsw : IN std_logic; full,notc : IN std_logic; clk : IN std_logic; en,dus,anc: OUT std_logic; cnp,reset : OUT std_logic; ds,ret : OUT

45、 std_logic; s_lr,s_lg,wait_l: OUT std_logic); END COMPONENT; COMPONENT clkdiv_model分频模块 PORT(clk : IN std_logic; clk_div1 : OUT std_logic; clk_div2 : OUT std_logic); END COMPONENT; COMPONENT keyscan_model PORT(clkscan,reset : IN std_logic; in1,in2,in3,in4, in5,in6,in7,in8 : IN std_logic_vector(3 DOWNTO 0); data : OUT std_logic_vector(3 DOWNTO 0); sel : OUT std_logic_vector(2 DOWNTO 0); END COMPONENT; COMPONENT wrong3_model

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号