数字逻辑与系统实践教程 37 实验四 电子密码锁的设计 一、实验任务及要求 设计一个通用电子密码锁,其具体功能要求如下: (1)数码输入:每按下一个数字健,就输入一个数值,并在显示器上的最右方显示出该数值,同时将先前输入的数据依序左移一个数字位置。 (2)数码清除:按下此键可清除前面所有的输入值,清除成为“0000”。 (3)密码更改:按下此键时会将目前的数字设定成新的密码。 (4)激活电锁:按下此键可将密码锁上锁。 (5)解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。 二、设计原理 1、接口设计 根据系统功能,具体输入输出接口设计如图 3-7-1 所示。 LockKEYIN[11..0]ENLOCKCLKLED_ DATA[15..0]RST 图 3-7-1 电子密码锁输入输出接口图 输入信号:CLK 是 1KHz 的时钟信号,KEYIN[11..0]是模拟键盘输入信号,RST 是清零输入信号。输出信号:ENLOCK 是上锁指示灯(点亮代表已上锁)。LED_DATA[15..0]是密码显示输出,直接接在七段数码管上显示。 2、系统构成 通用电子密码锁一般由三个部分组成:数字密码输入部分、密码锁控制部分和密码锁显示部分。 数字密码输入部分一般用键盘加防抖动电路和键盘译码电路组成。这里结合 SE-3 实验箱,采用十二路开关来模拟 0~9 十个数字和加锁按钮、解锁按钮。输入部分由输入译编码器组成,用四位信号来模拟十二个数字信号。 密码锁控制部分包括按键数据的缓冲存储电路,密码的清除、变更、存储、激活电锁电路,密码核对,解锁电路等。该部分由加/解锁和密码输入两个进程组成。 密码锁显示模块由七段数码管译码器组成,将要显示的BCD 码转换为数码管的七段显示码。 系统总体结构框图如图 3-7-2 所示。 数字逻辑与系统实践教程 38 按键译码电路七段数码管译码器数值比较电路 按键数据缓冲器开/关门锁电路显示电路七段数码管密码锁输入电路密码锁控制电路 图3-7-2 电子密码器结构图 3、VHDL 参考程序如下: (1)密码输入电路:KEYBOARD.VHD --KEYBOARD.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY KEYBOARD IS PORT (CLK: IN STD_LOGIC; KEYIN: IN STD_LOGIC_VECTOR (11 DOWNTO 0); DATA_N: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); DATA_F: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); FLAG_N: OUT STD_LOGIC ); END ENTITY KEYBOA...