本实验文档详细介绍了电子密码锁的设计过程,包括系统需求分析、电路设计、编程实现以及安全性能测试等环节。通过该设计项目,学生可以深入了解现代电子产品的开发流程和关键技术。
实验四:电子密码锁的设计
一、实验任务及要求:
设计一个通用的电子密码锁,其功能需求如下:
1. 数码输入:每按下一个数字键,就输入一个数值,并在显示器上的最右方显示出该数值,同时将先前输入的数据依序左移一位。
2. 数码清除:按下此键可清除前面所有的输入值,显示为0000。
3. 密码更改:按下此键时会将当前的数字设定成新的密码。
4. 激活电锁:按下此键可以将密码锁上锁。
5. 解除电锁:按下此键检查输入的密码是否正确,如果正确即开锁。
二、设计原理:
1. 接口设计
根据系统功能要求,具体输入输出接口如图所示。 输入信号包括时钟CLK(频率为1KHz)、键盘输入KEYIN[11..0]和复位RST; 输出信号则有上锁指示灯ENLOCK以及密码显示LED_DATA[15..0]。
2. 系统构成
通用电子密码锁通常由三个部分组成:数字密码输入、密码控制及显示模块。 数字输入部分包含键盘防抖动电路和译码器,使用十二路开关模拟十个数字键加解锁按钮; 控制部分包括数据缓冲存储单元、清除变更功能等逻辑设计; 显示模块负责将BCD编码转换为七段数码管的信号。
3. VHDL参考程序
(1)密码输入电路:KEYBOARD.VHD
```vhdl
-- 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 keyboard;
ARCHITECTURE ART OF keyboard IS
SIGNAL N, F:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL FN:STD_LOGIC;
BEGIN
DATA_N <= N; DATA_F<=F; FLAG_N<=FN;
PROCESS(CLK,KEYIN) BEGIN
IF CLKEVENT AND CLK=1THEN
CASE KEYIN IS
WHEN 10000000000 => N<=000; -- 代表数字键“*”
...
END CASE;
END IF;
...
END PROCESS;
FN <= NOT(N(3) AND N(2) AND N(1) AND N(0));
END ARCHITECTURE ART;
```
(2)密码锁控制电路:CTRL.VHD
```vhdl
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
...
ENTITY ctrl IS
PORT(
DATA_N : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
...
END ENTITY ctrl;
ARCHITECTURE ART OF ctrl IS
...
BEGIN
...
END ARCHITECTURE ART;
```