基于VHDL的数字密码器的设计(3)

2019-05-27 17:50

根据图2-2所示的模块划分图,下面介绍一下密码器的具体工作过程。

首先,密码器通过外接键盘输入数字密码,然后密码需要经过10线至4线编码器变成BCD码;接下来通过4位比较器与存储在系统中的预置密码进行比较,同时将输入的密码通过数码管扫描模块和数码管显示译码模块显示出来;最后将比较的结果DEP送到控制器模块中。

本次设计中的密码是串行输入的,每次分别与一个预置码比较。可见,6个十进制的密码分别有24个端口送入,因此需要使用一个数据选择器来进行选择。这里,数据选择器是一个4位的六选一数据选择器,它的两位选择信号是由一个模6的计数器来给出的,计数器的控制信号是由控制信号RESET和时钟信号CNP是由控制模块来提供的。外接键盘每送一个密码数字,计数器的计数值加1。如果计数器的数值计到6时,那么表示6个密码已经输入完毕。接下来计数器应向控制器发出反馈信号FULL,这表示控制器已经可以进入到启动状态。

计数器2用来记录输入密码错误次数,当密码输入错误时,密码器将发出警报,并提示用户还可以输入密码的次数。当密码输入错误的达到次数三次时,计数器2应向控制器反馈信号NOTC, 密码器将进入死锁状态, 并发出警报。这时只能通过内部按键SETUP使密码器回到初始状态。

2.2 数字密码器的顶层设计

密码器的顶层设计由各个子模块构成。其中各个模块是以元件的形式给出的,首先必须进行元件的说明,然后进行元件的例化调用就可以构成顶层模块。顶层设计的模块图如图2-3所示。

图2-3 顶层设计模块图

2.2.1 顶层模块的输入输出

由上图可以给出数字密码器的对外接口信号,即输入和输出信号。 1、 数字按键输入信号A0~A9,用来进行密码的输入操作; 2、 外部时钟信号CLK,用来作为内部操作时钟和驱动蜂鸣器; 3、 按键输入信号READY,用来设置密码器的准备操作状态; 4、 按键输入信号WAIT_T,用来建立密码器的等待状态; 5、 按键输入信号SETUP,用来恢复密码器的等待状态; 6、 按键输入信号OPEN_T, 用来设置密码器进入到启动状态; 7、 绿灯指示驱动信号LED_G,驱动绿灯显示; 8、 红灯指示驱动信号LED_R,驱动红灯显示; 9、 蜂鸣器驱动信号ALERT,驱动报警蜂鸣器; 10、数码管显示译码输出A,B,C,D,E,F,G。

2.2.2 模块描述

11

根据数字密码器的功能描述和模块划分,下面给出密码器输入电路和输出电路功能的具体描述。 1、给密码器上电后按下READY键,表示密码器准备就绪,可以接收外部输入的密码数字;这时用来指示密码器工作状态的指示灯和扬声器都处于不工作状态。

2、通过A0~A9按键输入6位数字密码后按下OPEN_T键:如果密码输入正确并且按键正确,这时密码器将启动开启装置,同时密码器的绿灯亮;如果输入的密码错误,扬声器将发出警告,同时还将提示密码器还可以输入的次数。密码器允许密码输入错误的最大次数为三次, 口令错误次数超过三次则进入死锁状态, 并发出警报。

3、密码器只接受前6位密码输入,并以按键音提示,多余位数的密码输入将不起作用。

4、密码器开启结束后,密码器将进入到下一次开启等待状态。这时,输入电路中需要设置一个WAIT_T按键,目的是使密码器重新进入到等待状态。

5、密码器出于死锁状态时,READY按键和 WAIT_T按键是不起任何作用的。在这种情况下,密码器必须由内部人员通过按键SETUP来对密码器进行重新设置,目的是使其重新回到等待状态。为了密码器的安全起见,按键需放在内部人员办公室或其他外部人员不能进入的地方。

6、如果发现输入的6位密码有错误,这时操作人员可以在按下OPEN_T按键之前按下READY键重新回到密码器准备就绪状态。因此,密码器需要含有一个输入数字密码的显示电路,这里采用6个7段LED对输入的密码进行动态显示。

2.2.3 VHDL设计

本模块设计的VHDL程序为cipher_top.vhd。在该程序中,其中密码器顶层设计的各个模块是以元件的形式给出的,必须进行元件的说明,然后才能进行元件的例化调用。另外,结构体的说明部分还定义了许多中间信号,它们的作用是用来在模块之间传递信息。这里,假设上述调用的元件存放在WORK库的程序包cipher_example中。

2.3 数字密码器的底层设计

前面描述了数字密码器的顶层设计和相应的VHDL程序,下面将介绍密码器系统中各个模块的具体实现和相应的VHDL程序。数字密码器划分为分频模块、消抖同步模块、使能电路模块、密码预置模块、编码模块、比较模块、计数器选择模块、数码管显示译码模块、指示电路模块、数码管扫描模块、误码模块和控制器模块12个部分,顶层设计中各个模块是作为元件来引用的,因此这里需要将各个模块设计成独立设计实体的具体形式,这样便可以在顶层设计来引用这些模块了。

2.3.1 分频模块

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所示。

12

CLK 30分频电路 CLK_DIV1 CLK_DIV1 10分频电路 CLK_DIV2 图2-5

3、VHDL设计

由图2-5可知,分频模块内部含有两个单元电路:30分频电路和10分频电路。首先需要进行30分频和10分频这两个单元电路的VHDL设计,这两个单元电路的设计可以采用计数的方法来完成。而对于分频模块的设计,可以通过对两个单元电路元件的例化调用来实现。其中30分频电路和10分频电路的VHDL程序分别为clk_div30.vhd,clk_div10.vhd;分频模块的VHDL程序为clkdiv_model.vhd。

2.3.2 消抖同步模块

1、消抖同步模块的输入、输出信号定义

图2-6 消抖同步模块图

消抖同步模块的模块图如图2-6所示,由图可以得到输入、输出信号定义: 1)输入信号

C1、C2、C3、C4:分别由WAIT_T、SETUP、READY、OPEN_T操作指令得到; AOO~A90:由使能模块提供;

CLK:由分频模块输出的CLK_DIV1(10Hz)来提供; 2)输出信号

C11、C22、C33、C44: 由WAIT_T、SETUP、READY、OPEN_T经过消抖后产生; A01~A91:有AOO~A90经过消抖后产生。 2、模块描述

在数字密码器中,由按键方式产生的数字密码A0~A9、READY、OPEN_T、WAIT_T、SETUP的产生时刻和持续长短是随机不定的,同时存在因开关簧片反弹而引起的电平抖动现象,因此必须添加消抖同步模块,目的是保证系统能捕捉到输入脉冲,同时保证每按一键只形成一个宽度为系统时钟周期的脉冲。

3、VHDL设计

[11]

在数字电路中,消抖同步电路的设计方案较多,本设计采用的是一种应用较为广泛的消抖同步

13

电路。如图2-7所示。因为采用与非门构成的触发器使用底电平触发,因此按键输入的数字或者操作指令要设计成低电平有效。

输入 & D Q D Q CP QCP Q& CLK 图2-7

根据图2-7可以看出消抖同步电路含有两个与非门、一个与门和两个D触发器的VHDL设计,然后构成消抖同步电路的VHDL设计,最后通过元件例化调用完成消抖同步模块的VHDL设计。其中,D触发器的VHDL程序为dff_1.vhd, 消抖同步电路的消抖同步模块的VHDL程序为keysync_model.vhd。

2.3.3 使能电路模块

1、使能电路模块的输入、输出信号定义

图2-8 使能电路模块图

使能电路模块的模块图如图2-8所示,模块的输入、输出信号定义如下:1)输入信号

A0~A9:由按键0~9提供; EN :由控制器模块提供。 2)输出信号

A00~A90:当其为低电平0时,表示对应的A0~A9有信号输入。该输出用于提供给消抖同步模块。2、模块描述 在数字密码器中,数字密码A0~A9的按键输入信号是通过控制器模块给出的使能信号制的:当使能信号有效(高电平)时,输入的信号A0~A9有效;否则输出为高电平。3、VHDL设计

使能电路模块的VHDL程序为enable_model.vhd。

2.3.4 密码预置输出模块

14

& 输出

所以首先必须进行程序为key_sync.vhd,EN来进行控

D触发器。VHDL 1、输入输出定义信号定义

图2-9密码预置输出模块图

密码预置输出模块的模块图如图2-9所示,模块的输入、输出信号定义如下: 1)输入信号

S0、S1、S2:由计数器选择模块提供。 2)输出信号

E1、E2、E3、E4:密码预置信号。 2、模块描述

该模块用来预置密码器的密码,用于与输入的数字密码进行比较操作。密码器的密码可以设置成任意位,这里设为6位,为“654321”。它的输入有三个,分别为s2、s1、s0,由计数器选择模块提供;输出有为4位的2进制密码。

3、VHDL设计

密码预置输出模块的VHDL程序为mux4_model.vhd。

2.3.5 编码模块

1、输入输出信号定义

图2-10 密码预置输出模块图

密码预置输出模块的模块图如图2-10所示,模块的输入、输出定义如下: 1)输入信号

A01~A91:由消抖同步模块提供,对应于数字按键0~9; RESET :由控制器模块提供;

DUS :由控制器模块提供,用于检测是否有按键输入; 2)输出信号

B1~B4:由按键信号转换成4位BCD码,用来提供给比较模块;

DATA_IN:当其为高电平是,表示有密码输入,用来提供给控制器模块; DI :按键音信号,用来提供给指示模块,以驱动扬声器。

IN1~IN6:用于按顺序存储密码,其中IN1用于存储第一位密码,IN6用于存储第六位密码。该信号提供给数码管扫描信号,用于动态显示输入的密码。

15


基于VHDL的数字密码器的设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:历年自考中国法律思想史试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: