首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一种多功能电子密码锁的VHDL设计(2)

一种多功能电子密码锁的VHDL设计(2)

硬件电路设计

3.1输入电路

本设计采用的是4×3矩阵式键盘,如图1所示,它是由4根I/O线作为行线,3根I/O线作为列线,在行列线的每一个交叉点上都设置一个按键,一共有12个按键,分别代表数字0~9、确认键和设置键,如图1所示。用户如需设置密码位数,可以长按设置键达到3s,听到提示音后再输入密码位数(本设计暂时只支持4、6、8位);如需设置新密码,可以短按设置键,提示音后再输入新的密码即可。输入电路应具备矩阵键盘扫描功能、键盘消抖功能以及译码等功能。其中,键盘扫描采用是行扫描方式,4根I/O线KEYR3~KEYR0为行扫描信号,其中KEYR3对应第一行,KEYR2对应第二行,依此类推。



很显然,扫描信号的变化顺序为:0111、1011、1101、1110,周而复始。在扫描的过程中,当某键被按下时,从KEYC2~KEYC0中读出的相应列信号为“0”,再将此时的4位行信号和3位列信号值送至键盘译码电路进行译码,即可得出准确的按键值。相反,若从KEYC2~KEYC0读出的值全为“1”,则表示没有键被按下,即不做任何操作。如表1所示。



在键盘扫描过程中,扫描信号在不断变化,以判断按键的按下和抬起。快速变化的扫描信号不仅使增加了系统功耗,而且还会对其他敏感电路造成干扰。因此必须进行以下改进:将扫描模式改为键按下触发扫描方式,即当某键被按下后,才触发键盘扫描电路产生扫描时序,键被放开后,停止对键盘的扫描,使电路处于相对静止状态,以减少干扰信号。

另外,在按键按下时刻与开始扫描时刻之间加入一段较小的延时,延时结束后才允许电路开始扫描工作,可以最大限度地避免因键盘抖动带来的错误输入。

主要VHDL代码描述如下:



3.2控制电路

控制电路是整个系统的核心电路,能根据用户输入的密码位数进行子电路的选择。由于系统允许用户输入4位、6位或8位密码,因此子电路有三个,由三选一选择器决定其中哪个电路为用户服务,见图2。



图2中,en是三选一选择器的工作使能端,它由输入电路的有效重置信号启动。当用户按下矩阵键盘上的重置按键长达3s后,输入电路将产生en信号为“1”,从而使选择器Mux31开始工作。如用户要设置为6位密码,则在提示音后按下键盘上的“6”按键,其按键信号会传递给X6,由选择器决定后续控制电路为kong6.

主要VHDL代码描述如下:

继承事业,薪火相传
返回列表