1、1 EDA 技术及应用实践课程设计报告技术及应用实践课程设计报告 目录 1电子密码锁整体设计.3 1.1 设计要求.3 1.2 设计思路.3 1.2.1 输入模块.3 1.2.2 控制模块.3 1.3 设计结构总图.4 1.4 整体设计的仿真结果.5 2、各个功能模块的设计6 2.1 按键输入模块.6 2.1.1 按键输入与对应的编码输出之间的关系.6 2.1.2 输入模块程序.7 2.1.3 输入模块仿真结果.8 2.1.4生成元件8 2.2系统控制模块9 2.2.1控制模块程序10 2.2.2控制模块仿真结果13 2.2.3生成元件13 3、 下载与硬件测试.14 4、 课程设计感想.14
2、 5、 参考文献.15 2 电子密码锁设计电子密码锁设计 随着人们生活水平的提高, 如何实现家庭防盗这一问题也变的尤 其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜, 电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用 户的青睐。 本次课程设计采用 VHDL 语言,利用 Maxplus 软件完成相应的电 子密码锁功能设计。 1、电子密码锁整体设计、电子密码锁整体设计 1.11.1 设计要求:设计要求: 设计一个电子密码锁,在锁开的状态下输入密码,密码共 4位, 用数据开关 K1K10 分别代表数字 1、2、9、0,输入的密码用 数码管显示,最后输入的密码显示在最右边的数码
3、管上, 即每输入一 位数,密码在数码管上的显示左移一位。可删除输入的数字,删除的 是最后输入的数字,每删除一位,密码在数码管的显示右移一位,并 在左边空出的位上补充 “0” 。 用一位输出电平的状态代表锁的开闭状 态。为保证密码锁主人能打开密码锁,设置一个万能密码,在主人忘 记密码时使用。 1.2 设计思路:设计思路: 总的来说,设计成 2 个模块,即输入模块,控制模块,最后显示 管静态显示。 1.2.1 输入模块:输入模块: 在输入模块,我是用时钟脉冲 clk 来控制什么时候输入一位密码, 即每来一个上升沿, 输入一个数, 且输入的数只在上升沿到来时有效, 3 在其他时候视为无效。如果 cl
4、k 信号为系统设置的,那么很难做到自 己输入密码的频率能与 clk 信号同步,因此本设计决定将 clk 信号设 为手动,即输入好一位密码后,让 clk 信号由 0 到 1,则该密码输入 成功。 1.2.2 控制模块:控制模块: 在密码控制模块中,主要实现以下功能: 每输入一位数,数码管左移一位,设置删除信号 back,每按一次, 删除最后输入的数字,密码在数码管显示右移一位,左边空处0。 设置密码确认信号 set,在四位密码输入完毕后,按下 set,则密 码被送到寄存器锁存,比较器模块得到数据 A,同时密码显示电路清 零。 设置密码锁状态显示信号 lock。Lock=0 表示锁未开,lock=
5、1表示 锁开, 设置关锁信号 close, 当密码送到寄存器模块锁存后, 按下 close, 则 lock=0。 设置密码检验信号 compare , 在 lock=0下从数据开关输入四位开 锁数据,按下 compare,则开锁数码送寄存器锁存,数据比较模块得 到数据 B,若 A=B,则触发器被置”1”。 1.3 设计结构总图设计结构总图: 4 图 1(G1 模块表示输入模块,G2 表示控制模块) 1.4 整体设计的整体设计的仿真结果如下图仿真结果如下图 5 2、各个功能模块的设计、各个功能模块的设计 2.1 按键输入模块:按键输入模块: 2.1.12.1.1 按键输入与对应的编码输出之间的关
6、系按键输入与对应的编码输出之间的关系如表 2-1 所示 表 2-1 按键编码 按键输入 编码输出 对应的数 字 0000000001 0001 1 0000000010 0010 2 0000000100 0011 3 0000001000 0100 4 0000010000 0101 5 0000100000 0110 6 0001000000 0111 7 6 0010000000 1000 8 0100000000 1001 9 1000000000 0000 0 2.1.2 输入模块程序输入模块程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity g1 is port( data:in std_logic_vector(9 downto 0);clk:in std_logic; dout:out std_logic_vector(3 downto 0); end g1; architecture at