已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
级学生EDA课程设计 EDA课程设计报告书课题名称 四位数字密码锁的设计姓 名 学 号 院 系 专 业 指导教师 年 月 日 设计任务及要求:(1)设计任务:本课程设计要求设计的数字密码锁密码为4位,由密码锁输入电路、码锁控制电路、密码锁处理电路、显示电路四大部分组成,将各电路组合起来,构成了一个完整的电子密码锁。(2)设计要求:、密码输入:每按一个数字键,就输入一个数值,且将在显示器上的最右上方显示出该数字,并将先前已经输入的数据依序左移一位。、数码清除:按下此键可以清除前面所有的输入值,清除成为“0000”。、密码修改:按下此键时将目前的数字设定成新的密码。、激活电锁:按下此键可将密码锁上锁,红色LED灯将闪烁一次。、解除电锁:按下此键会检查输入的密码是否正确,若绿色LED亮则表示密码正确,密码锁将解锁。 指导教师签名: 年 月 日 二、指导教师评语:指导教师签名: 年 月 日 三、成绩 验收盖章 年 月 日 四位数字密码锁的设计 1 设计目的随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的喜爱,电子密码锁的使用也体现了人们消费水平、保安意识和科技水平的提高,而且避免了携带甚至丢失钥匙的麻烦。2 设计的主要内容和要求设计一个简单的数字电子密码锁,密码为 4 位。要求具备如下功能:(1)如果输入数字键,第一个数字会从数码管的最右端开始显示,此后每按下一个数字键,数码管上的数字必须往左移动一格,以便将新的数字显示出来。(2)本密码锁为四位密码锁,当输入的数字超过四个时,不会显示第四个以后的数字。(3)按下密码清零键,清除所有输入的数字,清除成为“0000”,即做归零动作。(4)按下解锁键,检查输入的密码是否正确,若解锁指示灯(绿色LED灯)闪烁一次,即表示密码正确(开锁)。(5)按下改密键,将当前输入的数字设置成新密码,且上锁指示灯(红色LED灯)闪烁一次,即密码锁已上锁。3 整体设计方案 本系统采用模块化的设计,整个系统分为数字按键输入、时钟输入、功能按键输入、数字译码块、功能译码模块、核心处理模块、输出处理模块、显示译码电路八个模块。整体电路如图3.1所示。数字按键输入时钟模块功能按键输入数字译码模块功能译码模块核心处理模块输出处理模块显示译码电路图3.1 数字密码锁总方框图4 硬件电路的设计4位数字密码锁包括五个基本逻辑模块,分别为:数字按键输入模块(numinput)、功能按键输入模块(funcinput)、核心处理模块(core)、输出处理模块(allout)、七段译码器模块(dataout)。4.1 数字按键输入-numinput说明:读取数字键09。按键为矩阵形式,高电平表示按键未按下,低电平表示按键按下。经数字按键输入模块处理后输出4位二进制代码,“0000”“1001”分别表示09,用“1010”表示其他无效输入。如表4.1所示。表4.1 数字按键输入模块(numinput)的数据输入输出按键数字按键扫描输出Numinput二进制输出对应十进制数字01101111000000101111101000112011111100010231011011100113410111011010045101111010101561011111001106711010111011178110110111000891101110110019其他按键其他101010(1)numinput-数字按键输入模块程序:library ieee;use ieee.std_logic_1164.all;entity numinput isport(numin :IN std_logic_vector(7 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(7 downto 0);beginprocess(clk)beginif clkevent and clk=1 thenif state/=numstate thenif mem/=numin thencase numin iswhen 11011110 = numout numout numout numout numout numout numout numout numout numout numout=1010;end case;state=numstate;else numout=1010;end if;mem=numin;end if;end if;end process;end one;(2)数字按键输入模块仿真图:图4.1 数字按键输入模块仿真图由图可知,当数字按键输入模块的输入依次为11011110、01111101、01111110、10110111、10111011、10111101、10111110、11010111、11011011、11011101时,numout输出依次输出“0000”、“0001”、“0010”、“0011”、“0100”、“0101”、“0110”、“0111”、“1000”、“1001”;当为其他按键输入时,numout输出均为“1010”。(3)数字按键输入-numinput符号文件:图4.2 数字按键输入-numinput符号文件4.2 功能按键输入模块 - funcinput读取矩阵按键区控制功能按键 清除键、改密键、上锁键、解锁键。高电平表示按键未按下,低电平表示按键按下。按照“清除,改密,上锁,解锁”顺序读取按键时,只能输出一位控制信号。输出的信号为3位二进制代码,“001”“100”,依次表示“清除按键、改密按键、上锁,解锁”,用“000”表示输入不为功能按键信号。表4.2 控制功能按键输入模块(funcinput)的输出输入数据功能按键功能按键扫描输出Funcinput二进制输出对应十进制数字清除键111001110011改密键111011010102上锁键111011100113解锁键111010111004其他按键其他0000(1)Funcinput-功能按键输入模块程序:library ieee;use ieee.std_logic_1164.all;entity funcinput isport( funcin:IN std_logic_vector(7 downto 0);constate,clk:IN std_logic;conout:OUT std_logic_vector(2 downto 0);end funcinput;architecture one of funcinput issignal state:std_logic;signal mem:std_logic_vector(7 downto 0);beginprocess(clk)beginif clkevent and clk=1 thenif constate/=state thenstate=constate;if mem/=funcin thenwith funcin selectconout=001 when 11100111 , -清除键010 when 11101101,-改密键011 when 11101110, -上锁键100 when 11101011 , -解锁键000 when others;mem=funcin;else conout=000;end if;end if;end if;end process;end one;(2)功能按键输入模块仿真图:图4.3 功能按键输入模块仿真图由图可知:当功能按键输入模块的输入依次为“11100111”、“ 11101101”、“ 11101110”、“ 11101011”时,conout输出依次为“001”、“010”、“011”、“100”, 当为其他按键输入时,conout输出均为“000”。(3)功能按键输入模块-funcinput符号文件:图4.4 功能按键输入模块 -funcinput符号文件4.3 核心处理模块-core核心处理模块将根据输入(数字按键输入以及功能按键输入)来改变存储器状态、数码管显示以及LED灯显示(红灯亮为上锁,绿灯亮为解锁)。(1)Core-核心处理程序:library ieee;use ieee.std_logic_1164.all;entity core isport( numin:in std_logic_vector(3 downto 0);conin:in std_logic_vector(2 downto 0);clk:in std_logic;dataa,datab,datac,datad:out std_logic_vector(3 downto 0);ledr,ledg,numout,conout:out std_logic);end entity;architecture one of core istype lockstate is (unlock,locked);signal numa,numb,numc,numd,codea,codeb,codec,coded:std_logic_vector(3 downto 0);signal numstate,constate:std_logic;signal locksta:lockstate;beginprocess(clk,numin,conin)beginif clkevent and clk=1 then-上升沿if numin/=1010 thennumd=numc;numc=numb;numb=numa;numa=numin;end if;if conin/=000 thenif conin=001 then-清除键按下numa=0000;-全部清零numb=0000;numc=0000;numd=0000;elsif conin=010 then -改密键按下if locksta/=locked then-锁并不是上锁状态codea=numa;codeb=numb;codec=numc;coded=numd;end if;elsif conin=011 then -上锁键按下if locksta/=locked thennuma=0000;numb=0000;numc=0000;numd=0000;locksta=locked; -锁定密码锁end if;elsif conin=100 then -解锁键按下if locksta=locked then if numa=codea and numb=codeb then -输入正确密码if numc=codec and numd=coded thenlocksta=unlock; -锁开end if;end if;end if;end if;end if;if locksta=locked then -若锁锁定ledr=1; -led等高电平,红灯闪烁ledg=0;elseledr=0;ledg=1;end if;dataa=numa;datab=numb;datac=numc;datad=numd;if numstate=1 then numstate=0;else numstate=1;end if;if constate=1 then constate=0;else constate=1;end if;numout=numstate;conout=constate;end if;end process;end one;(2)核心处理模块仿真图:当数字按键输入为有效输入(即输入的按键为数字按键09时),此时虽输入9位数字,但只有前四位有效,所以密码应为“1234”。 若conin输入为“011”(即按下上锁键),此时可以看到ledr为高电平,所以此时红灯闪烁一次,表示密码锁已上锁。仿真波形图如下:图4.5 核心处理模块仿真图(一)图4.6 核心处理模块仿真图(二)由图可知:若conin输入为“100”时(解锁时),当再次输入密码“1234”,并此时ledg输出为低电平(绿灯亮)。Dataa输出密码“1234”,则表示此时密码锁已解锁。(3)核心处理模块-core符号文件:图4.7 处理核心模块-core符号文件4.4 输出处理模块allout对处理核心模块core输出的数据进行刷新,使数码管及时显示刷新的数字。(1)Allout-输出处理程序:library ieee;use ieee.std_logic_1164.all;entity allout isport( dataa,datab,datac,datad:in std_logic_vector(3 downto 0);clk:in std_logic;dataout:out std_logic_vector(3 downto 0);outsel:out std_logic_vector(1 downto 0);end allout;architecture one of allout issignal timer:std_logic_vector(1 downto 0);beginprocess(clk)beginif clkevent and clk=1 then-上升沿if timer=00 thendataout=dataa;outsel=00;timer=01;elsif timer=01 thendataout=datab;outsel=01;timer=10;elsif timer=10 thendataout=datac;outsel=10;timer=11;elseataout=datad;outsel=11;timer dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout=0000000; -不显示end case;end process;end one;(2)Dataout-七段译码器模块仿真图:图4.10 七段译码器模块仿真图由图可知:当七段译码器的输入信号(datain)为“0000”、“0001”、“0010”、“0011”、“0100”、“0101”、“0110”、“0111”、“1000”、“1001”,输出信号(dataout)依次为:“1111110”、“ 0110000”、“ 1101101”、“ 1111001”、“ 0110011”、“ 1011011”、“ 1011111”、“ 1110000”、 “1111111”、“ 1111011”,当conin输入信号为其他时,译码输出为“0000000”。表4.3 七段译码器的输入及译码对照表二进制译码输入二进制译码输出数码管显示数字000011111100000101100001001011011012001111110013010001100114010110110115011010111116011111100007100011111118100111110119其他输入0000000无显示(3)输出处理模块allout符号文件:图4.11 输出处理模块allout符号文件5 软件设计四位密码锁的电路设计原理图如下: 图5.1 四位密码锁的电路设计原理图6 系统仿真该四位数字密码锁的设计是一个实时的系统,对于每一个按键的操作都是在时钟的上升沿完成的,是一个动态的逻辑关系;而系统输出为数码管显示的实时输出,不便于分析该系统电路的功能,且系统电路中存在自动刷新的功能模块,因而电路仿真时不能较好地观察输出结果,为了解决这一问题,故修改电路的原理图如下:图6.1 便于观察输出结果的原理图图6.2 系统仿真图(一)由图可知,当功能按键的输入(funcin)为“11100111”(即按下功能按键“清除键”)时,系统输出(dataa,datab,datac,datad)均为“0000”,表示密码锁的密码已清除,数码管显示输出为“1111110”,即此时4个数码管均显示数字“0”。图6.3 系统仿真图(二)由图可知,功能按键的输入(funcin)先为“11100111”(即按下功能按键“清除键”),后为“11101110”(即按下功能按键“改密键”)后,系统输出(dataa,datab,datac,datad)为“0001”、“0010”、“0011”、“0100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030智慧农业管理系统市场应用与投资规划研究
- 2025-2030智慧农业技术行业市场应用现状及投资机会规划分析研究报告
- 暑假期间安全教育测试题及答案解析
- 智能家居生产线项目申请报告
- 基金从业考试线下及答案解析
- 银行从业资格考试定于及答案解析
- 安全设施培训题库及答案解析
- 危化安全管理证复审题库及答案解析
- 供水一体化项目商业计划书
- 才士题库安全员及答案解析
- 布达拉宫课件
- 2024年安康社区工作者考试真题及答案
- 人教版高中生物必修2《遗传与进化》必背知识考点提纲
- 资产抵押项目资产评估操作流程详解
- 2025-2026学年冀教版(2024)小学数学一年级上册(全册)教学设计(附目录P339)
- 2024译林版八年级英语上册期末复习:Unit1~Unit8全册各单元语法知识点 讲义(含练习题及答案)
- 房屋安全性鉴定方案
- 工作责任感的衡量与评价标准
- 麻精药品考试题及答案
- 感觉运动整合理论-洞察及研究
- 备孕知识课件
评论
0/150
提交评论