




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA技术及应用实践课程设计报告目录1电子密码锁整体设计.3 1.1 设计要求.31.2 设计思路.3 1.2.1输入模块.3 1.2.2控制模块.31.3设计结构总图.41.4整体设计的仿真结果.52、各个功能模块的设计.62.1按键输入模块.62.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生成元件.133、下载与硬件测试.144、课程设计感想.145、参考文献.15电子密码锁设计随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。本次课程设计采用VHDL语言,利用Maxplus软件完成相应的电子密码锁功能设计。1、电子密码锁整体设计1.1设计要求:设计一个电子密码锁,在锁开的状态下输入密码,密码共4位,用数据开关K1K10分别代表数字1、2、9、0,输入的密码用数码管显示,最后输入的密码显示在最右边的数码管上,即每输入一位数,密码在数码管上的显示左移一位。可删除输入的数字,删除的是最后输入的数字,每删除一位,密码在数码管的显示右移一位,并在左边空出的位上补充“0”。用一位输出电平的状态代表锁的开闭状态。为保证密码锁主人能打开密码锁,设置一个万能密码,在主人忘记密码时使用。1.2设计思路:总的来说,设计成2个模块,即输入模块,控制模块,最后显示管静态显示。1.2.1输入模块:在输入模块,我是用时钟脉冲clk来控制什么时候输入一位密码,即每来一个上升沿,输入一个数,且输入的数只在上升沿到来时有效,在其他时候视为无效。如果clk信号为系统设置的,那么很难做到自己输入密码的频率能与clk信号同步,因此本设计决定将clk信号设为手动,即输入好一位密码后,让clk信号由0到1,则该密码输入成功。1.2.2控制模块:在密码控制模块中,主要实现以下功能:每输入一位数,数码管左移一位,设置删除信号back,每按一次,删除最后输入的数字,密码在数码管显示右移一位,左边空处0。设置密码确认信号set,在四位密码输入完毕后,按下set,则密码被送到寄存器锁存,比较器模块得到数据A,同时密码显示电路清零。设置密码锁状态显示信号lock。Lock=0表示锁未开,lock=1表示锁开,设置关锁信号close,当密码送到寄存器模块锁存后,按下close,则lock=0。设置密码检验信号compare ,在lock=0下从数据开关输入四位开锁数据,按下compare,则开锁数码送寄存器锁存,数据比较模块得到数据B,若A=B,则触发器被置”1”。1.3设计结构总图:图1(G1模块表示输入模块,G2表示控制模块)1.4整体设计的仿真结果如下图2、各个功能模块的设计2.1按键输入模块:2.1.1按键输入与对应的编码输出之间的关系如表2-1所示表2-1 按键编码按键输入编码输出对应的数字0000000001000110000000010001020000000100001130000001000010040000010000010150000100000011060001000000011170010000000100080100000000100191000000000000002.1.2输入模块程序:library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;entity g1 isport( data:in std_logic_vector(9 downto 0);clk:in std_logic; dout:out std_logic_vector(3 downto 0); end g1;architecture at of g1 is signal temp:std_logic_vector(3 downto 0);beginprocess(clk)beginif clkevent and clk=1 thencase data is when 0000000001=temptemptemptemptemptemptemptemptemptemptemp=1111;end case;end if;end process;dout=temp; end at;2.1.3输入模块仿真结果:2.1.4选择FILE中creat default symbol选项创建元件符号如下:2.2系统控制模块密码锁的控制电路是整个电路的控制中心。设置set为密码设置端口,compare为密码检验端口,close为关锁端口,back为删除密码端口,clk1时钟输入端口,db3.0为3位数字输入端口,sout15.0为16位输出端口,lock密码锁状态显示端口。在此电路中每输一位数,密码在数码管上左移一位。设置删除密码back,每按下一次back,删除最后输入的数字,左边空处补0。设置密码确认信号set,当四位密码输入完毕,按下set,设置的密码被存储。设置密码锁状态信号lock, lock=0表示锁未开,lock=1表示锁开。设置关锁信号close,按下close,则锁关闭。设置密码检验信号compare,在lock=0下从数据开关输入四位开锁数字,按下compare,若数据等于设置的密码或万能密码,则lock=1。模块程序流程图如图:2.2.1控制部分程序:library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity g2 isport( set,compare,close,back,clk:in std_logic; db:in std_logic_vector(3 downto 0);dout:out std_logic_vector(15 downto 0); lock:out std_logic); end g2; architecture aa of g2 is signal ch:std_logic; beginprocess(clk,db) variable lock1:std_logic;variable mima:std_logic_vector(15 downto 0);variable temp1,temp2,temp3,temp4:std_logic_vector(3 downto 0);begin ch=not(db(0) and db(1) and db(2) and db(3); lock1:=0;if clkevent and clk=1 then if ch=1 then temp4:=temp3; temp3:=temp2; temp2:=temp1; temp1:=db;end if; if back=1 then temp1:=temp2; temp2:=temp3;temp3:=temp4;temp4:=0000; lock1:=0; end if; if set=1 then mima:=temp4&temp3&temp2&temp1; lock1:=0; end if; if compare=1 then if mima=temp4&temp3&temp2&temp1 then lock1:=1; elsif temp4=1000 and temp3=1000 and temp2=1000 and temp1=1000 then lock1:=1; end if; end if; if close =1 thenlock1:=0; temp1:=0000;temp2:=0000;temp3:=0000;temp4:=0000; end if;end if;dout=temp4&temp3&temp2&temp1;lock=lock1;end process;end aa;2.2.2控制模块仿真结果:2.2.3选择FILE中creat default symbol选项创建元件符号如下:3、下载与硬件测试:根据实验箱实际逻辑器件选择“Assign”|“Device”|“MAX7000S”|“EPM7128SLC84-6”/【“Assign”|“Device”|“FLEX10K”|“EPF10K10LC84-3”】/【“Assign”|“Device”|“FLEX10KA”|“EPF30AQC208-1”】,并根据下载板上的标识对管脚进行配置。然后下载,进行硬件测试,检验结果是否正确。我选择的是“Assign”|“Device”|“FLEX10K”|“EPF10K10LC84-3”,管脚安排如下:KEY0:K0 KEY1:K2 KEY2:K2 KEY3:K4KEY4:K5 KEY5:K6 KEY:6:K7 KEY7:K8KEY8:K9 KEY9:K10SET::K11 CLOSE:K12 BACK:K13CLK1:K14 COMPARE:K15 LOCK:L4其显示的方式为静态显示,一次性直接显示4位密码,这与动态显示的原理有较大的不同。本次硬件测试的结果正确。4、课程设计感想:做课程设计的第一天,我们在网上找了一些资料,了解了整体的设计思路后,我们决定根据自己的理解以及网上和参考资料上提供的一些思路,自己编写程序。经过两天的努力,我们终于写好了自己的程序。可是辛苦写出的程序却漏洞百出,一开始由于编写程序时的粗心大意,以及一些编程方法不懂,导致程序编译出现很多错误,经过翻阅资料,我们进行了修改,最后虽然程序编译没啥问题了,可是仿真波形却不对。不管怎么找错,我们都觉得自己的程序没有问题,所以不知道怎么修改。问了很多同学,他们也各自有各自的一些见解,面对他们不统一的说法,我们也不知到底怎么做好。于是请教了老师,在老师的点拨下,我们终于有了自己的思路,于是修改好了自己的程序。最后通过仿真下载后,准确无误。这次课程设计让我受益匪浅。它给了我们一个将所学理论灵活运用的机会,让我知道光学习理论知识是远远不够的,要将所学运用于实践,否则所学理论就是徒劳的。除此之外,它也让我深刻体会到EDA编程的思想,也增加了我好好扎实学习的决心,因为学的踏实,才更会灵活运用,也让我明白求学不仅需要认真、踏实、严谨、细心、耐心的态
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时物质的量浓度讲课文档
- 内科重点专科汇报
- 胸膜听诊语音讲解
- 2026届贵州省铜仁市石阡县民族中学化学高二第一学期期末联考模拟试题含答案
- 树叶印染工艺技术解析
- 软开度基本功讲解
- 新版反垄断法核心解读
- 信息技术自制信封
- 痛痹中医护理
- 神经系统器官讲解
- 双方签定协议书
- 2024-2025学年八年级数学下册期末培优卷(北师大版)含答案
- 2025福建福州市鼓楼区国有资产投资发展集团有限公司副总经理公开招聘1人笔试参考题库附带答案详解(10套)
- 2025年12345热线考试题库
- 多余物控制管理办法
- 2025年卫生健康行业经济管理领军人才试题
- 河南省洛阳市2024-2025学年高一下学期期末质量检测物理试卷
- 雅思介绍课件
- 《电商直播运营》教案-任务1 直播平台与岗位认知
- 反邪教宣讲课件
- 2025年重庆市高考物理试卷(含答案解析)
评论
0/150
提交评论