2、模块描述
编码模块为子模块中的第二大模块,该模块用于将输入的按键信号转换成4位BCD码B1~B4送入到比较器中,这一步将通过10线至4线编码器来完成。除此以外,该模块还将输入的按键信号通过移位寄存器按照按键的顺序存储到6个4位BCD码输出信号in1~in6中,用于提供给数码管扫描模块的输入信号。同时还将输出di信号提供给指示电路模块用于产生按键音。对于编码器的输出来说,B4是MSB,B1是LSB。
3、VHDL设计
编码模块的VHDL程序为encoder_model.vhd。
2.3.6 比较模块
1、输入输出信号定义
图2-11 比较模块图
比较模块的模块图如图2-11所示,模块的输入、输出信号定义如下: 1)输入信号
B1、B2、B3、B4:由编码模块提供,用于与密码预置模块输出的预置密码信号进行比较; E1、E2、E3、E4:密码预置信号,由密码预置模块提供。 2)输出信号
DEP :该信号用于反馈给控制器模块,用于说明比较的结果。 2、模块描述
在数字密码器中,比较模块的主要功能是对编码模块的输出B1~B4这4位数据和密码预置输出模块的输出E1~E4这4位数据进行比较,然后将比较的结果送入控制器模块的DEP端口上。比较器的具体工作原理是:当比较结果相等是,DEP的输出为1;当比较结果不相等时,DEP的输出为0。
3、VHDL设计
比较模块的VHDL程序为comparator_model.vhd。
2.3.7 计数器选择模块
1、输入输出信号定义
计数器选择模块的模块图如图2-12所示,模块的输入、输出信号定义如下: 1)输入信号
RESET:计数器的复位信号。
CNP :计数器的输入脉冲信号,上升沿有效。 2)输出信号
S0、S1、S2:提供给密码预置输出模块的地址选择信号。
FULL: 提供给密码预置输出模块,用于表示6位密码是否输入完毕。
16
图2-12 计数器选择模块图
2、模块描述
在密码器中,计数器选择模块的功能是用来给出密码预置输出模块的地址选择信号S0、S1和S2,它的控制信号RESET和时钟信号CNP是由控制器模块来提供的;另外还有一个输出信号FULL,它表示6个密码已经输入完毕,控制器可以进入到启动状态。
3、VHDL设计
计数器选择模块的VHDL程序为counter_model.vhd。
2.3.8 数码管显示译码模块
1、输入输出信号定义
图2-13 数码管显示译码模块图
数码管显示译码模块的模块图如图2-13所示,模块的输入、输出信号定义如下: 1)输入信号
DATA :4位的BCD码输入信号,由数码管扫描模块提供。 2)输出信号
A、B、C、D、E、F、G:分别对应7段LED的7个输入端口。 2、模块描述
在密码器中,显示设备由8个7段LED组成。前6个LED将显示输入的6个密码,后2个LED在用来在误码状态下显示还可以输入的密码次数。由于采用动态扫描显示,只须输出一个LED所须的驱动信号即可。这里采用共阴极LED,所以输出A~G高电平有效。
3、VHDL设计
数码管显示译码模块的VHDL程序为decoder_model.vhd。
2.3.9 数码管扫描模块
1、输入输出信号定义
数码管扫描模块的模块图如图2-14所示,模块的输入、输出信号定义如下: 1)输入信号
CLKSCAN:数码管扫描频率,来源于系统时钟输入CLK。 RESET:数码管复位信号,由控制器模块提供。
IN1~IN6:数字密码显示输入信号,由编码模块提供。
IN7、IN8:剩余密码输入次数显示输入信号,由密码错误次数计数模块提供。 2)输出信号
DATA:用于提供给数码管显示译码模块的数据输入。
17
SEL: 3位的2进制数码管选择信号,当其为111 ~010时,选择前6位数码管,用于显示输入的密码数字;当其为001~000时,选择后2位数码管,用于显示剩余密码输入次数。
图2-14 数码管扫描模块图
2、模块描述
在密码器中,输入的数字密码需显示在LED上,由于输入由6位,所以至少应采用6个LED进行显示。若采用传统静态显示的方法,不仅需要消耗更大的芯片资源和管脚资源,而且还会在电路中会产生一个比较大的电流,很容易造成电路烧坏。通过动态扫描电路可以解决这一问题,通过产生一个扫描信号SEL(000) - SEL(111) 来控制8 个七段显示器,依次点亮8个七段显示器,也就是每次只点亮一个七段显示器。只要扫描信号SEL(000) - SEL(111) 的频率超过人的眼睛视觉暂留频率24Hz 以上,就可以达到尽管每次点亮单个七段显示器,却能具有8 个同时显示的视觉效果,而且显示也不致闪烁抖动。这里数码管扫描频率采用密码器时钟输入CLK,为300Hz。
3、VHDL设计
数码管扫描模块的VHDL程序为keyscan_model.vhd。
2.3.10 指示电路模块
1、输入输出信号定义
图2-15 指示电路模块图
指示电路模块的模块图如图2-15所示,模块的输入、输出信号定义如下: 1)输入信号
WAIT_L、S_LG、S_LR:由控制器模块提供的红绿灯驱动信号。 DI: 由编码模块提供的按键音信号;
BJY:由密码错误次数计数模块的警告音信号。 CLK_DIV1:用于报警状态下的扬声器驱动信号。 2)输出信号
LED_G:绿灯驱动信号,高电平有效。 LED_R:红灯驱动信号,高电平有效。 ALERT: 扬声器驱动信号,高电平有效。 2、模块描述
18
在密码器中,指示电路模块的功能是用来产生红灯指示LED_R、绿灯指示LED_G和蜂鸣装置ALERT。根据图2-2的模块划分图可以看出,绿灯指示LED_G是由控制器模块提供的置位信号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.vhd。
2.3.11 误码模块
1、输入输出信号定义
图2-16 误码模块图
误码模块的模块图如图2-16所示,模块的输入、输出信号定义如下: 1)输入信号
ANC:由控制器模块来提供,表示密码输入错误。
DS :由控制器模块来提供,作为延时和报警的脉冲信号。
CLK:计数脉冲输入,当其计为4时,延时结束,这是如果密码次数还不到3次,则可以再次输入密码。
RET:复位信号,有控制器提供。 2)输出信号
IN7、IN8:用于显示还可以输入的密码次数。
NOTC :当密码错误次数达到3次时有效,为1,它将反馈给控制器模块。 DSW :表示延时结束,这是密码器可以由警告状态进入到密码输入状态。 BJY :警告状态下的红灯和蜂鸣器驱动信号。 2、模块描述
该模块用于对密码输入错误次数进行计数,当密码输入错误次数不达3次时,密码器将进入到警告状态,这时红灯和蜂鸣器会有相应的指示,大约持续4秒后,可以继续输入密码。当密码器的密码错误次数达到3次时,密码器将进入到死锁状态。
3、VHDL设计
根据前面对该模块的描述,可以给出其VHDL程序,为wrong3_model.vhd。
2.3.12 控制器模块
1、输入输出信号定义
控制器模块的模块图如图2-17所示,模块的输入、输出信号定义如下:
19
图2-17 控制器模块图
1)输入信号
C11、C22、C33、C44:由消抖模块提供,分别对应键WAIT_T、SETUP、READY、OPEN_T。 DATA_IN:由编码模块提供,表示有密码输入。
DEP :由比较模块提供,当它为1时,表示输入的数字与预置密码相等。
DSW :由密码错误次数计数器提供,当它为1时,表示定时(4S)完,可以进入到下一个状态。 FULL :由计数选择模块提供,当它为1时,表示已经输入了6位的正确密码,可以进入到启动状态。
NOTC :由密码错误次数计数模块提供,当它为1时,表示密码错误次数已经达到3次。这时将进入到报警状态。
CLK :输入时钟,有分频模块提供,与消抖模块的输入时钟同步。 2)输出信号
EN :输入到使能模块的使能信号。 DUS :输入到编码模块的读数脉冲信号。
ANC :输入到密码错误次数计数模块的密码错误次数计数脉冲。 CNP :输入到计数器选择模块的输入密码位数计数脉冲。
RESET:输入到编码模块、计数器选择模块和数码管扫描模块的复位信号。 DS :输入到密码错误次数计数模块的定时信号。
RET :输入到密码错误次数计数模块的密码错误次数复位信号。
WAIT_L、S_LG、S_LR:输入到指示电路模块的红绿灯和蜂鸣器驱动信号。 2、模块描述
控制器模块为数字密码器的核心部分,它在密码器系统中占有重要的地位,要编好这一部分的程序,必须先对该模块的工作原理有清晰的认识。
控制器模块的工作原理如下所示: 1)建立等待状态
建立等待状态是指密码器处于上电、启动或者报警后的状态,这是密码器并没有进入到正常的等待状态,因此密码器不会接受除WAIT_T信号外的任何输入信号。当操作人员按下WAIT_T键后,密码器将会进入到等待状态,这时用来指示密码器工作情况的指示灯和蜂鸣器都处于不工作状态,同时它还将密码错误次数计数器复位为0。
2)准备就绪状态
准备就绪状态是指密码器在被按下WAIT_T键后处于的一种状态。这时如果操作人员按下READY键,密码器将会进入到第3种状态,等待密码数字的输入。在这种情况下,RESET将被置1,DS信号将被置0。
3)密码输入状态
密码输入状态是控制器模块的第3个状态,这是密码器将进入到密码输入的操作状态。当处于这种状态时,控制器模块的EN输出信号将变为有效,它意味着此时允许数字密码A0~A9的按键输入。在这
20