基于vhdl的数字密码锁设计说明书内容摘要:

号 密码输入值的比较主要有两部分 ,密码位数和内容 ,任何一个条件不满足 ,都不能打开锁。 若锁内密码为 “10010101” , K1 和 K0 置低电平 ,分别表示输入 “1” 和 “0”。 输入密码前先进行复位操作 ,再按着从密码最低位到最高位的顺序依次正确输入 1 01 0 1 0 0 1。 若采用共阴极 L ED 接法 ,当输入第 0 位 “1” 后 , 17 八个二极管中相对应的二极管点亮 (此时二极管指示灯 lamp =“10000000” ,输入密码信号 shif t =“10000000” ) ,接着输入第 1 位 “0”(此时 lamp =“11000000” ,shif t =“01000000” ) …… 依照顺序 ,将 8 位二进制密码全部正确输入完毕后 (此时amp =“11111111” ,shif t =“10010101” ) ,经检验 ,输入的密码 shif t 等于锁内预先设置的密码 lock ,密码锁开启信号 L T 置高电平 ,锁开启。 同时 ,密码修改控制信号LA 置高电平。 若在输入密码的过程中 ,8 位二进制密码出现一位或多位输入错误 ,那么锁不能开启 ,同时 Alm置高电平 ,指示灯 L F 亮 ,发出报警信号 ,通知管理员。 直到按下复位开关 ,报警才停止。 此时 ,数字锁又自动进入等待下一次开锁的状态。 密码锁输入电路主要程序 : KEY_ DECODER: BLOCK SIGNALZ: STD_ LOGIC_ VECTOR( 4 DOWNTO 0) --按键位置 BEGIN PROCESS( CLK) BEGIN Z<= C_ KEYBOARD & C; IF CLK' EVENT AND CLK=' 1' THEN CASE Z IS WHEN" 11101"=> N<=" 0000"; -- 0 WHEN" 00011"=> N<=" 0001"; -- 1 WHEN" 00101"=> N<=" 0010"; -- 2 WHEN" 00110"=> N<=" 0011"; -- 3 WHEN" 01011"=> N<=" 0100"; -- 4 WHEN" 01101"=> N<=" 0101"; -- 5 WHEN" 01110"=> N<=" 0110"; -- 6 WHEN" 10011"=> N<=" 0111"; -- 7 WHEN" 10101"=> N<=" 1000"; -- 8 WHEN" 10110"=> N<=" 1001"; -- 9 WHEN OTHERS=> N<=" 1111"; 18 END CASE; END IF; IF CLK' EVENT AND CLK=' 1' THEN CASE Z IS WHEN" 11011"=> F<=" 0100" ;-- * _ LOCK WHEN" 11110"=> F<=" 0001" ;--#_ UNLOCK WHEN OTHERS=> F<=" 1000"; END CASE; END IF; END PROCESS; 这段程序的作用是通过按键产生的信号进行译码,判断按键是数字还是上锁、解锁控制信号。 (2)修改密码 为防止非管理员任意进行密码修改 ,必须在正确输入密码后 ,才能重新设置密码。 输入正确密码后 ,锁打开 ,同时 ,密码修改控制信号 LA 置高电平 ,就可直接进行修改密码的操作。 修改密码实质就是用输入的新密码去取代原来的旧密码。 存储新密码时 ,输入一位密码 ,密码位数加 1。 若采用共阴极 L ED 接法 ,与输出引脚 lamp 相接的发光二极管由亮变暗。 当输入 8 位密码后 ,8 只发光二极管全变暗。 此时给 CL K 一个低电平 ,新密码产生。 密码锁显示模块 密码锁显示电路: 19 图 密码锁显示电路原件例化 模块外部信号端口 DATA- BCD:密码信号输入端口 BLOCK:密码锁状态信号显示灯 20 4 系统仿真 当各个模块分别编译成功后 , 则创建一个个元件符号。 再用图形编辑器将各元件模块组装 起来 , 这就是本设计中最顶层的图形设计文件。 顶层图形设计文件 lock. gdf 如图 41 所示 , 这个结构框图说明了整个系统的外部输入和输出情况。 为了获得与目标器件对应的、 精确的时序仿真文件 , 在对文件编译前必须选定最后实现本设计项目的目标器件 , 在 Max + plus Ⅱ 环境中我们选 Altera 公司的 FPGA , 然后选择用于编程的目标芯片 : 选择菜单 “Assign”→ “Device” , 窗口中的 Device Family 是器件序列栏 , 先 在 此 栏 中 选 择 ACEX1 K。 为 了 选 择 EP1 K30 TC14423 器件 , 应将此栏下方标有 “Showonly Fastest Speed Grades” 的勾消去 , 以便显示出所有速度级别的器件。 完成器件选择后 , 按 O K,就可以进行编译了。 图 顶层图形设计文件 编译成功后进行仿真。 首先建立波形文件。 波形文件 lock. scf 建好并存盘后 ,选择菜单 “Max +plusⅡ ”→ “simulator” , 启动仿真操作 , 结束后观察仿真波形。 本设计中 , 仿真波形如图 42~图 44 所示。 当给初始密码输入信号 LC 一个低电平时 , 就将程序预先设定的 密码 ( “10010101” )装入 lock 中 , lock 的值变为 95。 按下 CLR 后 , 系统复位 , 处于输入密码状态。 输入的开锁密码串行顺序装入 shif t 中 , 并用 lamp 显示输入密码的位数。 密码输入完毕后 , 比较输入的密码 shif t 是否等于预先设定的密码 lock, 若相等 , 锁开启。 在图 42 中可以看到 , shif t 等于 lock ( “95” ) , 8 位密码输入正确 , 开锁指示灯亮 , 可以开锁。 由图 21 43 可以看到 , 输入密码 shif t( “AA” )不等于设定密码 lock ( “95” ) , 报警指示灯亮 , Alm变为高电平 , 输出报警信号。 由图 44 可以看出 , 当给 load 一个低电平后 , 就可以进行修改密码的操作了。 将 8 位新密码 ( “55” ) 输入完 , 新密码就自动装入 load 中 , load 值变成 “55”, 密码修改完毕。 图 输入正确密码波形 图 输入错误密码波形 22 图 修改密码波形 仿真结束后 , 就可以将设计文件编程下载到芯片中去。 连接硬件系统后 ,选择 “Max + plus Ⅱ ”→“programmer” 菜单 , 调出编程器 (programmer ) 窗口。 一切就绪后 , 按下编程器窗口中的 “program”按 钮 , 设 计 的 内 容 就 下 载 到 FPGA 芯 片 EP1 K30 TC14423 中去了。 经实际电路测试验证 , 达到了设计的要求。 23 5 结束语 本文设计的基于 V HDL 语言的串行电子密码锁系统 , 硬件电路简单 , 微功耗 , 同时也提高了系统的可靠性和精度。 锁的密码是可调的 , 且设置方便。 锁内设置的密码值可以选取 00 至 FF 中任一个 , 共计 28 种。 本设计占用芯片资源少 , 可在此基础上变二进制输入为十进制输入 , 或外加 L ED 七段显示等一些外围电路 , 以设计更大的系统。 在 FPGA 中 , 不同电路系统的设计往往采用自顶向下的设计方法 , 亦即将一个大的系统分解成单元电路。 在每个单元电路的设计完成后 , 采用专门的仿真工具进行功能仿真是很有必要的 , 可节省不少设计时间。 对于这一整个电子密码锁系统 , 设计的程序已经基本实现了预期的所有功能 , 充分利用了 EDA 设计中的优点 , 将各模块以文件顶层设计的方式让所有子程序串联在了一起 , 通过满足某个条件而实现相关功能 .显然这个系统的设计已经完成 , 也基本达到了作为数字密码锁的绝大部分功能。 24 致 谢 在这次课程设计的撰写过程中,我得到了许多人的帮助。 首先我要感谢 黄敏 老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。 在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。 其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。 同时也感谢学院为我提供良好的做 课程 设计的环境。 25 参考文献 [1] 阎 石 主编,《数字电子技术基础》,高等教育出版社, 1998 [2] 谭会生等主编,《 EDA 技术及应用》,西安电子科技大学出版社, 2020 [3] 廖裕评等 主编,《 CPLD 数字电路设计 —— 使用 MAX+plusⅡ入门篇 》, 清华大学 出版社, 2020 [4] 冯涛等主编,《 可编程逻辑器件开发技术: MAX+plusⅡ入门与提高 》,人民邮电出版社, 2020 [5] 杨崇志,《特殊新型电子元件手册》,辽宁科学技术出版社, 1999 [6] 彭介华,《电子技术课程设计指导》高等教育出版社 .2020 年出版 . [7] Mark Zwolinski, Digital System Design with VHDL, 电子工业出版社, 2020 [8] Alan B. Marcovitz Introduction to logic Design, 电子工业出版社, 2020 26 附 录 : 程序清单 程序名: 四位电子密码锁 程序作者: 张佳骏 ********************************************* LIBRARY IEEE。 USE。 USE。 USE。 LIBRARY altera。 USE。 ********************************************* ENTITY elec_lock IS PORT ( CLK_4M : IN STD_LOGIC。 system original clock 4M CLK_SCAN : OUT STD_LOGIC_VECTOR (3 downto 0)。 scan sequence KEY_IN : IN STD_LOGIC_VECTOR (2 downto 0)。 KEY IN button code FLAG_NUMB : OUT STD_LOGIC。 FLAG_FUNC : OUT STD_LOGIC。 LED_COM : OUT STD_LOGIC。 for LP2900 only CLEAR : OUT STD_LOGIC。 ** ENLOCK : OUT STD_LOGIC。 1:LOCK, 0:UNLOCK NUMB_CNT : OUT STD_LOGIC_VECTOR (2 DOWNTO 0)。 BCD_CODE : OUT STD_LOGIC_VECTOR (15 DOWNTO 0)。 SELOUT : OUT STD_LOGIC_VECTOR (1 DOWNTO 0)。 FIT TO LP2900 SEGOUT : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) SEG7 Display 27 )。 END elec_lock。 ********************************************* ARCHITECTURE a OF elec_lock IS ponent debouncing port( d_in : IN STD_LOGIC。 clk : IN STD_LOGIC。 d_out : OUT STD_LOGIC )。 end ponent。 SIGNAL CLK : STD_LOGIC。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。