EDA电子密码锁设计报告.doc

上传人:jian****018 文档编号:9369983 上传时间:2020-04-05 格式:DOC 页数:19 大小:195.50KB
返回 下载 相关 举报
EDA电子密码锁设计报告.doc_第1页
第1页 / 共19页
EDA电子密码锁设计报告.doc_第2页
第2页 / 共19页
EDA电子密码锁设计报告.doc_第3页
第3页 / 共19页
点击查看更多>>
资源描述
目 录摘要:- 2 -第一章:系统设计总述- 3 -1.1设计要求- 3 -1.2 设计方案- 3 -第二章:总体程序设计- 3 -2.1整体组装设计原理图- 4 -2.2 顶层模块程序调用- 4 -2.2.1程序部分- 4 -2.2.2 整体原理文件- 6 -第三章:单元模块程序设计- 6 -3.1 输入模块- 7 - 3.1.1 输入模块程序- 7 -3.1.2输入模块元件- 8 -3.1.3输入模块仿真- 9 -3.2 电子密码锁系统控制模块- 9 -3.2.1控制模块程序- 10 -3.2.2控制模块元件- 12 -3.2.3控制模块仿真- 13 -3.3显示模块- 13 -3.3.1显示模块元件- 16 -3.3.2显示模块仿真- 16 -第五章:收获与体验- 17 -参考文献- 18 -1统设计总述1.1设计要求1、密码输入:每按下一个键,要求在数码管上显示,并依次左移;2、密码删除:每删除一位,数码管上的显示右移一位,在左边空出的位补充零;3、密码设置:当四位密码输入完毕,按下设置功能键进行设置.4、密码检验:输入密码,按下检验键.1.2 设计方案 在电子密码锁的设计中,我首先考虑的方法:是用密码输入删除控制模块、动态扫描模块、寄存器模块、比较模块、触发模块实现的。在密码输入删除控制模块中,每输入一位数,数码管左移一位,设置删除信号back,每按一次,删除最后输入的数字,密码在数码管显示右移一位,左边空处0。设置密码确认信号set,但四位密码输入完毕后,按下set,则密码被送到寄存器锁存,比较器模块得到数据A,同时密码显示电路清零。设置密码锁状态显示信号lock。Lock=0表示锁未开,lock=1表示锁开,设置关锁信号close,当密码送到寄存器模块锁存后,按下close,则lock=0.设置密码检验信号check ,在lock=0下从数据开关输入四位开锁数据,按下check,则开锁数码送寄存器锁存,数据比较模块得到数据B,若A=B,则触发器被置”1”.设计成三个模块:开关编码模块、控制模块、动态显示模块设计的总结构图如图1.1开关编码输入模块输入、删除、设置、检验控制模块动态显示模块 图1.1设计总结构图2总体程序设计 2.1整体组装设计原理图 系统的整体组装设计有密码按键输入模块、密码控制模块、密码显示模块三部分组成,系统整体组装原理图如图2.1所示。图2.1系统整体组装原理图2.2 顶层模块程序调用2.2.1程序部分library ieee;use ieee.std_logic_1164.all; library work;entity eleclock is port( clk2_1: in std_logic; clk1_1: in std_logic; key_1: in std_logic_vector(9 downto 0); set_1: in std_logic; check_1: in std_logic; close_1: in std_logic; back_1: in std_logic; led_1 : out std_logic_vector(6 downto 0); sn_1: out std_logic_vector(2 downto 0); lock_1: out std_logic );end eleclock;architecture bdf_type of eleclock is component ledsport( din: in std_logic_vector(15 downto 0); clk: in std_logic; con: out std_logic_vector(1 downto 0); led7: out std_logic_vector(6 downto 0); sn : out std_logic_vector(2 downto 0) );end component;component artport(clk: in std_logic; set: in std_logic; check: in std_logic; close: in std_logic; back: in std_logic; dn: in std_logic_vector(3 downto 0); sout: out std_logic_vector(15 downto 0); lock : out std_logic );end component;component traport(n: in std_logic_vector(9 downto 0); sout: out std_logic_vector(3 downto 0) );end component;signalsynthesized_wire_3 : std_logic_vector(15 downto 0);signalsynthesized_wire_4 : std_logic_vector(3 downto 0);begin b2v_inst1 : ledsport map(din = synthesized_wire_3(15 downto 0), clk = clk2_1, led7 = led_1(6 downto 0), sn = sn_1(2 downto 0) );b2v_inst2 : artport map(set = set_1, check = check_1, close = close_1, back = back_1, clk = clk1_1, dn = synthesized_wire_4, sout = synthesized_wire_3(15 downto 0), lock = lock_1 );b2v_inst3 : traport map(n =key_1(9 downto 0), sout = synthesized_wire_4 );end bdf_type;2.2.2 顶层模块原理文件顶层模块原理文件如图2.2图2.2顶层模块原理图3单元模块程序设计3.1 按键输入模块按键输入与对应的编码输出之间的关系如表3-1所示表3-1 按键编码按键输入编码输出对应的数字0000000001000110000000010001020000000100001130000001000010040000010000010150000100000011060001000000011170010000000100080100000000100191000000000000003.1.1 输入模块程序library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;entity tra isport( n:in std_logic_vector(9 downto 0); -定义按键输入端口sout:out std_logic_vector(3 downto 0); -定义编码输出端口end tra;architecture at of tra is -定义结构体signal temp:std_logic_vector(3 downto 0);beginprocess(n)begincase n is -输入键编码when 0000000001=temptemptemptemptemptemptemptemptemptemptemp=1111;end case;end process;sout=temp; end at;3.1.2输入模块元件图3.1电子密码锁键盘输入3.1.3输入模块仿真图3.2键盘输入仿真3.2电子密码锁系统控制模块密码锁的控制电路是整个电路的控制中心。设置set为密码设置端口,check为密码检验端口,close为关锁端口,back为删除密码端口,clk时钟输入端口,dn3.0为3位数字输入端口,sout15.0为16位输出端口,lock密码锁状态显示端口。在此电路中每输一位数,密码在数码管上左移一位。设置删除密码back,每按下一次back,删除最后输入的数字,左边空处补0。设置密码确认信号set,当四位密码输入完毕,按下set,设置的密码被存储。设置密码锁状态信号lock, lock=0表示锁未开,lock=1表示锁开。设置关锁信号close,按下close,则锁关闭。设置密码检验信号check,在lock=0下从数据开关书去四位开锁数字,按下check,若数据等于设置的密码或万能密码,则lock=1。模块程序流程图如图3.3开始输入数据数码管向左移删除右移Back=1Set=1Close=1校验是否正确是否有判断按键输 入是否有判断按键输入check=1设置密码有关锁,显示为0继续输入无结束图3.3控制模块程序流程图3.2.1控制模块程序密码锁控制电路的VHDL源程序library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity art isport( set,check,close,back,clk:in std_logic; -set密码设置信号,check密码检验信号,close 关锁信号back密码删除信号,clk时钟信号dn:in std_logic_vector(3 downto 0);sout:out std_logic_vector(15 downto 0); -16位输入信号lock:out std_logic); -设置密码锁状态信号end art; architecture at of art is -定义结构体signal ch:std_logic; beginprocess(clk,dn) -定义进程变量variable lock_1:std_logic;variable acc:std_logic_vector(15 downto 0);variable temp1,temp2,temp3,temp4:std_logic_vector(3 downto 0);begin ch=not(dn(0) and dn(1) and dn(2) and dn(3); -设置按键输入上升沿lock_1:=0;if clkevent and clk=1 then if ch=1 then -密码左移显示 temp4:=temp3; temp3:=temp2; temp2:=temp1; temp1:=dn; end if; if back=1 then -密码删除右移显示 temp1:=temp2; temp2:=temp3;temp3:=temp4;temp4:=0000; lock_1:=0; end if; if set=1 then -密码设置 acc:=temp4&temp3&temp2&temp1; lock_1:=0; end if; if check=1 then -密码校验if acc=temp4&temp3&temp2&temp1 then lock_1:=1; elsif temp4=1000 and temp3=1000 and temp2=1000 and temp1=1000 then lock_1:=1; end if; end if; if close =1 thenlock_1:=0; -密码锁的关闭temp1:=0000;temp2:=0000;temp3:=0000;temp4:=0000; end if;end if;sout=temp4&temp3&temp2&temp1;lock=lock_1;end process;end at;3.2.2控制模块元件控制原理封装元件如(图3.3)所示。图3.3(电子密码锁控制)3.2.3控制模块仿真图3.4(控制模块仿真)3.3显示模块密码显示电路主要将显示数据的BCD码转换成相对应的编码。选用七段数码管显示电路将待显示数据的BCD码转换成数码器的七段显示驱动编码。七段码显示器外形与笔划如图3.5:daefcbg图3.5七段码显示器外形与笔划字形与代码的对应关系如表3-2:表3-2 BCD七段译码器真值表输入输出字形DCBAabcdefg000011111100000101100001001011011012001111110013010001100114010110110115011010111116011111100007100011111118100111110119开始计数片选为0,03位显示片选为1,47位显示片选为2,811位显示片选为3,1215位显示结束 图11数码管动态显示流程图library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity leds is -定义实体port(din:in std_logic_vector(15 downto 0); -16输入信号clk:in std_logic; -时钟信号 con: buffer std_logic_vector(1 downto 0);led7:out std_logic_vector(6 downto 0); -七段数码管输入信号sn:out std_logic_vector(2 downto 0); -数码管七段译码信号end leds;architecture he of leds is -定义结构体signal db:std_logic_vector(3 downto 0);begin process(clk,din)beginif clkevent and clk=1 thencon=con+1; -数码管的片选计数end if;if(con=00) then -片选为0,03位显示db=din(3 downto 0);sn=000;elsif(con=01) then -片选为1,47位显示db=din(7 downto 4);sn=001;elsif(con=10) then -片选为2,811位显示db=din(11 downto 8);sn=010;elsif(con=11) then -片选为3,1215位显示db=din(15 downto 12);snled7led7led7led7led7led7led7led7led7led7led7=0000000;end case;end process;end he;3.3.1显示模块元件图3.6电子密码锁显示模块输出显示电路通过一个二进制计数器对数码管进行片选,片选为0,输入的第03位在第一个数码关上显示;片选为1输入的第47位在第二个数码关上显示,片选为2输入的第811位在第三个数码关上显示,片选为3输入的第1215位在第四个数码关上显示,进而实现数码管的动态显示。3.3.2显示模块仿真图3.7电子密码锁显示模块仿真
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!