基于FPGA的电子密码锁设计
和各个功能键,LED显示为开发板上数码管显示。
3.5 各功能模块描述
电子密码锁主要由四个部分组成:数字密码输入电路、密码锁控制电路、密码锁显示电路和报警模块。也就是说,设计分为四个大的功能模块。图3.2为数字电子密码锁系统总体框图。
电子密码锁输入模块键盘扫描电路扫描信号时序产生电路键盘按键输入按键消抖电路键盘译码电路密码锁控制电路寄存器清楚信号发生电路报警器电路开/关门锁电路数值比较电路显示电路BCD七段译码电路按键数据缓存器七段数码管 图3.2 数字电子密码功能模块图
(1) 密码锁输入电路包括时序产生电路、键盘扫描电路、键盘弹跳消除电路、键盘译码电路等几个小的功能电路。
模块的功能是:将用户通过键盘输入的数字密码,确认密码是否输入,产生电路中使用的三种不同频率的工作脉冲波形,即系统时钟脉冲、弹跳消除取样信号和键盘扫描信号;为了加强按键按下的准确性加了去抖模块。
作为电子密码锁的输入电路,数字密码输入电路可采用一个4×4的通用开发板上
- 12 -
基于FPGA的电子密码锁设计
的键盘作为本设计的输入设备。开发板键盘具有低成本、可靠性高、构成电路简单、技术成熟和应用广泛等特点,因此将其应用到通用电子密码锁中还是比较适宜的。
(2) 密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、变更、存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),解锁电路(开/关门锁电路)、报警电路等几个小的功能电路。
模块功能:用于密码的更改,密码的清除,以及对密码锁的工作状态更改,对输入密码次数的计数功能,还有就是更智能化,更符合人们的思维,按键的时候都是习惯看输入数字的移位情况。
(3)密码显示电路主要将显示数据的BCD码转换成相对应的编码。如,若选用七段数码管显示电路,主要将待显示数据的BCD码转换成数码器的七段显示驱动编码。
数字电子密码锁的显示信息电路可采用LED数码管显示和液晶屏幕显示两种。液晶显示具有高速显示、高可靠性、易于扩展和升级等优点,但是普通液晶显示屏存在亮度低、对复杂环境的适应能力差等缺点,在低亮度的环境下还需要加入其它辅助的照明设备,驱动电路设计相对复杂,因此本设计的显示电路使用通用的LED数码管。
通过上面所描述的系统结构可知,通用的电子密码锁主要由三个部分组成:数字密码输入电路、密码锁控制电路和密码锁显示电路。
从图3.2系统的总体走向图可知:通过时序产生键盘扫描信号,由键盘输入密码或者功能按键,当然在这过程中要经过按键去抖,最后将将所输入的键盘值译码得到具体的数字或者功能键;将输入值输入键盘数据存储器,在这里面可以将键盘值存储或者清除,再经过比较电路,比较输入值与原来存储的是否一致,如果一致则开启锁,如果不一致则报警(在报警后可以通过输入万能密码或者断电复位等可以解决);在经过存储电路时,同时将所输入的值通过LED显示出来,显示将通过BCD译码电路,将所获取的值显示在LED数码管上。
3.6 系统流程
系统流程图如图4.1:(不能光有一个图,必须配有对图的文字说明,把系统的流程说清楚)
- 13 -
基于FPGA的电子密码锁设计
开始系统复位,初始化什么都不是不与相应的功能键值相等报警键盘输入判断为密码输入还是功能输入是密码输入否密码输入功能输入输入是功能输入判断密码是否正确显示输入判断是什么功能是与相应的功能键值相等解锁执行功能
图3.3 系统流程图
- 14 -
基于FPGA的电子密码锁设计
4 系统详细设计
4.1 输入模块
4.1.1 时序产生电路
本时序产生电路中使用了三种不同频率的工作脉冲波形:系统时钟脉冲(它是系统内部所有时钟脉冲的源头,且其频率最高)、弹跳消除取样信号、键盘扫描信号。
当一个系统中需使用多种操作频率的脉冲波形时,最方便的方法之一就是利用一计数器来产生各种需要的频率。也就是先建立一个N位计数器,N的大小根据电路的需求决定,N的值越大,电路可以分频的次数就越多,这样就可以获得更大的频率变化,以便提供多种不同频率的时钟信号。若输入时钟为CLK,N位计数器的输出为Q[N-1..0],则Q(0)为CLK的2分频脉冲信号,Q(1)为CLK的4分频脉冲信号,Q(2)为CLK的8分频脉冲信号……Q(N-1)为CLK的2N分频脉冲信号;Q(5 DOWNTO 4)取得的是一个脉冲波形序列,其值依00-01-10-11-00-01周期性变化,其变化频率为CLK的32分频。我们利用以上规律即可得到各种我们所需要频率的信号或信号序列。
CLK_1K:时钟信号
SIGNAL K_SRCLK: STD_LOGIC ; --键盘输入采样时钟 SIGNAL K_POS: STD_LOGIC_VECTOR(1 DOWNTO 0);
--按键位置信号
SIGNAL KSCAN:STD_LOGIC_VECTOR(3 DOWNTO 0); --键盘扫描信号 KEY IN:STD_LOGIC_VECTOR(2 DOWNTO 0);--按键输入信号 KSRCLK:STD_LOGIC;--键盘输入采样时钟
4.1.2 按键消抖电路
由于设计采用的矩阵式键盘是机械开关结构,因此在开关切换的瞬间会在接触点出现信号来回弹跳的现象,对于电子密码锁这种灵敏度较高的电路这种弹跳将很可能会造成误动作输入,从而影响到密码锁操作的正确性。
弹跳现象产生的原因是,虽然每次只是按下按键一次然后放掉,然而实际产生的按键信号却不知跳动一次,经过取样信号的检查后,将会造成误判断,以为键盘按了两次。
- 15 -
基于FPGA的电子密码锁设计
图4.2 弹跳现象产生错误的抽样结果
如果调整抽样频率,弹跳现象就可以获得改善。
图4.3 调整抽样频率后得到的抽样结果
因此必须加上弹跳消除电路,避免误操作信号的发生。特别要注意的是,弹跳消除电路所使用的脉冲信号的频率必须比其他电路使用的脉冲信号的频率更高;通常将扫描电路的工作频率定在100KHz左右,而将弹跳消除电路的工作频率定在200KHZ左右,其工作频率通常是前者的2倍或者更高。
debounce: block is begin
u1:debouncing port map (d_in=>key_in(0),d_out=>c(0), clk=>c_debounce);
u2:debouncing port map (d_in=>key_in(1),d_out=>c(1), clk=>c_debounce);
u3:debouncing port map (d_in=>key_in(2),d_out=>c(2), clk=>c_debounce); end block debounce;
按键消抖部分是由两个小的模块集成为一个去抖电路的,所以在此分开介绍此两个模块。
Dcfq模块:dcfq 模块的主要程序 if clrn='0' and prn='1' then
- 16 -
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库毕业设计论文 - 基于FPGA的电子密码锁设计(4)在线全文阅读。
相关推荐: