EDA 课程设计报告 - 电子密码锁设计实验一、设计说明:本实验中说要求设计的电子密码锁密码为 4 位,由三大部分组成,每一部分又包含了若干子电路,将各电路组合起来,就构成了一个整体。1、矩阵键盘接口电路设计由于硬件电路没有提供该矩阵键盘,用开关代替该部分电路。2、密码锁的控制电路设计3、输出七段显示电路的设计4、密码锁功能说明:①、数据输入:每按一个数字键,就输入一个数值,并在显示器上的最右上方显示出该数字,并将先前已经输入的数据依序左移一个数字位置。②、数码清除:按下此键可以清除前面所有的输入值,清除成为“0000”。③ 、密码更 改 :按下此键时 将目 前的数字设定 成新 的密码。④ 、激 活 电锁:按下此键可将密码锁上锁。⑤ 、解 除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。二、硬件说明本设计所需的硬件主要有:矩阵键盘、七段译码器、发光二极管(用来模拟电子锁,红灯亮为加锁,绿灯亮为解 锁)、EPM7128LC84-6 适配器。注:实际使用的为 EDA 试验箱,没有矩阵键盘,没有七段译码器,有发光二极管,仅有红色,芯片为EPM7128LC84-15。三、设计内容程序包括六个逻辑元件,分别为:数字按键输入、控制功能按键输入、时 钟分频器、处理核心、输出处理、七段译码器。1、数字按键输入逻辑 - numinput说明:读取数字键 0~9。高电平表示按键未按下,低电平表示按键按下。按照0~9 顺序读取,只能输出1 位数字。输出 4 位二进制代码,“0000”~“1001”表示 0~9,用“1010”表示无输入。代码:library ieee;use ieee.std_logic_1164.all;entity numinput isport(numin:IN std_logic_vector(9 downto 0);numstate,clk:IN std_logic;numout:OUT std_logic_vector(3 downto 0));end numinput;architecture one of numinput issignal state:std_logic;signal mem:std_logic_vector(9 downto 0);beginprocess(clk)beginif clk'event and clk='1' thenif state/=numstate thenif mem/=numin thencase numin iswhen "1111111110" => numout<="0000";when "1111111101" => numout<="0001";when "1111111011" => numout<="0010";when "1111110111" => numout<="0011";when "1111101111" => numout<="0100";when "1111011111" => numout<="0101";when "1110111111" => numout<="0110";when "1101111111" => numout<="...